/* Jio One Portal — Cascade-style light/dark UI */
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500&display=swap');

:root{
  --bg:#F1F1F4; --card:#FFFFFF; --card-2:#F7F7F9; --line:#E8E8ED; --line-2:#DCDCE3;
  --text:#111114; --text-2:#5C5D66; --muted:#8C8D97; --track:#EDEDF1;
  --blue:#2F6BFF; --blue-2:#8FB0FF; --blue-soft:#E4ECFF; --blue-ink:#1B45B8;
  --orange:#FF7A3D; --orange-2:#FFB38A; --orange-soft:#FFEADF; --orange-ink:#B84A18;
  --green:#22A06B; --green-soft:#DDF5EA; --red:#E5484D; --red-soft:#FDE2E3; --amber:#F2B441; --amber-soft:#FFF1D6;
  --shadow:0 1px 2px rgba(17,17,20,.04),0 8px 24px rgba(17,17,20,.06);
  --shadow-lg:0 20px 50px rgba(17,17,20,.16);
  --r:16px; --r-sm:10px; --gutter:24px;
  --sans:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",sans-serif; --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  color-scheme:light;
}
:root[data-theme="dark"]{
  --bg:#131315; --card:#1C1C1F; --card-2:#232327; --line:#2A2A30; --line-2:#36363E;
  --text:#F4F4F6; --text-2:#B4B5BE; --muted:#8B8C96; --track:#2C2C33;
  --blue:#4C82FF; --blue-2:#3A5BAE; --blue-soft:#20305A; --blue-ink:#A9C2FF;
  --orange:#FF8A52; --orange-2:#8A4A2C; --orange-soft:#3E251A; --orange-ink:#FFC5A6;
  --green:#3DC98B; --green-soft:#173327; --red:#FF6B70; --red-soft:#3A1F21; --amber:#F6C15A; --amber-soft:#3C3118;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35); --shadow-lg:0 20px 50px rgba(0,0,0,.6);
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:13.5px;line-height:1.5;-webkit-font-smoothing:antialiased;transition:background .35s ease,color .35s ease}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none;padding:0}
a{color:var(--blue);text-decoration:none}
h1,h2,h3,h4{margin:0;line-height:1.2;letter-spacing:-.01em}
p{margin:0}
.mono{font-family:var(--mono)}
.num{font-variant-numeric:tabular-nums}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:6px}

/* ---------- app shell ---------- */
#app{min-height:100%;display:grid;grid-template-rows:auto 1fr;grid-template-columns:minmax(0,1fr)}
.topbar{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--card) 85%,transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);padding:0 var(--gutter);display:flex;align-items:center;gap:18px;height:60px}
.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;letter-spacing:-.02em;white-space:nowrap}
.logo .mark{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--blue),#6C9BFF);display:grid;place-items:center;color:#fff;font-weight:800;font-size:15px;box-shadow:0 6px 14px rgba(47,107,255,.35)}
.logo small{font-weight:500;color:var(--muted);font-size:11px;display:block;letter-spacing:.04em;text-transform:uppercase;line-height:1}
.tabs{display:flex;gap:0;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0;height:100%;mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent)}
.tabs::-webkit-scrollbar{display:none}
.tabs a{display:flex;align-items:center;padding:0 10px;font-size:12.5px;color:var(--text-2);font-weight:600;border-bottom:2px solid transparent;white-space:nowrap;position:relative;transition:color .2s}
.tabs a:hover{color:var(--text)}
.tabs a.on{color:var(--text);border-bottom-color:var(--blue)}
.tabs a .dot{position:absolute;top:16px;right:4px;width:6px;height:6px;border-radius:50%;background:var(--orange)}
.tb-right{display:flex;align-items:center;gap:8px;margin-left:auto}
.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:999px;font-weight:600;font-size:13px;border:1px solid var(--line);background:var(--card);color:var(--text);transition:transform .15s ease,box-shadow .2s ease,background .2s;white-space:nowrap}
.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.btn:active{transform:translateY(0) scale(.98)}
.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 6px 16px rgba(47,107,255,.3)}
.btn.dark{background:var(--text);border-color:var(--text);color:var(--bg)}
.btn.orange{background:var(--orange);border-color:var(--orange);color:#fff}
.btn.ghost{background:transparent}
.btn.sm{padding:5px 10px;font-size:12px}
.btn.icon{width:36px;height:36px;padding:0;justify-content:center}
.btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--orange),var(--amber));color:#fff;display:grid;place-items:center;font-weight:700;font-size:12px}
.theme-toggle{position:relative;overflow:hidden}
.theme-toggle svg{transition:transform .4s cubic-bezier(.2,.8,.2,1),opacity .3s}
.theme-toggle .sun{position:absolute}
:root[data-theme="dark"] .theme-toggle .moon{transform:translateY(24px) rotate(40deg);opacity:0}
:root:not([data-theme="dark"]) .theme-toggle .sun{transform:translateY(-24px) rotate(-40deg);opacity:0}

