@import url("/assets/fonts/fonts.css");

/* ===========================================================================
   Kultural Pole Arts — Heroes & Villains
   Mobile-first, one screen per tab. The page itself never scrolls; only the
   inner content region does, and only when it genuinely must.
   =========================================================================== */

:root{
  --ink:#0b0416;
  --p900:#150a26; --p800:#1f0f38; --p700:#2c1550; --p600:#3d1f6b;
  --gold:#ffd24a; --gold-dp:#e2a81f;
  --pink:#ff4fae; --pink-dp:#d82b8a;
  --paper:#fbf6ff; --muted:#b9a4d6;
  --tap:48px; --headh:86px; --tabh:58px;
  color-scheme:dark;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{margin:0;padding:0}
body{margin:0;padding:0}

body{
  font-family:"Archivo",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  font-size:17px; line-height:1.4; color:var(--paper);
  background:var(--p900);
  background-image:
    radial-gradient(circle at 18% 8%, rgba(255,79,174,.20), transparent 42%),
    radial-gradient(circle at 84% 4%, rgba(255,210,74,.14), transparent 38%),
    radial-gradient(rgba(255,255,255,.05) 1.1px, transparent 1.2px);
  background-size:auto,auto,13px 13px;
  /* Natural document scroll. No nested overflow containers, no fixed body
     height: content can never end up unreachable, which is exactly what the
     previous flex-overflow layout kept doing on real phones. */
  min-height:100dvh;
  padding-bottom:calc(var(--tabh) + env(safe-area-inset-bottom,0px));
}
body.notabs{
  --tabh:0px;
  padding-bottom:calc(.6rem + env(safe-area-inset-bottom,0px));
  -webkit-text-size-adjust:100%;
}

/* ---------- masthead ---------- */
header.top{
  position:sticky; top:0; z-index:12; min-height:var(--headh);
  padding:.5rem .9rem .55rem; text-align:center;
  background:linear-gradient(180deg,var(--p600),var(--p700));
  border-bottom:3px solid var(--gold);
  box-shadow:0 3px 0 var(--pink-dp), 0 6px 18px rgba(0,0,0,.5);
}
header.top .studio{
  font-size:.66rem; font-weight:800; letter-spacing:.3em; text-transform:uppercase;
  color:var(--pink); line-height:1;
}
header.top h1{
  font-family:"Bangers",Impact,fantasy; font-weight:400;
  margin:.14rem 0 0; font-size:2.15rem; line-height:.94; letter-spacing:.035em;
  color:var(--gold);
  text-shadow:2px 2px 0 var(--ink), 4px 4px 0 var(--pink-dp);
  transform:rotate(-1.4deg);
}
header.top .tagline{
  margin-top:.3rem; font-size:.68rem; font-weight:700;
  letter-spacing:.22em; text-transform:uppercase; color:var(--muted);
}

/* ---------- screen shell ---------- */
main{
  display:block;
  padding:.7rem .8rem .8rem;
  max-width:560px; width:100%; margin:0 auto;
}
.screen{display:flex;flex-direction:column;gap:.55rem;
  min-height:calc(100dvh - var(--headh) - var(--tabh) - 1.6rem - 2px)}
/* Regions allowed to scroll internally when content genuinely overflows. */
.scroller{display:block}

/* ---------- comic caption box (section heading) ---------- */
.cap{
  display:inline-block; align-self:flex-start;
  font-family:"Bangers",Impact,fantasy; font-size:1.35rem; letter-spacing:.045em;
  color:var(--ink); background:var(--gold);
  padding:.1rem .6rem .16rem; border:2.5px solid var(--ink);
  box-shadow:3px 3px 0 var(--pink-dp); transform:rotate(-1deg);
  line-height:1.18;
}
.cap.villain{background:var(--pink);box-shadow:3px 3px 0 var(--gold-dp)}
.sub{font-size:.92rem;color:var(--muted);margin:0;line-height:1.35}

/* ---------- panel ---------- */
.panel{
  background:var(--p800); border:2.5px solid var(--gold);
  padding:.7rem .8rem; box-shadow:4px 4px 0 var(--ink);
}
.panel.villain{border-color:var(--pink);box-shadow:4px 4px 0 var(--ink)}
.panel h3{
  font-family:"Bangers",Impact,fantasy; font-weight:400; letter-spacing:.04em;
  margin:0 0 .2rem; font-size:1.2rem; color:var(--gold);
}
.panel.villain h3{color:var(--pink)}
.panel p{margin:.15rem 0;font-size:.95rem;color:var(--paper)}
.panel p.dim{color:var(--muted);font-size:.9rem}

/* ---------- BINGO ---------- */
.card{
  flex:1 1 auto; min-height:min(58vh, 92vw);
  display:grid; grid-template-columns:repeat(5,1fr); grid-template-rows:repeat(5,1fr);
  gap:5px;
}
.sq{
  position:relative; display:grid; place-items:center; text-align:center;
  padding:2px 1px; overflow:hidden; cursor:pointer; user-select:none;
  background:var(--p700); border:2px solid rgba(255,210,74,.34);
  border-radius:3px;
  font-size:clamp(9.5px,2.65vw,13px); font-weight:800; line-height:1.06;
  letter-spacing:.005em; color:var(--paper);
  transition:background .12s, border-color .12s;
}
.sq.free{
  background:linear-gradient(145deg,var(--p600),var(--p700));
  border-color:var(--gold); color:var(--gold);
  font-family:"Bangers",Impact,fantasy; font-weight:400;
  font-size:clamp(10px,2.8vw,14px); letter-spacing:.04em; white-space:pre-line;
}
.sq.on{background:var(--pink);border-color:var(--gold);color:var(--ink)}
.sq.on::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:
    linear-gradient(45deg,transparent 44%,rgba(11,4,22,.55) 45%,rgba(11,4,22,.55) 55%,transparent 56%),
    linear-gradient(-45deg,transparent 44%,rgba(11,4,22,.55) 45%,rgba(11,4,22,.55) 55%,transparent 56%);
}
.sq:active{transform:scale(.96)}

