@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap";.r2g2d-root{--bg-0:oklch(97.5% .006 250);--bg-1:oklch(95.5% .008 250);--ink:oklch(26% .025 264);--ink-soft:oklch(40% .02 264);--ink-faint:oklch(52% .018 264);--hairline:oklch(55% .02 264/.16);--hairline-2:oklch(55% .02 264/.1);--glass:oklch(100% 0 0/.55);--glass-strong:oklch(100% 0 0/.74);--glass-edge:oklch(100% 0 0/.85);--glass-shadow:0 1px 0 oklch(100% 0 0/.6) inset, 0 24px 48px -24px oklch(40% .05 264/.35), 0 2px 8px -2px oklch(40% .05 264/.12);--amber:oklch(72% .175 52);--amber-2:oklch(66% .19 42);--amber-soft:oklch(72% .175 52/.14);--amber-glow:oklch(72% .175 52/.45);--cyan:oklch(78% .13 215);--cyan-2:oklch(70% .14 225);--cyan-soft:oklch(78% .13 215/.16);--cyan-glow:oklch(78% .13 215/.5);--ok:oklch(74% .15 155);--warn:oklch(78% .15 85);--bad:oklch(65% .2 25);--r-sm:8px;--r:14px;--r-lg:22px;--r-xl:30px;--mono:"Space Mono", ui-monospace, monospace;--sans:"Space Grotesk", system-ui, sans-serif;height:100%;font-family:var(--sans);color:var(--ink);-webkit-font-smoothing:antialiased;background:linear-gradient(180deg, var(--bg-0), var(--bg-1));position:relative;overflow:hidden}.r2g2d-root *{box-sizing:border-box}@keyframes r2g2dPulseSlide{0%{opacity:.6;transform:translate(-30%)}50%{opacity:1}to{opacity:.6;transform:translate(180%)}}.r2g2d-root button{color:var(--ink);font-family:var(--sans)}.r2g2d-root .holo-field{z-index:0;pointer-events:none;background:radial-gradient(60% 50% at 12% 8%,oklch(85% .09 52/.3),#0000 60%),radial-gradient(55% 50% at 92% 18%,oklch(85% .08 215/.3),#0000 62%),radial-gradient(70% 60% at 78% 96%,oklch(86% .07 285/.28),#0000 60%);position:absolute;inset:0}.r2g2d-root .holo-field:after{content:"";background-image:linear-gradient(oklch(50% .02 264/.05) 1px,#0000 1px),linear-gradient(90deg,oklch(50% .02 264/.05) 1px,#0000 1px);background-size:44px 44px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(120% 120% at 50% 30%,#000 30%,#0000 80%);mask-image:radial-gradient(120% 120% at 50% 30%,#000 30%,#0000 80%)}.r2g2d-root .glass{background:var(--glass);-webkit-backdrop-filter:blur(22px)saturate(1.4);border:1px solid var(--glass-edge);box-shadow:var(--glass-shadow);border-radius:var(--r-lg)}.r2g2d-root .glass-2{background:var(--glass-strong);-webkit-backdrop-filter:blur(18px)saturate(1.3);border:1px solid var(--hairline);border-radius:var(--r)}.r2g2d-root .kicker{font-family:var(--mono);letter-spacing:.28em;text-transform:uppercase;color:var(--ink-faint);font-size:11px}.r2g2d-root .mono{font-family:var(--mono)}.r2g2d-root h1,.r2g2d-root h2,.r2g2d-root h3,.r2g2d-root h4{letter-spacing:-.02em;text-wrap:balance;margin:0;font-weight:600}.r2g2d-root .display{letter-spacing:-.035em;font-weight:700;line-height:.98}.r2g2d-root .btn{font-family:var(--sans);cursor:pointer;white-space:nowrap;border:none;border-radius:999px;align-items:center;gap:9px;padding:12px 22px;font-size:14px;font-weight:600;transition:transform .15s,box-shadow .25s,background .2s;display:inline-flex}.r2g2d-root .btn:active{transform:translateY(1px)scale(.99)}.r2g2d-root .btn-amber{color:oklch(99% .01 80);background:linear-gradient(180deg, var(--amber), var(--amber-2));box-shadow:0 6px 18px -6px var(--amber-glow), 0 1px 0 oklch(100% 0 0/.4) inset}.r2g2d-root .btn-amber:hover{box-shadow:0 10px 26px -6px var(--amber-glow), 0 1px 0 oklch(100% 0 0/.5) inset;transform:translateY(-1px)}.r2g2d-root .btn-ghost{color:var(--ink);background:var(--glass-strong);border:1px solid var(--hairline)}.r2g2d-root .btn-ghost:hover{border-color:var(--amber);color:var(--amber-2)}.r2g2d-root .btn-cyan{color:oklch(20% .04 230);background:linear-gradient(180deg, var(--cyan), var(--cyan-2));box-shadow:0 6px 18px -6px var(--cyan-glow), 0 1px 0 oklch(100% 0 0/.4) inset}.r2g2d-root .field{width:100%;font-family:var(--sans);color:var(--ink);border:1px solid var(--hairline);border-radius:var(--r);background:oklch(100% 0 0/.6);outline:none;padding:14px 16px;font-size:15px;transition:border-color .2s,box-shadow .2s,background .2s}.r2g2d-root .field::placeholder{color:var(--ink-faint)}.r2g2d-root .field:focus{border-color:var(--amber);box-shadow:0 0 0 4px var(--amber-soft);background:oklch(100% 0 0/.8)}.r2g2d-root .field-label{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px;font-size:11px;display:block}.r2g2d-root .chip{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--hairline);color:var(--ink-soft);background:oklch(100% 0 0/.5);border-radius:999px;align-items:center;gap:6px;padding:5px 11px;font-size:11px;display:inline-flex}.r2g2d-root .chip-amber{color:var(--amber-2);border-color:var(--amber-glow);background:var(--amber-soft)}.r2g2d-root .chip-cyan{color:var(--cyan-2);border-color:var(--cyan-glow);background:var(--cyan-soft)}.r2g2d-root .chip-ok{color:var(--ok);background:oklch(74% .15 155/.12);border-color:oklch(74% .15 155/.4)}.r2g2d-root .chip-warn{color:oklch(60% .13 75);background:oklch(78% .15 85/.14);border-color:oklch(78% .15 85/.4)}.r2g2d-root .dot{background:currentColor;border-radius:50%;width:7px;height:7px;box-shadow:0 0 8px}.r2g2d-root .dot-pulse{animation:1.6s ease-in-out infinite r2g2dDotPulse}@keyframes r2g2dDotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.r2g2d-root .scroll::-webkit-scrollbar{width:10px;height:10px}.r2g2d-root .scroll::-webkit-scrollbar-thumb{background:oklch(60% .02 264/.25) padding-box padding-box;border:3px solid #0000;border-radius:99px}.r2g2d-root .scroll::-webkit-scrollbar-track{background:0 0}.r2g2d-root .holo-stage{border-radius:var(--r-lg);border:1px solid var(--glass-edge);box-shadow:var(--glass-shadow);background:radial-gradient(120% 90% at 50% 18%,oklch(97% .02 220/.9),oklch(93% .03 250/.65)),oklch(95% .01 250);position:relative;overflow:hidden}.r2g2d-root .holo-stage:before{content:"";pointer-events:none;z-index:5;background:repeating-linear-gradient(0deg,oklch(60% .05 220/.05) 0 2px,#0000 2px 4px);position:absolute;inset:0}.r2g2d-root .holo-vignette{pointer-events:none;z-index:6;border-radius:inherit;position:absolute;inset:0;box-shadow:inset 0 0 90px oklch(70% .06 230/.25)}.r2g2d-root .holo-scene{perspective:900px;place-items:center;display:grid;position:absolute;inset:0}.r2g2d-root .holo-world{transform-style:preserve-3d;transform:rotateX(58deg) rotateZ(var(--spin,0deg));animation:26s linear infinite r2g2dHoloSpin}@keyframes r2g2dHoloSpin{to{--spin:360deg}}@property --spin{syntax:"<angle>";inherits:false;initial-value:0deg}.r2g2d-root .holo-grid{background-image:linear-gradient(var(--cyan-glow) 1.5px, transparent 1.5px), linear-gradient(90deg, var(--cyan-glow) 1.5px, transparent 1.5px);border:1.5px solid var(--cyan);width:360px;height:360px;box-shadow:0 0 40px var(--cyan-glow), 0 0 80px oklch(78% .13 215/.25);background-size:30px 30px;position:relative;-webkit-mask-image:radial-gradient(circle,#000 55%,#0000 85%);mask-image:radial-gradient(circle,#000 55%,#0000 85%)}.r2g2d-root .holo-token{transform-style:preserve-3d;border:1.5px solid var(--amber);box-shadow:0 0 14px var(--amber-glow);background:oklch(72% .175 52/.08);position:absolute}.r2g2d-root .holo-token.cyan{border-color:var(--cyan);box-shadow:0 0 14px var(--cyan-glow);background:oklch(78% .13 215/.08)}.r2g2d-root .holo-float{animation:4s ease-in-out infinite r2g2dHoloFloat}@keyframes r2g2dHoloFloat{0%,to{transform:translateZ(var(--z,40px))}50%{transform:translateZ(calc(var(--z,40px) + 14px))}}.r2g2d-root .hud-corners>i{z-index:7;border-color:var(--cyan-2);opacity:.8;width:18px;height:18px;position:absolute}.r2g2d-root .hud-corners>i:first-child{border-top:2px solid;border-left:2px solid;top:14px;left:14px}.r2g2d-root .hud-corners>i:nth-child(2){border-top:2px solid;border-right:2px solid;top:14px;right:14px}.r2g2d-root .hud-corners>i:nth-child(3){border-bottom:2px solid;border-left:2px solid;bottom:14px;left:14px}.r2g2d-root .hud-corners>i:nth-child(4){border-bottom:2px solid;border-right:2px solid;bottom:14px;right:14px}.r2g2d-root .holo-beam{z-index:4;pointer-events:none;background:linear-gradient(#0000,oklch(78% .13 215/.18),#0000);height:40%;animation:5s ease-in-out infinite r2g2dBeam;position:absolute;left:0;right:0}@keyframes r2g2dBeam{0%{top:-40%}to{top:110%}}.r2g2d-root .droid{display:inline-block;position:relative}.r2g2d-root .droid-antenna{background:var(--ink-soft);width:2px;height:18%;position:absolute;top:-14%;left:50%;transform:translate(-50%)}.r2g2d-root .droid-antenna:after{content:"";background:var(--amber);width:8px;height:8px;box-shadow:0 0 10px var(--amber-glow);border-radius:50%;animation:1.6s ease-in-out infinite r2g2dDotPulse;position:absolute;top:-6px;left:50%;transform:translate(-50%)}.r2g2d-root .droid-head{aspect-ratio:1.08;border:1.5px solid var(--glass-edge);width:100%;box-shadow:var(--glass-shadow), 0 0 0 1px oklch(60% .02 264/.06);background:linear-gradient(160deg,oklch(100% 0 0/.92),oklch(93% .01 250/.85));border-radius:30% 30% 34% 34%/34%;place-items:center;display:grid;position:relative}.r2g2d-root .droid-visor{background:radial-gradient(120% 130% at 50% 30%,oklch(32% .04 264),oklch(18% .03 264));border:1px solid oklch(50% .03 264/.5);border-radius:999px;justify-content:center;align-items:center;gap:14%;width:72%;height:46%;display:flex;overflow:hidden;box-shadow:inset 0 2px 6px oklch(0% 0 0/.5)}.r2g2d-root .droid-eye{aspect-ratio:1;background:var(--amber);width:22%;box-shadow:0 0 12px var(--amber-glow), 0 0 4px oklch(100% .1 80);border-radius:50%;animation:5.5s infinite r2g2dBlink}.r2g2d-root .droid-eye.cyan{background:var(--cyan);box-shadow:0 0 12px var(--cyan-glow)}@keyframes r2g2dBlink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}.r2g2d-root .droid.speaking .droid-head:after{content:"";border-radius:inherit;border:2px solid var(--amber);opacity:0;animation:1.4s ease-out infinite r2g2dRing;position:absolute;inset:-6px}@keyframes r2g2dRing{0%{opacity:.5;transform:scale(1)}to{opacity:0;transform:scale(1.18)}}.r2g2d-root .wave{align-items:center;gap:3px;height:28px;display:flex}.r2g2d-root .wave>span{background:var(--amber);border-radius:99px;width:3px;height:30%;animation:1s ease-in-out infinite r2g2dWaveB}.r2g2d-root .wave.idle>span{opacity:.4;height:18%;animation-play-state:paused}@keyframes r2g2dWaveB{0%,to{height:22%}50%{height:100%}}.r2g2d-root .fade-up{animation:.5s cubic-bezier(.2,.7,.2,1) both r2g2dFadeUp}@keyframes r2g2dFadeUp{0%{transform:translateY(12px)}to{transform:none}}.r2g2d-root .stagger>*{animation:.5s cubic-bezier(.2,.7,.2,1) both r2g2dFadeUp}.r2g2d-root .stagger>:nth-child(2){animation-delay:50ms}.r2g2d-root .stagger>:nth-child(3){animation-delay:.1s}.r2g2d-root .stagger>:nth-child(4){animation-delay:.15s}.r2g2d-root .stagger>:nth-child(5){animation-delay:.2s}.r2g2d-root .stagger>:nth-child(6){animation-delay:.25s}.r2g2d-root .bar-track{background:oklch(60% .02 264/.14);border-radius:99px;height:8px;overflow:hidden}.r2g2d-root .bar-fill{background:linear-gradient(90deg, var(--amber), var(--amber-2));border-radius:99px;height:100%}.r2g2d-root .bar-fill.cyan{background:linear-gradient(90deg, var(--cyan), var(--cyan-2))}.r2g2d-legacy-wrap{background:linear-gradient(180deg, var(--bg-0), var(--bg-1));color:var(--ink)}.r2g2d-legacy-wrap .screen,.r2g2d-legacy-wrap .card,.r2g2d-legacy-wrap .panel{background:var(--glass-strong);border:1px solid var(--hairline);border-radius:var(--r);color:var(--ink)}.r2g2d-legacy-wrap .card-header,.r2g2d-legacy-wrap .panel-header,.r2g2d-legacy-wrap h1,.r2g2d-legacy-wrap h2,.r2g2d-legacy-wrap h3{color:var(--ink)}.r2g2d-legacy-wrap .text-muted,.r2g2d-legacy-wrap .subtle,.r2g2d-legacy-wrap .hint{color:var(--ink-soft)}.r2g2d-legacy-wrap a{color:var(--amber-2)}.r2g2d-legacy-wrap button,.r2g2d-legacy-wrap .btn{font-family:var(--sans)}.r2g2d-root .game-surface,.r2g2d-root canvas#godot-canvas{border-radius:var(--r)}.r2g2d-root canvas#godot-canvas{background:oklch(18% .04 264);margin:6px;box-shadow:inset 0 0 28px oklch(78% .13 215/.18);width:calc(100% - 12px)!important;height:calc(100% - 12px)!important}:root{--brand-primary:#7c3aed;--brand-primary-hover:#8b5cf6;--brand-primary-active:#6d28d9;--brand-primary-soft:#7c3aed26;--brand-secondary:#06b6d4;--brand-secondary-hover:#22d3ee;--brand-secondary-soft:#06b6d426;--brand-accent:#f43f5e;--brand-accent-soft:#f43f5e26;--surface-1:#0f172a;--surface-2:#1e293b;--surface-3:#334155;--surface-inverse:#f8fafc;--surface-overlay:#0f172ad9;--border-subtle:#ffffff14;--border-default:#ffffff26;--border-strong:#ffffff40;--text-primary:#f8fafc;--text-secondary:#cbd5e1;--text-muted:#64748b;--text-on-brand:#fff;--text-link:var(--brand-secondary);--state-success-bg:#22c5a826;--state-success-fg:#2dd4bf;--state-success:#14b8a6;--state-warning-bg:#f5a62326;--state-warning-fg:#fbbf24;--state-warning:#f59e0b;--state-error-bg:#e9456026;--state-error-fg:#f87171;--state-error:#ef4444;--state-info-bg:#e7efff;--state-info-fg:#2647a8;--state-info:var(--brand-primary);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:32px;--space-8:40px;--space-9:48px;--space-10:56px;--space-11:64px;--space-12:80px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-pill:999px;--shadow-sm:0 1px 2px #1f21380f, 0 1px 1px #1f21380a;--shadow-md:0 4px 12px #1f213814, 0 2px 4px #1f21380d;--shadow-lg:0 16px 40px #1f21381f, 0 4px 12px #1f21380f;--shadow-brand:0 6px 20px #5b6bf347;--shadow-coral:0 6px 20px #ff6b6b47;--font-display:"Outfit", "Quicksand", system-ui, -apple-system, sans-serif;--font-body:"Inter", system-ui, -apple-system, sans-serif;--font-mono:ui-monospace, "SF Mono", "Fira Code", Menlo, Consolas, monospace;--text-xs:12px;--text-sm:13px;--text-md:14px;--text-lg:16px;--text-xl:20px;--text-2xl:26px;--text-3xl:34px;--line-tight:1.2;--line-snug:1.35;--line-normal:1.5;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--transition-fast:.12s cubic-bezier(.2, .8, .3, 1);--transition-base:.2s cubic-bezier(.2, .8, .3, 1);--z-base:1;--z-overlay:100;--z-modal:1000;--z-toast:2000;--focus-ring:0 0 0 3px #5b6bf359}.ui-btn{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-pill);font-family:var(--font-body);font-weight:var(--weight-semibold);cursor:pointer;transition:transform var(--transition-fast), background var(--transition-base), box-shadow var(--transition-base), color var(--transition-base);-webkit-user-select:none;user-select:none;white-space:nowrap;border:1px solid #0000;line-height:1;text-decoration:none;display:inline-flex}.ui-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.ui-btn:disabled,.ui-btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;box-shadow:none!important;transform:none!important}.ui-btn:not(:disabled):active{transform:translateY(1px)}.ui-btn--sm{font-size:var(--text-sm);padding:var(--space-2) var(--space-4);min-height:32px}.ui-btn--md{font-size:var(--text-md);padding:var(--space-3) var(--space-5);min-height:40px}.ui-btn--lg{font-size:var(--text-lg);padding:var(--space-4) var(--space-6);min-height:48px}.ui-btn--primary{background:var(--brand-primary);color:var(--text-on-brand);box-shadow:var(--shadow-sm)}.ui-btn--primary:not(:disabled):hover{background:var(--brand-primary-hover);box-shadow:var(--shadow-brand);transform:translateY(-1px)}.ui-btn--secondary{background:var(--brand-secondary);color:var(--text-on-brand);box-shadow:var(--shadow-sm)}.ui-btn--secondary:not(:disabled):hover{background:var(--brand-secondary-hover);box-shadow:var(--shadow-coral);transform:translateY(-1px)}.ui-btn--ghost{color:var(--text-secondary);border-color:var(--border-default);background:0 0}.ui-btn--ghost:not(:disabled):hover{background:var(--brand-primary-soft);color:var(--brand-primary);border-color:var(--brand-primary)}.ui-btn--danger{background:var(--state-error);color:var(--text-on-brand);box-shadow:var(--shadow-sm)}.ui-btn--danger:not(:disabled):hover{background:#c8233e;transform:translateY(-1px)}.ui-btn--icon-only{border-radius:var(--radius-pill);width:40px;height:40px;padding:0}.ui-btn--icon-only.ui-btn--sm{width:32px;height:32px}.ui-btn__icon,.ui-btn__spinner{align-items:center;display:inline-flex}.ui-card{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-5);color:var(--text-primary)}.ui-card--flat{box-shadow:none}.ui-card--raised{box-shadow:var(--shadow-md)}.ui-card--interactive{box-shadow:var(--shadow-sm);cursor:pointer;transition:transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-base)}.ui-card--interactive:hover{box-shadow:var(--shadow-lg);border-color:var(--brand-primary);transform:translateY(-2px)}.ui-card--interactive:focus-within{box-shadow:var(--focus-ring)}.ui-card__header{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.ui-card__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-bold);color:var(--text-primary)}.ui-card__body{color:var(--text-secondary)}.ui-card__footer{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border-subtle);justify-content:flex-end;gap:var(--space-2);display:flex}.ui-field{gap:var(--space-2);margin-bottom:var(--space-3);text-align:left;flex-direction:column;display:flex}.ui-field__label{font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-secondary)}.ui-field__required{color:var(--state-error);margin-left:2px}.ui-field__control{background:var(--surface-2);border:1.5px solid var(--border-default);border-radius:var(--radius-md);padding:0 var(--space-4);min-height:48px;transition:border-color var(--transition-base), box-shadow var(--transition-base);align-items:center;display:flex}.ui-field__control:focus-within{border-color:var(--brand-primary);box-shadow:var(--focus-ring)}.ui-field--error .ui-field__control{border-color:var(--state-error)}.ui-field--error .ui-field__control:focus-within{box-shadow:0 0 0 3px #e9456040}.ui-field__input,.ui-field__select{min-width:0;font:inherit;font-size:var(--text-lg);color:var(--text-primary);background:0 0;border:none;outline:none;flex:1;width:100%;padding:14px 0;line-height:1.4}.ui-field__input::placeholder{color:var(--text-muted)}.ui-field__select{cursor:pointer;padding-right:var(--space-2)}.ui-field__helper{font-size:var(--text-xs);color:var(--text-muted)}.ui-field__error{font-size:var(--text-xs);color:var(--state-error-fg);font-weight:var(--weight-semibold)}.ui-modal__backdrop{background:var(--surface-overlay);padding:var(--space-4);z-index:var(--z-modal);animation:ui-fade-in var(--transition-base);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.ui-modal__content{background:var(--surface-2);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:92vh;padding:var(--space-6);animation:ui-pop-in var(--transition-base);overflow:auto}.ui-modal__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-bold);margin-bottom:var(--space-3);color:var(--text-primary)}.ui-modal__footer{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-5);display:flex}.ui-badge{align-items:center;gap:var(--space-1);border-radius:var(--radius-pill);font-weight:var(--weight-semibold);white-space:nowrap;line-height:1;display:inline-flex}.ui-badge--sm{padding:3px var(--space-2);font-size:11px}.ui-badge--md{font-size:var(--text-xs);padding:4px var(--space-3)}.ui-badge--neutral{background:var(--surface-3);color:var(--text-secondary)}.ui-badge--brand{background:var(--brand-primary-soft);color:var(--brand-primary)}.ui-badge--success{background:var(--state-success-bg);color:var(--state-success-fg)}.ui-badge--warning{background:var(--state-warning-bg);color:var(--state-warning-fg)}.ui-badge--error{background:var(--state-error-bg);color:var(--state-error-fg)}.ui-badge--info{background:var(--state-info-bg);color:var(--state-info-fg)}.ui-badge__dot{background:currentColor;border-radius:50%;width:6px;height:6px;display:inline-block}.ui-toast-region{bottom:var(--space-5);right:var(--space-5);z-index:var(--z-toast);gap:var(--space-2);pointer-events:none;flex-direction:column;max-width:360px;display:flex;position:fixed}.ui-toast{background:var(--surface-2);border:1px solid var(--border-subtle);border-left:4px solid var(--brand-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--text-primary);align-items:center;gap:var(--space-3);pointer-events:auto;animation:ui-slide-in var(--transition-base);display:flex}.ui-toast--success{border-left-color:var(--state-success)}.ui-toast--error{border-left-color:var(--state-error)}.ui-toast--warning{border-left-color:var(--state-warning)}.ui-toast--info{border-left-color:var(--state-info)}.ui-toast__icon{font-size:18px;line-height:1}.ui-toast__msg{flex:1}.ui-toast__close{color:var(--text-muted);cursor:pointer;padding:0 var(--space-1);background:0 0;border:none;font-size:18px;line-height:1}.ui-toast__close:hover{color:var(--text-primary)}.ui-empty{text-align:center;padding:var(--space-7) var(--space-4);color:var(--text-muted)}.ui-empty__art{margin-bottom:var(--space-3);font-size:48px;line-height:1;display:block}.ui-empty__title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--text-secondary);margin-bottom:var(--space-2)}.ui-empty__desc{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--space-4);max-width:360px;line-height:var(--line-normal);margin-left:auto;margin-right:auto}.ui-spinner{color:var(--brand-primary);border-style:solid;border-color:currentColor #0000;border-radius:50%;animation:.9s linear infinite ui-spin;display:inline-block}.ui-spinner--brand{color:var(--brand-primary)}.ui-spinner--muted{color:var(--text-muted)}.ui-spinner--onbrand{color:var(--text-on-brand)}.ui-spinner--sm{border-width:2px;width:14px;height:14px}.ui-spinner--md{border-width:3px;width:22px;height:22px}.ui-spinner--lg{border-width:4px;width:36px;height:36px}.ui-skeleton{background:linear-gradient(90deg, var(--surface-3) 0%, #1f21380f 50%, var(--surface-3) 100%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.4s ease-in-out infinite ui-shimmer;display:block}@keyframes ui-spin{to{transform:rotate(360deg)}}@keyframes ui-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes ui-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ui-pop-in{0%{opacity:0;transform:translateY(8px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes ui-slide-in{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}*{box-sizing:border-box;margin:0;padding:0}:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px;border-radius:3px}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[role=button]:focus-visible,[role=tab]:focus-visible,[role=radio]:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}.skip-link{z-index:1000;background:var(--brand-primary);color:var(--text-on-brand);padding:var(--space-2) var(--space-3);border-radius:0 0 var(--radius-sm) 0;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html,body,#root{height:100%}html,body{font-family:var(--font-body);background:var(--surface-1);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--text-primary);font-weight:var(--weight-bold);line-height:var(--line-tight)}a{color:var(--text-link)}.app{max-width:1280px;padding:var(--space-4) var(--space-5);flex-direction:column;min-height:100vh;margin:0 auto;display:flex}.app-header{padding:var(--space-3) 0;margin-bottom:var(--space-5);border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;display:flex}.app-brand{align-items:center;gap:var(--space-3);display:flex}.app-brand__mark{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--brand-primary), var(--brand-secondary));width:36px;height:36px;box-shadow:var(--shadow-sm);color:var(--text-on-brand);justify-content:center;align-items:center;display:flex}.app-header h1{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--text-primary);letter-spacing:-.01em}.app-header-right{align-items:center;gap:var(--space-3);display:flex}.connection-status{align-items:center;gap:var(--space-2);padding:6px var(--space-3);border-radius:var(--radius-pill);background:var(--state-warning-bg);color:var(--state-warning-fg);font-size:var(--text-xs);font-weight:var(--weight-semibold);display:inline-flex}.connection-status:before{content:"";background:var(--state-warning);border-radius:50%;width:8px;height:8px}.connection-status.connected{background:var(--state-success-bg);color:var(--state-success-fg)}.connection-status.connected:before{background:var(--state-success)}.player-name{color:inherit;opacity:.75}.user-menu{display:inline-flex;position:relative}.user-menu__avatar{background:var(--brand-primary-soft);width:36px;height:36px;color:var(--brand-primary);font-weight:var(--weight-bold);font-size:var(--text-md);border:2px solid var(--brand-primary);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.user-menu__avatar:focus-visible{box-shadow:var(--focus-ring);outline:none}.user-menu__popover{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--space-2);min-width:160px;z-index:var(--z-overlay);position:absolute;top:calc(100% + 6px);right:0}.user-menu__popover button{text-align:left;width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text-primary);cursor:pointer;background:0 0;border:none}.user-menu__popover button:hover{background:var(--brand-primary-soft);color:var(--brand-primary)}.user-menu__name{color:var(--text-muted);font-size:var(--text-xs);padding:0 var(--space-3) var(--space-2)}.btn-logout{border:1px solid var(--border-default);color:var(--text-secondary);font-size:var(--text-xs);padding:6px var(--space-3);border-radius:var(--radius-pill);cursor:pointer;font-weight:var(--weight-semibold);background:0 0}.btn-logout:hover{background:var(--brand-primary-soft);color:var(--brand-primary);border-color:var(--brand-primary)}.app-main{flex:1}.card{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.card h2{color:var(--text-primary);font-family:var(--font-display);margin-bottom:var(--space-3);font-size:var(--text-xl)}.card-header{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.card-header h2{margin-bottom:0}button{background:var(--brand-primary);color:var(--text-on-brand);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);cursor:pointer;font-size:var(--text-md);font-weight:var(--weight-semibold);transition:background var(--transition-base), transform var(--transition-fast);border:none;margin:2px 4px;font-family:inherit}button:hover{background:var(--brand-primary-hover)}button:disabled{background:var(--border-default);color:var(--text-muted);cursor:not-allowed}.btn-danger{background:var(--state-error)}.btn-danger:hover{background:#c8233e}button.ui-btn{margin:0}input,select,textarea{padding:var(--space-3) var(--space-3);border:1.5px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text-primary);font-size:var(--text-md);width:100%;margin-bottom:var(--space-2);font-family:inherit}input:focus,textarea:focus,select:focus{border-color:var(--brand-primary);box-shadow:var(--focus-ring);outline:none}.ui-field input,.ui-field select,.ui-field textarea{background:0 0;border:none;margin-bottom:0;padding:0}.ui-field input:focus,.ui-field select:focus,.ui-field textarea:focus{box-shadow:none}.login-screen{padding-top:var(--space-9);justify-content:center;align-items:flex-start;min-height:calc(100vh - 120px);display:flex}.login-screen .login-card{background:var(--surface-2);border-radius:var(--radius-xl);width:100%;max-width:480px;box-shadow:var(--shadow-lg);padding:var(--space-7) var(--space-6);position:relative;overflow:hidden}.login-screen .ui-field{margin-bottom:var(--space-4)}.login-screen .ui-field__label{font-size:var(--text-md);color:var(--text-primary);margin-bottom:6px}.login-screen .ui-field__control{min-height:56px;padding:0 var(--space-4);background:var(--surface-1);border-width:2px}.login-screen .ui-field__control:focus-within{box-shadow:0 0 0 4px #5b6bf32e}.login-screen .ui-field__input{padding:16px 0;font-size:17px}.login-screen .ui-field__input::placeholder{color:var(--text-muted);font-size:16px}.login-screen form>button[type=submit]{width:100%;min-height:52px;font-size:var(--text-md);margin-top:var(--space-2)}.login-screen .login-card:before{content:"";background:linear-gradient(90deg, var(--brand-primary), var(--brand-accent), var(--brand-secondary));height:6px;position:absolute;inset:0 0 auto}.login-hero{text-align:center;margin-bottom:var(--space-5)}.login-hero__art{border-radius:var(--radius-xl);background:linear-gradient(135deg, var(--brand-primary), var(--brand-secondary));width:72px;height:72px;margin-bottom:var(--space-3);box-shadow:var(--shadow-md);justify-content:center;align-items:center;display:inline-flex}.login-hero h2{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--weight-bold);margin-bottom:var(--space-2)}.login-screen .subtitle{color:var(--text-muted);font-size:var(--text-md);margin-bottom:0}.auth-tabs{gap:var(--space-1);margin-bottom:var(--space-5);background:var(--surface-3);border-radius:var(--radius-pill);padding:var(--space-1);display:flex}.auth-tab{color:var(--text-secondary);font-size:var(--text-sm);font-weight:var(--weight-semibold);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);cursor:pointer;transition:all var(--transition-base);background:0 0;border:none;flex:1;margin:0}.auth-tab:hover{color:var(--text-primary)}.auth-tab.active{background:var(--surface-2);color:var(--brand-primary);box-shadow:var(--shadow-sm)}.auth-demo{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--border-subtle);text-align:center;font-size:var(--text-xs);color:var(--text-muted)}.auth-demo a{color:var(--text-muted);cursor:pointer;text-decoration:underline}.auth-demo a:hover{color:var(--brand-primary)}.role-chips{gap:var(--space-2);display:flex}.role-chip{padding:var(--space-3);background:var(--surface-2);border:1.5px solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;min-height:48px;font-weight:var(--weight-semibold);font-size:var(--text-sm);color:var(--text-secondary);text-align:center;transition:all var(--transition-base);flex:1}.role-chip:hover{border-color:var(--brand-primary);color:var(--brand-primary)}.role-chip:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}.role-chip--active{background:var(--brand-primary-soft);border-color:var(--brand-primary);color:var(--brand-primary)}.modal-overlay{z-index:100;padding:var(--space-4);animation:modalFade var(--transition-base) ease-out;background:#1414288c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@keyframes modalFade{0%{opacity:0}to{opacity:1}}.modal-card{background:var(--surface-1);border-radius:var(--radius-lg);padding:var(--space-5);width:100%;max-width:400px;box-shadow:var(--shadow-lg);border:1px solid var(--border-default)}.modal-card__title{margin:0 0 var(--space-2);font-size:var(--text-lg);color:var(--text-primary)}.modal-card__sub{margin:0 0 var(--space-4);color:var(--text-secondary);font-size:var(--text-sm);line-height:1.5}.modal-card__actions{gap:var(--space-2);margin-top:var(--space-3);justify-content:flex-end;display:flex}.inline-banner{align-items:flex-start;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);margin:var(--space-3) 0;display:flex}.inline-banner--error{background:var(--state-error-bg);color:var(--state-error-fg);border:1px solid #e945602e}.inline-banner--info{background:var(--state-info-bg);color:var(--state-info-fg);border:1px solid #5b6bf32e}.browse-grid{gap:var(--space-4);grid-template-columns:1fr;display:grid}.browse-header-actions{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.browse-header-actions .btn-label-icon{display:none}@media (width<=500px){.browse-header-actions .btn-label-icon{display:inline}.browse-header-actions .btn-label-full{display:none}}.game-list,.lobby-list{gap:var(--space-2);display:grid}.game-tile,.lobby-tile{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);justify-content:space-between;align-items:center;gap:var(--space-3);transition:all var(--transition-base);box-shadow:var(--shadow-sm);display:flex}.game-tile:hover,.lobby-tile:hover{border-color:var(--brand-primary);box-shadow:var(--shadow-md);transform:translateY(-1px)}.game-tile__main,.lobby-tile__main{flex-direction:column;gap:2px;min-width:0;display:flex}.game-tile__name,.lobby-tile__name{font-weight:var(--weight-bold);color:var(--text-primary);font-size:var(--text-md)}.game-tile__meta,.lobby-tile__meta{font-size:var(--text-xs);color:var(--text-muted);gap:var(--space-2);align-items:center;display:flex}.game-tile__actions{gap:var(--space-2);flex-shrink:0;display:flex}.game-item,.lobby-item{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;display:flex}.game-item .actions{gap:var(--space-2);display:flex}.meta{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px;display:block}.empty{color:var(--text-muted);font-style:italic}.lobby-screen{padding-top:var(--space-7);justify-content:center;display:flex}.lobby-card{text-align:center;width:100%;max-width:520px}.lobby-info{gap:var(--space-2);margin:var(--space-5) 0;text-align:left;background:var(--surface-3);border-radius:var(--radius-md);padding:var(--space-4);display:grid}.info-row{padding:var(--space-1) 0;font-size:var(--text-sm);justify-content:space-between;display:flex}.info-row .label{color:var(--text-muted);font-weight:var(--weight-semibold)}.info-row strong,.info-row span:not(.label){color:var(--text-primary);font-weight:var(--weight-semibold)}.lobby-code{font-family:var(--font-mono);font-size:var(--text-lg);font-weight:var(--weight-bold);letter-spacing:.1em;color:var(--brand-primary)}.lobby-code-row{align-items:center;gap:var(--space-2);display:inline-flex}.lobby-copy-btn{font-size:var(--text-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);background:var(--surface-3);border:1px solid var(--border-subtle);color:var(--text-secondary);cursor:pointer;transition:background var(--transition-base), color var(--transition-base);min-height:32px;font-weight:500}.lobby-copy-btn:hover{background:var(--brand-primary-soft);color:var(--brand-primary);border-color:var(--brand-primary)}.lobby-copy-btn:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}.lobby-players{gap:var(--space-2);margin:var(--space-4) 0;flex-wrap:wrap;justify-content:center;display:flex}.player-chip{align-items:center;gap:var(--space-2);background:var(--surface-3);padding:4px var(--space-3) 4px 4px;border-radius:var(--radius-pill);font-size:var(--text-sm);color:var(--text-primary);font-weight:var(--weight-semibold);display:inline-flex}.player-chip__avatar{background:linear-gradient(135deg, var(--brand-primary), var(--brand-secondary));width:28px;height:28px;color:var(--text-on-brand);font-size:var(--text-xs);font-weight:var(--weight-bold);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.player-tag{background:var(--brand-primary-soft);color:var(--brand-primary);padding:4px var(--space-3);border-radius:var(--radius-pill);font-size:var(--text-sm);font-weight:var(--weight-semibold);align-items:center;margin:3px;display:inline-flex}.waiting-message{color:var(--text-muted);margin:var(--space-3) 0;font-style:italic;font-size:var(--text-sm);animation:2s infinite pulse}@keyframes pulse{0%,to{opacity:.55}50%{opacity:1}}.result-screen{padding-top:var(--space-7);justify-content:center;display:flex}.result-card{text-align:center;width:100%;max-width:480px;padding:var(--space-7) var(--space-6)}.result-hero{margin-bottom:var(--space-4);font-size:72px;line-height:1}.result-message{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:var(--weight-bold);margin-bottom:var(--space-2)}.result-message.win{color:var(--state-success-fg)}.result-message.draw{color:var(--state-warning-fg)}.result-message.lose{color:var(--state-error-fg)}.result-reason{color:var(--text-muted);margin-bottom:var(--space-5);font-size:var(--text-md)}.game-header{margin-bottom:var(--space-4)}.game-info{align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-left:auto;display:flex}.game-info .label{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.game-info .label strong{color:var(--text-primary);text-transform:none;letter-spacing:0;margin-left:4px}.turn-indicator{padding:6px var(--space-3);border-radius:var(--radius-pill);background:var(--surface-3);color:var(--text-secondary);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:.04em;align-items:center;display:inline-flex}.turn-indicator.my-turn{background:linear-gradient(135deg, var(--brand-primary), var(--brand-secondary));color:var(--text-on-brand);box-shadow:var(--shadow-brand);animation:2s ease-in-out infinite my-turn-pulse}@keyframes my-turn-pulse{0%,to{box-shadow:var(--shadow-brand)}50%{box-shadow:0 0 26px #5b6bf373}}.board{border-collapse:collapse;margin:var(--space-4) auto}.board td{border:2px solid var(--border-default);text-align:center;vertical-align:middle;background:var(--surface-2);width:64px;height:64px;color:var(--text-primary);transition:background var(--transition-base);font-size:28px;font-weight:700}.board td.clickable{cursor:pointer}.board td.clickable:hover{background:var(--brand-primary-soft)}.board td.taken{color:var(--brand-primary);cursor:default}.board-3d{gap:var(--space-4);margin:var(--space-4) 0;flex-wrap:wrap;justify-content:center;display:flex}.board-layer{text-align:center}.board-layer h4{color:var(--text-muted);font-size:var(--text-xs);margin-bottom:4px}.card-game{margin:var(--space-4) 0}.hands{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.hand{padding:var(--space-3);border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--surface-3)}.my-hand{border-color:var(--state-success);background:var(--state-success-bg)}.card-list{flex-wrap:wrap;gap:6px;display:flex}.playing-card{background:var(--surface-2);color:var(--text-primary);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-weight:var(--weight-bold);border:1px solid var(--border-default);box-shadow:var(--shadow-sm)}.hidden-hand{color:var(--text-muted);font-style:italic}.empty-hand{color:var(--text-muted)}.played-cards{margin-top:var(--space-3);text-align:center}.played-card{background:var(--brand-accent-soft);color:var(--text-primary);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-weight:var(--weight-bold);margin:0 4px;display:inline-block}.dice-game{text-align:center;margin:var(--space-4) 0}.dice-row{perspective:600px;justify-content:center;gap:20px;margin:20px 0;display:flex}.dice-total{font-size:var(--text-lg);color:var(--text-secondary);margin:var(--space-2) 0}.dice-total strong{color:var(--brand-primary);font-size:var(--text-xl)}.scores{margin:var(--space-3) 0;justify-content:center;gap:20px;display:flex}.score{font-size:var(--text-lg);padding:6px var(--space-4);background:var(--surface-3);border-radius:var(--radius-md);border:1px solid var(--border-subtle)}.round{color:var(--text-muted);font-size:var(--text-md);margin:var(--space-2) 0}.btn-roll{font-size:var(--text-lg);padding:var(--space-3) var(--space-7);background:linear-gradient(135deg, var(--brand-primary), var(--brand-secondary));border-radius:var(--radius-md);margin-top:var(--space-3);box-shadow:var(--shadow-brand);color:var(--text-on-brand);font-weight:var(--weight-bold);transition:all var(--transition-base)}.btn-roll:hover:not(:disabled){filter:brightness(1.05);transform:translateY(-2px)}.die-3d-wrapper{perspective:400px;width:70px;height:70px}.die-3d-wrapper.spinning{animation:.6s ease-out die-bounce}.die-3d{width:70px;height:70px;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.2,.8,.3,1.2);position:relative}.die-3d.landed{transform:rotateX(0)rotateY(0)rotate(0)}.die-face{border:2px solid var(--border-default);backface-visibility:hidden;background:linear-gradient(145deg,#fff,#efece6);border-radius:10px;justify-content:center;align-items:center;width:70px;height:70px;display:flex;position:absolute;box-shadow:inset 0 0 15px #1f21380f}.die-front{transform:translateZ(35px)}.die-back{transform:rotateY(180deg)translateZ(35px)}.die-right{transform:rotateY(90deg)translateZ(35px)}.die-left{transform:rotateY(-90deg)translateZ(35px)}.die-top{transform:rotateX(90deg)translateZ(35px)}.die-bottom{transform:rotateX(-90deg)translateZ(35px)}.dot-grid{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:2px;width:50px;height:50px;padding:2px;display:grid}.dot{background:0 0;border-radius:50%;place-self:center;width:12px;height:12px;transition:all .3s}.dot.visible{background:radial-gradient(circle at 40% 40%, var(--text-primary), #333);box-shadow:0 1px 3px #0003}@keyframes die-bounce{0%{transform:translateY(0)scale(1)}30%{transform:translateY(-30px)scale(1.05)}50%{transform:translateY(-15px)scale(1.02)}70%{transform:translateY(-5px)scale(1)}to{transform:translateY(0)scale(1)}}.track-game{margin:var(--space-4) 0}.track{margin:var(--space-3) 0;flex-wrap:wrap;gap:4px;display:flex}.track-cell{background:var(--surface-2);border:1px solid var(--border-default);border-radius:var(--radius-sm);text-align:center;width:40px;height:40px;color:var(--text-secondary);font-size:10px;position:relative}.track-cell.finish{background:var(--state-success-bg);border-color:var(--state-success)}.track-num{color:var(--text-muted)}.track-player{color:var(--brand-secondary);font-size:11px;font-weight:700;display:block}.track-player.me{color:var(--state-success)}.positions{margin:var(--space-2) 0;gap:20px;display:flex}.checkers-form{margin:var(--space-3) 0}.form-row{gap:var(--space-2);flex-wrap:wrap;align-items:center;margin:6px 0;display:flex}.form-row input{width:60px}.form-row select{width:auto}.piece-counts{text-align:center;color:var(--text-muted);margin:var(--space-2) 0}.enum-actions{gap:var(--space-2);margin:var(--space-3) 0;display:flex}.state-details{margin-top:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--surface-3);border:1px solid var(--border-subtle);border-radius:var(--radius-md);font-size:var(--text-xs)}.state-details summary{cursor:pointer;color:var(--text-secondary);-webkit-user-select:none;user-select:none}.state-json{margin-top:var(--space-2);max-height:240px;padding:var(--space-2);background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-family:var(--font-mono);color:var(--text-secondary);font-size:11px;overflow:auto}.game-def-editor{margin:var(--space-3) 0;padding:var(--space-3);background:var(--surface-3);border-radius:var(--radius-md)}.editor-header{margin-bottom:var(--space-2)}.json-editor{font-family:var(--font-mono);font-size:var(--text-xs);min-height:200px}.error{color:var(--state-error-fg);font-size:var(--text-sm);margin:var(--space-2) 0}.template-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));margin:10px 0;display:grid}.template-btn{background:var(--surface-2);border:1.5px solid var(--border-default);padding:10px var(--space-2);border-radius:var(--radius-md);text-align:center;cursor:pointer;color:var(--text-primary);transition:all var(--transition-base);flex-direction:column;align-items:center;display:flex}.template-btn:hover,.template-btn.selected{border-color:var(--brand-primary);background:var(--brand-primary-soft)}.template-icon{color:var(--brand-primary);margin-bottom:4px;font-size:20px;font-weight:700}.template-name{font-size:var(--text-sm);color:var(--text-primary);font-weight:700}.template-desc{color:var(--text-muted);margin-top:2px;font-size:11px}.creator-chat{margin-bottom:var(--space-4)}.creator-header{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.creator-header h2{color:var(--text-primary);font-size:var(--text-lg);font-family:var(--font-display)}.ai-status{font-size:var(--text-xs);border-radius:var(--radius-pill);margin-right:var(--space-2);padding:3px 10px}.ai-status.online{background:var(--state-success-bg);color:var(--state-success-fg)}.ai-status.offline{background:var(--state-error-bg);color:var(--state-error-fg)}.step-progress{margin-bottom:var(--space-3);background:var(--surface-3);border-radius:var(--radius-md);gap:4px;padding:4px;display:flex}.step-item{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--text-muted);cursor:pointer;transition:all var(--transition-base);background:0 0;flex:1;align-items:center;gap:6px;display:flex}.step-item:hover{background:var(--brand-primary-soft);color:var(--brand-primary)}.step-item.active{background:var(--brand-primary);color:var(--text-on-brand)}.step-item.done{background:var(--state-success-bg);color:var(--state-success-fg)}.step-icon{background:var(--surface-2);width:20px;height:20px;color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:inline-flex}.step-item.active .step-icon{color:var(--text-on-brand);background:#ffffff40}.step-item.done .step-icon{color:var(--state-success-fg);background:#22c5a840}.step-label{white-space:nowrap}.validation-banner{background:var(--state-error-bg);border-left:3px solid var(--state-error);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--state-error-fg);border-radius:var(--radius-sm)}.validation-banner ul{color:var(--text-primary);font-size:var(--text-sm);margin:6px 0 0 18px}.validation-banner li{margin:3px 0;line-height:1.45}.creator-tabs-bar{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);flex-wrap:wrap;display:flex}.creator-tabs-bar .json-view-toggle{flex:none}.creator-tabs-bar .json-actions{gap:var(--space-2);flex-wrap:wrap;flex:none}@media (width<=600px){.creator-tabs-bar{flex-direction:column;align-items:stretch}.creator-tabs-bar .json-view-toggle{-webkit-overflow-scrolling:touch;white-space:nowrap;overflow-x:auto}.creator-tabs-bar .json-actions{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto}.creator-tabs-bar .json-actions>*{flex:none}}.creator-tab-content{min-height:500px}.creator-data-view{background:var(--surface-3);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3);min-height:500px;overflow:auto}.creator-data-view .json-editor{width:100%;min-height:480px}.creator-split{gap:var(--space-3);min-height:500px;display:grid}.creator-split--build{grid-template-columns:1fr 1fr}.creator-split--build.creator-split--solo{grid-template-columns:1fr}.creator-chat-panel,.creator-preview-panel{background:var(--surface-3);border:1px solid var(--border-subtle);border-radius:var(--radius-md);flex-direction:column;display:flex;overflow:hidden}.creator-preview-panel{padding:var(--space-3);gap:var(--space-3)}.creator-preview-pane{flex:1;min-height:360px}.editor-controls-panel{padding:var(--space-3);gap:var(--space-3);overflow-y:auto}.editor-controls-panel .editor-actions{margin-top:auto}.editor-build-header{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);font-size:var(--text-sm);color:var(--text-secondary);display:flex}.build-tab-editor{width:100%;min-height:420px;font-family:monospace;font-size:var(--text-xs);flex:1}.chat-messages{padding:var(--space-3);flex:1;min-height:300px;max-height:400px;overflow-y:auto}.chat-msg{margin-bottom:var(--space-3)}.chat-msg .msg-label{text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px;font-size:11px;font-weight:700}.chat-msg.user .msg-label{color:var(--state-success-fg)}.chat-msg.assistant .msg-label{color:var(--brand-primary)}.chat-msg .msg-content{font-size:var(--text-sm);white-space:pre-wrap;word-break:break-word;line-height:1.5}.chat-msg.user .msg-content{background:var(--state-success-bg);color:var(--state-success-fg);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md)}.chat-msg.assistant .msg-content{background:var(--brand-primary-soft);color:var(--text-primary);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md)}.typing{color:var(--text-muted);animation:1.5s infinite pulse}.starter-prompts{padding:var(--space-3) var(--space-4);gap:var(--space-2);border-top:1px solid var(--border-subtle);background:var(--surface-2);flex-wrap:wrap;display:flex}.starter-btn{background:var(--brand-primary-soft);color:var(--brand-primary);text-align:left;font-size:var(--text-sm);min-height:40px;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);transition:background-color var(--transition-base), color var(--transition-base), transform var(--transition-fast);cursor:pointer;border:1px solid #0000;font-weight:500}.starter-btn:hover{background:var(--brand-primary);color:var(--text-on-brand);transform:translateY(-1px)}.starter-btn:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}.chat-input-row{gap:var(--space-3);padding:var(--space-3) var(--space-4);border-top:1px solid var(--border-subtle);background:var(--surface-2);align-items:stretch;display:flex}.chat-input-row>button{align-self:stretch;min-width:88px}.conversation-toggle{align-items:center;gap:var(--space-3);padding:6px var(--space-4);background:var(--surface-2);border-top:1px solid var(--border-subtle);color:var(--text-secondary);font-size:12px;display:flex}.conversation-toggle label{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;display:inline-flex}.conversation-toggle input[type=checkbox]{cursor:pointer;margin:0}.conversation-toggle .experimental-tag{text-transform:uppercase;letter-spacing:.5px;background:var(--brand-primary,#f59e0b);color:#000;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:600}.conversation-toggle .conversation-hint{color:var(--text-muted,var(--text-secondary));font-style:italic}.conversation-toggle .conversation-status{background:var(--surface-3,#ffffff0f);border:1px solid var(--border-subtle);color:var(--text-primary);border-radius:999px;align-items:center;gap:6px;min-width:140px;margin-left:auto;padding:3px 10px;font-size:12px;font-weight:500;display:inline-flex}.conversation-toggle .conversation-status__dot{font-size:10px;line-height:1}.conversation-toggle .conversation-status__text{letter-spacing:.1px}.conversation-toggle .conversation-status__meter{background:#ffffff1a;border-radius:3px;width:60px;height:6px;margin-left:4px;display:inline-block;overflow:hidden}.conversation-toggle .conversation-status__meter-fill{background:linear-gradient(90deg,#4ade80 0%,#facc15 60%,#f87171 100%);height:100%;transition:width 80ms linear;display:block}.voice-input{flex-direction:column;align-self:stretch;align-items:center;gap:4px;display:flex}.voice-input__btn{background:var(--surface-3);color:var(--text-primary);border:1px solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;width:44px;height:44px;transition:background-color var(--transition-base), border-color var(--transition-base);justify-content:center;align-self:stretch;align-items:center;font-size:20px;display:flex}.voice-input__btn:hover:not(:disabled){background:var(--brand-primary-soft);border-color:var(--brand-primary)}.voice-input__btn:disabled{opacity:.5;cursor:not-allowed}.voice-input__btn--recording{background:var(--state-error-bg,#fde7eb);border-color:var(--state-error-fg,#b30021);animation:1.2s ease-in-out infinite voice-pulse}@keyframes voice-pulse{0%,to{box-shadow:0 0 #b3002166}50%{box-shadow:0 0 0 6px #b3002100}}.voice-input__hint{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:140px;font-size:10px;overflow:hidden}.voice-input__hint--error{color:var(--state-error-fg,#b30021)}.chat-input{resize:vertical;min-height:72px;max-height:200px;font-size:var(--text-base);padding:var(--space-3) var(--space-4);flex:1;margin-bottom:0;line-height:1.5}.chat-input-row button{white-space:nowrap;align-self:flex-end}.creator-json-panel{background:var(--surface-3);border:1px solid var(--border-subtle);border-radius:var(--radius-md);flex-direction:column;display:flex;overflow:hidden}.json-panel-header{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-subtle);font-size:var(--text-sm);color:var(--text-secondary);background:var(--surface-2);justify-content:space-between;align-items:center;display:flex}.json-actions{gap:4px;display:flex}.json-actions button{font-size:var(--text-xs);padding:4px var(--space-3)}.chat-json-editor{font-family:var(--font-mono);font-size:var(--text-xs);resize:none;border:none;border-radius:0;flex:1;min-height:400px;margin-bottom:0}.json-error-row{align-items:center;gap:var(--space-2);padding:6px var(--space-3);border-top:1px solid var(--border-subtle);display:flex}.json-error-row .error{font-size:var(--text-xs);flex:1;margin:0}.btn-fix{background:var(--state-warning);color:var(--text-on-brand);padding:3px 10px;font-size:11px}.btn-fix:hover{background:#d49118}@media (width<=900px){.creator-split--build,.creator-split{grid-template-columns:1fr}}.app-footer{margin-top:var(--space-4)}.app-footer details{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3)}.app-footer summary{color:var(--text-muted);cursor:pointer;font-size:var(--text-xs)}.event-log{max-height:200px;margin-top:var(--space-2);font-family:var(--font-mono);font-size:11px;overflow-y:auto}.log-entry{border-bottom:1px solid var(--border-subtle);color:var(--text-secondary);padding:2px 0}.godot-load-overlay{z-index:10;border-radius:inherit;background:radial-gradient(#1a1d3aeb,#0d0f23f5);place-items:center;animation:.25s ease-out godotFadeIn;display:grid;position:absolute;inset:0}.godot-load-overlay__card{-webkit-backdrop-filter:blur(10px);color:#e8eaff;min-width:260px;font-family:var(--font-body,system-ui, sans-serif);background:#ffffff0f;border:1px solid #ffffff1f;border-radius:16px;flex-direction:column;align-items:center;gap:14px;padding:28px 36px;display:flex}.godot-load-overlay__spinner{border:3px solid #ffffff26;border-top-color:#8a9bff;border-radius:50%;width:36px;height:36px;animation:.9s linear infinite godotSpin}.godot-load-overlay__label{letter-spacing:.02em;text-align:center;color:#e8eaffeb;font-size:13.5px}.godot-load-overlay__bar{background:#ffffff1a;border-radius:999px;width:220px;height:6px;overflow:hidden}.godot-load-overlay__bar-fill{border-radius:inherit;background:linear-gradient(90deg,#6a7dff,#8a9bff);height:100%;transition:width .2s ease-out}.godot-load-overlay__pct{font-variant-numeric:tabular-nums;color:#e8eaffb8;letter-spacing:.08em;font-size:11px}@keyframes godotSpin{to{transform:rotate(360deg)}}@keyframes godotFadeIn{0%{opacity:0}to{opacity:1}}@keyframes godotPulse{0%,to{opacity:.55}50%{opacity:1}}.game-surface{border-radius:var(--radius-md);border:1px solid var(--border-subtle);width:100%;height:72vh;min-height:480px;box-shadow:var(--shadow-md);touch-action:manipulation;-webkit-user-select:none;user-select:none;background:radial-gradient(#1a1d3a 0%,#0d0f23 100%);position:relative;overflow:hidden}@media (width<=720px){.game-surface{height:64vh;min-height:360px}}.game-surface canvas{background:0 0;outline:none;display:block;width:100%!important;height:100%!important}.game-surface:has(.game-input-overlay) canvas{height:calc(100% - 170px)!important}.game-surface--fallback{padding:var(--space-4);background:var(--surface-2);border-radius:var(--radius-md);border:1px solid var(--border-subtle);gap:var(--space-3);flex-direction:column;display:flex;overflow:auto}.game-surface__fallback-banner{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--state-warning-bg,#fff3cd);border:1px solid var(--state-warning,#f0c674);border-radius:var(--radius-sm);color:var(--state-warning-fg,#6b4f00);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.game-surface__fallback-banner strong{color:var(--text-primary)}.game-surface__fallback-banner span{flex:1;min-width:200px}.game-surface__fallback-retry{background:var(--brand-primary);color:var(--text-on-brand);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);cursor:pointer;border:none;min-height:32px;font-weight:500}.game-surface__fallback-retry:hover{filter:brightness(1.1)}.game-surface__fallback-state{padding:var(--space-3);color:#d0d0e0;font-family:var(--font-mono);font-size:var(--text-xs);border-radius:var(--radius-sm);white-space:pre;background:#0c0c1a;margin:0;overflow:auto}.godot-crash{padding:var(--space-6);background:var(--state-error-bg);color:var(--state-error-fg);border-left:3px solid var(--state-error);border-radius:var(--radius-md);text-align:center}.godot-crash h2{color:var(--state-error-fg);margin-bottom:var(--space-2)}.godot-crash button{margin-right:var(--space-2);margin-top:var(--space-2)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app:has(.game-screen){max-width:1400px}:is(.app:has(.game-def-editor),.app:has(.creator-tabs-bar)){max-width:min(96vw,1800px);padding-left:var(--space-3);padding-right:var(--space-3)}.game-screen .card{padding:var(--space-3)}.game-header{align-items:center;gap:var(--space-4);padding-bottom:var(--space-3);margin-bottom:var(--space-3);border-bottom:1px solid var(--border-subtle);display:flex}.game-header h2{font-size:var(--text-xl);margin-bottom:0}.game-input-overlay{z-index:10;pointer-events:none;padding:var(--space-4);justify-content:center;display:flex;position:absolute;bottom:0;left:0;right:0}.gio-panel{pointer-events:auto;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);min-width:320px;max-width:92%;box-shadow:var(--shadow-lg);color:var(--text-primary);background:#1e293bbf;border:1px solid #ffffff1a;flex-direction:column;gap:12px;display:flex}.gio-hint{font-size:var(--text-sm);color:var(--text-secondary);letter-spacing:.02em}.gio-hint strong{color:var(--text-primary)}.gio-hint--prominent{color:var(--text-primary);text-align:center;font-size:15px}.gio-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.gio-input{min-width:0;font-size:var(--text-lg);font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;padding:var(--space-3) var(--space-3);border-radius:var(--radius-sm);border:1.5px solid var(--border-default);background:var(--surface-2);color:var(--text-primary);outline:none;flex:auto;min-height:44px}.gio-input:focus{border-color:var(--brand-primary);box-shadow:var(--focus-ring)}.gio-input--wide{letter-spacing:.04em;text-transform:none}.gio-submit{font-size:15px;font-weight:var(--weight-semibold);padding:var(--space-3) var(--space-5);border-radius:var(--radius-sm);background:linear-gradient(135deg, var(--brand-primary), var(--brand-secondary));min-height:44px;color:var(--text-on-brand);cursor:pointer;border:none}.gio-submit:hover:not(:disabled){filter:brightness(1.05)}.gio-submit:disabled{background:var(--border-default);color:var(--text-muted);cursor:not-allowed}.gio-pegs{gap:10px}.gio-peg{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;flex-direction:column;align-items:center;gap:4px;font-size:11px;display:flex}.gio-peg-label{font-size:10px}.gio-select{font-size:var(--text-md);padding:var(--space-2) 10px;border-radius:var(--radius-sm);background:var(--surface-2);min-width:110px;min-height:44px;color:var(--text-primary);border:1.5px solid var(--border-default);cursor:pointer}.gio-peg-swatch{background:var(--peg-color,var(--text-muted));border-radius:3px;width:28px;height:6px}.gio-sudoku-nums{justify-content:center;gap:10px}.gio-num{font-size:22px;font-weight:700;font-family:var(--font-mono);min-width:56px;min-height:56px;padding:10px var(--space-3);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text-primary);border:1.5px solid var(--border-default);cursor:pointer;transition:transform 60ms,background .12s,border-color .12s}.gio-num:hover:not(:disabled){background:var(--brand-primary-soft);border-color:var(--brand-primary);transform:translateY(-1px)}.gio-num:active:not(:disabled){filter:brightness(.95);transform:translateY(0)}.gio-num:disabled{background:var(--surface-3);color:var(--text-muted);border-color:var(--border-subtle);cursor:not-allowed}.gio-action-bar{pointer-events:auto;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);background:#1e293bbf;border:1px solid #ffffff1a;display:flex}.gio-action-btn{font-size:15px;font-weight:var(--weight-semibold);padding:var(--space-3) var(--space-5);border-radius:var(--radius-sm);background:linear-gradient(135deg, var(--brand-primary), var(--brand-secondary));min-width:96px;min-height:44px;color:var(--text-on-brand);cursor:pointer;border:none;transition:transform 60ms,filter .12s}.gio-action-btn:hover:not(:disabled){filter:brightness(1.07);transform:translateY(-1px)}.gio-action-btn:active:not(:disabled){filter:brightness(.95);transform:translateY(0)}.gio-action-btn:disabled{background:var(--border-default);color:var(--text-muted);cursor:not-allowed}.gio-yahtzee-scores{max-width:92%;padding:var(--space-2) var(--space-3);flex-wrap:wrap;gap:6px}.gio-yahtzee-scores .gio-action-btn{min-width:0;padding:8px 12px;font-size:13px}.gio-dice-roll{pointer-events:auto;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);background:#1e293bbf;border:1px solid #ffffff1a;display:flex}.gio-dice-roll__readout{flex-direction:column;gap:2px;min-width:110px;display:flex}.gio-dice-roll__label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;font-size:11px}.gio-dice-roll__value{font-family:var(--font-display);color:var(--brand-primary);font-size:32px;font-weight:700;line-height:1}.gio-dice-roll__pos{color:var(--text-secondary);margin-top:2px;font-size:12px}.gio-dice-roll__btn{font-family:var(--font-display);border-radius:var(--radius-md);background:var(--brand-primary);color:var(--text-on-brand);cursor:pointer;box-shadow:var(--shadow-md);transition:transform var(--transition-fast), filter var(--transition-fast);border:none;padding:14px 26px;font-size:20px;font-weight:700}.gio-dice-roll__btn:hover:not(:disabled){filter:brightness(1.05);transform:translateY(-2px)}.gio-dice-roll__btn:active:not(:disabled){filter:brightness(.92);transform:translateY(0)}.gio-dice-roll__btn:disabled{background:var(--surface-3);color:var(--text-muted);cursor:not-allowed;box-shadow:none}@media (width<=640px){.game-input-overlay{padding:var(--space-2)}.gio-panel{width:100%;min-width:0;padding:var(--space-3) var(--space-3)}.gio-select{min-width:88px}.gio-num{min-width:44px;min-height:44px;font-size:var(--text-lg);padding:var(--space-2) var(--space-3)}}.teacher-dashboard{max-width:1400px;padding:var(--space-4);min-height:100vh;color:var(--text-primary);margin:0 auto}.teacher-header{padding:var(--space-3) 0;border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.teacher-header h1{color:var(--text-primary);font-size:var(--text-2xl);font-family:var(--font-display)}.teacher-user{color:var(--text-muted);font-size:var(--text-sm)}.teacher-cols{gap:var(--space-3);grid-template-columns:1fr 1.2fr 1.5fr;display:grid}.teacher-col{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3);min-height:480px;box-shadow:var(--shadow-sm);flex-direction:column;display:flex}.teacher-col-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.teacher-col-head h2{color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-md);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.teacher-col-head button{font-size:var(--text-xs);padding:5px 10px}.teacher-col-actions{align-items:center;gap:6px;display:flex}.teacher-list{margin:0;padding:0;list-style:none}.teacher-list-item,.submission-row{background:var(--surface-3);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:10px var(--space-3);cursor:pointer;margin-bottom:6px;transition:border-color .15s,background .15s}.teacher-list-item:hover,.submission-row:hover{border-color:var(--brand-primary)}.teacher-list-item.selected{border-color:var(--brand-primary);background:var(--brand-primary-soft)}.row-title{font-weight:var(--weight-semibold);color:var(--text-primary)}.row-meta{font-size:var(--text-xs);color:var(--text-muted);margin-top:3px}.status-pill{padding:1px var(--space-2);text-transform:capitalize;background:var(--surface-3);color:var(--text-secondary);border-radius:10px;margin-right:4px;font-size:11px;display:inline-block}.status-pill.status-graded{background:var(--state-success-bg);color:var(--state-success-fg)}.status-pill.status-submitted{background:var(--state-info-bg);color:var(--state-info-fg)}.status-pill.status-pending{background:var(--state-warning-bg);color:var(--state-warning-fg)}.teacher-form{background:var(--surface-3);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:var(--space-3);margin-bottom:10px}.teacher-form h3{color:var(--text-primary);font-size:var(--text-md);margin-bottom:var(--space-2)}.teacher-form .form-label{font-size:var(--text-xs);color:var(--text-secondary);font-weight:var(--weight-semibold);margin:6px 0 4px;display:block}.teacher-form textarea.mono{font-family:var(--font-mono);font-size:var(--text-xs)}.form-actions{gap:6px;margin-top:6px;display:flex}.form-error{color:var(--state-error-fg);font-size:var(--text-xs);margin:6px 0}.modal-backdrop{background:var(--surface-overlay);z-index:var(--z-modal);padding:var(--space-5);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal.teacher-modal{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);width:100%;max-width:1200px;max-height:92vh;box-shadow:var(--shadow-lg);flex-direction:column;display:flex;overflow:hidden}.teacher-modal-header{padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--border-subtle);background:var(--surface-3);justify-content:space-between;align-items:flex-start;display:flex}.teacher-modal-header h2{color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-lg);margin-bottom:4px}.teacher-modal-summary{font-size:var(--text-xs);color:var(--text-secondary);flex-wrap:wrap;gap:6px;display:flex}.teacher-modal-body{gap:var(--space-3);padding:var(--space-3) var(--space-5);flex:1;grid-template-columns:1.3fr 1fr;display:grid;overflow:auto}.teacher-modal-col h3{color:var(--text-primary);font-size:var(--text-md);margin-bottom:var(--space-2);border-bottom:1px solid var(--border-subtle);padding-bottom:4px}.ai-row-list{flex-direction:column;gap:6px;display:flex}.ai-row{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--surface-2);overflow:hidden}.ai-row-allowed{border-left:3px solid var(--state-success)}.ai-row-blocked{border-left:3px solid var(--state-error)}.ai-row-gated{border-left:3px solid var(--state-warning)}.ai-row-head{align-items:center;gap:var(--space-2);padding:var(--space-2) 10px;width:100%;color:var(--text-primary);text-align:left;font-size:var(--text-xs);cursor:pointer;background:0 0;border:none;margin:0;display:flex}.ai-row-head:hover{background:var(--brand-primary-soft)}.ai-row-ts{color:var(--text-muted);min-width:130px}.ai-row-kind{color:var(--text-secondary);font-weight:var(--weight-semibold)}.ai-row-reason{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.ai-row-caret{color:var(--text-muted)}.ai-row-pill{padding:1px var(--space-2);text-transform:uppercase;border-radius:10px;font-size:10px}.ai-pill-allowed{background:var(--state-success-bg);color:var(--state-success-fg)}.ai-pill-blocked{background:var(--state-error-bg);color:var(--state-error-fg)}.ai-pill-gated{background:var(--state-warning-bg);color:var(--state-warning-fg)}.ai-row-body{padding:var(--space-2) 10px;border-top:1px solid var(--border-subtle);background:var(--surface-3)}.ai-row-section{margin-bottom:var(--space-2)}.ai-row-section:last-child{margin-bottom:0}.ai-row-label{color:var(--text-muted);text-transform:uppercase;margin-bottom:4px;font-size:11px}.ai-row-body pre{background:var(--surface-2);border:1px solid var(--border-subtle);padding:var(--space-2);color:var(--text-primary);white-space:pre-wrap;word-break:break-word;max-height:240px;font-size:11px;font-family:var(--font-mono);border-radius:4px;overflow:auto}.reflection-list{flex-direction:column;gap:6px;display:flex}.reflection-item{background:var(--surface-3);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:var(--space-2) 10px}.reflection-meta{color:var(--text-muted);justify-content:space-between;margin-bottom:4px;font-size:11px;display:flex}.reflection-trigger{color:var(--state-warning-fg);text-transform:uppercase;font-weight:var(--weight-semibold)}.reflection-prompt{color:var(--text-secondary);font-size:var(--text-xs);margin-bottom:4px;font-style:italic}.reflection-response{color:var(--text-primary);font-size:var(--text-sm);white-space:pre-wrap}.grade-panel{border-top:1px solid var(--border-subtle);padding:var(--space-3) var(--space-5);background:var(--surface-3)}.grade-panel h3{color:var(--text-primary);font-size:var(--text-md);margin-bottom:var(--space-2)}.rubric-grid{gap:var(--space-2) var(--space-4);margin-bottom:var(--space-2);grid-template-columns:repeat(2,1fr);display:grid}.rubric-slider input[type=range]{width:100%;margin:0;padding:0}.rubric-value{text-align:right;color:var(--brand-primary);font-weight:var(--weight-semibold)}.grade-actions{align-items:center;gap:var(--space-2);margin-top:6px;display:flex}.grade-msg{font-size:var(--text-xs);color:var(--state-success-fg)}.teacher-loginwall .card{text-align:center;max-width:400px}.teacher-loginwall a{color:var(--brand-primary)}@media (width<=1100px){.teacher-cols,.teacher-modal-body,.rubric-grid{grid-template-columns:1fr}}.assignments-panel{margin-bottom:var(--space-4)}.assignments-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;display:grid}.assignment-tile{text-align:left;background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);cursor:pointer;box-shadow:var(--shadow-sm);transition:border-color var(--transition-base), transform var(--transition-fast), box-shadow var(--transition-base);flex-direction:column;align-items:flex-start;margin:0;display:flex}.assignment-tile:hover{border-color:var(--brand-primary);box-shadow:var(--shadow-md);transform:translateY(-1px)}.assignment-tile.active{border-color:var(--state-success);background:var(--state-success-bg)}.assignment-tile--submitted{border-color:var(--state-success)}.assignment-tile__head{justify-content:space-between;align-items:center;gap:var(--space-2);width:100%;margin-bottom:4px;display:flex}.assignment-title{font-size:var(--text-md);font-weight:var(--weight-bold);color:var(--text-primary);font-family:var(--font-display);margin-bottom:4px}.assignment-desc{font-size:var(--text-xs);color:var(--text-secondary);margin-bottom:6px;line-height:1.4}.assignment-meta{color:var(--text-muted);margin-top:auto;font-size:11px}.journal-sidebar{margin-top:var(--space-3)}.journal-sidebar>summary{cursor:pointer;color:var(--text-primary);font-weight:var(--weight-semibold);padding:4px 0}.reflection-journal{padding:4px 0}.reflection-header{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.reflection-header h3{color:var(--text-primary);font-size:var(--text-lg);font-family:var(--font-display)}.reflection-count{color:var(--text-muted);background:var(--surface-3);border-radius:var(--radius-pill);padding:3px 10px;font-size:11px}.reflection-prompts{gap:var(--space-3);flex-direction:column;display:flex}.reflection-prompt{background:var(--surface-3);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:var(--space-3)}.reflection-question{font-size:var(--text-sm);color:var(--text-primary);font-weight:var(--weight-semibold);margin-bottom:var(--space-2)}.reflection-textarea{font-family:inherit;font-size:var(--text-sm);resize:vertical;min-height:64px;margin-bottom:6px}.reflection-entries{flex-direction:column;gap:6px;margin-top:10px;display:flex}.reflection-entry{background:var(--surface-2);border-left:3px solid var(--state-success);padding:var(--space-2) 10px;border-radius:4px}.reflection-entry-meta{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;justify-content:space-between;margin-bottom:4px;font-size:10px;display:flex}.reflection-trigger{background:var(--surface-3);color:var(--text-secondary);border-radius:8px;padding:1px 6px}.reflection-trigger.trigger-submission{background:var(--state-error-bg);color:var(--state-error-fg)}.reflection-trigger.trigger-productive-failure{background:var(--state-warning-bg);color:var(--state-warning-fg)}.reflection-entry-body{font-size:var(--text-xs);color:var(--text-primary);white-space:pre-wrap;line-height:1.5}.submission-gate h3{color:var(--text-primary);font-size:var(--text-lg);font-family:var(--font-display);margin-bottom:var(--space-3)}.gate-checklist{margin-bottom:var(--space-4);flex-direction:column;gap:6px;list-style:none;display:flex}.gate-checklist li{padding:var(--space-2) var(--space-3);background:var(--surface-3);border-left:3px solid var(--border-default);font-size:var(--text-sm);color:var(--text-secondary);border-radius:4px;align-items:center;gap:10px;display:flex}.gate-checklist li.ok{border-left-color:var(--state-success);color:var(--state-success-fg);background:var(--state-success-bg)}.gate-checklist li.fail{border-left-color:var(--state-error);color:var(--state-error-fg);background:var(--state-error-bg)}.gate-mark{font-weight:var(--weight-bold);font-size:var(--text-lg);text-align:center;width:18px}.gate-checklist li.ok .gate-mark{color:var(--state-success-fg)}.gate-checklist li.fail .gate-mark{color:var(--state-error-fg)}.gate-label{flex:1}.gate-detail{color:var(--text-muted);font-size:11px}.gate-submit-btn{width:100%;padding:var(--space-3) var(--space-5);background:linear-gradient(135deg, var(--state-success), #1aa78c);color:var(--text-on-brand);font-size:15px}.gate-submit-btn:hover:not(:disabled){filter:brightness(1.05)}.gate-error{color:var(--state-error-fg);font-size:var(--text-sm);margin-top:10px}.gate-violations{flex-direction:column;gap:4px;margin-top:10px;list-style:none;display:flex}.gate-violation{background:var(--state-error-bg);color:var(--state-error-fg);font-size:var(--text-xs);border-left:3px solid var(--state-error);border-radius:4px;padding:6px 10px}.submission-success{text-align:center}.submission-success h3{color:var(--state-success-fg);font-size:var(--text-2xl)}.submission-success p{color:var(--text-secondary);margin-top:6px}.submission-success__art{margin-bottom:var(--space-2);font-size:48px}.submission-success__actions{margin-top:var(--space-4);justify-content:center;display:flex}.submission-gate__lede{color:var(--text-secondary);font-size:var(--text-sm);margin-bottom:var(--space-3)}.gate-row{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface-3);border:1px solid var(--border-subtle);border-left:3px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-secondary);display:flex}.gate-row--ok{border-left-color:var(--state-success);background:var(--state-success-bg);color:var(--state-success-fg)}.gate-row--fail{border-left-color:var(--state-error);background:var(--state-error-bg);color:var(--state-error-fg)}.gate-row .gate-mark{align-items:center;width:22px;display:inline-flex}.gate-row__text{flex-direction:column;flex:1;gap:2px;display:flex}.gate-row .gate-label{font-weight:var(--weight-semibold);color:inherit}.gate-row .gate-detail{font-size:var(--text-xs);color:var(--text-muted)}.gate-row--ok .gate-detail{color:var(--state-success-fg);opacity:.85}.gate-row--fail .gate-detail{color:var(--state-error-fg);opacity:.85}.gate-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-4);display:flex}.game-layout{gap:var(--space-3);grid-template-columns:1fr;align-items:flex-start;display:grid}.game-layout--with-journal{grid-template-columns:minmax(0,1fr) auto}.game-layout__main{min-width:0}.game-card{padding:var(--space-4)}.game-card .game-header{align-items:center;gap:var(--space-4);padding-bottom:var(--space-3);margin-bottom:var(--space-3);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;display:flex}.game-header__title{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.game-header__title h2{font-size:var(--text-xl);margin-bottom:0}.game-header__phase{align-items:center;gap:var(--space-2);display:inline-flex}.turn-indicator--mine{animation:2s ease-in-out infinite my-turn-pulse}.turn-indicator--waiting .ui-badge__dot{background:var(--state-warning);animation:1.2s ease-in-out infinite waiting-pulse}@keyframes waiting-pulse{0%,to{opacity:.4;transform:scale(1)}50%{opacity:1;transform:scale(1.4)}}.journal-sidebar{gap:var(--space-2);flex-direction:column;width:auto;display:flex}.journal-sidebar--collapsed{width:56px}.journal-sidebar--open{width:320px}.journal-sidebar__toggle{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-3);background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-pill);color:var(--text-secondary);cursor:pointer;font-weight:var(--weight-semibold);box-shadow:var(--shadow-sm);transition:all var(--transition-base);margin:0;display:inline-flex}.journal-sidebar__toggle:hover{background:var(--brand-primary-soft);color:var(--brand-primary);border-color:var(--brand-primary)}.journal-sidebar__icon{font-size:16px}.journal-sidebar--collapsed .journal-sidebar__label{display:none}.journal-sidebar__body{width:320px}.journal-card{padding:var(--space-4)}.reflection-prompt-card{padding:var(--space-3) var(--space-4)}.reflection-prompt-actions{margin-top:var(--space-2);justify-content:flex-end;display:flex}.post-game-journal{margin-bottom:var(--space-4)}.post-game-cta{margin:var(--space-4) 0;justify-content:center;display:flex}.game-input-overlay{z-index:5}.game-def-editor .editor-actions{margin-top:var(--space-3);justify-content:flex-end;display:flex}.creator-header__actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.creator-header__actions .ui-badge{margin-right:0}.teacher-header__left{align-items:center;gap:var(--space-3);display:flex}.teacher-user__hi{color:var(--text-muted);margin-right:var(--space-2)}.teacher-user strong{color:var(--text-primary)}.teacher-col__loading{align-items:center;gap:var(--space-2);padding:var(--space-4);color:var(--text-muted);font-size:var(--text-sm);display:flex}.teacher-list{gap:var(--space-2);flex-direction:column;display:flex}.teacher-card-item,.submission-card-item{cursor:pointer;list-style:none}.teacher-card-item.selected .ui-card,.submission-card-item.selected .ui-card{border-color:var(--brand-primary);background:var(--brand-primary-soft)}.class-card{padding:var(--space-3) var(--space-4)}.class-card__head{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.class-card__icon{color:var(--brand-primary);display:inline-flex}.class-card__title{font-weight:var(--weight-bold);color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-md);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.class-card__meta{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.muted-meta{color:var(--text-muted);font-size:var(--text-xs)}.assignment-card{padding:var(--space-3) var(--space-4)}.assignment-card__title{font-weight:var(--weight-bold);color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-md);margin-bottom:var(--space-2)}.assignment-card__meta{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.class-stats{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--brand-primary-soft);border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--text-sm);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.class-stats strong{color:var(--brand-primary)}.class-stats__spark{align-items:center;margin-left:auto;display:inline-flex}.submissions-filters{gap:var(--space-2);margin-bottom:var(--space-3);grid-template:"search sort""chips chips"/1fr auto;display:grid}.submissions-search{grid-area:search;margin-bottom:0}.submissions-sort{grid-area:sort;min-width:170px;margin-bottom:0}.filter-chips{gap:var(--space-2);flex-wrap:wrap;grid-area:chips;display:flex}.filter-chip{background:var(--surface-3);color:var(--text-secondary);padding:0 var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--border-subtle);min-height:36px;font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;transition:all var(--transition-base);align-items:center;margin:0;display:inline-flex}.filter-chip:hover{background:var(--brand-primary-soft);color:var(--brand-primary);border-color:var(--brand-primary)}.filter-chip:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}.filter-chip--active{background:var(--brand-primary);color:var(--text-on-brand);border-color:var(--brand-primary)}.submissions-search-wrap{grid-area:search;position:relative}.submissions-search-wrap .submissions-search{margin-bottom:0}.submissions-search__clear{right:var(--space-2);background:var(--surface-3);width:24px;height:24px;color:var(--text-secondary);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:12px;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.submissions-search__clear:hover{background:var(--brand-primary-soft);color:var(--brand-primary)}.submissions-search__clear:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}@media (width<=640px){.class-stats{gap:var(--space-1) var(--space-3);text-align:left;grid-template-columns:1fr 1fr;display:grid}.class-stats__spark{grid-column:1/-1;justify-content:flex-start;margin-left:0}.submissions-filters{grid-template-columns:1fr;grid-template-areas:"search""sort""chips"}}.ui-field__hint{font-size:var(--text-xs);margin-top:4px;font-weight:500;display:inline-block}.ui-field__hint--ok{color:var(--state-success-fg)}.ui-field__hint--err{color:var(--state-error-fg)}.ui-field__help{font-size:var(--text-xs);color:var(--text-muted);margin-top:6px;line-height:1.5;display:block}.ui-field__help code{font-family:var(--font-mono);background:var(--surface-3);border-radius:3px;padding:1px 4px;font-size:11px}.submissions-list{gap:var(--space-2)}.submission-card{padding:var(--space-3) var(--space-4)}.submission-card__main{gap:var(--space-3);align-items:center;display:flex}.submission-card__avatar{background:var(--brand-primary-soft);width:40px;height:40px;color:var(--brand-primary);font-weight:var(--weight-bold);font-family:var(--font-display);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.submission-card__body{flex:1;min-width:0}.submission-card__name{font-weight:var(--weight-semibold);color:var(--text-primary);margin-bottom:2px}.submission-card__meta{font-size:var(--text-xs);margin-bottom:var(--space-2);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.submission-card__ai{align-items:center;gap:var(--space-2);display:flex}.ai-bar{background:var(--surface-3);border-radius:3px;flex:1;height:6px;position:relative;overflow:hidden}.ai-bar__fill{background:linear-gradient(90deg, var(--brand-primary), var(--brand-secondary));transition:width var(--transition-base);border-radius:3px;position:absolute;inset:0 auto 0 0}.ai-bar__label{color:var(--text-muted);font-size:11px;font-weight:var(--weight-semibold);text-align:right;min-width:50px}.teacher-form{background:0 0;border:none;margin-bottom:0;padding:0}.teacher-form .form-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-3);display:flex}.teacher-loginwall{padding-top:var(--space-9);justify-content:center;display:flex}.teacher-loginwall__card{text-align:center;max-width:420px}.teacher-loginwall__card p{margin:var(--space-3) 0;color:var(--text-secondary)}.ai-history-modal{width:100%;max-height:92vh;max-width:1100px!important}.ai-history-modal .teacher-modal-header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);padding:0 0 var(--space-3) 0;margin-bottom:var(--space-3);border-bottom:1px solid var(--border-subtle);background:0 0;display:flex}.ai-history-modal .teacher-modal-summary{align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-secondary);flex-wrap:wrap;margin-top:4px;display:flex}.ai-history-modal .teacher-modal-body{gap:var(--space-3);margin-bottom:var(--space-3);grid-template-columns:1.3fr 1fr;padding:0;display:grid}.teacher-modal-col__head{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.ai-row,.ai-row .ui-card__body{padding:0}.ai-row .ai-row-head,.ai-row .ai-row-body{padding:var(--space-2) var(--space-3)}.rubric-slider{align-items:center;gap:var(--space-3);font-size:var(--text-sm);color:var(--text-secondary);grid-template-columns:110px 1fr 32px;display:grid}.rubric-slider__label{color:var(--text-primary);font-weight:var(--weight-semibold)}.rubric-slider input[type=range]{appearance:none;background:var(--surface-3);border-radius:3px;outline:none;width:100%;height:6px;margin:0;padding:0}.rubric-slider input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--brand-primary);border:2px solid var(--surface-2);width:18px;height:18px;box-shadow:var(--shadow-sm);cursor:pointer;border-radius:50%}.rubric-slider input[type=range]::-moz-range-thumb{background:var(--brand-primary);border:2px solid var(--surface-2);width:18px;height:18px;box-shadow:var(--shadow-sm);cursor:pointer;border-radius:50%}.rubric-value{text-align:right;color:var(--brand-primary);font-weight:var(--weight-bold);font-family:var(--font-mono)}.grade-actions{justify-content:flex-end;align-items:center;gap:var(--space-2);margin-top:var(--space-2);display:flex}@media (width<=900px){.game-layout--with-journal{grid-template-columns:1fr}.journal-sidebar,.journal-sidebar--collapsed,.journal-sidebar--open,.journal-sidebar__body{width:100%}.submissions-filters{grid-template-columns:1fr;grid-template-areas:"search""sort""chips"}.submissions-sort{width:100%;min-width:0}}@media (width<=640px){.app{padding:var(--space-3)}.app-header{gap:var(--space-2);flex-wrap:wrap}.app-header h1{font-size:var(--text-xl)}.login-screen{padding-top:var(--space-5)}.login-screen .login-card{padding:var(--space-5) var(--space-4)}.role-chips{flex-direction:column}.lobby-screen,.result-screen{padding-top:var(--space-5)}.result-hero{font-size:56px}.result-message{font-size:var(--text-2xl)}.game-header{gap:var(--space-2)}.game-header h2{font-size:var(--text-lg)}.class-stats{font-size:var(--text-xs)}.teacher-dashboard{padding:var(--space-3)}.teacher-header{gap:var(--space-2);flex-wrap:wrap}.teacher-header h1{font-size:var(--text-xl)}.rubric-grid{grid-template-columns:1fr}.rubric-slider{grid-template-columns:90px 1fr 30px}.ai-history-modal .teacher-modal-body{grid-template-columns:1fr}.submission-card__main{gap:var(--space-2)}.submission-card__avatar{width:32px;height:32px;font-size:var(--text-sm)}}.portfolio-header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.portfolio-title{font-family:var(--font-display);font-size:var(--text-3xl);color:var(--text-primary);margin:0}.portfolio-subtitle{color:var(--text-secondary);margin:var(--space-1) 0 0;font-size:var(--text-md)}.portfolio-filters{gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.portfolio-chip{background:var(--surface-2);border:1px solid var(--border-default);color:var(--text-secondary);padding:6px var(--space-3);border-radius:var(--radius-pill);font-size:var(--text-sm);font-weight:var(--weight-semibold);cursor:pointer;transition:all var(--transition-fast);margin:0}.portfolio-chip:hover{border-color:var(--brand-primary);color:var(--brand-primary);background:var(--brand-primary-soft)}.portfolio-chip--active{background:var(--brand-primary);border-color:var(--brand-primary);color:var(--text-on-brand)}.portfolio-chip--active:hover{background:var(--brand-primary-hover);color:var(--text-on-brand)}.portfolio-loading{align-items:center;gap:var(--space-3);color:var(--text-muted);padding:var(--space-6);justify-content:center;display:flex}@media (width<=400px){.portfolio-grid{grid-template-columns:1fr}}.portfolio-card{gap:var(--space-3);flex-direction:column;display:flex}.portfolio-card__head{align-items:center;gap:var(--space-3);display:flex}.portfolio-card__sig{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--brand-primary-soft), var(--brand-accent-soft));border:1px solid var(--border-subtle);flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;display:flex;position:relative}.portfolio-card__sig-letter{font-family:var(--font-display);font-weight:var(--weight-bold);color:var(--brand-primary);font-size:var(--text-2xl)}.portfolio-card__sig-emoji{background:var(--surface-2);box-shadow:var(--shadow-sm);border-radius:50%;padding:2px;font-size:18px;line-height:1;position:absolute;bottom:-4px;right:-4px}.portfolio-card__head-text{flex:1;min-width:0}.portfolio-card__title{font-size:var(--text-lg);color:var(--text-primary);margin:0}.portfolio-card__meta{gap:var(--space-1);margin-top:var(--space-1);flex-wrap:wrap;display:flex}.portfolio-card__note{color:var(--text-secondary);font-size:var(--text-sm);line-height:var(--line-snug);margin:0}.portfolio-card__date{color:var(--text-muted);font-size:var(--text-xs)}.portfolio-card__actions{gap:var(--space-2);margin-top:auto;display:flex}.portfolio-detail{gap:var(--space-3);flex-direction:column;display:flex}.portfolio-detail__meta{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.portfolio-detail__date{color:var(--text-muted);font-size:var(--text-xs)}.portfolio-detail__section h3{font-size:var(--text-md);color:var(--text-primary);margin:0 0 var(--space-1)}.portfolio-detail__diagram{background:var(--surface-3);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3);font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-primary);white-space:pre;margin:0;overflow-x:auto}.portfolio-detail__actions{gap:var(--space-2);justify-content:flex-end;display:flex}.share-modal{gap:var(--space-3);flex-direction:column;display:flex}.share-modal__lede{color:var(--text-secondary);margin:0}.share-modal__option{background:var(--surface-3);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3)}.share-modal__row{align-items:center;gap:var(--space-3);display:flex}.share-modal__icon{border-radius:var(--radius-md);background:var(--surface-2);flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;display:flex}.share-modal__copy{flex:1;min-width:0}.share-modal__title{font-weight:var(--weight-semibold);color:var(--text-primary);font-size:var(--text-sm)}.share-modal__hint{color:var(--text-muted);font-size:var(--text-xs)}.share-modal__url{color:var(--text-muted);font-size:var(--text-xs);font-family:var(--font-mono);word-break:break-all}.share-modal__actions{margin-top:var(--space-2);justify-content:flex-end;display:flex}.portfolio-print{display:none}@media (width<=640px){.portfolio-title{font-size:var(--text-2xl)}.portfolio-header{flex-direction:column;align-items:stretch}.portfolio-grid{grid-template-columns:1fr}.share-modal__row{flex-wrap:wrap}}@media print{body.print-mode .app-header,body.print-mode .app-footer,body.print-mode .app-main>:not(.app-print-anchor),body.print-mode .user-menu,body.print-mode .ui-toast-region,body.print-mode .ui-modal__backdrop>.ui-modal__content>.ui-modal__title,body.print-mode .ui-modal__backdrop>.ui-modal__content>.ui-modal__body>.share-modal>:not(.portfolio-print),body.print-mode .ui-modal__backdrop>.ui-modal__content>.ui-modal__footer{display:none!important}body.print-mode .ui-modal__backdrop{background:var(--surface-2)!important;position:static!important}body.print-mode .ui-modal__content{box-shadow:none!important;border:none!important;width:100%!important;max-width:100%!important;padding:0!important}body.print-mode .portfolio-print{padding:var(--space-6);color:#000;background:#fff;display:block!important}body.print-mode .portfolio-print__title{font-family:var(--font-display);margin:0 0 var(--space-2);font-size:36px}body.print-mode .portfolio-print__attribution{color:#444;margin-bottom:var(--space-5);font-size:16px;font-style:italic}body.print-mode .portfolio-print__diagram{font-family:var(--font-mono);white-space:pre;padding:var(--space-4);color:#000;background:#fafafa;border:1px solid #ccc;border-radius:6px;font-size:13px}body.print-mode .portfolio-print__footer{margin-top:var(--space-5);color:#888;text-align:right;font-size:11px;font-family:var(--font-mono)}}.game-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));display:grid}@media (width<=640px){.game-grid{grid-template-columns:1fr}}.json-view-toggle{padding:var(--space-2) var(--space-3) 0;background:var(--surface-2);gap:2px;display:flex}.json-view-toggle__btn{font-size:var(--text-xs);color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:0 0;border:none;border-bottom:2px solid #0000;padding:6px 14px;font-weight:600}.json-view-toggle__btn:hover{color:var(--brand-primary)}.json-view-toggle__btn.is-active{color:var(--brand-primary);border-bottom-color:var(--brand-primary);background:var(--surface-1)}.json-view-toggle__btn:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}.chat-json-tree,.chat-json-graph,.chat-json-preview{padding:var(--space-3);background:var(--surface-1);flex:1;overflow:auto}.json-empty{color:var(--text-muted);padding:var(--space-3);font-style:italic}.game-preview-pane{gap:var(--space-2);flex-direction:column;height:100%;display:flex}.preview-header-row{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.preview-mode-toggle{border:1px solid var(--surface-3);border-radius:4px;gap:2px;display:inline-flex;overflow:hidden}.preview-mode-btn{background:var(--surface-1);color:var(--text-secondary);padding:var(--space-1) var(--space-3);cursor:pointer;border:none;font-size:.8rem}.preview-mode-btn.is-active{background:var(--brand-primary);color:#fff}.preview-mode-btn:disabled{opacity:.4;cursor:not-allowed}.preview-play-error{color:#f07878;padding:var(--space-2);background:#dc3c3c26;border-radius:4px;font-size:.85rem}.preview-status{align-items:center;gap:var(--space-2);padding:var(--space-2);border-radius:4px;font-size:.85rem;display:flex}.preview-status .status-dot{border-radius:50%;width:8px;height:8px}.status-ok{color:#50dc78;background:#28b4501a}.status-ok .status-dot{background:#50dc78}.status-warn{color:#f0c850;background:#dca0281a}.status-warn .status-dot{background:#f0c850}.status-error{color:#f07878;background:#dc3c3c1a}.status-error .status-dot{background:#f07878}.status-empty{background:var(--surface-2);color:var(--text-muted)}.status-empty .status-dot{background:var(--text-muted)}.preview-surface{border:1px solid var(--surface-3);border-radius:4px;flex:1;min-height:360px;overflow:hidden}.preview-empty{color:var(--text-muted);flex:1;justify-content:center;align-items:center;display:flex}.preview-error{color:#f07878;white-space:pre-wrap;padding:var(--space-2);font-size:.85rem}.preview-lint{margin-top:var(--space-2);font-size:.85rem}.preview-lint summary{cursor:pointer;color:#f0c850;padding:var(--space-2)}.preview-lint ul{padding:var(--space-2) var(--space-4);margin:0}.preview-lint li{padding:var(--space-1) 0;color:var(--text-secondary)}.json-tree{font-family:var(--font-mono);font-size:12px;line-height:1.6}.json-tree__row{cursor:pointer;border-radius:3px;align-items:center;gap:6px;padding:1px 2px;display:flex}.json-tree__row--leaf{cursor:default}.json-tree__row:hover{background:var(--brand-primary-soft)}.json-tree__toggle{width:12px;color:var(--text-muted)}.json-tree__key{color:var(--text-secondary);font-weight:600}.json-tree__type{color:var(--text-muted);font-size:11px;font-style:italic}.json-tree__preview{color:var(--text-muted);margin-left:6px;font-style:italic}.json-tree__children{border-left:1px dashed var(--border-subtle);margin-left:4px;padding-left:18px}.json-tree__val{cursor:pointer;border-radius:3px;padding:0 4px}.json-tree__val:hover{background:var(--surface-3)}.json-tree__val--string{color:#1f7a4d}.json-tree__val--number{color:var(--brand-primary);font-variant-numeric:tabular-nums}.json-tree__val--boolean{color:#c2580a}.json-tree__val--null{color:var(--text-muted);font-style:italic}.flow-graph{background:var(--surface-1);border-radius:var(--radius-md);padding:var(--space-2)}.flow-graph--empty{color:var(--text-muted);padding:var(--space-3);font-style:italic}.flow-graph__col-label{font-family:var(--font-display);fill:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;font-size:12px;font-weight:700}.flow-pill rect{fill:var(--surface-2);stroke:var(--border-default);stroke-width:1.5px}.flow-pill--state rect{fill:#5b6bf31f;stroke:var(--brand-primary)}.flow-pill--action rect{fill:#5b6bf32e;stroke:var(--brand-primary)}.flow-pill--effects rect{fill:#f59e0b24;stroke:#f59e0b}.flow-pill--win rect{fill:#10b98129;stroke:#10b981}.flow-pill__title{fill:var(--text-primary);font-size:13px;font-weight:700;font-family:var(--font-display)}.flow-pill__sub{fill:var(--text-secondary);font-size:11px}.flow-edge{stroke:var(--brand-primary);stroke-width:1.8px;opacity:.6}.game-end{margin-top:var(--space-3);padding:var(--space-4) var(--space-5);background:var(--surface-2);border-radius:var(--radius-lg);border:1.5px solid var(--border-default);text-align:center;animation:gameEndDrop .4s var(--transition-base)}@keyframes gameEndDrop{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}.game-end--win{border-color:var(--state-success);background:var(--state-success-bg)}.game-end--lose{border-color:var(--border-default)}.game-end--draw{background:#f59e0b14;border-color:#f59e0b}.game-end__icon{margin-bottom:var(--space-2);font-size:56px;line-height:1}.game-end__title{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--text-primary);margin:0 0 6px}.game-end__sub{color:var(--text-secondary);margin:0 0 var(--space-3);font-size:var(--text-md)}.game-end__stats{gap:var(--space-4);margin-bottom:var(--space-3);font-size:var(--text-sm);color:var(--text-secondary);display:inline-flex}.game-end__stats strong{color:var(--brand-primary);font-variant-numeric:tabular-nums}.game-end__actions{gap:var(--space-2);flex-wrap:wrap;justify-content:center;display:flex}.error-boundary{min-height:100vh;padding:var(--space-5);background:var(--surface-1);justify-content:center;align-items:center;display:flex}.error-boundary__card{background:var(--surface-2);border:1px solid var(--border-default);border-radius:var(--radius-lg);width:100%;max-width:520px;padding:var(--space-5);text-align:center}.error-boundary__icon{margin-bottom:var(--space-3);font-size:56px;line-height:1}.error-boundary__title{margin:0 0 var(--space-2);font-family:var(--font-display);color:var(--text-primary)}.error-boundary__sub{color:var(--text-secondary);margin:0 0 var(--space-3);line-height:1.5}.error-boundary__details{background:var(--state-error-bg);color:var(--state-error-fg);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-family:var(--font-mono);text-align:left;margin-bottom:var(--space-3);word-break:break-word;font-size:12px}.error-boundary__actions{gap:var(--space-2);flex-wrap:wrap;justify-content:center;display:flex}.error-boundary__btn{background:var(--surface-2);border:1px solid var(--border-default);color:var(--text-primary);border-radius:var(--radius-md);cursor:pointer;font-size:var(--text-sm);justify-content:center;align-items:center;padding:10px 20px;font-weight:500;text-decoration:none;display:inline-flex}.error-boundary__btn--primary{background:var(--brand-primary);color:var(--text-on-brand);border-color:var(--brand-primary)}.error-boundary__btn:hover{filter:brightness(1.05)}.creator-preview{padding:var(--space-3);background:var(--surface-2);border-bottom:1px solid var(--border-subtle)}.creator-preview__label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2);font-size:11px;font-weight:600}.creator-preview__card{background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:var(--radius-md);align-items:stretch;display:flex;overflow:hidden}.creator-preview__cover{flex-shrink:0;justify-content:center;align-items:center;width:90px;display:flex;position:relative}.creator-preview__tag{text-transform:uppercase;letter-spacing:.04em;color:#fffffff2;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1f213852;border-radius:8px;padding:2px 6px;font-size:9px;font-weight:600;position:absolute;top:6px;left:6px}.creator-preview__emoji{filter:drop-shadow(0 2px 6px #1f213838);font-size:36px}.creator-preview__body{flex:1;min-width:0;padding:10px 12px}.creator-preview__body h3{font-size:var(--text-sm);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:600;overflow:hidden}.creator-preview__body p{font-size:var(--text-xs);color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:4px 0 0;line-height:1.4;display:-webkit-box;overflow:hidden}.comments-list{gap:var(--space-2);max-height:300px;padding:var(--space-2) 0;flex-direction:column;display:flex;overflow-y:auto}.comment{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--surface-2);border:1px solid var(--border-subtle)}.comment--teacher{background:var(--brand-primary-soft);border-color:#5b6bf340}.comment__meta{font-size:var(--text-xs);align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.comment__meta small{color:var(--text-muted)}.comment__body{font-size:var(--text-sm);white-space:pre-wrap;line-height:1.5}.comment-form{gap:var(--space-2);margin-top:var(--space-2);display:flex}.comment-form textarea{font-size:var(--text-sm);border-radius:var(--radius-md);border:1px solid var(--border-default);resize:vertical;flex:1;min-height:60px;padding:8px}.comment-form button{align-self:flex-end}.roster-import{margin:var(--space-2) 0 var(--space-3)}.roster-import__panel{background:var(--surface-2);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-3);gap:var(--space-2);flex-direction:column;display:flex}.roster-import__head{justify-content:space-between;align-items:center;display:flex}.roster-import__panel textarea{font-family:var(--font-mono);border-radius:var(--radius-sm);border:1px solid var(--border-default);resize:vertical;padding:8px;font-size:12px}.roster-import__result{background:var(--state-success-bg);color:var(--state-success-fg);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm)}.roster-import__result pre{background:#0000000d;border-radius:3px;margin-top:6px;padding:6px 8px;font-size:11px;overflow-x:auto}.admin-screen{padding:var(--space-5);max-width:1400px;margin:0 auto}.admin-header{margin-bottom:var(--space-4)}.admin-header__title{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:var(--weight-bold);margin:0}.admin-header__sub{color:var(--text-muted);font-size:var(--text-sm);margin-top:4px}.admin-tabs{gap:var(--space-2);border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-4);display:flex}.admin-tab{padding:10px var(--space-3);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:color var(--transition-base), border-color var(--transition-base);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;font-weight:600}.admin-tab:hover{color:var(--brand-primary)}.admin-tab.is-active{color:var(--brand-primary);border-bottom-color:var(--brand-primary)}.admin-tab:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}.admin-loading{align-items:center;gap:var(--space-2);color:var(--text-muted);padding:var(--space-5);display:flex}.admin-stats-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.admin-stat-card{padding:var(--space-4);flex-direction:column;gap:4px;display:flex}.admin-stat-card__label{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.admin-stat-card__value{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:var(--weight-bold);color:var(--brand-primary);font-variant-numeric:tabular-nums;line-height:1}.admin-stat-card__sub{font-size:var(--text-xs);color:var(--text-muted)}.admin-toolbar{gap:var(--space-2);padding:var(--space-2) 0 var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.admin-toolbar>:first-child{flex:1;min-width:200px;margin-bottom:0}.admin-toolbar__select{background:var(--surface-2);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:var(--text-sm);padding:8px 12px}.admin-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid var(--border-subtle);padding:10px 12px}.admin-table th{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;background:var(--surface-2);font-weight:600}.admin-table tr:hover td{background:var(--surface-2)}.admin-table code{font-family:var(--font-mono);background:var(--surface-3);color:var(--text-secondary);border-radius:3px;padding:2px 6px;font-size:12px}.admin-row-actions{white-space:nowrap;gap:6px;display:flex}.admin-user-cell{align-items:center;gap:10px;display:flex}.admin-user-cell__avatar{background:var(--brand-primary-soft);width:32px;height:32px;color:var(--brand-primary);border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.admin-user-cell small{display:block}.admin-audit-msg{text-overflow:ellipsis;white-space:nowrap;max-width:600px;font-family:var(--font-mono);color:var(--text-secondary);font-size:12px;overflow:hidden}@media (width<=720px){.admin-table{font-size:var(--text-xs)}.admin-row-actions{flex-direction:column;gap:4px}.admin-audit-msg{max-width:200px}}.browse-filters{gap:var(--space-3);padding:var(--space-3) 0 var(--space-4);border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-4);flex-direction:column;display:flex}.browse-search{align-items:center;display:flex;position:relative}.browse-search__icon{pointer-events:none;color:var(--text-muted);font-size:16px;position:absolute;left:14px}.browse-search__input{width:100%;font-size:var(--text-base);background:var(--surface-2);border:1px solid var(--border-default);border-radius:var(--radius-lg);color:var(--text-primary);transition:border-color var(--transition-base), box-shadow var(--transition-base);padding:12px 40px}.browse-search__input:focus{border-color:var(--brand-primary);outline:none;box-shadow:0 0 0 3px #5b6bf31f}.browse-search__clear{background:var(--surface-3);width:28px;height:28px;color:var(--text-secondary);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:13px;display:inline-flex;position:absolute;right:8px}.browse-search__clear:hover{background:var(--brand-primary-soft);color:var(--brand-primary)}.browse-filter-row{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.browse-filter-group{gap:var(--space-2);flex-wrap:wrap;display:inline-flex}.browse-filter-group--family{padding-left:var(--space-3);border-left:1px solid var(--border-subtle);margin-left:auto}@media (width<=700px){.browse-filter-group--family{border-left:none;margin-left:0;padding-left:0}}@media (width<=500px){.browse-filter-group{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;padding-bottom:4px;overflow:auto hidden}.browse-filter-group::-webkit-scrollbar{height:4px}.browse-filter-group::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:2px}.browse-pill,.browse-chip{flex:none}}.browse-pill{background:var(--surface-2);border:1px solid var(--border-default);border-radius:var(--radius-pill);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:background var(--transition-base), color var(--transition-base), border-color var(--transition-base);align-items:center;gap:8px;padding:8px 16px;font-weight:600;display:inline-flex}.browse-pill:hover{border-color:var(--brand-primary);color:var(--brand-primary)}.browse-pill.is-active{background:var(--brand-primary);border-color:var(--brand-primary);color:var(--text-on-brand)}.browse-pill__count{background:#ffffff40;border-radius:9px;padding:2px 7px;font-size:11px;font-weight:600}.browse-pill:not(.is-active) .browse-pill__count{background:var(--surface-3);color:var(--text-muted)}.browse-chip{border:1px solid var(--border-subtle);border-radius:var(--radius-pill);font-size:var(--text-xs);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-base);background:0 0;padding:6px 12px;font-weight:500}.browse-chip:hover{border-color:var(--brand-primary);color:var(--brand-primary)}.browse-chip.is-active{background:var(--brand-primary-soft);border-color:var(--brand-primary);color:var(--brand-primary)}.game-card{background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);transition:transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-base);flex-direction:column;display:flex;position:relative;overflow:hidden;box-shadow:0 1px 2px #1f21380a}.game-card:hover{border-color:var(--brand-primary);transform:translateY(-4px);box-shadow:0 14px 32px #5b6bf338}.game-card__cover{justify-content:center;align-items:center;height:160px;display:flex;position:relative;overflow:hidden}.game-card__cover:before{content:"";pointer-events:none;background:radial-gradient(circle at 20% 20%,#ffffff73,#0000 50%),radial-gradient(circle at 80% 80%,#00000014,#0000 50%);position:absolute;inset:0}.game-card__cover:after{content:"";pointer-events:none;background:linear-gradient(#0000 70%,#1f21381a);position:absolute;inset:0}.game-card__cover-tag{top:var(--space-2);left:var(--space-3);letter-spacing:.04em;text-transform:uppercase;color:#fffffff2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-pill);z-index:1;background:#1f213852;padding:4px 10px;font-size:11px;font-weight:600;position:absolute}.game-card__thumb{object-fit:cover;z-index:0;width:100%;height:100%;position:absolute;inset:0}.game-card__emoji{filter:drop-shadow(0 4px 12px #1f213838);z-index:1;transition:transform var(--transition-base);font-size:72px;line-height:1;position:relative}.game-card__cover:has(.game-card__thumb:not([style*="display: none"])) .game-card__emoji{opacity:.18;font-size:48px}.game-card:hover .game-card__emoji{transform:scale(1.08)rotate(-2deg)}.game-card__body{padding:var(--space-3) var(--space-4) 0;flex-direction:column;flex:1;gap:6px;display:flex}.game-card__title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;margin:0;line-height:1.2;overflow:hidden}.game-card__desc{font-size:var(--text-sm);color:var(--text-secondary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:0;line-height:1.45;display:-webkit-box;overflow:hidden}.game-card__actions{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4) var(--space-4);display:flex}.game-card__actions>button:first-child{flex:1}.game-card__menu{position:relative}.game-card__menu-btn{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);width:40px;height:40px;color:var(--text-secondary);cursor:pointer;transition:background var(--transition-base), color var(--transition-base);justify-content:center;align-items:center;font-size:20px;font-weight:700;line-height:1;display:inline-flex}.game-card__menu-btn:hover{background:var(--brand-primary-soft);color:var(--brand-primary)}.game-card__menu-btn:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}.game-card__menu-list{background:var(--surface-1);border:1px solid var(--border-default);border-radius:var(--radius-md);z-index:10;min-width:160px;margin:0;padding:4px;list-style:none;position:absolute;bottom:calc(100% + 6px);right:0;box-shadow:0 12px 32px #1f21382e}.game-card__menu-list li{margin:0}.game-card__menu-list button{text-align:left;width:100%;font-size:var(--text-sm);color:var(--text-primary);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;display:flex}.game-card__menu-list button:hover{background:var(--brand-primary-soft)}.game-card__menu-list button.danger{color:var(--state-error-fg)}.game-card__menu-list button.danger:hover{background:var(--state-error-bg)}.icon-btn{min-width:44px;min-height:44px;padding:0 var(--space-2);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:background var(--transition-base), border-color var(--transition-base), color var(--transition-base);background:0 0;justify-content:center;align-items:center;gap:6px;font-size:16px;line-height:1;display:inline-flex}.icon-btn__label{font-size:var(--text-xs);font-weight:500}@media (width<=600px){.icon-btn__label{display:none}.icon-btn{min-width:44px;padding:0}}.icon-btn:hover{background:var(--surface-3);border-color:var(--border-default);color:var(--text-primary)}.icon-btn:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}.icon-btn:active{transform:scale(.96)}.icon-btn--danger:hover{background:var(--state-error-bg);border-color:var(--state-error);color:var(--state-error-fg)}.chat-msg{align-items:flex-end;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.chat-msg--user{flex-direction:row-reverse}.chat-avatar{border-radius:var(--radius-pill);width:32px;height:32px;font-size:11px;font-weight:var(--weight-bold);letter-spacing:.4px;color:var(--text-on-brand);box-shadow:var(--shadow-sm);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.chat-avatar--user{background:linear-gradient(135deg, var(--state-success) 0%, #1ea584 100%)}.chat-avatar--assistant{background:linear-gradient(135deg, var(--brand-primary) 0%, var(--brand-accent) 100%)}.chat-bubble{flex-direction:column;gap:4px;max-width:min(78%,480px);display:flex}.chat-msg--user .chat-bubble{align-items:flex-end}.chat-msg .msg-label{font-size:10px;font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:.5px;margin:0;padding:0 4px}.chat-msg .msg-content{padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:var(--text-sm);white-space:pre-wrap;word-break:break-word;box-shadow:var(--shadow-sm);line-height:1.5}.chat-msg.user .msg-content{background:linear-gradient(135deg, var(--state-success-bg) 0%, #d8f5ec 100%);color:var(--state-success-fg);border-bottom-right-radius:var(--radius-sm)}.chat-msg.assistant .msg-content{background:var(--surface-2);color:var(--text-primary);border:1px solid var(--border-subtle);border-bottom-left-radius:var(--radius-sm)}.chat-messages{padding:var(--space-4);background:var(--surface-1)}.step-progress{background:linear-gradient(135deg, var(--surface-3) 0%, var(--surface-2) 100%);border:1px solid var(--border-subtle);padding:6px;position:relative}.step-item{font-size:var(--text-sm);font-weight:var(--weight-medium);letter-spacing:.2px;padding:var(--space-3) var(--space-3)}.step-item.active{background:linear-gradient(135deg, var(--brand-primary) 0%, var(--brand-accent) 100%);color:var(--text-on-brand);box-shadow:0 4px 12px #5b6bf340}.step-icon{width:24px;height:24px;font-size:var(--text-xs)}.creator-json-panel{background:var(--surface-2)}.json-panel-header{background:linear-gradient(135deg, var(--surface-2) 0%, var(--surface-3) 100%);padding:var(--space-3) var(--space-4);font-weight:var(--weight-bold);font-family:var(--font-display);font-size:var(--text-sm);color:var(--text-primary)}.json-editor.chat-json-editor{color:#e8e8f0;font-family:var(--font-mono);padding:var(--space-4);resize:vertical;background:#1f2138;border:none;border-radius:0;flex:1;min-height:360px;font-size:12.5px;line-height:1.55}.json-editor.chat-json-editor::placeholder{color:#e8e8f080}.json-editor.chat-json-editor:focus{outline:2px solid var(--brand-primary);outline-offset:-2px}.chat-input-row{padding:var(--space-3) var(--space-4);background:var(--surface-2);gap:var(--space-3)}.chat-input{background:var(--surface-1);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);border:1px solid var(--border-subtle);transition:border-color var(--transition-base), box-shadow var(--transition-base)}.chat-input:focus{border-color:var(--brand-primary);outline:none;box-shadow:0 0 0 3px #5b6bf326}.starter-prompts{gap:var(--space-2);padding:var(--space-3) var(--space-4);flex-flow:wrap}.starter-btn{border:1px solid var(--brand-primary-soft);border-radius:var(--radius-pill);padding:6px var(--space-3);font-weight:var(--weight-medium);flex:0 auto}@media (width<=900px){.creator-split{grid-template-columns:1fr}.json-editor.chat-json-editor{min-height:280px}}.game-screen .game-card{overflow:hidden}.game-screen .game-header{background:linear-gradient(135deg, var(--brand-primary-soft) 0%, var(--brand-accent-soft) 100%);margin:calc(var(--space-3) * -1) calc(var(--space-3) * -1) var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.game-screen .game-header h2{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:-.01em;color:var(--text-primary)}.turn-indicator--mine{animation:1.6s ease-in-out infinite turnPulse;position:relative}@keyframes turnPulse{0%,to{box-shadow:0 0 #5b6bf373}50%{box-shadow:0 0 0 8px #5b6bf300}}.turn-indicator--waiting{opacity:.85}.state-details{margin-top:var(--space-4);border:1px dashed var(--border-subtle);border-radius:var(--radius-sm);background:var(--surface-3)}.state-details summary{padding:var(--space-2) var(--space-3);cursor:pointer;font-size:var(--text-xs);color:var(--text-muted);-webkit-user-select:none;user-select:none}.state-details summary:hover{color:var(--text-secondary)}.state-details .state-json{padding:var(--space-3);font-family:var(--font-mono);color:#e8e8f0;border-top:1px solid var(--border-subtle);background:#1f2138;max-height:280px;margin:0;font-size:11px;overflow:auto}.lobby-screen{max-width:560px;margin:var(--space-7) auto 0;text-align:center}.lobby-screen h2{font-family:var(--font-display);font-size:var(--text-2xl);margin-bottom:var(--space-3)}.lobby-screen .player-list{gap:var(--space-2);margin:var(--space-5) 0;flex-direction:column;display:flex}.lobby-screen .player-list li{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);align-items:center;gap:var(--space-3);font-weight:var(--weight-medium);list-style:none;display:flex}.lobby-screen .player-list li:before{content:"";background:var(--state-success);width:10px;height:10px;box-shadow:0 0 0 4px var(--state-success-bg);border-radius:50%}.result-screen{text-align:center;padding:var(--space-7) var(--space-5)}.result-screen .result-headline{font-family:var(--font-display);font-size:clamp(2rem,5vw,3rem);font-weight:var(--weight-bold);background:linear-gradient(135deg, var(--brand-primary) 0%, var(--brand-accent) 100%);color:#0000;margin:var(--space-4) 0 var(--space-2);-webkit-background-clip:text;background-clip:text}.result-screen .result-sub{color:var(--text-secondary);font-size:var(--text-lg);margin-bottom:var(--space-6)}.result-screen .result-actions{justify-content:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.login-screen{background:radial-gradient(ellipse 60% 50% at 20% 0%, #5b6bf31a, transparent 60%), radial-gradient(ellipse 60% 50% at 80% 100%, #ff8a5b1a, transparent 60%), var(--surface-1);min-height:100vh}.login-screen .login-card{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border-subtle);background:#ffffffeb}.login-hero__art{animation:4s ease-in-out infinite brandGlow}@keyframes brandGlow{0%,to{box-shadow:0 4px 12px #5b6bf340}50%{box-shadow:0 8px 24px #5b6bf373}}.teacher-dashboard{background:radial-gradient(ellipse 40% 30% at 0% 0%, #5b6bf30f, transparent 60%), var(--surface-1);min-height:100vh}.teacher-header{background:var(--surface-2);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-subtle);box-shadow:var(--shadow-sm)}.teacher-cols{gap:var(--space-4)}.teacher-col{background:var(--surface-2);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--border-subtle);padding:var(--space-4)}.teacher-col-head{padding-bottom:var(--space-3);margin-bottom:var(--space-3);border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;display:flex}.teacher-col-head h2{font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-bold)}.submission-card{border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-2);background:var(--surface-2);transition:transform var(--transition-base), border-color var(--transition-base)}.submission-card:hover{border-color:var(--brand-primary);transform:translateY(-2px)}.submission-card__avatar{border-radius:var(--radius-pill);background:linear-gradient(135deg, var(--brand-primary) 0%, var(--brand-accent) 100%);width:36px;height:36px;color:var(--text-on-brand);font-weight:var(--weight-bold);font-size:var(--text-sm);box-shadow:var(--shadow-sm);justify-content:center;align-items:center;display:inline-flex}.ai-bar{background:var(--surface-3);border-radius:var(--radius-pill);height:6px;margin-top:var(--space-1);overflow:hidden}.ai-bar__fill{background:linear-gradient(90deg, var(--state-success), var(--state-warning), var(--state-error));height:100%;transition:width var(--transition-base)}.ai-bar__label{font-size:var(--text-xs);color:var(--text-muted);margin-left:var(--space-2)}.filter-chips{gap:var(--space-1);background:var(--surface-3);border-radius:var(--radius-pill);padding:3px;display:flex}.filter-chip{padding:6px var(--space-3);border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-secondary);cursor:pointer;transition:background var(--transition-base), color var(--transition-base);background:0 0;border:none}.filter-chip:hover{color:var(--text-primary)}.filter-chip--active{background:var(--surface-2);color:var(--brand-primary);box-shadow:var(--shadow-sm)}.portfolio-screen{padding:var(--space-5)}.portfolio-screen h2{font-family:var(--font-display);font-size:var(--text-2xl);margin-bottom:var(--space-5)}.portfolio-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.portfolio-card{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);transition:transform var(--transition-base), box-shadow var(--transition-base);overflow:hidden}.portfolio-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.portfolio-card__cover{background:linear-gradient(135deg, var(--brand-accent-soft) 0%, var(--brand-primary-soft) 100%);justify-content:center;align-items:center;height:80px;font-size:32px;display:flex}.portfolio-card__body{padding:var(--space-4)}.portfolio-card__title{font-family:var(--font-display);font-size:var(--text-md);font-weight:var(--weight-bold);margin:0 0 var(--space-1)}.portfolio-card__meta{font-size:var(--text-xs);color:var(--text-muted)}.app-header{background:var(--surface-2);border-bottom:1px solid var(--border-subtle);box-shadow:var(--shadow-sm)}.app-brand__mark{filter:drop-shadow(0 2px 4px #5b6bf340)}.app-header h1{font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-bold);letter-spacing:-.01em}.prefs-row{padding:8px 0}.prefs-row label{cursor:pointer}.prefs-row select{background:var(--surface-2);color:var(--text-1);border:1px solid var(--border-1);border-radius:6px;padding:4px 6px}.prefs-footnote{color:var(--text-2);font-size:var(--text-xs);margin-top:12px}.view-controls{z-index:20;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:auto;background:#0f121cc7;border:1px solid #788cc859;border-radius:8px;flex-direction:column;gap:4px;padding:6px;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.view-controls button{color:#f0f5fff2;cursor:pointer;background:#28324bcc;border:1px solid #788cc866;border-radius:4px;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;font-weight:600;transition:background 60ms;display:flex}.view-controls button:hover{background:#465a82d9}.view-controls button:active{background:#6482b4e6}body[data-reduced-motion="1"] *,body[data-reduced-motion="1"] :before,body[data-reduced-motion="1"] :after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}body[data-color-blind-palette=deuteranopia] canvas,body[data-color-blind-palette=deuteranopia] img,body[data-color-blind-palette=deuteranopia] svg{filter:url(#gv-cb-deuteranopia)}body[data-color-blind-palette=protanopia] canvas,body[data-color-blind-palette=protanopia] img,body[data-color-blind-palette=protanopia] svg{filter:url(#gv-cb-protanopia)}body[data-color-blind-palette=tritanopia] canvas,body[data-color-blind-palette=tritanopia] img,body[data-color-blind-palette=tritanopia] svg{filter:url(#gv-cb-tritanopia)}
