
:root{
  --olive:#5A8228; --olive-600:#4D7121; --olive-700:#40611B; --olive-800:#2E4813; --olive-50:#F1F7E4; --olive-100:#E1EDC8; --olive-200:#C6DC9C;
  --brand-olive:#6F7A42; --fresh:#7FA33A; --fresh-2:#8DB04A; --fresh-hi:#A9CC63;
  --grad:linear-gradient(135deg,#4B6A1E 0%,#5A8228 50%,#66902D 100%);
  --glow:0 4px 14px -2px rgba(98,146,40,.38),0 1px 2px rgba(46,72,19,.18); --glow-lg:0 8px 22px -4px rgba(98,146,40,.45),0 2px 4px rgba(46,72,19,.16);
  --sheen:inset 0 1px 0 rgba(255,255,255,.30),inset 0 -1px 0 rgba(0,0,0,.08);
  --taupe:#A49487; --taupe-600:#8A7A6D; --taupe-700:#6E6056; --taupe-50:#F7F4F1; --taupe-100:#EFE9E3; --taupe-200:#E2D9D0;
  --ink:#24221F; --ink-2:#4A4640; --muted:#7D766E; --faint:#A8A199;
  --bg:#F6F5F1; --surface:#FFFFFF; --line:#E8E4DE; --line-2:#F0EDE8;
  --amber:#A45A0B; --amber-bg:#FBF0DD; --red:#B42318; --red-bg:#FDECEA; --blue:#3E5675; --blue-bg:#EDF1F6;
  --r:14px; --r-sm:10px; --shadow:0 1px 2px rgba(36,34,31,.05),0 1px 1px rgba(36,34,31,.03); --shadow-lg:0 12px 32px -8px rgba(36,34,31,.18),0 2px 6px rgba(36,34,31,.06);
  --font:"Inter",-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --side:248px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);font-size:15px;line-height:1.45;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01";letter-spacing:-.006em}
a{color:var(--olive-700);text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}
svg.i{width:18px;height:18px;flex:0 0 auto;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px}
.hide{display:none!important}
h1{font-size:26px;line-height:1.15;letter-spacing:-.025em;font-weight:700;margin:0}
h2{font-size:15px;font-weight:650;letter-spacing:-.01em;margin:0 0 12px;display:flex;align-items:center;gap:8px}
h2 .i{color:var(--olive)}
h3{font-size:13px;font-weight:600;margin:0}
.sub{color:var(--muted);margin:6px 0 0;font-size:14.5px}
.muted{color:var(--muted)} .small{font-size:13px} .xs{font-size:12px} .b{font-weight:600} .num{font-variant-numeric:tabular-nums}
.eyebrow{font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}

/* ---------- app shell */
.app{min-height:100vh}
.topbar{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.88);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top)}
.topbar .in{height:60px;display:flex;align-items:center;gap:10px;padding:0 16px;max-width:1200px;margin:0 auto}
.logo{display:flex;align-items:center;gap:10px;min-width:0}
.logo img{height:38px;width:auto;display:block}
.role-tag{font-size:11px;font-weight:600;color:var(--taupe-700);background:var(--taupe-50);border:1px solid var(--taupe-100);padding:3px 8px;border-radius:999px;white-space:nowrap}
.sp{flex:1}
.avatar{width:34px;height:34px;border-radius:50%;display:inline-grid;place-items:center;font-weight:650;font-size:13px;color:#fff;background:var(--olive);flex:0 0 auto;letter-spacing:0}
.avatar.lg{width:56px;height:56px;font-size:20px}
.avatar.t{background:var(--taupe-100);color:var(--taupe-700)}
.iconbtn{width:40px;height:40px;border-radius:10px;border:0;background:transparent;display:grid;place-items:center;cursor:pointer;color:var(--ink-2)}
.iconbtn:hover{background:var(--line-2)}
main.wrap{max-width:1200px;margin:0 auto;padding:20px 16px calc(96px + env(safe-area-inset-bottom))}
.side{display:none}
.bnav{position:fixed;left:0;right:0;bottom:0;z-index:30;background:rgba(255,255,255,.94);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-top:1px solid var(--line);display:flex;justify-content:space-around;padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
.bnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;font-size:11px;font-weight:550;color:var(--muted);border-radius:10px;min-height:50px;justify-content:center}
.bnav a .i{width:22px;height:22px}
.bnav a.on{color:var(--olive-700)}
.bnav a.plus .pc{width:46px;height:46px;border-radius:14px;background:var(--olive);color:#fff;display:grid;place-items:center;box-shadow:0 6px 14px -4px rgba(76,113,33,.55);margin-top:-14px}
.bnav a.plus .pc .i{width:24px;height:24px;stroke-width:2.2}
.bnav a.plus{color:var(--olive-700)}

@media(min-width:960px){
  .topbar{display:none}
  .bnav{display:none}
  .side{display:flex;flex-direction:column;position:fixed;top:0;bottom:0;left:0;width:var(--side);background:var(--surface);border-right:1px solid var(--line);padding:22px 14px 16px;z-index:20}
  .side .logo{padding:0 8px 22px}
  .side .logo img{height:46px}
  .side nav{display:flex;flex-direction:column;gap:2px}
  .side nav a{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:9px;color:var(--ink-2);font-weight:550;font-size:14.5px}
  .side nav a:hover{background:var(--bg)}
  .side nav a.on{background:var(--olive-50);color:var(--olive-800)}
  .side nav a.on .i{color:var(--olive)}
  .side .new{margin:0 0 16px}
  .side .me{margin-top:auto;display:flex;align-items:center;gap:10px;padding:10px;border-radius:10px;cursor:pointer;border:1px solid var(--line)}
  .side .me:hover{background:var(--bg)}
  main.wrap{margin-left:var(--side);padding:32px 40px 60px;max-width:calc(1160px + var(--side))}
  h1{font-size:28px}
}

/* ---------- page head */
.phead{display:flex;align-items:flex-end;gap:12px;margin:2px 0 20px;flex-wrap:wrap}
.phead .t{flex:1;min-width:200px}
.back{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-weight:550;font-size:14px;margin-bottom:12px;padding:6px 8px 6px 2px}
.back:hover{color:var(--ink)}

/* ---------- cards */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin-bottom:14px;box-shadow:var(--shadow)}
.card.flush{padding:0;overflow:hidden}
.card .ch{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.card .ch h2{margin:0;flex:1}
.cols{display:grid;gap:14px;grid-template-columns:minmax(0,1fr)}.cols > *{min-width:0}
@media(min-width:960px){.cols{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start}.cols.even{grid-template-columns:1fr 1fr}}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row > *{flex:1 1 0;min-width:0}
.row.tight{gap:6px}
.row.nowrap{flex-wrap:nowrap}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.stack > * + *{margin-top:10px}

/* ---------- KPIs */
.kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px}
@media(min-width:720px){.kpis{grid-template-columns:repeat(4,minmax(0,1fr))}}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;box-shadow:var(--shadow);min-width:0}
.kpi .k{font-size:12.5px;color:var(--muted);font-weight:550;display:flex;align-items:center;gap:6px}
.kpi .v{font-size:23px;font-weight:700;letter-spacing:-.025em;margin-top:6px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .s{font-size:12px;color:var(--muted);margin-top:2px}
.kpi.hl{background:var(--olive);border-color:var(--olive);color:#fff}
.kpi.hl .k,.kpi.hl .s{color:rgba(255,255,255,.8)}
.kpi.warn .v{color:var(--amber)}
.kpi.good .v{color:var(--olive-700)}
.kpi.bad .v{color:var(--red)}

/* ---------- buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 16px;border-radius:11px;border:1px solid transparent;background:var(--olive);color:#fff;font-weight:600;font-size:15px;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s,box-shadow .15s,transform .05s;-webkit-tap-highlight-color:transparent;user-select:none}
.btn:hover{background:var(--olive-600)}
.btn:active{transform:translateY(1px)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.full{width:100%}
.btn.big{min-height:52px;font-size:16px;border-radius:13px}
.btn.sm{min-height:36px;padding:0 12px;font-size:13.5px;border-radius:9px;gap:6px}
.btn.sm .i{width:16px;height:16px}
.btn.sec{background:var(--surface);color:var(--ink);border-color:var(--line);box-shadow:var(--shadow)}
.btn.sec:hover{background:var(--bg)}
.btn.soft{background:var(--olive-50);color:var(--olive-800);border-color:var(--olive-100)}
.btn.soft:hover{background:var(--olive-100)}
.btn.ghost{background:transparent;color:var(--ink-2)}
.btn.ghost:hover{background:var(--line-2)}
.btn.danger{background:var(--surface);color:var(--red);border-color:#F3C9C4}
.btn.danger:hover{background:var(--red-bg)}
.btn.dark{background:var(--ink);} .btn.dark:hover{background:#000}
.x{width:36px;height:36px;border-radius:9px;border:0;background:transparent;color:var(--faint);cursor:pointer;display:grid;place-items:center;flex:0 0 auto}
.x:hover{background:var(--red-bg);color:var(--red)}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.actions .btn{flex:1 1 auto}

/* ---------- forms */
label.f{display:block;margin-bottom:12px}
label.f > span{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.in{width:100%;min-height:46px;padding:10px 13px;border:1px solid var(--line);border-radius:11px;background:var(--surface);font-size:16px;outline:none;transition:border .15s,box-shadow .15s;-webkit-appearance:none;appearance:none}
select.in{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%237D766E' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 13px center;padding-right:36px}
textarea.in{min-height:92px;resize:vertical}
.in:focus{border-color:var(--olive);box-shadow:0 0 0 3px rgba(127,163,58,.22)}
.in::placeholder{color:var(--faint)}
.search{position:relative;margin-bottom:14px}
.search .i{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--faint);pointer-events:none}
.search .in{padding-left:42px;background:var(--surface);box-shadow:var(--shadow)}
.switch{display:flex;align-items:center;gap:10px;font-weight:550;margin:12px 0;cursor:pointer}
.switch input{width:20px;height:20px;accent-color:var(--olive)}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg button{min-height:40px;padding:0 14px;border-radius:10px;border:1px solid var(--line);background:var(--surface);font-weight:550;font-size:14px;cursor:pointer}
.seg button.on{background:var(--olive-50);border-color:var(--olive);color:var(--olive-800);box-shadow:inset 0 0 0 1px var(--olive)}
.tabs{display:inline-flex;background:var(--line-2);border-radius:11px;padding:3px;gap:2px;max-width:100%;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{border:0;background:transparent;min-height:34px;padding:0 13px;border-radius:8px;font-weight:550;font-size:13.5px;color:var(--muted);cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}
.tabs button .i{width:15px;height:15px}
.tabs button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px;justify-content:space-between}

/* ---------- status badge */
.badge{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:999px;font-size:12.5px;font-weight:600;white-space:nowrap;background:var(--bc-bg,#F1EFEB);color:var(--bc,var(--ink-2))}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
.badge.nodot::before{display:none}
.g-intake{--bc:#3E5675;--bc-bg:#EDF1F6}
.g-field{--bc:#76624F;--bc-bg:#F3EEE8}
.g-pricing{--bc:#76557A;--bc-bg:#F4EEF5}
.g-billing{--bc:#A15C07;--bc-bg:#FBF1DF}
.g-order{--bc:#2F6B70;--bc-bg:#E7F1F1}
.g-done{--bc:#4C5529;--bc-bg:#EEF1E1}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--muted);white-space:nowrap}
.chip .i{width:14px;height:14px}
.owed{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:999px;font-size:12.5px;font-weight:650;background:var(--amber-bg);color:var(--amber);font-variant-numeric:tabular-nums;white-space:nowrap}
.paid{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 9px;border-radius:999px;font-size:12.5px;font-weight:600;background:var(--olive-50);color:var(--olive-700);white-space:nowrap}
.paid .i{width:14px;height:14px}

/* ---------- pipeline strip */
.pipe{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 6px;margin:0 -16px 14px;padding-left:16px;padding-right:16px;scrollbar-width:none;scroll-snap-type:x proximity;scroll-padding:0 16px}
.pipe::-webkit-scrollbar{display:none}
@media(min-width:960px){.pipe{margin:0 0 16px;padding:2px 0 6px;display:grid;grid-template-columns:repeat(6,minmax(0,1fr))}.stage{min-width:0}}
.stage{flex:0 0 auto;scroll-snap-align:start;display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:108px;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);cursor:pointer;text-align:left;box-shadow:var(--shadow);transition:border .15s,background .15s}
.stage .n{font-size:20px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ink)}
.stage .l{font-size:12px;font-weight:550;color:var(--muted);display:flex;align-items:center;gap:6px;white-space:nowrap}
.stage .l::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--bc)}
.stage.zero{opacity:.55;box-shadow:none}
.stage.on{border-color:var(--bc);background:var(--bc-bg)}
.stage.on .n{color:var(--bc)}

/* ---------- lists */
.list{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.item{display:flex;align-items:center;gap:12px;padding:14px 16px;border-top:1px solid var(--line-2);color:inherit;min-height:64px;transition:background .12s}
.item:first-child{border-top:0}
a.item:hover,button.item:hover{background:#FBFAF8}
.item .main{flex:1;min-width:0}
.item .tt{display:flex;align-items:center;gap:8px;font-weight:600;font-size:15.5px;min-width:0}
.item .tt .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item .no{color:var(--faint);font-weight:550;font-size:13.5px;font-variant-numeric:tabular-nums;flex:0 0 auto}
.item .meta{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:6px;align-items:center}
.item .end{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:0 0 auto}
.item .chev{color:var(--faint)}
.item .amt{font-weight:650;font-variant-numeric:tabular-nums}
.list-h{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;background:#FCFBFA}
.section-t{display:flex;align-items:center;gap:8px;margin:22px 0 10px;font-size:13px;font-weight:650;color:var(--ink-2)}
.section-t .cnt{color:var(--faint);font-weight:550}
.section-t:first-child{margin-top:4px}

/* ---------- board */
.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(260px,1fr);gap:12px;overflow-x:auto;padding-bottom:10px;scroll-snap-type:x proximity}
.bcol{background:#EFEDE8;border-radius:var(--r);padding:10px;scroll-snap-align:start;min-height:120px}
.bcol h3{display:flex;justify-content:space-between;align-items:center;padding:2px 4px 10px;font-size:13px;color:var(--ink-2)}
.bcol h3 .badge{height:22px}
.bcard{display:block;background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:11px 12px;margin-bottom:8px;color:inherit;box-shadow:var(--shadow)}
.bcard:hover{border-color:var(--taupe-200)}
.bcard .tt{font-weight:600;display:flex;justify-content:space-between;gap:8px}
.bcard .meta{display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:7px}

/* ---------- job header + stepper */
.jhead{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px 18px 18px;margin-bottom:14px;box-shadow:var(--shadow)}
.jhead .top{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.jhead h1{font-size:26px}
.jhead .cust-link{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:550;margin-top:6px}
.steps{display:flex;gap:3px;margin-top:16px}
.steps i{flex:1;height:5px;border-radius:3px;background:var(--line)}
.steps i.d{background:var(--olive)}
.steps i.c{background:var(--olive);box-shadow:0 0 0 2px var(--olive-100)}
.steps-l{display:flex;justify-content:space-between;margin-top:8px;font-size:12px;color:var(--muted)}
.next{border:1px solid var(--olive-200);background:linear-gradient(180deg,var(--olive-50),#fff 70%);position:relative}
.next .eyebrow{color:var(--olive-700);display:flex;align-items:center;gap:6px;margin-bottom:6px}
.next h2{font-size:17px;margin-bottom:8px}
details.adv summary{cursor:pointer;color:var(--muted);font-size:13px;font-weight:550;list-style:none;display:inline-flex;align-items:center;gap:6px;margin-top:14px}
details.adv summary::-webkit-details-marker{display:none}

/* ---------- key-value / contact */
.kv{display:grid;grid-template-columns:auto 1fr;gap:10px 16px;margin:0;font-size:14.5px}
.kv dt{color:var(--muted);font-weight:500}
.kv dd{margin:0;font-weight:550;word-break:break-word}
.contact-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(68px,1fr));gap:8px;margin-top:14px}
.contact-actions .btn{flex-direction:column;gap:4px;min-height:62px;font-size:12.5px;font-weight:600;padding:8px}
.contact-actions .btn .i{width:20px;height:20px}

/* ---------- measurements */
.wsum{display:flex;gap:12px;padding:12px 0;border-top:1px solid var(--line-2)}
.wsum:first-of-type{border-top:0;padding-top:2px}
.wsum .ic{width:38px;height:38px;border-radius:10px;background:var(--taupe-50);color:var(--taupe-700);display:grid;place-items:center;flex:0 0 auto}
.wsum .sz{font-size:17px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.win{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px;background:#FCFBFA}
.win .wh{display:flex;justify-content:space-between;align-items:center;font-weight:650;margin-bottom:8px;font-size:14px}
.win .g{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.win .g .full{grid-column:1/-1}

/* ---------- photos */
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.photos button{padding:0;border:0;border-radius:10px;overflow:hidden;aspect-ratio:1;cursor:pointer;background:var(--line-2);position:relative}
.photos img{width:100%;height:100%;object-fit:cover;display:block}
.photos .tag{position:absolute;left:6px;bottom:6px;background:rgba(0,0,0,.55);color:#fff;font-size:11px;font-weight:600;padding:2px 6px;border-radius:6px}

/* ---------- money lines */
.tl{display:flex;justify-content:space-between;gap:12px;padding:7px 0;font-variant-numeric:tabular-nums}
.tl.big{font-size:18px;font-weight:700;border-top:1px solid var(--line);margin-top:6px;padding-top:12px}
.line{display:grid;grid-template-columns:1fr 64px 96px 36px;gap:6px;margin-bottom:6px;align-items:center}
.line .in{min-height:42px;padding:8px 10px;font-size:15px}
.mgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mbox{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#FCFBFA}
.mbox .k{font-size:12.5px;color:var(--muted);font-weight:550}
.mbox .v{font-size:20px;font-weight:700;letter-spacing:-.02em;margin-top:2px;font-variant-numeric:tabular-nums}
.mbox.full{grid-column:1/-1}
.mbox.due{background:var(--amber-bg);border-color:#F1DDB8}.mbox.due .v{color:var(--amber);font-size:26px}
.mbox.ok{background:var(--olive-50);border-color:var(--olive-100)}.mbox.ok .v{color:var(--olive-700);font-size:26px}
.prow{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--line-2)}
.prow:first-child{border-top:0}
.prow .main{flex:1;min-width:0}
.prow .ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto;background:var(--olive-50);color:var(--olive-700)}
.prow .ic.out{background:var(--taupe-50);color:var(--taupe-700)}
a.prow{color:inherit}
table.t{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}
table.t th{font-size:12px;font-weight:600;color:var(--muted);text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
table.t td{padding:10px;border-bottom:1px solid var(--line-2);white-space:nowrap}
table.t .r{text-align:right}
.scroll{overflow-x:auto;margin:0 -18px;padding:0 18px}
.bar{height:8px;border-radius:4px;background:var(--line-2);overflow:hidden;margin-top:10px}
.bar i{display:block;height:100%;background:var(--olive);border-radius:4px}

/* ---------- timeline */
.feed{list-style:none;margin:0;padding:0;position:relative}
.feed li{position:relative;padding:0 0 16px 30px}
.feed li::before{content:"";position:absolute;left:10px;top:22px;bottom:-2px;width:1px;background:var(--line)}
.feed li:last-child::before{display:none}
.feed .dot{position:absolute;left:0;top:0;width:21px;height:21px;border-radius:50%;background:var(--surface);border:1px solid var(--line);display:grid;place-items:center;color:var(--muted)}
.feed .dot .i{width:12px;height:12px;stroke-width:2.2}
.feed .dot.note{background:var(--taupe-50);border-color:var(--taupe-200);color:var(--taupe-700)}
.feed .dot.money{background:var(--olive-50);border-color:var(--olive-200);color:var(--olive-700)}
.feed .dot.status{background:var(--blue-bg);border-color:#D5DEEA;color:var(--blue)}
.feed .tx{font-size:14px;font-weight:500}
.feed li.n .tx{background:var(--taupe-50);border:1px solid var(--taupe-100);padding:9px 12px;border-radius:10px;white-space:pre-wrap;font-weight:500}
.feed .w{font-size:12px;color:var(--faint);margin-top:3px}
.feed .w a{color:var(--muted);font-weight:550}

/* ---------- customer */
.chead{display:flex;gap:14px;align-items:center}
.chead h1{font-size:24px}
.cstats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:16px}
.cstats{grid-template-columns:1fr 1fr 1.3fr}.cstats .mbox{padding:10px 11px;min-width:0}.cstats .mbox .v{font-size:15.5px;white-space:nowrap;letter-spacing:-.03em}
.pick{border:1px solid var(--line);border-radius:12px;margin-top:-4px;margin-bottom:12px;overflow:hidden;background:var(--surface);box-shadow:var(--shadow-lg)}
.pick button{display:flex;width:100%;align-items:center;gap:10px;padding:10px 12px;border:0;border-top:1px solid var(--line-2);background:transparent;text-align:left;cursor:pointer}
.pick button:first-child{border-top:0}
.pick button:hover,.pick button.hl{background:var(--olive-50)}
.picked{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--olive-200);background:var(--olive-50);border-radius:12px;margin-bottom:12px}
.picked .main{flex:1;min-width:0}

/* ---------- empty, toast, sheet, login */
.empty{text-align:center;padding:30px 16px;color:var(--muted);font-size:14.5px}
.empty .ic{width:52px;height:52px;border-radius:16px;background:var(--taupe-50);color:var(--taupe-600);display:grid;place-items:center;margin:0 auto 12px}
.empty .ic .i{width:24px;height:24px}
.empty b{display:block;color:var(--ink);font-size:15px;margin-bottom:2px}
#toast{position:fixed;left:50%;bottom:calc(92px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:12px 18px;border-radius:12px;font-weight:550;font-size:14.5px;opacity:0;pointer-events:none;transition:all .25s;z-index:100;max-width:calc(100vw - 32px);box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:8px}
#toast.on{opacity:1;transform:translate(-50%,0)}
#toast.err{background:var(--red)}
@media(min-width:960px){#toast{bottom:28px;left:calc(50% + var(--side)/2)}}
.ov{position:fixed;inset:0;background:rgba(36,34,31,.42);z-index:60;display:flex;align-items:flex-end;justify-content:center;animation:fade .18s}
.sheet{background:var(--surface);width:100%;max-width:560px;max-height:92vh;overflow:auto;border-radius:20px 20px 0 0;padding:10px 18px calc(18px + env(safe-area-inset-bottom));animation:up .22s cubic-bezier(.2,.8,.2,1)}
.sheet .grab{width:38px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 14px}
.sheet h2{font-size:18px;margin-bottom:4px}
@media(min-width:720px){.ov{align-items:center}.sheet{border-radius:18px;padding:22px}.sheet .grab{display:none}}
@keyframes up{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
@keyframes fade{from{opacity:0}to{opacity:1}}
.lb{position:fixed;inset:0;background:rgba(20,19,17,.94);z-index:70;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px}
.lb img{max-width:100%;max-height:72vh;border-radius:10px}
.login{min-height:100vh;display:grid;place-items:center;padding:24px 18px;background:radial-gradient(1200px 500px at 50% -10%,var(--olive-50),transparent 70%),var(--bg)}
.login .box{width:100%;max-width:380px}
.login .brandmark{text-align:center;margin-bottom:26px}
.login .brandmark img{width:250px;max-width:80%;height:auto}
.login .card{padding:22px;box-shadow:var(--shadow-lg)}
.login h1{font-size:20px;margin-bottom:4px}
.fade-in{animation:fade .2s}
.skel{height:64px;border-radius:12px;background:linear-gradient(90deg,#EFEDE8 0%,#F6F5F1 50%,#EFEDE8 100%);background-size:200% 100%;animation:sk 1.2s infinite;margin-bottom:8px}
@keyframes sk{from{background-position:200% 0}to{background-position:-200% 0}}
canvas#confetti{position:fixed;inset:0;pointer-events:none;z-index:200}

@media(max-width:600px){.tabs .lbl{display:none}.toolbar{flex-wrap:nowrap}}

/* ---------- measurements */
.room-g + .room-g{margin-top:14px}
.room-h{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:650;letter-spacing:.05em;text-transform:uppercase;color:var(--olive-700);padding:2px 0 8px;border-bottom:1px solid var(--line-2);margin-bottom:2px}
.wrow{display:flex;gap:12px;align-items:center;padding:10px 0;border:0;border-bottom:1px solid var(--line-2);background:transparent;width:100%;text-align:left;color:inherit;font:inherit;cursor:default}
button.wrow{cursor:pointer}
button.wrow:hover{background:#FBFAF8}
.room-g .wrow:last-child{border-bottom:0}
.wthumb{width:48px;height:48px;border-radius:10px;object-fit:cover;flex:0 0 auto;background:var(--line-2)}
.wthumb.ph{display:grid;place-items:center;background:var(--taupe-50);color:var(--taupe-600)}
.wmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.wmain .sz{font-size:16px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.chk{flex:0 0 auto;cursor:pointer}
.chk input{display:none}
.chk span{width:34px;height:34px;border-radius:10px;border:1.5px solid var(--line);display:grid;place-items:center;color:transparent;background:#fff}
.chk input:checked + span{background:var(--olive);border-color:var(--olive);color:#fff}
.sticky-cta{position:fixed;left:0;right:0;bottom:calc(64px + env(safe-area-inset-bottom));padding:10px 16px;background:linear-gradient(180deg,rgba(246,245,241,0),var(--bg) 35%);z-index:25}
@media(min-width:960px){.sticky-cta{left:var(--side);bottom:0;padding:16px 40px}.sticky-cta .btn{max-width:520px;margin:0 auto;display:flex}}
.warnc{border-color:#F1DDB8;background:#FFFBF3}
.pin{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:0 0 112px}
.pin .in{min-height:42px;text-align:right;font-weight:650}
.photo-pick{margin-top:4px}
#wprev{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
#wprev img{width:64px;height:64px;object-fit:cover;border-radius:9px}
.big-in{font-size:20px!important;font-weight:650;font-variant-numeric:tabular-nums}

/* ---------- batch */
.bjobs{max-height:300px;overflow:auto;border:1px solid var(--line);border-radius:12px;padding:0 10px}
.bj{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line-2)}
.bj:last-child{border-bottom:0}
.bj .main{flex:1;min-width:0}
.bj .in{width:104px;flex:0 0 104px;min-height:40px;text-align:right;font-weight:650}
.bj .in:disabled{background:var(--line-2);opacity:.6}
.bj .chk span{width:28px;height:28px;border-radius:8px}
.bsum{display:flex;justify-content:space-between;align-items:center;margin-top:10px;font-size:14px;font-weight:550;padding:10px 12px;background:#FCFBFA;border:1px solid var(--line);border-radius:10px}
.okc{color:var(--olive-700);display:inline-flex;align-items:center;gap:4px;font-weight:650}
.leftc{color:var(--amber);font-weight:650}
/* ---------- calendar */
.spf{display:flex;gap:6px;flex-wrap:wrap;margin:-2px 0 12px}
.spf button{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-weight:550;font-size:13px;cursor:pointer}
.spf button i{width:8px;height:8px;border-radius:50%;background:var(--sc)}
.spf button.on{border-color:var(--ink);background:var(--ink);color:#fff}
.ev{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:0;border-top:1px solid var(--line-2);background:var(--surface);text-align:left;cursor:pointer;font:inherit;color:inherit;position:relative}
.ev:first-child{border-top:0}
.ev::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--sc)}
.ev:hover{background:#FBFAF8}
.ev .t{flex:0 0 64px;font-weight:650;font-size:13.5px;font-variant-numeric:tabular-nums}
.ev .main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.wk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.wkd{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px;min-height:220px}
.wkd.td{border-color:var(--olive);box-shadow:0 0 0 2px var(--olive-100)}
.wkh{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;color:var(--muted);margin-bottom:8px}
.wkh b{font-size:17px;color:var(--ink)}
.evm{display:block;width:100%;text-align:left;border:0;border-left:3px solid var(--sc);background:#F7F6F2;border-radius:6px;padding:6px 8px;margin-bottom:6px;font:inherit;font-size:12.5px;cursor:pointer;color:inherit}
.evm span{display:block;color:var(--muted);font-size:11.5px}
.mo{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.moh{display:grid;grid-template-columns:repeat(7,1fr);font-size:11.5px;color:var(--muted);text-align:center;padding:8px 0;border-bottom:1px solid var(--line);font-weight:600}
.mog{display:grid;grid-template-columns:repeat(7,1fr)}
.moc{aspect-ratio:1/1;min-height:52px;border:0;border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2);background:var(--surface);display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:6px 2px;gap:4px;cursor:pointer;font:inherit;position:relative}
.moc:nth-child(7n){border-right:0}
.moc.out{color:var(--faint);background:#FCFBFA}
.moc .dn{font-size:13px;font-weight:600;width:26px;height:26px;display:grid;place-items:center;border-radius:50%}
.moc.td .dn{background:var(--olive);color:#fff}
.moc .dots{display:flex;gap:3px}
.moc .dots i{width:6px;height:6px;border-radius:50%}
.moc .mn{font-size:10.5px;color:var(--muted);font-weight:600}
@media(min-width:960px){.moc{aspect-ratio:auto;min-height:96px}}

.sheet{overflow-x:hidden}
.calbar{flex-wrap:wrap!important}
@media(max-width:600px){.calbar .tabs{width:100%;display:flex}.calbar .tabs button{flex:1;justify-content:center}.calbar .row{width:100%;justify-content:space-between}.calbar .row .btn{flex:1}}

svg.i.up{transform:rotate(90deg)}

.g-side{--bc:#B42318;--bc-bg:#FDECEA}
.steps i.sd{background:#F3C9C4}
.sidepipe{display:flex;gap:8px;align-items:center;overflow-x:auto;margin:-6px -16px 14px;padding:2px 16px 6px;scrollbar-width:none}
.sidepipe::-webkit-scrollbar{display:none}
@media(min-width:960px){.sidepipe{margin:-6px 0 16px;padding:2px 0 6px;flex-wrap:wrap}}
.stage.sm{min-width:0;padding:7px 10px;flex-direction:row;align-items:center;gap:8px}
.stage.sm .n{font-size:15px}
.rp{border-bottom:1px solid var(--line-2);padding:8px 0}
.rp:last-child{border-bottom:0}
.rp-h{display:flex;align-items:center;gap:12px;cursor:pointer}
.rp.on .rp-h .b{color:var(--red)}
.rp-b{padding:8px 0 4px 46px}
.rp-b .seg button{min-height:34px;font-size:13px;padding:0 10px}

.sidepipe>span{white-space:nowrap}
.prow>.badge{flex:0 1 auto;min-width:0;white-space:normal;line-height:1.25;padding-top:4px;padding-bottom:4px}

/* v3: pay + sales tax */
.tabs a{min-height:34px;padding:0 13px;border-radius:8px;font-weight:550;font-size:13.5px;color:var(--muted);white-space:nowrap;display:inline-flex;align-items:center;gap:6px;text-decoration:none}
.tabs a.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}
.seg.sm button{min-height:30px;padding:0 10px;font-size:13px;border-radius:8px}
.muted-tag{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:999px;font-size:12.5px;font-weight:600;background:var(--line-2);color:var(--muted);white-space:nowrap}
.owed.warn-red{background:var(--red-bg);color:var(--red);gap:4px}.owed.warn-red .i{width:14px;height:14px}
.paid.xs,.owed.xs{height:20px;font-size:11.5px;padding:0 7px;margin-top:4px}
.alert-box{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:12px;background:var(--red-bg);color:#7A1D14;border:1px solid #F5CFCB;font-size:14px}
.alert-box>.i{flex:0 0 auto;width:20px;height:20px;margin-top:1px;color:var(--red)}.alert-box a{color:inherit;text-decoration:underline}
.big-switch{align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#FCFBFA;margin:0}
.big-switch input{margin-top:2px;width:22px;height:22px}
.kpis.kpis-3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:640px){.kpis.kpis-3{grid-template-columns:repeat(2,minmax(0,1fr))}.kpis.kpis-3 .kpi:first-child{grid-column:1/-1}}
.pjob{padding:12px 0;border-bottom:1px solid var(--line-2)}.pjob:last-child{border-bottom:0;padding-bottom:2px}.pjob:first-of-type{padding-top:4px}
.pjh{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px}.pjh a{color:var(--ink);text-decoration:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pline{display:flex;justify-content:space-between;gap:10px;font-size:14px;padding:5px 0 5px 2px;color:var(--ink-2)}
.pline[data-ed]{cursor:pointer}.pline[data-ed]:hover{color:var(--ink)}
.pline.tot{border-top:1px dashed var(--line);margin-top:4px;padding-top:7px;font-weight:600;color:var(--ink)}
.pchips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 0 12px;padding-bottom:2px}.pchips::-webkit-scrollbar{display:none}
.pchip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-weight:550;font-size:13.5px;color:var(--ink-2);cursor:pointer;white-space:nowrap}
.pchip.on{background:var(--olive-700);border-color:var(--olive-700);color:#fff}.pchip .i{width:15px;height:15px}
.pchip .dot{width:7px;height:7px;border-radius:50%;background:var(--amber);display:inline-block}.pchip.on .dot{background:#F4C98A}
.taxdue{border-left:4px solid var(--olive)}.taxdue.open{border-left-color:var(--amber)}
.taxdue .tdrow{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-top:6px}
.taxdue .k{font-size:13px;color:var(--muted);font-weight:550}.taxdue .tdbig{font-size:34px;font-weight:750;letter-spacing:-.03em;line-height:1.15}
.taxmini{display:block;color:inherit;text-decoration:none}

/* ---------- v4: dashboard, accounting tabs, follow-ups */
.acct-h{display:flex;flex-direction:column;gap:8px;margin:0 0 14px}
.acct-h .eyebrow{margin:0}
.acct-tabs{align-self:flex-start}
@media(max-width:600px){.acct-tabs{align-self:stretch}.acct-tabs a{flex:1;justify-content:center;padding:0 8px}}
a.kpi{display:block;color:inherit;text-decoration:none;transition:border-color .15s,transform .15s}
a.kpi:hover{border-color:var(--olive-100)}
a.kpi.hl:hover{border-color:var(--olive)}
a.kpi:active{transform:scale(.99)}
.kpi.bad .v{color:var(--red)}
a.stage{text-decoration:none;color:inherit}
a.stage:hover{border-color:var(--bc)}
.dcols{margin-top:2px}
.dcard .ch h2 .cnt,.card .ch h2 .cnt{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 7px;margin-left:6px;border-radius:999px;background:var(--line-2);color:var(--ink-2);font-size:12px;font-weight:650;vertical-align:1px;letter-spacing:0}
.dcard.urgent{border-color:#F5CFCB}
.dcard.urgent .ch h2 .cnt{background:var(--red-bg);color:var(--red)}
.dclear{display:flex;align-items:center;gap:8px;margin:0;color:var(--muted)}
.dclear .i{width:17px;height:17px;color:var(--olive);flex:0 0 auto}
.dmore{display:flex;align-items:center;justify-content:center;gap:4px;margin-top:10px;padding:9px;border-radius:10px;background:var(--line-2);font-size:13px;font-weight:600;color:var(--ink-2);text-decoration:none}
.dmore .i{width:14px;height:14px}
.drow{text-decoration:none}
.drow .end{flex:0 0 auto;display:flex;align-items:center}
.drow .chip{padding:3px 9px;border-radius:999px;background:var(--olive-50);color:var(--olive-700);font-weight:600}
.drow:hover .b{color:var(--olive-700)}
.prow .chev,.appt .chev{width:16px;height:16px;color:var(--faint);flex:0 0 auto}
.lt{color:var(--red)!important;font-weight:550}
.amb{color:var(--amber)!important;font-weight:550}
.tdy{color:var(--olive-700);font-weight:650}
.badge.sm{font-size:11px;padding:2px 8px}
.mgrid.dm{grid-template-columns:repeat(2,minmax(0,1fr))}
.mgrid.dm3{grid-template-columns:repeat(3,minmax(0,1fr))}
a.mbox{text-decoration:none;color:inherit;display:block}
a.mbox:hover{border-color:var(--olive-100)}
.mgrid.dm .mbox.due .v{font-size:15.5px}
/* appointments */
.appts{display:flex;flex-direction:column}
.appt{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line-2);text-decoration:none;color:inherit}
.appt:first-child{border-top:0;padding-top:2px}
.appt .when{flex:0 0 74px;border-right:2px solid var(--line);padding-right:10px}
.appt.now .when{border-right-color:var(--olive)}
.appt .when .d{font-size:12px;font-weight:650;color:var(--ink-2)}
.appt.now .when .d{color:var(--olive-700)}
.appt .when .t{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.appt .main{flex:1;min-width:0}
.appt .main>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* follow-ups */
.fus{display:flex;flex-direction:column}
.fu{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line-2);transition:opacity .25s}
.fu:first-child{border-top:0;padding-top:2px}
.fu.leaving{opacity:.35}
.fu .main{flex:1;min-width:0;text-decoration:none;color:inherit}
.fu .fu-note{display:flex;align-items:flex-start;gap:6px;margin-top:1px}
.fu .fu-note .i{width:14px;height:14px;flex:0 0 auto;margin-top:3px;color:var(--muted)}
.fu .fu-meta{margin-top:2px}
.fu.over .fu-meta{color:var(--red)}
.fu.done .fu-note span{text-decoration:line-through;color:var(--muted)}
.fuchk{flex:0 0 auto;width:28px;height:28px;border-radius:50%;border:2px solid var(--line);background:var(--surface);display:grid;place-items:center;cursor:pointer;color:transparent;padding:0;transition:all .15s}
.fuchk .i{width:15px;height:15px;stroke-width:2.6}
.fuchk:hover{border-color:var(--olive);color:var(--olive)}
.fu.over .fuchk{border-color:#F0B4AE}
.fuchk.on{background:var(--olive);border-color:var(--olive);color:#fff}
.iconbtn.sm{width:36px;height:36px;border-radius:50%;background:var(--olive-50);color:var(--olive-700);flex:0 0 auto}
.iconbtn.sm .i{width:17px;height:17px}
.fu-sep{padding:12px 0 2px;border-top:1px solid var(--line-2);font-weight:600;text-transform:uppercase;letter-spacing:.05em;font-size:11px}
.fudone{margin-top:10px}
.fudone summary{cursor:pointer;list-style:none}
.fudone summary::-webkit-details-marker{display:none}
.fudone summary::before{content:"▸ "}
.fudone[open] summary::before{content:"▾ "}
/* choice sheet */
.choices{display:flex;flex-direction:column;gap:10px}
.choice{display:flex;align-items:center;gap:14px;width:100%;padding:14px;border-radius:14px;border:1px solid var(--line);background:var(--surface);cursor:pointer;text-align:left;font:inherit;color:inherit;min-height:64px;transition:border-color .15s,background .15s}
.choice:hover{border-color:var(--olive);background:var(--olive-50)}
.choice .ic{width:40px;height:40px;border-radius:11px;background:var(--olive-50);color:var(--olive-700);display:grid;place-items:center;flex:0 0 auto}
.choice .main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.choice .chev{width:16px;height:16px;color:var(--faint)}
button.item{width:100%;border:0;background:transparent;font:inherit;text-align:left;cursor:pointer;color:inherit}
.topbar .iconbtn.on{color:var(--olive-700);background:var(--olive-50)}
@media(min-width:960px){.dcols{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}

/* v6: not scheduled in time */
.badge.nsred{background:var(--red-bg);color:var(--red);font-weight:650}
.item.nsrow{box-shadow:inset 3px 0 0 var(--red);background:#FFFAF9}
.bcard.nsrow{border-color:#F1B8B2;box-shadow:inset 3px 0 0 var(--red),var(--shadow)}
.card.nsc{border-color:#F1B8B2;background:#FFF8F7}
.card.nsc .eyebrow{color:var(--red);display:flex;align-items:center;gap:6px}
.card.nsc.soon{border-color:var(--line);background:var(--amber-bg)}
.card.nsc.soon .eyebrow{color:var(--amber)}
.tabs button.tab-late{color:var(--red)}
.tabs button.tab-late.on{background:var(--red-bg);color:var(--red)}
.drow .end .badge.nsred{white-space:nowrap}

/* v7: finish job + celebration */
.fl{font-size:12.5px;font-weight:600;color:var(--ink-2);margin:12px 0 6px}
.fstep{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.fstep h2{margin:0;font-size:17px}
.fstep .n{width:26px;height:26px;border-radius:50%;background:var(--olive);color:#fff;display:grid;place-items:center;font-size:13px;font-weight:700;flex:0 0 auto}
.fstep .n .i{width:15px;height:15px}
.fopts{display:grid;gap:10px}
@media(min-width:720px){.fopts{grid-template-columns:1fr 1fr}}
.fopt{display:flex;align-items:center;gap:12px;text-align:left;padding:14px;border-radius:12px;border:1.5px solid var(--line);background:var(--surface);cursor:pointer;font:inherit;color:var(--ink);min-height:68px;transition:border-color .15s,background .15s}
.fopt b{display:block;font-size:15.5px;margin-bottom:2px}
.fopt .fi{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;flex:0 0 auto;background:var(--olive-50);color:var(--olive-700)}
.fopt.rv .fi{background:var(--amber-bg);color:var(--amber)}
.fopt.ok.on{border-color:var(--olive);background:var(--olive-50);box-shadow:inset 0 0 0 1px var(--olive)}
.fopt.rv.on{border-color:var(--amber);background:#FFF8EC;box-shadow:inset 0 0 0 1px var(--amber)}
.fincard .rp{border-top:1px solid var(--line-2)}
.fin-rh{margin-top:8px}
.fq{padding:12px 0;border-top:1px solid var(--line-2)}
.fq:first-of-type{border-top:0;padding-top:0}
.fq > .b{margin-bottom:8px;font-size:15px}
.seg.yn button{flex:1 1 0;min-height:46px;font-size:15px;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.seg.yn button .i{width:16px;height:16px}
.seg.yn button[data-v="0"].on{background:var(--red-bg);border-color:var(--red);color:var(--red);box-shadow:inset 0 0 0 1px var(--red)}
#satw,#remw{margin-top:10px}
#satn{width:100%;resize:vertical;min-height:64px}
.remi{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:14.5px;cursor:pointer}
.chk.sm span{width:26px;height:26px;border-radius:8px}
.fin-hint{margin:6px 0 0;color:var(--amber)}
.btn.rvb{background:var(--ink-2);border-color:var(--ink-2)}
.badge.satbad{background:var(--red-bg);color:var(--red);gap:4px}
.badge.satbad .i{width:13px;height:13px}
.card.satwarn{border-color:#F3C9C4}
.rep{padding:4px 0}
.rep.old{border-top:1px solid var(--line-2);padding-top:10px;margin-top:10px}
.rep-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px}
.rep-q{display:flex;justify-content:space-between;align-items:center;font-size:14px;padding:5px 0}
.rep-sub{margin:0 0 4px}
.sat-note{font-size:13.5px;color:var(--red);background:var(--red-bg);border-radius:8px;padding:6px 10px;margin:2px 0 6px}
.rep-items{background:var(--taupe-50);border-radius:8px;padding:8px 10px;margin:6px 0;display:grid;gap:4px}
.ynp{display:inline-flex;align-items:center;gap:4px;font-weight:650;font-size:13px;padding:2px 9px;border-radius:999px}
.ynp .i{width:13px;height:13px}
.ynp.y{background:var(--olive-50);color:var(--olive-700)}
.ynp.n{background:var(--red-bg);color:var(--red)}
.rep-more summary{cursor:pointer;margin-top:10px;color:var(--olive-700)}
.kpis.k5 > :last-child{grid-column:1 / -1}
@media(min-width:720px){.kpis.k5{grid-template-columns:repeat(3,minmax(0,1fr))}.kpis.k5 > :last-child{grid-column:auto}}
@media(min-width:1180px){.kpis.k5{grid-template-columns:repeat(5,minmax(0,1fr))}}
.kpi .warn-red{color:var(--red)}
.cele{position:fixed;inset:0;z-index:190;display:grid;place-items:center;background:rgba(246,245,241,.86);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:cfade .25s ease both;cursor:pointer;padding:24px;outline:none}
.cele.out{animation:cfadeo .25s ease both}
.cele-card{background:var(--surface);border-radius:24px;box-shadow:var(--shadow-lg);padding:22px 26px 18px;text-align:center;width:min(340px,100%);animation:cpop .45s cubic-bezier(.2,1.3,.4,1) both}
.cele-card h2{display:block;text-align:center;font-size:23px;letter-spacing:-.02em;margin:4px 0 4px}
.cele-amt{margin:0;font-size:16px;color:var(--ink-2)}
.cele-amt b{display:block;font-size:34px;letter-spacing:-.03em;color:var(--olive-700);margin-top:2px;font-variant-numeric:tabular-nums}
.cele-wk{margin:10px auto 0;display:inline-block;font-size:13px;font-weight:600;color:var(--olive-800);background:var(--olive-50);padding:5px 12px;border-radius:999px}
.cele-tap{margin:12px 0 0;color:var(--faint)}
.cele-stage{position:relative;width:180px;height:144px;margin:0 auto}
.cele-stage .bank{width:180px;height:144px;display:block;position:relative;z-index:2}
.cele:not(.still) .bank-body{transform-box:fill-box;transform-origin:50% 90%;animation:cbump .5s ease 1s 2 both}
.cele:not(.still) .is-safe .dial{transform-box:view-box;transform-origin:100px 92px;animation:cdial 1.4s ease .5s both}
.flyzone{position:absolute;left:50%;top:26%;width:0;height:0;z-index:3}
.is-safe .flyzone{top:24%}
.fly{position:absolute;left:0;top:0;opacity:0;animation:cfly .95s cubic-bezier(.45,0,.7,1) both}
.fly svg{display:block;width:100%;height:100%}
.fly.coin{width:30px;height:30px;margin:-15px 0 0 -15px}
.fly.bill{width:44px;height:24px;margin:-12px 0 0 -22px}
.calm .cele-card{padding:26px 24px 22px}
.calm-ic{width:52px;height:52px;border-radius:50%;margin:0 auto 10px;display:grid;place-items:center;background:var(--olive-50);color:var(--olive-700)}
.calm-ic .i{width:24px;height:24px}
.calm h2{font-size:19px}
.calm p{margin:4px 0 0}
@keyframes cfade{from{opacity:0}to{opacity:1}}
@keyframes cfadeo{from{opacity:1}to{opacity:0}}
@keyframes cpop{from{opacity:0;transform:scale(.86) translateY(10px)}to{opacity:1;transform:none}}
@keyframes cfly{0%{opacity:0;transform:translate(var(--sx),var(--sy)) rotate(0) scale(1.15)}12%{opacity:1}55%{opacity:1;transform:translate(calc(var(--sx)*.35),calc(var(--sy)*.35 - 46px)) rotate(calc(var(--rot)*.6)) scale(1)}88%{opacity:1}100%{opacity:0;transform:translate(0,6px) rotate(var(--rot)) scale(.35)}}
@keyframes cbump{0%,100%{transform:none}40%{transform:scale(1.05,.95)}70%{transform:scale(.98,1.03)}}
@keyframes cdial{from{transform:rotate(0)}to{transform:rotate(300deg)}}
@media (prefers-reduced-motion: reduce){.cele,.cele.out,.cele-card{animation-duration:.01s}.fly{display:none}.bank-body,.dial{animation:none!important}}

/* v8: revision-trip pay */
.pline[data-rv]{cursor:pointer}
.pline > span:first-child > .paid,.pline > span:first-child > .owed,.pline > span:first-child > .muted-tag{height:19px;font-size:11px;padding:0 7px;margin-left:6px;vertical-align:1px}
.pline > span:first-child > .paid .i{width:12px;height:12px}
.rvopts{display:grid;gap:8px;margin:0 0 14px}
.rvo{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:1.5px solid var(--line);border-radius:14px;cursor:pointer;background:var(--surface)}
.rvo input{margin:3px 0 0;width:18px;height:18px;accent-color:var(--olive-700);flex:0 0 auto}
.rvo span{display:flex;flex-direction:column;gap:2px;min-width:0}
.rvo b{font-size:15px;font-weight:600}
.rvo small{font-size:12.5px;color:var(--muted)}
.rvo:has(input:checked){border-color:var(--olive-600);background:var(--olive-50)}
.calm-amt{margin:6px 0 2px!important;font-size:15px;color:var(--ink-2)}
.calm-amt b{color:var(--olive-700);font-size:17px}

/* v8: invites */
.ivlink{word-break:break-all;font-family:ui-monospace,Menlo,monospace;font-size:13px;line-height:1.45;user-select:all}
.ivbtns{display:flex;gap:8px;margin-top:10px}
.ivbtns>.btn{flex:1 1 0;justify-content:center}
.ivbtns.three>.btn{padding-left:8px;padding-right:8px}
.ustat{height:20px!important;font-size:11.5px!important;padding:0 8px!important;margin-left:4px;vertical-align:2px}

/* v9: amount-free celebration */
.cele-big{font-size:30px!important;letter-spacing:-.02em}
.cele-line{margin:4px 0 0;font-size:17px;font-weight:600;color:var(--olive-700)}


/* ---------- v10: livelier brand — fresher green, soft glow, white sheen (Pinchos Oct 31 10:36 PM) */
body{background:linear-gradient(180deg,#EEF5E1 0,rgba(246,245,241,0) 340px) no-repeat,var(--bg)}
::selection{background:var(--olive-100)}
a{color:var(--olive-700)}
h2 .i{color:var(--fresh)}
/* header + nav */
.topbar{background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(246,250,238,.92));border-bottom:0;box-shadow:0 1px 0 rgba(36,34,31,.04),0 6px 18px -12px rgba(46,72,19,.35)}
.topbar::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,#4B6A1E 0%,#7FA33A 45%,#A9CC63 62%,#A49487 100%)}
.avatar{background:var(--grad);box-shadow:var(--sheen),0 2px 6px -1px rgba(76,113,33,.45);text-shadow:0 1px 1px rgba(0,0,0,.18)}
.avatar.t{background:var(--taupe-100);box-shadow:none;text-shadow:none}
.bnav{box-shadow:0 -6px 18px -12px rgba(46,72,19,.30)}
.bnav a.on{color:var(--olive-700);font-weight:650}
.bnav a.on .i{color:var(--olive);filter:drop-shadow(0 2px 4px rgba(127,163,58,.45))}
.bnav a.plus .pc{background:var(--grad);box-shadow:var(--sheen),0 8px 18px -4px rgba(90,130,40,.6),0 0 0 4px rgba(255,255,255,.9);transition:transform .12s}
.bnav a.plus:active .pc{transform:scale(.94)}
@media(min-width:960px){
  .side{box-shadow:6px 0 24px -18px rgba(46,72,19,.35)}
  .side::after{content:"";position:absolute;top:0;bottom:0;right:-1px;width:3px;background:linear-gradient(180deg,#4B6A1E 0%,#7FA33A 45%,#A9CC63 62%,#A49487 100%);opacity:.9}
  .side nav a{transition:background .15s,color .15s,box-shadow .15s}
  .side nav a.on{background:var(--grad);color:#fff;box-shadow:var(--sheen),var(--glow);text-shadow:0 1px 1px rgba(0,0,0,.18)}
  .side nav a.on .i{color:#fff}
}
/* primary buttons: gradient + white sheen + soft green glow + lift */
.btn:not(.sec):not(.soft):not(.ghost):not(.danger):not(.dark):not(.rvb){position:relative;background:var(--grad);border-color:rgba(46,72,19,.25);box-shadow:var(--sheen),var(--glow);text-shadow:0 1px 1px rgba(0,0,0,.2);transition:filter .15s,box-shadow .15s,transform .12s}
.btn:not(.sec):not(.soft):not(.ghost):not(.danger):not(.dark):not(.rvb)::before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0) 55%);pointer-events:none}
.btn:not(.sec):not(.soft):not(.ghost):not(.danger):not(.dark):not(.rvb):hover{background:var(--grad);filter:brightness(1.07) saturate(1.05);box-shadow:var(--sheen),var(--glow-lg);transform:translateY(-1px)}
.btn:not(.sec):not(.soft):not(.ghost):not(.danger):not(.dark):not(.rvb):active{transform:translateY(1px) scale(.99);box-shadow:var(--sheen),0 2px 6px -2px rgba(98,146,40,.45);filter:brightness(.97)}
.btn:not(.sec):not(.soft):not(.ghost):not(.danger):not(.dark):not(.rvb):disabled{transform:none;filter:grayscale(.3);box-shadow:none}
.btn.soft{background:linear-gradient(180deg,#F6FAEE,var(--olive-50));color:var(--olive-800);border-color:var(--olive-100);box-shadow:inset 0 1px 0 #fff,0 1px 2px rgba(46,72,19,.08)}
.btn.soft:hover{background:var(--olive-100);box-shadow:inset 0 1px 0 #fff,0 3px 8px -3px rgba(98,146,40,.35)}
.btn.sec{box-shadow:inset 0 1px 0 #fff,0 1px 2px rgba(36,34,31,.06),0 2px 6px -3px rgba(36,34,31,.10)}
.btn.sec:hover,.btn.soft:hover,.btn.danger:hover{transform:translateY(-1px)}
.btn.sec:active,.btn.soft:active,.btn.danger:active{transform:translateY(1px)}
/* cards: clean white, soft lifted shadow */
.card,.list{border-color:#ECE8E2;box-shadow:0 1px 2px rgba(36,34,31,.04),0 6px 18px -10px rgba(46,72,19,.18)}
.card .ch h2 .i,.card h2 .i{color:var(--fresh)}
.list-h{background:linear-gradient(180deg,#FBFDF7,#F7FAF1)}
.item:hover{background:#F8FBF3}
/* KPI / stat tiles */
.kpi{border-color:#ECE8E2;box-shadow:0 1px 2px rgba(36,34,31,.04),0 6px 16px -10px rgba(46,72,19,.20);transition:transform .15s,box-shadow .15s,border-color .15s;position:relative;overflow:hidden}
a.kpi:hover,button.kpi:hover{transform:translateY(-2px);box-shadow:0 2px 4px rgba(36,34,31,.05),0 12px 24px -12px rgba(46,72,19,.32)}
a.kpi:active,button.kpi:active{transform:translateY(0) scale(.99)}
.kpi.hl{background:var(--grad);border-color:transparent;box-shadow:var(--sheen),var(--glow-lg);text-shadow:0 1px 1px rgba(0,0,0,.18)}
.kpi.hl::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,0) 48%),radial-gradient(120px 80px at 100% 0,rgba(169,204,99,.45),transparent 70%);pointer-events:none}
.kpi.hl .k,.kpi.hl .s{color:rgba(255,255,255,.88)}
.kpi.hl .v{color:#fff}
.kpi.good{border-color:#D5E6B6;background:linear-gradient(180deg,#fff 40%,#F4F9EA)}
.kpi.good .v{color:#4D7A1C}
.kpi.warn{border-color:#F2DDBA;background:linear-gradient(180deg,#fff 40%,#FFF6E7)}
.kpi.warn .v{color:#A3560A}
.kpi.bad{border-color:#F3CCC7;background:linear-gradient(180deg,#fff 40%,#FEF1EF)}
.kpi.bad .v{color:#B42318}
.kpi .k .i{color:var(--fresh)}
.kpi.warn .k .i{color:#C9780F} .kpi.bad .k .i{color:#D2412F} .kpi.hl .k .i{color:#fff}
/* pipeline stages */
.stage{transition:transform .15s,box-shadow .15s,border .15s,background .15s;box-shadow:0 1px 2px rgba(36,34,31,.04),0 4px 12px -8px rgba(46,72,19,.22)}
.stage:hover{transform:translateY(-2px)}
.stage:active{transform:translateY(0) scale(.98)}
.stage .l::before{box-shadow:0 0 0 3px color-mix(in srgb,var(--bc) 18%,transparent)}
.stage.on{box-shadow:0 0 0 1px var(--bc),0 6px 16px -8px color-mix(in srgb,var(--bc) 60%,transparent)}
/* status badges: a bit more vivid, glowing dot */
.badge{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--bc,#8A847C) 22%,transparent);background:color-mix(in srgb,var(--bc-bg,#F1EFEB) 78%,var(--bc,#8A847C) 10%)}
.badge::before{opacity:1;box-shadow:0 0 0 2px color-mix(in srgb,currentColor 20%,transparent),0 0 6px color-mix(in srgb,currentColor 45%,transparent)}
.g-done{--bc:#45701A;--bc-bg:#EAF4DA}
.g-intake{--bc:#2F5E95;--bc-bg:#E6EFFA}
.g-order{--bc:#1F7279;--bc-bg:#E1F2F2}
.g-billing{--bc:#A55A05;--bc-bg:#FDF0DA}
.g-pricing{--bc:#7A4E86;--bc-bg:#F4ECF7}
.badge.nsred,.badge.satbad{background:#FDE7E4;color:#B42318;box-shadow:inset 0 0 0 1px rgba(180,35,24,.22)}
.owed{box-shadow:inset 0 0 0 1px rgba(164,90,11,.2)}
.paid{background:#EAF4DA;color:#40611B;box-shadow:inset 0 0 0 1px rgba(69,112,26,.2)}
/* tabs + segmented */
.tabs{background:#EEEBE5;box-shadow:inset 0 1px 2px rgba(36,34,31,.06)}
.tabs button.on,.tabs a.on{background:var(--grad);color:#fff;box-shadow:var(--sheen),0 3px 8px -3px rgba(98,146,40,.55);text-shadow:0 1px 1px rgba(0,0,0,.18)}
.tabs button.on .i,.tabs a.on .i{color:#fff}
.tabs button.tab-late.on{background:var(--red);color:#fff;box-shadow:0 3px 8px -3px rgba(180,35,24,.5)}
.seg button.on{background:linear-gradient(180deg,#F6FAEE,var(--olive-50));box-shadow:inset 0 0 0 1px var(--olive),0 3px 8px -4px rgba(98,146,40,.45)}
.steps i.c{box-shadow:0 0 0 3px var(--olive-100),0 0 8px rgba(127,163,58,.6)}
.bar i{background:linear-gradient(90deg,#5A8228,#8DB04A)}
.chk input:checked + span,.fuchk.on{background:var(--grad);box-shadow:var(--sheen),0 2px 6px -2px rgba(98,146,40,.5)}
.fstep .n{background:var(--grad);box-shadow:0 2px 6px -1px rgba(98,146,40,.5)}
.moc.td .dn{background:var(--grad);box-shadow:0 2px 6px -1px rgba(98,146,40,.5)}
.choice:hover,.fopt.ok.on{box-shadow:inset 0 0 0 1px var(--olive),0 4px 12px -6px rgba(98,146,40,.45)}
.login{background:radial-gradient(1200px 520px at 50% -10%,#E3EFCC,transparent 70%),var(--bg)}
/* celebration picks up the fresh green */
.cele-card{box-shadow:0 0 0 1px rgba(127,163,58,.18),0 18px 44px -12px rgba(46,72,19,.35),0 0 60px -20px rgba(141,176,74,.55)}
.cele-big{background:linear-gradient(135deg,#40611B,#6A962F);-webkit-background-clip:text;background-clip:text;color:transparent}
.cele-line{color:#4D7A1C}
.cele-wk{background:var(--grad);color:#fff;box-shadow:var(--sheen),0 4px 10px -3px rgba(98,146,40,.55);text-shadow:0 1px 1px rgba(0,0,0,.18)}
.calm-ic{background:linear-gradient(180deg,#F1F7E4,#E1EDC8);color:#40611B;box-shadow:0 4px 12px -4px rgba(98,146,40,.45)}
@media (prefers-reduced-motion: reduce){.btn,.kpi,.stage{transition:none!important;transform:none!important}}

/* v11 — measure form: big tap targets, two preset pickers, +/- adjustments, final size */
.mform .fw{margin-bottom:14px}
.mform .fw label.f{margin-bottom:0}
.flabel{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}
.flabel>span{font-size:13.5px;font-weight:650;color:var(--ink-2)}
.pk2{display:grid;grid-template-columns:1.25fr 1fr;gap:10px}
.pk2 .pk{min-height:56px;font-size:21px;font-weight:650;text-align:center;text-align-last:center;padding:8px 30px 8px 12px;font-variant-numeric:tabular-nums;background-color:#fff}
.pk2 .pkf{color:var(--olive-800)}
.mform .seg button{min-height:50px;font-size:15.5px;padding:0 12px}
.mform .seg.big2,.mform .seg.big3,.mform .seg.grid,.mform .seg.adjm{display:grid;gap:8px}
.mform .seg.big2{grid-template-columns:1fr 1fr}
.mform .seg.big3,.mform .seg.adjm{grid-template-columns:1fr 1fr 1fr}
.mform .seg.grid{grid-template-columns:1fr 1fr}
.mform .seg.unit{display:inline-flex;gap:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}
.mform .seg.unit button{min-height:34px;padding:0 14px;border:0;border-radius:0;font-size:14px;box-shadow:none}
.mform .seg.unit button.on{background:linear-gradient(180deg,#66902D,#4B6A1E);color:#fff}
.adjf .adjp{margin-top:8px}
.finalw{margin-top:8px;padding:10px 12px;border-radius:11px;background:var(--olive-50);border:1px solid var(--olive-100);font-size:14.5px;color:var(--olive-800);display:flex;justify-content:space-between;align-items:center}
.finalw b{font-size:19px;font-variant-numeric:tabular-nums}
.finalw.neg{background:#FDECEC;border-color:#F3C2C2;color:#9B1C1C}
.mform textarea.in{min-height:70px}
.mform .photo-pick .row .btn{flex:1;min-height:50px}
.mform .mfoot{position:sticky;bottom:-1px;background:linear-gradient(180deg,rgba(255,255,255,0),#fff 22%);padding-top:12px;padding-bottom:4px;z-index:2;flex-wrap:nowrap}
.mform .mfoot .btn.big{flex:1;min-height:54px}
.wadj{display:block}
.btn.big-add{min-height:50px}

/* v11: savings jar + coin stack */
.is-jar .flyzone{top:20%}
.jar-stack .js{transform-box:fill-box;transform-origin:50% 100%}
.cele:not(.still) .jar-stack .js{opacity:0;animation:jstack .22s cubic-bezier(.3,1.6,.5,1) var(--d) both}
.cele.still .jar-stack .js{opacity:1}
@keyframes jstack{from{opacity:0;transform:translateY(-26px) scaleY(.6)}to{opacity:1;transform:none}}
.cele:not(.still) .is-jar .bank-body{animation:cbump .35s ease 1.05s 3 both}
@media (prefers-reduced-motion: reduce){.jar-stack .js{animation:none!important;opacity:1!important}}

/* v12: colorful celebration — sunburst backdrop, gradient-framed card, polished bank, bouncy rainbow title with sparkles; money + confetti on a canvas */
.cele12{background:radial-gradient(125% 85% at 50% 40%,rgba(255,250,228,.97) 0%,rgba(255,226,150,.93) 26%,rgba(140,190,74,.9) 60%,rgba(38,82,28,.96) 100%);overflow:hidden}
.c12-rays{position:absolute;left:50%;top:40%;width:180vmax;height:180vmax;margin:-90vmax 0 0 -90vmax;background:repeating-conic-gradient(from 0deg,rgba(255,255,255,.34) 0deg 6deg,rgba(255,255,255,0) 6deg 15deg);-webkit-mask-image:radial-gradient(circle,#000 0,#000 12%,transparent 55%);mask-image:radial-gradient(circle,#000 0,#000 12%,transparent 55%);animation:c12spin 16s linear infinite;pointer-events:none;z-index:0}
.c12-fx{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:4}
.cele12 .cele-card{position:relative;z-index:2;border:3px solid transparent;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,#FFC23D,#FF6A88 30%,#A26BFF 55%,#33C1FF 78%,#6FD84B) border-box;box-shadow:0 24px 60px -14px rgba(30,60,10,.6),0 0 0 7px rgba(255,255,255,.38),0 0 70px -10px rgba(255,200,60,.8);padding:18px 22px 16px;animation:c12pop .55s cubic-bezier(.2,1.4,.4,1) both}
.cele12 .cele-stage{width:220px;height:176px}
.cele12 .cele-stage .bank{width:220px;height:176px;filter:drop-shadow(0 6px 10px rgba(60,40,0,.18))}
.cele12 .bank-body,.cele12 .is-safe .dial{animation:none!important}
.cele12 .dial{transform-box:view-box;transform-origin:100px 94px}
.c12-glow{position:absolute;left:50%;top:54%;width:260px;height:260px;margin:-130px 0 0 -130px;border-radius:50%;background:radial-gradient(circle,rgba(255,228,120,.95) 0%,rgba(255,196,64,.55) 32%,rgba(255,170,40,0) 68%);opacity:.4;z-index:1;pointer-events:none}
.cele12.still .c12-glow{opacity:.75}
.cele12 .jar-stack .js{opacity:0;animation:none!important}
.cele12 .jar-stack .js.on{opacity:1;animation:jstack .22s cubic-bezier(.3,1.6,.5,1) both!important}
.cele12.still .jar-stack .js.on{animation:none!important}
.cele12 .cele-big{position:relative;display:block;margin:4px 0 2px;font-size:33px!important;font-weight:900;letter-spacing:-.025em;background:none!important;color:#E8590C;-webkit-text-fill-color:initial}
.c12-t{display:inline-block;filter:drop-shadow(0 2px 0 #fff) drop-shadow(0 4px 6px rgba(150,60,0,.25))}
.c12-t span{display:inline-block;background:linear-gradient(90deg,#F5A300,#FF6B2C 25%,#F43F7A 50%,#A855F7 75%,#3B82F6);background-size:1600% 100%;background-position:var(--p) 50%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:c12bounce .75s cubic-bezier(.2,1.7,.4,1) calc(.2s + var(--i)*38ms) both}
.cele12 .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.spk{position:absolute;width:16px;height:16px;background:radial-gradient(circle,#fff 0 18%,#FFD23F 40%,rgba(255,210,63,0) 72%);clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%);animation:c12tw 1.1s ease-in-out infinite both;pointer-events:none}
.spk.k1{left:2%;top:-6px;animation-delay:.5s}.spk.k2{right:3%;top:-2px;width:20px;height:20px;animation-delay:.85s}.spk.k3{left:18%;bottom:-6px;width:12px;height:12px;animation-delay:1.2s}.spk.k4{right:20%;bottom:-8px;width:14px;height:14px;animation-delay:.65s}
.cele12 .cele-line{font-size:17px;color:#3F7A12}
.cele12 .cele-wk{background:linear-gradient(135deg,#F5A300,#FF7A2C);box-shadow:0 4px 12px -3px rgba(230,120,0,.55),inset 0 1px 0 rgba(255,255,255,.45)}
@keyframes c12spin{to{transform:rotate(360deg)}}
@keyframes c12pop{0%{transform:scale(.6) translateY(30px);opacity:0}100%{transform:none;opacity:1}}
@keyframes c12bounce{0%{transform:translateY(-34px) scale(.3) rotate(-12deg);opacity:0}55%{transform:translateY(5px) scale(1.18) rotate(4deg);opacity:1}78%{transform:translateY(-3px) scale(.96)}100%{transform:none;opacity:1}}
@keyframes c12tw{0%,100%{transform:scale(0) rotate(0);opacity:0}50%{transform:scale(1) rotate(90deg);opacity:1}}
@media (prefers-reduced-motion: reduce){.c12-rays,.spk,.c12-t span,.cele12 .cele-card{animation:none!important}.c12-t span{opacity:1}}

/* v15: invoice can't go out incomplete */
.invmiss{margin-top:12px;border:1.5px solid #D92D20;background:#FEF3F2;border-radius:12px;padding:12px 14px;color:#7A271A}
.invmiss .imh{display:flex;align-items:center;gap:8px;font-weight:700;color:#B42318;font-size:16px}
.invmiss .imh .i{width:20px;height:20px;flex:0 0 auto}
.invmiss p{margin:6px 0 10px;font-size:14px;line-height:1.35}
.invmiss .imb{display:flex;flex-wrap:wrap;gap:8px}
.invmiss .imb .btn{background:#B42318!important;background-image:none!important;border-color:#B42318!important;color:#fff!important;box-shadow:none!important;flex:0 0 auto}
.in.need{border-color:#D92D20!important;box-shadow:0 0 0 3px rgba(217,45,32,.18)}

/* v15: address suggestions */
.addr-sug{position:fixed;z-index:9999;background:#fff;border:1px solid #DDD8CA;border-radius:12px;box-shadow:0 12px 30px -10px rgba(31,47,56,.35);overflow:hidden;max-height:320px;overflow-y:auto}
.addr-sug button{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;border:0;background:#fff;padding:11px 12px;font:inherit;font-size:15px;color:#1F2F38;cursor:pointer;border-bottom:1px solid #F0EDE5}
.addr-sug button:active,.addr-sug button:hover{background:#F5F3EC}
.addr-sug button .i{width:18px;height:18px;flex:0 0 auto;margin-top:2px;color:#6F7A42}
.addr-sug button span{display:flex;flex-direction:column;min-width:0}.addr-sug small{color:#6B7280;font-size:13px;margin-top:1px}
.addr-sug .src{font-size:11px;color:#9CA3AF;padding:6px 12px 8px}

/* v16: first / last name, customer sort */
.toolbar .csort{width:auto;flex:0 0 auto;order:2;height:36px;padding-top:0;padding-bottom:0;font-size:14px}
@media(max-width:600px){.toolbar:has(.csort){flex-wrap:wrap}.toolbar .csort{order:0;width:100%}}
.nmrow > .f{min-width:0}

/* v17: move back one step + undo bar */
.card.next .backrow{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line, #e6e1d8)}
.card.next .backrow .btn{justify-content:center;min-height:46px;font-weight:600}
.card.next h2 + .backrow, .card.next .eyebrow + .backrow{border-top:0;padding-top:0}
.bkq{font-size:20px;line-height:1.3;margin:4px 0 12px}
.bksteps{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.bksteps .pill{display:inline-flex;align-items:center;padding:6px 12px;border-radius:999px;background:var(--soft, #f3efe8);font-weight:600;font-size:14px}
.bksteps .pill.on{background:var(--ink);color:#fff}
.bksteps .i{width:18px;height:18px;opacity:.6}
.bkh{margin:0 0 16px;padding-left:20px;color:var(--muted, #6b665e);font-size:14.5px;line-height:1.45}
.bkh li{margin:3px 0}
#undobar{position:fixed;left:50%;bottom:calc(92px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:8px 8px 8px 16px;border-radius:14px;font-weight:550;font-size:14.5px;opacity:0;transition:all .25s;z-index:101;width:max-content;max-width:calc(100vw - 24px);box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:12px;overflow:hidden}
#undobar.on{opacity:1;transform:translate(-50%,0)}
#undobar .ut{display:flex;align-items:center;gap:8px;min-width:0}
#undobar .ut span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.3}
#undobar .ubtn{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;background:#fff;color:var(--ink);border:0;border-radius:10px;padding:10px 14px;font:inherit;font-weight:700;cursor:pointer;min-height:42px}
#undobar .ubtn .i{width:18px;height:18px}
#undobar .ul{position:absolute;left:0;bottom:0;height:3px;background:rgba(255,255,255,.55);width:100%;animation:undoT 10s linear forwards}
@keyframes undoT{from{width:100%}to{width:0}}
@media(min-width:960px){#undobar{bottom:28px;left:calc(50% + var(--side)/2)}}

.card.next .specrow{margin-top:12px}
.card.next .specrow .f{margin:0}
.card.next .specrow.none .f > span{color:var(--red);font-weight:700;display:flex;align-items:center;gap:6px}

/* v17: measurement steppers (− big number +), hold to repeat, tap grid for fractions */
.pk2.stp{display:grid;grid-template-columns:1.12fr 1fr;gap:8px;position:relative}
.stp .stpr{display:grid;grid-template-columns:48px minmax(0,1fr) 48px;grid-template-rows:auto auto;align-items:stretch;column-gap:0;border:1.5px solid var(--line);border-radius:14px;background:#fff;overflow:hidden}
.stp .stpr .sv{grid-column:2;grid-row:1;border:0;border-radius:0;min-height:60px;padding:6px 2px;font-size:25px;font-weight:700;text-align:center;font-variant-numeric:tabular-nums;background:#fff;box-shadow:none;min-width:0;width:100%;-webkit-appearance:none;appearance:none}
.stp .stpr.f .sv{font-size:22px;color:var(--olive-800)}
.stp .stpr .sv:focus{outline:none;background:var(--olive-50, #f4f6ee)}
.stp .stpr .sv.bad{color:var(--red)}
.stp .sb{grid-row:1;border:0;background:var(--olive-50, #f3f4ee);color:var(--ink);font-size:28px;font-weight:600;line-height:1;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;min-height:60px}
.stp .sb:first-child{grid-column:1;border-right:1px solid var(--line)}
.stp .sb:nth-of-type(2){grid-column:3;border-left:1px solid var(--line)}
.stp .sb:active,.stp .sb.hold{background:var(--olive-200, #dfe5cf)}
.stp .su{grid-column:1 / -1;grid-row:2;text-align:center;font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:3px 0 5px;border-top:1px solid var(--line);background:#fcfbf9}
.stp .frgrid{grid-column:1 / -1;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:8px;border:1.5px solid var(--line);border-radius:14px;background:#fff;box-shadow:var(--shadow-lg)}
.stp .frgrid.hide{display:none}
.stp .frgrid button{min-height:46px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit;font-size:17px;font-weight:650;font-variant-numeric:tabular-nums;cursor:pointer}
.stp .frgrid button.on{background:var(--ink);color:#fff;border-color:var(--ink)}
@media(max-width:370px){.stp .stpr{grid-template-columns:42px minmax(0,1fr) 42px}.stp .stpr .sv{font-size:22px}}

.pk2.stp.one{grid-template-columns:minmax(0,220px)}
.mform select.bigsel,.fw select.bigsel{min-height:56px;font-size:18px;font-weight:600}

.stp .stpr.f{grid-template-columns:42px minmax(0,1fr) 42px}
.stp .stpr.f .sv{font-size:20px;letter-spacing:-.3px;padding:6px 0}

/* v19: password eye */
.pwwrap,label.f > span.pwwrap{display:block;position:relative;margin:0;font-size:inherit;font-weight:inherit;color:inherit}
.pwwrap .in.pwin{padding-right:54px}
.pweye{position:absolute;top:0;right:0;bottom:0;width:50px;min-height:44px;display:flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--ink-2);cursor:pointer;border-radius:0 11px 11px 0;padding:0;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.pweye:hover{color:var(--ink,#222)}
.pweye:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--olive)}
.pweye svg.i{width:22px;height:22px;vertical-align:0}
.pweye[aria-pressed="true"]{color:var(--olive)}
input.pwin::-ms-reveal,input.pwin::-ms-clear{display:none}

/* v20: options, removed shades, saved documents */
.optb{display:inline-flex;align-items:center;align-self:flex-start;margin:3px 0 2px;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:650;letter-spacing:.01em;white-space:nowrap;background:#EEF0E4;color:var(--olive-700,#4F5A2A)}
.optb.oout{background:#F1EFEA;color:var(--muted)}
.optb.och{background:#E3F1E5;color:#1E6B34}
.wrow.optrow,.prow.optrow{position:relative;padding-left:12px;border-left:3px solid #C9CFAE;margin-left:2px}
.wrow.optrow.off{opacity:.78}
.wrow.optrow.off .sz{color:var(--muted)}
.wmore{flex:0 0 auto;display:inline-grid;place-items:center;width:44px;height:44px;margin:-6px -8px -6px 0;border-radius:12px;color:var(--muted);cursor:pointer}
.wmore:hover,.wmore:focus-visible{background:var(--line-2,#f0ede6);color:var(--ink)}
.wmore .i{width:22px;height:22px}
.wmenu{display:grid;gap:10px;margin-top:6px}
.rmcard .rmrow{display:flex;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line-2)}
.rmcard .rmrow:last-child{border-bottom:0}
.rmcard .rmrow .wmain{opacity:.85}
.rmcard .rmrow .btn{flex:0 0 auto}
.docs{margin:-4px 0 0}
.docrow{display:flex;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line-2);color:inherit;text-decoration:none}
.docrow:last-child{border-bottom:0}
.docrow>.i:first-child{flex:0 0 auto;width:22px;height:22px;color:var(--olive-700,#4F5A2A)}
.docrow .wmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.docrow:hover .b{text-decoration:underline}
.optsets{margin-top:12px;display:grid;gap:10px}
.optset{border:1px solid var(--line-2);border-radius:12px;padding:10px 12px;background:#FBFAF7}
.optline{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:5px 0;font-size:14px}
.optline.on{font-weight:600}
.optline .optb{margin:0 0 0 6px}

/* v21: option sets never wider than the card (long "Chosen by customer" badge wraps) */
.optsets{grid-template-columns:minmax(0,1fr)}.optset{min-width:0}.optline>span:first-child{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:4px}.optline .optb{white-space:normal;margin:0}

/* v22 booking */
.bkd{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:12px;background:#EEF6EC;color:#2F6B2A;font-size:14.5px;font-weight:500}
.bkd .i{width:18px;height:18px;flex:0 0 auto}
.bkd b{font-weight:700}
.bkd.fresh{animation:bkdpop 1.6s ease-out}
@keyframes bkdpop{0%{box-shadow:0 0 0 0 rgba(47,107,42,.45)}100%{box-shadow:0 0 0 12px rgba(47,107,42,0)}}
.fdnote{display:flex;align-items:center;gap:6px;margin:8px 0 0}
.fdnote .i{width:14px;height:14px}
input.in.need{border-color:var(--amber, #B7791F);box-shadow:0 0 0 3px rgba(183,121,31,.25)}
.hcnote{margin:6px 0 0;color:var(--olive-700, #4d5a2a);font-weight:500}
.hcwarn{display:inline-block;margin-left:4px;padding:1px 8px;border-radius:999px;background:var(--amber-bg, #FFF4E0);color:var(--amber, #B7791F);font-size:12px;font-weight:600;white-space:nowrap}
.rmbtns{display:flex;flex-direction:column;gap:6px;align-items:stretch;flex:0 0 auto}
.btn.danger-t{color:var(--red);border-color:transparent}

/* v24: swap Option 1 / Option 2 */
.oswaps{margin-top:12px;padding:10px 12px;border:1px dashed var(--line-2);border-radius:12px;background:rgba(90,130,40,.05)}
.oswrow{display:flex;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--line-2)}
.oswaps .oswrow:first-of-type{border-top:0}
.oswrow .wmain{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.oswrow .btn,.ordrow .btn{flex:0 0 auto}
.btn.oswap{white-space:nowrap}
.btn.oswap.locked{opacity:.6}
.ordrow{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line-2)}
.ordrow:last-child{border-bottom:0}
.ordrow .wmain{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.ordrow .rmbtns{flex-direction:row}

/* v25: drag to order a window's options (3+), primary / secondary / 3rd */
.dlist{display:flex;flex-direction:column;gap:6px;margin:4px 0 2px;position:relative}
.drow{display:flex;gap:10px;align-items:center;padding:8px 8px 8px 4px;border:1px solid var(--line-2);border-radius:12px;background:var(--surface,#fff);transition:box-shadow .15s}
.drow .wmain{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.drow .drank{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.drow .dbtns{display:flex;gap:6px;flex:0 0 auto}
.drow .dbtns .btn{min-width:40px;padding-left:0;padding-right:0}
.drow .dbtns .btn:disabled{opacity:.3}
.dhandle{flex:0 0 auto;width:40px;height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:10px;color:var(--muted,#888)}
.dhandle i{display:block;width:18px;height:2px;border-radius:2px;background:currentColor}
.dhandle.off{cursor:default}
.drow.dragging{position:relative;z-index:3;box-shadow:0 8px 24px rgba(0,0,0,.18);transition:none;cursor:grabbing}
.dlist.dragon{-webkit-user-select:none;user-select:none}
.dlist.dragon .drow:not(.dragging){transition:transform .12s}
.drow:first-child{border-color:rgba(90,130,40,.55);background:rgba(90,130,40,.06)}
.dlist.saving{opacity:.6;pointer-events:none}
.oswset+.oswset{margin-top:8px;padding-top:6px;border-top:1px solid var(--line-2)}

/* v26: notifications bell + settings, cost & profit */
.iconbtn.nbell{position:relative;border:0;background:none;cursor:pointer;color:var(--ink-2);padding:6px}
.iconbtn.nbell .i{width:24px;height:24px}
[data-bell] .nb{position:absolute;top:0;right:-2px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--red,#C0362C);color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center;box-shadow:0 0 0 2px #fff}
.nbell-side{position:relative}
.nbell-side .nb{position:static;margin-left:auto;box-shadow:none}
.nb.hide{display:none}
.nhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 12px}
.nlist{display:flex;flex-direction:column;gap:2px;max-height:62vh;overflow:auto;margin:0 -4px}
.nrow{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;border-radius:10px;padding:11px 8px;font:inherit;color:inherit;cursor:pointer;min-height:56px}
.nrow:hover{background:var(--bg)}
.nrow .ndot{flex:0 0 9px;height:9px;border-radius:50%;background:transparent}
.nrow.un .ndot{background:var(--olive,#6F7A42)}
.nrow.un .nt{font-weight:700}
.nrow .nmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.nrow .nt{font-size:15px;font-weight:550;line-height:1.25}
.nrow>.i{flex:0 0 auto;color:var(--ink-3,#9aa)}
.linkcard{display:block;color:inherit;text-decoration:none}
.linkcard .ch{display:flex;justify-content:space-between;align-items:center}
.nset .nrule{padding:12px 0;border-top:1px solid var(--line)}
.nset .nrule:first-of-type{border-top:0;padding-top:2px}
.nrl{margin-bottom:8px}
.nchips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
.nlab{width:52px;flex:0 0 52px}
.nchip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:6px 11px;font-size:13.5px;font-weight:550;cursor:pointer;background:#fff;user-select:none;min-height:34px}
.nchip input{width:16px;height:16px;margin:0;accent-color:var(--olive,#6F7A42)}
.nchip.on{background:var(--olive-50,#EEF0E2);border-color:var(--olive,#6F7A42);color:var(--olive-800,#3E4520)}
.costcard .pl{display:flex;flex-direction:column;gap:0;margin-top:2px}
.costcard .pl>div{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:7px 0;border-bottom:1px dashed var(--line);font-size:14.5px}
.costcard .pl .tot{border-bottom:0;border-top:1.5px solid var(--ink,#1F2F38);margin-top:2px;padding-top:10px;font-size:17px}
.costcard .pl .tot b{color:var(--olive-700,#55602F);font-size:20px}
.costcard .pl .mg{border-bottom:0;padding-top:2px}
.costcard .pl .mg b{color:var(--olive-700,#55602F)}
.costcard .pl .neg b{color:var(--red,#C0362C)}
.costcard .costs{margin-top:10px}
tr.ptot td{border-top:1.5px solid var(--ink,#1F2F38)}