main{padding:22px var(--gutter) 60px;max-width:1440px;margin:0 auto;width:100%}
.view{animation:viewIn .45s cubic-bezier(.2,.8,.2,1) both}
@keyframes viewIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ---------- page header ---------- */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.page-head h1{font-size:26px;font-weight:800;letter-spacing:-.025em}
.page-head p{color:var(--text-2);margin-top:4px}
.page-head .actions{display:flex;gap:8px;flex-wrap:wrap}

/* ---------- grid + cards ---------- */
.grid{display:grid;gap:14px;grid-template-columns:repeat(12,minmax(0,1fr))}
.c3{grid-column:span 3}.c4{grid-column:span 4}.c5{grid-column:span 5}.c6{grid-column:span 6}.c7{grid-column:span 7}.c8{grid-column:span 8}.c9{grid-column:span 9}.c12{grid-column:span 12}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px;min-width:0;transition:background .35s ease,border-color .35s ease,transform .2s ease,box-shadow .2s ease;animation:cardIn .5s cubic-bezier(.2,.8,.2,1) both}
.card:nth-child(2){animation-delay:.05s}.card:nth-child(3){animation-delay:.1s}.card:nth-child(4){animation-delay:.15s}.card:nth-child(5){animation-delay:.2s}.card:nth-child(6){animation-delay:.25s}.card:nth-child(7){animation-delay:.3s}.card:nth-child(8){animation-delay:.35s}
@keyframes cardIn{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
.card.lift:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.card-head h3{font-size:14.5px;font-weight:700}
.card-head h3 small{font-weight:500;color:var(--muted);margin-left:8px;font-size:12px}
.card-head .more{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:var(--muted)}
.card-head .more:hover{background:var(--card-2)}
.card .sub{color:var(--muted);font-size:12px;margin-top:-8px}
.label{font-size:11.5px;color:var(--muted);font-weight:500}
.big{font-size:28px;font-weight:800;letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums}
.big small{font-size:14px;font-weight:600;color:var(--muted);letter-spacing:0;margin-left:2px}
.delta{font-size:12px;font-weight:600}
.delta.up{color:var(--green)}.delta.down{color:var(--red)}.delta.warn{color:var(--orange-ink)}
.row{display:flex;align-items:center;gap:10px}
.row.between{justify-content:space-between}
.stack{display:flex;flex-direction:column;gap:8px}
.divider{height:1px;background:var(--line);margin:2px 0}

/* pills */
.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap;line-height:1.5}
.pill.blue{background:var(--blue-soft);color:var(--blue-ink)}
.pill.orange{background:var(--orange-soft);color:var(--orange-ink)}
.pill.green{background:var(--green-soft);color:var(--green)}
.pill.red{background:var(--red-soft);color:var(--red)}
.pill.amber{background:var(--amber-soft);color:#8A5A00}
:root[data-theme="dark"] .pill.amber{color:var(--amber)}
.pill.grey{background:var(--track);color:var(--text-2)}
.pill.solid{background:var(--text);color:var(--bg)}
.pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor}
.pill .dot.live{animation:pulse 1.6s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,currentColor 45%,transparent)}70%{box-shadow:0 0 0 6px transparent}100%{box-shadow:0 0 0 0 transparent}}

/* progress (Cascade limits style) */
.prog{position:relative;height:26px;border-radius:8px;background:var(--track);overflow:hidden}
.prog i{position:absolute;inset:0 auto 0 0;width:0;border-radius:8px;background:var(--blue);transition:width 1.1s cubic-bezier(.2,.8,.2,1)}
.prog i.orange{background:var(--orange)}.prog i.green{background:var(--green)}.prog i.red{background:var(--red)}.prog i.amber{background:var(--amber)}
.prog b{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:11px;font-weight:700;color:#fff;background:rgba(0,0,0,.28);padding:1px 7px;border-radius:999px}
.prog.thin{height:8px;border-radius:999px}
.prog.thin i{border-radius:999px}
.prog-meta{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:6px}
.prog-meta b{color:var(--text);font-weight:600}

/* lists */
.list{display:flex;flex-direction:column;gap:6px}
.item{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:10px 12px;border-radius:12px;background:var(--card-2);border:1px solid transparent;transition:border-color .2s,transform .2s,background .2s;animation:cardIn .4s both}
.item:hover{border-color:var(--line-2);transform:translateX(2px)}
.item .when{font-family:var(--mono);font-size:11.5px;color:var(--blue);min-width:56px}
.item b{display:block;font-weight:600;font-size:13px}
.item span.s{color:var(--muted);font-size:12px}
.item.done{opacity:.55}
.item.done b{text-decoration:line-through}

/* tables */
.table{width:100%;border-collapse:collapse;font-size:12.5px}
.table th{text-align:left;font-weight:600;color:var(--muted);font-size:11px;letter-spacing:.04em;text-transform:uppercase;padding:8px 10px;border-bottom:1px solid var(--line)}
.table td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}
.table tr:last-child td{border-bottom:0}
.table tr{transition:background .15s}
.table tbody tr:hover{background:var(--card-2)}
.table .r{text-align:right;font-variant-numeric:tabular-nums}
.table-wrap{overflow-x:auto}