.readout{
  flex:0 0 auto; min-height:2.35rem;
  display:flex; align-items:center; justify-content:center; text-align:center;
  font-size:.86rem; color:var(--muted); line-height:1.2; padding:0 .2rem;
}
.burst{
  position:fixed; inset:0; z-index:40; display:none;
  place-items:center; background:rgba(11,4,22,.82); backdrop-filter:blur(2px);
}
.burst.show{display:grid;animation:fade .2s ease}
.burst .inner{
  font-family:"Bangers",Impact,fantasy; font-size:3.4rem; line-height:.95;
  color:var(--ink); background:var(--gold); text-align:center;
  padding:1.1rem 1.8rem; border:4px solid var(--ink);
  box-shadow:8px 8px 0 var(--pink); transform:rotate(-4deg);
  animation:pop .38s cubic-bezier(.2,1.5,.4,1);
}
.burst .inner small{display:block;font-family:"Archivo";font-size:.85rem;font-weight:800;
  letter-spacing:.16em;text-transform:uppercase;margin-top:.4rem}
@keyframes pop{0%{transform:rotate(-4deg) scale(.5)}70%{transform:rotate(-4deg) scale(1.08)}100%{transform:rotate(-4deg) scale(1)}}
@keyframes fade{from{opacity:0}to{opacity:1}}

/* ---------- buttons ---------- */
.btn{
  display:flex; align-items:center; justify-content:center; gap:.4rem;
  width:100%; min-height:var(--tap); cursor:pointer; text-decoration:none;
  font-family:"Archivo"; font-size:.92rem; font-weight:900;
  letter-spacing:.11em; text-transform:uppercase;
  color:var(--ink); background:var(--gold);
  border:2.5px solid var(--ink); border-radius:3px;
  box-shadow:4px 4px 0 var(--pink-dp);
  padding:.55rem .8rem;
}
.btn.villain{background:var(--pink);box-shadow:4px 4px 0 var(--gold-dp)}
.btn.ghost{background:transparent;color:var(--gold);border-color:var(--gold);box-shadow:none;font-weight:800}
.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--pink-dp)}
.btn.sm{min-height:40px;font-size:.8rem;letter-spacing:.09em}
.btnrow{display:flex;gap:.5rem}
.pushdown{margin-top:auto}
.btnrow>*{flex:1}

