/* Ollie Arena v2: a bright, daylight pub-games look. Light oak, green baize, polished brass, cream boards with dark text.
   Light is the default whatever the device says; Settings can pick Dark (still warm and fairly bright) or Auto. */
:root{
  --bg:#f4e7cf;--bg2:#ead6b3;--fg:#2a1b0e;--muted:#5e4630;--card:#fffaf0;--card2:#fbf1dc;--line:#c9a272;
  --oak:#c58f55;--oak-d:#9c6a37;--brass1:#f7dc85;--brass2:#c99a2e;--brass3:#9a7114;--baize:#3a9d4f;--baize-d:#2c7f3d;
  --accent:#2c7f3d;--accent-fg:#fff;--plate:#fff7e2;--plate-fg:#2a1b0e;--danger:#a61e1e;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,"Times New Roman",serif;
  --chalk:"Chalkboard SE","Bradley Hand","Segoe Print",var(--serif);
  --sat:env(safe-area-inset-top);--sab:env(safe-area-inset-bottom);--sal:env(safe-area-inset-left);--sar:env(safe-area-inset-right);color-scheme:light}
html[data-ui="dark"]{--bg:#6b543b;--bg2:#5d4832;--fg:#fff6e4;--muted:#f0dcc0;--card:#7d6447;--card2:#866c4e;--line:#c9a272;--plate:#fff2d4;--plate-fg:#2a1b0e;--accent:#3a9d4f;color-scheme:dark}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;color:var(--fg);font:17px/1.45 var(--serif);overscroll-behavior:none;
  background:var(--bg) repeating-linear-gradient(92deg,rgba(255,255,255,.18) 0 3px,transparent 3px 22px,rgba(120,70,20,.05) 22px 24px,transparent 24px 47px)}