/* charts */
.chart{width:100%;height:auto;display:block;overflow:visible}
.chart text{font-family:var(--sans);font-size:10.5px;fill:var(--muted)}
.chart .bar{fill:var(--blue-2);transition:fill .2s;transform-origin:bottom;animation:grow .9s cubic-bezier(.2,.8,.2,1) both}
.chart .bar.hi{fill:var(--blue)}
.chart .bar:hover{fill:var(--blue)}
.chart .bar.o{fill:var(--orange-2)}.chart .bar.o.hi{fill:var(--orange)}
@keyframes grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.chart .line{fill:none;stroke:var(--text);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1200;stroke-dashoffset:1200;animation:draw 1.6s .2s ease forwards}
.chart .line.blue{stroke:var(--blue)}.chart .line.orange{stroke:var(--orange)}
@keyframes draw{to{stroke-dashoffset:0}}
.chart .area{fill:url(#gradBlue);opacity:.35}
.chart .pt{fill:var(--card);stroke:var(--text);stroke-width:2}
.chart .grid{stroke:var(--line);stroke-dasharray:3 4}
.chart .tip{fill:var(--text)}
.chart .tip-t{fill:var(--bg);font-weight:700;font-size:10.5px}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--text-2)}
.legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.sw-blue{background:var(--blue)}.sw-blue-2{background:var(--blue-2)}.sw-orange{background:var(--orange)}.sw-orange-2{background:var(--orange-2)}.sw-muted{background:var(--track);border:1px solid var(--line-2)}.sw-green{background:var(--green)}
.donut-wrap{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center}
.donut{width:120px;height:120px}
.donut circle{fill:none;stroke-width:16;transition:stroke-dasharray 1.2s cubic-bezier(.2,.8,.2,1)}
.donut .track{stroke:var(--track)}
.donut-center{font-weight:800;font-size:22px;fill:var(--text);font-family:var(--sans);letter-spacing:-.02em}
.donut-label{font-size:10px;fill:var(--muted);font-family:var(--sans)}
.dl{display:flex;flex-direction:column;gap:6px;font-size:12.5px}
.dl div{display:flex;justify-content:space-between;gap:10px;align-items:center}
.dl b{font-weight:600}
.dl i{width:9px;height:9px;border-radius:3px;display:inline-block;margin-right:8px}

