/* ===== Nexus Board Pack Generator — design tokens ===== */
:root{
  --green-900:#0d3b18;
  --green-800:#154829;
  --green-700:#1e5a33;
  --green-600:#2d6b3f;
  --green-ink:#0d4b1c;
  --olive-600:#7a8737;
  --olive-500:#8f9d49;
  --olive-400:#a9b978;
  --sage-300:#c5dcca;
  --sage-200:#dde6c8;
  --sage-100:#e8efbc;
  --sage-card:#dce6cb;
  --chart-fill:#e0eed4;
  --cream:#f6f7f2;
  --paper:#ffffff;
  --gray-500:#6b7280;
  --gray-400:#9aa0a6;
  --gray-200:#e6e8e2;
  --ink:#1c2a1f;
  --muted:#5d6b5f;

  --font-head:"IBM Plex Sans","Archivo",system-ui,sans-serif;
  --font-body:"IBM Plex Sans",system-ui,sans-serif;
  --font-num:"IBM Plex Mono",ui-monospace,Menlo,monospace;

  --r-sm:8px; --r-md:12px; --r-lg:18px; --r-xl:24px;
  --shadow-sm:0 1px 2px rgba(13,59,24,.06),0 1px 3px rgba(13,59,24,.08);
  --shadow-md:0 4px 14px rgba(13,59,24,.08);
  --shadow-lg:0 18px 50px rgba(13,59,24,.16);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--cream);
  -webkit-font-smoothing:antialiased;
  font-size:15px;
  line-height:1.5;
}
button{font-family:inherit;cursor:pointer}
h1,h2,h3,h4{font-family:var(--font-head);font-weight:800;letter-spacing:-.02em;margin:0;color:var(--green-ink)}
input,textarea,select{font-family:inherit}

/* ===== App shell ===== */
#root{min-height:100vh}
.app{display:grid;grid-template-columns:264px 1fr;height:100vh;overflow:hidden;transition:grid-template-columns .18s ease}
.app.sb-collapsed{grid-template-columns:64px 1fr}

