:root{
  --sand:#E7DFCB;
  --paper:rgba(246,241,229,.9);
  --ink:#1E1A17;
  --ink-soft:#5B5249;
  --gold:#B8903A;
  --blossom:#D9869A;
  --line:rgba(30,26,23,.14);
  --serif:'Shippori Mincho B1','Hiragino Mincho ProN','Yu Mincho',Georgia,serif;
  --sans:'Zen Kaku Gothic New',system-ui,-apple-system,'Segoe UI',sans-serif;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;overflow:hidden;background:var(--sand);color:var(--ink);font-family:var(--sans);
  -webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;overscroll-behavior:none;touch-action:none}
canvas{position:fixed;inset:0;width:100%;height:100%;display:block}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}

/* HUD: fixed slots and tabular digits, so nothing shifts as the score grows */
.hud{position:fixed;left:0;right:0;top:0;z-index:5;display:grid;grid-template-columns:40px 1fr 1fr 40px 40px;align-items:center;gap:10px;
  padding:calc(env(safe-area-inset-top,0px) + 10px) 16px 0;max-width:620px;margin:0 auto;pointer-events:none}
.hud > *{pointer-events:auto}
.ibtn{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:rgba(246,241,229,.55);display:grid;place-items:center;cursor:pointer;color:var(--ink);text-decoration:none;
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.ibtn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ibtn.slot-off{visibility:hidden}
.ibtn .off{display:none}
.ibtn[aria-pressed="true"] .on{display:none}
.ibtn[aria-pressed="true"] .off{display:block}
.score{display:flex;flex-direction:column;line-height:1}
.score.best{align-items:flex-end;text-align:right}
.score .lbl{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}
.score b{font-family:var(--serif);font-weight:700;font-size:28px;font-variant-numeric:tabular-nums;margin-top:3px;min-width:4ch}
.score.best b{font-size:20px;color:var(--ink-soft)}

/* cards */
.card{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:6;width:min(calc(100% - 32px),380px);
  background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:30px 26px 26px;text-align:center;
  box-shadow:0 30px 60px -30px rgba(60,45,25,.45);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:rise .45s ease both}
.card.small{width:min(calc(100% - 32px),260px)}
@keyframes rise{from{opacity:0;transform:translate(-50%,-46%)}}
h1{font-family:var(--serif);font-weight:800;font-size:clamp(46px,13vw,64px);letter-spacing:.04em;margin:0;line-height:1}
.sub{font-family:var(--serif);font-size:17px;color:var(--ink-soft);margin:8px 0 22px}
.sub::after{content:"";display:block;width:36px;height:2px;margin:16px auto 0;background:var(--gold);border-radius:2px}
.modes{display:grid;gap:10px;margin-bottom:20px}
.mode{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;padding:12px 14px;border-radius:4px;border:1px solid var(--line);background:transparent;cursor:pointer;transition:border-color .15s,background .15s}
.mode b{font-family:var(--serif);font-size:18px}
.mode span{font-size:13px;color:var(--ink-soft);line-height:1.4}
.mode em{font-style:normal;font-variant-numeric:tabular-nums;color:var(--ink)}
.mode[aria-checked="true"]{border-color:var(--ink);background:rgba(255,255,255,.45);box-shadow:inset 3px 0 0 var(--gold)}
.begin{margin:0}
.pill{display:inline-block;font-size:13px;letter-spacing:.04em;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;padding:8px 16px;animation:breathe 2.6s ease-in-out infinite}
@keyframes breathe{50%{opacity:.45}}
.kicker{font-family:var(--serif);font-size:18px;color:var(--ink-soft);margin:0 0 6px}
.final{display:flex;flex-direction:column;align-items:center;margin:6px 0 22px}
.final b{font-family:var(--serif);font-weight:800;font-size:64px;line-height:1;font-variant-numeric:tabular-nums}
.final span{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-top:6px}
.final span.new{color:var(--gold)}
.row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.btn{font-family:var(--serif);font-weight:700;font-size:17px;border:1px solid var(--ink);background:var(--ink);color:#F6F1E5;border-radius:999px;padding:11px 24px;cursor:pointer;transition:transform .1s}
.btn:active{transform:scale(.97)}
.btn.ghost{background:transparent;color:var(--ink)}
@media (prefers-reduced-motion:reduce){.card,.pill{animation:none}}

/* ?demo on the hub stage */
body.demo .hud,body.demo .card{display:none!important}
body.demo{pointer-events:none}
