@font-face{font-family:Fraunces;font-style:normal;font-weight:600 700;font-display:swap;src:url(/fonts/fraunces-latin.woff2) format("woff2")}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/space-grotesk-latin.woff2) format("woff2")}:root{--bg: #f6f1e8;--ink: #18130f;--muted: #6c5f55;--accent: #d86a1b;--accent-soft: #f5d5b9;--card: rgba(255, 255, 255, .78);--border: rgba(36, 28, 22, .14);--surface: rgba(255, 255, 255, .6);--field: #ffffff;--bg-radial-1: #fff2e3;--bg-radial-2: #eef4e6;--bg-line: rgba(24, 19, 15, .04);--error: #dc3545;--danger-bg: rgba(220, 53, 69, .08);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 999px;--shadow-sm: 0 1px 3px rgba(26, 20, 16, .06);--shadow-md: 0 4px 12px rgba(26, 20, 16, .1);--shadow-lg: 0 18px 45px rgba(26, 20, 16, .15);--ring: 0 0 0 2px var(--accent-soft);--color-move: #5a8a3c;--color-move-soft: rgba(90, 138, 60, .85);--color-capture: #c0392b;--color-capture-soft: rgba(192, 57, 43, .85);--color-move-capture: #2e7d5a;--color-move-capture-soft: rgba(46, 125, 90, .85);--color-effect: #c76d1a;--color-effect-soft: rgba(199, 109, 26, .65);--color-center: var(--accent);--color-poison: rgba(120, 160, 60, .4);--color-poison-dark: rgba(90, 130, 40, .5);--color-selected: rgba(216, 106, 27, .45);--color-target: rgba(216, 106, 27, .4);--color-check: rgba(216, 106, 27, .6);--color-lastmove: rgba(216, 166, 27, .25);--board-light: #e8dfd4;--board-dark: #b8a898;--color-success: #22c55e;--color-success-soft: rgba(34, 197, 94, .15);--color-danger: #ef4444;--color-danger-soft: rgba(239, 68, 68, .15);--color-warning: #ca8a04;--color-warning-soft: rgba(234, 179, 8, .12);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--ease-fast: .15s ease;--ease-medium: .2s ease;--ease-slow: .3s ease;--timer-warning: #e67e22;--timer-danger: #c0392b;font-family:Space Grotesk,Segoe UI,sans-serif;color:var(--ink);background:var(--bg)}[data-theme=dark]{--bg: #0f1110;--ink: #f0f5f1;--muted: #a5b1aa;--accent: #39d98a;--accent-soft: rgba(57, 217, 138, .18);--card: rgba(22, 28, 25, .88);--border: rgba(255, 255, 255, .12);--surface: rgba(20, 24, 22, .75);--field: #121614;--bg-radial-1: rgba(27, 46, 36, .9);--bg-radial-2: rgba(16, 32, 25, .8);--bg-line: rgba(255, 255, 255, .05);--error: #ff6b6b;--danger-bg: rgba(255, 107, 107, .1);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .2);--shadow-md: 0 4px 12px rgba(0, 0, 0, .3);--shadow-lg: 0 20px 50px rgba(0, 0, 0, .45);--ring: 0 0 0 2px var(--accent-soft);--color-success: #4ade80;--color-success-soft: rgba(74, 222, 128, .15);--color-danger: #f87171;--color-danger-soft: rgba(248, 113, 113, .15);--color-warning: #facc15;--color-warning-soft: rgba(250, 204, 21, .12);--color-move: #4caf50;--color-move-soft: rgba(76, 175, 80, .8);--color-capture: #ef5350;--color-capture-soft: rgba(239, 83, 80, .8);--color-move-capture: #26a69a;--color-move-capture-soft: rgba(38, 166, 154, .8);--color-effect: #ff9800;--color-effect-soft: rgba(255, 152, 0, .6);--color-center: var(--accent);--color-poison: rgba(139, 195, 74, .35);--color-poison-dark: rgba(104, 159, 56, .45);--color-selected: rgba(57, 217, 138, .4);--color-target: rgba(57, 217, 138, .35);--color-check: rgba(239, 83, 80, .5);--color-lastmove: rgba(57, 217, 138, .2);--board-light: #2a2e2c;--board-dark: #1a1e1c;--timer-warning: #e67e22;--timer-danger: #e74c3c}body{margin:0;min-height:100vh;background:var(--bg)}#root{display:flex;flex-direction:column;min-height:100vh}body:before{content:"";position:fixed;inset:0;z-index:-1;background:radial-gradient(900px 600px at 15% 0%,var(--bg-radial-1) 0%,transparent 60%),radial-gradient(700px 480px at 85% 10%,var(--bg-radial-2) 0%,transparent 55%),repeating-linear-gradient(135deg,var(--bg-line) 0,var(--bg-line) 1px,transparent 1px,transparent 14px)}a{color:inherit}h1,h2{font-family:Fraunces,Times New Roman,serif}h1{font-size:clamp(2.4rem,5vw,4rem);margin:0 0 14px}p{margin:0}.dartlab-shell{display:flex;min-height:100vh;flex-direction:column;gap:var(--space-xl)}.dartlab-header{display:flex;justify-content:space-between;align-items:center;padding:24px clamp(20px,4vw,48px);border-bottom:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.dartlab-brand{font-family:Fraunces,Times New Roman,serif;font-size:1.8rem;letter-spacing:.02em}.dartlab-nav{display:flex;gap:18px;font-size:.95rem}.dartlab-nav a{text-decoration:none;padding:6px 10px;border-radius:999px;border:1px solid transparent;transition:all var(--ease-medium)}.dartlab-nav a:hover{border-color:var(--border);background:var(--card)}.dartlab-main{flex:1;padding:0 clamp(20px,4vw,48px) 48px}.dartlab-card{max-width:760px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:clamp(24px,5vw,48px);box-shadow:var(--shadow-md)}.dartlab-card p{color:var(--muted);font-size:1.05rem}.dartlab-actions{display:flex;gap:12px;margin-top:20px}.dartlab-form{display:grid;gap:14px;margin:20px 0}.dartlab-form label{display:grid;gap:6px;font-size:.95rem;color:var(--muted)}.dartlab-form input,.dartlab-form select{padding:10px 12px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--field);color:var(--ink);font-size:1rem}.dartlab-button{display:inline-flex;align-items:center;justify-content:center;border:none;padding:10px 18px;border-radius:999px;background:var(--accent);color:#fff;font-weight:600;text-decoration:none;cursor:pointer;transition:transform var(--ease-fast),box-shadow var(--ease-fast)}.dartlab-button:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}.dartlab-button.outline{background:transparent;border:1px solid var(--border);color:var(--ink)}.dartlab-link{margin-top:12px;background:none;border:none;color:var(--accent);cursor:pointer;font-weight:600}.dartlab-links{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:8px}.dartlab-message{margin-top:14px;color:var(--muted)}.dartlab-scoreboard{display:grid;gap:12px;margin:20px 0}.dartlab-score{display:flex;justify-content:space-between;padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.dartlab-score strong{font-size:1.4rem}.dartlab-darts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.dartlab-profile-card{display:grid;gap:6px;padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.dartlab-profile-head{display:flex;align-items:center;gap:10px;justify-content:space-between}.dartlab-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--ink);font-size:.8rem;width:fit-content}.dartlab-checkbox{display:flex;gap:10px;align-items:center}.dartlab-account-links{display:flex;gap:16px;margin:12px 0 4px}.dartlab-account-links a{text-decoration:none;color:var(--accent);font-weight:600}.dartlab-player-row{display:grid;gap:12px;padding:12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}@media(min-width:900px){.dartlab-player-row{grid-template-columns:2fr auto;align-items:end}}.dartlab-picker{position:relative}.dartlab-picker-list{position:absolute;top:100%;left:0;right:0;background:var(--field);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-top:6px;z-index:10;max-height:220px;overflow:auto}.dartlab-picker-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 12px;border:none;background:transparent;text-align:left;cursor:pointer}.dartlab-picker-item:hover{background:var(--accent-soft)}.dartlab-picker-item.user{color:#195a3a}.dartlab-picker-item.guest{color:#5a3f19}.dartlab-picker-kind{font-size:.8rem;color:var(--muted)}.dartlab-picker-create{margin-top:8px;border:1px dashed var(--border);border-radius:var(--radius-md);padding:8px 12px;background:var(--surface);color:var(--muted);cursor:pointer}.dartlab-picker-create:hover{border-color:var(--accent);color:var(--ink)}.dartlab-picker-section{padding:6px 0}.dartlab-picker-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:6px 12px 4px}.dartlab-picker-divider{height:1px;background:var(--border);margin:4px 0}.dartlab-footer{padding:18px clamp(20px,4vw,48px) 32px;color:var(--muted);font-size:.9rem}@media(max-width:800px){.dartlab-header{flex-direction:column;align-items:flex-start;gap:14px}.dartlab-nav{flex-wrap:wrap}}.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 6vw 0}.brand{text-decoration:none;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.brand-sub{display:inline-block;font-size:.65rem;letter-spacing:.4em;text-transform:uppercase;color:var(--accent);margin-left:10px}.nav-links{display:flex;gap:16px;font-size:.95rem;align-items:center}.nav a{text-decoration:none;color:var(--muted)}.nav a:hover{color:var(--ink)}.nav a.nav-active{color:var(--accent);position:relative}.nav a.nav-active:after{content:"";position:absolute;bottom:-4px;left:0;right:0;height:2px;background:var(--accent);border-radius:1px}.eyebrow{text-transform:uppercase;letter-spacing:.4em;font-size:.75rem;color:var(--muted);margin:0 0 12px}.lead{font-size:1.05rem;line-height:1.6;color:var(--muted);max-width:520px}.home{padding:64px 6vw 120px}.home-hero{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:48px;align-items:center;max-width:1100px;margin:0 auto}.home-copy{display:grid;gap:14px}.home-meta{display:flex;flex-wrap:wrap;gap:12px;font-size:.85rem;color:var(--muted)}.home-meta span{padding:6px 12px;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--surface)}.home-grid{display:grid;gap:16px}.site-card{display:grid;gap:10px;padding:18px 20px;text-decoration:none;background:var(--card);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-md);position:relative;overflow:hidden;animation:rise .5s ease forwards;transform:translateY(12px);opacity:0;animation-delay:var(--delay, 0ms)}.site-card:after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent,var(--accent-soft));opacity:0;transition:opacity .2s ease}.site-card:hover:after{opacity:1}.site-card h2{margin:0;font-size:1.35rem}.site-card p{color:var(--muted);line-height:1.5}.site-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.site-card-cta{font-size:.85rem;color:var(--accent);font-weight:600}.games{padding:64px 6vw 120px;max-width:1100px;margin:0 auto}.games-hero{display:grid;gap:14px;margin-bottom:32px}.games-hero-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.terminal-toggle{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.85rem;font-weight:700;padding:8px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;white-space:nowrap;transition:color .15s ease,border-color .15s ease}.terminal-toggle:hover{color:var(--accent);border-color:var(--accent)}.nav-terminal{font-family:SF Mono,Fira Code,Consolas,monospace;font-weight:700;font-size:.85rem;padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);text-decoration:none;color:var(--muted)!important;transition:color .15s ease,border-color .15s ease}.nav-terminal:hover{color:var(--accent)!important;border-color:var(--accent)}.game-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.game-card{display:grid;gap:16px;padding:22px;text-decoration:none;background:var(--card);border-radius:var(--radius-xl);border:1px solid var(--border);box-shadow:var(--shadow-lg);animation:rise .52s ease forwards;transform:translateY(12px);opacity:0;animation-delay:var(--delay, 0ms);position:relative;overflow:hidden;transition:translate .25s ease,box-shadow .25s ease}.game-card:hover{translate:0 -6px;box-shadow:var(--shadow-lg)}.game-card:focus-visible{outline:none;box-shadow:var(--ring),var(--shadow-md)}.game-card:after{content:"";position:absolute;inset:0;background:linear-gradient(140deg,transparent,var(--accent-soft));opacity:0;transition:opacity .22s ease}.game-card:hover:after{opacity:1}.game-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.game-summary{color:var(--muted);margin-top:8px;line-height:1.5}.game-status{padding:6px 12px;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--surface);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.game-status--playable{background:var(--color-success-soft);color:var(--color-success);border-color:transparent}.game-status--concept{background:var(--accent-soft);color:var(--accent);border-color:transparent}.game-status--builder{background:var(--color-warning-soft);color:var(--color-warning);border-color:transparent}.game-features{list-style:none;padding:0;margin:0;display:grid;gap:8px;color:var(--muted)}.game-features li{padding-left:18px;position:relative}.game-features li:before{content:"•";position:absolute;left:0;color:var(--accent)}.game-cta{font-weight:600;color:var(--accent);letter-spacing:.04em;display:inline-flex;align-items:center;gap:6px}.game-cta .cta-arrow{display:inline-block;transition:translate .15s ease}.game-card:hover .cta-arrow{translate:4px 0}.game-detail{display:grid;gap:24px}.game-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.game-panel h2{margin:0 0 12px}.button-link{display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:var(--bg);padding:8px 14px;border-radius:var(--radius-sm);text-decoration:none;font-weight:600;transition:opacity .15s ease}.button-link:hover{opacity:.9}@keyframes rise{to{transform:translateY(0);opacity:1}}.stagger-in>*{animation:rise .5s ease forwards;transform:translateY(12px);opacity:0}.stagger-in>*:nth-child(1){animation-delay:0ms}.stagger-in>*:nth-child(2){animation-delay:80ms}.stagger-in>*:nth-child(3){animation-delay:.16s}.stagger-in>*:nth-child(4){animation-delay:.24s}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,var(--surface) 25%,var(--border) 50%,var(--surface) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:var(--radius-md)}.skeleton-card{height:120px;border-radius:var(--radius-lg)}.skeleton-text{height:1em;border-radius:var(--radius-sm);width:60%}.skeleton-text-short{height:1em;border-radius:var(--radius-sm);width:35%}.card:before,.site-card:before,.game-card:before{content:"";position:absolute;inset:0;border-radius:inherit;opacity:.03;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:128px 128px}[data-theme=dark] .card:before,[data-theme=dark] .site-card:before,[data-theme=dark] .game-card:before{opacity:.06}.scroll-reveal{opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease}.scroll-reveal.revealed{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important}}.page{width:100%;margin:0 auto;padding:32px 6vw 120px;max-width:1000px}.list{display:grid;gap:16px}.card{padding:18px 20px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);position:relative;overflow:hidden}.card h2{margin:0 0 10px;font-size:1.2rem}.muted{color:var(--muted);margin-left:6px}.error{color:var(--error);background:var(--color-danger-soft);border-left:3px solid var(--error);padding:12px 16px;border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:.92rem}ul{padding-left:18px;margin:0}input,textarea{width:100%;margin-top:6px;padding:8px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--field);color:var(--ink);font-family:inherit;font-size:1rem;transition:border-color .15s ease,box-shadow .15s ease}input:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring);background:color-mix(in srgb,var(--accent-soft) 15%,var(--field))}select{width:100%;margin-top:6px;padding:8px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--field);color:var(--ink);font-family:inherit;font-size:1rem;transition:border-color .15s ease,box-shadow .15s ease}select:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring);background:color-mix(in srgb,var(--accent-soft) 15%,var(--field))}label{display:block;margin-bottom:12px;color:var(--muted)}.checkbox-field{display:flex;align-items:center;gap:8px;margin-bottom:12px;color:var(--muted);font-size:.9rem}.checkbox-field input{width:auto;margin:0}button{background:var(--accent);color:var(--bg);border:1px solid transparent;padding:8px 14px;border-radius:var(--radius-sm);cursor:pointer;font-weight:600;font-family:inherit;font-size:.85rem;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}button:focus-visible{outline:none;box-shadow:var(--ring)}button:hover{opacity:.9}button+button,button.btn-secondary{background:transparent;border:1px solid var(--border);color:var(--muted)}button+button:hover,button.btn-secondary:hover{border-color:var(--accent);color:var(--ink);opacity:1}button.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--muted)}button.btn-ghost:hover{border-color:var(--accent);color:var(--ink);opacity:1}button.btn-danger{color:var(--error)}button.btn-danger:hover{background:var(--error);color:#fff;border-color:var(--error);opacity:1}button:active:not(:disabled){scale:.97;opacity:.85}button:disabled{opacity:.5;cursor:not-allowed}.theme-toggle{background:transparent;border:1px solid var(--border);color:var(--muted);padding:6px;border-radius:999px;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;font-size:1.05rem;line-height:1;transition:color .15s ease,border-color .15s ease,transform .2s ease}.theme-toggle:hover{color:var(--accent);border-color:var(--accent);transform:rotate(15deg)}.actions{display:flex;gap:10px;margin-top:10px}.admin-form{margin-top:24px}.admin-page{display:grid;gap:28px}.admin-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;flex-wrap:wrap}.admin-meta{display:grid;gap:12px;min-width:220px}.admin-meta-card{display:grid;gap:6px;padding:12px 16px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);text-transform:uppercase;letter-spacing:.12em;font-size:.7rem;color:var(--muted)}.admin-meta-card strong{font-size:1.4rem;letter-spacing:.02em;color:var(--ink)}.admin-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:20px}.admin-col{display:grid;gap:20px}.admin-panel h2{margin:0;font-size:1.25rem}.admin-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.admin-badge{padding:4px 10px;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--accent-soft);color:var(--accent);font-size:.7rem;letter-spacing:.18em;text-transform:uppercase}.admin-count{font-size:.85rem;color:var(--muted)}.admin-status pre{margin:0;white-space:pre-wrap;color:var(--muted)}.admin-list{align-self:start}.admin-posts{display:grid;gap:16px}.admin-post{padding:16px 18px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--surface);display:grid;gap:10px}.admin-post h3{margin:0 0 4px;font-size:1.1rem}.admin-post-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.chess{max-width:1200px}.chess-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px;margin-top:24px;align-items:start}.chess-layout--single{grid-template-columns:1fr;justify-items:center}.chess-board{background:var(--card);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-md);padding:16px;display:flex;justify-content:center;position:relative;flex-direction:column;align-items:center;width:100%}.chess-board svg{shape-rendering:geometricPrecision}.chess-board-actions{display:flex;gap:10px;margin-top:12px;width:100%;justify-content:center;flex-wrap:wrap}.chess-board-actions button{background:transparent;border:1px solid var(--border);color:var(--muted);padding:7px 14px;border-radius:var(--radius-full);font-size:.82rem;font-weight:600;transition:border-color .15s ease,color .15s ease,background .15s ease}.chess-board-actions button:hover{opacity:1;border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.chess-panel{display:grid;gap:18px;align-content:start}.chess-status h2{margin:0 0 6px;font-size:1.2rem}.chess-timers{display:grid;gap:12px}.timer{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);font-weight:600;transition:background .3s ease,border-color .3s ease}.timer.timer--warning{border-color:var(--timer-warning);background:#e67e2214}.timer.timer--danger{border-color:var(--timer-danger);background:#c0392b14;animation:timer-pulse 1s ease-in-out infinite}@keyframes timer-pulse{0%,to{opacity:1}50%{opacity:.85}}.timer span{color:var(--muted);font-size:.85rem;letter-spacing:.08em;text-transform:uppercase}.chess-controls{display:grid;gap:12px}.inline-field{display:grid;gap:4px;font-size:.85rem;color:var(--muted)}.move-list h3{margin:0 0 10px;font-size:1rem}.move-rows{display:grid;gap:6px;font-size:.9rem}.move-row{display:grid;grid-template-columns:36px 1fr 1fr;gap:8px;padding:6px 8px;border-radius:var(--radius-sm)}.move-row:nth-child(odd){background:var(--surface)}.move-row:nth-child(2n){background:transparent}.move-index{color:var(--muted);font-weight:600}.chess-banner{position:absolute;inset:16px;display:grid;place-items:center;z-index:2;pointer-events:none}.chess-banner-inner{padding:14px 18px;border-radius:var(--radius-md);background:var(--accent);color:var(--bg);display:flex;flex-direction:column;gap:6px;align-items:center;font-weight:600;letter-spacing:.02em;text-align:center;width:min(320px,80%)}.chess-banner-hint{background:none}.chess-banner-hint .chess-banner-inner{background:var(--ink);color:var(--bg)}.hint{margin-top:6px;color:var(--accent);font-weight:600;font-size:.9rem}.promotion-overlay{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;z-index:5}.promotion-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 24px;box-shadow:var(--shadow-lg);width:min(360px,90vw);display:grid;gap:12px}.promotion-actions{display:grid;gap:10px}.promotion-actions button.ghost{background:transparent;border:1px solid var(--border);color:var(--muted)}.chess-builder .lead{max-width:620px}.builder-tabs{display:flex;gap:4px;margin:18px 0 24px;flex-wrap:wrap;border-bottom:1px solid var(--border);padding-bottom:0}.builder-tabs button{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--muted);padding:10px 16px;border-radius:0;cursor:pointer;font-weight:600;transition:color .15s ease,border-color .15s ease;margin-bottom:-1px}.builder-tabs button:hover{opacity:1;color:var(--ink)}.builder-tabs button.active{background:transparent;color:var(--accent);border-bottom-color:var(--accent)}.builder-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr);gap:20px;align-items:start}.builder-grid--single{grid-template-columns:1fr;max-width:1040px;margin:0 auto}.builder-panel{display:grid;gap:12px}.builder-panel-wide{gap:16px}.builder-list{display:grid;gap:8px}.builder-list button{text-align:left;padding:10px 12px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);color:var(--ink)}.builder-list button.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.builder-preview{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.svg-preview{border-radius:var(--radius-md);border:1px dashed var(--border);background:var(--surface);padding:12px;min-height:120px;display:grid;place-items:center}.builder-inline{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.builder-inline--compact{display:flex;align-items:flex-end;gap:12px;flex-wrap:nowrap}.builder-inline--compact .inline-field{display:flex;align-items:center;gap:8px}.builder-inline--compact .inline-field input{margin-left:6px}.builder-section{display:grid;gap:10px;padding-top:10px;border-top:1px solid var(--border)}.builder-toolbar-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.scale-input{max-width:70px}.zoom-display{min-width:50px;text-align:center;font-weight:500;font-size:.9em}.builder-canvas{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);padding:12px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm)}.builder-templates{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;margin:8px 0}.template-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.template-btn{display:flex;flex-direction:column;align-items:center;padding:8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);cursor:pointer;transition:all .15s ease;min-width:70px}.template-btn:hover{border-color:var(--accent);background:var(--surface)}.template-preview{width:45px;height:45px;display:flex;align-items:center;justify-content:center}.template-preview svg{width:100%;height:100%}.template-name{font-size:.75em;margin-top:4px;text-transform:capitalize}button.active{background:var(--accent);color:var(--bg);border-color:var(--accent)}.piece-designer{display:flex;flex-direction:column;gap:12px}.designer-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;box-shadow:var(--shadow-sm)}.designer-header-left,.designer-header-right{display:flex;align-items:center;gap:8px}.piece-select{min-width:150px;padding:6px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--ink);font-size:.95em}.name-field{display:flex;align-items:center;gap:8px}.name-field span{font-weight:500;color:var(--muted)}.name-field input{padding:6px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--ink);min-width:150px}.btn-icon{min-width:36px;height:32px;padding:0 10px;display:flex;align-items:center;justify-content:center;font-size:1.2em;font-weight:700;border-radius:var(--radius-sm)}.btn-danger{color:var(--error, #e74c3c)}.btn-danger:hover{background:var(--error, #e74c3c);color:#fff;border-color:var(--error, #e74c3c)}.designer-main{display:grid;grid-template-columns:1fr 220px;gap:12px;align-items:start}.designer-left{display:flex;flex-direction:column;gap:10px}.import-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px;box-shadow:var(--shadow-sm)}.import-panel h4{margin:0 0 10px;font-size:.85em;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}.import-panel .btn-row{margin-bottom:8px}.import-panel .btn-row:last-of-type{margin-bottom:0}.canvas-controls{display:flex;flex-wrap:wrap;gap:8px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.control-group{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.control-group .separator{width:1px;height:24px;background:var(--border);margin:0 4px}.designer-sidebar{display:flex;flex-direction:column;gap:10px}.sidebar-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px;box-shadow:var(--shadow-sm)}.sidebar-section h4{margin:0 0 10px;font-size:.85em;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom:1px solid var(--border);padding-bottom:6px}.tool-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:8px}.tool-grid button{padding:8px;font-size:1.1em;min-height:36px}.style-row{display:flex;flex-wrap:wrap;gap:10px}.style-row label{display:flex;flex-direction:column;gap:4px;font-size:.85em}.style-row label span{color:var(--muted)}.style-row input[type=color]{width:36px;height:28px;padding:2px;border-radius:var(--radius-sm);border:1px solid var(--border);cursor:pointer}.small-input{width:50px;padding:4px 6px;text-align:center}.btn-row{display:flex;flex-wrap:wrap;gap:6px}.btn-row button{padding:6px 10px;font-size:.85em;flex:1;min-width:fit-content}.btn-full{width:100%}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:var(--accent);border-color:var(--accent)}.scale-row{display:flex;align-items:center;gap:6px;margin-top:8px}.scale-row span{color:var(--muted);font-size:.9em}.layer-row{margin-top:8px;border-top:1px solid var(--border);padding-top:8px}.layer-row button{font-size:1em}.view-options{display:flex;gap:16px;margin-bottom:8px}.checkbox-inline{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:.9em}.checkbox-inline input[type=checkbox]{width:16px;height:16px;cursor:pointer}.zoom-row{display:flex;align-items:center;gap:6px;margin-bottom:8px}.zoom-row button{min-width:32px;height:28px;padding:0 8px;font-size:.85em}.align-row{display:flex;align-items:center;gap:6px}.align-row span{font-size:.85em;color:var(--muted)}.align-row button{width:32px;height:28px;padding:0;font-size:1em}.designer-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.designer-section .section-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:transparent;border:none;width:100%;cursor:default}.designer-section .section-header h4{margin:0;font-size:.9em;font-weight:600;color:var(--ink)}.designer-section .section-content{padding:12px 14px;border-top:1px solid var(--border)}.designer-section.collapsible .section-header{cursor:pointer;transition:background .15s ease}.designer-section.collapsible .section-header:hover{background:var(--bg)}.collapse-icon{color:var(--muted);font-size:.8em}.template-panel{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.export-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.export-row button{flex:1;min-width:100px}.preview-row{display:flex;gap:16px;justify-content:center}.preview-box{display:flex;flex-direction:column;align-items:center;gap:6px}.preview-label{font-size:.8em;color:var(--muted);text-transform:uppercase}.svg-preview{width:80px;height:80px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);display:flex;align-items:center;justify-content:center;padding:8px}.svg-preview svg{max-width:100%;max-height:100%}.preview-controls{display:flex;align-items:center;gap:10px;margin-bottom:12px}.preview-hint{font-size:.85em;color:var(--muted);margin:0}.size-toggle{display:flex;gap:4px}.size-toggle button{width:28px;height:28px;padding:0;font-size:.8em;font-weight:600;border-radius:var(--radius-sm)}.board-preview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;justify-items:center}.board-preview-item{display:flex;flex-direction:column;align-items:center;gap:6px}.board-square{border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm);transition:width .2s ease,height .2s ease}.board-square{width:70px;height:70px}.piece-on-square{width:80%;height:80%;display:flex;align-items:center;justify-content:center}.board-preview-grid.size-small .board-square{width:50px;height:50px}.board-preview-grid.size-large .board-square{width:90px;height:90px}.board-preview-grid.size-large{grid-template-columns:repeat(2,1fr);gap:16px}.board-square.light{background:var(--board-light)}.board-square.dark{background:var(--board-dark)}.piece-on-square svg{width:100%;height:100%}.board-preview-label{font-size:.7em;color:var(--muted);text-align:center}.designer-output{display:grid;grid-template-columns:1fr 1fr;gap:12px}.output-export{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px;box-shadow:var(--shadow-sm)}.output-export h4,.output-preview h4{margin:0 0 12px;font-size:.9em;font-weight:600;color:var(--ink)}.output-preview{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px;box-shadow:var(--shadow-sm)}.preview-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.preview-header h4{margin:0}.designer-advanced{display:grid;grid-template-columns:1fr 1fr;gap:12px}.advanced-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}.advanced-section .section-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:12px 14px;background:transparent;border:none;cursor:pointer;font-size:.9em;font-weight:500;color:var(--ink);text-align:left;transition:background .15s ease}.advanced-section .section-toggle:hover{background:var(--bg)}.advanced-section .section-content{padding:14px;border-top:1px solid var(--border)}.advanced-section .collapse-icon{font-size:.75em;color:var(--muted)}.svg-code-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.svg-code-row label{display:flex;flex-direction:column;gap:6px}.svg-code-row label span{font-size:.85em;color:var(--muted)}.svg-code-row textarea{font-family:Monaco,Menlo,monospace;font-size:.8em;resize:vertical;min-height:80px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.settings-grid label{display:flex;flex-direction:column;gap:4px}.settings-grid label span{font-size:.85em;color:var(--muted)}.settings-grid input{padding:6px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg)}.traits-row{display:flex;flex-wrap:wrap;gap:12px 20px}.shortcuts-hint{font-size:.8em;color:var(--muted);text-align:center;padding:8px;background:var(--surface);border-radius:var(--radius-sm);margin:0}.shortcuts-hint strong{color:var(--ink)}.muted{color:var(--muted)}@media(max-width:900px){.designer-main{grid-template-columns:1fr}.designer-sidebar{flex-direction:row;flex-wrap:wrap}.sidebar-section{flex:1;min-width:180px}.designer-output,.designer-advanced{grid-template-columns:1fr}.designer-header{flex-direction:column;align-items:stretch}.designer-header-left,.designer-header-right{justify-content:center}}@media(max-width:1100px){.home-hero{grid-template-columns:1fr}.game-detail-head{flex-direction:column}.admin-grid,.builder-grid{grid-template-columns:1fr}}@media(max-width:768px){.chess-layout{grid-template-columns:1fr}.chess-layout .chess-panel{order:2}.page{padding:24px 4vw 80px;padding-left:max(4vw,env(safe-area-inset-left));padding-right:max(4vw,env(safe-area-inset-right))}.games{padding:40px 4vw 80px;padding-left:max(4vw,env(safe-area-inset-left));padding-right:max(4vw,env(safe-area-inset-right))}.games-hero h1{font-size:2rem}.game-grid{grid-template-columns:1fr}.chess-board-actions button{padding:6px 10px;font-size:.78rem}}@media(max-width:600px){.nav{flex-direction:column;align-items:flex-start}.nav-links{flex-wrap:wrap}}.page-loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:1rem;color:var(--muted)}.loader-spinner{width:40px;height:40px;border-radius:50%;background:conic-gradient(from 0deg,transparent 60%,var(--accent));-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3.5px),#000 calc(100% - 3px));mask:radial-gradient(farthest-side,transparent calc(100% - 3.5px),#000 calc(100% - 3px));animation:spin .8s linear infinite}.empty-state{display:flex;flex-direction:column;align-items:center;gap:12px;padding:40px 24px;color:var(--muted);text-align:center}.empty-state-icon{font-size:2.4rem;opacity:.4}.empty-state p{font-size:.95rem;max-width:280px;line-height:1.5}@keyframes spin{to{transform:rotate(360deg)}}.game-frame-page{display:flex;flex-direction:column;gap:16px}.game-frame-container{width:100%;max-width:900px;margin:0 auto;background:#000;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-md);position:relative}.game-frame{display:block;width:100%;height:100%;border:none;background:#000;position:absolute;top:0;left:0}@media(max-width:768px){.game-frame-container{max-width:none;aspect-ratio:unset!important;height:calc(100vh - 160px);border-radius:0}}.game-frame-controls{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.game-frame-controls .button-link.secondary{background:transparent;border:1px solid var(--border);color:var(--muted)}.game-frame-controls .button-link.secondary:hover{color:var(--ink);border-color:var(--accent)}.save-game-input{display:flex;flex-direction:column;gap:8px}.saved-games-list{display:flex;flex-direction:column;gap:8px;margin-top:12px;max-height:240px;overflow-y:auto}.saved-game-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;background:var(--surface);border-radius:var(--radius-sm);border:1px solid var(--border)}.saved-game-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.saved-game-info strong{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.saved-game-info .muted{font-size:.75rem}.saved-game-actions{display:flex;gap:6px;flex-shrink:0}.saved-game-actions button{padding:4px 10px;font-size:.8rem}.popup-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.popup-card{background:var(--card);border-radius:var(--radius-lg);padding:20px 24px;min-width:300px;max-width:420px;border:1px solid var(--border);box-shadow:var(--shadow-lg)}.popup-card h3{margin:0 0 8px;font-size:1rem}.popup-card p{margin:0 0 16px;font-size:.85rem;color:var(--muted);line-height:1.5}.popup-actions{display:flex;gap:8px;justify-content:flex-end}.info-hint{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--surface);border:1px solid var(--border);color:var(--muted);font-size:10px;font-weight:700;cursor:help;margin-left:6px;flex-shrink:0}.moveset-board{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;position:relative}.moveset-square{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;position:relative;box-sizing:border-box}.moveset-square:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--accent)}.moveset-legend{margin-top:8px;display:flex;gap:10px;flex-wrap:wrap}.moveset-legend-item{display:flex;align-items:center;gap:4px;font-size:11px}.moveset-legend-swatch{width:10px;height:10px;border-radius:2px;display:inline-block}.effect-zone-bar{margin-bottom:6px;padding:6px 10px;background:var(--surface);border-radius:var(--radius-sm);border:2px solid var(--color-effect)}.tool-btn{padding:6px 14px;font-size:12px;font-weight:600;border-radius:var(--radius-sm);border:2px solid var(--border);cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .15s ease;background:var(--surface);color:var(--ink)}.tool-btn.tool-btn--active-movement{background:var(--color-move-capture);color:var(--bg);border-color:var(--color-move-capture)}.tool-btn.tool-btn--active-effect{background:var(--color-effect);color:var(--bg);border-color:var(--color-effect)}.validation-panel{margin-top:12px;padding:8px 12px;background:var(--danger-bg);border-radius:var(--radius-sm);border:1px solid var(--error)}.validation-panel strong{font-size:.8rem}.validation-panel ul{margin:4px 0 0;padding-left:16px;font-size:.8rem}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px}.error-boundary-content{text-align:center;max-width:480px;padding:32px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.error-boundary-content h1{margin:0 0 16px;font-size:1.8rem;color:var(--error)}.error-boundary-message{color:var(--muted);line-height:1.6;margin-bottom:20px}.error-boundary-details{text-align:left;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.85rem;color:var(--error);overflow-x:auto;margin-bottom:20px}.error-boundary-actions{display:flex;gap:12px;justify-content:center}.site-footer{margin-top:auto;padding:40px 6vw 32px;border-top:1px solid var(--border)}.footer-inner{max-width:1100px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.footer-links{display:flex;gap:20px;font-size:.85rem}.footer-links a{text-decoration:none;color:var(--muted);transition:color .15s ease}.footer-links a:hover{color:var(--accent)}.footer-links a:focus-visible{outline:none;box-shadow:var(--ring);border-radius:2px}.footer-copy{font-size:.78rem;color:var(--muted);letter-spacing:.04em}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%}body{margin:0}
