:root{
  --paper:#F3EEE3;
  --paper-hi:#FBF8F1;
  --ink:#15130F;
  --blue:#1E49FF;
  --line:rgba(21,19,15,.16);
  --display:'Archivo Black','Archivo','Segoe UI',system-ui,sans-serif;
  --body:'Archivo','Segoe UI',system-ui,sans-serif;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{
  margin:0;height:100%;background:var(--paper);color:var(--ink);
  font-family:var(--body);font-size:18px;line-height:1.45;
  overflow:hidden;overscroll-behavior:none;
  -webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;
}
canvas#c{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;touch-action:manipulation}
button:focus-visible{outline:3px solid var(--blue);outline-offset:3px}

/* ---------- in-game bar */
.hud{
  position:fixed;left:0;right:0;top:0;z-index:5;
  display:grid;grid-template-columns:auto minmax(120px,460px) auto;justify-content:space-between;align-items:center;gap:18px;
  padding:max(14px,env(safe-area-inset-top)) 18px 10px;pointer-events:none;
}
.hud>*{pointer-events:auto}
.brand{display:flex;align-items:baseline;gap:12px;white-space:nowrap}
.brand b{font-family:var(--display);font-weight:400;font-size:24px;letter-spacing:-.02em}
.brand span{font-weight:700;font-size:18px;opacity:.7}
.share{
  display:flex;height:38px;border:3px solid var(--ink);background:var(--paper-hi);overflow:hidden;
}
.share span{
  display:flex;align-items:center;justify-content:center;min-width:0;overflow:hidden;
  font-weight:800;font-size:18px;color:#fff;transition:flex-grow .35s cubic-bezier(.2,.8,.2,1);
}
.share span.dark{color:var(--ink)}
.tools{display:flex;gap:8px}
.chip{
  height:44px;padding:0 16px;border:3px solid var(--ink);background:var(--paper-hi);
  font-weight:800;font-size:18px;white-space:nowrap;transition:transform .12s ease-out,background .12s;
}
.chip:active{transform:scale(.96)}
@media (hover:hover){.chip:hover{background:var(--ink);color:var(--paper-hi)}}

/* ---------- bottom dock */
.dock{
  position:fixed;left:0;right:0;bottom:0;z-index:5;
  display:flex;flex-direction:column;align-items:center;gap:12px;
  padding:0 16px max(18px,env(safe-area-inset-bottom));pointer-events:none;
}
.dock>*{pointer-events:auto}
.hint{
  max-width:min(760px,100%);padding:12px 20px;background:var(--ink);color:var(--paper-hi);
  font-weight:700;font-size:19px;line-height:1.35;text-align:center;
  opacity:0;transform:translateY(10px);transition:opacity .25s ease-out,transform .25s ease-out;pointer-events:none;
}
.hint.show{opacity:1;transform:none}
.hint.warn{background:#FF4326;color:#fff}
.modes{display:flex;border:3px solid var(--ink);background:var(--paper-hi)}
.modes button{
  min-width:104px;height:54px;padding:0 18px;font-weight:800;font-size:20px;
  display:flex;align-items:center;justify-content:center;gap:10px;
  border-right:3px solid var(--ink);transition:background .12s,color .12s;
}
.modes button:last-child{border-right:0}
.modes button.on{background:var(--blue);color:#fff}
.modes kbd{
  font:inherit;font-size:14px;font-weight:800;line-height:1;padding:4px 6px;border:2px solid currentColor;opacity:.7;
}
@media (hover:none){.modes kbd{display:none}}

/* ---------- screens */
.screen{position:fixed;inset:0;z-index:10;display:flex}
.title{
  align-items:center;
  background:linear-gradient(90deg,var(--paper) 0%,var(--paper) 30%,rgba(243,238,227,0) 58%);
}
.title-col{padding:clamp(24px,6vw,96px);max-width:min(760px,100%)}
.kicker{margin:0 0 18px;font-weight:800;font-size:19px;letter-spacing:.08em;text-transform:uppercase}
h1{
  margin:0;font-family:var(--display);font-weight:400;
  font-size:clamp(84px,11.6vw,200px);line-height:.82;letter-spacing:-.045em;
}
.lede{margin:28px 0 34px;max-width:21em;font-size:clamp(21px,2.1vw,28px);font-weight:500;line-height:1.3}
.row{display:flex;flex-wrap:wrap;gap:12px}
.col{display:flex;flex-direction:column;gap:12px}
.btn{
  min-height:58px;padding:0 26px;border:3px solid var(--ink);background:var(--paper-hi);
  font-weight:800;font-size:21px;white-space:nowrap;
  transition:transform .14s cubic-bezier(.2,.8,.2,1),background .14s,color .14s,box-shadow .14s;
  box-shadow:5px 5px 0 var(--ink);
}
.btn:active{transform:translate(4px,4px);box-shadow:1px 1px 0 var(--ink)}
.btn.primary{background:var(--blue);color:#fff}
.btn.ghost{box-shadow:none;background:transparent}
@media (hover:hover){
  .btn:hover{background:var(--ink);color:var(--paper-hi)}
  .btn.primary:hover{background:#0A2BC4;color:#fff}
}

.panel{align-items:center;justify-content:center;padding:18px;background:rgba(243,238,227,.9)}
.card{
  width:min(560px,100%);max-height:100%;overflow:auto;padding:clamp(22px,4vw,44px);
  background:var(--paper-hi);border:3px solid var(--ink);box-shadow:10px 10px 0 var(--ink);
  animation:rise .28s cubic-bezier(.2,.8,.2,1);
}
.card.wide{width:min(820px,100%)}
@keyframes rise{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
h2{margin:0 0 22px;font-family:var(--display);font-weight:400;font-size:clamp(40px,6vw,64px);line-height:.95;letter-spacing:-.03em}
.verdict{font-size:clamp(56px,10vw,104px);margin-bottom:10px}
.card .row,.card .col{margin-top:26px}
.card .col .btn{width:100%}

.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.lv{
  aspect-ratio:1;border:3px solid var(--ink);background:var(--paper-hi);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  font-family:var(--display);font-size:clamp(30px,6vw,44px);line-height:1;
  transition:background .12s,color .12s,transform .12s;
}
.lv small{font-family:var(--body);font-weight:800;font-size:18px;letter-spacing:.06em}
.lv:disabled{opacity:.32;cursor:not-allowed}
.lv.done{background:var(--blue);color:#fff}
.lv:not(:disabled):active{transform:scale(.96)}
@media (hover:hover){.lv:not(:disabled):hover{background:var(--ink);color:var(--paper-hi)}}

.rules{margin:0;padding-left:1.3em;display:grid;gap:14px;font-size:20px;line-height:1.4}
.rules b{font-weight:900}
.stars{margin:0 0 8px;font-size:44px;line-height:1;letter-spacing:.08em;color:var(--blue)}
.stats{margin:14px 0 0;display:grid;grid-template-columns:1fr auto;gap:8px 24px;font-size:20px}
.stats dt{font-weight:500}
.stats dd{margin:0;font-weight:900;text-align:right;font-variant-numeric:tabular-nums}

.by{margin:26px 0 0;font-weight:800;font-size:19px}
.by a{color:inherit;text-decoration-thickness:2px;text-underline-offset:5px}

/* ---------- shown inside another page (?embed=1): only the battle */
body.embed{pointer-events:none}
body.embed .screen,body.embed .hud,body.embed .dock{display:none!important}

/* ---------- small screens */
@media (max-width:760px){
  .hud{grid-template-columns:1fr auto;gap:10px;padding-left:12px;padding-right:12px}
  .brand b{font-size:20px}
  .share{grid-column:1/-1;grid-row:2;height:32px}
  .chip{height:44px;padding:0 12px}
  #bSound{display:none}
  .modes button{min-width:92px}
}
@media (max-aspect-ratio:1/1){
  .title{align-items:flex-start;background:linear-gradient(180deg,var(--paper) 0%,var(--paper) 52%,rgba(243,238,227,0) 62%)}
  .title-col{padding-top:max(30px,env(safe-area-inset-top));width:100%}
  .kicker{margin-bottom:12px;font-size:18px}
  h1{font-size:clamp(64px,21.5vw,200px)}
  .lede{margin:16px 0 20px;font-size:20px}
  .title .row{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:440px}
  .title .btn{min-height:54px;padding:0 12px;font-size:19px}
}
@media (prefers-reduced-motion:reduce){
  .card{animation:none}
  .btn,.chip,.hint,.share span{transition:none}
}
