:root{color-scheme:dark;--bg:#171b19;--panel:#222824;--line:#394139;--muted:#a7b1a6;--ink:#f0f3e9;--accent:#c4e68a;--dark-square:#769451;--light-square:#eeefd3;--serif:Georgia,'Times New Roman',serif;font-family:Inter,'Segoe UI',Arial,sans-serif;font-size:16px;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:4px}button{border:0}a{color:inherit;text-decoration:none}[hidden]{display:none!important}.topbar{height:86px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 4.5vw}.brand{display:flex;align-items:center;gap:12px;font-weight:750;letter-spacing:2px;font-size:18px}.brand-icon{background:var(--accent);color:var(--bg);font-family:'Segoe UI Symbol',serif;font-size:32px;line-height:1;border-radius:10px;padding:5px 8px}.brand-light{color:var(--muted);font-weight:450}.top-right{display:flex;align-items:center;gap:22px}.connection{font-size:12px;letter-spacing:1.5px;color:var(--muted)}.icon-button{width:30px;height:30px;border:1px solid #66715f;color:var(--ink);background:transparent;border-radius:50%;font-weight:600}main{max-width:1510px;margin:auto;padding:48px 4.5vw 56px}.setup-layout{display:grid;grid-template-columns:1.15fr 1fr;gap:8vw;align-items:start;max-width:1180px;margin:auto}.eyebrow{font-size:12px;font-weight:650;letter-spacing:2px;color:var(--accent)}h1,h2,p{margin-top:0}.intro h1{font-family:var(--serif);font-weight:400;font-size:clamp(36px,4.2vw,59px);letter-spacing:-2px;line-height:1.08;margin:20px 0}.intro>p{color:var(--muted);line-height:1.6;max-width:420px}.preview-board{display:grid;grid-template-columns:repeat(8,1fr);width:100%;max-width:440px;aspect-ratio:1;border:8px solid #303830;border-radius:5px;margin-top:30px;overflow:hidden;box-shadow:0 20px 50px #0003}.preview-board .square{cursor:default}.preview-caption{display:flex;flex-wrap:wrap;gap:10px 18px;color:var(--muted);font-size:10px;letter-spacing:1px;margin-top:17px}.setup-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:30px}.card-heading h2{font:400 36px var(--serif);margin:8px 0 23px}.tabs{display:flex;border-bottom:1px solid var(--line);margin-bottom:24px}.tab{background:none;color:var(--muted);padding:0 20px 14px;font-size:15px;border-bottom:2px solid transparent}.tab:first-child{padding-left:0}.tab.active{border-color:var(--accent);color:var(--ink)}label{display:block;font-size:14px;font-weight:600;margin:17px 0 8px}input,select,textarea{width:100%;background:#1a201c;border:1px solid #4b5749;color:var(--ink);padding:11px 12px;border-radius:7px;min-height:44px}textarea{resize:vertical;line-height:1.65;font-size:15px}select{padding-right:26px}.field-note{font-size:13px;color:var(--muted);line-height:1.5;margin:9px 0 14px}.roster-inputs{display:grid;grid-template-columns:1fr 1fr;gap:14px}.roster-inputs label{margin-top:5px}.primary,.secondary{min-height:43px;border-radius:7px;padding:10px 16px;font-size:14px;font-weight:650}.primary{background:var(--accent);color:#1d2814}.primary:hover{background:#d4efa8}.secondary{background:transparent;color:var(--ink);border:1px solid #596552}.secondary:hover{background:#ffffff0a}.full{width:100%;margin-top:12px}.primary.full{display:flex;justify-content:space-between;align-items:center;font-size:15px}.primary.full span{font-size:23px;line-height:1}.setup-footer{border-top:1px solid var(--line);padding-top:19px;margin:24px 0 0;font-size:12px;line-height:1.5;color:var(--muted)}.code-input{text-transform:uppercase;letter-spacing:5px}.game-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:26px}.game-heading h1{font:400 36px var(--serif);margin:8px 0 0}.room-actions{display:flex;gap:14px;align-items:center}.text-button{background:transparent;color:var(--muted);padding:7px 4px;font-size:14px;white-space:nowrap}.text-button:hover{color:var(--ink)}.game-layout{display:grid;grid-template-columns:minmax(175px,1fr) minmax(320px,560px) minmax(175px,1fr);gap:24px;align-items:start}.team-panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-top:0}.team-top{padding:20px 18px;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center}.team-piece{font-size:34px;line-height:1;font-family:'Segoe UI Symbol',serif}.team-top h2{font-size:17px;margin:0 0 4px}.team-top p{font-size:12px;margin:0;color:var(--muted)}.team-order{padding:11px 17px 2px;color:var(--muted);letter-spacing:1.2px;font-size:10px}.player-row{position:relative;padding:15px 13px;display:flex;gap:10px;border-top:1px solid #39413970;align-items:flex-start}.player-row.active{background:#c4e68a12;box-shadow:inset 3px 0 var(--accent)}.avatar{flex-shrink:0;display:grid;place-items:center;background:#3b4439;color:var(--ink);border-radius:50%;width:32px;height:32px;font-size:12px;font-weight:650}.player-row.active .avatar{background:var(--accent);color:#25301c}.player-content{min-width:0;flex:1}.player-name{font-weight:600;font-size:14px;overflow-wrap:anywhere}.player-move{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.4}.player-status{font-size:10px;letter-spacing:.8px;margin-top:7px;color:var(--accent)}.team-footer{padding:14px 16px;color:var(--muted);font-size:12px;border-top:1px solid var(--line);line-height:1.5}.empty-team{padding:24px 17px;color:var(--muted);font-size:14px;line-height:1.6}.turn-banner{min-height:73px;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--accent);color:#24301a;border-radius:10px 10px 0 0}.turn-banner .turn-small{font-size:11px;letter-spacing:1.1px;text-transform:uppercase;margin-bottom:5px}.turn-banner strong{font-size:20px;font-weight:650;overflow-wrap:anywhere}.clock{font-variant-numeric:tabular-nums;font-size:26px;font-weight:500;flex-shrink:0}.clock.urgent{color:#993213}.board-frame{background:#3c4736;padding:9px;border-radius:0 0 7px 7px;box-shadow:0 16px 40px #0003}.board{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));aspect-ratio:1;width:100%}.square{position:relative;display:flex;justify-content:center;align-items:center;background:var(--light-square);color:#30342c;width:100%;aspect-ratio:1;padding:0;border-radius:0;line-height:1;overflow:hidden}.square.dark{background:var(--dark-square)}.piece{font-family:'Segoe UI Symbol','DejaVu Sans',serif;font-size:clamp(32px,4.7vw,59px);line-height:1;pointer-events:none;position:relative;z-index:1}.piece.white{color:#fffef1;-webkit-text-stroke:1.2px #30362c;filter:drop-shadow(0 2px 1px #0004)}.piece.black{color:#2e352c;filter:drop-shadow(0 1px 0 #fff5)}.preview-board .piece{font-size:clamp(30px,4vw,47px)}.square.last{background:#dbdf89}.square.dark.last{background:#a6b959}.square.selected{background:#f0d876;box-shadow:inset 0 0 0 4px #b08e20}.square.legal:after{content:'';height:24%;width:24%;border-radius:50%;background:#223d3b40;position:absolute}.square.legal.occupied:after{width:88%;height:88%;background:none;border:5px solid #263c4260}.square.check{background:#d98369}.square:hover{filter:brightness(1.05)}.square:focus-visible{outline:4px solid #183657;outline-offset:-4px;z-index:3}.coord{position:absolute;font-size:11px;font-weight:650;z-index:2;color:#4a613b;pointer-events:none}.dark .coord{color:#f1f1d9}.rank{left:4px;top:4px}.file{right:4px;bottom:3px}.board-toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-top:12px}.board-toolbar>span{font-size:12px;line-height:1.5;color:var(--muted)}.host-controls{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.host-controls .primary,.host-controls .secondary{flex:1}.event-note{font-size:12px;line-height:1.5;color:var(--muted);margin-top:12px}.history-panel{margin-top:30px;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}.history-heading{padding:19px 22px;border-bottom:1px solid var(--line);display:flex;gap:10px;justify-content:space-between;align-items:center}.history-heading h2{font-size:16px;margin:0}.history-heading h2 span{font-weight:400;color:var(--muted);font-size:12px;margin-left:12px}.history-heading>span{font-size:12px;color:var(--muted)}.move-history{display:flex;overflow:auto;gap:0;max-height:215px}.history-empty{padding:25px 22px;color:var(--muted);font-size:14px}.move-entry{min-width:156px;padding:18px 20px;border-right:1px solid var(--line)}.move-entry small{color:var(--muted);font-size:11px}.move-entry strong{display:block;font-size:23px;margin:8px 0}.move-entry p{font-size:13px;overflow-wrap:anywhere;margin:0 0 4px}.move-entry .move-route{font-size:12px;color:var(--muted)}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:15px 24px;max-width:90%;background:#f0f3e9;color:#20271c;box-shadow:0 8px 35px #0006;border-radius:10px;font-size:14px;z-index:10}dialog{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:16px;max-width:560px;width:90%;padding:35px;box-shadow:0 30px 100px #0008}dialog::backdrop{background:#071009b8;backdrop-filter:blur(4px)}dialog h2{font:400 32px var(--serif);margin-top:15px}dialog p,dialog li{line-height:1.65;font-size:15px;color:#c3cdc0}dialog li{margin-bottom:12px}dialog ol{padding-left:20px}.dialog-close{position:absolute;right:16px;top:12px;background:none;color:var(--muted);font-size:28px}.promotion-options{display:flex;gap:10px}.promotion-options button{flex:1;font:44px 'Segoe UI Symbol',serif;background:var(--light-square);color:#30362c;border-radius:8px;padding:8px}.promotion-options span{display:block;font:12px 'Segoe UI',sans-serif;margin-top:6px}
@media(min-width:1500px){main{padding-top:40px}.setup-layout{gap:100px}}@media(max-width:1100px){main{padding:30px 24px}.topbar{padding:0 24px}.game-layout{gap:14px;grid-template-columns:minmax(155px,1fr) minmax(300px,490px) minmax(155px,1fr)}.player-row{padding:13px 10px;gap:7px}.avatar{width:26px;height:26px}.team-top{padding:17px 12px}.team-top h2{font-size:15px}.setup-layout{gap:35px}.setup-card{padding:24px}}@media(max-width:820px){.game-layout{grid-template-columns:1fr 1fr;align-items:start}.board-column{grid-column:1/-1;grid-row:1;max-width:560px;width:100%;justify-self:center}.team-panel{grid-row:2}.piece{font-size:clamp(32px,8vw,59px)}.setup-layout{grid-template-columns:1fr 1fr;gap:24px}.intro h1{font-size:40px}.setup-card{padding:20px}.preview-caption{line-height:1.8}.roster-inputs{gap:8px}.history-heading>span{display:none}}@media(max-width:620px){.topbar{height:70px;padding:0 18px}.brand{font-size:14px;gap:8px;letter-spacing:1.2px}.brand-icon{font-size:27px}.top-right{gap:12px}.connection{font-size:10px;letter-spacing:.5px}main{padding:26px 16px 40px}.setup-layout{display:flex;flex-direction:column;gap:22px}.intro{width:100%}.intro h1{font-size:40px;margin:13px 0}.intro>p{font-size:14px;margin:0}.preview-board,.preview-caption{display:none}.setup-card{width:100%;padding:22px}.card-heading h2{font-size:29px;margin-bottom:18px}.game-heading{align-items:flex-start}.game-heading h1{font-size:26px}.room-actions{flex-direction:column;gap:3px;align-items:flex-end}.room-actions .secondary{font-size:12px;padding:8px 10px;min-height:36px}.game-layout{gap:18px 10px}.team-top{padding:14px 10px;gap:7px}.team-piece{font-size:27px}.avatar{display:none}.player-row{padding:12px}.player-name{font-size:14px}.board-frame{padding:6px}.piece{font-size:clamp(29px,9.4vw,57px)}.turn-banner{min-height:67px;padding:12px 14px}.turn-banner strong{font-size:18px}.clock{font-size:23px}.coord{font-size:10px}.board-toolbar{gap:8px}.board-toolbar>span{font-size:12px}.host-controls .secondary{font-size:12px;padding:8px}.history-heading{padding:17px}.move-entry{min-width:135px;padding:16px}.eyebrow{font-size:10px;letter-spacing:1.4px}.history-panel{margin-top:22px}dialog{padding:27px}.promotion-options{gap:6px}.promotion-options button{font-size:35px}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s,color .15s}.player-row.active{animation:highlight .3s ease-out}@keyframes highlight{from{background:#c4e68a35}to{background:#c4e68a12}}}
