:root{--ff:'Geist',sans-serif;--fd:'Instrument Serif',serif;--fm:'Geist Mono',monospace;--r:8px;--rl:14px;--rxl:20px;--green:#22c55e;--red:#ef4444;--amber:#f59e0b;--acc-blue:#3b82f6;--acc-teal:#14b8a6;--acc-violet:#8b5cf6;--acc-amber:#f59e0b;--acc-rose:#f43f5e}
[data-theme="dark"]{--bg:#07080c;--bg2:#0c0e14;--sf:#0f1118;--sf2:#141720;--sf3:#191e2a;--sf4:#1f2535;--bd:#1a2035;--bd2:#222b42;--bd3:#2d3a5c;--tx:#eceff8;--tx2:#8892b0;--tx3:#4a5278;--tx4:#2d3455;--gdot:rgba(255,255,255,0.07);--sh:0 8px 32px rgba(0,0,0,.55);--shl:0 24px 64px rgba(0,0,0,.65)}
[data-theme="light"]{--bg:#f4f5f9;--bg2:#ebecf3;--sf:#ffffff;--sf2:#f7f8fd;--sf3:#edf0f8;--sf4:#e3e8f4;--bd:#dde2f0;--bd2:#cdd4e8;--bd3:#b8c3dc;--tx:#0d1020;--tx2:#4a5278;--tx3:#8892b0;--tx4:#b4bcd0;--gdot:rgba(0,0,0,0.04);--sh:0 4px 20px rgba(0,0,0,.07);--shl:0 16px 48px rgba(0,0,0,.12)}
[data-accent="blue"]{--ac:#3b82f6;--acd:rgba(59,130,246,.1);--acg:rgba(59,130,246,.22)}
[data-accent="teal"]{--ac:#14b8a6;--acd:rgba(20,184,166,.1);--acg:rgba(20,184,166,.22)}
[data-accent="violet"]{--ac:#8b5cf6;--acd:rgba(139,92,246,.1);--acg:rgba(139,92,246,.22)}
[data-accent="amber"]{--ac:#f59e0b;--acd:rgba(245,158,11,.1);--acg:rgba(245,158,11,.22)}
[data-accent="rose"]{--ac:#f43f5e;--acd:rgba(244,63,94,.1);--acg:rgba(244,63,94,.22)}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:14px;scroll-behavior:smooth;-webkit-tap-highlight-color:transparent}
body{font-family:var(--ff);background:var(--bg);color:var(--tx);min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;transition:background .25s,color .25s}
body::before{content:'';position:fixed;inset:0;background-image:radial-gradient(circle,var(--gdot) 1px,transparent 1px);background-size:26px 26px;pointer-events:none;z-index:0}
.hdr{position:fixed;top:0;left:0;right:0;z-index:200;height:54px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;background:rgba(7,8,12,.88);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-bottom:1px solid var(--bd);transition:background .25s;gap:10px}
[data-theme="light"] .hdr{background:rgba(244,245,249,.92)}
.logo{display:flex;align-items:center;gap:10px;cursor:pointer;user-select:none;text-decoration:none;flex-shrink:0}
.logo-mark{width:30px;height:30px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.logo-mark svg,.logo-mark img{width:30px;height:30px;display:block;border-radius:7px}
.logo-txt{font-family:var(--ff);font-weight:700;font-size:15px;letter-spacing:-.4px;color:var(--tx);white-space:nowrap}
.logo-txt em{color:var(--ac);font-style:normal;font-weight:800}
.logo-badge{font-family:var(--fm);font-size:8px;letter-spacing:.8px;text-transform:uppercase;color:var(--tx3);background:var(--sf2);border:1px solid var(--bd);padding:2px 6px;border-radius:3px;margin-left:2px}
@media(max-width:600px){.logo-badge{display:none}}
.hdr-mid{display:flex;align-items:center;gap:3px}
.nbtn{font-family:var(--fm);font-size:10px;font-weight:500;letter-spacing:.4px;text-transform:uppercase;padding:5px 12px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--tx3);cursor:pointer;transition:all .14s;white-space:nowrap}
.nbtn:hover{color:var(--tx2);background:var(--sf2);border-color:var(--bd)}
.nbtn.on{color:var(--tx);background:var(--sf2);border-color:var(--bd2)}
.hdr-r{display:flex;align-items:center;gap:6px}
.acc-row{display:flex;align-items:center;gap:4px;padding:4px 8px;background:var(--sf2);border:1px solid var(--bd);border-radius:7px}
@media(max-width:700px){.acc-row{display:none}}
.adot{width:12px;height:12px;border-radius:50%;cursor:pointer;transition:all .15s;border:2px solid transparent;flex-shrink:0}
.adot:hover{transform:scale(1.2)}
.adot.on{border-color:var(--tx);transform:scale(1.15)}
.tic{width:32px;height:32px;border-radius:7px;border:1px solid var(--bd2);background:var(--sf2);color:var(--tx2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .14s;flex-shrink:0;text-decoration:none}
.tic:hover{border-color:var(--bd3);color:var(--tx)}
/* Home footer -- professional SaaS */
.home-footer{background:var(--sf);border-top:1px solid var(--bd);padding:48px 24px 24px;margin-top:60px}
.hf-inner{max-width:900px;margin:0 auto;display:flex;justify-content:space-between;align-items:flex-start;gap:40px;margin-bottom:36px;flex-wrap:wrap}
.hf-brand{flex:1;min-width:180px}
.hf-logo{font-size:18px;font-weight:800;color:var(--tx);letter-spacing:-.3px;margin-bottom:8px}
.hf-logo em{font-style:normal;color:var(--ac)}
.hf-tagline{font-size:12px;color:var(--tx3);line-height:1.5;max-width:220px}
.hf-links{display:flex;gap:48px;flex-wrap:wrap}
.hf-col{display:flex;flex-direction:column;gap:10px}
.hf-col-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--tx3);font-family:var(--fm);margin-bottom:2px}
.hf-link{font-size:12px;color:var(--tx2);text-decoration:none;cursor:pointer;transition:color .12s}
.hf-link:hover{color:var(--ac)}
.hf-bottom{max-width:900px;margin:0 auto;padding-top:20px;border-top:1px solid var(--bd);display:flex;align-items:center;gap:10px;font-size:11px;color:var(--tx3);flex-wrap:wrap}
.hf-sep{color:var(--bd2)}
.hf-link-sm{font-size:11px;color:var(--tx3);text-decoration:none;transition:color .12s}
.hf-link-sm:hover{color:var(--tx2)}
@media(max-width:600px){.hf-inner{flex-direction:column;gap:28px}.hf-links{gap:28px}}
.btn{font-family:var(--ff);font-weight:600;font-size:12px;padding:8px 17px;border-radius:var(--r);border:none;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:6px;letter-spacing:-.1px;white-space:nowrap}
.btn svg{width:13px;height:13px;flex-shrink:0}
.btn-sm{font-size:11px;padding:5px 12px}
.btn-p{background:var(--ac);color:#fff}
.btn-p:hover{filter:brightness(1.1);box-shadow:0 0 0 3px var(--acg)}
.btn-o{background:transparent;border:1px solid var(--bd2);color:var(--tx2)}
.btn-o:hover{border-color:var(--bd3);color:var(--tx);background:var(--sf2)}
.btn-g{background:transparent;border:1px solid transparent;color:var(--tx3)}
.btn-g:hover{background:var(--sf2);color:var(--tx2);border-color:var(--bd)}
.btn-danger{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.2);color:var(--red)}
.btn-danger:hover{background:rgba(239,68,68,.18);border-color:rgba(239,68,68,.4)}
.screen{position:fixed;inset:0;z-index:10;transition:opacity .28s,transform .28s;overflow-y:auto;padding-top:54px}
.screen.off{opacity:0;pointer-events:none;transform:translateY(8px)}
.screen.on{opacity:1;pointer-events:all;transform:translateY(0)}
.hero{min-height:calc(100vh - 54px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:60px 20px 80px;position:relative;overflow:hidden}
.orb{position:absolute;border-radius:50%;filter:blur(100px);opacity:.13;pointer-events:none;animation:orbf 10s ease-in-out infinite}
[data-theme="light"] .orb{opacity:.07}
.orb1{width:600px;height:600px;background:var(--ac);top:-150px;left:-150px;animation-delay:0s}
.orb2{width:420px;height:420px;background:var(--acc-violet);bottom:-100px;right:-100px;animation-delay:-5s}
@keyframes orbf{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(30px,-20px) scale(1.04)}66%{transform:translate(-20px,16px) scale(.97)}}
.h-eyebrow{font-family:var(--fm);font-size:10px;letter-spacing:2.5px;text-transform:uppercase;color:var(--ac);background:var(--acd);border:1px solid var(--acg);padding:6px 16px;border-radius:100px;margin-bottom:28px;display:inline-flex;align-items:center;gap:8px;opacity:0;animation:fup .55s ease .08s forwards}
.h-eyebrow::before{content:'';width:5px;height:5px;border-radius:50%;background:var(--ac);box-shadow:0 0 8px var(--ac);animation:pulse 2s ease infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}
.h-head{font-size:clamp(40px,7.5vw,82px);font-weight:800;line-height:.93;letter-spacing:-3px;color:var(--tx);margin-bottom:22px;opacity:0;animation:fup .55s ease .16s forwards;max-width:820px}
.h-head .serif{font-family:var(--fd);font-style:italic;font-weight:400;color:var(--ac);letter-spacing:-1px}
.h-sub{font-size:16px;font-weight:400;color:var(--tx2);max-width:520px;line-height:1.7;margin-bottom:40px;opacity:0;animation:fup .55s ease .24s forwards}
.h-acts{display:flex;align-items:center;gap:12px;margin-bottom:56px;opacity:0;animation:fup .55s ease .32s forwards;flex-wrap:wrap;justify-content:center}
.h-cta{font-size:14px;font-weight:700;padding:12px 28px;border-radius:11px}
.h-stats{display:flex;background:var(--sf);border:1px solid var(--bd);border-radius:var(--rl);overflow:hidden;box-shadow:var(--sh);opacity:0;animation:fup .55s ease .4s forwards;flex-wrap:wrap}
.hst{padding:16px 24px;text-align:center;border-right:1px solid var(--bd);flex:1;min-width:80px}
.hst:last-child{border-right:none}
.hst-n{font-family:var(--ff);font-size:24px;font-weight:800;color:var(--ac);line-height:1;margin-bottom:4px;letter-spacing:-1px}
.hst-l{font-size:10px;font-weight:500;color:var(--tx3);text-transform:uppercase;letter-spacing:.7px;font-family:var(--fm)}
.feat-section{max-width:900px;margin:0 auto;padding:0 20px 60px;opacity:0;animation:fup .55s ease .52s forwards}
.feat-eyebrow{font-family:var(--fm);font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--tx3);text-align:center;margin-bottom:36px;margin-top:72px}
.feat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:700px){.feat-grid{grid-template-columns:1fr 1fr}}
@media(max-width:440px){.feat-grid{grid-template-columns:1fr}}
.fc{background:var(--sf);border:1px solid var(--bd);border-radius:var(--rl);padding:20px;text-align:left;transition:border-color .2s,box-shadow .2s;position:relative;overflow:hidden}
.fc::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--ac),transparent);opacity:0;transition:opacity .3s}
.fc:hover{border-color:var(--bd3);box-shadow:var(--sh)}
.fc:hover::before{opacity:.5}
.fc-ic{width:36px;height:36px;border-radius:9px;background:var(--acd);border:1px solid var(--acg);display:flex;align-items:center;justify-content:center;margin-bottom:13px;color:var(--ac)}
.fc-ic svg{width:16px;height:16px}
.fc-t{font-size:13px;font-weight:700;color:var(--tx);margin-bottom:6px;letter-spacing:-.2px}
.fc-d{font-size:11px;color:var(--tx3);line-height:1.65}
.mgp{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;margin-top:10px}
.mgc{height:18px;border-radius:3px;background:var(--sf3);border:1px solid var(--bd)}
.mgc.f{background:var(--acd);border-color:var(--acg)}
.mgc.w{background:rgba(245,158,11,.1);border-color:rgba(245,158,11,.22)}
.ai-card{background:linear-gradient(135deg,var(--sf) 0%,var(--sf2) 100%);border:1px solid var(--bd2);border-radius:var(--rxl);padding:32px;position:relative;overflow:hidden;margin-top:48px}
.ai-card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--ac),var(--acc-violet),transparent)}
.ai-tag{font-family:var(--fm);font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--ac);margin-bottom:12px;display:inline-block}
.ai-head{font-size:20px;font-weight:700;color:var(--tx);margin-bottom:10px;letter-spacing:-.4px}
.ai-desc{font-size:12px;color:var(--tx2);line-height:1.7;max-width:480px;margin:0 auto 20px}
.ai-pills{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.ai-pill{font-family:var(--fm);font-size:9px;padding:4px 10px;border-radius:100px;background:var(--sf3);border:1px solid var(--bd2);color:var(--tx3);letter-spacing:.3px;text-transform:uppercase}
/* (home footer moved to hf-* classes above) */
@keyframes fup{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
#appScreen{display:flex;flex-direction:column}
.app-bar{display:flex;align-items:center;justify-content:space-between;padding:0 14px;background:var(--sf);border-bottom:1px solid var(--bd);flex-shrink:0;position:relative;z-index:50;gap:8px;height:50px}
.abl{display:flex;align-items:center;gap:6px;flex:1;min-width:0;overflow:hidden}
.gtabs{display:flex;align-items:center;gap:3px;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0}
.gtabs::-webkit-scrollbar{display:none}
.gtab{display:flex;align-items:center;gap:6px;padding:5px 10px;border-radius:7px;border:1px solid transparent;background:transparent;color:var(--tx3);font-family:var(--ff);font-size:12px;font-weight:600;cursor:pointer;transition:all .14s;white-space:nowrap;flex-shrink:0}
.gtab:hover{background:var(--sf2);color:var(--tx2);border-color:var(--bd)}
.gtab.on{background:var(--acd);border-color:var(--acg);color:var(--ac)}
.gtc{font-family:var(--fm);font-size:9px;background:var(--sf3);color:var(--tx3);padding:1px 5px;border-radius:3px;min-width:16px;text-align:center}
.gtab.on .gtc{background:var(--acd);color:var(--ac);border:1px solid var(--acg)}
.gtdel{opacity:0;background:none;border:none;color:var(--tx3);cursor:pointer;font-size:14px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all .1s;line-height:1}
.gtab:hover .gtdel{opacity:.6}
.gtdel:hover{opacity:1!important;color:var(--red);background:rgba(239,68,68,.1)}
.new-g-btn{display:flex;align-items:center;gap:5px;padding:5px 9px;border-radius:6px;border:1px dashed var(--bd2);background:transparent;color:var(--tx3);font-size:11px;font-family:var(--fm);cursor:pointer;transition:all .14s;white-space:nowrap;flex-shrink:0}
.new-g-btn:hover{border-color:var(--ac);color:var(--ac);background:var(--acd)}
.abr{display:flex;align-items:center;gap:6px;flex-shrink:0}
.vtog{display:flex;align-items:center;background:var(--sf2);border:1px solid var(--bd2);border-radius:7px;padding:2px;gap:1px}
.vbtn{font-family:var(--fm);font-size:9px;font-weight:500;padding:4px 9px;border-radius:5px;border:none;background:transparent;color:var(--tx3);cursor:pointer;transition:all .14s;display:flex;align-items:center;gap:4px;letter-spacing:.3px;text-transform:uppercase}
.vbtn svg{width:11px;height:11px}
.vbtn:hover{color:var(--tx2)}
.vbtn.on{background:var(--sf);color:var(--tx);box-shadow:0 1px 3px rgba(0,0,0,.25);border:1px solid var(--bd)}
.tsw{position:relative}
.tsa{display:flex;align-items:center;gap:7px;padding:6px 11px 6px 9px;background:var(--sf2);border:1px solid var(--bd2);border-radius:7px;cursor:text;transition:border-color .14s}
.tsa:focus-within{border-color:var(--ac);box-shadow:0 0 0 3px var(--acd)}
.tsa svg{width:12px;height:12px;color:var(--tx3);flex-shrink:0}
.tsa input{background:transparent;border:none;outline:none;font-family:var(--ff);font-size:12px;font-weight:500;color:var(--tx);width:100%;min-width:0}
.tsa input::placeholder{color:var(--tx3);font-weight:400}
@media(max-width:700px){.tsw-desktop{display:none}}
.tdd{position:absolute;top:calc(100% + 5px);right:0;width:270px;background:var(--sf2);border:1px solid var(--bd2);border-radius:var(--rl);z-index:100;max-height:260px;overflow-y:auto;box-shadow:var(--shl);scrollbar-width:thin}
.tdd::-webkit-scrollbar{width:3px}
.tdd::-webkit-scrollbar-thumb{background:var(--bd2)}
.ddi{display:flex;align-items:center;gap:9px;padding:9px 12px;cursor:pointer;border-bottom:1px solid var(--bd);transition:background .08s}
.ddi:last-child{border-bottom:none}
.ddi:hover{background:var(--sf3)}
.dab{width:30px;height:30px;border-radius:7px;background:var(--sf3);border:1px solid var(--bd2);display:flex;align-items:center;justify-content:center;font-family:var(--fm);font-size:10px;font-weight:700;color:var(--tx2);flex-shrink:0}
.ddi-i{flex:1;min-width:0}
.ddn{font-size:12px;font-weight:600;color:var(--tx)}
.ddc{font-family:var(--fm);font-size:9px;color:var(--tx3);text-transform:uppercase;letter-spacing:.5px;margin-top:1px;display:flex;align-items:center;gap:4px}
.ddot{width:5px;height:5px;border-radius:50%}
.mob-panel-btn{display:none;align-items:center;gap:5px;padding:5px 10px;border-radius:6px;border:1px solid var(--bd2);background:var(--sf2);color:var(--tx2);font-size:11px;font-family:var(--fm);cursor:pointer;transition:all .14s;white-space:nowrap;flex-shrink:0}
.mob-panel-btn:hover{border-color:var(--ac);color:var(--ac)}
@media(max-width:860px){.mob-panel-btn{display:flex}}
.mob-search-row{display:none;padding:8px 14px;background:var(--sf);border-bottom:1px solid var(--bd);flex-shrink:0}
@media(max-width:700px){.mob-search-row{display:block}}
.mob-search-inner{display:flex;align-items:center;gap:7px;padding:8px 12px;background:var(--sf2);border:1px solid var(--bd2);border-radius:8px;cursor:text;transition:border-color .14s;position:relative}
.mob-search-inner:focus-within{border-color:var(--ac);box-shadow:0 0 0 3px var(--acd)}
.mob-search-inner svg{width:13px;height:13px;color:var(--tx3);flex-shrink:0}
.mob-search-inner input{background:transparent;border:none;outline:none;font-family:var(--ff);font-size:13px;color:var(--tx);width:100%}
.mob-search-inner input::placeholder{color:var(--tx3)}
.dupa{display:none;background:rgba(239,68,68,.07);border:1px solid rgba(239,68,68,.2);border-radius:7px;padding:7px 10px;margin-right:4px;font-size:10px;font-weight:500;color:#fca5a5;line-height:1.5;gap:6px;max-width:240px}
.dupa.on{display:flex;align-items:flex-start}
@media(max-width:640px){.dupa{display:none!important}}
.app-body{flex:1;display:flex;overflow:hidden;position:relative}
.sp{width:240px;min-width:240px;border-right:1px solid var(--bd);background:var(--sf);display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0;transition:transform .25s,opacity .25s}
.sp::-webkit-scrollbar{width:3px}
.sp::-webkit-scrollbar-thumb{background:var(--bd2)}
@media(max-width:860px){.sp{position:absolute;left:0;top:0;bottom:0;z-index:40;transform:translateX(-100%);opacity:0;box-shadow:var(--shl)}.sp.mob-open{transform:translateX(0);opacity:1}}
.sp-backdrop{display:none;position:absolute;inset:0;z-index:39;background:rgba(0,0,0,.5);backdrop-filter:blur(2px)}
@media(max-width:860px){.sp-backdrop.on{display:block}}
.spb{padding:13px 14px;border-bottom:1px solid var(--bd)}
.spl{font-family:var(--fm);font-size:9px;font-weight:500;letter-spacing:1.5px;text-transform:uppercase;color:var(--tx3);margin-bottom:9px;display:flex;align-items:center;gap:7px}
.spl::after{content:'';flex:1;height:1px;background:var(--bd)}
.sc-big{font-family:var(--ff);font-size:40px;font-weight:800;line-height:1;letter-spacing:-2px;margin-bottom:3px}
.sc-lbl{font-size:10px;color:var(--tx3);line-height:1.55;max-width:150px}
.chips{display:flex;flex-wrap:wrap;gap:4px}
.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border-radius:5px;font-size:10px;font-weight:600;border:1px solid;cursor:default}
.chip-x{cursor:pointer;opacity:.35;font-size:13px;line-height:1;margin-left:1px;transition:opacity .1s}
.chip-x:hover{opacity:1}
.chip.dup{border-color:rgba(239,68,68,.4)!important;background:rgba(239,68,68,.08)!important;color:var(--red)!important}
.chip-crm{background:rgba(59,130,246,.1);border-color:rgba(59,130,246,.28);color:#7ba8ff}
.chip-marketing{background:rgba(245,158,11,.1);border-color:rgba(245,158,11,.28);color:#f9be5c}
.chip-sales{background:rgba(20,184,166,.1);border-color:rgba(20,184,166,.28);color:#2ddec9}
.chip-billing{background:rgba(34,197,94,.1);border-color:rgba(34,197,94,.28);color:#4ade80}
.chip-analytics{background:rgba(249,115,22,.1);border-color:rgba(249,115,22,.28);color:#fb923c}
.chip-communication{background:rgba(168,85,247,.1);border-color:rgba(168,85,247,.28);color:#c084fc}
.chip-automation{background:rgba(6,182,212,.1);border-color:rgba(6,182,212,.28);color:#22d3ee}
.chip-support{background:rgba(16,185,129,.1);border-color:rgba(16,185,129,.28);color:#34d399}
.chip-website{background:rgba(232,121,249,.1);border-color:rgba(232,121,249,.28);color:#f0abfc}
.chip-ecommerce{background:rgba(251,113,133,.1);border-color:rgba(251,113,133,.28);color:#fda4af}
.chip-other{background:rgba(100,116,139,.1);border-color:rgba(100,116,139,.28);color:#94a3b8}
[data-theme="light"] .chip-crm{color:#1d4ed8}[data-theme="light"] .chip-marketing{color:#92400e}[data-theme="light"] .chip-sales{color:#0d766e}[data-theme="light"] .chip-billing{color:#15803d}[data-theme="light"] .chip-analytics{color:#c2410c}[data-theme="light"] .chip-communication{color:#7c3aed}[data-theme="light"] .chip-automation{color:#0e7490}[data-theme="light"] .chip-support{color:#065f46}[data-theme="light"] .chip-website{color:#a21caf}[data-theme="light"] .chip-ecommerce{color:#be185d}[data-theme="light"] .chip-other{color:#475569}
.cb{margin-bottom:6px}
.cbh{display:flex;justify-content:space-between;margin-bottom:3px}
.cbn{font-family:var(--fm);font-size:9px;font-weight:500;letter-spacing:.4px;text-transform:uppercase;color:var(--tx3)}
.cbs{font-family:var(--fm);font-size:9px;color:var(--tx3)}
.cbtr{height:3px;background:var(--sf3);border-radius:2px;overflow:hidden}
.cbf{height:100%;border-radius:2px;transition:width .55s cubic-bezier(.4,0,.2,1)}
.iss{display:flex;align-items:flex-start;gap:7px;padding:7px 9px;border-radius:7px;background:var(--sf2);border:1px solid var(--bd);font-size:10px;font-weight:500;line-height:1.5;color:var(--tx2);margin-bottom:4px}
.idot{width:5px;height:5px;border-radius:50%;flex-shrink:0;margin-top:3px}
.idot.c{background:var(--red);box-shadow:0 0 5px rgba(239,68,68,.5)}
.idot.w{background:var(--amber);box-shadow:0 0 5px rgba(245,158,11,.4)}
.idot.o{background:var(--green);box-shadow:0 0 5px rgba(34,197,94,.4)}
.iss.c{border-color:rgba(239,68,68,.15)}
.iss.w{border-color:rgba(245,158,11,.15)}
.iss.o{border-color:rgba(34,197,94,.1)}
.gc-wrap{flex:1;overflow:auto;padding:20px;scrollbar-width:thin;scrollbar-color:var(--bd2) transparent}
.gc-wrap::-webkit-scrollbar{width:5px}
.gc-wrap::-webkit-scrollbar-thumb{background:var(--bd2);border-radius:3px}
.g-top{display:flex;gap:8px;margin-bottom:18px;align-items:stretch}
@media(max-width:520px){.g-top{gap:8px}}
.stc{background:var(--sf);border:1px solid var(--bd);border-radius:10px;padding:12px 18px;transition:border-color .2s;flex:1;min-width:100px}
.stc:hover{border-color:var(--bd3)}
.stc-lbl{font-family:var(--fm);font-size:8.5px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--tx3);margin-bottom:4px}
.stc-val{font-family:var(--ff);font-size:22px;font-weight:800;line-height:1;letter-spacing:-1px;margin-bottom:2px}
.stc-val.ac{color:var(--ac)}.stc-val.am{color:var(--amber)}.stc-val.re{color:var(--red)}.stc-val.gr{color:var(--green)}
.stc-sub{font-size:10px;color:var(--tx3);margin-top:2px}
.stc-bar{height:3px;background:var(--sf3);border-radius:2px;overflow:hidden;margin-top:8px}
.stc-barf{height:100%;border-radius:2px;background:var(--ac);transition:width .6s cubic-bezier(.4,0,.2,1)}
.g-main{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
@media(max-width:580px){.g-main{grid-template-columns:1fr}}
.gc-wide{grid-column:1/-1}
@media(max-width:580px){.gc-wide{grid-column:1}}
.gc{background:var(--sf);border:1px solid var(--bd);border-radius:12px;padding:14px 16px;position:relative;overflow:visible;transition:border-color .15s,box-shadow .2s;animation:cin .3s ease both}
@keyframes cin{from{opacity:0;transform:scale(.975)}to{opacity:1;transform:scale(1)}}
.gc::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;border-radius:var(--rl) var(--rl) 0 0;opacity:0;transition:opacity .3s;pointer-events:none}
.gc:hover{border-color:var(--bd3)}
.gc.ga{border-color:var(--bd2)}.gc.ga::before{background:linear-gradient(90deg,transparent,var(--ac),transparent);opacity:.55}
.gc.gg{border-color:rgba(239,68,68,.2);background:rgba(239,68,68,.012)}.gc.gg::before{background:linear-gradient(90deg,transparent,var(--red),transparent);opacity:.38}
.gc.gw{border-color:rgba(245,158,11,.2)}.gc.gw::before{background:linear-gradient(90deg,transparent,var(--amber),transparent);opacity:.38}
.gch{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.gcl{display:flex;align-items:center;gap:8px}
.gcn{font-family:var(--fm);font-size:9px;font-weight:600;color:var(--tx4);background:var(--sf3);border:1px solid var(--bd);padding:2px 6px;border-radius:4px;letter-spacing:.5px}
.gct{font-family:var(--ff);font-size:13px;font-weight:700;color:var(--tx);letter-spacing:-.3px}
.gcs{font-family:var(--fm);font-size:8px;font-weight:600;padding:3px 8px;border-radius:100px;text-transform:uppercase;letter-spacing:.7px}
.sp-a{background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.22);color:#4ade80}
.sp-g{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.22);color:#fca5a5}
.sp-w{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.22);color:#fcd34d}
[data-theme="light"] .sp-a{color:#15803d}[data-theme="light"] .sp-g{color:#dc2626}[data-theme="light"] .sp-w{color:#b45309}
.gtools{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px}
.gchip{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;border-radius:7px;font-size:10.5px;font-weight:600;background:var(--sf2);border:1px solid var(--bd2);color:var(--tx2);transition:all .13s;cursor:pointer;position:relative;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}
.gchip:hover{border-color:var(--ac);color:var(--tx)}
.cab{font-family:var(--fm);font-size:8px;font-weight:700;padding:1px 4px;border-radius:3px;background:var(--sf3);border:1px solid var(--bd2);color:var(--tx3);letter-spacing:-.2px}
.nbadge{font-family:var(--fm);font-size:8px;padding:1px 4px;border-radius:3px;background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.18);color:#4ade80;text-transform:uppercase;letter-spacing:.3px}
[data-theme="light"] .nbadge{color:#15803d}
.gc-add-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:7px;font-size:11px;font-weight:600;background:transparent;border:1px dashed var(--bd2);color:var(--tx3);cursor:pointer;transition:all .13s;min-height:30px}
.gc-add-btn:hover{border-color:var(--ac);color:var(--ac);background:var(--acd)}
.gc-add-btn svg{width:10px;height:10px}
.gins{display:flex;align-items:flex-start;gap:5px;font-size:9.5px;color:var(--tx3);line-height:1.45;padding:5px 8px;border-radius:6px;background:transparent;border:none;margin-top:4px;padding-left:0}
.gi-dot{width:4px;height:4px;border-radius:50%;flex-shrink:0;margin-top:3px}
.gi-dot.g{background:var(--green)}.gi-dot.a{background:var(--amber)}.gi-dot.r{background:var(--red)}
#tip{position:fixed;z-index:9999;min-width:200px;max-width:240px;background:var(--sf3);border:1px solid var(--bd3);border-radius:11px;padding:12px 14px;font-size:11px;line-height:1.5;color:var(--tx2);pointer-events:none;opacity:0;transition:opacity .15s;box-shadow:var(--shl)}
#tip .tip-n{font-weight:700;color:var(--tx);font-size:12px;margin-bottom:4px}
#tip .tip-d{color:var(--tx2);margin-bottom:6px}
#tip .tip-tags{display:flex;flex-wrap:wrap;gap:3px}
#tip .tip-tag{font-family:var(--fm);font-size:8px;padding:2px 5px;border-radius:3px;background:var(--acd);border:1px solid var(--acg);color:var(--ac);text-transform:uppercase}
.fv-wrap{flex:1;overflow:auto;padding:20px 16px;display:flex;flex-direction:column;align-items:center;gap:0}
.fv-stage{width:100%;max-width:720px;display:flex;flex-direction:column;align-items:center;position:relative}
.fv-trap{width:100%;transition:width .3s}
.fv-body{width:100%;background:var(--sf);border:1px solid var(--bd);border-radius:var(--rl);padding:13px 16px;position:relative;overflow:visible;transition:border-color .2s}
.fv-body::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;border-radius:var(--rl) var(--rl) 0 0;opacity:0;transition:opacity .3s}
.fv-body.fa::before{background:linear-gradient(90deg,transparent,var(--ac),transparent);opacity:.5}
.fv-body.fg::before{background:linear-gradient(90deg,transparent,var(--red),transparent);opacity:.38}
.fv-body.fw::before{background:linear-gradient(90deg,transparent,var(--amber),transparent);opacity:.38}
.fv-body.fa{border-color:var(--bd2)}.fv-body.fg{border-color:rgba(239,68,68,.2);background:rgba(239,68,68,.012)}.fv-body.fw{border-color:rgba(245,158,11,.2)}
.fv-arrow{width:2px;height:20px;background:linear-gradient(to bottom,var(--bd2),transparent);margin:0 auto;position:relative;flex-shrink:0}
.fv-arrow::after{content:'';position:absolute;bottom:-1px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--bd2)}
.fv-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.fv-label{display:flex;align-items:center;gap:8px}
.fv-num{font-family:var(--fm);font-size:9px;font-weight:600;color:var(--tx4);background:var(--sf3);border:1px solid var(--bd);padding:2px 6px;border-radius:4px;letter-spacing:.5px}
.fv-title{font-size:12px;font-weight:700;color:var(--tx);letter-spacing:-.2px}
.fv-subtitle{font-size:9px;color:var(--tx3);font-family:var(--fm);margin-top:1px;letter-spacing:.3px}
.fv-tools{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:5px;align-items:center}
.cell-modal-ov{position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(8px);z-index:500;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s;padding:16px}
.cell-modal-ov.on{opacity:1;pointer-events:all}
.cell-modal{background:var(--sf);border:1px solid var(--bd2);border-radius:18px;width:780px;max-width:96vw;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shl);transform:scale(.97) translateY(10px);transition:transform .22s}
.cell-modal-ov.on .cell-modal{transform:scale(1) translateY(0)}
.cm-head{padding:18px 20px 14px;border-bottom:1px solid var(--bd);display:flex;align-items:flex-start;justify-content:space-between;flex-shrink:0}
.cm-title{font-size:17px;font-weight:800;color:var(--tx);letter-spacing:-.4px}
.cm-sub{font-size:11px;color:var(--tx3);margin-top:3px;line-height:1.5}
.cm-close{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:20px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:7px;transition:all .13s;line-height:1;flex-shrink:0}
.cm-close:hover{background:var(--sf2);color:var(--tx)}
.cm-body{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:14px}
.cm-body::-webkit-scrollbar{width:3px}
.cm-body::-webkit-scrollbar-thumb{background:var(--bd2)}
.cm-search-row{position:relative}
.cm-search{width:100%;padding:10px 12px 10px 36px;background:var(--sf2);border:1px solid var(--bd2);border-radius:var(--r);color:var(--tx);font-family:var(--ff);font-size:13px;outline:none;transition:all .13s}
.cm-search:focus{border-color:var(--ac);box-shadow:0 0 0 3px var(--acd)}
.cm-search::placeholder{color:var(--tx3)}
.cm-si{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--tx3);pointer-events:none}
.cm-si svg{width:13px;height:13px}
.cm-sug-label{font-family:var(--fm);font-size:9px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase;color:var(--tx3);margin-bottom:8px}
.cm-tools{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
@media(max-width:600px){.cm-tools{grid-template-columns:1fr 1fr}}
@media(max-width:420px){.cm-tools{grid-template-columns:1fr}}
.cm-tool{display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:var(--r);background:var(--sf2);border:1px solid var(--bd);cursor:pointer;transition:all .13s}
.cm-tool:hover{border-color:var(--ac);background:var(--acd)}
.cm-tool.already{opacity:.38;cursor:default;pointer-events:none}
.cmt-ab{width:32px;height:32px;border-radius:8px;background:var(--sf3);border:1px solid var(--bd2);display:flex;align-items:center;justify-content:center;font-family:var(--fm);font-size:11px;font-weight:700;color:var(--tx2);flex-shrink:0}
.cmt-info{flex:1;min-width:0}
.cmt-name{font-size:12px;font-weight:600;color:var(--tx)}
.cmt-desc{font-size:10px;color:var(--tx3);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmt-added{font-family:var(--fm);font-size:8px;color:var(--green);text-transform:uppercase;letter-spacing:.5px;margin-top:2px}
.cm-existing-label{font-family:var(--fm);font-size:9px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase;color:var(--tx3);margin-bottom:7px;margin-top:2px}
.cm-existing{display:flex;flex-wrap:wrap;gap:6px}
.tmpl-ov{position:fixed;inset:0;background:rgba(0,0,0,.7);backdrop-filter:blur(10px);z-index:600;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s;padding:16px}
.tmpl-ov.on{opacity:1;pointer-events:all}
.tmpl-m{background:var(--sf);border:1px solid var(--bd2);border-radius:20px;padding:26px;width:680px;max-width:100%;max-height:90vh;overflow-y:auto;box-shadow:var(--shl);transform:scale(.97) translateY(10px);transition:transform .22s}
.tmpl-ov.on .tmpl-m{transform:scale(1) translateY(0)}
.tmpl-title{font-size:19px;font-weight:800;color:var(--tx);margin-bottom:5px;letter-spacing:-.5px}
.tmpl-sub{font-size:12px;color:var(--tx3);margin-bottom:20px;line-height:1.65}
.tmpl-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
@media(max-width:500px){.tmpl-grid{grid-template-columns:1fr 1fr}}
.tcard{background:var(--sf2);border:1px solid var(--bd);border-radius:var(--rl);padding:15px;cursor:pointer;transition:all .14s;position:relative;overflow:hidden}
.tcard::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;opacity:0;transition:opacity .2s}
.tcard:hover{border-color:var(--bd3);box-shadow:var(--sh)}
.tcard:hover::before{opacity:1}
.tcard.sel{border-color:var(--ac);background:var(--acd);box-shadow:0 0 0 2px var(--acg)}
.tcard.sel::before{opacity:1;background:var(--ac)}
.tc-icon{width:32px;height:32px;border-radius:8px;background:var(--sf3);border:1px solid var(--bd2);display:flex;align-items:center;justify-content:center;margin-bottom:10px;color:var(--ac)}
.tc-icon svg{width:15px;height:15px}
.tc-name{font-size:12px;font-weight:700;color:var(--tx);margin-bottom:4px;letter-spacing:-.2px}
.tc-desc{font-size:10px;color:var(--tx3);line-height:1.5}
.tmpl-acts{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:16px;border-top:1px solid var(--bd)}
.stage-ov{position:fixed;inset:0;background:rgba(0,0,0,.7);backdrop-filter:blur(10px);z-index:700;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s;padding:16px}
.stage-ov.on{opacity:1;pointer-events:all}
.stage-m{background:var(--sf);border:1px solid var(--bd2);border-radius:20px;padding:26px;width:560px;max-width:100%;max-height:90vh;overflow-y:auto;box-shadow:var(--shl);transform:scale(.97) translateY(10px);transition:transform .22s}
.stage-ov.on .stage-m{transform:scale(1) translateY(0)}
.stage-m-title{font-size:19px;font-weight:800;color:var(--tx);margin-bottom:5px;letter-spacing:-.5px}
.stage-m-sub{font-size:12px;color:var(--tx3);margin-bottom:20px;line-height:1.65}
.stage-list{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.stage-row{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--sf2);border:1px solid var(--bd);border-radius:10px;transition:border-color .14s}
.stage-row:hover{border-color:var(--bd3)}
.stage-row-num{font-family:var(--fm);font-size:9px;font-weight:600;color:var(--tx4);background:var(--sf3);border:1px solid var(--bd);padding:2px 6px;border-radius:4px;letter-spacing:.5px;flex-shrink:0;min-width:28px;text-align:center}
.stage-row-fields{flex:1;min-width:0}
.stage-name-in{background:transparent;border:none;outline:none;font-family:var(--ff);font-size:13px;font-weight:700;color:var(--tx);width:100%;letter-spacing:-.2px}
.stage-name-in::placeholder{color:var(--tx3)}
.stage-sub-in{background:transparent;border:none;outline:none;font-family:var(--fm);font-size:9px;color:var(--tx3);width:100%;margin-top:2px;letter-spacing:.3px}
.stage-sub-in::placeholder{color:var(--tx4)}
.stage-row-btns{display:flex;align-items:center;gap:3px;flex-shrink:0}
.srb{width:26px;height:26px;border-radius:6px;border:1px solid var(--bd);background:var(--sf3);color:var(--tx3);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s;font-size:11px}
.srb:hover{border-color:var(--bd3);color:var(--tx);background:var(--sf2)}
.srb.del:hover{border-color:rgba(239,68,68,.3);color:var(--red);background:rgba(239,68,68,.08)}
.add-stage-btn{display:flex;align-items:center;gap:7px;width:100%;padding:10px 14px;border-radius:10px;border:1px dashed var(--bd2);background:transparent;color:var(--tx3);font-family:var(--ff);font-size:12px;font-weight:600;cursor:pointer;transition:all .14s}
.add-stage-btn:hover{border-color:var(--ac);color:var(--ac);background:var(--acd)}
.stage-acts{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid var(--bd)}
.ov{position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(8px);z-index:300;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .18s;padding:20px}
.ov.on{opacity:1;pointer-events:all}
.modal{background:var(--sf);border:1px solid var(--bd2);border-radius:16px;padding:24px;width:400px;max-width:100%;box-shadow:var(--shl);transform:translateY(8px) scale(.97);transition:transform .18s}
.ov.on .modal{transform:translateY(0) scale(1)}
.m-title{font-size:17px;font-weight:800;color:var(--tx);margin-bottom:16px;letter-spacing:-.4px}
.field{margin-bottom:12px}
.fl{font-family:var(--fm);font-size:9px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--tx3);display:block;margin-bottom:5px}
.fi{width:100%;padding:9px 12px;background:var(--sf2);border:1px solid var(--bd2);border-radius:var(--r);color:var(--tx);font-family:var(--ff);font-size:13px;outline:none;transition:all .13s}
.fi:focus{border-color:var(--ac);box-shadow:0 0 0 3px var(--acd)}
.ma{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}
.tdock{position:fixed;bottom:20px;right:20px;z-index:999;display:flex;flex-direction:column;gap:5px}
@media(max-width:480px){.tdock{bottom:14px;right:14px;left:14px;align-items:stretch}}
.toast{font-size:12px;font-weight:600;padding:10px 14px;border-radius:9px;max-width:300px;display:flex;align-items:center;gap:8px;box-shadow:0 4px 20px rgba(0,0,0,.4),0 1px 4px rgba(0,0,0,.2);animation:tIn .22s ease}
@keyframes tIn{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:translateX(0)}}
.t-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}
/* Dark mode -- inverted (white background, dark text) */
.toast.info{background:#f8fafc;border:1px solid #e2e8f0;color:#1e293b}
.toast.success{background:#f0fdf4;border:1px solid #86efac;color:#166534}
.toast.warn{background:#fffbeb;border:1px solid #fcd34d;color:#92400e}
/* Light mode -- stays tinted/subtle */
[data-theme="light"] .toast.info{background:var(--acd);border:1px solid var(--acg);color:var(--ac)}
[data-theme="light"] .toast.success{background:rgba(34,197,94,.08);border:1px solid rgba(34,197,94,.3);color:#15803d}
[data-theme="light"] .toast.warn{background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.3);color:#92400e}
@media print{body{display:none}}
.mob-tab-bar{display:none;position:fixed;bottom:0;left:0;right:0;z-index:200;background:var(--sf);border-top:1px solid var(--bd);padding-bottom:env(safe-area-inset-bottom,0px);height:calc(58px + env(safe-area-inset-bottom,0px));align-items:stretch;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.mob-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:none;background:transparent;color:var(--tx3);font-family:var(--fm);font-size:8.5px;font-weight:600;letter-spacing:.3px;text-transform:uppercase;cursor:pointer;transition:color .14s;padding:6px 2px 8px;-webkit-tap-highlight-color:transparent;min-height:58px}
.mob-tab svg{width:20px;height:20px;flex-shrink:0;transition:transform .2s}
.mob-tab.on{color:var(--ac)}
.mob-tab.on svg{transform:translateY(-1px)}
.mob-tab-add-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:6px 2px 8px}
.mob-tab-add{width:46px;height:46px;border-radius:14px;background:var(--ac);border:none;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .15s,filter .15s;-webkit-tap-highlight-color:transparent;flex-shrink:0}
.mob-tab-add:active{transform:scale(.93)}
.mob-tab-add svg{width:22px;height:22px}
@media(max-width:700px){
  .mob-tab-bar{display:flex}
  .gc-wrap{padding-bottom:calc(58px + env(safe-area-inset-bottom,0px) + 16px)!important}
  .fv-wrap{padding-bottom:calc(58px + env(safe-area-inset-bottom,0px) + 20px)!important}
  .vtog{display:none!important}
  .mob-panel-btn{display:none!important}
  .abr>.btn{display:none!important}
  .abr>.dupa{display:none!important}
  .mob-search-row{display:block!important;padding:10px 12px;border-bottom:2px solid var(--bd)}
  .mob-search-inner{padding:11px 14px;border-radius:12px;border:1px solid var(--bd2)}
  .mob-search-inner input{font-size:14px}
  .abr{gap:4px}
}
@media(max-width:700px){
  .app-bar{height:52px;padding:0 10px;gap:6px}
  .abl{gap:4px}
  .logo-badge{display:none}
  .new-g-btn{padding:6px 8px;font-size:10px;gap:4px}
}
@media(max-width:400px){.logo-txt{display:none}}
@media(max-width:640px){
  .cell-modal-ov{align-items:flex-end;padding:0}
  .cell-modal{width:100%;max-width:100%;border-radius:22px 22px 0 0;max-height:92vh;transform:translateY(40px) scale(1)!important}
  .cell-modal-ov.on .cell-modal{transform:translateY(0) scale(1)!important}
  .cell-modal::before{content:'';display:block;width:40px;height:4px;background:var(--bd3);border-radius:2px;margin:12px auto 0;flex-shrink:0}
  .tmpl-ov{align-items:flex-end;padding:0}
  .tmpl-m{width:100%;max-width:100%;border-radius:22px 22px 0 0;max-height:92vh;transform:translateY(40px) scale(1)!important}
  .tmpl-ov.on .tmpl-m{transform:translateY(0) scale(1)!important}
  .stage-ov{align-items:flex-end;padding:0}
  .stage-m{width:100%;max-width:100%;border-radius:22px 22px 0 0;max-height:92vh;transform:translateY(40px) scale(1)!important;padding:20px}
  .stage-ov.on .stage-m{transform:translateY(0) scale(1)!important}
  .ov{align-items:flex-end;padding:0}
  .modal{width:100%;border-radius:22px 22px 0 0;padding:24px 20px;transform:translateY(40px) scale(1)!important}
  .ov.on .modal{transform:translateY(0) scale(1)!important}
  .tmpl-m::before,.stage-m::before,.modal::before{content:'';display:block;width:40px;height:4px;background:var(--bd3);border-radius:2px;margin:0 auto 16px;flex-shrink:0}
  .cm-tool{padding:12px 14px;border-radius:12px;min-height:56px}
  .cmt-ab{width:38px;height:38px;border-radius:10px}
  .cm-close{width:38px;height:38px;font-size:18px}
  .cm-head{padding:14px 16px 12px}
  .cm-body{padding:14px 16px;gap:16px}
  .cm-search{padding:12px 14px 12px 40px;font-size:14px;border-radius:12px}
  .tcard{padding:18px 14px;min-height:80px}
  .stage-row{padding:12px 14px;min-height:52px}
  .stage-name-in{font-size:14px}
  .srb{width:34px;height:34px;font-size:14px}
  .tmpl-acts,.stage-acts,.ma{flex-direction:column;gap:8px}
  .tmpl-acts .btn,.stage-acts .btn,.ma .btn{width:100%;justify-content:center;padding:13px 16px;font-size:13px;border-radius:12px}
}
@media(max-width:640px){
  .gc-wrap{padding:12px}
}
@media(max-width:400px){
}
@media(max-width:640px){
  .fv-wrap{padding:12px 10px}
  .fv-body{padding:12px 14px}
  .fv-stage{max-width:100%}
}
@media(max-width:700px){
  .sp{position:fixed;left:0;right:0;bottom:0;top:auto;width:100%!important;min-width:100%!important;max-height:78vh;border-right:none;border-top:1px solid var(--bd);border-radius:22px 22px 0 0;transform:translateY(100%);opacity:1;z-index:180;padding-bottom:env(safe-area-inset-bottom,0px);transition:transform .28s cubic-bezier(.4,0,.2,1)}
  .sp.mob-open{transform:translateY(0)}
  .sp-backdrop.on{display:block}
  .sp::before{content:'';display:block;width:40px;height:4px;background:var(--bd3);border-radius:2px;margin:12px auto 4px;flex-shrink:0}
  .spb{padding:10px 16px}
  .sc-big{font-size:36px}
  .sp{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 10px)}
}
@media(max-width:700px){#tip{display:none!important}}
@media(max-width:600px){
  .hero-h{font-size:clamp(28px,8vw,42px);letter-spacing:-1px}
  .hero-sub{font-size:14px}
  .home-stats{gap:16px;padding:16px}
  .hs-val{font-size:26px}
  .feat-grid{gap:10px}
  .ai-card{padding:20px 16px}
}
@media(max-width:400px){
  .hero-h{font-size:clamp(24px,7vw,34px)}
  .home-ctas{flex-direction:column;align-items:stretch}
  .home-ctas .btn{width:100%;justify-content:center;padding:14px 20px;font-size:14px}
}
@media(max-width:500px){
  .hdr{padding:0 12px;height:50px}
  .acc-row{display:none}
}
@media(max-width:700px){
  .tdock{bottom:calc(58px + env(safe-area-inset-bottom,0px) + 10px);right:12px;left:12px}
  .tdock .toast{max-width:100%}
}
@media(max-width:700px){
  .gc-wrap,.fv-wrap,.sp{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
}
/* -- MOBILE HAMBURGER NAV ------------------------------------- */
.mob-ham{display:none;align-items:center;justify-content:center;width:34px;height:34px;border-radius:7px;border:1px solid var(--bd2);background:var(--sf2);color:var(--tx2);cursor:pointer;flex-shrink:0;transition:all .14s}
.mob-ham:hover{border-color:var(--bd3);color:var(--tx)}
@media(max-width:640px){.mob-ham{display:flex}.hdr-mid{display:none}}
.mob-nav-ov{position:fixed;inset:0;z-index:500;background:rgba(0,0,0,.55);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .22s;overflow:hidden}
.mob-nav-ov.on{opacity:1;pointer-events:all}
.mob-nav-drawer{position:fixed;top:0;right:0;bottom:0;width:280px;max-width:85vw;background:var(--sf);border-left:1px solid var(--bd);z-index:501;transform:translateX(100%);transition:transform .26s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;overflow:hidden;overflow-y:auto;padding-bottom:env(safe-area-inset-bottom,0px)}
.mob-nav-ov.on .mob-nav-drawer{transform:translateX(0)}
.mob-nav-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--bd)}
.mob-nav-logo{font-family:var(--ff);font-weight:800;font-size:16px;color:var(--tx);letter-spacing:-.4px}
.mob-nav-logo em{color:var(--ac);font-style:normal}
.mob-nav-close{width:32px;height:32px;border-radius:7px;border:1px solid var(--bd2);background:var(--sf2);color:var(--tx3);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .14s}
.mob-nav-close:hover{color:var(--tx);border-color:var(--bd3)}
.mob-nav-links{padding:12px 10px;flex:1}
.mob-nav-link{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:9px;color:var(--tx2);font-size:13px;font-weight:600;font-family:var(--ff);cursor:pointer;text-decoration:none;transition:all .13s;border:1px solid transparent}
.mob-nav-link:hover,.mob-nav-link.on{background:var(--sf2);border-color:var(--bd);color:var(--tx)}
.mob-nav-link svg{width:16px;height:16px;min-width:16px;min-height:16px;flex-shrink:0;color:var(--tx3)}
.mob-nav-divider{height:1px;background:var(--bd);margin:8px 12px}
.mob-nav-footer{padding:16px 18px;border-top:1px solid var(--bd)}
.mob-nav-controls{display:flex;align-items:center;justify-content:space-between}
.mob-nav-acc{display:flex;align-items:center;gap:6px}

/* -- FORM LABELS ---------------------------------------------- */
.fl{display:block;margin-bottom:5px;font-size:11px;font-weight:600;color:var(--tx2);font-family:var(--fm);letter-spacing:.3px;text-transform:uppercase}

/* -- AUTH / MAGIC LINK MODAL --------------------------------- */
.m-sub{font-size:12px;color:var(--tx3);margin-bottom:18px;line-height:1.6}
.auth-msg{font-size:12px;color:var(--tx3);text-align:center;padding:10px 0 4px;line-height:1.6}
.auth-sent-ic{font-size:32px;text-align:center;margin-bottom:8px}

/* -- FEEDBACK MODAL ------------------------------------------- */
.fb-ta{width:100%;min-height:100px;background:var(--sf2);border:1px solid var(--bd2);border-radius:var(--r);padding:10px 12px;font-family:var(--ff);font-size:13px;color:var(--tx);resize:vertical;outline:none;transition:border-color .14s;line-height:1.6}
.fb-ta:focus{border-color:var(--ac);box-shadow:0 0 0 3px var(--acd)}
.fb-ta::placeholder{color:var(--tx3)}

/* -- SHARE MODAL ---------------------------------------------- */
.tog-switch{position:relative;display:inline-block;width:42px;height:24px;flex-shrink:0}
.tog-switch input{opacity:0;width:0;height:0;position:absolute}
.tog-slider{position:absolute;cursor:pointer;inset:0;background:var(--sf3);border:1px solid var(--bd2);border-radius:100px;transition:.2s}
.tog-slider::before{position:absolute;content:'';height:16px;width:16px;left:3px;bottom:3px;background:var(--tx3);border-radius:50%;transition:.2s}
.tog-switch input:checked+.tog-slider{background:var(--ac);border-color:var(--ac)}
.tog-switch input:checked+.tog-slider::before{transform:translateX(18px);background:#fff}
.share-tog-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--bd)}
.share-tog-label{font-size:13px;font-weight:600;color:var(--tx);flex:1}
.share-tog-sub{font-size:11px;color:var(--tx3);margin-top:2px}
.share-link-row{margin-top:14px;display:flex;flex-direction:column;gap:8px}
.share-link-label{font-size:11px;font-weight:600;color:var(--tx3);font-family:var(--fm);letter-spacing:.5px;text-transform:uppercase}
.share-url-row{display:flex;gap:8px}
.share-url-input{flex:1;background:var(--sf2);border:1px solid var(--bd2);border-radius:var(--r);padding:9px 12px;font-family:var(--fm);font-size:11px;color:var(--tx2);outline:none}
.share-url-input:focus{border-color:var(--ac)}

/* -- USER MENU ------------------------------------------------ */
.user-menu{position:relative}
.um-btn{display:flex;align-items:center;gap:6px;padding:5px 10px;border-radius:7px;border:1px solid var(--bd2);background:var(--sf2);color:var(--tx2);font-size:11px;font-weight:600;font-family:var(--ff);cursor:pointer;transition:all .14s}
.um-btn:hover{border-color:var(--bd3);color:var(--tx)}
.um-dot{width:6px;height:6px;border-radius:50%;background:var(--green);flex-shrink:0}
.um-dd{position:absolute;top:calc(100% + 6px);right:0;width:200px;background:var(--sf2);border:1px solid var(--bd2);border-radius:var(--rl);z-index:200;box-shadow:var(--shl);overflow:hidden;display:none}
.um-dd.on{display:block}
.um-email{padding:10px 14px;font-size:11px;color:var(--tx3);border-bottom:1px solid var(--bd);font-family:var(--fm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.um-item{display:flex;align-items:center;gap:8px;padding:10px 14px;font-size:12px;font-weight:500;color:var(--tx2);cursor:pointer;transition:background .1s}
.um-item:hover{background:var(--sf3);color:var(--tx)}
.um-item svg{width:13px;height:13px;color:var(--tx3)}
@media(max-width:700px){#shareBtn{display:none!important}#signInBtn{display:none!important}}

/* ===============================================================
   MOBILE OPTIMIZATION PASS
   =============================================================== */

/* -- FIX: Share/SignIn/Export visible on mobile via explicit show -- */
@media(max-width:700px){
  .abr>.btn{display:none!important}
  /* Export is in bottom tab bar on mobile - keep hidden */
  /* Share + SignIn already hidden via #shareBtn/#signInBtn rule */
}

/* -- HOME HERO: proper mobile font sizing -- */
@media(max-width:640px){
  .h-head{font-size:clamp(32px,9vw,56px);letter-spacing:-2px;margin-bottom:16px}
  .h-sub{font-size:14px;line-height:1.65;margin-bottom:28px;padding:0 8px}
  .h-acts{gap:10px;margin-bottom:36px}
  .h-cta{font-size:13px;padding:11px 22px}
  .hero{padding:40px 16px 60px}
}
@media(max-width:400px){
  .h-head{font-size:clamp(28px,8.5vw,42px);letter-spacing:-1.5px}
  .h-acts{flex-direction:column;align-items:stretch;width:100%;max-width:280px}
  .h-cta{width:100%;justify-content:center;padding:13px 20px}
}

/* -- HERO STATS: 2x2 grid on small screens -- */
@media(max-width:500px){
  .h-stats{display:grid;grid-template-columns:1fr 1fr}
  .hst{border-right:none;border-bottom:1px solid var(--bd);padding:12px 16px}
  .hst:nth-child(odd){border-right:1px solid var(--bd)}
  .hst:nth-child(3),.hst:nth-child(4){border-bottom:none}
  .hst-n{font-size:20px}
  .hst-l{font-size:9px}
}

/* -- APP BAR: tighter on mobile -- */
@media(max-width:700px){
  .new-g-btn span{display:none}
  .gtab{font-size:11px;padding:4px 8px;gap:4px}
  .gtc{display:none}
}

/* -- GRID CELLS: chips with overflow protection -- */
@media(max-width:640px){
}

/* -- SCORE PANEL: cleaner bottom sheet -- */
@media(max-width:700px){
  .sp{max-height:82vh}
  .sc-big{font-size:44px}
  .spb{padding:12px 16px}
  .spl{margin-bottom:8px}
  .chip{font-size:10px;padding:3px 7px}
}

/* -- CELL MODAL: better touch targets -- */
@media(max-width:640px){
  .cell-modal{max-height:88vh}
  .cm-tool{cursor:pointer;-webkit-tap-highlight-color:transparent}
  .cm-tool:active{background:var(--sf3)}
  .gc-add-btn{-webkit-tap-highlight-color:transparent}
  .gc-add-btn:active{background:var(--sf3)}
}

/* -- FUNNEL VIEW: full width stages -- */
@media(max-width:640px){
  .fv-wrap{padding:8px}
  .fv-trap{width:100%!important}
  .fv-stage{margin-bottom:4px}
}

/* -- MODALS: full bottom sheet with better spacing -- */
@media(max-width:640px){
  .m-title{font-size:17px}
  .fi{font-size:16px}/* prevent iOS zoom on input focus */
  .fb-ta{font-size:16px}/* prevent iOS zoom */
  .cm-search{font-size:16px!important}/* prevent iOS zoom */
  .mob-search-inner input{font-size:16px!important}/* prevent iOS zoom */
}

/* -- STAGE BUILDER: readable on small screens -- */
@media(max-width:640px){
  .stage-m-title{font-size:16px;font-weight:700}
  .stage-row-num{font-size:9px}
  .add-stage-btn{padding:10px 14px;font-size:12px}
}

/* -- TEMPLATE PICKER: 1 column on very small -- */
@media(max-width:360px){
  .tmpl-grid{grid-template-columns:1fr!important}
}

/* -- MOB TAB BAR: hide text labels on tiny screens -- */
@media(max-width:360px){
  .mob-tab span,.mob-tab{font-size:9px}
}

/* -- TOAST: full width on mobile -- */
@media(max-width:640px){
  .toast{width:100%;max-width:100%;justify-content:center}
}

/* -- PREVENT HORIZONTAL SCROLL -- */
@media(max-width:700px){
  #appScreen{overflow-x:hidden}
  .app-body{overflow-x:hidden}
}

/* -- FIX: min-height:0 on flex children prevents overflow on mobile -- */
@media(max-width:700px){
  .app-body{min-height:0}
  .gc-wrap{min-height:0}
  .fv-wrap{min-height:0}
}
/* -- IMPORT STACK ----------------------------------------------- */
#importTa{min-height:130px;resize:vertical}

/* -- GAP RECOMMENDATIONS ---------------------------------------- */
.rec-stage{margin-bottom:10px}
.rec-stage:last-child{margin-bottom:0}
.rec-label{font-size:10px;color:var(--tx3);font-family:var(--fm);margin-bottom:5px}
.rec-label strong{color:var(--tx2);font-weight:600}
.rec-chips{display:flex;flex-wrap:wrap;gap:4px}
.rec-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px 3px 7px;border-radius:6px;font-size:10px;font-weight:600;font-family:var(--ff);background:var(--acd);border:1px solid var(--acg);color:var(--ac);cursor:pointer;transition:all .12s;white-space:nowrap}
.rec-chip:hover{background:var(--ac);color:#fff;border-color:var(--ac)}
.rec-chip:hover .rec-add{opacity:1}
.rec-add{font-size:12px;font-weight:700;opacity:.5;transition:opacity .12s}

/* -- NOTES VIEW ------------------------------------------------- */
.nv-wrap{flex:1;overflow-y:auto;padding:16px 20px 80px;min-height:0}
.nv-inner{max-width:760px;margin:0 auto}
.nv-header{margin-bottom:20px;padding-bottom:14px;border-bottom:1px solid var(--bd)}
.nv-title{font-size:16px;font-weight:700;color:var(--tx);display:flex;align-items:center;gap:10px;margin-bottom:4px}
.nv-count{font-size:11px;font-weight:500;color:var(--tx3);background:var(--sf);border:1px solid var(--bd);border-radius:20px;padding:2px 8px;font-family:var(--fm)}
.nv-hint{font-size:11px;color:var(--tx3);font-family:var(--fm)}
.nv-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;gap:10px;font-size:13px;color:var(--tx3);text-align:center}
.nv-section{margin-bottom:24px}
.nv-stage-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--tx3);font-family:var(--fm);margin-bottom:8px;display:flex;align-items:center;gap:7px}
.nv-stage-num{font-size:8px;background:var(--sf);border:1px solid var(--bd);border-radius:4px;padding:1px 5px;color:var(--tx3)}

/* Tool note cards */
.nt-card{background:var(--sf);border:1px solid var(--bd);border-radius:12px;padding:14px 16px;margin-bottom:8px;transition:border-color .15s}
.nt-card.has-note{border-color:var(--acg)}
.nt-card:focus-within{border-color:var(--ac);box-shadow:0 0 0 2px var(--acd)}
.nt-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.nt-ab{width:32px;height:32px;border-radius:8px;background:var(--bg);border:1px solid var(--bd);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;font-family:var(--fm);flex-shrink:0}
.nt-info{flex:1;min-width:0}
.nt-name{font-size:13px;font-weight:700;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nt-cat{font-size:10px;color:var(--tx3);font-family:var(--fm);text-transform:capitalize;margin-top:1px}
.nt-dot{width:7px;height:7px;border-radius:50%;background:var(--ac);flex-shrink:0}
.nt-del{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:12px;padding:4px;border-radius:5px;line-height:1;flex-shrink:0;opacity:.5;transition:opacity .12s,color .12s}
.nt-del:hover{opacity:1;color:var(--red)}
.nt-ta{width:100%;background:var(--bg);border:1px solid var(--bd);border-radius:8px;color:var(--tx);font-family:var(--ff);font-size:12px;line-height:1.6;padding:10px 12px;resize:vertical;min-height:72px;transition:border-color .15s;box-sizing:border-box}
.nt-ta:focus{outline:none;border-color:var(--ac)}
.nt-ta::placeholder{color:var(--tx3)}
.nt-note-ro{font-size:12px;color:var(--tx2);line-height:1.6;background:var(--bg);border-radius:8px;padding:10px 12px;border:1px solid var(--bd);min-height:40px;white-space:pre-wrap}

/* Note dot on grid chips */
.gchip.noted{border-color:var(--acg)}
.note-dot{color:var(--ac);font-size:7px;margin-left:3px;opacity:.8;vertical-align:middle;line-height:1}

/* -- NOTES V2 -- IMPROVED STYLING ------------------------------- */
.nt-card{background:var(--sf);border:1px solid var(--bd);border-radius:14px;padding:16px;margin-bottom:10px;transition:border-color .15s,box-shadow .15s;position:relative}
.nt-card::before{content:'';position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:0 3px 3px 0;background:var(--bd);transition:background .15s}
.nt-card.has-note::before{background:var(--ac)}
.nt-card:focus-within{border-color:var(--ac);box-shadow:0 0 0 3px var(--acd)}
.nt-card:focus-within::before{background:var(--ac)}
.nt-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.nt-ab{width:34px;height:34px;border-radius:9px;background:var(--bg);border:1px solid var(--bd);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;font-family:var(--fm);flex-shrink:0;letter-spacing:.3px}
.nt-info{flex:1;min-width:0}
.nt-name{font-size:13px;font-weight:700;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}
.nt-cat{font-size:9px;color:var(--tx3);font-family:var(--fm);text-transform:uppercase;letter-spacing:.5px}
.nt-dot{width:8px;height:8px;border-radius:50%;background:var(--ac);flex-shrink:0;box-shadow:0 0 6px var(--ac)}
.nt-del{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:11px;padding:5px;border-radius:6px;line-height:1;flex-shrink:0;opacity:.4;transition:all .12s}
.nt-del:hover{opacity:1;color:var(--red);background:rgba(239,68,68,.1)}
.nt-ta{width:100%;background:var(--bg);border:1px solid transparent;border-radius:9px;color:var(--tx);font-family:var(--ff);font-size:12px;line-height:1.7;padding:10px 12px;resize:vertical;min-height:80px;transition:all .15s;box-sizing:border-box;letter-spacing:.01em}
.nt-ta:hover{border-color:var(--bd)}
.nt-ta:focus{outline:none;border-color:var(--ac);background:var(--sf);box-shadow:inset 0 1px 3px rgba(0,0,0,.15)}
.nt-ta::placeholder{color:var(--tx3);font-style:italic}
.nt-note-ro{font-size:12px;color:var(--tx2);line-height:1.7;background:var(--bg);border-radius:9px;padding:10px 12px;min-height:44px;white-space:pre-wrap;border:1px solid var(--bd)}
.nv-stage-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--tx3);font-family:var(--fm);margin-bottom:10px;display:flex;align-items:center;gap:8px;padding-left:3px}
.nv-stage-num{font-size:9px;background:var(--acd);border:1px solid var(--acg);border-radius:4px;padding:2px 6px;color:var(--ac);font-weight:700}
.nv-header{margin-bottom:22px;padding-bottom:16px;border-bottom:1px solid var(--bd);display:flex;justify-content:space-between;align-items:flex-end}
.nv-title{font-size:17px;font-weight:800;color:var(--tx);display:flex;align-items:center;gap:10px}
.nv-count{font-size:11px;font-weight:500;color:var(--ac);background:var(--acd);border:1px solid var(--acg);border-radius:20px;padding:2px 8px;font-family:var(--fm)}
.nv-hint{font-size:11px;color:var(--tx3);font-family:var(--fm)}

/* -- SALES PROCESS VIEW ----------------------------------------- */
.pv-wrap{flex:1;overflow-y:auto;padding:16px 20px 80px;min-height:0}
.pv-inner{max-width:920px;margin:0 auto}
.pv-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:320px;gap:10px;font-size:13px;color:var(--tx3);text-align:center}
.pv-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;padding-bottom:14px;border-bottom:1px solid var(--bd)}
.pv-title{font-size:17px;font-weight:800;color:var(--tx);display:flex;align-items:center;gap:10px}
.pv-grid-name{font-size:12px;font-weight:500;color:var(--tx3);background:var(--sf);border:1px solid var(--bd);border-radius:20px;padding:2px 10px;font-family:var(--fm)}

/* Process board */
.pv-board{display:flex;flex-direction:column;gap:0}
.pv-step{background:var(--sf);border:1px solid var(--bd);border-radius:14px;overflow:hidden;transition:border-color .15s}
.pv-step:hover{border-color:var(--acg)}
.pv-step-head{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--bd)}
.pv-step-head.no-tools{border-bottom-color:transparent}
.pv-step-head.has-tools{background:linear-gradient(to right,var(--acd) 0%,transparent 100%)}
.pv-step-icon{font-size:18px;flex-shrink:0;width:32px;text-align:center}
.pv-step-info{flex:1;min-width:0}
.pv-step-label{font-size:13px;font-weight:700;color:var(--tx);margin-bottom:2px}
.pv-step-desc{font-size:10px;color:var(--tx3);font-family:var(--fm)}
.pv-step-count{font-size:11px;font-weight:700;font-family:var(--fm);padding:3px 10px;border-radius:20px;flex-shrink:0}
.pv-step-count:not(.empty){background:var(--acd);border:1px solid var(--acg);color:var(--ac)}
.pv-step-count.empty{background:var(--sf);border:1px solid var(--bd);color:var(--tx3)}

/* Tools inside each step */
.pv-step-tools{padding:12px 16px;display:flex;flex-direction:column;gap:6px}
.pv-tool{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:10px;background:var(--bg);border:1px solid var(--bd);cursor:pointer;transition:all .12s}
.pv-tool:hover{border-color:var(--ac);background:var(--acd)}
.pv-tool-ab{width:28px;height:28px;border-radius:7px;background:var(--sf);border:1px solid var(--bd);display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:800;font-family:var(--fm);flex-shrink:0}
.pv-tool-info{flex:1;min-width:0}
.pv-tool-name{font-size:12px;font-weight:700;color:var(--tx);margin-bottom:1px}
.pv-tool-cat{font-size:9px;color:var(--tx3);font-family:var(--fm);text-transform:uppercase;letter-spacing:.4px;margin-bottom:3px}
.pv-tool-note{font-size:11px;color:var(--tx3);font-style:italic;line-height:1.4;border-left:2px solid var(--acg);padding-left:6px;margin-top:4px}
.pv-note-dot{font-size:8px;color:var(--ac);flex-shrink:0;margin-top:2px}
.pv-no-tools{padding:12px 16px;text-align:center}
.pv-no-tools-msg{font-size:11px;color:var(--tx3);font-family:var(--fm)}

/* Arrow connector */
.pv-arrow{display:flex;justify-content:center;padding:2px 0;color:var(--tx3);opacity:.4}

/* Win/Loss outcomes */
.pv-outcomes{display:flex;gap:10px;margin-top:18px}
.pv-outcome{flex:1;padding:12px 16px;border-radius:12px;border:1px solid var(--bd);display:flex;align-items:center;gap:10px}
.pv-outcome.win{background:rgba(34,197,94,.05);border-color:rgba(34,197,94,.2)}
.pv-outcome.loss{background:rgba(239,68,68,.05);border-color:rgba(239,68,68,.2)}
.pv-outcome-icon{font-size:16px;font-weight:900;color:var(--tx3)}
.pv-outcome.win .pv-outcome-icon{color:var(--green)}
.pv-outcome.loss .pv-outcome-icon{color:var(--red)}
.pv-outcome-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;font-family:var(--fm);color:var(--tx3);white-space:nowrap}
.pv-outcome-tools{display:flex;gap:5px;flex-wrap:wrap}
.pv-mini-chip{font-size:9px;font-weight:700;font-family:var(--fm);background:var(--sf);border:1px solid var(--bd);border-radius:5px;padding:1px 5px}

/* Process builder modal */
.pb-step-list{display:flex;flex-direction:column;gap:4px;max-height:280px;overflow-y:auto;padding:4px 0}
.pb-step-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--sf);border:1px solid var(--bd);border-radius:10px;cursor:default;user-select:none}
.pb-drag-handle{color:var(--tx3);font-size:12px;cursor:grab;letter-spacing:-1px;flex-shrink:0}
.pb-step-icon{font-size:15px;flex-shrink:0;width:22px;text-align:center}
.pb-step-label{flex:1;font-size:12px;font-weight:600;color:var(--tx2)}
.pb-toggle{width:34px;height:20px;background:var(--bd);border-radius:20px;position:relative;cursor:pointer;transition:background .15s;flex-shrink:0}
.pb-toggle.on{background:var(--ac)}
.pb-toggle-dot{position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.pb-toggle.on .pb-toggle-dot{left:17px}

/* -- TOOL DETAIL DRAWER ----------------------------------------- */
.tool-drawer-bg{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1100;opacity:0;pointer-events:none;transition:opacity .22s}
.tool-drawer-bg.on{opacity:1;pointer-events:all}
.tool-drawer{position:fixed;top:0;right:0;bottom:0;width:380px;max-width:95vw;background:var(--sf);border-left:1px solid var(--bd);z-index:1101;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s cubic-bezier(.32,0,.67,0)}
.tool-drawer.on{transform:translateX(0)}
.td-head{display:flex;align-items:center;gap:12px;padding:18px 20px;border-bottom:1px solid var(--bd);flex-shrink:0}
.td-ab{width:42px;height:42px;border-radius:11px;background:var(--bg);border:1px solid var(--bd);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;font-family:var(--fm);flex-shrink:0;letter-spacing:.3px}
.td-title-block{flex:1;min-width:0}
.td-name{font-size:16px;font-weight:800;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.td-cat{font-size:10px;color:var(--tx3);font-family:var(--fm);text-transform:uppercase;letter-spacing:.6px;margin-top:2px}
.td-close{background:none;border:none;color:var(--tx3);font-size:16px;cursor:pointer;padding:6px;border-radius:7px;line-height:1;transition:all .12s;flex-shrink:0}
.td-close:hover{color:var(--tx);background:var(--bg)}
.td-body{flex:1;overflow-y:auto;padding:18px 20px 30px}
.td-desc{font-size:13px;color:var(--tx2);line-height:1.65;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--bd)}
.td-section{margin-bottom:18px}
.td-sec-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--tx3);font-family:var(--fm);margin-bottom:8px}
.td-chips{display:flex;flex-wrap:wrap;gap:5px}
.td-chip{font-size:11px;font-weight:500;padding:4px 9px;border-radius:7px;background:var(--bg);border:1px solid var(--bd);color:var(--tx2);font-family:var(--fm)}
.td-chip-alt{background:rgba(239,68,68,.06);border-color:rgba(239,68,68,.2);color:#f87171}
.td-chip-stage{background:var(--acd);border-color:var(--acg);color:var(--ac)}
.td-prose{font-size:12px;color:var(--tx2);line-height:1.65}
.td-note-sec .nt-ta{min-height:100px}
.td-footer{margin-top:20px;padding-top:16px;border-top:1px solid var(--bd)}
.btn-red-o{border:1px solid rgba(239,68,68,.35);color:#f87171;background:rgba(239,68,68,.06)}
.btn-red-o:hover{background:rgba(239,68,68,.15);border-color:rgba(239,68,68,.6)}

/* Pricing tier row in drawer */
.td-price-row{display:flex;align-items:center;gap:10px;padding:10px 13px;border-radius:10px;background:var(--bg);border:1px solid var(--bd);margin-bottom:18px}
.td-price-label{font-size:10px;color:var(--tx3);font-family:var(--fm);text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px}
.td-price-val{font-size:13px;font-weight:700;color:var(--tx)}
.td-price-tier{font-size:10px;padding:2px 7px;border-radius:5px;font-family:var(--fm);font-weight:600}
.td-tier-free{background:rgba(34,197,94,.1);color:var(--green);border:1px solid rgba(34,197,94,.25)}
.td-tier-paid{background:var(--acd);color:var(--ac);border:1px solid var(--acg)}
.td-tier-enterprise{background:rgba(168,85,247,.1);color:#c084fc;border:1px solid rgba(168,85,247,.25)}

/* -- FUNNEL MODE TOGGLE ----------------------------------------- */
.vbtn-tog{padding:5px 8px !important;min-width:auto !important;opacity:.5;transition:opacity .15s,background .15s}
.vbtn-tog:hover{opacity:1}
.vbtn-tog.active{opacity:1;background:rgba(139,92,246,.15);border-color:var(--acg)}
.fv-mode-banner{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--ac);font-family:var(--fm);padding:8px 14px;background:var(--acd);border-bottom:1px solid var(--acg);letter-spacing:.2px;margin-bottom:2px;flex-shrink:0}
.fv-mode-banner em{font-style:italic;color:var(--tx2)}

/* -- PAYWALL / UPGRADE ------------------------------------------ */
.grid-limit-bar{display:flex;align-items:center;gap:8px;font-size:10px;color:var(--tx3);font-family:var(--fm);white-space:nowrap;padding:0 4px}
.btn-upgrade-sm{font-size:10px;font-weight:700;font-family:var(--fm);padding:3px 9px;border-radius:6px;border:1px solid var(--acg);background:var(--acd);color:var(--ac);cursor:pointer;transition:all .12s;white-space:nowrap}
.btn-upgrade-sm:hover{background:var(--ac);color:#fff}
.upgrade-price-block{margin:18px 0 14px;padding:16px;border-radius:14px;background:var(--acd);border:1px solid var(--acg)}
.upb-price{font-size:42px;font-weight:900;color:var(--ac);letter-spacing:-2px;line-height:1}
.upb-price span{font-size:18px;font-weight:500;color:var(--tx3);letter-spacing:0}
.upb-sub{font-size:11px;color:var(--tx3);font-family:var(--fm);margin-top:5px}
.upgrade-features{display:flex;flex-direction:column;gap:7px;margin:14px 0 20px;text-align:left}
.uf{font-size:13px;color:var(--tx2);display:flex;align-items:center;gap:8px}
.uf::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--green);flex-shrink:0}
.pro-badge{display:inline-flex;align-items:center;padding:1px 7px;border-radius:5px;font-size:9px;font-weight:700;font-family:var(--fm);letter-spacing:.5px;background:linear-gradient(135deg,var(--ac),#a855f7);color:#fff;margin-left:6px}

/* -- RENEWAL DATE ----------------------------------------------- */
.nt-renewal-row{display:flex;align-items:center;gap:10px;margin-top:10px;padding-top:10px;border-top:1px solid var(--bd)}
.nt-renewal-label{display:flex;align-items:center;gap:5px;font-size:10px;font-weight:600;font-family:var(--fm);color:var(--tx3);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;flex-shrink:0}
.nt-renewal-val{font-size:12px;color:var(--tx2);font-family:var(--fm)}
.nt-renewal-in{background:var(--bg);border:1px solid var(--bd);border-radius:7px;color:var(--tx);font-family:var(--fm);font-size:11px;padding:5px 9px;cursor:pointer;transition:border-color .15s;flex:1;min-width:0;appearance:none;-webkit-appearance:none}
.nt-renewal-in:hover{border-color:var(--bd2)}
.nt-renewal-in:focus{outline:none;border-color:var(--ac)}
.nt-renewal-in::-webkit-calendar-picker-indicator{filter:invert(.5);cursor:pointer}
[data-theme="light"] .nt-renewal-in::-webkit-calendar-picker-indicator{filter:none}

/* Renewal status badges */
.nt-renewal-badge{display:inline-flex;align-items:center;font-size:9px;font-weight:700;font-family:var(--fm);padding:1px 6px;border-radius:4px;margin-left:7px;letter-spacing:.3px;vertical-align:middle;position:relative;top:-1px}
.nt-renewal-overdue{background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.3);color:#f87171}
.nt-renewal-soon{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.3);color:#fbbf24}
.nt-renewal-ok{background:rgba(34,197,94,.08);border:1px solid rgba(34,197,94,.2);color:#4ade80}
[data-theme="light"] .nt-renewal-overdue{color:#dc2626}
[data-theme="light"] .nt-renewal-soon{color:#b45309}
[data-theme="light"] .nt-renewal-ok{color:#15803d}

/* Grid chip renewal indicator */
.gchip.renewing-soon{border-color:rgba(245,158,11,.4)}
.gchip.renewing-overdue{border-color:rgba(239,68,68,.4)}


/* -- OVERVIEW VIEW ---------------------------------------------- */
.ov-wrap{flex:1;overflow-y:auto;padding:20px 24px 80px;min-height:0}
@media(max-width:700px){.ov-wrap{padding:14px 14px 80px}}
.ov2-inner{max-width:860px;margin:0 auto}
.ov2-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;gap:10px;font-size:13px;color:var(--tx3);text-align:center}

/* Header */
.ov2-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--bd)}
.ov2-title{font-size:18px;font-weight:800;color:var(--tx);letter-spacing:-.3px;margin-bottom:4px}
.ov2-hint{font-size:11px;color:var(--tx3);font-family:var(--fm)}
.ov2-total-badge{font-size:22px;font-weight:800;color:var(--ac);letter-spacing:-1px;white-space:nowrap}
.ov2-total-badge span{font-size:13px;font-weight:500;color:var(--tx3);letter-spacing:0}

/* KPI cards */
.ov2-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
@media(max-width:700px){.ov2-kpis{grid-template-columns:repeat(2,1fr)}}
.ov2-kpi{background:var(--sf);border:1px solid var(--bd);border-radius:14px;padding:14px 16px;position:relative;overflow:hidden;transition:border-color .15s}
.ov2-kpi.warn{border-color:rgba(239,68,68,.3);background:rgba(239,68,68,.03)}
.ov2-kpi.amber{border-color:rgba(245,158,11,.3);background:rgba(245,158,11,.03)}
.ov2-kpi.good{border-color:rgba(34,197,94,.25);background:rgba(34,197,94,.03)}
.ov2-kpi-icon{font-size:18px;margin-bottom:8px;line-height:1}
.ov2-kpi-val{font-size:24px;font-weight:800;color:var(--tx);letter-spacing:-1px;line-height:1;margin-bottom:5px}
.ov2-kpi-val.empty{color:var(--tx3);font-size:20px;letter-spacing:0}
.ov2-kpi-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--tx3);font-family:var(--fm);margin-bottom:4px}
.ov2-kpi-sub{font-size:10px;color:var(--tx3);font-family:var(--fm);line-height:1.5}
.ov2-enter-btn{background:none;border:none;color:var(--ac);font-size:10px;cursor:pointer;font-family:var(--fm);padding:0;text-decoration:none}
.ov2-enter-btn:hover{text-decoration:underline}

/* Revenue strip */
.ov2-rev-strip{display:flex;align-items:center;gap:14px;padding:12px 16px;background:var(--sf);border:1px solid var(--bd);border-radius:12px;margin-bottom:18px;flex-wrap:wrap}
.ov2-rev-strip-label{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--tx3);font-family:var(--fm);text-transform:uppercase;letter-spacing:.5px;flex-shrink:0}
.ov2-rev-strip-input{display:flex;align-items:center;background:var(--bg);border:1px solid var(--bd);border-radius:8px;overflow:hidden;flex-shrink:0}
.ov2-rev-strip-input:focus-within{border-color:var(--ac)}
.ov2-rev-pre,.ov2-rev-suf{padding:7px 9px;font-size:12px;color:var(--tx3);font-family:var(--fm);background:var(--sf2);flex-shrink:0}
.ov2-rev-pre{border-right:1px solid var(--bd)}
.ov2-rev-suf{border-left:1px solid var(--bd)}
.ov2-rev-in{background:transparent;border:none;color:var(--tx);font-family:var(--fm);font-size:13px;font-weight:700;padding:7px 10px;width:120px;outline:none}
.ov2-rev-in::-webkit-inner-spin-button,.ov2-rev-in::-webkit-outer-spin-button{-webkit-appearance:none}
.ov2-rev-strip-arr{font-size:11px;color:var(--tx3);font-family:var(--fm);margin-left:auto}

/* Attribution section */
.ov2-section-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--tx3);font-family:var(--fm);margin-bottom:10px}
.ov2-attr-section{margin-bottom:22px}
.ov2-attr-track{height:8px;border-radius:100px;overflow:hidden;display:flex;background:var(--sf);border:1px solid var(--bd);margin-bottom:12px;gap:1px}
.ov2-attr-seg{height:100%;transition:width .5s ease}
.ov2-attr-pills{display:flex;gap:18px;flex-wrap:wrap}
.ov2-attr-pill-item{display:flex;align-items:center;gap:7px}
.ov2-attr-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.ov2-attr-pill-label{font-size:11px;font-weight:600;color:var(--tx2)}
.ov2-attr-pill-val{font-size:11px;color:var(--tx3);font-family:var(--fm)}
.ov2-attr-pct{opacity:.7}

/* Tool cards */
.ov2-empty-tools{font-size:12px;color:var(--tx3);padding:20px 0}
.ov2-cards{display:flex;flex-direction:column;gap:6px;margin-bottom:20px}
.ov2-card{display:flex;align-items:flex-start;gap:12px;background:var(--sf);border:1px solid var(--bd);border-radius:12px;padding:14px 16px;transition:border-color .15s}
.ov2-card:hover{border-color:var(--bd2)}
.ov2-card-left{flex-shrink:0;padding-top:1px}
.ov2-card-ab{width:34px;height:34px;border-radius:9px;background:var(--bg);border:1px solid var(--bd);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;font-family:var(--fm);letter-spacing:.3px;flex-shrink:0}
.ov2-card-body{flex:1;min-width:0}
.ov2-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.ov2-card-name{font-size:13px;font-weight:700;color:var(--tx);letter-spacing:-.2px}
.ov2-card-badges{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.ov2-cat-badge{font-size:9px;font-weight:600;font-family:var(--fm);padding:2px 7px;border-radius:4px;background:var(--sf2);border:1px solid var(--bd);color:var(--tx3);text-transform:capitalize}
.ov2-attr-tag{font-size:9px;font-weight:600;font-family:var(--fm);padding:2px 7px;border-radius:4px;border:1px solid;white-space:nowrap}
.ov2-card-note{font-size:11px;color:var(--tx3);line-height:1.5;margin-bottom:10px;font-style:italic;padding-left:1px}
.ov2-card-fields{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.ov2-field-group{display:flex;align-items:center;gap:7px}
.ov2-field-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--tx3);font-family:var(--fm);white-space:nowrap;flex-shrink:0}
.ov2-field-val{font-size:12px;color:var(--tx2);font-family:var(--fm)}
.ov2-mrr-val{color:var(--ac);font-weight:600}
.ov2-cost-wrap{display:flex;align-items:center;background:var(--bg);border:1px solid var(--bd);border-radius:7px;overflow:hidden;transition:border-color .15s}
.ov2-cost-wrap:focus-within{border-color:var(--ac)}
.ov2-cost-pre{padding:5px 7px;font-size:11px;color:var(--tx3);font-family:var(--fm);background:var(--sf2);border-right:1px solid var(--bd);flex-shrink:0}
.ov2-cost-in{background:transparent;border:none;color:var(--tx);font-family:var(--fm);font-size:12px;font-weight:700;padding:5px 8px;width:80px;outline:none}
.ov2-cost-in::-webkit-inner-spin-button,.ov2-cost-in::-webkit-outer-spin-button{-webkit-appearance:none}
.ov2-bill-sel{background:var(--bg);border:1px solid var(--bd);border-radius:7px;color:var(--tx2);font-family:var(--fm);font-size:10px;padding:5px 8px;cursor:pointer;outline:none;transition:border-color .15s}
.ov2-bill-sel:focus{border-color:var(--ac)}
.ov2-card-bar-wrap{display:flex;align-items:center;gap:8px;margin-top:10px}
.ov2-card-bar{height:3px;border-radius:100px;background:var(--ac);transition:width .4s ease;flex-shrink:0}
.ov2-card-bar-pct{font-size:9px;color:var(--tx3);font-family:var(--fm)}
.ov2-card-cost{font-size:14px;font-weight:800;color:var(--tx);letter-spacing:-.5px;white-space:nowrap;flex-shrink:0;text-align:right}
.ov2-card-cost span{font-size:10px;font-weight:400;color:var(--tx3);letter-spacing:0}

/* Totals summary card */
.ov2-totals-card{background:var(--sf);border:1px solid var(--bd2);border-radius:12px;padding:14px 18px;display:flex;gap:0;flex-direction:column;gap:8px}
.ov2-totals-row{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--tx3)}
.ov2-totals-row strong{font-size:13px;font-weight:700;color:var(--tx);font-family:var(--fm)}

