:root{color-scheme:light;--bg: oklch(.985 .004 130);--surface: oklch(1 0 0);--surface-muted: oklch(.972 .004 286);--fg: oklch(.205 .008 285);--fg-muted: oklch(.552 .016 286);--line: oklch(.918 .004 286);--line-strong: oklch(.862 .006 286);--primary: oklch(.648 .2 131.684);--primary-hover: oklch(.598 .19 131.684);--primary-fg: oklch(.986 .031 120.757);--ring: oklch(.841 .238 128.85);--danger: oklch(.577 .245 27.325);--danger-surface: oklch(.964 .035 27.325);--chart-1: oklch(.72 .135 82);--chart-2: oklch(.83 .095 86);--chart-3: oklch(.63 .115 158);--chart-4: oklch(.78 .085 160);--chart-5: oklch(.66 .13 306);--chart-6: oklch(.81 .085 308);--chart-bar: oklch(.723 .219 149.579);--chart-accent: oklch(.58 .145 248);--radius: .65rem;--radius-lg: .9rem;--shadow: 0 1px 2px oklch(.205 .008 285 / .05), 0 8px 24px oklch(.205 .008 285 / .05);--sidebar-width: 15rem}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font-family:Hiragino Sans,Noto Sans JP,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}h1,h2{margin:0;letter-spacing:.01em}h1{font-size:1.5rem}h2{font-size:1rem}p{margin:0}button{font:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}code{font-family:ui-monospace,SFMono-Regular,monospace;font-size:.72rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.eyebrow{color:var(--fg-muted);font-size:.68rem;font-weight:700;letter-spacing:.16em}.primary-button,.secondary-button{display:inline-flex;gap:.5rem;align-items:center;justify-content:center;border-radius:var(--radius);padding:.6rem 1.1rem;font-weight:600;transition:background .15s ease}.primary-button{border:none;background:var(--primary);color:var(--primary-fg)}.primary-button:hover:not(:disabled){background:var(--primary-hover)}.secondary-button{border:1px solid var(--line-strong);background:var(--surface);color:var(--fg)}.secondary-button:hover:not(:disabled){background:var(--surface-muted)}.icon-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);padding:.4rem;color:var(--fg-muted)}.icon-button:hover:not(:disabled){background:var(--surface-muted);color:var(--fg)}:where(button,input,select):focus-visible{outline:2px solid var(--ring);outline-offset:2px}.error-banner{border:1px solid oklch(.577 .245 27.325 / .3);border-radius:var(--radius);background:var(--danger-surface);padding:.65rem .9rem;color:var(--danger);font-size:.85rem}.panel{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow)}.panel>header{display:flex;align-items:center;justify-content:space-between;padding:1.1rem 1.25rem .75rem}.panel>header p{color:var(--fg-muted);font-size:.78rem}.login-shell{display:grid;place-items:center;min-height:100dvh;padding:1.5rem}.login-card{display:flex;flex-direction:column;gap:.65rem;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow);padding:2.25rem;width:min(24rem,100%);text-align:center}.login-card>p:last-of-type{color:var(--fg-muted)}.login-card .primary-button{margin-top:.75rem}.brand-mark{display:grid;place-items:center;margin:0 auto .5rem;border-radius:var(--radius-lg);background:var(--primary);width:3.25rem;height:3.25rem;color:var(--primary-fg)}.center-state{display:flex;flex-direction:column;gap:1rem;align-items:center;justify-content:center;min-height:100dvh;padding:1.5rem;color:var(--fg-muted);text-align:center}.loading-spinner{border:3px solid var(--line);border-top-color:var(--primary);border-radius:50%;width:2rem;height:2rem;animation:spin .9s linear infinite}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.loading-spinner,.spin{animation:none}}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) 1fr;min-height:100dvh}.sidebar{display:flex;flex-direction:column;gap:1.5rem;position:sticky;top:0;border-right:1px solid var(--line);background:var(--surface);padding:1.25rem 1rem;height:100dvh}.sidebar-brand{display:flex;gap:.65rem;align-items:center}.sidebar-brand>span{display:grid;place-items:center;border-radius:var(--radius);background:var(--primary);width:2.25rem;height:2.25rem;color:var(--primary-fg)}.sidebar-brand strong{display:block;font-size:.9rem}.sidebar-brand small{color:var(--fg-muted);font-size:.7rem;letter-spacing:.1em}.sidebar nav{display:flex;flex-direction:column;gap:.25rem}.sidebar nav button{display:flex;gap:.65rem;align-items:center;border:none;border-radius:var(--radius);background:none;padding:.6rem .75rem;color:var(--fg-muted);font-weight:600;text-align:left}.sidebar nav button:hover{background:var(--surface-muted);color:var(--fg)}.sidebar nav button.active{background:var(--surface-muted);color:var(--primary)}.sidebar-footer{display:flex;flex-direction:column;gap:.5rem;margin-top:auto;border-top:1px solid var(--line);padding-top:1rem}.sidebar-footer>span{overflow:hidden;color:var(--fg-muted);font-size:.8rem;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer button{display:flex;gap:.5rem;align-items:center;border:none;border-radius:var(--radius);background:none;padding:.5rem;color:var(--fg-muted);font-size:.85rem}.sidebar-footer button:hover{background:var(--surface-muted);color:var(--fg)}.content{padding:1.5rem 1.75rem 3rem;min-width:0}.mobile-toolbar{display:none}.desktop-actions{display:flex;justify-content:flex-end;margin-bottom:1rem}.page-error{margin-bottom:1rem}.page-stack{display:flex;flex-direction:column;gap:1.25rem}.page-heading{display:flex;gap:1rem;align-items:flex-end;justify-content:space-between}.page-heading p:last-child{color:var(--fg-muted);font-size:.85rem}.freshness{flex-shrink:0;border:1px solid var(--line);border-radius:999px;background:var(--surface);padding:.3rem .8rem;color:var(--fg-muted);font-size:.75rem}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:1rem}.kpi-card{display:flex;flex-direction:column;gap:.15rem;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow);padding:1.1rem 1.25rem}.kpi-icon{display:grid;place-items:center;margin-bottom:.5rem;border-radius:var(--radius);background:var(--surface-muted);width:2.25rem;height:2.25rem;color:var(--primary)}.kpi-card p{color:var(--fg-muted);font-size:.8rem;font-weight:600}.kpi-card strong{font-size:2rem;font-variant-numeric:tabular-nums;line-height:1.2}.kpi-card span{color:var(--fg-muted);font-size:.72rem}.chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(24rem,1fr));gap:1rem}.chart-area{padding:0 .75rem 1rem 0;height:17rem}.recharts-cartesian-axis-tick text{fill:var(--fg-muted)}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.85rem}th,td{border-bottom:1px solid var(--line);padding:.65rem 1.25rem;text-align:left;white-space:nowrap}th{position:sticky;top:0;background:var(--surface);color:var(--fg-muted);font-size:.72rem;font-weight:700;letter-spacing:.05em}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-muted)}td{font-variant-numeric:tabular-nums}.strong-cell{font-weight:600}.number-cell{font-weight:600;text-align:right}.user-name{display:flex;flex-direction:column}.user-name code{color:var(--fg-muted)}.badge{display:inline-block;border-radius:999px;padding:.15rem .6rem;font-size:.72rem;font-weight:600}.badge.muted{background:var(--surface-muted);color:var(--fg-muted)}.badge.registered{background:#64a30024;background:oklch(.648 .2 131.684 / .14);color:#3a6300;color:oklch(.45 .14 132)}.game-tags{display:flex;flex-wrap:wrap;gap:.3rem;color:var(--fg-muted);font-size:.72rem}.game-tags span{border:1px solid var(--line);border-radius:999px;padding:.05rem .5rem}.quality-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.75rem}.quality-grid>div{display:flex;align-items:baseline;justify-content:space-between;border:1px dashed var(--line-strong);border-radius:var(--radius);padding:.6rem .9rem}.quality-grid span{color:var(--fg-muted);font-size:.78rem}.quality-grid strong{font-variant-numeric:tabular-nums}.filters{display:flex;flex-wrap:wrap;gap:.65rem;padding:.9rem 1rem}.search-field{display:flex;gap:.5rem;align-items:center;flex:1 1 15rem;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);padding:0 .7rem;color:var(--fg-muted)}.search-field:focus-within{outline:2px solid var(--ring);outline-offset:1px}.search-field input{flex:1;border:none;background:none;padding:.55rem 0;min-width:0;color:var(--fg);font:inherit}.search-field input:focus-visible{outline:none}.filters select{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);padding:.55rem .7rem;color:var(--fg);font:inherit}.user-table{overflow:hidden}.pagination{display:flex;gap:.75rem;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:.75rem 1.25rem;color:var(--fg-muted);font-size:.8rem}.pagination>div{display:flex;gap:.6rem;align-items:center}@media(max-width:60rem){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.content{padding:1rem 1rem 3rem}.mobile-toolbar{display:flex;gap:.75rem;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:1;margin:-1rem -1rem 1rem;border-bottom:1px solid var(--line);background:var(--surface);padding:.75rem 1rem}.mobile-tabs{display:flex;gap:.25rem;border:1px solid var(--line);border-radius:var(--radius);padding:.15rem}.mobile-tabs button{border:none;border-radius:calc(var(--radius) - .15rem);background:none;padding:.4rem .8rem;color:var(--fg-muted);font-size:.85rem;font-weight:600}.mobile-tabs button.active{background:var(--surface-muted);color:var(--primary)}.mobile-actions{display:flex;gap:.4rem}.desktop-actions{display:none}.page-heading{flex-direction:column;align-items:flex-start}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.kpi-card{padding:.85rem .9rem}.kpi-icon{margin-bottom:.35rem;width:1.9rem;height:1.9rem}.kpi-card strong{font-size:1.6rem}.chart-grid{grid-template-columns:1fr}.chart-area{height:15rem}th,td{padding:.55rem .9rem}}