body.playing{overflow:hidden;position:fixed;inset:0;touch-action:none;-webkit-user-select:none;user-select:none}
#app{height:100%}
.screen{display:none;min-height:100%;padding:calc(12px + var(--sat)) calc(16px + var(--sar)) calc(16px + var(--sab)) calc(16px + var(--sal));flex-direction:column}
.screen.active{display:flex}
h1{font-size:2.5rem;margin:.15em 0 0;font-weight:700;letter-spacing:.01em}
h2{margin:0;font-size:1.4rem;font-weight:700}
h3{margin:1.1em 0 .4em;font-size:.9rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}
.hint{color:var(--muted);font-size:.95rem;margin:.4em 0}.warn{color:var(--danger);font-weight:700}
/* buttons: cream boards in an oak frame; primary = brass */
.btn{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50px;padding:10px 16px;border-radius:14px;border:3px solid var(--oak);background:var(--card);color:var(--fg);font:inherit;font-weight:700;cursor:pointer;width:100%;margin:6px 0;box-shadow:0 3px 0 var(--oak-d),0 4px 10px rgba(120,70,20,.15)}
.btn small{font-weight:400;color:var(--muted);font-size:.85rem;font-style:italic}
.btn.primary{background:linear-gradient(180deg,var(--brass1),var(--brass2));border-color:var(--brass3);color:#2a1b0e;box-shadow:0 3px 0 var(--brass3),0 4px 12px rgba(150,110,20,.3);text-shadow:0 1px 0 rgba(255,255,255,.5)}
.btn.big{min-height:62px;font-size:1.35rem}
.btn.ghost{background:var(--card2)}.btn.small{min-height:44px;width:auto}.btn.danger{color:var(--danger);border-color:#d99}
.btn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--oak-d)}
.icon-btn{min-width:44px;min-height:44px;border:3px solid var(--oak);border-radius:12px;background:var(--card);color:var(--fg);font-size:1.2rem;font-weight:800;cursor:pointer;font-family:inherit}
.home-top{display:flex;justify-content:flex-end}
.brand{text-align:center;margin:3vh 0 2.5vh}.logo{width:96px;height:96px;border-radius:24px;box-shadow:0 0 0 4px var(--brass2),0 6px 16px rgba(120,70,20,.25)}
.tagline{color:var(--muted);margin:.2em 0;font-style:italic}
.menu{width:100%;max-width:520px;margin:0 auto}
.row2,.row3{display:grid;gap:8px}.row2{grid-template-columns:1fr 1fr}.row3{grid-template-columns:1fr 1fr 1fr}
.modes3{display:grid;gap:8px;grid-template-columns:1fr}
.mode-quick{align-items:flex-start;text-align:left;color:#fff;border-color:var(--oak);text-shadow:0 1px 2px rgba(0,0,0,.35)}
.mode-quick b{font-size:1.15rem}.mode-quick small{color:#fff;font-style:italic;opacity:.95}
.mode-quick.oak{background:radial-gradient(circle at 85% 50%,#e9c58f 0 18%,#b8742f 19% 22%,#e2b679 23% 40%,transparent 41%),linear-gradient(135deg,#3a9d4f,#2f8a43)}
.mode-quick.baize{background:linear-gradient(135deg,#46b25b,#2f8a43);box-shadow:inset 0 0 0 4px var(--brass2),0 3px 0 var(--oak-d)}
.mode-quick.garden{background:radial-gradient(circle at 85% 50%,#3b2a14 0 7%,var(--brass1) 8% 10%,#d9a865 11% 19%,transparent 20%),linear-gradient(135deg,#59b86a,#3a9d4f)}
.bar{display:flex;align-items:center;gap:8px;margin-bottom:8px}.bar h2{flex:1;text-align:center}.bar .sp{width:44px}
.scroll{width:100%;max-width:600px;margin:0 auto;overflow:auto;-webkit-overflow-scrolling:touch}.centre{text-align:center}
.prose p{margin:.3em 0 .8em}
.seg{display:flex;gap:4px;background:var(--bg2);padding:4px;border-radius:12px;border:2px solid var(--line)}
.seg button{flex:1;min-height:44px;border:0;border-radius:9px;background:transparent;color:var(--fg);font:inherit;font-weight:700;cursor:pointer;padding:4px 6px}
.seg button[aria-checked="true"]{background:linear-gradient(180deg,var(--brass1),var(--brass2));color:#2a1b0e;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.seg.small button{min-height:44px;font-size:.95rem}
.seat{background:var(--card);border:3px solid var(--oak);border-radius:14px;padding:10px;margin:8px 0;display:grid;gap:8px}
.seat-head{display:flex;align-items:center;gap:10px}.seat-head b{flex:1}
.corner{width:22px;height:22px;border:3px solid var(--muted);border-radius:4px}
.corner.c0{border-top-color:transparent;border-right-color:transparent}.corner.c1{border-bottom-color:transparent;border-left-color:transparent}.corner.c2{border-bottom-color:transparent;border-right-color:transparent}.corner.c3{border-top-color:transparent;border-left-color:transparent}
.swatch{width:44px;height:44px;border-radius:50%;border:3px solid var(--card);box-shadow:0 0 0 3px var(--brass2);cursor:pointer}
input.name{min-height:46px;border-radius:10px;border:2px solid var(--line);background:#fff;color:#2a1b0e;font:inherit;padding:0 12px}
/* brass name plate with initials; colour shown as a stud */
.plate{flex:none;display:inline-flex;align-items:center;gap:4px;min-width:42px;height:30px;padding:0 7px 0 5px;border-radius:6px;background:linear-gradient(180deg,var(--brass1),var(--brass2));border:1px solid var(--brass3);color:#2a1b0e;font:700 .9rem/1 var(--serif);letter-spacing:.04em;box-shadow:inset 0 1px 0 rgba(255,255,255,.6)}
.plate i{width:13px;height:13px;border-radius:50%;flex:none;box-shadow:inset -2px -2px 3px rgba(0,0,0,.35),0 0 0 1.5px rgba(255,255,255,.7)}
.seat-head .plate{height:38px;font-size:1.05rem;min-width:56px}
.toggle,.slider{display:flex;align-items:center;justify-content:space-between;min-height:52px;padding:6px 12px;background:var(--card);border:2px solid var(--line);border-radius:12px;margin:6px 0;gap:12px}
.toggle input{width:28px;height:28px;accent-color:var(--accent)}.slider input{flex:1;max-width:60%;accent-color:var(--accent);min-height:44px}
.swatches{display:flex;gap:6px;margin:8px 0}.swatches span{width:28px;height:28px;border-radius:50%;box-shadow:inset -4px -4px 8px rgba(0,0,0,.3)}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:6px 0}
.tile{background:var(--card);border:3px solid var(--oak);border-radius:12px;padding:12px;text-align:center}.tile b{display:block;font-size:1.9rem}.tile span{color:var(--muted);font-size:.9rem}
.result-list{list-style:none;padding:0;margin:12px 0}
.result-list li{display:flex;align-items:center;gap:10px;background:var(--card);border:2px solid var(--line);border-radius:12px;padding:10px 14px;margin:6px 0;min-height:50px}
.result-list .nm{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-list b{font-size:1.4rem;min-width:3ch;text-align:right}
.badge{font-size:.8rem;font-weight:800}.badge.win{background:linear-gradient(180deg,var(--brass1),var(--brass2));color:#2a1b0e;border-radius:999px;padding:2px 9px}
.recent{list-style:none;padding:0;color:var(--muted);font-size:.95rem}.recent li{padding:6px 0;border-bottom:1px solid var(--line)}
.trophy{font-size:4rem;margin-top:3vh}
.a2hs{margin:16px auto 0;max-width:520px;background:var(--card);border:2px dashed var(--oak);border-radius:14px;padding:10px 14px;display:flex;gap:10px;align-items:center}
.a2hs[hidden]{display:none}.a2hs p{margin:0;flex:1;font-size:.95rem}.share{font-weight:700}
/* game screen: a sunny pub table top */
.screen.game{padding:calc(6px + var(--sat)) calc(6px + var(--sar)) calc(6px + var(--sab)) calc(6px + var(--sal));height:100%;overflow:hidden;position:relative;background:#e9cf9f repeating-linear-gradient(90deg,rgba(255,255,255,.22) 0 4px,transparent 4px 30px,rgba(140,90,30,.08) 30px 32px,transparent 32px 64px)}
html[data-ui="dark"] .screen.game{background-color:#8a6a47}
.hud{display:flex;align-items:center;gap:6px;flex:none;color:var(--fg)}
.scores{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:4px;min-width:0}
@media (min-width:700px){.scores{grid-template-columns:repeat(4,1fr)}}
/* scoreboard chips: cream chalkboard panels in an oak frame, dark writing */
.chip{display:flex;align-items:center;gap:5px;background:#fffaf0;color:#2a1b0e;border:3px solid var(--oak);border-radius:10px;padding:3px 7px 3px 4px;min-height:40px;min-width:0;overflow:hidden}
.chip.turn{border-color:var(--brass2);box-shadow:0 0 0 2px var(--brass1)}
.chip .nm{flex:1;min-width:0;white-space:normal;overflow-wrap:normal;line-height:1.1;font-size:.82rem;font-weight:700}
.chip .badge{flex:none;color:#9a7114;width:1em;text-align:center}
.chip .tally{flex:none;height:16px;display:block}
.chip .pts{flex:none;font:700 1.25rem/1 var(--chalk);min-width:2.2ch;text-align:right;color:#1d1209}
.scores.compact .chip .nm{display:none}.scores.compact .chip{justify-content:space-between}
.timer{flex:none;font:700 1.3rem/1 var(--serif);background:#fffaf0;color:#2a1b0e;border:3px solid var(--oak);padding:4px 10px;border-radius:10px;min-height:40px;display:flex;align-items:center;font-variant-numeric:tabular-nums}
.timer[hidden]{display:none}.timer.low{color:#b02020}
.banner{position:absolute;left:50%;top:8px;transform:translateX(-50%);background:#fffaf0;color:#2a1b0e;border:3px solid var(--brass2);font-weight:700;padding:6px 14px;border-radius:999px;opacity:0;pointer-events:none;z-index:2;white-space:nowrap;font-size:1rem;box-shadow:0 3px 10px rgba(120,70,20,.25)}
.banner.show{animation:ban 2.4s ease forwards}@keyframes ban{0%{opacity:0}10%{opacity:1}80%{opacity:1}100%{opacity:0}}
.board-wrap{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;touch-action:none}
canvas#board{display:block;touch-action:none;border-radius:14px;box-shadow:0 6px 18px rgba(120,70,20,.25)}
.foot{flex:none;text-align:center;color:var(--fg);font-size:.85rem;padding:4px;font-style:italic}
@media (orientation:landscape) and (max-height:500px){.foot{display:none}.brand{margin:1vh 0}.logo{width:64px;height:64px}h1{font-size:1.8rem}.screen:not(.game){padding-top:calc(6px + var(--sat))}.modes3{grid-template-columns:1fr 1fr 1fr}
  .screen.game{flex-direction:row;gap:6px}
  .hud{flex-direction:column;width:160px;align-items:stretch}
  .hud .scores{grid-template-columns:1fr;align-content:start;flex:1}
  .hud .chip{flex:none}.hud .icon-btn{flex:none;height:44px}}
.modal{position:absolute;inset:0;background:rgba(80,50,20,.35);display:flex;align-items:center;justify-content:center;z-index:5}
.modal[hidden]{display:none}.modal .card{background:var(--card);color:var(--fg);border:4px solid var(--oak);border-radius:18px;padding:20px;width:min(340px,90%);text-align:center}

.chip{gap:4px;padding:2px 5px 2px 3px}
.chip .plate{min-width:36px;padding:0 5px 0 4px;font-size:.85rem}
.chip .mid{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:1px}
.chip .nm{flex:none;font-size:.78rem}
.chip .tally{height:14px;overflow:hidden}.chip .tally svg{height:14px;width:auto}
.chip .pts{min-width:1.6ch;font-size:1.2rem}
.scores.compact .chip .mid{align-items:flex-start}
@media (orientation:landscape) and (max-height:500px){.hud{width:176px}}
@media (min-width:700px){.scores[data-n="3"]{grid-template-columns:repeat(3,1fr)}.scores[data-n="2"]{grid-template-columns:repeat(2,1fr)}.scores[data-n="1"]{grid-template-columns:1fr}}
@media (orientation:landscape) and (max-height:500px){.hud .scores[data-n]{grid-template-columns:1fr}}

/* ===== v3: richer daylight pub look. Textures are small tileable WebP files from tools/textures.js ===== */
:root{--tex-oak:url(assets/oak.webp);--tex-felt:url(assets/felt.webp);--tex-slate:url(assets/slate.webp);
  --walnut:rgba(104,58,24,.74);--chalk-fg:#fffbee;--slate:#46554f;
  --studs:radial-gradient(circle at 11px 11px,#fffbe0 0 1px,#e3b543 2px,#8f6512 3.6px,transparent 4.2px),radial-gradient(circle at calc(100% - 11px) 11px,#fffbe0 0 1px,#e3b543 2px,#8f6512 3.6px,transparent 4.2px),radial-gradient(circle at 11px calc(100% - 11px),#fffbe0 0 1px,#e3b543 2px,#8f6512 3.6px,transparent 4.2px),radial-gradient(circle at calc(100% - 11px) calc(100% - 11px),#fffbe0 0 1px,#e3b543 2px,#8f6512 3.6px,transparent 4.2px)}
html,body{background:linear-gradient(rgba(255,249,236,.55),rgba(255,249,236,.55)),var(--bg) var(--tex-oak) 0 0/380px auto}
html[data-ui="dark"],html[data-ui="dark"] body{background:linear-gradient(rgba(90,60,30,.55),rgba(90,60,30,.55)),var(--bg) var(--tex-oak) 0 0/380px auto}
/* wooden plaque with cream serif lettering and brass studs */
.plaque{position:relative;background:var(--studs),linear-gradient(180deg,rgba(255,255,255,.14),rgba(0,0,0,.08)),linear-gradient(var(--walnut),var(--walnut)),#7a4a24 var(--tex-oak) 0 0/300px auto;
  color:#fff4d8;border:3px solid #5e3816;border-radius:14px;box-shadow:inset 0 2px 0 rgba(255,235,200,.45),inset 0 -3px 0 rgba(40,20,5,.35),inset 0 0 0 5px rgba(255,220,150,.12),0 4px 10px rgba(90,55,20,.28);text-shadow:0 1px 0 rgba(40,20,5,.8),0 0 1px rgba(40,20,5,.6)}
.brand h1.plaque{display:inline-block;padding:.12em .9em .18em;margin-top:.25em;font-size:2.3rem}
.brand .logo{box-shadow:0 0 0 4px #e3b543,0 0 0 6px #8f6512,0 6px 16px rgba(120,70,20,.25)}
.mode-quick{color:#fff4d8;border:3px solid #5e3816;padding-left:24px;padding-right:24px}
.mode-quick b{font-size:1.2rem;letter-spacing:.02em}.mode-quick small{color:#fbe8c4}
.mode-quick.oak{background:var(--studs),radial-gradient(circle at 86% 50%,#f0d49b 0 11%,#e3b543 11.5% 13%,#e9c58f 13.5% 21%,#e3b543 21.5% 23%,#dcb178 23.5% 31%,#8f6512 31.5% 33%,transparent 33.5%),linear-gradient(var(--walnut),var(--walnut)),#7a4a24 var(--tex-oak) 0 0/300px auto}
.mode-quick.baize{background:var(--studs),radial-gradient(ellipse 22% 62% at 86% 50%,#5bc06f 0 80%,#e3b543 82% 88%,#7a4a22 90% 98%,transparent 99%),linear-gradient(var(--walnut),var(--walnut)),#7a4a24 var(--tex-oak) 0 0/300px auto;box-shadow:inset 0 2px 0 rgba(255,235,200,.45),0 3px 0 #5e3816}
.mode-quick.garden{background:var(--studs),radial-gradient(circle at 86% 50%,#24140a 0 8%,#f0cf6e 8.5% 11%,#d9a464 11.5% 24%,#8f6512 24.5% 26%,transparent 26.5%),linear-gradient(var(--walnut),var(--walnut)),#7a4a24 var(--tex-oak) 0 0/300px auto}
.mode-quick,.btn.ghost,.btn.primary{box-shadow:inset 0 2px 0 rgba(255,235,200,.45),inset 0 -3px 0 rgba(40,20,5,.25),0 3px 0 #5e3816,0 5px 10px rgba(90,55,20,.22)}
.btn.ghost,.icon-btn,.seat,.tile,.toggle,.slider,.result-list li,.modal .card{border-color:#b9824a;box-shadow:inset 0 0 0 2px rgba(255,255,255,.6),0 2px 0 #8a5a2b,0 4px 8px rgba(90,55,20,.15)}
.btn.primary{background:linear-gradient(180deg,#fff0b0 0%,#f0cf6e 30%,#d9a93a 70%,#b5861c 100%);border-color:#8f6512}
.plate{background:linear-gradient(180deg,#fff4c2 0%,#f0cf6e 35%,#c9982c 70%,#e8c25a 100%);border:1px solid #7d5a10;box-shadow:inset 0 1px 0 rgba(255,255,255,.8),inset 0 -1px 0 rgba(90,60,10,.4),0 1px 2px rgba(60,35,5,.35)}
/* game: light oak floor, slate scoreboards with chalk lettering in oak frames */
.screen.game{background:linear-gradient(rgba(255,249,236,.3),rgba(255,249,236,.3)),#e9cf9f var(--tex-oak) 0 0/420px auto}
html[data-ui="dark"] .screen.game{background:linear-gradient(rgba(90,60,30,.45),rgba(90,60,30,.45)),#8a6a47 var(--tex-oak) 0 0/420px auto}
.chip{background:var(--slate) var(--tex-slate) 0 0/256px;color:var(--chalk-fg);border:3px solid #b9824a;border-image:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,.12),inset 0 2px 5px rgba(0,0,0,.25),0 2px 0 #8a5a2b}
.chip .nm{color:var(--chalk-fg);font-family:var(--chalk);letter-spacing:.02em}
.chip .pts{color:var(--chalk-fg);text-shadow:0 0 1px rgba(255,255,255,.4)}
.chip .badge{color:#f6d77a}
.chip .tally svg g{stroke:#fffbee}
.chip.turn{border-color:#e3b543;box-shadow:0 0 0 2px #f6d77a,inset 0 2px 5px rgba(0,0,0,.25)}
/* brass clock-style timer */
.timer{width:58px;height:58px;min-height:0;padding:0;border-radius:50%;justify-content:center;font-size:1.05rem;color:#2a1b0e;
  border:4px solid #c9982c;background:radial-gradient(circle,#fffaf0 0 55%,#f4e7cf 70%,#e8d6b2 100%);box-shadow:0 0 0 2px #8f6512,inset 0 0 0 1px #fff4c2,inset 0 2px 4px rgba(90,55,20,.3),0 3px 6px rgba(90,55,20,.3)}
.timer.low{color:#a61e1e}
.banner{background:#fffaf0;border-color:#c9982c}
canvas#board{border-radius:10px;box-shadow:0 0 0 2px #8a5a2b,0 6px 16px rgba(90,55,20,.28)}
.chip .nm{font-size:.8rem}

/* ===== v4: pre-rendered pub-games art from tools/assets.py (scene, plaque, signs, brass, oak frames, slate) ===== */
:root{--tex-slate:url(assets/slate.webp)}
html,body{background:#f6ecd8 url(assets/scene.webp) center/cover fixed}
html[data-ui="dark"],html[data-ui="dark"] body{background:linear-gradient(rgba(80,52,26,.5),rgba(80,52,26,.5)),#6b543b url(assets/scene.webp) center/cover fixed}
.screen.game{background:#efe2c8 url(assets/scene.webp) center/cover}
html[data-ui="dark"] .screen.game{background:linear-gradient(rgba(80,52,26,.45),rgba(80,52,26,.45)),#8a6a47 url(assets/scene.webp) center/cover}
/* carved plaque with embossed cream serif letters and brass studs (studs are in the image) */
.plaque{background:url(assets/plaque.webp) center/100% 100% no-repeat;border:0;border-radius:18px;color:#fff3d2;
  box-shadow:0 6px 12px rgba(70,40,15,.35),0 2px 3px rgba(70,40,15,.3);text-shadow:0 -1px 0 rgba(30,14,2,.9),0 1px 0 rgba(255,236,190,.35),0 2px 3px rgba(30,14,2,.55)}
.brand h1.plaque{padding:.35em 1.3em .42em;font-size:2.35rem;letter-spacing:.02em}
.mode-quick{border:0;min-height:86px;padding:14px 120px 14px 30px}
.mode-quick b{font-size:1.25rem}.mode-quick small{color:#fbe6c0}
.mode-quick.oak{background:url(assets/sign-rally.webp) right 22px center/auto 70% no-repeat,url(assets/plaque.webp) center/100% 100% no-repeat}
.mode-quick.baize{background:url(assets/sign-knockout.webp) right 22px center/auto 70% no-repeat,url(assets/plaque.webp) center/100% 100% no-repeat}
.mode-quick.garden{background:url(assets/sign-muncher.webp) right 22px center/auto 70% no-repeat,url(assets/plaque.webp) center/100% 100% no-repeat}
.mode-quick,.mode-quick.baize{box-shadow:0 5px 10px rgba(70,40,15,.32),0 2px 2px rgba(70,40,15,.3)}
.mode-quick:active{transform:translateY(2px);box-shadow:0 2px 4px rgba(70,40,15,.35)}
/* polished brass buttons */
.btn.primary,.seg button[aria-checked="true"],.badge.win{background:url(assets/brass.webp) center/100% 100%;border:1px solid #7d5a10;color:#2a1b0e;text-shadow:0 1px 0 rgba(255,250,220,.7)}
.btn.primary{box-shadow:0 4px 0 #7d5a10,0 6px 12px rgba(90,60,10,.3),inset 0 1px 0 rgba(255,255,240,.8)}
.btn.primary:active{transform:translateY(3px);box-shadow:0 1px 0 #7d5a10,inset 0 2px 6px rgba(80,50,5,.45);filter:brightness(.93)}
/* cream painted boards in oak picture frames */
.btn.ghost,.icon-btn,.seat,.tile,.toggle,.slider,.result-list li,.modal .card{border:6px solid #b07a43;border-image:url(assets/frame.webp) 22 / 6px stretch;border-radius:0;background:#fffaf0;box-shadow:0 3px 6px rgba(70,40,15,.22),inset 0 0 6px rgba(120,80,30,.15)}
html[data-ui="dark"] .btn.ghost,html[data-ui="dark"] .icon-btn,html[data-ui="dark"] .seat,html[data-ui="dark"] .tile,html[data-ui="dark"] .toggle,html[data-ui="dark"] .slider,html[data-ui="dark"] .result-list li,html[data-ui="dark"] .modal .card{background:var(--card)}
.btn.ghost:active,.icon-btn:active{transform:translateY(2px);filter:brightness(.95)}
/* slate scoreboards in oak frames, chalk lettering */
.chip{border:6px solid #b07a43;border-image:url(assets/frame.webp) 22 / 6px stretch;border-radius:0;background:var(--slate) var(--tex-slate) 0 0/256px auto;box-shadow:0 3px 6px rgba(70,40,15,.3),inset 0 2px 6px rgba(0,0,0,.35)}
.chip.turn{border-image:none;border-color:#e0b347;box-shadow:0 0 0 2px #8f6512,0 0 10px rgba(255,214,110,.8),inset 0 2px 6px rgba(0,0,0,.35)}
.chip .pts{font-size:1.3rem;text-shadow:0 0 2px rgba(255,255,255,.35)}
/* brass name plates, engraved initials */
.plate{background:url(assets/brass.webp) center/100% 100%;color:#3a2608;text-shadow:0 1px 0 rgba(255,250,220,.8),0 -1px 0 rgba(90,60,10,.5)}
/* brass clock-style timer: dial with ticks and a sweeping hand */
.timer{position:relative;width:66px;height:66px;border-radius:50%;border:5px solid #c9982c;background:url(assets/brass.webp) center/100% 100%;padding:0;box-shadow:0 3px 6px rgba(70,40,15,.35),inset 0 0 0 1px rgba(255,250,220,.7)}
.timer .dial{position:absolute;inset:3px;border-radius:50%;background:repeating-conic-gradient(from -1deg,#3a2608 0 2deg,transparent 2deg 30deg),radial-gradient(circle,#fffaf0 0 62%,#f1e3c3 63%);-webkit-mask:radial-gradient(circle,#000 0 100%);box-shadow:inset 0 2px 4px rgba(70,40,15,.45)}
.timer .dial::after{content:"";position:absolute;inset:5px;border-radius:50%;background:radial-gradient(circle,#fffaf0 0 70%,#f6ead0 100%)}
.timer .hand{position:absolute;left:50%;bottom:50%;width:2px;height:38%;margin-left:-1px;background:#a61e1e;transform-origin:50% 100%;transform:rotate(var(--a,0deg));border-radius:2px;z-index:1}
.timer .t{position:relative;z-index:2;font:700 .9rem/1 var(--serif);color:#2a1b0e;background:rgba(255,250,240,.85);padding:1px 3px;border-radius:4px;margin-top:22px}
canvas#board{border-radius:4px;box-shadow:0 10px 22px rgba(60,35,10,.35),0 2px 4px rgba(60,35,10,.3)}
.seat-head .plate{height:40px}
.chip{border-width:4px;border-image-width:4px;padding:1px 4px 1px 2px}
.timer{width:56px;height:56px;border-width:4px}.timer .t{margin-top:18px;font-size:.82rem}
@media (orientation:landscape) and (max-height:500px){.mode-quick{padding:10px 58px 10px 18px;min-height:70px;background-size:auto 52%,100% 100%;background-position:right 10px center,center}.mode-quick b{font-size:1.05rem}.timer{align-self:center}}
@media (max-width:420px){.mode-quick{padding-right:100px}}
@media (max-width:420px){.timer{width:50px;height:50px;border-width:3px}.timer .t{margin-top:16px;font-size:.78rem}.hud{gap:4px}}

/* ---------- v5: livelier, juicier, iPad first-class ---------- */
html,body{overscroll-behavior:none;-webkit-tap-highlight-color:transparent}
body.playing,body.playing *{touch-action:none;-webkit-touch-callout:none}
#homeFx,#confetti{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none}
#homeFx{z-index:0}#confetti{z-index:20}#homeFx[hidden],#confetti[hidden]{display:none}
#home{position:relative;z-index:1}
/* playful screen transitions */
.screen.active{animation:scrIn .32s cubic-bezier(.2,1.4,.4,1) both}
@keyframes scrIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
/* bolder, friendlier type and a bouncy title */
h1.plaque{letter-spacing:.01em;text-shadow:0 2px 0 rgba(60,30,5,.6),0 0 18px rgba(255,220,120,.35);animation:bob 3.2s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-.6deg)}50%{transform:translateY(-4px) rotate(.6deg)}}
.mode-quick{transition:transform .12s}.mode-quick:active{transform:scale(.97) rotate(-.5deg)}
.mode-quick.oak{box-shadow:inset 8px 0 0 #e6332a,0 4px 0 #4a2a10,0 8px 16px rgba(80,40,10,.3)}
.mode-quick.baize{box-shadow:inset 8px 0 0 #1e88e5,0 4px 0 #4a2a10,0 8px 16px rgba(80,40,10,.3)}
.mode-quick.garden{box-shadow:inset 8px 0 0 #43a047,0 4px 0 #4a2a10,0 8px 16px rgba(80,40,10,.3)}
.mode-quick b{font-size:1.25rem;font-weight:900;text-shadow:0 2px 0 rgba(40,20,5,.7)}
.btn.primary{font-weight:900;font-size:1.25rem;letter-spacing:.02em}
.btn.primary:active,.btn:active{transform:translateY(2px)}
/* turn banner: bold round badge */
.banner{font-weight:900;border-width:4px;padding:7px 18px;font-size:1.05rem}
.timer{border-radius:50%!important}
.timer.low{animation:tick .5s ease-in-out infinite alternate}@keyframes tick{to{transform:scale(1.08)}}
/* winner screen */
#result.active #resultTitle{animation:win .8s cubic-bezier(.2,1.6,.4,1) both;font-weight:900}
@keyframes win{0%{transform:scale(.3) rotate(-8deg);opacity:0}60%{transform:scale(1.12) rotate(2deg);opacity:1}100%{transform:none}}
#resultList li{animation:scrIn .4s both}#resultList li:nth-child(2){animation-delay:.1s}#resultList li:nth-child(3){animation-delay:.2s}#resultList li:nth-child(4){animation-delay:.3s}
/* tabletop seats: scores live on the board at each corner (canvas), so the HUD strip shrinks and the board grows */
body.seats .hud .scores{visibility:hidden;height:0;min-height:0;overflow:hidden}
body.seats .foot{display:none}
body.seats .hud{justify-content:space-between}
/* iPad: bigger targets, board uses most of the screen */
@media (min-width:700px) and (min-height:700px){
  .icon-btn{min-width:56px;min-height:56px;font-size:1.5rem}
  .timer{width:74px!important;height:74px!important;font-size:1.35rem}
  .banner{font-size:1.3rem;top:12px}
  .screen.game{padding:calc(8px + var(--sat)) calc(8px + var(--sar)) calc(8px + var(--sab)) calc(8px + var(--sal))}
  canvas#board{border-radius:20px}
  .chip{min-height:52px}.chip .nm{font-size:1rem}.chip .pts{font-size:1.6rem}
  #home .modes3,#home .menu{max-width:640px;margin-left:auto;margin-right:auto}
}
@media (orientation:landscape) and (min-height:700px){
  .screen.game{flex-direction:row;gap:10px}
  body.seats .hud{position:absolute;z-index:3;left:calc(8px + var(--sal));top:calc(8px + var(--sat));bottom:calc(8px + var(--sab));width:76px;flex-direction:column;align-items:center;pointer-events:none}
  body.seats .hud > *{pointer-events:auto}
  body.seats .board-wrap{width:100%}
  body:not(.seats) .hud{width:220px;align-items:stretch}
  body:not(.seats) .hud .scores{grid-template-columns:1fr;align-content:start;flex:1}
}
@media (prefers-reduced-motion:reduce){.screen.active,h1.plaque,.timer.low,#result.active #resultTitle,#resultList li{animation:none}}