/* activity grid (Cascade recurring style) */
.sqgrid{display:grid;gap:5px}
.sq{aspect-ratio:1;border-radius:5px;background:var(--track);display:grid;place-items:center;transition:transform .15s,background .3s;animation:popIn .4s both}
.sq:hover{transform:scale(1.15)}
.sq.on{background:var(--blue)}.sq.hi{background:var(--orange)}.sq.ok{background:var(--blue)}.sq.bad{background:var(--orange)}
.sq svg{width:60%;height:60%;stroke:#fff;stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round}
@keyframes popIn{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}

/* bank card */
.bank{border-radius:14px;padding:16px;background:var(--card-2);border:1px solid var(--line);display:grid;gap:14px;position:relative;overflow:hidden}
.bank::after{content:"";position:absolute;right:-40px;top:-40px;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--blue) 25%,transparent),transparent 65%)}
.bank .chip{width:34px;height:24px;border-radius:6px;background:linear-gradient(135deg,var(--amber),#F7D98A)}
.bank .chip.blue{background:linear-gradient(135deg,var(--blue),#8FB0FF)}
.bank .last4{font-family:var(--mono);color:var(--muted);font-size:12px}
.bank .bal{font-size:22px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums}

/* agent feed */
.feed{display:flex;flex-direction:column;gap:8px}
.feed-item{padding:12px;border-radius:12px;background:var(--card-2);border:1px solid var(--line);display:grid;gap:8px;animation:slideIn .5s cubic-bezier(.2,.8,.2,1) both}
.feed-item:nth-child(2){animation-delay:.12s}.feed-item:nth-child(3){animation-delay:.24s}.feed-item:nth-child(4){animation-delay:.36s}
@keyframes slideIn{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}}
.feed-item .who{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;color:var(--blue-ink);letter-spacing:.04em;text-transform:uppercase}
.feed-item .who time{margin-left:auto;font-family:var(--mono);font-weight:400;color:var(--muted);text-transform:none;letter-spacing:0}
.feed-item p{font-size:12.5px;color:var(--text)}
.feed-item .acts{display:flex;gap:6px;flex-wrap:wrap}
.feed-item.decided{opacity:.6}
.feed-item .decided-tag{font-size:11.5px;color:var(--green);font-weight:600}

/* whatsapp */
.wa{display:grid;gap:6px}
.wa-item{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:start;padding:10px;border-radius:12px;cursor:pointer;transition:background .15s}
.wa-item:hover,.wa-item.on{background:var(--card-2)}
.wa-item .av{width:32px;height:32px;border-radius:50%;background:#25D366;color:#fff;font-weight:700;font-size:11px;display:grid;place-items:center}
.wa-item .av.staff{background:var(--track);color:var(--text)}.wa-item .av.lead{background:var(--orange)}
.wa-item b{font-size:12.5px;font-weight:600;display:block}
.wa-item p{font-size:12px;color:var(--muted);line-height:1.35}
.wa-item .t{font-family:var(--mono);font-size:10.5px;color:var(--muted)}
.wa-item .n{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--blue);color:#fff;font-size:10.5px;font-weight:700;margin-top:4px;justify-self:end}
.thread{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:12px;background:var(--card-2);min-height:220px}
.bubble{max-width:82%;padding:8px 12px;border-radius:14px;font-size:12.5px;animation:cardIn .35s both}
.bubble.them{background:var(--card);border:1px solid var(--line);align-self:flex-start;border-bottom-left-radius:4px}
.bubble.jio{background:var(--blue);color:#fff;align-self:flex-end;border-bottom-right-radius:4px}
.bubble time{display:block;font-size:10px;opacity:.65;margin-top:3px;font-family:var(--mono)}
.composer{display:flex;gap:8px}
.composer input{flex:1;padding:9px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card)}

/* dark CTA card */
.cta{background:var(--text);color:var(--bg);border-radius:var(--r);padding:18px;display:grid;gap:8px;position:relative;overflow:hidden}
.cta::before{content:"";position:absolute;right:-30px;bottom:-60px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(255,122,61,.55),transparent 65%)}
.cta b{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--orange)}
.cta h3{font-size:16px;font-weight:700}
.cta p{font-size:12.5px;opacity:.8}
.cta .btn{align-self:start;margin-top:4px}

/* kanban */
.kanban{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:12px;overflow-x:auto;padding-bottom:6px}
.kcol{background:var(--card-2);border:1px solid var(--line);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:260px;transition:background .2s,border-color .2s}
.kcol.over{border-color:var(--blue);background:var(--blue-soft)}
.kcol h4{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:2px 4px}
.kcol h4 span{font-family:var(--mono);font-weight:500}
.kcard{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:grid;gap:6px;cursor:grab;box-shadow:var(--shadow);transition:transform .15s,box-shadow .2s,opacity .2s;animation:cardIn .35s both}
.kcard:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.kcard.dragging{opacity:.4;transform:rotate(2deg) scale(.98)}
.kcard b{font-size:12.5px;font-weight:600}
.kcard .meta{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;color:var(--muted)}
.kcard .val{font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.kcard .health{height:4px;border-radius:999px;background:var(--track);overflow:hidden}
.kcard .health i{display:block;height:100%;background:var(--green);border-radius:999px;transition:width .8s}
.kcard .health i.mid{background:var(--amber)}.kcard .health i.low{background:var(--orange)}
.mini-av{width:22px;height:22px;border-radius:50%;background:var(--blue-soft);color:var(--blue-ink);font-size:10px;font-weight:700;display:grid;place-items:center}

/* ask jio */
.ask{max-width:900px;margin:0 auto;display:grid;gap:18px}
.ask-bar{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:14px 16px;box-shadow:var(--shadow-lg);display:grid;gap:12px;position:relative}
.ask-bar::before{content:"";position:absolute;inset:-2px;border-radius:22px;background:conic-gradient(from var(--ang,0deg),var(--blue),var(--orange),var(--blue));z-index:-1;opacity:.5;animation:spin 6s linear infinite}
@property --ang{syntax:"<angle>";initial-value:0deg;inherits:false}
@keyframes spin{to{--ang:360deg}}
.ask-bar form{display:flex;gap:10px;align-items:center}
.ask-bar input{flex:1;font-size:16px;padding:10px 4px;border:0;background:transparent;outline:none}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{padding:6px 11px;border-radius:999px;border:1px solid var(--line);background:var(--card-2);font-size:12px;font-weight:500;transition:all .15s}
.chip:hover{border-color:var(--blue);color:var(--blue-ink);background:var(--blue-soft)}
.conv{display:flex;flex-direction:column;gap:12px}
.msg-u{align-self:flex-end;max-width:70%;background:var(--text);color:var(--bg);padding:10px 14px;border-radius:16px 16px 4px 16px;animation:cardIn .3s both}
.msg-a{align-self:flex-start;max-width:92%;background:var(--card);border:1px solid var(--line);padding:14px 16px;border-radius:4px 16px 16px 16px;box-shadow:var(--shadow);display:grid;gap:10px;animation:cardIn .4s both}
.msg-a .who{font-size:11px;font-weight:700;color:var(--blue-ink);letter-spacing:.06em;text-transform:uppercase}
.msg-a .rows{display:grid;gap:5px}
.msg-a .rows div{display:grid;grid-template-columns:90px 1fr auto;gap:10px;padding:7px 10px;border-radius:9px;background:var(--card-2);align-items:center;font-size:12.5px}
.msg-a .rows em{font-style:normal;font-family:var(--mono);color:var(--blue);font-size:11.5px}
.msg-a .rows s{text-decoration:none;color:var(--muted);font-size:11.5px;white-space:nowrap}
.typing{display:inline-flex;gap:4px;padding:10px 14px;background:var(--card);border:1px solid var(--line);border-radius:16px;align-self:flex-start}
.typing i{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:bounce 1s infinite}
.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes bounce{0%,80%,100%{transform:translateY(0);opacity:.5}40%{transform:translateY(-5px);opacity:1}}

/* flow builder */
.flow{display:grid;grid-template-columns:200px 1fr;gap:14px;height:640px}
.palette{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px;display:flex;flex-direction:column;gap:8px;overflow:auto}
.palette h4{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:4px 0}
.pnode{padding:9px 10px;border-radius:10px;border:1px solid var(--line);background:var(--card-2);cursor:grab;font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:8px;transition:transform .15s,box-shadow .2s}
.pnode:hover{transform:translateX(3px);box-shadow:var(--shadow)}
.pnode i,.fnode .ic{width:22px;height:22px;border-radius:7px;display:grid;place-items:center;flex:none}
.pnode i svg,.fnode .ic svg{width:13px;height:13px;stroke:#fff;stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round}
.t-trigger{background:var(--orange)}.t-agent{background:var(--blue)}.t-condition{background:var(--amber)}.t-approval{background:#8B5CF6}.t-action{background:var(--green)}
.canvas{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background-image:radial-gradient(var(--line-2) 1px,transparent 1px);background-size:22px 22px}
.canvas.over{border-color:var(--blue)}
.canvas svg.wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.wire{fill:none;stroke:var(--line-2);stroke-width:2;transition:stroke .2s}
.wire.on{stroke:var(--blue);stroke-width:2.5}
.wire-lbl{font-size:10px;fill:var(--muted);font-family:var(--mono)}
.wire.temp{stroke:var(--blue);stroke-dasharray:6 4}
.spark{fill:var(--orange);filter:drop-shadow(0 0 6px var(--orange))}
.fnode{position:absolute;width:210px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;box-shadow:var(--shadow);cursor:grab;display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;user-select:none;transition:box-shadow .2s,border-color .2s;animation:popIn .3s both}
.fnode:hover{box-shadow:var(--shadow-lg)}
.fnode.sel{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
.fnode.running{border-color:var(--orange);box-shadow:0 0 0 4px var(--orange-soft);animation:pulseN .8s infinite}
.fnode.done-run{border-color:var(--green)}
@keyframes pulseN{50%{transform:scale(1.03)}}
.fnode b{font-size:12.5px;font-weight:600;line-height:1.25}
.fnode small{display:block;font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.fnode .port{width:12px;height:12px;border-radius:50%;background:var(--card);border:2px solid var(--blue);position:absolute;top:50%;transform:translateY(-50%);cursor:crosshair;transition:transform .15s,background .15s}
.fnode .port.out{right:-7px}.fnode .port.in{left:-7px;border-color:var(--muted)}
.fnode .port:hover{transform:translateY(-50%) scale(1.4);background:var(--blue)}
.fnode .del{color:var(--muted);width:20px;height:20px;border-radius:6px;display:grid;place-items:center;opacity:0;transition:opacity .15s}
.fnode:hover .del{opacity:1}
.fnode .del:hover{background:var(--red-soft);color:var(--red)}
.flow-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.flow-toolbar select{padding:7px 10px;border-radius:999px;border:1px solid var(--line);background:var(--card);font:inherit}
.runlog{position:absolute;left:12px;bottom:12px;background:var(--text);color:var(--bg);border-radius:12px;padding:10px 12px;font-size:12px;max-width:360px;display:grid;gap:4px;box-shadow:var(--shadow-lg);animation:cardIn .3s both}
.runlog div{display:flex;gap:8px;align-items:center}
.runlog i{width:6px;height:6px;border-radius:50%;background:var(--green);flex:none}

/* mind map */
.mm{position:relative;height:640px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background-image:radial-gradient(var(--line-2) 1px,transparent 1px);background-size:22px 22px;cursor:grab}
.mm.panning{cursor:grabbing}
.mm-world{position:absolute;left:50%;top:50%;transform-origin:0 0}
.mm svg{position:absolute;left:-5000px;top:-5000px;width:10000px;height:10000px;pointer-events:none;overflow:visible}
.mm-link{fill:none;stroke:var(--line-2);stroke-width:2.5;stroke-linecap:round}
.mm-link.l1{stroke:var(--blue)}.mm-link.l2{stroke:var(--orange)}.mm-link.l3{stroke:var(--green)}.mm-link.l0{stroke:#8B5CF6}
.mnode{position:absolute;transform:translate(-50%,-50%);background:var(--card);border:1.5px solid var(--line-2);border-radius:12px;padding:8px 12px;font-size:12.5px;font-weight:600;box-shadow:var(--shadow);cursor:grab;user-select:none;white-space:nowrap;max-width:260px;transition:box-shadow .2s,border-color .2s;animation:popIn .35s both;display:flex;align-items:center;gap:8px}
.mnode.root{background:var(--text);color:var(--bg);border-color:var(--text);font-size:14px;font-weight:800;padding:12px 18px;border-radius:14px}
.mnode.sel{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
.mnode.b1{border-left:4px solid var(--blue)}.mnode.b2{border-left:4px solid var(--orange)}.mnode.b3{border-left:4px solid var(--green)}.mnode.b0{border-left:4px solid #8B5CF6}
.mnode[contenteditable="true"]{cursor:text;white-space:normal;min-width:80px}
.mnode .add{width:18px;height:18px;border-radius:50%;background:var(--blue);color:#fff;font-size:13px;line-height:1;display:grid;place-items:center;opacity:0;transition:opacity .15s;flex:none;font-weight:700}
.mnode:hover .add{opacity:1}
.mm-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.mm-hint{font-size:12px;color:var(--muted)}

/* toast */
.toasts{position:fixed;right:20px;bottom:20px;display:grid;gap:8px;z-index:100}
.toast{background:var(--text);color:var(--bg);padding:10px 14px;border-radius:12px;font-size:13px;font-weight:600;box-shadow:var(--shadow-lg);display:flex;gap:10px;align-items:center;animation:toastIn .35s cubic-bezier(.2,.8,.2,1) both}
.toast i{width:8px;height:8px;border-radius:50%;background:var(--green)}
.toast.out{animation:toastOut .3s forwards}
@keyframes toastIn{from{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(8px)}}

/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 20% 0%,var(--blue-soft),transparent 55%),radial-gradient(ellipse at 100% 100%,var(--orange-soft),transparent 50%),var(--bg)}
.login-card{width:min(420px,100%);background:var(--card);border:1px solid var(--line);border-radius:22px;padding:30px;box-shadow:var(--shadow-lg);display:grid;gap:16px;animation:cardIn .6s both}
.login-card h1{font-size:24px;font-weight:800;letter-spacing:-.02em}
.login-card p{color:var(--text-2)}
.login-card .btn{justify-content:center;padding:12px}
.singpass{background:#F4333D;border-color:#F4333D;color:#fff}
.login-card .personas{display:grid;gap:6px}
.persona{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:10px;border-radius:12px;border:1px solid var(--line);background:var(--card-2);text-align:left;transition:border-color .15s,transform .15s}
.persona:hover{border-color:var(--blue);transform:translateX(2px)}
.persona b{display:block;font-size:13px}.persona span{font-size:11.5px;color:var(--muted)}

/* skeleton */
.skel{background:linear-gradient(90deg,var(--track) 25%,var(--card-2) 50%,var(--track) 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:8px;height:14px}
@keyframes shimmer{to{background-position:-200% 0}}

/* misc */
.empty{color:var(--muted);font-size:12.5px;text-align:center;padding:20px}
.kbd{font-family:var(--mono);font-size:10.5px;border:1px solid var(--line-2);border-bottom-width:2px;border-radius:5px;padding:1px 5px;color:var(--muted)}
.tag-pii{color:var(--orange-ink);background:var(--orange-soft);font-size:10.5px;padding:2px 7px;border-radius:999px;font-weight:700}

@media (max-width:1100px){.c3{grid-column:span 6}.c4{grid-column:span 6}.c5,.c7{grid-column:span 12}.c8,.c9{grid-column:span 12}}
@media (max-width:1400px){
  .topbar{height:auto;flex-wrap:wrap;padding-block:8px 0;gap:10px 14px}
  .tabs{order:3;width:100%;flex-basis:100%;height:40px}
  .tb-right{margin-left:auto}
}
@media (max-width:760px){
  :root{--gutter:16px}
  .c3,.c4,.c6{grid-column:span 12}
  .flow{grid-template-columns:1fr;height:auto}.canvas{height:520px}.palette{flex-direction:row;flex-wrap:wrap}
  .kanban{grid-template-columns:repeat(4,240px)}
  .donut-wrap{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* ---------- extras: palette, tour, drawer, live, voice, paused ---------- */
.palette-wrap{position:fixed;inset:0;background:rgba(10,10,14,.45);backdrop-filter:blur(4px);z-index:150;display:grid;place-items:start center;padding-top:12vh;animation:fadeIn .15s both}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.palette-box{width:min(640px,94vw);background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lg);overflow:hidden;animation:cardIn .25s both}
.palette-box input{width:100%;padding:16px 18px;border:0;border-bottom:1px solid var(--line);background:transparent;font-size:16px;outline:none}
.pal-list{max-height:52vh;overflow:auto;padding:6px}
.pal-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;cursor:pointer;font-size:13.5px}
.pal-item.on,.pal-item:hover{background:var(--blue-soft);color:var(--blue-ink)}
.pal-foot{display:flex;gap:16px;padding:8px 14px;border-top:1px solid var(--line);font-size:11.5px;color:var(--muted)}
.tour{position:fixed;inset:0;z-index:160;pointer-events:none}
.tour-hole{position:absolute;border-radius:16px;box-shadow:0 0 0 9999px rgba(10,10,14,.6),0 0 0 3px var(--blue);transition:all .35s cubic-bezier(.2,.8,.2,1);animation:fadeIn .3s both}
.tour-card{position:absolute;width:320px;background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow-lg);display:grid;gap:8px;pointer-events:auto;animation:cardIn .35s both}
.tour-n{font-family:var(--mono);font-size:11px;color:var(--blue)}
.tour-card h4{font-size:15px;font-weight:700}
.tour-card p{font-size:12.5px;color:var(--text-2)}
.drawer{position:fixed;right:16px;top:70px;width:min(380px,92vw);max-height:80vh;overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:var(--shadow-lg);z-index:120;display:grid;gap:10px;animation:cardIn .3s both}
.drawer h3{font-size:15px}
.bell-dot{position:absolute;top:8px;right:8px;width:7px;height:7px;border-radius:50%;background:var(--orange);opacity:0;transform:scale(.5);transition:all .25s}
.bell-dot.on{opacity:1;transform:scale(1);animation:pulse 1.6s infinite}
.live-badge{position:fixed;left:20px;bottom:20px;z-index:100;display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:var(--text);color:var(--bg);font-weight:700;font-size:12px;cursor:pointer;box-shadow:var(--shadow-lg);animation:cardIn .3s both}
.live-badge i{width:8px;height:8px;border-radius:50%;background:var(--red);animation:pulse 1.2s infinite}
.mic.rec{background:var(--red);border-color:var(--red);color:#fff;animation:pulseN .8s infinite}
.agents-paused .pill.green .dot.live{background:var(--red);animation:none}
.agents-paused .topbar::after{content:"All agents paused · kill switch active";position:absolute;left:50%;top:100%;transform:translateX(-50%);background:var(--red);color:#fff;font-size:11px;font-weight:700;padding:3px 12px;border-radius:0 0 10px 10px}
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}

/* ---------- CRM, modals, subnav ---------- */
.subnav{display:flex;gap:4px;margin:-6px 0 16px;border-bottom:1px solid var(--line)}
.subnav a{padding:8px 14px;font-weight:600;color:var(--text-2);border-bottom:2px solid transparent;margin-bottom:-1px}
.subnav a.on{color:var(--text);border-color:var(--blue)}
.subnav a:hover{color:var(--text)}
.modal-wrap{position:fixed;inset:0;background:rgba(10,10,14,.45);backdrop-filter:blur(4px);z-index:170;display:grid;place-items:center;padding:20px;animation:fadeIn .15s both}
.modal{width:min(640px,100%);background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:var(--shadow-lg);display:grid;gap:14px;animation:cardIn .25s both;max-height:90vh;overflow:auto}
.modal h3{font-size:16px}
.fld{display:grid;gap:5px;font-size:12px;color:var(--muted);font-weight:500}
.fld input,.fld select,.fld textarea{width:100%;padding:8px 11px;border-radius:10px;border:1px solid var(--line-2);background:var(--card-2);color:var(--text);font-weight:500;font-size:13px}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:2px solid var(--blue);border-color:transparent}
.fld.row{grid-template-columns:auto 1fr;align-items:center}
.fld.row input{width:auto}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fgrid .fld:has(textarea){grid-column:1/-1}
.crm-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.crm-logo{width:52px;height:52px;border-radius:14px;background:linear-gradient(135deg,var(--blue),#6C9BFF);color:#fff;font-weight:800;font-size:18px;display:grid;place-items:center;box-shadow:0 8px 20px rgba(47,107,255,.3)}
.table tr.clickable{cursor:pointer}
.table tr.clickable:hover td{background:var(--blue-soft)}
/* ---------- flow: properties panel, link deletion ---------- */
.flow{grid-template-columns:200px 1fr 240px}
.fpanel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px;display:flex;flex-direction:column;gap:8px;overflow:auto}
.fpanel h4{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:4px 0 2px}
.canvas svg.wires path{pointer-events:stroke;cursor:pointer}
.canvas svg.wires{pointer-events:none}
.wire.seledge{stroke:var(--red);stroke-width:3}
.wire-del{cursor:pointer;pointer-events:all}
.wire-del circle{fill:var(--red)}
.wire-del text{fill:#fff;font-size:13px;font-weight:700}
@media (max-width:1100px){.flow{grid-template-columns:200px 1fr}.fpanel{grid-column:1/-1;max-height:220px}}
@media (max-width:760px){.flow{grid-template-columns:1fr}}
/* ---------- mind map: colours, badges, context menu ---------- */
.mnode.c-blue{border-left:4px solid var(--blue)}.mnode.c-orange{border-left:4px solid var(--orange)}.mnode.c-green{border-left:4px solid var(--green)}.mnode.c-purple{border-left:4px solid #8B5CF6}.mnode.c-red{border-left:4px solid var(--red)}
.mm-link.c-blue{stroke:var(--blue)}.mm-link.c-orange{stroke:var(--orange)}.mm-link.c-green{stroke:var(--green)}.mm-link.c-purple{stroke:#8B5CF6}.mm-link.c-red{stroke:var(--red)}
.mnode .badge{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--orange);color:#fff;font-size:11px;display:grid;place-items:center;cursor:pointer}
.mnode .noteic{color:var(--muted);font-size:12px}
.ctx{position:fixed;z-index:180;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);padding:6px;display:grid;gap:2px;min-width:210px;animation:cardIn .15s both}
.ctx button{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;border-radius:8px;font-size:12.5px;font-weight:500;text-align:left}
.ctx button:hover{background:var(--card-2)}
.ctx button.danger{color:var(--red)}
.ctx-colors{display:flex;gap:6px;padding:8px 10px}
.ctx-colors i{width:18px;height:18px;border-radius:50%;cursor:pointer;border:2px solid transparent}
.ctx-colors i.on{border-color:var(--text)}
.ctx-colors .c-blue{background:var(--blue)}.ctx-colors .c-orange{background:var(--orange)}.ctx-colors .c-green{background:var(--green)}.ctx-colors .c-purple{background:#8B5CF6}.ctx-colors .c-red{background:var(--red)}.ctx-colors .c-none{background:var(--track);border-color:var(--line-2)}
/* ---------- governance: loop + passports ---------- */
.loop{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.loop-step{padding:9px 10px;border-radius:10px;background:var(--card-2);border:1px solid var(--line);display:grid;gap:2px;animation:popIn .4s both}
.loop-step b{font-size:12px}.loop-step span{font-size:10.5px;color:var(--muted);line-height:1.3}
.loop-step.human{background:var(--text);color:var(--bg);border-color:var(--text)}
.loop-step.human span{color:var(--bg);opacity:.75}
.passports{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:12px}
.passport{padding:14px;border-radius:12px;background:var(--card-2);border:1px solid var(--line);display:grid;gap:6px;font-size:12px;animation:cardIn .4s both}
.passport.paused{opacity:.6}
.passport>.row b{font-size:13.5px}
.pp-row{display:grid;grid-template-columns:100px 1fr;gap:8px}
.pp-row span:first-child{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding-top:2px}
