:root{font-family:"Microsoft YaHei","PingFang SC",sans-serif;color:#403c32;background:#ede9df;font-synthesis:none;--paper:#fffaf0;--line:#d6cbb6;--ink:#403c32;--accent:#806329}
*{box-sizing:border-box}body{margin:0}main{width:min(1280px,calc(100% - 32px));margin:24px auto}button,select,input{font:inherit}button,select{min-height:44px}button{border:1px solid #9d8c6d;border-radius:8px;background:#fffaf0;color:var(--ink);padding:8px 22px;cursor:pointer}button:hover{background:#f2e6d0}button:focus-visible,summary:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #967126;outline-offset:4px}button:disabled{opacity:.5;cursor:wait}.game{overflow:hidden;background:var(--paper);border:1px solid var(--line);border-radius:14px;box-shadow:0 6px 24px #4638250b}.toolbar{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;gap:24px;border-bottom:1px solid var(--line)}h1{font-size:28px;letter-spacing:3px;margin:0;font-weight:600}.metrics{display:flex;gap:40px;font-size:20px}.metrics strong{font-size:28px;font-weight:600;font-variant-numeric:tabular-nums;margin-left:10px}.field{position:relative;aspect-ratio:1280/728;overflow:hidden;background:#f8eedb}canvas{width:100%;height:100%;display:block}.feedback-strip{position:absolute;left:15%;right:15%;top:16px;min-height:30px;text-align:center;font-size:20px;line-height:1.5;color:#594726;pointer-events:none;text-shadow:0 1px 3px #fff}.controls{position:absolute;inset:77% 18% 0;display:grid;grid-template-columns:1fr 1fr;gap:7%;touch-action:none}.controls button{position:relative;padding:0;border:0;border-radius:24px;background:transparent;user-select:none;-webkit-user-select:none;touch-action:none;-webkit-touch-callout:none;min-height:0}.controls button:hover{background:#a88a3a08}.controls button.is-pressed{box-shadow:inset 0 0 0 3px #ab874145;background:#b6953710}.controls span{position:absolute;bottom:9%;left:0;right:0;font-size:18px;font-weight:600;color:#665136;pointer-events:none}.overlay{position:absolute;inset:0;background:#fff9ecc7;display:grid;place-items:center;padding:20px;backdrop-filter:blur(3px)}.overlay[hidden]{display:none}.dialog{max-width:630px;text-align:center;padding:36px 46px;border:1px solid #d1c2a5;border-radius:18px;background:#fffbf4;box-shadow:0 12px 36px #5941230a}.eyebrow{color:#8b7042;font-size:16px;letter-spacing:4px}.dialog h2{font-size:40px;letter-spacing:4px;font-weight:500;margin:12px 0 20px}.dialog p{font-size:21px;line-height:1.8;margin:12px 0}.dialog .primary{margin-top:24px;background:#7c663e;color:#fffef7;border-color:#7c663e;min-width:200px;min-height:56px;font-size:22px}.dialog .primary:hover{background:#685431}.rule-line{font-size:17px;color:#756b5b;line-height:1.8;margin-top:16px}.result-grid{display:flex;justify-content:center;gap:36px;margin:20px 0}.result-grid strong{display:block;font-size:36px;font-variant-numeric:tabular-nums}.result-grid span{font-size:16px;color:#756b5b}.game-footer{display:flex;justify-content:space-between;align-items:center;padding:14px 28px;border-top:1px solid var(--line);font-size:17px;color:#6e624e}.keyboard-help{text-align:center;color:#6e6454;font-size:15px;margin:16px 0 22px}.trial-panel{background:#f9f6ee;border:1px solid #d7cdbb;border-radius:10px;padding:16px 20px}.trial-panel summary{font-size:18px;cursor:pointer}.trial-panel summary span{color:#807565;font-size:14px;margin-left:12px}.trial-panel form>p{color:#766b5b;line-height:1.6}.setting-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;margin:22px 0}.setting-grid label{display:block;line-height:1.8}.setting-grid select{display:block;width:100%;padding:6px 10px;background:#fffdf7;border:1px solid #b6a88f;border-radius:6px;color:var(--ink)}.setting-grid input{display:block;width:100%;margin-top:14px;accent-color:#896c38}.setting-grid output{float:right;font-variant-numeric:tabular-nums}.panel-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}#settings-status{font-size:15px;color:#75602f}.subtle{font-size:13px}.version{text-align:center;font-size:13px;color:#8c8374;margin:18px 0}.countdown h2{font-size:90px}.countdown .eyebrow{display:none}
@media(max-width:900px){main{width:calc(100% - 16px);margin:8px auto}.toolbar{height:64px;padding:0 16px;gap:12px}h1{font-size:23px;letter-spacing:1px}.metrics{gap:18px;font-size:16px}.metrics strong{font-size:23px;margin-left:5px}.toolbar button{padding:6px 16px}.game-footer{padding:10px 16px;font-size:14px}.controls span{font-size:14px}.feedback-strip{font-size:17px;top:8px}.dialog{padding:20px 30px}.dialog h2{font-size:32px;margin:8px 0}.dialog p{font-size:17px;margin:8px 0}.dialog .primary{margin-top:14px;min-height:48px;font-size:19px}.eyebrow{font-size:14px}.rule-line{font-size:14px}.setting-grid{grid-template-columns:repeat(2,1fr);gap:20px}.countdown h2{font-size:64px}}
@media(max-width:560px){.toolbar{padding:0 10px;gap:8px;height:56px}h1{font-size:16px}.metrics{gap:8px;font-size:11px}.metrics strong{font-size:17px;margin-left:2px}.toolbar button{min-height:36px;font-size:13px;padding:4px 10px}.game-footer{font-size:10px;padding:8px}.controls span{font-size:10px}.keyboard-help{font-size:12px}.overlay{padding:6px}.dialog{padding:8px 16px;border-radius:10px}.dialog .eyebrow{display:none}.dialog h2{font-size:23px;margin:4px 0;letter-spacing:2px}.dialog p{font-size:12px;line-height:1.6;margin:4px 0}.rule-line{font-size:10px;margin-top:6px}.dialog .primary{min-height:34px;min-width:130px;margin-top:6px;font-size:14px;padding:4px 12px}.result-grid{margin:6px 0;gap:20px}.result-grid strong{font-size:23px}.result-grid span{font-size:11px}.feedback-strip{font-size:12px;top:4px}.countdown h2{font-size:50px}.trial-panel{padding:14px}.setting-grid{grid-template-columns:1fr 1fr;gap:12px}.trial-panel form>p{font-size:13px}}
.game{width:min(100%,calc((100dvh - 174px) * 1.75824));margin-inline:auto}@media(max-width:900px){.game{width:min(100%,calc((100dvh - 136px) * 1.75824))}}@media(max-width:560px){.game{width:100%}}

/* The trial controls stay outside the proportional play field. */
main{width:min(1620px,calc(100% - 40px));display:grid;grid-template-columns:minmax(0,1fr) 284px;gap:20px;align-items:start}
.play-column{min-width:0}
.settings-column{position:sticky;top:20px;min-width:0}
.panel-toggle{display:block;width:100%;text-align:right;padding:8px 12px;margin-bottom:8px;font-size:14px}
.trial-panel{padding:20px;max-height:calc(100dvh - 100px);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.trial-panel[hidden]{display:none}
.trial-panel h2{font-size:21px;font-weight:600;margin:0 0 8px}
.trial-panel h3{font-size:14px;font-weight:600;margin:0 0 8px;color:#655238}
.panel-intro,.trial-panel p{font-size:13px;line-height:1.65;margin:8px 0;color:#655d50}
.setting-grid{display:grid;grid-template-columns:1fr;gap:16px;margin:16px 0}
.setting-grid label{font-size:15px;line-height:1.6}
.setting-grid select{margin-top:8px}
.setting-grid output{font-size:20px;font-weight:600;color:#684d22;line-height:1.2}
.setting-grid input{margin:10px 0 2px;height:24px}
.range-hint{display:block;font-size:11px;color:#766a56}
.panel-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.panel-actions button{font-size:13px;padding:8px 4px}
.panel-actions .primary{background:#7c663e;color:#fffef7}
.panel-actions .primary:hover{background:#685431}
#settings-status{min-height:40px;margin:10px 0;font-size:12px;color:#765627}
.applied-summary,.calibration-summary{border-top:1px solid var(--line);padding-top:16px;margin-top:16px}
#applied-settings,#pending-settings{font-size:12px}
#pending-settings{padding:8px;border-left:3px solid #9a763f;background:#f2e8d5}
.calibration-summary .actual-rate{display:flex;align-items:baseline;gap:10px;margin:12px 0 4px}
#actual-rate{font-size:28px;line-height:1.2;color:var(--ink);font-variant-numeric:tabular-nums}
.actual-rate span{font-size:12px}
.trial-panel .subtle{font-size:11px;line-height:1.6}
.sidebar-collapsed{grid-template-columns:minmax(0,1fr) 144px}
.sidebar-collapsed .settings-column{width:144px}
.game{width:min(100%,calc((100dvh - 174px) * 1.75824))}
@media(min-width:1100px) and (max-width:1350px){.toolbar{padding:0 16px;gap:12px}h1{font-size:23px;letter-spacing:1px}.metrics{gap:18px;font-size:16px}.metrics strong{font-size:23px;margin-left:5px}.toolbar button{padding:6px 16px}.game-footer{font-size:14px;padding:12px 16px}.dialog{padding:20px 28px}.dialog p{font-size:18px}.dialog h2{font-size:32px}.rule-line{font-size:15px}}
@media(max-width:1099px){
  main,main.sidebar-collapsed{width:calc(100% - 24px);margin:12px auto;display:flex;flex-direction:column;gap:12px}
  .play-column{width:100%}
  .settings-column,.sidebar-collapsed .settings-column{position:static;width:100%;order:-1}
  .panel-toggle{width:auto;min-width:160px;margin:0 0 0 auto}
  .trial-panel{margin-top:8px;max-height:65dvh}
  .setting-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px}
  .panel-actions{max-width:300px}
  .game{width:min(100%,calc((100dvh - 208px) * 1.75824))}
}
@media(max-width:560px){
  main,main.sidebar-collapsed{width:calc(100% - 16px);margin:8px auto}
  .game{width:100%}
  .trial-panel{padding:16px}
  .setting-grid{grid-template-columns:1fr;gap:16px}
  .keyboard-help{line-height:1.7;margin:12px 0}
  .version{font-size:11px;margin:12px 0}
}