/* Insights */
.ov2-insights{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}
.ov2-insight{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-radius:12px;border:1px solid var(--bd);background:var(--sf)}
.ov2-ins-warn{border-color:rgba(245,158,11,.25);background:rgba(245,158,11,.04)}
.ov2-ins-good{border-color:rgba(34,197,94,.2);background:rgba(34,197,94,.04)}
.ov2-ins-info{border-color:var(--acg);background:var(--acd)}
.ov2-ins-ic{font-size:17px;flex-shrink:0;margin-top:1px;line-height:1}
.ov2-ins-body{flex:1;min-width:0}
.ov2-ins-title{font-size:12px;font-weight:700;color:var(--tx);margin-bottom:3px}
.ov2-ins-desc{font-size:11px;color:var(--tx3);line-height:1.65}

/* -- COOKIE BANNER ---------------------------------------------- */
.cookie-banner{position:fixed;bottom:0;left:0;right:0;z-index:9000;background:var(--sf);border-top:1px solid var(--bd2);padding:14px 20px;box-shadow:0 -4px 24px rgba(0,0,0,.25)}
.cookie-inner{max-width:960px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.cookie-text{font-size:12px;color:var(--tx2);line-height:1.6;flex:1;min-width:240px}
.cookie-text strong{color:var(--tx);font-weight:700}
.cookie-actions{display:flex;gap:8px;flex-shrink:0}
.cookie-decline{color:var(--tx3) !important;border-color:var(--bd) !important}
@media(max-width:600px){.cookie-inner{flex-direction:column;align-items:flex-start;gap:12px}.cookie-actions{width:100%;justify-content:flex-end}}

/* -- INSIGHT ICON (text-based, no emojis) ----------------------- */
.ov2-ins-ic-txt{width:24px;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;font-family:var(--fm);flex-shrink:0;background:var(--sf2);color:var(--tx3)}
.ov2-ins-warn .ov2-ins-ic-txt{background:rgba(245,158,11,.15);color:#f59e0b}
.ov2-ins-good .ov2-ins-ic-txt{background:rgba(34,197,94,.12);color:var(--green)}
.ov2-ins-info .ov2-ins-ic-txt{background:var(--acd);color:var(--ac)}

/* -- PROCESS STEP NUMBERS (replacing emojis) ------------------- */
.pb-step-icon{width:22px;height:22px;border-radius:5px;background:var(--acd);border:1px solid var(--acg);color:var(--ac);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;font-family:var(--fm);flex-shrink:0}
.pv-step-icon{width:28px;height:28px;border-radius:7px;background:var(--acd);border:1px solid var(--acg);color:var(--ac);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;font-family:var(--fm);flex-shrink:0;text-align:center;line-height:1}

/* ================================================================
   MOBILE OVERHAUL v2 -- unified, intentional, premium
   ================================================================ */

/* -- BOTTOM TAB BAR v2 ------------------------------------------- */
@media(max-width:700px){
  .mob-tab-bar{
    display:flex;
    height:calc(62px + env(safe-area-inset-bottom,0px));
    background:var(--sf);
    border-top:1px solid var(--bd);
    backdrop-filter:blur(24px);
    -webkit-backdrop-filter:blur(24px);
    padding:0 4px;
    padding-bottom:env(safe-area-inset-bottom,0px);
    gap:0;
  }
  .mob-tab{
    flex:1;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:4px;
    border:none;
    background:transparent;
    color:var(--tx3);
    font-family:var(--fm);
    font-size:9px;
    font-weight:600;
    letter-spacing:.2px;
    cursor:pointer;
    padding:8px 4px 6px;
    -webkit-tap-highlight-color:transparent;
    position:relative;
    transition:color .15s;
    min-width:0;
  }
  .mob-tab span{display:block;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:50px}
  .mob-tab svg{width:22px;height:22px;flex-shrink:0;transition:transform .2s,stroke .15s}
  .mob-tab.on{color:var(--ac)}
  .mob-tab.on svg{transform:translateY(-1px)}
  /* Active pill indicator */
  .mob-tab.on::after{
    content:'';
    position:absolute;
    top:0;
    left:50%;
    transform:translateX(-50%);
    width:28px;
    height:3px;
    border-radius:0 0 3px 3px;
    background:var(--ac);
  }
  /* FAB in center */
  .mob-fab-wrap{
    flex:0 0 64px;
    display:flex;
    align-items:center;
    justify-content:center;
    padding-bottom:4px;
  }
  .mob-fab{
    width:50px;
    height:50px;
    border-radius:16px;
    background:var(--ac);
    border:none;
    color:#fff;
    display:flex;
    align-items:center;
    justify-content:center;
    cursor:pointer;
    transition:transform .15s,box-shadow .15s;
    -webkit-tap-highlight-color:transparent;
    box-shadow:0 4px 16px var(--acd);
  }
  .mob-fab:active{transform:scale(.9);box-shadow:0 2px 8px var(--acd)}
  .mob-fab svg{width:24px;height:24px}
  /* Hide old tab-add elements */
  .mob-tab-add-wrap{display:none}
}

/* -- MORE SHEET -------------------------------------------------- */
.mob-more-bg{display:none;position:fixed;inset:0;z-index:290;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.mob-more-bg.on{display:block}
.mob-more-sheet{
  position:fixed;
  left:0;right:0;bottom:0;
  z-index:300;
  background:var(--sf);
  border-radius:22px 22px 0 0;
  border-top:1px solid var(--bd);
  padding:0 16px calc(env(safe-area-inset-bottom,0px) + 20px);
  transform:translateY(100%);
  transition:transform .28s cubic-bezier(.4,0,.2,1);
}
.mob-more-sheet.on{transform:translateY(0)}
.mob-more-handle{width:36px;height:4px;border-radius:2px;background:var(--bd2);margin:14px auto 20px;flex-shrink:0}
.mob-more-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding-bottom:4px}
.mob-more-item{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  padding:14px 8px;
  border-radius:14px;
  background:var(--sf2);
  border:1px solid var(--bd);
  color:var(--tx2);
  font-family:var(--fm);
  font-size:11px;
  font-weight:600;
  cursor:pointer;
  transition:all .15s;
  -webkit-tap-highlight-color:transparent;
  min-height:72px;
}
.mob-more-item:active{transform:scale(.97);background:var(--sf3)}
.mob-more-item.on{color:var(--ac);border-color:var(--acg);background:var(--acd)}
.mob-more-icon{width:40px;height:40px;border-radius:11px;background:var(--bg);border:1px solid var(--bd);display:flex;align-items:center;justify-content:center;transition:all .15s}
.mob-more-item.on .mob-more-icon{background:var(--acd);border-color:var(--acg)}
.mob-more-item.on svg{stroke:var(--ac)}

/* -- APP CHROME -------------------------------------------------- */
@media(max-width:700px){
  /* Universal padding for all views above tab bar */
  .gc-wrap,.fv-wrap,.nv-wrap,.pv-wrap,.ov-wrap{
    padding-bottom:calc(62px + env(safe-area-inset-bottom,0px) + 16px) !important;
  }
  /* App bar */
  .app-bar{height:54px;padding:0 12px;gap:8px}
  .abl{gap:6px;flex:1;min-width:0}
  .gtabs{flex:1;min-width:0;overflow:hidden}
  .gtab{font-size:12px;padding:5px 10px;gap:5px;max-width:140px}
  .gtc{font-size:10px;padding:1px 5px}
  .new-g-btn{padding:7px 10px;font-size:11px;gap:4px;flex-shrink:0}
  .logo-badge{display:none}
  /* Search bar */
  .mob-search-row{padding:8px 12px;border-bottom:1px solid var(--bd)}
  .mob-search-inner{padding:10px 14px;border-radius:14px;border:1px solid var(--bd2);background:var(--sf2)}
  .mob-search-inner input{font-size:16px !important}
  /* Hide desktop elements */
  .vtog,.mob-panel-btn,.abr>.btn,.abr>.dupa,.abr{display:none !important}
}

/* -- GRID VIEW --------------------------------------------------- */
@media(max-width:700px){
  .gc-wrap{padding:12px !important;padding-bottom:calc(62px + env(safe-area-inset-bottom,0px) + 16px) !important}
  .g-top{gap:8px;margin-bottom:12px}
  .stc{padding:10px 12px;border-radius:12px}
  .gc{padding:14px;border-radius:14px}
  .gct{font-size:13px}
  .gchip{padding:6px 10px;font-size:11px;min-height:34px;border-radius:8px}
  .cab{font-size:8px;width:18px;height:18px;border-radius:4px}
  .gcs{font-size:7px;padding:2px 6px}
  .gc-add-btn{padding:8px 12px;font-size:11px;min-height:36px;border-radius:9px;flex-shrink:0}
  .gtools{flex-wrap:wrap;gap:5px;align-items:flex-start}
  .gcn{font-size:8px}
  .gins{font-size:9px;padding:3px 6px;border-radius:5px;margin-top:4px}
}
@media(max-width:380px){
  .g-main{grid-template-columns:1fr}
  .gchip{font-size:10px;padding:5px 8px}
}

/* -- FUNNEL VIEW ------------------------------------------------- */
@media(max-width:700px){
  .fv-wrap{padding:10px 10px !important;padding-bottom:calc(62px + env(safe-area-inset-bottom,0px) + 20px) !important}
  .fv-trap{width:100% !important}
  .fv-body{padding:12px 14px;border-radius:14px}
  .fv-title{font-size:13px}
  .fv-subtitle{font-size:10px}
  .fv-num{font-size:8px;padding:1px 5px}
  .fv-stage{margin-bottom:2px}
  .fv-arrow{margin:-2px 0}
}

/* -- NOTES VIEW -------------------------------------------------- */
@media(max-width:700px){
  .nv-wrap{padding:14px 12px !important;padding-bottom:calc(62px + env(safe-area-inset-bottom,0px) + 16px) !important}
  .nt-card{border-radius:14px;padding:14px}
  .nt-ta{font-size:16px !important;min-height:80px}
  .nt-renewal-in{font-size:16px !important}
  .ov2-cost-in,.ov2-rev-in{font-size:16px !important}
  .ov2-bill-sel{font-size:16px !important}
  .nv-header{display:block}
  .nv-title{font-size:15px}
}

/* -- OVERVIEW VIEW ----------------------------------------------- */
@media(max-width:700px){
  .ov-wrap{padding:12px !important;padding-bottom:calc(62px + env(safe-area-inset-bottom,0px) + 16px) !important}
  .ov2-kpis{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
  .ov2-kpi{padding:12px 14px;border-radius:12px}
  .ov2-kpi-val{font-size:20px}
  .ov2-kpi-icon{font-size:16px;margin-bottom:5px}
  .ov2-kpi-sub{font-size:9px}
  .ov2-total-badge{font-size:18px}
  .ov2-rev-strip{flex-wrap:wrap;gap:10px;padding:12px}
  .ov2-rev-strip-label{font-size:10px}
  .ov2-card{padding:12px}
  .ov2-card-fields{gap:10px;flex-wrap:wrap}
  .ov2-cost-wrap{flex:1;min-width:0}
  .ov2-cost-in{width:100%}
  .ov2-attr-pills{gap:10px}
  .ov2-attr-pill-label{font-size:10px}
  .ov2-attr-pill-val{font-size:10px}
}

/* -- PROCESS VIEW ------------------------------------------------ */
@media(max-width:700px){
  .pv-wrap{padding:12px !important;padding-bottom:calc(62px + env(safe-area-inset-bottom,0px) + 16px) !important}
  .pv-step-head{padding:12px 14px}
  .pv-step-label{font-size:13px}
  .pv-tool{padding:8px 10px;border-radius:9px}
  .pv-tool-name{font-size:12px}
}

/* -- SCORE PANEL (bottom sheet) ---------------------------------- */
@media(max-width:700px){
  .sp{
    position:fixed;
    left:0;right:0;bottom:0;top:auto;
    width:100% !important;
    max-height:82vh;
    border-radius:22px 22px 0 0;
    border-top:1px solid var(--bd);
    border-right:none;
    transform:translateY(100%);
    transition:transform .28s cubic-bezier(.4,0,.2,1);
    z-index:280;
    padding-bottom:calc(env(safe-area-inset-bottom,0px) + 20px);
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
  }
  .sp::before{content:'';display:block;width:36px;height:4px;background:var(--bd2);border-radius:2px;margin:14px auto 6px;flex-shrink:0}
  .sp.mob-open{transform:translateY(0)}
  .sp-backdrop.on{display:block}
  .sc-big{font-size:42px;letter-spacing:-2px}
  .spb{padding:10px 16px}
  .spl{font-size:9px}
  .chip{font-size:10px;padding:3px 8px}
}

/* -- MODALS -- all become bottom sheets --------------------------- */
@media(max-width:640px){
  /* Overlay aligns to bottom */
  .ov,.cell-modal-ov,.tmpl-ov,.stage-ov{align-items:flex-end !important;padding:0 !important}
  /* Bottom sheet shape */
  .modal,.cell-modal,.tmpl-m,.stage-m{
    width:100%;
    max-width:100%;
    border-radius:22px 22px 0 0;
    padding:8px 20px 24px;
    max-height:94vh;
    transform:translateY(44px) !important;
  }
  /* Drag handle on all bottom sheets */
  .modal::before,.cell-modal::before,.tmpl-m::before,.stage-m::before{
    content:'';
    display:block;
    width:36px;
    height:4px;
    background:var(--bd2);
    border-radius:2px;
    margin:0 auto 16px;
  }
  /* Shown state */
  .ov.on .modal,.cell-modal-ov.on .cell-modal,.tmpl-ov.on .tmpl-m,.stage-ov.on .stage-m{
    transform:translateY(0) !important;
  }
  /* Action buttons full width */
  .ma,.tmpl-acts,.stage-acts{flex-direction:column;gap:8px}
  .ma .btn,.tmpl-acts .btn,.stage-acts .btn{width:100%;justify-content:center;padding:14px 16px;font-size:14px;border-radius:13px}
  /* Input sizing -- prevent iOS zoom */
  .fi,.fb-ta,.cm-search,.mob-search-inner input,.nt-ta,.nt-renewal-in,.ov2-cost-in,.ov2-rev-in,.ov2-bill-sel{font-size:16px !important}
  /* Cell modal */
  .cell-modal{max-height:90vh}
  .cm-head{padding:0 16px 14px}
  .cm-body{padding:14px 16px;gap:14px}
  .cm-tool{padding:12px 14px;min-height:56px;border-radius:12px}
  .cmt-ab{width:38px;height:38px;border-radius:10px}
  .cm-close{width:40px;height:40px}
  /* Stage builder */
  .stage-row{padding:12px 14px;min-height:52px;border-radius:12px}
  .stage-name-in{font-size:16px !important}
  .srb{width:36px;height:36px;font-size:15px;border-radius:9px}
  .add-stage-btn{padding:12px 16px;font-size:13px;border-radius:12px;min-height:44px}
  /* Template picker */
  .tcard{padding:16px 14px;min-height:76px;border-radius:12px}
}

/* -- TOOL DRAWER ------------------------------------------------- */
@media(max-width:700px){
  .tool-drawer{
    top:auto !important;
    bottom:0 !important;
    right:0 !important;
    left:0 !important;
    width:100% !important;
    max-width:100% !important;
    border-radius:22px 22px 0 0;
    border-left:none;
    border-top:1px solid var(--bd);
    max-height:90vh;
    transform:translateY(100%) !important;
  }
  .tool-drawer.on{transform:translateY(0) !important}
  .tool-drawer::before{content:'';display:block;width:36px;height:4px;background:var(--bd2);border-radius:2px;margin:14px auto 0;flex-shrink:0}
  .td-head{padding:12px 20px 14px;border-bottom:1px solid var(--bd)}
  .td-body{padding:16px 20px 32px}
}

/* -- HOME PAGE --------------------------------------------------- */
@media(max-width:640px){
  .hero{padding:36px 16px 52px}
  .h-head{font-size:clamp(32px,9vw,52px);letter-spacing:-2px;line-height:.95}
  .h-sub{font-size:14px;line-height:1.65;margin-bottom:28px;padding:0 4px}
  .h-acts{gap:10px;margin-bottom:32px;flex-wrap:wrap;justify-content:center}
  .h-cta{font-size:14px;padding:12px 24px;border-radius:12px}
  .h-stats{gap:0}
  .hst{padding:12px;flex:1}
  .hst-n{font-size:22px}
  .hst-l{font-size:9px}
  .feat-section{padding:0 16px 48px}
  .feat-eyebrow{font-size:9px}
  .feat-grid{gap:8px}
  .fc{padding:14px}
  .fc-t{font-size:13px}
  .fc-d{font-size:11px}
  .ai-card{padding:20px 16px}
}
@media(max-width:400px){
  .h-acts{flex-direction:column;align-items:stretch;width:100%}
  .h-cta{width:100%;justify-content:center}
  .h-head{font-size:clamp(28px,8.5vw,38px);letter-spacing:-1.5px}
}

/* -- MISC MOBILE POLISH ------------------------------------------ */
@media(max-width:700px){
  /* Touch tap states everywhere */
  .gchip:active,.gc-add-btn:active,.rec-chip:active{opacity:.75;transform:scale(.97)}
  .mob-tab:active{opacity:.7}
  .ov2-card:active{background:var(--sf2)}
  .nt-card:active{background:var(--sf2)}
  /* No horizontal scroll */
  #appScreen,body{overflow-x:hidden}
  /* Toasts centered and full width */
  .tdock{bottom:calc(62px + env(safe-area-inset-bottom,0px) + 10px);left:12px;right:12px}
  .toast{width:100%;max-width:100%;justify-content:center;border-radius:12px}
  /* iOS momentum scrolling */
  .gc-wrap,.fv-wrap,.nv-wrap,.pv-wrap,.ov-wrap,.sp,.cell-modal,.tmpl-m,.stage-m,.modal{
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
  }
  /* Cookie banner mobile */
  .cookie-banner{padding:14px 16px}
  .cookie-inner{flex-direction:column;gap:12px;align-items:flex-start}
  .cookie-actions{width:100%;justify-content:flex-end}
  /* Grid limit bar hide on mobile */
  .grid-limit-bar{display:none !important}
  /* Tab labels at smallest sizes */
}
@media(max-width:360px){
  .mob-tab span{font-size:8px}
  .mob-tab svg{width:20px;height:20px}
  .mob-fab{width:44px;height:44px;border-radius:14px}
}

/* -- NOTES BILLING SELECT -- styled to match the UI -------------- */
.nt-bill-wrap{position:relative;flex-shrink:0}
.nt-bill-sel{
  appearance:none;
  -webkit-appearance:none;
  background:var(--bg);
  border:1px solid var(--bd);
  border-radius:7px;
  color:var(--tx2);
  font-family:var(--fm);
  font-size:11px;
  font-weight:600;
  padding:5px 26px 5px 9px;
  cursor:pointer;
  outline:none;
  transition:border-color .15s,color .15s;
  height:32px;
  min-width:88px;
}
.nt-bill-sel:hover{border-color:var(--bd2);color:var(--tx)}
.nt-bill-sel:focus{border-color:var(--ac);color:var(--tx)}
/* Custom chevron arrow */
.nt-bill-wrap::after{
  content:'';
  position:absolute;
  right:9px;
  top:50%;
  transform:translateY(-50%);
  width:0;
  height:0;
  border-left:4px solid transparent;
  border-right:4px solid transparent;
  border-top:4px solid var(--tx3);
  pointer-events:none;
  transition:border-top-color .15s;
}
.nt-bill-wrap:focus-within::after{border-top-color:var(--ac)}
/* Dark mode option background */
.nt-bill-sel option{background:var(--sf);color:var(--tx)}
/* Mobile size */
@media(max-width:700px){.nt-bill-sel{font-size:16px !important;height:40px;padding:8px 30px 8px 10px}}

/* ================================================================
   SIDE NAV -- desktop app navigation
   ================================================================ */

/* -- APP SCREEN LAYOUT WITH SIDENAV ------------------------------ */
/* app.html handles layout */


/* ================================================================
   SIDE NAV + APP.HTML LAYOUT
   ================================================================ */

/* -- BODY LOCK --------------------------------------------------- */
body.app-page {
  height: 100vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

/* -- TOP-LEVEL WRAPPER ------------------------------------------- */
#appWrap {
  display: flex;
  flex-direction: row;
  flex: 1;
  min-height: 0;
  overflow: hidden;
  height: 100%;
}

/* -- SIDE NAV ---------------------------------------------------- */
.sidenav {
  width: 200px;
  min-width: 200px;
  flex-shrink: 0;
  display: none; /* shown via app.html inline style */
  flex-direction: column;
  height: 100%;
  background: var(--sf);
  border-right: 1px solid var(--bd);
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-width: none;
}
.sidenav::-webkit-scrollbar { display: none; }

/* -- SIDE NAV CONTENT -------------------------------------------- */
.sn-top {
  padding: 14px 12px 10px;
  border-bottom: 1px solid var(--bd);
  flex-shrink: 0;
}
.sn-logo {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  text-decoration: none;
  padding: 5px 6px;
  border-radius: 9px;
  transition: background .14s;
  -webkit-tap-highlight-color: transparent;
}
.sn-logo:hover { background: var(--sf2); }
.sn-logo-txt {
  font-family: var(--ff);
  font-weight: 800;
  font-size: 15px;
  color: var(--tx);
  letter-spacing: -.4px;
}
.sn-logo-txt em { color: var(--ac); font-style: normal; }
.sn-section-label {
  font-family: var(--fm);
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--tx3);
  padding: 10px 16px 4px;
  flex-shrink: 0;
}
.sn-nav {
  display: flex;
  flex-direction: column;
  gap: 1px;
  padding: 2px 8px;
  flex-shrink: 0;
}
.sn-item {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 8px 10px;
  border-radius: 9px;
  border: none;
  background: transparent;
  color: var(--tx2);
  font-family: var(--ff);
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  text-decoration: none;
  transition: background .12s, color .12s;
  -webkit-tap-highlight-color: transparent;
  text-align: left;
  width: 100%;
  position: relative;
  white-space: nowrap;
  min-height: 34px;
}
.sn-item svg {
  width: 15px;
  height: 15px;
  flex-shrink: 0;
  color: var(--tx3);
  transition: color .12s;
}
.sn-item:hover { background: var(--sf2); color: var(--tx); }
.sn-item:hover svg { color: var(--tx2); }
.sn-item.on { background: var(--acd); color: var(--ac); font-weight: 600; }
.sn-item.on svg { color: var(--ac); }
.sn-item:active { opacity: .8; }
.sn-item-link { color: var(--tx2); }
.sn-ext-ic { margin-left: auto; opacity: .35; display: flex; align-items: center; }
.sn-item:hover .sn-ext-ic { opacity: .6; }
.sn-badge {
  margin-left: auto;
  font-family: var(--fm);
  font-size: 9px;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 100px;
  background: var(--acd);
  color: var(--ac);
  border: 1px solid var(--acg);
}
.sn-divider { height: 1px; background: var(--bd); margin: 6px 16px; flex-shrink: 0; }
.sn-spacer { flex: 1; min-height: 12px; }
.sn-bottom {
  display: flex;
  flex-direction: column;
  gap: 1px;
  padding: 4px 8px calc(env(safe-area-inset-bottom,0px) + 10px);
  border-top: 1px solid var(--bd);
  flex-shrink: 0;
}
.sn-home-btn { color: var(--tx3); }
.sn-home-btn:hover { color: var(--tx); }
.sn-user-menu .sn-item { justify-content: flex-start; }

/* -- SN-CONTENT (right of sidenav) ------------------------------ */
.sn-content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
}
.sn-content .app-bar {
  padding-top: 0 !important;
  height: 50px !important;
  flex-shrink: 0;
  border-bottom: 1px solid var(--bd);
}
.sn-content .app-body {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  display: flex;
}
.sn-content .sp {
  height: 100%;
  overflow-y: auto;
}
/* View containers fill remaining height */
.sn-content .gc-wrap,
.sn-content .fv-wrap,
.sn-content .nv-wrap,
.sn-content .pv-wrap,
.sn-content .ov-wrap {
  flex: 1;
  min-width: 0;
  min-height: 0;
  height: 100%;
}

/* Desktop: hide view toggle from app-bar (it's in the side nav) */
@media(min-width:861px) {
  .sn-content .vtog { display: none !important; }
  .sn-content .mob-panel-btn { display: none !important; }
  .sn-content .abl { flex: 1; min-width: 0; }
  .sn-content .gtabs { flex: 1; overflow: hidden; min-width: 0; }
}

/* Mobile: sidenav hides, sn-content stacks */
@media(max-width:860px) {
  #appWrap { flex-direction: column; height: auto; }
  .sidenav { display: none !important; }
  .sn-content { height: auto; flex: none; }
  .sn-content .app-body { flex: none; overflow: visible; height: auto; }
  .sn-content .sp { height: auto; }
  .sn-content .gc-wrap,
  .sn-content .fv-wrap,
  .sn-content .nv-wrap,
  .sn-content .pv-wrap,
  .sn-content .ov-wrap { height: auto; flex: none; }
}

/* -- VIEW CONTAINERS: flex participation fix ---------------------- */
/* Views are direct flex children of .app-body */
/* JS sets display:'' (restoring to CSS default) or display:none */
#gridView { display: flex; flex:1; min-width:0; min-height:0; }
#funnelView { display: flex; flex:1; flex-direction:column; align-items:center; min-width:0; min-height:0; }
#notesView { display: flex; flex:1; min-width:0; min-height:0; }
#processView { display: flex; flex:1; min-width:0; min-height:0; }
#overviewView { display: flex; flex:1; min-width:0; min-height:0; }
/* When hidden by JS (display:none), no flex */

/* == SCORE PANEL: overlay by default on app.html (sidenav layout) == */
/* When sidenav is present, sp overlays rather than pushing content */
#appWrap .sp {
  position: absolute;
  left: 200px; /* starts right of sidenav */
  top: 0;
  bottom: 0;
  z-index: 60;
  transform: translateX(-100%);
  opacity: 0;
  pointer-events: none;
  box-shadow: var(--shl);
  width: 260px;
  min-width: 260px;
  transition: transform .28s cubic-bezier(.4,0,.2,1), opacity .2s;
}
#appWrap .sp.mob-open {
  transform: translateX(0);
  opacity: 1;
  pointer-events: all;
}
#appWrap .sp-backdrop.on { display: block; }
@media(max-width:860px) {
  #appWrap .sp { left: 0; }
}

