/* Campaign Messaging Demo — brand-neutral. Functional-clean, not a polish pass. */
:root{
  --bg:#0f1115; --panel:#171a21; --panel-2:#1e222b; --line:#2a2f3a;
  --ink:#e8eaf0; --ink-2:#9aa2b1; --accent:#5b54e6; --accent-2:#4740c9;
  --ok:#34c759; --warn:#ffcc00; --radius:14px;
  --sans:'Work Sans',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  --display:'Barlow Condensed','Work Sans',system-ui,sans-serif;
  --rail-w:224px;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.45}
button{font-family:inherit;cursor:pointer}
h2{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);margin:0;font-weight:600}

/* top bar */
.topbar{display:flex;align-items:center;gap:16px;padding:12px 20px;border-bottom:1px solid var(--line);background:var(--panel);position:sticky;top:0;z-index:10}
.brand{display:flex;align-items:center;gap:8px;font-weight:700;letter-spacing:-.01em}
.brand .dot{width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent)}
.brand .tagline{font-weight:500;font-size:11px;color:var(--ink-2);border:1px solid var(--line);padding:2px 7px;border-radius:20px;text-transform:uppercase;letter-spacing:.06em}
.seg{margin-left:auto;display:flex;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg button{background:transparent;border:0;color:var(--ink-2);padding:7px 16px;font-weight:600}
.seg button.on{background:var(--accent);color:#fff}
.reset{background:transparent;border:1px solid var(--line);color:var(--ink-2);border-radius:10px;padding:7px 12px}
.reset:hover{color:var(--ink);border-color:var(--ink-2)}

/* examples bar */
.op-wrap{padding:16px}
.examples{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:11px 14px;margin-bottom:16px}
.ex-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);font-weight:700;margin-right:2px}
.ex-btn{background:var(--panel-2);border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:7px 13px;font-size:12px;font-weight:600}
.ex-btn:hover{border-color:var(--accent);color:#fff}
.ex-hint{font-size:11px;color:var(--ink-2);margin-left:auto}

/* layouts */
.operator{display:grid;grid-template-columns:300px 1fr 360px;gap:16px;align-items:start}
.recipient{padding:16px}
.recipient{display:grid;grid-template-columns:300px 1fr;gap:16px;padding:16px;align-items:start}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.panel-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.count{font-size:11px;color:var(--ink-2);background:var(--panel-2);border:1px solid var(--line);padding:2px 9px;border-radius:20px}

/* recipient picker */
.recip-list,.phone-rail .rail-item{display:flex}
.recip-list{flex-direction:column;gap:8px}
.recip{display:flex;align-items:center;gap:10px;background:var(--panel-2);border:1px solid var(--line);border-radius:11px;padding:9px 11px;text-align:left;color:var(--ink);transition:.12s}
.recip:hover{border-color:var(--ink-2)}
.recip.on{border-color:var(--accent);background:#1a2233}
.ava{width:34px;height:34px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-size:12px;font-weight:700;color:#fff;background:hsl(var(--h,210) 55% 45%)}
.ava.sm{width:26px;height:26px;font-size:10px}
.recip-meta{display:flex;flex-direction:column;min-width:0}
.recip-name{font-weight:600}
.recip-num{font-size:11px;color:var(--ink-2)}
.recip .check{margin-left:auto;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:12px;color:#fff;background:var(--accent);opacity:0}
.recip.on .check{opacity:1}

/* composer */
.field,.mini{display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--ink-2);margin-bottom:10px}
.field input,.mini input,textarea{background:var(--panel-2);border:1px solid var(--line);border-radius:9px;color:var(--ink);padding:9px 11px;font-family:inherit;font-size:13px;width:100%;resize:vertical}
input:focus,textarea:focus{outline:none;border-color:var(--accent)}
.blocks{display:flex;flex-direction:column;gap:10px;margin:6px 0 12px}
.block{background:var(--panel-2);border:1px solid var(--line);border-radius:11px;padding:10px}
.block-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.tag{font-size:11px;font-weight:600;color:var(--ink-2)}
.x{background:transparent;border:0;color:var(--ink-2);font-size:13px}
.x:hover{color:#ff6b6b}
.add-row{display:flex;flex-wrap:wrap;gap:7px}
.add-btn{background:var(--panel-2);border:1px dashed var(--line);color:var(--ink-2);border-radius:9px;padding:7px 11px;font-size:12px;font-weight:600}
.add-btn:hover{border-color:var(--accent);color:var(--ink)}

/* send */
.send-btn{width:100%;margin-top:12px;background:var(--accent);border:0;color:#fff;font-weight:700;padding:12px;border-radius:11px;font-size:14px}
.send-btn:hover{background:var(--accent-2)}
.send-btn:disabled{background:var(--panel-2);color:var(--ink-2);cursor:not-allowed}

/* phone */
.phone-stage{display:flex;justify-content:center;padding-top:4px}
.phone{width:320px;background:#000;border:2px solid #23262e;border-radius:38px;padding:10px 8px 12px;position:relative;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.notch{width:120px;height:22px;background:#000;border-radius:0 0 16px 16px;position:absolute;top:2px;left:50%;transform:translateX(-50%);z-index:3}
.status-bar{display:flex;justify-content:space-between;font-size:11px;color:#aeb4c0;padding:6px 14px 2px}
.phone-top{display:flex;align-items:center;gap:9px;justify-content:center;padding:8px 10px;border-bottom:1px solid #1c1f27}
.phone-title{font-weight:700;font-size:14px}
.thread{background:#0a0c10;min-height:360px;max-height:520px;overflow-y:auto;padding:14px 12px;display:flex;flex-direction:column;gap:7px;border-radius:0 0 26px 26px}
.sender-name{font-size:10px;color:var(--ink-2);text-align:center;margin:6px 0 2px;text-transform:uppercase;letter-spacing:.06em}
.bubble{max-width:82%;align-self:flex-start;border-radius:18px 18px 18px 5px;background:#262a33;color:#fff;padding:9px 13px;font-size:14px;word-wrap:break-word;animation:pop .18s ease}
.bubble.text{white-space:pre-wrap}
.bubble.media{padding:5px;background:#1b1e26;overflow:hidden}
@keyframes pop{from{transform:translateY(6px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.m-media{position:relative;border-radius:13px;overflow:hidden;max-width:230px}
.m-media img,.m-media video{display:block;width:100%;max-height:280px;object-fit:cover;border-radius:13px}
.m-media.audio{padding:8px;min-width:200px}
.audio-row{display:flex;align-items:center;gap:8px}
.audio-row audio{width:100%;height:34px}
.note{font-size:18px}
.cap{font-size:12px;color:#c7ccd6;padding:6px 8px 2px}
.promo-badge{position:absolute;top:7px;left:7px;z-index:2;background:var(--warn);color:#000;font-size:9px;font-weight:800;padding:2px 7px;border-radius:5px;text-transform:uppercase;letter-spacing:.05em}
.m-broken{padding:22px 14px;text-align:center;color:var(--ink-2);font-size:12px;background:#14171d;border:1px dashed var(--line);border-radius:13px}
.meta-line{align-self:flex-end;font-size:10px;color:var(--ink-2);margin:1px 4px 6px}
.status{font-weight:700}
.status.preparing{color:var(--warn)}
.status.sending{color:var(--accent)}
.status.delivered{color:var(--ok)}
.empty-thread{color:var(--ink-2);text-align:center;padding:40px 10px;font-size:13px}
.composer-bar{display:flex;align-items:center;justify-content:space-between;background:#0a0c10;border-top:1px solid #1c1f27;padding:9px 12px;color:var(--ink-2);font-size:13px;border-radius:0 0 26px 26px}
.composer-bar .mic{background:var(--accent);color:#fff;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:12px}

/* recipient rail */
.phone-rail{display:flex;flex-direction:column;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.rail-item{align-items:center;gap:10px;background:var(--panel-2);border:1px solid var(--line);border-radius:11px;padding:9px 11px;text-align:left;color:var(--ink)}
.rail-item.on{border-color:var(--accent);background:#1a2233}

@media(max-width:1040px){
  .operator{grid-template-columns:1fr}
  .recipient{grid-template-columns:1fr}
}

/* ============ Phase 3 polish (recipient-UX focus; state engine unchanged) ============ */

/* phone chrome — more realistic, brand-neutral (NOT a clone of any messenger) */
.phone{width:326px;border:2px solid #2b2f38;border-radius:44px;padding:12px 10px 14px;
  background:linear-gradient(180deg,#050607,#0b0d11);box-shadow:0 26px 70px rgba(0,0,0,.6),inset 0 0 0 6px #000}
.notch{width:112px;height:26px;border-radius:0 0 18px 18px}
.status-bar{padding:7px 18px 3px;font-weight:600}
.sb-icons{display:inline-flex;align-items:center;gap:5px}
.sb-icons .sig,.sb-icons .wifi,.sb-icons .batt{display:inline-block}
.sb-icons .sig{width:16px;height:10px;background:
  linear-gradient(to top,#aeb4c0 3px,transparent 3px) 0 100%/3px 4px no-repeat,
  linear-gradient(to top,#aeb4c0 5px,transparent 5px) 5px 100%/3px 6px no-repeat,
  linear-gradient(to top,#aeb4c0 7px,transparent 7px) 10px 100%/3px 8px no-repeat,
  linear-gradient(to top,#aeb4c0 9px,transparent 9px) 15px 100%/3px 10px no-repeat}
.sb-icons .wifi{width:15px;height:11px;background:radial-gradient(circle at 50% 100%,#aeb4c0 0 2px,transparent 2px),
  radial-gradient(circle at 50% 100%,transparent 4px,#aeb4c0 4px 5px,transparent 5px),
  radial-gradient(circle at 50% 100%,transparent 7px,#aeb4c0 7px 8px,transparent 8px)}
.sb-icons .batt{width:24px;height:12px;border:1px solid #aeb4c0;border-radius:3px;position:relative;
  background:linear-gradient(90deg,#34c759 82%,transparent 82%);background-clip:content-box;padding:1px}
.sb-icons .batt::after{content:"";position:absolute;right:-3px;top:3px;width:2px;height:6px;background:#aeb4c0;border-radius:0 2px 2px 0}

.phone-top{position:relative;gap:8px;padding:9px 8px 11px;border-bottom:1px solid rgba(255,255,255,.06)}
.chev{color:var(--accent);font-size:26px;line-height:0;font-weight:600;margin-right:-2px}
.phone-title{font-size:14px;font-weight:700}
.top-actions{position:absolute;right:10px;display:flex;gap:14px;color:var(--accent);font-size:15px}

/* textured wallpaper behind messages */
.thread.wallpaper{background:
  radial-gradient(1200px 600px at 30% -10%,rgba(91,140,255,.06),transparent 60%),
  radial-gradient(900px 500px at 90% 110%,rgba(142,91,255,.05),transparent 55%),
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E"),
  #0a0c10;
  min-height:380px}

/* received bubbles: soft, tailed, entrance animation */
.bubble{max-width:80%;border-radius:20px 20px 20px 6px;background:#22262f;box-shadow:0 1px 2px rgba(0,0,0,.35);
  padding:9px 13px;animation:bubbleIn .26s cubic-bezier(.22,1,.36,1)}
.bubble.text{background:linear-gradient(180deg,#262b34,#20242c)}
.bubble.media{padding:4px;background:#181b22;border-radius:18px}
.bubble.media .m-media{border-radius:15px}
@keyframes bubbleIn{from{transform:translateY(8px) scale(.96);opacity:0}to{transform:none;opacity:1}}
.sender-name{margin:10px 0 3px;font-weight:600;color:#8a93a6}

/* delivery status: dot + label, animated color */
.meta-line{gap:5px;display:flex;align-items:center;transition:color .3s}
.status{position:relative;padding-left:12px;transition:color .35s}
.status::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:50%;background:currentColor}
.status.preparing{color:var(--warn)}
.status.sending{color:var(--accent)}
.status.sending::before{animation:pulse 1s ease-in-out infinite}
.status.delivered{color:var(--ok)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}

/* composer bar refinement */
.composer-bar{gap:8px;padding:8px 10px}
.cb-plus{color:var(--accent);font-size:18px;font-weight:600;width:22px;text-align:center}
.cb-field{flex:1;text-align:left;border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:5px 12px;color:var(--ink-2)}
.mic{font-weight:700}

/* view switch fade */
.operator,.recipient{animation:viewFade .28s ease}
@keyframes viewFade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* nicer empty state */
.empty-thread{padding:56px 20px;line-height:1.6}

/* honor reduced motion */
@media(prefers-reduced-motion:reduce){
  .bubble,.operator,.recipient{animation:none}
  .status.sending::before{animation:none}
}

/* fix: thread is a flex column with max-height; prevent flex-shrink from collapsing
   media bubbles when the conversation overflows — let overflow-y scroll instead. */
.thread > *{flex-shrink:0}

/* ---------- inbound replies (recipient texts back) ---------- */
.bubble.outbound{align-self:flex-end;background:linear-gradient(180deg,#3b82f6,#2f6fe0);color:#fff;
  border-radius:20px 20px 6px 20px;box-shadow:0 1px 2px rgba(0,0,0,.35)}
.meta-line.out{align-self:flex-end;color:var(--ink-2)}
.sys-line{align-self:center;text-align:center;font-size:11px;line-height:1.35;color:#f2b8b8;
  background:rgba(176,42,42,.14);border:1px solid rgba(176,42,42,.34);border-radius:12px;
  padding:6px 11px;margin:8px 10px;max-width:88%}
/* live recipient composer */
.recip-composer-wrap{background:#0a0c10;border-top:1px solid #1c1f27;border-radius:0 0 26px 26px}
.reply-chips{display:flex;gap:6px;padding:8px 10px 0;flex-wrap:wrap}
.chip{background:#1b1f27;border:1px solid rgba(255,255,255,.12);color:#dfe3ea;border-radius:14px;
  padding:5px 10px;font-size:12px;cursor:pointer;transition:border-color .15s}
.chip:hover{border-color:var(--accent)}
.chip.stop{color:#f2b8b8;border-color:rgba(176,42,42,.4)}
.composer-bar.live{gap:8px}
.composer-bar.live .cb-input{flex:1;background:transparent;border:1px solid rgba(255,255,255,.14);
  border-radius:16px;padding:6px 12px;color:#fff;font-size:14px;outline:none}
.composer-bar.live .cb-input:focus{border-color:var(--accent)}
.cb-send{background:var(--accent);color:#fff;border:none;width:28px;height:28px;border-radius:50%;
  cursor:pointer;font-size:14px;flex-shrink:0}
.composer-bar.opted .cb-field.opted{flex:1;text-align:center;color:#f2b8b8;border-color:rgba(176,42,42,.34)}
/* operator-side reply visibility on the recipient rail */
.rail-badge{margin-left:auto;background:var(--accent);color:#fff;font-size:10px;font-weight:600;
  border-radius:10px;padding:2px 7px;white-space:nowrap;align-self:center}
.rail-badge.opted{background:rgba(176,42,42,.22);color:#f2b8b8;border:1px solid rgba(176,42,42,.4)}

/* ============ Phase 4 polish — bottom dock nav, animated analytics, section motion ============ */

/* leave room for the fixed dock */
body{padding-bottom:96px}

/* drawn icon system */
.ic{width:18px;height:18px;flex:0 0 auto;stroke-width:1.7}
.topbar .reset{display:inline-flex;align-items:center;gap:6px}
.reset .ic{width:15px;height:15px}
.add-btn{display:inline-flex;align-items:center;gap:6px}
.add-btn .ic{width:15px;height:15px}
.tag{display:inline-flex;align-items:center;gap:6px}
.tag .ic{width:14px;height:14px}
.note-ic{width:16px;height:16px;color:var(--accent)}
.top-actions .ic{width:17px;height:17px}

/* section shell + entrance motion (one authored moment per navigation) */
.section{max-width:1140px;margin:0 auto;padding:22px 20px}
.sec-head{position:relative;overflow:hidden;margin-bottom:18px;padding-bottom:2px}
.sec-title{font-size:25px;font-weight:750;letter-spacing:-.025em;margin:0;line-height:1.1}
.sec-sub{color:var(--ink-2);font-size:13px;margin-top:5px}
.sec-streak{position:absolute;inset:-20% -10%;pointer-events:none;opacity:0;
  background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.09) 46%,rgba(120,160,255,.20) 50%,rgba(255,255,255,.09) 54%,transparent 70%);
  transform:translateX(-115%)}
.section.enter .sec-streak{animation:secStreak 1.1s cubic-bezier(.22,1,.36,1) .05s both}
@keyframes secStreak{0%{transform:translateX(-115%);opacity:0}28%{opacity:1}100%{transform:translateX(115%);opacity:0}}
.section.enter .sec-title{animation:headIn .5s cubic-bezier(.22,1,.36,1) both}
.section.enter .sec-sub{animation:headIn .5s cubic-bezier(.22,1,.36,1) .06s both}
@keyframes headIn{from{opacity:0;transform:translateY(10px);filter:blur(5px)}to{opacity:1;transform:none;filter:none}}
.section.enter .examples,.section.enter .panel,.section.enter .stat-tile,
.section.enter .a-card,.section.enter .aud-bar,.section.enter .recip.card,
.section.enter .phone-rail,.section.enter .phone-stage,.section.enter .empty-card{
  animation:blockIn .52s cubic-bezier(.22,1,.36,1) both}
@keyframes blockIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.section.enter .stat-tile:nth-child(1){animation-delay:.04s}
.section.enter .stat-tile:nth-child(2){animation-delay:.09s}
.section.enter .stat-tile:nth-child(3){animation-delay:.14s}
.section.enter .stat-tile:nth-child(4){animation-delay:.19s}
.section.enter .a-card:nth-child(2){animation-delay:.10s}
.section.enter .a-card:nth-child(3){animation-delay:.16s}
.section.enter .recip.card:nth-child(2){animation-delay:.05s}
.section.enter .recip.card:nth-child(3){animation-delay:.10s}
.section.enter .recip.card:nth-child(4){animation-delay:.15s}

/* compose + audience layouts */
.compose-grid{display:grid;grid-template-columns:1fr 372px;gap:16px;align-items:start}
.aud-line{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;font-size:12px;color:var(--ink-2)}
.linklike{background:transparent;border:0;color:var(--accent);font-weight:600;font-size:12px;padding:0}
.linklike:hover{text-decoration:underline}
.aud-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;margin-bottom:14px}
.aud-count{font-weight:650}
.aud-actions{display:flex;gap:8px}
.ghost-btn{background:var(--panel-2);border:1px solid var(--line);color:var(--ink);border-radius:9px;padding:7px 13px;font-size:12px;font-weight:600}
.ghost-btn:hover{border-color:var(--accent);color:#fff}
.aud-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.recip.card{width:100%}
.recip.card.opted{opacity:.55;cursor:not-allowed}

/* analytics — ticker stat tiles */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.stat-tile{position:relative;overflow:hidden;background:linear-gradient(180deg,var(--panel),var(--panel-2));
  border:1px solid var(--line);border-radius:var(--radius);padding:16px 16px 14px}
.stat-val{font-size:34px;font-weight:750;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.stat-label{margin-top:9px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);font-weight:600}
.stat-tile.warn .stat-val{color:var(--warn)}
.stat-tile .streak{position:absolute;top:0;left:0;right:0;height:2px;transform:translateX(-100%);opacity:0;
  background:linear-gradient(90deg,transparent,var(--accent),transparent)}
.section.enter .stat-tile .streak{animation:tileStreak 1.5s ease .22s both}
@keyframes tileStreak{0%{transform:translateX(-100%);opacity:0}42%{opacity:.9}100%{transform:translateX(100%);opacity:0}}

/* analytics cards */
.analytics-grid{display:grid;grid-template-columns:290px 1fr;gap:12px;align-items:start}
.a-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}
.a-card.wide{grid-column:1 / -1}
.card-title{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);font-weight:600;margin-bottom:14px}
.a-card.hero{display:flex;flex-direction:column;align-items:center}
.a-card.hero .card-title{align-self:flex-start}

/* delivery-rate donut */
.donut-wrap{position:relative;width:184px;height:184px;margin:4px auto 6px}
.donut{width:100%;height:100%;transform:rotate(-90deg)}
.donut-bg{fill:none;stroke:var(--panel-2);stroke-width:12}
.donut-fg{fill:none;stroke:var(--accent);stroke-width:12;stroke-linecap:round;
  stroke-dashoffset:var(--c);transition:stroke-dashoffset 1.15s cubic-bezier(.22,1,.36,1)}
.donut-fg.in{stroke-dashoffset:var(--off)}
.donut-center{position:absolute;inset:0;display:grid;place-content:center;text-align:center}
.donut-num{font-size:40px;font-weight:750;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1}
.donut-cap{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);margin-top:4px}

/* delivery funnel bars */
.funnel{display:flex;flex-direction:column;gap:13px}
.funnel-head{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-2);margin-bottom:6px}
.funnel-val{color:var(--ink);font-weight:650;font-variant-numeric:tabular-nums}
.funnel-track{height:10px;background:var(--panel-2);border-radius:6px;overflow:hidden}
.funnel-fill{height:100%;width:100%;border-radius:6px;transform:scaleX(0);transform-origin:left center;transition:transform 1s cubic-bezier(.22,1,.36,1)}
.funnel-fill.in{transform:scaleX(var(--sx))}
.k-a{background:linear-gradient(90deg,#5b8cff,#8e7bff)}
.k-b{background:linear-gradient(90deg,#4f7cf0,#6f8dff)}
.k-c{background:linear-gradient(90deg,#34c759,#5fd487)}
.k-d{background:linear-gradient(90deg,#ffcc00,#ffd95e)}

/* message-mix bars */
.type-list{display:flex;flex-direction:column;gap:11px}
.type-row{display:grid;grid-template-columns:22px 92px 1fr 26px;align-items:center;gap:10px}
.type-ic-wrap{color:var(--ink-2);display:grid;place-items:center}
.type-ic{width:16px;height:16px}
.type-name{font-size:12px;color:var(--ink-2)}
.type-track{height:8px;background:var(--panel-2);border-radius:5px;overflow:hidden}
.type-fill{height:100%;width:100%;border-radius:5px;background:linear-gradient(90deg,var(--accent-2),var(--accent));transform:scaleX(0);transform-origin:left center;transition:transform .95s cubic-bezier(.22,1,.36,1)}
.type-fill.in{transform:scaleX(var(--sx))}
.type-val{font-size:12px;font-weight:650;text-align:right;font-variant-numeric:tabular-nums}

/* inbox layout */
.inbox-grid{display:grid;grid-template-columns:300px 1fr;gap:16px;align-items:start}

/* empty states */
.empty-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;
  background:var(--panel);border:1px dashed var(--line);border-radius:var(--radius);padding:52px 24px;min-height:260px}
.empty-ic{width:34px;height:34px;color:var(--ink-2);opacity:.7}
.empty-title{font-weight:700;font-size:15px}
.empty-sub{color:var(--ink-2);font-size:13px;max-width:340px;line-height:1.5}

/* app shell — house Streamline operator layout: fixed left rail + edge-to-edge main */
.appshell{display:grid;grid-template-columns:var(--rail-w) 1fr;min-height:100vh}
.appmain{min-width:0}
.section{max-width:1180px}

/* left side-rail */
.rail{position:sticky;top:0;align-self:start;height:100vh;display:flex;flex-direction:column;
  gap:22px;padding:20px 14px;background:var(--panel);border-right:1px solid var(--line);overflow-y:auto}
.rail-brand{display:flex;align-items:center;gap:8px;padding:4px 8px 2px}
.rail-brand .dot{width:11px;height:11px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent);flex:0 0 auto}
.rail-name{font-family:var(--display);font-weight:600;font-size:22px;letter-spacing:.01em;line-height:1}
.rail-sub{font-size:10px;color:var(--ink-2);border:1px solid var(--line);padding:2px 6px;border-radius:20px;
  text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.rail-nav{display:flex;flex-direction:column;gap:18px}
.rail-group{display:flex;flex-direction:column;gap:4px}
.rail-glabel{font-size:10px;text-transform:uppercase;letter-spacing:.11em;color:var(--ink-2);
  font-weight:700;padding:0 10px 4px}
.rail-item{display:flex;align-items:center;gap:11px;background:transparent;border:0;color:var(--ink-2);
  padding:9px 12px;border-radius:11px;font-size:13.5px;font-weight:600;text-align:left;
  transition:color .15s,background .15s}
.rail-item .rail-ic{width:18px;height:18px;flex:0 0 auto}
.rail-item:hover{color:var(--ink);background:var(--panel-2)}
.rail-item.on{color:#fff;background:var(--accent);box-shadow:0 6px 18px -6px var(--accent)}
.rail-reset{margin-top:auto;display:flex;align-items:center;gap:8px;justify-content:center;
  background:transparent;border:1px solid var(--line);color:var(--ink-2);border-radius:11px;
  padding:9px 12px;font-weight:600}
.rail-reset:hover{color:var(--ink);border-color:var(--ink-2)}
.rail-reset .reset-ic{width:15px;height:15px}

/* Streamline display type + pill CTAs */
.sec-title{font-family:var(--display);letter-spacing:.005em}
.send-btn,.ex-btn,.add-btn{border-radius:999px}

/* recipient activity log (analytics) */
.act-list{display:flex;flex-direction:column}
.act-row{display:flex;align-items:center;gap:11px;padding:10px 2px;border-bottom:1px solid var(--line)}
.act-row:last-child{border-bottom:0}
.act-meta{display:flex;flex-direction:column;min-width:0;margin-right:auto}
.act-name{font-weight:600}
.act-num{font-size:11px;color:var(--ink-2)}
.act-time{font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.act-tag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  padding:3px 9px;border-radius:20px;border:1px solid transparent}
.act-tag.reply{color:#8fb4ff;background:rgba(91,84,230,.14);border-color:rgba(91,84,230,.4)}
.act-tag.opt{color:var(--warn);background:rgba(255,204,0,.12);border-color:rgba(255,204,0,.35)}
.chip{font-size:11px;font-weight:600;padding:4px 11px;border-radius:20px;border:1px solid var(--line);
  color:var(--ink-2);background:var(--panel-2);white-space:nowrap}
.chip-ok{color:#8fe6a6;border-color:rgba(52,199,89,.4);background:rgba(52,199,89,.12)}
.chip-send{color:#c7c0ff;border-color:rgba(91,84,230,.4);background:rgba(91,84,230,.12)}
.chip-prep{color:var(--ink-2)}
.section.enter .a-card:nth-child(4){animation-delay:.22s}

/* responsive */
@media(max-width:1040px){
  .compose-grid,.analytics-grid,.inbox-grid{grid-template-columns:1fr}
  .a-card.hero{align-items:stretch}
}
@media(max-width:860px){
  /* rail collapses to a horizontal top strip */
  .appshell{grid-template-columns:1fr}
  .rail{position:sticky;top:0;height:auto;flex-direction:row;align-items:center;gap:10px;
    padding:9px 12px;border-right:0;border-bottom:1px solid var(--line);z-index:40;overflow-x:auto}
  .rail-brand{padding:0 4px 0 2px;flex:0 0 auto}
  .rail-name{font-size:18px}
  .rail-sub{display:none}
  .rail-nav{flex-direction:row;gap:6px;flex:1;min-width:0}
  .rail-group{flex-direction:row;gap:4px;align-items:center}
  .rail-glabel{display:none}
  .rail-item{padding:8px 12px;white-space:nowrap}
  .rail-item .rail-label{display:none}
  .rail-reset{margin:0;flex:0 0 auto;padding:8px 10px}
  .rail-reset span{display:none}
}
@media(max-width:680px){
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .aud-grid{grid-template-columns:1fr}
  .stat-val{font-size:30px}
}

/* honor reduced motion (extends the earlier reduce block) */
@media(prefers-reduced-motion:reduce){
  .section.enter .sec-title,.section.enter .sec-sub,.section.enter .sec-streak,
  .section.enter .examples,.section.enter .panel,.section.enter .stat-tile,
  .section.enter .a-card,.section.enter .aud-bar,.section.enter .recip.card,
  .section.enter .phone-rail,.section.enter .phone-stage,.section.enter .empty-card,
  .stat-tile .streak,.dock-item.on::before{animation:none}
  .funnel-fill,.donut-fg,.type-fill{transition:none}
}

/* ---------- settings ---------- */
.set-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:start}
.set-card{padding:16px 18px}
.set-note{font-size:11.5px;color:var(--ink-2);line-height:1.5;margin:2px 0 10px}
.set-sub-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);font-weight:600;margin:14px 0 4px}
.set-toggle-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}
.set-tl-title{font-size:13px;font-weight:600;color:var(--ink)}
.set-tl-sub{font-size:11px;color:var(--ink-2);margin-top:2px;line-height:1.45}
/* toggle */
.toggle{flex:0 0 auto;width:42px;height:24px;border-radius:20px;border:1px solid var(--line);background:var(--panel-2);position:relative;padding:0;transition:background .2s,border-color .2s}
.toggle .knob{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--ink-2);transition:transform .2s,background .2s}
.toggle.on{background:var(--accent);border-color:var(--accent)}
.toggle.on .knob{transform:translateX(18px);background:#fff}
.field input:disabled{opacity:.45;cursor:not-allowed}
/* opt-out keyword chips */
.kw-chips{display:flex;flex-wrap:wrap;gap:7px;margin:8px 0 10px}
.kw-chip{display:inline-flex;align-items:center;gap:6px;background:var(--panel-2);border:1px solid var(--line);border-radius:20px;padding:5px 8px 5px 11px;font-size:12px;font-weight:600;letter-spacing:.02em}
.kw-x{background:transparent;border:0;color:var(--ink-2);font-size:11px;line-height:1;padding:0 2px}
.kw-x:hover{color:var(--warn)}
.kw-input{background:var(--panel-2);border:1px solid var(--line);border-radius:9px;color:var(--ink);padding:8px 11px;font-family:inherit;font-size:12px;width:100%}
.kw-input:focus{outline:none;border-color:var(--accent)}
/* segmented speed control */
.seg-group{display:inline-flex;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:4px}
.seg-btn{background:transparent;border:0;color:var(--ink-2);padding:8px 16px;font-size:12px;font-weight:600;border-right:1px solid var(--line)}
.seg-btn:last-child{border-right:0}
.seg-btn.on{background:var(--accent);color:#fff}
.ghost-btn.danger{display:inline-flex;align-items:center;gap:6px}
.ghost-btn.danger:hover{border-color:var(--warn);color:var(--warn)}
.ghost-btn.danger .ic{width:15px;height:15px}
/* sender number in message header + compliance footer bubble */
.sender-num{margin-left:7px;font-weight:500;color:var(--ink-2);font-size:11px}
.msg-footer{align-self:flex-start;max-width:80%;font-size:11px;color:var(--ink-2);font-style:italic;padding:2px 4px 0;line-height:1.4}
.section.enter .set-card{animation:blockIn .52s cubic-bezier(.22,1,.36,1) both}
.section.enter .set-card:nth-child(2){animation-delay:.06s}
.section.enter .set-card:nth-child(3){animation-delay:.12s}
.section.enter .set-card:nth-child(4){animation-delay:.18s}
@media(max-width:820px){.set-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.section.enter .set-card{animation:none}}

/* ---------- templates ---------- */
.tpl-save{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}
.tpl-save-title{font-size:13px;font-weight:600;color:var(--ink)}
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.tpl-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:11px}
.tpl-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.tpl-name{font-size:15px;font-weight:650;letter-spacing:-.01em}
.tpl-when{font-size:10.5px;color:var(--ink-2);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.tpl-chips{display:flex;flex-wrap:wrap;gap:6px}
.tpl-chip{display:inline-flex;align-items:center;gap:5px;background:var(--panel-2);border:1px solid var(--line);border-radius:20px;padding:3px 9px;font-size:11px;color:var(--ink-2);font-weight:600}
.tpl-chip .ic{width:13px;height:13px}
.tpl-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px}
.linklike.danger{color:#e0748a}
.linklike.danger:hover{color:var(--warn)}
.section.enter .tpl-card{animation:blockIn .5s cubic-bezier(.22,1,.36,1) both}
.section.enter .tpl-card:nth-child(2){animation-delay:.05s}
.section.enter .tpl-card:nth-child(3){animation-delay:.1s}

/* ---------- copy assistant ---------- */
.asst-goals{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.asst-goal{background:var(--panel-2);border:1px solid var(--line);color:var(--ink-2);border-radius:20px;padding:8px 15px;font-size:12.5px;font-weight:600}
.asst-goal:hover{border-color:var(--accent);color:var(--ink)}
.asst-goal.on{background:var(--accent);border-color:var(--accent);color:#fff}
.asst-list{display:grid;grid-template-columns:1fr;gap:12px;max-width:640px}
.asst-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:15px 17px;display:flex;flex-direction:column;gap:12px}
.asst-copy{font-size:15px;line-height:1.5;color:var(--ink)}
.asst-actions{display:flex;align-items:center;gap:14px}
.section.enter .asst-card{animation:blockIn .5s cubic-bezier(.22,1,.36,1) both}
.section.enter .asst-card:nth-child(2){animation-delay:.05s}
.section.enter .asst-card:nth-child(3){animation-delay:.1s}
@media(prefers-reduced-motion:reduce){.section.enter .tpl-card,.section.enter .asst-card{animation:none}}