/* Sidebar */
.sidebar{background:var(--green-900);color:#dfe9df;display:flex;flex-direction:column;overflow:hidden;position:relative}
.sb-resizer{position:absolute;top:0;right:0;width:7px;height:100%;cursor:col-resize;z-index:4}
.sb-resizer::after{content:"";position:absolute;top:0;right:0;width:2px;height:100%;background:transparent;transition:background .12s}
.sb-resizer:hover::after{background:var(--olive-400)}
.sb-toggle{position:absolute;top:18px;right:12px;width:24px;height:24px;border-radius:7px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.06);color:#cfe0cf;font-size:14px;line-height:1;display:grid;place-items:center;z-index:3}
.sb-toggle:hover{background:rgba(255,255,255,.14);color:#fff}
.app.sb-collapsed .sb-toggle{right:50%;transform:translateX(50%);top:14px}
.app.sb-collapsed .sb-brand{padding:52px 0 14px;justify-content:center}
.app.sb-collapsed .sb-brand-txt,
.app.sb-collapsed .sb-hidec,
.app.sb-collapsed .q-full{display:none}
.app:not(.sb-collapsed) .q-short{display:none}
.app.sb-collapsed .sb-sec{display:none}
.app.sb-collapsed .arch-fy{margin:2px 6px}
.app.sb-collapsed .fy-h{justify-content:center;padding:9px 0}
.app.sb-collapsed .arch-cycle{justify-content:center;padding:10px 0 10px 0}
.app.sb-collapsed .arch-cycle .dot{position:static}
.app.sb-collapsed .q-short{font-weight:700;font-size:13px}
.app.sb-collapsed .badge-live,.app.sb-collapsed .arch-cycle .meta{display:none}
.app.sb-collapsed .new-q{justify-content:center;padding:10px 0;font-size:16px}
.app.sb-collapsed .sb-foot{justify-content:center;padding:14px 0}
.sb-brand{padding:22px 44px 16px 20px;display:flex;align-items:center;gap:11px;border-bottom:1px solid rgba(255,255,255,.08)}
.sb-logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--olive-400),var(--green-600));display:grid;place-items:center;font-family:var(--font-head);font-weight:800;color:#0d3b18;font-size:17px;flex:none}
.sb-logo.brand,.splash-logo.brand{background:none;padding:0;overflow:hidden}
.sb-logo.brand img,.splash-logo.brand img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}
.sb-brand .t{font-family:var(--font-head);font-weight:800;font-size:15px;color:#fff;line-height:1.15}
.sb-brand .s{font-size:11px;color:var(--olive-400);letter-spacing:.04em}
.sb-home{display:inline-flex;align-items:center;gap:5px;margin-top:4px;padding:3px 10px;border-radius:999px;background:rgba(255,255,255,.12);color:#e6f2e6;font-size:11.5px;font-weight:600;letter-spacing:.02em;transition:background .15s}
.sb-brand:hover .sb-home{background:rgba(255,255,255,.22)}
.sb-sec{padding:18px 14px 6px;font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:#7e9583;font-weight:600}
.sb-scroll{overflow-y:auto;flex:1;padding-bottom:14px}
.arch-fy{margin:2px 10px 6px;border-radius:var(--r-md);overflow:hidden}
.arch-fy>.fy-h{display:flex;align-items:center;gap:8px;padding:9px 12px;font-weight:600;font-size:13px;color:#cfe0cf}
.arch-fy .fy-h .chev{margin-left:auto;color:#6f8a76;font-size:11px}
.arch-cycle{display:flex;align-items:center;gap:10px;margin:2px 10px;padding:9px 12px 9px 30px;border-radius:10px;font-size:13.5px;color:#bcd0bd;position:relative}
.arch-cycle:hover{background:rgba(255,255,255,.05)}
.arch-cycle.active{background:rgba(169,185,120,.18);color:#fff;font-weight:600}
.arch-cycle .dot{width:7px;height:7px;border-radius:50%;background:#5f7a66;position:absolute;left:14px}
.arch-cycle.active .dot{background:var(--olive-400);box-shadow:0 0 0 3px rgba(169,185,120,.25)}
.arch-cycle .meta{margin-left:auto;font-size:11px;color:#7e9583;font-weight:500}
.arch-cycle .badge-live{margin-left:auto;font-size:9.5px;letter-spacing:.08em;background:var(--olive-400);color:#0d3b18;padding:2px 7px;border-radius:20px;font-weight:700}
.sb-foot{padding:14px 18px;border-top:1px solid rgba(255,255,255,.08);font-size:11.5px;color:#7e9583;display:flex;align-items:center;gap:9px}
.sb-foot .av{width:28px;height:28px;border-radius:50%;background:var(--olive-400);color:#0d3b18;display:grid;place-items:center;font-weight:700;font-size:12px}

/* ===== Main column ===== */
.main{display:flex;flex-direction:column;overflow:hidden;background:var(--cream);min-width:0}
.topbar{height:62px;flex:none;display:flex;align-items:center;gap:18px;padding:0 26px;border-bottom:1px solid var(--gray-200);background:#f3f4ee}
.tb-title{font-family:var(--font-head);font-weight:800;font-size:18px;color:var(--green-ink);white-space:nowrap}
.topbar>div:first-child{min-width:0}
.tb-sub{font-size:12.5px;color:var(--muted)}
.mode-toggle{margin-left:auto;display:flex;background:#e7eadf;border-radius:999px;padding:4px;gap:2px}
.mode-toggle button{border:none;background:none;padding:7px 17px;border-radius:999px;font-size:13px;font-weight:600;color:var(--muted);display:flex;align-items:center;gap:7px}
.mode-toggle button.on{background:var(--green-800);color:#fff;box-shadow:var(--shadow-sm)}
.btn{border:none;border-radius:10px;padding:9px 16px;font-size:13.5px;font-weight:600;display:inline-flex;align-items:center;gap:8px}
.btn-primary{background:var(--green-800);color:#fff}
.btn-primary:hover{background:var(--green-700)}
.btn-ghost{background:transparent;color:var(--green-800);border:1px solid var(--sage-300)}
.btn-ghost:hover{background:#eef2e6}
.ar-groupby-select.btn-ghost{cursor:pointer;font-weight:600;-webkit-appearance:none;appearance:none;background-image:none}
.ar-groupby-wrap{display:flex;align-items:center;gap:8px;background:transparent;border:1px solid var(--sage-300);border-radius:9px;padding:0 4px 0 14px;height:40px}
.ar-groupby-lbl{font-weight:600;font-size:13px;color:var(--green-800);white-space:nowrap;flex-shrink:0}
.ar-groupby-wrap .ar-groupby-select{border:none;background:#fff;font-weight:600;font-size:12px;color:var(--ink);padding:6px 8px;border-radius:7px;cursor:pointer}
.btn-olive{background:var(--olive-600);color:#fff}
.btn-olive:hover{filter:brightness(1.06)}

/* Work area */
.work{flex:1;overflow-y:auto;display:flex;min-width:0}
.steps{width:206px;flex:none;padding:16px 12px;border-right:1px solid var(--gray-200);position:relative;transition:width .12s ease}
.rail-resizer{position:absolute;top:0;right:0;width:7px;height:100%;cursor:col-resize;z-index:3}
.rail-resizer::after{content:"";position:absolute;top:0;right:0;width:2px;height:100%;background:transparent;transition:background .12s}
.rail-resizer:hover::after{background:var(--olive-400)}
.steps.collapsed{width:60px;padding:16px 8px}
.rail-toggle{position:absolute;top:12px;right:10px;width:24px;height:24px;border-radius:7px;border:1px solid var(--gray-200);background:#fff;color:var(--muted);font-size:14px;line-height:1;display:grid;place-items:center;z-index:2}
.rail-toggle:hover{background:#eef2e6;color:var(--green-700)}
.steps.collapsed .rail-toggle{right:50%;transform:translateX(50%)}
.steps:not(.collapsed){padding-top:14px}
.steps:not(.collapsed) .step:first-of-type{margin-top:26px}
.steps.collapsed .step:first-of-type{margin-top:40px}
.step{display:flex;gap:12px;padding:10px 11px;border-radius:11px;cursor:pointer;align-items:flex-start;position:relative}
.steps.collapsed .step{justify-content:center;padding:9px 0}
.steps.collapsed .step-text{display:none}
.steps.collapsed .step-line{display:none}
.step:hover{background:#eef2e6}
.step.active{background:#fff;box-shadow:var(--shadow-sm)}
.step .num{width:24px;height:24px;border-radius:50%;flex:none;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--sage-200);color:var(--green-700)}
.step.active .num{background:var(--green-800);color:#fff}
.step.done .num{background:var(--olive-500);color:#fff}
.step .lbl{font-size:13.5px;font-weight:600;color:var(--ink);line-height:1.25}
.step .desc{font-size:11.5px;color:var(--muted);margin-top:2px}
.step-line{position:absolute;left:24px;top:42px;bottom:-6px;width:2px;background:var(--gray-200)}

.canvas{flex:1;overflow-x:hidden;overflow-y:auto;padding:24px 28px 70px;min-width:0}
.canvas-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:22px}
.canvas-head .h{flex:1}
.canvas-head h2{font-size:25px}
.canvas-head .sub{color:var(--muted);font-size:14px;margin-top:5px;max-width:60ch}
.tag{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.04em;padding:5px 11px;border-radius:999px;text-transform:uppercase}
.tag-olive{background:var(--olive-400);color:#26340f}
.tag-green{background:var(--green-800);color:#dff0df}
.tag-sage{background:var(--sage-200);color:var(--green-700)}

.card{background:var(--paper);border:1px solid var(--gray-200);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}
.card-pad{padding:20px 22px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}

/* Tables */
table.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.tbl th{text-align:left;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700;padding:0 12px 10px}
.tbl td{padding:11px 12px;border-top:1px solid var(--gray-200);vertical-align:middle}
.tbl tr.layer2 td{background:#f3f6ec;font-weight:700;color:var(--green-700)}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
.code-chip{font-family:var(--font-body);font-weight:700;font-size:12px;color:var(--green-700);background:var(--sage-200);padding:2px 8px;border-radius:6px}
.map-arrow{color:var(--olive-600);font-weight:800}
.l2-pill{font-size:12px;font-weight:600;color:var(--green-700);background:#eef3e3;border:1px solid var(--sage-200);padding:4px 10px;border-radius:8px;display:inline-flex;align-items:center;gap:6px}

.pos{color:var(--green-700);font-weight:700}
.neg{color:#a3431f;font-weight:700}
.var-pill{font-size:12px;font-weight:700;padding:3px 9px;border-radius:7px;font-variant-numeric:tabular-nums}
.var-up{background:#e4efd6;color:#3f6b1e}
.var-down{background:#f6e3da;color:#a3431f}
.var-flat{background:#eceee8;color:#5d6b5f}

/* status chips for forecast */
.st{font-size:11.5px;font-weight:700;padding:4px 10px;border-radius:999px;display:inline-flex;gap:6px;align-items:center}
.st-secured{background:var(--green-800);color:#dff0df}
.st-likely{background:var(--olive-400);color:#26340f}
.st-pipeline{background:var(--sage-200);color:var(--green-700)}
.dotmark{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.85}

/* dropzone */
.dropzone{border:2px dashed var(--sage-300);border-radius:var(--r-lg);background:#fbfcf8;padding:30px;display:flex;gap:18px;align-items:center}
.dz-ic{width:54px;height:54px;border-radius:14px;background:var(--sage-100);display:grid;place-items:center;flex:none}
.file-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--gray-200);border-radius:12px;background:#fff}
.file-ic{width:38px;height:38px;border-radius:9px;background:#e7f0d8;display:grid;place-items:center;flex:none;color:var(--green-700);font-weight:700;font-size:11px}

/* commentary */
.ai-box{border:1px solid var(--sage-300);border-radius:var(--r-lg);overflow:hidden;background:#fff}
.ai-head{display:flex;align-items:center;gap:10px;padding:13px 16px;background:linear-gradient(90deg,#f1f6e8,#fbfcf6);border-bottom:1px solid var(--sage-200)}
.ai-head .spark{width:26px;height:26px;border-radius:8px;background:var(--green-800);display:grid;place-items:center;flex:none}
.ai-ta{width:100%;border:none;outline:none;resize:vertical;min-height:130px;padding:16px;font-size:14.5px;line-height:1.62;color:var(--ink);background:#fff}
.ai-ta:focus{background:#fcfdf9}
.ai-foot{display:flex;align-items:center;gap:10px;padding:11px 16px;border-top:1px solid var(--sage-200);background:#fafbf6}
.chip-driver{font-size:11.5px;background:#eef3e3;border:1px solid var(--sage-200);color:var(--green-700);padding:4px 10px;border-radius:999px;font-weight:600}
.spinner{width:15px;height:15px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}
.spinner.dark{border:2px solid rgba(13,59,24,.2);border-top-color:var(--green-800)}
@keyframes spin{to{transform:rotate(360deg)}}

.kpi{border-radius:var(--r-md);padding:15px 16px 13px;background:var(--sage-card);position:relative;overflow:hidden}
.kpi .k-lbl{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--green-700)}
.kpi .k-val{font-family:var(--font-head);font-weight:800;font-size:30px;color:var(--green-ink);line-height:1.05;margin-top:4px}
.kpi .k-sub{font-size:12px;color:var(--muted);margin-top:3px}
.kpi .k-bar{position:absolute;left:0;right:0;bottom:0;height:5px;background:var(--olive-500)}

.callout{border:1.5px solid var(--green-800);border-radius:var(--r-lg);padding:16px 18px;background:#fff}
.callout .ct{font-family:var(--font-head);font-weight:800;color:var(--green-ink);display:flex;gap:8px;align-items:center;font-size:15.5px;margin-bottom:7px}
.callout p{margin:0;font-size:13.5px;color:var(--ink);line-height:1.55}

.changed{border-left:none;background:linear-gradient(180deg,#f2f7ea,#fbfcf6);border:1px solid var(--sage-300);border-radius:var(--r-lg);padding:18px 20px}

/* ===== Present mode / slides ===== */
.stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#e9ece2;overflow:hidden;position:relative}
.slide-wrap{position:relative}
.slide{width:1280px;height:715px;background:var(--cream);position:relative;overflow:hidden;box-shadow:var(--shadow-lg);border-radius:6px}
.slide-inner{position:absolute;inset:0;padding:42px 52px 48px;display:flex;flex-direction:column}
.s-pill{position:absolute;top:42px;right:52px;background:var(--olive-600);color:#fff;font-weight:700;font-size:14px;letter-spacing:.03em;padding:9px 18px;border-radius:999px;display:flex;align-items:center;gap:8px}
.s-pill.dark{background:var(--green-800)}
.s-title{font-size:37px;line-height:1.08;max-width:900px;text-wrap:balance}
.s-title[contenteditable]{outline:none;border-radius:8px}
.s-title[contenteditable]:hover{background:#eef3e3;box-shadow:0 0 0 6px #eef3e3}
.s-title[contenteditable]:focus{background:#fff;box-shadow:0 0 0 2px var(--olive-400)}
.s-sub{font-size:18px;color:var(--muted);margin-top:10px;font-weight:500}
.s-sub b{color:var(--ink);font-weight:700}
.slide-foot{position:absolute;bottom:16px;right:20px;font-size:10.5px;color:var(--gray-400);display:flex;align-items:center;gap:6px}
.s-kpi{background:var(--sage-card);border-radius:14px;padding:16px 18px 14px;position:relative;overflow:hidden}
.s-kpi .l{font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--green-700)}
.s-kpi .v{font-family:var(--font-head);font-weight:800;font-size:40px;color:var(--green-ink);line-height:1;margin-top:6px}
.s-kpi .x{font-size:14px;color:var(--muted);display:inline-block;margin-left:8px;font-weight:500}
.s-kpi .ubar{position:absolute;left:0;right:0;bottom:0;height:6px;background:var(--olive-500)}
.s-insight{border:2px solid var(--olive-500);border-radius:16px;padding:18px 20px;background:#fff}
.s-insight .h{font-family:var(--font-head);font-weight:800;color:var(--green-ink);font-size:18px;display:flex;gap:8px;align-items:center;margin-bottom:8px}
.s-insight p{margin:0;font-size:15px;line-height:1.5}
.s-narr{border:2.5px solid var(--green-800);border-radius:18px;padding:22px 24px;background:#fff;height:100%}
.s-narr .h{font-family:var(--font-head);font-weight:800;color:var(--green-ink);font-size:20px;display:flex;gap:9px;align-items:flex-start;margin-bottom:14px;line-height:1.15}
.s-narr p{font-size:14.5px;line-height:1.5;margin:0 0 13px}
.flow{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muted);font-weight:600}
.flow .node{padding:4px 0}
.flow .cash{background:var(--green-600);color:#fff;padding:5px 14px;border-radius:999px;font-weight:700}
.flow .arr{color:var(--gray-400)}

.present-bar{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:6px;background:rgba(13,59,24,.92);padding:8px 10px;border-radius:999px;box-shadow:var(--shadow-lg);z-index:20}
.present-bar button{border:none;background:transparent;color:#cfe0cf;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:16px}
.present-bar button:hover{background:rgba(255,255,255,.12);color:#fff}
.present-bar .pg{color:#fff;font-size:13px;font-weight:600;padding:0 10px;font-variant-numeric:tabular-nums}
.present-bar .dotnav{display:flex;gap:6px;padding:0 8px}
.present-bar .dotnav i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.3);cursor:pointer}
.present-bar .dotnav i.on{background:var(--olive-400);width:18px;border-radius:4px}

.scaler{transform-origin:center center}

/* misc */
.flex{display:flex}.between{justify-content:space-between}.center{align-items:center}.gap8{gap:8px}.gap12{gap:12px}.gap16{gap:16px}
.mt8{margin-top:8px}.mt16{margin-top:16px}.mt24{margin-top:24px}
.muted{color:var(--muted)}.small{font-size:12.5px}
.right{text-align:right}
.legend{display:flex;align-items:center;gap:16px;font-size:13px;font-weight:600;color:var(--ink)}
.legend i{width:13px;height:13px;border-radius:3px;display:inline-block;margin-right:7px;vertical-align:-1px}
.seg{display:flex;background:#e7eadf;border-radius:9px;padding:3px}
.seg button{border:none;background:none;padding:6px 14px;border-radius:7px;font-size:12.5px;font-weight:600;color:var(--muted)}
.seg button.on{background:#fff;color:var(--green-800);box-shadow:var(--shadow-sm)}
.editable{cursor:text;border-radius:6px;transition:background .12s}
.editable:hover{background:#f1f6e8;box-shadow:0 0 0 4px #f1f6e8}

/* ===== Auth: splash + login + sync ===== */
.splash{height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#fff;color:var(--muted)}
.splash-logo{width:64px;height:64px;border-radius:16px;background:linear-gradient(135deg,var(--olive-400),var(--green-600));display:grid;place-items:center;font-family:var(--font-head);font-weight:800}
.splash-t{font-family:var(--font-head);font-weight:800;font-size:18px;color:var(--green-ink);margin-top:4px}
.splash-s{font-size:13px;color:var(--muted)}
.login-stage{height:100vh;display:grid;place-items:center;background:radial-gradient(120% 120% at 50% 0%,#15532f 0%,var(--green-900) 60%);padding:20px}
.login-card{width:380px;max-width:100%;background:var(--paper);border-radius:20px;padding:30px 30px 22px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column}
.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.login-brand>div:last-child{flex:1 1 auto;min-width:0}
.login-title{font-family:var(--font-head);font-weight:800;font-size:18px;color:var(--green-ink);white-space:nowrap}
.login-sub{font-size:12px;color:var(--olive-600);font-weight:600;letter-spacing:.03em}
.login-h{font-family:var(--font-head);font-weight:700;font-size:20px;color:var(--ink);margin-bottom:16px}
.login-lbl{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}
.login-in{border:1px solid var(--gray-200);background:#fbfcf8;border-radius:10px;padding:11px 13px;font-size:14.5px;margin-bottom:14px;color:var(--ink)}
.login-in:focus{outline:none;border-color:var(--olive-500);background:#fff;box-shadow:0 0 0 3px rgba(143,157,73,.16)}
.login-err{background:#f6e3da;color:#a3431f;border-radius:9px;padding:9px 12px;font-size:13px;font-weight:600;margin-bottom:12px}
.login-btn{width:100%;justify-content:center;padding:12px;font-size:15px;margin-top:2px}
.login-foot{text-align:center;font-size:11.5px;color:var(--gray-400);margin-top:16px}
.signout{border:none;background:none;color:#9fc3a3;font-size:11.5px;font-weight:600;padding:0;text-align:left;text-decoration:underline;text-underline-offset:2px}
.signout:hover{color:#fff}
.sync-chip{display:flex;align-items:center;gap:7px;margin-left:auto;font-size:12px;font-weight:600;color:var(--muted)}
.sync-chip .sync-dot{width:8px;height:8px;border-radius:50%;background:var(--gray-400)}
.sync-chip.saving .sync-dot{background:var(--olive-500);animation:pulse 1s ease-in-out infinite}
.sync-chip.saved .sync-dot{background:var(--green-600)}
.sync-chip.error .sync-dot{background:#c2683f}
.mode-toggle{margin-left:18px}
@keyframes pulse{0%,100%{opacity:.35}50%{opacity:1}}

/* ===== Hub / launcher ===== */
.hub{min-height:100vh;background:var(--cream);display:flex;flex-direction:column}
.hub-top{height:66px;flex:none;display:flex;align-items:center;padding:0 34px;border-bottom:1px solid var(--gray-200);background:#f4f5ef}
.hub-brand{display:flex;align-items:center;gap:12px}
.hub-name{font-family:var(--font-head);font-weight:800;font-size:17px;color:var(--green-ink);line-height:1.1}
.hub-org{font-size:12px;color:var(--olive-600);font-weight:600;letter-spacing:.03em}
.hub-user{margin-left:auto;display:flex;align-items:center;gap:14px}
.hub-email{font-size:13px;color:var(--muted);font-weight:500}
.hub-main{flex:1;max-width:1040px;width:100%;margin:0 auto;padding:54px 34px 60px}
.hub-hero{margin-bottom:38px;max-width:640px}
.hub-hero h1{font-size:38px;line-height:1.05;color:var(--green-ink)}
.hub-hero p{font-size:16px;color:var(--muted);margin-top:14px;line-height:1.55}
/* ===== Function cards ===== */
.hub-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:20px}
.fn-card{display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--gray-200);border-radius:16px;padding:20px 22px;box-shadow:none;text-decoration:none;color:inherit;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}
a.fn-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm);border-color:var(--sage-300)}
.fn-card.disabled{opacity:.85;background:#fbfcf8}
.fn-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}
.fn-icon{width:42px;height:42px;border-radius:11px;background:var(--sage-200);color:var(--green-700);display:grid;place-items:center}
.fn-card.disabled .fn-icon{background:#eceee8;color:var(--muted)}
.fn-status{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:4px 10px;border-radius:999px;height:fit-content}
.fn-status.live{background:var(--olive-400);color:#26340f}
.fn-card.locked{opacity:.55;filter:grayscale(.3);cursor:not-allowed;pointer-events:none}
.fn-card.locked .fn-cta{color:var(--muted);display:flex;align-items:center;gap:5px}
.fn-status-wrap{margin-left:auto;display:flex;align-items:center;gap:5px}
.fn-star{color:#e0a300;font-size:15px;line-height:1}
.fn-status.soon{background:var(--sage-200);color:var(--green-700)}
.fn-status.preview{background:#f4e1b0;color:#7a5410}
.fn-title{font-family:var(--font-head);font-weight:700;font-size:17px;color:var(--green-ink);margin-bottom:8px}
.fn-desc{font-size:13.5px;color:var(--muted);line-height:1.5;margin:0 0 18px}
.fn-bottom{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:10px}
.fn-tag{font-size:11.5px;font-weight:600;color:var(--green-700);background:var(--sage-200);padding:5px 11px;border-radius:999px}
.fn-card.disabled .fn-tag{background:#eceee8;color:var(--muted)}
.fn-cta{display:flex;align-items:center;gap:5px;font-weight:700;font-size:13px;color:var(--green-800)}
.fn-card.disabled .fn-cta{color:var(--muted);font-weight:500;font-size:12px}
.hub-link-note{display:flex;align-items:flex-start;gap:11px;margin-top:26px;padding:15px 18px;background:#f1f6e8;border:1px solid var(--sage-200);border-radius:var(--r-lg);font-size:13.5px;color:var(--green-700);line-height:1.5}
.hub-link-note svg{flex:none;margin-top:2px}
@media(max-width:980px){.hub-cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.hub-cards{grid-template-columns:1fr}.hub-hero h1{font-size:30px}}


/* ===== Consolidated Reporting ===== */
.cs-app .bv-body{max-width:1480px}
.cs-layout{display:grid;grid-template-columns:216px minmax(0,1fr);gap:22px;align-items:start}
.cs-main{min-width:0;grid-column:2}
.cs-nav{position:sticky;top:16px;display:flex;flex-direction:column;gap:2px;background:var(--paper);border:1px solid var(--gray-200);border-radius:12px;padding:8px;box-shadow:var(--shadow-sm)}
.cs-nav.closed{display:none}
.cs-nav-resize{position:absolute;top:0;right:-11px;width:11px;height:100%;cursor:col-resize}
.cs-nav-resize:hover{background:linear-gradient(90deg,transparent,rgba(30,90,51,.14))}
body.cs-dragging{cursor:col-resize;user-select:none}
.cs-nav-toggle{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--gray-200);background:#fff;color:var(--green-700);border-radius:8px;cursor:pointer;flex:none}
.cs-nav-toggle:hover{background:#eef1e7}
.cs-nav-grp{font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--olive-600);padding:13px 10px 6px}
.cs-nav-grp:first-child{padding-top:4px}
.cs-nav-item{display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;border:1px solid transparent;background:none;font:inherit;font-size:13px;font-weight:600;color:var(--ink);padding:8px 11px;border-radius:9px;cursor:pointer;transition:background .12s,border-color .12s}
.cs-nav-item:hover{background:#eef1e7;border-color:var(--sage-200)}
.cs-nav-item.on{background:var(--green-800);border-color:var(--green-800);color:#fff}
.cs-nav-ccy{font-family:var(--font-num);font-size:10.5px;font-weight:600;opacity:.65}
.cs-view-title{font-family:var(--font-head);font-weight:700;font-size:16px;color:var(--green-ink)}
.cs-bar{align-items:center;gap:12px;flex-wrap:wrap}
.cs-controls{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cs-viewseg button{white-space:nowrap}
.cs-ccyseg button{min-width:52px}
.cs-card{overflow:auto;max-height:calc(100vh - 260px);padding:0}
.cs-card-narrow{max-width:620px}
.cs-tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
/* height (not padding) sets the row's vertical size, with box-sizing so the 1px border is
   included in it — that makes row 1's rendered height an exact, guaranteed 37px rather than
   an emergent one (padding + font metrics + line-height, which can round to a fractional
   pixel depending on the browser). Two-row headers rely on that: row 2 sticks at exactly
   top:37px below, and a height that could drift half a pixel either way is what made the
   dividing line flicker in and out while scrolling — two independently-rounded sticky offsets
   landing a pixel apart on some frames and not others. */
.cs-tbl thead th{position:sticky;top:0;z-index:4;background:#f7f8f2;text-align:center;font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);height:37px;box-sizing:border-box;padding:0 14px;border-bottom:1px solid var(--gray-200);white-space:nowrap}
.cs-tbl thead th.cs-acct{text-align:left;position:sticky;left:0;z-index:6;border-right:1px solid var(--gray-200)}
/* Two-row headers (BS - Working's entity breakdown): row 1's sticky top:0 is inherited from
   the rule above and holds for both the rowSpan-2 cells and the "Combined"/"Adjustment"
   group labels; row 2's own cells need to stick just below row 1 instead of at top:0 too,
   or they'd overlap it while scrolling. */
.cs-tbl thead tr:nth-child(2) th{top:37px}
.cs-tbl td{padding:8px 14px;border-bottom:1px solid var(--gray-200);vertical-align:middle}
.cs-tbl td.cs-acct{text-align:left;color:var(--ink);position:sticky;left:0;background:#fff;z-index:2;min-width:280px;border-right:1px solid var(--gray-200);box-shadow:2px 0 5px rgba(20,30,15,.06)}
.cs-tbl td.cs-indent{padding-left:26px}
.cs-tbl td.cs-num,.cs-tbl th.cs-num{text-align:right;font-family:var(--font-num);font-size:12.5px;white-space:nowrap}
.cs-tbl td.cs-ref,.cs-tbl th.cs-ref{text-align:center;font-size:10.5px;font-weight:700;color:var(--olive-600);white-space:nowrap}
.cs-tbl td.cs-adj{color:#a8641a}
.cs-sep{border-left:1.5px solid var(--gray-300)}
.cs-group{font-weight:700;color:var(--green-ink);background:#fafbf6}
/* Marks the whole "Adjustment" column block (Ref + per-entity adjustment + its Total) with a
   faint, consistent tint so it reads as one zone distinct from "Combined" (raw, left of it)
   and "Group" (final, right of it) at a glance — the border alone was too subtle to tell
   where one block ended and the next began. */
.cs-tbl th.cs-blk-adj,.cs-tbl td.cs-blk-adj{background:#fdf8ee}
.cs-tbl tr.cs-sect td{background:#f1f4ea;font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--green-700);padding:8px 14px}
.cs-tbl tr.cs-sect td.cs-acct{background:#f1f4ea}
.cs-tbl tr.cs-total td.cs-acct{background:#f7f8f2}
.cs-tbl tr.cs-total td{font-weight:700;background:#f7f8f2;border-top:1px solid var(--gray-200)}
.cs-tbl tr.cs-cattotal td{font-weight:600;background:#fbfcf8}
.cs-tbl tr.cs-cattotal td.cs-acct{background:#fbfcf8}
.cs-tbl tr.cs-key td{background:#eef2e6;border-top:1.5px solid var(--sage-300)}
.cs-tbl tr.cs-key td.cs-acct{background:#eef2e6;font-family:var(--font-head)}
.cs-tbl tr.cs-derived td{color:var(--muted);font-size:12px}
.cs-tbl tr.cs-fxres td{font-weight:700;background:#fdf6e8}
.cs-tbl tr.cs-fxres td.cs-acct{background:#fdf6e8}
.cs-tbl tr.cs-warnrow td{background:#fdf1ef;color:#b3432f}
.cs-tbl tr.cs-warnrow td.cs-acct{background:#fdf1ef}
.cs-tbl-hl td.cs-acct{min-width:240px}
.cs-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:56px 30px;text-align:center}
.cs-empty-t{font-family:var(--font-head);font-weight:700;font-size:18px;color:var(--green-ink)}
.cs-empty-s{font-size:13.5px;color:var(--muted);max-width:520px;line-height:1.55;margin-bottom:6px}
.cs-subtotal-row td:first-child{color:var(--muted)}
.cs-sub-tag{display:inline-block;margin-left:8px;font-size:9.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 7px;border-radius:999px;background:var(--gray-200);color:var(--muted)}
.cs-hl-warn{margin:12px}
.cs-warn.cs-warn-bad{background:#fdf1ef;border-color:#e3b3aa;color:#8f3323}
.cs-fixrev{margin-top:9px;border:1px solid #d99a8c;color:#8f3323}
.cs-imp-preview{margin-top:12px}
.cs-imp-preview-t{font-size:12px;color:var(--muted);margin-bottom:6px}
.cs-imp-months{display:flex;flex-wrap:wrap;gap:6px}
.cs-imp-m{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;padding:4px 9px;border-radius:999px;background:var(--gray-200);color:var(--muted)}
.cs-imp-m.on{background:#e4efe0;color:var(--green-700)}
.cs-imp-m b{font-family:var(--font-num)}
.cs-period-pick{border:1px solid var(--gray-200);border-radius:8px;padding:7px 10px;font:inherit;font-size:12.5px;font-weight:600;color:var(--ink);background:#fff;cursor:pointer}
.cs-adjtbl td{font-size:12.5px}
.cs-adjtbl .ar-select{border:1px solid var(--gray-200);border-radius:7px;padding:6px 8px}
.cs-posnote{font-size:12.5px;color:var(--muted);margin:-4px 0 12px;padding-left:2px}
.cs-warn{background:#fdf6e8;border:1px solid #ecd9a8;border-radius:10px;padding:11px 14px;font-size:12.5px;color:#7a5410;line-height:1.5}
.cs-warn-top{margin-bottom:14px}
.cs-warn-line{font-weight:600;margin-top:4px}
.cs-note{font-size:12px;color:var(--muted);line-height:1.5;margin-top:10px;padding:9px 12px;background:#f7f8f2;border-radius:8px}
.cs-check td{font-weight:700;background:#f1f4ea;border-top:2px solid var(--gray-200)}
.cs-check td.cs-acct{background:#f1f4ea}
.cs-check-off td{background:#fdf1ef;color:#b3432f}
.cs-check-off td.cs-acct,.cs-check-off td.cs-group,.cs-check-off td.cs-num{color:#b3432f}
.cs-check-off td.cs-acct{background:#fdf1ef}
.cs-fxres-split{display:block;font-size:10.5px;font-weight:500;color:var(--muted);font-family:var(--font-num);margin-top:2px}
.cs-anchor-tbl th{font-size:10.5px;white-space:nowrap;text-align:center}
.cs-anchor-tbl td{padding:4px 6px;text-align:center;font-size:12px}
.cs-anchor-tbl td input{width:118px;font-family:var(--font-num);font-size:12px;text-align:right}
.cs-anchor-tbl td input:disabled{background:#f4f5f0;color:var(--muted)}
.cs-fx-tbl th{font-size:10.5px;white-space:nowrap;text-align:center}
.cs-fx-tbl td{padding:4px 6px}
.cs-fx-tbl td input{width:82px;font-family:var(--font-num);font-size:12px;text-align:right}
.cs-fx-tbl thead tr:first-child th:nth-child(3),.cs-fx-tbl thead tr:nth-child(2) th:nth-child(4),.cs-fx-tbl td.cs-fx-split{border-left:1px solid var(--gray-200)}
.cs-modal{max-width:900px;width:100%}
.cs-coa td{font-size:12.5px}
.cs-coa td:first-child{max-width:280px}
/* Sticky within .mc-modal-body (the modal's own scroll container) — no extra wrapper
   needed, the header just needs its own opaque background so rows don't show through
   as they scroll underneath it. position:sticky on a <th> silently does nothing under
   border-collapse:collapse (a longstanding browser quirk) — .mc-tpl-tbl sets that, so
   it has to be overridden back to separate here, scoped to this one table only.
   top:-14px, not 0: sticky's offset is measured from the scroll container's PADDING
   edge, but .mc-modal-body's own top padding (14px) still scrolls past like any other
   content — at top:0 the header only starts 14px into the scrollport, leaving a bare
   14px strip above it with nothing sticky covering it, so whatever row happens to be
   scrolled to that exact position shows through as a stray sliver. Cancelling the
   padding with a negative offset pins the header flush with the scrollport's true top
   edge instead, with nothing left uncovered. */
.cs-coa{border-collapse:separate;border-spacing:0}
.cs-coa thead th{position:sticky;top:-14px;background:#fff;z-index:2}
.cs-coa-find{width:180px;flex:none;margin-left:auto;font:inherit;font-size:12px;border:1px solid var(--gray-200);border-radius:7px;padding:5px 9px;background:#fbfcf8}
.cs-coa-find:focus{outline:none;border-color:var(--olive-500);background:#fff;box-shadow:0 0 0 3px rgba(143,157,73,.14)}
.cs-imp-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
select.cs-imp-ent{border:1px solid var(--gray-200);border-radius:8px;padding:7px 10px;width:auto}
.cs-imp-text{width:100%;min-height:180px;border:1px solid var(--gray-200);border-radius:10px;padding:11px 13px;font-family:var(--font-num);font-size:12.5px;line-height:1.5;resize:vertical;outline:none}
.cs-ok{font-size:12.5px;color:var(--green-700);font-weight:600}
.cs-err{font-size:12.5px;color:#b3432f;font-weight:600}
@media(max-width:860px){
  .cs-layout{grid-template-columns:1fr !important}
  .cs-nav{position:static;flex-direction:row;overflow-x:auto;gap:6px;padding:8px;width:auto !important;box-shadow:none}
  .cs-main{grid-column:auto}
  .cs-nav.closed{display:flex}
  .cs-nav-resize{display:none}
  .cs-nav-toggle{display:none}
  .cs-nav-grp{display:none}
  .cs-nav-item{white-space:nowrap;border:1px solid var(--gray-200)}
  .cs-controls{margin-left:0;width:100%}
  .cs-card{max-height:none}
  .cs-tbl td.cs-acct{min-width:180px}
}

/* ===== Budget & Variance ===== */
.bv{min-height:100vh;background:var(--cream);display:flex;flex-direction:column;--bv-num:var(--font-num)}
.bv .topbar{position:sticky;top:0;z-index:10;gap:14px;flex-wrap:nowrap}
.bv .topbar>div:nth-child(2){min-width:0;flex:1}
.bv .tb-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bv-back{display:flex;align-items:center;gap:7px;text-decoration:none;color:var(--green-700);font-weight:600;font-size:13px;padding:7px 12px;border-radius:9px;border:1px solid var(--sage-300);background:#fff;white-space:nowrap;flex:none}
.bv .topbar .btn{white-space:nowrap}
.bv-back:hover{background:#eef2e6}
.bv-user{margin-left:0;display:flex;align-items:center;gap:12px;flex:none}
.bv-user .hub-email{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:820px){
  .bv-user .hub-email{display:none}
  .bv-back span{display:none}
  .bv .topbar{gap:10px;padding:0 16px}
}
.bv .sync-chip{margin-left:auto}
.bv-body{max-width:1280px;width:100%;margin:0 auto;padding:24px 30px 60px}
.bv-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}
.bv-toolbar{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--gray-200);flex-wrap:wrap}
.mchip.ghost{background:#fff;color:var(--green-700);border:1px solid var(--sage-300);opacity:1}
.mchip.ghost:hover{background:#eef2e6}

.pnl-scroll{overflow:auto;max-height:calc(100vh - 300px);min-height:300px;overscroll-behavior:contain}
.pnl-tbl thead th,.var-tbl thead th,.coa-tbl thead th{box-shadow:0 1px 0 var(--gray-200)}
.pnl-tbl{min-width:100%;font-size:13px}
.pnl-tbl th,.pnl-tbl td{white-space:nowrap}
.pnl-tbl thead th{position:sticky;top:0;background:#fff;z-index:2;padding:12px 12px 10px;border-bottom:1px solid var(--gray-200)}
.pnl-tbl th.pnl-name,.pnl-tbl td.pnl-name{position:sticky;left:0;background:#fff;z-index:1;text-align:left;min-width:280px;max-width:280px;white-space:normal}
.pnl-tbl thead th.pnl-name{z-index:3}
.pnl-acc td,.pnl-cat-row td{padding:7px 12px;border-top:1px solid #f0f2ec}
.pnl-acc .pnl-name{font-weight:500;color:var(--ink);display:flex;flex-direction:column;gap:1px}
.pnl-cat{font-size:10.5px;color:var(--gray-400);font-weight:500}
.pnl-cat-row .pnl-name{font-weight:600;color:var(--green-700)}
.pnl-cat-row td{background:#fcfdf9}
.pnl-section td{background:var(--green-800);color:#fff;font-family:var(--font-head);font-weight:700;font-size:12px;letter-spacing:.06em;text-transform:uppercase;padding:9px 12px;position:sticky;left:0}
.pnl-sub td{background:var(--sage-200);color:var(--green-700);font-weight:700;font-size:11.5px;letter-spacing:.04em;padding:7px 12px}
.pnl-profit td{padding:9px 12px;border-top:1.5px solid var(--gray-200);font-weight:700;background:#f3f6ec}
.pnl-profit .pnl-name{font-weight:700;color:var(--ink);background:#f3f6ec}
.pnl-profit.accent td{background:var(--green-800);color:#fff;border-top:2px solid var(--green-900)}
.pnl-profit.accent .pnl-name{background:var(--green-800);color:#fff;font-family:var(--font-head)}
.pnl-total,.pnl-rowtotal{font-variant-numeric:tabular-nums;font-weight:700}
.pnl-acc .pnl-rowtotal,.pnl-cat-row .pnl-rowtotal{color:var(--green-700)}
.pcell{border:1px solid transparent;background:#f6f8f1;border-radius:6px;padding:5px 8px;font-size:12.5px;width:92px;text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-num);color:var(--ink)}
.pcell:hover{border-color:var(--sage-300)}
.pcell:focus{outline:none;border-color:var(--olive-500);background:#fff;box-shadow:0 0 0 3px rgba(143,157,73,.16)}
.addacc{margin-top:4px;border:1px solid var(--sage-300)!important}
.addacc-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1.4fr;gap:12px;align-items:end}
.addacc-grid .login-lbl{display:flex;flex-direction:column;gap:5px;margin:0;text-transform:none;letter-spacing:0;font-size:12px}
.addacc-grid .login-in{margin:0}
.bv-note{display:flex;align-items:flex-start;gap:11px;margin-top:20px;padding:14px 18px;background:#f1f6e8;border:1px solid var(--sage-200);border-radius:var(--r-lg);font-size:13.5px;color:var(--green-700);line-height:1.5}
.bv-note svg{flex:none;margin-top:2px}
@media(max-width:760px){.bv-kpis{grid-template-columns:1fr 1fr}.addacc-grid{grid-template-columns:1fr 1fr}}

/* lifecycle tabs (layer-1) */
.life-strip{display:flex;align-items:stretch;gap:10px;padding:14px 30px 0;max-width:1280px;width:100%;margin:0 auto;flex-wrap:wrap}
.life-tab{display:flex;align-items:center;gap:11px;background:#fff;border:1px solid var(--gray-200);border-radius:14px 14px 0 0;padding:12px 18px;color:var(--muted);text-align:left;border-bottom:3px solid transparent;transition:all .12s}
.life-tab:hover{background:#f3f6ec}
.life-tab.on{border-color:var(--green-800);border-bottom-color:var(--olive-500);color:var(--ink);box-shadow:var(--shadow-sm)}
.life-tab .life-n{width:24px;height:24px;border-radius:50%;background:var(--sage-200);color:var(--green-700);display:grid;place-items:center;font-weight:700;font-size:12px;flex:none}
.life-tab.on .life-n{background:var(--green-800);color:#fff}
.life-tab b{font-family:var(--font-head);font-weight:700;font-size:14px;display:block;line-height:1.1}
.life-tab i{font-style:normal;font-size:11.5px;color:var(--muted)}
.life-add{display:flex;align-items:center;gap:7px;background:rgba(143,157,73,.12);border:1px dashed var(--olive-400);border-radius:14px 14px 0 0;padding:12px 16px;color:var(--olive-600);font-weight:600;font-size:13px}
.life-add:hover{background:rgba(143,157,73,.2)}

/* review step rail */
.rev-steps{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.rev-step{flex:1;min-width:200px;background:#fff;border:1px solid var(--gray-200);border-radius:12px;padding:12px 16px;text-align:left;border-left:3px solid var(--gray-200)}
.rev-step:hover{background:#f3f6ec}
.rev-step.on{border-color:var(--olive-500);border-left-color:var(--olive-500);box-shadow:var(--shadow-sm)}
.rev-step b{font-family:var(--font-head);font-weight:700;font-size:13.5px;color:var(--green-ink);display:block}
.rev-step i{font-style:normal;font-size:12px;color:var(--muted)}
.rev-del{flex:none;align-self:stretch;display:flex;align-items:center;gap:7px;background:#fff;border:1px solid #e7d2c8;color:#a3431f;border-radius:12px;padding:0 16px;font-weight:600;font-size:13px;white-space:nowrap}
.rev-del:hover{background:#f6e3da}

/* readonly P&L cells + actual months */
.pcell-ro{display:inline-block;padding:5px 8px;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.pcell-ro.act{color:var(--green-700);font-weight:600}
.pnl-margin td{padding:7px 12px;border-top:1px dashed var(--sage-300);background:#fbfcf6;font-style:italic;color:var(--olive-600);font-weight:600;font-variant-numeric:tabular-nums}
.pnl-margin .pnl-name{font-style:italic;color:var(--olive-600);background:#fbfcf6}
.pnl-tbl th.th-act{color:var(--green-700)}
.th-tag{display:block;font-size:8.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--olive-600);font-weight:700}
.mchip.act{border-color:var(--olive-400)}
.mchip.act.on{background:var(--green-700);border-color:var(--green-700)}

/* variance table */
.var-tbl{min-width:100%;font-size:13.5px}
.var-tbl th{position:sticky;top:0;background:#fff;z-index:2;padding:12px;border-bottom:1px solid var(--gray-200);text-align:right}
.var-tbl th.pnl-name{text-align:left}
.var-row td{padding:10px 12px;border-top:1px solid #f0f2ec;font-variant-numeric:tabular-nums}
.var-row .pnl-name{font-weight:500;text-align:left}
.var-row.section .pnl-name{font-weight:700;color:var(--green-700)}
.var-row.accent td{background:var(--green-800);color:#fff;font-weight:700;border-top:2px solid var(--green-900)}
.var-row.accent .pnl-name{color:#fff;font-family:var(--font-head)}
.var-row.accent .var-pill{background:rgba(255,255,255,.18);color:#fff}

/* step banner + csv */
.step-banner{display:flex;align-items:flex-start;gap:10px;margin:0 18px 12px;padding:11px 14px;background:#f1f6e8;border:1px solid var(--sage-200);border-radius:10px;font-size:13px;color:var(--green-700);line-height:1.45}
.step-banner svg{flex:none;margin-top:1px}
.csv-ta{width:100%;min-height:120px;border:1px solid var(--sage-300);border-radius:10px;padding:11px 13px;font-size:13px;font-family:ui-monospace,Menlo,monospace;resize:vertical;color:var(--ink);background:#fbfcf8}
.csv-ta:focus{outline:none;border-color:var(--olive-500);background:#fff}
.csv-actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.csv-file{cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.csv-actions .btn svg{flex:none}
/* CoA tab + manager */
.life-coa{margin-left:auto;border-radius:14px 14px 0 0}
.life-coa + .life-coa{margin-left:0}
.life-coa .life-n{background:var(--sage-200);color:var(--green-700);border-radius:7px}
.life-coa.on .life-n{background:var(--green-800);color:#fff}
.coa-card .bv-toolbar{align-items:flex-start}
.coa-tbl{min-width:100%;font-size:13.5px}
.coa-tbl th{position:sticky;top:0;background:#fff;z-index:2;text-align:left;padding:11px 12px;border-bottom:1px solid var(--gray-200);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.coa-row td{padding:9px 12px;border-top:1px solid #f0f2ec}
.coa-row .pnl-name{font-weight:500}
.coa-tag{margin-left:8px;font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;font-weight:700;background:var(--olive-400);color:#26340f;padding:2px 7px;border-radius:999px}
.coa-lock{opacity:.35;font-size:12px}

/* ===== Charts ===== */
.charts-wrap{display:flex;flex-direction:column}
.charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.chart-card{background:var(--paper);border:1px solid var(--gray-200);border-radius:var(--bv-r,18px);box-shadow:var(--shadow-sm);padding:18px 20px 14px}
.chart-h{margin-bottom:12px}
.chart-t{font-family:var(--font-head);font-weight:800;font-size:16px;color:var(--green-ink);letter-spacing:-.01em}
.chart-s{font-size:12px;color:var(--muted);margin-top:2px}
.chart-legend{display:flex;flex-wrap:wrap;gap:16px;margin-top:10px;font-size:12px;font-weight:600;color:var(--ink)}
.chart-legend span{display:inline-flex;align-items:center;gap:7px}
.chart-legend i{width:16px;height:0;border-top-width:3px;border-radius:2px;display:inline-block}
@media(max-width:900px){.charts-grid{grid-template-columns:1fr}}

/* ===== Hana Tasks ===== */
.tk-bar{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.tk-bar .seg em{font-style:normal;font-family:var(--font-num);font-size:11px;opacity:.6;margin-left:3px}
.tk-card{padding:0}
.tk-tbl{width:100%;border-collapse:collapse}
.tk-tbl thead th{text-align:left;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-weight:700;padding:14px 16px;border-bottom:1px solid var(--gray-200);background:#f4f6ee;position:sticky;top:62px;z-index:5}
.tk-tbl thead th:first-child{border-top-left-radius:18px}
.tk-tbl thead th:last-child{border-top-right-radius:18px}
.tk-tbl thead th::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--gray-200)}
.tk-tbl td{padding:9px 16px;border-bottom:1px solid #f0f2ec;vertical-align:top}
.tk-tbl tr:last-child td{border-bottom:none}
.tk-c-status{width:172px}
.tk-c-due{width:158px}
.tk-c-note{width:32%}
.tk-c-x{width:44px;text-align:center}
.tk-done .tk-text{color:var(--gray-400);text-decoration:line-through}

/* status dropdown */
.tk-select{position:relative;display:flex;align-items:center;gap:6px;border-radius:9px;padding:7px 8px;font-weight:600;font-size:13px;border:1px solid transparent}
.tk-select .tk-dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}
.tk-select select{appearance:none;border:none;background:none;font:inherit;color:inherit;font-weight:600;cursor:pointer;padding-right:16px;outline:none;width:100%;flex:1 1 auto;min-width:0;white-space:nowrap}
.tk-caret{position:absolute;right:9px;pointer-events:none;display:flex;opacity:.6}
.tk-select.st-ns{background:#eceee8;color:#5d6b5f}
.tk-select.st-ip{background:#fbf0d8;color:#9a6b1f}
.tk-select.st-dn{background:#e4efd6;color:#3f6b1e}

/* text cells */
.tk-text{width:100%;border:1px solid transparent;background:transparent;border-radius:7px;padding:7px 9px;font:inherit;font-size:14px;color:var(--ink);resize:none;overflow:hidden;line-height:1.45;min-height:34px}
.tk-text:hover{background:#f6f8f1}
.tk-text:focus{outline:none;background:#fff;border-color:var(--olive-500);box-shadow:0 0 0 3px rgba(143,157,73,.14)}
.tk-text::placeholder{color:var(--gray-400)}

/* date */
.tk-date{border:1px solid var(--gray-200);background:#fbfcf8;border-radius:8px;padding:7px 9px;font:inherit;font-size:13px;color:var(--ink);font-family:var(--font-num)}
.tk-date:focus{outline:none;border-color:var(--olive-500);background:#fff;box-shadow:0 0 0 3px rgba(143,157,73,.14)}
.tk-due{display:inline-block;margin-top:5px;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;font-family:var(--font-num)}
.due-ok{background:#eceee8;color:#5d6b5f}
.due-soon{background:#fbf0d8;color:#9a6b1f}
.due-over{background:#f6e3da;color:#a3431f}
.due-missing{background:#fbf0d8;color:#9a6b1f}

.tk-del{border:none;background:none;color:var(--gray-400);width:30px;height:30px;border-radius:7px;display:grid;place-items:center;cursor:pointer}
.tk-del:hover{background:#f6e3da;color:#a3431f}
.tk-actions{display:flex;align-items:center;justify-content:center;gap:1px}
.tk-addrow{width:100%;border:none;border-top:1px solid var(--gray-200);background:#fbfcf8;padding:13px;font:inherit;font-weight:600;font-size:13.5px;color:var(--green-700);display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;border-radius:0 0 18px 18px}
.tk-earlier{width:100%;border:none;border-top:1px dashed var(--gray-200);background:#fff;padding:10px;font:inherit;font-weight:600;font-size:12.5px;color:var(--muted);cursor:pointer}
.tk-earlier:hover{background:#f6f8f1;color:var(--green-700)}
.tk-addrow:hover{background:#eef2e6}
.tk-empty{text-align:center;padding:46px 16px!important;color:var(--muted)}
.tk-empty svg{display:block;margin:0 auto 12px}
.tk-empty div{font-size:15px;font-weight:600;margin-bottom:14px;color:var(--ink)}
@media(max-width:760px){.tk-c-note{width:auto}.tk-c-due{width:130px}}

/* ===== Month-end close ===== */
.tk-maintabs{margin-bottom:18px;display:inline-flex}
.tk-maintabs button{padding:8px 18px}
.mc-monthbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.mc-monthbar-sticky{position:sticky;top:62px;z-index:9;background:var(--cream);padding:10px 0;margin:0}
.mc-entityseg-sticky{width:100%;margin-top:8px}
.mc-tbl thead th{position:sticky;top:var(--mc-sticky-offset, 130px);z-index:8;border-bottom:1px solid var(--gray-200)}
.mc-navbtn{border:1px solid var(--gray-200);background:#fff;width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:var(--ink);cursor:pointer}
.mc-navbtn:hover{background:#f6f8f1;border-color:var(--olive-500)}
.mc-monthlabel{font-size:17px;font-weight:700;color:var(--ink);min-width:150px;text-align:center}
.mc-progress{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--muted);font-family:var(--font-num)}
.mc-progress-bar{width:110px;height:7px;border-radius:99px;background:#e7eadf;overflow:hidden}
.mc-progress-fill{height:100%;background:var(--olive-500);border-radius:99px}
.mc-empty-gen{text-align:center;padding:60px 20px;background:#fff;border:1px dashed var(--gray-200);border-radius:18px}
.mc-empty-t{font-size:16px;font-weight:700;color:var(--ink);margin-bottom:6px}
.mc-empty-s{font-size:13px;color:var(--muted);margin-bottom:18px}
.mc-entityseg{margin-bottom:0;overflow-x:auto;max-width:100%}
.mc-tbl{table-layout:fixed}
.mc-chip{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.03em;padding:4px 8px;border-radius:6px;background:#eceee8;color:#5d6b5f}
.mc-name-row{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.mc-name-row .tk-text{width:100%}
.mc-checklist-tog{border:none;background:#f2f4ec;color:var(--muted);font-size:11px;font-weight:700;font-family:var(--font-num);border-radius:7px;padding:5px 7px;display:flex;align-items:center;gap:3px;cursor:pointer;align-self:flex-start}
.mc-checklist-tog:hover{background:#e7eadf;color:var(--green-700)}
.mc-checklist{list-style:none;margin:6px 0 2px;padding:0;display:flex;flex-direction:column;gap:4px}
.mc-checklist li{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink);cursor:pointer;padding:3px 6px;border-radius:6px}
.mc-checklist li:hover{background:#f6f8f1}
.mc-checklist li.done{color:var(--gray-400);text-decoration:line-through}
.mc-cb{width:15px;height:15px;border-radius:4px;border:1.5px solid var(--gray-200);display:grid;place-items:center;flex:none;color:#fff;background:#fff;cursor:pointer}
.mc-checklist li.done .mc-cb{background:var(--olive-500);border-color:var(--olive-500)}
.mc-checklist li{position:relative}
.mc-cl-text{flex:1;border:1px solid transparent;background:transparent;font:inherit;color:inherit;padding:3px 5px;border-radius:6px;min-width:0}
.mc-cl-text:hover{background:#f6f8f1}
.mc-cl-text:focus{outline:none;background:#fff;border-color:var(--olive-500);box-shadow:0 0 0 2px rgba(143,157,73,.14)}
.mc-checklist li.done .mc-cl-text{color:var(--gray-400);text-decoration:line-through}
/* Hover-only controls stay laid out (display:flex) at all times and only toggle opacity —
   toggling display:none/flex instead made each one's width pop in and out from under the
   cursor, shrinking the flex:1 text input next to it and reflowing the row it's sitting in.
   Right under the mouse, that reflow could shift the row out from under the cursor, drop the
   hover, restore the old layout, and put the cursor back over the row — a jitter loop. Fixed
   width + opacity keeps every row the same size whether or not it's hovered. */
.mc-cl-del{border:none;background:none;color:var(--gray-400);cursor:pointer;padding:2px;display:flex;flex:none;opacity:0;pointer-events:none}
.mc-checklist li:hover .mc-cl-del{opacity:1;pointer-events:auto}
.mc-cl-del:hover{color:#b3432f}
.mc-cl-move{display:flex;flex:none;gap:1px;opacity:0;pointer-events:none}
.mc-checklist li:hover .mc-cl-move{opacity:1;pointer-events:auto}
.mc-cl-movebtn{border:none;background:none;color:var(--gray-400);cursor:pointer;padding:2px;display:flex;align-items:center;border-radius:5px}
.mc-cl-movebtn:hover{background:#eef0e7;color:var(--green-700)}
.mc-cl-movebtn:disabled{opacity:.25;cursor:default}
.mc-cl-movebtn:disabled:hover{background:none;color:var(--gray-400)}
.mc-cl-handle{display:flex;flex:none;align-items:center;color:var(--gray-400);cursor:grab;padding:2px;margin-right:2px;opacity:0;pointer-events:none}
.mc-checklist li:hover .mc-cl-handle{opacity:1;pointer-events:auto}
.mc-cl-handle:hover{color:var(--green-700)}
.mc-checklist li.dragging,.mc-subchecklist li.dragging{opacity:.4}
.mc-cl-add{display:flex;align-items:center;gap:8px;padding:3px 6px}
.mc-cb-ghost{border-style:dashed;color:var(--gray-400)}
.mc-cl-add input{flex:1;border:none;background:none;font:inherit;font-size:12.5px;color:var(--ink);outline:none}
.mc-cl-save{border:none;background:var(--olive-500);color:#fff;font-size:11px;font-weight:700;padding:4px 10px;border-radius:6px;cursor:pointer;flex:none}
.mc-cl-save:hover{background:var(--green-700)}
.mc-cl-date{width:118px;flex:none;font:inherit;font-size:11px;border:1px solid var(--gray-200);border-radius:6px;padding:3px 6px;background:#fff;color:var(--muted)}
.mc-cl-date-urgent{border-color:#c0503b;color:#b3432f;background:#fdecea;font-weight:600}
.mc-tpl-cl-day{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--muted);flex:none}
.mc-tpl-cl-day input{width:44px;font:inherit;font-size:11px;border:1px solid var(--gray-200);border-radius:6px;padding:3px 5px;background:#fbfcf8}
.mc-cl-row{display:flex;align-items:center;gap:8px}
.mc-subsub-tog{border:none;background:#eef0e7;color:var(--muted);font-size:10.5px;font-weight:700;font-family:var(--font-num);border-radius:6px;padding:3px 6px;display:flex;align-items:center;gap:2px;cursor:pointer;flex:none}
.mc-subsub-tog:hover{background:#e2e6d8;color:var(--green-700)}
.mc-subchecklist{list-style:none;margin:5px 0 2px 30px;padding:6px 0 2px 12px;border-left:2px solid var(--sage-200);display:flex;flex-direction:column;gap:4px}
.mc-subchecklist li{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink);cursor:pointer;padding:2px 6px;border-radius:6px}
.mc-subchecklist li:hover{background:#f6f8f1}
.mc-subchecklist li.done{color:var(--gray-400);text-decoration:line-through}
.mc-cb-sm{width:13px;height:13px}
.mc-delmonth{color:#b3432f}
.mc-delmonth:hover{background:#fbe9e6;border-color:#e0a99a}
.tk-archived{background:#faf9f6}
.tk-archived td{opacity:.6}
.mc-archived-card{margin-top:14px}
.mc-archived-card .tk-del:hover{background:#e4efd6;color:#3f6b1e}
.mc-archived-head{padding:12px 16px;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--gray-200)}

/* templates modal */
.mc-modal-backdrop{position:fixed;inset:0;background:rgba(20,30,15,.45);display:grid;place-items:center;z-index:50;padding:24px}
.mc-modal{background:#fff;border-radius:18px;max-width:920px;width:100%;max-height:86vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg,0 20px 60px rgba(0,0,0,.25))}
.mc-modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--gray-200)}
.mc-modal-title{font-size:16px;font-weight:700;color:var(--ink)}
.mc-modal-sub{padding:10px 22px 0;font-size:12.5px;color:var(--muted)}
.mc-tabs{display:flex;gap:6px;padding:14px 22px 0}
.mc-tabs button{border:1px solid var(--gray-200);background:#fff;color:var(--muted);font-weight:600;font-size:12.5px;padding:7px 14px;border-radius:8px;cursor:pointer}
.mc-tabs button.on{background:var(--green-800);border-color:var(--green-800);color:#fff}
.mc-modal-body{padding:14px 22px 22px;overflow:auto}
.mc-tpl-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.mc-tpl-tbl th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:8px 8px;border-bottom:1px solid var(--gray-200)}
.mc-tpl-tbl td{padding:6px 8px;border-bottom:1px solid #f0f2ec;vertical-align:top}
.mc-tpl-tbl select,.mc-tpl-tbl input[type=number]{font:inherit;border:1px solid var(--gray-200);border-radius:6px;padding:4px 6px;background:#fbfcf8}
.mc-tpl-name{width:100%;font:inherit;border:1px solid var(--gray-200);border-radius:6px;padding:5px 7px;background:#fbfcf8}
.mc-tpl-off{opacity:.45}
.mc-duerule{display:flex;align-items:center;gap:5px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.mc-duerule input[type=number]{width:48px}
.mc-qmonths{display:grid;grid-template-columns:repeat(6,auto);gap:3px 8px;width:100%;margin-top:5px;justify-content:start}
.mc-qmonths label{display:flex;align-items:center;gap:3px;font-size:11px;white-space:nowrap}
.mc-tasksearch,.mc-tplsearch{display:flex;align-items:center;gap:6px}
.mc-tasksearch input,.mc-tplsearch input{border:1px solid var(--gray-200);border-radius:8px;padding:7px 10px;font:inherit;font-size:12.5px;color:var(--ink);outline:none;width:190px;background:#fff}
.mc-tasksearch input:focus,.mc-tplsearch input:focus{border-color:var(--sage-300)}
.mc-tasksearch button,.mc-tplsearch button{border:none;background:none;color:var(--muted);font:inherit;font-size:13px;font-weight:600;cursor:pointer;padding:4px 6px}
.mc-tplsearch{padding:0 22px 4px}
.mc-tplsearch input{width:260px}
.mc-tplsearch span{font-size:11.5px;color:var(--muted);font-family:var(--font-num)}

.mc-tpl-sub-tog{border:none;background:#f2f4ec;color:var(--muted);font-size:11px;font-weight:700;font-family:var(--font-num);border-radius:7px;padding:5px 8px;display:flex;align-items:center;gap:3px;cursor:pointer}
.mc-tpl-sub-tog:hover{background:#e7eadf;color:var(--green-700)}
.mc-tpl-subrow td{background:#fbfcf8;padding:8px 8px 12px 30px}
.mc-groupby{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);font-weight:600}
.mc-groupby select{font:inherit;border:1px solid var(--gray-200);border-radius:8px;padding:5px 8px;background:#fff;color:var(--ink)}
.mc-status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}
.mc-status-dot.st-dot-ns{background:#9aa596}
.mc-status-dot.st-dot-ip{background:#d99a2b}
.mc-status-dot.st-dot-dn{background:var(--green-700)}

/* ===== Layout-inspiration experiment — scoped to Task Tracking only =====
   Geometric-sans typography + pill-shaped segmented controls + slightly tighter
   card radius, inspired by a reference dashboard screenshot. Easy to revert:
   just delete this block and the "tk-app" class on the Hana Tasks root. */
.tk-app{--font-head:"Inter",system-ui,sans-serif;--font-body:"Inter",system-ui,sans-serif;font-family:var(--font-body)}
.tk-app h1,.tk-app h2,.tk-app h3,.tk-app h4{font-family:var(--font-head)}
.tk-app .tb-title{font-family:var(--font-head);font-weight:700;letter-spacing:-.01em}
.tk-app .card{border-radius:14px}
.tk-app .seg{border-radius:999px;background:#eef0e7}
.tk-app .seg button{border-radius:999px;font-weight:500}
.tk-app .tk-tbl thead th,.tk-app .mc-tbl thead th{letter-spacing:.08em;font-weight:600}
.tk-app .btn{border-radius:999px}
.tk-app .mc-navbtn{border-radius:999px}
.tk-app .mc-chip{border-radius:999px;font-weight:600}
.tk-app .mc-empty-gen{border-radius:14px}
.tk-app .mc-modal{border-radius:16px}
.tk-app .tk-due{font-weight:600}

/* Richer olive/green vibe — borrowed from Board Pack + Budget & Variance accents */
.tk-app .topbar{border-bottom:2px solid var(--olive-400)}
.tk-app .tb-title{color:var(--green-ink)}
.tk-app .tk-maintabs{background:var(--green-900);padding:4px}
.tk-app .tk-maintabs button{color:#bcd0bc;font-weight:600}
.tk-app .tk-maintabs button.on{background:var(--olive-500);color:#1c2a10;box-shadow:none}
.tk-app .mc-monthbar-sticky{background:linear-gradient(180deg,#eef2e3,#f3f4ee)}
.tk-app .mc-monthlabel{color:var(--green-ink);font-family:var(--font-head);font-weight:800}
.tk-app .mc-progress-fill{background:linear-gradient(90deg,var(--olive-500),var(--green-700))}
.tk-app .tk-select.st-ns{background:#e3e6dc;color:#46543f;font-weight:700}
.tk-app .tk-select.st-ip{background:#f7dfa0;color:#7a4e0a;font-weight:700}
.tk-app .tk-select.st-dn{background:var(--green-800);color:#eaf4e6;font-weight:700}
.tk-app .tk-select.st-dn .tk-caret{opacity:.85;color:#eaf4e6}
.tk-app .mc-chip{border-radius:999px;font-weight:700;letter-spacing:.03em}
.tk-app .mc-chip-Global{background:var(--green-800);color:#e8f3e6}
.tk-app .mc-chip-UK{background:#dfeccb;color:#3f5a1e}
.tk-app .mc-chip-SG{background:#cfe3e0;color:#1f5a52}
.tk-app .mc-chip-VN{background:#f7dfa0;color:#7a4e0a}
.tk-app .mc-chip-JP{background:#e6d6ee;color:#5a2e6b}
.tk-app .mc-chip-UKSG{background:var(--olive-400);color:#26340f}
.tk-app .mc-chip-Credeed{background:#e3c8c0;color:#7a3420}
.tk-app .btn-primary{background:var(--green-800)}
.tk-app .btn-primary:hover{background:var(--green-700)}
.tk-app .mc-delmonth{border-color:#c8998e}
.tk-app .seg button,.tk-app .btn{white-space:nowrap}

/* ===== AR Tracker ===== */
.ar-summary{display:flex;gap:22px;margin-bottom:18px;flex-wrap:wrap}
.ar-sum-item{background:#fff;border:1px solid var(--gray-200);border-radius:14px;padding:14px 20px;min-width:180px}
.ar-sum-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;margin-bottom:6px}
.ar-sum-val{font-size:19px;font-weight:700;color:var(--ink);font-family:var(--font-num)}
.ar-sum-bad{color:#b3432f}
.ar-sum-good{color:var(--green-700)}
.ar-groupseg{overflow-x:auto;overflow-y:hidden;max-width:100%}
.ar-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}
.ar-app .bv-body{max-width:none;padding:24px 34px 60px}
.ar-card{overflow:auto;max-height:calc(100vh - 230px)}
.ar-card-mobile{display:none}
.ar-tbl{width:1910px;table-layout:fixed;border-collapse:separate;border-spacing:0}
.ar-tbl thead th{position:sticky;top:0;z-index:6;background:#f7f8f2;text-align:center}
.ar-tbl .tk-text{font-size:13px}
.ar-tbl th:nth-child(1),.ar-tbl td:nth-child(1){width:110px;position:sticky;left:0;z-index:3;background:#fff}
.ar-tbl th:nth-child(2),.ar-tbl td:nth-child(2){width:100px;position:sticky;left:110px;z-index:3;background:#fff}
.ar-tbl th:nth-child(3),.ar-tbl td:nth-child(3){width:90px;position:sticky;left:210px;z-index:3;background:#fff}
.ar-tbl th:nth-child(4),.ar-tbl td:nth-child(4){width:110px;position:sticky;left:300px;z-index:3;background:#fff;box-shadow:2px 0 4px rgba(20,30,15,.06)}
.ar-tbl thead th:nth-child(1),.ar-tbl thead th:nth-child(2),.ar-tbl thead th:nth-child(3),.ar-tbl thead th:nth-child(4){z-index:7;background:#f7f8f2}
.ar-row-overdue td:nth-child(-n+4){background:#fdf1ef}
.tk-done td:nth-child(-n+4){background:#fff}
.ar-tbl th:nth-child(5),.ar-tbl td:nth-child(5){width:130px}
.ar-tbl th:nth-child(6),.ar-tbl td:nth-child(6){width:150px}
.ar-tbl th:nth-child(7),.ar-tbl td:nth-child(7){width:215px}
.ar-tbl th:nth-child(8),.ar-tbl td:nth-child(8){width:130px}
.ar-tbl th:nth-child(9),.ar-tbl td:nth-child(9){width:150px}
.ar-tbl th:nth-child(10),.ar-tbl td:nth-child(10){width:220px}
.ar-tbl th:nth-child(11),.ar-tbl td:nth-child(11){width:140px}
.ar-tbl th:nth-child(12),.ar-tbl td:nth-child(12){width:100px}
.ar-tbl th:nth-child(13),.ar-tbl td:nth-child(13){width:40px}
.ar-in{width:100%;border:none;background:none;font:inherit;font-size:13px;color:var(--ink);padding:4px 2px;outline:none}
.ar-in-num{font-family:var(--font-num);font-size:12.5px}
.ar-select{border:none;background:none;font:inherit;font-size:13px;color:var(--ink);padding:4px 16px 4px 2px;outline:none;cursor:pointer;width:100%}
.ar-usd-auto{padding:6px 4px;font:inherit;font-size:12.5px;color:var(--green-700);font-weight:600;cursor:help}
.ar-slack-bad{border-color:#e3b3aa !important;background:#fdf1ef}
.ar-slack-note{font-size:10.5px;color:#b3432f;font-weight:600;margin-top:2px}
.ar-owner-select{width:100%}
@media(max-width:860px){
  .ar-app .bv-body{padding:16px 14px 40px}
  .ar-summary{grid-template-columns:1fr 1fr;gap:10px}
  .tk-bar{flex-direction:column;align-items:stretch;gap:10px}
  .tk-bar>div[style]{margin-left:0 !important;flex-direction:column;align-items:stretch;gap:10px}
  .ar-card-desktop{display:none}
  .ar-card-mobile{display:flex;flex-direction:column;gap:10px}
  .ar-mcard{background:#fff;border:1px solid var(--gray-200);border-radius:12px;padding:12px 14px}
  .ar-mcard-overdue{border-color:#e3b3aa;background:#fdf1ef}
  .ar-mcard-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;cursor:pointer}
  .ar-mcard-client{font-weight:700;font-size:14px;color:var(--ink)}
  .ar-mcard-inv{font-size:12px;color:var(--muted);margin-top:2px}
  .ar-mcard-right{text-align:right;flex:none}
  .ar-mcard-amt{font-family:var(--font-num);font-weight:700;font-size:14px}
  .tk-dot-badge{display:inline-block;margin-top:5px;font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:999px;background:var(--gray-200);color:var(--muted)}
  .tk-dot-badge.st-paid{background:#e4efe0;color:var(--green-700)}
  .tk-dot-badge.st-awaiting{background:#fdf1de;color:#a8641a}
  .tk-dot-badge.st-planned{background:#f0e6f5;color:#5a2e6b}
  .ar-mcard-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin-top:8px}
  .ar-mcard-body{display:flex;flex-direction:column;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--gray-200)}
  .ar-mcard-body label{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.02em}
  .ar-mcard-body input,.ar-mcard-body select,.ar-mcard-body textarea{border:1px solid var(--gray-200);border-radius:8px;padding:8px 10px;font-size:13px;font-weight:500;text-transform:none;letter-spacing:normal;color:var(--ink);width:100%}
  .ar-mcard-row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .ar-mcard-del{justify-content:center;color:#b3432f;margin-top:4px}
}
.tk-select select:disabled{opacity:.85;cursor:not-allowed}
.ar-date:disabled{opacity:.7;cursor:not-allowed;background:#f6f6f2}
.ar-xero-lock{color:var(--olive-600)}
button.ar-xero-lock{pointer-events:auto;cursor:pointer;background:none;border:none;padding:0;margin:0}
button.ar-xero-lock:hover{color:#b3432f}
.ar-date{border:none;background:none;font:inherit;font-size:12px;color:var(--ink);padding:4px 2px;outline:none;font-family:var(--font-num);width:100%}
.ar-tbl td:nth-child(6){padding-top:8px;padding-bottom:8px}
.ar-due-inner{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%}
.ar-row-overdue{background:#fdf1ef}
.st-awaiting .tk-dot{background:#d99a2b}
.st-paid .tk-dot{background:var(--green-700)}
.st-planned .tk-dot{background:#5a2e6b}
.st-draft .tk-dot{background:#9aa596}
.ar-app .tk-maintabs{display:none}
.ar-app .tk-bar .btn-primary{white-space:nowrap;flex:none}

/* compact view */
.tk-compact .tk-tbl td{padding:3px 12px}
.tk-compact .tk-tbl thead th{padding:9px 12px}
.tk-compact .tk-text{font-size:13px;padding:5px 8px;min-height:28px;line-height:1.35}
.tk-compact .tk-select{padding:5px 9px;font-size:12.5px}
.tk-compact .tk-date{padding:5px 8px;font-size:12px}
.tk-compact .tk-due{margin-top:3px;font-size:10px}
.tk-compact .tk-del{width:26px;height:26px}
.tk-compact .tk-addrow{padding:9px}

/* ===== Empty states ===== */
.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:38px 28px;gap:4px}
.empty.mini{padding:20px 18px}
.empty-ic{width:46px;height:46px;border-radius:13px;background:var(--sage-100);color:var(--olive-600);display:grid;place-items:center;margin-bottom:10px}
.empty-t{font-family:var(--font-head);font-weight:700;font-size:16px;color:var(--green-ink)}
.empty-b{font-size:13px;color:var(--muted);line-height:1.5;max-width:34ch;margin-top:4px}
.chart-empty{display:flex;align-items:center;justify-content:center;border-style:dashed;background:#fbfcf8}

/* ===== Tweaks: expressive moods ===== */
.bv .num,.bv .pcell,.bv .pcell-ro,.bv .pnl-total,.bv .pnl-rowtotal,.bv .k-val{font-family:var(--bv-num,inherit)}
.bv .k-val{font-feature-settings:"tnum";letter-spacing:-.01em}
.bv .k-val{font-size:var(--bv-kpi,30px)}
.bv .card,.bv .kpi,.bv .addacc{border-radius:var(--bv-r,18px)}
/* Boardroom (default) */
.bv.mood-boardroom{--olive-600:#7a8737;--olive-500:#8f9d49;--olive-400:#a9b978;--bv-r:18px;--bv-kpi:30px}
/* Ledger — spreadsheet/accountant: sharp corners, mono numerics, flat KPIs, muted accent */
.bv.mood-ledger{--olive-600:#5f6f49;--olive-500:#74835a;--olive-400:#9aa978;--bv-r:5px;--bv-kpi:23px;--bv-num:ui-monospace,Menlo,"Roboto Mono",monospace}
.bv.mood-ledger .kpi{background:#fff;border:1px solid var(--gray-200)}
.bv.mood-ledger .kpi .k-bar{display:none}
.bv.mood-ledger .kpi .k-val{color:var(--green-ink)}
.bv.mood-ledger .life-tab.on{border-bottom-color:var(--green-700)}
.bv.mood-ledger .pnl-profit.accent td,.bv.mood-ledger .var-row.accent td{background:#27331f}
/* Signal — modern analytics: vivid emerald, big numbers, round, punchy bars */
.bv.mood-signal{--olive-600:#2f9e44;--olive-500:#40b357;--olive-400:#69c97d;--bv-r:22px;--bv-kpi:38px}
.bv.mood-signal .kpi{background:linear-gradient(160deg,#eef6ec,#dcebd0)}
.bv.mood-signal .kpi .k-bar{height:7px}
.bv.mood-signal .k-lbl{letter-spacing:.1em}

/* ===== Tweaks: information density ===== */
.bv.dens-comfy .pnl-acc td,.bv.dens-comfy .pnl-cat-row td,.bv.dens-comfy .var-row td,.bv.dens-comfy .coa-row td{padding:12px 14px}
.bv.dens-comfy .pcell,.bv.dens-comfy .pcell-ro{font-size:13.5px;padding:7px 11px}
.bv.dens-comfy .bv-kpis{gap:20px}
.bv.dens-comfy .bv-body{padding-top:30px}
.bv.dens-dense{font-size:12.5px}
.bv.dens-dense .pnl-acc td,.bv.dens-dense .pnl-cat-row td,.bv.dens-dense .var-row td,.bv.dens-dense .coa-row td{padding:3px 8px}
.bv.dens-dense .pcell,.bv.dens-dense .pcell-ro{font-size:12px;padding:2px 6px;width:62px}
.bv.dens-dense .pnl-acc .pnl-cat{display:none}
.bv.dens-dense .pnl-section td{padding:5px 12px}
.bv.dens-dense .kpi{padding:11px 14px}
.bv.dens-dense .bv-kpis{gap:12px}
.bv.dens-dense .th-tag{display:none}

/* ===== Forecast grid ===== */
.month-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.mchip{border:1px solid var(--sage-300);background:#fff;color:var(--green-700);font-size:12px;font-weight:600;padding:5px 11px;border-radius:999px;display:inline-flex;align-items:center}
.mchip.on{background:var(--olive-600);border-color:var(--olive-600);color:#fff}
.mchip:not(.on){opacity:.7;background:#f3f4ef;color:var(--muted)}
.fc-scroll{overflow-x:auto;margin:0 -4px;padding:0 4px}
.fc-tbl{min-width:100%}
.fc-tbl th,.fc-tbl td{white-space:nowrap}
.fc-tbl td{padding:6px 8px}
.cellinput{border:1px solid transparent;background:#f6f8f1;border-radius:7px;padding:6px 9px;font-size:13px;color:var(--ink);width:84px;font-variant-numeric:tabular-nums}
.cellinput.name{width:150px;font-weight:600;text-align:left}
.cellinput.num{text-align:right}
.cellinput:hover{border-color:var(--sage-300)}
.cellinput:focus{outline:none;border-color:var(--olive-500);background:#fff;box-shadow:0 0 0 3px rgba(143,157,73,.18)}
.cellsel{border:1px solid var(--sage-300);background:#fff;border-radius:7px;padding:6px 8px;font-size:12.5px;font-weight:600;color:var(--green-700)}
.cellsel:focus{outline:none;border-color:var(--olive-500)}
.st-sel.st-secured{background:var(--green-800);color:#dff0df;border-color:var(--green-800)}
.st-sel.st-likely{background:var(--olive-400);color:#26340f;border-color:var(--olive-400)}
.st-sel.st-pipeline{background:var(--sage-200);color:var(--green-700)}
.fc-tbl tr.fc-foot td{border-top:2px solid var(--green-800);background:#f3f6ec}
.rowx{border:none;background:none;color:var(--gray-400);font-size:18px;line-height:1;width:26px;height:26px;border-radius:6px}
.rowx:hover{background:#f6e3da;color:#a3431f}
.new-q{margin:4px 12px 8px;width:calc(100% - 24px);border:1px dashed rgba(169,185,120,.5);background:rgba(169,185,120,.1);color:#cfe0cf;border-radius:10px;padding:10px 12px;font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:8px;justify-content:center}
.new-q:hover{background:rgba(169,185,120,.2);border-color:var(--olive-400)}

/* density */
.dens-compact{font-size:14px}
.dens-compact .canvas{padding:18px 22px 60px}
.dens-compact .card-pad{padding:16px 18px}
.dens-compact .steps{width:180px}
.dens-comfy{font-size:15.5px}
.dens-comfy .canvas{padding:34px 42px 90px}
.dens-comfy .tbl td{padding:14px 12px}
