:root {
  --ink:#292929; --cream:#e4e4d9; --paper:#f6f6ee; --muted:#696a63;
  --purple:#9976ac; --purple-border:#815e98; --lavender:#9690df;
  --border:#c3c4b5; --shadow:#343532;
  font-family:Georgia,"Times New Roman",serif; color:var(--ink); font-synthesis:none;
}
* { box-sizing:border-box; }
body { margin:0; background:#c6c7c0; }
button,input,textarea,select { font:inherit; color:inherit; }
button,a,input,select,textarea { -webkit-tap-highlight-color:transparent; }
button { cursor:pointer; }
button:disabled { cursor:default; opacity:.45; }
a { color:inherit; }
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible { outline:3px solid #6b57bc; outline-offset:4px; }
button:focus:not(:focus-visible) { outline:0; }
.app-shell { height:100dvh; overflow:hidden; position:relative; outline:none; }
.app-header { position:absolute; top:16px; left:22px; right:22px; z-index:20; display:flex; align-items:center; gap:18px; pointer-events:none; }
.app-header>* { pointer-events:auto; }
.brand { text-decoration:none; white-space:nowrap; font-size:22px; letter-spacing:1px; color:#30312e; text-shadow:0 1px #f6f6ed; }
.brand-zero { font-weight:normal; }
.top-nav { display:flex; gap:9px; margin-left:20px; }
.header-actions { display:flex; align-items:center; gap:9px; margin-left:auto; }
.top-nav button,.header-button,.help-button,.view-tools button,.button,.cancel-button {
  border:3px solid var(--paper); background:var(--cream); border-radius:18px;
  padding:9px 18px; box-shadow:3px 4px 0 var(--shadow); line-height:1.15; font-size:18px;
}
.top-nav button.current { background:#b3b99f; border-color:#f2f3e7; }
.help-button { width:42px; height:42px; padding:0; border-radius:12px; font-size:25px; }
button:hover:not(:disabled) { filter:brightness(1.045); }
button:active:not(:disabled) { filter:brightness(.96); }
.game-layout,.workspace { height:100%; min-width:0; position:relative; }
.workspace { overflow:hidden; }
.workspace-heading { position:absolute; top:90px; right:22px; z-index:12; }
.view-tools { display:flex; align-items:flex-end; flex-direction:column; gap:14px; }
.view-tools button { width:48px; height:48px; padding:0; border-radius:50%; font-size:30px; }
.view-tools label { display:flex; gap:7px; align-items:center; padding:8px 12px; border-radius:20px; background:#e4e4d9eb; border:2px solid var(--paper); box-shadow:2px 3px 0 var(--shadow); }
.view-tools input { width:80px; accent-color:#8171bc; }
.panel-open .workspace-heading { right:380px; }
.multiverse-viewport { width:100%; height:100%; overflow:auto; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:#66685c80 transparent; cursor:grab; touch-action:none; }
.multiverse-viewport,.multiverse-viewport * { user-select:none; -webkit-user-select:none; }
.multiverse-viewport.dragging { cursor:grabbing; }
.view-tools button.view-toggle { width:auto; min-width:48px; font-size:14px; border-radius:14px; padding:8px 12px; }
.view-toggle[aria-pressed=true] { background:var(--lavender); }
/* Each check is one complete turn (two boards) by one timeline. */
.multiverse-space {
  position:relative; isolation:isolate;
  width:max-content; min-width:100%; min-height:100%;
  padding:var(--camera-top,50vh) var(--camera-right,50vw) var(--camera-bottom,50vh) var(--camera-left,50vw);
  background-color:#c6c7c0;
  background-image:conic-gradient(#cbccc5 25%,#c1c2bb 0 50%,#cbccc5 0 75%,#c1c2bb 0);
  background-size:calc(var(--full-turn)*2) calc(var(--timeline-row)*2);
  background-position:calc(var(--camera-left,50vw) + var(--turn-left)) calc(var(--camera-top,50vh) + var(--grid-top));
}
.multiverse-scale { position:relative; z-index:1; }
.multiverse-canvas { position:relative; isolation:isolate; transform-origin:0 0; }
.timeline-map { position:absolute; inset:0 auto auto 0; z-index:1; transform-origin:0 0; pointer-events:none; }
.board-set { position:absolute; inset:0; z-index:3; pointer-events:none; }
.board-set>.board { pointer-events:auto; transform-origin:0 0; }
.multiverse-space.isometric { background-image:none; overflow:clip; }
.isometric-floor { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; overflow:hidden; }
.floor-origin { transform:translate(var(--camera-left,50vw),var(--camera-top,50vh)); }
.floor-fill { x:calc(0px - var(--camera-left,50vw)); y:calc(0px - var(--camera-top,50vh)); width:100%; height:100%; }
.isometric .other-side .squares { opacity:.65; }
.isometric .board-frame { box-shadow:-5px 7px 0 var(--shadow); }
/* These bands cross the boards' centers, underneath their opaque frames. */
.present-line { position:absolute; top:0; bottom:0; transform:translateX(-50%); z-index:0; pointer-events:none; border-left:var(--band-border) solid var(--paper); border-right:var(--band-border) solid var(--paper); box-shadow:var(--band-shadow) 0 0 var(--shadow); background:var(--cream); }
.present-line.black { background:#41414d; border-color:#2c2c2e; }
/* Extend beyond the entire scroll space, including its viewport padding. The
   containing space clips the strip without adding camera scroll bounds. */
.present-line.isometric-band { bottom:auto; width:calc(200% + var(--scene-height) + var(--scene-height) + 200vmax); transform:translate(-50%,-50%) rotate(var(--band-angle)); border:0; border-block:var(--band-border) solid var(--paper); box-shadow:0 var(--band-shadow) 0 var(--shadow); }
.present-line.isometric-band.black { border-color:#2c2c2e; }
.timeline-advantage { position:absolute; z-index:3; width:124px; height:124px; transform:translate(-50%,-50%); pointer-events:auto; cursor:help; user-select:none; }
.timeline-advantage circle { fill:var(--cream); stroke:var(--paper); stroke-width:6; }
.timeline-advantage.black circle { fill:#41414d; stroke:#2c2c2e; }
.timeline-expansion-arrow { fill:var(--purple); stroke:var(--purple-border); stroke-width:3; }
.timeline-line { position:absolute; height:96px; background:var(--purple); border-top:3px solid var(--purple-border); border-bottom:3px solid var(--purple-border); z-index:1; box-shadow:-9px 10px 0 var(--shadow); pointer-events:none; }
.timeline-line>span { position:absolute; left:8px; top:-32px; font-size:18px; font-weight:600; }
.timeline-line>i { position:absolute; right:-76px; top:-51px; width:80px; height:192px; background:var(--purple-border); clip-path:polygon(0 0,100% 50%,0 100%); }
.timeline-line>i::after { content:""; position:absolute; inset:7px 6px 7px 0; background:var(--purple); clip-path:polygon(0 0,100% 50%,0 100%); }
.branch-connectors { position:absolute; inset:0; z-index:2; pointer-events:none; overflow:visible; filter:drop-shadow(-9px 10px 0 var(--shadow)); }
.branch-connectors path { fill:none; stroke:var(--purple); stroke-width:96; stroke-linecap:butt; }
.branch-connectors circle { fill:var(--purple-border); stroke:#c1a2d0; stroke-width:3; }
.board { position:absolute; z-index:3; }
.board-check { position:absolute; right:-13px; top:20px; z-index:10; width:32px; height:32px; }
.square-review { position:absolute; right:-8px; top:-8px; z-index:6; pointer-events:none; }
.move-badge { display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; flex-shrink:0; border-radius:50%; background:#858880; color:#fff; font:bold 14px/1 system-ui,sans-serif; vertical-align:middle; box-shadow:0 1px 2px #0003; }
.move-badge.book { background:#a98764; }.move-badge.brilliant { background:#1baca6; }.move-badge.best { background:#7eaa4e; }
.move-badge.excellent,.move-badge.good { background:#8b9e75; }.move-badge.inaccuracy { background:#e7ad35; }.move-badge.mistake { background:#e58b33; }.move-badge.blunder { background:#d84b43; }
.move-badge svg { width:16px; height:16px; }.move-quality { display:inline-flex; align-items:center; gap:5px; margin-left:6px; font:11px system-ui,sans-serif; }
.animate-travel .played-travel { animation:travel-arrival .35s ease-out; }
@keyframes travel-arrival { from { opacity:0; } to { opacity:1; } }
@media(prefers-reduced-motion:reduce) { .animate-travel .played-travel { animation:none; } }
.board-caption { height:32px; display:flex; align-items:center; justify-content:space-between; padding:0 5px; font-size:18px; color:#30312c; }
.board-caption>span:first-child { display:flex; gap:7px; align-items:center; }
.board-caption>span:last-child { font-family:system-ui,sans-serif; font-size:8px; letter-spacing:1px; }
.side-dot { display:inline-block; width:10px; height:10px; border-radius:50%; flex-shrink:0; border:1px solid #484940; }
.side-dot.white { background:#fffef5; }
.side-dot.black { background:#25252b; }
.board-frame { background:var(--cream); border:3px solid var(--paper); border-radius:16px; padding:9px; box-shadow:-11px 13px 0 var(--shadow); }
.black-turn .board-frame { background:#41414d; border-color:#28282b; }
.historical .board-frame { border-radius:3px; }
.to-move .board-frame { border-color:#7763cf; background:var(--lavender); }
.board.inactive { opacity:.62; }
.board footer { height:28px; display:flex; align-items:center; justify-content:space-between; padding:3px 6px 0; color:#34352f; font-size:14px; }
.board footer>span:last-child { font:8px system-ui,sans-serif; letter-spacing:.6px; }
.branch-source { position:absolute; top:-20px; left:0; font-size:13px; white-space:nowrap; padding:2px 7px; border-radius:5px; background:#e4e4d9e8; }
.squares { display:grid; border:1px solid #a68e67; }
.square { width:var(--cell); height:var(--cell); border:0; border-radius:0; padding:1px; position:relative; display:grid; place-items:center; touch-action:manipulation; }
/* Hover filters create a stacking context; keep an overhanging move badge
   above adjacent squares and their pieces by raising its owning square. */
.square:has(.square-review) { z-index:5; }
.square.light { background:#fad6a5; }
.square.dark { background:#d1a76f; }
.square.last-move { background-image:linear-gradient(#eddf5b80,#eddf5b80); }
.square.selected { background:#aaa0e6; box-shadow:inset 0 0 0 2px #7561c4; }
.square.destination:hover { box-shadow:inset 0 0 0 3px #7765bb; }
.square:disabled { opacity:1; cursor:default; }
.piece { width:94%; height:94%; z-index:1; position:relative; pointer-events:none; }
.rank-label,.file-label { position:absolute; font:7px system-ui,sans-serif; color:#645337; z-index:2; pointer-events:none; }
.rank-label { left:2px; top:0; }
.file-label { right:2px; bottom:0; }
.move-dot { width:25%; height:25%; border-radius:50%; background:#7664aa9c; position:absolute; z-index:3; pointer-events:none; }
.square:has(.piece) .move-dot { width:95%; height:95%; background:transparent; border:3px solid #7764aaa6; }
.fairy-badge { position:absolute; bottom:1px; right:1px; background:#e8e4ff; color:#352458; border-radius:3px; font:bold 9px system-ui,sans-serif; z-index:4; padding:0 2px; }
.travel-overlay,.check-overlay { position:absolute; inset:0; pointer-events:none; overflow:visible; z-index:4; }
.check-overlay { z-index:5; }
.check-arrow { fill:none; stroke:#e82d39; stroke-width:5; stroke-linecap:round; filter:drop-shadow(0 1px 1px #5a1119); }
.checked-royal { fill:#ff263e33; stroke:#e82d39; stroke-width:3; }
.workspace-footer { position:absolute; bottom:17px; left:25px; z-index:10; pointer-events:none; }
.pan-hint { font:12px system-ui,sans-serif; color:#484a42; background:#d3d4cbcf; padding:5px 8px; border-radius:5px; }
.turn-indicator { position:absolute; bottom:57px; left:25px; z-index:10; display:flex; align-items:center; gap:10px; padding:9px 15px 9px 10px; border-radius:12px; background:#e4e4d9eb; }
.turn-piece { width:40px; height:40px; flex-shrink:0; }
.turn-indicator strong { font-size:23px; font-weight:normal; }
.turn-indicator small { display:block; margin-top:4px; font:12px system-ui,sans-serif; }
.turn-actions { position:absolute; top:85px; left:50%; transform:translateX(-50%); z-index:11; display:flex; align-items:center; gap:13px; white-space:nowrap; }
.panel-open .turn-actions { left:calc(50% - 150px); }
.button { display:inline-flex; align-items:center; justify-content:center; gap:12px; }
.turn-actions .button { font-size:23px; padding:10px 24px; border-radius:30px; }
.turn-actions .quiet { background:var(--lavender); border-color:#7c6bd1; }
.button.submit { background:var(--cream); }
.button.submit:disabled { background:#aaa9ac; border-color:#a2a2a2; color:#f5f5f0; opacity:1; box-shadow:none; }
.button kbd { font:11px system-ui,sans-serif; padding:2px 5px; border:1px solid currentColor; border-radius:3px; opacity:.65; }
.button.dark { background:#959e82; border-color:#cbd0be; }
.button.outline { border-width:2px; padding:8px 10px; font-size:14px; }
.button.full { width:100%; margin-top:20px; }
.check-indicator { appearance:none; flex:none; display:grid; place-items:center; width:34px; height:34px; border-radius:50%; border:0; background:transparent; color:white; padding:0; line-height:1; }
.check-indicator svg { display:block; width:100%; height:100%; overflow:visible; }
.check-indicator[aria-pressed=true] circle { stroke:#ad1325; stroke-width:3; }
.thinking { display:flex; align-items:center; gap:10px; background:var(--cream); border:3px solid var(--paper); border-radius:30px; padding:10px 23px; font-size:23px; }
.spinner { width:26px; height:26px; border:3px solid #b0ada2; border-top-color:#7764b6; border-radius:50%; animation:spin 1s linear infinite; display:inline-block; }
.spinner.small { width:17px; height:17px; border-width:2px; }
@keyframes spin { to { transform:rotate(360deg); } }
.engine-loading { position:absolute; inset:0; display:grid; place-content:center; justify-items:center; gap:8px; }
.engine-loading h2 { font-size:25px; font-weight:normal; margin:12px 0 0; }
.engine-loading p { margin:0; }
.boot { min-height:100dvh; display:grid; place-content:center; justify-items:center; gap:12px; font-size:20px; }
.boot p { margin:0; }
#blazor-error-ui { display:none; position:fixed; bottom:0; left:0; right:0; z-index:120; padding:16px 24px; background:#f3e0d9; color:#862838; border-top:2px solid #ebbbb7; font:14px system-ui,sans-serif; }
/* The game fills the window. Moves and analysis share a collapsible panel. */
.sidebar { position:absolute; z-index:21; top:80px; right:22px; bottom:28px; width:334px; background:var(--cream); border:3px solid var(--paper); border-radius:22px; box-shadow:5px 6px 0 #343532d9; display:flex; flex-direction:column; overflow:hidden; }
.sidebar.has-evaluation { padding-left:12px; }
.sidebar-content { display:flex; flex-direction:column; min-height:0; height:100%; overflow:auto; scrollbar-width:thin; }
.analysis-lines { display:flex; align-items:center; gap:8px; margin:12px 18px 0; }
.analysis-lines select { min-width:0; flex:1; }
.opponent { padding:20px 20px 15px; display:flex; align-items:center; gap:12px; }
.engine-avatar { width:42px; height:42px; border-radius:12px; background:#41414d; color:var(--paper); display:flex; align-items:center; justify-content:center; font-size:25px; letter-spacing:-3px; }
.engine-avatar span { font-size:19px; margin-top:7px; }
.eyebrow { font:10px system-ui,sans-serif; letter-spacing:1px; color:var(--muted); }
.opponent h2 { font-size:25px; font-weight:normal; margin:4px 0 0; }
.sidebar-strength { margin:0 20px 17px; }
.strength-picker { display:grid; gap:8px; min-width:0; }
.strength-label { display:flex; align-items:center; justify-content:space-between; gap:10px; font-size:16px; }
.strength-label output { font:600 16px system-ui,sans-serif; }
.strength-label output span { font-size:11px; font-weight:normal; color:var(--muted); }
.strength-picker input[type=range] { width:100%; margin:0; accent-color:#8070bb; height:22px; cursor:pointer; }
.strength-picker input:disabled { cursor:default; opacity:.5; }
.strength-scale { display:flex; justify-content:space-between; font:10px system-ui,sans-serif; color:var(--muted); margin-top:-5px; }
.strength-picker small,.last-search { display:block; font:10px/1.5 system-ui,sans-serif; color:var(--muted); }
.last-search { margin-top:8px; }
.panel-tabs { display:flex; align-items:center; margin:0 20px; gap:24px; border-bottom:1px solid var(--border); }
.panel-tabs>button { padding:10px 0; border:0; border-bottom:3px solid transparent; background:none; color:var(--muted); font-size:17px; }
.panel-tabs>button.selected { border-color:#8471bd; color:var(--ink); }
.panel-tabs .icon-button { margin-left:auto; font-size:25px; padding:0; }
.moves-heading { display:grid; grid-template-columns:1fr auto; padding:17px 20px 8px; font:9px system-ui,sans-serif; color:var(--muted); }
.moves-list { flex:1 0 125px; overflow-y:auto; scrollbar-width:thin; }
.empty-moves { padding:30px 20px; text-align:center; color:var(--muted); font-size:16px; }
.move-row { display:flex; align-items:center; gap:10px; padding:10px 18px; border:0; border-left:3px solid transparent; background:none; text-align:left; width:100%; }
.move-row:nth-child(even) { background:#d6d8cb70; }
.move-row.active { background:#c6c9b7; border-left-color:#7a6ab0; }
.move-notation>.side-dot { width:7px; height:7px; margin-right:3px; }
.move-notation { font:11px/1.6 ui-monospace,monospace; overflow-wrap:anywhere; flex:1; }
.pending-moves { font:11px/1.7 monospace; padding:12px 20px; background:#e3dcb8; }
.pending-moves>span { display:block; font:9px system-ui,sans-serif; margin-bottom:4px; }
.history-controls { display:flex; align-items:center; justify-content:center; padding:8px 16px; border-top:1px solid var(--border); border-bottom:1px solid var(--border); gap:16px; }
.history-controls button { border:0; background:none; font-size:22px; }
.history-controls>span { font:11px system-ui,sans-serif; color:var(--muted); min-width:40px; text-align:center; }
.sidebar-bottom { padding:15px 18px 18px; display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.minor-actions { grid-column:1/-1; display:flex; justify-content:center; gap:15px; margin-top:10px; }
.minor-actions button { padding:0; border:0; background:none; font-size:12px; text-decoration:underline; color:var(--muted); }
.evaluation { margin:18px 20px 0; position:relative; }
.evaluation>div:first-child { display:flex; flex-direction:column; gap:5px; }
.score { font-size:34px; font-weight:normal; line-height:1.2; }
.eval-perspective { position:absolute; right:0; top:27px; font:10px system-ui,sans-serif; color:var(--muted); }
.eval-track.vertical { position:absolute; top:0; bottom:0; left:0; width:12px; background:#36363e; overflow:hidden; border-right:1px solid #76766c; }
.eval-track>div { position:absolute; bottom:0; width:100%; background:#fcfcf3; transition:height .3s; }
.evaluation>small { font:10px/1.5 system-ui,sans-serif; color:var(--muted); display:block; }
.evaluation-chart { margin:10px 20px 0; width:calc(100% - 40px); height:76px; flex-shrink:0; cursor:pointer; }
.evaluation-chart circle { cursor:pointer; }
.acpl-grid { display:grid; grid-template-columns:1fr 1fr; margin:12px 20px; border:1px solid var(--border); border-radius:6px; }
.acpl-grid>div { padding:10px; display:flex; align-items:center; justify-content:space-between; gap:5px; }
.acpl-grid>div+div { border-left:1px solid var(--border); }
.acpl-grid span { font:10px system-ui,sans-serif; color:var(--muted); }
.acpl-grid strong { font-size:18px; font-weight:normal; }
.analysis-actions { margin:0 20px; display:grid; gap:10px; }
.analysis-actions .button { padding:8px 10px; font-size:16px; }
.loss { font:600 11px system-ui,sans-serif; white-space:nowrap; }
.verdict { display:block; font:10px system-ui,sans-serif; color:#63734b; }
.mistake { color:#a25635; }
.best-line { padding:12px 20px; border-bottom:1px solid var(--border); background:#d9dccb; }
.best-line p { font:11px/1.5 monospace; overflow-wrap:anywhere; margin:5px 0 0; }
.app-footer { position:absolute; right:24px; bottom:9px; z-index:22; font:10px system-ui,sans-serif; color:#54574b; }
.app-footer a { text-decoration:none; }
.notice { position:absolute; top:150px; left:25px; max-width:min(600px,calc(100% - 50px)); z-index:15; background:#eeeedeef; border:2px solid var(--paper); border-radius:10px; font:13px/1.5 system-ui,sans-serif; padding:12px 40px 12px 15px; box-shadow:3px 4px 0 #34353277; }
.notice button { position:absolute; right:10px; top:7px; padding:0; border:0; background:none; font-size:23px; }
.notice.error { color:#862838; background:#f3e0d9; border-color:#ebbbb7; }
.check-preview-notice { color:#862838; display:flex; align-items:center; justify-content:space-between; gap:15px; padding-right:15px; }
.check-preview-notice button { position:static; font-size:12px; text-decoration:underline; white-space:nowrap; }
.modal-backdrop { position:fixed; inset:0; background:#30312c80; z-index:100; display:grid; place-items:center; padding:24px; }
.modal { background:var(--cream); width:min(620px,100%); padding:32px; border-radius:28px; border:4px solid var(--paper); position:relative; box-shadow:7px 9px 0 var(--shadow); max-height:90dvh; overflow:auto; }
.modal.compact { max-width:450px; }
.modal h2 { margin:0 0 16px; font-size:32px; font-weight:normal; }
.modal h3 { font-size:22px; font-weight:normal; }
.modal p { font-size:16px; line-height:1.55; margin:12px 0; }
.modal small { font:11px/1.7 system-ui,sans-serif; color:var(--muted); }
.modal-close { position:absolute; right:15px; top:10px; border:0; background:none; font-size:29px; }
.modal label { display:grid; gap:8px; margin-top:18px; font-size:17px; }
.modal select { padding:9px; border:1px solid var(--border); border-radius:5px; background:#f0f0e5; width:100%; }
.modal textarea { width:100%; height:230px; margin-top:18px; resize:vertical; border:1px solid var(--border); border-radius:6px; padding:12px; font:12px/1.6 monospace; background:#f4f4eb; }
.modal-actions { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:20px; }
.modal-actions .button { font-size:16px; }
.modal .strength-picker { margin-top:20px; }
.file-input { font-size:14px!important; }
.file-input input { font:12px system-ui,sans-serif; }
.form-error { color:#9b2938; }
.promotion-options { display:flex; flex-wrap:wrap; gap:12px; margin:20px 0; }
.promotion-options button { display:grid; justify-items:center; gap:8px; border:2px solid var(--paper); border-radius:10px; background:#d2c2e4; padding:10px; font-size:13px; }
.promotion-options img { width:48px; height:48px; }
@media(max-width:1100px) {
  .app-header { gap:10px; left:15px; right:15px; }
  .brand { font-size:18px; letter-spacing:0; }
  .top-nav { margin-left:0; gap:7px; }
  .top-nav button,.header-button { font-size:15px; padding:8px 11px; }
  .turn-actions .button { font-size:19px; padding:9px 16px; }
  .panel-open .turn-actions { left:calc(50% - 160px); }
  .turn-indicator strong { font-size:20px; }
}
@media(max-width:760px) {
  .app-header { top:10px; left:10px; right:10px; flex-wrap:wrap; gap:8px; }
  .brand { font-size:16px; }
  .top-nav { margin-left:auto; }
  .top-nav button,.header-button { font-size:14px; border-width:2px; padding:7px 10px; }
  .header-actions { width:100%; justify-content:flex-end; gap:8px; }
  .help-button { width:32px; height:32px; font-size:21px; border-width:2px; }
  .workspace-heading,.panel-open .workspace-heading { top:113px; right:12px; }
  .view-tools { gap:12px; }
  .view-tools button { width:39px; height:39px; font-size:24px; }
  .view-tools label { display:none; }
  .turn-actions,.panel-open .turn-actions { top:auto; bottom:112px; left:15px; transform:none; gap:9px; }
  .turn-actions .button { font-size:18px; padding:8px 14px; }
  .turn-indicator { bottom:45px; left:15px; padding:7px 10px; gap:7px; max-width:calc(100% - 75px); }
  .turn-indicator strong { font-size:18px; }
  .turn-indicator small { font-size:10px; }
  .turn-piece { width:32px; height:32px; }
  .workspace-footer { left:15px; bottom:13px; }
  .pan-hint { font-size:10px; }
  .sidebar { top:96px; right:10px; bottom:35px; width:min(334px,calc(100% - 20px)); }
  .panel-open .turn-actions,.panel-open .turn-indicator,.panel-open .workspace-heading { visibility:hidden; }
  .notice { top:110px; left:15px; max-width:calc(100% - 75px); font-size:12px; }
  .app-footer { right:12px; bottom:15px; }
  .modal { padding:25px 20px; border-radius:22px; }
  .modal-backdrop { padding:14px; }
  .modal h2 { font-size:28px; }
  .modal-actions { flex-wrap:wrap; justify-content:flex-end; }
}
@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after { scroll-behavior:auto!important; animation:none!important; transition:none!important; }
}
