/* Palette and type follow dripmeharder.com (KiKi's Fourthwall shop theme) so viewers
 * arriving from the store land somewhere that looks like the same place. Light only,
 * like the shop. The overlay has its own inline styles and is unaffected. */
:root{
  --peach:#FFE4CA; --peach-deep:#FFD1A6; --peach-edge:#EDBE95; --cream:#FDFCFB;
  --brown:#734538; --brown-deep:#5A3429; --brown-soft:#7D4F41;
  --alert:#C8332E; --gold:#B8862B;
  --page-bg:var(--peach); --page-fg:var(--brown); --panel:var(--peach-deep);
  --card:var(--peach-deep);        /* the shop's product-card colour, not white */
  --wrap:#F3F0E9;                  /* the printed wrap's own colour (paint.js) */
  --rule:#E2A97E; --muted:var(--brown-soft);
  --stage-bg:var(--peach); --cell-free:#FFF3E6; --cell-line:#F0C49D;
  --radius-input:15px; --radius-img:10px;
  --font-head:"Archivo","Arial Black",sans-serif; --font-body:"Noto Sans","Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--page-bg);color:var(--page-fg);font-family:var(--font-body);
  font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}
a{color:var(--brown)}
.wrap{max-width:1080px;margin:0 auto;padding:22px 16px 40px}
@media (min-width:700px){.wrap{padding:28px 20px 56px}}
.masthead{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;justify-content:space-between}
.masthead .who{display:flex;gap:10px;align-items:center}
.kicker{margin:0 0 6px;font-size:12.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted)}
.kicker a{color:inherit;text-decoration:none;border-bottom:1px solid currentColor}
.wordmark{font-family:var(--font-head);font-size:clamp(30px,7vw,52px);font-weight:900;
  font-variation-settings:"wdth" 125;text-transform:uppercase;letter-spacing:-.01em;line-height:.95;margin:0}
.wordmark span{color:var(--brown-soft)}
.blurb{color:var(--page-fg);max-width:60ch;margin:14px 0 24px;font-size:15px}
.blurb b{font-weight:700}
nav.views{display:flex;gap:22px;border-bottom:1px solid var(--rule);margin-bottom:22px;overflow-x:auto}
nav.views button{appearance:none;background:none;border:0;padding:0 0 11px;margin:0;white-space:nowrap;
  font:inherit;font-size:15px;font-weight:700;color:var(--muted);cursor:pointer;position:relative}
nav.views button[aria-selected="true"]{color:var(--page-fg)}
nav.views button[aria-selected="true"]::after{content:"";position:absolute;left:0;right:0;bottom:-1px;
  height:2px;background:var(--brown)}
nav.views button:focus-visible{outline:2px solid var(--brown);outline-offset:3px}
.count-pill{display:inline-block;margin-left:7px;font-size:12px;font-weight:700;color:var(--peach);
  background:var(--brown);border-radius:9px;padding:1px 6px}
.stage{background:var(--stage-bg);border:0;border-radius:var(--radius-img);padding:12px;position:relative}
.stage svg{display:block;width:100%;height:auto;touch-action:none}
#cup{display:block;width:100%;height:clamp(340px,64vw,500px);touch-action:none;cursor:grab}
#cup:active{cursor:grabbing}
.toggle{position:absolute;top:10px;right:10px;display:flex;border:2px solid var(--brown);
  border-radius:999px;overflow:hidden;z-index:2}
.toggle button{appearance:none;border:0;font:inherit;font-size:13px;font-weight:700;padding:6px 13px;
  background:var(--peach);color:var(--brown);cursor:pointer}
.toggle button[aria-pressed="true"]{background:var(--brown);color:var(--peach)}
.loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:var(--muted);font-size:14px;pointer-events:none;text-align:center;padding:20px}
.tune{display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin-top:12px;
  padding:12px 14px;background:var(--panel);border-radius:var(--radius-input)}