/* ---------- forms ---------- */
label{
  display:block; font-size:.74rem; font-weight:900; letter-spacing:.15em;
  text-transform:uppercase; color:var(--gold); margin:.5rem 0 .18rem;
}
input,select,textarea{
  width:100%; min-height:var(--tap);
  background:var(--p900); color:var(--paper);
  border:2.5px solid rgba(255,210,74,.34); border-radius:3px;
  padding:.6rem .7rem; font:inherit; font-size:1rem;
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold)}
textarea{min-height:4.6rem;resize:none}
input[type=file]{padding:.55rem;font-size:.88rem}

/* ---------- TRIVIA: one question per screen ---------- */
.dots{flex:0 0 auto;display:flex;gap:5px;justify-content:center;padding:.1rem 0 .15rem}
.dot{width:9px;height:9px;border-radius:50%;background:var(--p600);border:1.5px solid rgba(255,210,74,.3)}
.dot.done{background:var(--gold);border-color:var(--gold)}
.dot.miss{background:var(--pink);border-color:var(--pink)}
.dot.now{transform:scale(1.35);background:var(--paper);border-color:var(--paper)}
.qwrap{flex:1 0 auto;display:flex;flex-direction:column;justify-content:flex-start;gap:.4rem;padding-top:.4rem}
.qtext{
  font-family:"Bangers",Impact,fantasy; font-weight:400; letter-spacing:.03em;
  font-size:1.6rem; line-height:1.08; color:var(--paper); margin:0 0 .2rem;
}
.opt{
  display:flex; align-items:center; width:100%; min-height:var(--tap);
  text-align:left; cursor:pointer; font:inherit; font-size:1rem; font-weight:600;
  color:var(--paper); background:var(--p800);
  border:2.5px solid rgba(255,210,74,.3); border-radius:3px;
  padding:.6rem .75rem; margin:.32rem 0;
}
.opt.right{border-color:var(--gold);background:rgba(255,210,74,.22);font-weight:800}
.opt.wrong{border-color:var(--pink);background:rgba(255,79,174,.2)}
.opt:disabled{cursor:default}
.note{
  font-size:.92rem; color:var(--muted); line-height:1.35;
  border-left:3px solid var(--pink); padding:.3rem 0 .3rem .6rem; margin:.35rem 0 0;
}
.verdict{text-align:center;padding:.4rem 0}
.verdict .vname{
  font-family:"Bangers",Impact,fantasy; font-size:3rem; line-height:1;
  color:var(--gold); text-shadow:2px 2px 0 var(--ink),4px 4px 0 var(--pink-dp);
}
.verdict .vscore{font-size:.8rem;font-weight:900;letter-spacing:.2em;text-transform:uppercase;color:var(--pink);margin-top:.4rem}
.verdict .vbody{font-size:1rem;color:var(--paper);margin-top:.6rem;line-height:1.4}

/* ---------- ALTER EGO ---------- */
.egostage{display:flex;flex-direction:column;justify-content:flex-start;gap:.7rem;padding-top:.6rem}
.ego{
  text-align:center; padding:1.6rem 1rem;
  background:var(--p800); border:3px solid var(--gold); box-shadow:6px 6px 0 var(--ink);
  transform:rotate(-1deg);
}
.ego .name{
  font-family:"Bangers",Impact,fantasy; font-size:2.6rem; line-height:1;
  color:var(--gold); text-shadow:2px 2px 0 var(--ink),4px 4px 0 var(--pink-dp);
}
.ego .ttl{
  margin-top:.6rem; font-size:.82rem; font-weight:900; letter-spacing:.15em;
  text-transform:uppercase; color:var(--pink); line-height:1.3;
}
.ego.villain{border-color:var(--pink);transform:rotate(1deg)}
.ego.villain .name{color:var(--pink);text-shadow:2px 2px 0 var(--ink),4px 4px 0 var(--gold-dp)}
.ego.villain .ttl{color:var(--gold)}
.ego.empty .name{color:var(--muted);font-size:1.7rem;text-shadow:none}

