:root{
  --blue:#0B63F6; --cyan:#38BDF8; --navy:#0B1C3D; --deep:#08306B;
  --ink:#0F2547; --muted:#5B7295; --border:#DDE6F2; --bg:#EEF3FA; --card:#fff;
  --ok:#17A05E; --ok-bg:#E3F6EC; --warn:#E08A1E; --warn-bg:#FDF1DF;
  --bad:#D0495B; --bad-bg:#FBE9EB; --violet:#7C5CF0; --violet-bg:#EFEAFE;
  --teal:#0E9F9F; --teal-bg:#E1F6F6;
  --r:14px; --rs:9px; --pill:999px;
  --sh:0 1px 2px rgba(11,28,61,.06),0 6px 18px rgba(11,28,61,.05);
  --sh-lg:0 18px 44px rgba(11,28,61,.18);
  --font:'Inter','Segoe UI',system-ui,-apple-system,Arial,sans-serif;
  --sidebar:250px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:14px}
a{color:var(--blue);text-decoration:none}
button,input,select,textarea{font-family:inherit;font-size:14px;color:var(--ink)}
button{cursor:pointer}
img{max-width:100%}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#c3d1e4;border-radius:9px}

/* ---------- Login ---------- */
.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr}
.login-brand{background:linear-gradient(160deg,#08306B 0%,#0B1C3D 55%,#061634 100%);color:#fff;padding:56px 60px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}
.login-brand::after{content:"";position:absolute;inset:auto -80px -120px auto;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(56,189,248,.28),transparent 62%)}
.lb-logo{display:flex;align-items:center;gap:14px;margin-bottom:44px;position:relative;z-index:1}
.lb-logo img{width:52px;height:52px;border-radius:12px;background:#fff;padding:3px;object-fit:cover}
.lb-logo h1{font-size:1.25rem;letter-spacing:.09em;font-weight:700}
.lb-logo p{font-size:.74rem;color:#8FB4E4;letter-spacing:.14em;margin-top:3px}
.login-brand h2{font-size:2.5rem;line-height:1.14;font-weight:700;margin-bottom:16px;position:relative;z-index:1;max-width:14ch}
.login-brand .copy{color:#B9CFEC;max-width:46ch;line-height:1.65;margin-bottom:32px;position:relative;z-index:1}
.lb-points{list-style:none;display:grid;gap:13px;position:relative;z-index:1}
.lb-points li{display:flex;gap:11px;align-items:flex-start;color:#DCE9F9}
.lb-points i{color:var(--cyan);margin-top:3px}
.login-panel{display:flex;align-items:center;justify-content:center;padding:40px 32px;background:var(--card)}
.login-card{width:100%;max-width:390px}
.login-card h3{font-size:1.6rem;margin-bottom:6px}
.login-card .sub{color:var(--muted);margin-bottom:26px}
.field{margin-bottom:15px}
.field label{display:block;font-size:.8rem;color:var(--muted);margin-bottom:6px;font-weight:500}
.field input,.field select,.field textarea{width:100%;padding:11px 13px;border:1px solid var(--border);border-radius:var(--rs);background:#fff}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid rgba(11,99,246,.3);outline-offset:1px;border-color:var(--blue)}
.field input:disabled,.field select:disabled{background:#F4F7FC;color:var(--muted)}
.field small{display:block;font-size:.74rem;color:var(--muted);margin-top:5px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 17px;border-radius:var(--rs);border:1px solid var(--border);background:#fff;font-weight:600;transition:.14s}
.btn:hover{border-color:var(--blue);color:var(--blue)}
.btn-primary{background:var(--blue);border-color:var(--blue);color:#fff}
.btn-primary:hover{background:#0952d4;border-color:#0952d4;color:#fff}
.btn-block{width:100%;padding:13px}
.btn-sm{padding:6px 11px;font-size:.8rem}
.btn-danger{color:var(--bad);border-color:#f2c3c9}
.btn-danger:hover{background:var(--bad-bg);border-color:var(--bad);color:var(--bad)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.alert{padding:11px 13px;border-radius:var(--rs);font-size:.86rem;margin-bottom:15px;display:flex;gap:9px;align-items:flex-start}
.alert-bad{background:var(--bad-bg);color:#9c2536;border:1px solid #f2c3c9}
.alert-info{background:#E7F0FE;color:#0B4FBF;border:1px solid #C6DCFB}
.demo-creds{margin-top:26px;border-top:1px solid var(--border);padding-top:18px}
.demo-creds h4{font-size:.8rem;color:var(--muted);margin-bottom:10px;font-weight:600}
.cred-row{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;border:1px solid var(--border);border-radius:var(--rs);margin-bottom:6px;font-size:.82rem}
.cred-row code{background:#F4F7FC;padding:2px 7px;border-radius:5px;font-size:.78rem}
.cred-row button{border:none;background:none;color:var(--blue);font-size:.78rem;font-weight:600}

/* ---------- Shell ---------- */
.app{display:grid;grid-template-columns:var(--sidebar) 1fr;min-height:100vh}
.sidebar{background:linear-gradient(178deg,#0B1C3D,#0A2350 62%,#08306B);color:#C6D6EC;padding:20px 0 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.sb-brand{display:flex;align-items:center;gap:11px;padding:0 20px 20px}
.sb-brand img{width:38px;height:38px;border-radius:10px;background:#fff;padding:2px;object-fit:cover}
.sb-brand h1{font-size:.98rem;color:#fff;letter-spacing:.06em;font-weight:700}
.sb-brand span{color:var(--cyan)}
.sb-label{padding:14px 20px 7px;font-size:.66rem;letter-spacing:.15em;text-transform:uppercase;color:#7FA0CC;font-weight:600}
.sb-nav{list-style:none;overflow-y:auto;flex:1}
.sb-nav a{display:flex;align-items:center;gap:11px;padding:10px 20px;color:#C6D6EC;border-left:3px solid transparent;font-size:.88rem}
.sb-nav a i{width:17px;text-align:center;font-size:.9rem}
.sb-nav a:hover{background:rgba(56,189,248,.1);color:#fff}
.sb-nav a.active{background:linear-gradient(90deg,rgba(11,99,246,.45),transparent);border-left-color:var(--cyan);color:#fff;font-weight:600}
.sb-foot{padding:14px 20px 0;border-top:1px solid rgba(174,190,212,.18);margin-top:10px}
.sb-user{display:flex;gap:10px;align-items:center;margin-bottom:11px}
.avatar{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;display:grid;place-items:center;font-weight:700;font-size:.82rem;flex:none}
.sb-user strong{display:block;color:#fff;font-size:.85rem}
.sb-user small{color:#8FADD3;font-size:.74rem}
.logout{width:100%;background:transparent;border:1px solid rgba(174,190,212,.28);color:#D7E4F6;padding:8px;border-radius:var(--rs);font-size:.82rem}
.logout:hover{background:rgba(208,73,91,.2);border-color:rgba(208,73,91,.55)}
.main{min-width:0;display:flex;flex-direction:column}
.topbar{background:#fff;border-bottom:1px solid var(--border);padding:12px 24px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:20}
.hamburger{display:none;border:1px solid var(--border);background:#fff;border-radius:var(--rs);padding:8px 11px}
.search{flex:1;max-width:430px;display:flex;align-items:center;gap:9px;background:#F4F7FC;border:1px solid var(--border);border-radius:var(--pill);padding:8px 15px}
.search input{border:none;background:none;outline:none;flex:1}
.search i{color:var(--muted)}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.icon-btn{position:relative;border:1px solid var(--border);background:#fff;border-radius:var(--rs);width:36px;height:36px;display:grid;place-items:center;color:var(--ink)}
.icon-btn:hover{border-color:var(--blue);color:var(--blue)}
.dot{position:absolute;top:5px;right:5px;width:8px;height:8px;border-radius:50%;background:var(--bad)}
.content{padding:22px 24px 40px;flex:1}
.page-head{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.page-head h2{font-size:1.45rem}
.page-head p{color:var(--muted);font-size:.86rem;margin-top:3px}
.page-head .spacer{flex:1}

/* ---------- Cards / KPI ---------- */
.kpis{display:grid;gap:13px;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));margin-bottom:20px}
.kpi{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:15px 17px;box-shadow:var(--sh)}
.kpi .l{color:var(--muted);font-size:.78rem}
.kpi .v{font-size:1.62rem;font-weight:700;letter-spacing:-.02em;margin-top:4px;font-variant-numeric:tabular-nums}
.kpi .d{font-size:.76rem;color:var(--muted);margin-top:5px}
.kpi.hero{background:linear-gradient(135deg,#08306B,#0B63F6 70%,#38BDF8 150%);border-color:transparent;color:#fff}
.kpi.hero .l,.kpi.hero .d{color:rgba(226,240,255,.87)}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh);margin-bottom:18px}
.card-h{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px}
.card-h h3{font-size:.98rem}
.card-h .spacer{flex:1}
.card-b{padding:16px 18px}
.grid-2{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(330px,1fr))}
.grid-3{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}

/* ---------- Pipeline ---------- */
.pipeline{display:flex;gap:10px;overflow-x:auto;padding-bottom:5px;margin-bottom:18px}
.pl-stage{flex:1 0 140px;background:#fff;border:1px solid var(--border);border-top:3px solid var(--c,var(--blue));border-radius:var(--rs);padding:12px 14px;cursor:pointer}
.pl-stage:hover{border-color:var(--blue)}
.pl-stage b{display:block;font-size:1.35rem;font-variant-numeric:tabular-nums}
.pl-stage span{color:var(--muted);font-size:.76rem}

/* ---------- Table ---------- */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.86rem}
th{text-align:left;padding:10px 12px;background:#F4F7FC;color:var(--muted);font-weight:600;font-size:.76rem;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;border-bottom:1px solid var(--border)}
td{padding:11px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
tbody tr:hover{background:#F8FBFF}
tbody tr:last-child td{border-bottom:none}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.lead-name{font-weight:600;cursor:pointer}
.lead-name:hover{color:var(--blue)}
.sub{color:var(--muted);font-size:.78rem}
.masked{color:var(--muted);letter-spacing:.04em;font-variant-numeric:tabular-nums}
.masked i{font-size:.7rem;margin-left:5px;opacity:.65}

/* ---------- Badges ---------- */
.badge{display:inline-block;padding:3px 10px;border-radius:var(--pill);font-size:.74rem;font-weight:600;white-space:nowrap}
.s-new{background:#E7F0FE;color:#0B4FBF}
.s-contact{background:var(--violet-bg);color:var(--violet)}
.s-visit{background:var(--warn-bg);color:var(--warn)}
.s-nego{background:var(--teal-bg);color:var(--teal)}
.s-book{background:var(--ok-bg);color:var(--ok)}
.s-lost{background:var(--bad-bg);color:var(--bad)}
.b-grey{background:#F1F4F9;color:#41597C}
.b-hot{background:var(--bad-bg);color:var(--bad)}
.b-warm{background:var(--warn-bg);color:var(--warn)}
.b-cold{background:#E4EEF4;color:#5b7f95}
.chip{display:inline-block;padding:3px 10px;border-radius:var(--pill);font-size:.72rem;font-weight:600;border:1px solid transparent}
.src-housing{background:#E8F1FF;color:#0B4FBF;border-color:#C6DCFB}
.src-acres{background:#FFF0E6;color:#B5490C;border-color:#F7D4BC}
.src-mb{background:#FDECEF;color:#B31335;border-color:#F6C7D0}
.src-meta{background:#EAF0FF;color:#1B49C4;border-color:#CBD9FA}
.src-cp{background:#F0EAFE;color:#5B34C7;border-color:#DCD0FA}
.chip:not([class*=src-]){background:#F1F4F9;color:#41597C;border-color:#E2E9F3}
.rera{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:600;color:#0E7A54;background:var(--ok-bg);border:1px solid #BFE7D3;padding:2px 9px;border-radius:var(--pill)}

/* ---------- Filters ---------- */
.filters{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:14px;align-items:center}
.filters select,.filters input{padding:8px 11px;border:1px solid var(--border);border-radius:var(--rs);background:#fff;font-size:.84rem}

/* ---------- Bars ---------- */
.bar-row{display:grid;grid-template-columns:130px 1fr 66px;gap:11px;align-items:center;margin-bottom:9px;font-size:.83rem}
.bar{height:9px;background:#EDF2F9;border-radius:var(--pill);overflow:hidden}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--cyan));border-radius:var(--pill)}
.bar.g i{background:linear-gradient(90deg,#0E7A54,#3ec98d)}
.bar.o i{background:linear-gradient(90deg,#c96f0d,#f0ab4d)}
.bar-row .n{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}

/* ---------- Progress ---------- */
.progress{height:10px;background:#EDF2F9;border-radius:var(--pill);overflow:hidden;margin:8px 0}
.progress i{display:block;height:100%;background:linear-gradient(90deg,var(--ok),#4ed49b)}

/* ---------- Inventory grid ---------- */
.units{display:grid;gap:9px;grid-template-columns:repeat(auto-fill,minmax(128px,1fr))}
.unit{border:1px solid var(--border);border-radius:var(--rs);padding:10px 11px;background:#fff;cursor:pointer;transition:.13s}
.unit:hover{border-color:var(--blue);transform:translateY(-1px)}
.unit b{display:block;font-size:.95rem}
.unit small{color:var(--muted);font-size:.73rem;display:block;margin-top:2px}
.unit .st{margin-top:7px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.unit.Available{border-left:3px solid var(--ok)} .unit.Available .st{color:var(--ok)}
.unit.Blocked{border-left:3px solid var(--warn);background:#FFFCF6} .unit.Blocked .st{color:var(--warn)}
.unit.Booked,.unit.Registered{border-left:3px solid var(--bad);background:#FEF8F9} .unit.Booked .st,.unit.Registered .st{color:var(--bad)}
.unit.Hold{border-left:3px solid var(--muted)} .unit.Hold .st{color:var(--muted)}

/* ---------- Modal ---------- */
.modal{position:fixed;inset:0;background:rgba(11,28,61,.5);display:none;align-items:flex-start;justify-content:center;padding:34px 16px;z-index:60;overflow-y:auto}
.modal.open{display:flex}
.modal-card{background:#fff;border-radius:var(--r);box-shadow:var(--sh-lg);width:100%;max-width:880px;overflow:hidden}
.modal-card.sm{max-width:470px}
.modal-h{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px}
.modal-h h3{font-size:1.05rem}
.modal-h .spacer{flex:1}
.modal-b{padding:20px;max-height:74vh;overflow-y:auto}
.modal-f{padding:14px 20px;border-top:1px solid var(--border);display:flex;gap:9px;justify-content:flex-end;background:#F8FBFF}
.close-x{border:none;background:none;font-size:1.15rem;color:var(--muted);line-height:1}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px;overflow-x:auto}
.tabs button{border:none;background:none;padding:9px 14px;font-size:.86rem;font-weight:600;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}
.tabs button.active{color:var(--blue);border-bottom-color:var(--blue)}
.form-grid{display:grid;gap:13px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.kv{display:grid;grid-template-columns:150px 1fr;gap:7px 14px;font-size:.87rem}
.kv dt{color:var(--muted)}
.kv dd{font-weight:500}
.timeline{list-style:none}
.timeline li{padding:10px 0 10px 18px;border-left:2px solid var(--border);position:relative;font-size:.86rem}
.timeline li::before{content:"";position:absolute;left:-5px;top:15px;width:8px;height:8px;border-radius:50%;background:var(--blue)}
.timeline small{display:block;color:var(--muted);font-size:.74rem;margin-top:2px}
.doc-lines{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8rem;line-height:1.75;white-space:pre-wrap;background:#F8FBFF;border:1px solid var(--border);border-radius:var(--rs);padding:16px}

/* ---------- Toast ---------- */
.toasts{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:9px;z-index:90}
.toast{background:#0B1C3D;color:#fff;padding:11px 16px;border-radius:var(--rs);box-shadow:var(--sh-lg);font-size:.86rem;max-width:340px;display:flex;gap:9px;align-items:flex-start}
.toast.ok{background:#0E7A54}
.toast.bad{background:#a52e3f}

.empty{text-align:center;padding:44px 20px;color:var(--muted)}
.empty i{font-size:1.9rem;opacity:.4;display:block;margin-bottom:11px}
.right{text-align:right}
.mt{margin-top:14px}
.hidden{display:none !important}

@media(max-width:900px){
  .login-wrap{grid-template-columns:1fr}
  .login-brand{display:none}
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed;left:0;top:0;bottom:0;width:250px;z-index:70;transform:translateX(-100%);transition:.2s}
  .sidebar.open{transform:none}
  .hamburger{display:grid;place-items:center}
  .content{padding:16px}
  .kv{grid-template-columns:1fr}
}

/* ---------- v2 additions ---------- */
.alert-ok{background:var(--ok-bg);color:#0E7A54;border:1px solid #BFE7D3}
.rule{border:none;border-top:1px solid var(--border);margin:18px 0}
.mt{margin-top:14px}
.right{text-align:right}
.btn-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.btn-danger-solid{background:var(--bad);border-color:var(--bad);color:#fff}
.btn-danger-solid:hover{background:#b83a4c;border-color:#b83a4c;color:#fff}
code.wrap{word-break:break-all;font-size:.78rem}
.login-links{display:flex;justify-content:space-between;margin-top:16px;font-size:.85rem}
.pw-wrap{position:relative}
.pw-wrap input{padding-right:42px;width:100%}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:none;background:none;color:var(--muted);padding:6px 8px}
.pw-eye:hover{color:var(--blue)}
.pw-meter{display:flex;align-items:center;gap:10px;margin:-6px 0 14px}
.pw-bar{flex:1;height:6px;background:#EDF2F9;border-radius:var(--pill);overflow:hidden}
.pw-bar i{display:block;height:100%;border-radius:var(--pill);transition:width .2s}
.pw-bar i.s0,.pw-bar i.s1{background:var(--bad)}
.pw-bar i.s2{background:var(--warn)}
.pw-bar i.s3{background:#4a9fd8}
.pw-bar i.s4{background:var(--ok)}
.pw-label{font-size:.74rem;font-weight:600;color:var(--muted)}
.pw-label.s0,.pw-label.s1{color:var(--bad)}
.pw-label.s2{color:var(--warn)}
.pw-label.s4{color:var(--ok)}
.otp{letter-spacing:.5em;font-size:1.15rem;text-align:center;font-variant-numeric:tabular-nums}
.empty strong{display:block;font-size:1rem;color:var(--ink);margin-bottom:5px}
.empty p{max-width:44ch;margin:0 auto}
.setup-steps{display:grid;gap:11px}
.setup-step{display:flex;gap:13px;align-items:center;border:1px solid var(--border);border-radius:var(--rs);padding:13px 15px}
.setup-step .num{width:26px;height:26px;border-radius:50%;background:var(--lightblue);color:var(--blue);display:grid;place-items:center;font-weight:700;font-size:.8rem;flex:none}
.setup-step strong{display:block}
.setup-step p{color:var(--muted);font-size:.82rem;margin-top:2px}
.setup-step div{flex:1}
.card-f{padding:14px 18px;border-top:1px solid var(--border);display:flex;gap:9px;align-items:center;background:#F8FBFF}
.modal-f.inline{margin:18px -20px -20px;border-radius:0}
.avatar.lg{width:42px;height:42px;font-size:.95rem}
.user-cell{display:flex;gap:9px;align-items:center}
.steps-bar{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap}
.steps-bar .step{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid var(--border);border-radius:var(--pill);background:#fff;font-size:.84rem;color:var(--muted)}
.steps-bar .step span{width:20px;height:20px;border-radius:50%;background:#EDF2F9;display:grid;place-items:center;font-size:.72rem;font-weight:700}
.steps-bar .step.active{border-color:var(--blue);color:var(--blue);font-weight:600}
.steps-bar .step.active span{background:var(--blue);color:#fff}
.steps-bar .step.done{color:var(--ok);border-color:#BFE7D3}
.steps-bar .step.done span{background:var(--ok);color:#fff}
.dropzone{border:2px dashed var(--border);border-radius:var(--r);padding:40px 20px;text-align:center;cursor:pointer;transition:.15s}
.dropzone:hover,.dropzone.over{border-color:var(--blue);background:#F6FAFF}
.dropzone i{font-size:2rem;color:var(--blue);opacity:.7;display:block;margin-bottom:12px}
.dropzone strong{display:block;font-size:1rem}
.dropzone p{color:var(--muted);font-size:.85rem;margin-top:5px}
.map-grid{display:grid;gap:9px}
.map-row{display:grid;grid-template-columns:1fr 22px 1fr;gap:11px;align-items:center;border:1px solid var(--border);border-radius:var(--rs);padding:10px 13px}
.map-row i{color:var(--muted);text-align:center}
.map-col strong{display:block;font-size:.88rem}
.map-col .sub{font-size:.75rem}
.map-row select{padding:8px 10px;border:1px solid var(--border);border-radius:var(--rs);background:#fff;width:100%}
.row-bad td{background:#FEF6F7}
.row-warn td{background:#FFFCF5}
.inline-check{display:flex;align-items:center;gap:7px;font-size:.83rem;color:var(--muted)}
.done-mark{font-size:2.4rem;color:var(--ok);margin-bottom:8px}
.perm-editor{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.perm-group{border:1px solid var(--border);border-radius:var(--rs);padding:12px 14px}
.perm-group h4{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--blue);margin-bottom:9px}
.perm-row{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:.85rem}
.perm-row span{flex:1}
.perm-src{font-size:.68rem;color:var(--muted);font-style:normal;text-transform:uppercase;letter-spacing:.04em}
.perm-view{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.perm-view h4{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:7px}
.perm-view .chip{margin:0 5px 5px 0}
.int-card{border:1px solid var(--border);border-radius:var(--rs);padding:14px}
.int-head{display:flex;align-items:center;gap:9px;margin-bottom:7px}
.int-head h4{font-size:.92rem;flex:1}
.log-actions{display:block;margin-top:6px}
.timeline li span{word-break:break-word}

.target-pick{display:grid;gap:9px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin-bottom:6px}
.target-btn{text-align:left;border:1px solid var(--border);background:#fff;border-radius:var(--rs);padding:11px 13px}
.target-btn strong{display:block;font-size:.9rem}
.target-btn span{color:var(--muted);font-size:.78rem}
.target-btn.on{border-color:var(--blue);background:#F4F8FF;box-shadow:0 0 0 2px rgba(11,99,246,.14)}
.map-row.is-custom{border-style:dashed;background:#FCFDFF}
.map-row select optgroup{font-style:normal;font-weight:600}

/* =========================================================
   PREMIUM LAYER — typography, depth, charts, board
   ========================================================= */
:root{
  --ink:#0C1B33; --muted:#63799C; --border:#E3EAF4; --bg:#F3F6FB;
  --sh:0 1px 2px rgba(12,27,51,.04),0 4px 14px rgba(12,27,51,.05);
  --sh-md:0 2px 6px rgba(12,27,51,.06),0 12px 32px rgba(12,27,51,.08);
  --sh-lg:0 24px 60px rgba(12,27,51,.20);
  --sidebar:262px;
}
body{font-size:14.5px;letter-spacing:-.005em;background:var(--bg)}
h2,h3,h4{letter-spacing:-.02em}
.page-head h2{font-size:1.55rem;font-weight:700}
.page-head p{font-size:.87rem}
.card{border-radius:16px;box-shadow:var(--sh);border-color:var(--border);overflow:hidden}
.card-h{padding:15px 20px;background:linear-gradient(180deg,#fff,#FCFDFF)}
.card-h h3{font-size:.97rem;font-weight:650}
.card-b{padding:18px 20px}
.grid-wide{display:grid;gap:18px;grid-template-columns:1.45fr 1fr;margin-bottom:18px}
.grid-2,.grid-3{margin-bottom:18px}
@media(max-width:1100px){.grid-wide{grid-template-columns:1fr}}

/* ---- sidebar ---- */
.sidebar{background:linear-gradient(180deg,#0A1730,#0B2247 55%,#082C5E);box-shadow:inset -1px 0 0 rgba(56,189,248,.1)}
.sb-brand{padding:4px 20px 22px}
.sb-brand h1{font-size:1rem;letter-spacing:.08em}
.sb-nav a{padding:10px 20px;border-radius:0;font-size:.885rem;letter-spacing:-.005em}
.sb-nav a.active{background:linear-gradient(90deg,rgba(11,99,246,.5),rgba(11,99,246,.04));box-shadow:inset 0 0 24px rgba(56,189,248,.08)}
.topbar{padding:13px 26px;background:rgba(255,255,255,.86);backdrop-filter:saturate(180%) blur(12px)}
.content{padding:24px 26px 48px}

/* ---- KPI ---- */
.kpis{gap:15px;grid-template-columns:repeat(auto-fit,minmax(196px,1fr));margin-bottom:18px}
.kpi{border-radius:16px;padding:16px 18px;box-shadow:var(--sh);position:relative;overflow:hidden;transition:.18s}
.kpi:hover{box-shadow:var(--sh-md);transform:translateY(-1px)}
.kpi-top{display:flex;align-items:center;gap:8px}
.kpi-top .l{flex:1;font-size:.79rem;color:var(--muted);font-weight:500}
.kpi-top i{color:var(--blue);opacity:.42;font-size:.9rem}
.kpi .v{font-size:1.75rem;font-weight:700;letter-spacing:-.035em;margin-top:6px;line-height:1.1}
.kpi .d{font-size:.775rem;color:var(--muted);margin-top:6px;display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.kpi.hero{background:linear-gradient(135deg,#072654 0%,#0B63F6 62%,#38BDF8 145%);box-shadow:0 10px 30px rgba(11,99,246,.28)}
.kpi.hero .kpi-top i{color:#fff;opacity:.55}
.kpi-spark{margin-top:10px;height:26px;opacity:.9}
.spark-svg{width:100%;height:26px;display:block}
.delta{display:inline-flex;align-items:center;gap:3px;font-weight:650;font-size:.75rem}
.delta.up{color:var(--ok)} .delta.down{color:var(--bad)}
.kpi.hero .delta{color:#fff}

/* ---- charts ---- */
.chart-donut{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.donut-svg{width:168px;height:168px;flex:none}
.donut-svg .slice{transition:transform .18s;transform-origin:center}
.donut-svg .slice:hover{transform:scale(1.035)}
.donut-total{text-anchor:middle;font-size:22px;font-weight:700;fill:var(--ink)}
.donut-label{text-anchor:middle;font-size:10px;fill:var(--muted);letter-spacing:.08em;text-transform:uppercase}
.chart-legend{list-style:none;flex:1;min-width:170px;display:grid;gap:7px}
.chart-legend li{display:flex;align-items:center;gap:9px;font-size:.83rem}
.chart-legend i{width:9px;height:9px;border-radius:3px;flex:none}
.chart-legend span{flex:1;color:var(--ink)}
.chart-legend b{font-variant-numeric:tabular-nums}
.chart-legend em{font-style:normal;color:var(--muted);font-size:.75rem;width:34px;text-align:right}
.chart-legend.row{display:flex;gap:16px;margin-top:10px;justify-content:center}
.chart-legend.row li{font-size:.78rem;color:var(--muted)}
.area-svg{width:100%;height:210px;display:block}
.area-svg .grid{stroke:#EDF2F9;stroke-width:1}
.area-svg .axis{font-size:9.5px;fill:var(--muted)}
.area-svg circle{cursor:pointer}
.area-svg circle:hover{r:5}
.chart-empty{display:flex;flex-direction:column;align-items:center;gap:9px;padding:34px;color:var(--muted);font-size:.85rem}
.chart-empty i{font-size:1.6rem;opacity:.32}

/* funnel */
.chart-funnel{display:grid;gap:9px}
.fn-row{display:grid;grid-template-columns:190px 1fr 56px;gap:12px;align-items:center;cursor:pointer;padding:3px;border-radius:9px;transition:.14s}
.fn-row:hover{background:#F6FAFF}
.fn-label{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:.85rem}
.fn-label b{font-variant-numeric:tabular-nums;font-size:.95rem}
.fn-track{position:relative;height:26px;background:#EFF4FA;border-radius:8px;overflow:hidden}
.fn-fill{height:100%;border-radius:8px;transition:width .5s cubic-bezier(.2,.8,.2,1)}
.fn-pct{position:absolute;right:9px;top:50%;transform:translateY(-50%);font-size:.72rem;font-weight:650;color:var(--ink);mix-blend-mode:luminosity}
.fn-drop{font-size:.74rem;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}
.fn-drop.hot{color:var(--bad);font-weight:650}
@media(max-width:640px){.fn-row{grid-template-columns:1fr}.fn-drop{display:none}}

/* bars */
.chart-bars{display:grid;gap:11px}
.cb-row{display:grid;grid-template-columns:130px 1fr 92px;gap:12px;align-items:center;font-size:.83rem}
.cb-label{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cb-track{height:8px;background:#EFF4FA;border-radius:99px;overflow:hidden}
.cb-fill{height:100%;border-radius:99px;transition:width .5s cubic-bezier(.2,.8,.2,1)}
.cb-val{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.cb-val em{display:block;font-style:normal;font-weight:400;color:var(--muted);font-size:.72rem}

/* gauge */
.gauge-row{display:flex;gap:16px;justify-content:space-around;flex-wrap:wrap}
.chart-gauge svg{width:150px;height:102px}
.gauge-fill{transition:d .5s}
.gauge-value{text-anchor:middle;font-size:19px;font-weight:700;fill:var(--ink)}
.gauge-sub{text-anchor:middle;font-size:9.5px;fill:var(--muted)}

.collect-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(112px,1fr))}
.collect-grid span{display:block;color:var(--muted);font-size:.76rem}
.collect-grid b{font-size:1.05rem;font-variant-numeric:tabular-nums}
.collect-grid b.bad{color:var(--bad)}
.progress.lg{height:12px;border-radius:99px}

/* ---- lead table ---- */
.lead-table td{padding:12px}
.lead-cell{display:flex;gap:10px;align-items:center;cursor:pointer}
.lead-cell:hover strong{color:var(--blue)}
.temp-dot{width:8px;height:8px;border-radius:50%;flex:none}
.temp-dot.t-hot{background:var(--bad);box-shadow:0 0 0 3px rgba(208,73,91,.15)}
.temp-dot.t-warm{background:var(--warn);box-shadow:0 0 0 3px rgba(224,138,30,.15)}
.temp-dot.t-cold{background:#7FA0CC;box-shadow:0 0 0 3px rgba(127,160,204,.15)}
.score{display:inline-block;min-width:30px;padding:2px 7px;border-radius:7px;font-weight:650;font-size:.78rem;font-variant-numeric:tabular-nums}
.score.s0{background:#EEF2F7;color:#64748B}
.score.s1{background:#E4EEF9;color:#2F6DA8}
.score.s2{background:var(--warn-bg);color:var(--warn)}
.score.s3,.score.s4{background:var(--ok-bg);color:var(--ok)}
td.overdue{color:var(--bad);font-weight:650;font-size:.83rem}

/* segmented toggle */
.seg{display:inline-flex;background:#EAF0F8;border-radius:10px;padding:3px;gap:2px}
.seg button{border:none;background:none;padding:7px 13px;border-radius:8px;font-size:.83rem;font-weight:600;color:var(--muted);display:flex;align-items:center;gap:6px}
.seg button.on{background:#fff;color:var(--blue);box-shadow:0 1px 3px rgba(12,27,51,.12)}

.filters{gap:10px;align-items:stretch}
.filter-search{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:10px;padding:0 12px;min-width:230px}
.filter-search i{color:var(--muted);font-size:.82rem}
.filter-search input{border:none;outline:none;padding:9px 0;flex:1;background:none}
.filters select{border-radius:10px;padding:9px 12px}

/* ---- kanban board ---- */
.board{display:flex;gap:13px;overflow-x:auto;padding-bottom:10px;align-items:flex-start}
.board-col{flex:0 0 268px;background:#EDF2F9;border-radius:14px;display:flex;flex-direction:column;max-height:calc(100vh - 250px)}
.board-head{display:flex;align-items:center;gap:8px;padding:13px 14px 11px;font-size:.85rem;flex-wrap:wrap}
.board-head .dot{width:8px;height:8px;border-radius:50%;background:var(--c)}
.board-head strong{flex:1;font-weight:650}
.board-head .count{background:#fff;border-radius:99px;padding:1px 9px;font-size:.75rem;font-weight:700;color:var(--c)}
.board-head em{width:100%;font-style:normal;color:var(--muted);font-size:.74rem;font-variant-numeric:tabular-nums}
.board-body{overflow-y:auto;padding:0 10px 10px;display:grid;gap:9px}
.lead-card{background:#fff;border-radius:11px;padding:12px;box-shadow:var(--sh);cursor:pointer;border-left:3px solid var(--c);transition:.15s}
.lead-card:hover{box-shadow:var(--sh-md);transform:translateY(-1px)}
.lead-card header{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.lead-card header strong{flex:1;font-size:.875rem}
.lc-req{font-size:.78rem;color:var(--muted);margin-bottom:5px}
.lc-proj{font-size:.76rem;color:var(--ink);display:flex;gap:6px;align-items:center;margin-bottom:8px}
.lc-proj i{color:var(--muted);font-size:.7rem}
.lead-card footer{display:flex;align-items:center;gap:8px;justify-content:space-between}
.lc-owner{font-size:.72rem;color:var(--muted)}
.lc-move{width:100%;margin-top:9px;border:1px solid var(--border);border-radius:8px;padding:5px 8px;font-size:.75rem;background:#FAFCFF;color:var(--muted)}
.lc-move:hover{border-color:var(--blue);color:var(--blue)}
.board-empty{color:var(--muted);font-size:.78rem;text-align:center;padding:18px 0}

/* ---- lead editor ---- */
.lead-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:.76rem;color:var(--muted);padding-bottom:14px;margin-bottom:16px;border-bottom:1px solid var(--border)}
.lead-meta i{margin-right:5px;opacity:.6}
.edit-sec{margin-bottom:20px}
.edit-sec h4{font-size:.74rem;text-transform:uppercase;letter-spacing:.09em;color:var(--blue);margin-bottom:12px;display:flex;align-items:center;gap:8px}
.edit-sec h4 i{opacity:.6}
.split-strip{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));background:#F6FAFF;border:1px solid var(--border);border-radius:11px;padding:13px}
.split-strip span{display:block;color:var(--muted);font-size:.73rem}
.split-strip b{font-size:.97rem;font-variant-numeric:tabular-nums}

.modal-card{border-radius:18px;box-shadow:var(--sh-lg)}
.modal-h{padding:18px 22px}
.modal-b{padding:22px}
.setup-step{border-radius:12px;padding:15px 17px}
.step-ico{width:36px;height:36px;border-radius:11px;background:var(--lightblue);color:var(--blue);display:grid;place-items:center;flex:none}
.welcome-head h3{font-size:1.2rem}
.btn{border-radius:10px;transition:.15s}
.btn-primary{box-shadow:0 2px 8px rgba(11,99,246,.24)}
.badge{padding:3px 10px;font-weight:650}
.chip{font-weight:600}

/* =========================================================
   GLASS + MOTION LAYER
   ========================================================= */
body{
  background:
    radial-gradient(1100px 620px at 8% -8%, rgba(11,99,246,.13), transparent 62%),
    radial-gradient(900px 540px at 102% 4%, rgba(56,189,248,.15), transparent 58%),
    radial-gradient(760px 620px at 46% 108%, rgba(124,92,240,.10), transparent 62%),
    #EEF3FA;
  background-attachment:fixed;
}
.aurora{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.aurora span{
  position:absolute;border-radius:50%;filter:blur(78px);opacity:.5;
  animation:drift 26s ease-in-out infinite alternate;
}
.aurora span:nth-child(1){width:520px;height:520px;top:-160px;left:-120px;background:rgba(11,99,246,.30)}
.aurora span:nth-child(2){width:440px;height:440px;top:22%;right:-140px;background:rgba(56,189,248,.30);animation-delay:-9s}
.aurora span:nth-child(3){width:480px;height:480px;bottom:-200px;left:38%;background:rgba(124,92,240,.22);animation-delay:-16s}
@keyframes drift{
  0%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(46px,-38px,0) scale(1.11)}
  100%{transform:translate3d(-34px,32px,0) scale(.95)}
}
.app,.login-wrap{position:relative;z-index:1}

/* ---- glass surfaces ---- */
.card,.kpi,.int-card,.setup-step,.board-col,.lead-card,.modal-card,.perm-group,.map-row{
  background:rgba(255,255,255,.72);
  backdrop-filter:blur(18px) saturate(180%);
  -webkit-backdrop-filter:blur(18px) saturate(180%);
  border:1px solid rgba(255,255,255,.7);
  box-shadow:0 1px 2px rgba(12,27,51,.04),0 10px 30px rgba(12,27,51,.07),inset 0 1px 0 rgba(255,255,255,.85);
}
.card-h{background:linear-gradient(180deg,rgba(255,255,255,.55),rgba(255,255,255,.14));border-bottom:1px solid rgba(227,234,244,.85)}
.topbar{background:rgba(255,255,255,.62);backdrop-filter:blur(20px) saturate(190%);-webkit-backdrop-filter:blur(20px) saturate(190%);border-bottom:1px solid rgba(255,255,255,.65)}
.modal{background:rgba(9,20,40,.44);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
.modal-card{background:rgba(255,255,255,.9);backdrop-filter:blur(26px) saturate(180%);-webkit-backdrop-filter:blur(26px) saturate(180%)}
.board-col{background:rgba(237,242,249,.62)}
.sidebar{
  background:linear-gradient(180deg,rgba(8,20,44,.94),rgba(9,32,72,.95) 55%,rgba(6,40,88,.96));
  backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);
  box-shadow:inset -1px 0 0 rgba(56,189,248,.16),4px 0 30px rgba(8,20,44,.14);
}
.sidebar::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(420px 260px at 20% 6%, rgba(56,189,248,.20), transparent 66%);
}
.sb-brand,.sb-nav,.sb-foot,.sb-label{position:relative;z-index:1}

/* ---- pointer glow ---- */
.glow{position:relative;overflow:hidden}
.glow::after{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .25s;
  background:radial-gradient(360px circle at var(--mx,50%) var(--my,50%), rgba(11,99,246,.10), transparent 62%);
}
.glow:hover::after{opacity:1}
.kpi.hero.glow::after{background:radial-gradient(320px circle at var(--mx,50%) var(--my,50%), rgba(255,255,255,.22), transparent 60%)}

/* ---- hero sheen ---- */
.kpi.hero{position:relative;overflow:hidden}
.kpi.hero::before{
  content:"";position:absolute;top:-60%;left:-40%;width:60%;height:220%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.22),transparent);
  transform:rotate(18deg);animation:sheen 6.5s ease-in-out infinite;
}
@keyframes sheen{0%,72%{left:-40%}100%{left:130%}}

/* ---- entrance + scroll reveal ---- */
.reveal{opacity:0;transform:translateY(16px) scale(.995);
  transition:opacity .6s cubic-bezier(.22,.8,.28,1) var(--d,0ms),transform .6s cubic-bezier(.22,.8,.28,1) var(--d,0ms)}
.reveal.in{opacity:1;transform:none}
.page-in>*{animation:riseIn .5s cubic-bezier(.22,.8,.28,1) both}
.page-in>*:nth-child(1){animation-delay:.02s}
.page-in>*:nth-child(2){animation-delay:.07s}
.page-in>*:nth-child(3){animation-delay:.12s}
.page-in>*:nth-child(4){animation-delay:.17s}
.page-in>*:nth-child(5){animation-delay:.22s}
.page-in>*:nth-child(n+6){animation-delay:.26s}
@keyframes riseIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.kpi{transition:transform .28s cubic-bezier(.22,.8,.28,1),box-shadow .28s}
.kpi:hover{transform:translateY(-4px) scale(1.012);box-shadow:0 18px 44px rgba(12,27,51,.14)}
.kpi.hero:hover{box-shadow:0 22px 54px rgba(11,99,246,.36)}
.card{transition:box-shadow .3s,transform .3s}
.card:hover{box-shadow:0 2px 4px rgba(12,27,51,.05),0 18px 46px rgba(12,27,51,.10)}
.lead-card{transition:transform .22s cubic-bezier(.22,.8,.28,1),box-shadow .22s}
.lead-card:hover{transform:translateY(-3px) scale(1.015)}
tbody tr{transition:background .16s,transform .16s}
.lead-table tbody tr:hover{background:rgba(246,250,255,.9);transform:translateX(2px)}

/* ---- ripple ---- */
.btn,.seg button,.lead-card,.target-btn{position:relative;overflow:hidden}
.ripple{position:absolute;border-radius:50%;background:rgba(11,99,246,.20);
  transform:scale(0);animation:ripple .6s ease-out;pointer-events:none}
.btn-primary .ripple,.btn-danger-solid .ripple{background:rgba(255,255,255,.34)}
@keyframes ripple{to{transform:scale(1);opacity:0}}

/* ---- chart motion ---- */
.slice.pop-in{opacity:0;transform:scale(.86);transform-origin:center;
  transition:opacity .5s cubic-bezier(.22,.8,.28,1) var(--d,0ms),transform .5s cubic-bezier(.22,.8,.28,1) var(--d,0ms)}
.slice.pop-in.in{opacity:1;transform:scale(1)}
.fn-fill,.cb-fill,.stack-seg{transition:width .9s cubic-bezier(.22,.8,.28,1)}
.ring-arc{animation:ringDraw 1.2s cubic-bezier(.22,.8,.28,1) var(--d,0ms) forwards}
@keyframes ringDraw{to{stroke-dashoffset:var(--target)}}
.gauge-fill{animation:fadeScale .8s cubic-bezier(.22,.8,.28,1) both}
@keyframes fadeScale{from{opacity:0;transform:scale(.9);transform-origin:center bottom}to{opacity:1;transform:none}}

/* ---- concentric rings ---- */
.chart-rings{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.chart-rings svg{width:190px;height:190px;flex:none}

/* ---- calendar heatmap ---- */
.chart-cal{overflow-x:auto}
.cal-grid{display:flex;gap:3px;min-width:max-content}
.cal-col{display:grid;gap:3px}
.cal-cell{width:13px;height:13px;border-radius:3px;background:#EAF0F8;display:block;transition:transform .15s}
.cal-cell:hover{transform:scale(1.35)}
.cal-cell.l1{background:#C9DEFB}.cal-cell.l2{background:#8CB8F7}
.cal-cell.l3{background:#4B8CF2}.cal-cell.l4{background:#0B63F6}
.cal-cell.future{background:transparent}
.cal-key{display:flex;align-items:center;gap:4px;margin-top:10px;font-size:.72rem;color:var(--muted)}
.cal-key .cal-cell{width:11px;height:11px}

/* ---- stacked bar ---- */
.chart-stack .stack-bar{display:flex;height:32px;border-radius:10px;overflow:hidden;background:#EDF2F9}
.stack-seg{height:100%}
.chart-legend.row.wrap{flex-wrap:wrap;justify-content:flex-start;gap:14px}

/* ---- misc polish ---- */
.sb-nav a{transition:background .18s,color .18s,padding-left .18s}
.sb-nav a:hover{padding-left:24px}
.sb-nav a.active::after{content:"";position:absolute;right:14px;width:5px;height:5px;border-radius:50%;
  background:var(--cyan);box-shadow:0 0 10px var(--cyan)}
.sb-nav li{position:relative}
.badge,.chip{transition:transform .15s}
.badge:hover,.chip:hover{transform:translateY(-1px)}
.icon-btn{transition:transform .18s,border-color .18s}
.icon-btn:hover{transform:translateY(-2px)}
.toast{animation:toastIn .38s cubic-bezier(.22,1.4,.4,1) both;backdrop-filter:blur(12px)}
@keyframes toastIn{from{opacity:0;transform:translateX(40px) scale(.94)}to{opacity:1;transform:none}}
.modal.open .modal-card{animation:modalIn .34s cubic-bezier(.22,.9,.3,1) both}
@keyframes modalIn{from{opacity:0;transform:translateY(22px) scale(.975)}to{opacity:1;transform:none}}
.board-col{transition:box-shadow .25s}
.board-col:hover{box-shadow:0 14px 36px rgba(12,27,51,.10)}
.progress i,.progress.lg i{transition:width .9s cubic-bezier(.22,.8,.28,1)}
.avatar{box-shadow:0 3px 10px rgba(11,99,246,.30)}
.dropzone{transition:border-color .2s,background .2s,transform .2s}
.dropzone.over{transform:scale(1.012)}
.temp-dot.t-hot{animation:pulseHot 2.2s ease-in-out infinite}
@keyframes pulseHot{0%,100%{box-shadow:0 0 0 3px rgba(208,73,91,.15)}50%{box-shadow:0 0 0 6px rgba(208,73,91,.05)}}
.kpi .v{background:linear-gradient(180deg,var(--ink),#2C4468);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.kpi.hero .v{background:none;-webkit-text-fill-color:#fff}

@media (prefers-reduced-motion: reduce){
  .aurora span,.kpi.hero::before,.temp-dot.t-hot{animation:none}
  .reveal{opacity:1;transform:none}
  *{animation-duration:.01ms !important;transition-duration:.01ms !important}
}

/* ---- chart fixes: funnel, area, calendar ---- */
.fn-row{grid-template-columns:190px 1fr 74px}
.fn-step{text-align:right;line-height:1.25}
.fn-step b{display:block;font-size:.86rem;font-variant-numeric:tabular-nums}
.fn-step b.good{color:var(--ok)} .fn-step b.mid{color:var(--warn)} .fn-step b.poor{color:var(--bad)}
.fn-step em{font-style:normal;font-size:.68rem;color:var(--muted)}
.fn-foot{font-size:.74rem;color:var(--muted);margin-top:12px;line-height:1.5}
.fn-lost{display:flex;gap:10px;align-items:flex-start;margin-top:14px;padding:11px 13px;
  background:rgba(251,233,235,.7);border:1px solid #F2C3C9;border-radius:11px;font-size:.79rem;color:#9c2536}
.fn-lost i{margin-top:2px}
@media(max-width:640px){.fn-row{grid-template-columns:1fr}.fn-step{display:none}}

.area-svg{width:100%;height:auto;max-height:280px}
.area-svg .grid{stroke:#E6EDF6;stroke-width:1;stroke-dasharray:3 4}
.area-svg .axis-line{stroke:#CFDCEC;stroke-width:1}
.area-svg .axis{font-size:10px;fill:var(--muted);font-variant-numeric:tabular-nums}
.area-svg .hit{fill:transparent}
.area-svg .hit:hover{fill:rgba(11,99,246,.05)}
.area-svg .pt{transition:r .15s}
.area-svg .pt-last{filter:drop-shadow(0 2px 5px rgba(12,27,51,.28))}
.area-svg .pt-val{font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums}
.chart-legend.totals li b{font-variant-numeric:tabular-nums}
.chart-legend.totals em{font-style:normal;font-size:.72rem;font-weight:650;width:auto}
.chart-legend.totals em.up{color:var(--ok)} .chart-legend.totals em.down{color:var(--bad)}

.cal-body{display:flex;gap:8px;align-items:flex-start}
.cal-days{display:grid;grid-template-rows:repeat(7,13px);gap:3px;padding-top:20px;flex:none}
.cal-days span{font-size:.63rem;color:var(--muted);line-height:13px;text-align:right;width:24px}
.cal-scroll{overflow-x:auto;padding-bottom:4px;flex:1}
.cal-months{position:relative;height:16px;min-width:max-content}
.cal-months span{position:absolute;font-size:.66rem;color:var(--muted);white-space:nowrap}
.cal-stats{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));margin-top:16px;
  padding-top:14px;border-top:1px solid var(--border)}
.cal-stats b{display:block;font-size:1.02rem;font-weight:700;font-variant-numeric:tabular-nums}
.cal-stats span{font-size:.7rem;color:var(--muted);line-height:1.35;display:block}
.cal-none{font-size:.8rem;color:var(--muted);margin-top:14px}

/* ---- cloud sync chip ---- */
.sync-chip{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:99px;
  border:1px solid var(--border);background:rgba(255,255,255,.7);font-size:.78rem;font-weight:600;
  color:var(--muted);cursor:pointer;transition:.18s;white-space:nowrap;max-width:210px;overflow:hidden}
.sync-chip:hover{border-color:var(--blue);color:var(--blue)}
.sync-chip span{overflow:hidden;text-overflow:ellipsis}
.sync-chip.ready{color:var(--ok);border-color:#BFE7D3;background:rgba(227,246,236,.72)}
.sync-chip.syncing{color:var(--blue);border-color:#C6DCFB;background:rgba(231,240,254,.72)}
.sync-chip.error{color:var(--bad);border-color:#F2C3C9;background:rgba(251,233,235,.72)}
.sync-chip.offline{color:var(--warn);border-color:#F7D4BC;background:rgba(253,241,223,.72)}
.cloud-counts{display:grid;gap:11px;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));
  padding:14px;background:rgba(246,250,255,.75);border:1px solid var(--border);border-radius:12px}
.cloud-counts b{display:block;font-size:1.15rem;font-weight:700;font-variant-numeric:tabular-nums}
.cloud-counts span{font-size:.72rem;color:var(--muted)}
@media(max-width:760px){.sync-chip span{display:none}.sync-chip{padding:9px}}

/* ---- mobile pass ---- */
@media(max-width:760px){
  .content{padding:14px 14px 80px}
  .page-head{gap:10px}
  .page-head h2{font-size:1.28rem}
  .kpis{grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:11px}
  .kpi .v{font-size:1.45rem}
  .grid-wide,.grid-2,.grid-3{grid-template-columns:1fr}
  .card-b{padding:14px}
  .board-col{flex:0 0 84vw}
  .modal{padding:0;align-items:flex-end}
  .modal-card{max-height:94vh;border-radius:20px 20px 0 0;max-width:100%}
  .modal-b{max-height:74vh;padding:16px}
  .form-grid{grid-template-columns:1fr}
  .filters{overflow-x:auto;flex-wrap:nowrap;padding-bottom:6px}
  .filters select,.filter-search{flex:0 0 auto}
  .chart-donut{justify-content:center}
  .fn-row{grid-template-columns:1fr}
  .lead-table th:nth-child(n+6),.lead-table td:nth-child(n+6){display:none}
  .topbar{padding:11px 14px}
  .search{display:none}
}
@supports (padding:max(0px)){
  .content{padding-bottom:max(80px,env(safe-area-inset-bottom))}
  .sidebar{padding-top:max(20px,env(safe-area-inset-top))}
}

/* ---- one-tap dial ---- */
.call-mini{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
  border-radius:8px;background:var(--ok-bg);color:var(--ok);font-size:.72rem;margin-left:7px;
  border:1px solid #BFE7D3;transition:.15s;vertical-align:middle}
.call-mini:hover{background:var(--ok);color:#fff;transform:scale(1.1)}
.dial-num{font-size:1.15rem;font-weight:700;font-variant-numeric:tabular-nums;margin-top:12px;
  display:flex;align-items:center;gap:9px;color:var(--ink)}
.dial-num i{color:var(--muted);font-size:.9rem}

/* ---- first-load workspace fetch ---- */
.boot-bar{height:6px;border-radius:99px;background:#EAF0F8;overflow:hidden;margin:20px 0}
.boot-bar i{display:block;height:100%;width:36%;border-radius:99px;
  background:linear-gradient(90deg,var(--blue),var(--cyan));animation:bootSlide 1.15s ease-in-out infinite}
@keyframes bootSlide{0%{transform:translateX(-100%)}100%{transform:translateX(320%)}}