.tune label{font-size:12.5px;color:var(--muted);display:flex;gap:9px;align-items:center}
.tune input[type=range]{width:130px;accent-color:var(--brown)}
.tune code{font-size:12px;color:var(--brown)}
.cell-free{fill:var(--cell-free);stroke:var(--cell-line);stroke-width:1}
.region-fill{fill:#F6CDA7;stroke:#D9A77C;stroke-width:1.5}
.region-pending{fill:#FBDDBF;stroke:var(--gold);stroke-width:1.5;stroke-dasharray:4 3}
.sel-ok{fill:none;stroke:var(--brown);stroke-width:3}
.sel-bad{fill:rgba(200,51,46,.22);stroke:var(--alert);stroke-width:3;stroke-dasharray:6 4}
.grab{fill:var(--brown);stroke:var(--cream);stroke-width:2}
.seam{stroke:var(--gold);stroke-width:2;stroke-dasharray:6 5}
.readout{display:flex;flex-wrap:wrap;gap:22px;align-items:flex-end;margin-top:16px}
.metric b{display:block;font-family:var(--font-head);font-size:clamp(26px,7vw,34px);font-weight:900;
  font-variation-settings:"wdth" 125;line-height:1}
.metric small{display:block;color:var(--muted);font-size:13px;margin-top:5px}
.bar{height:6px;background:var(--peach-edge);border-radius:3px;overflow:hidden;margin-top:14px}
.bar i{display:block;height:100%;background:var(--brown);transition:width .4s ease}
@media (prefers-reduced-motion:reduce){.bar i{transition:none}}
.ticker{margin-top:16px;border-top:1px solid var(--rule);padding-top:13px}
.ticker h3{font-size:13px;font-weight:700;color:var(--muted);margin:0 0 9px}
.ticker ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.ticker li{display:flex;gap:10px;align-items:center;font-size:14px}
.ticker em{font-style:normal;color:var(--muted);margin-left:auto;font-size:13px}
.tick-thumb{width:26px;height:26px;border-radius:6px;object-fit:cover;flex:none;background:var(--peach-deep)}
/* Pill buttons, as on the shop. Works on <a> too (Sign out). */
.act{appearance:none;display:inline-block;font:inherit;font-weight:700;font-size:14px;line-height:1.2;
  border:2px solid var(--brown);background:transparent;color:var(--brown);padding:10px 18px;
  border-radius:999px;cursor:pointer;text-decoration:none}
.act:hover{background:rgba(115,69,56,.08)}
.act:focus-visible{outline:2px solid var(--brown);outline-offset:2px}
.act.primary{background:var(--brown);color:var(--peach)}
.act.primary:hover{background:var(--brown-deep);border-color:var(--brown-deep)}
.act.ghost{border-color:transparent;color:var(--muted)}
.act.ghost:hover{border-color:var(--rule);background:transparent}
.act[disabled]{opacity:.4;cursor:not-allowed}
/* Twitch brand purple, deliberately off-palette so it reads as "Twitch". */
.twitch-btn{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:14px;
  background:#9146FF;color:#fff;padding:10px 18px;border-radius:999px;text-decoration:none;
  transition:background .15s}
.twitch-btn:hover{background:#772CE8}
.twitch-btn:active{background:#5C16C5}
.twitch-btn:focus-visible{outline:2px solid var(--brown);outline-offset:2px}
.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.steps{display:flex;gap:8px;margin-bottom:18px}
.steps div{flex:1;border-top:3px solid var(--rule);padding-top:8px;font-size:12.5px;font-weight:700;
  color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.steps div[data-on="1"]{border-top-color:var(--brown);color:var(--page-fg)}
.srcs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.srcs button{appearance:none;font:inherit;font-size:13.5px;font-weight:700;border:2px solid var(--brown);
  background:transparent;color:var(--brown);padding:8px 15px;border-radius:999px;cursor:pointer}
.srcs button[aria-selected="true"]{background:var(--brown);color:var(--peach)}
.srcs button:focus-visible{outline:2px solid var(--brown);outline-offset:2px}
.searchbar{display:flex;gap:8px;align-items:center;margin-bottom:14px}
.searchbar input{flex:1;min-width:0}
/* Text fields, copied from the shop theme's .input-field (Fourthwall):
   transparent, 2px border in 14% brown, 15px corners, 56px tall. The shop
   shows no focus state at all; ours darkens the border so keyboard and
   phone users can see where they're typing. */
.searchbar input,.words input[type=text],.exact input{
  -webkit-appearance:none;appearance:none;box-sizing:border-box;height:56px;padding:0 12px;
  font:inherit;font-size:16px;line-height:1.5;color:var(--brown);background:transparent;
  border:2px solid rgba(115,69,56,.14);border-radius:var(--radius-input);outline:none;
  transition:border-color .2s}
.searchbar input:hover,.words input[type=text]:hover,.exact input:hover{border-color:rgba(115,69,56,.14)}
.searchbar input:focus,.words input[type=text]:focus,.exact input:focus{border-color:rgba(115,69,56,.5)}
.searchbar input::placeholder,.words input[type=text]::placeholder{color:rgba(115,69,56,.6);opacity:1}
.searchbar input::-webkit-search-cancel-button{cursor:pointer}
.results{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:9px;
  max-height:340px;overflow-y:auto;padding:2px;overscroll-behavior:contain}
.results:empty{display:none}
.results button{appearance:none;padding:0;border:2px solid transparent;border-radius:var(--radius-img);
  background:var(--peach);cursor:pointer;aspect-ratio:1;overflow:hidden;position:relative}
.results button[aria-pressed="true"]{border-color:var(--brown)}
.results img{width:100%;height:100%;object-fit:contain;display:block}
.results .cap{position:absolute;left:0;right:0;bottom:0;font-size:10.5px;font-weight:700;
  background:rgba(90,52,41,.8);color:var(--peach);padding:3px 4px}
.uploadzone{border:2px dashed var(--rule);border-radius:var(--radius-img);padding:30px 18px;text-align:center}
.uploadzone p{color:var(--muted);font-size:13.5px;margin:10px auto 0;max-width:42ch}
.attrib{color:var(--muted);font-size:11.5px;margin-top:12px}
.gset{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:12px;
  padding:11px 13px;background:var(--panel);border-radius:var(--radius-input)}
.gset label{font-size:12.5px;color:var(--muted);display:flex;gap:8px;align-items:center}
.gset input{font:inherit;font-size:15px;padding:7px 12px;border-radius:var(--radius-input);width:190px;
  border:1px solid var(--rule);background:var(--cream);color:var(--brown)}
.kind{display:flex;border:2px solid var(--brown);border-radius:999px;overflow:hidden}
.kind button{appearance:none;border:0;font:inherit;font-size:12.5px;font-weight:700;padding:6px 13px;
  background:transparent;color:var(--brown);cursor:pointer}
.kind button[aria-pressed="true"]{background:var(--brown);color:var(--peach)}
.status{font-size:13px;color:var(--muted);margin:12px 0 0}
.status.err{color:var(--alert)}
.place-help{color:var(--muted);font-size:13.5px;margin:0 0 12px;max-width:60ch}
.sizer{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:14px}
.sizer label{font-size:13px;color:var(--muted);display:flex;gap:7px;align-items:center}
.sizer input{width:64px;font:inherit;font-size:16px;padding:8px 10px;border-radius:var(--radius-input);
  border:1px solid var(--rule);background:var(--cream);color:var(--brown)}
.cap-note{color:var(--brown);font-size:13px;margin-top:10px}
.textpanel{margin-top:20px;padding:15px 16px;background:var(--panel);border-radius:var(--radius-img)}
.textpanel h3{font-size:13px;font-weight:700;color:var(--brown);margin:0 0 11px;
  display:flex;gap:8px;align-items:baseline;text-transform:uppercase;letter-spacing:.05em}
.textpanel h3 span{color:var(--muted);font-weight:700}
.textpanel input[type=text]{width:100%;font:inherit;font-size:16px;padding:11px 15px;
  border-radius:var(--radius-input);border:1px solid var(--rule);background:var(--cream);color:var(--brown)}
.fonts{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.fonts button{appearance:none;border:1px solid var(--rule);background:var(--cream);
  color:var(--brown);padding:8px 14px;border-radius:var(--radius-img);cursor:pointer;font-size:17px;line-height:1.2}
.fonts button[aria-pressed="true"]{border-color:var(--brown);border-width:2px;padding:7px 13px}
.swatches{display:flex;gap:7px;margin-top:11px}
.swatches button{appearance:none;width:32px;height:32px;border-radius:50%;cursor:pointer;
  border:2px solid var(--peach-edge)}
.swatches button[aria-pressed="true"]{border-color:var(--brown);transform:scale(1.12)}
.grab-max{fill:var(--gold)}
.region-reserved{fill:#F7D3C4;stroke:var(--brown-soft);stroke-width:1.5;stroke-dasharray:5 4}
.cupslot{margin-top:14px;background:var(--stage-bg);border-radius:var(--radius-img);padding:10px;position:relative}
.cupslot .hint{margin:0 0 6px;font-size:12.5px;color:var(--muted)}
#r-time{font-variant-numeric:tabular-nums}
/* Step 3's order summary: line items, total, and the one button. */
.summary{background:var(--peach);border-radius:14px;padding:14px 16px 14px;margin:0 0 14px;max-width:560px}
.lines{margin:0 0 10px;display:grid;grid-template-columns:1fr auto;gap:6px 16px;font-size:14.5px}
.lines:empty{display:none}
.lines dt{margin:0}
.lines dd{margin:0;text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
.lines .free{color:#5B2FA0}
.total-row{display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap;
  border-top:1px solid var(--peach-edge);padding-top:10px}
.lines:empty + .total-row{border-top:0;padding-top:0}
.total-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.summary .price{font-family:var(--font-head);font-size:28px;font-weight:900;font-variation-settings:"wdth" 125;
  line-height:1.1}
.summary .sub{margin:8px 0 0;color:var(--muted);font-size:13px}
.summary .sub:empty{display:none}
.summary .sub.warn{color:var(--alert);font-weight:700}
.summary-acts{display:flex;gap:8px;flex-wrap:wrap}
.summary .act{white-space:nowrap}
/* A live hold inverts, so it's impossible to miss. */
.countdown{background:var(--brown);color:var(--peach)}
.countdown .total-row{border-top:0;padding-top:0}
.countdown .total-label,.countdown .sub{color:rgba(255,228,202,.8)}
.countdown .act.primary{background:var(--peach);border-color:var(--peach);color:var(--brown)}
.countdown .act.primary:hover{background:var(--cream);border-color:var(--cream)}
.countdown .act.ghost{color:var(--peach)}
.countdown .act.ghost:hover{border-color:rgba(255,228,202,.5)}
.queue{display:flex;flex-direction:column;border-top:1px solid var(--rule)}
.q-row{display:flex;flex-wrap:wrap;gap:13px;align-items:center;padding:13px 2px;border-bottom:1px solid var(--rule)}
.q-prev{width:64px;height:64px;border-radius:var(--radius-img);background:var(--peach-deep);flex:none;object-fit:contain}
.q-meta{flex:1 1 190px;min-width:0}
.q-meta b{font-weight:700}
.q-meta span{display:block;color:var(--muted);font-size:13px;margin-top:2px}
.q-acts{display:flex;gap:8px}
.empty{border:2px dashed var(--peach-edge);border-radius:var(--radius-img);padding:32px 18px;text-align:center;color:var(--muted);font-size:15px}
.note{margin-top:30px;padding-top:18px;border-top:1px solid var(--rule);color:var(--muted);font-size:13.5px;max-width:64ch}
.note b{color:var(--page-fg);font-weight:700}
.thanks{margin-top:40px;padding-top:26px;border-top:1px solid var(--rule);text-align:center}
.thanks .big{font-family:var(--font-head);font-weight:900;font-variation-settings:"wdth" 125;
  text-transform:uppercase;font-size:clamp(18px,4.5vw,26px);line-height:1.1;margin:0 0 12px}
.thanks p{margin:0;font-size:14px;color:var(--muted)}
.thanks a{font-weight:700}
/* ---- claim flow ---- */
/* KiKi's head rises from behind the middle "how it works" box (the first box
   once they stack on phones -- it's centred either way). It sits at z-index -1
   so the boxes, which aren't positioned, paint over the bottom of her neck.
   The wrapper's top margin makes room so she never covers the intro text. */
.how-wrap{position:relative;--peek-w:170px;--peek-tuck:6px;
  margin-top:calc(var(--peek-w) * 229 / 289 - var(--peek-tuck) + 4px)}
@media (max-width:659px){.how-wrap{--peek-w:130px;--peek-tuck:5px}}
.peek{position:absolute;left:50%;top:0;z-index:-1;width:var(--peek-w);pointer-events:none;
  transform:translate(-50%, calc(-100% + var(--peek-tuck)))}
.peek img{display:block;width:100%;height:auto}
.how{list-style:none;margin:0 0 22px;padding:0;display:grid;gap:10px;
  grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.how li{display:flex;gap:11px;align-items:center;background:var(--card);border-radius:var(--radius-img);
  padding:11px 14px;font-size:14px;line-height:1.35}
.how b,.card h2 .num{flex:none;display:inline-flex;align-items:center;justify-content:center;
  width:30px;height:30px;border-radius:50%;background:var(--brown);color:var(--peach);
  font-family:var(--font-head);font-weight:900;font-size:15px}
.studio{display:grid;gap:16px;align-items:start;margin-bottom:16px}   /* same gap before step 3 */
@media (min-width:980px){.studio{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}}
.card{background:var(--card);border-radius:16px;padding:18px 16px 20px;margin-bottom:16px}
.studio .card{margin-bottom:0}
@media (min-width:700px){.card{padding:22px 22px 24px}}
.card h2{display:flex;gap:11px;align-items:center;margin:0 0 14px;font-family:var(--font-head);
  font-weight:900;font-variation-settings:"wdth" 125;text-transform:uppercase;font-size:19px;line-height:1.1}
.pane{margin-bottom:6px}
.pane-hint{margin:6px 0 8px;font-size:13px;color:var(--muted)}
.results-head{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin-top:2px}
.results-head h3{margin:0;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  color:var(--brown)}
.results-head .linkish{margin-left:auto;padding:4px 0}
.kind{display:inline-flex}
.picked{display:flex;gap:10px;align-items:center;padding:8px 12px 8px 8px;margin:0 0 14px;
  background:var(--peach);border-radius:12px;font-size:14px;font-weight:700}
.picked img{width:44px;height:44px;object-fit:contain;border-radius:8px;background:var(--peach-deep)}
.picked span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.linkish{appearance:none;border:0;background:none;padding:6px;font:inherit;font-size:13px;font-weight:700;
  color:var(--brown);text-decoration:underline;cursor:pointer}
.big-hint{font-size:15px;font-weight:700;color:var(--brown)!important;margin:0 auto 14px!important}
.uploadzone .twitch-btn{margin-bottom:4px}
.words{margin-top:16px;padding-top:16px;border-top:1px solid var(--rule)}
.words h3{font-size:13px;font-weight:700;color:var(--brown);margin:0 0 10px;text-transform:uppercase;
  letter-spacing:.05em;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.words .opt{font-weight:400;text-transform:none;letter-spacing:0;color:var(--muted)}
.words .fee{margin-left:auto;text-transform:none;letter-spacing:0}
.words.solo{margin-top:0;padding-top:0;border-top:0}
.words.solo .opt{display:none}
.words input[type=text]{width:100%}
.words-style{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;margin-top:12px}
.words .fonts,.words .swatches{margin-top:0}
.fonts button{background:#fff}
/* close-up of the tile for placing words over a picture */
.wordpos{margin-top:14px}
.wp-help{margin:0 0 8px;font-size:13.5px;color:var(--muted)}
.wp-stage{background:var(--peach);border-radius:var(--radius-img);padding:10px;max-width:320px}
.wp-stage svg{display:block;width:100%;height:auto;max-height:320px;touch-action:none;cursor:grab;
  background:var(--wrap);border-radius:4px}
.wp-stage svg:active{cursor:grabbing}
.wp-box{fill:rgba(115,69,56,.06);stroke:var(--brown);stroke-width:1.5;stroke-dasharray:5 4}
.wp-grab{fill:var(--brown);stroke:#fff;stroke-width:2}
.wp-presets{display:flex;gap:6px;margin-top:10px}
.wp-presets button{appearance:none;font:inherit;font-size:13px;font-weight:700;border:2px solid var(--brown);
  background:transparent;color:var(--brown);padding:6px 14px;border-radius:999px;cursor:pointer}
.wp-presets button:hover{background:rgba(115,69,56,.08)}
.place-grid{display:grid;gap:12px}
.cupview{background:var(--peach);border-radius:var(--radius-img);position:relative}
.cupview #cup{height:clamp(240px,48vw,320px)}
.cup-cap{position:absolute;left:12px;bottom:8px;margin:0;font-size:12px;color:var(--muted);pointer-events:none}
.place-help{color:var(--brown);font-size:14px}
.sizer .act{padding:8px 16px}
.size-label{font-size:13.5px;color:var(--muted);font-weight:700}
.cap-note{min-height:0;margin:8px 0 0}
.cap-note:empty{display:none}
.cap-note.flash{animation:capflash .6s ease 2}
@keyframes capflash{50%{color:var(--alert)}}
@media (prefers-reduced-motion:reduce){.cap-note.flash{animation:none}}
.exact{margin-top:10px;font-size:13px;color:var(--muted)}
.exact summary{cursor:pointer;font-weight:700;width:max-content}
/* a <details> won't lay its contents out as a flex row, so the row is its own box */
.exact-row{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:center;margin-top:8px}
.exact label{display:flex;gap:7px;align-items:center}
.exact input{width:72px}
.hold-help{margin:0 0 12px;font-size:14.5px;max-width:62ch}
.perk{margin:0 0 12px;padding:11px 14px;border-radius:12px;background:var(--peach);font-size:14.5px;
  max-width:62ch}
.perk b{font-weight:700}
.perk.sub{background:#EFE3FF;color:#3B2168}   /* Twitch-purple tint: it's a sub perk */
.optin{display:flex;gap:10px;align-items:flex-start;margin:4px 0 6px;font-size:14.5px;cursor:pointer;
  max-width:62ch}
.optin input{width:20px;height:20px;margin:1px 0 0;flex:none;accent-color:var(--brown)}
.fine{margin:0 0 10px 30px;font-size:12.5px;color:var(--muted)}
.status.ok{color:var(--brown);font-weight:700;font-size:14.5px;background:var(--peach);padding:11px 14px;
  border-radius:12px;max-width:62ch}
#reserve{padding:12px 22px;font-size:15px}
@media (max-width:420px){.summary{padding:12px 14px}.summary .act{padding:10px 14px}}
[hidden]{display:none !important}