/* ---------- PHOTOS ---------- */
.chal{
  display:flex; gap:.6rem; align-items:center;
  padding:.5rem .55rem; margin-bottom:.35rem;
  background:var(--p800); border:2px solid rgba(255,210,74,.26); border-radius:3px;
}
.chal .n{
  flex:0 0 1.9rem; height:1.9rem; display:grid; place-items:center; border-radius:50%;
  background:var(--gold); color:var(--ink);
  font-family:"Bangers",Impact,fantasy; font-size:1.05rem; line-height:1;
}
.chal .t{font-size:.95rem;font-weight:800;line-height:1.2}
.chal .d{font-size:.84rem;color:var(--muted);line-height:1.25;margin-top:.1rem}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.grid img{width:100%;aspect-ratio:1;object-fit:cover;border:2px solid rgba(255,210,74,.3);border-radius:3px;display:block}

/* ---------- INFO: segmented, swaps in place ---------- */
.seg{flex:0 0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:4px}
.seg button{
  min-height:40px; cursor:pointer; font:inherit; font-size:.78rem; font-weight:900;
  letter-spacing:.1em; text-transform:uppercase;
  color:var(--muted); background:var(--p800);
  border:2px solid rgba(255,210,74,.28); border-radius:3px;
}
.seg button.on{color:var(--ink);background:var(--gold);border-color:var(--ink)}
.pane{display:none}
.pane.on{display:block}
dl.gloss{margin:0}
dl.gloss dt{
  font-family:"Bangers",Impact,fantasy; font-size:1.2rem; letter-spacing:.04em;
  color:var(--gold); margin-top:.7rem;
}
dl.gloss dt:first-child{margin-top:0}
dl.gloss dd{margin:.1rem 0 0;font-size:.93rem;color:var(--muted);line-height:1.35}
.rule{display:flex;gap:.55rem;padding:.45rem 0;border-bottom:1px solid rgba(255,210,74,.16)}
.rule:last-child{border-bottom:0}
.rule .mk{flex:0 0 auto;color:var(--pink);font-weight:900}
.rule .t{font-size:.96rem;font-weight:800;line-height:1.2}
.rule .d{font-size:.86rem;color:var(--muted);line-height:1.3;margin-top:.1rem}
.kv{display:flex;justify-content:space-between;gap:.8rem;padding:.4rem 0;border-bottom:1px solid rgba(255,210,74,.16)}
.kv:last-child{border-bottom:0}
.kv dt{font-size:.74rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.kv dd{margin:0;font-size:.98rem;font-weight:700;text-align:right}
.ph{color:var(--pink)}

/* ---------- message wall ---------- */
.msg{
  background:var(--p800); border-left:4px solid var(--pink);
  padding:.55rem .7rem; margin-bottom:.45rem;
}
.msg .to{font-size:.7rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.msg .body{font-size:.98rem;margin:.2rem 0;line-height:1.35}
.msg .from{font-size:.82rem;color:var(--muted)}
.flash{
  flex:0 0 auto; font-size:.9rem; font-weight:800;
  border:2.5px solid var(--gold); background:rgba(255,210,74,.16);
  padding:.5rem .7rem;
}
.flash.bad{border-color:var(--pink);background:rgba(255,79,174,.16)}
.empty{text-align:center;color:var(--muted);font-size:.95rem;padding:1.4rem .5rem}

/* ---------- bottom nav ---------- */
nav.tabs{
  position:fixed; left:0; right:0; bottom:0; z-index:12; min-height:var(--tabh);
  display:grid; grid-template-columns:repeat(5,1fr);
  background:linear-gradient(180deg,var(--p700),var(--p800));
  border-top:3px solid var(--gold);
  box-shadow:0 -3px 0 var(--pink-dp);
  padding-bottom:env(safe-area-inset-bottom,0);
}
nav.tabs a{
  min-height:var(--tap);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:.1rem; text-decoration:none; color:var(--muted);
  font-size:.63rem; font-weight:900; letter-spacing:.09em; text-transform:uppercase;
}
nav.tabs a .i{font-size:1.25rem;line-height:1}
nav.tabs a.on{color:var(--gold);background:rgba(255,210,74,.12);box-shadow:inset 0 3px 0 var(--gold)}

/* ---------- short-viewport rescue ---------- */
@media (max-height:660px){
  :root{--headh:70px}
  header.top{padding:.35rem .9rem .4rem}
  header.top h1{font-size:1.75rem}
  header.top .tagline{display:none}
  .cap{font-size:1.15rem}
  .qtext{font-size:1.35rem}
  .ego .name{font-size:2.1rem}
  .verdict .vname{font-size:2.4rem}
}
@media (min-width:480px){
  body{font-size:18px}
  header.top h1{font-size:2.5rem}
}

/* ---------- hamburger + drawer ---------- */
.burger{
  position:absolute; left:.5rem; top:50%; transform:translateY(-50%);
  width:44px; height:44px; display:grid; align-content:center; gap:5px;
  padding:0 10px; background:none; border:0; cursor:pointer; z-index:8;
}
.burger span{display:block;height:3px;border-radius:2px;background:var(--gold);transition:.18s}
.burger.x span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.burger.x span:nth-child(2){opacity:0}
.burger.x span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}

.drawer{position:fixed;inset:0;z-index:30;display:none;background:rgba(11,4,22,.72);backdrop-filter:blur(2px)}
.drawer.open{display:block}
.drawer .sheet{
  position:absolute; left:0; top:0; bottom:0; width:min(78vw,310px);
  background:var(--p800); border-right:3px solid var(--gold);
  box-shadow:6px 0 0 rgba(216,43,138,.5), 12px 0 30px rgba(0,0,0,.6);
  padding:.9rem .7rem calc(.9rem + env(safe-area-inset-bottom,0));
  overflow-y:auto; animation:slide .18s ease-out;
}
@keyframes slide{from{transform:translateX(-100%)}to{transform:translateX(0)}}
.drawer .dhead{font-size:.66rem;font-weight:900;letter-spacing:.22em;text-transform:uppercase;color:var(--pink);margin:.8rem .3rem .35rem}
.drawer .dhead:first-child{margin-top:.2rem}
.drawer a{
  display:flex; align-items:center; gap:.55rem; min-height:var(--tap);
  padding:.5rem .6rem; margin-bottom:.3rem; text-decoration:none;
  font-size:1rem; font-weight:800; color:var(--paper);
  background:var(--p700); border:2px solid rgba(255,210,74,.26); border-radius:3px;
}
.drawer a.dim{color:var(--muted);font-weight:700;font-size:.9rem;background:transparent}
.drawer .dsep{height:1px;background:rgba(255,210,74,.2);margin:.6rem .3rem}

/* ---------- onboarding wizard ---------- */
.wizard{gap:.5rem}
.steps{flex:0 0 auto;display:flex;gap:6px;justify-content:center;padding:.15rem 0 .3rem}
.steps .dot{width:26px;height:5px;border-radius:3px;background:var(--p600)}
.steps .dot.done{background:var(--gold-dp)}
.steps .dot.now{background:var(--gold)}
.wizard form{flex:1 0 auto;display:flex;flex-direction:column;min-height:100%}
.step{display:none;flex:1 0 auto;flex-direction:column;gap:.5rem}
.step.on{display:flex}
.big{font-family:"Bangers",Impact,fantasy;font-size:1.75rem;line-height:1.06;color:var(--paper);margin:.2rem 0 0}

/* ---------- bingo claim states ---------- */
.claimbox{flex:0 0 auto}
.claimnote{
  font-size:.84rem; text-align:center; color:var(--muted);
  padding:.3rem .2rem 0; line-height:1.25;
}
.claimnote.good{color:var(--gold);font-weight:800}
.claimnote.bad{color:var(--pink);font-weight:800}

/* ---------- staff console ---------- */
body.staff{display:block;min-height:0;padding-bottom:2rem}
.staffbar{
  position:sticky; top:0; z-index:10; display:flex; gap:.4rem; flex-wrap:wrap;
  padding:.6rem .7rem; background:var(--p700); border-bottom:3px solid var(--gold);
}
.staffbar a,.staffbar button{
  font:inherit; font-size:.76rem; font-weight:900; letter-spacing:.08em; text-transform:uppercase;
  padding:.4rem .6rem; text-decoration:none; cursor:pointer;
  color:var(--gold); background:transparent; border:2px solid rgba(255,210,74,.35); border-radius:3px;
}
.staffbar a.on{background:var(--gold);color:var(--ink);border-color:var(--ink)}
.staffbar .sp{flex:1}
.wrap{max-width:900px;margin:0 auto;padding:.8rem}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:.5rem;margin-bottom:.8rem}
.stat{background:var(--p800);border:2.5px solid var(--gold);padding:.5rem .6rem;box-shadow:3px 3px 0 var(--ink)}
.stat .n{font-family:"Bangers",Impact,fantasy;font-size:2rem;line-height:1;color:var(--gold)}
.stat .l{font-size:.64rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-top:.15rem}
table{width:100%;border-collapse:collapse;font-size:.88rem}
th,td{text-align:left;padding:.4rem .5rem;border-bottom:1px solid rgba(255,210,74,.18);vertical-align:top}
th{font-size:.66rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
td.num{text-align:right;font-weight:800}
.tbl{background:var(--p800);border:2.5px solid rgba(255,210,74,.3);margin-bottom:.9rem;overflow-x:auto}
.h2{font-family:"Bangers",Impact,fantasy;font-size:1.4rem;color:var(--gold);margin:.9rem 0 .4rem}
.row2{display:grid;grid-template-columns:1fr;gap:.8rem}
@media(min-width:720px){.row2{grid-template-columns:1fr 1fr}}
.editor{background:var(--p800);border:2.5px solid rgba(255,210,74,.3);padding:.6rem .7rem;margin-bottom:.6rem}
.editor .mini{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.4rem}
.editor .mini button{
  font:inherit;font-size:.7rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;
  padding:.35rem .55rem;cursor:pointer;border-radius:3px;
  color:var(--ink);background:var(--gold);border:2px solid var(--ink);
}
.editor .mini button.warn{background:var(--pink)}
.editor .mini button.off{background:transparent;color:var(--muted);border-color:rgba(255,210,74,.3)}
.editor.inactive{opacity:.5}
.modgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.5rem}
.modcard{background:var(--p800);border:2px solid rgba(255,210,74,.3);padding:.35rem}
.modcard img{width:100%;aspect-ratio:1;object-fit:cover;display:block;margin-bottom:.3rem}
.modcard.hidden{opacity:.42;border-color:var(--pink)}
/* staff bingo tracker */
.trackgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.4rem}
.track{
  display:flex;align-items:center;gap:.45rem;cursor:pointer;
  background:var(--p800);border:2px solid rgba(255,210,74,.28);padding:.45rem .5rem;
  font-size:.82rem;font-weight:800;line-height:1.15;
}
.track.hit{background:rgba(255,210,74,.2);border-color:var(--gold)}
.track .bx{flex:0 0 18px;height:18px;border:2px solid var(--gold);display:grid;place-items:center;font-size:.7rem;color:var(--ink)}
.track.hit .bx{background:var(--gold)}
.claim{background:var(--p800);border:2.5px solid rgba(255,210,74,.3);padding:.55rem .65rem;margin-bottom:.5rem}
.claim.valid{border-color:var(--gold)}
.claim.invalid{border-color:var(--pink);opacity:.65}
.chips{display:flex;flex-wrap:wrap;gap:.3rem;margin:.35rem 0}
.chip{font-size:.72rem;font-weight:800;padding:.2rem .45rem;border:2px solid var(--pink);color:var(--pink)}
.chip.ok{border-color:var(--gold);color:var(--ink);background:var(--gold)}

/* ---------- dev reset (hidden via the dev_reset setting) ---------- */
.resetbtn{
  position:absolute; right:.5rem; top:50%; transform:translateY(-50%);
  min-height:34px; padding:.25rem .5rem; cursor:pointer; z-index:8;
  font:inherit; font-size:.62rem; font-weight:900; letter-spacing:.12em;
  color:var(--pink); background:transparent;
  border:2px solid var(--pink); border-radius:3px;
}
.resetbtn:active{background:var(--pink);color:var(--ink)}

/* ---------- alter-ego picker ---------- */
.phrase{
  text-align:center; font-size:1rem; line-height:1.4; color:var(--paper);
  background:var(--p800); border-left:4px solid var(--pink);
  padding:.6rem .8rem; margin:.1rem 0 0; font-style:italic;
}
.phrase .q{color:var(--pink);font-style:normal;font-weight:900;font-size:1.15rem;line-height:0}
.shuffles{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem}
.shuffles .btn{margin:0}
.btn:disabled{opacity:.4}
