/* Hero overlay replica — the live dictation stage (Outlook + bubble + pill).
   Ported from the standalone prototype; global body/html/* resets stripped and
   everything scoped under .blabb-hero so it can't leak into the site. */
@property --c1{syntax:'<color>';inherits:true;initial-value:#d3d3d3}
@property --c2{syntax:'<color>';inherits:true;initial-value:#a9a9a9}
@property --c3{syntax:'<color>';inherits:true;initial-value:#808080}

.blabb-hero{
  --bg:#0D0D0F; --surface2:#1f1f24;
  --gold:#D4A843; --gold-bright:#F0C75E;
  --text:#F5F5F3; --raw:#C9C9CE; --muted:#6B6B70;
  --filler:#E8738A; --danger:#E85D5D; --green:#4CAF7D;
  --line:rgba(255,255,255,.08);
  --pillbg:rgba(18,18,22,.92);
  --sans:"Segoe UI Variable","Segoe UI",system-ui,-apple-system,sans-serif;
  --mono:"Cascadia Code",ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  width:100%;max-width:720px;margin:0 auto;
  font-family:var(--sans);color:var(--text);-webkit-font-smoothing:antialiased;
}
.blabb-hero *{box-sizing:border-box}

.blabb-hero .stage-wrap{position:relative;width:100%}
.blabb-hero .stage{position:absolute;top:0;left:0;width:720px;height:438px;
  transform:scale(var(--s,1));transform-origin:top left;opacity:0;cursor:pointer;
  -webkit-font-smoothing:antialiased}
.blabb-hero .stage.paused .sdot{animation-play-state:paused}

.blabb-hero .crow{position:absolute;left:0;right:0;display:flex;justify-content:center}
.blabb-hero #rowOutlook{top:20px;z-index:1}
.blabb-hero #rowBubble{top:auto;bottom:78px;align-items:flex-end;z-index:5}
.blabb-hero #rowPill{top:auto;bottom:24px;z-index:5}

/* ---------------- Outlook ---------------- */
.blabb-hero .outlook{width:720px;height:317px;border-radius:8px;overflow:hidden;
  background:var(--surface2);border:1px solid var(--line);
  box-shadow:0 30px 80px rgba(0,0,0,.55);opacity:0}
.blabb-hero .ol-bar{height:38px;display:flex;align-items:flex-end;justify-content:space-between;
  padding:0 0 0 10px;background:linear-gradient(180deg,#2b2b31,#26262c);border-bottom:1px solid var(--line)}
.blabb-hero .ol-title{font-size:12px;color:#e5e5ea;display:flex;align-items:center;
  height:28px;padding:0 14px;border-radius:8px 8px 0 0;background:var(--surface2);
  box-shadow:inset 1px 0 0 rgba(255,255,255,.04),inset -1px 0 0 rgba(255,255,255,.04),inset 0 1px 0 rgba(255,255,255,.05)}
.blabb-hero .ol-ctrls{display:flex;align-self:stretch;align-items:stretch;color:#c8c8cd;font-size:11px}
.blabb-hero .ol-ctrls span{width:46px;display:flex;align-items:center;justify-content:center;transition:background .12s ease}
.blabb-hero .ol-ctrls span:hover{background:rgba(255,255,255,.08)}
.blabb-hero .ol-ctrls .x:hover{background:#c42b1c;color:#fff}
.blabb-hero .ol-ribbon{height:30px;background:#26262c;border-bottom:1px solid var(--line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
.blabb-hero .ol-field{display:flex;align-items:center;gap:10px;padding:8px 18px;
  border-bottom:1px solid var(--line);font-size:13px;color:var(--muted)}
.blabb-hero .ol-field .ln{flex:1;height:1px;background:var(--line)}
.blabb-hero .ol-body{position:relative;padding:14px 18px;font-size:15px;line-height:1.6;color:var(--text);min-height:96px}
.blabb-hero .caret{display:inline-block;width:1.5px;height:1.05em;background:var(--text);
  vertical-align:-2px;margin-left:1px;animation:blabb-blink 1.06s steps(1) infinite}
@keyframes blabb-blink{50%{opacity:0}}
.blabb-hero .ob-text{display:none}

/* ---------------- live transcription bubble ---------------- */
.blabb-hero .bubble{position:relative;width:480px;max-width:480px;padding:13px 18px 15px;border-radius:16px;
  background:rgba(26,26,30,.62);border:1px solid rgba(255,255,255,.10);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  box-shadow:0 40px 120px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.05);
  opacity:0;transform-origin:center bottom}
.blabb-hero .tail{position:absolute;bottom:-7px;left:50%;margin-left:-8px;width:0;height:0;
  border-left:8px solid transparent;border-right:8px solid transparent;
  border-top:8px solid rgba(26,26,30,.92);filter:drop-shadow(0 1px 0 rgba(255,255,255,.06))}
.blabb-hero .b-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}
.blabb-hero .status{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--muted);font-weight:600}
.blabb-hero .sdot{width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px var(--gold);
  animation:blabb-pulse 1.2s ease-in-out infinite}
@keyframes blabb-pulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}
.blabb-hero .st-busy .sdot{animation-duration:.6s}
.blabb-hero .st-done{color:var(--green)} .blabb-hero .st-done .sdot{background:var(--green);box-shadow:0 0 8px var(--green);animation:none}
.blabb-hero .tag{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);opacity:.85;font-weight:600}

.blabb-hero .bubble-body{position:relative;min-height:108px}
.blabb-hero #rawText{position:absolute;inset:0;font-family:var(--mono);font-size:14.5px;line-height:1.78;color:var(--raw)}
.blabb-hero #polText{position:absolute;inset:0;font-size:16px;line-height:1.62;color:var(--text);
  opacity:0;clip-path:inset(0 100% 0 0)}
/* margin-right carries the inter-word gap OUTSIDE the measured box, so the per-word
   underline (left:0;right:0) spans the word only — never the trailing space. */
.blabb-hero .w{display:inline-block;white-space:pre;position:relative;margin-right:1ch}
.blabb-hero .w.filler{color:var(--filler)}
.blabb-hero .w .x{position:absolute;left:100%;margin-left:3px;top:-3px;color:var(--danger);
  font-style:normal;font-weight:800;font-size:.78em;opacity:0}
.blabb-hero .w .ul{position:absolute;left:0;right:0;bottom:-4px;height:2px;border-radius:2px;
  background:linear-gradient(90deg,var(--gold),var(--gold-bright));transform:scaleX(0);transform-origin:left;opacity:.6}
.blabb-hero .rc{display:inline-block;white-space:pre}
.blabb-hero .rc .cap,.blabb-hero .rc .punct{display:inline-block}
.blabb-hero .pol-underline{position:absolute;left:0;right:0;bottom:-9px;height:2px;border-radius:2px;
  background:linear-gradient(90deg,var(--gold),rgba(212,168,67,0));transform:scaleX(0);transform-origin:left}
.blabb-hero .scanline{position:absolute;top:-6px;bottom:-6px;width:46px;left:-20%;pointer-events:none;opacity:0;
  background:linear-gradient(90deg,transparent,rgba(240,199,94,.55),transparent);
  -webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 16%,#000 84%,transparent 100%);
  mask-image:linear-gradient(180deg,transparent 0%,#000 16%,#000 84%,transparent 100%);
  filter:blur(1px)}

/* ---------------- the overlay pill (replica) ---------------- */
.blabb-hero .pill{display:flex;align-items:center;padding:9px 32px;border-radius:999px;
  background:var(--pillbg);border:1px solid rgba(255,255,255,.10);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  box-shadow:0 12px 30px rgba(0,0,0,.5);transform-origin:center;opacity:0}

/* ---- audio bar visualizer: rAF + epsilon-gated writes + eased gradient.
   idle = grey dots, listening = gold dance, processing = travelling tall pulse. ---- */
.blabb-hero .viz{position:relative;width:52px;height:24px;
  --c1:#d3d3d3;--c2:#a9a9a9;--c3:#808080;
  transition:--c1 .35s ease,--c2 .35s ease,--c3 .35s ease}
.blabb-hero .viz-listen,.blabb-hero .viz-process{--c1:#F6D27A;--c2:#EFC85C;--c3:#D4A843}
.blabb-hero .bar{position:absolute;top:0;width:4px;height:24px;border-radius:2px;
  transform:scaleY(.166);transform-origin:center;will-change:transform,opacity;
  background:linear-gradient(180deg,var(--c1),var(--c2),var(--c3))}

/* floater for the flying polished clone */
.blabb-hero .floater{position:absolute;inset:0;z-index:6;pointer-events:none}
.blabb-hero .floater .clone{position:absolute;top:0;left:0;font-size:16px;line-height:1.62;color:var(--text);white-space:normal}
.blabb-hero .floater .rc,.blabb-hero .floater .cap,.blabb-hero .floater .punct{opacity:1!important;transform:none!important;filter:none!important;clip-path:none!important}
