body.at-table #topbar{min-height:54px;padding-block:5px}
body.at-table .room-top{margin-bottom:4px}
body.at-table .action-strip{min-height:54px;padding:8px 16px;border-radius:10px;margin-bottom:12px;gap:16px}
body.at-table.my-turn .action-strip{padding:6px 14px;border-width:2px}
body.at-table .action-strip h2{font-size:1.05rem;min-height:30px;display:flex;align-items:center}
body.at-table .action-strip p{font-size:.75rem;margin-top:2px}
body.at-table .turn-ticket{font-size:.62rem;padding-right:12px}
body.at-table .action-strip .timer{font-size:1.7rem;min-width:64px}
.board-ninetiles{max-width:1050px;margin:auto;gap:16px}
.board-ninetiles .tile-race{gap:clamp(24px,5vw,72px);padding:8px 0 0;align-items:center}
.board-ninetiles .tile-grid{gap:8px}
.board-ninetiles .tile-grid .pattern{padding:5px;width:clamp(78px,13svh,128px);min-width:0;border:1px solid #756e60;border-radius:5px;background:#faf8ec;box-shadow:0 3px 0 #d3cdbf,0 7px 9px #132c4524;transition:box-shadow .12s;cursor:grab}
.board-ninetiles .tile-grid .pattern:hover:not(:disabled){background:#fffdf4;transform:none;border-color:#49473e}
.tile-symbol{display:block;width:100%;height:100%;pointer-events:none}
.board-ninetiles .tile-grid .pattern.dragging{position:relative;z-index:10;cursor:grabbing;box-shadow:0 8px 0 #cbc4b7,0 14px 16px #132c4544;opacity:.95}
.board-ninetiles .tile-grid .pattern.drop-target{outline:4px solid #ffd13d;outline-offset:1px;background:#fff4b9}
.board-ninetiles .tile-grid .pattern.selected{outline:4px solid #ffd13d;outline-offset:3px;transform:none}
.board-ninetiles .tile-grid .pattern:disabled{opacity:1;cursor:default}
.board-ninetiles .tile-grid.mini{background:#78c4c3;padding:12px;gap:5px;border-radius:12px}
.board-ninetiles .tile-grid.mini .pattern{width:clamp(38px,6.3svh,58px);border:0;border-radius:2px;box-shadow:none;padding:3px}
.board-ninetiles .tile-race h3{font-size:.85rem;margin-bottom:10px;letter-spacing:0}
.tile-instruction{font-size:.78rem;color:white;text-align:center;margin:12px 0 0}
.tile-actions{display:flex;gap:12px 20px;align-items:center;justify-content:center;flex-wrap:wrap}
.tile-actions button{font-size:.8rem;min-height:48px}
.tile-keyboard-mode{background:transparent;color:white;border:1px solid #fff9;box-shadow:none}
.tile-keyboard-mode[aria-pressed=true],.tile-keyboard-mode:hover:not(:disabled){background:#fffdf7;color:#222d35;border-color:#222d35}
.tile-finish{position:relative;overflow:hidden;min-width:180px;border-radius:9px}
.tile-finish>span{position:relative;z-index:1}
.tile-finish::before{content:"";position:absolute;inset:0;background:#eeae00;transform:scaleX(0);transform-origin:left;pointer-events:none}
.tile-finish.holding::before{transform:scaleX(1);transition:transform .6s linear}
.tile-verdict{width:100%;font-size:.75rem;text-align:center;color:white;margin:0;min-height:18px}
.board-ninetiles .race-others{gap:16px 26px;align-items:start}
.race-others>div{display:grid;justify-items:center;gap:7px;color:white;font-size:.7rem}
.board-ninetiles .observer-pattern{gap:2px}
.board-ninetiles .observer-pattern i{width:17px;height:17px;border-radius:1px;background:#faf8ec;padding:1px;display:block}
.nine-review{width:min(100%,650px);margin:0 auto 18px;padding:18px;background:#faf8ec;color:#222d35;border-radius:12px;box-shadow:0 5px 0 #172d4626}
.nine-race-clock{display:grid;justify-items:center;gap:2px;color:white;font-variant-numeric:tabular-nums;line-height:1}
.nine-race-clock span{font-size:.75rem}
.nine-race-clock b{font-size:clamp(48px,8svh,80px);letter-spacing:-2px}
.nine-race-clock.last-seconds{color:#ffe06d}
.nine-round-countdown{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:#123a58ed;color:#fffdf2;text-align:center;pointer-events:auto}
.nine-round-countdown span{font-size:clamp(18px,4vw,28px);font-weight:700}
.nine-round-countdown b{font-size:clamp(140px,35svh,300px);line-height:1;font-variant-numeric:tabular-nums;color:#ffe06d;text-shadow:0 7px 0 #071f35}
.nine-round-reveal{text-align:center;width:min(100%,650px);margin:20px auto;padding:14px 10px 20px;color:#233640}
.nine-round-reveal .nine-reveal-caption{font-size:.75rem;font-weight:700;margin:0 0 18px}
.nine-round-reveal h3{font-size:1.1rem;margin:18px 0 6px}
.nine-round-reveal>p:last-child{font-size:.8rem;margin:8px 0 0}
.nine-reveal-name{display:block;font-size:clamp(24px,4vw,38px);line-height:1.15;overflow-wrap:anywhere}
.nine-celebrants{display:flex;justify-content:center;align-items:end;gap:18px;padding-top:14px}
.nine-cheering-tile{display:block;position:relative;width:62px;height:62px;border:2px solid #756e60;border-radius:5px;padding:6px;background:#faf8ec;box-shadow:0 4px 0 #c0b6a2;transform:rotate(calc((var(--celebrant) - 1)*12deg))}
.nine-cheering-tile:nth-child(2){width:76px;height:76px}
.nine-cheering-tile::after{content:'';position:absolute;bottom:-10px;left:13px;width:12px;height:7px;border-radius:50%;background:#233640;box-shadow:25px 0 #233640}
.nine-cheering-tile:nth-child(2)::after{left:17px;box-shadow:31px 0 #233640}
.nine-tile-eyes{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);display:block;width:29px;height:13px;background:#fffdf2;border-radius:9px}
.nine-tile-eyes::before{content:'';position:absolute;left:6px;top:3px;width:5px;height:7px;border-radius:50%;background:#233640;box-shadow:12px 0 #233640}
.nine-tile-crown{position:absolute;width:65px;height:33px;left:4px;top:-30px;transform:rotate(-8deg)}
.match-winner{background:#fff0ad;border-radius:14px;border-bottom:5px solid #dfb848;padding:24px 10px 28px}
.match-winner .nine-celebrants{padding-top:32px;gap:24px}
.match-winner .nine-cheering-tile{width:72px;height:72px}
.match-winner .nine-cheering-tile:nth-child(2){width:92px;height:92px}
.match-winner .nine-tile-crown{width:80px;height:40px;top:-36px}
.is-revealing .nine-cheering-tile{animation:nine-celebrate 850ms calc(var(--celebrant)*100ms) both cubic-bezier(.2,.8,.25,1)}
.is-revealing .nine-reveal-name{animation:nine-winner-name 550ms 650ms both ease-out}
.match-winner.is-revealing .nine-cheering-tile{animation-iteration-count:2}
@keyframes nine-celebrate{0%{opacity:0;transform:translateY(28px) scale(.6) rotate(-20deg)}45%{opacity:1;transform:translateY(-20px) rotate(10deg)}70%{transform:translateY(3px) rotate(-6deg)}100%{opacity:1;transform:rotate(calc((var(--celebrant) - 1)*12deg))}}
@keyframes nine-winner-name{from{opacity:0;transform:translateY(8px) scale(.9)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.nine-round-reveal .nine-cheering-tile,.nine-round-reveal .nine-reveal-name{animation:none!important}}
.nine-review-verdict{text-align:center;margin-bottom:18px}
.nine-review-verdict h3{margin:0 0 6px;font-size:1.15rem;color:inherit}
.nine-review-verdict p{margin:0;font-size:.8rem}
.nine-review-boards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(14px,4vw,32px);align-items:start}
.nine-review-boards figure{margin:0;min-width:0}
.nine-review-boards figcaption{text-align:center;font-size:.8rem;font-weight:700;margin-bottom:10px}
.nine-review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:10px;background:#78c4c3;border-radius:8px}
.nine-review-tile{display:block;position:relative;min-width:0;aspect-ratio:1;background:#faf8ec;padding:7px;border:2px solid transparent;border-radius:3px;box-shadow:0 2px 0 #347c7c55}
.nine-review-tile.mismatch{border-color:#a12638;outline:1px solid #a12638}
.nine-review-mark{position:absolute;right:-6px;top:-7px;width:21px;height:21px;display:grid;place-items:center;background:#a12638;color:#fff;font-size:20px;line-height:1;border-radius:50%;font-style:normal}
.nine-review-details{margin-top:16px;font-size:.8rem;text-align:left}
.nine-review-details summary{cursor:pointer;min-height:44px;display:flex;align-items:center;text-decoration:underline;text-underline-offset:3px}
.nine-review-details summary::before{content:'+';margin-right:8px;font-size:1.2rem}
.nine-review-details[open] summary::before{content:'−'}
.nine-review-details ul{padding-left:20px;margin:0;line-height:1.8}
.all-correct .nine-review-verdict h3{color:#21603e}
@media(max-width:480px){.nine-review{padding:14px 10px}.nine-review-grid{padding:7px;gap:5px}.nine-review-tile{padding:4px}.nine-review-mark{width:17px;height:17px;font-size:16px;right:-5px;top:-5px}.nine-review-boards figcaption{font-size:.7rem;min-height:28px;display:grid;align-items:center}.nine-review-verdict h3{font-size:1rem}}
.board-scout{grid-template-columns:1fr!important;max-width:1200px}
.board-scout .scout-arena{min-height:155px;gap:12px}
.board-scout .board-controls{width:100%;max-width:1100px;margin:auto;padding:18px}
.board-scout .board-controls .card-hand{width:100%;justify-content:safe center;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;padding:12px 7px;gap:5px}
.board-scout .scout-card{width:clamp(58px,6vw,82px);min-height:120px;padding:7px}
.board-scout .scout-form{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;align-items:end}
.board-scout .scout-form label{font-size:.76rem}
.board-scout .scout-card{position:relative;display:block;flex:none;width:86px;height:auto;aspect-ratio:5/8;min-height:0;padding:3px;border:2px solid #222b2e;border-radius:7px;background:#fffdf2;box-shadow:0 3px 0 #b0a594,0 7px 9px #40261933;overflow:hidden}
.scout-art{display:block;width:100%;height:100%;pointer-events:none}
.board-scout button.scout-card:hover:not(:disabled){transform:translateY(-9px);background:#fffdf2;border-color:#222b2e}
.board-scout .scout-card.selected{transform:translateY(-12px);outline:4px solid #ffd13d;outline-offset:2px}
.scout-hand{container-type:inline-size;display:flex;align-items:center;justify-content:safe center;gap:4px;overflow-x:auto;overscroll-behavior-x:contain;width:100%;padding:16px 10px 14px;scrollbar-width:thin}
.board-scout .scout-hand .scout-card{width:clamp(62px,calc((100cqw - 70px)/var(--hand-count,12)),94px)}
.scout-hand:has(.scout-insert){padding-inline:26px;padding-bottom:48px;justify-content:flex-start}
.scout-hand-slot{display:flex;flex:none;position:relative;gap:4px;align-items:center}
.scout-end-slot{min-width:24px;align-self:stretch}
.scout-show{display:flex;gap:6px;justify-content:safe center;align-items:center;min-height:150px;width:100%;max-width:100%;overflow-x:auto;padding-bottom:10px}
.scout-show-slot{display:grid;gap:8px;justify-items:center;flex:none}
.scout-show .scout-card{width:96px}
.scout-take{font-size:.7rem;min-height:44px;padding:5px 12px}
.scout-empty{font-size:1.4rem;color:white;font-weight:800;padding:20px 0}
.scout-insert{position:absolute;bottom:-35px;left:-22px;min-width:44px;width:44px;height:44px;padding:0;border:2px dashed #6a756c;border-radius:50%;font-size:1.2rem;background:#fffdf7;color:#24362c;box-shadow:none;z-index:2}
.scout-insert.chosen,.scout-insert:hover:not(:disabled){background:#ffd13d;color:#20292f;border:2px solid #24362c;transform:none}
.scout-recruit-preview{display:block;margin-inline:4px;outline:3px dashed #25843f;outline-offset:2px;border-radius:7px}
.scout-recruit-tools{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.scout-recruit-tools button{font-size:.78rem}
.scout-recruit-tools button[aria-pressed=true]{color:#20292f;background:#ffd13d}
.board-rafter{display:grid;grid-template-columns:minmax(0,1fr)!important;max-width:1200px;gap:12px}
.board-rafter .raft-viewport{height:clamp(340px,57svh,660px);border-radius:12px;border:0;box-shadow:none}
.board-rafter .board-controls{background:transparent;box-shadow:none;padding:0;gap:12px;color:white}
.raft-toolbar{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:8px}
.raft-toolbar button{font-size:.78rem;min-height:44px}
.raft-status{font-size:.8rem;color:white;min-height:24px;text-align:center;margin:0}
.raft-reserves{gap:12px 24px;font-size:.72rem}
.raft-reserves>span{display:flex;align-items:center;gap:6px}
.raft-reserves strong{font-size:.75rem}
.raft-reserves .penalty-count{color:#ffdc39}
.raft-advanced{color:white;width:min(100%,600px);font-size:.75rem}
.raft-advanced summary{min-height:44px;padding:12px;text-align:center}
.raft-advanced .raft-placement{padding:12px;background:#fffdf7;color:#222d35;border-radius:12px}
.raft-lift-choices{gap:7px}
.raft-lift-choices button{font-size:.72rem}
@media(max-width:1100px){
  body.at-table .table-layout{padding-inline:100px}
  body.at-table .seat{width:92px;flex-wrap:wrap;justify-content:center;text-align:center}
  body.at-table .seat .name{max-width:80px}
  .board-ninetiles .tile-grid .pattern{width:clamp(72px,11svh,100px)}
  .board-ninetiles .tile-grid.mini .pattern{width:38px}
}
@media(max-width:740px){
  body.at-table #topbar{padding:5px 10px;min-height:54px;gap:6px}
  body.at-table #topbar .top-actions{display:flex;gap:4px;width:auto;max-width:none;align-items:center}
  body.at-table #topbar .top-actions button{min-width:44px;min-height:44px;padding:5px;font-size:.65rem}
  body.at-table #topbar .brand{font-size:.8rem;max-width:130px}
  body.at-table .room-top{font-size:.65rem;gap:8px}
  body.at-table .room-top .caption{font-size:.65rem}
  body.at-table .room-code{font-size:.8rem}
  body.at-table .room-top .small{font-size:.65rem;padding:5px 9px}
  body.at-table .action-strip{gap:8px;margin-bottom:10px;border-radius:8px;padding:8px}
  body.at-table.my-turn .action-strip{padding:6px}
  body.at-table .action-strip h2{font-size:.88rem}
  body.at-table .action-strip p{display:none}
  body.at-table .turn-ticket{font-size:.52rem;padding-right:7px}
  body.at-table .action-strip .timer{font-size:1.35rem;min-width:48px}
  body.at-table .table-layout{padding:0 0 64px;min-height:0}
  body.at-table .play-area{min-height:0}
  body.at-table .player-rail .seat{width:110px;min-width:110px;flex-wrap:nowrap;justify-content:start;text-align:left}
  body.at-table:has(.collection-table) .table-layout{flex-direction:column;gap:8px}
  body.at-table:has(.collection-table) .player-rail{display:contents}
  body.at-table:has(.collection-table) .seats{order:-1}
  body.at-table:has(.collection-table) .rail-tools{order:2;margin-top:12px}
  body.deduction-table .table-layout,body[data-game=fakeartist].at-table .table-layout{flex-direction:column;gap:10px}
  body.deduction-table .player-rail,body[data-game=fakeartist].at-table .player-rail{display:contents}
  body.deduction-table .seats,body[data-game=fakeartist].at-table .seats{order:-1}
  body.deduction-table .rail-tools,body[data-game=fakeartist].at-table .art-table-tools{order:2;position:static;margin-top:12px}
  .board-ninetiles{gap:12px}
  .board-ninetiles .tile-race{gap:18px;padding:0;align-items:start}
  .board-ninetiles .tile-grid{gap:5px}
  .board-ninetiles .tile-grid .pattern{width:clamp(59px,19vw,95px);padding:4px;border-radius:4px}
  .board-ninetiles .target-pattern{padding-top:4px}
  .board-ninetiles .tile-race h3{max-width:96px;font-size:.68rem;margin-bottom:7px;line-height:1.25}
  .board-ninetiles .tile-grid.mini{padding:6px;gap:3px;border-radius:7px}
  .board-ninetiles .tile-grid.mini .pattern{width:clamp(23px,7vw,34px);padding:1px}
  .tile-instruction{font-size:.63rem;max-width:220px;margin-top:10px}
  .tile-actions{gap:8px}
  .tile-actions button{font-size:.7rem;min-width:0;padding:8px 12px}
  .tile-actions .tile-finish{min-width:156px}
  .tile-verdict{font-size:.67rem}
  .board-ninetiles .race-others{gap:9px 16px}
  .race-others>div{font-size:.6rem;gap:4px}
  .board-ninetiles .observer-pattern i{width:12px;height:12px}
  .board-scout .board-controls{padding:12px 7px}
  .board-scout .scout-card{width:58px;min-height:110px}
  .board-scout .scout-hand .scout-card{width:78px;min-height:0}
  .board-scout .scout-show .scout-card{width:76px;min-height:0}
  .scout-hand{justify-content:flex-start;padding-inline:8px}
  .scout-show{min-height:130px;gap:4px}
  .scout-empty{font-size:1.1rem}
  .scout-recruit-tools button{font-size:.7rem;padding:7px 10px}
  .board-scout .board-controls .card-hand{justify-content:flex-start}
  .board-scout .scout-form{gap:8px;justify-content:stretch}
  .board-scout .scout-form>label{flex:1;min-width:110px}
  .board-scout .scout-form>button{width:100%}
  .board-rafter .raft-viewport{height:clamp(310px,49svh,480px);border-radius:8px}
  .raft-camera{gap:5px;flex-wrap:wrap}
  .raft-camera button,.raft-toolbar button{font-size:.68rem;padding:7px 10px}
  .raft-reserves{gap:6px 12px;font-size:.63rem}
  .raft-reserves strong{font-size:.65rem}
  .raft-status{font-size:.7rem}
}
@media(prefers-reduced-motion:reduce){.tile-finish.holding::before{transition:none}}
.calm .tile-finish.holding::before{transition:none}
