:root{--surface-sunken: oklch(.17 .008 265);--surface-base: oklch(.19 .008 265);--surface: oklch(.22 .009 265);--surface-raised: oklch(.25 .01 265);--surface-hover: oklch(.3 .012 265);--border-subtle: oklch(.27 .01 265);--border: oklch(.33 .013 265);--border-strong: oklch(.42 .016 265);--text: oklch(.96 .003 265);--text-muted: oklch(.78 .012 265);--text-subtle: oklch(.62 .014 265);--accent: oklch(.6 .13 163);--accent-light: oklch(.7 .15 163);--accent-hover: oklch(.54 .12 163);--accent-text: oklch(.99 0 0);--npc: oklch(.77 .16 70);--success: oklch(.78 .14 163);--danger: oklch(.68 .19 22);--danger-surface: oklch(.26 .045 22);--danger-border: oklch(.35 .07 22);--danger-text: oklch(.8 .1 22);--brand-discord: #5865f2;--brand-discord-hover: #4752c4;--brand-github: #24292f;--brand-github-hover: #32383f;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--text-xs: .6875rem;--text-sm: .75rem;--text-base: .875rem;--text-lg: 1.25rem;--text-xl: 1.75rem;--topbar-height: 44px;--radius: 10px;--radius-xs: calc(var(--radius) * .4);--radius-sm: calc(var(--radius) * .6);--radius-lg: calc(var(--radius) * 1.4);--font-ui: "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", "Cascadia Code", monospace;--shadow-sm: 0 1px 2px rgb(0 0 0 / .4);--shadow: 0 1px 2px rgb(0 0 0 / .3), 0 8px 20px -6px rgb(0 0 0 / .45);--shadow-lg: 0 2px 4px rgb(0 0 0 / .3), 0 20px 48px -12px rgb(0 0 0 / .6);--duration-fast: .12s;--duration: .18s;--ease: cubic-bezier(.2, 0, .2, 1);--focus-ring: 0 0 0 2px var(--surface-base), 0 0 0 4px var(--accent);--sidebar-width: 12.5rem;--sidebar-width-compact: 8.25rem}@media(prefers-reduced-motion:reduce){:root{--duration-fast: 0ms;--duration: 0ms}}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:var(--focus-ring)}:where(button,a,input,select,textarea,.sidebar-btn,.admin-btn){transition:background-color var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease)}:where(button,.sidebar-btn):not(:disabled):active{transform:translateY(1px)}@keyframes surface-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.auth-panel,.admin-panel{animation:surface-in var(--duration) var(--ease)}@media(prefers-reduced-motion:reduce){.auth-panel,.admin-panel{animation:none}}:root[data-theme=light]{--surface-sunken: oklch(.94 .004 265);--surface-base: oklch(.97 .003 265);--surface: oklch(1 0 0);--surface-raised: oklch(1 0 0);--surface-hover: oklch(.95 .004 265);--border-subtle: oklch(.92 .005 265);--border: oklch(.87 .008 265);--border-strong: oklch(.78 .012 265);--text: oklch(.22 .01 265);--text-muted: oklch(.44 .014 265);--text-subtle: oklch(.57 .014 265);--accent: oklch(.52 .12 163);--accent-light: oklch(.58 .13 163);--accent-hover: oklch(.45 .11 163);--accent-text: oklch(1 0 0);--npc: oklch(.56 .14 70);--success: oklch(.52 .12 163);--danger: oklch(.55 .21 25);--danger-surface: oklch(.97 .015 25);--danger-border: oklch(.89 .055 25);--danger-text: oklch(.5 .19 25);--shadow-sm: 0 1px 2px rgb(16 24 40 / .05);--shadow: 0 4px 12px rgb(16 24 40 / .08);--shadow-lg: 0 12px 32px rgb(16 24 40 / .12)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:2.25rem;padding:0 var(--space-4);border:1px solid transparent;border-radius:var(--radius);font:inherit;font-size:var(--text-base);font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}@media(pointer:coarse){.btn{min-height:2.75rem}}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);box-shadow:var(--shadow-sm)}.btn-primary:not(:disabled):hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{background:var(--surface-raised);border-color:var(--border);color:var(--text)}.btn-secondary:not(:disabled):hover{background:var(--surface-hover);border-color:var(--border-strong)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-muted)}.btn-ghost:not(:disabled):hover{background:var(--surface-raised);color:var(--text)}.btn-danger{background:transparent;border-color:var(--danger-border);color:var(--danger-text)}.btn-danger:not(:disabled):hover{background:var(--danger-surface)}.btn-block{width:100%}.btn-sm{min-height:1.75rem;padding:0 var(--space-3);font-size:var(--text-sm)}.input{width:100%;box-sizing:border-box;min-height:2.25rem;padding:0 var(--space-3);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font:inherit;font-size:var(--text-base)}.input::placeholder{color:var(--text-subtle)}.input:hover{border-color:var(--border-strong)}.field-label{display:block;margin-bottom:var(--space-2);color:var(--text-subtle);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em}.scroll-area{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.scroll-area::-webkit-scrollbar{width:8px;height:8px}.scroll-area::-webkit-scrollbar-track{background:transparent}.scroll-area::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}.scroll-area::-webkit-scrollbar-thumb:hover{background:var(--text-subtle)}#app canvas{image-rendering:pixelated}.auth-screen{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:var(--space-4);box-sizing:border-box;font-family:var(--font-ui);color:var(--text)}.auth-panel{width:100%;max-width:360px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6) 28px;box-shadow:var(--shadow-lg)}.picker-screen .auth-panel{max-width:440px}.auth-title{font-size:var(--text-lg);font-weight:600;margin:0 0 var(--space-2)}.auth-subtitle{font-size:var(--text-base);color:var(--text-subtle);margin:0 0 20px}.auth-label{display:block;font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.06em;color:var(--text-subtle);margin:var(--space-4) 0 var(--space-2)}.auth-label:first-of-type{margin-top:0}.auth-input{width:100%;background:var(--surface-base);border:1px solid var(--border-strong);color:var(--text);padding:var(--space-2) 10px;border-radius:var(--radius-sm);font-size:var(--text-base)}.auth-input:focus-visible{border-color:var(--accent)}.auth-error{font-size:var(--text-sm);color:var(--danger);margin:var(--space-3) 0}.auth-buttons{display:flex;flex-direction:column;gap:10px;margin-top:8px}.auth-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-3);border-radius:var(--radius-sm);padding:10px var(--space-4);font-size:var(--text-base);font-weight:600;cursor:pointer;border:1px solid transparent}.auth-btn-google{background:#fff;color:#1f1f1f;border-color:#dadce0}.auth-btn-google:hover{background:#f5f6f7}.auth-btn-github{background:var(--brand-github);color:#fff;border-color:#444c56}.auth-btn-github:hover{background:var(--brand-github-hover)}.auth-btn-discord{background:var(--brand-discord);color:var(--text);border-color:var(--brand-discord)}.auth-btn-discord:hover{background:var(--brand-discord-hover)}.auth-btn-confirm{width:100%;margin-top:20px;background:var(--accent);border-color:var(--accent);color:#fff}.auth-btn-confirm:hover:not(:disabled){background:var(--accent-hover)}.auth-btn-confirm:disabled{opacity:.5;cursor:default}.character-tiles{--tile-scale: 4;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.character-tile{display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--surface-hover);border:1px solid var(--border-strong);border-radius:var(--radius);padding:var(--space-2) var(--space-1);cursor:pointer}.character-tile:hover{border-color:var(--text-subtle)}.character-tile.selected{border-color:var(--accent);background:var(--border-strong)}.character-tile-sprite{width:calc(var(--frame-width) * var(--tile-scale));height:calc(var(--frame-height) * var(--tile-scale));overflow:hidden;image-rendering:pixelated}.character-tile-sprite img{display:block;width:calc(var(--frame-width) * var(--frame-count) * var(--tile-scale));height:calc(var(--frame-height) * var(--tile-scale));margin-left:calc(var(--frame-index) * var(--frame-width) * var(--tile-scale) * -1)}.character-tile-label{font-size:var(--text-xs);color:var(--text-muted)}.auth-hint{margin:0 0 var(--space-3);font-size:var(--text-sm);color:var(--text-subtle);min-height:1.2em}.provider-mark{display:inline-flex;flex:none;align-items:center;justify-content:center}.provider-mark svg{width:100%;height:100%;display:block}.provider-mark-idle{opacity:.45}
