:root{
  --paper:#FAF3F1;
  --paper-hi:#FFFDFB;
  --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}
canvas#ov{position:fixed;inset:0;width:100%;height:100%;display:block;pointer-events:none;z-index:1}
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(250,243,241,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(64px,8.6vw,150px);line-height:.86;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(250,243,241,.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(250,243,241,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(52px,15.5vw,150px)}
  .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}
}

/* ---------- version 2 additions */
.versions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:26px 0 0;font-weight:800;font-size:18px}
.versions>span:first-child{margin-right:6px;letter-spacing:.06em;text-transform:uppercase;font-size:16px}
.versions a,.versions .on{padding:6px 12px;border:3px solid var(--ink);color:inherit;text-decoration:none;background:var(--paper-hi)}
.versions .on{background:var(--ink);color:var(--paper-hi)}
@media (hover:hover){.versions a:hover{background:var(--ink);color:var(--paper-hi)}}

.card.design{width:min(1120px,100%)}
.design h2{margin-bottom:14px;font-size:clamp(36px,4.4vw,52px)}
.design h3{margin:0 0 10px;font-weight:900;font-size:20px;letter-spacing:.02em;display:flex;align-items:baseline;gap:10px}
.design h3 small{font-weight:700;font-size:17px;opacity:.7}
.design-grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.2fr);grid-template-areas:"left right" "play right";grid-template-rows:auto 1fr;column-gap:28px}
.design-left{grid-area:left}.design-right{grid-area:right}
.card .design-play{grid-area:play;align-self:start;margin-top:24px}
.design-right>*+h3{margin-top:18px}
.dish{width:100%;aspect-ratio:1/.72;display:block;border:3px solid var(--ink);background:#FAF3F1}
.field{display:flex;flex-direction:column;gap:6px;margin-top:16px;font-weight:800;font-size:18px}
.field input{
  font:inherit;font-weight:800;font-size:22px;padding:10px 14px;border:3px solid var(--ink);background:var(--paper-hi);color:var(--ink);
  user-select:text;-webkit-user-select:text;
}
.field input:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.bars{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;align-items:center;margin:16px 0 0;font-size:18px}
.bars dt{font-weight:700}
.bars dd{margin:0;height:14px;border:2px solid var(--ink);background:var(--paper-hi)}
.bars dd i{display:block;height:100%;background:var(--ink);transition:width .3s cubic-bezier(.2,.8,.2,1)}
.strains{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.strain{
  display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px 14px;text-align:left;
  border:3px solid var(--ink);background:var(--paper-hi);transition:background .12s,color .12s;
}
.strain b{font-family:var(--display);font-weight:400;font-size:24px;line-height:1;letter-spacing:-.01em}
.strain span{font-weight:800;font-size:15px;letter-spacing:.06em;text-transform:uppercase;opacity:.75}
.strain small{font-weight:500;font-size:17px;line-height:1.3}
.strain.on{background:var(--ink);color:var(--paper-hi)}
@media (hover:hover){.strain:not(.on):hover{background:#F3E4E6}}
.genes{display:flex;flex-wrap:wrap;gap:8px}
.gene{min-height:46px;padding:0 16px;border:3px solid var(--ink);background:var(--paper-hi);font-weight:800;font-size:18px}
.gene.on{background:var(--blue);color:#fff}
@media (hover:hover){.gene:not(.on):hover{background:#F3E4E6}}
.gene-line{margin:8px 0 0;min-height:2.7em;font-size:18px;line-height:1.35}
.gene-line.warn{color:#C4260C;font-weight:800}
.swatches{display:flex;flex-wrap:wrap;gap:12px}
.sw{width:48px;height:48px;border:3px solid var(--ink)}
.sw.on{outline:4px solid var(--ink);outline-offset:3px}
@media (max-width:860px){
  .design-grid{grid-template-columns:1fr;grid-template-areas:"left" "right" "play";row-gap:20px}
  .dish{aspect-ratio:1/.62}
}
@media (max-width:520px){.strains{grid-template-columns:1fr}}

/* ---------- version 3 */
.title h1{font-size:clamp(84px,14vw,240px)}
@media (max-aspect-ratio:1/1){.title h1{font-size:clamp(84px,30vw,220px)}}

/* ---------- version 4 */
.title h1{font-size:clamp(84px,13vw,230px)}