/* == FLOW MAP VIEW == */
.fm-wrap { flex:1; min-width:0; min-height:0; display:flex; overflow:hidden; }
#flowmapView { display:flex; }

.fm-inner { flex:1; display:flex; flex-direction:column; min-height:0; overflow:hidden; }

.fm-toolbar {
  display:flex; align-items:center; justify-content:space-between;
  padding:10px 16px; border-bottom:1px solid var(--bd);
  background:var(--sf); flex-shrink:0; gap:12px; flex-wrap:wrap;
}
.fm-toolbar-left { display:flex; align-items:center; gap:10px; }
.fm-toolbar-right { display:flex; align-items:center; gap:12px; }
.fm-title { font-size:13px; font-weight:700; color:var(--tx); }
.fm-subtitle { font-size:11px; font-weight:400; color:var(--tx3); }
.fm-btn { font-family:var(--fm); font-size:10px; font-weight:600; padding:5px 12px; border-radius:7px; border:1px solid var(--bd2); background:var(--sf2); color:var(--tx3); cursor:pointer; transition:all .14s; text-transform:uppercase; letter-spacing:.4px; }
.fm-btn:hover { color:var(--tx); border-color:var(--bd3); }
.fm-btn-clear:hover { border-color:rgba(239,68,68,.4); color:#f87171; }
.fm-legend { display:flex; align-items:center; gap:6px; font-size:10px; color:var(--tx3); font-family:var(--fm); }
.fm-legend-arrow { display:inline-block; width:28px; height:2px; background:var(--ac); position:relative; opacity:.7; }
.fm-legend-arrow::after { content:''; position:absolute; right:-1px; top:-3px; border:4px solid transparent; border-left-color:var(--ac); }

.fm-canvas-wrap {
  flex:1; position:relative; overflow:auto;
  background:var(--bg);
  background-image: radial-gradient(circle, var(--gdot) 1px, transparent 1px);
  background-size: 24px 24px;
  min-height:0;
  cursor:default;
}
.fm-svg { position:absolute; top:0; left:0; pointer-events:none; overflow:visible; }
.fm-svg .fm-conn path { pointer-events:stroke; }
.fm-nodes { position:absolute; top:0; left:0; }

/* Stage column labels */
.fm-stage-label {
  position:absolute; font-family:var(--fm); font-size:9px; font-weight:700;
  text-transform:uppercase; letter-spacing:.8px; color:var(--tx3);
  border-bottom:1px solid var(--bd); padding-bottom:6px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}

/* Tool nodes */
.fm-node {
  position:absolute; display:flex; align-items:center; gap:8px;
  background:var(--sf); border:1.5px solid var(--bd2); border-radius:10px;
  padding:0 12px; cursor:pointer;
  transition:border-color .15s, box-shadow .15s, transform .1s;
  user-select:none; -webkit-tap-highlight-color:transparent;
  box-sizing:border-box;
}
.fm-node:hover { border-color:var(--ac); box-shadow:0 0 0 3px var(--acd); transform:translateY(-1px); }
.fm-node-connected { border-color:var(--acg); background:var(--acd); }
.fm-node-selecting { border-color:var(--ac) !important; box-shadow:0 0 0 4px var(--acd), 0 0 12px var(--ac); transform:scale(1.04); }
.fm-node-ab { font-family:var(--fm); font-size:9px; font-weight:800; letter-spacing:.3px; flex-shrink:0; }
.fm-node-name { font-size:11px; font-weight:600; color:var(--tx); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* SVG connection label */
.fm-conn-label {
  font-family:var(--fm); font-size:9px; fill:var(--tx3);
  font-weight:600; letter-spacing:.3px;
}

/* Hint bar */
.fm-hint {
  padding:8px 16px; font-size:11px; color:var(--ac); font-family:var(--fm);
  background:var(--acd); border-top:1px solid var(--acg); flex-shrink:0;
  text-align:center; letter-spacing:.2px;
}

/* Empty state */
.fm-empty {
  flex:1; display:flex; flex-direction:column; align-items:center;
  justify-content:center; padding:40px; text-align:center;
}

/* Mobile */
@media(max-width:700px) {
  .fm-toolbar { padding:8px 12px; }
  .fm-subtitle { display:none; }
  .fm-legend { display:none; }
}

/* ================================================================
   GRID VIEW -- MOBILE + BOARDROOM PASS
   Optimized for phones, tablets, and large touchscreens
   ================================================================ */

/* -- TABLET (1024px and below) ---------------------------------- */
@media(max-width:1024px) {
  .g-main { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 9px; }
  .gc-wrap { padding: 16px; }
}

/* -- SMALL TABLET / LARGE PHONE (768px and below) --------------- */
@media(max-width:768px) {
  .gc-wrap { padding: 12px 10px; }
  .g-top { gap: 6px; margin-bottom: 14px; }
  .stc { padding: 10px 14px; border-radius: 10px; }
  .stc-lbl { font-size: 8px; letter-spacing: .6px; }
  .stc-val { font-size: 20px; letter-spacing: -.8px; }
  .stc-sub { font-size: 9px; }
  .g-main { grid-template-columns: 1fr 1fr; gap: 8px; }
  .gct { font-size: 12px; }
  .gcn { font-size: 8px; }
  .gchip { font-size: 10px; padding: 4px 8px; border-radius: 6px; }
  .cab { font-size: 7px; }
  .gins { font-size: 9px; }
}

/* -- PHONE (480px and below) ------------------------------------ */
@media(max-width:480px) {
  .gc-wrap { padding: 10px 8px; }
  .g-top { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; -webkit-overflow-scrolling: touch; }
  .stc { flex: 0 0 auto; min-width: 110px; padding: 10px 12px; }
  .stc-val { font-size: 22px; }
  .g-main { grid-template-columns: 1fr; gap: 8px; }
  .gc { padding: 12px 14px; border-radius: 12px; }
  .gct { font-size: 13px; }
  .gchip { font-size: 11px; padding: 5px 10px; min-height: 32px; border-radius: 8px; max-width: none; }
  .gtools { gap: 5px; }
  .gc-add-btn { width: 100%; justify-content: center; min-height: 40px; font-size: 12px; border-radius: 9px; }
  .gins { font-size: 10px; padding: 5px 0; }
}

/* -- BOARDROOM / PRESENTATION MODE (large touch, 1200px+) -------- */
/* When the app is used on a large screen in a boardroom           */
/* Everything scales up for easy reading across a table            */
@media(min-width:1200px) {
  .gc-wrap { padding: 24px; }
  .g-top { gap: 12px; margin-bottom: 20px; }
  .stc { padding: 14px 20px; border-radius: 12px; }
  .stc-lbl { font-size: 9px; letter-spacing: 1px; }
  .stc-val { font-size: 26px; letter-spacing: -1.5px; }
  .g-main { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
  .gc { padding: 16px 18px; border-radius: 14px; }
  .gct { font-size: 14px; }
  .gcn { font-size: 9px; padding: 2px 7px; }
  .gchip { font-size: 11px; padding: 5px 10px; border-radius: 8px; min-height: 32px; }
  .cab { font-size: 9px; padding: 2px 5px; }
  .gc-add-btn { font-size: 12px; padding: 6px 12px; min-height: 34px; }
  .gcs { font-size: 9px; padding: 4px 10px; }
  .gins { font-size: 10.5px; }
}

/* -- EXTRA LARGE (1440px+) -------------------------------------- */
@media(min-width:1440px) {
  .g-main { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; }
  .gc { padding: 18px 20px; }
  .gchip { font-size: 12px; padding: 5px 11px; min-height: 34px; }
  .gct { font-size: 15px; letter-spacing: -.4px; }
  .stc-val { font-size: 28px; }
}

/* -- TOUCH STATES (all mobile) ---------------------------------- */
@media(hover:none) {
  .gchip:active { border-color: var(--ac); color: var(--tx); background: var(--acd); transform: scale(.97); }
  .gc-add-btn:active { border-color: var(--ac); color: var(--ac); background: var(--acd); }
  .gc:active { border-color: var(--bd3); }
  .stc:active { border-color: var(--bd3); }
}

/* == COMPACT METRIC BAR (replaces tall KPI cards) == */
.g-metric-bar {
  display: flex;
  align-items: center;
  gap: 0;
  margin-bottom: 18px;
  background: var(--sf);
  border: 1px solid var(--bd);
  border-radius: 12px;
  padding: 10px 18px;
  flex-wrap: wrap;
}
.g-metric {
  display: flex;
  align-items: baseline;
  gap: 6px;
  padding: 2px 14px 2px 0;
}
.g-metric:first-child { padding-left: 0; }
.g-metric-val {
  font-family: var(--ff);
  font-size: 22px;
  font-weight: 800;
  letter-spacing: -1px;
  line-height: 1;
  color: var(--tx);
}
.g-metric-val.ac { color: var(--ac); }
.g-metric-val.gr { color: var(--green); }
.g-metric-val.am { color: var(--amber); }
.g-metric-val.re { color: var(--red); }
.g-metric-denom {
  font-size: 13px;
  font-weight: 500;
  color: var(--tx3);
  letter-spacing: 0;
}
.g-metric-lbl {
  font-family: var(--fm);
  font-size: 10px;
  font-weight: 600;
  color: var(--tx3);
  text-transform: uppercase;
  letter-spacing: .5px;
  white-space: nowrap;
}
.g-metric-sep {
  width: 1px;
  height: 28px;
  background: var(--bd2);
  margin: 0 14px 0 0;
  flex-shrink: 0;
}

/* Responsive metric bar */
@media(max-width:600px) {
  .g-metric-bar { padding: 8px 14px; gap: 0; }
  .g-metric-val { font-size: 18px; }
  .g-metric-lbl { font-size: 9px; }
  .g-metric-sep { margin: 0 10px 0 0; }
}
@media(min-width:1200px) {
  .g-metric-val { font-size: 24px; }
  .g-metric-bar { padding: 12px 22px; margin-bottom: 20px; }
}

/* == SIDENAV FUNNEL MODE TOGGLE == */
.sn-funnel-tog {
  margin-left: auto;
  width: 22px;
  height: 22px;
  border-radius: 6px;
  border: 1px solid var(--bd);
  background: var(--sf2);
  color: var(--tx3);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  transition: all .14s;
  padding: 0;
}
.sn-funnel-tog:hover { border-color: var(--ac); color: var(--ac); background: var(--acd); }
.sn-funnel-tog.active { border-color: var(--ac); color: var(--ac); background: var(--acd); }

/* ================================================================
   GRID VIEW REDESIGN
   ================================================================ */

/* Empty state */
.gc-empty { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; text-align:center; padding:40px; }
.gc-empty-title { font-size:15px; font-weight:700; color:var(--tx2); }

/* Read-only banner */
.gc-ro-banner { display:flex; align-items:center; gap:8px; margin-bottom:14px; background:rgba(139,92,246,.07); border:1px solid rgba(139,92,246,.2); border-radius:10px; padding:10px 14px; font-size:11.5px; color:#c084fc; flex-shrink:0; }

/* Onboarding hint */
.gc-onboard { display:flex; align-items:center; gap:12px; padding:12px 16px; background:var(--sf); border:1px dashed var(--bd2); border-radius:12px; margin-bottom:16px; }
.gc-onboard-ic { width:40px; height:40px; border-radius:10px; background:var(--acd); border:1px solid var(--acg); display:flex; align-items:center; justify-content:center; color:var(--ac); flex-shrink:0; }
.gc-onboard-title { font-size:13px; font-weight:700; color:var(--tx); margin-bottom:2px; }
.gc-onboard-sub { font-size:11px; color:var(--tx3); }

/* Metric bar */
.gc-metric-bar { display:flex; align-items:center; gap:0; margin-bottom:16px; background:var(--sf); border:1px solid var(--bd); border-radius:12px; padding:10px 18px; flex-shrink:0; flex-wrap:wrap; row-gap:8px; }
.gc-metric { display:flex; align-items:baseline; gap:5px; padding-right:0; }
.gc-metric-n { font-family:var(--ff); font-size:22px; font-weight:800; letter-spacing:-1px; line-height:1; color:var(--tx); }
.gc-metric-n.ac { color:var(--ac); } .gc-metric-n.gr { color:var(--green); } .gc-metric-n.am { color:var(--amber); } .gc-metric-n.re { color:var(--red); }
.gc-metric-d { font-size:13px; font-weight:500; color:var(--tx3); letter-spacing:0; }
.gc-metric-l { font-family:var(--fm); font-size:10px; font-weight:600; color:var(--tx3); text-transform:uppercase; letter-spacing:.5px; white-space:nowrap; }
.gc-metric-div { width:1px; height:26px; background:var(--bd2); margin:0 16px; flex-shrink:0; }
.gc-metric-edit { margin-left:auto; display:flex; align-items:center; gap:5px; font-family:var(--fm); font-size:10px; font-weight:600; color:var(--tx3); background:transparent; border:1px solid var(--bd); border-radius:7px; padding:4px 10px; cursor:pointer; transition:all .14s; text-transform:uppercase; letter-spacing:.4px; }
.gc-metric-edit:hover { color:var(--tx); border-color:var(--bd3); }

/* Stage subtitle */
.gc-subtitle { font-size:9px; color:var(--tx3); font-family:var(--fm); letter-spacing:.3px; margin-top:1px; }

/* Stage chip redesign */
.gc-chip { display:inline-flex; align-items:center; gap:5px; padding:5px 10px; border-radius:8px; font-size:11px; font-weight:600; background:var(--sf2); border:1px solid var(--bd2); color:var(--tx2); cursor:pointer; transition:all .13s; position:relative; white-space:nowrap; max-width:180px; overflow:hidden; }
.gc-chip:hover { border-color:var(--ac); color:var(--tx); background:var(--acd); transform:translateY(-1px); box-shadow:0 2px 8px rgba(0,0,0,.15); }
.gc-chip:active { transform:translateY(0); }
.gc-chip-name { overflow:hidden; text-overflow:ellipsis; }
.gc-chip-renewal { width:6px; height:6px; border-radius:50%; flex-shrink:0; }
.gc-chip-renewal-soon { background:var(--amber); }
.gc-chip-renewal-overdue { background:var(--red); }
.gc-chip-warn { font-family:var(--fm); font-size:8px; font-weight:800; color:var(--amber); background:rgba(245,158,11,.15); border-radius:3px; padding:1px 3px; line-height:1; flex-shrink:0; }
.gc-chip.noted { border-color:var(--acg); }

/* -- CONTEXT MENU ------------------------------------------------ */
.gc-ctx-menu { position:fixed; z-index:9999; background:var(--sf2); border:1px solid var(--bd2); border-radius:12px; padding:6px; box-shadow:0 8px 32px rgba(0,0,0,.35); min-width:190px; backdrop-filter:blur(12px); }
.gc-ctx-tool-name { font-family:var(--fm); font-size:10px; font-weight:700; color:var(--tx3); text-transform:uppercase; letter-spacing:.5px; padding:4px 10px 8px; border-bottom:1px solid var(--bd); margin-bottom:4px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gc-ctx-item { display:flex; align-items:center; gap:9px; width:100%; padding:8px 10px; border-radius:8px; border:none; background:transparent; color:var(--tx2); font-family:var(--ff); font-size:12px; font-weight:500; cursor:pointer; transition:all .1s; text-align:left; }
.gc-ctx-item:hover { background:var(--sf3); color:var(--tx); }
.gc-ctx-item svg { flex-shrink:0; opacity:.7; }
.gc-ctx-sep { height:1px; background:var(--bd); margin:4px 0; }
.gc-ctx-danger:hover { background:rgba(239,68,68,.1); color:#f87171; }

/* -- QUICK NOTE DRAWER ------------------------------------------- */
.qn-overlay { position:fixed; inset:0; z-index:200; background:rgba(0,0,0,.4); opacity:0; pointer-events:none; transition:opacity .25s; backdrop-filter:blur(2px); }
.qn-overlay.on { opacity:1; pointer-events:all; }
.qn-drawer { position:fixed; right:0; top:0; bottom:0; z-index:201; width:360px; max-width:96vw; background:var(--sf); border-left:1px solid var(--bd2); display:flex; flex-direction:column; transform:translateX(100%); transition:transform .3s cubic-bezier(.4,0,.2,1); box-shadow:-8px 0 40px rgba(0,0,0,.3); }
.qn-drawer.on { transform:translateX(0); }
.qn-header { display:flex; align-items:center; justify-content:space-between; padding:18px 20px; border-bottom:1px solid var(--bd); flex-shrink:0; }
.qn-tool-info { display:flex; align-items:center; gap:12px; min-width:0; }
.qn-tool-ab { width:38px; height:38px; border-radius:10px; display:flex; align-items:center; justify-content:center; font-family:var(--fm); font-size:11px; font-weight:800; flex-shrink:0; }
.qn-tool-name { font-size:14px; font-weight:700; color:var(--tx); margin-bottom:2px; }
.qn-tool-cat { font-size:11px; color:var(--tx3); font-family:var(--fm); }
.qn-close { width:30px; height:30px; border-radius:8px; border:1px solid var(--bd); background:transparent; color:var(--tx3); cursor:pointer; font-size:14px; display:flex; align-items:center; justify-content:center; transition:all .12s; flex-shrink:0; }
.qn-close:hover { background:var(--sf2); color:var(--tx); }
.qn-body { flex:1; overflow-y:auto; padding:20px; display:flex; flex-direction:column; gap:16px; }
.qn-field { display:flex; flex-direction:column; gap:6px; }
.qn-field-half { flex:1; }
.qn-row { display:flex; gap:12px; }
.qn-label { font-family:var(--fm); font-size:10px; font-weight:700; color:var(--tx3); text-transform:uppercase; letter-spacing:.6px; }
.qn-ta { width:100%; min-height:140px; resize:vertical; background:var(--sf2); border:1px solid var(--bd2); border-radius:10px; padding:12px 14px; font-family:var(--ff); font-size:13px; color:var(--tx); line-height:1.6; transition:border-color .15s; box-sizing:border-box; }
.qn-ta:focus { outline:none; border-color:var(--ac); box-shadow:0 0 0 3px var(--acd); }
.qn-ta::placeholder { color:var(--tx4); }
.qn-cost-wrap { display:flex; align-items:center; background:var(--sf2); border:1px solid var(--bd2); border-radius:10px; overflow:hidden; transition:border-color .15s; }
.qn-cost-wrap:focus-within { border-color:var(--ac); box-shadow:0 0 0 3px var(--acd); }
.qn-cost-pre { padding:0 10px; font-family:var(--fm); font-size:12px; color:var(--tx3); font-weight:600; border-right:1px solid var(--bd2); background:var(--sf3); height:38px; display:flex; align-items:center; }
.qn-cost-in { flex:1; background:transparent; border:none; outline:none; padding:8px 12px; font-family:var(--ff); font-size:13px; color:var(--tx); }
.qn-save-row { padding-top:4px; display:flex; gap:8px; }
@media(max-width:480px) { .qn-drawer { width:100vw; } }

/* -- FLOW MAP: DRAG ---------------------------------------------- */
.fm-node-dragging { cursor:grabbing !important; opacity:.9; box-shadow:0 8px 32px rgba(0,0,0,.4); z-index:100; }
.fm-node-noted::after { content:''; position:absolute; top:6px; right:6px; width:6px; height:6px; border-radius:50%; background:var(--ac); }
.fm-node-body { flex:1; min-width:0; display:flex; align-items:center; gap:6px; }
.fm-node-note-dot { width:6px; height:6px; border-radius:50%; background:var(--ac); flex-shrink:0; }
.fm-connect-btn { width:22px; height:22px; border-radius:6px; border:1px solid var(--bd2); background:var(--sf2); color:var(--tx3); display:flex; align-items:center; justify-content:center; cursor:pointer; flex-shrink:0; transition:all .13s; padding:0; margin-left:auto; }
.fm-connect-btn:hover { border-color:var(--ac); color:var(--ac); background:var(--acd); }

/* Responsive metric bar */
@media(max-width:640px) {
  .gc-metric-bar { padding:8px 14px; }
  .gc-metric-n { font-size:18px; }
  .gc-metric-div { margin:0 10px; height:20px; }
  .gc-metric-edit { display:none; }
}

/* == FLOW MAP CONNECTION DIALOG == */
.fm-conn-dialog {
  background: var(--sf2);
  border: 1px solid var(--bd2);
  border-radius: 14px;
  padding: 18px;
  width: 370px;
  max-width: calc(100vw - 32px);
  box-shadow: 0 16px 48px rgba(0,0,0,.45);
  backdrop-filter: blur(12px);
}
.fm-cd-title {
  display: flex; align-items: center; gap: 7px;
  font-size: 12px; font-weight: 700; color: var(--tx); margin-bottom: 14px;
  font-family: var(--fm); text-transform: uppercase; letter-spacing: .5px;
}
.fm-cd-route {
  display: flex; align-items: center; gap: 8px;
  background: var(--sf3); border: 1px solid var(--bd);
  border-radius: 9px; padding: 8px 12px; margin-bottom: 14px; overflow: hidden;
}
.fm-cd-tool {
  font-size: 11px; font-weight: 700; color: var(--tx);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; min-width: 0;
}
.fm-cd-section { margin-bottom: 14px; }
.fm-cd-label { font-family: var(--fm); font-size: 10px; font-weight: 700; color: var(--tx3); text-transform: uppercase; letter-spacing: .5px; margin-bottom: 6px; }
.fm-cd-opt { font-weight: 400; text-transform: none; letter-spacing: 0; }
.fm-cd-input {
  width: 100%; background: var(--sf); border: 1px solid var(--bd2); border-radius: 8px;
  padding: 8px 12px; font-family: var(--ff); font-size: 12px; color: var(--tx);
  box-sizing: border-box; transition: border-color .14s;
}
.fm-cd-input:focus { outline: none; border-color: var(--ac); box-shadow: 0 0 0 3px var(--acd); }
.fm-cd-sides { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.fm-cd-side-group { }
.fm-cd-sublabel { font-family: var(--fm); font-size: 9px; font-weight: 600; color: var(--tx3); text-transform: uppercase; letter-spacing: .4px; margin-bottom: 5px; }
.fm-cd-sublabel em { font-style: normal; color: var(--ac); }
.fm-cd-side-btns { display: flex; gap: 4px; flex-wrap: wrap; }
.fm-cd-side {
  font-family: var(--fm); font-size: 10px; font-weight: 600; padding: 4px 10px;
  border-radius: 6px; border: 1px solid var(--bd2); background: var(--sf); color: var(--tx3);
  cursor: pointer; transition: all .12s; text-transform: uppercase; letter-spacing: .3px;
}
.fm-cd-side:hover { border-color: var(--ac); color: var(--ac); }
.fm-cd-side.active { border-color: var(--ac); background: var(--acd); color: var(--ac); }
.fm-cd-actions { display: flex; gap: 8px; justify-content: flex-end; }

/* Auto-map legend */
.fml-auto { color: var(--tx3); font-family: var(--fm); font-size: 9px; letter-spacing: .4px; }
.fm-btn-auto { color: var(--ac); border-color: var(--acg); }
.fm-btn-auto:hover { background: var(--acd); }

/* ================================================================
   FUNNEL VIEW: END-TO-END WITH INLINE TOGGLE
   ================================================================ */

/* Section wrappers */
.fv-section { display: flex; flex-direction: column; align-items: center; width: 100%; }

/* Section header labels */
.fv-section-label {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--fm); font-size: 9px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 1px;
  padding: 4px 12px; border-radius: 100px;
  margin-bottom: 12px; margin-top: 4px;
}
.fv-label-acquire {
  color: var(--ac); background: var(--acd); border: 1px solid var(--acg);
}
.fv-label-deliver {
  color: var(--green); background: rgba(34,197,94,.08); border: 1px solid rgba(34,197,94,.2);
}

/* Junction between acquire and deliver */
.fv-junction {
  display: flex; align-items: center; gap: 12px;
  width: 100%; max-width: 520px; padding: 16px 0 20px;
  flex-shrink: 0;
}
.fv-junction-line {
  flex: 1; height: 1px;
  background: linear-gradient(90deg, transparent, var(--bd2), transparent);
}
.fv-junction-btn {
  display: flex; align-items: center; gap: 7px;
  font-family: var(--fm); font-size: 10px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .5px;
  padding: 7px 16px; border-radius: 100px;
  border: 1px solid var(--bd2); background: var(--sf2); color: var(--tx3);
  cursor: pointer; transition: all .18s; white-space: nowrap;
  flex-shrink: 0;
}
.fv-junction-btn:hover {
  border-color: var(--green); color: var(--green);
  background: rgba(34,197,94,.08);
}
.fv-junction-btn.active {
  border-color: var(--green); color: var(--green);
  background: rgba(34,197,94,.1);
}
.fv-junction-btn svg { flex-shrink: 0; }

/* Deliver section fade-in */
.fv-section-deliver { animation: fup .35s ease both; }

/* Mobile: narrower min width */
@media(max-width:600px) {
  .fv-junction { max-width: 100%; padding: 12px 0 16px; }
  .fv-junction-btn { font-size: 9px; padding: 6px 12px; }
  .fv-section-label { font-size: 8px; }
}

/* == ROI CHART == */
.ov2-chart-section {
  background: var(--sf);
  border: 1px solid var(--bd);
  border-radius: 14px;
  padding: 18px 20px;
  margin-bottom: 20px;
}
.ov2-chart-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 16px;
}
.ov2-chart-total {
  font-family: var(--ff); font-size: 18px; font-weight: 800;
  color: var(--tx); letter-spacing: -.5px;
}
.ov2-chart-total span { font-size: 11px; font-weight: 500; color: var(--tx3); letter-spacing: 0; }
.ov2-chart { display: flex; flex-direction: column; gap: 8px; }
.ov2-chart-row {
  display: grid;
  grid-template-columns: 160px 1fr 80px;
  align-items: center;
  gap: 10px;
}
.ov2-chart-label {
  display: flex; align-items: center; gap: 7px; min-width: 0;
}
.ov2-chart-ab {
  font-family: var(--fm); font-size: 8px; font-weight: 800;
  padding: 2px 5px; border-radius: 4px; flex-shrink: 0; letter-spacing: .2px;
}
.ov2-chart-name {
  font-size: 11px; font-weight: 600; color: var(--tx2);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ov2-chart-bar-wrap {
  height: 8px; background: var(--sf3); border-radius: 100px; overflow: hidden;
}
.ov2-chart-bar {
  height: 100%; border-radius: 100px;
  transition: width .6s cubic-bezier(.4,0,.2,1);
}
.ov2-chart-val {
  display: flex; flex-direction: column; align-items: flex-end; gap: 1px;
}
.ov2-chart-mrr {
  font-family: var(--fm); font-size: 11px; font-weight: 700; color: var(--tx);
}
.ov2-chart-share {
  font-family: var(--fm); font-size: 9px; color: var(--tx3);
}
.ov2-chart-uncosted {
  margin-top: 10px; font-size: 11px; color: var(--tx3); text-align: center;
  padding: 8px; border-top: 1px solid var(--bd);
}
.ov2-chart-add-costs {
  background: none; border: none; color: var(--ac); font-size: 11px;
  cursor: pointer; text-decoration: underline; padding: 0;
}
@media(max-width:600px) {
  .ov2-chart-row { grid-template-columns: 110px 1fr 70px; gap: 8px; }
  .ov2-chart-name { font-size: 10px; }
}

/* ── PROCESS VIEW ─────────────────────────────────── */
.pv-wrap{display:flex;flex:1;min-width:0;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}
.pv-inner{max-width:700px;margin:0 auto;padding:24px 20px 60px;width:100%}
.pv-inner.pv-multi{max-width:none;width:100%}
.pv-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 20px;color:var(--tx3)}
.pv-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:12px;flex-wrap:wrap}
.pv-header-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pv-header-right{display:flex;align-items:center;gap:8px;flex-shrink:0}
.pv-header-count{font-family:var(--fm);font-size:10px;font-weight:600;color:var(--tx3);background:var(--sf2);border:1px solid var(--bd);border-radius:20px;padding:2px 9px}
.pv-type-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:100px;background:var(--acd);border:1px solid var(--acg);color:var(--ac);font-size:11px;font-weight:700;cursor:pointer;transition:all .14s;letter-spacing:-.1px;max-width:180px}
.pv-type-badge:hover{filter:brightness(1.1);box-shadow:0 0 0 3px var(--acd)}
.pv-type-icon{display:flex;align-items:center;flex-shrink:0}
.pv-type-name{font-family:var(--ff);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-title{font-size:16px;font-weight:800;color:var(--tx);letter-spacing:-.4px}
.pv-grid-name{font-size:11px;font-weight:500;color:var(--tx3);font-family:var(--fm)}

/* Multi-process lanes */
.pv-lanes{display:flex;flex-direction:row;gap:16px;align-items:flex-start;overflow-x:auto;padding-bottom:20px;min-height:200px}
.pv-lane{flex:1;min-width:260px;max-width:380px;display:flex;flex-direction:column}
.pv-lane-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--sf);border:1px solid var(--bd);border-radius:12px 12px 0 0;gap:8px;position:sticky;top:0;z-index:1}
.pv-lane-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}
.pv-lane-edit{padding:4px 8px!important}
.pv-lane-del{width:26px;height:26px;border-radius:7px;background:transparent;border:1px solid var(--bd);color:var(--tx3);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s}
.pv-lane-del:hover{background:var(--red);border-color:var(--red);color:#fff}
.pv-lane-arrow{display:flex;justify-content:center;padding:2px 0;color:var(--tx4);opacity:.4}
.pv-lane-empty{padding:20px;text-align:center;background:var(--sf);border:1px solid var(--bd);border-top:none;border-radius:0 0 12px 12px}

/* Step cards within lanes */
.pv-step{width:100%}
.pv-step-head{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--sf);border:1px solid var(--bd);border-top:none;transition:border-color .15s}
.pv-lane .pv-step:first-child .pv-step-head{border-top:1px solid var(--bd)}
.pv-step-head.has-tools{border-color:var(--bd2)}
.pv-step-head.no-tools{border-color:rgba(245,158,11,.18);background:rgba(245,158,11,.02)}
.pv-step-icon{font-family:var(--fm);font-size:11px;font-weight:800;color:var(--ac);background:var(--acd);border:1px solid var(--acg);width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:-.2px}
.pv-step-info{flex:1;min-width:0}
.pv-step-label{font-size:12px;font-weight:700;color:var(--tx);letter-spacing:-.2px}
.pv-step-desc{font-size:9px;color:var(--tx3);margin-top:1px;font-family:var(--fm);letter-spacing:.2px}
.pv-step-count{font-family:var(--fm);font-size:11px;font-weight:800;color:var(--ac);background:var(--acd);border:1px solid var(--acg);min-width:24px;height:24px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0 4px}
.pv-step-count.empty{color:var(--tx4);background:var(--sf3);border-color:var(--bd)}
.pv-step-tools{padding:8px 12px 10px;background:var(--sf);border:1px solid var(--bd);border-top:none;display:flex;flex-direction:column;gap:5px}
.pv-lane .pv-step:last-child .pv-step-tools{border-radius:0 0 12px 12px}
.pv-tool{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:9px;background:var(--sf2);border:1px solid var(--bd2);cursor:pointer;transition:all .14s}
.pv-tool:hover{border-color:var(--ac);background:var(--acd)}
.pv-tool-ab{font-family:var(--fm);font-size:9px;font-weight:800;width:28px;height:28px;border-radius:7px;background:var(--sf3);border:1px solid var(--bd);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pv-tool-info{flex:1;min-width:0}
.pv-tool-name{font-size:11px;font-weight:700;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-tool-cat{font-family:var(--fm);font-size:8px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.4px;margin-top:1px}
.pv-tool-note{font-size:9px;color:var(--ac);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-note-dot{width:6px;height:6px;border-radius:50%;background:var(--ac);flex-shrink:0}
.pv-no-tools{width:100%;text-align:center;padding:10px 0}
.pv-no-tools-msg{font-size:10px;color:var(--tx4);font-family:var(--fm)}
.pv-arrow{display:flex;justify-content:center;padding:4px 0;color:var(--bd2)}
.pv-outcomes{display:flex;gap:10px;margin-top:24px;max-width:600px;width:100%;margin-left:auto;margin-right:auto}
.pv-outcome{flex:1;padding:14px 16px;border-radius:12px;text-align:center}
.pv-outcome.win{background:rgba(34,197,94,.05);border:1px solid rgba(34,197,94,.2)}
.pv-outcome.loss{background:rgba(239,68,68,.04);border:1px solid rgba(239,68,68,.15)}
.pv-outcome-icon{font-size:18px;font-weight:800;margin-bottom:4px}
.pv-outcome.win .pv-outcome-icon{color:var(--green)}
.pv-outcome.loss .pv-outcome-icon{color:var(--red)}
.pv-outcome-label{font-family:var(--fm);font-size:9px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;margin-bottom:8px}
.pv-outcome.win .pv-outcome-label{color:var(--green)}
.pv-outcome.loss .pv-outcome-label{color:var(--red)}
.pv-outcome-tools{display:flex;flex-wrap:wrap;gap:4px;justify-content:center}
.pv-mini-chip{font-family:var(--fm);font-size:9px;font-weight:700;padding:2px 6px;border-radius:5px;background:var(--sf2);border:1px solid var(--bd)}

/* Duplicate chip flag */
.chip-dup-flag{font-family:var(--fm);font-size:8px;font-weight:800;color:var(--amber);background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.3);border-radius:4px;padding:0 3px;margin-left:3px;vertical-align:middle}

/* Process builder */
.pb-step-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--sf2);border:1px solid var(--bd);border-radius:10px;margin-bottom:4px}
.pb-drag-handle{cursor:grab;color:var(--tx4);font-size:12px;flex-shrink:0;user-select:none}
.pb-step-icon{font-family:var(--fm);font-size:10px;font-weight:800;color:var(--ac);flex-shrink:0}
.pb-step-label{flex:1;font-size:12px;font-weight:600;color:var(--tx)}
.pb-toggle{width:36px;height:20px;border-radius:100px;background:var(--sf3);border:1px solid var(--bd2);cursor:pointer;position:relative;transition:all .2s;flex-shrink:0}
.pb-toggle.on{background:var(--ac);border-color:var(--ac)}
.pb-toggle-dot{width:14px;height:14px;border-radius:50%;background:#fff;position:absolute;top:2px;left:2px;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.pb-toggle.on .pb-toggle-dot{transform:translateX(16px)}

@media(max-width:640px){
  .pv-inner{padding:16px 12px 80px}
  .pv-header{flex-direction:column;align-items:flex-start;gap:10px}
  .pv-tool{min-width:140px}
  .pv-step-head{padding:12px 14px;gap:10px}
  .pv-step-tools{padding:10px 14px 14px}
  .pv-outcomes{flex-direction:column}
}

/* ═══════════════════════════════════════════════════════════════
   GRID52 UI OVERHAUL — Icons, Flow Map, Global Polish
   ═══════════════════════════════════════════════════════════════ */

/* ── Lucide icon sizing standardization ─────────────────── */
[data-lucide] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
svg[data-lucide] { display: block; }
.ic-xs { width: 12px; height: 12px; }
.ic-sm { width: 14px; height: 14px; }
.ic-md { width: 16px; height: 16px; }
.ic-lg { width: 18px; height: 18px; }
.ic-xl { width: 20px; height: 20px; }

/* ── Sidenav icon alignment ──────────────────────────────── */
.sn-item svg, .sn-item [data-lucide] {
  width: 15px; height: 15px;
  flex-shrink: 0;
  color: var(--tx3);
  transition: color .12s;
}
.sn-item:hover svg, .sn-item:hover [data-lucide] { color: var(--tx2); }
.sn-item.on svg, .sn-item.on [data-lucide] { color: var(--ac); }

/* ── App bar button icons ────────────────────────────────── */
.btn svg, .btn [data-lucide] {
  width: 13px; height: 13px; flex-shrink: 0;
}
.btn-sm svg, .btn-sm [data-lucide] {
  width: 12px; height: 12px;
}

/* ── vbtn icons ──────────────────────────────────────────── */
.vbtn svg, .vbtn [data-lucide] {
  width: 13px; height: 13px;
}

/* ═══════════════════════════════════════════════════════════════
   FLOW MAP — COMPLETE REDESIGN
   Bigger nodes, better spacing, cleaner toolbar, proper mobile
   ═══════════════════════════════════════════════════════════════ */

/* ── Flow map container ──────────────────────────────────── */
.fm-wrap {
  flex: 1; min-width: 0; min-height: 0;
  display: flex; overflow: hidden;
  background: var(--bg);
}
.fm-inner {
  display: flex; flex-direction: column;
  flex: 1; min-height: 0; overflow: hidden;
}

/* ── Topbar complete rewrite ─────────────────────────────── */
.fm-topbar {
  flex-direction: column !important;
  height: auto !important;
  padding: 0 !important;
  border-bottom: 1px solid var(--bd) !important;
  background: var(--sf) !important;
  flex-shrink: 0;
}
.fm-topbar-row1 {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 12px; border-bottom: 1px solid var(--bd);
  min-height: 46px; flex-wrap: nowrap; overflow: hidden;
}
.fm-topbar-row2 {
  display: flex; align-items: center; gap: 4px;
  padding: 4px 12px; min-height: 34px;
  background: var(--sf2); overflow-x: auto;
  scrollbar-width: none;
}
.fm-topbar-row2::-webkit-scrollbar { display: none; }

/* ── Mode switcher ───────────────────────────────────────── */
.fm-mode-switcher {
  display: flex;
  background: var(--bg); border: 1px solid var(--bd);
  border-radius: 8px; padding: 2px; gap: 1px; flex-shrink: 0;
}
.fm-mode-btn {
  display: flex; align-items: center; gap: 4px;
  font-family: var(--fm); font-size: 10px; font-weight: 700;
  padding: 4px 10px; border-radius: 6px; border: none;
  background: transparent; color: var(--tx3); cursor: pointer;
  transition: all .12s; white-space: nowrap; flex-shrink: 0;
  letter-spacing: .2px;
}
.fm-mode-btn svg, .fm-mode-btn [data-lucide] { width: 11px; height: 11px; }
.fm-mode-btn:hover { color: var(--tx); background: var(--sf); }
.fm-mode-btn.active {
  background: var(--ac); color: #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,.2);
}

/* ── Overlay pills ───────────────────────────────────────── */
.fm-ov-btn {
  font-family: var(--fm); font-size: 10px; font-weight: 600;
  padding: 3px 9px; border-radius: 6px;
  border: 1px solid transparent;
  background: transparent; color: var(--tx4);
  cursor: pointer; transition: all .12s; white-space: nowrap;
  letter-spacing: .2px;
}
.fm-ov-btn:hover { color: var(--tx2); border-color: var(--bd); background: var(--sf); }
.fm-ov-btn.active { color: var(--tx); border-color: var(--bd2); background: var(--sf); }

/* ── Zoom ────────────────────────────────────────────────── */
.fm-zoom-ctrl {
  display: flex; align-items: center; gap: 1px;
  background: var(--bg); border: 1px solid var(--bd);
  border-radius: 8px; padding: 2px; flex-shrink: 0;
}
.fm-zoom-btn {
  width: 26px; height: 26px; border-radius: 5px; border: none;
  background: transparent; color: var(--tx3); cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all .12s;
}
.fm-zoom-btn svg, .fm-zoom-btn [data-lucide] { width: 12px; height: 12px; }
.fm-zoom-btn:hover { background: var(--sf2); color: var(--tx); }
.fm-zoom-val {
  font-family: var(--fm); font-size: 10px; font-weight: 700;
  color: var(--tx3); min-width: 34px; text-align: center;
  user-select: none;
}

/* ── Pill buttons (row 2) ────────────────────────────────── */
.fm-pill-btn {
  display: flex; align-items: center; gap: 4px;
  font-family: var(--fm); font-size: 9px; font-weight: 700;
  padding: 3px 8px; border-radius: 5px; border: 1px solid transparent;
  background: transparent; color: var(--tx3); cursor: pointer;
  transition: all .12s; white-space: nowrap; height: 24px;
  letter-spacing: .2px;
}
.fm-pill-btn svg, .fm-pill-btn [data-lucide] { width: 11px; height: 11px; }
.fm-pill-btn:hover { background: var(--sf); color: var(--tx); border-color: var(--bd); }
.fm-pill-btn.active {
  background: var(--sf); color: var(--tx); border-color: var(--bd2);
}
.fm-pill-btn-accent { color: var(--ac) !important; }
.fm-pill-btn-accent:hover { background: var(--acd) !important; border-color: var(--acg) !important; }
.fm-pill-btn-danger:hover { background: rgba(239,68,68,.08) !important; color: #f87171 !important; border-color: rgba(239,68,68,.3) !important; }
.fm-topbar-sep { width: 1px; height: 16px; background: var(--bd2); flex-shrink: 0; }
.fm-icon-btn {
  width: 28px; height: 28px; border-radius: 7px;
  border: 1px solid var(--bd); background: transparent;
  color: var(--tx3); cursor: pointer; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  transition: all .12s;
}
.fm-icon-btn svg, .fm-icon-btn [data-lucide] { width: 13px; height: 13px; }
.fm-icon-btn:hover { border-color: var(--bd2); color: var(--tx); background: var(--sf2); }

/* ── LEFT PALETTE PANEL ──────────────────────────────────── */
.fm-panel {
  width: 200px; min-width: 200px; flex-shrink: 0;
  background: var(--sf); border-right: 1px solid var(--bd);
  display: flex; flex-direction: column; overflow: hidden;
  position: relative;
}
.fm-panel-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 12px 8px; border-bottom: 1px solid var(--bd);
  flex-shrink: 0; gap: 8px;
}
.fm-panel-title {
  font-family: var(--fm); font-size: 9px; font-weight: 800;
  text-transform: uppercase; letter-spacing: .8px; color: var(--tx3);
}
.fm-panel-sort { display: flex; gap: 2px; }
.fm-psort-btn {
  font-family: var(--fm); font-size: 8px; font-weight: 700;
  padding: 2px 6px; border-radius: 4px; border: 1px solid var(--bd);
  background: transparent; color: var(--tx4); cursor: pointer; transition: all .12s;
}
.fm-psort-btn:hover { color: var(--tx2); }
.fm-psort-btn.on { background: var(--acd); border-color: var(--acg); color: var(--ac); }
.fm-panel-search {
  display: flex; align-items: center; gap: 6px;
  padding: 6px 10px; border-bottom: 1px solid var(--bd);
  background: var(--sf2); flex-shrink: 0;
}
.fm-panel-search [data-lucide], .fm-panel-search svg { width: 12px; height: 12px; color: var(--tx4); flex-shrink: 0; }
.fm-panel-search-in {
  flex: 1; background: none; border: none; outline: none;
  font-family: var(--ff); font-size: 12px; color: var(--tx);
}
.fm-panel-search-in::placeholder { color: var(--tx4); }
.fm-panel-list {
  flex: 1; overflow-y: auto; overflow-x: hidden;
  padding: 4px 0 8px; scrollbar-width: thin;
}
.fm-panel-list::-webkit-scrollbar { width: 3px; }
.fm-panel-list::-webkit-scrollbar-thumb { background: var(--bd2); border-radius: 2px; }
.fm-pg-label {
  font-family: var(--fm); font-size: 8px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .8px; color: var(--tx4);
  padding: 7px 12px 3px; position: sticky; top: 0;
  background: var(--sf); z-index: 1;
}
.fm-pt {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 12px; cursor: grab; transition: background .1s;
}
.fm-pt:hover { background: var(--sf2); }
.fm-pt:active { cursor: grabbing; background: var(--sf3); }
.fm-pt-ab {
  font-family: var(--fm); font-size: 8px; font-weight: 800;
  padding: 2px 5px; border-radius: 4px; flex-shrink: 0;
}
.fm-pt-name { font-size: 11.5px; font-weight: 600; color: var(--tx2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ── CANVAS ──────────────────────────────────────────────── */
.fm-canvas-wrap {
  flex: 1; position: relative; overflow: auto; cursor: default;
  background: var(--bg);
  background-image: radial-gradient(circle, var(--gdot) 1px, transparent 1px);
  background-size: 24px 24px;
}
.fm-canvas-wrap.fm-drag-over { outline: 2px dashed var(--ac); outline-offset: -4px; }
.fm-svg { position: absolute; top: 0; left: 0; overflow: visible; pointer-events: none; }
.fm-nodes { position: absolute; top: 0; left: 0; }
.fm-canvas-scale { transform-origin: top left; position: absolute; top: 0; left: 0; }

/* ── STAGE COLUMN HEADERS ────────────────────────────────── */
.fm-col-header {
  position: absolute; top: 0; display: flex; align-items: center; gap: 6px;
  padding: 0 0 16px;
}
.fm-col-header-label {
  font-family: var(--fm); font-size: 9px; font-weight: 800;
  text-transform: uppercase; letter-spacing: .8px; color: var(--tx4);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fm-col-header-count {
  font-family: var(--fm); font-size: 8px; font-weight: 700;
  color: var(--tx4); background: var(--sf2); border: 1px solid var(--bd);
  min-width: 18px; height: 18px; border-radius: 100px;
  display: flex; align-items: center; justify-content: center;
  padding: 0 4px;
}

/* ── TOOL CARDS — Premium redesign ──────────────────────── */
.fm-card2 {
  position: absolute;
  display: flex; flex-direction: row; align-items: stretch;
  background: var(--sf); border: 1.5px solid var(--bd2);
  border-radius: 12px; overflow: hidden;
  cursor: default; user-select: none;
  transition: box-shadow .15s, border-color .15s, transform .08s;
  box-shadow: 0 2px 8px rgba(0,0,0,.06);
  will-change: transform;
  min-height: 64px;
}
.fm-card2:hover {
  border-color: var(--bd3);
  box-shadow: 0 6px 20px rgba(0,0,0,.14);
  transform: translateY(-1px);
}
.fm-card2.fm-card-selecting {
  border-color: var(--ac) !important;
  box-shadow: 0 0 0 3px var(--acd), 0 6px 20px rgba(0,0,0,.18) !important;
  transform: translateY(-1px);
}
.fm-card2.fm-card-connected { border-color: var(--bd3); }
.fm-card2.fm-card-core { box-shadow: 0 3px 14px rgba(0,0,0,.12); }
.fm-card2.fm-card-core .fm-card2-name { font-weight: 800; }
.fm-card2.fm-card-mapped { border-color: var(--acg); }
.fm-card2.fm-node-dragging {
  box-shadow: 0 16px 48px rgba(0,0,0,.35) !important;
  opacity: .96; z-index: 100; cursor: grabbing !important;
  transform: scale(1.02) !important;
}
.fm-card2:active { transform: scale(0.99); }

/* Left color stripe */
.fm-card2-stripe { width: 4px; min-width: 4px; flex-shrink: 0; }

/* Card body */
.fm-card2-inner {
  flex: 1; min-width: 0; padding: 10px 12px 9px;
  display: flex; flex-direction: column; gap: 5px;
}
.fm-card2-head {
  display: flex; align-items: center; gap: 7px;
}
.fm-card2-ab {
  font-family: var(--fm); font-size: 9px; font-weight: 800;
  padding: 2px 6px; border-radius: 5px; flex-shrink: 0; letter-spacing: .2px;
}
.fm-card2-name {
  flex: 1; min-width: 0;
  font-size: 12px; font-weight: 700; color: var(--tx);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  letter-spacing: -.1px;
}
.fm-card2-actions {
  display: flex; align-items: center; gap: 3px; flex-shrink: 0;
}
.fm-card-conn-dot {
  font-family: var(--fm); font-size: 8px; font-weight: 800;
  min-width: 18px; height: 18px; border-radius: 100px;
  background: var(--sf2); border: 1px solid var(--bd2);
  color: var(--tx3); display: flex; align-items: center;
  justify-content: center; padding: 0 4px;
}
.fm-card2-connect {
  width: 24px; height: 24px; border-radius: 7px;
  border: 1px solid var(--bd2); background: var(--sf2);
  color: var(--tx3); cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all .12s; flex-shrink: 0; opacity: 0;
}
.fm-card2:hover .fm-card2-connect { opacity: 1; }
.fm-card2-connect:hover { border-color: var(--ac); color: var(--ac); background: var(--acd); }
.fm-card2.fm-card-selecting .fm-card2-connect { opacity: 1; border-color: var(--ac); color: var(--ac); background: var(--acd); }
.fm-card2-connect [data-lucide], .fm-card2-connect svg { width: 11px; height: 11px; }

.fm-card2-foot {
  display: flex; flex-wrap: wrap; gap: 4px; align-items: center;
}
.fm-card2-stage {
  font-family: var(--fm); font-size: 8px; font-weight: 700;
  opacity: .7; letter-spacing: .2px; text-transform: capitalize;
}
.fm-card2-cost, .fm-card2-fields, .fm-card2-note {
  font-family: var(--fm); font-size: 8px; color: var(--tx4);
}
.fm-card2-note { color: var(--ac); font-size: 9px; }
.fm-card2-fields {
  color: var(--ac); background: var(--acd);
  padding: 0 5px; border-radius: 4px; border: 1px solid var(--acg);
}
.fm-multi-selected {
  border-color: var(--ac) !important;
  box-shadow: 0 0 0 2px var(--acd), 0 0 0 3.5px var(--ac) !important;
}

/* ── STATUS BAR ──────────────────────────────────────────── */
.fm-statusbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 6px 14px; border-top: 1px solid var(--bd); flex-shrink: 0;
  background: var(--sf); font-family: var(--fm); font-size: 10px; color: var(--tx3);
  gap: 10px;
}
.fm-statusbar strong { color: var(--tx2); font-weight: 700; }
.fm-status-mode {
  font-size: 9px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .5px; color: var(--tx4);
  background: var(--sf2); border: 1px solid var(--bd);
  padding: 2px 7px; border-radius: 100px; flex-shrink: 0;
}
.fm-kb-hint {
  font-size: 9px; color: var(--tx4); margin-left: auto; white-space: nowrap;
}
@media(max-width:1100px){.fm-kb-hint{display:none}}

/* ── FIELDS SIDEBAR ──────────────────────────────────────── */
.fm-fields-sidebar {
  width: 200px; min-width: 200px; flex-shrink: 0;
  background: var(--sf); border-left: 1px solid var(--bd);
  display: flex; flex-direction: column; overflow: hidden;
}
.fm-cfs-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 12px 8px; border-bottom: 1px solid var(--bd); flex-shrink: 0;
}
.fm-cfs-title {
  font-family: var(--fm); font-size: 9px; font-weight: 800;
  text-transform: uppercase; letter-spacing: .7px; color: var(--tx3);
}
.fm-cfs-refresh {
  width: 20px; height: 20px; border-radius: 5px; border: none;
  background: transparent; color: var(--tx4); cursor: pointer; font-size: 13px;
}
.fm-cfs-refresh:hover { color: var(--ac); }
.fm-cfs-list { flex: 1; overflow-y: auto; padding: 4px 0; scrollbar-width: thin; }
.fm-cfs-empty {
  padding: 16px 12px; font-family: var(--fm); font-size: 10px;
  color: var(--tx4); text-align: center; line-height: 1.6;
}
.fm-cfs-tool {
  font-family: var(--fm); font-size: 8px; font-weight: 800;
  text-transform: uppercase; letter-spacing: .6px; color: var(--tx4);
  padding: 6px 12px 3px; position: sticky; top: 0; background: var(--sf); z-index: 1;
}
.fm-cfs-field {
  display: flex; align-items: center; gap: 6px;
  padding: 5px 12px; cursor: pointer; transition: background .1s;
}
.fm-cfs-field:hover { background: var(--sf2); }
.fm-cfs-dir { font-size: 11px; font-weight: 700; flex-shrink: 0; width: 14px; }
.fm-cfs-dir.in  { color: #22c55e; }
.fm-cfs-dir.out { color: var(--ac); }
.fm-cfs-fname {
  font-family: monospace; font-size: 10px; font-weight: 600;
  color: var(--tx); flex: 1; min-width: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fm-cfs-peer {
  font-family: var(--fm); font-size: 8px; color: var(--tx4);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 60px;
}

/* ── CANVAS HINT ─────────────────────────────────────────── */
.fm-canvas-hint {
  position: absolute; top: 50%; left: 50%; z-index: 1;
  transform: translate(-50%, -50%);
  pointer-events: none;
}
.fm-canvas-hint-inner {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  padding: 20px 28px; border-radius: 16px;
  background: var(--sf); border: 1.5px dashed var(--bd2);
  font-size: 12px; color: var(--tx3); font-family: var(--fm);
  max-width: 380px; text-align: center; line-height: 1.55;
  box-shadow: 0 4px 20px rgba(0,0,0,.08);
}
.fm-canvas-hint-inner strong { color: var(--tx2); }

/* ── EMPTY STATE ─────────────────────────────────────────── */
.fm-empty {
  flex: 1; display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 12px; padding: 40px; text-align: center;
}
.fm-empty-title { font-size: 15px; font-weight: 700; color: var(--tx2); }
.fm-empty-sub { font-size: 12px; color: var(--tx3); max-width: 280px; line-height: 1.5; }

/* ── SELECTION RECT ──────────────────────────────────────── */
.fm-sel-rect {
  position: absolute; z-index: 200;
  border: 1.5px dashed var(--ac);
  background: color-mix(in srgb, var(--ac) 7%, transparent);
  pointer-events: none; border-radius: 4px;
}

/* ── CANVAS DOT GRID ─────────────────────────────────────── */
.fm-canvas-wrap { --gdot: rgba(255,255,255,.035); }
[data-theme="light"] .fm-canvas-wrap { --gdot: rgba(0,0,0,.055); }

/* ── ROUTING BUTTONS ─────────────────────────────────────── */
.fm-routing-btns {
  display: flex; gap: 1px;
  background: var(--sf2); border: 1px solid var(--bd2);
  border-radius: 8px; padding: 2px;
}

/* ── ELEMENT TYPES ───────────────────────────────────────── */
.fm-element { position: absolute; cursor: default; z-index: 12; user-select: none; }
.fm-element:hover .fm-el-edit,
.fm-element:hover .fm-el-del,
.fm-element:hover .fm-el-connect { opacity: 1; }
.fm-el-edit, .fm-el-del {
  position: absolute; opacity: 0; transition: opacity .15s;
  width: 22px; height: 22px; border-radius: 6px; border: none;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  font-size: 11px; line-height: 1;
}
.fm-el-edit { top: -9px; right: 26px; background: var(--sf2); color: var(--tx3); border: 1px solid var(--bd2); }
.fm-el-del { top: -9px; right: -9px; background: rgba(239,68,68,.1); color: #f87171; border: 1px solid rgba(239,68,68,.2); }
.fm-el-edit:hover { background: var(--sf3); color: var(--tx); }
.fm-el-del:hover { background: rgba(239,68,68,.2); }
.fm-el-connect {
  position: absolute; opacity: 0; transition: opacity .15s;
  bottom: -11px; right: 6px;
  width: 24px; height: 24px; border-radius: 7px;
  border: 1px solid var(--acg); background: var(--acd);
  color: var(--ac); cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700;
}
.fm-el-connect:hover { background: var(--ac); color: #fff; }

.fm-el-box {
  border: 1.5px solid; border-radius: 10px;
  padding: 10px 14px; display: flex; flex-direction: column; gap: 5px;
  min-height: 56px; position: relative;
}
.fm-el-type-label {
  font-family: var(--fm); font-size: 7px; font-weight: 800;
  text-transform: uppercase; letter-spacing: .8px; opacity: .7;
}
.fm-el-text { font-size: 12px; font-weight: 700; color: var(--tx); line-height: 1.4; word-break: break-word; }
.fm-el-note-inline {
  font-family: var(--fm); font-size: 9px; color: var(--tx3);
  margin-top: 3px; padding-top: 4px;
  border-top: 1px dashed var(--bd2); line-height: 1.4; word-break: break-word;
}

/* Decision diamond */
.fm-el-diamond-text {
  position: absolute; inset: 0; display: flex; align-items: center;
  justify-content: center; font-size: 11px; font-weight: 700;
  color: var(--tx); text-align: center; padding: 8px 18px; line-height: 1.3;
}
.fm-el-branches {
  display: flex; flex-wrap: wrap; gap: 4px;
  padding: 6px 0 2px; justify-content: center;
}
.fm-el-branch-pill {
  font-family: var(--fm); font-size: 9px; font-weight: 700;
  padding: 2px 8px; border-radius: 100px;
  background: var(--sf); border: 1px solid var(--bd2); color: var(--tx3);
}

/* Note sticky */
.fm-el-note { background: #fef3c7; border: 1px solid #fde68a; border-radius: 4px; padding: 10px 12px 12px; min-height: 60px; position: relative; box-shadow: 2px 2px 8px rgba(0,0,0,.1); }
[data-theme="dark"] .fm-el-note { background: #2a2508; border-color: #78350f; }
.fm-el-note-corner { position: absolute; top: 0; right: 0; width: 18px; height: 18px; background: #fbbf24; clip-path: polygon(100% 0, 100% 100%, 0 0); }
[data-theme="dark"] .fm-el-note-corner { background: #78350f; }
.fm-el-note-text { font-size: 11px; font-weight: 500; color: #78350f; line-height: 1.5; word-break: break-word; }
[data-theme="dark"] .fm-el-note-text { color: #fde68a; }

/* Palette element items */
.fm-el-section { border-top: 1px solid var(--bd); padding-top: 6px; margin-top: 4px; }
.fm-el-section-label {
  font-family: var(--fm); font-size: 8px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .7px; color: var(--tx4);
  padding: 4px 12px; line-height: 1.5;
}
.fm-el-palette-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 4px 10px; }
.fm-el-palette-item {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 8px 6px; border-radius: 8px; border: 1px solid var(--bd);
  background: var(--sf2); cursor: pointer; transition: all .12s;
}
.fm-el-palette-item:hover { border-color: var(--ac); background: var(--acd); }
.fm-el-palette-item:active { transform: scale(.95); }

/* ── WIRE HOVER ──────────────────────────────────────────── */
.fm-wire-hover {
  border-color: var(--ac) !important;
  box-shadow: 0 0 0 3px var(--acd) !important;
  transform: scale(1.02);
}
.fm-el-selected { outline: 2px solid var(--ac); outline-offset: 3px; }

/* ── INLINE LABEL EDIT ───────────────────────────────────── */
.fm-inline-label-input {
  background: var(--sf); border: 1.5px solid var(--ac);
  border-radius: 8px; padding: 5px 11px;
  font-family: var(--fm); font-size: 11px; font-weight: 700;
  color: var(--tx); outline: none; min-width: 180px;
  box-shadow: 0 4px 16px rgba(0,0,0,.25);
}

/* ── MOBILE FLOW MAP ─────────────────────────────────────── */
@media(max-width:860px) {
  .fm-panel { display: none !important; }
  .fm-panel.fm-panel-open { display: flex !important; position: fixed; z-index: 300; left: 0; top: 0; bottom: 0; width: 240px; box-shadow: 4px 0 24px rgba(0,0,0,.4); }
  .fm-fields-sidebar { display: none !important; }
  .fm-topbar-row1 { padding: 6px 10px; gap: 6px; min-height: 40px; }
  .fm-topbar-row2 { padding: 3px 10px; gap: 3px; min-height: 30px; }
  .fm-topbar-title { font-size: 12px; }
  .fm-badge-count { display: none; }
  .fm-mode-btn { font-size: 9px; padding: 3px 8px; }
  .fm-mode-btn [data-lucide], .fm-mode-btn svg { display: none; }
  .fm-overlay-group { display: none; }
  .fm-zoom-ctrl { display: none; }
  .fm-pill-btn { font-size: 8px; padding: 3px 7px; height: 22px; }
  .fm-pill-btn span { display: none; }
  .fm-topbar-sep { display: none; }
  .fm-routing-btns { display: none; }
  .fm-statusbar { padding: 4px 10px; font-size: 9px; }
  .fm-kb-hint { display: none; }
}

/* ── GLOBAL UI POLISH ────────────────────────────────────── */

/* Better quick note drawer */
.qn-save-row {
  padding: 12px 16px 16px; display: flex; gap: 8px; flex-shrink: 0;
  background: var(--sf); border-top: 1px solid var(--bd);
}

/* Context menu polish */
.gc-ctx-menu {
  background: var(--sf2); border: 1px solid var(--bd2);
  border-radius: 12px; padding: 6px;
  box-shadow: 0 10px 36px rgba(0,0,0,.35);
  min-width: 192px; backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.gc-ctx-item [data-lucide], .gc-ctx-item svg { flex-shrink: 0; opacity: .7; width: 13px; height: 13px; }
.gc-ctx-item:hover [data-lucide], .gc-ctx-item:hover svg { opacity: 1; }

/* Score panel polish */
.spb { padding: 14px 16px; border-bottom: 1px solid var(--bd); }
.spl {
  font-family: var(--fm); font-size: 9px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 1.2px;
  color: var(--tx3); margin-bottom: 10px;
  display: flex; align-items: center; gap: 7px;
}
.spl::after { content: ''; flex: 1; height: 1px; background: var(--bd); }

/* App bar icons */
.mob-panel-btn [data-lucide], .mob-panel-btn svg { width: 12px; height: 12px; }

/* Better tooltips */
[data-tt]::after {
  background: var(--sf3); color: var(--tx);
  border: 1px solid var(--bd2);
  font-size: 10px; font-weight: 600;
  box-shadow: 0 4px 12px rgba(0,0,0,.25);
}

/* Smooth scrollbar global */
* { scrollbar-width: thin; scrollbar-color: var(--bd2) transparent; }
*::-webkit-scrollbar { width: 4px; height: 4px; }
*::-webkit-scrollbar-thumb { background: var(--bd2); border-radius: 2px; }
*::-webkit-scrollbar-track { background: transparent; }

/* Better focus rings */
:focus-visible { outline: 2px solid var(--ac); outline-offset: 2px; border-radius: 4px; }
button:focus-visible { outline: 2px solid var(--ac); outline-offset: 2px; }

/* ── ATTRIBUTION PANEL ───────────────────────────────────── */
.attr-panel { position: fixed; right: 0; top: 0; bottom: 0; z-index: 800; width: 460px; max-width: 100vw; background: var(--sf); border-left: 1px solid var(--bd2); display: flex; flex-direction: column; box-shadow: -12px 0 48px rgba(0,0,0,.3); animation: attr-slide-in .22s cubic-bezier(.4,0,.2,1); }
@keyframes attr-slide-in { from{transform:translateX(100%);opacity:0} to{transform:translateX(0);opacity:1} }
@media(max-width:860px) { .attr-panel { width: 100%; } }

/* ── ADVISOR PANEL CHAT ──────────────────────────────────── */
.advisor-panel {
  position: fixed; right: 0; top: 0; bottom: 0; z-index: 900;
  width: 400px; max-width: 100vw;
  background: var(--sf); border-left: 1px solid var(--bd2);
  display: flex; flex-direction: column;
  box-shadow: -12px 0 60px rgba(0,0,0,.35);
  animation: advisor-in .2s cubic-bezier(.4,0,.2,1);
}
@keyframes advisor-in { from{transform:translateX(60px);opacity:0} to{transform:translateX(0);opacity:1} }
.advisor-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px; border-bottom: 1px solid var(--bd);
  background: var(--sf2); flex-shrink: 0;
}
.advisor-header-left { display: flex; align-items: center; gap: 10px; }
.advisor-icon {
  width: 32px; height: 32px; border-radius: 9px;
  background: linear-gradient(135deg, #6366f1, #8b5cf6);
  display: flex; align-items: center; justify-content: center; color: #fff;
  flex-shrink: 0; box-shadow: 0 2px 8px rgba(99,102,241,.35);
}
.advisor-icon [data-lucide], .advisor-icon svg { width: 14px; height: 14px; }
.advisor-title { font-size: 13px; font-weight: 800; color: var(--tx); }
.advisor-sub { font-family: var(--fm); font-size: 9px; color: var(--tx3); margin-top: 1px; }
.advisor-close, .advisor-refresh-btn {
  width: 26px; height: 26px; border-radius: 7px; border: none;
  background: transparent; color: var(--tx3); cursor: pointer;
  display: flex; align-items: center; justify-content: center; transition: all .12s;
}
.advisor-close [data-lucide], .advisor-close svg,
.advisor-refresh-btn [data-lucide], .advisor-refresh-btn svg { width: 13px; height: 13px; }
.advisor-close:hover { background: var(--sf3); color: var(--tx); }
.advisor-refresh-btn:hover { background: rgba(99,102,241,.1); color: #818cf8; }
.advisor-spinner {
  width: 18px; height: 18px; border-radius: 50%;
  border: 2px solid rgba(99,102,241,.2); border-top-color: #6366f1;
  animation: spin .7s linear infinite; flex-shrink: 0;
}
@keyframes spin { to { transform: rotate(360deg); } }
.adv-welcome-msg a { color: var(--ac); }
#advisorChatBody { scrollbar-width: thin; }
@media(max-width:860px) { .advisor-panel { width: 100%; } }

/* ── GRID VIEW CHIPS ─────────────────────────────────────── */
.gc-chip {
  transition: all .13s; cursor: pointer;
}
.gc-chip:hover {
  transform: translateY(-2px);
  box-shadow: 0 3px 10px rgba(0,0,0,.12);
}

/* ── TAB BAR ─────────────────────────────────────────────── */
.gtab { transition: all .12s; }
.gtab:hover { transform: translateY(-1px); }

/* ── SNAV AI BUTTONS ─────────────────────────────────────── */
.sn-ai-btn { background: linear-gradient(135deg,rgba(99,102,241,.06) 0%,transparent 100%); border: 1px solid rgba(99,102,241,.15) !important; }
.sn-ai-btn:hover { background: rgba(99,102,241,.12) !important; }
.sn-advisor-btn { background: linear-gradient(135deg,rgba(99,102,241,.06) 0%,transparent 100%); border: 1px solid rgba(99,102,241,.12) !important; }
.sn-advisor-btn:hover { background: rgba(99,102,241,.1) !important; }
.sn-badge-new { font-family: var(--fm); font-size: 7px; font-weight: 800; background: #6366f1; color: #fff; padding: 1px 4px; border-radius: 3px; letter-spacing: .3px; text-transform: uppercase; margin-left: auto; }

/* Connection dialog */
.fm-conn-dialog { backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }


/* ═══════════════════════════════════════════════════════════════
   LUCIDE ICON GLOBAL RENDERING
   ═══════════════════════════════════════════════════════════════ */

/* All Lucide icon elements */
i[data-lucide] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  line-height: 1;
}

/* Lucide SVG output normalization */
i[data-lucide] > svg {
  display: block;
  width: 100%;
  height: 100%;
}

/* Default sizes */
.ic-xs { width: 12px; height: 12px; }
.ic-xs > svg { width: 12px; height: 12px; }

.ic-sm { width: 14px; height: 14px; }
.ic-sm > svg { width: 14px; height: 14px; }

.ic-md { width: 16px; height: 16px; }
.ic-md > svg { width: 16px; height: 16px; }

.ic-lg { width: 18px; height: 18px; }
.ic-lg > svg { width: 18px; height: 18px; }

.ic-xl { width: 20px; height: 20px; }
.ic-xl > svg { width: 20px; height: 20px; }

.ic-2xl { width: 24px; height: 24px; }
.ic-2xl > svg { width: 24px; height: 24px; }

/* Inherit stroke from parent color */
i[data-lucide] > svg { stroke: currentColor; }

/* ── Button icon + text alignment ──────────────────────────── */
.btn { gap: 6px; }
.btn > i[data-lucide] { flex-shrink: 0; }

.sn-item { gap: 9px; }
.sn-item > i[data-lucide] { 
  width: 15px; height: 15px; flex-shrink: 0; 
  color: var(--tx3); transition: color .12s;
}
.sn-item > i[data-lucide] > svg { width: 15px; height: 15px; stroke-width: 1.7; }
.sn-item:hover > i[data-lucide] { color: var(--tx2); }
.sn-item.on > i[data-lucide] { color: var(--ac); }

.vbtn > i[data-lucide] { width: 13px; height: 13px; }
.vbtn > i[data-lucide] > svg { width: 13px; height: 13px; }

/* Mob tab icons */
.mob-tab > i[data-lucide] { 
  width: 22px; height: 22px; flex-shrink: 0;
  transition: transform .2s;
}
.mob-tab > i[data-lucide] > svg { width: 22px; height: 22px; stroke-width: 1.6; }
.mob-tab.on > i[data-lucide] { transform: translateY(-1px); }

/* More sheet icons */
.mob-more-icon > i[data-lucide] { width: 22px; height: 22px; }
.mob-more-icon > i[data-lucide] > svg { width: 22px; height: 22px; stroke-width: 1.6; }

/* ── Flow map icon sizes ────────────────────────────────────── */
.fm-mode-btn > i[data-lucide] { width: 12px; height: 12px; }
.fm-mode-btn > i[data-lucide] > svg { width: 12px; height: 12px; }

.fm-zoom-btn > i[data-lucide] { width: 13px; height: 13px; }
.fm-zoom-btn > i[data-lucide] > svg { width: 13px; height: 13px; }

.fm-pill-btn > i[data-lucide] { width: 11px; height: 11px; }
.fm-pill-btn > i[data-lucide] > svg { width: 11px; height: 11px; }

.fm-icon-btn > i[data-lucide] { width: 14px; height: 14px; }
.fm-icon-btn > i[data-lucide] > svg { width: 14px; height: 14px; }

.fm-card2-connect > i[data-lucide] { width: 11px; height: 11px; }
.fm-card2-connect > i[data-lucide] > svg { width: 11px; height: 11px; }

/* ── Context menu ───────────────────────────────────────────── */
.gc-ctx-item > i[data-lucide] { 
  width: 13px; height: 13px; flex-shrink: 0; opacity: .65;
}
.gc-ctx-item > i[data-lucide] > svg { width: 13px; height: 13px; }
.gc-ctx-item:hover > i[data-lucide] { opacity: 1; }

/* ── Export menu ────────────────────────────────────────────── */
.export-menu-item > i[data-lucide] { width: 12px; height: 12px; }
.export-menu-item > i[data-lucide] > svg { width: 12px; height: 12px; }

/* ── Advisor + attr panel ───────────────────────────────────── */
.advisor-close > i[data-lucide],
.advisor-refresh-btn > i[data-lucide],
.attr-close > i[data-lucide] { width: 13px; height: 13px; }
.advisor-icon > i[data-lucide] { width: 15px; height: 15px; }
.advisor-icon > i[data-lucide] > svg { stroke: #fff; width: 15px; height: 15px; }

/* ─ FAB icon ────────────────────────────────────────────────── */
.mob-fab > i[data-lucide] { width: 22px; height: 22px; }
.mob-fab > i[data-lucide] > svg { width: 22px; height: 22px; stroke: #fff; stroke-width: 2.5; }

/* ═══════════════════════════════════════════════════════════════
   FLOW MAP LAYOUT OVERHAUL — prevents cramping
   ═══════════════════════════════════════════════════════════════ */

/* Canvas: ensure the scale wrapper expands properly */
#flowmapView { display: flex; flex: 1; min-width: 0; min-height: 0; overflow: hidden; }

.fm-canvas-wrap {
  position: relative;
  flex: 1;
  overflow: auto;
  min-width: 0;
  min-height: 0;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}

.fm-canvas-scale {
  transform-origin: top left;
  will-change: transform;
  /* Allow canvas to grow beyond viewport */
  position: absolute;
  top: 0;
  left: 0;
}

/* Tool cards — better proportions */
.fm-card2 {
  border-radius: 12px !important;
  box-shadow: 0 2px 8px rgba(0,0,0,.06), 0 0 0 0 var(--acd) !important;
  transition: box-shadow .15s, border-color .15s, transform .08s !important;
  overflow: visible !important; /* allow connect button to overflow */
}
.fm-card2:hover {
  box-shadow: 0 6px 20px rgba(0,0,0,.14) !important;
  z-index: 10;
}
.fm-card2.fm-card-selecting {
  box-shadow: 0 0 0 3px var(--acd), 0 6px 20px rgba(0,0,0,.2) !important;
}
.fm-card2.fm-node-dragging {
  box-shadow: 0 16px 48px rgba(0,0,0,.3) !important;
  z-index: 100;
}

/* Stage header labels */
.fm-col-header {
  position: absolute;
  top: 14px;
  display: flex;
  align-items: center;
  gap: 6px;
  padding-bottom: 8px;
  border-bottom: 1px dashed var(--bd);
  pointer-events: none;
}
.fm-col-header-label {
  font-family: var(--fm);
  font-size: 9px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .9px;
  color: var(--tx4);
  white-space: nowrap;
}
.fm-col-header-count {
  font-family: var(--fm);
  font-size: 8px;
  font-weight: 700;
  color: var(--tx4);
  background: var(--sf);
  border: 1px solid var(--bd);
  min-width: 18px;
  height: 18px;
  border-radius: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 4px;
}

/* Canvas hint - better centered */
.fm-canvas-hint {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 1;
}
.fm-canvas-hint-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 24px 32px;
  border-radius: 16px;
  background: var(--sf);
  border: 1.5px dashed var(--bd2);
  font-size: 12px;
  color: var(--tx3);
  font-family: var(--fm);
  max-width: 340px;
  text-align: center;
  line-height: 1.6;
  box-shadow: 0 4px 24px rgba(0,0,0,.08);
}
.fm-canvas-hint-inner strong { color: var(--tx2); }
.fm-canvas-hint-inner > i[data-lucide],
.fm-canvas-hint-inner > svg { opacity: .25; }

/* ═══════════════════════════════════════════════════════════════
   GLOBAL POLISH — better typography, spacing, interactions
   ═══════════════════════════════════════════════════════════════ */

/* Smoother transitions everywhere */
*, *::before, *::after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Better focus visible */
:focus-visible {
  outline: 2px solid var(--ac);
  outline-offset: 2px;
  border-radius: 4px;
}

/* Sidenav polish */
.sidenav {
  background: var(--sf);
  border-right: 1px solid var(--bd);
}
.sn-top {
  padding: 12px 10px 10px;
  border-bottom: 1px solid var(--bd);
}
.sn-logo {
  border-radius: 9px;
  padding: 6px 8px;
  transition: background .12s;
}
.sn-logo:hover { background: var(--sf2); }
.sn-logo-txt { font-size: 15px; font-weight: 800; }

/* Better section labels */
.sn-section-label {
  font-family: var(--fm);
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--tx4);
  padding: 10px 16px 4px;
}

/* sn-item improvements */
.sn-item {
  border-radius: 8px;
  font-size: 12px;
  font-weight: 500;
  min-height: 32px;
  padding: 6px 10px;
  position: relative;
  overflow: hidden;
}
.sn-item::after {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 0;
  background: var(--ac);
  border-radius: 0 2px 2px 0;
  transition: width .12s;
}
.sn-item.on::after { width: 3px; }

/* Accent dots in theme section */
.sn-accents {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  padding: 7px 10px;
  background: var(--sf2);
  border: 1px solid var(--bd);
  border-radius: 9px;
  width: 100%;
  box-sizing: border-box;
}
.sn-accents .adot {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  cursor: pointer;
  transition: transform .15s, box-shadow .15s;
  border: 2px solid transparent;
}
.sn-accents .adot:hover { transform: scale(1.2); }
.sn-accents .adot.on { border-color: var(--tx); box-shadow: 0 0 0 2px var(--sf); }

/* App bar improvements */
.app-bar {
  height: 50px;
  background: var(--sf);
  border-bottom: 1px solid var(--bd);
  padding: 0 14px;
  gap: 8px;
}
.gtab {
  border-radius: 7px;
  padding: 5px 10px;
  font-size: 12px;
  font-weight: 600;
  gap: 6px;
  transition: all .13s;
}
.gtab:hover { transform: translateY(-1px); }
.gtab.on {
  background: var(--acd);
  border-color: var(--acg);
  color: var(--ac);
}
.new-g-btn {
  font-size: 11px;
  font-family: var(--fm);
  font-weight: 700;
  letter-spacing: .2px;
  border-radius: 7px;
  padding: 5px 10px;
  gap: 4px;
  white-space: nowrap;
  flex-shrink: 0;
}

/* View toggle buttons */
.vtog {
  background: var(--sf2);
  border: 1px solid var(--bd2);
  border-radius: 8px;
  padding: 2px;
  gap: 1px;
}
.vbtn {
  font-size: 10px;
  padding: 4px 10px;
  border-radius: 6px;
  gap: 4px;
  white-space: nowrap;
  letter-spacing: .2px;
}
.vbtn.on {
  background: var(--sf);
  border: 1px solid var(--bd2);
  box-shadow: 0 1px 3px rgba(0,0,0,.15);
}

/* Better modal styling */
.modal {
  border-radius: 18px;
  border: 1px solid var(--bd2);
  box-shadow: 0 24px 80px rgba(0,0,0,.5);
}
.m-title {
  font-size: 16px;
  font-weight: 800;
  letter-spacing: -.3px;
  margin-bottom: 14px;
}

/* Better chip rendering */
.gc-chip {
  border-radius: 8px;
  padding: 5px 10px;
  font-size: 11px;
  font-weight: 600;
  gap: 5px;
  transition: all .13s;
  cursor: pointer;
}
.gc-chip:hover {
  border-color: var(--ac);
  color: var(--tx);
  background: var(--acd);
  transform: translateY(-2px);
  box-shadow: 0 3px 10px rgba(0,0,0,.12);
}
.gc-chip:active { transform: translateY(0); }

/* Better search field */
.tsa {
  border-radius: 8px;
  padding: 6px 12px 6px 10px;
  gap: 7px;
}
.tsa input {
  font-size: 12px;
  min-width: 160px;
}

/* Grid canvas improvements */
.gc-wrap {
  padding: 20px;
  scroll-padding: 20px;
}

/* Score panel styling */
.spb { padding: 13px 16px; }
.sc-big {
  font-size: 44px;
  font-weight: 900;
  letter-spacing: -3px;
  line-height: 1;
  font-family: var(--ff);
}

/* Toast improvements */
.toast {
  border-radius: 11px;
  font-size: 12px;
  font-weight: 600;
  padding: 10px 14px;
  gap: 8px;
  box-shadow: 0 6px 24px rgba(0,0,0,.35);
  animation: tIn .22s cubic-bezier(.34,1.56,.64,1);
}
@keyframes tIn {
  from { opacity: 0; transform: translateX(12px) scale(.96); }
  to   { opacity: 1; transform: translateX(0) scale(1); }
}

/* Better dropdown */
.tdd {
  border-radius: 12px;
  box-shadow: 0 12px 40px rgba(0,0,0,.3);
  border: 1px solid var(--bd2);
}
.ddi {
  padding: 9px 12px;
  gap: 9px;
  transition: background .08s;
}
.ddi:hover { background: var(--sf3); }
.dab {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  font-size: 10px;
  font-weight: 800;
}

/* Mobile improvements */
@media (max-width: 700px) {
  .mob-tab-bar {
    background: var(--sf);
    border-top: 1px solid var(--bd);
  }
  .mob-tab {
    font-size: 9px;
    letter-spacing: .2px;
  }
  .mob-fab {
    width: 48px;
    height: 48px;
    border-radius: 15px;
    box-shadow: 0 4px 16px rgba(0,0,0,.2), 0 0 0 4px var(--sf);
  }
}
/* ═══════════════════════════════════════════════════════════════
   FLOW MAP VIEW (embedded in app-body)
   ═══════════════════════════════════════════════════════════════ */

/* flowmapView is now a regular view in the app-body, no overlay needed */

/* ═══════════════════════════════════════════════════════════════
   AI ADVISOR — STRUCTURED RESPONSE STYLES
   ═══════════════════════════════════════════════════════════════ */

/* Section block inside a reply bubble */
.adv-s {
  margin-top: 10px;
  border-top: 1px solid var(--bd);
  padding-top: 8px;
}
.adv-s:first-child { margin-top: 0; border-top: none; padding-top: 0; }
.adv-s-title {
  font-family: var(--fm);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--tx4);
  margin-bottom: 5px;
}
.adv-answer {
  color: var(--tx);
  font-size: 12px;
  line-height: 1.6;
  margin-bottom: 6px;
}
.adv-item {
  font-size: 11.5px;
  line-height: 1.5;
  color: var(--tx2);
  padding: 4px 0;
  border-bottom: 1px solid var(--sf3);
}
.adv-item:last-child { border-bottom: none; }
.adv-item-gap { color: var(--tx2); }
.adv-item-gap .adv-badge-stage {
  display: inline-block;
  font-family: var(--fm);
  font-size: 9px;
  font-weight: 700;
  background: rgba(59,130,246,.1);
  color: #3b82f6;
  border-radius: 4px;
  padding: 1px 5px;
  margin-right: 4px;
}
.adv-item-warn { color: var(--tx2); }
.adv-badge {
  display: inline-block;
  font-family: var(--fm);
  font-size: 9px;
  font-weight: 700;
  padding: 1px 5px;
  border-radius: 4px;
  margin-left: 4px;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.adv-badge.adv-pri-high {
  background: rgba(239,68,68,.1);
  color: #ef4444;
}
.adv-badge.adv-pri-medium {
  background: rgba(245,158,11,.1);
  color: #f59e0b;
}
.adv-badge.adv-pri-low {
  background: rgba(107,114,128,.1);
  color: var(--tx4);
}
.adv-ol {
  margin: 4px 0 0 0;
  padding-left: 16px;
  font-size: 11.5px;
  line-height: 1.6;
  color: var(--tx2);
}
.adv-ol li { margin-bottom: 3px; }
.adv-meta {
  margin-top: 8px;
  font-family: var(--fm);
  font-size: 9px;
  color: var(--tx4);
  text-align: right;
  letter-spacing: .03em;
}

/* ── Flow Map: Hover Highlighting ─────────────────────── */
.fm-card-dimmed {
  opacity: .18 !important;
  filter: grayscale(.6);
  transition: opacity .15s, filter .15s;
}
.fm-card-lit {
  box-shadow: 0 0 0 2px var(--ac), 0 4px 16px rgba(0,0,0,.18) !important;
  transition: box-shadow .15s;
}
.fm-card2 { transition: opacity .15s, filter .15s, box-shadow .15s; }

/* ── Flow Map: Stats Row + Legend ─────────────────────── */
.fm-stats-row {
  display: flex;
  align-items: center;
  gap: 5px;
  font-family: var(--fm);
  font-size: 10px;
}
.fm-stat-pill {
  display: inline-flex;
  align-items: center;
  gap: 1px;
  padding: 2px 6px;
  border-radius: 100px;
  background: var(--sf2);
  color: var(--tx2);
  font-weight: 600;
  font-size: 10px;
  white-space: nowrap;
  border: 1px solid var(--bd);
}
.fm-stat-label { font-weight: 400; color: var(--tx4); margin-left: 1px; }
.fm-stat-manual { background: rgba(59,130,246,.07); border-color: rgba(59,130,246,.2); color: #3b82f6; }
.fm-stat-auto   { background: rgba(107,114,128,.07); border-color: transparent; color: var(--tx3); }
.fm-stat-iso    { background: rgba(239,68,68,.07);  border-color: rgba(239,68,68,.2);  color: #ef4444; }
.fm-stat-sep    { color: var(--tx4); font-size: 9px; }
.fm-legend-sep  { margin: 0 2px; }
.fm-legend-item2 {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--tx4);
  font-size: 9.5px;
  white-space: nowrap;
}
.fm-legend-dot2 {
  display: inline-block;
  width: 18px;
  height: 2px;
  border-radius: 2px;
}
.fm-legend-dot-manual { background: var(--ac); }
.fm-legend-dot-auto   { background: var(--tx3); }

/* ── Flow Map: Suggestion Strip ───────────────────────── */
.fm-sug-strip {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  background: rgba(59,130,246,.06);
  border-bottom: 1px solid rgba(59,130,246,.15);
  min-height: 34px;
  flex-shrink: 0;
  overflow-x: auto;
  scrollbar-width: none;
}
.fm-sug-strip::-webkit-scrollbar { display: none; }
.fm-sug-label {
  font-family: var(--fm);
  font-size: 9.5px;
  font-weight: 600;
  color: var(--tx3);
  white-space: nowrap;
  flex-shrink: 0;
}
.fm-sug-chips { display: flex; gap: 4px; flex-shrink: 0; }
.fm-sug-chip {
  padding: 2px 9px;
  border-radius: 100px;
  background: var(--bg);
  border: 1px solid rgba(59,130,246,.3);
  color: #3b82f6;
  font-family: var(--fm);
  font-size: 10px;
  cursor: pointer;
  white-space: nowrap;
  transition: background .12s;
}
.fm-sug-chip:hover { background: rgba(59,130,246,.1); }
.fm-sug-accept-all {
  margin-left: auto;
  padding: 2px 10px;
  border-radius: 100px;
  background: #3b82f6;
  color: #fff;
  font-family: var(--fm);
  font-size: 10px;
  font-weight: 600;
  border: none;
  cursor: pointer;
  flex-shrink: 0;
  white-space: nowrap;
}
.fm-sug-dismiss {
  background: none;
  border: none;
  color: var(--tx4);
  cursor: pointer;
  font-size: 12px;
  padding: 2px 4px;
  flex-shrink: 0;
}

/* ── Flow Map: Panel Tabs ─────────────────────────────── */
.fm-panel-tabs {
  display: flex;
  border-bottom: 1px solid var(--bd);
  flex-shrink: 0;
}
.fm-panel-tab {
  flex: 1;
  padding: 7px 0;
  background: none;
  border: none;
  font-family: var(--fm);
  font-size: 10px;
  font-weight: 600;
  color: var(--tx3);
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: .05em;
  border-bottom: 2px solid transparent;
  transition: color .12s, border-color .12s;
}
.fm-panel-tab:hover { color: var(--tx); }
.fm-panel-tab.active { color: var(--ac); border-bottom-color: var(--ac); }
.fm-panel-tabcontent { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; }

/* ── Flow Map: Overview Panel ─────────────────────────── */
.fm-overview-panel { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; }
.fm-overview-body  { flex: 1; overflow-y: auto; padding: 10px 8px; display: flex; flex-direction: column; gap: 10px; }
.fm-bench-block {
  background: var(--sf2);
  border: 1px solid var(--bd);
  border-radius: 8px;
  padding: 10px 12px;
}
.fm-bench-label {
  font-family: var(--fm);
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--tx4);
  letter-spacing: .05em;
  margin-bottom: 6px;
}
.fm-bench-bar-wrap {
  height: 6px;
  background: var(--bd);
  border-radius: 100px;
  overflow: hidden;
  margin-bottom: 5px;
}
.fm-bench-bar { height: 100%; border-radius: 100px; transition: width .4s; }
.fm-bench-pct  { font-family: var(--fm); font-size: 10px; color: var(--tx2); }
.fm-bench-iso  { font-size: 9.5px; color: var(--tx4); margin-top: 3px; }
.fm-ov-bench   { margin-bottom: 0; }
.fm-ov-stats {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 4px;
}
.fm-ov-stat {
  background: var(--sf2);
  border: 1px solid var(--bd);
  border-radius: 6px;
  padding: 6px 4px;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.fm-ov-stat-n { font-family: var(--fm); font-size: 15px; font-weight: 700; color: var(--tx); }
.fm-ov-stat-l { font-family: var(--fm); font-size: 8.5px; color: var(--tx4); text-transform: uppercase; letter-spacing: .04em; }
.fm-ov-section-title {
  font-family: var(--fm);
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--tx4);
  padding: 0 2px;
}
.fm-ov-tool-list { display: flex; flex-direction: column; gap: 2px; }
.fm-ov-tool-row {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 6px;
  border-radius: 6px;
  cursor: pointer;
  transition: background .1s;
}
.fm-ov-tool-row:hover { background: var(--sf2); }
.fm-ov-tool-ab {
  font-family: var(--fm);
  font-size: 9px;
  font-weight: 700;
  padding: 2px 5px;
  border-radius: 4px;
  white-space: nowrap;
  flex-shrink: 0;
}
.fm-ov-tool-name { font-size: 11px; color: var(--tx); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fm-ov-tool-cnt  { font-family: var(--fm); font-size: 10px; font-weight: 700; color: var(--tx3); flex-shrink: 0; }

/* ── Flow Map: Detail Panel ───────────────────────────── */
.fm-detail-view  { display: flex; flex-direction: column; gap: 8px; padding: 8px; overflow-y: auto; flex: 1; }
.fm-detail-back  {
  background: none;
  border: 1px solid var(--bd);
  border-radius: 6px;
  padding: 4px 8px;
  font-family: var(--fm);
  font-size: 10px;
  color: var(--tx3);
  cursor: pointer;
  align-self: flex-start;
}
.fm-detail-back:hover { color: var(--ac); border-color: var(--ac); }
.fm-detail-head { display: flex; align-items: center; gap: 8px; }
.fm-detail-ab {
  font-family: var(--fm);
  font-size: 11px;
  font-weight: 700;
  padding: 4px 7px;
  border-radius: 6px;
  flex-shrink: 0;
}
.fm-detail-name { font-size: 13px; font-weight: 700; color: var(--tx); }
.fm-detail-cat  { font-family: var(--fm); font-size: 9px; text-transform: uppercase; letter-spacing: .04em; }
.fm-det-section-title {
  font-family: var(--fm);
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--tx4);
  border-top: 1px solid var(--bd);
  padding-top: 6px;
  margin-top: 2px;
}
.fm-det-row {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  color: var(--tx);
  padding: 4px 2px;
  border-bottom: 1px solid var(--sf3);
}
.fm-det-peer  { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; }
.fm-det-label { font-size: 9.5px; color: var(--tx4); background: var(--sf2); border-radius: 4px; padding: 1px 4px; flex-shrink: 0; }
.fm-det-badge {
  font-family: var(--fm);
  font-size: 8.5px;
  font-weight: 600;
  padding: 1px 5px;
  border-radius: 4px;
  flex-shrink: 0;
}
.fm-det-manual { background: rgba(59,130,246,.1); color: #3b82f6; }
.fm-det-auto   { background: var(--sf2); color: var(--tx4); border: 1px solid var(--bd); }
.fm-det-del {
  background: none;
  border: none;
  color: var(--tx4);
  cursor: pointer;
  font-size: 10px;
  padding: 1px 3px;
  border-radius: 3px;
  flex-shrink: 0;
}
.fm-det-del:hover { color: #ef4444; background: rgba(239,68,68,.08); }
.fm-det-empty { font-size: 11px; color: var(--tx4); padding: 6px 0; }

/* ── Flow Map Context Menu ────────────────────────────── */
.fm-ctx-menu {
  position: fixed;
  z-index: 9999;
  background: var(--bg);
  border: 1px solid var(--bd);
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(0,0,0,.22), 0 2px 8px rgba(0,0,0,.12);
  padding: 6px;
  min-width: 190px;
}
.fm-ctx-name {
  font-family: var(--fm);
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--tx4);
  padding: 4px 8px 6px;
  border-bottom: 1px solid var(--bd);
  margin-bottom: 4px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.fm-ctx-item {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 7px 10px;
  border: none;
  background: none;
  color: var(--tx);
  font-size: 12px;
  border-radius: 6px;
  cursor: pointer;
  text-align: left;
  transition: background .1s;
}
.fm-ctx-item:hover { background: var(--sf2); }
.fm-ctx-connect { color: var(--ac); font-weight: 600; }
.fm-ctx-connect:hover { background: rgba(59,130,246,.08); }
.fm-ctx-danger { color: #ef4444; }
.fm-ctx-danger:hover { background: rgba(239,68,68,.08); }
.fm-ctx-sep { height: 1px; background: var(--bd); margin: 4px 0; }

/* ── Flow Map Connect Picker ──────────────────────────── */
.fm-connect-picker {
  position: fixed;
  z-index: 9999;
  background: var(--bg);
  border: 1px solid var(--bd);
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(0,0,0,.22);
  padding: 6px;
  width: 230px;
  max-height: 340px;
  display: flex;
  flex-direction: column;
}
.fm-cp-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 4px 8px 8px;
  border-bottom: 1px solid var(--bd);
  margin-bottom: 4px;
}
.fm-cp-title {
  font-family: var(--fm);
  font-size: 10px;
  font-weight: 700;
  color: var(--tx3);
}
.fm-cp-close {
  background: none;
  border: none;
  color: var(--tx4);
  cursor: pointer;
  font-size: 12px;
  padding: 2px 4px;
}
.fm-cp-list {
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.fm-cp-item {
  display: flex;
  align-items: center;
  gap: 7px;
  width: 100%;
  padding: 6px 8px;
  border: none;
  background: none;
  color: var(--tx);
  font-size: 11px;
  border-radius: 6px;
  cursor: pointer;
  text-align: left;
  transition: background .1s;
}
.fm-cp-item:hover { background: var(--sf2); }
.fm-cp-item-existing { opacity: .45; }
.fm-cp-ab {
  font-family: var(--fm);
  font-size: 8.5px;
  font-weight: 700;
  padding: 2px 5px;
  border-radius: 4px;
  flex-shrink: 0;
}
.fm-cp-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fm-cp-tag  { font-family: var(--fm); font-size: 8.5px; color: var(--tx4); flex-shrink: 0; }

/* ── Flow Map view fills the app-body correctly ───────── */
#flowmapView.fm-wrap {
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

/* ═══════════════════════════════════════════════════════════════
   MOBILE APP EXPERIENCE — SUPER POLISH
   ═══════════════════════════════════════════════════════════════ */

/* Prevent ALL zoom/bounce on iOS — feel like a native app */
html, body {
  -webkit-text-size-adjust: 100%;
  touch-action: pan-x pan-y;
  overscroll-behavior: none;
}

/* No text selection highlight on tap */
* { -webkit-tap-highlight-color: transparent; }

/* ── Mobile tab bar: tighter, no label bleed ─────────────── */
@media(max-width:700px) {
  .mob-tab span { font-size: 8px; letter-spacing: .2px; }
  .mob-tab svg  { width: 22px; height: 22px; }
  .mob-fab { width: 50px; height: 50px; border-radius: 16px; }
  .mob-fab svg  { width: 24px; height: 24px; }
}

/* ── Flow map: proper bottom padding so content clears tab bar ── */
@media(max-width:700px) {
  #flowmapView.fm-wrap {
    padding-bottom: 0 !important;
  }
  /* Inner container gets the padding */
  .fm-inner {
    padding-bottom: calc(58px + env(safe-area-inset-bottom,0px)) !important;
  }
  /* Collapse the topbar rows on mobile: single compact row */
  .fm-topbar {
    padding: 0 !important;
  }
  .fm-topbar-row1 {
    padding: 6px 10px !important;
    flex-wrap: nowrap !important;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .fm-topbar-row1::-webkit-scrollbar { display: none; }
  .fm-topbar-row2 {
    padding: 4px 10px !important;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .fm-topbar-row2::-webkit-scrollbar { display: none; }
  /* Canvas area scrolls freely with touch panning */
  .fm-canvas-wrap {
    overflow: scroll !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior: contain !important;
  }
  /* Cards: bigger tap targets */
  .fm-card2 { min-height: 68px !important; }
  .fm-card2-connect {
    width: 28px !important; height: 28px !important;
    border-radius: 8px !important;
  }
  /* Context menu: bigger on mobile */
  .fm-ctx-menu {
    min-width: 200px !important;
    border-radius: 14px !important;
    padding: 8px !important;
  }
  .fm-ctx-item {
    padding: 11px 14px !important;
    font-size: 13px !important;
    border-radius: 9px !important;
  }
  /* Statusbar: hide on mobile (saves space) */
  .fm-statusbar { display: none !important; }
}

/* ── AI Advisor panel: full-screen on mobile ─────────────── */
@media(max-width:700px) {
  .advisor-panel {
    position: fixed !important;
    inset: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    border-left: none !important;
    border-radius: 0 !important;
    z-index: 2000 !important;
    animation: advisor-up .25s cubic-bezier(.4,0,.2,1) !important;
  }
  @keyframes advisor-up {
    from { transform: translateY(100%); opacity: .8; }
    to   { transform: translateY(0);   opacity: 1;  }
  }
  .advisor-header {
    padding: 14px 16px 12px !important;
    padding-top: calc(14px + env(safe-area-inset-top,0px)) !important;
  }
  /* Advisor chat body fills available height */
  #advisorChatBody {
    flex: 1 !important;
    min-height: 0 !important;
  }
  /* Input area: safe area padding at bottom */
  .advisor-input-row,
  .adv-input-wrap {
    padding-bottom: calc(10px + env(safe-area-inset-bottom,0px)) !important;
  }
}

/* ── Fix bottom scroll gap on all views ─────────────────── */
@media(max-width:700px) {
  /* Grid, funnel, notes, overview all need tab bar clearance */
  .gc-wrap,
  .fv-wrap,
  .notes-view,
  .overview-view,
  .process-view {
    padding-bottom: calc(72px + env(safe-area-inset-bottom,0px)) !important;
  }
  /* Remove footer on mobile — it clutters small screens */
  .app-footer { display: none !important; }
  /* Header: slightly tighter on very small screens */
  .app-hdr { padding: 0 12px !important; min-height: 52px !important; }
  /* Ensure main content fills screen properly */
  .app-body, .sn-content {
    min-height: 0 !important;
    flex: 1 !important;
  }
}

/* ── Prevent layout jump from scrollbars appearing ───────── */
@media(max-width:700px) {
  html { overflow-y: scroll; }
  ::-webkit-scrollbar { width: 0 !important; height: 0 !important; }
}

/* ── More menu: Flow Map + AI better placement ───────────── */
@media(max-width:700px) {
  .mob-more-sheet { border-radius: 22px 22px 0 0 !important; }
  .mob-more-item { padding: 14px 8px !important; gap: 6px !important; font-size: 11px !important; }
  .mob-more-icon { width: 44px !important; height: 44px !important; border-radius: 14px !important; }
  .mob-more-icon svg { width: 22px !important; height: 22px !important; }
}



/* ════════════════════════════════════════════════════════════════════
   GRID52  —  UI POLISH v4.0
   Senior-grade refinement pass: transitions, shadows, glass, motion,
   mobile rendering, and zero-glitch consistency.
   ════════════════════════════════════════════════════════════════════ */

/* ── Design tokens (extend root) ──────────────────────────────────── */
:root {
  /* Easing */
  --ease-spring: cubic-bezier(0.175, 0.885, 0.32, 1.1);
  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
  --ease-inout:  cubic-bezier(0.4, 0, 0.2, 1);
  /* Duration */
  --t-xs:  80ms;
  --t-sm:  140ms;
  --t-md:  220ms;
  --t-lg:  320ms;
  /* Z-index scale */
  --z-dropdown: 100;
  --z-panel:    200;
  --z-overlay:  500;
  --z-drawer:   900;
  --z-modal:   1500;
  --z-advisor: 2000;
  --z-toast:   3000;
}

/* ── Fix: mobile scrollbar forced visible (was html { overflow-y: scroll }) ── */
@media (max-width: 700px) {
  html { overflow-y: hidden !important; }
  ::-webkit-scrollbar { width: 0 !important; height: 0 !important; display: none !important; }
  * { scrollbar-width: none !important; }
}

/* ── GPU promotion for all animated panels ─────────────────────────── */
.mob-tab-bar,
.mob-more-sheet,
.mob-more-bg,
.sp,
.tool-drawer,
.tool-drawer-bg,
.qn-drawer,
.qn-overlay,
.attr-panel,
.advisor-panel {
  transform: translateZ(0);
  will-change: transform;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}

/* ── Fix: mob-more-bg must use opacity, not display, for transition ── */
.mob-more-bg {
  display: block !important;   /* Always in DOM */
  opacity: 0 !important;
  pointer-events: none !important;
  transition: opacity var(--t-md) var(--ease-inout) !important;
}
.mob-more-bg.on {
  opacity: 1 !important;
  pointer-events: all !important;
}

/* ── HEADER — premium glass ───────────────────────────────────────── */
.hdr {
  height: 52px;
  background: rgba(7, 8, 12, 0.88);
  backdrop-filter: blur(32px) saturate(180%);
  -webkit-backdrop-filter: blur(32px) saturate(180%);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  box-shadow: 0 1px 0 rgba(255,255,255,0.03);
}
[data-theme="light"] .hdr {
  background: rgba(244, 245, 249, 0.88);
  border-bottom: 1px solid rgba(0, 0, 0, 0.07);
  box-shadow: 0 1px 0 rgba(0,0,0,0.03), 0 2px 8px rgba(0,0,0,0.04);
}

/* ── Header nav buttons — crisper states ─────────────────────────── */
.nbtn {
  transition: all var(--t-sm) var(--ease-inout);
  border-radius: 7px;
}
.nbtn:hover {
  background: var(--sf2);
  border-color: var(--bd2);
  color: var(--tx2);
}
.nbtn.on {
  background: var(--sf2);
  border-color: var(--bd2);
  color: var(--tx);
  box-shadow: 0 1px 3px rgba(0,0,0,0.12);
}

/* ── APP BAR ─────────────────────────────────────────────────────── */
.app-bar {
  border-bottom: 1px solid var(--bd);
  box-shadow: none;
}

/* ── BUTTONS — unified, elevated system ──────────────────────────── */
.btn {
  border-radius: 9px;
  font-weight: 600;
  letter-spacing: -.15px;
  transition: all var(--t-sm) var(--ease-inout);
}
.btn-sm { border-radius: 7px; }

.btn-p {
  box-shadow: 0 1px 3px rgba(0,0,0,0.2), inset 0 1px 0 rgba(255,255,255,0.1);
}
.btn-p:hover {
  filter: brightness(1.1);
  box-shadow: 0 4px 14px color-mix(in srgb, var(--ac) 40%, transparent), 0 1px 3px rgba(0,0,0,0.2);
  transform: translateY(-1px);
}
.btn-p:active { transform: translateY(0); filter: brightness(0.95); }

.btn-o {
  background: var(--sf2);
  border-color: var(--bd2);
  box-shadow: 0 1px 2px rgba(0,0,0,0.06);
}
.btn-o:hover {
  background: var(--sf3);
  border-color: var(--bd3);
  color: var(--tx);
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
.btn-o:active { transform: translateY(0); }

/* Touch: no hover lifts on touch devices */
@media (hover: none) {
  .btn-p:hover, .btn-o:hover { transform: none !important; }
}

/* ── SIDENAV ITEMS ────────────────────────────────────────────────── */
.sn-item {
  border-radius: 8px;
  transition: all var(--t-sm) var(--ease-inout);
  font-weight: 500;
}
.sn-item:hover {
  background: var(--sf2);
  color: var(--tx);
}
.sn-item.on {
  background: var(--acd);
  color: var(--ac);
  font-weight: 600;
}

/* ── GRID STAGE CARDS ────────────────────────────────────────────── */
.gc {
  border-radius: 14px;
  transition:
    border-color var(--t-md) var(--ease-inout),
    box-shadow var(--t-md) var(--ease-inout),
    transform var(--t-sm) var(--ease-inout);
}
.gc:hover {
  border-color: var(--bd3);
  box-shadow: 0 4px 20px rgba(0,0,0,0.1);
}
[data-theme="light"] .gc:hover {
  box-shadow: 0 4px 16px rgba(0,0,0,0.08);
}
@media (hover: none) { .gc:hover { transform: none; box-shadow: none; } }

/* Stage summary cards */
.stc {
  border-radius: 12px;
  transition: border-color var(--t-sm) var(--ease-inout), box-shadow var(--t-sm) var(--ease-inout);
}
.stc:hover {
  box-shadow: 0 2px 10px rgba(0,0,0,0.08);
}

/* ── TOOL CHIPS ───────────────────────────────────────────────────── */
.gchip {
  border-radius: 8px;
  transition: all var(--t-sm) var(--ease-inout);
}
.gchip:hover {
  box-shadow: 0 3px 12px rgba(0,0,0,0.12);
  transform: translateY(-1px);
}
.gchip:active { transform: scale(0.97); box-shadow: none; }
@media (hover: none) { .gchip:hover { transform: none; box-shadow: none; } }

/* ── GRID CHIPS (gc-chip) ────────────────────────────────────────── */
.gc-chip {
  border-radius: 8px;
  transition: all var(--t-sm) var(--ease-inout);
}
.gc-chip:hover {
  box-shadow: 0 3px 10px rgba(0,0,0,0.12);
  transform: translateY(-1px);
}
.gc-chip:active { transform: scale(0.97); }
@media (hover: none) { .gc-chip:hover { transform: none; } }

/* ── MODALS — spring entry, blurred backdrop ──────────────────────── */
.ov, .cell-modal-ov, .tmpl-ov, .stage-ov {
  backdrop-filter: blur(8px) saturate(140%);
  -webkit-backdrop-filter: blur(8px) saturate(140%);
}
.modal {
  border-radius: 16px;
  border: 1px solid var(--bd2);
  box-shadow: 0 32px 80px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.04);
  animation: modal-spring var(--t-lg) var(--ease-spring) both;
}
@keyframes modal-spring {
  from { opacity: 0; transform: scale(0.95) translateY(10px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}

/* Mobile bottom sheets: override spring with slide-up */
@media (max-width: 640px) {
  .ov.on .modal,
  .cell-modal-ov.on .cell-modal,
  .tmpl-ov.on .tmpl-m,
  .stage-ov.on .stage-m {
    animation: sheet-up var(--t-lg) var(--ease-out) both !important;
  }
  @keyframes sheet-up {
    from { transform: translateY(100%) !important; }
    to   { transform: translateY(0) !important; }
  }
  .modal, .cell-modal, .tmpl-m, .stage-m {
    box-shadow: 0 -8px 48px rgba(0,0,0,0.42) !important;
  }
  /* Drag handle consistent across all bottom sheets */
  .modal::before, .cell-modal::before, .tmpl-m::before, .stage-m::before {
    background: var(--bd3) !important;
    width: 40px !important;
    height: 4px !important;
    border-radius: 2px !important;
    margin: 0 auto 14px !important;
  }
}

[data-theme="light"] .modal {
  box-shadow: 0 24px 64px rgba(0,0,0,0.14), 0 0 0 1px rgba(0,0,0,0.05);
}

/* ── TOOL DRAWER ──────────────────────────────────────────────────── */
.tool-drawer {
  box-shadow: -20px 0 80px rgba(0,0,0,0.42);
  transition: transform var(--t-lg) var(--ease-out) !important;
}
.tool-drawer-bg {
  transition: opacity var(--t-md) var(--ease-inout);
  backdrop-filter: blur(4px) saturate(120%);
  -webkit-backdrop-filter: blur(4px) saturate(120%);
}
@media (max-width: 700px) {
  .tool-drawer {
    box-shadow: 0 -20px 80px rgba(0,0,0,0.45) !important;
    transition: transform var(--t-lg) var(--ease-out) !important;
  }
}

/* ── CONTEXT MENUS — animated, sharp shadows ──────────────────────── */
.gc-ctx-menu {
  border-radius: 13px;
  border: 1px solid var(--bd2);
  box-shadow: 0 16px 48px rgba(0,0,0,0.4), 0 2px 8px rgba(0,0,0,0.2), 0 0 0 1px rgba(255,255,255,0.04);
  animation: ctx-drop var(--t-sm) var(--ease-out) both;
}
@keyframes ctx-drop {
  from { opacity: 0; transform: scale(0.94) translateY(-6px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}
[data-theme="light"] .gc-ctx-menu {
  box-shadow: 0 8px 32px rgba(0,0,0,0.14), 0 2px 6px rgba(0,0,0,0.08), 0 0 0 1px rgba(0,0,0,0.06);
}
.gc-ctx-item {
  border-radius: 8px;
  transition: all var(--t-xs) var(--ease-inout);
}
.gc-ctx-item:hover { transform: none; }

/* User menu and dropdowns */
.um-dd {
  border-radius: 13px;
  border: 1px solid var(--bd2);
  box-shadow: 0 16px 40px rgba(0,0,0,0.35), 0 0 0 1px rgba(255,255,255,0.04);
  animation: ctx-drop var(--t-sm) var(--ease-out) both;
}
.tdd {
  border-radius: 13px;
  box-shadow: 0 16px 48px rgba(0,0,0,0.35);
  animation: ctx-drop var(--t-sm) var(--ease-out) both;
}
.gtab-overflow {
  border-radius: 12px;
  animation: ctx-drop var(--t-sm) var(--ease-out) both;
}

/* ── FLOW MAP CARDS — premium feel ──────────────────────────────── */
.fm-card2 {
  border-radius: 11px;
  box-shadow: 0 1px 4px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06);
  transition:
    box-shadow var(--t-md) var(--ease-inout),
    border-color var(--t-md) var(--ease-inout),
    transform var(--t-sm) var(--ease-inout);
}
.fm-card2:hover {
  box-shadow: 0 8px 28px rgba(0,0,0,0.15), 0 2px 8px rgba(0,0,0,0.08);
  transform: translateY(-1px);
  border-color: var(--bd3);
}
.fm-card2.fm-node-dragging {
  transform: translateY(-4px) rotate(0.4deg) !important;
  box-shadow: 0 24px 64px rgba(0,0,0,0.42) !important;
  z-index: 200 !important;
}
@media (hover: none) { .fm-card2:hover { transform: none; } }

[data-theme="light"] .fm-card2 {
  box-shadow: 0 1px 4px rgba(0,0,0,0.07);
}
[data-theme="light"] .fm-card2:hover {
  box-shadow: 0 6px 20px rgba(0,0,0,0.1);
}

/* ── FLOW MAP CANVAS HINT ────────────────────────────────────────── */
.fm-canvas-hint-inner {
  background: var(--sf);
  border: 1.5px dashed var(--bd2);
  border-radius: 16px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.1);
}

/* ── ATTRIBUTION + ADVISOR PANELS ───────────────────────────────── */
.attr-panel {
  box-shadow: -16px 0 64px rgba(0,0,0,0.38);
  animation: panel-in var(--t-md) var(--ease-out) both;
}
.advisor-panel {
  box-shadow: -16px 0 64px rgba(0,0,0,0.38);
}
@keyframes panel-in {
  from { transform: translateX(100%); opacity: 0.6; }
  to   { transform: translateX(0);   opacity: 1; }
}

/* ── TOASTS ───────────────────────────────────────────────────────── */
.toast {
  border-radius: 12px;
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  box-shadow: 0 8px 32px rgba(0,0,0,0.35), 0 0 0 1px rgba(255,255,255,0.06);
  animation: toast-in var(--t-md) var(--ease-spring) both;
}
@keyframes toast-in {
  from { opacity: 0; transform: translateY(10px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* ── QUICK NOTE DRAWER ────────────────────────────────────────────── */
.qn-drawer {
  box-shadow: -16px 0 64px rgba(0,0,0,0.32);
  transition: transform var(--t-lg) var(--ease-out) !important;
}
.qn-overlay {
  backdrop-filter: blur(6px) saturate(130%);
  -webkit-backdrop-filter: blur(6px) saturate(130%);
  transition: opacity var(--t-md) var(--ease-inout) !important;
}

/* ── OVERVIEW KPI CARDS ───────────────────────────────────────────── */
.ov2-kpi {
  border-radius: 14px;
  transition: all var(--t-sm) var(--ease-inout);
}
.ov2-kpi:hover {
  box-shadow: 0 4px 16px rgba(0,0,0,0.1);
  border-color: var(--bd3);
  transform: translateY(-1px);
}
@media (hover: none) { .ov2-kpi:hover { transform: none; } }

/* ── NOTES CARDS ─────────────────────────────────────────────────── */
.nt-card {
  transition:
    border-color var(--t-md) var(--ease-inout),
    box-shadow var(--t-md) var(--ease-inout);
}
.nt-card:hover:not(:focus-within) {
  box-shadow: 0 2px 14px rgba(0,0,0,0.08);
  border-color: var(--bd3);
}

/* ── OVERVIEW TOOL CARDS ─────────────────────────────────────────── */
.ov2-card {
  transition: border-color var(--t-sm) var(--ease-inout), box-shadow var(--t-sm) var(--ease-inout);
}
.ov2-card:hover {
  border-color: var(--bd3);
  box-shadow: 0 2px 12px rgba(0,0,0,0.07);
}

/* ── PROCESS TOOLS ───────────────────────────────────────────────── */
.pv-tool {
  transition: all var(--t-sm) var(--ease-inout);
}
.pv-tool:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
@media (hover: none) { .pv-tool:hover { transform: none; } }

/* ── MOBILE TAB BAR — glass native app feel ──────────────────────── */
@media (max-width: 700px) {
  .mob-tab-bar {
    background: color-mix(in srgb, var(--sf) 88%, transparent) !important;
    backdrop-filter: blur(32px) saturate(180%) !important;
    -webkit-backdrop-filter: blur(32px) saturate(180%) !important;
    border-top: 1px solid rgba(255, 255, 255, 0.07) !important;
    box-shadow: 0 -1px 0 rgba(255,255,255,0.03), 0 -2px 20px rgba(0,0,0,0.18) !important;
  }
  [data-theme="light"] .mob-tab-bar {
    background: rgba(255, 255, 255, 0.86) !important;
    border-top: 1px solid rgba(0, 0, 0, 0.08) !important;
    box-shadow: 0 -1px 0 rgba(0,0,0,0.04), 0 -4px 24px rgba(0,0,0,0.07) !important;
  }

  /* Tab active indicator — pill under icon */
  .mob-tab.on::after {
    width: 20px !important;
    height: 3px !important;
    border-radius: 0 0 3px 3px !important;
    background: var(--ac) !important;
    top: 0 !important;
  }

  /* Active tab icon lift */
  .mob-tab.on > i[data-lucide] { transform: translateY(-2px) !important; }
  .mob-tab > i[data-lucide] { transition: transform var(--t-sm) var(--ease-out) !important; }

  /* Tab font */
  .mob-tab span { font-weight: 600; font-size: 9px; letter-spacing: 0; }
  .mob-tab.on span { font-weight: 700; color: var(--ac); }

  /* FAB — premium gradient + shadow */
  .mob-fab {
    width: 52px !important;
    height: 52px !important;
    border-radius: 18px !important;
    background: linear-gradient(135deg, var(--ac) 0%, color-mix(in srgb, var(--ac) 70%, #8b5cf6) 100%) !important;
    box-shadow: 0 6px 24px color-mix(in srgb, var(--ac) 50%, transparent), 0 2px 8px rgba(0,0,0,0.25) !important;
    transition: transform var(--t-sm) var(--ease-spring), box-shadow var(--t-sm) var(--ease-inout) !important;
  }
  .mob-fab:active {
    transform: scale(0.88) !important;
    box-shadow: 0 2px 8px color-mix(in srgb, var(--ac) 35%, transparent) !important;
  }
}

/* ── MORE SHEET ───────────────────────────────────────────────────── */
.mob-more-sheet {
  transition: transform var(--t-lg) var(--ease-out) !important;
  box-shadow: 0 -8px 60px rgba(0,0,0,0.42), 0 0 0 1px rgba(255,255,255,0.04) !important;
  border-radius: 24px 24px 0 0 !important;
}
[data-theme="light"] .mob-more-sheet {
  box-shadow: 0 -4px 32px rgba(0,0,0,0.12) !important;
  border-top: 1px solid rgba(0,0,0,0.08) !important;
}
.mob-more-handle {
  width: 40px !important;
  height: 4px !important;
  background: var(--bd3) !important;
  border-radius: 2px !important;
  margin: 14px auto 18px !important;
}
.mob-more-item {
  border-radius: 14px !important;
  transition: all var(--t-sm) var(--ease-inout) !important;
  gap: 8px !important;
}
.mob-more-item:active { transform: scale(0.95) !important; }
.mob-more-icon {
  border-radius: 12px !important;
}

/* ── SCORE PANEL (mobile bottom sheet) ─────────────────────────── */
@media (max-width: 700px) {
  .sp {
    transition: transform var(--t-lg) var(--ease-out) !important;
    box-shadow: 0 -16px 64px rgba(0,0,0,0.5) !important;
    backdrop-filter: blur(32px) !important;
    -webkit-backdrop-filter: blur(32px) !important;
  }
  /* Drag handle */
  .sp::before {
    background: var(--bd3) !important;
    width: 40px !important;
    height: 4px !important;
    border-radius: 2px !important;
    margin: 14px auto 8px !important;
  }
}

/* ── FIELD INPUTS — consistent focus ring ────────────────────────── */
.fi, .fb-ta, .qn-ta, .nt-ta, .fb, .tsa {
  transition: border-color var(--t-sm) var(--ease-inout), box-shadow var(--t-sm) var(--ease-inout);
}
.fi:focus, .fb-ta:focus, .qn-ta:focus, .nt-ta:focus, .fb:focus {
  outline: none !important;
  border-color: var(--ac) !important;
  box-shadow: 0 0 0 3px var(--acd) !important;
}

/* ── TOGGLE SWITCH — smoother ────────────────────────────────────── */
.tog-slider {
  transition: background var(--t-md) var(--ease-inout), border-color var(--t-md) var(--ease-inout);
}
.tog-slider::before {
  transition: transform var(--t-md) var(--ease-spring);
  box-shadow: 0 1px 4px rgba(0,0,0,0.25);
}

/* ── SEARCH DROPDOWN ─────────────────────────────────────────────── */
.tsa { transition: border-color var(--t-sm) var(--ease-inout), box-shadow var(--t-sm) var(--ease-inout); }
.tsa:focus-within { border-color: var(--ac); box-shadow: 0 0 0 3px var(--acd); }
.ddi { transition: background var(--t-xs) var(--ease-inout); }

/* ── FUNNEL VIEW ────────────────────────────────────────────────── */
.fv-junction-btn {
  transition: all var(--t-md) var(--ease-inout);
}

/* ── ADVISOR PANEL — mobile: proper slide-up ─────────────────────── */
@media (max-width: 700px) {
  .advisor-panel {
    animation: advisor-up var(--t-lg) var(--ease-out) both !important;
  }
  @keyframes advisor-up {
    from { transform: translateY(100%); opacity: 0.9; }
    to   { transform: translateY(0);   opacity: 1; }
  }
  .advisor-header {
    border-radius: 0 !important;
    padding-top: calc(12px + env(safe-area-inset-top, 0px)) !important;
  }
}

/* ── PROGRESS / COVERAGE BARS ────────────────────────────────────── */
.cbf { transition: width 600ms var(--ease-inout); }
.ov2-attr-seg { transition: width 500ms var(--ease-inout); }
.ov2-card-bar { transition: width 450ms var(--ease-inout); }
.ov2-chart-bar { transition: width 600ms var(--ease-inout); }
.attr-tool-bar { transition: width 450ms var(--ease-inout); }

/* ── FM FLOW MAP PANEL ───────────────────────────────────────────── */
.fm-pt {
  border-radius: 7px;
  transition: background var(--t-xs) var(--ease-inout);
}

/* ── TOOLTIP REFINEMENT ──────────────────────────────────────────── */
[data-tt]::after {
  background: var(--sf3) !important;
  border: 1px solid var(--bd2) !important;
  color: var(--tx) !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  border-radius: 7px !important;
  box-shadow: 0 4px 16px rgba(0,0,0,0.28) !important;
  padding: 4px 8px !important;
}

/* ── SCROLL AREAS — momentum on iOS ──────────────────────────────── */
.gc-wrap,
.fv-wrap,
.nv-wrap,
.pv-wrap,
.ov-wrap,
.sp,
.cell-modal,
.tmpl-m,
.stage-m,
.modal,
.fm-panel-list,
.td-body,
.qn-body,
.attr-body,
#advisorChatBody {
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}

/* ── MISC: no tap flash on interactive elements ──────────────────── */
button, a, [onclick], label, input[type="checkbox"], input[type="radio"] {
  -webkit-tap-highlight-color: transparent;
}

/* ── ACCESSIBILITY: reduce motion ─────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* ── RESPONSIVE DENSITY ───────────────────────────────────────────── */
@media (min-width: 701px) and (max-width: 1100px) {
  .app-bar { padding: 0 12px; }
  .gtab { font-size: 11px; padding: 4px 9px; }
  .abr { gap: 5px; }
}
@media (min-width: 1440px) {
  .hdr { height: 56px; }
  .app-bar { height: 52px; }
}

/* ── COOKIE BANNER ────────────────────────────────────────────────── */
.cookie-banner {
  box-shadow: 0 -4px 32px rgba(0,0,0,0.25);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}

/* ── LIGHT MODE global refinements ───────────────────────────────── */
[data-theme="light"] .modal { box-shadow: 0 24px 64px rgba(0,0,0,0.14); }
[data-theme="light"] .gc { box-shadow: 0 1px 3px rgba(0,0,0,0.05); }
[data-theme="light"] .fm-card2 { box-shadow: 0 1px 4px rgba(0,0,0,0.07); }
[data-theme="light"] .toast {
  box-shadow: 0 4px 24px rgba(0,0,0,0.14), 0 0 0 1px rgba(0,0,0,0.06);
}
[data-theme="light"] .gc-ctx-menu {
  box-shadow: 0 8px 32px rgba(0,0,0,0.13), 0 0 0 1px rgba(0,0,0,0.06);
}
[data-theme="light"] .um-dd {
  box-shadow: 0 8px 28px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.05);
}

/* ── SIDENAV ITEMS — active accent line ──────────────────────────── */
.sn-item.on {
  position: relative;
}
.sn-item.on::before {
  content: '';
  position: absolute;
  left: 0;
  top: 25%;
  bottom: 25%;
  width: 3px;
  background: var(--ac);
  border-radius: 0 3px 3px 0;
}

/* ── FM STATUS BAR ───────────────────────────────────────────────── */
.fm-statusbar {
  background: var(--sf) !important;
  border-top: 1px solid var(--bd) !important;
}

/* ── SCORE PANEL handle visible at top ───────────────────────────── */
@media (min-width: 701px) {
  .sp::before { display: none; } /* no handle on desktop */
}

/* ── Stable layout containment ────────────────────────────────────── */
.hdr { contain: layout style; }
.mob-tab-bar { contain: layout style; }
.app-bar { contain: layout; }

/* ════════════════════════════════════════════════════════════════════
   END POLISH v4.0
   ════════════════════════════════════════════════════════════════════ */


/* ════════════════════════════════════════════════════════════════════
   HOTFIX v4.1 — Restore panel hidden-state transforms
   The GPU block above set transform:translateZ(0) which overwrote
   the translateY(100%) / translateX(100%) that hides panels.
   ════════════════════════════════════════════════════════════════════ */

/* Restore slide-panel hidden states */
.mob-more-sheet                     { transform: translateY(100%) !important; }
.mob-more-sheet.on                  { transform: translateY(0)    !important; }

.tool-drawer                        { transform: translateX(100%) !important; }
.tool-drawer.on                     { transform: translateX(0)    !important; }
@media (max-width: 700px) {
  .tool-drawer                      { transform: translateY(100%) !important; }
  .tool-drawer.on                   { transform: translateY(0)    !important; }
}

.qn-drawer                          { transform: translateX(105%) !important; }
.qn-drawer.on                       { transform: translateX(0)    !important; }

/* Score panel */
@media (max-width: 700px) {
  .sp                               { transform: translateY(100%) !important; }
  .sp.mob-open                      { transform: translateY(0)    !important; }
}
@media (min-width: 701px) {
  .sp                               { transform: none !important; }
}

/* Attr & advisor panels: animation handles entry, no static transform */
.attr-panel, .advisor-panel         { transform: none !important; }

/* Overlays: no transform needed */
.qn-overlay, .mob-more-bg,
.tool-drawer-bg                     { transform: none !important; }

/* Tab bar: translateZ(0) is safe — no show/hide transform */
.mob-tab-bar                        { transform: translateZ(0); }

/* mob-more-bg: only override display on mobile */
@media (min-width: 701px) {
  .mob-more-bg  { display: none    !important; opacity: 0 !important; pointer-events: none !important; }
  .mob-more-sheet { transform: translateY(100%) !important; } /* belt-and-suspenders */
}

/* ════════════════════════════════════════════════════════════════════
   END HOTFIX v4.1
   ════════════════════════════════════════════════════════════════════ */