/* room.css · Call to ACTION, The New Networking Experience (CTA_Build.md).
   digiMAGIC with extra sleekness: one calm ground, generous space, one brand hit per screen, everything a tile.
   Follows digiUI: Montserrat only, the house button (2), the Line (2a), the SQ on the glass table (6.18, 6.40),
   the who-colours (3c), motion with manners and reduced motion always (5), light and dark (1c). */

/* Montserrat, served from this room only (no Google: a visitor's browser talks only to us). OFL in /fonts/. */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 900;font-display:swap;src:url('/fonts/montserrat-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 900;font-display:swap;src:url('/fonts/montserrat-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}

/* ---------- ONE SET OF DESIGN NUMBERS ---------- */
:root{
  --ground:#f5f5f8;          /* Digi Grey */
  --card:#ffffff;
  --ink:#212121;
  --soft:#5f6168;
  --faint:#8b8e95;
  --line:rgba(33,33,33,.09);
  --field:#f7f8fa;
  --green:#05672a;           /* Digi Green */
  --green-ink:#05672a;
  --glow:rgba(5,103,42,.24);
  --glow2:rgba(5,103,42,.10);
  --red:#cf0202;             /* digiFREE Red */
  --warn:#8a1212;            /* Deep Red */
  --gold:#7d5c00;
  --shadow:0 1px 2px rgba(16,24,20,.06),0 8px 24px -10px rgba(16,24,20,.18),0 30px 60px -36px rgba(5,103,42,.30);
  --r-card:28px;
  --ease:cubic-bezier(.2,.75,.25,1);
}
@media (prefers-color-scheme: dark){
  :root{
    --ground:#0b0d0c;
    --card:#141816;
    --ink:#f5f5f8;
    --soft:#aab0b4;
    --faint:#7d8388;
    --line:rgba(255,255,255,.09);
    --field:#1b201d;
    --green:#05672a;
    --green-ink:#03fbb0;     /* Digi Glow: dark grounds only, letters and light only */
    --glow:rgba(3,251,176,.20);
    --glow2:rgba(3,251,176,.08);
    --red:#ff5a4f;
    --warn:#ff7a7a;
    --gold:#ffd35e;
    --shadow:0 1px 0 rgba(255,255,255,.04),0 10px 30px -12px rgba(0,0,0,.6),0 30px 60px -34px rgba(3,251,176,.16);
  }
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html,body{margin:0}
body{
  font-family:'Montserrat',system-ui,-apple-system,sans-serif;background:var(--ground);color:var(--ink);
  min-height:100dvh;display:flex;flex-direction:column;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;
}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}
img{display:block}
:focus{outline:none}
:focus-visible{outline:3px solid var(--green-ink);outline-offset:3px;border-radius:12px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- THE TOP ---------- */
.top{
  position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:max(12px,env(safe-area-inset-top)) 16px 12px;
  background:color-mix(in srgb,var(--ground) 86%,transparent);
  border-bottom:1px solid transparent;
}
.brand{display:inline-flex;align-items:center;gap:10px;font-size:17px;font-weight:600;letter-spacing:-.01em;min-height:44px}
.brand img{width:32px;height:32px;border-radius:24%}
.brand b{font-weight:900;color:var(--green-ink)}
.top-r{display:flex;align-items:center;gap:10px;min-height:44px}

/* ---------- THE STAGE (each screen) ---------- */
main{flex:1;width:100%;max-width:560px;margin:0 auto;padding:8px 16px 40px}
.scr{animation:rise .34s var(--ease) both}
.same .scr{animation:none}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.eyebrow{margin:0;font-size:12px;font-weight:800;letter-spacing:.22em;text-transform:uppercase;color:var(--faint)}
.h1{margin:10px 0 0;font-size:clamp(30px,8.4vw,40px);line-height:1.08;font-weight:900;letter-spacing:-.025em}
.h1 em{font-style:normal;color:var(--green-ink)}
.lede{margin:14px 0 0;font-size:17px;line-height:1.55;color:var(--soft);max-width:38ch}
.hero{padding:22px 2px 6px}

.panel{
  margin-top:22px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);
  padding:22px 20px;box-shadow:var(--shadow);
}
.panel+.panel{margin-top:14px}
.ptitle{margin:0 0 4px;font-size:13px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.pnote{margin:6px 0 0;font-size:14px;line-height:1.5;color:var(--soft)}

/* ---------- THE NEXT CALL (doors closed) ---------- */
.next{display:flex;gap:18px;align-items:center}
.cal{flex:none;width:84px;border-radius:18px;overflow:hidden;background:var(--card);box-shadow:0 0 0 1px var(--line),0 10px 22px -12px rgba(0,0,0,.35);text-align:center}
.cal i{display:block;font-style:normal;background:var(--red);color:#fff;font-size:12px;font-weight:900;letter-spacing:.2em;padding:7px 0 6px}
.cal b{display:block;font-size:38px;font-weight:900;letter-spacing:-.03em;padding:6px 0 0;line-height:1.1}
.cal s{display:block;text-decoration:none;font-size:11px;font-weight:800;letter-spacing:.14em;color:var(--faint);padding:0 0 9px;text-transform:uppercase}
.next-t{min-width:0}
.next-t strong{display:block;font-size:20px;font-weight:900;letter-spacing:-.01em}
.next-t span{display:block;margin-top:4px;font-size:15px;color:var(--soft);line-height:1.45}
.spk{display:flex;gap:14px;align-items:center;margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}
.spk img,.spk .spk-i{flex:none;width:56px;height:56px;border-radius:50%;object-fit:cover;background:var(--field)}
.spk .spk-i{display:grid;place-items:center;font-weight:900;color:var(--soft)}
.spk p{margin:0;min-width:0}
.spk small{display:block;font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--faint)}
.spk strong{display:block;margin-top:3px;font-size:16px;font-weight:800}
.spk span{display:block;margin-top:2px;font-size:14px;color:var(--soft);line-height:1.4}

/* ---------- BUTTONS (digiUI 2, 2a) ---------- */
/* House: she is leaving for something new. White, the hairline, the layered green glow, a bold ink label. */
.go{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:54px;padding:0 26px;border-radius:16px;
  background:var(--card);color:var(--ink);font-size:16px;font-weight:800;letter-spacing:-.005em;cursor:pointer;
  border:1px solid color-mix(in srgb,var(--green) 18%,transparent);
  box-shadow:0 0 0 1px var(--glow2),0 6px 18px -6px var(--glow),0 18px 40px -18px var(--glow);
  transition:box-shadow .25s var(--ease),transform .2s var(--ease),opacity .2s;
}
.go svg{width:16px;height:16px;fill:var(--green-ink)}
.go.full{display:flex;width:100%}
.go:active{transform:translateY(1px)}
.go[disabled]{opacity:.5;cursor:default;box-shadow:0 0 0 1px var(--glow2)}
@media (hover:hover){.go:not([disabled]):hover{box-shadow:0 0 0 2px var(--glow2),0 10px 26px -8px var(--glow),0 22px 48px -18px var(--glow)}}
/* Line: staying on the page. A tight green-tinted hairline pill, barely any glow. */
.line{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:999px;
  background:var(--card);border:1px solid color-mix(in srgb,var(--green) 34%,transparent);font-size:14px;font-weight:700;cursor:pointer;
}
.quiet{background:none;border:0;padding:8px 2px;min-height:44px;font-size:14px;font-weight:700;color:var(--green-ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.btnrow{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:18px}

/* ---------- FIELDS (16 px or more: iPhone never zooms) ---------- */
.fld{display:block;margin-top:16px}
.fld>span{display:block;font-size:13px;font-weight:800;color:var(--ink);margin-bottom:7px}
.fld>span i{font-style:normal;font-weight:600;color:var(--faint)}
.in{
  width:100%;min-height:54px;padding:0 16px;border-radius:14px;border:1px solid var(--line);background:var(--field);
  font:600 17px/1.2 'Montserrat',system-ui,sans-serif;color:var(--ink);transition:border-color .2s,box-shadow .2s;
}
.in::placeholder{color:var(--faint);font-weight:500}
.in:focus::placeholder{color:transparent}
.in:focus{border-color:color-mix(in srgb,var(--green-ink) 60%,transparent);box-shadow:0 0 0 4px var(--glow2);outline:none}
.in.bad{border-color:var(--warn)}
.code{letter-spacing:.5em;text-align:center;font-size:26px;font-weight:800;padding-left:.5em}
.err{min-height:20px;margin:8px 0 0;font-size:14px;font-weight:600;color:var(--warn)}
.ts{margin-top:14px;min-height:0}

/* ---------- THE PROFILE CARD (CTA_Build.md 3d) ---------- */
/* Their color: --c (deep) and --cl (light). Merchants: from their logo. */
.pc{
  --c:#05672a;--cl:#6fe6a9;
  position:relative;overflow:hidden;border-radius:var(--r-card);background:var(--card);border:1px solid var(--line);
  padding:22px 20px 20px;box-shadow:var(--shadow);
}
.pc::before{   /* their color, lit from the top: a soft light, never a block */
  content:"";position:absolute;inset:0 0 auto 0;height:120px;pointer-events:none;
  background:radial-gradient(120% 100% at 0% 0%,color-mix(in srgb,var(--cl) 30%,transparent),transparent 70%);
}
.pc-row{position:relative;display:flex;gap:18px;align-items:center}
.pc-t{min-width:0}
.pc-n{margin:0;font-size:22px;font-weight:900;letter-spacing:-.02em;line-height:1.15;overflow-wrap:anywhere}
.pc-b{margin:4px 0 0;font-size:15px;font-weight:700;color:var(--ink);overflow-wrap:anywhere}
.pc-m{margin:3px 0 0;font-size:13px;font-weight:600;color:var(--soft)}
.tag{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;margin-top:10px;padding:4px 10px 4px 8px;border-radius:999px;font-size:11.5px;font-weight:800;
  background:color-mix(in srgb,var(--green) 10%,transparent);color:var(--green-ink)}
.tag::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--green-ink)}
.tag b{font-weight:900}
.pc-links{position:relative;display:flex;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.pc-links a,.pc-links span{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:14px;background:var(--field);border:1px solid var(--line)}
.pc-links svg{width:20px;height:20px;fill:var(--ink)}
.pc-links span{opacity:.35}

/* THE SQ ON THE GLASS TABLE (digiUI 6.18, 6.40): 24% corners, edge to edge, a pool and a reflection under it. */
.sq{position:relative;flex:none;width:92px;height:92px;margin-bottom:22px}
.sq-f{position:relative;z-index:1;width:100%;height:100%;border-radius:24%;overflow:hidden;background:var(--lbg,#fff);
  box-shadow:0 0 0 1px rgba(0,0,0,.06),0 2px 3px rgba(0,0,0,.14),0 8px 14px -6px rgba(0,0,0,.28)}
.sq-f img{width:100%;height:100%;object-fit:cover}
.sq-f.logo img{object-fit:contain}
.sq-f.ini{display:grid;place-items:center;background:linear-gradient(150deg,color-mix(in srgb,var(--cl) 85%,#fff),var(--c));color:#fff;font-size:34px;font-weight:900;letter-spacing:-.03em}
.sq::after{   /* the pool of their color on the glass */
  content:"";position:absolute;left:8%;right:8%;bottom:-16px;height:22px;border-radius:50%;
  background:radial-gradient(closest-side,color-mix(in srgb,var(--cl) 55%,transparent),transparent);filter:none;opacity:.8;
}
.sq-r{position:absolute;left:0;right:0;top:100%;height:30px;overflow:hidden;border-radius:0 0 24% 24%;transform:scaleY(-1);transform-origin:top;opacity:.22;
  -webkit-mask-image:linear-gradient(to top,rgba(0,0,0,.9),transparent 80%);mask-image:linear-gradient(to top,rgba(0,0,0,.9),transparent 80%)}
.sq-r>*{width:92px;height:92px;position:absolute;left:0;bottom:0}
.sq.big{width:120px;height:120px}
.sq.big .sq-r>*{width:120px;height:120px}
.sq.big .sq-f.ini{font-size:44px}
.me{width:36px;height:36px;margin:0}
.me .sq-f{border-radius:24%}
.me .sq-f.ini{font-size:14px}
.me::after,.me .sq-r{display:none}

/* ---------- THE STUDIO (their card, editable on the call) ---------- */
.stack{display:grid;gap:14px;margin-top:22px}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.tile{
  display:flex;align-items:center;gap:12px;min-height:64px;padding:12px 14px;border-radius:18px;background:var(--field);border:1px solid var(--line);
  font-size:15px;font-weight:800;cursor:pointer;text-align:left;transition:box-shadow .2s,border-color .2s,transform .15s;
}
.tile svg{flex:none;width:22px;height:22px;fill:var(--green-ink)}
.tile:active{transform:scale(.98)}
.tile[aria-pressed="true"]{background:var(--card);border-color:color-mix(in srgb,var(--green-ink) 55%,transparent);box-shadow:0 0 0 3px var(--glow2),0 8px 20px -10px var(--glow)}
.swatches{display:grid;grid-template-columns:repeat(4,1fr);gap:30px 14px;margin-top:12px}
.sw{position:relative;width:100%;max-width:64px;justify-self:center;aspect-ratio:1;border-radius:50%;border:0;cursor:pointer;background:linear-gradient(150deg,var(--l),var(--d));
  box-shadow:0 0 0 1px rgba(0,0,0,.08),0 6px 14px -8px var(--d);transition:transform .2s var(--ease)}
.sw[aria-checked="true"]{transform:scale(1.04);box-shadow:0 0 0 3px var(--card),0 0 0 5.5px var(--d),0 10px 20px -8px var(--d)}
.sw[aria-checked="true"]::after{content:"";position:absolute;inset:0;margin:auto;width:34%;height:34%;
  background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M9.5 16.2 5.3 12l-1.4 1.4 5.6 5.6 11-11-1.4-1.4z'/%3E%3C/svg%3E")}
.sw span{position:absolute;left:50%;top:calc(100% + 6px);transform:translateX(-50%);white-space:nowrap;font-size:11px;font-weight:700;color:var(--faint)}
.swatches{padding-bottom:20px}
.lnk{position:relative}
.lnk svg{position:absolute;left:16px;top:50%;width:20px;height:20px;transform:translateY(-50%);fill:var(--faint);pointer-events:none}
.lnk .in{padding-left:46px}
.fromlist{display:flex;gap:12px;align-items:flex-start;margin-top:4px;font-size:14px;line-height:1.5;color:var(--soft)}
.fromlist svg{flex:none;width:20px;height:20px;fill:var(--green-ink);margin-top:1px}
.savebar{position:sticky;bottom:0;z-index:5;margin:18px -16px 0;padding:14px 16px max(14px,env(safe-area-inset-bottom));
  background:linear-gradient(to top,var(--ground) 70%,transparent)}
.done{display:flex;gap:12px;align-items:center;margin-top:16px;padding:14px 16px;border-radius:18px;background:color-mix(in srgb,var(--green) 9%,transparent);font-size:15px;font-weight:700;color:var(--green-ink)}
.done svg{flex:none;width:22px;height:22px;fill:currentColor}

/* ---------- THE HOST STRIP ---------- */
.hostbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding:12px 14px 12px 16px;border-radius:18px;
  background:var(--card);border:1px dashed color-mix(in srgb,var(--green-ink) 40%,transparent)}
.hostbar p{margin:0;font-size:14px;font-weight:700}
.hostbar small{display:block;font-size:12px;font-weight:600;color:var(--faint);margin-top:2px}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:1px;background:var(--faint)}
.dot.on{background:#1dff00;box-shadow:0 0 0 1px var(--green),0 0 8px rgba(29,255,0,.6)}

/* ---------- THE FRAMER (their photo onto the SQ) ---------- */
.scrim{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-end;justify-content:center;background:rgba(8,10,9,.55);animation:fade .2s both}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet{width:100%;max-width:460px;background:var(--card);border-radius:28px 28px 0 0;padding:20px 20px max(18px,env(safe-area-inset-bottom));
  box-shadow:0 -20px 50px -20px rgba(0,0,0,.4);animation:up .3s var(--ease) both}
@keyframes up{from{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}
@media (min-width:640px){.scrim{align-items:center}.sheet{border-radius:28px}}
.sheet h2{margin:0;font-size:20px;font-weight:900;letter-spacing:-.01em}
.sheet p{margin:6px 0 0;font-size:14px;color:var(--soft);line-height:1.5}
.fr-vp{position:relative;width:min(100%,300px);aspect-ratio:1;margin:18px auto 0;border-radius:24%;overflow:hidden;touch-action:none;cursor:grab;
  box-shadow:0 0 0 1px var(--line),0 14px 30px -14px rgba(0,0,0,.4)}
.fr-vp canvas{width:100%;height:100%}
.fr-z{display:flex;align-items:center;gap:12px;margin:18px auto 0;width:min(100%,300px);color:var(--faint);font-weight:800}
.fr-z input{flex:1;accent-color:var(--green)}

/* ---------- THE FOOT, THE TOAST ---------- */
.foot{padding:20px 16px max(22px,env(safe-area-inset-bottom));text-align:center;font-size:12px;color:var(--faint)}
.foot p{margin:4px 0}
.toast{position:fixed;left:50%;bottom:max(22px,env(safe-area-inset-bottom));z-index:60;transform:translate(-50%,20px);opacity:0;pointer-events:none;
  padding:12px 18px;border-radius:14px;background:#16201b;color:#fff;font-size:14px;font-weight:700;box-shadow:0 12px 30px -10px rgba(0,0,0,.5);
  transition:opacity .2s,transform .25s var(--ease);max-width:calc(100% - 32px);text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}
.nojs{text-align:center;padding:40px 16px}
.wait{display:grid;place-items:center;min-height:50vh}
.wait img{width:44px;height:44px;border-radius:24%;opacity:.85;animation:breathe 2.2s ease-in-out infinite}
@keyframes breathe{50%{transform:scale(.94);opacity:.55}}

/* ---------- A COMPUTER ---------- */
@media (min-width:1024px){
  .top{padding:16px 32px}
  main{max-width:600px;padding-top:28px}
}

/* ---------- REDUCED MOTION: the calm version ---------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* =====================================================================================================================
   THE ROOM (CTA_Build.md 8c). The room is the show: always night (Brian, Oct 20), glass everywhere, shiny and new.
   Glass on a phone is layered light (a translucent fill, a bright top hairline, an inner edge, the glass table under every
   SQ). Real frosted blur only on a computer with a fine pointer (digiUI 5, the cheap-phone rule; 6.97's precedent).
   ===================================================================================================================== */
body.night{
  --ground:#060908;--card:#0f1412;--ink:#f5f7f6;--soft:#b3bab6;--faint:#7f8984;--line:rgba(255,255,255,.08);--field:rgba(255,255,255,.05);
  --green-ink:#03fbb0;--glow:rgba(3,251,176,.22);--glow2:rgba(3,251,176,.09);--red:#ff5a4f;--warn:#ff7a7a;
  --shadow:0 1px 0 rgba(255,255,255,.04),0 18px 40px -22px rgba(0,0,0,.9);
  --gl-fill:linear-gradient(180deg,rgba(255,255,255,.085),rgba(255,255,255,.03) 46%,rgba(255,255,255,.02));
  --gl-edge:rgba(255,255,255,.10);
  background:
    radial-gradient(900px 520px at 12% -8%,rgba(3,251,176,.13),transparent 60%),
    radial-gradient(800px 600px at 105% 8%,rgba(24,147,248,.09),transparent 60%),
    radial-gradient(1000px 700px at 50% 120%,rgba(5,103,42,.22),transparent 60%),
    #060908;
  background-attachment:fixed;color-scheme:dark;
}
body.night .top{background:linear-gradient(180deg,rgba(6,9,8,.92),rgba(6,9,8,.70));border-bottom:1px solid rgba(255,255,255,.05)}
body.night main{max-width:1240px}
body.night .foot{display:none}
body.night .hostbar{background:rgba(255,255,255,.04)}

.gl{position:relative;background:var(--gl-fill);border:1px solid var(--gl-edge);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),inset 0 0 0 1px rgba(255,255,255,.02),0 20px 44px -26px rgba(0,0,0,.95)}
.gl::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(120deg,rgba(255,255,255,.07),transparent 30%,transparent 70%,rgba(255,255,255,.03))}
@media (hover:hover) and (pointer:fine){ .gl{-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%)} }

/* ---------- the top: Live, the count, your SQ ---------- */
.live{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px 0 12px;border-radius:999px;font-size:13px;font-weight:800;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.12)}
.live-dot{width:8px;height:8px;border-radius:50%;background:#1dff00;box-shadow:0 0 0 1px #05672a,0 0 10px rgba(29,255,0,.7);animation:breathe2 2.4s ease-in-out infinite}
@keyframes breathe2{50%{box-shadow:0 0 0 1px #05672a,0 0 2px rgba(29,255,0,.3);opacity:.75}}
.live-w{letter-spacing:.14em;text-transform:uppercase;font-size:11px;color:#9dffcf}
.live-n{font-weight:600;color:var(--soft);white-space:nowrap}
.live-n .nw{display:none}
@media (max-width:430px){.live-n .wd{display:none}.live-n .nw{display:inline}}
.od{display:inline-flex;height:1.2em;line-height:1.2em;overflow:hidden;font-variant-numeric:tabular-nums;font-weight:900}
.od-c{display:inline-block;height:1.2em;overflow:hidden}
.od-s{display:flex;flex-direction:column;transition:transform .7s cubic-bezier(.2,.75,.25,1)}
.od-s span{height:1.2em}
.mebtn{background:none;border:0;padding:0;cursor:pointer;border-radius:12px}
.lv.lost .stage-t::after{content:" Reconnecting...";color:#ffd35e}

/* ---------- the layout: phone one column, a computer two ---------- */
.lv{padding-top:6px;animation:rise .4s var(--ease) both}
.lv-main{min-width:0}
.lv-side{min-width:0}

/* ---------- the stage (lights up with piece 2) ---------- */
.stage{border-radius:26px;overflow:hidden;aspect-ratio:16/9;max-height:52vh;display:grid;place-items:center;
  background:radial-gradient(80% 90% at 50% 0%,rgba(3,251,176,.10),transparent 70%),var(--gl-fill)}
.stage-in{position:relative;z-index:1;text-align:center;padding:16px}
.stage-in img{width:54px;height:54px;border-radius:24%;margin:0 auto;opacity:.92;box-shadow:0 10px 30px -10px rgba(3,251,176,.5)}
.stage-mk{margin:12px 0 0;font-size:clamp(20px,5.6vw,30px);font-weight:600;letter-spacing:-.01em}
.stage-mk b{font-weight:900;color:#03fbb0;text-shadow:0 0 22px rgba(3,251,176,.35)}
.stage-t{margin:6px 0 0;font-size:13px;font-weight:600;color:var(--soft)}
.stage-glow{position:absolute;left:10%;right:10%;bottom:-30%;height:60%;border-radius:50%;background:radial-gradient(closest-side,rgba(3,251,176,.16),transparent);pointer-events:none}
.pilot{position:absolute;top:14px;right:16px;width:7px;height:7px;border-radius:50%;background:#7fd9ff;box-shadow:0 0 8px rgba(127,217,255,.8);opacity:.7}
.stage-in .pilot{position:fixed;display:none}

/* ---------- the switch: Room · Chat · Asks (the capsule, digiUI 6.32 and 6.49) ---------- */
.lv-tabs,.side-tabs{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:14px 0 12px;padding:4px;height:50px;border-radius:999px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.side-tabs{grid-template-columns:repeat(2,1fr)}
.side-tabs{display:none}   /* a phone switches with the three tabs above; the side tabs are a computer's */
.lv-tabs button,.side-tabs button{position:relative;z-index:1;border:0;background:none;font-size:15px;font-weight:700;color:var(--soft);cursor:pointer;border-radius:999px;
  display:inline-flex;align-items:center;justify-content:center;gap:6px}
.lv-tabs button[aria-selected="true"],.side-tabs button[aria-selected="true"]{color:var(--ink);font-weight:800}
.lv-cap{position:absolute;top:4px;bottom:4px;left:4px;width:calc((100% - 8px)/3);border-radius:999px;transition:transform .5s cubic-bezier(.3,1.35,.5,1);
  background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,.07));border:1px solid rgba(255,255,255,.14);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 0 0 1px rgba(3,251,176,.18),0 8px 22px -8px rgba(3,251,176,.45)}
.side-tabs .lv-cap{width:calc((100% - 8px)/2)}
.lv[data-tab="chat"] .lv-tabs .lv-cap{transform:translateX(100%)}
.lv[data-tab="asks"] .lv-tabs .lv-cap{transform:translateX(200%)}
.lv[data-side="asks"] .side-tabs .lv-cap{transform:translateX(100%)}
.badge{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#ff5a4f;color:#fff;font-style:normal;font-size:11px;font-weight:900;line-height:18px}
.badge[hidden]{display:none}

/* phone: one area at a time */
.pane{display:none}
.lv[data-tab="room"] .pane-room,.lv[data-tab="chat"] .pane-chat,.lv[data-tab="asks"] .pane-asks{display:block}
.lv:not([data-tab="room"]) .lv-bar{display:none}

/* ---------- the room: everyone's card as a glass tile ---------- */
.tiles-room{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding-bottom:92px}
.tl{display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px;padding:14px 8px 12px;border-radius:22px;cursor:pointer;color:var(--ink);overflow:hidden;
  transition:transform .2s var(--ease),box-shadow .25s var(--ease)}
.tl:active{transform:scale(.97)}
@media (hover:hover){.tl:hover{transform:translateY(-2px);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 24px 46px -24px rgba(3,251,176,.35)}}
.tl-sq{display:block;margin-bottom:4px}
.tl-n{display:block;width:100%;font-size:13.5px;font-weight:800;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-b{display:block;width:100%;font-size:11.5px;font-weight:600;color:var(--soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-tags{display:flex;gap:5px;justify-content:center;flex-wrap:wrap;min-height:18px;margin-top:6px}
.tl-tag{display:inline-flex;align-items:center;height:18px;padding:0 7px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.02em;white-space:nowrap}
.tl-tag.host{background:rgba(255,211,94,.14);color:#ffd35e;letter-spacing:.12em;text-transform:uppercase;font-size:9.5px}
.tl-tag.m{background:rgba(3,251,176,.10);color:#03fbb0;font-weight:600}
.tl-tag.m b{font-weight:900}
/* a new arrival floats in, and a light sweeps across them once (motion means news) */
.tl.arrive{animation:arrive .6s cubic-bezier(.2,.75,.25,1) both}
.tl.arrive::after{content:"";position:absolute;inset:-20% -60%;pointer-events:none;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.22) 50%,transparent 60%);
  transform:translateX(-70%);animation:sweep 1.1s .35s cubic-bezier(.4,0,.2,1) both}
@keyframes arrive{from{opacity:0;transform:translateY(14px) scale(.94)}to{opacity:1;transform:none}}
@keyframes sweep{to{transform:translateX(70%)}}
.tl.leave{animation:leave .3s ease-in both}
@keyframes leave{to{opacity:0;transform:scale(.92)}}

/* the SQ in its smaller sizes (the glass table keeps its pool and reflection) */
.sq.mid{width:64px;height:64px;margin-bottom:16px}
.sq.mid .sq-r>*{width:64px;height:64px}
.sq.mid .sq-f.ini{font-size:24px}
.sq.mid::after{bottom:-12px;height:16px}
.sq.mid .sq-r{height:20px}
.sq.tiny{width:30px;height:30px;margin:0}
.sq.tiny::after,.sq.tiny .sq-r{display:none}
.sq.tiny .sq-f{border-radius:24%}
.sq.tiny .sq-f.ini{font-size:12px}

/* ---------- raise hand (lights up with piece 3) ---------- */
.lv-bar{position:fixed;left:0;right:0;bottom:0;z-index:15;display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:14px 16px max(14px,env(safe-area-inset-bottom));background:linear-gradient(to top,rgba(6,9,8,.96) 55%,rgba(6,9,8,0))}
.hand{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:min(100%,420px);height:56px;border-radius:999px;font-size:17px;font-weight:800;
  color:var(--ink);background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.05));border:1px solid rgba(255,255,255,.12);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 14px 30px -16px rgba(0,0,0,.9);cursor:pointer}
.hand svg{width:22px;height:22px;fill:currentColor}
.hand[disabled]{opacity:.45;cursor:default}
.hand-t{font-size:12px;font-weight:600;color:var(--faint)}

/* ---------- the chat ---------- */
.pane-chat{position:relative}
.chat{display:flex;flex-direction:column;gap:2px;height:calc(100dvh - 56.25vw - 260px);min-height:280px;overflow-y:auto;overscroll-behavior:contain;
  padding:10px 4px 12px;-webkit-overflow-scrolling:touch}
.chat-empty{margin:auto;color:var(--faint);font-size:14px;font-weight:600}
.msg{position:relative;display:flex;gap:10px;padding:8px 10px;border-radius:16px}
.msg:hover{background:rgba(255,255,255,.03)}
.msg-sq{flex:none;padding-top:2px}
.msg-b{min-width:0;flex:1}
.msg-h{margin:0;display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;font-size:13px}
.msg-h b{font-weight:800}
.msg-biz{font-size:12px;font-weight:600;color:var(--faint);max-width:44vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msg-h time{margin-left:auto;font-size:11px;font-weight:600;color:var(--faint)}
.msg:has(.msg-x) .msg-h{padding-right:38px}   /* the host's take-down never sits on the time */
.msg-t{margin:3px 0 0;font-size:15.5px;line-height:1.45;color:var(--ink);overflow-wrap:anywhere;white-space:pre-wrap}
.msg-x{position:absolute;top:6px;right:6px;min-width:28px;height:28px;padding:0 8px;border-radius:999px;border:0;background:rgba(255,90,79,.12);color:#ff7a7a;font-size:13px;font-weight:800;cursor:pointer;opacity:0}
.msg:hover .msg-x,.msg-x:focus-visible,.msg-x[data-sure]{opacity:1}
@media (hover:none){.msg-x{opacity:.7}}
.newmsg{position:absolute;left:50%;bottom:76px;transform:translateX(-50%);display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border-radius:999px;border:0;
  background:#03fbb0;color:#04120c;font-size:13px;font-weight:800;cursor:pointer;box-shadow:0 10px 24px -10px rgba(3,251,176,.7)}
.newmsg svg{width:10px;height:14px;fill:currentColor}
.newmsg[hidden]{display:none}
.say{display:flex;gap:8px;align-items:center;padding:8px;border-radius:999px;background:var(--gl-fill);border:1px solid var(--gl-edge);box-shadow:inset 0 1px 0 rgba(255,255,255,.12)}
.say-in{flex:1;min-width:0;height:44px;padding:0 14px;border:0;background:none;color:var(--ink);font:600 16px/1.2 'Montserrat',system-ui,sans-serif}
.say-in::placeholder{color:var(--faint)}
.say-in:focus{outline:none}
.say:focus-within{border-color:rgba(3,251,176,.45);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 0 0 4px rgba(3,251,176,.08)}
.say-go{flex:none;width:44px;height:44px;border-radius:50%;border:0;cursor:pointer;display:grid;place-items:center;background:#fff;
  box-shadow:0 0 0 1px rgba(3,251,176,.25),0 8px 20px -6px rgba(3,251,176,.55)}
.say-go svg{width:20px;height:20px;fill:#05672a}

/* ---------- asks (lights up with piece 4): unlit, not grey ---------- */
.unlit{position:relative;margin-top:4px;padding:36px 22px;border-radius:24px;text-align:center;background:rgba(255,255,255,.025);border:1px dashed rgba(255,255,255,.10)}
.unlit .pilot{top:16px;right:18px}
.unlit-t{margin:0;font-size:20px;font-weight:900}
.unlit-s{margin:8px auto 0;max-width:34ch;font-size:14px;line-height:1.5;color:var(--soft)}
.unlit-s.soon{color:#7fd9ff;font-weight:700}

/* ---------- their card in a sheet, at night ---------- */
.scrim.night .sheet{background:#0f1412;color:var(--ink)}
.sheet.gl{border-radius:28px 28px 0 0}
@media (min-width:640px){.sheet.gl{border-radius:28px}}
.sheet .pc-row{display:flex;gap:18px;align-items:center}
.sheet .pc-n{margin:0;font-size:22px;font-weight:900}
.sheet .pc-b{margin:4px 0 0;font-size:15px;font-weight:700}
.sheet .pc-m{margin:3px 0 0;font-size:13px;color:var(--soft)}
.sheet .tl-tags{justify-content:flex-start}
.sh-links{display:grid;gap:8px;margin-top:18px}
.lk{display:flex;align-items:center;gap:12px;height:52px;padding:0 16px;border-radius:16px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);font-size:15px;font-weight:700}
.lk svg{width:20px;height:20px;fill:currentColor}

/* ---------- a computer: the stage and the room on the left, the chat on the right ---------- */
@media (min-width:1024px){
  .lv{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:24px;align-items:start}
  .lv-tabs{display:none}
  .side-tabs{display:grid;margin-top:0}
  .lv .pane-room{display:block!important}
  .lv .pane-chat,.lv .pane-asks{display:none!important}
  .lv[data-side="chat"] .pane-chat,.lv[data-side="asks"] .pane-asks{display:block!important}
  .lv-side{position:sticky;top:84px}
  .chat{height:calc(100dvh - 250px)}
  .tiles-room{grid-template-columns:repeat(auto-fill,minmax(138px,1fr));gap:12px;margin-top:18px}
  .lv-main{display:flex;flex-direction:column}
  .lv-bar{position:static;order:1;background:none;padding:0;margin-top:16px}   /* a computer: raise hand sits under the stage, never over the tiles */
  .lv-main .pane-room{order:2}
  .tiles-room{padding-bottom:24px}
  .lv:not([data-tab="room"]) .lv-bar{display:flex}
  .newmsg{bottom:80px}
}
body.night .toast{bottom:max(96px,calc(env(safe-area-inset-bottom) + 84px))}   /* above raise hand and the chat box */
@media (min-width:1024px){body.night .toast{bottom:28px}}
@media (prefers-reduced-motion: reduce){ .tl.arrive::after{display:none} .live-dot{animation:none} }
