:root{--bg:#f5f2eb;--paper:#fbf9f4;--ink:#3f372d;--muted:#716455;--line:#ded7ca;--gold:#b39465;--brown:#816345;--red:#ad4a37;--green:#657c5c;--serif:Georgia,'STSong','SimSun',serif;--sans:'Segoe UI','Microsoft YaHei',sans-serif;color-scheme:light;font-family:var(--sans);color:var(--ink);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 0 70%,#e5e7dd66,transparent 35%),var(--bg);min-height:100vh}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}a{color:inherit;text-decoration:none}button{cursor:pointer;border:1px solid var(--line);background:var(--paper);color:var(--ink);min-height:44px;border-radius:10px;padding:11px 17px;transition:background .18s,box-shadow .18s}button:disabled{cursor:default;opacity:.42}:focus-visible{outline:2px solid var(--brown);outline-offset:4px}button:hover:not(:disabled){background:#eee7da;box-shadow:0 3px 9px #4937190b}.primary{background:var(--brown);color:#fffaf0;border-color:var(--brown)}.primary:hover:not(:disabled){background:#705438}.text-button{border-color:transparent;background:transparent;padding-inline:10px}.danger{color:var(--red)}.quiet{color:var(--muted)}[hidden]{display:none!important}.topbar{height:84px;margin:0 auto;padding:0 42px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ded7ca9c;max-width:1800px;gap:20px}.brand{display:flex;gap:12px;align-items:center;white-space:nowrap}.brand-mark{width:37px;height:37px;background:#3d382f;border-radius:10px;position:relative;box-shadow:inset 0 0 0 1px #ffffff22}.brand-mark:before,.brand-mark:after{content:'';position:absolute;border-radius:50%;width:14px;height:14px;box-shadow:1px 2px 3px #0004}.brand-mark:before{left:6px;top:6px;background:#eae5d9}.brand-mark:after{right:5px;bottom:5px;background:#171915;border:1px solid #78766a}.brand-name{font-family:var(--serif);font-size:23px;letter-spacing:2px;font-weight:600}.brand-sub{font-size:10px;letter-spacing:3px;color:var(--muted);margin-top:3px}.nav{display:flex;align-items:center;gap:5px;font-size:13px}.nav a{padding:12px 18px;border-radius:8px;color:var(--muted)}.nav a.active{background:#e9e2d6;color:#644e35}.nav-divider{width:1px;height:18px;background:var(--line);margin:0 12px}.icon-button{width:44px;padding:0;font-size:20px;border:0;background:transparent}.eyebrow{font-size:11px;letter-spacing:3px;color:var(--muted);text-transform:uppercase}.page-kicker{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.mode-label{font-family:var(--serif);font-size:24px;letter-spacing:3px}.chip{display:inline-flex;gap:7px;align-items:center;font-size:12px;color:var(--muted);background:#eae5da;padding:6px 10px;border-radius:20px}.chip:before{content:'';width:5px;height:5px;background:var(--green);border-radius:50%}.game-layout{--board-size:min(calc(100dvh - 173px),calc(100vw - 440px),850px);max-width:1460px;margin:26px auto 0;display:grid;grid-template-columns:minmax(0,var(--board-size)) 294px;justify-content:center;gap:34px;padding:0 30px}.board-column{min-width:0}.board-wrap{position:relative;width:100%;aspect-ratio:1;background:#eedab6;border:1px solid #cbb694;border-radius:13px;padding:7px;box-shadow:0 12px 25px #50371b14,0 3px 5px #53391719,inset 0 1px 2px #fffc}.board-wrap:after{content:'';position:absolute;inset:4px;border:1px solid #ffffff4d;border-radius:10px;pointer-events:none}.board-canvas{width:100%;height:100%;display:block;border-radius:8px;touch-action:pan-y;outline-offset:6px}.board-caption{display:flex;justify-content:space-between;gap:15px;font-size:11px;color:var(--muted);margin:15px 3px;letter-spacing:1px}.game-side{padding-top:1px;display:flex;flex-direction:column;min-width:0}.side-heading{display:flex;justify-content:space-between;align-items:center;height:47px;margin-bottom:16px}.side-heading h1{font-family:var(--serif);font-size:24px;font-weight:400;margin:0;letter-spacing:4px}.players{display:grid;gap:12px}.player{padding:19px 18px;display:grid;grid-template-columns:48px 1fr auto;align-items:center;gap:13px;border:1px solid var(--line);background:#ffffff45;border-radius:14px;min-height:99px;position:relative}.player.active{border-color:#b9a17e;background:#fcf9f1;box-shadow:0 3px 10px #b2935b0c}.player.active:after{content:'';position:absolute;right:14px;top:13px;width:6px;height:6px;border-radius:50%;background:var(--green)}.stone-icon{width:44px;height:44px;border-radius:50%;background:radial-gradient(circle at 33% 24%,#595b55 0,#262824 44%,#10120f 85%);box-shadow:1px 3px 4px #0003,inset 0 0 0 1px #0005}.stone-icon.white{background:radial-gradient(circle at 33% 24%,#fffefa 0,#eeede6 55%,#c9c8c2 95%);box-shadow:1px 3px 4px #0002,inset 0 0 0 1px #c5c3b9}.player-name{font-family:var(--serif);font-size:20px;letter-spacing:2px;margin-bottom:6px}.player-role{color:var(--muted);font-size:11px}.timer{font-size:21px;font-variant-numeric:tabular-nums;font-weight:400;letter-spacing:-.5px}.status-block{margin:22px 0 19px;padding:0 2px;min-height:56px}.status-title{font-size:16px;font-weight:500;margin:0 0 7px}.status-detail{font-size:12px;line-height:1.7;color:var(--muted);margin:0}.side-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.side-actions .wide{grid-column:1/-1}.side-actions .primary{font-family:var(--serif);font-size:21px;letter-spacing:3px;min-height:52px}.side-bottom{margin-top:auto;padding-top:24px}.mini-meta{display:flex;justify-content:space-between;padding:13px 0;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}.verse{border-top:1px solid var(--line);padding-top:22px;font-family:var(--serif);color:var(--muted);font-size:14px;line-height:1.9;letter-spacing:4px}.verse span{display:block;font-family:var(--sans);font-size:9px;letter-spacing:2px;margin-top:8px}.footer{padding:20px 30px;color:var(--muted);font-size:10px;letter-spacing:2px;text-align:center}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#433b30;color:#fff9ec;padding:14px 22px;border-radius:12px;z-index:50;font-size:13px;box-shadow:0 5px 20px #0002;max-width:90vw;line-height:1.6}.modal{padding:0;border:1px solid #dcd3c3;border-radius:20px;background:var(--paper);color:var(--ink);box-shadow:0 24px 100px #31230d33;width:min(480px,calc(100vw - 24px));max-height:90dvh;overscroll-behavior:contain}.modal::backdrop{background:#30271b50;backdrop-filter:blur(4px)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:24px 26px 10px}.modal-head h2{font-family:var(--serif);font-weight:400;font-size:25px;letter-spacing:2px;margin:0}.modal-body{padding:12px 26px 26px}.modal p{font-size:14px;line-height:1.9}.form-row{margin:0 0 19px}.form-row label{font-size:13px;display:block;margin-bottom:9px}.form-row select,.form-row input[type=text]{width:100%;min-height:44px;border:1px solid var(--line);border-radius:9px;background:white;color:var(--ink);padding:10px 12px}.form-row input[type=range]{width:100%;accent-color:var(--brown)}.check-row{display:flex;gap:10px;align-items:center;font-size:14px;min-height:44px}.check-row input{accent-color:var(--brown);width:17px;height:17px}.modal-actions{display:flex;gap:10px;margin-top:20px}.modal-actions>*{flex:1}.notice{background:#ece6da;color:#756046;padding:12px 14px;border-radius:10px;font-size:12px;line-height:1.8}.replay-bar{display:flex;gap:8px;align-items:center;margin-top:15px}.replay-bar input{min-width:0;flex:1;accent-color:var(--brown)}.replay-bar button{padding:6px 12px}.replay-count{font-size:12px;white-space:nowrap}.confirm-move{position:absolute;bottom:15px;left:50%;transform:translateX(-50%);box-shadow:0 3px 18px #0002;z-index:4}.home{max-width:1370px;margin:auto;padding:68px 50px 28px}.hero{display:grid;grid-template-columns:.9fr 1.1fr;gap:70px;align-items:center}.hero-copy h1{font-family:var(--serif);font-weight:400;font-size:clamp(40px,4.5vw,68px);line-height:1.35;letter-spacing:7px;margin:23px 0}.hero-copy h1 span{display:block}.hero-copy p{font-size:15px;line-height:2.1;letter-spacing:1px;color:var(--muted);margin:0 0 35px}.hero-actions{display:flex;gap:12px}.entry{padding:15px 23px;min-height:54px;border:1px solid var(--line);border-radius:11px;display:flex;align-items:center;justify-content:space-between;gap:27px;font-size:15px;background:var(--paper);transition:transform .2s}.entry.primary{background:var(--brown);border-color:var(--brown)}.entry:hover{transform:translateY(-2px);box-shadow:0 6px 18px #4c391319}.hero-art{position:relative;padding:0 12px 0 0}.hero-art .board-wrap{max-width:600px;box-shadow:0 25px 50px #4b351220,0 4px 8px #664c2c25}.seal{position:absolute;right:0;bottom:28px;background:#a04e3b;color:#fff7e9;font-family:var(--serif);font-size:19px;padding:12px 10px;writing-mode:vertical-rl;letter-spacing:5px;border-radius:4px;box-shadow:0 3px 5px #0001}.home-notes{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;border-top:1px solid var(--line);margin-top:65px;padding-top:28px}.home-note{display:grid;grid-template-columns:28px 1fr;gap:15px}.note-number{font-size:10px;color:var(--muted);letter-spacing:2px;padding-top:7px}.home-note h2{font-size:15px;letter-spacing:2px;font-weight:400;margin:0 0 8px}.home-note p{font-size:12px;color:var(--muted);line-height:1.8;margin:0}.lobby{max-width:1190px;margin:40px auto;padding:0 30px}.lobby-title{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:25px}.lobby-title h1{font:32px var(--serif);letter-spacing:4px;margin:10px 0}.lobby-grid{display:grid;grid-template-columns:1fr 320px;gap:24px}.panel{border:1px solid var(--line);background:#ffffff4a;border-radius:17px;padding:24px}.panel h2{font-size:16px;font-weight:500;margin:0 0 20px;letter-spacing:2px}.room-list{display:grid;gap:12px}.room-item{padding:15px 17px;border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;justify-content:space-between;gap:12px}.room-item strong{font-size:14px}.room-item small{display:block;color:var(--muted);font-size:12px;line-height:1.8;margin-top:5px}.empty{min-height:210px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;color:var(--muted);font-size:13px;line-height:1.9}.empty-symbol{font-family:var(--serif);font-size:40px;color:#9c8d74;margin-bottom:10px}.stack{display:grid;gap:10px}.record-list{display:grid;gap:10px;max-height:420px;overflow:auto}.record-row{display:flex;justify-content:space-between;gap:10px;align-items:center;border-bottom:1px solid var(--line);padding:12px 0;font-size:13px}.badge{font-size:11px;padding:5px 8px;border-radius:6px;background:#e8e2d5;color:#776449}.connection-error{border:1px solid #caa891;background:#f6e9df;padding:15px;border-radius:10px;color:#87503b;font-size:13px;line-height:1.8}.immersion .topbar,.immersion .footer{display:none}.immersion .game-layout{--board-size:min(calc(100dvh - 95px),calc(100vw - 400px),1000px);margin-top:16px}.reduce-motion *{animation:none!important;transition:none!important}
@media(min-width:1600px){.game-layout{gap:46px;grid-template-columns:minmax(0,var(--board-size)) 320px}.player{min-height:114px}.status-block{margin-top:28px}.side-actions{gap:12px}.side-actions button{min-height:49px}.home{padding-top:90px}.hero{gap:110px}}
@media(max-width:1100px) and (min-height:650px){.topbar{padding:0 24px}.game-layout{--board-size:min(calc(100vw - 60px),720px);display:flex;flex-direction:column;align-items:center;padding:0 24px;gap:12px}.board-column{width:var(--board-size)}.game-side{width:var(--board-size);display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.side-heading{display:none}.players{grid-template-columns:1fr 1fr;grid-column:1/-1}.status-block{margin:14px 0}.side-actions{grid-row:2/4;grid-column:2}.side-bottom{padding-top:0;grid-column:1}.verse{display:none}.home{padding-top:45px}.hero{gap:30px}.hero-copy h1{font-size:44px;letter-spacing:4px}.hero-actions{flex-direction:column}.hero-copy p{margin-bottom:20px}.home-notes{gap:20px}.lobby-grid{grid-template-columns:1fr 275px}}
@media(max-width:600px){.topbar{height:69px;padding:0 16px;gap:8px}.brand-mark{width:30px;height:30px;border-radius:8px}.brand-mark:before,.brand-mark:after{width:12px;height:12px}.brand-mark:before{left:4px;top:4px}.brand-mark:after{right:4px;bottom:4px}.brand-name{font-size:18px;letter-spacing:1px}.brand-sub{display:none}.brand{gap:9px}.nav{gap:2px}.nav a{font-size:12px;padding:10px}.nav .home-link,.nav-divider{display:none}.game-layout{--board-size:calc(100vw - 24px);margin-top:16px;padding:0 12px;gap:7px}.page-kicker{margin-bottom:13px}.mode-label{font-size:20px;letter-spacing:2px}.chip{font-size:10px;padding:5px 9px}.board-wrap{padding:4px;border-radius:11px;box-shadow:0 8px 17px #50371b13,0 2px 3px #5339171a}.board-caption{margin:10px 2px 5px;font-size:9px;letter-spacing:0}.game-side{display:flex;gap:0}.players{display:grid;grid-template-columns:1fr 1fr;gap:8px}.player{min-height:76px;grid-template-columns:30px 1fr auto;padding:12px 10px;gap:8px;border-radius:11px}.stone-icon{width:28px;height:28px}.player-name{font-size:16px;letter-spacing:1px;margin-bottom:4px}.player-role{font-size:10px}.timer{font-size:16px}.player.active:after{right:9px;top:9px;width:4px;height:4px}.status-block{margin:14px 1px 11px;min-height:42px}.status-title{font-size:14px;margin-bottom:5px}.status-detail{font-size:11px}.side-actions{grid-template-columns:repeat(4,1fr);gap:7px}.side-actions .primary{grid-column:1/-1;min-height:46px;font-size:18px}.side-actions button{font-size:12px;padding:9px 6px}.side-actions .secondary-wide{grid-column:auto}.side-actions .mobile-secondary{display:none}.side-bottom{padding-top:15px}.mini-meta{padding:10px 0;font-size:10px}.verse{display:none}.footer{font-size:9px;letter-spacing:1px;padding:14px 12px}.home{padding:36px 22px 0}.hero{display:flex;flex-direction:column;gap:35px;align-items:stretch}.hero-copy h1{font-size:42px;line-height:1.3;margin:16px 0 20px;letter-spacing:5px}.hero-copy h1 span{display:inline}.hero-copy p{font-size:13px;line-height:1.9;margin-bottom:25px}.hero-actions{flex-direction:row}.entry{flex:1;gap:12px;padding:14px 15px;font-size:14px}.hero-art{padding:0 12px 0 6px}.seal{font-size:15px;right:0;bottom:20px}.home-notes{grid-template-columns:1fr;gap:23px;margin-top:34px;padding-top:24px}.eyebrow{font-size:10px;letter-spacing:2px}.home-note{gap:12px}.home-note h2{font-size:14px}.lobby{padding:0 14px;margin-top:24px}.lobby-title{align-items:start;gap:10px}.lobby-title h1{font-size:27px}.lobby-grid{display:flex;flex-direction:column-reverse;gap:15px}.panel{padding:20px 16px}.modal-head{padding:20px 20px 7px}.modal-body{padding:10px 20px 22px}.side-actions.online-actions .wide{grid-column:1/-1}.immersion .game-layout{--board-size:calc(100vw - 24px)}.room-item{padding:13px 12px}}
@media(max-height:650px) and (min-width:601px){.topbar{height:57px;padding:0 20px}.brand-name{font-size:18px}.brand-sub{display:none}.game-layout{--board-size:min(calc(100dvh - 105px),calc(100vw - 320px));margin-top:12px;gap:18px;padding:0 16px;grid-template-columns:var(--board-size) minmax(235px,285px)}.page-kicker{margin-bottom:8px}.mode-label{font-size:18px}.chip{padding:4px 7px;font-size:10px}.side-heading,.verse,.side-bottom,.board-caption,.footer{display:none}.players{grid-template-columns:1fr 1fr;gap:7px}.player{grid-template-columns:25px 1fr;min-height:68px;padding:9px 8px;gap:7px}.stone-icon{width:25px;height:25px}.player-name{font-size:16px;margin-bottom:3px}.player-role{font-size:9px}.timer{font-size:13px;grid-column:2;margin-top:-5px}.status-block{margin:10px 0;min-height:40px}.status-title{font-size:13px;margin-bottom:3px}.status-detail{font-size:10px}.side-actions{gap:6px}.side-actions button{min-height:44px;padding:7px 8px;font-size:12px}.side-actions .primary{min-height:44px;font-size:17px}.side-actions .mobile-secondary{display:none}.immersion .game-layout{--board-size:min(calc(100dvh - 45px),calc(100vw - 320px))}.home{padding-top:30px}}
.side-heading{height:29px;margin-bottom:18px}
.board-caption{margin:12px 3px 6px}
.game-layout + .footer{padding:8px 30px}
@media(min-width:1101px) and (max-height:900px){.game-layout{--board-size:min(calc(100dvh - 191px),calc(100vw - 440px),850px)}.game-side{height:calc(var(--board-size) + 47px)}.player{min-height:86px;padding:14px 18px}.status-block{margin:17px 0 14px;min-height:50px}.side-actions{gap:8px}.side-actions .primary{min-height:48px}.side-bottom{padding-top:14px}.verse{display:none}body[data-mode=single] .footer{display:none}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Display preferences: dark by default, with an explicit saved daylight mode. */
:root{--bg:#080808;--paper:#1a1917;--ink:#f1eade;--muted:#c0b6a6;--line:#443e35;--gold:#d1b184;--brown:#c5a170;--red:#f3a18d;--green:#9fbb8e;--surface:#141412;--surface-active:#252219;--hover:#302a21;--selected:#362d21;--selected-ink:#efcea0;--primary-ink:#18130c;--primary-hover:#d7b585;--chip-bg:#28241e;--notice-bg:#292319;--notice-ink:#e0c69f;--error-bg:#30211c;--error-ink:#f4bda5;color-scheme:dark}
:root[data-theme=light]{--bg:#f5f2eb;--paper:#fbf9f4;--ink:#3f372d;--muted:#716455;--line:#ded7ca;--gold:#b39465;--brown:#816345;--red:#ad4a37;--green:#657c5c;--surface:#ffffff80;--surface-active:#fcf9f1;--hover:#eee7da;--selected:#e9e2d6;--selected-ink:#644e35;--primary-ink:#fffaf0;--primary-hover:#705438;--chip-bg:#eae5da;--notice-bg:#ece6da;--notice-ink:#756046;--error-bg:#f6e9df;--error-ink:#87503b;color-scheme:light}
body{background:var(--bg)}
.topbar{height:56px;border-color:var(--line);max-width:none;padding:0 24px}
.brand-name{font-size:21px}.brand-sub{display:none!important}.brand-mark{width:32px;height:32px}
button:hover:not(:disabled){background:var(--hover)}
.primary,.entry.primary{background:var(--brown);color:var(--primary-ink)}
.primary:hover:not(:disabled){background:var(--primary-hover)}
.nav a.active{background:var(--selected);color:var(--selected-ink)}
.theme-toggle{font-size:12px;white-space:nowrap;padding:8px 12px;min-height:44px;margin-left:8px}
.chip,.badge{background:var(--chip-bg);color:var(--muted)}
.player,.panel{background:var(--surface)}
.player.active{background:var(--surface-active);border-color:var(--brown)}
.notice{background:var(--notice-bg);color:var(--notice-ink)}
.connection-error{background:var(--error-bg);color:var(--error-ink);border-color:var(--line)}
.form-row select,.form-row input[type=text]{background:var(--paper);color:var(--ink)}
.modal{border-color:var(--line);box-shadow:0 24px 100px #0009}.modal::backdrop{background:#0009}
.toast{background:var(--paper);color:var(--ink);border:1px solid var(--line)}
.board-wrap{padding:5px;box-shadow:0 12px 32px #0003,0 2px 5px #35281726,inset 0 1px 2px #fffc}
.board-canvas{height:auto;aspect-ratio:1}
.game-layout{--board-size:min(calc(100dvh - 120px),calc(100vw - 360px));max-width:none;margin:8px auto 0;padding:0 20px;gap:24px;grid-template-columns:var(--board-size) 294px}
.board-column{width:100%}.game-side{height:auto;min-width:0}
.page-kicker{min-height:44px;margin-bottom:6px;gap:10px}
.mode-label{font-size:21px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.board-tools{display:flex;align-items:center;gap:10px;flex-shrink:0}
.fullscreen-toggle{min-height:44px;padding:8px 13px;white-space:nowrap;font-size:13px;border-color:var(--brown)}
.board-caption{margin:8px 2px;font-size:11px;letter-spacing:0}
.side-heading{height:44px;margin-bottom:6px}.side-bottom{padding-top:16px}
body[data-mode] .footer{display:none}
.immersion .game-layout{--board-size:min(calc(100dvh - 66px),calc(100vw - 344px));margin-top:8px;padding:0 12px;gap:24px}
.immersion .board-caption{display:none}
.home{max-width:1680px;padding:32px 40px 24px}
.hero{grid-template-columns:.72fr 1.28fr;gap:48px}
.hero-art{padding-right:12px}.hero-art .board-wrap{max-width:min(100%,calc(100dvh - 120px));margin-inline:auto}
.home-notes{margin-top:36px}.hero-copy h1{font-size:clamp(40px,4.5vw,68px)}
@media(min-width:1600px){.game-layout{grid-template-columns:var(--board-size) 310px;--board-size:min(calc(100dvh - 120px),calc(100vw - 380px));gap:30px}.immersion .game-layout{--board-size:min(calc(100dvh - 66px),calc(100vw - 368px));gap:30px}.hero{gap:70px}}
@media(max-width:1100px) and (min-height:651px){
  .game-layout{--board-size:min(calc(100vw - 16px),calc(100dvh - 120px));padding:0 8px;gap:10px}
  .board-column,.game-side{width:var(--board-size)}
  .game-side{height:auto}.side-heading{display:none}
  .immersion .game-layout{--board-size:min(calc(100vw - 16px),calc(100dvh - 66px));padding:0 8px}
  .home{padding:28px 24px}.hero{gap:24px;grid-template-columns:.75fr 1.25fr}.hero-copy h1{font-size:42px}
}
@media(max-width:600px){
  .topbar{height:auto;min-height:60px;padding:8px 12px;flex-wrap:wrap;gap:5px 10px}
  .brand-name{font-size:18px}.brand-mark{width:28px;height:28px}
  .nav{width:100%;justify-content:space-between;gap:4px}.nav a{padding:10px 12px}.nav .theme-toggle{margin-left:auto;padding:8px 10px}
  .game-layout,.immersion .game-layout{--board-size:calc(100vw - 12px);padding:0 6px;margin-top:6px;display:flex;flex-direction:column;align-items:center;gap:8px}
  .board-column,.game-side{width:var(--board-size)}
  .page-kicker{margin-bottom:5px;padding:0 4px;gap:6px}.mode-label{font-size:19px}
  .board-tools{gap:6px}.board-tools .chip{display:none}.fullscreen-toggle{padding:8px 12px;font-size:12px}
  .board-wrap{padding:2px;border-radius:10px}.board-canvas{border-radius:7px}
  .board-caption{font-size:10px;margin:7px 3px}.game-side{padding:0 4px}
  .home{padding:24px 12px 0}.hero-copy{padding:0 8px}.hero{gap:26px}
  .hero-art{padding:0 4px}.hero-copy h1{font-size:42px}.home-notes{padding:24px 8px 0}
  .immersion .game-layout{margin-top:4px}
}
@media(max-height:650px) and (min-width:601px){
  .topbar{height:48px;padding:0 16px}.topbar .brand-name{font-size:18px}.nav a{padding:9px 12px}
  .game-layout{--board-size:min(calc(100dvh - 56px),calc(100vw - 308px));margin-top:4px;padding:0 8px;gap:16px;display:grid;grid-template-columns:var(--board-size) minmax(235px,276px)}
  .board-column{position:relative;width:100%}.page-kicker{position:absolute;left:calc(100% + 16px);right:auto;top:0;z-index:3;min-height:44px;margin:0;padding:0;pointer-events:none}
  .page-kicker .mode-label,.page-kicker .chip{display:none}.fullscreen-toggle{pointer-events:auto;background:var(--paper);padding:8px 10px}
  .board-caption{display:none}.side-heading{display:none}.game-side{height:auto;padding-top:50px}
  .immersion .game-layout{--board-size:min(calc(100dvh - 12px),calc(100vw - 308px));margin-top:6px;padding:0 8px;gap:16px}
}

/* A relaxed rounded display face; small text and clocks keep a clear UI face. */
:root{--serif:'YouYuan','幼圆','Yuanti SC','Hiragino Maru Gothic ProN','Microsoft YaHei UI','PingFang SC',sans-serif;--sans:'Microsoft YaHei UI','Microsoft YaHei','PingFang SC','Segoe UI',sans-serif}
.brand-name,.mode-label,.player-name,.side-heading h1,.modal-head h2,.lobby-title h1{font-weight:400;letter-spacing:.04em}
.side-actions button,.fullscreen-toggle,.theme-toggle,.hero-actions,.modal-actions button{font-family:var(--serif)}
.side-actions .primary{letter-spacing:.06em}
.hero-copy h1{letter-spacing:.06em;line-height:1.3}
.timer{font-family:var(--sans);font-weight:500}

/* On desktop, tools share the side panel so the default board gains 60px. */
@media(min-width:1101px) and (min-height:651px){
  body[data-mode] .topbar{height:48px}
  .game-layout{--side-width:294px;--layout-gap:24px;--board-size:min(calc(100dvh - 60px),calc(100vw - var(--side-width) - var(--layout-gap) - 40px));margin-top:6px;grid-template-columns:var(--board-size) var(--side-width);gap:var(--layout-gap)}
  .board-column{position:relative}
  .page-kicker{position:absolute;left:calc(100% + var(--layout-gap));top:0;width:calc(var(--side-width) - 54px);margin:0;min-height:44px;gap:8px;z-index:2}
  .page-kicker .chip{display:none}
  .mode-label{font-size:20px;letter-spacing:.02em}
  .board-tools{gap:0}
  .side-heading{justify-content:flex-end}
  .side-heading h1{display:none}
  .immersion .game-layout{--board-size:min(calc(100dvh - 16px),calc(100vw - var(--side-width) - var(--layout-gap) - 24px));margin-top:8px}
}
@media(min-width:1600px) and (min-height:651px){
  .game-layout{--side-width:310px;--layout-gap:30px}
}

/* Quiet controls: the established board geometry and material stay untouched. */
:root{--serif:'YouYuan','幼圆','Yuanti SC','Hiragino Maru Gothic ProN','PingFang SC','Microsoft YaHei UI','Noto Sans CJK SC','Noto Sans SC',system-ui,sans-serif;--sans:'Microsoft YaHei UI','PingFang SC','Noto Sans CJK SC','Noto Sans SC','Segoe UI',system-ui,sans-serif;--control-radius:10px;--focus-ring:var(--brown)}
.ui-icon{width:18px;height:18px;display:block;flex:0 0 auto;pointer-events:none}
.brand-mark{background:#302d27;box-shadow:inset 0 0 0 1px #e9dcc11f,inset 0 1px 0 #fffae514}
.brand-mark:before{background:radial-gradient(circle at 34% 29%,#faf8f0,#e6e5dc 68%,#c8c9be);box-shadow:0 1px 3px #0003}
.brand-mark:after{background:radial-gradient(circle at 34% 29%,#474d43,#20271f 66%,#121710);border-color:#888570;box-shadow:0 1px 3px #0003}
.has-icon,.icon-button{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.button-label{min-width:0;line-height:1.4}
button,.entry{border-radius:var(--control-radius);transition:background-color 140ms,border-color 140ms,color 140ms,box-shadow 140ms,translate 100ms}
button:hover:not(:disabled),.entry:hover{box-shadow:none}
button:hover:not(:disabled):not(.primary):not(.icon-button):not(.text-button){border-color:var(--brown);color:var(--ink)}
button:active:not(:disabled),.entry:active{translate:0 1px}
button:disabled{opacity:1;color:var(--muted);background:var(--surface);border-color:var(--line);cursor:not-allowed;box-shadow:none}
button:disabled .button-label,button:disabled .ui-icon{opacity:.5}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}
.primary,.entry.primary{border-color:var(--brown);box-shadow:inset 0 1px 0 #ffffff18}
.primary:hover:not(:disabled),.entry.primary:hover{border-color:var(--primary-hover);box-shadow:inset 0 1px 0 #ffffff20}
.icon-button,.text-button{border:1px solid transparent;background:transparent;color:var(--muted)}
.icon-button:hover:not(:disabled),.text-button:hover:not(:disabled){color:var(--ink);border-color:var(--line)}
.icon-button .ui-icon{width:20px;height:20px}
.nav a{position:relative;border-radius:5px;transition:color 140ms,background-color 140ms}
.nav a.active{background:transparent;color:var(--selected-ink)}
.nav a.active:after{content:'';position:absolute;bottom:4px;left:18px;right:18px;height:2px;border-radius:2px;background:var(--brown)}
.nav a:hover{color:var(--ink);background:var(--surface)}
.theme-toggle{border-color:transparent;background:transparent;color:var(--muted)}
.theme-toggle:hover:not(:disabled){color:var(--ink);border-color:var(--line)}
.fullscreen-toggle{font-family:var(--sans);gap:6px;border-color:var(--line);background:var(--surface);color:var(--muted);padding-inline:10px}
.fullscreen-toggle:hover:not(:disabled){color:var(--ink);border-color:var(--brown)}
.players{gap:12px}
.player{border-radius:12px;gap:12px;box-shadow:inset 0 1px 0 #ffffff03;transition:border-color 160ms,background-color 160ms}
.player>div:not(.stone-icon){min-width:0}
.player.active{border-color:var(--brown);box-shadow:inset 0 0 0 1px #b89a6612}
.player.active:after{width:5px;height:5px;background:var(--brown);box-shadow:none}
.stone-icon{background:radial-gradient(circle at 34% 29%,#484e45 0%,#2c342c 34%,#182019 76%,#0e140f 100%);box-shadow:1px 3px 5px #2e271a45,inset 0 0 0 1px #0b130dcc}
.stone-icon.white{background:radial-gradient(circle at 34% 29%,#fffdf6 0%,#f3f1e8 42%,#deded4 82%,#c7cac0 100%);box-shadow:1px 3px 5px #2e271a45,inset 0 0 0 1px #b8bbaf88}
.player-name{font-size:20px;line-height:1.35;margin-bottom:5px;letter-spacing:.04em}
.player-role{font-size:11px;line-height:1.6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.timer{font-size:19px;line-height:1.4;font-weight:400;font-variant-numeric:tabular-nums;font-feature-settings:'tnum';letter-spacing:0}
.status-title{font-family:var(--serif);font-size:17px;font-weight:400;letter-spacing:.02em}
.status-detail{line-height:1.8}
.status-block[data-result=win] .status-title{color:var(--selected-ink)}
.status-block[data-result=win]{border-left:2px solid var(--brown);padding-left:12px}
.status-block.result-reveal{animation:result-reveal 160ms ease-out var(--result-delay,700ms) both}
@keyframes result-reveal{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}
.action-status{display:flex;order:-1;align-items:center;gap:9px;min-height:52px;padding:10px 2px;color:var(--muted);border-block:1px solid var(--line);font-size:13px;line-height:1.6;cursor:default}
.action-status-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex:none}
.action-status[data-tone=turn]{color:var(--selected-ink)}
.action-status[data-tone=disconnected]{color:var(--error-ink)}
.action-status-label{min-width:0;overflow-wrap:anywhere}
.side-actions button{font-size:14px;letter-spacing:.02em}
.side-actions .primary{font-size:20px;letter-spacing:.05em}
.side-actions .primary .ui-icon{width:20px;height:20px}
.side-actions .mobile-secondary{background:var(--paper)}
.side-actions .mobile-secondary:hover:not(:disabled){background:var(--hover)}
.modal{border-radius:16px}.modal-head h2{font-size:23px;letter-spacing:.03em}
.modal-head{padding-bottom:8px}.modal-body{padding-top:12px}
.settings-section{margin:0 0 18px;padding:0;border:0}
.settings-section-title{font-size:12px;font-weight:400;letter-spacing:.04em;color:var(--muted);margin:0 0 10px}
.settings-section+.settings-section{padding-top:16px;border-top:1px solid var(--line)}
.toggle-row{position:relative;display:flex;align-items:center;gap:12px;min-height:44px;cursor:pointer;font-size:13px}
.toggle-row .toggle-input{position:absolute;left:0;top:50%;transform:translateY(-50%);width:34px;height:20px;opacity:0;margin:0;z-index:1;cursor:pointer}
.toggle-track{width:34px;height:20px;flex:none;border:1px solid var(--line);border-radius:12px;background:var(--surface);position:relative;transition:background-color 140ms,border-color 140ms}
.toggle-track:after{content:'';position:absolute;left:3px;top:3px;width:12px;height:12px;border-radius:50%;background:var(--muted);transition:transform 140ms,background-color 140ms}
.toggle-input:checked+.toggle-track{background:var(--brown);border-color:var(--brown)}
.toggle-input:checked+.toggle-track:after{transform:translateX(14px);background:var(--primary-ink)}
.toggle-input:focus-visible+.toggle-track{outline:2px solid var(--focus-ring);outline-offset:4px}
.toggle-label{line-height:1.5}.toggle-row:hover .toggle-label{color:var(--selected-ink)}
.modal .settings-help{font-size:12px;line-height:1.7;color:var(--muted);margin:8px 0 0}
.modal-actions>button{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.settings-dialog .modal-body{display:grid;grid-template-columns:1fr 1fr;column-gap:16px}
.settings-dialog .settings-section,.settings-dialog .notice,.settings-dialog .modal-actions{grid-column:1/-1}
.settings-dialog .settings-section{display:grid;grid-template-columns:1fr 1fr;column-gap:16px;align-items:center;margin-bottom:12px}
.settings-dialog .settings-section .form-row{margin-bottom:0}
.settings-dialog .settings-help{grid-column:1/-1}
.settings-dialog .toggle-row{gap:9px;font-size:12px}
.settings-dialog .form-row{min-width:0}
@media(max-width:440px){.settings-dialog .modal-body{grid-template-columns:1fr}.settings-dialog .settings-section{column-gap:10px}.settings-dialog .toggle-row{gap:8px}}
.form-row select,.form-row input[type=text]{font-size:13px}.form-row input[type=range]{min-height:24px}
.replay-count,.mini-meta{font-variant-numeric:tabular-nums}.replay-bar .ui-icon{width:16px;height:16px}
.entry:hover{transform:none}.hero-actions .ui-icon{width:19px;height:19px}
@media(min-width:1101px) and (min-height:651px){.player{padding-inline:17px}}
@media(min-width:1101px) and (max-height:900px){.action-status{min-height:48px}}
@media(max-width:600px){
  .nav a.active:after{left:12px;right:12px}.nav a{font-size:12px}
  .theme-toggle{gap:5px}.theme-toggle .ui-icon{width:16px;height:16px}
  .players{gap:8px}.player{gap:7px;padding:12px 9px;grid-template-columns:28px minmax(0,1fr) auto}
  .player-name{font-size:17px;margin-bottom:3px}.player-role{font-size:10px}.timer{font-size:14px}
  .status-title{font-size:15px}.side-actions button{font-size:12px;gap:5px}.side-actions button .ui-icon{width:16px;height:16px}
  .side-actions .primary{font-size:18px}.fullscreen-toggle{font-size:12px}
  .action-status{min-height:46px;font-size:12px;padding-block:8px}
}
@media(max-height:650px) and (min-width:601px){
  .players{gap:7px}.player{padding:9px 8px;gap:7px}.player-name{font-size:16px;margin-bottom:3px}.player-role{font-size:9px}.timer{font-size:13px}
  .status-title{font-size:14px}.side-actions button{font-size:12px;gap:6px}.side-actions .primary{font-size:17px}
  .action-status{min-height:44px;font-size:12px;padding-block:8px}
}
