[hidden]{display:none!important}.test-box{border-top:1px solid var(--border);margin:8px 16px 0;padding:12px 0 4px;display:flex;flex-direction:column;gap:8px}.test-box .btn{width:100%}

/* IBO design tokens v11 — shadcn/ui (neutral, dark) + Luma preset (claude/ibo-tokens-v11.css, RESTYLE v11 §1).
   Names follow shadcn so the product can move to shadcn/Tailwind later without renaming.
   Every colour in the product comes from this file. */
:root, .dark {
  color-scheme: dark;
  /* surfaces & text */
  --background: oklch(0.145 0 0);
  --foreground: oklch(0.985 0 0);
  --card: oklch(0.205 0 0);
  --card-foreground: oklch(0.985 0 0);
  --popover: oklch(0.205 0 0);
  --popover-foreground: oklch(0.985 0 0);
  --primary: oklch(0.922 0 0);
  --primary-foreground: oklch(0.205 0 0);
  --secondary: oklch(0.269 0 0);
  --secondary-foreground: oklch(0.985 0 0);
  --muted: oklch(0.269 0 0);
  --muted-foreground: oklch(0.708 0 0);
  --accent: oklch(0.269 0 0);
  --accent-foreground: oklch(0.985 0 0);
  --border: oklch(1 0 0 / 10%);
  --input: oklch(1 0 0 / 7.5%);
  --ring: oklch(0.556 0 0);

  /* status (always with a word, sign or icon) */
  --destructive: oklch(0.704 0.191 22.216);
  --pos: oklch(0.765 0.177 163.2);
  --neg: var(--destructive);
  --warn: oklch(0.828 0.189 84.4);

  /* charts: one series = neutral ramp; several = series 1–4 (validated dark, card surface) */
  --chart-1: oklch(0.87 0 0);   /* current period */
  --chart-2: oklch(0.556 0 0);
  --chart-3: oklch(0.439 0 0);  /* past periods */
  --chart-4: oklch(0.371 0 0);
  --chart-5: oklch(0.269 0 0);
  --series-1: #2296D1;
  --series-2: #D4599B;
  --series-3: #7E6ADE;
  --series-4: #1AA291;

  /* sidebar (menu inverted / translucent, accent subtle) */
  --sidebar: color-mix(in oklch, var(--card) 70%, transparent);
  --sidebar-foreground: oklch(0.985 0 0 / 72%);
  --sidebar-accent: oklch(0.985 0 0 / 9%);
  --sidebar-border: var(--border);
  --sidebar-w: 248px;
  --sidebar-w-collapsed: 64px;

  /* shape */
  --radius: 0.625rem;            /* shadcn base */
  --radius-card: 26px;
  --radius-inner: 16px;
  --radius-chip: 9px;
  --radius-pill: 999px;

  /* type */
  --font-sans: "Inter", "Inter Variable", system-ui, sans-serif;
  --text-display: 600 32px/1.15 var(--font-sans);
  --text-section: 600 20px/1.3 var(--font-sans);
  --text-title: 500 16px/1.5 var(--font-sans);
  --text-body: 400 14px/1.45 var(--font-sans);
  --text-caption: 400 12px/1.4 var(--font-sans);

  /* layout */
  --container: 1280px;
  --page-x: 32px;
  --gap: 16px;
  --header-h: 64px;
  --control-h: 36px;

  /* motion · FEATURE v11.3 §1: every duration and curve in CSS and JS comes from these tokens */
  --dur-1: 120ms;   /* hover, press, switches */
  --dur-2: 180ms;   /* popovers, tooltips, tabs */
  --dur-3: 240ms;   /* pages, dialogs, sheet, expanding sections */
  --dur-4: 600ms;   /* the first drawing of charts */
  --ease-out: cubic-bezier(.22, .9, .24, 1);   /* appearing */
  --ease-in: cubic-bezier(.4, 0, 1, 1);        /* leaving */
  --ease-io: cubic-bezier(.65, 0, .35, 1);     /* size change, reordering */
  --ease-linear: linear;                       /* loops (spinner, marching gap, progress) */
  --stagger: 30ms;  /* cascade step, 8 steps at most */
  --stagger-row: 20ms;  /* table rows, chart bars */
  --rise: 8px;      /* shift when appearing */
  --shift: 12px;    /* deeper / back */
  --tip-delay: 150ms;   /* tooltip waits before showing */
  --load-delay: 150ms;  /* a load shows the progress bar after this */
  /* loops kept from production (RESTYLE §7): critical row glow, dot, marching gap, tip ripple; spinner, skeleton, progress */
  --dur-crit-glow: 2.4s; --dur-crit-dot: 1.2s; --dur-crit-march: .9s; --dur-crit-tip: 1.6s; --dur-crit-ring: 1.8s;
  --dur-spin: .8s; --dur-spin-slow: 2.4s; --dur-pulse: 1.6s; --dur-progress: 1s;

  /* ---- IBO extensions: every value derives from the tokens above ---- */
  --pos-soft: color-mix(in oklch, var(--pos) 18%, transparent);       /* badge fills (§3 Badge: colour 18% + text) */
  --neg-soft: color-mix(in oklch, var(--neg) 18%, transparent);
  --warn-soft: color-mix(in oklch, var(--warn) 18%, transparent);
  --neutral-soft: oklch(1 0 0 / 6%);
  --well: oklch(1 0 0 / 4%);                                           /* §3 Well: foreground 4% */
  --border-strong: oklch(1 0 0 / 15%);
  --row-hover: oklch(1 0 0 / 3%);                                      /* §5.1 hover 3% white */
  --row-group: oklch(1 0 0 / 2.5%);                                    /* Σ / ƒx rows */
  --meter-track: oklch(1 0 0 / 9%);
  --plan-line: color-mix(in oklch, var(--foreground) 70%, transparent);
  --chart-grid: oklch(1 0 0 / 6%);
  --chart-zero: oklch(1 0 0 / 20%);
  --neg-past: color-mix(in oklch, var(--neg) 45%, transparent);
  --pos-band: color-mix(in oklch, var(--pos) 8%, transparent);
  --scrim: oklch(0 0 0 / 60%);
  --ring-focus: color-mix(in oklch, var(--ring) 45%, transparent);
  --shadow-pop: 0 8px 24px oklch(0 0 0 / 40%);
  --no-glow: transparent;
  --series-other: var(--chart-2);
  --crit-edge: color-mix(in oklch, var(--neg) 35%, transparent);
  --crit-line: color-mix(in oklch, var(--neg) 35%, transparent);
  --entered-tile-edge: var(--border-strong);
  --calc-edge: var(--border-strong);
  --new-row: var(--row-group);
  --elev-1: none; --elev-2: none; --elev-left: none; --elev-dialog: none;
  --num-hero: 600 32px/1.15 var(--font-sans);

  /* FEATURE v11.18 · quality bands behind a chart: barely there, the data stays on top (Normal has no fill) */
  --band-poor: color-mix(in oklch, var(--neg) 5%, transparent);
  --band-fair: color-mix(in oklch, var(--warn) 4%, transparent);
  --band-good: color-mix(in oklch, var(--pos) 3%, transparent);
  --band-excellent: color-mix(in oklch, var(--pos) 6%, transparent);
  --band-edge: color-mix(in oklch, var(--border) 40%, transparent);
}
/* FEATURE v11.18 · light values. The product ships dark only: this scope holds what a light theme gets (shadcn neutral light) and is
   checked on a light sample in /dev/ui; the bands are a little denser on white, where the same share reads fainter */
.light {
  color-scheme: light;
  --background: oklch(1 0 0);
  --foreground: oklch(0.145 0 0);
  --card: oklch(1 0 0);
  --card-foreground: oklch(0.145 0 0);
  --muted: oklch(0.97 0 0);
  --muted-foreground: oklch(0.556 0 0);
  --border: oklch(0.922 0 0);
  --destructive: oklch(0.577 0.245 27.325);
  --pos: oklch(0.596 0.145 163.225);
  --neg: var(--destructive);
  --warn: oklch(0.666 0.179 58.318);
  --chart-1: oklch(0.205 0 0);
  --chart-2: oklch(0.439 0 0);
  --chart-3: oklch(0.556 0 0);
  --chart-grid: oklch(0 0 0 / 6%);
  --plan-line: color-mix(in oklch, var(--foreground) 70%, transparent);
  --band-poor: color-mix(in oklch, var(--neg) 5%, transparent);
  --band-fair: color-mix(in oklch, var(--warn) 6%, transparent);
  --band-good: color-mix(in oklch, var(--pos) 4%, transparent);
  --band-excellent: color-mix(in oklch, var(--pos) 8%, transparent);
  --band-edge: color-mix(in oklch, oklch(0 0 0 / 10%) 40%, transparent);
  /* FIX v11.22 · the field and table surfaces on white (the dark values are white at a few %, invisible here) */
  --popover: oklch(1 0 0);
  --popover-foreground: oklch(0.145 0 0);
  --primary: oklch(0.205 0 0);
  --primary-foreground: oklch(0.985 0 0);
  --secondary: oklch(0.97 0 0);
  --secondary-foreground: oklch(0.205 0 0);
  --accent: oklch(0.97 0 0);
  --accent-foreground: oklch(0.205 0 0);
  --input: oklch(0.922 0 0);
  --ring: oklch(0.708 0 0);
  --neutral-soft: oklch(0 0 0 / 5%);
  --well: oklch(0 0 0 / 3%);
  --border-strong: oklch(0 0 0 / 15%);
  --row-hover: oklch(0 0 0 / 3%);
  --row-group: oklch(0 0 0 / 2.5%);
  --meter-track: oklch(0 0 0 / 8%);
  --chart-zero: oklch(0 0 0 / 20%);
}
@media (prefers-reduced-motion: reduce){
  :root{ --dur-1:0ms; --dur-2:80ms; --dur-3:120ms; --dur-4:0ms; --stagger:0ms; --stagger-row:0ms; --rise:0px; --shift:0px; }
}
/* the in-app setting (Settings › Motion) does the same */
body.motion-reduced,body.motion-off{ --dur-1:0ms; --dur-2:80ms; --dur-3:120ms; --dur-4:0ms; --stagger:0ms; --stagger-row:0ms; --rise:0px; --shift:0px; }
body.motion-off{ --dur-2:0ms; --dur-3:0ms; }



/* IBO shell: 64px header · 40/232px menu · 372px right sheet · 1px hairline grids. Single dark theme by design (BUILD_PROMPT §3). */
:root{color-scheme:dark;
  --menu-w:232px; --sheet-w:372px;}
*{box-sizing:border-box}
html,body{background:var(--background);color:var(--foreground);height:100%}
body{font:400 14px/1.55 var(--font-sans);margin:0}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--foreground)}
:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
h1,h2,h3{margin:0;text-wrap:balance}
h1{font:600 32px/1.1 var(--font-sans);} h2{font:600 26px/1.15 var(--font-sans);} .h2{font:600 20px var(--font-sans)} .h3{font:600 15px var(--font-sans);display:block}
p{margin:4px 0}
.mono{font-family:var(--font-sans)} .small{font-size:12px} .num{font-family:var(--font-sans);font-variant-numeric:tabular-nums;font-size:14px}
.eyebrow{font:500 12px var(--font-sans);color:var(--muted-foreground);display:block}
.tag{font:500 12px var(--font-sans);color:var(--muted-foreground)}
.ink1{color:var(--foreground)} .ink2{color:var(--muted-foreground)} .ok{color:var(--pos)} .warn{color:var(--warn)} .loss{color:var(--neg)}
.lbl{display:block;font:500 12px var(--font-sans);color:var(--muted-foreground);margin-bottom:6px}
.grain{position:fixed;inset:0;pointer-events:none;z-index:60;opacity:.62;mix-blend-mode:overlay}
.grain svg{width:100%;height:100%;display:block}
.pad{padding:10px 16px;display:block} .bt{border-top:1px solid var(--border)}
.click{cursor:pointer} .click:hover{background:var(--neutral-soft)}

/* header */





body.collapsed{--menu-w:40px}












.av{width:32px;height:32px;border:1px solid var(--border-strong);background:var(--well);display:inline-grid;place-items:center;font:500 12px var(--font-sans);color:var(--foreground);flex:none;overflow:hidden;vertical-align:middle}
.av .ph{width:100%;height:100%;background:repeating-linear-gradient(135deg,var(--border) 0 3px,transparent 3px 6px)}
.who{display:flex;flex-direction:column;line-height:1.25;text-align:left}
.who b{font:600 14px var(--font-sans)} .who span{font:500 12px var(--font-sans);color:var(--muted-foreground)}
.pbtn{display:flex;align-items:center;gap:10px;background:none;border:0;cursor:pointer;padding:0;color:var(--foreground)}
.pbtn:hover .who b{color:var(--foreground)}
#pmenu{position:absolute;right:16px;top:64px;width:300px;background:var(--card);backdrop-filter:blur(14px);border:1px solid var(--border-strong);z-index:30}








/* menu */
.shell{display:flex;min-height:calc(100% - 64px)}













/* main + sheet */



#sheet{position:fixed;top:calc(64px + env(safe-area-inset-top,0px));right:0;bottom:0;width:var(--sheet-w);background:var(--card);backdrop-filter:blur(14px);border-left:1px solid var(--border);z-index:25;display:flex;flex-direction:column}
#sheet[hidden]{display:none}
.sh-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border)}
.sh-h h3{font:600 20px var(--font-sans);}
.sh-b{flex:1;overflow-y:auto;padding:16px 20px;min-width:0}
.sh-f{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:14px 20px;border-top:1px solid var(--border)}
.toast{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:40;background:var(--card);backdrop-filter:blur(14px);border:1px solid var(--border-strong);padding:12px 16px;display:flex;gap:12px;align-items:center;font:400 14px var(--font-sans);max-width:min(460px,calc(100vw - 32px))}
.toast .t{flex:1;min-width:0}
.toast[hidden],#pmenu[hidden]{display:none} body.sheet-open .toast{right:calc(var(--sheet-w) + 16px)} @media (max-width:760px){ body.sheet-open .toast{right:16px;bottom:96px} }
.scanner{position:absolute;left:0;right:0;height:1px;background:var(--ring);opacity:.5;box-shadow:0 0 6px var(--ring);pointer-events:none;z-index:5;top:0;display:none}
@keyframes scan{from{transform:translateY(0)}to{transform:translateY(var(--scan-h,600px))}}
.scanning .scanner{display:block;animation:scan var(--dur-4) var(--ease-out) forwards}
@keyframes grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.boot .lb{animation:grow var(--dur-3) var(--ease-out) both;transform-origin:left}
@keyframes brk{from{opacity:0}to{opacity:1}}
.boot .frame::before,.boot .frame::after{animation:brk var(--dur-1) var(--ease-out) both}

@keyframes draw{to{stroke-dashoffset:0}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.scanner{display:none!important}}
body.motion-off *,body.motion-reduced *{animation:none!important;transition:none!important}
body.motion-off .scanner,body.motion-reduced .scanner{display:none!important}

/* page scaffolding */
.page{display:flex;flex-direction:column;gap:20px;max-width:1392px}
.page.narrow{max-width:720px}
.ph{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.ph .tag{margin-top:6px;display:block}
.g1{display:grid;gap:1px;background:var(--border);border:1px solid var(--border)}
.g1>*{background:var(--well);min-width:0}
.cols2{grid-template-columns:repeat(2,minmax(0,1fr))} .cols3{grid-template-columns:repeat(3,minmax(0,1fr))} .cols4{grid-template-columns:repeat(4,minmax(0,1fr))}
.frame{position:relative}
.frame::before,.frame::after{content:"";position:absolute;width:12px;height:12px;pointer-events:none;border-color:var(--border-strong);border-style:solid;z-index:1}
.frame::before{top:-1px;left:-1px;border-width:1px 0 0 1px} .frame::after{bottom:-1px;right:-1px;border-width:0 1px 1px 0}
.cell{padding:16px} .scroll{overflow-x:auto}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}







.seg .segl{background:none;border:0;height:30px;padding:0 12px;font:500 12px var(--font-sans);color:var(--muted-foreground);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center}

.chip{height:30px;padding:0 12px;border:1px solid var(--border-strong);background:none;font:500 12px var(--font-sans);color:var(--muted-foreground);cursor:pointer}
.chip:hover{color:var(--foreground)} .chip.on{background:var(--neutral-soft);color:var(--foreground);border-color:var(--ring)}
.badge{font:500 12px var(--font-sans);padding:4px 8px;border:1px solid var(--border-strong);color:var(--muted-foreground)} .badge.on{color:var(--foreground);border-color:var(--ring)}
.tabs{display:flex;gap:1px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.tab{background:none;border:0;padding:10px 14px;font:500 12px var(--font-sans);color:var(--muted-foreground);cursor:pointer;text-decoration:none;position:relative}
.tab.on{color:var(--foreground);box-shadow:inset 0 -2px 0 var(--ring)} .tab:hover{color:var(--foreground)}
.st{font:600 12px var(--font-sans);white-space:nowrap}
.sw{display:inline-block;width:28px;height:14px;border:1px solid var(--border-strong);position:relative} .sw::after{content:"";position:absolute;top:2px;left:2px;width:8px;height:8px;background:var(--muted-foreground)} .sw.on{border-color:var(--ring)} .sw.on::after{left:16px;background:var(--ring)}
.list{display:flex;flex-direction:column}
.li{display:flex;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border);text-decoration:none;color:var(--foreground);background:none;border-left:0;border-right:0;border-top:0;text-align:left;width:100%;font:inherit}
.li>*:nth-child(2){flex:1;min-width:0} .li:last-child{border-bottom:0} .li-t{font:600 14px var(--font-sans)} .li.on{background:var(--neutral-soft)} a.li:hover,button.li:hover{background:var(--neutral-soft)}
.li.chk input{width:16px;height:16px;accent-color:var(--primary)}
.kv{display:grid;grid-template-columns:minmax(120px,auto) 1fr;gap:8px 16px;align-items:baseline;font-size:14px}
.kv b{font:500 12px var(--font-sans);color:var(--muted-foreground)}
.cmt{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--border)}
.chk-i{font:500 12px var(--font-sans);margin-right:10px} .chk-i input{accent-color:var(--primary)}
.plain{margin:6px 0 10px;padding-left:16px} .plain li{padding:2px 0} .checks-ul{list-style:none;padding:0;margin:8px 0} .checks-ul li{padding:4px 0}
.steps-ol{padding-left:20px;margin:0 0 12px} .steps-ol li{padding:4px 0}
.banner{display:flex;gap:12px;align-items:center;padding:12px 16px;background:var(--neutral-soft);font:400 14px var(--font-sans);flex-wrap:wrap}
.banner .t{flex:1;min-width:200px} .banner.loss-soft{background:var(--neg-soft)} .banner.warn-soft{background:var(--warn-soft)}
.msg{grid-column:1/-1;display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:8px 12px;font:400 14px var(--font-sans);margin-top:4px}
.msg.w{background:var(--warn-soft)} .msg.e{background:var(--neg-soft)} .msg.i{background:var(--neutral-soft)}
.msg .g{font:600 12px var(--font-sans)} .msg .t{flex:1;min-width:200px}

/* tables */
.tbl{width:100%;border-collapse:collapse}
.tbl th{font:500 12px var(--font-sans);color:var(--muted-foreground);text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap}
.tbl td{padding:9px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
.tbl td.r,.tbl th.r,.r{text-align:right} .tbl td.num{white-space:nowrap}
.tbl tr.grp td{font:500 12px var(--font-sans);color:var(--muted-foreground);padding-top:16px}
.tbl tr.tot td{font-weight:600} .tbl tr.grand td{border-top:1px solid var(--border-strong)}
.tbl .ind{padding-left:28px;color:var(--muted-foreground)} .tbl td.cur,.tbl th.cur{background:var(--neutral-soft)} .tbl td.neg{color:var(--foreground)} .tbl .fy{border-left:1px solid var(--border-strong);font-weight:600}
.tbl.year td,.tbl.year th{padding:7px 10px;font-size:12px} .tbl.year td:first-child,.tbl.year th:first-child{position:sticky;left:0;background:var(--well);z-index:1;white-space:nowrap}
.tbl.budget td{vertical-align:top} .pf{height:3px;background:var(--border);margin-top:4px} .pf i{display:block;height:3px}
.pnl td{height:40px} .pnl tr.cat td{height:52px} .pnl tr.cat .cn{font:600 14px var(--font-sans)} .pnl tr.line td{height:34px;color:var(--muted-foreground)} .pnl tr.line .cn{padding-left:32px;font:400 14px var(--font-sans)} .pnl tr.lh td{height:28px;padding-top:4px;padding-bottom:4px}
.pnl .r{font:500 14px var(--font-sans);font-variant-numeric:tabular-nums} .pnl .sub{font:600 14px var(--font-sans)} .exp{color:var(--muted-foreground);font:500 12px var(--font-sans)}
.matrix td{padding:4px 6px} .mcell{width:100%;height:36px;border:1px solid var(--border);background:none;font:500 12px var(--font-sans);color:var(--muted-foreground);cursor:pointer} .mcell:hover{border-color:var(--muted-foreground)} .mcell.on{background:var(--neutral-soft);color:var(--foreground);border-color:var(--ring)}
.opt{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--border);padding:10px 0;cursor:pointer;color:var(--foreground)} .opt.on .mono{color:var(--foreground)} .opt:disabled{color:var(--muted-foreground);cursor:not-allowed} .opt:last-child{border-bottom:0}

/* dashboard */
.grid12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:1px;background:var(--border);border:1px solid var(--border)}
.wd{background:var(--well);min-width:0;display:flex;flex-direction:column}
.wd.h-S{min-height:150px} .wd.h-M{min-height:330px}
 .wd-b{padding:8px 16px 16px;flex:1;min-width:0}
.wd.drop{border:1px dashed var(--border-strong);background:transparent;color:var(--muted-foreground);font:500 12px var(--font-sans);cursor:pointer;align-items:center;justify-content:center;min-height:150px}
.grid12.cz .wd{outline:1px dashed var(--border-strong);outline-offset:-4px}
.w-v{font:600 32px/1.05 var(--font-sans);margin:8px 0 6px;white-space:nowrap;font-variant-numeric:tabular-nums}
.w-d{font:500 12px var(--font-sans);} .w-num .spark{display:block;margin-top:8px}
.w-tools{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.live .v{font:600 20px var(--font-sans);display:block} .live .d{font:500 12px var(--font-sans);color:var(--muted-foreground)}
.live{grid-template-columns:1fr 1fr;border:0;border-bottom:1px solid var(--border)}





.hbar{display:grid;grid-template-columns:minmax(110px,160px) 1fr 80px minmax(60px,auto);gap:12px;align-items:center;padding:6px 0} .hb-t{height:10px;background:var(--border);position:relative} .hb-f{height:10px;background:var(--ring)}

.ask{display:flex;gap:8px;margin-top:10px} .ask .fld{flex:1}
.chart{display:block;max-width:100%} .ax{font:400 12px var(--font-sans);fill:var(--muted-foreground);} .ax.cur{fill:var(--ring)}
.months-strip{display:flex;gap:1px;background:var(--border);border:1px solid var(--border);overflow-x:auto} .months-strip span{background:var(--well);padding:10px 12px;display:flex;flex-direction:column;gap:2px;flex:1;min-width:84px} .months-strip b{font:600 12px var(--font-sans);}
.months-strip.small span{padding:6px 8px;min-width:70px}
.shares{display:flex;gap:4px;height:80px;align-items:flex-end;margin:8px 0} .shares span{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:4px} .shares i{display:block;width:100%;background:var(--ring)} .shares b{font:500 12px var(--font-sans);color:var(--muted-foreground)}

/* ladder */
.ladder{width:100%;border-collapse:collapse}
.ladder td{padding:0 12px;height:30px;border-bottom:1px solid var(--border);white-space:nowrap} .ladder thead td{height:22px}
.ladder tr.tot td{height:34px} .ladder tbody tr{cursor:pointer} .ladder tbody tr:hover td{background:var(--neutral-soft)}
.ladder .nm{font:500 14px var(--font-sans);color:var(--muted-foreground);width:150px} .ladder tr.tot .nm{font:600 14px var(--font-sans);color:var(--foreground)}
.ladder .eur{text-align:right;width:120px;font:500 14px var(--font-sans);font-variant-numeric:tabular-nums} .ladder .pc{text-align:right;width:96px;font:500 12px var(--font-sans);color:var(--muted-foreground)}
.ladder .trk{min-width:240px;position:relative;padding:0}

.lb{position:absolute;top:9px;height:12px;transition:none} .lb.pos{background:var(--pos)} .lb.neg{background:var(--neg)}
.lb.ded{background:repeating-linear-gradient(135deg,transparent 0 3px,var(--muted-foreground) 3px 4px);outline:1px solid var(--muted-foreground);outline-offset:-1px;min-width:3px}



/* input */


.steps{display:flex;flex-direction:column} .steps .back{padding:12px 14px;font:500 12px var(--font-sans);color:var(--muted-foreground);text-decoration:none;border-bottom:1px solid var(--border)} .steps .back:hover{color:var(--foreground)}
.steps .cell{padding:12px 14px;border-bottom:1px solid var(--border)}
.stp{display:grid;grid-template-columns:18px 1fr auto;gap:4px 8px;align-items:center;padding:10px 14px;border:0;border-bottom:1px solid var(--border);background:none;text-align:left;cursor:pointer;color:var(--foreground);text-decoration:none}
.stp:hover{background:var(--neutral-soft)} .stp[aria-current="step"]{background:var(--neutral-soft);box-shadow:inset 2px 0 0 var(--ring)}
.stp .n{font:500 14px var(--font-sans)} .stp .c{font:500 12px var(--font-sans);color:var(--muted-foreground)} .stp .s{grid-column:2/4;font:500 12px var(--font-sans);}
.keys{padding:14px;display:flex;flex-direction:column;gap:4px;font:400 12px var(--font-sans);color:var(--muted-foreground)} .keys b{font:600 12px var(--font-sans);color:var(--foreground)}


.frow{display:grid;grid-template-columns:minmax(150px,1.3fr) minmax(130px,1fr) minmax(80px,.6fr) minmax(90px,.6fr);gap:12px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border)}
.frow.plan{grid-template-columns:minmax(150px,1.3fr) minmax(130px,1fr) minmax(80px,.6fr) minmax(150px,1fr) minmax(90px,.6fr)}

.frow .lab{font:500 12px var(--font-sans);} .frow .src{font:500 12px var(--font-sans);color:var(--muted-foreground);margin-top:3px}
.src.pasted{color:var(--foreground)} .src.copied{color:var(--warn)} .src.empty{color:var(--muted-foreground)}




.frow .prev,.frow .chg{text-align:right;font:500 14px var(--font-sans);font-variant-numeric:tabular-nums;color:var(--muted-foreground)}

.foot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;flex-wrap:wrap;margin-top:auto}

.checks{display:flex;flex-direction:column;gap:8px;font:400 14px var(--font-sans);margin-top:8px} .checks>div:not(.tag){display:grid;grid-template-columns:16px 1fr;gap:8px}
.addfield{display:flex;align-items:center;gap:10px;width:calc(100% - 32px);margin:10px 16px;height:44px;padding:0 14px;background:none;border:1px dashed var(--border-strong);color:var(--muted-foreground);font:500 12px var(--font-sans);cursor:pointer;text-align:left}
.addfield:hover{color:var(--foreground);border-color:var(--ring)}
.cf-tag{font:500 12px var(--font-sans);text-transform:none;color:var(--foreground);border:1px solid var(--pos-soft);padding:1px 5px;margin-left:4px;vertical-align:1px}
.cf-x{margin-left:8px;height:22px;padding:0 6px;font-size:12px}
.calc-h{padding:14px 16px 6px;border-bottom:1px solid var(--border)}
.frow.calc .lab{color:var(--muted-foreground)}
.pastebox{border:1px solid var(--border);padding:10px;margin:10px 0} .prow .tag{display:block}

/* auth + wizard */
.auth-wrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:40px 16px}
.auth-card{width:min(420px,100%);border:1px solid var(--border);padding:32px;display:flex;flex-direction:column;gap:18px;background:var(--well)}

.gbtn{display:flex;align-items:center;justify-content:center;gap:10px;height:40px;padding:0 12px;background:transparent;border:1px solid var(--border-strong);border-radius:4px;color:var(--foreground);font:500 14px/20px var(--font-sans);cursor:pointer;width:100%}
.gbtn:hover{background:var(--card)} .gbtn:disabled{color:var(--muted-foreground);cursor:default}
.auth-foot{text-align:center;font:500 12px var(--font-sans);color:var(--muted-foreground)} .auth-foot a{color:var(--muted-foreground)}
.auth-state h2{font:600 20px var(--font-sans)} .auth-state p{color:var(--muted-foreground)} .acc{display:flex;gap:10px;align-items:center;padding:10px 0}
.gwin{border:1px solid var(--chart-3);background:var(--card);color:var(--foreground);padding:12px 0;border-radius:8px;font-family:var(--font-sans)}
.gw-h{padding:4px 16px 10px;font-size:14px;border-bottom:1px solid var(--chart-3)} .gw-t{padding:12px 16px;font-size:16px} .gw-acc{display:flex;gap:12px;align-items:center;width:100%;background:none;border:0;border-top:1px solid var(--chart-3);padding:10px 16px;color:var(--foreground);text-align:left;cursor:pointer} .gw-acc .av{border-radius:50%;border-color:#5F6368}
.auth-states{width:min(900px,100%);display:flex;flex-direction:column;gap:8px}
.devpick{display:flex;flex-direction:column;gap:1px;background:var(--border);border:1px solid var(--border);margin-top:6px}
.pick{display:flex;gap:12px;align-items:center;background:var(--well);border:0;padding:10px 12px;text-align:left;cursor:pointer;color:var(--foreground)} .pick:hover{background:var(--neutral-soft)}
.wiz{max-width:1100px;margin:0 auto;padding:32px 24px 64px;display:flex;flex-direction:column;gap:18px}


.wiz-f{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px}
.types{grid-template-columns:repeat(3,minmax(0,1fr))}
.type{display:flex;flex-direction:column;gap:8px;padding:20px;background:var(--well);border:0;text-align:left;color:var(--foreground);cursor:pointer;align-items:flex-start}
.type b{font:600 20px var(--font-sans);} .type p{color:var(--muted-foreground);margin:0} .type ul{margin:0;padding-left:16px;color:var(--foreground)} .type li{padding:1px 0}
.type.sel{box-shadow:inset 0 0 0 1px var(--ring)} .type.sel>.eyebrow:first-child{color:var(--foreground)} button.type:hover{background:var(--neutral-soft)}
.crop{height:200px;background:repeating-linear-gradient(135deg,var(--border) 0 4px,transparent 4px 8px);position:relative;margin-bottom:12px} .crop-box{position:absolute;inset:30px 60px;border:1px solid var(--ring)}

@media (max-width:1180px){ .cols4{grid-template-columns:repeat(2,minmax(0,1fr))} .wd[style*="span 5"],.wd[style*="span 7"]{grid-column:span 12!important} }
@media (max-width:900px){ .cols3,.types{grid-template-columns:1fr} .grid12 .wd{grid-column:span 6!important} }
@media (max-width:760px){
 .who b,.who span{display:none}
 .cols2{grid-template-columns:1fr} .grid12 .wd{grid-column:span 12!important}
 .steps{flex-direction:row;overflow-x:auto} .steps .cell,.steps .back,.keys{display:none} .stp{min-width:150px;border-right:1px solid var(--border)}
 .frow,.frow.plan{grid-template-columns:1fr 1fr} .frow .prev,.frow .chg{text-align:left}
 .hbar{grid-template-columns:1fr 1fr} .hbar .hb-t{grid-column:1/-1}
  .w-v{font-size:24px} h1{font-size:24px} #sheet{width:100%} :root{--sheet-w:100%} .auth-card{padding:20px} .kv{grid-template-columns:1fr}
}


/* ===== Design layer · matches canvas artboards (Dashboard5, MonthDepts5, InputRevenue3, PnL, DesignSystem*) ===== */
body{-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
.eyebrow,.lbl{font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground)}
.cap,p.tag,.tag.pad,.ph .tag,.ph p{font:400 14px/1.5 var(--font-sans);text-transform:none;color:var(--muted-foreground)}
.tag{font:400 12px var(--font-sans);}
.sp{flex:1}
h1{font:600 26px/1.1 var(--font-sans);}
h1.lg{font-size:32px}
h2{font:600 24px/1.1 var(--font-sans);}
.h2{font:600 20px var(--font-sans);}
.h3{font:600 14px var(--font-sans)}
.ph{margin-bottom:0}
.ph h1{margin-top:8px}
.ph .tag,.ph p{margin-top:6px}

/* header · .top */











.ro{display:flex;flex-direction:column;gap:3px;align-items:flex-end;text-align:right;white-space:nowrap}
.ro .v{font:500 12px var(--font-sans);color:var(--foreground)}
.fillbar{width:88px;height:2px;background:var(--border);position:relative;margin-top:3px}
.fillbar i{position:absolute;left:0;top:0;bottom:0;background:var(--ring);transition:none}
.ib{width:34px;height:34px;border:1px solid var(--border-strong);background:transparent;color:var(--muted-foreground);display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;position:relative;flex:none}
.ib:hover{color:var(--foreground);border-color:var(--muted-foreground)}








.av{width:32px;height:32px;border:1px solid var(--border-strong);background:var(--well);display:inline-flex;align-items:center;justify-content:center;font:500 12px var(--font-sans);color:var(--foreground);flex:none;overflow:hidden}
.av svg{display:block}
#pmenu{position:absolute;right:16px;top:64px;width:300px}

/* menu · expanded 232 / collapsed rail of 40px keys */
.shell{display:block}














.kbd{font:500 12px var(--font-sans);border:1px solid var(--border-strong);padding:2px 5px;color:var(--foreground);margin-left:6px}

















/* right sheet · floating, inset 16 */
#sheet,.dock{position:fixed;top:calc(80px + env(safe-area-inset-top,0px));right:16px;bottom:16px;width:var(--sheet-w);background:var(--card);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--border);display:flex;flex-direction:column;z-index:26}
#sheet{z-index:27}
.sh-h{padding:18px 22px;border-bottom:1px solid var(--border)}
.sh-h h3,.dock-t{font:600 14px var(--font-sans);margin-top:6px}
.sh-b{padding:18px 22px;display:flex;flex-direction:column;gap:14px}
.sh-f{padding:16px 22px;border-top:1px solid var(--border);flex-direction:column;align-items:stretch}
.sh-f .btn{justify-content:center}
.dock .sh-b{flex:1;overflow-y:auto;min-height:0}

/* buttons */













.lnk{color:var(--foreground);font:500 12px var(--font-sans);text-decoration:none;white-space:nowrap}
.lnk:hover{text-decoration:underline}
.lnk.mute{color:var(--muted-foreground)}
.info{width:16px;height:16px;border:1px solid var(--border-strong);background:transparent;color:var(--muted-foreground);font:500 12px var(--font-sans);display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;flex:none}
.info:hover{border-color:var(--ring);color:var(--foreground)}

.seg .segl{height:32px;border:0;border-right:1px solid var(--border);background:transparent;color:var(--muted-foreground);font:500 12px var(--font-sans);padding:0 12px;cursor:pointer}
.seg>:last-child{border-right:0}

.chip{height:32px;display:inline-flex;align-items:center;gap:8px;padding:0 12px;border:1px solid var(--border-strong);font:500 12px var(--font-sans);color:var(--muted-foreground);background:none}
.chip.on{border-color:var(--ring);color:var(--foreground);background:var(--neutral-soft)}
.tabs{gap:0}
.tab{font:500 12px var(--font-sans);}
.tab.on{color:var(--foreground);box-shadow:inset 0 -2px 0 var(--ring)}
/* pills · status */






.dl{font:500 12px var(--font-sans);white-space:nowrap}
.badge{font:500 12px var(--font-sans);}

/* fields */






/* grids & tables */
.g1{display:grid;gap:1px;background:var(--border);border:1px solid var(--border)}
.cell{padding:16px 18px}
.frame::before,.frame::after{display:none}
.tbl th{font:400 12px var(--font-sans);padding:10px 12px}
.tbl td{padding:11px 12px;font:400 14px var(--font-sans)}
.tbl td.num,.tbl .num{font:400 14px var(--font-sans)}
.banner{border:1px solid var(--border-strong);background:transparent;padding:12px 16px;font:400 14px var(--font-sans)}
.banner.loss-soft{border-color:color-mix(in oklch,var(--neg) 50%,transparent);background:var(--neg-soft)}
.banner.warn-soft{border-color:color-mix(in oklch,var(--warn) 50%,transparent);background:var(--warn-soft)}
.banner .mono:first-child{font:400 12px var(--font-sans);}

/* dashboard widgets · .wg */
.grid12{gap:1px}
.wd{padding:16px 18px}


.wd-b{padding:0;display:flex;flex-direction:column}
.wd.h-S{min-height:150px} .wd.h-M{min-height:330px} .wd.h-L{min-height:470px}
.desig{font:600 32px/1 var(--font-sans);white-space:nowrap}
.d20{font-size:20px}
.desig.d20{font-weight:600;letter-spacing:-.01em;font-variant-numeric:proportional-nums}   /* FIX v9.8 · numbers at 20 / 26px are card numbers: no 900 */
.w-num{display:flex;flex-direction:column;flex:1}
.w-num .w-v{font:600 32px/1 var(--font-sans);margin:0}
.w-num .w-d{margin-top:10px}
.w-num .spark-wrap{margin-top:auto;padding-top:14px}





.pbar{position:relative;height:8px;min-width:60px}
.pbar.t6{height:6px}
.pbar i{position:absolute;top:0;bottom:0}
.pbar .pt{top:-3px;bottom:-3px;width:1px;background:var(--foreground)}






/* ledger ladder · .lad */
.lad{border:1px solid var(--border);display:grid}
.lr{display:grid;grid-template-columns:118px 100px minmax(0,1fr) 64px;align-items:center;gap:0 14px;padding:0 16px;height:34px;border-bottom:1px solid var(--border);position:relative;cursor:pointer}
.lad.plan .lr{grid-template-columns:118px 100px minmax(0,1fr) 64px 64px}
.lr:last-child{border-bottom:0}
.lr.t{height:38px}
.lr.h{height:26px;cursor:default}
.lr:not(.h):hover{background:oklch(1 0 0 / 5%)}
.lr .n{font:400 14px var(--font-sans);color:var(--muted-foreground)} .lr.t .n{font:600 14px var(--font-sans);color:var(--foreground)}
.lr .e{font:500 12px var(--font-sans);text-align:right;color:var(--muted-foreground)} .lr.t .e{font-size:14px;color:var(--foreground)}
.lr .p{font:500 12px var(--font-sans);text-align:right;color:var(--muted-foreground)}
.lr .trk{position:relative;height:100%}
.trk .gl{position:absolute;top:0;bottom:0;width:1px;background:var(--border)}
.trk .z{position:absolute;top:0;bottom:0;width:1px;background:var(--border-strong)}
.trk .bt{position:absolute;top:11px;bottom:11px}
.trk .bd{position:absolute;top:12px;bottom:12px;min-width:3px;border:1px solid var(--muted-foreground);background:repeating-linear-gradient(45deg,oklch(1 0 0 / 55%) 0 1px,transparent 1px 4px);box-sizing:border-box}
.trk .brk2{position:absolute;top:50%;transform:translateY(-50%);font:600 12px var(--font-sans);color:var(--foreground);background:var(--well);padding:0 3px}
.trk .note{position:absolute;left:0;top:50%;transform:translateY(-50%);font:400 12px var(--font-sans);white-space:nowrap}
.trk .ax{position:absolute;top:7px;font:400 12px var(--font-sans);color:var(--muted-foreground)}
.boot .trk .bt,.boot .trk .bd{animation:grow var(--dur-3) var(--ease-out) both;transform-origin:left}

/* P&L · instrument rows */
.prow{display:grid;grid-template-columns:36px minmax(150px,1.2fr) minmax(120px,1fr) minmax(190px,1.6fr) minmax(140px,1.1fr) minmax(130px,1fr) 72px 16px;align-items:center;gap:0 18px;padding:18px 20px;background:var(--well);width:100%;border:0;color:inherit;text-align:left;font:inherit;cursor:pointer}
.prow:hover{background:oklch(1 0 0 / 4%)}
.prow.static{cursor:default}
.prow .pc-n{font:600 12px var(--font-sans);color:var(--muted-foreground)}
.prow .pc-l{font:400 12px var(--font-sans);color:var(--muted-foreground);opacity:.75;margin-top:5px}

.prow .rb{height:2px;background:var(--border-strong);position:relative;margin-top:6px} .prow .rb i{position:absolute;left:0;top:0;bottom:0}
.plines{background:var(--well);padding:0 20px 14px 20px}
.pline{display:grid;grid-template-columns:minmax(150px,1.2fr) repeat(4,minmax(100px,1fr)) 70px;gap:0 18px;align-items:center;padding:9px 0 9px 16px;border-bottom:1px solid var(--border);cursor:pointer}
.pline:hover{background:oklch(1 0 0 / 4%)}
.pline.h{cursor:default;padding-top:4px}
.pline .r{text-align:right}

/* month overview · dept rows */
.drow{display:grid;grid-template-columns:18px minmax(160px,1.3fr) minmax(110px,.9fr) minmax(100px,.8fr) 56px minmax(130px,1fr) 120px 70px;gap:0 12px;align-items:center;padding:12px 16px;background:var(--well)}
.drow.h{padding:10px 16px}
.drow.sel{outline:2px solid var(--ring);outline-offset:-1px}
.drow.over{background:var(--neg-soft)}
.drow .dn{font:600 14px var(--font-sans)}

/* monthly input step */













.facts{display:grid;gap:1px;background:var(--border);border:1px solid var(--border)}
.facts>*{background:var(--well);min-width:0}
.fr{display:grid;grid-template-columns:minmax(0,1fr) 184px 104px 96px;gap:0 16px;align-items:center;padding:8px 16px;background:var(--well)}
.fr.plan{grid-template-columns:minmax(0,1fr) 184px 90px 150px 96px}
.fr.h{padding:10px 16px}
.fr.warn{background:var(--warn-soft)} .fr.err{background:var(--neg-soft)}
.fr .lab{font:500 12px var(--font-sans);color:var(--foreground)}
.fr .src{font:400 12px var(--font-sans);color:var(--muted-foreground);margin-top:5px}
.fr .src.pasted{color:var(--foreground)} .fr .src.copied{color:var(--warn)} .fr .src.empty{color:var(--muted-foreground)}
.fr .prev,.fr .chg{text-align:right;font:400 14px var(--font-sans);color:var(--muted-foreground)}
.fr .chg .dl{font-size:12px}
.fr .msgl{grid-column:2 / -1;padding-top:8px;display:flex;gap:14px;align-items:flex-start;font:400 12px/1.45 var(--font-sans)}
.fr .msgl .t{flex:1}
.fr.tot{background:var(--background);padding:12px 16px}
.fr.calc .lab{color:var(--muted-foreground)}

.addfield{width:100%;margin:0;border:1px dashed var(--border-strong);height:44px;background:var(--well)}
.stepfoot{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:20px;flex-wrap:wrap}


.chk-row{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--border);font:400 14px/1.45 var(--font-sans)}
.chk-row .g{font:500 12px var(--font-sans);width:12px;flex:none}

@media (max-width:1180px){ .dock{position:static;width:auto;margin-top:20px;backdrop-filter:none} .prow{grid-template-columns:36px minmax(130px,1fr) minmax(110px,1fr) minmax(190px,1.5fr) minmax(130px,1fr) 16px} .prow .hide-md{display:none} }
@media (max-width:900px){ .drow{grid-template-columns:18px minmax(140px,1fr) minmax(90px,.7fr) 120px 70px} .drow .hide-md{display:none} }
@media (max-width:760px){
 .ro:not(.keep){display:none} .ro.keep{display:flex}
  .fr,.fr.plan{grid-template-columns:1fr 1fr} .fr .msgl{grid-column:1/-1} .prow{grid-template-columns:36px 1fr 1fr;gap:10px} .prow>*:nth-child(3),.prow>*:nth-child(n+5){display:none}
  .drow{grid-template-columns:18px 1fr 90px} .drow>*:nth-child(n+4):not(.keep){display:none} .lr{grid-template-columns:90px 80px minmax(0,1fr) 52px;padding:0 10px;gap:0 8px}
  #sheet,.dock{left:16px;right:16px;width:auto;top:80px}
}

/* fixes after screenshot pass */


.boot .ln{stroke-dasharray:2000;stroke-dashoffset:0;animation:draw2 var(--dur-4) var(--ease-out) var(--dur-2) both}
@keyframes draw2{from{stroke-dashoffset:2000}to{stroke-dashoffset:0}}
.sh-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.dock .sh-f{gap:10px}
.chart .ax{font-size:12px}

/* auth + wizard per SignIn6 / WhoB2C6 */
.auth-wrap{background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:120px 120px;background-position:center;position:relative}
.auth-card{border:0;background:transparent;width:min(360px,100%);padding:0;gap:22px;align-items:stretch;text-align:center}



.auth-foot{display:flex;justify-content:center;gap:16px}
.auth-foot a,.auth-foot .lnk{background:none;border:0;cursor:pointer;padding:4px 2px;font:400 12px var(--font-sans);color:var(--muted-foreground)}
.auth-foot2{position:fixed;left:16px;bottom:16px;margin:0;font:400 12px var(--font-sans);color:var(--foreground)}  /* v8.4 · AA on the void (ink-2 gave 4.35:1) */
.auth-states{position:fixed;right:16px;bottom:16px;width:auto;max-width:520px;align-items:flex-end;opacity:.85}
.auth-states .tag{display:none}
.auth-state{text-align:left}
.wiz-top{height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--border)}
.wiz{max-width:1100px;padding:40px 32px 64px;margin:0}
.types .type{padding:22px 20px}
.type b{font:600 20px var(--font-sans);}
.type.sel{background:var(--neutral-soft);box-shadow:inset 0 0 0 1px var(--ring)}
.type.sel b{color:var(--foreground)}
.type ul.track{list-style:none;padding:0;margin:0;width:100%}
.type ul.track li{font:500 12px var(--font-sans);padding:7px 0;border-top:1px solid var(--border)}
.cb{width:16px;height:16px;border:1px solid var(--border-strong);display:inline-block}
.fr.plan{grid-template-columns:minmax(120px,1fr) 150px 76px minmax(120px,150px) 92px}
.fr .lab{overflow-wrap:anywhere}


@media (max-width:760px){ .prow{padding:14px 12px} .plines{padding:0 12px 12px} .pline{grid-template-columns:1fr 1fr;padding-left:0} .pline>*:nth-child(n+3){display:none} .lad{min-width:0} }







/* collapse toggle sits on top of the menu */



/* dashboard · customize */




.grid12.cz .wd{outline:1px dashed var(--border-strong);outline-offset:-4px;cursor:grab;transition:opacity var(--dur-1)}
.grid12.cz .wd .wd-b{pointer-events:none;user-select:none}




@media (prefers-reduced-motion:reduce){ .grid12.cz .wd{transition:none} }





.li.click:disabled{opacity:.4;cursor:not-allowed}
.banner.row{display:flex;gap:10px;align-items:flex-start} .banner.warn-soft.row>span:first-child{color:var(--warn)}

/* month overview rows must fit next to the review dock */
.drow{grid-template-columns:18px minmax(0,1.4fr) minmax(0,.9fr) minmax(0,.9fr) 52px minmax(0,1fr) 112px 64px;gap:0 10px}
.drow>*{min-width:0}
.drow>*:nth-child(2) b,.drow>*:nth-child(3) span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.has-dock .toast{right:404px}
@media (max-width:1180px){ body.has-dock .toast{right:16px} }
@media (max-width:900px){ .drow{grid-template-columns:18px minmax(0,1fr) minmax(0,.7fr) 112px 64px} }
@media (max-width:760px){ .drow{grid-template-columns:18px 1fr 90px} }

/* customize · width handle */
.grid12.cz .wd{position:relative}
.rsz{position:absolute;top:0;right:-7px;bottom:0;width:14px;cursor:ew-resize;z-index:3;display:flex;align-items:center;justify-content:center;touch-action:none;outline:none}
.rsz i{display:block;width:4px;height:44px;background:var(--border-strong);border-left:1px solid var(--muted-foreground);border-right:1px solid var(--muted-foreground);transition:background var(--dur-1)}
.rsz:hover i,.rsz:focus-visible i,.wd.resizing .rsz i{background:var(--pos);border-color:var(--muted-foreground)}
.rsz:focus-visible{box-shadow:0 0 0 3px var(--ring-focus)}

.wd.resizing{outline-color:var(--ring)!important}
body.is-resizing,body.is-resizing *{cursor:ew-resize!important;user-select:none}
@media (max-width:900px){ .rsz{display:none} }

/* step rows: always fit the column between step list and live panel */
.fr>*{min-width:0}
.fr.plan{grid-template-columns:minmax(96px,1fr) minmax(112px,150px) minmax(48px,70px) minmax(90px,130px) minmax(0,84px);gap:0 12px}
.fr .msgl{flex-wrap:wrap} .fr .msgl .t{min-width:180px} .fr .msgl .btn{flex:none}
.drow>*:nth-child(4){white-space:nowrap}
.fr.plan{grid-template-columns:minmax(96px,1fr) minmax(108px,150px) minmax(44px,70px) minmax(84px,130px) minmax(64px,92px)}
.fr .dl{white-space:normal;line-height:1.35}

/* toasts sit bottom-left of the work area, so they never cover right-aligned primary actions (Next, Submit, Save) */
.toast,body.sheet-open .toast,body.has-dock .toast{right:auto;left:272px;max-width:min(560px,calc(100vw - 300px))}
body.collapsed .toast{left:88px;max-width:min(560px,calc(100vw - 110px))}
body.auth .toast{left:16px}
@media (max-width:760px){ .toast,body.collapsed .toast,body.sheet-open .toast,body.has-dock .toast{left:16px;right:16px;max-width:none;bottom:16px} }
@media (max-width:760px){ .fr,.fr.plan{grid-template-columns:minmax(0,1fr) minmax(0,1fr)} .fr .msgl .t{min-width:0} }

/* period filter */

.pf{height:40px;display:flex;align-items:center;gap:8px;padding:0 12px;border:1px solid var(--border-strong);background:transparent;color:var(--foreground);font:600 12px var(--font-sans);cursor:pointer;white-space:nowrap}
.pf:hover:not(:disabled){border-color:var(--muted-foreground)}

.pf.on{border-color:var(--ring);background:var(--neutral-soft);color:var(--foreground)}
.pf:disabled{opacity:.45;cursor:not-allowed}
.pf[aria-expanded="true"]{border-color:var(--muted-foreground)}












@media (max-width:1180px){ .pf{padding:0;width:40px;justify-content:center} }

/* metric icons */
.wic{width:24px;height:24px;flex:none;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-strong);color:var(--muted-foreground)}
.wic.t-claim{color:var(--foreground);border-color:var(--ring)}
.wic.t-warn{color:var(--warn);border-color:color-mix(in oklch,var(--warn) 32%,transparent)}


@media (max-width:380px){ .pf{width:34px;height:34px} }


/* pill bars · small boxes (owner reference, 02 Oct 2026) */
.pills{width:100%}
.pills .pp{position:relative;display:flex}
.pills .ps{flex:1;position:relative;border-radius:4px}
.pills .ps.on{background:var(--muted)}
.pills .pb{position:absolute;left:50%;width:8px;margin-left:-4px;border-radius:4px;display:block}






.pills .pax{display:flex;border-top:1px solid var(--border);margin-top:8px}
.pills .pax span{flex:1;text-align:center;padding-top:6px;border-left:1px solid var(--border-strong);font:500 12px var(--font-sans);color:var(--muted-foreground)}
.pills .pax span:last-child{border-right:1px solid var(--border-strong)}
.pills .pax span.cur{color:var(--foreground);font-weight:600}
.pills.mini .pb{width:5px;margin-left:-2.5px;border-radius:2.5px}

.pills.mini .ps.on{background:var(--muted)}





/* budget table · status-tinted cells instead of bars (same thresholds as Budget utilization) */




.tbl.budget td{vertical-align:middle}





/* ===== iteration 7 · entities, builder, plan ===== */
.kd{font:500 12px var(--font-sans);display:inline-flex;gap:5px;align-items:center;white-space:nowrap;color:var(--muted-foreground);vertical-align:middle}
.kd.ind{color:var(--pos)}.kd.tech{color:var(--muted-foreground)}.kd.cost{color:var(--warn)}
.fml{font:400 12px var(--font-sans);color:var(--muted-foreground);line-height:1.5}
.fml b{color:var(--foreground);font-weight:500}
.dep{font:500 12px var(--font-sans);padding:2px 6px;border:1px solid var(--border-strong);color:var(--foreground);white-space:nowrap;display:inline-flex;gap:5px;align-items:center}
.dep.miss{border-color:color-mix(in oklch,var(--neg) 50%,transparent);color:var(--neg)} .dep.later{border-style:dashed;color:var(--muted-foreground)} .dep.skip{border-style:dashed;color:var(--muted-foreground);text-decoration:line-through}
.esel{height:30px;border:1px solid var(--border-strong);background:var(--background);color:var(--foreground);font:500 12px var(--font-sans);padding:0 22px 0 8px;width:100%;min-width:0;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted-foreground) 50%),linear-gradient(135deg,var(--muted-foreground) 50%,transparent 50%);background-position:calc(100% - 12px) 12px,calc(100% - 8px) 12px;background-size:4px 4px;background-repeat:no-repeat;cursor:pointer;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}
.esel:disabled{opacity:.5;cursor:default} .esel.ro{display:inline-flex;align-items:center;line-height:28px;border-style:dashed;color:var(--muted-foreground);background-image:none}
.etbl{border:1px solid var(--border)}
.er{display:grid;grid-template-columns:18px minmax(0,1.5fr) 112px 70px minmax(0,1.6fr) 148px 44px 22px;gap:0 10px;align-items:center;padding:9px 14px;background:var(--well);border-bottom:1px solid var(--border);position:relative}
.er.h{padding:8px 14px;background:var(--background)} .er:last-child{border-bottom:0}
.er .nm{font:600 14px var(--font-sans);color:var(--foreground);outline:none;min-width:0;display:inline-block}
.er .nm[contenteditable]:focus{box-shadow:0 1px 0 var(--pos)}
.er .nt{font-size:12px;color:var(--muted-foreground);margin-top:3px}
.er.off .nm{color:var(--muted-foreground);text-decoration:line-through} .er.off .esel,.er.off .kd,.er.off .fml,.er.off .tg{opacity:.4}
.er.w{background:var(--warn-soft)} .er.l{background:var(--neg-soft)}
.er .sub{grid-column:2 / -1;padding-top:8px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:12px;line-height:1.45}
.egh{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--background);border-bottom:1px solid var(--border)}
.x{width:22px;height:22px;border:0;background:none;color:var(--muted-foreground);font:400 15px var(--font-sans);cursor:pointer;padding:0;line-height:1} .x:hover{color:var(--neg)}
.cb{width:16px;height:16px;border:1px solid var(--border-strong);display:inline-flex;align-items:center;justify-content:center;font:600 12px var(--font-sans);color:var(--background);flex:none;background:none;padding:0;cursor:pointer} .cb.on{background:var(--ring);border-color:var(--ring)}
.tg{width:36px;height:20px;border:1px solid var(--border-strong);background:transparent;position:relative;padding:0;flex:none;cursor:pointer} .tg::after{content:"";position:absolute;left:3px;top:3px;width:12px;height:12px;background:var(--muted-foreground)} .tg.on{border-color:var(--ring);background:var(--neutral-soft)} .tg.on::after{left:19px;background:var(--ring)} .tg:disabled{opacity:.4;cursor:default}
.chk{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--border);font-size:14px;line-height:1.45;color:var(--foreground);align-items:flex-start} .chk .g{font:600 12px var(--font-sans);flex:none;width:14px;line-height:1.6} .chk.block .g{color:var(--neg)} .chk.warn .g{color:var(--warn)} .chk.info .g{color:var(--muted-foreground)}

/* builder */
.setup7{position:fixed;inset:0;background:var(--background);color:var(--foreground);z-index:60;overflow:hidden}
.setup7 .top{text-shadow:none}
.srail{position:absolute;left:0;top:64px;bottom:72px;width:232px;border-right:1px solid var(--border);background:var(--card);display:flex;flex-direction:column;z-index:20;overflow:auto}
.srow{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:0 10px;align-items:center;padding:9px 14px;border-bottom:1px solid var(--border);text-decoration:none;color:var(--foreground);position:relative}
.srow .g{font:500 12px var(--font-sans);text-align:center;color:var(--muted-foreground)} .srow .n{font:500 12px var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .srow .c{font:400 12px var(--font-sans);color:var(--muted-foreground);max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srow.cur{background:var(--neutral-soft)} .srow.cur::before{content:"";position:absolute;left:0;top:-1px;bottom:-1px;width:2px;background:var(--ring)} .srow.cur .n,.srow.cur .g{color:var(--foreground)} .srow.done .g{color:var(--pos)} .srow.skip .n{color:var(--muted-foreground);text-decoration:line-through} .srow.todo .n{color:var(--muted-foreground)} .srow.cur.todo .n,.srow.cur.skip .n{color:var(--foreground)}  /* v8.5 · the current step keeps its colour even when it is still to do (AA) */
.smain{position:absolute;left:232px;top:64px;right:0;bottom:72px;overflow:auto} .sbody{max-width:880px;margin:0 auto;padding:36px 24px 40px}
.bbar{position:absolute;left:232px;right:0;bottom:0;height:72px;border-top:1px solid var(--border);background:var(--card);backdrop-filter:blur(14px);display:flex;align-items:center;gap:10px;padding:0 40px;z-index:30}
.bbar .sp{flex:1}
.setup7 .desig{font-family:var(--font-sans);font-weight:600;line-height:1;outline:none}
.setup7 .facts{display:grid;gap:1px;background:var(--border);border:1px solid var(--border)} .setup7 .facts>*{background:var(--well);padding:16px 18px;min-width:0}
.setup7 .lad{display:grid;border:1px solid var(--border)} .setup7 .lr{display:grid;align-items:center;gap:0 14px;padding:0 12px;border-bottom:1px solid var(--border);position:relative} .setup7 .lr:last-child{border-bottom:0} .setup7 .trk{position:relative;height:100%} .setup7 .trk .z{position:absolute;top:0;bottom:0;width:1px;background:var(--border-strong)}
.setup7 .btn.disabled{opacity:.35;pointer-events:none}
.setup7 .msg{font-size:14px;line-height:1.55;color:var(--muted-foreground);padding:0;display:block}  /* v8.5 §5 · aligned with the title and the fields (the generic .msg padding moved it 12px right) */
@media (prefers-reduced-motion:no-preference){.stg>*{animation:fu var(--dur-4) var(--ease-out) both}.stg>*:nth-child(2){animation-delay:var(--dur-1)}.stg>*:nth-child(3){animation-delay:var(--dur-1)}.stg>*:nth-child(4){animation-delay:var(--dur-2)}.stg>*:nth-child(5){animation-delay:var(--dur-3)}@keyframes fu{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}}
/* plan */

.fr.calc .chg{white-space:normal}
.prev b{font-weight:500}
@media (max-width:1100px){.plan-grid{grid-template-columns:1fr!important}}
@media (max-width:900px){.er{grid-template-columns:18px minmax(0,1fr) 44px 22px}.er .esel,.er .eyebrow[style*="center"]{display:none}.srail{width:180px}.smain,.bbar{left:180px}}

.fr.plan7{grid-template-columns:minmax(0,1fr) 160px 150px 170px 110px}
@media (max-width:1100px){.fr.plan7{grid-template-columns:minmax(0,1fr) 130px 120px 130px 90px}}
@media (max-width:760px){.fr.plan7{grid-template-columns:minmax(0,1fr) minmax(0,1fr)} .fr.plan7 .prev,.fr.plan7 .eyebrow[style*='text-align:right']{display:none}}
.fr.plan7 .prev{white-space:nowrap}

@media (min-width:761px){.fr.calc,.facts .fr.calc{grid-template-columns:minmax(0,2.2fr) 150px 90px minmax(0,1.3fr)!important}}
.dgrid7{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(170px,1.2fr) 120px minmax(120px,1fr) 120px 120px 56px;gap:0 12px;min-width:900px}

.fr.calc .lab{text-transform:none;font:600 14px var(--font-sans);color:var(--foreground)}
.fr.calc .src{text-transform:none;}
/* builder overlay sits at z 60: sheets, toasts and menus must stay above it */
body:has(.setup7) #sheet{z-index:70;top:64px;background:var(--background)}
body:has(.setup7) .toast{z-index:75;left:248px}
body:has(.setup7) #pmenu{z-index:76}

/* fact step rows: keep line names on whole words */




.fy12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:4px;flex:1;min-width:0;max-width:640px}
.fy12 .chip{justify-content:center;padding:0 4px;min-width:0}
@media (max-width:760px){.fy12{grid-template-columns:repeat(6,minmax(0,1fr))}}

/* ---- iteration 8 · timeline from the project start: dashed rule where a calendar year starts ---- */
.tbl th.yb,.tbl td.yb{border-left:1px dashed var(--muted-foreground)!important}
.tbl th .yl{display:block;font:500 12px var(--font-sans);color:var(--muted-foreground);margin-top:2px}


.months-strip span.yb{border-left:1px dashed var(--muted-foreground)}


.qy{font:600 12px var(--font-sans);color:var(--muted-foreground);align-self:center;margin:0 2px 0 4px}
.qsep{width:0;height:24px;border-left:1px dashed var(--muted-foreground);margin:0 8px;align-self:center}

/* ---- iteration 8 · metric icons + money vs count inputs ---- */


.lab .mtc + .kd{margin-left:0}
/* money fields: currency tint + € mark; count fields: neutral + # mark */





.fr .fld[data-unit][readonly]{background-color:transparent}



body[data-cur="USD"] .fr .fld[data-unit="money"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3E$%3C/text%3E%3C/svg%3E")}
body[data-cur="GBP"] .fr .fld[data-unit="money"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3E%C2%A3%3C/text%3E%3C/svg%3E")}

/* ---- iteration 8 · expanded menu: full height, closed frame from the divider under Collapse to the bottom,
        on the same edges as the active item (owner, 05 Oct 2026) ---- */




.tbl td .mtc{width:18px;height:18px;margin-right:6px;vertical-align:-4px}
.tbl td .mtc svg{width:12px;height:12px}
/* ---- iteration 8 · Google sign-in button + photo avatars ---- */
.gsi-wrap{min-height:44px;display:flex;flex-direction:column;gap:10px;align-items:stretch}
.av{overflow:hidden}
.av img{display:block}

/* ---- FIX v7.1 A.1 · after an action: next step is a click ---- */
.after-bar{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-top:12px}
.dock .after-bar{justify-content:stretch;flex-direction:column}
.dock .after-bar .btn{width:100%;justify-content:center}

/* ---- FIX v7.1 A.3 · one column grid for every entity row (header · entered · calculated · total · closed) ----
   icon · name · value · fact-ref · plan-ref · vs/status; the value column is the same for all rows */
.erows{container:erows / inline-size;--row-cols:40px minmax(260px,1fr) 180px 190px 210px 120px}
.erows.closed{--row-cols:40px minmax(260px,1fr) 160px 200px}
.erows .fr.erow,.facts.erows .fr.erow.calc{display:grid;grid-template-columns:var(--row-cols)!important;column-gap:14px!important;row-gap:4px!important;align-items:center;padding:10px 16px 10px 8px}
.erows .fr.erow.full{grid-template-columns:1fr!important;padding-left:16px}
.erows .fr.erow.grp{background:var(--background)}
.erow .e-ic{grid-column:1;display:flex;align-items:center;justify-content:center;align-self:start;padding-top:2px}
.erow .e-ic .mtc{margin:0}
.erow .e-name{grid-column:2;min-width:0}
.erow .entity-value,.erow .e-v{grid-column:3;justify-self:stretch;text-align:right}
.erow .e-r1{grid-column:4;text-align:right} .erow .e-r2{grid-column:5;text-align:right} .erow .e-vs{grid-column:6;text-align:right}
.erows.closed .erow .e-vs{grid-column:4;text-align:left}
.erow .msgl{grid-column:2 / -1!important}
.erow .lab,.erow.calc .lab,.facts .fr.erow.calc .lab{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 6px;font:500 12px var(--font-sans)!important;!important;color:var(--foreground)}
.erow .e-g{display:inline-flex;justify-content:center;width:14px;flex:none}
.erow .e-g .kd{margin:0}
.erow .src{font:400 12px var(--font-sans);}
.erow.calc .src{text-transform:none}
.erow .entity-value{height:var(--control-h);width:100%;font-variant-numeric:tabular-nums}

.erow .tot-v{display:flex;align-items:center;justify-content:flex-end;padding:0 13px;font-size:14px}
.erow .ref{font:400 12px var(--font-sans);color:var(--muted-foreground);text-transform:none}
.erow .ref b{color:var(--foreground);font-weight:500}
.erow .e-st{grid-column:4 / -1;grid-row:2;text-align:right;line-height:1.6}
.erow .e-st .eyebrow{text-transform:none;}
.erow .e-st .lnk{font-size:inherit}
.erow .ref-l{display:none;color:var(--muted-foreground)}
@container erows (max-width:1100px){
  .erows .fr.erow:not(.full),.facts.erows .fr.erow.calc{grid-template-columns:40px minmax(0,1fr) 160px 120px!important}
  .erow .e-st{grid-column:2 / -1;grid-row:4;text-align:left}
  .erow .e-ic{grid-row:1 / span 3} .erow .e-name{grid-row:1} .erow .entity-value,.erow .e-v{grid-column:3;grid-row:1} .erow .e-vs{grid-column:4;grid-row:1}
  .erow .e-r1{grid-column:2;grid-row:2;text-align:left} .erow .e-r2{grid-column:2;grid-row:3;text-align:left}
  .erow.h .e-r1,.erow.h .e-r2{display:none}
  .erow .e-r1:empty,.erow .e-r2:empty{display:none}
  .erows.closed .erow .e-vs{grid-column:4}
  .erow .ref-l{display:inline}
}
@container erows (max-width:560px){
  .erows .fr.erow:not(.full),.facts.erows .fr.erow.calc,.erows.closed .fr.erow:not(.full){grid-template-columns:30px minmax(0,1fr) 124px!important;column-gap:10px!important}
  .erow .e-st{grid-row:5}
  .erow .e-vs,.erows.closed .erow .e-vs{grid-column:2 / -1;grid-row:4;text-align:left}
  .erow.h .e-vs{display:none}
}


/* ---- FIX v7.1 A.5 · dashboard widget opens its metric page ---- */
.wd[data-metric]{cursor:pointer;position:relative;transition:border-color var(--dur-1)}
.wd[data-metric]:hover,.wd[data-metric]:focus-visible{border-color:var(--border-strong)!important;outline:none}
.wd[data-metric]:focus-visible{box-shadow:0 0 0 3px var(--ring-focus) inset}
.wd[data-metric]::after{content:"OPEN ›";position:absolute;right:12px;bottom:10px;font:500 12px var(--font-sans);color:var(--muted-foreground);opacity:0;transition:opacity var(--dur-1);pointer-events:none}
.wd[data-metric]:hover::after,.wd[data-metric]:focus-visible::after{opacity:1;color:var(--foreground)}






.mtbl tr.cur td{background:var(--neutral-soft)}
.mtbl tr.sub td{font-size:12px;color:var(--muted-foreground)}
.mtbl td .mtc{width:18px;height:18px;margin-right:6px;vertical-align:-4px}


.mpage .mscroll{overflow-x:auto}


/* ---- FIX v7.2 A.1 · work screens centred on the window; the expanded menu is a panel over the content ---- */
:root{--content-max:1360px;--rail:40px;--gutter:32px;--page-pad:calc((100% - min(var(--content-max),100% - 2*(var(--rail) + var(--gutter))))/2)}



/* review dock: inside the page's right edge, the page keeps its box */

.dock{right:var(--page-pad)}
/* header: full width, its content on the edges of .page; the IBO key sits on the rail */



/* menu: collapsed rail of keys; expanded = panel over the content, nothing under it moves */


@keyframes menu-in{from{transform:translateX(-100%)}to{transform:none}}


.toast,body.collapsed .toast,body.sheet-open .toast,body.has-dock .toast{left:var(--page-pad);right:auto}
@media not all and (min-width:1100px){
  :root{--page-pad:72px}


  .dock{right:16px}
  .toast,body.collapsed .toast{left:72px}
}



/* ---- FIX v7.2 A.2 / A.3 · dashboard charts: fact clear, plan faint, forecast ---- */
.ftip{position:fixed;z-index:90;pointer-events:none;background:var(--card);border:1px solid var(--border-strong);padding:6px 10px;font:500 12px var(--font-sans);color:var(--foreground);white-space:nowrap;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}



/* =====================================================================
   FIX v7.4 · data components on tokens (app/ui-data.js renders them).
   Screens use the components and tokens only: no hex, shadows or gradients in scr-*.js.
   ===================================================================== */
:root{/* surfaces */
  --gap-panels:var(--gap);
  /* data text */
  /* FEATURE v8.5 §4a · entered vs calculated (derived from --claim / --ink; no new colours) */
  --entered-tile-bg:var(--row-group);
  /* data status */
  /* chart series: gradient from → to, glow */
}
/* a series group sets --g-* once; every part of a component reads them */
.sg-rev{--g-from:var(--chart-1);--g-to:var(--chart-1);--g-glow:var(--no-glow)}
.sg-profit{--g-from:var(--chart-1);--g-to:var(--chart-1);--g-glow:var(--no-glow)}
.sg-acq{--g-from:var(--chart-1);--g-to:var(--chart-1);--g-glow:var(--no-glow)}
.sg-cash{--g-from:var(--chart-1);--g-to:var(--chart-1);--g-glow:var(--no-glow)}
.sg-cost{--g-from:var(--chart-1);--g-to:var(--chart-1);--g-glow:var(--no-glow)}
.t-pos{--t-ink:var(--pos);--t-bg:var(--pos-soft)} .t-neg{--t-ink:var(--neg);--t-bg:var(--neg-soft)}
.t-neutral{--t-ink:var(--muted-foreground);--t-bg:var(--neutral-soft)} .t-caution{--t-ink:var(--warn);--t-bg:var(--warn-soft)}

/* Panel · every window of data */




.dpanel.link{cursor:pointer} .dpanel.link:hover{border-color:var(--border-strong)}
.dpanel.link:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
/* DashGrid · windows with the panel gap */
.dgrid,.grid12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--gap-panels)!important;align-items:start}
.dgrid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid12>.wd{padding:0!important;border:0!important;background:none!important;min-height:0!important;display:flex;flex-direction:column;min-width:0;position:relative}
.grid12>.wd>.dpanel{flex:1}
@media (max-width:1100px){ .grid12>.wd{grid-column:span 6!important} }
@media (max-width:760px){ .grid12>.wd,.dgrid.c3>*{grid-column:1 / -1!important} .dgrid.c3{grid-template-columns:1fr} }

/* StatusPill */


/* PlanMeter · 0–130 %, 100 % at 76.9 % */












/* KpiCard · Card.dc.html */








   /* FIX v9.8 · one style for the main number of every card */






















@keyframes sk{from{background-position:200% 0}to{background-position:-200% 0}}



/* KpiStat · value + comparison, no chart */
.kstat{box-sizing:border-box;min-width:0;padding:16px 18px;background:var(--card);border:1px solid var(--border-strong);box-shadow:var(--elev-1);display:flex;flex-direction:column;gap:10px;color:var(--foreground)}
.kstat.bare{padding:0;background:none;border:0;box-shadow:none}


.kstat .ks-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
.kstat .ks-plan{display:grid;grid-template-columns:auto minmax(60px,1fr) auto;gap:10px;align-items:center;font:500 12px var(--font-sans);color:var(--muted-foreground)}



/* TrendChart */
.tchart{display:block;overflow:visible}




.tchart .tc-last{fill:var(--g-to);stroke:var(--well,oklch(1 0 0 / 4%));stroke-width:2}
.tchart .tc-last.part{fill:var(--well,oklch(1 0 0 / 4%));stroke:var(--g-to)}





 .tchart .mpt{cursor:pointer} .tchart .mpt:focus{outline:none} .tchart .mpt:focus circle{stroke:var(--foreground,oklch(0.985 0 0));stroke-width:2}




@keyframes tc-draw{to{stroke-dashoffset:0}}

.hatchbar{background:repeating-linear-gradient(45deg,oklch(1 0 0 / 55%) 0 1px,transparent 1px 4px)}
.tc{color:var(--t-ink)}
/* Profit ladder · vs plan (Main.dc.html) */
.lp{display:flex;flex-direction:column}











/* Cumulative spend */
.cum-h{display:flex;justify-content:flex-end;font:500 12px var(--font-sans)}
.cum-m{display:grid;font:500 12px var(--font-sans);color:var(--muted-foreground);text-align:center}
.cum-m .cur{color:var(--foreground)}
.grid12.cz .wd{outline:none} .grid12.cz .wd>.dpanel{outline:1px dashed var(--border-strong);outline-offset:-4px}
.grid12 .wd .rsz{z-index:3}
.dpanel.h-M{min-height:330px} .dpanel.h-L{min-height:470px}
.dpanel .wd-b{display:flex;flex-direction:column;min-width:0}
.dpanel .info{margin:-4px 0}

/* metric page on panels */
.mpage{gap:var(--gap-panels)!important}






.dgrid.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:760px){ .dgrid.c2{grid-template-columns:1fr} }
.mleg{display:flex;gap:14px;align-items:center;} .mleg>span{display:flex;align-items:center;gap:6px}
.mleg i{display:inline-block;width:16px} .mleg .lf{height:3px;background:linear-gradient(90deg,var(--g-from),var(--g-to))} .mleg .lp{border-top:1.5px dashed var(--plan-line)} .mleg .lc{border-top:2px dotted var(--g-to)}




.dgrid.c4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){ .dgrid.c4{grid-template-columns:repeat(2,minmax(0,1fr))} }
/* legacy windows on the work screens read as panels: same surface, edge and elevation tokens */




.grid12{align-items:stretch!important}
.grid12{background:none!important;border:0!important}
@media (max-width:1100px){ .grid12>.wd.w-wide{grid-column:1 / -1!important} }
/* ---- debug pass 07 Oct ---- */

.drow.h .eyebrow{white-space:nowrap}
@media (max-width:1180px){ .prow .hide-md{display:none!important} }
@media (max-width:900px){ .er.h>span:nth-child(n+3):nth-child(-n+6){display:none} }


.facts.tri{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:760px){ .facts.tri{grid-template-columns:repeat(2,minmax(0,1fr))} .facts.tri .desig.d20{font-size:17px} }
.lad .lr>.p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:760px){ .lad .lr.h .trk .ax{display:none} }
.mpage .mscroll .tchart.large{min-width:680px}
/* =====================================================================
   FIX v7.5 · KpiCard strip, one PeriodControl, metric summary with air
   ===================================================================== */
:root{--stat-pad:24px 24px 22px; --stat-gap:12px; --stat-min-h:124px;}
/* the comparison strip grows with its tallest cell; the chart block takes what is left */

/* PeriodControl · [ ‹ | JUL 2027 | › ][ Month | Quarter | Half-year ] — header only, one per page */










/* KpiStat sm tile · lg lead */
.kstat.tile{padding:var(--stat-pad);gap:var(--stat-gap);min-height:var(--stat-min-h);justify-content:flex-start}
.kstat .ks-l{font:500 12px var(--font-sans);color:var(--muted-foreground)}
.kstat .ks-v{font:var(--num-hero);font-size:26px;line-height:1;letter-spacing:-.01em;font-variant-numeric:proportional-nums;white-space:nowrap;color:var(--foreground)}   /* FIX v9.8 */
.kstat .ks-m{font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground);overflow-wrap:anywhere}
.kstat .tv{color:var(--t-ink)}
.kstat .ks-m a{color:var(--foreground)}
.kstat.lg{gap:18px}



.kstat.lg .ks-lead{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.kstat.lg .ks-lr{display:flex;justify-content:space-between;gap:12px;font:400 12px var(--font-sans);color:var(--muted-foreground)}
/* metric summary · MetricPage.dc.html */








/* metric page header */
.mback{font:500 12px var(--font-sans);color:var(--muted-foreground);text-decoration:none;align-self:flex-start}
.mback:hover{color:var(--foreground)} .mback span{color:var(--muted-foreground);text-transform:none}







/* KpiStat in a grid anywhere: the same air */
.dgrid>.kstat:not(.bare){padding:var(--stat-pad);gap:var(--stat-gap);min-height:var(--stat-min-h)}
/* =====================================================================
   FIX v7.7 · Why it changed: horizontal cascade vs plan (WhyChanged.dc.html)
   ===================================================================== */
.dpanel.wc{padding:28px;gap:22px}
.wc-h{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap}
.wc-hl{display:flex;flex-direction:column;gap:6px;min-width:0}
.wc-t{font:500 12px var(--font-sans);color:var(--foreground)}
.wc-f{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.wc-tot{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.wc-tv{font:var(--num-hero);line-height:1;letter-spacing:-.01em;font-variant-numeric:proportional-nums;color:var(--t-ink)}

.wc-none{font:400 14px var(--font-sans);color:var(--muted-foreground);margin:0}
.wc-r{display:grid;grid-template-columns:200px minmax(0,1fr) 260px;column-gap:20px;align-items:center;min-height:52px;border-bottom:1px solid oklch(1 0 0 / 7%)}
.wc-r.last{border-bottom:0}
.wc-ax{min-height:0;padding-bottom:8px;border-bottom:1px solid var(--border);font:500 12px var(--font-sans);color:var(--muted-foreground)}
.wc-axs{display:flex;justify-content:space-between;}
.wc-rows{display:flex;flex-direction:column;gap:6px}
.wc-n{display:flex;flex-direction:column;gap:2px;min-width:0}
.wc-nm{display:flex;align-items:center;gap:8px;font:400 14px var(--font-sans);color:var(--foreground);min-width:0}
.wc-r.end .wc-nm{font-weight:600}
.wc-sub{font:400 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wc-b{position:relative;height:26px}
.wc-mid{position:absolute;left:0;right:0;top:12px;height:1px;background:oklch(1 0 0 / 7%)}
.wc-pm{position:absolute;top:0;bottom:0;width:1px;background:oklch(1 0 0 / 35%)}
.wc-cn{position:absolute;top:-20px;height:20px;width:0;border-left:1px dashed oklch(1 0 0 / 40%)}
.wc-bar{position:absolute;top:3px;bottom:3px;min-width:3px}
.wc-hatch{position:absolute;top:3px;bottom:3px;min-width:3px;background:repeating-linear-gradient(90deg,oklch(0 0 0 / 55%) 0 4px,transparent 4px 8px);background-size:16px 20px}
.wc-lab{position:absolute;top:4px;z-index:2;padding:0 5px;font:600 12px/18px var(--font-sans);color:var(--foreground);background:var(--card);white-space:nowrap;font-variant-numeric:tabular-nums}
.wc-d{text-align:right;display:flex;flex-direction:column;gap:2px;min-width:0}
.wc-dv{font:600 14px var(--font-sans);color:var(--foreground);font-variant-numeric:tabular-nums}
.wc-dd{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.wc-sum{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.wc-l{display:flex;gap:10px;align-items:baseline;font:400 14px/1.5 var(--font-sans)} .wc-l b{font-weight:600}
.wc-l.mute{color:var(--muted-foreground)}
.wc-ls{font:600 14px var(--font-sans);color:var(--t-ink,var(--muted-foreground));flex:none}
.wc-rec{font:400 12px var(--font-sans);color:var(--muted-foreground);margin-top:4px}
@media (max-width:1100px){ .wc-r{grid-template-columns:150px minmax(0,1fr) 170px;column-gap:14px} }
@media (max-width:760px){ .dpanel.wc{padding:20px} .wc-r{grid-template-columns:minmax(0,1fr) auto;row-gap:6px;padding:8px 0} .wc-r>.wc-b{grid-column:1 / -1;grid-row:2} .wc-ax>span:first-child,.wc-ax>span:last-child{display:none} .wc-ax{grid-template-columns:1fr} .wc-ax>.wc-axs{grid-column:1/-1;grid-row:1} }
/* =====================================================================
   FIX v7.6 · critical deviation: badge, pulsing edge, radar rings, running gap, bar rows
   only opacity, transform and box-shadow move; nothing touches layout
   ===================================================================== */

@keyframes kpi-ring{0%{transform:scale(1);opacity:.7}100%{transform:scale(3.6);opacity:0}}
@keyframes kpi-dot{0%,100%{opacity:1}50%{opacity:.25}}
@keyframes kpi-gap{to{stroke-dashoffset:-12}}
@keyframes crit-march{to{background-position:16px 0}}
@keyframes crit-tip{0%{transform:scaleY(1);opacity:1}100%{transform:scaleY(2.6);opacity:0}}
@keyframes crit-breathe{0%,100%{opacity:0}50%{opacity:1}}
/* badge · CRITICAL · 48% OFF PLAN */





/* card: last point, gap to plan, rings */
.tchart .tc-last.crit{fill:var(--neg,oklch(0.704 0.191 22.216))}
.tchart .tc-gap{stroke:var(--neg,oklch(0.704 0.191 22.216));stroke-width:1.5;stroke-dasharray:3 3}
.tchart .tc-pp{fill:var(--well,oklch(1 0 0 / 4%));stroke:var(--muted-foreground,oklch(0.708 0 0));stroke-width:1.2}
.tchart .tc-ring{fill:none;stroke:var(--neg,oklch(0.704 0.191 22.216));stroke-width:1.5;transform-box:fill-box;transform-origin:center;opacity:0}
/* bar rows */







[data-critical][data-dev]{position:relative}
[data-critical][data-dev]::before{content:"";position:absolute;inset:0;background:color-mix(in oklch,var(--neg) 7%,transparent);pointer-events:none;opacity:0}


@media (prefers-reduced-motion:no-preference){


  
  body:not(.motion-off):not(.motion-reduced) .mpage .tc-ring{animation:kpi-ring var(--dur-crit-ring) var(--ease-out) infinite backwards;animation-delay:calc(var(--dur-4) + var(--ci,0) * var(--stagger))}
  
  body:not(.motion-off):not(.motion-reduced) .mpage .tc-ring.r2{animation-delay:calc(var(--dur-4) + var(--ci,0) * var(--stagger) + var(--dur-crit-march))}
  
  body:not(.motion-off):not(.motion-reduced) .mpage .tc-gap{animation:kpi-gap var(--dur-crit-march) var(--ease-linear) infinite}
  
  body:not(.motion-off):not(.motion-reduced) [data-critical]:not(.still) .crit-gap{animation:crit-march var(--dur-crit-march) var(--ease-linear) infinite}

  body:not(.motion-off):not(.motion-reduced) [data-critical][data-dev]::before{animation:crit-breathe var(--dur-crit-glow) var(--ease-io) infinite;animation-delay:calc(var(--wi,0) * var(--stagger))}
}
/* still: reduced motion, motion off, or past the noise limit */

@media (prefers-reduced-motion:reduce){ .tchart .tc-ring{opacity:.35;transform:scale(2)} .tchart .tc-ring.r2{display:none} }
body.motion-off .tchart .tc-ring,body.motion-reduced .tchart .tc-ring{opacity:.35;transform:scale(2)}
body.motion-off .tchart .tc-ring.r2,body.motion-reduced .tchart .tc-ring.r2{display:none}

/* =====================================================================
   FIX v7.7 · clean side menu (Sidebar.dc.html): one border-right, no frames, no dividers, no brand block
   ===================================================================== */














/* collapsed rail: the same rule — one line, no key frames */









.wc-bar.f-plan{background:oklch(1 0 0 / 22%)}
.wc-bar.f-neg{background:linear-gradient(90deg,color-mix(in oklch,var(--neg) 45%,transparent),var(--neg))} .wc-bar.f-neg.glow{box-shadow:0 0 12px var(--crit-line)}
.wc-bar.f-pos{background:linear-gradient(90deg,var(--ring),var(--ring))}
.wc-bar.f-neutral{background:var(--muted-foreground)}
.wc-bar.f-fact{background:linear-gradient(90deg,var(--g-from),var(--g-to))} .wc-bar.f-fact.glow{box-shadow:0 0 12px var(--g-glow)}
.wc-lab.tv,.wc-dv.tv{color:var(--t-ink)}
/* =====================================================================
   FIX v7.8 §1 · PeriodControl: [ ‹ ][ JUL 2027 ][ › ][ Month | Quarter | Half-year ]
   equal 40px arrow cells, SVG chevrons centred on a grid, 1px --hair-2 between every cell
   ===================================================================== */















/* =====================================================================
   FIX v7.8 §2–3 · the dashboard style on every screen: UI kit (ui-kit.js)
   PageHeader · DataTable · Field · EmptyState · Notice · Sheet · EntityRow · overlays
   ===================================================================== */
:root{--content-max:1280px}
/* PageHeader */


.phead .ph-back:hover{color:var(--foreground)}




.phead .ph-t.case{text-transform:none;}





/* icons */
.ico{display:block;flex:none}
.xpd{display:inline-grid;place-items:center;width:24px;height:24px;padding:0;margin:0 4px 0 -4px;background:none;border:0;color:var(--muted-foreground);cursor:pointer;vertical-align:middle}
.xpd:hover{color:var(--foreground);background:var(--row-hover)} .xpd:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}
/* DataTable */
.dt-scroll{overflow-x:auto;min-width:0;scrollbar-width:thin}
table.dtable{width:100%;border-collapse:collapse;border:0;background:none}
table.dtable th{font:500 12px var(--font-sans);color:var(--muted-foreground);text-align:left;padding:0 12px 10px;border:0;border-bottom:1px solid var(--border);white-space:nowrap;background:none;vertical-align:bottom}
table.dtable td{padding:12px;height:44px;box-sizing:border-box;border:0;border-bottom:1px solid var(--border);font:400 14px/1.4 var(--font-sans);vertical-align:middle;color:var(--foreground)}
table.dtable tbody tr:last-child td{border-bottom:0}
table.dtable tbody tr:hover td{background-color:var(--row-hover)}
table.dtable td.r,table.dtable th.r{text-align:right}
table.dtable td.num,table.dtable .num{font:400 14px var(--font-sans);font-variant-numeric:tabular-nums;white-space:nowrap}
table.dtable tr.grp td,table.dtable tr.cat td{background:var(--row-group)}
table.dtable tr.grp td{font:500 12px var(--font-sans);color:var(--muted-foreground);height:auto;padding:10px 12px}
table.dtable tr.grand td,table.dtable tfoot td{font-family:var(--font-sans);font-weight:600;border-top:1px solid var(--border-strong)}
table.dtable tr.tot td{font-weight:600}
table.dtable tr.tot td.num{font-weight:500}
table.dtable td.cur,table.dtable th.cur{background:var(--neutral-soft)}
table.dtable .fy{border-left:1px solid var(--border)}
table.dtable.year td,table.dtable.year th{padding:10px;height:40px;font-size:12px}
table.dtable.year td:first-child,table.dtable.year th:first-child{background:var(--well)}
table.dtable tr.sub td{height:36px;padding-top:8px;padding-bottom:8px;color:var(--muted-foreground)}
.dt-grid{display:flex;flex-direction:column;min-width:0}
.dt-grid>.drow,.dt-grid>.dt-r{border:0;border-bottom:1px solid var(--border);background:none;min-height:44px;box-sizing:border-box}
.dt-grid>.drow:last-child,.dt-grid>.dt-r:last-child{border-bottom:0}
.dt-grid>.drow:not(.h):hover,.dt-grid>.dt-r:not(.h):hover{background:var(--row-hover)}
.dt-grid>.drow.h,.dt-grid>.dt-r.h{border-bottom:1px solid var(--border);min-height:0;padding-top:0;padding-bottom:10px}
.dt-grid>.drow.sel{background:var(--row-hover);box-shadow:none;outline:0}
.dt-grid>.drow.over{background:color-mix(in oklch,var(--neg) 5%,transparent)}
/* Field */
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field.inline{flex-direction:row;align-items:center;gap:10px}
.field .f-l,.lbl{font:500 12px var(--font-sans);color:var(--muted-foreground)}
.field .f-h{font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground)}
#sheet .fld.left,.dock .fld.left,#sheet select.fld{box-sizing:border-box;width:100%;height:40px;padding:0 12px;background:var(--well);border:1px solid var(--border-strong);color:var(--foreground);font:400 14px var(--font-sans);text-align:left;}
textarea.fctl,#sheet textarea.fld,.dock textarea.fld{height:auto;min-height:72px;padding:10px 12px;resize:vertical;line-height:1.5}
#sheet .fld:focus,.dock .fld:focus{outline:none;border-color:var(--muted-foreground)}


/* EmptyState */
.dpanel.es{padding:0}
.empty-st{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:48px 24px}
.empty-st .es-t{margin:0;font:600 22px/1.15 var(--font-sans);color:var(--foreground)}
.empty-st .es-p{margin:0;max-width:520px;font:400 14px/1.55 var(--font-sans);color:var(--muted-foreground)}
.empty-st .es-a{margin-top:8px;display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
/* Notice: a Panel with a status line */
.dpanel.notice{flex-direction:row;align-items:center;gap:16px;padding:16px 20px;flex-wrap:wrap}
.notice .nt-l{display:inline-flex;align-items:center;gap:8px;font:600 12px var(--font-sans);color:var(--t-ink);white-space:nowrap}

.notice .nt-t{flex:1 1 320px;font:400 14px/1.5 var(--font-sans);color:var(--foreground);min-width:0}
.notice .nt-a{display:flex;gap:10px;flex-wrap:wrap}
/* key / value */
.kvl{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;gap:10px 20px;margin:0;align-items:baseline}
.kvl dt{font:500 12px var(--font-sans);color:var(--muted-foreground)}
.kvl dd{margin:0;font:400 14px/1.5 var(--font-sans);color:var(--foreground);min-width:0}
@media (max-width:760px){ .kvl{grid-template-columns:1fr;gap:4px} .kvl dd{margin-bottom:8px} }
/* legacy windows become Panels and DashGrids (no seams, no frame in a frame) */




#sheet .list>.li,.dock .list>.li{border-bottom:1px solid var(--border)}



/* Sheet: the right sheet and the review dock */
#sheet{top:64px!important;right:0!important;bottom:0!important;left:auto!important;width:var(--sheet-w)!important;background:var(--card)!important;border:0!important;border-left:1px solid var(--border-strong)!important;box-shadow:var(--elev-left)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;z-index:70}
.dock{background:var(--card)!important;border:1px solid var(--border-strong)!important;box-shadow:var(--elev-1)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
#sheet .sh-h,.dock .sh-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;border-bottom:1px solid var(--border)}
#sheet .sh-f,.dock .sh-f{border-top:1px solid var(--border)}
.scrim{position:fixed;left:0;right:0;top:64px;bottom:0;background:var(--scrim);z-index:65;border:0;padding:0;margin:0;cursor:default}
.scrim[hidden]{display:none}
@media (max-width:760px){ #sheet{width:100%!important;left:0!important} }
/* overlays: toasts, notifications, profile menu */

/* EntityRow: dashed fields only for values the person can edit; closed and read-only values are plain text */
.erow .entity-value.ro,.erow .calcv{border:0!important;background-color:transparent!important;box-shadow:none!important}
/* status badges are StatusPills everywhere: filled with the tone, no frame */



/* KpiStat strip in one Panel: cells split by 1px --edge-soft lines only */



.statgrid{display:grid;grid-template-columns:repeat(var(--n,4),minmax(0,1fr));gap:1px;background:var(--border);border-top:1px solid var(--border)}
.statgrid>*{background:var(--well);min-width:0}
.statgrid>.kstat{padding:var(--stat-pad);gap:var(--stat-gap);min-height:var(--stat-min-h)}
@media (max-width:1100px){ .statgrid{grid-template-columns:repeat(min(var(--n,4),3),minmax(0,1fr))} }
@media (max-width:720px){ .statgrid{grid-template-columns:repeat(2,minmax(0,1fr))} }
.sh-line{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border)}
.sh-line:last-child{border-bottom:0}
.vsf{display:flex;flex-direction:column;gap:6px;min-width:0}
.vsf .vsf-l{font:500 12px var(--font-sans);color:var(--t-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dp-foot{margin:0;font-size:12px}

/* segments everywhere look like the PeriodControl segments */

.seg .segl{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font:600 12px var(--font-sans);padding:0 14px;color:var(--muted-foreground)}
.seg button:hover:not(:disabled):not([aria-pressed="true"]),.seg .segl:hover{color:var(--foreground)}

/* EntityRow in a Panel: rows split by lines only, no frame, no seams */
.dpanel .facts.erows,.dpanel .facts{background:none!important;border:0!important;box-shadow:none!important;gap:0!important;padding:0}
.dpanel .facts>.fr,.dpanel .facts>.erow{background:none;border-bottom:1px solid var(--border);padding-left:0;padding-right:0}
.dpanel .facts>.fr:last-child{border-bottom:0}
.dpanel .facts>.fr.h{border-bottom:1px solid var(--border)}
.dpanel .facts>.fr.h.full{background:var(--row-group);padding:10px 12px;margin-top:8px;border-bottom:0}
.dpanel .facts>.fr.err{background:color-mix(in oklch,var(--neg) 6%,transparent)} .dpanel .facts>.fr.warn{background:color-mix(in oklch,var(--warn) 6%,transparent)}
.dpanel .facts>.fr.tot{background:none;border-top:1px solid var(--border-strong);border-bottom:0}
input.fld[readonly],input.fld[readonly]:focus{border-color:transparent!important;background-color:transparent!important;outline:none;cursor:default;box-shadow:none}
.dpanel .ptools{padding-bottom:4px}
.dpanel .stepfoot{margin-top:4px;padding-top:16px;border-top:1px solid var(--border)}
.ycell{display:flex;flex-direction:column;align-items:stretch;gap:5px;min-width:64px}


table.dtable.year th{font-size:12px}
table.dtable.year td:first-child,table.dtable.year th:first-child{background:var(--card)}
.dpanel .stepfoot+*{margin-top:0}
.sh-row{padding:8px 0;border-bottom:1px solid var(--border)} .sh-row:last-child{border-bottom:0}
.na-line{height:8px;border-top:1px dashed var(--border-strong);margin-top:4px}
/* quiet notes inside a Panel or a Sheet: no frame, a faint fill */
.dpanel .banner,#sheet .banner,.dock .banner{border:0!important;background:var(--row-group)!important;padding:12px 14px}
/* step page: list Panel + step column */








.dgrid.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:900px){ .dgrid.c2{grid-template-columns:1fr} }
.sh-row.dec{display:flex;gap:14px;align-items:flex-start;padding:12px 0}
.sh-row.dec.warn{background:none}
/* the live result Sheet: cells split by lines, no frame in the frame */



.statgrid>.kstat.bare,.statgrid>.kstat{background:var(--well)}
.hbar .hb-n{font:500 12px var(--font-sans);}
.hbar .hb-t{background:var(--border)!important;height:10px}
.hbar .hb-f{background:linear-gradient(90deg,var(--chart-1),var(--chart-1));height:100%}
.hbar .hb-f.first{background:var(--muted-foreground)}
/* P&L categories: a grid DataTable; the subtotal is a KpiStat in the row */
.pcats>.prow{width:100%;background:none;border:0;border-bottom:1px solid var(--border);text-align:left;color:var(--foreground)}
.pcats>.prow:last-child{border-bottom:0}
.pcats>.prow:hover{background:var(--row-hover)}


.pcats .pc-x{display:flex;justify-content:flex-end;color:var(--muted-foreground)}
.pcats>.plines{border-bottom:1px solid var(--border);background:var(--row-group)}
/* Alerts */
.dtable .rn{font:600 12px var(--font-sans);}

/* Metrics library: Panels in an auto-fit grid */











/* Settings: one column of Panels up to 760px */

.fgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px}
@media (max-width:720px){ .fgrid{grid-template-columns:1fr} }
.frow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 16px;padding-bottom:16px;border-bottom:1px solid var(--border);margin-bottom:4px}
@media (max-width:900px){ .frow{grid-template-columns:repeat(2,minmax(0,1fr))} }
select.fctl:disabled{color:var(--muted-foreground);cursor:default}
select.fctl{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted-foreground) 50%),linear-gradient(135deg,var(--muted-foreground) 50%,transparent 50%);background-position:calc(100% - 16px) 17px,calc(100% - 11px) 17px;background-size:5px 5px;background-repeat:no-repeat;padding-right:30px}
/* role matrix: segments in the PeriodControl style */
.rseg .mcell{min-width:72px;height:30px;border:0;background:transparent;color:var(--muted-foreground);font:600 12px var(--font-sans);cursor:pointer}
.rseg .mcell+.mcell{border-left:1px solid var(--border-strong)}
.dpanel .opt{width:100%}


.sh-box{padding:12px;background:var(--row-group)}
.dpanel .etbl{border:0!important;background:none!important}
.dt-grid>.dgrid7.dt-r{padding:11px 0}
.dt-grid>.dgrid7.dt-r.h{padding:0 0 10px}


.erow .esel.ro,.etbl .esel.ro,span.esel.ro{border-color:transparent!important;background:none!important;padding-left:0}

.phead .ph-tl .ph-t{margin:0}




.phead .ph-back span{color:var(--muted-foreground);text-transform:none}
/* setup wizard on the kit: Panels, Fields, the centre column up to 880px, --void with grain */
.setup7{background:var(--background)}
.setup7 .stop{position:absolute;left:0;right:0;top:0;height:64px;display:flex;align-items:center;gap:18px;padding:0 24px;border-bottom:1px solid var(--border)}
.setup7 .skey{width:40px;height:40px;border:1px solid var(--border-strong);display:flex;align-items:center;justify-content:center;font:600 12px var(--font-sans);}
.setup7 .sbody{max-width:880px;margin-inline:auto}
.setup7 .lvbar{position:absolute;left:0;top:12px;bottom:12px;border:1px solid var(--muted-foreground)}
.setup7 .dt-r.rv-r,.setup7 .dt-r.rs-r{display:grid;align-items:center;gap:0 12px;padding:11px 0;border-bottom:1px solid var(--border)}
.setup7 .dt-r.rv-r{grid-template-columns:24px 160px 120px minmax(0,1fr) 50px}
.setup7 .dt-r.rv-r.open{background:var(--row-hover)}
.setup7 .dt-r.rv-sub{padding:7px 0 7px 36px;gap:12px;border-bottom:1px solid var(--border)}
.setup7 .dt-r.rv-skip{padding:11px 0;gap:14px;color:var(--muted-foreground);border-bottom:1px solid var(--border)}
.setup7 .dt-r.rs-r{grid-template-columns:minmax(170px,1.1fr) 90px 330px minmax(0,1fr);gap:0 14px;padding:12px 0}
.setup7 .dt-r.rs-r.h{padding:0 0 10px;border-bottom:1px solid var(--border)}
.setup7 .dt-r:last-child{border-bottom:0}
.setup7 .dgrid.rvgrid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--gap-panels);align-items:start;margin-top:24px}
@media (max-width:900px){ .setup7 .dgrid.rvgrid{grid-template-columns:1fr} }
.setup7 .dgrid.c2{display:grid;gap:var(--gap-panels)}
.statgrid.rvstat>div{padding:16px 18px}
a.dpanel.nextp{display:flex;padding:26px 24px;text-decoration:none;color:inherit}
a.dpanel.nextp>div:nth-child(2){font:600 22px var(--font-sans);}
.fml.tok{flex:1;border:1px dashed var(--border-strong);padding:8px 10px}
.fml.tok.on{color:var(--foreground);border:1px solid var(--ring);word-break:break-all}
pre.fml.code{margin:6px 0 0;padding:10px 12px;border:1px solid var(--border);color:var(--foreground);white-space:pre-wrap}
.dpanel .facts>.fr.erow,.dpanel .facts.erows>.fr.erow.calc,.dpanel .facts.erows>.fr.erow{padding-left:0!important;padding-right:0!important}
.dt-scroll>.dt-grid.dg7{min-width:900px}
@media (max-width:520px){ .statgrid{grid-template-columns:1fr} }
.auth-card.dpanel{width:min(440px,100%);padding:32px 28px;gap:20px}
.auth-card.dpanel .list .li{border-bottom:1px solid var(--border)}
.auth-card.dpanel .list .li:last-child{border-bottom:0}

/* =====================================================================
   FIX v7.9 · pinned sheet frame · ActionRow / ActionState · WidgetLibrarySheet · metric header
   ===================================================================== */
:root{--act-w:80px}
/* §3.3 every sheet and dock: header and footer pinned and opaque, only the middle scrolls */
#sheet .sh-h,#sheet .sh-f,.dock .sh-h,.dock .sh-f{flex:none;background:var(--card);position:relative;z-index:1}
#sheet .sh-b,.dock .sh-b{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}
/* §3.1 ActionRow: icon 32 | text 1fr | action 80 */
.arow{display:grid;grid-template-columns:32px minmax(0,1fr) var(--act-w);column-gap:12px;align-items:center;min-height:56px;padding:8px 0;border-bottom:1px solid var(--border);color:var(--foreground);text-decoration:none;box-sizing:content-box}
.arow.no-ic{grid-template-columns:minmax(0,1fr) var(--act-w)}
.arow[hidden]{display:none}
.ar-ic{width:32px;height:32px;box-sizing:border-box;display:grid;place-items:center;border:1px solid var(--border-strong);color:var(--muted-foreground)}
.ar-ic svg{width:16px;height:16px;display:block}
.ar-tx{min-width:0;display:flex;flex-direction:column;gap:2px}
.ar-t{font:600 14px/normal var(--font-sans);text-transform:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ar-d{font:400 12px/normal var(--font-sans);color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ar-a{display:flex;justify-content:flex-end;align-items:center;min-width:0;width:var(--act-w)}
/* §3.2 ActionState: one width, one line */
.act-st{width:var(--act-w);height:32px;box-sizing:border-box;padding:0;flex:none;font:600 12px var(--font-sans);white-space:nowrap;cursor:pointer;background:transparent;color:var(--foreground);display:inline-flex;align-items:center;justify-content:center;overflow:hidden}
.act-st.add{border:1px solid var(--border-strong)}
.act-st.add:hover{background:oklch(1 0 0 / 6%)}
.act-st.on{border:0;color:var(--foreground);justify-content:flex-end;}
.act-st.on .as-2{display:none;color:var(--neg)}
.act-st.on:hover .as-1,.act-st.on:focus-visible .as-1{display:none}
.act-st.on:hover .as-2,.act-st.on:focus-visible .as-2{display:inline}
.act-st:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
/* WidgetLibrarySheet */
#sheet.sheet-wl{padding:0}
.wls{display:flex;flex-direction:column;height:100%;min-height:0;color:var(--foreground)}
#sheet .wls>.wl-h{padding:20px 24px 16px;display:flex;flex-direction:column;align-items:stretch;gap:14px;justify-content:flex-start}
.wl-tr{display:flex;justify-content:space-between;align-items:center;gap:12px}
#sheet .wl-t{margin:0;font:600 15px/normal var(--font-sans);}
.wl-x{width:36px;height:36px;display:grid;place-items:center;background:transparent;border:1px solid var(--border-strong);color:var(--foreground);cursor:pointer;padding:0;flex:none}
.wl-x:hover{background:oklch(1 0 0 / 6%)}
.wl-s{display:flex;align-items:center;gap:10px;height:36px;padding:0 12px;box-sizing:content-box;background:var(--well);border:1px solid var(--border-strong);color:var(--muted-foreground)}
.wl-s:focus-within{border-color:var(--muted-foreground)}
.wl-s input{flex:1;min-width:0;height:100%;background:transparent;border:0;outline:none;color:var(--foreground);font:400 14px var(--font-sans);padding:0}
.wl-s input::-webkit-search-cancel-button{filter:invert(.6)}
.wl-c{font:500 12px/normal var(--font-sans);color:var(--muted-foreground)}
#sheet .wls>.wl-l{padding:0 24px 16px;display:block;gap:0}
.wl-g[hidden]{display:none}
.wl-gl{margin:0;padding:18px 0 6px;font:500 12px/normal var(--font-sans);color:var(--muted-foreground)}
.wl-none{font:400 12px var(--font-sans);color:var(--muted-foreground);padding:18px 0}
#sheet .wls>.wl-f{padding:16px 24px;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:12px}
.wl-hint{font:400 12px/normal var(--font-sans);color:var(--muted-foreground);min-width:0}
.wl-f .btn.primary{height:38px;padding:0 18px;flex:none;font:600 12px var(--font-sans);}
/* §2 metric header: one left column, actions at the bottom right, nothing centred */







/* summary tiles: meta at most two lines, top-aligned, equal row heights */



.t-series{--t-ink:var(--g-to,var(--foreground))}
/* §3.1–3.2 · list rows with an action: the last grid column is the action column (80), the action never wraps */
.act-l{display:inline-flex;justify-content:flex-end;align-items:center;width:var(--act-w);max-width:100%;white-space:nowrap;text-align:right;justify-self:end;background:none;border:0;cursor:pointer;padding:0;box-sizing:border-box}
.drow{grid-template-columns:18px minmax(0,1.4fr) minmax(0,.9fr) minmax(0,.9fr) 52px minmax(0,1fr) 112px var(--act-w)}

@media (max-width:900px){ .drow{grid-template-columns:18px minmax(0,1fr) minmax(0,.7fr) 112px var(--act-w)} }
@media (max-width:760px){ .drow{grid-template-columns:18px 1fr var(--act-w)} }
.dgrid7{grid-template-columns:minmax(150px,1.2fr) minmax(170px,1.2fr) 120px minmax(120px,1fr) 120px 120px var(--act-w)}
table.dtable td.act,table.dtable th.act{box-sizing:content-box;width:var(--act-w);min-width:var(--act-w);white-space:nowrap;text-align:right}
.sr{display:inline-block;width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;vertical-align:top}
table.dtable td.act .btn.sm,table.dtable td.act .tag{min-width:64px;justify-content:center;display:inline-flex}
table.dtable td.act.act-i,table.dtable th.act.act-i{width:34px;min-width:34px}
table.dtable td.act>*{vertical-align:middle}
.ucell{display:flex;flex-wrap:nowrap;align-items:center;gap:12px;min-width:0}
.ucell>span{min-width:0}
table.dtable td.nw{white-space:nowrap}
table.dtable th.act{box-sizing:border-box;width:calc(var(--act-w) + 24px);min-width:calc(var(--act-w) + 24px)}
table.dtable th.act.act-i{width:58px;min-width:58px}
/* =====================================================================
   FIX v8.1 / v8.2 · per day row · card 460
   ===================================================================== */

   /* FIX v9.8 · “€ 25 645 per day”, no plate */







.ks-day{display:flex;align-items:baseline;gap:8px;font:400 12px var(--font-sans);color:var(--muted-foreground)}
.ks-day .dv{font:600 14px var(--font-sans);font-variant-numeric:tabular-nums;color:var(--foreground)}
.ks-day .dn{color:var(--muted-foreground)}
/* v8.2 §2 · contrast: secondary text on a selected (claim-soft) row or column reads --ink-sub, not --ink-2 */
tr.cur .ink2,tr.cur .tag,tr.cur td.tag,tr.sel .tag,tr.sel .ink2,.srow.cur .tag,.srow.cur .ink2,th.cur,td.cur.ink2,td.cur .tag,td.cur.tag,.li.on .tag,.drow.sel .tag,.drow.sel .ink2,.drow.sel .eyebrow,.msg.i .tag,.banner .tag,table.dtable th.cur{color:var(--muted-foreground)}
button.lnk{background:none;border:0;padding:0;cursor:pointer}

/* =====================================================================
   FEATURE v8.0 · ConfirmDialog · plan structure (departments, lines, sub-lines) · upload zone · import preview
   ===================================================================== */

#dialog[hidden]{display:none}
.cdlg-scrim{position:fixed;inset:0;z-index:95;background:var(--scrim);display:grid;place-items:center;padding:16px}
.cdlg{box-sizing:border-box;width:440px;max-width:100%;padding:24px;display:flex;flex-direction:column;gap:16px;background:var(--background);border:1px solid var(--border);box-shadow:var(--elev-dialog);color:var(--foreground);font:400 14px/1.5 var(--font-sans)}
.cdlg-h{display:flex;align-items:center;gap:12px}
.cdlg-h h2{margin:0;font:600 18px/1.2 var(--font-sans);text-transform:none}
.cdlg-ic{width:36px;height:36px;display:grid;place-items:center;background:var(--neg-soft);color:var(--neg);flex:none}
.cdlg-p{margin:0;color:var(--muted-foreground)}
.cdlg-p b{font-weight:600;color:var(--foreground)}
.cdlg-tbl{border:1px solid var(--border);display:flex;flex-direction:column}
.cdlg-r{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--border)}
.cdlg-r:last-child{border-bottom:0}
.cdlg-r>span:first-child{color:var(--muted-foreground)}
.cdlg-r .v{font:600 12px var(--font-sans);text-align:right}
.cdlg-w{display:flex;gap:10px;padding:10px 12px;color:var(--warn);border-bottom:1px solid var(--border)}
.cdlg-w:last-child{border-bottom:0}
.cdlg-w.blk{color:var(--neg)}
.cdlg-f{display:flex;flex-direction:column;gap:6px}
.cdlg-f .fctl{height:40px;background:var(--background)}
.cdlg-a{display:flex;justify-content:flex-end;gap:8px;margin-top:4px;flex-wrap:wrap}
.cdlg-a .btn{height:40px;font-family:var(--font-sans)}
.cdlg-go.neg{background:var(--neg);border-color:var(--neg);color:var(--background)}
.cdlg-go.neg:hover{background:var(--neg);filter:brightness(1.06)}
.cdlg-go[disabled]{opacity:.45;cursor:not-allowed}
.cdlg-hint{margin:0;font:400 12px var(--font-sans);color:var(--muted-foreground);text-align:right}
body.dialog-open{overflow:hidden}
/* plan overview · actions column (link + trash 34), new department row, add row */





.trash-sp{display:inline-block;width:34px;height:34px;flex:none}
.ib.trash{width:34px;height:34px;border-color:transparent;color:var(--muted-foreground)}
.ib.trash:hover:not([disabled]){border-color:var(--border-strong);color:var(--neg)}
.ib.trash[disabled]{opacity:.35;cursor:not-allowed}
.drow.newrow,.fr.erow.newrow{background:var(--new-row)!important}




/* upload zone */
.dpanel.dropz{display:flex;flex-direction:row;align-items:center;gap:18px;padding:18px 22px;border-style:dashed!important;border-color:oklch(1 0 0 / 28%)!important;cursor:pointer;position:relative}
.dpanel.dropz input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.dropz .dz-ic{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--border-strong);color:var(--foreground);flex:none}
.dropz .dz-t{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.dropz .dz-h{font:600 14px var(--font-sans)}
.dropz .dz-s{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.dropz .dz-b{flex:none}
.dropz.over{border-color:var(--ring)!important;background:var(--ring)!important}
.dropz.err{border-color:var(--neg)!important}
.dropz.locked{cursor:not-allowed;opacity:.7}
.dropz.locked .dz-ic{color:var(--muted-foreground)}
.dropz.row{padding:12px 18px;gap:14px}
.dropz.row .dz-ic{width:32px;height:32px}
.dropz .dz-p{display:block;height:3px;background:var(--border);margin-top:6px;position:relative;overflow:hidden}
.dropz .dz-p i{position:absolute;left:0;top:0;bottom:0;width:40%;background:var(--ring);animation:dzp var(--dur-progress) var(--ease-linear) infinite}
@keyframes dzp{from{transform:translateX(-100%)}to{transform:translateX(250%)}}
@media (prefers-reduced-motion:reduce){ .dropz .dz-p i{animation:none;width:100%} }
/* sheets · tabs, preset options, templates, split */
.sh-tabs{display:grid!important;grid-template-columns:1fr 1fr}
.sh-tabs button{justify-content:center}
#sheet .opts{display:flex;flex-direction:column}
#sheet .opt{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:11px 0;border-bottom:1px solid var(--border)}
#sheet .opt.on{background:var(--neutral-soft);padding-left:10px}
#sheet .opt .o-n{font:600 14px var(--font-sans)}
#sheet .opt .o-d{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.tpl-list{display:flex;flex-direction:column}
.tpl{display:grid;grid-template-columns:18px minmax(0,1fr);column-gap:12px;align-items:start;padding:11px 0;border-bottom:1px solid var(--border);cursor:pointer}
.tpl input{width:18px;height:18px;margin:1px 0 0;accent-color:var(--primary)}
.tpl .t-n{display:block;font-weight:600;color:var(--foreground)}
.tpl .t-d{display:block;font:400 12px var(--font-sans);color:var(--muted-foreground)}
.tpl.done .t-n{color:var(--muted-foreground)}
.split-box{display:flex;flex-direction:column;gap:10px;padding:10px 12px;border:1px solid var(--border)}
.sh-cnt{font:400 12px var(--font-sans);color:var(--muted-foreground);margin-right:auto}
#sheet .sh-f:has(.sh-cnt){flex-direction:row;align-items:center;justify-content:space-between}
/* department lines · sub-lines, Σ rows, row menu, department total */
.fr.erow.subl .e-name{padding-left:18px}
.fr.erow .sub-m{font:500 12px var(--font-sans);color:var(--muted-foreground);padding-left:18px}
.fr.erow.sigma .entity-value{font-weight:600;border-style:solid;border-color:transparent}
.cf-tag.newt{color:var(--foreground);border-color:var(--ring)}
.erow .e-vs{display:flex;justify-content:flex-end;align-items:center;gap:6px}
.ib.rmb{width:34px;height:34px;border-color:transparent;color:var(--muted-foreground)}
.ib.rmb:hover,.ib.rmb[aria-expanded="true"]{border-color:var(--border-strong);color:var(--foreground)}
.rmenu{position:absolute;z-index:96;min-width:220px;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border-strong);box-shadow:var(--elev-1);padding:4px 0}
.rmenu button{height:38px;padding:0 14px;text-align:left;background:transparent;border:0;color:var(--foreground);font:500 12px var(--font-sans);cursor:pointer}
.rmenu button:hover,.rmenu button:focus-visible{background:oklch(1 0 0 / 6%);outline:none}
.rmenu button.neg{color:var(--neg)}
.dtot{display:flex;justify-content:space-between;align-items:center;padding-top:14px;font:400 12px var(--font-sans);color:var(--muted-foreground)}
.dtot b{color:var(--foreground);font-weight:600}
/* import preview */
.ipv .ipv-f{font:400 12px var(--font-sans);color:var(--muted-foreground)}
#sheet .ipv>.wl-h{gap:10px}
#sheet .ipv>.ipv-b{padding:20px 24px;display:flex;flex-direction:column;gap:18px}
.ipv-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--border);border:1px solid var(--border)}
.ipv-t{background:var(--well);padding:12px;display:flex;flex-direction:column;gap:4px}
.ipv-v{font:600 24px var(--font-sans);color:var(--foreground)}
.ipv-g{display:flex;flex-direction:column}
.ipv-g>.eyebrow{padding-bottom:6px}
.ipv-g>.neg-l{color:var(--neg)}
.ipv-e{display:grid;grid-template-columns:52px minmax(0,1fr);column-gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}
.ipv-e .c{font:600 12px var(--font-sans);color:var(--muted-foreground)}
.ipv-e .l{font-weight:600}
.ipv-e .m{font:400 12px var(--font-sans);color:var(--neg)}
.ipv-c{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--border)}
.ipv-c .n{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ipv-c .d{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.ipv-c .ft{text-align:right;font:500 12px var(--font-sans);white-space:nowrap}
.ipv-c .f{color:var(--muted-foreground)}
.ipv-more{padding-top:8px;font:400 12px var(--font-sans);color:var(--muted-foreground);text-align:left}
.ipv-w{display:flex;gap:10px;padding:12px;border:1px solid var(--border);color:var(--muted-foreground)}
#sheet .ipv>.ipv-ft{display:flex;flex-direction:column;gap:8px;align-items:stretch}
.ipv-ft .btn{height:44px;justify-content:center;font-family:var(--font-sans)}
/* =====================================================================
   FIX v8.3 · fact from the plan structure · step page: 220 | 1fr | 320, one top line, sticky after the header
   ===================================================================== */
.factgrid{display:grid;grid-template-columns:240px minmax(0,1fr) 320px;gap:24px;align-items:start}
.factgrid>*{min-width:0}
.fg-main{display:flex;flex-direction:column;gap:var(--gap-panels)}
.fg-steps,.fg-live{position:sticky;top:calc(64px + 24px)}
.fg-live.dpanel{display:flex;flex-direction:column;padding:0;max-height:calc(100vh - 112px);overflow:hidden}
.fg-live>.sh-h{flex:none;padding:18px 20px;border-bottom:1px solid var(--border);background:var(--card)}
.fg-live>.sh-b{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:16px 20px;display:flex;flex-direction:column;gap:16px}
.fg-live>.sh-f{flex:none;padding:16px 20px;border-top:1px solid var(--border);background:var(--card);display:flex;flex-direction:column;gap:10px}
.fg-live .lf-b{display:flex;gap:8px}
.fg-live .lf-b .btn{flex:1;justify-content:center}
.fg-live .lf-b .btn.primary{flex:1.4}
.fg-live .lf-n{font:400 12px var(--font-sans)!important;color:var(--muted-foreground);margin:0}



.fg-live .after-bar{flex-direction:column;align-items:stretch}
.fg-live .after-bar .btn{width:100%;justify-content:center}
@media (max-width:1100px){ .factgrid{grid-template-columns:200px minmax(0,1fr)} .fg-live{grid-column:1 / -1;position:static;max-height:none} .fg-live.dpanel{max-height:none} }
@media (max-width:760px){ .factgrid{grid-template-columns:1fr} .fg-steps{position:static} }
/* current step: a .07 field, never a side stripe */



.stepnav{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:14px;margin-top:8px;border-top:1px solid var(--border)}
.stepnav .lnk{font-size:12px}
/* overview */
.newfp{display:inline-block;margin-left:8px;font:500 12px var(--font-sans);color:var(--foreground);border:1px solid var(--ring);padding:2px 6px;vertical-align:middle}
.vsf-p{display:block;font:400 12px var(--font-sans);color:var(--muted-foreground)}
.dpanel.pchg{display:flex;flex-direction:row;align-items:center;gap:14px;padding:14px 18px}
.pchg-ic{width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--ring);color:var(--foreground);flex:none}
.pchg-t{flex:1;min-width:0}
.pchg-t b{font-weight:600}
.pchg-t span{color:var(--muted-foreground)}
.pchg-a{font:500 12px var(--font-sans);}
.ib.pchg-x{width:28px;height:28px;border-color:transparent}



.cdlg-a .btn{height:40px;padding:0 16px;font:600 12px var(--font-sans);gap:0}
.cdlg-f .fctl{border-color:var(--border-strong)}
.cdlg-r .v{line-height:1.5}
.ipv{font:400 14px/1.45 var(--font-sans)}
.ipv-v.pos{color:var(--pos)} .ipv-v.neg{color:var(--neg)}
.ipv-more{text-transform:none!important;font:400 12px var(--font-sans)!important;color:var(--muted-foreground)!important}
.ipv-ft .btn:not(.primary){height:40px}
.ipv-t .eyebrow{line-height:1.45}
.cdlg-f .fctl{height:42px}
.cdlg-f .eyebrow{line-height:normal}

/* =====================================================================
   FEATURE v8.5 · setup: entered vs calculated, rename, Add to, own department with its effect
   Three signs tell the two kinds of line apart (never colour alone): tile edge (solid / dashed), fill, icon (edit / fx).
   ===================================================================== */
.setup7 .stop{height:60px}
.srail{top:60px;width:230px} .smain{top:60px;left:230px} .bbar{left:230px}
.setup7.s85-inline .smain{bottom:0} .setup7.s85-inline .srail{bottom:0}
.s85{max-width:1016px;margin:0 auto;padding:40px 48px 64px;box-sizing:border-box;display:flex;flex-direction:column;gap:24px}
.s85 .s85-h{display:flex;flex-direction:column;gap:10px}
.s85 .s85-h h1{margin:0;font:600 40px/1.05 var(--font-sans);outline:none}
.s85 .s85-h p{margin:0;color:var(--muted-foreground);max-width:640px;font-size:14px;line-height:1.5}
.s85 .pnl{border:1px solid var(--border-strong);background:var(--card);box-shadow:var(--elev-1)}
.s85 .sec-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:18px 16px 10px;flex-wrap:wrap}
.s85 .sec-h .eyebrow{color:var(--foreground);display:flex;gap:8px;align-items:center}
.s85 .side{font-size:12px;color:var(--muted-foreground)}
.s85 .rows{border-top:1px solid var(--border)}
.r85{display:grid;grid-template-columns:28px minmax(0,1fr) 210px 40px;column-gap:16px;align-items:center;padding:14px 16px;border-bottom:1px solid oklch(1 0 0 / 7%)}
.r85.add{grid-template-columns:28px minmax(0,1fr) 210px 96px}
.r85.sub85{padding-left:40px}
.r85 .tree{font:500 12px var(--font-sans);color:var(--muted-foreground);margin-right:6px}
.well85{margin:0 16px 16px;border:1px dashed var(--calc-edge);background:var(--background)}
.well85 .r85:last-child{border-bottom:0}
.ic85{width:28px;height:28px;box-sizing:content-box;display:grid;place-items:center;flex:none}
.ic85.in{border:1px solid var(--entered-tile-edge);background:var(--entered-tile-bg);color:var(--foreground)}
.ic85.calc{border:1px dashed var(--calc-edge);color:var(--muted-foreground)}
.ic85.neu{border:1px solid var(--border);color:var(--muted-foreground)}
.nm85 .nm{font-weight:600;font-size:14px;color:var(--foreground);overflow-wrap:anywhere}
.r85.add .nm85 .nm{color:var(--muted-foreground)}
.nm85 .ds{font-size:14px;color:var(--muted-foreground);margin-top:3px;line-height:1.45;overflow-wrap:anywhere}
.nm85 .ui85{font:400 12px/1.45 var(--font-sans);color:var(--muted-foreground);margin-top:6px;overflow-wrap:anywhere}
.nm85 .fx85{font:400 12px/1.45 var(--font-sans);color:var(--muted-foreground);margin-top:6px;overflow-wrap:anywhere}
.nmb{all:unset;cursor:text;display:inline-flex;align-items:center;gap:8px;min-height:32px;max-width:100%}
.nmb:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.nmb .pen{color:var(--muted-foreground);display:inline-grid}
.nmb:hover .pen{color:var(--foreground)}
.how85{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.how85 .how{font:500 12px var(--font-sans);color:var(--muted-foreground);display:flex;align-items:center;gap:8px}
.how85 .unit{font:600 12px var(--font-sans);color:var(--foreground);border:1px solid oklch(1 0 0 / 30%);padding:1px 6px}
.chip85{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;font:600 12px var(--font-sans);padding:3px 7px;white-space:nowrap;color:var(--muted-foreground);border:1px solid var(--border)}
.chip85.calc{color:var(--muted-foreground);border:1px dashed var(--calc-edge)}
.chip85.sel{color:var(--foreground);background:var(--ring);border-color:transparent}
.x85{width:36px;height:36px;display:grid;place-items:center;border:1px solid transparent;color:var(--muted-foreground);background:transparent;cursor:pointer}
.x85:hover{color:var(--foreground);border-color:var(--border-strong)} .x85:focus-visible{outline:2px solid var(--ring);outline-offset:1px}
.btn85{display:inline-flex;align-items:center;gap:8px;font:600 12px var(--font-sans);background:transparent;color:var(--foreground);border:1px solid oklch(1 0 0 / 20%);height:40px;padding:0 16px;cursor:pointer;text-decoration:none}
.btn85:hover{border-color:oklch(1 0 0 / 40%)} .btn85:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.btn85.pri{background:var(--foreground);color:var(--background);border-color:var(--foreground)}
.btn85.ghost{border-color:transparent;color:var(--muted-foreground)}
.btn85.sm{height:36px;padding:0 12px}
.btn85[aria-busy="true"]{opacity:.7;cursor:progress}
.s85 .legend{display:flex;flex-wrap:wrap;gap:24px;padding:14px 18px;align-items:center}
.s85 .legend>span{display:flex;align-items:center;gap:8px;font-size:14px}
.s85 details.leg{border:1px solid var(--border-strong);background:var(--card);box-shadow:var(--elev-1)}
.s85 details.leg>summary{list-style:none;cursor:pointer;padding:12px 18px;font:500 12px var(--font-sans);color:var(--foreground);min-height:20px}
.s85 details.leg>summary::-webkit-details-marker{display:none}
.s85 details.leg[open]>summary{padding-bottom:0}
.s85 details.leg>summary:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}
.s85 .btns{display:flex;gap:12px;padding:16px;flex-wrap:wrap}
.s85 .foot85{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.s85 .foot85 .sum{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.s85 .empty85{padding:16px;color:var(--muted-foreground);font-size:14px}
.ren{display:flex;flex-direction:column;gap:6px}
.ren .rrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ren input{height:34px;width:280px;max-width:100%;background:var(--muted);border:1px solid var(--ring);color:var(--foreground);font:600 14px var(--font-sans);padding:0 10px}
.ren textarea{width:100%;max-width:520px;background:var(--muted);border:1px solid oklch(1 0 0 / 26%);color:var(--muted-foreground);font:400 14px/1.45 var(--font-sans);padding:6px 10px;resize:vertical}
.ren textarea:focus,.ren input:focus{outline:2px solid var(--ring);outline-offset:1px}
.ren .was{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.err85{font-size:12px;color:var(--neg)}
.lnk85{all:unset;cursor:pointer;font:500 12px var(--font-sans);color:var(--muted-foreground);text-decoration:underline;text-underline-offset:3px}
.lnk85:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.r85.fresh{animation:fresh85 var(--dur-3) var(--ease-out)}
@keyframes fresh85{from{opacity:.45}to{opacity:1}}
.r85.going{animation:going85 var(--dur-2) var(--ease-in) forwards}
@keyframes going85{to{opacity:0;transform:scaleY(.6)}}
/* own department */
.s85 .two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}
.s85 .fld85{display:flex;flex-direction:column;gap:8px}
.s85 .fld85 input{height:40px;background:var(--muted);border:1px solid oklch(1 0 0 / 26%);color:var(--foreground);font:600 14px var(--font-sans);padding:0 12px}
.s85 .fld85 input.d{font:400 14px var(--font-sans)}
.s85 .fld85 input:focus{outline:2px solid var(--ring);outline-offset:1px}
.s85 .fld85 input[aria-invalid="true"]{border-color:var(--neg)}
.s85 fieldset{border:0;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}
.s85 legend{margin-bottom:12px;padding:0}
.eff3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0}
.eff3 [role="radio"]{text-align:left;padding:18px;border:1px solid oklch(1 0 0 / 18%);background:transparent;color:var(--foreground);font:inherit;display:flex;flex-direction:column;gap:10px;cursor:pointer}
.eff3 [role="radio"]+[role="radio"]{margin-left:-1px}
.eff3 [role="radio"] .t{display:flex;align-items:center;gap:10px}
.eff3 [role="radio"] .sg{width:30px;height:30px;display:grid;place-items:center;border:1px solid oklch(1 0 0 / 30%);font:600 16px var(--font-sans)}
.eff3 [role="radio"] .n{font:600 15px var(--font-sans);}
.eff3 [role="radio"] .d{color:var(--muted-foreground);font-size:14px;line-height:1.5}
.eff3 [role="radio"][aria-checked="true"]{background:var(--chart-3);border-color:var(--ring);position:relative;z-index:1}
.eff3 [role="radio"][aria-checked="true"] .d{color:var(--foreground)}
.eff3 [role="radio"]:focus-visible,.lvl4 [role="radio"]:focus-visible{outline:2px solid var(--ring);outline-offset:2px;z-index:2}
.lvl4{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lvl4 [role="radio"]{height:auto;padding:10px 12px;text-align:left;display:flex;flex-direction:column;gap:3px;font:600 12px var(--font-sans);border:1px solid oklch(1 0 0 / 20%);background:transparent;color:var(--muted-foreground);cursor:pointer}
.lvl4 [role="radio"] .ex{font:400 12px/1.4 var(--font-sans);text-transform:none;color:var(--muted-foreground)}
.lvl4 [role="radio"][aria-checked="true"]{background:var(--chart-3);color:var(--foreground);border-color:var(--ring)}
.lvl4 [role="radio"][aria-checked="true"] .ex{color:var(--foreground)}
.lad85 .lst{display:flex;justify-content:space-between;gap:12px;padding:7px 10px;border:1px solid transparent;transition:background var(--dur-3) var(--ease-out),border-color var(--dur-3) var(--ease-out);font:400 14px/1.5 var(--font-sans);text-transform:none;color:var(--foreground)}
.lad85 .lst-r{font:400 12px var(--font-sans);color:var(--muted-foreground);text-align:right}
.lad85 .lst.res .lst-l{font-weight:600}
.lad85 .lst.here{background:var(--ring);border-color:var(--ring)}
.lad85 .lst.here .lst-l,.lad85 .lst.here .lst-r{color:var(--foreground)}
.s85 .ownlist{display:flex;gap:6px;flex-wrap:wrap}
@media (prefers-reduced-motion:reduce){.r85.fresh,.r85.going{animation:none}.lad85 .lst{transition:none}}
/* §4b · 720 px up to 1100 px: the step list folds into a stepper above the title; rows put the labels under the name */
.s85-stepper{display:none}
@media (width < 1100px){
  .setup7 .srail{display:none} .setup7 .smain,.setup7 .bbar{left:0}
  .s85-stepper{display:block;position:relative}
  .s85-stepper select{height:36px;background:var(--muted);border:1px solid var(--border-strong);color:var(--foreground);font:500 12px var(--font-sans);padding:0 10px;max-width:100%}
  .r85,.r85.add{grid-template-columns:28px minmax(0,1fr) 40px}
  .r85.add{grid-template-columns:28px minmax(0,1fr) 96px}
  .r85 .how85{grid-column:2;grid-row:2;flex-direction:row;flex-wrap:wrap;margin-top:8px}
  .r85>:last-child{grid-row:1;grid-column:3}
  .s85{padding:28px 24px 48px}
}
@media (width < 720px){
  .s85{padding:20px 16px 96px}
  .s85 .s85-h h1{font-size:30px}
  .eff3{grid-template-columns:1fr} .eff3 [role="radio"]+[role="radio"]{margin-left:0;margin-top:-1px}
  .s85 .two,.s85 .two85{grid-template-columns:1fr}
  .s85 .foot85{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--card);border-top:1px solid var(--border);padding:12px 16px}
  .s85 .foot85 .skip{all:unset;cursor:pointer;font:500 12px var(--font-sans);text-decoration:underline;color:var(--muted-foreground)}
  .s85 .foot85 .sum{display:none}
}

.seg.vseg{display:flex;flex-direction:column;align-items:stretch} .seg.vseg [role="radio"]{text-align:left}
.err85{font-size:12px;color:var(--neg);margin:4px 0 0}
.s85sh .seg [role="radio"]:focus-visible{outline:2px solid var(--ring);outline-offset:1px}
#sheet .eff3{grid-template-columns:1fr} #sheet .eff3 [role="radio"]+[role="radio"]{margin-left:0;margin-top:-1px} #sheet .eff3 [role="radio"]{padding:12px 14px;gap:6px}
#sheet .lvl4{grid-template-columns:1fr}
#sheet fieldset.sh-eff{border:0;padding:0;margin:0;display:flex;flex-direction:column;gap:8px} #sheet fieldset.sh-eff legend{padding:0;margin-bottom:8px}
/* v8.5 §1.3 · the description is always under the name (plan, fact, Departments) */
.ds85{font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground);margin-top:2px;text-transform:none;overflow-wrap:anywhere}
.fr.calc .fld.calcv{cursor:default;user-select:text}
/* v8.5 · formula preview and the own-department footer (no inline frames in screens) */
.cc-prev{margin-top:14px;border:1px dashed var(--calc-edge);padding:10px 12px}
.foot85.own-foot{border-top:1px solid var(--border);padding-top:18px}
/* ---------- FEATURE v8.6 · analysis tabs ---------- */

.an-page{max-width:1280px}
.an-head .ph-r{align-items:flex-end}
.an-mode{gap:10px}
.an-sq{width:8px;height:8px;background:var(--muted-foreground);flex:none} .an-sq.on{background:var(--ring)}
.an-where{font-size:12px;color:var(--muted-foreground)}
.an-sub{font-size:12px;color:var(--muted-foreground,var(--muted-foreground));line-height:1.45}
.an-cap{font-size:12px;color:var(--muted-foreground);margin:10px 0 0;line-height:1.45}
.an-status{display:inline-flex;gap:12px;align-items:center;flex-wrap:wrap}
.an-recon{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;padding:14px 18px}
.an-rh{flex-basis:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.an-ok,.an-bad,.an-unk{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--muted-foreground)}
.an-ok svg{color:var(--pos)} .an-bad{color:var(--warn)} .an-bad svg{flex:none} .an-unk{color:var(--muted-foreground)}
.an-recon.bad{border-color:color-mix(in srgb,var(--warn) 45%,transparent)}
.an-note{display:flex;gap:14px;align-items:center;padding:14px 18px}
.an-note .lnk{margin-left:auto;white-space:nowrap}
.an-ni{color:var(--foreground);display:inline-flex;flex:none}
.an-legend{display:flex;gap:18px;font-size:12px;color:var(--muted-foreground);margin-top:6px}
.an-legend .sw,.an-chl .sw,.an-tbl .sw,.an-srow .sw,.an-mr2 .sw{display:inline-block;width:10px;height:10px;margin-right:8px;vertical-align:baseline;flex:none}
.sw.hatch{background:repeating-linear-gradient(45deg,var(--muted-foreground) 0 2px,transparent 2px 6px)}
.an-tbl td.an-ch{text-align:left;font:500 14px var(--font-sans);color:var(--foreground)} .an-tbl td.an-ch .an-sub{font-family:var(--font-sans);font-size:12px}
.an-tbl td{text-align:right;font-family:var(--font-sans);font-variant-numeric:tabular-nums}
.an-tbl thead th:not(:first-child){text-align:right}
.an-tbl tfoot th,.an-tbl tfoot td{font-weight:600;color:var(--foreground)}
.an-empty{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:40px;padding:28px}
.an-empty h2{margin:0;font:600 22px/1.2 var(--font-sans)}
.an-e-l{display:flex;flex-direction:column;gap:14px}
.an-chl{list-style:none;margin:6px 0 12px;padding:0}
.an-chl li{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border)}
.an-chl .n{flex:1}
.an-src{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;padding:14px 18px}
.an-src .btn{margin-left:auto}
.an-pick select{margin-left:6px}

.an-in{width:100%;max-width:130px;text-align:right}
.an-in.err{border-color:var(--neg)}
.an-mx td{padding:6px 10px}
.an-foot{gap:12px;align-items:center;flex-wrap:wrap}
.an-foot .sp,.an-pact .sp{flex:1}
.an-ta{width:100%;height:auto;min-height:120px;padding:10px;font-family:var(--font-sans);font-size:12px}
.an-prev{border-collapse:collapse;font-size:12px;margin-top:12px;width:100%}
.an-prev th,.an-prev td{padding:6px 8px;border-bottom:1px solid var(--border);text-align:right;font-family:var(--font-sans)}
.an-prev th:first-child{text-align:left}
.an-prev .err,.an-prev td.err{color:var(--neg)}
.an-errs,.an-warns{list-style:none;padding:0;margin:10px 0 0;display:flex;flex-direction:column;gap:6px;font-size:12px}
.an-errs li{color:var(--neg);display:flex;gap:6px;align-items:center} .an-warns li{color:var(--warn)}
.an-pact{gap:12px;align-items:center;margin-top:12px;flex-wrap:wrap}
.an-cat{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.an-tpl{all:unset;box-sizing:border-box;display:flex;gap:12px;padding:12px;border:1px solid var(--border-strong);cursor:pointer;width:100%}
.an-tpl b{display:block;font:600 14px var(--font-sans);color:var(--foreground)} .an-tpl .an-sub{display:block;margin-top:2px}
.an-tpl.on{background:var(--neutral-soft);border-color:var(--ring)} .an-tpl.on .an-sub{color:var(--foreground,var(--foreground))}
.an-tpl:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.an-tpl[disabled],.an-tpl.off{cursor:default} .an-tpl[disabled] b,.an-tpl.off b{color:var(--muted-foreground)}
.an-ti{width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--border-strong);flex:none;color:var(--muted-foreground)}
.an-form{margin-top:14px;display:flex;flex-direction:column}
.an-modes{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.an-modes [role="radio"]{all:unset;box-sizing:border-box;display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--border-strong);cursor:pointer}
.an-modes [role="radio"] b{font:600 14px var(--font-sans);color:var(--foreground)}
.an-modes [role="radio"][aria-checked="true"]{background:var(--neutral-soft);border-color:var(--ring)} .an-modes [role="radio"][aria-checked="true"] .an-sub{color:var(--foreground,var(--foreground))}
.an-modes [role="radio"]:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.an-mlist{display:flex;flex-direction:column}
.an-mr{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--border);cursor:pointer}
.an-mr input[type=checkbox]{width:18px;height:18px;margin-top:2px;accent-color:var(--primary)}
.an-mr .n{display:block} .an-mr .an-sub{display:block}
.an-tgt{display:flex;gap:8px;align-items:center;margin-top:6px} .an-tgt .fld{width:96px}
.an-info{display:flex;flex-direction:column;gap:6px;padding:12px 14px;font-size:14px;margin-top:14px}
.an-srow{padding:12px 0;border-bottom:1px solid var(--border)}
.an-lines{flex-wrap:wrap;gap:6px;margin-top:8px}
.an-wnote{display:block;font-size:12px;color:var(--warn);margin-top:6px;}
.an-w{display:flex;flex-direction:column;gap:6px}
.an-mini{display:flex;flex-direction:column;gap:6px}
.an-mr2{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;gap:8px;align-items:center;font-size:12px}
.an-mr2 .n{display:flex;align-items:center;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.an-mr2 .b{height:8px;background:var(--border);position:relative} .an-mr2 .b i{position:absolute;left:0;top:0;bottom:0}
.an-mr2 .v{text-align:right}
.an-ul{list-style:none;margin:0;padding:0} .an-ul li{padding:8px 0;border-bottom:1px solid var(--border)}
.an-lt{max-width:520px}
.t-caution{--t-ink:var(--warn)}
@media (width < 1100px){
  .an-page .dgrid{grid-template-columns:minmax(0,1fr)!important}
  .an-page .dtable{overflow-x:auto}
  .an-tbl td.an-ch{position:sticky;left:0;background:var(--card,var(--card));z-index:1}
  .an-empty{grid-template-columns:minmax(0,1fr)}
}
@media (width < 720px){
  .an-head .ph-row{flex-direction:column;align-items:stretch}
  .phead.an-head .ph-row>.ph-l{flex:0 0 auto}   /* v12.51 · in a column the 420 px basis of .phead .ph-l became a 420 px gap under the title on a phone (more specific than it) */
  .an-head .ph-r,.an-head .ph-a{align-items:stretch;width:100%}
  .an-mode{width:100%;justify-content:center}
  .an-note{flex-wrap:wrap} .an-note .lnk{margin-left:0}
}

.dpanel.an-recon,.dpanel.an-note,.dpanel.an-src,.dpanel.an-empty,.dpanel.an-info{text-align:left;align-items:center;justify-content:flex-start}
.dpanel.an-recon,.dpanel.an-src{flex-direction:row} .dpanel.an-note{flex-direction:row} .dpanel.an-info{flex-direction:column;align-items:flex-start}
.dpanel.an-empty{display:grid;align-items:start}
.an-tgt .fld{width:96px;height:32px;padding:0 8px}
.dpanel.an-note.an-top{margin:0}

/* ===== FIX v8.7 · P&L level icons · panel buttons ===== */

.pl-tile{width:36px;height:36px;box-sizing:border-box;display:grid;place-items:center;border:1px solid var(--border);color:var(--muted-foreground);flex:none}
.pl-tile.pl-none{border-color:transparent}
.pl-ic{display:block;flex:none}
.lp-ic{display:inline-flex;width:16px;flex:none;margin-right:8px;color:var(--muted-foreground)}


.wc-nm .lp-ic{margin-right:0}
.dept-ic{display:inline-flex;vertical-align:-2px;margin-right:6px;color:var(--muted-foreground)}

.chip85 .pl-ic{color:inherit}
.lvl4 [role="radio"] .lvl-ic{display:inline-flex;color:var(--muted-foreground);margin-bottom:4px}
.lvl4 [role="radio"][aria-checked="true"] .lvl-ic{color:var(--foreground)}

/* §1 · panel footer: status line, one primary (label left, chevron right), back as a text link */
.pb-stat{display:flex;align-items:center;gap:8px;font:400 14px/1.4 var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--foreground,oklch(0.985 0 0))}
.pb-stat.mute{color:var(--muted-foreground,oklch(0.708 0 0))}
.pb-stat svg{flex:none;color:var(--pos,oklch(0.765 0.177 163.2))}
.btn.pbtn{width:100%;max-width:100%;height:44px;justify-content:space-between;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box}
.btn.pbtn>span:first-child{overflow:hidden;text-overflow:ellipsis}
.pb-back{display:inline-flex;align-items:center;gap:8px;min-height:36px;font:600 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0));text-decoration:none;align-self:flex-start}
.pb-back:hover{color:var(--foreground,oklch(0.985 0 0));text-decoration:underline;text-underline-offset:3px}
.pb-back:focus-visible{outline:2px solid var(--ring,oklch(0.556 0 0));outline-offset:2px}
.after-bar{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:12px 16px}
.after-bar .pb-stat{margin-right:auto} .after-bar .btn.pbtn{width:auto;min-width:200px;justify-content:space-between;order:3} .after-bar .pb-back{order:2;align-self:center}
.fg-live .after-bar,.dock .after-bar,#sheet .after-bar{flex-direction:column;align-items:stretch;justify-content:flex-start}
.fg-live .after-bar .btn.pbtn,.dock .after-bar .btn.pbtn,#sheet .after-bar .btn.pbtn{width:100%;min-width:0;order:0}
.fg-live .after-bar .pb-back,.dock .after-bar .pb-back,#sheet .after-bar .pb-back{order:0;align-self:flex-start}
.on-plan{color:var(--muted-foreground)}
.fg-live .lf-b.pb2,.lf-b.pb2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fg-live .lf-b.pb2 .btn{min-width:0;justify-content:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;}
.lf-t{white-space:normal;line-height:1.5}

/* ===== FIX v8.8 · Acquisition entry: four monthly charts over the table ===== */
.an-ech{display:flex;align-items:center;justify-content:space-between;gap:12px 24px;flex-wrap:wrap}
.an-lgs{display:flex;flex-wrap:wrap;gap:6px 16px;font:400 12px var(--font-sans);color:var(--muted-foreground)}
.an-lg{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.an-lg i{width:10px;height:10px;display:inline-block;flex:none}
.an-lg i.dash{background:none;border:1px dashed var(--ring);box-sizing:border-box}
.an-charts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.page>.an-charts{margin-top:-8px}
.dpanel.an-cc{padding:16px;display:flex;flex-direction:column;gap:8px;min-width:0}
.an-cv{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;min-height:26px}
.an-ct{font:600 22px/1.1 var(--font-sans);letter-spacing:-.01em;font-variant-numeric:proportional-nums;color:var(--foreground)}
.an-ct.empty{color:var(--muted-foreground)}
.an-vs{font:500 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.an-cl{font:500 12px var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.an-cl.t-neutral{color:var(--muted-foreground)}


@keyframes anGrow{from{transform:scaleY(var(--from,0))}to{transform:scaleY(1)}}

.ftip{white-space:pre-line}
@media (max-width:1100px){ .an-charts{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:720px){ .an-charts{grid-template-columns:1fr} }

/* ===== FIX v8.9 · review 08.10 ===== */
.mcard .mc-why{display:block;margin-top:6px;font:500 12px var(--font-sans);color:var(--muted-foreground)}
.hl-l{color:var(--muted-foreground)}
/* B3 · one status pill in the header + popover */



 .hp-sep{color:var(--muted-foreground)}
.hpop{position:absolute;right:0;top:calc(100% + 8px);z-index:60;width:300px;max-width:calc(100vw - 32px);background:var(--card,var(--card));border:1px solid var(--border-strong);box-shadow:var(--elev-1);padding:14px 16px;display:flex;flex-direction:column;gap:8px;color:var(--foreground)}
.hpop .hp-h{display:flex;justify-content:space-between;gap:12px}
.hpop .hp-row{display:flex;justify-content:space-between;gap:12px;font-size:12px}
.hpop .fillbar{width:100%}
.hp-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.hp-list li{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:32px;border-bottom:1px solid var(--border)}
.hp-list li:last-child{border-bottom:0}

/* C3 · skip link: hidden until focused */
.skip-link{position:fixed;left:16px;top:-60px;z-index:200;background:var(--foreground);color:var(--background);font:600 12px var(--font-sans);padding:10px 14px;text-decoration:none;transition:none}
.skip-link:focus{top:12px;outline:2px solid var(--ring);outline-offset:2px}

/* C7 · focus is never hidden under the sticky 64px header */
html{scroll-padding-top:88px}
/* A12 · the active period segment always shows its label (narrow header shows the letter) */

/* B4 · P&L one table: Fact | Compare | Δ | Δ% | 12 mo */
.prow.p9{grid-template-columns:36px minmax(150px,1.4fr) repeat(4,minmax(110px,1fr)) 110px 16px}   /* v9.7 · sparkline 110 × 34 */
.prow.p9 .num{text-align:right;font:500 14px var(--font-sans);font-variant-numeric:tabular-nums}
.prow.p9 .p9-f{font:600 18px var(--font-sans);font-variant-numeric:tabular-nums;color:var(--foreground)} .prow.p9 .p9-f.neg{color:var(--neg)}
.prow.p9.h{cursor:default;background:none;padding-top:10px;padding-bottom:10px} .prow.p9.h .r{text-align:right}
.pcats>.prow.p9.h:hover{background:none}
.cmp-l{margin-right:10px}
.dp-a .seg button[role=radio]:disabled{opacity:.45;cursor:not-allowed}
@media (max-width:1180px){ .prow.p9{grid-template-columns:36px minmax(130px,1.2fr) repeat(4,minmax(90px,1fr)) 16px} }
@media (max-width:760px){ .prow.p9{grid-template-columns:36px 1fr auto auto} .prow.p9>*:nth-child(3){display:block} .prow.p9>*:nth-child(4),.prow.p9>*:nth-child(5),.prow.p9>*:nth-child(7),.prow.p9>*:nth-child(8){display:none} .prow.p9>*:nth-child(6){display:block} }


.dpanel.on-dash{display:flex;flex-direction:row;text-align:left;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 20px;font-size:14px;color:var(--muted-foreground)}
.pl-lock{font:600 12px var(--font-sans);color:var(--foreground)}
/* C2 · panel and widget names are h2, groups inside h3 (fonts come from their classes) */

/* C4 · the Formula (i) button: 16px box, 24×24 target (WCAG 2.5.8) */
button.info{width:24px;height:24px;border:0;position:relative;background:transparent}
button.info::before{content:"";position:absolute;inset:4px;border:1px solid var(--border-strong);pointer-events:none}
button.info:hover::before{border-color:var(--ring)}
button.info:focus-visible{outline:2px solid var(--ring);outline-offset:0}
.dpanel button.info{margin:-8px -4px}
/* C6 · Alerts “On” is a real switch */
.sw-b{background:transparent;border:0;padding:5px 0;min-height:24px;min-width:28px;cursor:pointer;display:inline-flex;align-items:center}
.sw-b:focus-visible{outline:2px solid var(--ring);outline-offset:2px}

/* D3 · link segments mark the current view with aria-current (aria-pressed is for buttons) */
.seg .segl[aria-current="page"]{background:var(--foreground)!important;color:var(--background)!important}


.hpop[hidden]{display:none!important}
   /* as the old header fields: the phone header keeps period, bell and profile */
.pline{grid-template-columns:minmax(150px,1.2fr) repeat(4,minmax(100px,1fr)) 86px}
.nt{overflow-wrap:anywhere}
   /* v8.9 C1 · at 11px “FORECAST JAN” and “ALERT AT 85%” fit the cell */

/* ===== QA v9.0 · ?debug=1 ===== */
.debug .dbg-raw{outline:1px solid #FF4D4D;outline-offset:1px}
.debug [data-tr]{cursor:help}
.debug [data-tr]:hover{outline:1px dashed var(--ring);outline-offset:1px}
.dbg-tip{position:fixed;z-index:300;max-width:360px;margin:0;padding:10px 12px;background:var(--background);border:1px solid var(--ring);color:var(--foreground);font:500 12px/1.5 var(--font-sans);white-space:pre-wrap;pointer-events:none}
/* QA-04 · another tab changed the data */
.stale-bar{position:fixed;left:50%;transform:translateX(-50%);bottom:20px;z-index:250;display:flex;align-items:center;gap:16px;max-width:calc(100vw - 32px);padding:12px 16px;background:var(--card,var(--card));border:1px solid var(--warn);box-shadow:var(--elev-1);color:var(--foreground);font-size:14px}
   /* QA-06 · a 10-digit value pushes the period to a hidden second line instead of out of the card */
/* QA-07 · 7-digit sums in the metric page tiles fit at 1280 (the non-breaking space is wider than the old narrow one) */

/* QA-08 · fact overview: a six-digit GGR breaks after the label instead of out of its column at 1280 */
.drow .num.hide-md{white-space:normal}
/* QA-09 · role editor at 768: a long label column no longer squeezes the values to 29 px */
.kvl{grid-template-columns:fit-content(40%) minmax(0,1fr)}
/* QA-10 · 768 px: the review tiles go two by two, P&L lines and totals stay inside the page */
@media (max-width:900px) and (min-width:521px){ .statgrid{grid-template-columns:repeat(2,minmax(0,1fr))!important} } @media (max-width:900px){ .pline{grid-template-columns:minmax(110px,1.2fr) repeat(4,minmax(64px,1fr)) 72px} .prow.p9 .p9-f{font-size:15px} }
/* QA-11 · WCAG 2.5.8: text links and the ghost link in the live panel get a 24 px hit area without moving the layout */
.lnk,.act-l,.sh-b .btn.ghost{position:relative}
.lnk::before,.act-l::before,.phead .ph-back::before,.sh-b .btn.ghost::before{content:"";position:absolute;inset:-6px 0}   /* a taller hit area that never moves the layout */
.x{width:24px;height:24px}
/* QA-12 · reflow at 320 px: the collapsed-menu header kept its 28 px gaps and pushed the account button 45 px off screen */

/* QA-12 · reflow at 320 px: utilisation values and the reconciliation heading wrap instead of widening the page */

.an-rh{min-width:0} .an-rh .eyebrow{white-space:normal;min-width:0}
@media (max-width:420px){ .an-status{min-width:0;max-width:100%} .an-status .lnk{white-space:normal;text-align:left} }

/* ===== FEATURE v9.1 · Investments ===== */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.inv-page .ph-r{align-items:center}
.inv-page .inv-more{width:38px;height:38px}
.inv-asof{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.inv-page .pos{color:var(--pos)} .inv-page .neg{color:var(--neg)} .inv-page .claim{color:var(--pos)} .inv-page .ink2{color:var(--muted-foreground)}
.inv-s{font:400 12px/1.45 var(--font-sans);color:var(--muted-foreground);}
/* summary: one panel, four cells split by hairlines */
.dpanel.inv-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:0}
.inv-c{display:flex;flex-direction:column;gap:10px;padding:22px 24px 20px;min-width:0}
.inv-c+.inv-c{border-left:1px solid var(--border)}
.inv-v{font:var(--num-hero);font-size:30px;line-height:1.05;letter-spacing:-.01em;font-variant-numeric:proportional-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:1180px){ .dpanel.inv-sum{grid-template-columns:repeat(2,minmax(0,1fr))} .inv-c:nth-child(3){border-left:0} .inv-c:nth-child(n+3){border-top:1px solid var(--border)} .inv-v{font-size:26px} }
@media (max-width:560px){ .dpanel.inv-sum{grid-template-columns:1fr} .inv-c+.inv-c{border-left:0;border-top:1px solid var(--border)} }
/* chart panel */





.inv-scen{display:flex;border:1px solid var(--border-strong);max-width:100%}
.inv-r{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:150px;padding:9px 14px 10px;border:0;border-right:1px solid var(--border);background:transparent;color:var(--muted-foreground);text-align:left;cursor:pointer}
.inv-r:last-child{border-right:0}
.inv-r .r1{display:inline-flex;align-items:center;gap:8px;font:600 12px var(--font-sans);color:var(--foreground)}
.inv-r .r2{font:400 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.inv-r:hover:not(:disabled){background:oklch(1 0 0 / 4%)}
.inv-r[aria-checked="true"]{background:var(--neutral-soft);box-shadow:inset 0 -2px 0 var(--ring)}
.inv-r[aria-checked="true"] .r1{color:var(--foreground)}
.inv-r:disabled{cursor:not-allowed}.inv-r:disabled .r1{color:var(--muted-foreground)}
.inv-r:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}
.inv-sw{flex:none} .inv-sw line{stroke-width:2} .inv-sw .lg-pace{stroke:var(--muted-foreground);stroke-dasharray:6 3} .inv-sw .lg-plan{stroke:var(--muted-foreground);stroke-dasharray:10 5 2 5} .inv-sw .lg-custom{stroke:var(--muted-foreground);stroke-dasharray:.1 4;stroke-linecap:round}
.inv-r[aria-checked="true"] .inv-sw line{stroke:var(--ring)}



.inv-chart{position:relative;min-height:260px;margin:4px -4px 0}
.inv-svg{display:block;overflow:visible}
.inv-svg .g{stroke:var(--border,oklch(1 0 0 / 10%));stroke-width:1}


.inv-svg .ax{font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);fill:var(--muted-foreground,oklch(0.708 0 0));}

.inv-svg .fact{fill:none;stroke:var(--foreground,oklch(0.985 0 0));stroke-width:2;stroke-linejoin:miter}
.inv-svg .fc{fill:none;stroke:var(--muted-foreground,oklch(0.708 0 0));stroke-width:1.5;opacity:.75}
.inv-svg .fc.on{stroke:var(--pos,oklch(0.765 0.177 163.2));stroke-width:2;opacity:1}
.inv-svg .stp{font:500 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);fill:var(--muted-foreground,oklch(0.708 0 0))}
.inv-svg .stp.pl{fill:var(--pos,oklch(0.765 0.177 163.2))}
.inv-svg .ring{fill:var(--background,oklch(0.145 0 0));stroke:var(--muted-foreground,oklch(0.708 0 0));stroke-width:1.5}
.inv-svg .ring.on{stroke:var(--pos,oklch(0.765 0.177 163.2));stroke-width:2}
.inv-svg .rl{font:500 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);fill:var(--muted-foreground,oklch(0.708 0 0));}
.inv-svg .rl.on{fill:var(--pos,oklch(0.765 0.177 163.2));font-weight:600}
.inv-svg .dot{fill:var(--foreground,oklch(0.985 0 0));stroke:var(--background,oklch(0.145 0 0));stroke-width:2}
.inv-svg .dl{font:600 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);fill:var(--foreground,oklch(0.985 0 0))}
.inv-svg .hair{stroke:var(--muted-foreground,oklch(0.708 0 0));stroke-width:1;opacity:.5}
.inv-tip{position:absolute;top:0;z-index:5;padding:7px 10px;background:var(--card,var(--muted));border:1px solid var(--border-strong);box-shadow:var(--elev-1);font:400 12px var(--font-sans);color:var(--foreground);white-space:nowrap;pointer-events:none}
.inv-tip b{font-weight:600}
.inv-ch-f{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}


 .inv-leg .lg-fact{stroke:var(--foreground)} .inv-leg .lg-pace{stroke:var(--muted-foreground);stroke-dasharray:6 3} .inv-leg .lg-plan{stroke:var(--muted-foreground);stroke-dasharray:10 5 2 5} .inv-leg .lg-custom{stroke:var(--muted-foreground);stroke-dasharray:.1 4;stroke-linecap:round}
.inv-mt td,.inv-mt th,.inv-tbl td,.inv-tbl th{padding-top:10px;padding-bottom:10px}
.inv-page .r{text-align:right} .inv-page .nw{white-space:nowrap}
/* list and sensitivity */
.inv-two{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:var(--gap,20px);align-items:start}
@media (max-width:1100px){ .inv-two{grid-template-columns:minmax(0,1fr)} }
.inv-w .inv-n{font:500 14px var(--font-sans);color:var(--foreground)}
.inv-w{min-width:200px}
.inv-tag{display:inline-block;margin-left:8px;padding:2px 6px;border:1px solid var(--border-strong);font:500 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap;vertical-align:1px}
.inv-tag.pl{border-color:var(--ring);color:var(--foreground)}
.f-h .inv-tag{margin-left:2px;font-weight:500}
.inv-note{display:block;margin-top:3px;font:400 12px var(--font-sans);color:var(--muted-foreground)}
.inv-tbl tr.inpnl .inv-n{color:var(--muted-foreground)}
.inv-tbl tfoot td{font:500 12px var(--font-sans);color:var(--foreground);border-top:1px solid var(--border-strong)}
.inv-ed{width:32px;height:32px}
.inv-lead{margin:0;font:400 14px/1.5 var(--font-sans);color:var(--muted-foreground)}
.inv-sl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.inv-sr{display:grid;grid-template-columns:minmax(118px,auto) minmax(40px,1fr) minmax(112px,auto);align-items:center;gap:14px;padding:11px 0;border-bottom:1px solid var(--border)}
.inv-sr .sv{font:500 14px var(--font-sans);color:var(--foreground)}
.inv-sr .sm{font:400 14px var(--font-sans);color:var(--muted-foreground);text-align:right}
.inv-sr .sb{position:relative;height:6px;background:oklch(1 0 0 / 7%)}
.inv-sr .sb i{position:absolute;inset:0 auto 0 0;background:var(--muted-foreground)}
.inv-sr .sb b{position:absolute;right:-12px;top:-7px;font:600 12px var(--font-sans);color:var(--muted-foreground)}
.inv-sr.near .sv,.inv-sr.near .sm{color:var(--pos)} .inv-sr.near .sb i{background:var(--pos)}
.inv-foot{margin:2px 0 0;max-width:90ch;font:400 12px/1.6 var(--font-sans);color:var(--muted-foreground)}
.inv-empty .empty-st{padding:20px 0 4px}
.inv-pl{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin:6px 0 0;padding-top:16px;border-top:1px solid var(--border)}
.inv-plv{font:600 20px var(--font-sans)}
/* sheet */
#sheet.inv-sheet .inv-form{display:flex;flex-direction:column;gap:16px;margin:0}
.inv-form .fctl.num{font-family:var(--font-sans);text-align:right}
.inv-form input[type="month"]{color-scheme:dark}
.seg.inv-kind{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--border-strong)}
.seg.inv-kind [role="radio"]{height:36px;padding:0 6px;border:0;border-right:1px solid var(--border);border-bottom:1px solid var(--border);}
.seg.inv-kind [role="radio"]:nth-child(3n){border-right:0} .seg.inv-kind [role="radio"]:nth-child(n+4){border-bottom:0}
.seg.inv-pnl [role="radio"]{display:flex;flex-direction:column;align-items:flex-start;gap:4px;height:auto;padding:11px 14px;border-right:0;border-bottom:1px solid var(--border);text-transform:none;text-align:left;white-space:normal}
.seg.inv-pnl [role="radio"]:last-child{border-bottom:0}
.seg.inv-pnl [role="radio"] b{font:600 12px var(--font-sans);}
.seg.inv-pnl [role="radio"] span{font:400 12px/1.45 var(--font-sans);color:inherit;opacity:.85}
.seg.inv-kind [role="radio"]:focus-visible,.seg.inv-pnl [role="radio"]:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}
.inv-prev{padding:12px 14px;background:var(--neutral-soft);border:1px solid var(--ring);font:400 14px/1.5 var(--font-sans);color:var(--foreground)}
.inv-btns{gap:10px;align-items:center}

/* setup step */
.inv-setup{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;max-width:860px}
@media (max-width:760px){ .inv-setup{grid-template-columns:1fr} }
.inv-setup input[type="month"]{color-scheme:dark}
/* Payback widget */
.inv-w0{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.inv-wv{font:600 32px/1.05 var(--font-sans)} .inv-wv.claim{color:var(--pos)} .inv-wv.pos{color:var(--pos)} .inv-wv.ink2{color:var(--muted-foreground)}
@media (prefers-reduced-motion:reduce){ .inv-svg .fact{transition:none!important} }
@media (max-width:720px){ .inv-scen{flex-direction:column} .inv-r{border-right:0;border-bottom:1px solid var(--border);min-width:0} .inv-r:last-child{border-bottom:0} .inv-r .r2{white-space:normal} }
.inv-svg .stp,.inv-svg .rl,.inv-svg .dl,.inv-svg .ax{paint-order:stroke;stroke:var(--background,oklch(0.145 0 0));stroke-width:4px;stroke-linejoin:round}
.inv-page .dt-scroll{position:relative}   /* keeps the .sr-only header inside the scroller (it is absolutely positioned) */
.dgrid.inv-two{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:24px;align-items:start}
.dgrid.inv-two>.inv-foot{grid-column:1/-1}
@media (max-width:1100px){ .dgrid.inv-two{grid-template-columns:minmax(0,1fr)} }
   /* v9.1 · one more item: the list scrolls, items keep 40 px */

/* ===== FIX v9.2 · dashboard rows and arranging ===== */
/* normal view: rows from the layout; a filler ends a row that isn't full */
.grid12.rows>.wd,.grid12.rows>.wd.w-wide{grid-column:span var(--s12,4)!important}
.grid12.rows>.wd-fill{grid-column:span var(--s12,1);height:0;display:block}
.grid12.rows>.wd-fill[style*="--s12:0"]{display:none}
@media (min-width:768px) and (max-width:1279px){ .grid12.rows{grid-template-columns:repeat(6,minmax(0,1fr))} .grid12.rows>.wd,.grid12.rows>.wd.w-wide{grid-column:span var(--s6,2)!important} .grid12.rows>.wd-fill{grid-column:span var(--s6,1)} .grid12.rows>.wd-fill[style*="--s6:0"]{display:none} }
@media (max-width:767px){ .grid12.rows{grid-template-columns:minmax(0,1fr)} .grid12.rows>.wd,.grid12.rows>.wd.w-wide{grid-column:1 / -1!important} .grid12.rows>.wd-fill{display:none} }
/* arranging: the sticky bar */
.dash-arr .arr-bar{position:sticky;top:64px;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:10px 18px;flex-wrap:wrap;padding:10px 12px 10px 16px;background:var(--card,var(--muted));border:1px solid var(--border-strong);box-shadow:var(--elev-1)}
.arr-bl{display:flex;flex-direction:column;gap:3px;min-width:0}
.arr-ttl{display:inline-flex;align-items:center;gap:8px;font:600 12px var(--font-sans);color:var(--foreground)}
.arr-sqc{width:8px;height:8px;background:var(--ring)}
.arr-hint{font:400 14px var(--font-sans);color:var(--muted-foreground)}
.arr-br{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.arr-ub{display:inline-flex;align-items:center;gap:6px}
.arr-ub:disabled{opacity:.45;cursor:not-allowed}
.arr-sw{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 10px;border:0;background:transparent;color:var(--muted-foreground);font:500 12px var(--font-sans);cursor:pointer}
.arr-sw i{position:relative;width:28px;height:16px;border:1px solid var(--border-strong);box-sizing:border-box}
.arr-sw i::after{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;background:var(--muted-foreground);transition:none}
.arr-sw[aria-checked="true"]{color:var(--foreground)} .arr-sw[aria-checked="true"] i{border-color:var(--ring)} .arr-sw[aria-checked="true"] i::after{left:14px;background:var(--ring)}
.arr-sw:focus-visible,.arr-grip:focus-visible,.arr-rs:focus-visible,.arr-end:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.dash-arr .arr-bm{width:32px;height:32px}
/* the grid of rows */
.arr-grid{display:flex;flex-direction:column;gap:22px}
.arr-row{position:relative}
.arr-cells{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;align-items:stretch}
.arr-t,.arr-free,.arr-slot{grid-column:span var(--s12,4)}
@media (min-width:768px) and (max-width:1279px){ .arr-cells{grid-template-columns:repeat(6,minmax(0,1fr))} .arr-t,.arr-free,.arr-slot{grid-column:span var(--s6,2)} }
@media (max-width:767px){ .arr-cells{grid-template-columns:minmax(0,1fr)} .arr-t,.arr-slot{grid-column:1 / -1} .arr-free{display:none} }
.arr-t{position:relative;display:flex;flex-direction:column;min-width:0;height:92px;box-sizing:border-box;background:var(--card);border:1px solid var(--border-strong);will-change:transform}
.arr-t.big{height:auto;min-height:92px}
.arr-t.big .arr-b{padding:0} .arr-t.big .arr-b>.dpanel{border:0;box-shadow:none;height:100%}
.arr-h{display:flex;align-items:center;gap:8px;height:28px;flex:none;padding:0 12px 0 2px;border-bottom:1px solid var(--border);cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
.arr-grip{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex:none;border:0;background:transparent;color:var(--muted-foreground);cursor:grab;padding:0}
.arr-grip:hover{color:var(--foreground)}
.arr-sq{width:8px;height:8px;flex:none}
.arr-n{flex:1;min-width:0;font:600 14px var(--font-sans);color:var(--foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.arr-w{font:500 12px var(--font-sans);color:var(--muted-foreground);flex:none}
.dash-arr .arr-more{width:24px;height:24px;border-color:transparent}
.dash-arr .arr-more:hover,.dash-arr .arr-more[aria-expanded="true"]{border-color:var(--border-strong);color:var(--foreground)}
.arr-b{flex:1;min-height:0;display:flex;align-items:center;padding:8px 14px 10px 12px}
.arr-sp{width:100%;height:36px;display:block}
.arr-kind{font:400 12px var(--font-sans);color:var(--muted-foreground);}
.arr-rs{position:absolute;top:0;right:-8px;width:14px;height:100%;z-index:3;display:flex;align-items:center;justify-content:center;cursor:ew-resize;touch-action:none}
.arr-rs i{width:4px;height:28px;background:var(--muted-foreground);opacity:.55;transition:opacity var(--dur-1),background var(--dur-1)}
.arr-rs:hover i,.arr-rs:focus-visible i,.arr-t.resizing .arr-rs i{opacity:1;background:var(--pos)}
.arr-free{display:flex;align-items:center;justify-content:center;min-height:92px;border:1px dashed var(--border-strong);font:500 12px var(--font-sans);color:var(--muted-foreground);box-sizing:border-box}
.dash-arr:not(.compact) .arr-free,.dash-arr:not(.compact) .arr-slot{min-height:200px}
/* the move: slot where it was, slot where it lands, the chip under the pointer */
.arr-t.arr-src{background:transparent;border:1px dashed var(--border-strong)}
.arr-t.arr-src>*{visibility:hidden}
.arr-t.arr-src::after{content:attr(data-was);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:500 12px var(--font-sans);color:var(--muted-foreground)}
.arr-slot.land{display:flex;align-items:center;justify-content:center;min-height:92px;padding:0 12px;box-sizing:border-box;border:1px dashed var(--ring);background:var(--neutral-soft);box-shadow:inset 3px 0 0 var(--ring);font:500 12px var(--font-sans);color:var(--foreground);text-align:center}
.arr-slot.land.nr{box-shadow:inset 0 3px 0 var(--ring)}
.arr-cap{min-height:0;font:500 12px var(--font-sans);color:var(--foreground)}
.arr-cap.on{margin-top:8px;min-height:16px}
.arr-cap.full{color:var(--warn,var(--warn))} .arr-cap.full::before{content:"▲ "}
.arr-grid.t-full .arr-row .arr-cap.full~*{display:none}
.arr-chip{position:fixed;top:0;left:0;z-index:200;display:flex;align-items:center;gap:8px;height:30px;padding:0 12px 0 6px;background:var(--card,var(--muted));border:1px solid var(--ring);box-shadow:var(--elev-2,0 12px 32px oklch(0 0 0 / 55%));pointer-events:none;white-space:nowrap;will-change:transform}
.arr-chip .arr-grip{width:18px;color:var(--foreground)}
.arr-wchip{position:fixed;top:0;left:0;z-index:200;padding:5px 9px;background:var(--card,var(--muted));border:1px solid var(--ring);font:600 12px var(--font-sans);color:var(--foreground);pointer-events:none;white-space:nowrap}
.arr-wchip.warn{border-color:var(--warn,var(--warn));color:var(--warn,var(--warn))}
.arr-ticks{position:absolute;left:0;right:0;top:-9px;height:6px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;pointer-events:none}
@media (min-width:768px) and (max-width:1279px){ .arr-ticks{grid-template-columns:repeat(6,minmax(0,1fr))} }
.arr-ticks i{border-right:1px solid var(--border-strong)} .arr-ticks i.snap{border-right:2px solid var(--ring)}
.arr-t.arr-held{outline:2px solid var(--ring);outline-offset:2px}
.arr-end{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:100%;min-height:58px;border:1px dashed var(--border-strong);background:transparent;color:var(--muted-foreground);font:500 12px var(--font-sans);cursor:pointer}
.arr-end .arr-end2{font:400 12px var(--font-sans);text-transform:none;color:var(--muted-foreground)}
.arr-end:hover{color:var(--foreground);border-color:var(--border-strong)}
body.arr-dragging,body.arr-dragging *{cursor:grabbing!important;user-select:none!important}
body.arr-dragging .arr-end{border-color:var(--ring);color:var(--foreground)}
.arr-menu kbd{margin-left:auto;font:500 12px var(--font-sans);color:var(--muted-foreground)}
.arr-menu [role^="menuitem"]{display:flex;align-items:center;gap:16px}
.arr-menu [role="menuitemradio"][aria-checked="true"]{color:var(--foreground)}
.arr-menu [role="menuitemradio"][aria-checked="true"]::before{content:"● "}
.arr-menu button:disabled{color:var(--muted-foreground,var(--chart-2));cursor:not-allowed}
.rm-sep{height:1px;margin:4px 0;background:var(--border)}
.rm-gl{display:block;padding:6px 14px 2px;font:500 12px var(--font-sans);color:var(--muted-foreground)}
.rm-g{display:flex;flex-direction:column}
@media (prefers-reduced-motion:reduce){ .arr-t{transition:none!important} .arr-sw i::after{transition:none} }
/* FIX v9.2 · 768–1023: three KPI cards in a row (2 of 6 columns) — the legend and the utilisation values wrap inside the card */

/* 768–1023: a third of the content is too narrow for a KPI card — KPI cards take half (3 of 6), wide widgets the whole row */
@media (min-width:768px) and (max-width:1023px){ .grid12.rows>.wd,.grid12.rows>.wd.w-wide{grid-column:span var(--s6n,3)!important} .grid12.rows>.wd-fill{display:none} }

/* ---------- FEATURE v9.3 · Project graph (packages/graph + the P&L domain) ---------- */

.bp{display:flex;flex-direction:column;gap:12px;height:calc(100vh - 64px - 64px);min-height:600px}
.bp.bp-lv{height:auto;min-height:0}
.bp-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px 24px;flex-wrap:wrap}
.bp-head h1{margin:2px 0 0}
.bp-head-r{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.bp-crumbs{margin-top:4px;font:500 12px var(--font-sans);color:var(--muted-foreground)}
.bp-crumbs a{color:var(--foreground);text-decoration:none}
.bp-tabs{display:inline-flex;border:1px solid var(--border-strong)}
.bp-tabs [role=tab]{height:34px;min-width:88px;padding:0 16px;background:none;border:0;color:var(--muted-foreground);font:600 12px var(--font-sans);cursor:pointer}
.bp-tabs [role=tab][aria-selected=true]{background:var(--ring);color:var(--background)}
.bp-tabs [role=tab]:disabled{opacity:.45;cursor:not-allowed}
.bp-tabs [role=tab]:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.bp-narrow{max-width:30ch}
.bp-ro{display:flex;gap:10px;align-items:center;padding:10px 14px;border:1px solid var(--border-strong);background:oklch(1 0 0 / 3%);font-size:14px;color:var(--foreground)}
.bp-ro span{color:var(--warn)}
.bp-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;position:relative;z-index:4}
.bp-bar .sp{flex:1}
.bp-chip{height:32px;display:inline-flex;align-items:center;gap:8px;padding:0 4px 0 12px;border:1px solid var(--border-strong);font:500 12px var(--font-sans);color:var(--muted-foreground)}
.bp-chip.bp-fixed{padding-right:12px}
.bp-chip select{height:30px;border:0;background:transparent;color:var(--foreground);font:600 12px var(--font-sans);padding:0 8px;cursor:pointer}
.bp-chip select:focus-visible{outline:2px solid var(--ring)}
.bp-chip select option{background:var(--card);color:var(--foreground)}
.bp-stw{position:relative}
.bp-status{height:32px;display:inline-flex;align-items:center;padding:0 12px;border:1px solid var(--border-strong);background:none;cursor:pointer;max-width:min(520px,60vw)}
.bp-status:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.bp-st{font:600 12px var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-flex;gap:8px;align-items:center}
.bp-st.pos{color:var(--pos)} .bp-st.cau{color:var(--warn)} .bp-st.neg{color:var(--neg)} .bp-st.wait{color:var(--muted-foreground)}
.bp-probs{position:absolute;left:0;top:38px;width:min(440px,86vw);max-height:340px;overflow:auto;background:var(--card);border:1px solid var(--border-strong);box-shadow:var(--elev-1);padding:6px 0;z-index:30}
.bp-pr-l{list-style:none;margin:0;padding:0}
.bp-pr{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:9px 14px;font-size:14px;border-bottom:1px solid var(--border)}
.bp-pr:last-child{border-bottom:0}
.bp-pr.error i{color:var(--neg)} .bp-pr.warn i{color:var(--warn)}
.bp-pr .lnk{background:none;border:0;cursor:pointer;padding:0}
.bp-pr-none{margin:0;padding:10px 14px;font-size:14px;color:var(--muted-foreground)}
.bp .btn.sm{height:32px}
.bp .btn.ic{width:32px;padding:0;font-size:15px;}
.bp-ur{display:inline-flex;gap:4px}
.bp-body{flex:1;min-height:0;display:grid;grid-template-columns:212px minmax(0,1fr) 288px;border:1px solid var(--border-strong);background:var(--background,var(--background))}
.bp-body.ro{grid-template-columns:minmax(0,1fr) 288px}
.bp-pal{overflow:auto;border-right:1px solid var(--border);padding:12px 10px 16px;display:flex;flex-direction:column;gap:14px}
.bp-pal-h{display:flex;flex-direction:column;gap:4px;padding:0 4px}
.bp-pal-h .cap{font-size:12px}
.bp-pal-t{font:500 12px var(--font-sans);color:var(--muted-foreground);padding:0 4px 6px}
.bp-pal-g{display:flex;flex-direction:column;gap:2px}
.bp-pi{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;padding:7px 8px;background:none;border:1px solid transparent;color:var(--foreground);text-align:left;cursor:grab;touch-action:none}
.bp-pi:hover{background:oklch(1 0 0 / 5%);border-color:var(--border)}
.bp-pi:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}
.bp-pi-l{font:600 14px var(--font-sans)}
.bp-pi-s{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.bp-pal-none{padding:0 4px;margin:0;font-size:12px}
.bp-ghost{position:fixed;left:0;top:0;z-index:200;padding:6px 10px;background:var(--card);border:1px solid var(--ring);font:600 12px var(--font-sans);color:var(--foreground);pointer-events:none;box-shadow:var(--elev-1)}
.bp-cv{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0}
.bp-canvas{position:relative;flex:1;min-height:0}
.bp-dept{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border-strong);background:var(--muted)}
.bp-dept-t{display:flex;flex-direction:column;gap:2px}
.bp-dept-t b{font:600 15px var(--font-sans)}
.bp-dept-t .cap{font-size:12px}
.bp-dept .sp{flex:1}
.bp-side{overflow:auto;border-left:1px solid var(--border);padding:14px 16px;display:flex;flex-direction:column;gap:16px}
.bp-ins{display:flex;flex-direction:column;gap:10px;font-size:14px}
.bp-ins-h{display:flex;align-items:center;gap:8px}
.bp-ins-t{margin:0;font:600 16px/1.3 var(--font-sans)}
.bp-ins-desc{margin:0;color:var(--muted-foreground);font-size:14px;line-height:1.5}
.bp-ins-d{margin:0;display:flex;flex-direction:column;border-top:1px solid var(--border)}
.bp-ins-d>div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--border)}
.bp-ins-d dt{color:var(--muted-foreground);font-size:12px} .bp-ins-d dd{margin:0;font-size:14px;text-align:right}
.bp-ins-f p{margin:4px 0 0;font-size:12px;line-height:1.5;color:var(--foreground);word-break:break-word}
.bp-ins-a{display:flex;flex-wrap:wrap;gap:6px}
.bp-ins-note{margin:0;font-size:14px;color:var(--muted-foreground)}
.bp-leg,.bp-keys{margin:0;display:flex;flex-direction:column;gap:8px}
.bp-leg>div,.bp-keys>div{display:flex;flex-direction:column;gap:2px}
.bp-leg dt{display:flex;align-items:center;gap:8px;font:600 14px var(--font-sans)} .bp-leg dd,.bp-keys dd{margin:0;font-size:12px;color:var(--muted-foreground)}
.bp-keys{border-top:1px solid var(--border);padding-top:12px}
.bp-keys>div{flex-direction:row;justify-content:space-between;gap:10px} .bp-keys dt{font:500 12px var(--font-sans);color:var(--foreground);white-space:nowrap}
.bp-lgd{display:inline-grid;place-items:center;width:16px;font-style:normal;font-size:12px}
.bp-lgd.flow{height:4px;background:var(--foreground)} .bp-lgd.money{color:var(--series-1)} .bp-lgd.count{color:var(--series-4)} .bp-lgd.pct{color:var(--series-3)}
.bp .neg-t,.bp-ins .neg-t{color:var(--neg)}
.bp-guide{display:flex;flex-direction:column;gap:8px;padding:14px;border:1px solid var(--ring);background:color-mix(in oklch,var(--foreground) 5%,transparent)}
.bp-guide h2{margin:0;font:600 17px/1.25 var(--font-sans)}
.bp-g-d{margin:0;font-size:14px;line-height:1.5;color:var(--muted-foreground)}
.bp-g-a{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:4px}
.bp-g-a .lnk{background:none;border:0;cursor:pointer;padding:6px 4px}
.bp-foot{display:flex;align-items:center;gap:12px;padding-top:4px}
.bp-foot .sp{flex:1}
/* setup: the graph gets the whole screen */

/* list view */
.bp-listw{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.bp-setup .bp-listw{grid-template-columns:minmax(0,1fr) 300px}
.bp-list{display:flex;flex-direction:column;gap:18px;min-width:0}
.bp-lsteps{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:12px 14px;border:1px solid var(--border-strong)}
.bp-ls{display:inline-flex;gap:8px;align-items:baseline;font-size:14px} .bp-ls .num{color:var(--muted-foreground);font:500 12px var(--font-sans)}
.bp-lsteps i{font-style:normal;color:var(--foreground)}
.bp-lsec{border:1px solid var(--border-strong);background:var(--well)}
.bp-lh{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;padding:12px 14px;border-bottom:1px solid var(--border)}
.bp-lh h2{margin:0;font:600 15px var(--font-sans)}
.bp-lh .sp{flex:1}
.bp-dn{height:34px;width:260px;font-weight:600}
.bp-lt{width:100%;border-collapse:collapse;font-size:14px}
.bp-lt th,.bp-lt td{padding:7px 10px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}
.bp-lt thead th{font:500 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.bp-lt tbody th{font-weight:400;min-width:200px}
.bp-lt .fctl{height:32px;font-size:14px}
.bp-lt .esel{min-width:190px}
.bp-lt .r{text-align:right}
.bp-lt td.num{font:500 12px var(--font-sans);white-space:nowrap}
.bp-lf{min-width:240px}
.bp-fi{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
.bp-fi-l{font:600 12px var(--font-sans);color:var(--muted-foreground);min-width:18px}
.bp-fi .esel{width:auto;max-width:220px}
.bp-tag{display:inline-flex;align-items:center;gap:2px;height:26px;padding:0 2px 0 8px;border:1px solid var(--border-strong);font-size:12px}
.bp-x{width:24px;height:24px;background:none;border:0;color:var(--muted-foreground);cursor:pointer;font-size:14px}
.bp-x:hover{color:var(--neg)}
.bp-lempty{padding:24px;border:1px dashed var(--border-strong);display:flex;flex-direction:column;gap:12px;align-items:flex-start}
/* template step */
.bp-tpls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:760px}
.bp-tpl{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:18px;background:var(--well);border:1px solid var(--border-strong);color:var(--foreground);text-align:left;cursor:pointer;min-height:150px}
.bp-tpl.on{border-color:var(--ring);box-shadow:inset 0 0 0 1px var(--ring)}
.bp-tpl:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.bp-tpl-t{font:600 17px var(--font-sans)} .bp-tpl-s{font-size:14px;line-height:1.5;color:var(--muted-foreground)} .bp-tpl-m{margin-top:auto;font:500 12px var(--font-sans);color:var(--muted-foreground)}
@media (max-width:640px){ .bp-tpls{grid-template-columns:1fr} }
/* dialogs */
.bp-eff{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.bp-effo{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px;background:none;border:1px solid var(--border-strong);color:var(--foreground);text-align:left;cursor:pointer;min-height:44px}
.bp-effo b{font:600 14px var(--font-sans)} .bp-effo span{font-size:12px;color:var(--muted-foreground)}
.bp-effo[aria-checked=true]{border-color:var(--ring);background:color-mix(in oklch,var(--foreground) 7%,transparent)}
.bp-effo:focus-visible{outline:2px solid var(--ring);outline-offset:1px}

/* the canvas (packages/graph) */
.gc{position:absolute;inset:0;overflow:hidden;background-color:var(--background);background-image:radial-gradient(var(--border) 1px,transparent 1.2px);background-size:16px 16px;outline:none;touch-action:none;user-select:none;-webkit-user-select:none}
.gc:focus-visible{box-shadow:inset 0 0 0 2px var(--pos)}
.gc.pan,.gc.pan *{cursor:grab!important}
.gc.moving .gn-h{cursor:grabbing}
.gc-world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.gc-wires{position:absolute;left:0;top:0;width:1px;height:1px;overflow:visible;pointer-events:none}
.gw-e{fill:none;stroke-width:2;stroke-linecap:round}
.gw-e.spine{stroke:var(--foreground);stroke-width:4}
.gw-tri{fill:var(--foreground)}
.gw-e.sel{stroke-width:3.5;filter:drop-shadow(0 0 4px color-mix(in oklch,var(--foreground) 70%,transparent))}
.gw-e.err{stroke:var(--neg)!important;stroke-width:3;stroke-dasharray:7 5}
.gw-e.lift{opacity:.25}
.gw-hit{fill:none;stroke:transparent;stroke-width:14;pointer-events:stroke;cursor:pointer}
.gw-tmp{fill:none;stroke:var(--ring);stroke-width:2;stroke-dasharray:6 4}
.gc-frames,.gc-nodes{position:absolute;left:0;top:0}
.gf{position:absolute;left:0;top:0;border:1px dashed oklch(1 0 0 / 28%);background:oklch(1 0 0 / 2.5%)}
.gf.sel{border-color:var(--ring)}
.gf-t{position:absolute;top:6px;left:8px;font:500 12px var(--font-sans);color:var(--muted-foreground);cursor:pointer}
.gn{position:absolute;left:0;top:0;box-sizing:border-box;background:var(--card);border:1px solid var(--entered-tile-edge);box-shadow:0 8px 20px -10px oklch(0 0 0 / 70%);font:400 12px var(--font-sans);color:var(--foreground)}
.gn.calc{border-style:dashed;border-color:var(--calc-edge)}
.gn.sel{outline:2px solid var(--ring);outline-offset:1px}
.gn:focus-visible{outline:2px solid var(--ring);outline-offset:3px}
.gn.hl{box-shadow:0 0 0 5px color-mix(in oklch,var(--foreground) 22%,transparent),0 8px 20px -10px oklch(0 0 0 / 70%)}
.gn.err{border:1px solid var(--neg)}
.gn.k-step{border-color:var(--foreground)}
.gn.k-step .gn-h{background:var(--muted)}
.gn.k-step .gn-t{font-size:14px;}
.gn.k-exit,.gn.k-ext{background:var(--card)}
.gn-h{box-sizing:border-box;height:30px;display:flex;align-items:center;gap:7px;padding:0 8px;border-bottom:1px solid var(--border);background:var(--muted);cursor:grab}


.gn-t{flex:1;min-width:0;font:600 14px var(--font-sans);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gn-k{font:500 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.gn-ic{font-size:12px;color:var(--muted-foreground);width:12px;text-align:center}
.gn-r{position:relative;height:22px;display:flex;align-items:center;justify-content:space-between}
.gn-r>span:empty{flex:0 0 0}
.gp{position:relative;display:flex;align-items:center;gap:6px;min-width:0;height:22px;cursor:crosshair}
.gp.in{flex:1 1 auto;padding:0 8px 0 10px}
.gp.out{flex:1 1 auto;padding:0 10px 0 8px;justify-content:flex-end;text-align:right}
.gp-l{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--foreground)}
.gp-v{flex:none;font:500 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.gp.in .gp-v{margin-left:2px}
.gp.out .gp-v{margin-left:2px}
.gp.out .gp-l{color:var(--muted-foreground)}
.gp-d{position:absolute;top:50%;width:9px;height:9px;margin-top:-4.5px;background:var(--pc);flex:none}
.gp.in .gp-d{left:-5px} .gp.out .gp-d{right:-5px}
.gp-d[data-shape=circle]{border-radius:50%}
.gp-d[data-shape=diamond]{transform:rotate(45deg) scale(.86)}
.gp-d[data-shape=triangle]{clip-path:polygon(50% 0,100% 100%,0 100%);width:10px;height:10px;margin-top:-5px}
.gp.empty .gp-d{background:var(--card);box-shadow:inset 0 0 0 1.5px var(--pc)}
.gp.t-any .gp-l{color:var(--muted-foreground)}
.gp::before{content:"";position:absolute;top:2px;bottom:2px;width:18px}
.gp.in::before{left:-10px} .gp.out::before{right:-10px}
.gp:hover .gp-d{outline:2px solid oklch(1 0 0 / 50%);outline-offset:1px}
.gp.ok .gp-d{outline:3px solid var(--pos);outline-offset:1px}
.gp.no .gp-d{outline:3px solid var(--neg);outline-offset:1px}
.gp.fx{cursor:default}
.gp.grp .gp-l{font-weight:600}
.gn-f{box-sizing:border-box;height:26px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px;border-top:1px solid var(--border);font:500 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap;overflow:hidden}
.gn-who{overflow:hidden;text-overflow:ellipsis}
.gn-fi,.gn-fo{position:absolute;left:50%;width:0;height:0;margin-left:-7px;border-left:7px solid transparent;border-right:7px solid transparent}
.gn-fi{top:-1px;border-top:8px solid var(--foreground)}
.gn-fo{bottom:-9px;border-top:8px solid var(--foreground)}
.gc-marq{position:absolute;left:0;top:0;border:1px solid var(--ring);background:color-mix(in oklch,var(--foreground) 8%,transparent);pointer-events:none}
.gc-chip{position:absolute;left:0;top:0;z-index:6;max-width:320px;padding:6px 10px;background:color-mix(in oklch,var(--neg) 15%,var(--card));border:1px solid var(--neg);color:var(--neg);font:600 12px var(--font-sans);pointer-events:none}
.gc-tip{position:absolute;left:0;top:0;z-index:6;max-width:300px;padding:8px 10px;background:var(--card);border:1px solid var(--border-strong);box-shadow:var(--elev-1);font:400 12px/1.45 var(--font-sans);color:var(--foreground);pointer-events:none}
.gc-mini{position:absolute;right:12px;bottom:12px;z-index:5;background:oklch(0 0 0 / 94%);border:1px solid var(--border-strong);cursor:pointer}
.gc-mini .mn{fill:oklch(1 0 0 / 22%)} .gc-mini .mn.sp{fill:var(--foreground)} .gc-mini .mv{fill:color-mix(in oklch,var(--foreground) 6%,transparent);stroke:var(--ring);stroke-width:1.5}
.gc-empty{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);z-index:4;max-width:360px;padding:20px;text-align:center;background:oklch(0 0 0 / 90%);border:1px dashed var(--border-strong);display:flex;flex-direction:column;gap:12px;align-items:center}
.gc-empty p{margin:0;font-size:14px;line-height:1.5}
.gn-sv{color:var(--muted-foreground)}
.gm{position:fixed;z-index:120;width:300px;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border-strong);box-shadow:0 18px 40px oklch(0 0 0 / 60%)}
.gm-h{padding:10px 12px 6px;font:600 14px var(--font-sans);color:var(--foreground)}
.gm-s{margin:0 10px 6px;width:calc(100% - 20px)!important;height:34px!important}
.gm-l{max-height:280px;overflow:auto;padding:0 0 4px}
.gm-g{padding:8px 12px 4px;font:500 12px var(--font-sans);color:var(--muted-foreground)}
.gm-i{display:flex;flex-direction:column;gap:1px;padding:6px 12px;cursor:pointer;font-size:14px}
.gm-i.on{background:color-mix(in oklch,var(--foreground) 12%,transparent)}
.gm-i:hover{background:oklch(1 0 0 / 6%)}
.gm-sub{font-size:12px;color:var(--muted-foreground)}
.gm-none{padding:10px 12px;font-size:14px;color:var(--muted-foreground)}
.gm-f{padding:8px 12px;border-top:1px solid var(--border);font-size:12px;color:var(--muted-foreground)}
@media (prefers-reduced-motion:reduce){ .gc-world{will-change:auto} .gw-e.sel{filter:none} }
@media (max-width:1023px){ .bp{height:auto;min-height:0} }
.bp>#bpView{flex:1;min-height:0;display:flex;flex-direction:column}
.bp.bp-lv>#bpView{flex:none}
.gc-empty[hidden],.gc-chip[hidden],.gc-tip[hidden],.gc-marq[hidden]{display:none}
.bp-lsec .dt-scroll{overflow-x:auto;position:relative;max-width:100%}
@media (max-width:1279px){ .bp-body{grid-template-columns:176px minmax(0,1fr) 240px} .bp-body.ro{grid-template-columns:minmax(0,1fr) 240px} .bp-side{padding:12px} }

/* ---------- FEATURE v9.4 · MetricChartCard and Add widget ---------- */






































.mcc-t{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.mcc-t.on{position:static;width:100%;height:auto;clip-path:none;border-collapse:collapse;font:400 12px var(--font-sans);margin-top:6px}
.mcc-t.on caption{text-align:left;font:500 12px var(--font-sans);color:var(--muted-foreground);padding-bottom:4px}
.mcc-t.on th,.mcc-t.on td{padding:3px 0;border-bottom:1px solid var(--border);text-align:left;font-weight:400}
.mcc-t.on td{text-align:right}
.wd.wx-lit>.dpanel{border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in oklch,var(--foreground) 25%,transparent),var(--elev-1);transition:border-color var(--dur-3)}
.mcc-menu{z-index:96}
/* Add widget */
.wx-scrim{position:fixed;inset:0;z-index:110;background:oklch(0 0 0 / 66%);display:grid;place-items:center;padding:24px}
.wx{width:min(1180px,100%);height:min(780px,calc(100vh - 48px));display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border-strong);box-shadow:0 30px 80px oklch(0 0 0 / 60%);color:var(--foreground)}
.wx-hd{display:flex;align-items:center;gap:16px;padding:16px 20px;border-bottom:1px solid var(--border)}
.wx-hd h2{margin:0;font:600 18px var(--font-sans);white-space:nowrap}
.wx-s{flex:1;max-width:460px}
.wx-hd .sp{flex:1}
.wx-bd{flex:1;min-height:0;display:grid;grid-template-columns:208px minmax(0,1fr) 360px;grid-template-rows:minmax(0,1fr)}
.wx-cats{overflow:auto;border-right:1px solid var(--border);padding:10px 8px;display:flex;flex-direction:column;gap:1px}
.wx-cat{display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:36px;padding:0 10px;background:none;border:1px solid transparent;color:var(--foreground);font:500 14px var(--font-sans);text-align:left;cursor:pointer}
.wx-cat .n{font:500 12px var(--font-sans);color:var(--muted-foreground)}
.wx-cat:hover{background:oklch(1 0 0 / 5%)}
.wx-cat.on{background:color-mix(in oklch,var(--foreground) 10%,transparent);border-color:color-mix(in oklch,var(--foreground) 35%,transparent)}
.wx-cat.on .n{color:var(--foreground)}
.wx-cat:nth-child(2){margin-bottom:8px}
.wx-mid{min-width:0;display:flex;flex-direction:column}
.wx-lst{flex:1;overflow:auto;outline:none;padding:6px 0}
.wx-lst:focus-visible{box-shadow:inset 0 0 0 2px var(--pos)}
.wx-row{display:grid;grid-template-columns:minmax(0,1fr) 96px;align-items:center;gap:14px;padding:8px 16px;border-bottom:1px solid var(--border);cursor:pointer}
.wx-opt{display:grid;grid-template-columns:96px minmax(0,1fr) auto;align-items:center;gap:14px;min-width:0}
.wx-row:hover{background:oklch(1 0 0 / 4%)}
.wx-row.act{background:oklch(1 0 0 / 6%)}
.wx-lst:focus .wx-row.act{box-shadow:inset 0 0 0 1px var(--pos)}
.wx-row.sel{background:color-mix(in oklch,var(--foreground) 7%,transparent)}
.wx-sp{display:block;width:96px;height:34px}
.wx-sp svg{width:96px;height:34px;margin:0}
.wx-rep{display:grid;place-items:center;height:34px;border:1px dashed var(--border-strong);font:500 12px var(--font-sans);color:var(--muted-foreground)}
.wx-tx{display:flex;flex-direction:column;gap:2px;min-width:0}
.wx-nm{font:600 14px var(--font-sans);display:flex;align-items:center;gap:8px}
.wx-new{font:600 12px var(--font-sans);color:var(--background);background:var(--ring);padding:1px 6px}
.wx-fm{font:400 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wx-val{font:500 14px var(--font-sans);white-space:nowrap;text-align:right}
.wx-nd{color:var(--warn);font-size:12px}
.wx-row .btn{width:96px;justify-content:center}
.wx-on .r{display:none} .wx-on:hover .a,.wx-on:focus-visible .a{display:none} .wx-on:hover .r,.wx-on:focus-visible .r{display:inline}
.wx-on{color:var(--foreground);border-color:color-mix(in oklch,var(--foreground) 40%,transparent)}
.wx-empty{margin:0;padding:28px 20px;color:var(--foreground);font-size:14px}
.wx-ft{margin:0;padding:10px 16px;border-top:1px solid var(--border);font-size:14px;color:var(--muted-foreground)}
.wx-ft a{color:var(--foreground)}
.wx-pv{overflow:auto;border-left:1px solid var(--border);padding:16px;display:flex;flex-direction:column;gap:12px}
.wx-pe{margin:0}

.wx-o{display:flex;flex-direction:column;gap:6px}
.wx-ol{font:500 12px var(--font-sans);color:var(--muted-foreground)}
.wx-o .seg{display:flex;flex-wrap:wrap}
.wx-o .seg button{flex:1;min-height:34px}
.wx-o .seg button[aria-checked=true]{background:var(--ring);color:var(--background);border-color:var(--ring)}
.wx-o .seg button:disabled{opacity:.4;cursor:not-allowed}
.wx-hint{font-size:12px;color:var(--muted-foreground)}
.wx-land{margin:4px 0 0;font-size:14px;line-height:1.5;color:var(--foreground)}
.wx-pv>.btn{align-self:flex-start}
.wx-repcard{gap:8px}
@media (max-width:1100px){ .wx-bd{grid-template-columns:180px minmax(0,1fr)} .wx-pv{grid-column:1/-1;border-left:0;border-top:1px solid var(--border);max-height:46vh} .wx-bd{grid-template-rows:minmax(0,1fr) auto} }
@media (max-width:720px){ .wx-scrim{padding:0} .wx{height:100vh} .wx-bd{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr) auto} .wx-cats{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--border)} .wx-cat{white-space:nowrap} .wx-cat:nth-child(2){margin-bottom:0} .wx-opt{grid-template-columns:minmax(0,1fr)} .wx-row .wx-sp,.wx-row .wx-val{display:none} .wx-hd{flex-wrap:wrap;gap:10px 12px} .wx-s{order:3;flex-basis:100%;max-width:none} .wx-bd{grid-template-rows:auto minmax(200px,1fr) minmax(0,42vh)} .wx-pv{max-height:42vh;border-top:1px solid var(--border)} }
@media (prefers-reduced-motion:reduce){ .wd.wx-lit>.dpanel{transition:none} }







.wx-mid,.wx-cats,.wx-pv{min-height:0}
.wx-s .fctl:focus-visible{outline:none}
body.wx-open .toast{z-index:120}

/* ---------- FIX v9.6 · Profit ladder fills the height of its row ---------- */

.grid12.rows>.wd>.dpanel>.wd-b{flex:1;min-height:0}
.grid12.rows .lp[role=table]{flex:1 1 auto;min-height:0;max-height:calc(22px + 9 * 52px);display:grid;grid-template-rows:auto repeat(9,minmax(34px,1fr));align-content:stretch}



.rep-foot{margin-top:auto;padding-top:12px;display:flex;align-items:baseline;justify-content:space-between;gap:8px 16px;flex-wrap:wrap;min-height:24px;box-sizing:border-box}
.rep-foot .u-more{margin-top:0}
.rep-go{white-space:nowrap;background:none;border:0;padding:0;cursor:pointer;font:500 12px var(--font-sans);color:var(--foreground);text-decoration:none;line-height:24px}


.dash-arr .lp[role=table]{display:flex;flex-direction:column}


/* ---------- FIX v9.5 · Payback chart ---------- */
  /* scenario colours, dataviz-checked on var(--card) */
.pb{gap:18px}
.pb-top{display:flex;justify-content:space-between;align-items:flex-start;gap:20px 32px;flex-wrap:wrap}
.pb-t{flex:1 1 380px;min-width:0;display:flex;flex-direction:column;gap:8px}
.pb-cap{font:400 14px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0))}
.pb-h2{margin:0;font:700 30px/1.15 var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);letter-spacing:-.01em;color:var(--foreground,oklch(0.985 0 0));text-transform:none;text-wrap:balance}
.pb-d{white-space:nowrap}
.pb-p{margin:0;max-width:62ch;font:400 14px/1.55 var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--foreground,oklch(0.985 0 0))}
.pb-main{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:4px}
.pb-ml{font:500 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0));margin-right:4px}
.pb-main .inv-r{min-width:0;padding:5px 10px;border:1px solid var(--border-strong,oklch(1 0 0 / 15%));flex-direction:row;align-items:baseline;gap:8px}
.pb-main .inv-r .r2{display:none}
.pb-main .inv-r[aria-checked="true"]{box-shadow:none;border-color:var(--ring,oklch(0.556 0 0))}
.pb-cards{display:grid;grid-template-columns:repeat(3,minmax(170px,1fr));gap:10px;flex:0 1 640px;min-width:0}
.pb-card{display:flex;flex-direction:column;border:1px solid var(--border-strong,oklch(1 0 0 / 15%));background:var(--well,oklch(1 0 0 / 4%));min-width:0}
.pb-card:has([aria-checked="true"]){border-color:color-mix(in srgb,var(--sc) 55%,transparent)}
.pb-sw2{display:flex;flex-direction:column;align-items:flex-start;gap:5px;padding:12px 14px;background:none;border:0;color:var(--foreground,oklch(0.985 0 0));text-align:left;cursor:pointer;min-height:44px;width:100%}
.pb-sw2:focus-visible{outline:2px solid var(--ring,oklch(0.556 0 0));outline-offset:-2px}
.pb-sw2:disabled{cursor:not-allowed}
.pb-n{display:flex;align-items:center;gap:8px;font:600 14px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif)}
.pb-r{font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0))}
.pb-dd{display:flex;align-items:baseline;gap:8px;margin-top:2px}
.pb-dt{font:600 14px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--foreground,oklch(0.985 0 0))}
.pb-dt.na{color:var(--muted-foreground,oklch(0.708 0 0));font-weight:500}
.pb-in{font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0))}
.pb-card.off .pb-sw2{opacity:.5}
.pb-card.off .pb-n svg{opacity:.4}
.pb-in2{display:flex;align-items:center;gap:6px;margin:0 14px 6px;padding:0 10px;height:34px;border:1px solid var(--sc);background:var(--background,oklch(0.145 0 0))}
.pb-in2.err{border-color:var(--neg,oklch(0.704 0.191 22.216))}
.pb-in2 input{flex:1;min-width:0;height:32px;background:none;border:0;color:var(--foreground,oklch(0.985 0 0));font:500 14px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);outline:none}
.pb-in2 input::placeholder{color:var(--muted-foreground,oklch(0.708 0 0));font-family:var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif)}
.pb-in2:focus-within{outline:2px solid var(--ring,oklch(0.556 0 0));outline-offset:1px}
.pb-cur,.pb-mo{font:500 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0))}
.pb-h{margin:0 14px 10px;font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0))}
.pb-h.err{color:var(--neg,oklch(0.704 0.191 22.216))}
.pb-chart{position:relative;outline:none}
.pb-chart:focus-visible{box-shadow:0 0 0 2px var(--pos,oklch(0.765 0.177 163.2))}
.pb-svg .pb-neg{fill:var(--neg,oklch(0.704 0.191 22.216));opacity:.045}
.pb-svg .pb-g{stroke:oklch(1 0 0 / 7%);stroke-width:1}
.pb-svg .pb-g0{stroke:oklch(1 0 0 / 55%);stroke-width:1.2}
.pb-svg .pb-ax{font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);fill:var(--muted-foreground,oklch(0.708 0 0))}
.pb-svg .pb-ax.z{font-weight:700;fill:var(--foreground,oklch(0.985 0 0))}
.pb-svg .pb-tk{stroke:oklch(1 0 0 / 25%)}
.pb-svg .pb-zl{font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);fill:var(--muted-foreground,oklch(0.708 0 0))}
.pb-svg .pb-today{stroke:oklch(1 0 0 / 55%);stroke-width:1;stroke-dasharray:3 3}
.pb-svg .pb-tl{font:600 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);fill:var(--foreground,oklch(0.985 0 0))}
.pb-svg .pb-tl.s{font-weight:400;fill:var(--muted-foreground,oklch(0.708 0 0))}
.pb-svg .pb-fact{fill:none;stroke:var(--foreground,oklch(0.985 0 0));stroke-width:2.5;stroke-linejoin:round}
.pb-svg .pb-fc{fill:none}
.pb-svg .pb-inv{fill:var(--well,oklch(1 0 0 / 4%));stroke:var(--foreground,oklch(0.985 0 0));stroke-width:1.5}
.pb-svg .pb-il{font:500 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);fill:var(--foreground,oklch(0.985 0 0))}
.pb-svg .pb-ring{fill:var(--well,oklch(1 0 0 / 4%));stroke-width:2.25}
.pb-svg .pb-drop{stroke-width:1;stroke-dasharray:2 3;opacity:.8}
.pb-svg .pb-chip text{font:600 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);fill:var(--background,oklch(0.145 0 0))}
.pb-svg .pb-el{font:600 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif)}
.pb-svg .pb-dot{fill:var(--foreground,oklch(0.985 0 0));stroke:var(--well,oklch(1 0 0 / 4%));stroke-width:2}
.pb-svg .pb-dl{font:600 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);fill:var(--foreground,oklch(0.985 0 0))}
.pb-svg .pb-hair{stroke:oklch(1 0 0 / 50%);stroke-width:1}
.pb-svg .pb-hd{stroke:var(--well,oklch(1 0 0 / 4%));stroke-width:2}
.pb-tip{width:262px;box-sizing:border-box;white-space:normal;padding:10px 12px;font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);pointer-events:none;display:flex;flex-direction:column;gap:5px}
.pb-tip[hidden]{display:none}
.pt-h{display:flex;justify-content:space-between;gap:8px} .pt-h b{font:600 14px var(--font-sans)} .pt-h span{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.pt-r{display:grid;grid-template-columns:18px 1fr auto;align-items:center;gap:8px} .pt-r b{font:500 12px var(--font-sans);font-weight:500}
.pt-s{font:400 12px var(--font-sans);color:var(--muted-foreground);padding-left:26px}
.pt-c{font:600 12px var(--font-sans)}
.pb-f{gap:8px 18px}
.pb-k{display:inline-flex;align-items:center;gap:8px;font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--foreground,oklch(0.985 0 0))}
.pb-note{font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0))}
.pb-f .sp{flex:1}
.pb-end .esel{width:auto;min-width:150px;height:32px}
@media (max-width:900px){ .pb-cards{grid-template-columns:1fr;flex-basis:100%} .pb-h2{font-size:24px} }
@media (prefers-reduced-motion:reduce){ .pb-svg .pb-fc,.pb-svg .pb-fact{transition:none!important} }
.pb-svg .pb-il,.pb-svg .pb-dl,.pb-svg .pb-el,.pb-svg .pb-zl,.pb-svg .pb-tl{paint-order:stroke;stroke:var(--well,oklch(1 0 0 / 4%));stroke-width:4px;stroke-linejoin:round}

/* =====================================================================
   FIX v9.7 · one chart system (app/charts.js) · tokens and anatomy (ChartAnatomy)
   ===================================================================== */
:root{/* categorical series (validated dark, var(--card)): fixed order, never cycled */
  }
.chart{position:relative;display:flex;flex-direction:column;gap:8px;min-width:0;outline:none}
.chart:focus-visible{outline:2px solid var(--ring);outline-offset:4px}
.chart-box{position:relative;min-width:0;width:100%}
.chart-svg{display:block;overflow:visible}
.chart-svg text{font-family:var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);font-variant-numeric:tabular-nums}
.chart-grid{stroke:var(--chart-grid,oklch(1 0 0 / 6%));stroke-width:1;shape-rendering:crispEdges}
.chart-zero{stroke:var(--chart-zero,oklch(1 0 0 / 20%));stroke-width:1;shape-rendering:crispEdges}
.chart-ax{font-size:12px;fill:var(--muted-foreground,oklch(0.708 0 0))} .chart-ax.z{fill:var(--muted-foreground,oklch(0.708 0 0))}
.chart-mo{font-size:12px;fill:var(--muted-foreground,oklch(0.708 0 0))} .chart-mo.sel{fill:var(--foreground,oklch(0.985 0 0));font-weight:600}
.chart-rl{font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif)!important;fill:var(--muted-foreground,oklch(0.708 0 0))}
.chart-b{fill:var(--chart-3,oklch(0.439 0 0))} .chart-b.rest-pos{fill:var(--chart-3,oklch(0.439 0 0))} .chart-b.rest-neg{fill:var(--neg-past,color-mix(in oklch, oklch(0.704 0.191 22.216) 45%, transparent))}
.chart-b.sel{fill:var(--acc,var(--chart-1,oklch(0.87 0 0)))} .chart-b.sel.neg{fill:var(--neg,oklch(0.704 0.191 22.216))}
.chart-b.out{fill:var(--chart-3,oklch(0.439 0 0))} .chart-b.out.sel{fill:var(--foreground,oklch(0.985 0 0))}
.chart-seg{opacity:.45} .chart-seg.sel{opacity:1}
.chart-plan{stroke:var(--plan-line,color-mix(in oklch, oklch(0.985 0 0) 70%, transparent));stroke-width:2;stroke-linecap:round} .chart-plan.ly{stroke:var(--muted-foreground,oklch(0.708 0 0));stroke-dasharray:3 2}
.chart-ln{fill:none;stroke:var(--acc,var(--chart-1,oklch(0.87 0 0)));stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart-cmp{fill:none;stroke:var(--plan-line,color-mix(in oklch, oklch(0.985 0 0) 70%, transparent));stroke-width:1.5;stroke-dasharray:4 3} .chart-cmp.ly{stroke:var(--muted-foreground,oklch(0.708 0 0))}
.cw0{stop-color:var(--acc,var(--chart-1,oklch(0.87 0 0)));stop-opacity:.22} .cw1{stop-color:var(--acc,var(--chart-1,oklch(0.87 0 0)));stop-opacity:0}
.chart-area.rt{fill:var(--acc,var(--chart-1,oklch(0.87 0 0)));fill-opacity:.12}
.chart-dot{fill:var(--acc,var(--chart-1,oklch(0.87 0 0)));stroke:var(--card,oklch(0.205 0 0));stroke-width:2.5;paint-order:stroke}
.chart-band{fill:var(--pos-band,color-mix(in oklch, oklch(0.765 0.177 163.2) 8%, transparent))} .chart-bandl{font-size:12px;fill:var(--muted-foreground,oklch(0.708 0 0))}
.chart-pill rect{fill:var(--muted,oklch(0.269 0 0));stroke:var(--border,oklch(1 0 0 / 10%));stroke-width:1}
.chart-pill text{font-size:12px;font-weight:600;fill:var(--foreground,oklch(0.985 0 0))}
.chart-lab{font-size:12px;font-weight:600;fill:var(--foreground,oklch(0.985 0 0))}
.chart-hair{stroke:oklch(1 0 0 / 50%);stroke-width:1;pointer-events:none}
.chart-track{fill:var(--chart-3,oklch(0.439 0 0));opacity:.6}
.chart-bul.ok{fill:var(--pos,oklch(0.765 0.177 163.2))} .chart-bul.warn{fill:var(--warn,oklch(0.828 0.189 84.4))} .chart-bul.over{fill:var(--neg,oklch(0.704 0.191 22.216))} .chart-bul.na{fill:var(--chart-3,oklch(0.439 0 0))}
.chart-flow.base{fill:var(--acc,var(--chart-1,oklch(0.87 0 0)))} .chart-flow.in{fill:var(--acc,var(--chart-1,oklch(0.87 0 0)));fill-opacity:.5} .chart-flow.out{fill:var(--neg,oklch(0.704 0.191 22.216))}
.chart-cell{fill:var(--acc,var(--chart-1,oklch(0.87 0 0)))} .chart-ct{font-size:12px;fill:var(--foreground,oklch(0.985 0 0))} .chart-ct.on{fill:var(--primary-foreground,oklch(0.205 0 0));font-weight:600}
.chart-cell-sel{fill:none;stroke:var(--foreground,oklch(0.985 0 0));stroke-width:1.5}
.chart-lg{display:flex;flex-wrap:wrap;gap:4px 14px;font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0))}
.chart-lg span{display:inline-flex;align-items:center;gap:6px}
.chart-lg .k,.chart-tip .k{display:inline-block;width:10px;height:10px;border-radius:2px;background:var(--acc,var(--chart-1,oklch(0.87 0 0)));flex:none}
.chart-lg .k.in,.chart-tip .k.in{background:var(--acc,var(--chart-1,oklch(0.87 0 0)))} .chart-lg .k.out,.chart-tip .k.out{background:var(--foreground,oklch(0.985 0 0))}
.chart-lg .k.ok{background:var(--pos,oklch(0.765 0.177 163.2))} .chart-lg .k.warn{background:var(--warn,oklch(0.828 0.189 84.4))} .chart-lg .k.over{background:var(--neg,oklch(0.704 0.191 22.216))}
.chart-lg .k.plan,.chart-lg .k.cmpb{width:12px;height:2px;border-radius:1px;background:var(--plan-line,color-mix(in oklch, oklch(0.985 0 0) 70%, transparent))}
.chart-lg .k.cmpl{width:14px;height:0;background:none;border-top:1.5px dashed var(--plan-line,color-mix(in oklch, oklch(0.985 0 0) 70%, transparent))} .chart-lg .k.ly{border-top-color:var(--muted-foreground,oklch(0.708 0 0));background:none}
.chart-note{margin:0;font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0))}
.chart-tip{position:absolute;z-index:5;min-width:150px;max-width:240px;box-sizing:border-box;padding:8px 10px;background:var(--muted,oklch(0.269 0 0));border:1px solid var(--border,oklch(1 0 0 / 10%));box-shadow:0 8px 20px -8px oklch(0 0 0 / 60%);pointer-events:none;display:flex;flex-direction:column;gap:3px;font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0))}
.chart-tip[hidden]{display:none}
.chart-tip .ct-h{font:600 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--foreground,oklch(0.985 0 0))}
.chart-tip .ct-r{display:flex;align-items:center;gap:6px} .chart-tip .ct-r b{font:500 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--foreground,oklch(0.985 0 0))} .chart-tip .ct-r.s b{font-weight:600}
.chart-tip .ct-c{font:500 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif)} .chart-tip .ct-c.t-pos{color:var(--pos,oklch(0.765 0.177 163.2))} .chart-tip .ct-c.t-neg{color:var(--neg,oklch(0.704 0.191 22.216))} .chart-tip .ct-c.t-neutral{color:var(--muted-foreground,oklch(0.708 0 0))}
.chart-spark{display:inline-block;line-height:0;vertical-align:middle} .chart-spark .chart-dot{stroke-width:2}
@media (forced-colors:active){ .chart-b.sel,.chart-ln,.chart-dot{forced-color-adjust:none} }
.chart-ref{stroke:var(--muted-foreground,oklch(0.708 0 0));stroke-width:1;stroke-dasharray:4 3} .chart-refl{font-size:12px;fill:var(--muted-foreground,oklch(0.708 0 0));paint-order:stroke;stroke:var(--card,oklch(0.205 0 0));stroke-width:3px}
/* v9.7 · MetricChartCard anatomy: 8 px category square, Archivo 600 13 name, mono 11 month, ⋯ without a frame;
   value Archivo 600 28 with proportional figures; the change as a tinted pill with an arrow; formula on one line */











.mcc>.chart{margin-top:auto}
.chart.fill{flex:1;min-height:0} .chart.fill .chart-box{flex:1} .chart.fill .chart-box>.chart-svg{position:absolute;left:0;top:0}
.chart-b.part{fill-opacity:.55;stroke:var(--acc,var(--chart-1,oklch(0.87 0 0)));stroke-width:1;stroke-dasharray:2 2}
.chart-fc{fill:none;stroke:var(--acc,var(--chart-1,oklch(0.87 0 0)));stroke-width:1.5;stroke-dasharray:3 2}
.chart-fcb{stroke:var(--muted-foreground,oklch(0.708 0 0));stroke-width:1}
.chart-fcl{fill:none;stroke:var(--acc,var(--chart-1,oklch(0.87 0 0)));stroke-width:2;stroke-dasharray:2 4;stroke-linecap:round}
.chart-fcp{fill:var(--card,oklch(0.205 0 0));stroke:var(--acc,var(--chart-1,oklch(0.87 0 0)));stroke-width:2}
.chart-fcband{fill:var(--acc,var(--chart-1,oklch(0.87 0 0)));fill-opacity:.18}
.chart-dot.part{fill:var(--card,oklch(0.205 0 0));stroke:var(--acc,var(--chart-1,oklch(0.87 0 0)));stroke-width:2}
.chart-b.crit{fill:var(--neg,oklch(0.704 0.191 22.216))}
.chart-mo.sub{font-size:12px;fill:var(--muted-foreground,oklch(0.708 0 0))} .chart-mo.fc{fill:var(--muted-foreground,oklch(0.708 0 0));font-style:italic}
.chart-brk{stroke:var(--muted-foreground,oklch(0.708 0 0));stroke-width:1;stroke-dasharray:3 4;opacity:.6} .chart-brkl{font-size:12px;fill:var(--muted-foreground,oklch(0.708 0 0))}
.chart-mbs{position:absolute;inset:0;pointer-events:none}
.chart-mb{position:absolute;pointer-events:auto;background:none;border:0;padding:0;margin:0;cursor:pointer}
.chart-mb:hover{background:oklch(1 0 0 / 4%)} .chart-mb:focus-visible{outline:2px solid var(--ring,oklch(0.556 0 0));outline-offset:-2px}
@media (prefers-reduced-motion:no-preference){ .chart-svg.anim .chart-ln{stroke-dasharray:2000;stroke-dashoffset:2000;animation:chartDraw var(--dur-crit-march) var(--ease-out) forwards} .chart-svg.anim .chart-b{animation:chartFade var(--dur-4) var(--ease-out) both} }
@keyframes chartDraw{to{stroke-dashoffset:0}} @keyframes chartFade{from{opacity:0}}
/* v9.7 · KPI card legend mirrors the marks: bars, plan tick, forecast outline */





.chart-rv{font:500 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif)!important;fill:var(--foreground,oklch(0.985 0 0))}
.c-flow .chart-svg .chart-rl{font-size:14px!important}

.chart-seg.nb{fill:var(--chart-3,oklch(0.439 0 0))!important}
.chart-tgt{fill:none;stroke:var(--pos,oklch(0.765 0.177 163.2));stroke-width:1;stroke-dasharray:2 2}
.chart-tick{stroke:var(--foreground,oklch(0.985 0 0));stroke-width:1.5} .chart-tick.ok{stroke:var(--pos,oklch(0.765 0.177 163.2))}
.chart-tl{font-size:12px;fill:var(--muted-foreground,oklch(0.708 0 0))} .chart-tl.ok{fill:var(--pos,oklch(0.765 0.177 163.2))}
@media (prefers-reduced-motion:no-preference){ .chart-seg.grow{transform-box:fill-box;transform-origin:bottom;animation:anGrow var(--dur-2) var(--ease-out) both} }
.chart-rn{font:500 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif)!important;fill:var(--muted-foreground,oklch(0.708 0 0))} .chart-rn.t-neg{fill:var(--neg,oklch(0.704 0.191 22.216))} .chart-rn.t-caution{fill:var(--warn,oklch(0.828 0.189 84.4))}
.chart-rl.mono{font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif)!important;fill:var(--foreground,oklch(0.985 0 0))}
.chart-cell.neu{fill:oklch(1 0 0 / 12%)} .chart-cell-e{fill:none;stroke:var(--border,oklch(1 0 0 / 10%))} .chart-cell-e.fut{stroke-dasharray:2 3}
.chart-mark{fill:none;stroke:var(--pos,oklch(0.765 0.177 163.2));stroke-width:1.5} .chart-markl{font-size:12px;fill:var(--pos,oklch(0.765 0.177 163.2));paint-order:stroke;stroke:var(--card,oklch(0.205 0 0));stroke-width:3px}
.c-heatmap .chart-box{overflow-x:auto}
.chart-hlg{display:flex;align-items:center;gap:4px;font:400 12px var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0))} .chart-hlg i{display:inline-block;width:32px;height:12px;background:var(--acc,var(--chart-1,oklch(0.87 0 0)))} .chart-hlg span{margin-left:8px}
.chart-rv.sub{fill:var(--muted-foreground,oklch(0.708 0 0))} .chart-flow.hatch{stroke:none}
.chart-svg{max-width:100%} .c-heatmap .chart-svg{max-width:none} .chart-box{min-width:0}

/* =====================================================================
   FEATURE v10.0 · projects and business types
   ===================================================================== */













.tchip{display:inline-block;padding:1px 6px;font:500 12px var(--font-sans);border:1px solid var(--border);color:var(--muted-foreground);white-space:nowrap;margin-right:4px}
.tchip.t-b2c{color:var(--chart-1);border-color:color-mix(in oklch,var(--chart-1) 40%,transparent)} .tchip.t-b2b{color:var(--chart-1);border-color:color-mix(in oklch,var(--chart-1) 40%,transparent)} .tchip.t-provider{color:var(--chart-1);border-color:color-mix(in oklch,var(--chart-1) 40%,transparent)}
.tchip.demo{color:var(--warn);border-color:color-mix(in oklch,var(--warn) 40%,transparent)}
.btp{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:8px}
@media (max-width:767px){ .btp{grid-template-columns:1fr} }
.btp-c{display:flex;flex-direction:column;gap:10px;align-items:flex-start;padding:20px;background:var(--card);border:1px solid var(--border-strong);color:var(--foreground);text-align:left;cursor:pointer;min-height:180px}
.btp-c:hover{border-color:var(--border-strong)} .btp-c:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.btp-c.on{border-color:var(--ring);background:var(--pos-soft,var(--ring))}
.btp-t{font:600 18px var(--font-sans)} .btp-w{font:400 14px/1.45 var(--font-sans);color:var(--muted-foreground)}
.btp-l{font:400 12px/1.5 var(--font-sans);color:var(--foreground)} .btp-m{font:500 12px var(--font-sans);color:var(--muted-foreground);margin-top:auto}
.btp-demo{display:flex;align-items:center;gap:10px;margin-top:18px;font:400 14px var(--font-sans);color:var(--foreground)}
.btp-go{display:flex;align-items:center;gap:12px;margin-top:24px} .btp-go .sp{flex:1}
.proj-t tr.cur th b{color:var(--foreground)}
.rtp-check{white-space:nowrap}
.warnrow th{color:var(--warn)}
.btp-demo .sw{width:44px;height:24px;cursor:pointer;background:none;padding:0} .btp-demo .sw::after{top:4px;left:4px;width:14px;height:14px} .btp-demo .sw.on::after{left:24px}


.setup-type-pick{margin-top:10px;max-width:640px;padding:16px 20px;border:1px solid var(--ring);background:var(--neutral-soft)}
.tscroll{overflow-x:auto;max-width:100%;position:relative;-webkit-overflow-scrolling:touch} .tscroll>table{min-width:100%}   /* v10.0 · wide tables scroll inside their panel on phones */
   /* small screens: projects are in the profile menu */



/* =====================================================================
   FIX v9.9 · header: every framed control is --ctl-h high and centred · menu: collapses only by its button
   ===================================================================== */
:root{--ctl-h:var(--control-h)}









/* the collapsed rail never grows past the window: its expand button stays below the header (was 40px under it at 900px high) */


/* the menu docked at ≥ 1280 when it is open: the page moves right of it (no overlay) */
@media (min-width:1280px){

   /* the page keeps 24px from the menu and from the window edge */
  body.nav-docked:not(.collapsed) .toast{left:256px}
}
/* with the menu docked the page is 124px narrower than with the rail: the narrow layouts start 124px earlier */

@media (min-width:1280px) and (max-width:1366px){

  body.nav-docked:not(.collapsed) .factgrid{grid-template-columns:200px minmax(0,1fr)}
  body.nav-docked:not(.collapsed) .fg-live{grid-column:1 / -1;position:static;max-height:none}
  body.nav-docked:not(.collapsed) .fg-live.dpanel{max-height:none}
  body.nav-docked:not(.collapsed) .drow:not(.plan-grid .drow){grid-template-columns:18px minmax(0,1fr) minmax(0,.7fr) 112px var(--act-w)}
  body.nav-docked:not(.collapsed) .drow:not(.plan-grid .drow) .hide-md{display:none}
}

/* FEATURE v10.2 · Game provider clients (ProviderClients · ProviderPlan): entered cells mint-edged, calculated cells dashed, tier chips */
#sheet.cl560{--sheet-w:560px}
#sheet .cl-sheet .fld{height:36px!important;font-size:14px!important;box-sizing:border-box}
#sheet .cl-sheet textarea.fld{height:auto!important}
.cl-sheet{display:flex;flex-direction:column;gap:16px}
.cl-sheet .lab,.cl-page .lab{display:block;font-size:12px;color:var(--muted-foreground);margin-bottom:6px}
.cl-side{font-size:12px;color:var(--muted-foreground);line-height:1.45}
.cl-g2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.cl-g2 .cl-span2{grid-column:1/-1}
.cl-g2:has(#clCur){grid-template-columns:1fr 1fr 1fr}
.cl-seg2{display:flex;flex-wrap:wrap}.cl-seg2 button{height:32px;}
.cl-tiers{display:flex;flex-direction:column;gap:8px}
.cl-th,.cl-tr2{display:grid;grid-template-columns:24px 1fr 1fr 84px 32px;gap:8px;align-items:center}
.cl-th{font:600 12px var(--font-sans);color:var(--muted-foreground)}
.cl-tr2 .fld[readonly]{color:var(--muted-foreground);background:transparent}
.cl-pin{position:relative;display:block}.cl-pin input{width:100%;padding-right:26px!important;border-color:var(--ring)!important}.cl-pin i{position:absolute;right:10px;top:50%;transform:translateY(-50%);font:500 12px var(--font-sans);font-style:normal;color:var(--muted-foreground);pointer-events:none}
.cl-fix{max-width:160px}
.cl-add{align-self:flex-start;color:var(--foreground);font-size:14px;background:none;border:0;padding:4px 0;cursor:pointer}
.cl-radios{display:flex;flex-direction:column;gap:8px;font-size:14px}.cl-radios label{display:flex;gap:10px;align-items:flex-start;cursor:pointer}.cl-radios input{accent-color:var(--primary);margin-top:3px}.cl-radios b{font-weight:600}
.cl-prev{border:1px solid var(--ring);background:var(--ring);padding:14px 16px;display:flex;flex-direction:column;gap:6px}
.cl-try{width:160px!important;height:32px!important;text-align:right;font-family:var(--font-sans)}
.cl-earn{font-size:15px}.cl-earn b{font-weight:600}
.cl-perr,.cl-ferr{color:var(--neg);font-size:14px;line-height:1.5}
.cl-ferr{border:1px solid color-mix(in oklch,var(--neg) 40%,transparent);background:var(--neg-soft);padding:10px 12px}
.cl-tier,.cl-warn{display:inline-block;font:600 12px var(--font-sans);padding:2px 6px;white-space:nowrap;transition:background-color var(--dur-2)}
.cl-tier{color:var(--foreground);border:1px solid var(--ring)}
.cl-warn{color:var(--warn);border:1px solid color-mix(in oklch,var(--warn) 45%,transparent)}
.cl-tier.flash,.cl-warn.flash{background:var(--ring)}
@media (prefers-reduced-motion:reduce){.cl-tier,.cl-warn{transition:none}}
.cl-ops{display:flex;flex-direction:column;gap:8px;padding-left:12px;border-left:1px solid var(--border-strong)}
.cl-op{display:grid;grid-template-columns:1fr 120px 32px;gap:8px}
.cl-cur{border:1px solid var(--border-strong);padding:14px 16px}.cl-curv{font-size:15px;color:var(--foreground);margin-bottom:4px}
.cl-hist summary{cursor:pointer;margin:0}.cl-hist ul{list-style:none;margin:8px 0 0;padding:0}.cl-hist li{padding:8px 0;border-bottom:1px solid var(--border);font-size:14px}
.chipk{display:inline-block;font:600 12px var(--font-sans);padding:2px 6px;border:1px solid oklch(1 0 0 / 22%);color:var(--muted-foreground);white-space:nowrap}
.cl-via{font-size:12px;color:var(--muted-foreground)}
.cl-st{white-space:nowrap}.cl-st.st-live{color:var(--pos)}.cl-st.st-integrating{color:var(--warn)}.cl-st.st-paused,.cl-st.st-ended{color:var(--muted-foreground)}
.cl-tools{gap:8px;flex-wrap:wrap;justify-content:flex-end}
.cl-sel{height:32px!important;width:auto!important;min-width:128px}
.cl-seg button{white-space:nowrap}
table.cl-t td{white-space:nowrap}
table.cl-t td.cl-name{padding-top:6px;padding-bottom:6px;height:52px}
table.cl-t td.cl-name>*{vertical-align:middle}
.cl-nm{display:inline-flex;flex-direction:column;min-width:0;vertical-align:middle}.cl-nm b,.cl-nb{font-weight:600;font-size:14px}
.cl-nb{background:none;border:0;padding:0;color:var(--foreground);font-family:var(--font-sans);text-transform:none;text-align:left;cursor:pointer;text-decoration:none}.cl-nb:hover{text-decoration:underline}
.cl-sub{display:block;font-size:12px;color:var(--muted-foreground);font-weight:400}
.xpd-sp{display:inline-block;width:28px}
tr.cl-kid td.cl-name{padding-left:44px}tr.cl-kid .cl-nb,tr.cl-kid .cl-nm>span:first-child{font-weight:400;color:var(--muted-foreground)}
table.cl-pt tr.cl-kid td.cl-name{padding-left:30px}
tr.cl-agg td{background:var(--ring)}
.cl-terms{font-size:12px}
.cl-tr .chart-spark{display:inline-block;vertical-align:middle}
.cl-foot{margin-top:10px;font-size:12px;color:var(--muted-foreground)}
.cl-strip{display:flex;gap:20px;align-items:center;flex-wrap:wrap;padding:14px 18px;border:1px solid var(--border);background:var(--card);margin:0 0 16px}
.cl-strip b{font-weight:600}
.cl-ptools{gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
table.cl-pt td{height:48px}
table.cl-pt td.cl-g{width:170px}table.cl-pt td.cl-rv{width:150px}
.cl-in,.cl-ro,table.cl-pt .calcv,table.cl-other .fld{height:32px!important;width:100%;font:500 14px var(--font-sans)!important;font-variant-numeric:tabular-nums;text-align:right;padding:0 10px!important;display:flex;align-items:center;justify-content:flex-end;box-sizing:border-box}
.cl-in{border:1px solid var(--ring)!important;background:var(--well)!important;color:var(--foreground)}
.cl-in:focus{outline:2px solid var(--ring);outline-offset:1px}
.cl-in.is-err{border-color:var(--neg)!important}
.cl-ro{border:1px solid var(--border);color:var(--muted-foreground)}
table.cl-pt .calcv{border:1px dashed oklch(1 0 0 / 40%)!important;background:transparent!important;color:var(--foreground)}
tr.cl-grp td{height:34px!important;font:600 12px var(--font-sans)!important;color:var(--muted-foreground)!important;background:var(--row-group)}
tr.cl-adj .calcv{color:var(--warn)!important}
.cl-legend{display:flex;gap:18px;flex-wrap:wrap;font-size:12px;color:var(--muted-foreground);margin-top:12px}.cl-legend span{display:inline-flex;gap:6px;align-items:center}
.cl-legend i{width:14px;height:14px;display:inline-block}.cl-legend .k-in{border:1px solid var(--ring)}.cl-legend .k-calc{border:1px dashed oklch(1 0 0 / 40%)}
table.cl-other{margin-top:16px}table.cl-other td.cl-g{width:170px}
.cl-imp{width:100%;border-collapse:collapse;font-size:14px}.cl-imp th{font:600 12px var(--font-sans);color:var(--muted-foreground);text-align:left;padding:8px;border-bottom:1px solid var(--border-strong)}
.cl-imp td{padding:8px;border-bottom:1px solid var(--border);vertical-align:top}.cl-imp tr.bad td,.cl-imp tr.unk td{background:color-mix(in oklch,var(--warn) 6%,transparent)}.cl-imp .r{text-align:right}
.cl-csv{font-family:var(--font-sans);font-size:12px}
.cl-empty{border:1px dashed var(--border-strong);padding:28px}
@media (max-width:760px){.cl-g2,.cl-g2:has(#clCur){grid-template-columns:1fr}.cl-strip{gap:10px}}
.gn .gn-cl{display:block;font-size:12px;color:var(--muted-foreground)}.gn .gn-tiers{display:block;font:500 12px var(--font-sans);color:var(--foreground);margin-top:4px;line-height:1.5}
abbr.kw{text-decoration:none}

/* FIX v9.10 · one grid for the header and the page: one menu offset (--nav-off) and one page width (--pg-w) at ≥ 1280.
   The header's content box is the page's box: project switcher left = page left, user block right = page right (±1px).
   The logo stays over the menu. Menu open/close moves both together in 200 ms ease-out (none with reduced motion).
   Below 1280 the menu is an overlay and header and page are centred on the whole window (rules above, unchanged). */
@media (min-width:1280px){
  body:not(.auth){--nav-off:0px;--pg-w:min(var(--content-max),100% - 2*(var(--rail) + var(--gutter)))}
  body.nav-docked:not(.collapsed):not(.auth){--nav-off:244px;--pg-w:min(var(--content-max),100% - 268px)}   /* menu 232 + 12 · 24px from the menu and the window edge (v9.9) */

}


/* the header fits its container: tighter gaps where the open menu or the rail leaves less room, the user's name last to go */

/* last resort: a long project name gives way (ellipsis) before anything leaves the header's column */





/* the logo sits in the menu's zone, centred: 64px rail → 12px, open menu (232px) → 96px */
/* FIX v10.5 §4 (replaces v9.10 “centred over the menu zone”): the logo's left edge is the left edge of the menu icons —
   the icons of the open menu (12 + 12 px), the key tiles of the rail (16 px); centred on the 64px header */






/* FEATURE v10.3 · provider client tables (more columns) and the provider P&L */

 table.cl-mx td[data-cl-tier]{white-space:nowrap;padding-right:0} 

table.cl-mx th.cl-dh{white-space:nowrap}
table.cl-mx .cl-x{margin-left:6px;width:20px;height:20px;border:0;background:none;color:var(--muted-foreground);cursor:pointer;font-size:14px;line-height:1;vertical-align:middle}
table.cl-mx .cl-x:hover{color:var(--neg)} table.cl-mx .cl-lock{margin-left:6px;font-size:12px;opacity:.6;cursor:help}
table.cl-mx td.cl-na{color:var(--muted-foreground)}
table.cl-mx tr.cl-tot td{font-weight:600;border-top:1px solid var(--border-strong)}
table.cl-mx .calcv.cl-hw{color:var(--warn)!important;border-color:color-mix(in oklch,var(--warn) 55%,transparent)!important}
table.cl-mx .calcv.cl-ov{border-style:solid!important;border-color:var(--ring)!important}

.cl-ovb{border:0;background:none;color:var(--foreground);font:500 12px var(--font-sans);cursor:pointer;white-space:nowrap;padding:0 2px}
.cl-hwl{color:var(--warn);font-size:12px;margin:8px 0 0;min-height:0}
.cl-addl{color:var(--foreground);background:none;border:0;cursor:pointer;font-size:14px;padding:4px 0;white-space:nowrap}
.pv-t td{height:38px} .pv-t tr.pv-lvl td{font-weight:600;background:oklch(1 0 0 / 3.5%)} .pv-t tr.pv-sub td:first-child{color:var(--muted-foreground)} .pv-t tr.pv-sub2 td:first-child{color:var(--muted-foreground)}
.pv-tw{width:20px;height:20px;border:0;background:none;color:var(--muted-foreground);cursor:pointer;margin-right:4px;padding:0} .pv-sp{display:inline-block;width:24px}
.pv-act{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--border);border:1px solid var(--border);margin-top:8px}
.pv-act>div{background:var(--card);padding:10px 12px;display:flex;flex-direction:column;gap:4px}.pv-act b{font-size:14px;font-weight:500}
.pv-t td:first-child{white-space:nowrap} .pv-tw svg{transition:transform var(--dur-2) var(--ease-out);vertical-align:-1px} .pv-tw[aria-expanded="true"] svg{transform:rotate(90deg)} .cl-rmrow{justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid var(--border)} @media (prefers-reduced-motion:reduce){.pv-tw svg{transition:none}} .pv-sum{max-width:440px;margin-left:auto}.pv-s{gap:16px}.pv-s>.mono{white-space:nowrap}.pv-s{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border);color:var(--muted-foreground)}.pv-s.b{font-weight:600;color:var(--foreground)} .pv-s{gap:16px}
.pv-cc{font-weight:600}

/* FEATURE v10.4 · deleting a project: the ⋯ menu of a row, Recently deleted, the risk block of the dialog, Delete this project */
.prow-a{display:inline-flex;align-items:center;gap:8px;justify-content:flex-end}
.prow-dots{width:32px;height:32px;display:inline-grid;place-items:center}
.prow-m{position:fixed;z-index:96;min-width:220px;max-width:min(320px,calc(100vw - 16px));display:flex;flex-direction:column;background:var(--well);border:1px solid var(--border-strong);box-shadow:var(--elev-1);padding:6px 0}
.prow-m [role=menuitem]{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:38px;justify-content:center;padding:8px 14px;background:none;border:0;color:var(--foreground);font:400 14px var(--font-sans);text-align:left;cursor:pointer}
.prow-m [role=menuitem]:hover,.prow-m [role=menuitem]:focus-visible{background:oklch(1 0 0 / 6%);outline:none}
.prow-m [role=menuitem]:focus-visible{box-shadow:inset 0 0 0 1px var(--pos)}
.prow-m .neg{color:var(--neg)}

.prow-m .prow-h{display:block;font:400 12px var(--font-sans);color:var(--muted-foreground);white-space:normal;line-height:1.4;max-width:260px}
.pdel-l .nw{white-space:nowrap}

.proj-del .pd-left{font:400 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.pdel-sum{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border:1px solid var(--border);background:oklch(1 0 0 / 3%)}
.pdel-l{margin:0;font:500 14px var(--font-sans);color:var(--foreground);line-height:1.5}
.pdel-x{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;margin-top:2px}
.cdlg-err{margin:0;font:400 14px var(--font-sans);color:var(--neg)}
.dpanel.pdz{border:1px solid color-mix(in srgb,var(--neg) 40%,transparent);background:none;box-shadow:none;display:flex;flex-direction:column;gap:12px}
.pdz .cap{margin:0;max-width:62ch}
.btn.pdz-b{color:var(--neg);border-color:color-mix(in srgb,var(--neg) 55%,transparent)}
.btn.pdz-b:hover{border-color:var(--neg);color:var(--neg)}
.pdz-also{margin:-4px 0 0}
.btp-rd{margin:4px 0 0}
@media (max-width:760px){
  .proj-del thead{display:none}
  .proj-del tbody tr{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:14px 0;border-bottom:1px solid var(--border)}
  .proj-del tbody th,.proj-del tbody td{display:block;padding:0;border:0;height:auto;text-align:left;background:none}
  .proj-del .prow-a{justify-content:flex-start;flex-wrap:wrap;margin-top:4px}
  .proj-del .pd-left{white-space:normal}
}

/* FIX v10.5 §1.2 · fact steps with a plan: Line · Plan · Fact · vs plan % · Δ (the deviation follows `better`) */
.fp-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:14px 0 4px}
.fp-bar .cap{margin:0}
.fp-dv{font:500 12px var(--font-sans);white-space:nowrap}
.fp-dv.pos{color:var(--pos)} .fp-dv.neg{color:var(--neg)} .fp-dv.nd,.fp-dv.n0,.fp-dv.na{color:var(--muted-foreground)}   /* the spec's --ink-3 is below AA on the panels */
.erows.pv{--row-cols:40px minmax(220px,1fr) 120px 180px 96px 112px}
.erows.pv .fr.erow.pvr,.erows.pv .fr.erow.h:not(.full){grid-template-columns:var(--row-cols)!important}
.erows.pv .erow .e-p{grid-column:3;grid-row:1;text-align:right;font:400 14px var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.erows.pv .erow .entity-value,.erows.pv .erow .e-v{grid-column:4;grid-row:1}
.erows.pv .erow .e-vs{grid-column:5;grid-row:1;justify-content:flex-end}
.erows.pv .erow .e-d{grid-column:6;grid-row:1;text-align:right;font:400 14px var(--font-sans);color:var(--foreground);white-space:nowrap}
.erows.pv .erow.h .e-p,.erows.pv .erow.h .e-d{font:500 12px var(--font-sans);color:var(--muted-foreground)}
.erows.pv .erow .e-st{grid-column:2 / -1;grid-row:2;text-align:right}
.erows.pv .erow.pvr .entity-value{height:42px}
.erows.pv .erow .msgl{grid-column:2 / -1!important}
.erows.pv .erow .ref-l{display:none}
.erows.pv.plan-off .erow .e-p{visibility:hidden}
.erows.pv .erow.h .e-vs,.erows.pv .erow.h .e-p,.erows.pv .erow.h .e-d{display:block;white-space:nowrap}
.erows.pv .erow.h .e-name{white-space:nowrap}
@container erows (max-width:1100px){
  /* the name gets the whole width, the numbers sit in their columns under it */
  .erows.pv .fr.erow.pvr,.erows.pv .fr.erow.h:not(.full){grid-template-columns:28px minmax(0,1fr) 88px 132px 66px 84px!important;column-gap:10px!important}
  .erows.pv .erow.pvr .e-ic{grid-row:1 / span 2}
  .erows.pv .erow.pvr .e-name{grid-column:2 / -1;grid-row:1}
  .erows.pv .erow.pvr .e-p,.erows.pv .erow.pvr .entity-value,.erows.pv .erow.pvr .e-vs,.erows.pv .erow.pvr .e-d{grid-row:2}
  .erows.pv .erow.pvr .e-st,.erows.pv .erow.pvr .msgl{grid-row:3}
  .erows.pv .erow.h .e-name{grid-column:2}
  .erows.pv .erow .e-p,.erows.pv .erow .e-d{font-size:12px}
}
@container erows (max-width:520px){
  .erows.pv .fr.erow.pvr,.erows.pv .fr.erow.h{grid-template-columns:28px minmax(0,1fr) 124px!important}
  .erows.pv .erow .entity-value,.erows.pv .erow .e-v{grid-column:3;grid-row:1}
  .erows.pv .erow .e-p{grid-column:2;grid-row:2;text-align:left} .erows.pv .erow .e-vs{grid-column:3;grid-row:2} .erows.pv .erow .e-d{grid-column:3;grid-row:3}
  .erows.pv .erow .ref-l{display:inline}
  .erows.pv .erow.h .e-p,.erows.pv .erow.h .e-vs,.erows.pv .erow.h .e-d{display:none}
  .erows.pv .erow .e-st{grid-row:4}
}

/* FIX v10.5 §1.1 · client tables in Monthly fact: plan and deviation under every cell · Client column pinned when the table scrolls */
.cl-pl{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 8px;margin-top:4px;font:400 12px var(--font-sans);color:var(--muted-foreground);min-height:14px}
.cl-pl .cl-plv{white-space:nowrap} .cl-pl .fp-dv{margin-left:auto;white-space:nowrap}
.cl-pl .fp-dv{font-size:12px}
.cl-mx.plan-off .cl-pl{display:none}
 


table.cl-mx.cl-fp td.cl-name{white-space:normal} table.cl-mx.cl-fp td.cl-name .cl-nm b{white-space:normal}




table.cl-mx.cl-fp td.cl-name .cl-sub{white-space:normal}
table.cl-mx .cl-rt>div:first-child{font-variant-numeric:tabular-nums}
.cl-tot .cl-sub{display:block;font:400 12px var(--font-sans);color:var(--muted-foreground);margin-top:3px;white-space:normal}

.cl-strip-f{flex-wrap:wrap;row-gap:6px}
.cl-stp{font:400 12px var(--font-sans);color:var(--muted-foreground);margin-left:4px}
.cl-scroll{position:relative}
.cl-scroll .cl-mx th:first-child,.cl-scroll .cl-mx td:first-child{position:sticky;left:0;z-index:2;background:var(--card)}
.cl-scroll .cl-mx tr.cl-grp td:first-child{background:inherit}
.cl-scroll.can-l .cl-mx th:first-child,.cl-scroll.can-l .cl-mx td:first-child{box-shadow:8px 0 10px -8px oklch(0 0 0 / 70%)}
.cl-scroll.can-r{box-shadow:inset -18px 0 14px -14px oklch(0 0 0 / 75%)}



/* FIX v10.5 §3 · step names wrap to a second line (then ellipsis with the full name in title); the counter stays on the first line */



/* FIX v10.5 §1.4 · steps with a client table: steps | the table on the width of the middle and right columns; the live result is a strip */
.factgrid.wide{grid-template-columns:240px minmax(0,1fr)}
body.nav-docked:not(.collapsed) .factgrid.wide{grid-template-columns:240px minmax(0,1fr)}
@media (max-width:1100px){ .factgrid.wide{grid-template-columns:200px minmax(0,1fr)} }
@media (max-width:760px){ .factgrid.wide{grid-template-columns:1fr} }
.fg-strip.dpanel{padding:14px 20px;gap:10px}
.lst-h{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.lst-h>.eyebrow{flex:1 1 100%}






.lst-chk{flex:none;white-space:nowrap}
.lst-checks{border-top:1px solid var(--border);padding-top:8px}
.lst-f{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;border-top:1px solid var(--border);padding-top:10px}
.lst-f .lf-t{margin-right:auto}
.lst-f .lbl{display:none}
.lst-f #note{width:220px;height:40px}
.lst-f .lf-b{display:flex;gap:8px}
.lst-f .lf-b .btn{height:40px}
.lst-f .lf-n{flex-basis:100%;margin:0;text-align:right;font:400 12px var(--font-sans)!important;color:var(--muted-foreground)}

.cl-goes{font:400 14px var(--font-sans);color:var(--muted-foreground)}
.an-mx td .cl-pl{max-width:130px;margin-left:auto}
.an-mx tr.an-tot td:first-child{text-align:left;font-weight:600}
.an-mx tr.an-tot td{vertical-align:top;padding-top:12px} .an-mx .an-tv{font:600 14px var(--font-sans);text-align:right}
.erows.pv .erow .e-p .np{font:400 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.erows.pv .fr.erow.full .eyebrow{white-space:normal;overflow-wrap:anywhere}


/* IBO ui v11 — components (RESTYLE v11 §2–§8). Classes and data-slot names mirror shadcn/ui; every value comes from tokens.css.
   One component per job: a screen never restyles a button, badge, card, table or meter of its own. */

/* ======================================================= base */
html,body{background:var(--background);color:var(--foreground)}
body{font:var(--text-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-variant-numeric:tabular-nums;text-rendering:optimizeLegibility}
button,input,select,textarea{font:inherit;color:inherit;letter-spacing:0}
h1{font:var(--text-display);letter-spacing:-.02em;margin:0;text-wrap:balance}
h2{font:var(--text-section);margin:0}
h3{font:var(--text-title);margin:0}
.h2{font:var(--text-section)} .h3{font:var(--text-title);display:block}
.eyebrow,.lbl,.mg{font:var(--text-caption);color:var(--muted-foreground)}
.tag,.small{font:var(--text-caption);color:var(--muted-foreground)}
.mono,.num{font-family:var(--font-sans);font-variant-numeric:tabular-nums}
.ink2,.muted{color:var(--muted-foreground)}
a{color:inherit}
.lnk{color:var(--foreground);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--border-strong);font-weight:500;cursor:pointer}
.lnk:hover{text-decoration-color:currentColor}
::selection{background:oklch(1 0 0 / 18%)}
:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.grain{display:none}
.kbd,kbd{display:inline-grid;place-items:center;min-width:28px;height:20px;padding:0 6px;border:1px solid var(--border);border-radius:6px;font:500 11px/1 var(--font-sans);color:var(--muted-foreground)}

/* ======================================================= Button (§3) */
.btn,.btn85,[data-slot="button"]{--bh:var(--control-h);display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--bh);min-height:var(--bh);padding:0 14px;
  border-radius:var(--radius-pill);border:1px solid transparent;background:var(--secondary);color:var(--secondary-foreground);font:500 14px/1 var(--font-sans);
  white-space:nowrap;cursor:pointer;text-decoration:none;flex:none;transition:background var(--dur-1),border-color var(--dur-1),color var(--dur-1)}
.btn:hover,.btn85:hover{background:color-mix(in oklch,var(--secondary) 82%,var(--foreground))}
.btn:focus-visible,.btn85:focus-visible,[data-slot="button"]:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.btn svg,.btn85 svg{flex:none;stroke:currentColor}
.btn.outline,.btn[data-variant="outline"]{background:transparent;border-color:var(--border-strong);color:var(--foreground)}
.btn.outline:hover{background:var(--accent)}
.btn.primary,.btn85.pri,.btn[data-variant="default"]{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}
.btn.primary:hover,.btn85.pri:hover{background:color-mix(in oklch,var(--primary) 90%,var(--background))}
.btn.secondary,.btn[data-variant="secondary"]{background:var(--secondary);border-color:var(--secondary);color:var(--secondary-foreground)}
.btn.secondary:hover{background:color-mix(in oklch,var(--secondary) 82%,var(--foreground))}
.btn.ghost,.btn85.ghost,.btn[data-variant="ghost"]{background:transparent;border-color:transparent;color:var(--foreground)}
.btn.ghost:hover,.btn85.ghost:hover{background:var(--accent)}
.btn.danger,.btn.danger-t,.btn.neg,.btn.neg-t,.btn.pdz-b,.btn.ghost.neg,.btn.cdlg-go.neg,.btn[data-variant="destructive"]{background:color-mix(in oklch,var(--destructive) 20%,transparent);border-color:transparent;color:var(--destructive)}
.btn.danger:hover,.btn.danger-t:hover,.btn.neg:hover,.btn.neg-t:hover,.btn.pdz-b:hover,.btn.cdlg-go.neg:hover{background:color-mix(in oklch,var(--destructive) 28%,transparent)}
.btn.w,.btn.warnb{background:var(--warn-soft);border-color:transparent;color:var(--warn)}
.btn.sm,.btn85.sm{--bh:32px;padding:0 12px;font-size:13px;gap:6px}
.btn.h46,.btn.lg{--bh:40px;padding:0 20px}
.btn.ic,.btn.icon,.ib{--bh:var(--control-h);width:var(--bh);padding:0;justify-content:center}
.btn.sm.ic,.btn.sm.icon{--bh:32px}
.btn:disabled,.btn.disabled,.btn[aria-disabled="true"],.btn85:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}
.btn.loading{cursor:progress}
.btns{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
/* icon button (bell, close, ⋯): ghost, round */
.ib{display:inline-grid;place-items:center;height:var(--bh);border-radius:var(--radius-pill);border:0;background:transparent;color:var(--foreground);cursor:pointer;flex:none}
.ib:hover{background:var(--accent)}
.ib:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.ib.sm{--bh:32px}
.ib.filled{background:var(--muted)}

/* ======================================================= Badge (§3, §6.2) */
.badge,.spill,[data-slot="badge"]{display:inline-flex;align-items:center;gap:4px;height:22px;padding:1px 8px 0;border-radius:var(--radius-pill);font:500 12px/1 var(--font-sans);
  white-space:nowrap;border:1px solid transparent;background:var(--neutral-soft);color:var(--foreground);flex:none;vertical-align:middle;font-variant-numeric:tabular-nums}
.badge svg,.spill svg{flex:none;margin-top:-1px}
.badge.pos,.spill.t-pos{background:var(--pos-soft);color:var(--pos)}
.badge.neg,.spill.t-neg{background:var(--neg-soft);color:var(--neg)}
.badge.warn,.spill.t-caution,.spill.t-warn{background:var(--warn-soft);color:var(--warn)}
.badge.outline,.spill.t-neutral,.spill.t-series{background:transparent;border-color:var(--border-strong);color:var(--foreground)}
.badge .dot,.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block;flex:none;margin-top:-1px}
.badge.lg{height:26px;padding:1px 10px 0;font-size:13px}

/* ======================================================= Tabs / segmented (§3) */
.seg,.tabs-list,[data-slot="tabs-list"]{display:inline-flex;align-items:center;gap:2px;height:var(--control-h);padding:3px;border-radius:var(--radius-pill);background:var(--muted);border:0;flex:none;max-width:100%;overflow-x:auto;scrollbar-width:none}
.seg::-webkit-scrollbar{display:none}
.seg>button,.seg>a,.tabs-list>button,.tabs-list>a{height:100%;padding:0 12px;border-radius:var(--radius-pill);border:0;background:transparent;color:var(--muted-foreground);font:500 13px/1 var(--font-sans);
  display:inline-flex;align-items:center;gap:6px;white-space:nowrap;cursor:pointer;text-decoration:none;transition:background var(--dur-1),color var(--dur-1)}
.seg>button:hover,.seg>a:hover{color:var(--foreground)}
.seg>button[aria-pressed="true"],.seg>button[aria-selected="true"],.seg>button.on,.seg>a.on,.seg>a[aria-current],.tabs-list>[aria-selected="true"],.seg>button.active{background:var(--background);color:var(--foreground)}
.seg>button:focus-visible,.seg>a:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.seg>button:disabled{opacity:.5;cursor:not-allowed}
.seg .n,.seg .cnt{color:var(--muted-foreground);font-weight:500}
.seg.sm{height:32px}

/* ======================================================= Input (§3) */
.fctl,.input,[data-slot="input"],input.in,select.in{height:var(--control-h);width:100%;min-width:0;padding:0 14px;border-radius:var(--radius-pill);border:1px solid transparent;background:var(--input);color:var(--foreground);
  font:400 14px/1 var(--font-sans);font-variant-numeric:tabular-nums;outline:none;transition:border-color var(--dur-1)}
textarea.fctl{height:auto;min-height:72px;padding:10px 14px;border-radius:var(--radius-inner);line-height:1.45;resize:vertical}
select.fctl{appearance:none;padding-right:36px;background-image:linear-gradient(45deg,transparent 50%,var(--muted-foreground) 50%),linear-gradient(135deg,var(--muted-foreground) 50%,transparent 50%);
  background-position:calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size:5px 5px;background-repeat:no-repeat}
.fctl::placeholder,.input::placeholder{color:var(--muted-foreground)}
.fctl:focus,.fctl:focus-visible,.input:focus-visible,input.in:focus{border-color:var(--muted-foreground);box-shadow:0 0 0 3px var(--ring-focus);outline:none}
.fctl[aria-invalid="true"],.fctl.err,.input.err{border-color:var(--destructive)}
.fctl[readonly]{background:transparent;padding-left:0}
.fctl:disabled{opacity:.5}
.fctl.num,.input.num{text-align:right}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field .f-l,.f-l,label.f-l{font:500 13px/1.3 var(--font-sans);color:var(--foreground)}
.field .f-h,.f-h{font:var(--text-caption);color:var(--muted-foreground)}
.field .f-e,.f-e{font:var(--text-caption);color:var(--destructive)}
/* a number field with a unit prefix: € 725,000 */
.nfield{position:relative;display:flex;align-items:center;height:var(--control-h);border-radius:var(--radius-pill);background:var(--input);border:1px solid transparent;padding:0 14px;gap:8px}
.nfield:focus-within{border-color:var(--muted-foreground);box-shadow:0 0 0 3px var(--ring-focus)}
.nfield .u{color:var(--muted-foreground);font:400 13px/1 var(--font-sans);flex:none}
.nfield input{all:unset;flex:1;min-width:0;text-align:right;font:400 14px/1 var(--font-sans);font-variant-numeric:tabular-nums;color:var(--foreground)}
.nfield.err{border-color:var(--destructive)}

/* ======================================================= Switch / checkbox (§3) */
.switch,[role="switch"].sw{position:relative;width:36px;height:20px;border-radius:var(--radius-pill);background:var(--input);border:1px solid var(--border);flex:none;cursor:pointer;padding:0;transition:background var(--dur-1)}
.switch::after,[role="switch"].sw::after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--muted-foreground);transition:transform var(--dur-1) var(--ease-out),background var(--dur-1)}
.switch[aria-checked="true"],[role="switch"].sw[aria-checked="true"]{background:var(--primary);border-color:var(--primary)}
.switch[aria-checked="true"]::after,[role="switch"].sw[aria-checked="true"]::after{transform:translateX(16px);background:var(--primary-foreground)}
input[type="checkbox"]{accent-color:var(--primary);width:18px;height:18px;border-radius:6px}

/* ======================================================= Card (§3) */
.card,[data-slot="card"],.dpanel{position:relative;min-width:0;display:flex;flex-direction:column;gap:16px;padding:24px;background:var(--card);color:var(--card-foreground);
  border:0;border-radius:var(--radius-card);box-shadow:none}
.card-header,.dp-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}
.card-title,[data-slot="card-title"],.dp-t{font:var(--text-title);color:var(--foreground);margin:0}
.card-description,[data-slot="card-description"],.dp-d{font:400 14px/1.45 var(--font-sans);color:var(--muted-foreground);margin:2px 0 0}
.card-action,.dp-a{display:flex;align-items:center;gap:8px;flex:none;color:var(--muted-foreground);font:var(--text-caption)}
.card-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto}
.card.crit,.dpanel.crit{box-shadow:inset 0 0 0 1px var(--crit-edge)}

/* ======================================================= Well and meter (§3) */
.well{background:var(--well);border-radius:var(--radius-inner);padding:12px 14px;min-height:112px;display:flex;flex-direction:column;min-width:0}
.well .w-l{font:var(--text-caption);color:var(--muted-foreground)}
.well .w-v{font:600 14px/1.35 var(--font-sans);color:var(--foreground);margin-top:2px;font-variant-numeric:tabular-nums}
.well .w-v.lg{font-size:20px;line-height:1.25}
.well .meter{margin-top:10px}
.well .badge{margin-top:8px;align-self:flex-start;max-width:100%;white-space:normal;height:auto;min-height:22px;line-height:1.2;padding-top:3px;padding-bottom:2px}   /* FIX v12.27 C5/C11 · a badge in words (“loss larger than planned”) wraps inside its well, never over the next one */
.well .w-s{font:var(--text-caption);color:var(--muted-foreground);margin-top:8px}
.wells{display:grid;grid-template-columns:repeat(var(--wells,2),minmax(0,1fr));gap:8px}
.meter,[data-slot="meter"]{--m:76.9%;position:relative;display:block;height:8px;border-radius:var(--radius-pill);background:var(--meter-track);flex:none;width:100%}
.meter>.m-f{position:absolute;left:0;top:0;bottom:0;border-radius:var(--radius-pill);background:var(--chart-1)}
.meter>.m-b{position:absolute;top:0;bottom:0;border-radius:var(--radius-pill);opacity:.28}
.meter>.m-t{position:absolute;left:var(--m);top:-4px;width:2px;height:16px;margin-left:-1px;background:var(--foreground);border-radius:1px}
.meter>.m-over{position:absolute;right:-12px;top:50%;transform:translateY(-50%);font:600 12px/1 var(--font-sans);color:var(--foreground)}
.meter.pos>.m-f,.meter.pos>.m-b{background:var(--pos)} .meter.neg>.m-f,.meter.neg>.m-b{background:var(--neg)} .meter.warn>.m-f,.meter.warn>.m-b{background:var(--warn)}
.meter.neutral>.m-f{background:var(--chart-2)} .meter.primary>.m-f{background:var(--primary)} .meter.ded>.m-f{background:var(--chart-3)}
.meter.segs{display:flex;gap:4px;background:none}
.meter.segs>i{flex:1;height:8px;border-radius:var(--radius-pill);background:var(--chart-3)}
.meter.segs>i.neg{background:var(--neg)} .meter.segs>i.pos{background:var(--pos)} .meter.segs>i.empty{background:var(--meter-track)}

/* ======================================================= Icon chip (§3 list row, §5.1 first column) */
.ichip{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:var(--radius-chip);background:oklch(1 0 0 / 6%);color:var(--foreground);flex:none}
.ichip svg{width:15px;height:15px}
.ichip.none{background:transparent}
.ichip.calc{font:500 13px/1 var(--font-sans);color:var(--muted-foreground)}

/* ======================================================= List row (§3) */
.lrow{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border);min-width:0}
.lrow:last-child{border-bottom:0}
.lrow .lr-t{font:500 14px/1.35 var(--font-sans);color:var(--foreground)}
.lrow .lr-d{font:var(--text-caption);color:var(--muted-foreground);margin-top:2px}

/* ======================================================= Dialog / sheet / toast / tooltip / popover / skeleton (§3) */
.scrim,.cdlg-scrim{background:var(--scrim)}
.cdlg,[data-slot="dialog"]{background:var(--background);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:none;padding:24px;color:var(--foreground)}
.cdlg h2{font:600 18px/1.3 var(--font-sans)}
.cdlg-p{font:var(--text-body);color:var(--muted-foreground)}
.cdlg-a{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.toast{background:var(--muted);border:0;border-radius:var(--radius-inner);color:var(--foreground);box-shadow:var(--shadow-pop);font:500 14px/1.4 var(--font-sans);padding:10px 10px 10px 16px;gap:12px}
.toast .btn{--bh:32px;background:transparent;border-color:transparent;padding:0 12px}
.toast .btn:hover{background:var(--accent)}
.ftip,.tip-1,[role="tooltip"].tt{background:var(--primary);color:var(--primary-foreground);border:0;border-radius:10px;font:500 12px/1.35 var(--font-sans);padding:6px 10px;box-shadow:none;max-width:280px}
.pop,[data-slot="popover"]{background:var(--muted);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-pop);color:var(--foreground);padding:10px 12px;font:var(--text-caption)}
.sk,.skeleton{display:block;background:oklch(1 0 0 / 7%);border-radius:var(--radius-pill);animation:skp var(--dur-pulse) var(--ease-io) infinite}
@keyframes skp{50%{opacity:.55}}
@media (prefers-reduced-motion:reduce){.sk,.skeleton{animation:none}}

/* ======================================================= Status & delta helpers */
.pos-t,.t-pos .tv,.tv.t-pos{color:var(--pos)} .neg-t,.tv.t-neg{color:var(--neg)} .warn-t,.tv.t-caution{color:var(--warn)}
.delta{display:inline-flex;align-items:center;gap:4px}

/* ---- content rules kept from v10 (main-scoped) ---- */
main .dgrid.stepgrid{display:grid;grid-template-columns:208px minmax(0,1fr);gap:var(--gap)!important;align-items:start}
main .dgrid.stepgrid>.dcol{display:flex;flex-direction:column;gap:var(--gap);min-width:0}
@media (max-width:900px){ main .dgrid.stepgrid{grid-template-columns:1fr} }
main .dgrid.setcol{display:flex;flex-direction:column;gap:var(--gap);max-width:760px;align-items:stretch!important}
main .dgrid.setcol>.dpanel{width:100%;box-sizing:border-box}
main .dpanel table th.cur{color:var(--muted-foreground)}
body.auth main>.bp-setup{height:calc(100vh - 64px);padding:0 24px;margin:0;box-sizing:border-box;min-height:620px;max-width:none;width:auto}
main .fld.left,main select.fld{box-sizing:border-box;width:100%;height:var(--control-h);padding:0 14px;background:var(--input);border:1px solid transparent;border-radius:var(--radius-pill);color:var(--foreground)}
main textarea.fld{height:auto;min-height:72px;padding:10px 14px;resize:vertical;line-height:1.5;border-radius:var(--radius-inner)}
main .fld:focus,main .fld:focus-visible{outline:none;border-color:var(--muted-foreground);box-shadow:0 0 0 3px var(--ring-focus)}
main .dgrid.g1,main .dgrid.facts{background:none!important;border:0!important;box-shadow:none!important;gap:var(--gap)!important;padding:0}
main .dgrid.g1.cols2{grid-template-columns:repeat(2,minmax(0,1fr))} main .dgrid.g1.cols3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:900px){ main .dgrid.g1.cols2,main .dgrid.g1.cols3{grid-template-columns:1fr} }
main .dpanel.cell{min-height:0}
main .dpanel>.list>.li{border-bottom:1px solid var(--border)} main .dpanel>.list>.li:last-child{border-bottom:0}
main .dpanel .kv{gap:10px 20px} main .dpanel .kv>b{font:var(--text-caption);color:var(--muted-foreground)}
main#main:focus{outline:none}

/* ======================================================= Shell · sidebar 248 / 64, header 64, container 1280 (§2) */
body{--nav-w:var(--sidebar-w-collapsed);margin:0}
body.nav-docked:not(.collapsed){--nav-w:var(--sidebar-w)}
body.auth{--nav-w:0px}
.menu{position:fixed;z-index:40;left:0;top:0;bottom:0;width:var(--sidebar-w);display:flex;flex-direction:column;padding:12px;gap:4px;
  background:color-mix(in oklch,var(--card) 70%,var(--background));border-right:1px solid var(--sidebar-border);color:var(--sidebar-foreground);
  transition:none;overflow:hidden}
body.collapsed .menu{width:var(--sidebar-w-collapsed)}
body:not(.nav-docked):not(.collapsed) .menu{background:var(--sidebar);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:var(--shadow-pop)}
body.auth .menu,body.auth .hdr{display:none}
body.home-in .hdr .pctl,body.home-in .hdr .hst{display:none}   /* QA v12.49 · signed-in Home: no project month in the header (board GuestHome C) */
.sb-top{display:flex;align-items:center;gap:10px;height:40px;padding:0 0 0 12px;margin-bottom:12px;flex:none;min-width:0}
body.collapsed .sb-top{padding:0}
.mkey{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:var(--radius-chip);background:var(--primary);color:var(--primary-foreground);font:700 11px/1 var(--font-sans);flex:none}
.sb-proj{flex:1;min-width:0}
body.collapsed .sb-proj{display:none}
.psw{position:relative;min-width:0}
.psw-b{display:grid;grid-template-columns:minmax(0,1fr) 16px;grid-template-rows:auto auto;column-gap:6px;align-items:center;width:100%;min-width:0;padding:4px 8px 4px 4px;margin-left:-4px;border:0;border-radius:var(--radius-chip);background:transparent;color:var(--foreground);cursor:pointer;text-align:left}
.psw-b:hover{background:var(--sidebar-accent)}
.psw-b:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.psw-n{font:600 14px/1.25 var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;grid-column:1}
.psw-t{font:var(--text-caption);color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;grid-column:1}
.psw-c{grid-column:2;grid-row:1/3;color:var(--muted-foreground);display:grid;place-items:center}
.psw-m{position:absolute;left:-4px;top:calc(100% + 6px);width:248px;z-index:60;display:flex;flex-direction:column;padding:6px;background:var(--popover);border:1px solid var(--border);border-radius:var(--radius-inner);box-shadow:var(--shadow-pop)}
.psw-m [role^=menuitem]{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:36px;padding:0 10px;border:0;border-radius:10px;background:transparent;color:var(--foreground);font:500 14px/1.3 var(--font-sans);text-decoration:none;cursor:pointer;text-align:left}
.psw-m [role^=menuitem]:hover,.psw-m [role^=menuitem]:focus-visible{background:var(--accent);outline:none}
.psw-m [aria-checked="true"]{background:var(--sidebar-accent)}
.psw-mn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.psw-sep{height:1px;background:var(--border);margin:6px 4px}
#menuNav{display:flex;flex-direction:column;gap:2px;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;margin:0 -12px;padding:0 12px}
#menuNav::-webkit-scrollbar{display:none}
.menu .mg{font:var(--text-caption);color:var(--muted-foreground);padding:14px 12px 6px;white-space:nowrap}
.menu .mg:first-child{padding-top:0}
.menu .rgap{display:block;height:1px;background:var(--border);margin:8px 4px;flex:none}
.mi{display:flex;align-items:center;gap:12px;height:36px;padding:0 12px;border-radius:var(--radius-pill);color:var(--sidebar-foreground);text-decoration:none;font:500 14px/1 var(--font-sans);white-space:nowrap;position:relative;flex:none}
.mi svg,.key svg{flex:none;width:18px;height:18px}
.mi:hover{background:var(--sidebar-accent);color:var(--foreground)}
.mi.active{background:var(--sidebar-accent);color:var(--foreground)}
.mi .ml{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.mi .cnt{margin-left:auto;font:500 12px/1 var(--font-sans);flex:none}
.mi:focus-visible,.key:focus-visible,.mtoggle:focus-visible,.ub:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.key{position:relative;display:grid;place-items:center;width:40px;height:36px;border-radius:var(--radius-pill);color:var(--sidebar-foreground);text-decoration:none;flex:none}
.key:hover{background:var(--sidebar-accent);color:var(--foreground)}
.key.on{background:var(--sidebar-accent);color:var(--foreground)}
.key .dot,.mi .dot{position:absolute;top:6px;right:8px;width:6px;height:6px;border-radius:50%}
.key .tl{display:none;position:fixed;left:calc(var(--sidebar-w-collapsed) + 4px);transform:translateY(-50%);margin-top:18px;z-index:80;white-space:nowrap;background:var(--primary);color:var(--primary-foreground);border-radius:10px;padding:6px 10px;font:500 12px/1.2 var(--font-sans);pointer-events:none}
.key:hover .tl,.key:focus-visible .tl{display:block}
.sb-bot{display:flex;flex-direction:column;gap:4px;flex:none;padding-top:8px;position:relative}
.mtoggle{display:flex;align-items:center;gap:12px;height:36px;padding:0 12px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--sidebar-foreground);font:500 14px/1 var(--font-sans);cursor:pointer;white-space:nowrap;width:100%}
.mtoggle:hover{background:var(--sidebar-accent);color:var(--foreground)}
.mtoggle .ml{flex:1;text-align:left}
.mtoggle .ct{flex:none}
body.collapsed .mtoggle{width:40px;padding:0;justify-content:center}
.ub{display:flex;align-items:center;gap:10px;min-height:48px;padding:8px 6px;border:0;border-top:1px solid var(--border);border-radius:0;background:transparent;color:var(--foreground);cursor:pointer;text-align:left;width:100%}
.ub:hover .nm{text-decoration:underline;text-underline-offset:3px}
.ub .av{width:32px;height:32px;border-radius:50%;flex:none;overflow:hidden;display:inline-grid;place-items:center;background:var(--muted);font:600 12px/1 var(--font-sans);color:var(--foreground)}
.ub .av svg,.ub .av img{width:100%;height:100%;object-fit:cover}
.ub .col{display:flex;flex-direction:column;min-width:0;gap:2px}
.ub .nm{font:500 14px/1.2 var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ub .rl{font:var(--text-caption);color:var(--muted-foreground);white-space:nowrap}
body.collapsed .ub{padding:8px 4px;justify-content:center} body.collapsed .ub .col{display:none}
#pmenu{position:absolute;left:0;bottom:calc(100% + 8px);width:300px;z-index:60;background:var(--popover);border:1px solid var(--border);border-radius:var(--radius-inner);box-shadow:var(--shadow-pop);overflow:hidden}
#pmenu[hidden]{display:none}
.hdr{position:sticky;top:0;z-index:30;height:var(--header-h);margin-left:var(--nav-w);background:var(--background);border-bottom:1px solid var(--border);transition:none}
.hdr-in{height:100%;max-width:var(--container);margin:0 auto;padding:0 var(--page-x);display:flex;align-items:center;gap:12px;box-sizing:border-box}
.hdr .sp{flex:1}
.pctl{display:flex;align-items:center;gap:8px;flex:none}
.pctl .m-latest{white-space:nowrap}   /* FIX v12.41 · Go to latest month · Mar 2026 (app/latest-month.js), only while another month is on screen */
.pctl .m-latest .ml-s{display:none}
@media (max-width:1439px){ .pctl .m-latest .ml-l{display:none} .pctl .m-latest .ml-s{display:inline} }
.mpill{display:flex;align-items:center;height:var(--control-h);padding:3px;border-radius:var(--radius-pill);background:var(--muted);flex:none}
.mpill .stp{display:grid;place-items:center;width:30px;height:30px;border:0;border-radius:50%;background:transparent;color:var(--foreground);cursor:pointer;padding:0}
.mpill .stp:hover:not(:disabled){background:var(--accent);background:oklch(1 0 0 / 8%)}
.mpill .stp:disabled,.mpill .stp[aria-disabled="true"]{opacity:.5;cursor:default}
.mpill .stp:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.mpill .cur{min-width:112px;padding:0 8px;text-align:center;font:600 14px/1 var(--font-sans);white-space:nowrap}
.pctl .pcu:disabled{opacity:.5}
.hst{position:relative;flex:none}
.hpill{display:inline-flex;align-items:center;height:var(--control-h);padding:0 2px;border:0;background:transparent;cursor:pointer;border-radius:var(--radius-pill)}
.hpill:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.hpill .hp-sep{opacity:.8}
.hpill .badge .dot{display:none} .hpill .badge.pos .dot{display:inline-block}
.hpop{position:absolute;right:0;top:calc(100% + 8px);width:300px;z-index:60;padding:14px;background:var(--popover);border:1px solid var(--border);border-radius:var(--radius-inner);box-shadow:var(--shadow-pop);display:flex;flex-direction:column;gap:10px}
.hpop[hidden]{display:none}
.hpop .hp-h,.hpop .hp-row{display:flex;justify-content:space-between;gap:12px;font:var(--text-caption)}
.hpop .fillbar{height:8px;border-radius:var(--radius-pill);background:var(--meter-track);position:relative;overflow:hidden}
.hpop .fillbar i{position:absolute;left:0;top:0;bottom:0;border-radius:var(--radius-pill);background:var(--chart-1)}
.bell{position:relative;width:var(--control-h)}
.bell .dot{position:absolute;top:7px;right:8px;width:7px;height:7px;border-radius:50%;background:var(--warn);font-size:0}
.bell .dot[hidden]{display:none}
main{display:block;margin-left:var(--nav-w);padding:32px 0 64px;min-height:calc(100vh - var(--header-h));position:relative;transition:none}
body.auth main{margin-left:0;padding:0}
main>.page{max-width:var(--container);margin:0 auto;padding:0 var(--page-x);box-sizing:border-box;display:flex;flex-direction:column;gap:var(--gap);width:auto}
main>.page.narrow>*{max-width:720px}
body.has-dock:not(.auth) main>.page{padding-right:calc(var(--page-x) + 388px)}
@media (max-width:1180px){ body.has-dock:not(.auth) main>.page{padding-right:var(--page-x)} }
@media (prefers-reduced-motion:reduce){ .menu,.hdr,main{transition:none} }
body.motion-off .menu,body.motion-off .hdr,body.motion-off main,body.motion-reduced .menu,body.motion-reduced .hdr,body.motion-reduced main{transition:none}
@media (max-width:760px){
  :root{--page-x:16px}
  .hdr-in{gap:8px} .pc-seg{display:none} .mpill .cur{min-width:80px}
}

/* ---- profile menu (opens above the user in the sidebar) ---- */
.pm-h{display:flex;gap:12px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--border)}
.pm-org{display:flex;gap:12px;align-items:center;padding:8px 16px;text-decoration:none;color:var(--foreground)}
.pm-org:hover{background:var(--accent)}
.pm-org.cur .mono{color:var(--pos)}
.pm-org .mono{width:14px}
.pm-links{display:flex;flex-direction:column;border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:4px 0}
.pm-links a{padding:9px 16px;text-decoration:none}
.pm-links a:hover{background:var(--accent)}
.pm-dev{padding:10px 16px;display:flex;flex-direction:column;gap:6px}
.pm-dev select{height:32px;background:var(--input);border:0;border-radius:var(--radius-pill);padding:0 12px;font:400 13px var(--font-sans);color:var(--foreground)}
.prow-m .pm-off{color:var(--muted-foreground);cursor:not-allowed}
.prow-m .pm-sep{height:1px;background:var(--border);margin:6px 0}

/* ======================================================= KPI card (§3) · metric cards share the anatomy (§4.1) */
.kcard{text-decoration:none;color:var(--foreground);gap:16px;cursor:pointer;transition:background var(--dur-1)}
a.kcard:hover{background:color-mix(in oklch,var(--card) 94%,var(--foreground))}
a.kcard:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.kcard.crit{box-shadow:inset 0 0 0 1px var(--crit-edge)}
.kcard.crit:focus-visible{box-shadow:inset 0 0 0 1px var(--crit-edge),0 0 0 3px var(--ring-focus)}
.kc-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}
.kc-ht{min-width:0}
.kc-n{display:flex;align-items:center;gap:8px}
.kc-f{overflow-wrap:anywhere}
.kc-vb{display:flex;flex-direction:column;gap:6px;min-width:0}
.kc-v{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;min-width:0}
.kc-v .v{font:600 32px/1.15 var(--font-sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap}
.kc-v .v.na{color:var(--muted-foreground)}
.kc-dl{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;flex:none}   /* badge and “vs Jul” move to the next line together */
.kc-vs{font:var(--text-caption);color:var(--muted-foreground)}
.kc-day{font:400 14px/1.4 var(--font-sans);color:var(--muted-foreground)}
.kc-day b{font-weight:500;color:var(--foreground)}
.kc-wells{--wells:2}
.kc-wells .w-v{white-space:nowrap;overflow:hidden;text-overflow:clip}
.kc-wells .w-v.na,.well .w-v.na{color:var(--muted-foreground);font-weight:500}
.kc-wells .w-s .lnk{font-weight:500}
.kc-chart{margin-top:auto;min-width:0}
.kc-ctl{display:flex;gap:4px;flex:none}
.kc-empty{flex:1;align-items:center;justify-content:center;text-align:center;gap:6px;min-height:220px}
.kc-empty .w-v{font:500 14px/1.4 var(--font-sans)} .kc-empty .w-s{margin-top:0;max-width:320px}
.kc-empty .kc-go{margin-top:8px}
.neg-t{color:var(--neg)} .pos-t{color:var(--pos)}

/* ======================================================= Critical motion (§7) — the production timings */
.kpi-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--neg);flex:none;animation:kpi-dot var(--dur-crit-dot) var(--ease-io) infinite}
@keyframes kpi-dot{0%,100%{opacity:1}50%{opacity:.25}}
.meter .m-gap{position:absolute;top:0;bottom:0;border-radius:var(--radius-pill);background:repeating-linear-gradient(90deg,var(--neg) 0 4px,transparent 4px 8px);opacity:.6;
  box-shadow:0 0 8px color-mix(in oklch,var(--neg) 60%,transparent);animation:crit-march var(--dur-crit-march) var(--ease-linear) infinite}
.meter .m-tip{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--neg);transform-origin:center;animation:crit-tip var(--dur-crit-tip) var(--ease-out) infinite}
@keyframes crit-march{to{background-position:16px 0}}
@keyframes crit-tip{0%{transform:scaleY(1);opacity:1}100%{transform:scaleY(2.6);opacity:0}}
@keyframes crit-breathe{0%,100%{opacity:0}50%{opacity:1}}
[data-critical="true"].crow,.pld-r[data-critical="true"],.util[data-critical="true"]{position:relative}
.pld-r[data-critical="true"]::before,.util[data-critical="true"]::before,.crow[data-critical="true"]::before{content:"";position:absolute;inset:0 -12px;border-radius:12px;background:color-mix(in oklch,var(--neg) 9%,transparent);
  opacity:0;animation:crit-breathe var(--dur-crit-glow) var(--ease-io) infinite;pointer-events:none;z-index:0}
.pld-r>*,.util>*{position:relative;z-index:1}
@media (prefers-reduced-motion:reduce){
  .kpi-dot,.meter .m-gap,.meter .m-tip{animation:none}
  .pld-r[data-critical="true"]::before,.util[data-critical="true"]::before,.crow[data-critical="true"]::before{animation:none;opacity:1}
}
body.motion-off .kpi-dot,body.motion-off .meter .m-gap,body.motion-off .meter .m-tip,body.motion-reduced .kpi-dot,body.motion-reduced .meter .m-gap,body.motion-reduced .meter .m-tip{animation:none}
body.motion-off [data-critical="true"]::before,body.motion-reduced [data-critical="true"]::before{animation:none;opacity:1}
.still .m-gap,.still .m-tip{animation:none}

/* ======================================================= Metric chart card (§4.1 / §4.2) */
.mcc{gap:16px;min-height:300px}
.mcc-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}
.mcc-n{display:flex;align-items:center;gap:8px}
.mcc-hr{display:flex;align-items:center;gap:8px;flex:none;margin-top:1px}
.mcc-m{font:var(--text-caption);color:var(--muted-foreground);white-space:nowrap}
.mcc-more{--bh:32px;margin:-6px -8px 0 0;color:var(--muted-foreground)}
.mcc-more:hover{color:var(--foreground)}
.mcc-f{overflow-wrap:anywhere}
.mcc-c{margin:-6px 0 0;font:var(--text-caption);color:var(--muted-foreground)}   /* one line under the value, number first, wraps */
.mcc-cb{margin-top:auto;display:flex;flex-direction:column;gap:8px;min-width:0}
.mcc-lg{display:flex;flex-wrap:wrap;gap:4px 16px;font:var(--text-caption);color:var(--muted-foreground)}
.mcc-lg b{font-weight:500;color:var(--foreground);margin-left:4px}
.mcc-lg i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px;vertical-align:0}
.mcc-lg i.in{background:var(--series-1)} .mcc-lg i.out{background:var(--series-2)}
.mcc-empty{flex:1;align-items:center;justify-content:center;text-align:center;gap:6px;min-height:200px}
.mcc-empty .w-v{font:500 14px/1.4 var(--font-sans);white-space:normal} .mcc-empty .w-s{margin-top:0;max-width:340px}
.mcc-empty .btn{margin-top:10px}
.mcc-empty .ichip{margin-bottom:4px;color:var(--muted-foreground)}
.mcc-pw{min-height:0;padding:10px 14px}
.mcc-pw .w-l{display:flex;justify-content:space-between;gap:8px}
.mcc-pw .meter{margin-top:8px}
.mcc-pw .mcc-pp{position:absolute;right:14px;top:10px;font:500 12px/1.4 var(--font-sans)}
.mcc-pw{position:relative}
.mcc.num .mcc-c{margin-top:auto}
.mcc.crit{box-shadow:inset 0 0 0 1px var(--crit-edge)}

/* ======================================================= Page header (§6.1) */
.phead{display:flex;flex-direction:column;gap:4px;min-width:0;margin-bottom:8px}
.phead .ph-back{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;font:400 14px/1.4 var(--font-sans);color:var(--muted-foreground);text-decoration:none}
.phead .ph-back:hover{color:var(--foreground)}
.phead .ph-back span{color:var(--muted-foreground)}
.phead .ph-row{display:flex;justify-content:space-between;align-items:flex-end;gap:16px 24px;flex-wrap:wrap}
.phead .ph-l{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1 1 420px}
.phead .ph-e,.phead .ph-e.eyebrow{margin:0;font:400 14px/1.4 var(--font-sans);color:var(--muted-foreground)}
.phead .ph-t{margin:0;font:var(--text-display);letter-spacing:-.02em;color:var(--foreground);overflow-wrap:anywhere}
.phead .ph-tl{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.phead .ph-s{margin:4px 0 0;font:400 14px/1.45 var(--font-sans);color:var(--muted-foreground);max-width:760px;display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap}
.phead .ph-s .badge{flex:none}
.phead .ph-r{display:flex;flex-direction:column;align-items:flex-end;gap:8px;max-width:100%}
.phead .ph-a{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;align-items:center}
.phead .ph-m{font:var(--text-caption);color:var(--muted-foreground);text-align:right}
.phead .ph-t [contenteditable="true"]{outline:none;border-bottom:1px dashed var(--border-strong)}
.phead .ph-t [contenteditable="true"]:focus{border-bottom-color:var(--ring)}
.phead .mtag{display:inline-flex;align-items:center;height:22px;padding:1px 8px 0;border-radius:var(--radius-pill);border:1px solid var(--border-strong);font:500 12px/1 var(--font-sans);color:var(--foreground);white-space:nowrap}
.phead .mfx{font:400 14px var(--font-sans);color:var(--muted-foreground)}
.ph-meta{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap;font:400 14px/1.45 var(--font-sans);color:var(--muted-foreground);margin-top:6px}
.ph-meta a{color:var(--foreground);text-decoration:underline;text-underline-offset:3px}
@media (max-width:760px){ .phead .ph-t{font-size:26px} .phead .ph-r{align-items:flex-start} .phead .ph-a{justify-content:flex-start} .phead .ph-m{text-align:left} }
.dpanel.flush>.dp-note,.dp-note{margin:0;font:var(--text-caption);color:var(--muted-foreground)}

/* ======================================================= Profit ladder (§7) */
.pld{display:grid;grid-template-rows:auto repeat(9,minmax(44px,1fr));align-content:stretch;min-width:0;flex:1 1 auto}   /* FIX v9.6 · rows stretch to the card height; footers align */
.pld-r{display:grid;grid-template-columns:minmax(150px,1.3fr) minmax(84px,.8fr) minmax(84px,.8fr) minmax(80px,1fr) 58px minmax(78px,.7fr);column-gap:12px;align-items:center;min-height:44px;font:400 14px/1.3 var(--font-sans);cursor:pointer;border-radius:12px}
.pld-r:not(.h):hover{background:var(--row-hover)}
.pld-r.h{min-height:32px;cursor:default;font:500 12px/1.3 var(--font-sans);color:var(--muted-foreground)}
.pld-r.h .pld-n{gap:12px}
.pld-n{display:flex;align-items:center;gap:12px;min-width:0}
.pld-nt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pld-r.res .pld-nt{font-weight:600}
.pld-r.ded .pld-nt{color:var(--muted-foreground)}
.pld-f,.pld-p,.pld-d,.pld-pc{text-align:right;white-space:nowrap}
.pld-r.ded .pld-f{color:var(--foreground)}
.pld-p{color:var(--muted-foreground)}
.pld-r.res .pld-f{font-weight:600}
.pld-pc{font-size:12px;color:var(--muted-foreground)}
.pld-m{min-width:0}
.pld-r .kpi-dot{margin-left:-4px}
.rep-foot{margin-top:auto;padding-top:12px;display:flex;justify-content:space-between;align-items:center;gap:12px}
@media (max-width:760px){ .pld-r{grid-template-columns:minmax(120px,1fr) 84px minmax(60px,1fr) 64px} .pld-p,.pld-pc{display:none} }

/* ======================================================= Budget utilization (§7 rows, §3 list row) */
.util{position:relative;display:flex;flex-direction:column;gap:10px;padding:14px 0;border-bottom:1px solid var(--border)}
.util:last-of-type{border-bottom:0}
.util.click{cursor:pointer}
.util.click:hover{background:var(--row-hover)}
.util:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus);border-radius:12px}
.util .u-top{display:flex;align-items:center;gap:12px;min-width:0}
.util .u-n{flex:1;min-width:0;display:flex;align-items:center;gap:8px;font:500 14px/1.3 var(--font-sans)}
.util .u-sub{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font:var(--text-caption);color:var(--muted-foreground)}
.util .u-sub span:last-child{text-align:right}
.wd-b{display:flex;flex-direction:column;flex:1;min-width:0;padding:0}

/* ======================================================= Wide card · Cumulative spend (§4.3) */
.cum-h{display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right}
.cum-v{display:flex;align-items:center;gap:10px}
.cum-n{font:600 32px/1.15 var(--font-sans);letter-spacing:-.02em;color:var(--foreground)}
.cum-p{font:var(--text-caption);color:var(--muted-foreground)}
.cum-w{min-height:0;flex-direction:row;align-items:center;gap:12px;padding:12px 14px}
.cum-w .cum-t{flex:1;font:400 14px/1.45 var(--font-sans);color:var(--muted-foreground)}
.cum-w .cum-t b{font-weight:600;color:var(--foreground)}
.cum-w .badge{margin:0}
.chart-lg .k.pace{width:14px;height:0;border-top:2px dotted color-mix(in oklch,var(--series-2,#D4599B) 55%,transparent);background:none;border-radius:0}
.chart-pace{fill:none;stroke:color-mix(in oklch,var(--acc,var(--chart-1,oklch(0.87 0 0))) 55%,transparent);stroke-width:2;stroke-dasharray:2 4;stroke-linecap:round}
.chart-mo.fut{opacity:.55}

/* ======================================================= Metric page (§9) */
.msum3{gap:16px}
.msum3 .wells{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){ .msum3 .wells{grid-template-columns:repeat(2,minmax(0,1fr))} }
.mleg{display:flex;gap:16px;flex-wrap:wrap}
.chart-lg .k.cmpl{width:14px;height:0;border-top:2px dashed var(--plan-line,color-mix(in oklch, oklch(0.985 0 0) 70%, transparent));background:none;border-radius:0}
.chart-lg .k.fcl{width:12px;height:10px;border:1px dashed var(--muted-foreground,oklch(0.708 0 0));background:none;border-radius:3px}

/* ======================================================= Avatars (§5.1 · 24 in tables) */
.av{display:inline-grid;place-items:center;border-radius:50%;overflow:hidden;background:var(--muted);color:var(--foreground);font:600 11px/1 var(--font-sans);flex:none;border:0;vertical-align:middle}
.av svg,.av img{width:100%;height:100%;object-fit:cover;display:block}

/* ======================================================= Table · Monthly plan departments (§5.1 / §5.2) */
.dpt-scroll{overflow-x:auto;min-width:0;margin:0 -4px;padding:0 4px}
.plan-grid .drow.dpt-r{display:grid;grid-template-columns:minmax(210px,1.6fr) minmax(130px,1fr) minmax(104px,.8fr) 64px minmax(170px,1.3fr) 118px 112px;column-gap:16px;align-items:center;min-height:64px;padding:12px 0;border-bottom:1px solid var(--border);background:none;outline:0;box-shadow:none}
.plan-grid .drow.dpt-r.h{min-height:0;padding:0 0 10px;font:500 12px/1.3 var(--font-sans);color:var(--muted-foreground)}
.plan-grid .drow.dpt-r.h .dpt-pl{text-align:right}
.plan-grid .drow.dpt-r:not(.h):hover{background:var(--row-hover)}
.plan-grid .drow.dpt-r.calc{background:var(--row-group)}
.plan-grid .drow.dpt-r.sel{background:oklch(1 0 0 / 5%)}
.dpt-n{display:flex;align-items:center;gap:12px;min-width:0}
.dpt-nt{display:flex;flex-direction:column;gap:2px;min-width:0}
.dpt-nt .dn{font:500 14px/1.3 var(--font-sans)}
.dpt-s{font:var(--text-caption);color:var(--muted-foreground)}
.dpt-resp{display:flex;align-items:center;gap:8px;min-width:0;font-size:14px}
.dpt-resp .av{width:24px!important;height:24px!important}
.dpt-pl{display:flex;flex-direction:column;align-items:flex-end;text-align:right;gap:2px}
.dpt-pl .num{font:400 14px/1.3 var(--font-sans);white-space:nowrap}
.dpt-u{font:var(--text-caption);color:var(--muted-foreground)}
.dpt-ln{font-size:14px;white-space:nowrap}
.dpt-vs{display:flex;flex-direction:column;gap:8px;min-width:0}
.dpt-vsl{font:var(--text-caption);color:var(--muted-foreground)}
.dpt-st{display:flex;align-items:center}
.dpt-act{display:flex;justify-content:flex-end;align-items:center;gap:4px;white-space:nowrap}
.trash-sp{display:inline-block;width:32px;height:32px;flex:none}
.ib.trash{color:var(--muted-foreground)} .ib.trash:hover{color:var(--destructive)}
.add-dept{margin-top:8px;width:100%;height:44px;display:flex;align-items:center;justify-content:center;gap:8px;background:transparent;border:1px dashed var(--border-strong);border-radius:var(--radius-pill);color:var(--muted-foreground);font:500 14px/1 var(--font-sans);cursor:pointer}
.add-dept:hover{color:var(--foreground);border-color:var(--muted-foreground)}
.add-dept:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
@media (max-width:1100px){ .plan-grid .drow.dpt-r{grid-template-columns:minmax(200px,1.5fr) minmax(104px,.8fr) 64px minmax(150px,1.2fr) 118px 112px} .plan-grid .dpt-resp{display:none} }
@media (max-width:760px){ .plan-grid .drow.dpt-r{grid-template-columns:minmax(0,1fr) 118px 112px} .plan-grid .drow.dpt-r .hide-md{display:none} }

/* ======================================================= Summary strip (§4.4) */
.pstrip{grid-template-columns:repeat(6,minmax(0,1fr))}
.pstrip .well{min-height:112px}
.pstrip .w-v.lg{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pstrip .badge{margin-top:8px}
.pstrip .w-s{margin-top:6px}
@media (max-width:1180px){ .pstrip{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media (max-width:640px){ .pstrip{grid-template-columns:repeat(2,minmax(0,1fr))} }
.plan-grid .drow.dpt-r.h>*{font:500 12px/1.3 var(--font-sans);color:var(--muted-foreground)}
/* legacy status pills read as badges (§6.2) */
.pl{display:inline-flex;align-items:center;gap:4px;height:22px;padding:1px 8px 0;border-radius:var(--radius-pill);font:500 12px/1 var(--font-sans);white-space:nowrap;border:1px solid var(--border-strong);background:transparent;color:var(--foreground)}
.pl.ok{border-color:transparent;background:var(--pos-soft);color:var(--pos)}
.pl.loss{border-color:transparent;background:var(--neg-soft);color:var(--neg)}
.pl.dr,.pl.ret{border-color:transparent;background:var(--warn-soft);color:var(--warn)}
.badge.pl.outline{border-color:var(--border-strong);background:transparent;color:var(--foreground)}
.dpt-resp.tag{font:var(--text-caption);color:var(--muted-foreground)}

/* ======================================================= Line inputs (§3 Input · §5.3) */
.fld{width:100%;height:var(--control-h);border-radius:var(--radius-pill);border:1px solid transparent;background:var(--input);color:var(--foreground);padding:0 14px;text-align:right;font:400 14px/1 var(--font-sans);font-variant-numeric:tabular-nums;outline:none;transition:border-color var(--dur-1)}
.fld.left{text-align:left}
.fld.sm{height:32px;font-size:13px}
select.fld{appearance:none}
textarea.fld{border-radius:var(--radius-inner)}
.fld::placeholder{color:var(--muted-foreground)}
.fld:focus,.fld:focus-visible{border-color:var(--muted-foreground);box-shadow:0 0 0 3px var(--ring-focus)}
.fld.is-err{border-color:var(--destructive)} .fld.is-warn{border-color:var(--warn)}
.fld[readonly]{background:transparent;border-color:transparent;padding-right:0}
.fr .fld[data-unit="money"]{padding-left:30px;background-repeat:no-repeat;background-position:14px 50%}
.fr .fld[data-unit="count"]{padding-left:44px;background-repeat:no-repeat;background-position:14px 50%}
.fr .fld[data-unit][readonly]{background-image:none;padding-left:0}
.fld.calcv,.erow .fld.calcv{display:flex;align-items:center;justify-content:flex-end;border:0;background:none;padding:0;font:600 14px/1 var(--font-sans);color:var(--foreground)}
.mtc{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:var(--radius-chip);background:oklch(1 0 0 / 6%);color:var(--foreground);flex:none;vertical-align:middle}
.mtc svg{width:15px;height:15px}
.tbl td .mtc,.mtbl td .mtc{width:24px;height:24px;margin-right:8px;vertical-align:-7px}
.tbl td .mtc svg,.mtbl td .mtc svg{width:13px;height:13px}
/* entity rows (plan and fact lines) */
.erow .e-g,.erow .kd{display:none}
.erow .e-n{font:500 14px/1.35 var(--font-sans)}
.erow .src,.erow .ds85{font:var(--text-caption);color:var(--muted-foreground)}
.erow .ref b{font-weight:400;color:var(--foreground)}
.erow .ref{font:400 14px/1.3 var(--font-sans);color:var(--foreground);white-space:nowrap}
.erows .fr.erow{border-bottom:1px solid var(--border)}
.erows .fr.erow.h{border-bottom:1px solid var(--border)}
.erows .fr.erow.h .eyebrow{font:500 12px/1.3 var(--font-sans);color:var(--muted-foreground)}
.fr.calc.erow{background:var(--row-group)}
.fr.erow.calc-h{border-bottom:0!important;background:none}
.fr.erow.calc-h .eyebrow{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.erow .e-ic .ichip.calc{font:500 12px/1 var(--font-sans);color:var(--muted-foreground)}
.cf-tag{display:inline-flex;align-items:center;height:22px;padding:1px 8px 0;border-radius:var(--radius-pill);border:1px solid var(--border-strong);font:500 12px/1 var(--font-sans);color:var(--foreground);white-space:nowrap}
.unit-legend{display:flex;gap:14px;font:var(--text-caption);color:var(--muted-foreground)} .unit-legend b{font-weight:500;color:var(--foreground);margin-right:4px}
.lockbar{flex-direction:row;align-items:center;gap:12px;min-height:0;padding:12px 14px;width:100%}
.lockbar .lb-t{flex:1;display:flex;flex-direction:column;gap:2px;font:var(--text-caption);color:var(--muted-foreground)}
.lockbar .lb-t b{font:500 14px/1.3 var(--font-sans);color:var(--foreground)}
.stepfoot{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}

.fr .fld[data-unit="money"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3E%E2%82%AC%3C/text%3E%3C/svg%3E")}
body[data-cur] .fr .fld[data-unit="money"]:not([readonly]){background-image:var(--cur-pre);padding-left:var(--cur-pad,30px)}   /* the project currency (shell.js) */
.fr .fld[data-unit="count"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Epcs%3C/text%3E%3C/svg%3E")}

/* ======================================================= Monthly fact · steps list (§9) and live result wells */
.snav-w{display:flex;flex-direction:column;gap:16px}
.sn-top{display:flex;flex-direction:column;gap:8px}
.sn-m{font:500 14px/1.3 var(--font-sans)}
.sn-st{display:flex;align-items:center;justify-content:space-between;gap:8px;font:var(--text-caption);color:var(--muted-foreground)}
.snav{display:flex;flex-direction:column;gap:2px}
.snav a{position:relative;display:grid;grid-template-columns:22px minmax(0,1fr) auto;column-gap:10px;align-items:start;min-height:36px;padding:8px 12px 8px 8px;border-radius:18px;text-decoration:none;color:var(--sidebar-foreground)}
.snav a:hover{background:var(--sidebar-accent);color:var(--foreground)}
.snav a[aria-current="step"]{background:var(--sidebar-accent);color:var(--foreground)}
.snav a:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.snav .sn-i{display:grid;place-items:center;width:22px;height:20px;font:500 12px/1 var(--font-sans);color:var(--muted-foreground)}
.snav .n{font:500 14px/1.35 var(--font-sans);overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:anywhere}
.snav .c{font:var(--text-caption);line-height:20px;color:var(--muted-foreground);white-space:nowrap;text-align:right}
.snav .c.newc{color:var(--foreground)}
.snav .s{grid-column:2 / -1;font:var(--text-caption);color:var(--muted-foreground);margin-top:2px}
.snav a.sn-warn .s{color:var(--warn)} .snav a.sn-loss .s{color:var(--neg)}
.sn-keys{display:flex;flex-direction:column;gap:8px;font:var(--text-caption);color:var(--muted-foreground)}
.sn-keys .sn-kh{font:500 12px var(--font-sans);color:var(--foreground)}
.sn-keys kbd{margin-right:6px}
.live-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.live-cards .well.lc{min-height:112px}
.live-cards .well .w-v.lg{font-size:20px}
.live-cards .well .badge{margin-top:8px}
.live-cards .well .w-s{margin-top:6px}
.lc.empty .w-v{color:var(--muted-foreground)}
.lst-cards.live-cards{grid-template-columns:repeat(4,minmax(120px,1fr));flex:1 1 520px;min-width:0}
@media (max-width:900px){ .lst-cards.live-cards{grid-template-columns:repeat(2,minmax(0,1fr))} }
.chk-row{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--border);font:400 14px/1.4 var(--font-sans)}
.chk-row:last-child{border-bottom:0}
.chk-row .g{flex:none;width:16px;text-align:center}
.chk-row .g.ok{color:var(--pos)} .chk-row .g.warn{color:var(--warn)} .chk-row .g.loss{color:var(--neg)} .chk-row .g.ink2{color:var(--muted-foreground)}
.fg-steps,.fg-live{position:sticky;top:calc(var(--header-h) + 16px)}
.fr .fld[data-unit][readonly]{padding-left:30px;background-color:transparent}
.fr .fld[data-unit="count"][readonly]{padding-left:44px}
/* Notice: a card with a status line */
.notice{flex-direction:row;align-items:center;flex-wrap:wrap;gap:12px;padding:16px 20px}
.notice .nt-l{display:inline-flex;align-items:center;height:22px;padding:1px 8px 0;border-radius:var(--radius-pill);border:1px solid var(--border-strong);font:500 12px/1 var(--font-sans);color:var(--foreground);white-space:nowrap;flex:none}
.notice.t-neg .nt-l{border-color:transparent;background:var(--neg-soft);color:var(--neg)}
.notice.t-caution .nt-l,.notice.t-warn .nt-l{border-color:transparent;background:var(--warn-soft);color:var(--warn)}
.notice.t-pos .nt-l{border-color:transparent;background:var(--pos-soft);color:var(--pos)}
.notice .nt-t{flex:1 1 320px;font:400 14px/1.45 var(--font-sans);color:var(--foreground)}
.notice .nt-a{display:flex;gap:8px;flex-wrap:wrap}

/* ======================================================= P&L (§9) · category rows on chips */
.pl-tile{width:28px;height:28px;border:0;border-radius:var(--radius-chip);background:oklch(1 0 0 / 6%);color:var(--foreground);display:grid;place-items:center;flex:none}
.pl-tile svg{width:15px;height:15px}
.pl-tile.pl-none{background:transparent}
.prow .pc-n{font:500 14px/1.3 var(--font-sans);color:var(--foreground)}
.prow .pc-l{font:var(--text-caption);color:var(--muted-foreground)}
.prow .p9-f{font:600 16px/1.3 var(--font-sans)}
.prow .p9-f.neg{color:var(--neg)}
.cmp-l{font:var(--text-caption);color:var(--muted-foreground);margin-right:8px}

/* ======================================================= Investments (§9) · scenario switch cards on the well skeleton */
.dpanel.inv-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:24px}
.inv-sum .inv-c{background:var(--well);border-radius:var(--radius-inner);padding:12px 14px;min-height:112px;display:flex;flex-direction:column;gap:4px;border:0!important}
.inv-sum .inv-v{font:600 20px/1.25 var(--font-sans)}
.inv-sum .inv-s{font:var(--text-caption);color:var(--muted-foreground)}
@media (max-width:1180px){ .dpanel.inv-sum{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:560px){ .dpanel.inv-sum{grid-template-columns:1fr} }
.pb-card{background:var(--well,oklch(1 0 0 / 4%))!important;border:0!important;border-radius:var(--radius-inner,16px)!important;box-shadow:none!important;overflow:hidden}
.pb-card:has(.pb-sw2[aria-checked="true"]){box-shadow:inset 0 0 0 1px var(--border-strong,oklch(1 0 0 / 15%))!important}
.pb-sw2{border-radius:var(--radius-inner,16px)}
.pb-sw2:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus,color-mix(in oklch, oklch(0.556 0 0) 45%, transparent))}
.pb-main{display:inline-flex;align-items:center;gap:2px;height:var(--control-h,36px);padding:3px;border-radius:var(--radius-pill,999px);background:var(--muted,oklch(0.269 0 0));flex-wrap:nowrap}
.pb-main .pb-ml{font:var(--text-caption,400 12px/1.4 "Inter", "Inter Variable", system-ui, sans-serif);color:var(--muted-foreground,oklch(0.708 0 0));padding:0 8px 0 10px}
.pb-main .inv-r{height:100%;padding:0 12px;border:0;border-radius:var(--radius-pill,999px);background:transparent;color:var(--muted-foreground,oklch(0.708 0 0));font:500 13px/1 var(--font-sans,"Inter", "Inter Variable", system-ui, sans-serif);display:inline-flex;align-items:center;gap:6px}
.pb-main .inv-r[aria-checked="true"]{background:var(--background,oklch(0.145 0 0));color:var(--foreground,oklch(0.985 0 0));box-shadow:none}
.pb-in2{height:var(--control-h,36px);border:1px solid transparent;border-radius:var(--radius-pill,999px);background:var(--input,oklch(1 0 0 / 7.5%));padding:0 14px;margin:0 14px 8px}
.pb-in2:focus-within{outline:none;border-color:var(--muted-foreground,oklch(0.708 0 0));box-shadow:0 0 0 3px var(--ring-focus,color-mix(in oklch, oklch(0.556 0 0) 45%, transparent))}
.pb-in2.err{border-color:var(--destructive,oklch(0.704 0.191 22.216))}
.esel{height:32px;border:1px solid transparent;border-radius:var(--radius-pill);background-color:var(--input);color:var(--foreground);font:400 13px var(--font-sans);padding:0 30px 0 12px}
.esel:focus-visible{outline:none;border-color:var(--muted-foreground);box-shadow:0 0 0 3px var(--ring-focus)}
.pb-main{width:fit-content;max-width:100%}

/* ======================================================= Metrics library (§9 · cards 4.1 in a 1/4 grid) */
.dgrid.mlib{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap)}
@media (max-width:1280px){ .dgrid.mlib{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media (max-width:900px){ .dgrid.mlib{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:560px){ .dgrid.mlib{grid-template-columns:1fr} }
.dpanel.mcard{cursor:pointer;min-height:248px}
.dpanel.mcard:hover{background:color-mix(in oklch,var(--card) 94%,var(--foreground))}
.dpanel.mcard:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.mcard .mc-f{overflow-wrap:anywhere}
.mcard .kc-v .v{font-size:28px}
.mcard .mc-b{margin-top:auto;min-width:0}
.mcard .mc-b .chart-spark,.mcard .mc-b svg{display:block;width:100%;height:56px}
.mcard .mc-t{font:var(--text-caption);color:var(--muted-foreground)}
.mcard .mc-why{display:block;margin-top:6px;font:var(--text-caption);color:var(--muted-foreground)}
.dgrid.mlib{align-items:stretch}

/* ======================================================= /dev/ui · the style guide page (§11.2) */
.devui{gap:48px}
.dv-sec{display:flex;flex-direction:column;gap:16px;scroll-margin-top:calc(var(--header-h) + 16px)}
.dv-k{margin:0;font:400 14px var(--font-sans);color:var(--muted-foreground)}
.dv-h{font:var(--text-display);letter-spacing:-.02em;margin:0}
.dv-lead{margin:0;max-width:760px;font:400 14px/1.5 var(--font-sans);color:var(--muted-foreground)}
.dv-sub{font:var(--text-section);margin:16px 0 0}
.dv-note{margin:0;font:var(--text-caption);color:var(--muted-foreground)}
.dv-sws{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px}
.dv-sw{display:flex;flex-direction:column;gap:4px;font:var(--text-caption);color:var(--muted-foreground)}
.dv-sw b{font:500 13px var(--font-sans);color:var(--foreground)} .dv-sw code{font:inherit;color:var(--muted-foreground)}
.dv-chip{height:56px;border-radius:12px;border:1px solid var(--border)}
.dv-type{gap:0;padding:8px 24px}
.dv-tr{display:grid;grid-template-columns:180px 160px 1fr;align-items:center;gap:16px;min-height:52px;border-bottom:1px solid var(--border)}
.dv-tr:last-child{border-bottom:0} .dv-tr>span{color:var(--muted-foreground)} .dv-tr code{font:var(--text-caption);color:var(--muted-foreground)}
.dv-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.dv-g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.dv-g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.dv-eq{align-items:stretch} .dv-eq>*{display:flex;flex-direction:column} .dv-eq>*>.card,.dv-eq>*>.kcard{flex:1}
@media (max-width:1100px){ .dv-2,.dv-g2,.dv-g3{grid-template-columns:1fr} }
.dv-shapes{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.dv-shapes>div{display:flex;flex-direction:column;gap:4px;font:400 13px var(--font-sans)}
.dv-shape{display:block;height:64px;background:var(--card);border:1px solid var(--border)}
.dv-icons{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px;margin-top:12px}
.dv-ic{display:grid;place-items:center;height:48px;border-radius:12px;background:var(--card)}
.dv-cats{display:flex;flex-wrap:wrap;gap:12px 20px;margin-top:12px;font:400 14px var(--font-sans)}
.dv-cats>span{display:inline-flex;align-items:center;gap:8px}
.dv-r{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;align-items:center}
.dv-l{font:var(--text-caption);color:var(--muted-foreground)}
.dv-c,.dv-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.dv-hover{background:color-mix(in oklch,var(--primary) 90%,var(--background))!important}
.dv-focus{box-shadow:0 0 0 3px var(--ring-focus)}
.dv-focus-w{border-color:var(--muted-foreground);box-shadow:0 0 0 3px var(--ring-focus)}
.dv-chk{display:inline-flex;align-items:center;gap:8px;font:400 14px var(--font-sans);margin-right:16px}
.dv-static{position:static!important;display:flex}
.dv-col{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.toast.dv-static{width:100%;justify-content:space-between;align-items:center}
.ftip.dv-static{display:inline-block;width:auto}
.pop.dv-static{flex-direction:column;gap:6px}
.dv-pr{display:flex;justify-content:space-between;gap:12px} .dv-pr i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px}
.cdlg.dv-static{flex-direction:column;gap:16px}
.dv-shell{display:grid;grid-template-columns:auto 1fr;height:420px;border:1px solid var(--border);border-radius:var(--radius-card);overflow:hidden;background:var(--background)}
.dv-sb{display:flex;flex-direction:column;gap:2px;width:248px;padding:12px;background:color-mix(in oklch,var(--card) 70%,var(--background));border-right:1px solid var(--border);overflow:hidden}
.dv-shell.col .dv-sb{width:64px}
.dv-sbt{display:flex;align-items:center;gap:10px;height:40px;padding-left:12px;margin-bottom:12px} .dv-shell.col .dv-sbt{padding-left:0}
.dv-sb .key{position:relative}
.dv-sb .mtoggle{margin-top:auto} .dv-shell.col .dv-sb .key:last-child{margin-top:auto}
.dv-pg{padding:16px;display:flex;flex-direction:column;gap:16px}
.dv-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;flex:1}
.dv-cards span{background:var(--card);border-radius:20px} .dv-cards .w2{grid-column:span 2}
.dv-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px;padding:24px}
.dv-grid span{height:90px;border-radius:12px;background:color-mix(in oklch,var(--series-1) 25%,var(--card))}
.dv-ph{padding:24px}
.dv-toc a{text-decoration:none}

/* ---- Project graph (§9: nodes are cards radius 16 on --card; wires --series-* by pin type) ---- */
.gn{border-radius:var(--radius-inner);border:1px solid var(--border);background:var(--card);box-shadow:none}
.gn .gn-h,.gn.k-step .gn-h{background:transparent;border-radius:var(--radius-inner) var(--radius-inner) 0 0;border-bottom-color:var(--border);padding:0 12px}
.gn .gn-f{border-radius:0 0 var(--radius-inner) var(--radius-inner);padding:0 12px}
.gn.sel,.gn[aria-selected="true"]{border-color:var(--ring);box-shadow:0 0 0 2px var(--ring-focus)}
.gn-sq{display:none}
.gp-d[data-shape=diamond]{border-radius:2px}
.gc-wires{color:var(--foreground)}
.bp-dept .ichip{flex:none}
.bp-body{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--card)}
.bp-pal{border-radius:var(--radius-card) 0 0 var(--radius-card)} .bp-side{border-radius:0 var(--radius-card) var(--radius-card) 0}
.bp-canvas,.gc{background:var(--background)}
.bp-chip{height:var(--control-h);border:0;border-radius:var(--radius-pill);background:var(--secondary);font:500 14px var(--font-sans);color:var(--muted-foreground);padding:0 6px 0 14px}
.bp-chip select{border:0;background:transparent;color:var(--foreground);font:500 14px var(--font-sans);height:28px;border-radius:var(--radius-pill)}
.bp-fixed{padding-right:14px}
.bp-status{height:var(--control-h);border:0;padding:0;background:none;border-radius:var(--radius-pill)}
.bp-status:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.bp-st{height:28px;padding:0 12px;font:500 13px var(--font-sans)}
.bp-probs{border-radius:var(--radius-inner);border-color:var(--border);box-shadow:var(--shadow-pop);top:42px}
.bp-pr:last-child{border-bottom:0}
.bp-tabs{display:inline-flex;gap:2px;padding:3px;border:0;border-radius:var(--radius-pill);background:var(--secondary)}
.bp-tabs button{height:30px;padding:0 14px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--muted-foreground);font:500 14px var(--font-sans);cursor:pointer}
.bp-tabs button[aria-selected="true"]{background:var(--background);color:var(--foreground)}
.bp-pi{border-radius:12px}
.bp-pi:hover{background:var(--row-hover)}
.bp-ghost{border-radius:12px}
.bp-guide{border-radius:var(--radius-inner);border-color:var(--border-strong);background:var(--well)}
.bp-ro{border-radius:var(--radius-inner);border-color:var(--border);background:var(--well)}
.gc-mini{border-radius:12px;background:var(--card);border:1px solid var(--border)}
.bp-pal{padding:16px 12px}
.bp-side{padding:16px 20px}

/* ---- Setup / Business type (§9: choice cards 1/3 with an icon chip, selected = --ring 2px, one primary Continue) ---- */
.btp-c{border:1px solid var(--border);border-radius:var(--radius-card);padding:24px;gap:10px;min-height:200px;background:var(--card);transition:border-color var(--dur-1) var(--ease-out)}
.btp-c:hover{border-color:var(--border-strong)}
.btp-c.on{border-color:var(--ring);background:var(--card);box-shadow:inset 0 0 0 1px var(--ring)}
.btp-c .ichip{margin-bottom:6px}
.btp-t{font:var(--text-title);font-weight:600}
.btp-l{font:400 12px/1.5 var(--font-sans);color:var(--muted-foreground)}
.btp-demo .sw{border-radius:var(--radius-pill)}
.chip{height:32px;border:0;border-radius:var(--radius-pill);background:var(--secondary);color:var(--muted-foreground);font:500 14px var(--font-sans);padding:0 14px}
.chip:hover{color:var(--foreground)}
.chip.on{background:var(--primary);color:var(--primary-foreground)}
.chip:disabled{opacity:.45}
.fy12{display:flex;flex-wrap:wrap;gap:6px}
.setup7 .stop{height:64px;padding:0 24px 0 16px;gap:16px}
.setup7 .skey{width:32px;height:32px;border:0;border-radius:10px;background:var(--primary);color:var(--primary-foreground);font:700 11px var(--font-sans)}
.srail,.setup7 .srail{width:248px;background:var(--sidebar);padding:8px;gap:2px}
.setup7 .smain,.setup7 .bbar{left:248px}
.srow{grid-template-columns:16px minmax(0,1fr) auto;height:36px;padding:0 10px;border:0;border-radius:10px;font:500 14px var(--font-sans)}
.srow .n{font:500 14px var(--font-sans)}
.srow:hover{background:var(--row-hover)}
.srow.cur{background:var(--sidebar-accent)}
.srow.cur::before{display:none}
.srow .g{font-size:0;display:grid;place-items:center}
.srow .g::before{content:"";width:8px;height:8px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--muted-foreground)}
.srow.done .g::before{background:var(--pos);box-shadow:none}
.srow.cur .g::before{box-shadow:inset 0 0 0 1.5px var(--foreground)}
.srow.skip .g::before{box-shadow:inset 0 0 0 1.5px var(--border-strong)}
.bbar{background:var(--background);backdrop-filter:none;padding:0 32px}
.fy12 .chip{padding:0 12px;min-width:44px}
.btp-c .ichip{width:36px;height:36px;border-radius:12px}
.btp-c .ichip svg{width:20px;height:20px}
.setup-type-pick{margin-top:8px;padding:20px 24px;border:1px solid var(--border);border-radius:var(--radius-card);background:var(--card)}
.qsep{width:1px;height:20px;background:var(--border)}

/* status icons that replace the v10 text glyphs (app/v11-copy.js) */
.sico{display:inline-block;vertical-align:-2px;margin-right:6px;flex:none}
.badge .sico{margin-right:0}
/* the v7 .sw toggle (alerts, demo data) drawn as the §3 switch */
.sw:not(.hatch){width:36px;height:20px;border-radius:var(--radius-pill);background:var(--input);border:1px solid var(--border);position:relative;display:inline-block;vertical-align:middle;transition:background var(--dur-1)}
.sw:not(.hatch)::after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--muted-foreground);transition:transform var(--dur-1) var(--ease-out)}
.sw.on:not(.hatch){background:var(--primary);border-color:var(--primary)}
.sw.on:not(.hatch)::after{left:2px;transform:translateX(16px);background:var(--primary-foreground)}
.btp-demo .sw,.btp-demo .sw.on{width:36px;height:20px}
.btp-demo .sw::after,.btp-demo .sw.on::after{top:2px;left:2px;width:14px;height:14px}
.sw-b{background:none;border:0;padding:4px;cursor:pointer;border-radius:var(--radius-pill)}
.sw-b:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
/* legend swatches in Analysis stay swatches: small, rounded, no knob */
.an-legend .sw,.an-chl .sw,.an-tbl .sw,.an-srow .sw,.an-mr2 .sw{width:10px!important;height:10px!important;border-radius:3px!important;border:0!important}
.an-legend .sw::after,.an-chl .sw::after,.an-tbl .sw::after,.an-srow .sw::after,.an-mr2 .sw::after{display:none}
.kd.ind,.kd.tech,.kd.cost{color:var(--muted-foreground)}
/* v10 accent-soft fills that the transform turned into --ring: back to neutral surfaces */
tr.cl-agg td,.cl-agg td{background:var(--row-group)}
.cl-prev{border:1px solid var(--border);background:var(--well);border-radius:var(--radius-inner)}
.cl-tier,.cl-warn{border-radius:var(--radius-pill);padding:2px 8px;font-weight:500}
.cl-tier{border-color:var(--border-strong)}
.cl-tier.flash,.cl-warn.flash{background:var(--neutral-soft)}
.cl-strip{border-radius:var(--radius-card);border:0}
.cl-cur{border-radius:var(--radius-inner);border-color:var(--border)}
.cl-ferr{border-radius:var(--radius-inner)}
.cl-in{border-color:var(--border-strong)!important;border-radius:10px}
.cl-ro{border-radius:10px}
.chipk{display:inline-flex;align-items:center;height:22px;padding:0 8px;border:1px solid var(--border-strong);border-radius:var(--radius-pill);font:500 12px var(--font-sans);color:var(--foreground);background:transparent}
.dropz.over{border-color:var(--ring)!important;background:var(--well)!important}
.chip85.sel{background:var(--primary);color:var(--primary-foreground)}
.lad85 .lst.here{background:var(--secondary);border-color:var(--border-strong)}
.bp-tabs [role=tab][aria-selected=true]{background:var(--background);color:var(--foreground)}
.wx-new{border-radius:var(--radius-pill);background:var(--secondary);color:var(--foreground);padding:1px 8px}
.wx-o .seg button[aria-checked=true]{background:var(--background);color:var(--foreground);border-color:transparent}
.cb.on{background:var(--primary);border-color:var(--primary)}

/* ---- Sign-in (§9: one 400px card centred, Google button outline) ---- */
.auth-wrap{background-image:none;background:var(--background)}
.auth-card.dpanel{width:min(400px,100%);padding:32px;gap:20px;border:0;border-radius:var(--radius-card);background:var(--card);text-align:center}
.auth-logo{width:40px;height:40px;margin:0 auto;border-radius:12px;background:var(--primary);color:var(--primary-foreground);display:grid;place-items:center;font:700 13px var(--font-sans)}
.auth-card .brand-big{display:flex;flex-direction:column;align-items:center;gap:4px}
.auth-card .brand-big b{font:var(--text-section)}
.auth-card .brand-big span{font:var(--text-body);color:var(--muted-foreground)}
.gbtn{height:40px;border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:transparent;color:var(--foreground);font:500 14px var(--font-sans);gap:10px}
.gbtn:hover{background:var(--row-hover)}
.auth-card .auth-state .btn{width:100%}
.auth-foot2{color:var(--muted-foreground)}
.auth-state .btn,.auth-state .gbtn{margin-top:16px}

/* ---- Dashboard arrange mode (§9: tiles 92px on --card radius 20; no colour squares) ---- */
.arr-bar{border:0;border-radius:var(--radius-card);background:var(--card);padding:12px 12px 12px 20px}
.arr-sqc,.arr-sq{display:none}
.arr-t{border:1px solid transparent;border-radius:20px;background:var(--card)}
.arr-t:hover{border-color:var(--border-strong)}
.arr-h{border-bottom:0;height:34px;padding:0 10px 0 6px}
.arr-b{padding:0 16px 12px}
.arr-sp{color:var(--chart-1)}
.arr-w{font-variant-numeric:tabular-nums}
.arr-sw i{width:36px;height:20px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--input)}
.arr-sw i::after{top:2px;left:2px;width:14px;height:14px;border-radius:50%}
.arr-sw[aria-checked="true"] i{background:var(--primary);border-color:var(--primary)}
.arr-sw[aria-checked="true"] i::after{left:18px;background:var(--primary-foreground)}
.arr-slot,.arr-end{border-radius:20px}
/* widget library (Add widget) */
.wx{border-radius:var(--radius-card);overflow:hidden;border-color:var(--border)}
.wx-cat{border-radius:10px;border:0}
.wx-cat.on{background:var(--sidebar-accent);border:0}
.wx-row.sel{background:var(--row-hover)}
.wx-rep{border-radius:10px}
.wx-on{border-color:var(--border-strong)}
.wx-lit>.dpanel{box-shadow:0 0 0 2px var(--ring)}
.wx-s{white-space:normal;text-overflow:clip;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* contrast (axe ≥ 4.5): neg text on its 18% fill over a well is lifted a step toward the foreground; captions never dimmed below --muted-foreground */
.badge.neg,.spill.t-neg,.spill.neg{color:color-mix(in oklch,var(--neg) 82%,var(--foreground))}
.prow .pc-l{opacity:1}
/* the back link's 44px hit area (::before) stays on the link: it covered the header actions */
.phead .ph-back{position:relative}
.phead .ph-s .ph-ctx{display:inline}

/* ---- fixes from the legacy-set triage ---- */
/* header month arrows reuse .stp: the v7 fact-step rules (grid, padding, min-width 150 at ≤760, borders) must not reach them */
.mpill .stp{grid-template-columns:none;min-width:0!important;border:0!important;padding:0!important;box-shadow:none;gap:0}
.mpill .stp svg{display:block;margin:0}
/* the month label keeps one width (FIX v7.8 §1): the longest label is “September 2025” */
.mpill .cur{min-width:136px;font-variant-numeric:tabular-nums}
/* profile menu: fixed above the user block, outside the sidebar's clip, never stretched by the v7 top:64px */
#pmenu:not(.acct){position:fixed;top:auto!important;right:auto!important;left:8px;bottom:68px;max-height:calc(100vh - 88px);overflow:auto}
/* icon buttons in tables are 32 (§3), the same as the spacer that keeps the action column straight */
.ib.trash{width:var(--bh,32px);height:var(--bh,32px)}
/* ≤ 760: the header fits a phone (status badge keeps its dot, the words go to its label) */
@media (max-width:600px){ .hdr-in{padding:0 12px;gap:8px} .mpill .cur{min-width:0;padding:0 4px} #hBadge .hp-sep,#hFields{display:none} }
/* Profit ladder: one column grid for all rows (subgrid) — columns grow with the widest number (10⁹ GGR fits), rows 44–52px (FIX v9.6 §1.6) */
.pld{grid-template-columns:minmax(120px,1.3fr) minmax(min-content,.8fr) minmax(min-content,.8fr) minmax(56px,1fr) minmax(min-content,58px) minmax(min-content,.7fr);column-gap:12px;
  grid-template-rows:auto repeat(9,minmax(44px,52px));align-content:start}
.pld-r{grid-column:1/-1;grid-template-columns:subgrid;column-gap:12px}
@media (max-width:760px){ .pld{grid-template-columns:minmax(96px,1fr) minmax(min-content,auto) minmax(40px,1fr) minmax(min-content,auto)} .pld-r{grid-template-columns:subgrid} .pld-p,.pld-pc{display:none} }
/* fact rows with a plan column in a narrow main column (≤ 520): the ≤ 1100 .pvr placements must not win over these */
@container erows (max-width:520px){
  .erows.pv .erow.pvr .entity-value,.erows.pv .erow.pvr .e-v{grid-column:3;grid-row:1}
  .erows.pv .erow.pvr .e-p{grid-column:2;grid-row:2;text-align:left}
  .erows.pv .erow.pvr .e-vs{grid-column:3;grid-row:2}
  .erows.pv .erow.pvr .e-d{grid-column:3;grid-row:3}
  .erows.pv .erow.pvr .e-st,.erows.pv .erow.pvr .msgl{grid-row:4}
}
/* ladder rows: 44 when the card sizes to its content, stretched up to 52 beside a taller neighbour (auto tracks stretch only in a definite height) */
.pld{grid-template-rows:min-content repeat(9,minmax(44px,auto));align-content:stretch;max-height:calc(32px + 9 * 52px)}
/* fact page: the main column stays above the 520px narrow-row breakpoint at 1440 with the menu open (steps 224 · live 288) */
@media (min-width:1101px){ .factgrid{grid-template-columns:240px minmax(0,1fr) 272px;gap:16px} }
/* reflow (≤ 760): headers wrap, wide tables and charts scroll inside their card, never the page */
@media (max-width:760px){
  .dp-h{flex-wrap:wrap;row-gap:8px}
  .dp-a{flex-wrap:wrap;max-width:100%;min-width:0}
  .dp-a .seg,.ph-a .seg{max-width:100%;overflow-x:auto;scrollbar-width:none}
  .pld,.dpanel>.dtable,.card>.dtable,.inv-chart{overflow-x:auto;overscroll-behavior-x:contain}
  .mc-why,.kc-v .v{white-space:normal;overflow-wrap:anywhere}
}
@media (max-width:760px){
  .dp-h .cum-h{align-items:flex-start;text-align:left;max-width:100%}
  .cum-h .cum-v{flex-wrap:wrap;justify-content:flex-start}
  .inv-sr{grid-template-columns:minmax(0,1fr) minmax(0,auto);row-gap:6px}
  .inv-sr .sb{grid-column:1 / -1;grid-row:2}
}
@media (max-width:760px){ .kc-v{flex-wrap:wrap;row-gap:4px} .kc-dl{flex-wrap:wrap} }
@media (max-width:400px){ .hdr-in{padding:0 8px;gap:4px} .pctl{gap:4px} .mpill .cur{font-size:13px;padding:0 2px} .hdr .bell{width:32px} }
@media (max-width:760px){ .kc-dl{max-width:100%;min-width:0} .kc-vs{white-space:normal} }
@media (max-width:400px){ .wells,.kc-wells,.msum3 .wells{grid-template-columns:minmax(0,1fr)!important} .well .badge{max-width:100%;white-space:normal;height:auto;min-height:22px} }
@media (max-width:760px){ .cum-w{flex-wrap:wrap;row-gap:8px} }
.badge.pos,.spill.t-pos,.spill.pos{color:color-mix(in oklch,var(--pos) 85%,var(--foreground))}
.ks-plan .t-neg{--t-ink:color-mix(in oklch,var(--neg) 80%,var(--foreground))}

/* ===== FIX v11.1 ===== */
/* §4 Audit log: inside the 1280 container, When / Who on one line, What wraps, Change in one column */
.au-t{width:100%;table-layout:auto}
.au-t td,.au-t th{vertical-align:top}
.au-t .au-w,.au-t .au-p{white-space:nowrap}
.au-who{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.au-x{min-width:220px;width:40%}
.au-n{display:block;overflow-wrap:anywhere}
.au-act{display:block;font:var(--text-caption);color:var(--muted-foreground);margin-top:2px}
table.au-t td.au-c{white-space:normal;text-align:left;overflow-wrap:anywhere} .au-c .nw{white-space:nowrap}
.au-b{color:var(--muted-foreground)}
.au-a{font-weight:600}
.au-f{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px}
.au-f label,.au-f .lbl{font:500 13px/1.3 var(--font-sans)}
@media (max-width:760px){ .au-f{grid-template-columns:1fr 1fr} }
/* §5 Settings */
.set-page .stabs{display:inline-flex;margin:0;align-self:flex-start}
.set-page .stabs .segl{display:inline-flex;align-items:center;height:30px;padding:0 16px;border-radius:var(--radius-pill);color:var(--muted-foreground);font:500 14px var(--font-sans);text-decoration:none}
.set-page .stabs .segl[aria-current="page"]{background:var(--background);color:var(--foreground)}
.fld-w{display:flex;flex-direction:column;gap:6px;min-width:0}
.fld-w .lbl{font:500 13px/1.3 var(--font-sans);color:var(--foreground)}
.fld-w .hint{margin:0;font:var(--text-caption);color:var(--muted-foreground)}
.lockv{display:flex;align-items:center;justify-content:space-between;gap:8px;height:var(--control-h);padding:0 14px;border-radius:var(--radius-pill);background:var(--well);color:var(--foreground);font:400 14px var(--font-sans)}
.lockv .lk{color:var(--muted-foreground);display:inline-flex}
.ifx{display:flex;align-items:center;height:var(--control-h);border-radius:var(--radius-pill);background:var(--input);border:1px solid var(--border);padding:0 14px 0 4px;gap:8px}
.ifx:focus-within{box-shadow:0 0 0 3px var(--ring-focus);border-color:var(--ring)}
.ifx .fctl{flex:1;min-width:0;height:100%;border:0;background:transparent;box-shadow:none;text-align:right;font:500 14px var(--font-sans);font-variant-numeric:tabular-nums;color:var(--foreground);padding:0 4px;outline:none}
.ifx .fctl::placeholder{color:var(--muted-foreground);font-weight:400}
.ifx-s{flex:none;font:400 14px var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.thr{margin:4px 0 16px}
.thr-bar{position:relative;height:10px;border-radius:var(--radius-pill);background:var(--meter-track);overflow:hidden}
.thr-bar i{position:absolute;top:0;bottom:0}
.thr-u{background:var(--chart-3)} .thr-ok{background:var(--pos)} .thr-w{background:var(--warn)} .thr-c{background:var(--neg)}
.thr-l{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:8px;font:var(--text-caption);color:var(--muted-foreground)}
.thr-l b{color:var(--foreground);font-weight:600}
.thr-n{margin:6px 0 0}
.thr .thr-n{font:var(--text-caption);color:var(--muted-foreground)}
/* §1 project switcher: popover in a portal, 320 wide, 44px items with an initials tile */
.psw-m{position:fixed;width:320px;max-height:calc(100vh - 16px);overflow:auto;z-index:90;left:0;top:0;padding:6px;gap:2px}
.psw-m [role=menuitemradio]{display:grid;grid-template-columns:28px minmax(0,1fr) 16px;align-items:center;gap:10px;min-height:44px;padding:6px 10px;text-align:left}
.psw-m [aria-checked="true"]{background:oklch(1 0 0 / 7%)}
.psw-av{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:var(--secondary);color:var(--foreground);font:600 11px/1 var(--font-sans)}
.psw-m [aria-checked="true"] .psw-av{background:var(--primary);color:var(--primary-foreground)}
.psw-tx{display:flex;flex-direction:column;min-width:0}
.psw-mn{font:500 14px/1.3 var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.psw-mt{font:var(--text-caption);color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.psw-ck{color:var(--foreground);display:inline-flex}
.psw-m a[role=menuitem]{justify-content:flex-start;gap:10px;min-height:40px}
.psw-m .tchip{display:none}
.psw-n,.psw-t{text-transform:none}
button.mkey{border:0;cursor:pointer;padding:0}
button.mkey:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
/* §2 Add widget: the list never goes under the panel; the button of every row stays whole */
.wx-bd{grid-template-columns:200px minmax(260px,1fr) 360px}
.wx-row{grid-template-columns:minmax(0,1fr) auto}
.wx-row .btn{width:auto;min-width:88px}
.wx-opt{min-width:0}
.wx-nm{display:flex;align-items:center;gap:6px;min-width:0}
.wx-nm,.wx-fm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wx-pv{overflow-x:hidden}
.wx-card{max-width:100%;min-width:0}
.wx-card .card,.wx-card .dpanel{max-width:100%}
.wx-seg{display:grid!important;grid-auto-flow:column;grid-auto-columns:1fr;height:var(--control-h);padding:3px;gap:2px;border-radius:var(--radius-pill);background:var(--muted)}
.wx-o .wx-seg button{min-height:0;height:30px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--muted-foreground);font:500 13px var(--font-sans);display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:0 6px;white-space:nowrap}
.wx-o .wx-seg button[aria-checked=true]{background:var(--background);color:var(--foreground)}
.wx-o .wx-seg button.off{color:var(--muted-foreground);opacity:.75;cursor:not-allowed}
.wx-lk{display:inline-flex}
.wx-why{margin:2px 0 0;font:var(--text-caption);color:var(--muted-foreground)}
.wx-ol{font:500 13px var(--font-sans);color:var(--foreground)}
@media (max-width:1100px){ .wx-bd{grid-template-columns:180px minmax(260px,1fr)} }
.kc-why{color:var(--muted-foreground);font:var(--text-caption)}
/* §3.3 the chart takes the rest of the card: no strip between the wells and the chart */
.mcc-cb{flex:1 1 auto;margin-top:0}
.mcc-cb>.chart.fill,.kc-chart>.chart.fill,.kcard .chart.fill{flex:1 1 auto;min-height:120px}
.kcard{display:flex;flex-direction:column}
.grid12.rows>.wd>.kcard{flex:1 1 auto}   /* FIX v12.27 · a KPI card fills its row (a badge in words that wraps makes one card taller): the row stays even */
.grid12.rows>.wd>.kcard>.kc-chart{margin-top:0}   /* … and its chart stays right under the wells; what is left goes below it */
.mcc:has(>.kc-wells) .chart-lg{display:none}   /* FIX v12.27 C11 · the EBIT card with Plan and Forecast wells: the Plan well names the plan line, no legend */
.mcc:has(>.kc-wells) .mcc-cb,.mcc:has(>.kc-wells) .mcc-cb>.chart.fill{flex:1 1 120px;min-height:120px}
.mcc:has(>.kc-wells) .chart-box{min-height:120px}   /* … and its chart gives way first (120 at least, more when the row has room), so the card is no taller than GGR and NGR beside it */
/* §6 Profit ladder: rows share the free height of the card (FIX v9.6), the footer stays at the bottom, no strip in between */
.pld{grid-template-rows:min-content repeat(9,minmax(44px,1fr));max-height:none;flex:1 1 auto}
.dpanel:has(>.wd-b>.pld),.dpanel:has(.pld){display:flex;flex-direction:column}
.wd-b:has(>.pld){flex:1 1 auto;display:flex;flex-direction:column;min-height:0}
.wd-b:has(>.pld) .rep-foot{margin-top:auto}
.pld-r.res:last-child,.pld-r.res{background:transparent}
.meter>.m-over{right:3px;font:800 11px/1 var(--font-sans);color:var(--card);z-index:2}
.pld-m .meter{overflow:visible}
/* §7 department header: the meta line and card descriptions wrap, never run past the container */
.phead .ph-meta,.phead .ph-line,.ph-s{white-space:normal;overflow-wrap:anywhere;min-width:0}
.card-description,.dp-d,.dpanel .dp-h p{white-space:normal;overflow:visible;text-overflow:clip}
/* §3.2 the “needs data” skeleton bars: neutral, never the SVG default black */
.mcc-cw{flex:1 1 auto;display:flex;min-height:120px}
.mcc-cv{flex:1;display:flex;align-items:flex-end}
.mcc-ch{display:block;width:100%;height:100%;min-height:92px}
.mcc-ch.needs .ph{fill:var(--chart-5,oklch(0.269 0 0))}
svg.mcc-ch:not(.needs) rect{fill:var(--chart-3,oklch(0.439 0 0))}

/* ---- FIX v11.1 §7b · the collapse button sits at the top of the menu, always in the same place ---- */
.sb-top{gap:8px;padding-right:0}
.sb-top .mtoggle{display:grid;place-items:center;flex:none;width:32px;height:32px;padding:0;border:0;border-radius:var(--radius-chip);background:transparent;color:var(--muted-foreground);position:relative;cursor:pointer}
.sb-top .mtoggle:hover{background:var(--sidebar-accent);color:var(--foreground)}
.sb-top .mtoggle .tl{display:none;position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);z-index:80;white-space:nowrap;padding:6px 10px;border-radius:var(--radius-chip);background:var(--primary);color:var(--primary-foreground);font:500 12px/1.2 var(--font-sans);pointer-events:none}
.sb-top .mtoggle:hover .tl,.sb-top .mtoggle:focus-visible .tl{display:block}
body:not(.collapsed) .sb-top .mtoggle .tl{left:auto;right:0;top:calc(100% + 6px);transform:none}
body.collapsed .sb-top{flex-direction:column;align-items:flex-start;height:auto;gap:8px;margin-bottom:8px}
body.collapsed .sb-top .mtoggle{width:40px;height:36px;border-radius:var(--radius-pill)}
/* only the user stays at the bottom; the list scrolls between the top row and the user */
.sb-bot{padding-top:8px}
.menu .mg{padding:10px 12px 4px}
.sb-top{margin-bottom:8px}
#menuNav{gap:1px}
body.collapsed .sb-top{padding-top:4px}   /* the IBO tile stays centred on the 64px header line */

/* ---- FIX v11.1 §7c · “Formula” trigger under the card title, the formula in a tooltip ---- */
.fx-trig{display:inline-flex;align-items:center;gap:4px;height:20px;margin-top:2px;padding:0;border:0;background:transparent;color:var(--muted-foreground);font:500 12px/1 var(--font-sans);
  text-decoration:underline dotted color-mix(in oklch,var(--muted-foreground) 60%,transparent);text-underline-offset:4px;cursor:help;border-radius:6px;align-self:flex-start;position:relative;z-index:2;white-space:nowrap}
.fx-trig svg{flex:none}
.fx-trig:hover,.fx-trig.open{color:var(--foreground)}
.fx-trig:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.fx-tip{position:fixed;z-index:120;max-width:320px;width:max-content;display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:var(--muted);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-pop);pointer-events:none}
.fx-tip[hidden]{display:none}
.fx-tip .k{font:400 11px/1.3 var(--font-sans);color:var(--muted-foreground)}
.fx-tip .f{font:500 13px/1.4 var(--font-sans);color:var(--foreground)}
.fx-tip .s{font:400 11px/1.4 var(--font-sans);color:var(--muted-foreground)}
.ph-meta .fx-trig{margin-top:0}
/* the KPI card opens as a whole through its title link stretched over the card; the Formula button sits above it */
.kcard.kc-stretch{position:relative;cursor:pointer}
.kcard .kc-link{color:inherit;text-decoration:none}
.kcard .kc-link:focus-visible{outline:none}
.kcard .kc-link:focus-visible::before{content:"";position:absolute;inset:0;border-radius:var(--radius-card,26px);outline:3px solid var(--ring-focus);outline-offset:0;pointer-events:none}   /* the ring goes round the whole card, drawn by its title link */
.kcard.kc-stretch{border-radius:var(--radius-card,26px)}
.kcard .kc-ctl,.kcard .kc-go,.kcard [data-href]{position:relative;z-index:2}
/* FIX v11.1 §1 · the top of the menu is context (no chevron, no hover); projects switch from the account menu at the bottom */
.sb-proj{min-width:0;flex:1}
.sb-ctx{display:flex;flex-direction:column;min-width:0;gap:1px;padding:0 4px;cursor:default}
.sb-pn{font:600 14px/1.25 var(--font-sans);color:var(--foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:none}
.sb-pt{font:var(--text-caption);color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.collapsed .sb-ctx{display:none}
.menu .mkey{cursor:default}
.ub{border-radius:12px;padding:8px}
.ub:hover{background:oklch(1 0 0 / 7%)} .ub:hover .nm{text-decoration:none}
.ub[aria-expanded="true"]{background:oklch(1 0 0 / 7%)}
.ub .col{flex:1}
.ub-sw{display:grid;place-items:center;color:var(--muted-foreground);flex:none}
body.collapsed .ub-sw{display:none}
#pmenu.acct{position:fixed;bottom:auto;right:auto;width:320px;max-height:calc(100vh - 16px);overflow:auto;z-index:90;display:flex;flex-direction:column;gap:2px;padding:6px;background:var(--popover);border:1px solid var(--border);border-radius:var(--radius-inner);box-shadow:var(--shadow-pop)}
#pmenu.acct[hidden]{display:none}
#pmenu.acct [role=group]{display:flex;flex-direction:column;gap:2px}
.acct-l{font:var(--text-caption);color:var(--muted-foreground);padding:8px 10px 4px}
#pmenu.acct button[role=menuitem]{justify-content:flex-start;gap:10px;min-height:40px;width:100%}
#pmenu.acct .pm-dev{padding:8px 10px;border-top:1px solid var(--border);margin-top:4px}
#pmenu.acct .test-box{padding:8px 10px;border-top:1px solid var(--border);margin-top:4px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
/* FIX v11.1 §7b rev · the collapse control sits under the IBO tile, its icon on the same spot open and collapsed (±1px):
   open — a 36px row “Collapse ⌘B” with the icon on the item-icon column; collapsed — the same icon in a 40×36 key */
.sb-top,body.collapsed .sb-top{flex-direction:row;align-items:center;height:40px;margin-bottom:0;padding-top:0;gap:10px}
body.collapsed .sb-top{padding:0}
.menu>.mtoggle.sb-col{display:flex;align-items:center;gap:12px;width:100%;height:36px;padding:0 12px;margin:4px 0 2px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--muted-foreground);font:500 14px/1 var(--font-sans);cursor:pointer;flex:none;position:relative;text-align:left}   /* + the menu gap 4 = 6px to Work */
.menu>.mtoggle.sb-col svg{flex:none;width:18px;height:18px}
.menu>.mtoggle.sb-col .ml{flex:1}
.menu>.mtoggle.sb-col .kb{flex:none;font:500 11px/1 var(--font-sans);color:var(--muted-foreground);padding:3px 6px;border:1px solid var(--border);border-radius:6px}
.menu>.mtoggle.sb-col:hover{background:oklch(0.985 0 0 / 5%);color:var(--foreground)}
body.collapsed .menu>.mtoggle.sb-col{width:40px;padding:0;justify-content:center}
.menu>.mtoggle.sb-col .tl{display:none;position:absolute;left:calc(100% + 12px);top:50%;transform:translateY(-50%);z-index:80;white-space:nowrap;padding:6px 10px;border-radius:10px;background:var(--primary);color:var(--primary-foreground);font:500 12px/1.2 var(--font-sans)}
.menu>.mtoggle.sb-col:hover .tl,.menu>.mtoggle.sb-col:focus-visible .tl{display:block}
/* one highlight: the active section 9%; hover is fainter (5%) and leaves with the pointer; focus shows only from the keyboard */
.mi:hover,.key:hover{background:oklch(0.985 0 0 / 5%)}
.mi.active,.mi.active:hover,.key.on,.key.on:hover{background:var(--sidebar-accent)}
.mi:focus:not(:focus-visible),.key:focus:not(:focus-visible){box-shadow:none;outline:none}
/* FIX v11.1 §7d.1 · the card menu: popover 240 on <body>; Chart radios carry a check and 7%; Remove in --neg */
.rmenu.mcc-menu{position:fixed;width:240px;min-width:0;padding:6px;gap:2px;background:var(--popover);border:1px solid var(--border);border-radius:var(--radius-inner);box-shadow:var(--shadow-pop)}
.rmenu.mcc-menu button{display:flex;align-items:center;justify-content:space-between;gap:8px;height:36px;padding:0 10px;border-radius:10px;font:500 14px/1.2 var(--font-sans)}
.rmenu.mcc-menu button[aria-checked="true"]{background:oklch(1 0 0 / 7%)}
.rmenu.mcc-menu button:hover,.rmenu.mcc-menu button:focus-visible{background:var(--accent)}
.rmenu.mcc-menu .rm-gl{padding:6px 10px 4px;font:var(--text-caption);color:var(--muted-foreground)}
.rmenu.mcc-menu .rm-ck{display:inline-flex;color:var(--foreground)}
.rmenu.mcc-menu .rm-sep{height:1px;background:var(--border);margin:4px 2px}
.rmenu.mcc-menu button.neg{color:var(--neg)}
/* §7d.2 · empty or failed chart: words, never grey blocks */
.mcc-none{margin:auto 0 0;font:var(--text-caption);color:var(--muted-foreground)}
.mcc-err{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:auto}
/* FIX v11.1 §7e · Profit ladder in sections. Closed: five rows share the card height (FIX v9.6); open: the card grows, no inner scroll */
.plad{display:flex;flex-direction:column;min-width:0;flex:1 1 auto}
.plad-r{display:grid;grid-template-columns:20px 28px minmax(120px,1fr) minmax(72px,84px) minmax(72px,84px) minmax(64px,96px) 44px minmax(72px,86px);column-gap:8px;align-items:center;min-height:44px;position:relative;border-radius:12px}
.plad-r.h{min-height:32px;font:500 12px/1.3 var(--font-sans);color:var(--muted-foreground);cursor:default}
.plad-r.h .plad-f,.plad-r.h .plad-p,.plad-r.h .plad-d,.plad-r.h .plad-m{text-align:right}
.plad-r.h .plad-m{text-align:left}
.plad-cells{display:contents}
.plad-s{display:flex;flex-direction:column;flex:1 1 auto;min-height:44px}
.plad-s+.plad-s{border-top:1px solid var(--border)}
.plad-r.sec{flex:1 1 auto;cursor:pointer;outline:none}
.plad-r.sec:hover{background:var(--row-hover)}
.plad-r.sec:focus-visible{box-shadow:inset 0 0 0 2px var(--ring-focus)}
.plad-ch{display:grid;place-items:center;color:var(--muted-foreground);transition:transform var(--dur-3) var(--ease-io)}
.plad-s.open .plad-ch{transform:rotate(90deg)}
.plad-n{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:0}
.plad-t{display:flex;align-items:center;gap:6px;min-width:0}
.plad-r.sec .plad-nt{font:600 14px/1.25 var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plad-sub{font:var(--text-caption);color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plad-sub.warn-t{color:var(--warn)} .plad-sub.neg-t{color:var(--neg)}
.plad-f,.plad-p,.plad-d,.plad-pc{text-align:right;white-space:nowrap;font:400 14px/1.3 var(--font-sans);font-variant-numeric:tabular-nums}
.plad-r.sec .plad-f{font-weight:600}
.plad-p{color:var(--muted-foreground)}
.plad-pc{font-size:12px;color:var(--muted-foreground)}
.plad-m{min-width:0}
.plad-m .meter{overflow:visible}
/* the inside of a section: height animates 0fr → 1fr */
.plad-x{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-3) var(--ease-io)}
.plad-s.open .plad-x{grid-template-rows:1fr}
.plad-xi{overflow:hidden;min-height:0}
.plad-s.open .plad-xi{padding-bottom:6px}
.plad-r.st{min-height:40px}
.plad-r.st .plad-ic{display:grid;place-items:center;width:20px;height:20px;margin-left:4px;color:var(--muted-foreground)}
.plad-r.st .plad-nt{font:500 13px/1.3 var(--font-sans);color:var(--foreground)}
.plad-r.st .plad-f,.plad-r.st .plad-p,.plad-r.st .plad-d{font-size:13px}
.plad-r.ln{min-height:34px}
.plad-r.ln .plad-nt,.plad-r.ln .plad-f,.plad-r.ln .plad-p,.plad-r.ln .plad-d{font-size:13px;color:var(--muted-foreground)}
.plad-r.ln .plad-nt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:12px}
.plad-r.ln .plad-f{color:var(--foreground)}
.plad-guide{justify-self:center;width:1px;align-self:stretch;background:var(--border)}
.plad-r.ln .meter{height:6px}
.plad-r .kpi-dot{margin-left:2px}
.plad-r[data-critical="true"]::before{content:"";position:absolute;inset:0;border-radius:12px;background:color-mix(in oklch,var(--neg) 9%,transparent);animation:crit-breathe var(--dur-crit-glow) var(--ease-io) infinite;pointer-events:none}
.plad-r>*{position:relative;z-index:1}
.plad-cells>*{position:relative;z-index:1}
@media (prefers-reduced-motion:reduce){ .plad-x,.plad-ch{transition:none} .plad-r[data-critical="true"]::before{animation:none;opacity:1} }
body.motion-off .plad-x,body.motion-off .plad-ch{transition:none}
.plad-all{margin-left:4px}

.plad-r.st .plad-n,.plad-r.ln .plad-n{flex-direction:row;align-items:center;justify-content:flex-start;gap:6px}
.plad-r.ln .plad-nt,.plad-r.st .plad-nt{min-width:0}
/* the section row: name on line 1 with the numbers, its “what made it” line under it across the row (never cut) */
.plad-r.sec{grid-template-rows:auto auto;align-content:center;row-gap:2px;padding:6px 0}
.plad-r.sec>.plad-ch,.plad-r.sec>.ichip{grid-row:1/3}
.plad-r.sec>.plad-n{grid-row:1;grid-column:3}
.plad-r.sec>.plad-sub{grid-row:2;grid-column:3/-1;white-space:normal;overflow:visible}
.plad-r.sec .plad-cells>*{grid-row:1}
.plad-r.ln .plad-d.pos-t{color:var(--pos)} .plad-r.ln .plad-d.neg-t{color:var(--neg)}
/* FIX v11.1 §7f · Reasons from people: 5 newest in the card, all of them in a 460 sheet */
.rsn-h{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}
.rsn-l{display:flex;flex-direction:column}
.rsn-r{display:grid;grid-template-columns:32px minmax(0,1fr) auto;column-gap:12px;align-items:start;padding:12px 0}
.rsn-r+.rsn-r{border-top:1px solid var(--border)}
.rsn-av .av,.rsn-av img{width:32px;height:32px}
.rsn-m{display:flex;flex-wrap:wrap;align-items:center;column-gap:8px;row-gap:4px}
.rsn-m b{font:500 14px/1.3 var(--font-sans)}
.rsn-w{font:var(--text-caption);color:var(--muted-foreground)}
.rsn-t{margin:4px 0 0;font:400 14px/1.45 var(--font-sans);color:var(--foreground);text-wrap:pretty}
.rsn-x{margin:4px 0 0;font:var(--text-caption);color:var(--muted-foreground)}
.rsn-go{white-space:nowrap;font-size:13px;align-self:start;padding-top:2px}
.rsn-f{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--border)}
.rsn-none{margin-top:8px}
#sheet.rsn-sheet{--sheet-w:460px}
@media (max-width:760px){ #sheet.rsn-sheet{--sheet-w:100%} }
.rsn-sub{margin:0 0 12px}
.rsn-pills{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.pill-f{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:var(--radius-pill);border:1px solid var(--border);background:transparent;color:var(--foreground);font:500 13px/1 var(--font-sans);cursor:pointer}
.pill-f .n{color:var(--muted-foreground);font-variant-numeric:tabular-nums}
.pill-f:hover{background:oklch(1 0 0 / 5%)}
.pill-f[aria-pressed="true"]{background:var(--secondary);border-color:transparent}
.pill-f:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.rsn-g{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin-bottom:4px}
.rsn-g b{display:block;font:500 14px/1.3 var(--font-sans)}
.rsn-g .cap{display:block;font-size:12px;margin-top:2px}
.rsn-all .rsn-r{grid-template-columns:32px minmax(0,1fr) auto}
/* the ladder card at 1/3–1/2 width (1280 with the menu open): tighter columns instead of a cut Δ */
.plad{container-type:inline-size}
.plad-r.h>span{white-space:nowrap;overflow:hidden;text-overflow:clip}
@container (max-width:680px){
  .plad-r{grid-template-columns:16px 24px minmax(88px,1fr) minmax(62px,80px) minmax(62px,80px) minmax(44px,72px) 40px minmax(62px,80px);column-gap:6px}
  .plad-r .ichip{width:24px;height:24px}
  .plad-f,.plad-p,.plad-d{font-size:13px}
  .plad-r.h .plad-m{font-size:11px}
}
/* line names wrap to a second line before they are cut (RESTYLE §1) */
.plad-r.ln .plad-nt{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.25;padding-top:4px;padding-bottom:4px}
/* number columns follow the longest number (--nl characters); the ladder scrolls sideways inside its card when the card is narrower */
.plad{overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;--cw:max(72px,calc(var(--nw,5) * 14px + 4px))}
.plad-r,.plad-x{min-width:min-content}
.plad-r{grid-template-columns:20px 28px minmax(150px,1fr) var(--cw) var(--cw) 96px 48px var(--cw)}
@container (max-width:680px){ .plad-r{grid-template-columns:16px 24px minmax(88px,1fr) var(--cw) var(--cw) 56px 40px var(--cw)} .plad-r{--cw:max(62px,calc(var(--nw,5) * 13px + 2px))} }

/* ---------- FIX v11.1 §7g / §7h · delete and create: names that match, busy buttons, errors in place ---------- */
.btn,.btn85{-webkit-user-select:none;user-select:none}
.btn-spin{width:14px;height:14px;flex:none;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:btnSpin var(--dur-spin) var(--ease-linear) infinite}
@keyframes btnSpin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){ .btn-spin{animation-duration:var(--dur-spin-slow)} }
.btn[aria-busy="true"]{opacity:1;cursor:progress;gap:8px}
/* a destructive confirm is armed only when the name matches: then it is the full colour, before that it is the quiet tint, dimmed */
.btn.cdlg-go.neg.armed,.btn.cdlg-go.neg[aria-busy="true"]{background:var(--destructive);color:var(--primary-foreground);font-weight:600}
.btn.cdlg-go.neg.armed:hover{background:color-mix(in oklch,var(--destructive) 88%,var(--foreground))}
.pdel-in{position:relative;display:block}
.pdel-in .fctl{width:100%;padding-right:38px}
.pdel-ok{position:absolute;right:12px;top:50%;transform:translateY(-50%);display:inline-flex;color:var(--pos);opacity:0;transition:opacity var(--dur-2) var(--ease-out)}
.pdel-in.ok .pdel-ok{opacity:1}
.pdel-f .fctl[aria-invalid="true"]{border-color:color-mix(in oklch,var(--neg) 60%,var(--border-strong))}
.pdel-h{font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground)}
.pdel-h b{font-weight:600;color:var(--foreground)}
.pdel-no{font:500 12px/1.4 var(--font-sans);color:var(--neg)}
.pdel-no:empty{display:none}
.cdlg-err[title]{cursor:help}
.btp-err{margin:20px 0 -8px;font:500 14px/1.45 var(--font-sans);color:var(--neg)}
.setup-type .btp-c[inert]{opacity:.6}
.setup-type a[aria-disabled="true"]{pointer-events:none;opacity:.5}

/* ---------- FIX v11.1 §7i · locked plan: reopen on the department page · calculated departments ---------- */
.lockbar .lb-a{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.calc-empty{display:flex;align-items:flex-start;gap:12px;padding:16px;border-radius:16px;background:color-mix(in oklch,var(--foreground) 4%,transparent)}
.calc-empty p{margin:0;font:400 14px/1.5 var(--font-sans);color:var(--muted-foreground);max-width:72ch;text-wrap:pretty}
.calc-empty p b{font-weight:500;color:var(--foreground)}
@media (max-width:760px){ .lockbar{flex-wrap:wrap} .lockbar .lb-a{width:100%;justify-content:flex-start} }

/* ---------- request 14.10 · the new project wizard sits in the middle of the window (it is shown without the menu) ---------- */
body.auth main>.page.setup-type{max-width:1120px;min-height:100vh;min-height:100dvh;justify-content:center;padding-block:clamp(40px,8vh,96px);padding-inline:32px;margin-inline:auto;gap:24px}
.setup-type .phead .ph-row{justify-content:center;text-align:center}
.setup-type .phead .ph-l{align-items:center;margin-inline:auto;width:100%}
.setup-type .phead .ph-s{max-width:60ch;margin-inline:auto;text-wrap:balance}
.setup-type .btp{margin-top:8px}
.setup-type .btp-rd{text-align:center}
.setup-type .btp-go{margin-top:8px}
@media (max-width:767px){ body.auth main>.page.setup-type{justify-content:flex-start;padding-inline:16px} }

/* ---------- request 14.10 · notifications popover under the bell (was a full-height sheet) ---------- */
.ntf-pop{position:fixed;z-index:65;display:flex;flex-direction:column;background:var(--popover);color:var(--popover-foreground,var(--foreground));border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-pop);overflow:hidden;transform-origin:top right;animation:ntfIn var(--dur-2) var(--ease-out)}
.ntf-pop[hidden]{display:none}
/* FEATURE v12.38 §1.1 · the Top 100 pill and its popover (app/market-peek.js) */
.mk-peek{gap:6px}.mk-peek kbd{font:600 10px/1 var(--font-sans);color:var(--muted-foreground);border:1px solid var(--border);border-radius:5px;padding:2px 4px;margin-left:2px}
.mk-q{display:block;padding:0 12px 10px}.mk-q input{width:100%;height:var(--control-h);border-radius:var(--radius-pill);border:0;background:var(--muted);color:var(--foreground);padding:0 14px;font:400 14px var(--font-sans)}
.mk-sec{padding:6px 0}.mk-h{font:500 12px/1.3 var(--font-sans);color:var(--muted-foreground);margin:6px 10px 4px}
.mk-row{display:grid;grid-template-columns:24px 32px 1fr auto 44px;align-items:center;gap:10px;min-height:48px;padding:6px 10px;border-radius:12px;color:inherit;text-decoration:none}
.mk-row:hover,.mk-row:focus-visible{background:var(--accent);outline:none}.mk-row:focus-visible{box-shadow:0 0 0 3px var(--ring-focus)}
.mk-r{font:600 14px var(--font-sans);font-variant-numeric:tabular-nums;color:var(--muted-foreground);text-align:right}
.mk-av{width:32px;height:32px;border-radius:9px;object-fit:contain;background:#fff}.mk-in{display:grid;place-items:center;background:var(--muted);color:var(--foreground);font:700 12px var(--font-sans)}
.mk-n{min-width:0}.mk-n b{display:block;font:600 14px/1.25 var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mk-n small{display:block;font:400 12px var(--font-sans);color:var(--muted-foreground)}
.mk-x{font:600 14px var(--font-sans);font-variant-numeric:tabular-nums}
.mk-mv{font:600 12px var(--font-sans);color:var(--muted-foreground);text-align:right;font-variant-numeric:tabular-nums}.mk-mv.up{color:var(--pos)}.mk-mv.down{color:var(--neg)}
.mk-empty{margin:6px 10px 10px;font:400 13px/1.4 var(--font-sans);color:var(--muted-foreground)}
.mk-f{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted-foreground)}.mk-f kbd{font:600 11px var(--font-sans);border:1px solid var(--border);border-radius:5px;padding:1px 4px}
@media (max-width:1279px){ .mk-peek kbd{display:none} }
@keyframes ntfIn{from{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){ .ntf-pop{animation:none} }
.ntf-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 12px 8px 16px}
.ntf-ht{display:flex;align-items:center;gap:8px;min-width:0} .ntf-ht b{font:600 15px/1.2 var(--font-sans)}
.ntf-seg{margin:0 16px 8px;display:grid;grid-auto-flow:column;grid-auto-columns:1fr}
.ntf-l{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:4px 6px;border-top:1px solid var(--border)}
.ntf-i{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr) 10px;gap:10px;align-items:start;padding:10px 10px;border-radius:12px;color:var(--foreground);text-decoration:none;outline:none}
a.ntf-i:hover,.ntf-i:focus-visible{background:var(--accent)}
.ntf-i:focus-visible{box-shadow:inset 0 0 0 2px var(--ring)}
.ntf-i.is-new{background:color-mix(in oklch,var(--foreground) 5%,transparent)}
.ntf-ic{width:28px;height:28px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in oklch,var(--foreground) 7%,transparent);color:var(--muted-foreground)}
.ntf-ic.neg{color:var(--neg);background:color-mix(in oklch,var(--neg) 14%,transparent)} .ntf-ic.warn{color:var(--warn);background:color-mix(in oklch,var(--warn) 14%,transparent)}
.ntf-tx{display:flex;flex-direction:column;gap:2px;min-width:0}
.ntf-t{font:500 14px/1.35 var(--font-sans);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-wrap:pretty}
.ntf-s{font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ntf-m{font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground)}
.ntf-ty.neg{color:var(--neg)} .ntf-ty.warn{color:var(--warn)}
.ntf-new{width:8px;height:8px;margin-top:6px;border-radius:50%;background:var(--primary)}
.ntf-empty{display:flex;flex-direction:column;gap:4px;padding:28px 16px;text-align:center;font:400 13px/1.45 var(--font-sans);color:var(--muted-foreground)} .ntf-empty b{font:500 14px var(--font-sans);color:var(--foreground)}
.ntf-f{padding:10px 16px 12px;border-top:1px solid var(--border);font:500 13px var(--font-sans)}
#bell[aria-expanded="true"]{background:var(--accent)}
@media (max-width:520px){ .ntf-pop{left:8px;right:8px!important;width:auto!important} }

/* ---------- request 14.10 · Settings › Profile › Photo and the cropper ---------- */
.avp{display:flex;align-items:flex-start;gap:20px;padding:4px;border-radius:16px;transition:background var(--dur-2) var(--ease-out)}
.avp.over{background:color-mix(in oklch,var(--foreground) 6%,transparent);box-shadow:inset 0 0 0 1px var(--ring)}
.avp-av .av{font-size:20px!important}
.avp-tx{display:flex;flex-direction:column;gap:4px;min-width:0}
.avp-h{font:500 14px/1.3 var(--font-sans)} .avp-l{font:400 13px/1.45 var(--font-sans);color:var(--muted-foreground)}
.avp-a{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.avp .hint{margin:4px 0 0}
.avc{width:min(420px,calc(100vw - 32px))}
.avc-stage{position:relative;width:280px;height:280px;margin:4px auto 0;border-radius:16px;overflow:hidden;background:var(--background);cursor:grab;touch-action:none;outline:none}
.avc-stage.drag{cursor:grabbing}
.avc-stage:focus-visible{box-shadow:0 0 0 2px var(--ring)}
.avc-stage img{position:absolute;left:0;top:0;max-width:none;user-select:none;-webkit-user-drag:none;pointer-events:none}
.avc-mask{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at center,transparent 139px,oklch(0 0 0 / 55%) 140px);box-shadow:inset 0 0 0 1px var(--border)}
.avc-mask::after{content:"";position:absolute;inset:0;border-radius:50%;box-shadow:inset 0 0 0 1px oklch(1 0 0 / 35%)}
.avc-z{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px;margin-top:16px} .avc-z input{width:100%;accent-color:var(--primary)}
.avc-pv{display:flex;align-items:center;gap:12px;margin-top:12px}
.avc-pv canvas{border-radius:50%;background:var(--muted)} .avc-pv .p64{width:64px;height:64px} .avc-pv .p32{width:32px;height:32px}
.avc-pv .hint{margin:0}
.avc-z input[type=range]{border:0;background:none;padding:0;height:20px;box-shadow:none}
.calc-empty .btn{margin-left:auto;flex:none;align-self:center}

/* ---------- FIX v11.2 · creating a project step by step ---------- */
body main>.ss.bp-setup,.ss{position:fixed;inset:0;height:auto;width:auto;max-width:none;margin:0;padding:0;min-height:0;gap:0;z-index:60;display:grid;grid-template-columns:248px minmax(0,1fr);grid-template-rows:64px minmax(0,1fr) 72px;background:var(--background);color:var(--foreground)}
.ss-top{grid-column:1/-1;display:flex;align-items:center;gap:14px;padding:0 24px;border-bottom:1px solid var(--border)}
.ss-top .skey{width:40px;height:40px;border:1px solid var(--border-strong);border-radius:12px;display:flex;align-items:center;justify-content:center;font:600 12px var(--font-sans)}
.ss-tt{font:500 14px var(--font-sans);color:var(--muted-foreground)} .ss-top .sp{flex:1}
.ss-rail{grid-row:2/4;overflow-y:auto;background:var(--sidebar);border-right:1px solid var(--border);padding:12px 8px}
.ss-rail ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.ss-s{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:center;min-height:36px;padding:6px 10px;border-radius:999px;color:var(--foreground);text-decoration:none}
.ss-s:hover{background:color-mix(in oklch,var(--foreground) 5%,transparent)}
.ss-s.on{background:color-mix(in oklch,var(--foreground) 9%,transparent)}
.ss-s:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}
.ss-n{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font:600 11px/1 var(--font-sans);background:color-mix(in oklch,var(--foreground) 7%,transparent);color:var(--muted-foreground)}
.ss-s.on .ss-n{background:var(--primary);color:var(--primary-foreground)}
.ss-n.ok{color:var(--pos);background:color-mix(in oklch,var(--pos) 14%,transparent)} .ss-n.skp{background:transparent}
.ss-tx{display:flex;flex-direction:column;min-width:0}
.ss-tn{font:500 13px/1.25 var(--font-sans);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ss-ts{font:400 12px/1.3 var(--font-sans);color:var(--muted-foreground)}
.ss-s.skp .ss-tn{color:var(--muted-foreground);text-decoration:line-through;text-decoration-color:color-mix(in oklch,var(--muted-foreground) 60%,transparent)}
.ss-main{grid-column:2;grid-row:2;overflow-y:auto;min-height:0}
.ss-in{max-width:1040px;margin:0 auto;padding:36px 32px 56px}
.ss-e{font:500 13px var(--font-sans);color:var(--muted-foreground)}
.ss-h{font:600 28px/1.2 var(--font-sans);margin:6px 0 8px;letter-spacing:-.01em;outline:none}
.ss-l{margin:0;font:500 14px var(--font-sans);color:var(--foreground)}
.ss-d{margin:6px 0 0;font:400 13px/1.5 var(--font-sans);color:var(--muted-foreground);max-width:72ch}
.ss-chain{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:16px 0 4px}
.ss-c{padding:3px 10px;border-radius:999px;font:500 12px/1.4 var(--font-sans);color:var(--muted-foreground);background:color-mix(in oklch,var(--foreground) 5%,transparent)}
.ss-c.on{background:var(--primary);color:var(--primary-foreground)}
.ss-chain i{font-style:normal;color:var(--muted-foreground);font-size:12px}
.ss-head{margin-bottom:24px}
.ss-tw{overflow-x:auto;border:1px solid var(--border);border-radius:16px;background:var(--card)}
.ss-t{width:100%;border-collapse:collapse;table-layout:fixed;min-width:960px}
.ss-t col.c-l{width:auto} .ss-t col.c-t{width:84px} .ss-t col.c-v{width:118px} .ss-t col.c-p{width:200px} .ss-t col.c-f{width:26%} .ss-t col.c-x{width:52px}
.ss-t th,.ss-t td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle;font:400 13px/1.4 var(--font-sans)}
.ss-t thead th{font:500 12px var(--font-sans);color:var(--muted-foreground);padding-block:12px}
.ss-t tbody tr:last-child>*{border-bottom:0}
.ss-t .ss-name{width:100%;min-width:220px;height:36px}
.ss-t .ss-nm{font:500 14px var(--font-sans)}
.ss-v{white-space:nowrap}
.ss-t tr.calc .ss-v{color:var(--muted-foreground)}
.ss-t .esel{width:100%;max-width:100%}
.ss-f{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap} .ss-ft{font:400 12px/1.45 var(--font-sans);color:var(--foreground);word-break:break-word}
.ss-fe{font-size:12px} .ss-fi{margin-top:8px;display:flex;flex-direction:column;gap:6px}
.ss-add{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:44px;margin-top:12px;border:1px dashed var(--border-strong);border-radius:16px;background:transparent;color:var(--muted-foreground);font:500 14px var(--font-sans);cursor:pointer}
.ss-add:hover{color:var(--foreground);border-color:var(--ring)} .ss-add:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.ss-note{margin:0 0 14px;padding:14px 16px;border-radius:16px;background:color-mix(in oklch,var(--foreground) 4%,transparent);font:400 14px var(--font-sans);color:var(--muted-foreground)}
.ss-own{margin-bottom:24px} .ss-oh{display:flex;align-items:center;gap:12px;margin-bottom:10px} .ss-oh h2{margin:0} .ss-oh .sp{flex:1} .ss-oh .bp-dn{width:280px}
.ss-empty{color:var(--muted-foreground);font:400 14px/1.5 var(--font-sans);max-width:62ch;margin:0 0 4px}
.ss-skipped{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:20px;border:1px dashed var(--border-strong);border-radius:16px} .ss-skipped p{margin:0;flex:1;color:var(--muted-foreground)} .ss-skipped b{color:var(--foreground);font-weight:500}
.ss-sum{display:inline-flex;gap:6px;align-items:center;padding:8px 14px;border-radius:999px;font:400 14px var(--font-sans);margin-bottom:16px}
.ss-sum.pos{background:color-mix(in oklch,var(--pos) 14%,transparent);color:var(--pos)} .ss-sum.neg{background:color-mix(in oklch,var(--neg) 14%,transparent);color:var(--neg)}
.ss-probs{list-style:none;margin:0 0 20px;padding:0;display:flex;flex-direction:column;gap:2px}
.ss-probs li{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;background:var(--card)}
.ss-probs .error .ss-pi,.ss-probs .error .ss-ps{color:var(--neg)} .ss-probs .warn .ss-pi,.ss-probs .warn .ss-ps{color:var(--warn)} .ss-ps{font:500 12px var(--font-sans)}
.ss-rt{width:100%;border-collapse:collapse;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--card)}
.ss-rt th,.ss-rt td{padding:12px 14px;border-bottom:1px solid var(--border);text-align:left;font:400 14px var(--font-sans)} .ss-rt thead th{font:500 12px var(--font-sans);color:var(--muted-foreground)} .ss-rt .r{text-align:right}
.ss-sk{margin-top:24px} .ss-sk h2{font:600 16px var(--font-sans);margin:0 0 8px} .ss-skr{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:12px;background:var(--card);margin-bottom:4px}
.ss-foot{grid-column:2;grid-row:3;display:flex;align-items:center;gap:8px;padding:0 32px;border-top:1px solid var(--border);background:var(--card)} .ss-foot .sp{flex:1}
.ss-kbd{margin-right:4px}
.setup7 .ss-rail.in-frame{position:absolute;left:0;top:64px;bottom:72px;width:248px;z-index:20}
@media (max-width:900px){ body main>.ss.bp-setup,.ss{grid-template-columns:minmax(0,1fr);grid-template-rows:56px auto minmax(0,1fr) auto} .ss-top{padding:0 16px} .ss-main{grid-column:1;grid-row:3} .ss-foot{grid-row:4} .ss-rail{grid-row:2;grid-column:1;max-height:none;overflow-y:hidden;border-right:0;border-bottom:1px solid var(--border);padding:8px;overflow-x:auto} .ss-rail ol{flex-direction:row} .ss-s{white-space:nowrap;grid-template-columns:24px auto} .ss-rail li{flex:0 0 auto} .ss-ts{display:none} .ss-tn{-webkit-line-clamp:1} .ss-foot{grid-column:1;padding:10px 16px;flex-wrap:wrap} .ss-in{padding:20px 16px 40px} .ss-kbd{display:none} .ss-foot .sp{display:none} .ss-foot .btn.primary{order:-1;flex:1 0 100%} }
/* ---------- FIX v11.4 · Change who fills it (Admin › Departments) ---------- */
.rp{display:flex;flex-direction:column;gap:16px}
.rp-now{margin:0;font:400 13px/1.4 var(--font-sans);color:var(--muted-foreground)}
.rp-pend{color:var(--warn)}
.rp-seg{display:flex;width:100%}
.rp-seg>button{flex:1 1 0;min-width:0;white-space:nowrap}
.seg>button[aria-checked="true"]{background:var(--background);color:var(--foreground)}
.rp-sec{display:flex;flex-direction:column;gap:8px}
.rp-lab{font:500 12px/1.3 var(--font-sans);color:var(--muted-foreground)}
.rp-ml{display:flex;flex-direction:column;gap:2px}
.rp-m{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:56px;padding:8px 12px;border:0;border-radius:16px;background:transparent;color:var(--foreground);text-align:left;cursor:pointer;font:inherit}
.rp-m:hover{background:color-mix(in oklch,var(--foreground) 4%,transparent)}
.rp-m.on{background:color-mix(in oklch,var(--foreground) 8%,transparent);box-shadow:inset 0 0 0 1px var(--border-strong)}
.rp-m:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.rp-mt{display:flex;flex-direction:column;min-width:0}
.rp-mn{font:500 14px/1.3 var(--font-sans)} .rp-you{color:var(--muted-foreground);font-weight:400}
.rp-me{font:400 12px/1.35 var(--font-sans);color:var(--muted-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-mr{font:400 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.rp-plus{width:32px;height:32px;border-radius:50%;border:1px dashed var(--border-strong);display:inline-flex;align-items:center;justify-content:center;color:var(--muted-foreground)}
.rp-inv{display:flex;flex-direction:column;gap:6px;padding:0 12px}
.rp-err,.rp-ferr{margin:0;font:400 12px/1.4 var(--font-sans);color:var(--neg)}
.rp-ferr{font-size:13px;width:100%}
.rp-why{margin:0;font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground);width:100%}
.rp-what{padding:14px 16px;border-radius:16px;background:color-mix(in oklch,var(--foreground) 4%,transparent)}
.rp-what p{margin:4px 0 0;font:400 13px/1.5 var(--font-sans);color:var(--foreground)}
.rp-wh{font:500 13px var(--font-sans)}
.rp-sub{margin:0;font:400 12px/1.45 var(--font-sans);color:var(--muted-foreground)}
.rp-what .rp-sub{margin-top:6px}
.rp-kv2{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 14px;margin:0;font:400 13px var(--font-sans)}
.rp-kv2 dt{color:var(--muted-foreground)} .rp-kv2 dd{margin:0;min-width:0}
.rp-kv2 code,.rp-kv,.rp-kc{font:400 12px/1.5 var(--font-sans);background:color-mix(in oklch,var(--foreground) 6%,transparent);padding:2px 8px;border-radius:8px;word-break:break-all}
.rp-docs summary{cursor:pointer;font:500 13px var(--font-sans);color:var(--foreground);text-decoration:underline;text-underline-offset:3px;width:max-content}
.rp-docs summary:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus);border-radius:6px}
.rp-pre{margin:8px 0 0;padding:12px 14px;border-radius:12px;background:color-mix(in oklch,var(--foreground) 5%,transparent);font:400 12px/1.5 var(--font-sans);white-space:pre-wrap;word-break:break-all;color:var(--foreground)}
.rp-key{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:44px}
.rp-nk{margin-top:8px;padding:12px 14px;border-radius:16px;box-shadow:inset 0 0 0 1px var(--border-strong);display:flex;flex-direction:column;gap:8px}
.rp-kr{display:flex;align-items:center;gap:8px} .rp-kv{flex:1;min-width:0}
.rp-warn{margin:0;font:500 12px/1.4 var(--font-sans);color:var(--warn)}
.rp-btns{display:flex;gap:8px;align-items:center}
.rp-sheet .sh-f{flex-wrap:wrap;gap:8px}
.rp-m.rp-new .rp-me{white-space:normal}
/* ---------- FEATURE v11.3 · motion (tokens only; transform and opacity) ---------- */
.mo-ghost{contain:layout paint}
.mo-ghost>*{will-change:auto}
/* buttons: background in --dur-1, a press scales to .98 */
.btn,button.btn,a.btn{transition:background var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out)}
.btn:active:not(:disabled):not([aria-disabled="true"]){transform:scale(.98)}
/* cards that open as a whole: 2% lighter on hover, no lift, no shadow */
.kcard.kc-stretch,.mcard[data-href],.wd[data-metric]>.dpanel{transition:background var(--dur-1) var(--ease-out)}
.kcard.kc-stretch:hover,.mcard[data-href]:hover{background:color-mix(in oklch,var(--card) 98%,white)}
/* rows and menu items: background in --dur-1 */
.mi,.dt-r,tbody tr,.rp-m,.ss-s,.li.click{transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}
/* the chevron of “Open P&L ›” moves 2px right on hover */
.rep-go svg,.lnk-go svg{transition:transform var(--dur-1) var(--ease-out)}
.rep-go:hover svg,.lnk-go:hover svg{transform:translateX(2px)}
/* tabs / segments: the sliding pill while it moves (the active tab's own fill waits) */
.seg,.tabs-list{position:relative}
.seg-ind{position:absolute;border-radius:var(--radius-pill);background:var(--background);pointer-events:none;transform-origin:left center;z-index:0}
.seg-moving>[aria-pressed="true"],.seg-moving>[aria-selected="true"],.seg-moving>[aria-checked="true"],.seg-moving>.on{background:transparent!important}
.seg>button,.seg>a,.tabs-list>button,.tabs-list>a{position:relative;z-index:1}
/* expanding sections: content fades in --dur-2 while the row opens (--dur-3, --ease-io) */
.plad-x>*{opacity:0;transition:opacity var(--dur-2) var(--ease-out)}
.plad-s.open .plad-x>*{opacity:1}
/* loading longer than 150 ms: a thin bar under the header; after 10 s “Still loading…” */
.load-bar{position:fixed;left:var(--nav-w);right:0;top:var(--header-h);height:2px;z-index:31;overflow:visible;pointer-events:none}
.load-bar>i{position:absolute;left:0;top:0;height:2px;width:30%;background:color-mix(in oklch,var(--foreground) 40%,transparent);border-radius:2px;animation:loadRun var(--dur-progress) var(--ease-linear) infinite}
@keyframes loadRun{from{transform:translateX(-100%)}to{transform:translateX(340%)}}
.load-slow{position:absolute;right:16px;top:8px;font:400 12px var(--font-sans);color:var(--muted-foreground)}
@media (prefers-reduced-motion:reduce){ .load-bar>i{animation:none;width:100%;opacity:.5} .btn:active:not(:disabled){transform:none} }
body.motion-off .load-bar>i,body.motion-reduced .load-bar>i{animation:none;width:100%;opacity:.5}
.mo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.mo-item{display:flex;flex-direction:column;gap:14px;min-height:150px}
.mo-h{display:flex;align-items:center;justify-content:space-between;gap:8px;font:500 14px var(--font-sans)}
.mo-stage{flex:1;display:flex;align-items:center;justify-content:center;min-height:96px;position:relative}
.mo-tok{width:100%;border-collapse:collapse;font:400 12px var(--font-sans)} .mo-tok td{padding:3px 6px;border-bottom:1px solid var(--border)} .mo-tok code{font:inherit}
.mo-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:100%} .mo-c{padding:12px;min-height:40px;font:400 12px var(--font-sans)}
.mo-rows{width:100%;border-collapse:collapse;font:400 13px var(--font-sans)} .mo-rows td{padding:4px 6px;border-bottom:1px solid var(--border)} .mo-rows .r{text-align:right}
.mo-page{padding:16px;width:100%} .mo-ttl{font:600 18px var(--font-sans)}
.mo-chart .chart-b{fill:var(--chart-1)} .mo-chart .chart-ln{stroke:var(--foreground);stroke-width:2}
.mo-pop-wrap{position:relative} .mo-pop{position:absolute;left:0;top:44px;padding:8px 12px;display:flex;flex-direction:column;gap:6px;font:400 13px var(--font-sans);z-index:5;min-width:200px}
.mo-tipw{position:relative} .mo-tip{position:absolute;left:0;top:44px;padding:6px 10px;border-radius:12px;background:var(--popover);border:1px solid var(--border);font:400 12px var(--font-sans);white-space:nowrap}
.mo-stage .meter{width:80%}

/* ---- FIX v11.6 · the line row (D.lrRow in line-row.js): Monthly plan, Monthly fact, setup steps ----
   Line · [Fact] · Last · Value · vs last · Δ · ⋯ on one line; a narrow table (the fact step between the step list and the live result)
   puts vs last and Δ on a line under the field, labelled — never inside it. The field is 160px and holds only the number.
   Selectors are long on purpose: the v7 grid rules of .erows set columns with !important. */
.lnrows{--lr-ic:32px;--lr-ref2:92px;--lr-last:84px;--lr-val:160px;--lr-vs:72px;--lr-d:84px;--lr-m:32px}
.facts.erows.lnrows .fr.erow.lnr{display:grid;grid-template-columns:var(--lr-ic) minmax(0,1fr) var(--lr-last) var(--lr-val) var(--lr-vs) var(--lr-d) var(--lr-m)!important;
  grid-template-areas:"ic name last val vs d m"!important;grid-template-rows:auto!important;column-gap:8px!important;row-gap:6px!important;align-items:start;padding:12px 0!important}
.lnrows.r2{--lr-vs:88px}
.facts.erows.lnrows.r2 .fr.erow.lnr{grid-template-columns:var(--lr-ic) minmax(0,1fr) var(--lr-ref2) var(--lr-last) var(--lr-val) var(--lr-vs) var(--lr-d) var(--lr-m)!important;grid-template-areas:"ic name ref2 last val vs d m"!important}
.facts.erows.lnrows .fr.erow.lnr.h{align-items:end;padding:10px 0!important}
.lnrows .fr.erow.lnr>.e-ic{grid-area:ic;align-self:start;display:flex;justify-content:center;padding-top:4px}
.lnrows .fr.erow.lnr>.e-name{grid-area:name;align-self:start;min-width:0;padding-top:8px}
.lnrows .fr.erow.lnr.h>.e-name,.lnrows .fr.erow.lnr.h>.e-ic{padding-top:0;align-self:end;justify-self:start;text-align:left;white-space:nowrap}
.lnrows .fr.erow.lnr>.lr-ref2{grid-area:ref2}
.lnrows .fr.erow.lnr>.lr-last{grid-area:last}
.lnrows .fr.erow.lnr>.lr-val{grid-area:val;justify-self:end;width:var(--lr-val);max-width:100%;min-width:0}
.lnrows .fr.erow.lnr>.lr-cmp{display:contents}
.lnrows .fr.erow.lnr>.lr-cmp>.lr-vs{grid-area:vs}
.lnrows .fr.erow.lnr>.lr-cmp>.lr-d{grid-area:d}
.lnrows .fr.erow.lnr>.lr-m{grid-area:m;display:flex;justify-content:flex-end;align-items:center;min-height:var(--control-h)}
/* the number cells: right, tabular, centred on the field's line */
.lnrows .fr.erow.lnr .lr-ref2,.lnrows .fr.erow.lnr .lr-last,.lnrows .fr.erow.lnr .lr-vs,.lnrows .fr.erow.lnr .lr-d{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-height:var(--control-h);min-width:0;
  text-align:right;font:400 13px/1.3 var(--font-sans);font-variant-numeric:tabular-nums;color:var(--muted-foreground);overflow-wrap:anywhere}
.lnrows .fr.erow.lnr .lr-d{color:var(--foreground)}
.lnrows .fr.erow.lnr .lr-ref2 .ref,.lnrows .fr.erow.lnr .lr-last .ref{font:inherit;color:inherit;white-space:normal}
.lnrows .fr.erow.lnr .lr-ref2 .ref b,.lnrows .fr.erow.lnr .lr-last .ref b{font-weight:400;color:inherit}
.lnrows .fr.erow.lnr .e-r1,.lnrows .fr.erow.lnr .e-r2{display:inline;grid-column:auto;text-align:right}
.lnrows .fr.erow.lnr.h .lr-ref2,.lnrows .fr.erow.lnr.h .lr-last,.lnrows .fr.erow.lnr.h .lr-vs,.lnrows .fr.erow.lnr.h .lr-d,.lnrows .fr.erow.lnr.h>.lr-val{min-height:0;align-items:flex-end}
.lnrows .fr.erow.lnr.h>.lr-val{display:flex;justify-content:flex-end}
.lnrows .fr.erow.lnr.h .eyebrow{display:inline;white-space:nowrap;text-align:right}
.lnrows .lr-k{display:none;font:400 12px/1.3 var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.lnrows .lr-na,.lnrows .np{color:var(--muted-foreground)} .lnrows .np{font:400 12px/1.3 var(--font-sans);white-space:nowrap}
.lnrows .fp-dv{font:500 12px/1.3 var(--font-sans);white-space:nowrap} .fp-dv.warn{color:var(--warn)}
.lnrows .fp-dv.badge.lr-new{font:500 12px/1 var(--font-sans);color:var(--foreground)}
/* the field: only the number — unit on the left (the field's own background), number on the right; a long number scrolls inside */
.lnrows .fr.erow.lnr .lr-val .entity-value{width:100%;height:var(--control-h);text-align:right;font-variant-numeric:tabular-nums;text-overflow:clip}
.lnrows .fr.erow.lnr .lr-val .fld.calcv,.lnrows .fr.erow.lnr .lr-val .tot-v{display:block;width:100%;height:var(--control-h);line-height:var(--control-h);padding:0 15px;text-align:right;white-space:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;font-variant-numeric:tabular-nums}
.lnrows .fr.erow.lnr .lr-val .tot-v{font:600 14px/var(--control-h) var(--font-sans)}
/* under the row: messages, reasons, the status of a calculated line */
.lnrows .fr.erow.lnr>.msgl,.lnrows .fr.erow.lnr>.e-st{grid-column:2 / -1!important;grid-row:auto!important;text-align:left;justify-self:stretch}
.lnrows .fr.erow.lnr>.lr-st{font:var(--text-caption);color:var(--muted-foreground);line-height:1.5}
.lnrows .fr.erow.lnr.tot .e-n{font:600 14px/1.35 var(--font-sans)}
.lnrows .fr.erow.lnr.subl>.e-name{padding-left:18px}
.lnrows .fr.erow.lnr .lr-mb{width:32px;height:32px}
.lnrows.plan-off .fr.erow.lnr:not(.h)>.lr-last>*{visibility:hidden}
/* narrow table: vs last and Δ go under the field, with their names (FIX v11.9: below 520px; the plan's r2 table below 620px) */
@container erows (max-width:519px){
  .facts.erows.lnrows .fr.erow.lnr{grid-template-columns:var(--lr-ic) minmax(0,1fr) var(--lr-last) var(--lr-val) var(--lr-m)!important;grid-template-areas:"ic name last val m" "ic name cmp cmp m"!important;grid-template-rows:auto 1fr!important}
  .facts.erows.lnrows.r2 .fr.erow.lnr{grid-template-columns:var(--lr-ic) minmax(0,1fr) var(--lr-ref2) var(--lr-last) var(--lr-val) var(--lr-m)!important;grid-template-areas:"ic name ref2 last val m" "ic name . cmp cmp m"!important}
  .lnrows .fr.erow.lnr>.lr-cmp{display:flex;grid-area:cmp;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:4px 14px;align-self:start;min-width:0}
  .lnrows .fr.erow.lnr>.lr-cmp>.lr-vs,.lnrows .fr.erow.lnr>.lr-cmp>.lr-d{min-height:0}
  .lnrows .fr.erow.lnr>.lr-cmp .lr-k{display:inline}
  .lnrows .fr.erow.lnr.h>.lr-cmp{display:none}
  .facts.erows.lnrows .fr.erow.lnr.h{grid-template-areas:"ic name last val m"!important;grid-template-rows:auto!important}
  .facts.erows.lnrows.r2 .fr.erow.lnr.h{grid-template-areas:"ic name ref2 last val m"!important}
}
/* phone width: the name over the numbers */
@container erows (max-width:439px){
  .facts.erows.lnrows .fr.erow.lnr{grid-template-columns:var(--lr-ic) minmax(0,1fr) var(--lr-m)!important;grid-template-areas:"ic name m" "ic val val" "ic last last" "ic cmp cmp"!important;grid-template-rows:auto!important}
  .facts.erows.lnrows.r2 .fr.erow.lnr{grid-template-areas:"ic name m" "ic val val" "ic ref2 ref2" "ic last last" "ic cmp cmp"!important}
  .lnrows .fr.erow.lnr>.lr-last,.lnrows .fr.erow.lnr>.lr-ref2{justify-content:flex-start;min-height:0}
  .lnrows .fr.erow.lnr>.lr-last .lr-k,.lnrows .fr.erow.lnr>.lr-ref2 .lr-k{display:inline}
  .lnrows .fr.erow.lnr.h>:not(.e-name):not(.e-ic){display:none}
}
/* the ⋯ menu of a line: a popover in the body (never clipped by the table) */
.rmenu.lr-menu{position:fixed;z-index:96;width:220px;min-width:0;padding:6px;gap:2px;background:var(--popover);border:1px solid var(--border);border-radius:var(--radius-inner);box-shadow:var(--shadow-pop)}
.rmenu.lr-menu button{display:flex;align-items:center;justify-content:space-between;gap:8px;height:36px;padding:0 10px;border-radius:10px;font:500 14px/1.2 var(--font-sans);color:var(--foreground)}
.rmenu.lr-menu button:hover,.rmenu.lr-menu button:focus-visible{background:var(--accent)}
.rmenu.lr-menu button.neg{color:var(--neg)}
.rmenu.lr-menu button[aria-disabled="true"]{color:var(--muted-foreground);cursor:default}
.rmenu.lr-menu button[aria-disabled="true"]:hover{background:none}
.rmenu.lr-menu .rm-sep{height:1px;background:var(--border);margin:4px 2px}
.rmenu.lr-menu .rm-k{font:400 12px var(--font-sans);color:var(--muted-foreground)}
/* the setup steps are a fixed layer (z 60): their toasts (Removed … · Undo) sit above it, still under dialogs */
body:has(.bp-setup) .toast{z-index:75}
/* ---- FEATURE v11.7 · Budget utilization rows open in place (like the Profit ladder v2) ---- */
.utils{display:flex;flex-direction:column}
.utils>.util-s{border-bottom:1px solid var(--border)} .utils>.util-s:last-child{border-bottom:0}
.util-s>.util{border-bottom:0}
.util .u-ch{flex:none;width:20px;display:grid;place-items:center;margin-right:-4px;color:var(--muted-foreground);transition:transform var(--dur-3) var(--ease-io)}
.util-s.open .util .u-ch{transform:rotate(90deg)}
.util .u-ov.warn-t{color:var(--warn)} .util .u-ov.neg-t{color:var(--neg)}
.util-x{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-3) var(--ease-io)}
.util-s.open .util-x{grid-template-rows:1fr}
.util-xi{overflow:hidden;min-height:0}
.util-x>*{opacity:0;transition:opacity var(--dur-2) var(--ease-out)}
.util-s.open .util-x>*{opacity:1}
.util-xin{margin:0 0 12px 45px;padding:2px 0 2px 16px;border-left:1px solid var(--border);display:flex;flex-direction:column}
.uln{display:flex;flex-direction:column;gap:6px;padding:8px 0}
.uln-t{display:flex;align-items:baseline;gap:8px;min-width:0}
.uln-n{min-width:0;font:400 13px/1.35 var(--font-sans);color:var(--muted-foreground);overflow-wrap:anywhere}
.uln-tag{flex:none;font:400 12px/1.35 var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.uln-pc{margin-left:auto;flex:none;font:500 12px/1.35 var(--font-sans);font-variant-numeric:tabular-nums;white-space:nowrap}
.uln-pc.pos-t{color:var(--pos)} .uln-pc.warn-t{color:var(--warn)} .uln-pc.neg-t{color:var(--neg)} .uln-pc.-t{color:var(--muted-foreground)}
.uln .meter{height:6px}
.uln-np{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font:400 12px/1.35 var(--font-sans);color:var(--muted-foreground)}
.uln-s{align-self:flex-end;text-align:right;font:400 12px/1.35 var(--font-sans);color:var(--muted-foreground);font-variant-numeric:tabular-nums}
.uln-more{align-self:flex-start;margin:6px 0 2px;font:500 13px/1.3 var(--font-sans)}
.uln-foot{display:flex;flex-wrap:wrap;gap:8px 16px;padding-top:8px}
.uln-foot .lnk{font:500 13px/1.3 var(--font-sans);display:inline-flex;align-items:center;gap:2px}
.util-all{flex:none}
.fx-tip .t{font:400 12px/1.45 var(--font-sans);color:var(--foreground)}
button.badge.tip-trig{cursor:help;font:inherit;font:500 12px/1 var(--font-sans)}
@media (prefers-reduced-motion:reduce){ .util-x,.util .u-ch,.util-x>*{transition:none} }
body.motion-off .util-x,body.motion-off .util .u-ch,body.motion-off .util-x>*,body.motion-reduced .util-x,body.motion-reduced .util .u-ch{transition:none}
/* the card header: title and its line first; the badges, Expand all and ⓘ go under them when the card is narrow (never squeeze the title) */
.wd[data-w="Budget utilization"] .dp-h{flex-wrap:wrap;row-gap:10px}
.wd[data-w="Budget utilization"] .dp-h>:first-child{flex:1 1 220px;min-width:0}
.wd[data-w="Budget utilization"] .dp-a{flex-wrap:wrap;row-gap:6px;max-width:100%}
button.badge.tip-trig{min-height:24px}   /* WCAG 2.5.8: the badge is a control here */
/* ---- FEATURE v11.5 · the order of the lines: handle, lifted row, insertion line ---- */
.lnrows.canmove{--lr-ic:58px}
.lnrows .fr.erow.lnr>.e-ic{gap:6px;justify-content:flex-start}
.lnrows:not(.canmove) .fr.erow.lnr>.e-ic{justify-content:center}
.lr-grip{flex:none;display:inline-grid;place-items:center;width:24px;height:28px;margin:0;padding:0;border:0;border-radius:6px;background:none;color:var(--muted-foreground);cursor:grab;touch-action:none;opacity:0;transition:opacity var(--dur-1) var(--ease-out),background-color var(--dur-1) var(--ease-out)}
.lr-grip svg{width:16px;height:16px}
.fr.erow.lnr:hover .lr-grip,tr[data-code]:hover .lr-grip,.lr-grip:focus-visible,.fr.erow.lnr:focus-within .lr-grip,tr[data-code]:focus-within .lr-grip,.lr-lift .lr-grip{opacity:1}
.lr-grip:hover{background:var(--accent);color:var(--foreground)}
.lr-grip:focus-visible{outline:2px solid var(--ring);outline-offset:1px}
@media (hover:none){ .lr-grip{opacity:1;width:28px;height:32px} }
body.lr-dragging,body.lr-dragging *{cursor:grabbing!important;user-select:none!important}
.lr-lift{position:relative;z-index:6;background:var(--muted)!important;box-shadow:var(--shadow-pop,0 8px 24px oklch(0 0 0 / 35%));border-radius:12px}
tr.lr-lift>*{background:var(--muted)}
.lr-ins{position:absolute;left:0;right:0;height:2px;border-radius:2px;background:var(--foreground);pointer-events:none;z-index:7}
.ss-t th[scope="row"]:has(.lr-grip){display:flex;align-items:center;gap:6px}
.ss-t th[scope="row"] .lr-grip{margin-left:-4px}
@media (prefers-reduced-motion:reduce){ .lr-grip{transition:none} }
/* a closed row's lines are out of the way, not only clipped: hidden once the row has closed (visible at once when it opens) */
.util-xi{visibility:hidden;transition:opacity var(--dur-2) var(--ease-out),visibility var(--dur-3) var(--ease-io)}
.util-s.open .util-xi{visibility:visible}

/* ---- FIX v11.8 · reopen a closed month ---- */
.ro-f{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.ro-chips{display:flex;flex-wrap:wrap;gap:8px}
.ro-t{min-height:var(--control-h);resize:vertical}
.ro-what{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px;font:var(--text-body,400 14px/1.5 var(--font-sans));color:var(--muted-foreground)}
.ro-foot{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.ro-btns{display:flex;flex-wrap:wrap;gap:8px}
.ro-err{margin:0;font:500 13px/1.4 var(--font-sans);color:var(--neg)}
.ro-why{margin:0;font:400 13px/1.4 var(--font-sans);color:var(--muted-foreground)}

/* ---- FIX v11.9 · the messages under a line row: one vertical stack (D.lrMsgs in line-row.js) ----
   error or unusual figure · reason · empty — each on its own line, 8px apart, in the flow of the row: nothing is absolutely positioned,
   a longer message or a growing reason field pushes the next rows down; the amber highlight of the row covers the stack too. */
.lnrows .fr.erow.lnr>.lr-msgs{grid-column:2 / -1!important;grid-row:auto!important;display:flex;flex-direction:column;gap:8px;min-width:0;justify-self:stretch;text-align:left;padding-top:2px}
.lr-msg{display:grid;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;gap:8px 10px;min-width:0;font:400 13px/1.45 var(--font-sans);color:var(--foreground)}
.lr-msg .lr-mi{grid-column:1;align-self:start;text-align:center;font-size:11px;line-height:19px}
.lr-msg .lr-mt{grid-column:2;min-width:0;overflow-wrap:break-word}
.lr-msg .lr-ma{grid-column:3;display:flex;align-items:center;gap:8px;justify-self:end}
/* a phone-width table: the buttons go under the text, after the icon */
@container erows (max-width:439px){ .lr-msg .lr-ma{grid-column:2 / -1;grid-row:2;justify-self:start;flex-wrap:wrap} }
.lr-msg.neg .lr-mi,.lr-msg.neg .lr-mt{color:var(--neg)}
.lr-msg.warn .lr-mi{color:var(--warn)}
.lr-msg.empty,.lr-msg.empty .lr-mi{color:var(--muted-foreground)}
.lr-msg.lr-rs{display:flex;flex-direction:column;align-items:stretch;gap:6px}
.lr-rl{font:500 12px/1.3 var(--font-sans);color:var(--muted-foreground)}
.lr-rl.neg{color:var(--neg)}
.lr-rv{font:400 13px/1.45 var(--font-sans);color:var(--foreground);overflow-wrap:anywhere}
.lr-rv.ink2{color:var(--muted-foreground)}
/* the reason field: as wide as the row, one line high, grows with the text (field-sizing; line-row.js sets the height elsewhere) */
.lnrows .fr.erow.lnr textarea.fld.lr-rt{display:block;width:100%;height:auto;min-height:var(--control-h);max-height:none;padding:8px 15px;resize:none;overflow:hidden;
  field-sizing:content;font:400 14px/1.45 var(--font-sans);text-align:left;border-radius:calc(var(--control-h) / 2)}
/* a mid-width table keeps Line · Plan · Fact · vs plan · Δ on one line: the fact step between the step list and the live result is
   536px at 1440 (624px from 1536). Tighter columns; with the drag handle the line's icon gives way to the handle on hover. */
@container erows (min-width:520px) and (max-width:679px){
  .lnrows:not(.r2) .fr.erow.lnr{--lr-ic:28px;--lr-last:72px;--lr-val:108px;--lr-vs:56px;--lr-d:72px;--lr-m:28px}   /* on the rows: a container query never styles the container itself */
  .facts.erows.lnrows:not(.r2) .fr.erow.lnr{column-gap:6px!important}
  .lnrows:not(.r2) .fr.erow.lnr .lr-mb{width:28px;height:28px}
  .lnrows.canmove:not(.r2) .fr.erow.lnr>.e-ic{display:grid;justify-items:center;align-content:start}
  .lnrows.canmove:not(.r2) .fr.erow.lnr>.e-ic>*{grid-area:1 / 1}
  .lnrows.canmove:not(.r2) .fr.erow.lnr:is(:hover,:focus-within,.lr-lift)>.e-ic.gr>:not(.lr-grip){visibility:hidden}
}
@container erows (min-width:620px) and (max-width:779px){
  .lnrows.r2 .fr.erow.lnr{--lr-ic:28px;--lr-ref2:72px;--lr-last:72px;--lr-val:112px;--lr-vs:64px;--lr-d:76px;--lr-m:28px}
  .facts.erows.lnrows.r2 .fr.erow.lnr{column-gap:6px!important}
  .lnrows.r2 .fr.erow.lnr .lr-mb{width:28px;height:28px}
  .lnrows.r2.canmove .fr.erow.lnr>.e-ic{display:grid;justify-items:center;align-content:start}
  .lnrows.r2.canmove .fr.erow.lnr>.e-ic>*{grid-area:1 / 1}
  .lnrows.r2.canmove .fr.erow.lnr:is(:hover,:focus-within,.lr-lift)>.e-ic.gr>:not(.lr-grip){visibility:hidden}
}
/* the plan's r2 table (Fact · Last plan · Plan) is still narrow between 520 and 619px */
@container erows (min-width:520px) and (max-width:619px){
  .facts.erows.lnrows.r2 .fr.erow.lnr{grid-template-columns:var(--lr-ic) minmax(0,1fr) var(--lr-ref2) var(--lr-last) var(--lr-val) var(--lr-m)!important;grid-template-areas:"ic name ref2 last val m" "ic name . cmp cmp m"!important;grid-template-rows:auto 1fr!important}
  .lnrows.r2 .fr.erow.lnr>.lr-cmp{display:flex;grid-area:cmp;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:4px 14px;align-self:start;min-width:0}
  .lnrows.r2 .fr.erow.lnr>.lr-cmp>.lr-vs,.lnrows.r2 .fr.erow.lnr>.lr-cmp>.lr-d{min-height:0}
  .lnrows.r2 .fr.erow.lnr>.lr-cmp .lr-k{display:inline}
  .lnrows.r2 .fr.erow.lnr.h>.lr-cmp{display:none}
  .facts.erows.lnrows.r2 .fr.erow.lnr.h{grid-template-areas:"ic name ref2 last val m"!important;grid-template-rows:auto!important}
}
@media (hover:none){
  @container erows (min-width:520px) and (max-width:779px){ .lnrows.canmove .fr.erow.lnr>.e-ic.gr>:not(.lr-grip){visibility:hidden} }
}
/* the tags under a name wrap inside the Line column instead of running under the numbers */
.lnrows .fr.erow.lnr .e-name .cf-tag{max-width:100%;height:auto;min-height:22px;white-space:normal;line-height:1.25;padding:3px 8px 2px;border-radius:11px}
/* the name, its ⓘ and its tags wrap as items with a gap, never on top of each other */
.lnrows .fr.erow.lnr>.e-name>.lab{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}
.lnrows .fr.erow.lnr>.e-name>.lab>.info,.lnrows .fr.erow.lnr>.e-name>.lab>.cf-tag{margin-left:0!important;flex:none;max-width:100%}

/* ---- FIX v11.10 · Add line → Custom ---- */
.al-f{display:flex;flex-direction:column;gap:8px;margin:0 0 16px;min-width:0;border:0;padding:0}
.al-f>.seg{align-self:flex-start;max-width:100%;flex-wrap:wrap}
.al-f .al-e{margin:0}
.al-t{height:auto;min-height:64px;resize:vertical}
.al-dup{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px}
.al-dup[hidden]{display:none}
.al-hint{margin:-8px 0 16px;font-size:12px}
.al-sub{margin:0 0 16px;font-size:12px}
.al-opts legend{padding:0;margin-bottom:8px}
.al-opts .chips{display:flex;flex-wrap:wrap;gap:8px}
.al-foot{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.al-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.al-row .sh-cnt{flex:1 1 160px;min-width:0}
.al-err{margin:0;font:500 13px/1.4 var(--font-sans);color:var(--neg)}
.al-why{margin:0;font:400 13px/1.4 var(--font-sans);color:var(--muted-foreground)}
.al-f>.f-l,.al-opts>legend.f-l{display:block;margin:0}
.al-f.field{gap:8px}

/* ---- FIX v11.11 · one template suggestion, top right of Graph and List (and of the setup steps) ---- */
.tpl-host:empty{display:none}
.tpl-card{display:grid;grid-template-rows:1fr;gap:10px;padding:16px;border-radius:var(--radius-inner);background:var(--muted);transition:grid-template-rows var(--dur-2) var(--ease-out),opacity var(--dur-2) var(--ease-out),padding var(--dur-2) var(--ease-out)}
.tpl-card.closing{opacity:0;grid-template-rows:0fr;padding-block:0;overflow:hidden}
.tpl-card.opening{opacity:0}
.tpl-h{display:flex;align-items:flex-start;gap:10px}
.tpl-h h2{flex:1;margin:0;font:600 14px/1.35 var(--font-sans);color:var(--foreground);text-wrap:balance}
.tpl-i{flex:none;display:inline-grid;place-items:center;width:28px;height:28px;border-radius:999px;background:var(--card);color:var(--foreground)}
.tpl-x{flex:none;width:32px;height:32px;margin:-6px -6px 0 0;border-radius:999px;color:var(--muted-foreground)}
.tpl-x:hover,.tpl-x:focus-visible{color:var(--foreground);background:var(--accent)}
.tpl-p{margin:0;font:400 13px/1.5 var(--font-sans);color:var(--muted-foreground)}
.tpl-a{display:flex;flex-wrap:wrap;gap:8px}
.tpl-prev{max-height:320px;overflow:auto;border-top:1px solid var(--border);padding-top:10px}
.tpl-pl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.tpl-pl li{display:flex;flex-direction:column;gap:2px;font:400 12px/1.45 var(--font-sans);color:var(--muted-foreground)}
.tpl-pl b{font:600 13px/1.35 var(--font-sans);color:var(--foreground)}
.tpl-g i{font-style:normal;color:var(--foreground)}
.tpl-row{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:0 14px;border:1px solid var(--border);border-radius:999px;background:none;color:var(--foreground);font:500 13px var(--font-sans);cursor:pointer;text-align:left}
.tpl-row:hover,.tpl-row:focus-visible{background:var(--accent)}
.tpl-row .tpl-rt{flex:1}
.tpl-row .tpl-rs{color:var(--muted-foreground)}
.tpl-dlg{max-width:520px}
.tpl-opts{display:flex;flex-direction:column;gap:8px;margin:4px 0 16px}
.tpl-opt{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-inner);background:none;color:var(--foreground);text-align:left;cursor:pointer;font:400 13px/1.45 var(--font-sans)}
.tpl-opt b{font:600 14px/1.35 var(--font-sans)}
.tpl-opt>span{color:var(--muted-foreground)}
.tpl-opt[aria-checked="true"]{border-color:var(--foreground);background:var(--accent)}
.tpl-opt[aria-disabled="true"]{cursor:default;opacity:.6}
.tpl-opt .tpl-why{color:var(--foreground)}
.tpl-opt .tpl-on{display:block;margin-top:2px;color:var(--muted-foreground)}
/* the steps of a new project: the card beside the step on a wide screen, above it on a narrow one */
.ss-main{display:grid;grid-template-columns:minmax(0,1fr);align-content:start}
.ss-side.tpl-host{padding:0 32px 32px}
@media (min-width:1360px){ .ss-main:has(.ss-side:not(:empty)){grid-template-columns:minmax(0,1fr) 300px;column-gap:8px} .ss-main .ss-side.tpl-host{padding:36px 24px 0 0;align-self:start;position:sticky;top:0} }
@media (max-width:1359px){ .ss-main .ss-side.tpl-host{grid-row:1;padding:20px 32px 0;max-width:1040px;margin:0 auto;width:100%;box-sizing:border-box} }
.ss-more{width:36px;height:36px;border-radius:999px;display:inline-grid;place-items:center;color:var(--muted-foreground)}
.ss-more:hover,.ss-more:focus-visible{background:var(--accent);color:var(--foreground)}
.bp-listw{grid-template-columns:minmax(0,1fr) 300px}
.bp-listw:has(.bp-side .tpl-host:empty){grid-template-columns:minmax(0,1fr)}
.bp-listw:has(.bp-side .tpl-host:empty)>.bp-side{display:none}
.bp-side .tpl-host{display:block}
/* the empty graph: one quiet hint by the profit line */
.gc-empty:has(.gc-hint){background:none;border:0;padding:0;width:240px;max-width:240px;left:calc(50% - 150px);top:44%;transform:translate(-100%,-50%);text-align:right}
.gc-hint{font:400 13px/1.45 var(--font-sans)!important;color:var(--muted-foreground)}
/* the graph palette: Math folded under Advanced */
.bp-adv>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px}
.bp-adv>summary::-webkit-details-marker{display:none}
.bp-adv>summary::before{content:'';width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform var(--dur-1) var(--ease-out)}
.bp-adv[open]>summary::before{transform:rotate(45deg)}
/* Project totals on the graph: grey, read-only */
.gn.k-total{opacity:.92;border-style:dashed}
.gn.k-total .gn-tv{font:600 14px var(--font-sans);font-variant-numeric:tabular-nums;color:var(--foreground)}

/* ---- FEATURE v11.12 §4.1 · a department in List: effect · N to enter · M calculated · + Add line · ⋯, lines in Money · Numbers · Calculated ---- */
.ss-dh{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:0 0 12px}
.ss-dh h2{margin:0;font:600 16px/1.3 var(--font-sans)}
.ss-dh .sp{flex:1}
.bp-lsec>.ss-dh{padding:14px 16px 0;margin:0 0 12px}
.bp-lsec>.ss-tw{border:0;border-top:1px solid var(--border);border-radius:0 0 var(--radius-inner) var(--radius-inner)}
.ss-tag{display:inline-flex;align-items:center;height:22px;padding:1px 8px 0;border-radius:999px;border:1px solid var(--border-strong);font:500 12px/1 var(--font-sans);color:var(--foreground);white-space:nowrap}
.ss-tag.calc{color:var(--muted-foreground)}
.ss-tag.eff{background:var(--muted);border-color:transparent}
.ss-t.ss-t12{min-width:0}
.ss-t.ss-t12 col.c-t{width:150px} .ss-t.ss-t12 col.c-n{width:120px} .ss-t.ss-t12 col.c-x{width:52px}
.ss-t.ss-t12 tr.ss-gh>th{padding:14px 12px 6px;font:500 12px var(--font-sans);color:var(--muted-foreground);border-bottom:1px solid var(--border);background:none}
.ss-t.ss-t12 tbody.ss-g:first-of-type tr.ss-gh>th{padding-top:10px}
.ss-t.ss-t12 tbody tr:last-child>*{border-bottom:1px solid var(--border)}
.ss-t.ss-t12 tbody:last-child tr:last-child>*{border-bottom:0}
.ss-t.ss-t12 th[scope="row"]{display:block}
.ss-t.ss-t12 th[scope="row"]:has(.lr-grip){display:block}
.ss-r{display:flex;align-items:flex-start;gap:6px;min-width:0}
.ss-r .lr-grip{margin:0 0 0 -4px}
.ss-nb{display:flex;flex-direction:column;gap:2px;min-width:0;padding-top:2px}
.ss-t.ss-t12 .ss-nm{font:500 14px/1.35 var(--font-sans);color:var(--foreground)}
.ss-ds{font:400 12px/1.45 var(--font-sans);color:var(--muted-foreground)}
.ss-fw{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin-top:2px}
.ss-ft{font:400 12px/1.45 var(--font-sans);color:var(--foreground)}
.ss-gone{color:var(--neg);font-weight:500}
.ss-fix{height:28px}
.ss-t.ss-t12 .ss-fi{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 2px 28px}
.ss-t.ss-t12 td.ss-tg{vertical-align:top;padding-top:13px}
.ss-t.ss-t12 td.r{vertical-align:top;padding-top:8px}
.ss-t.ss-t12 td.num{padding-top:13px;font-variant-numeric:tabular-nums}
@media (max-width:640px){ .ss-t.ss-t12 col.c-t{width:112px} .ss-t.ss-t12 col.c-n{width:96px} }
/* Project totals: read-only, the formula on hover */
.pt-sec{margin-top:8px;padding:16px;border:1px dashed var(--border-strong);border-radius:var(--radius-inner)}
.pt-sec>.ss-dh{margin-bottom:8px}
.pt-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px 16px}
.pt-r{display:flex;align-items:center;gap:8px;min-height:36px;border-bottom:1px solid var(--border)}
.pt-n{flex:1;font:500 13px var(--font-sans);color:var(--foreground)}
.pt-v{font:500 13px var(--font-sans)}
@media (prefers-reduced-motion:reduce){ .tpl-card{transition:none} }
.gn.k-total .gn-tf{display:block;white-space:normal;color:var(--muted-foreground);line-height:1.4}
/* FEATURE v11.12 §6.7 · a Salary data line for someone without salary access */
.lnrows .lr-hid{display:flex;align-items:center;justify-content:flex-end;height:var(--control-h);padding:0 15px;border-radius:999px;border:1px dashed var(--border-strong);font:400 13px var(--font-sans);color:var(--muted-foreground)}
.ss-tag.gr{border-color:var(--warn);color:var(--foreground)}
.tpl-one{margin:-6px 0 14px}
/* =====================================================================================================================
   FEATURE v11.13 · Game provider: four steps (Project · Clients · Departments · Review), the structure in Monthly plan, Partner ID
   ===================================================================================================================== */
.pw .ss-in{max-width:1040px}
.pw-lead{max-width:68ch}
.pw .ss-foot>.pw-ft{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
.pw-go{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.pw-need{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.pw-sum{font:400 13px var(--font-sans);color:var(--muted-foreground);margin-right:8px}
/* the clients table: a well with pill fields */
.pw-tw{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-inner);background:var(--card)}
.pw-t{width:100%;border-collapse:collapse;table-layout:fixed;min-width:760px}
.pw-t col.c-p{width:140px} .pw-t col.c-t{width:230px} .pw-t col.c-r{width:240px} .pw-t col.c-x{width:52px}
.pw-t th,.pw-t td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--border);vertical-align:top;font:400 13px/1.4 var(--font-sans)}
.pw-t th:first-child,.pw-t td:first-child{padding-left:14px}
.pw-t thead th{font:500 12px var(--font-sans);color:var(--muted-foreground);padding-block:12px;vertical-align:middle}
.pw-t tbody tr:last-child>*{border-bottom:0}
.pw-t .fld{width:100%}
.pw-t select.fld{text-align:left;text-align-last:left}
.pw-t td.pw-x{vertical-align:middle;text-align:center}
.pw-ty{display:flex;flex-direction:column;gap:6px}
.pw-pct{display:block}
.pw-via{display:flex;align-items:center;min-height:var(--control-h,36px);font:400 13px var(--font-sans);color:var(--muted-foreground)}
.pw-fe{display:block;margin-top:6px;font:400 12px/1.4 var(--font-sans);color:var(--neg)}
.pw-t .fld[aria-invalid="true"]{box-shadow:inset 0 0 0 1px var(--neg)}
.pw-hints{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 16px;margin:20px 0 0;max-width:820px}
.pw-hints>div{display:contents}
.pw-hints dt{font:500 12px/1.5 var(--font-sans);color:var(--foreground)}
.pw-hints dd{margin:0;font:400 12px/1.5 var(--font-sans);color:var(--muted-foreground)}
/* the departments: checkbox cards */
.pw-dcs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:10px}
.pw-dc{position:relative;border:1px solid var(--border);border-radius:var(--radius-inner);background:var(--card);transition:border-color var(--dur-1) var(--ease-out),opacity var(--dur-1) var(--ease-out)}
.pw-dc.on{border-color:var(--border-strong)}
.pw-dc:not(.on){opacity:.72}
.pw-dc:not(.on) .pw-dn{color:var(--muted-foreground)}
.pw-dl{display:flex;align-items:flex-start;gap:14px;padding:16px 18px;cursor:pointer;min-width:0}
.pw-dc.lk .pw-dl,.pw-dc.own .pw-dl{cursor:default}
.pw-dc.own .pw-dl{padding-right:120px}
.pw-ck{appearance:none;-webkit-appearance:none;flex:0 0 auto;width:20px;height:20px;margin:1px 0 0;border:1.5px solid var(--border-strong);border-radius:6px;background:transparent;display:grid;place-items:center;cursor:pointer}
.pw-ck:checked{background:var(--primary);border-color:var(--primary)}
.pw-ck:checked::after{content:"";width:10px;height:6px;border:2px solid var(--primary-foreground);border-top:0;border-right:0;transform:translateY(-1px) rotate(-45deg)}
.pw-ck:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.pw-ck:disabled{cursor:default}
.pw-lock{flex:0 0 auto;width:20px;height:20px;display:grid;place-items:center;color:var(--muted-foreground);border-radius:6px}
.pw-lock:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.pw-db{display:flex;flex-direction:column;gap:4px;min-width:0}
.pw-dh{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px}
.pw-dn{font:600 15px/1.3 var(--font-sans);color:var(--foreground);margin-right:2px}
.pw-dd{font:400 13px/1.45 var(--font-sans);color:var(--muted-foreground)}
.pw-dln{font:400 12px/1.5 var(--font-sans);color:var(--foreground)}
.pw-dln.none{color:var(--muted-foreground)}
.pw-why{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.pw-da{position:absolute;top:12px;right:12px;display:flex;align-items:center;gap:4px}
/* the custom department sheet */
.pw-fs{border:0;margin:0;padding:0;min-width:0}
.pw-fs>legend{padding:0;margin-bottom:8px}
.pw-seg{display:flex;flex-wrap:wrap}
.pw-hint{margin:0;font:400 13px var(--font-sans);color:var(--muted-foreground)}
.pw-ta{min-height:84px;padding:10px 14px;border-radius:16px;resize:vertical;line-height:1.5}
/* review */
.pw-rv{margin:0 0 24px}
.pw-rvh{display:flex;align-items:baseline;gap:12px;margin:0 0 10px}
.pw-rvh h2{margin:0;font:600 16px/1.3 var(--font-sans)}
.pw-kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0;padding:16px 18px;border:1px solid var(--border);border-radius:var(--radius-inner);background:var(--card)}
.pw-kv dt{font:400 12px var(--font-sans);color:var(--muted-foreground)} .pw-kv dd{margin:4px 0 0;font:500 14px var(--font-sans)}
.pw-rt{border:0;border-radius:0} .pw-rt th[scope="row"]{font-weight:500}
.pw-rvd{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:var(--radius-inner);background:var(--card)}
.pw-rvd li{padding:12px 18px;border-bottom:1px solid var(--border)} .pw-rvd li:last-child{border-bottom:0}
.pw-rvd .pw-dln{margin:4px 0 0}
.pw-note{margin:0;font:400 13px/1.5 var(--font-sans);color:var(--muted-foreground);max-width:72ch}
@media (max-width:900px){ .pw-dcs{grid-template-columns:1fr} .pw-go{flex-direction:column-reverse;align-items:stretch;flex:1 0 100%;order:-1} .pw .ss-foot>.pw-ft{flex-wrap:wrap} .pw-sum{flex:1 0 100%;order:-2;margin:0} .pw-hints{grid-template-columns:1fr} .pw-hints dd{margin-bottom:6px} }
/* Partner ID, small and muted next to a client's name */
.cl-pid{display:inline-block;margin-left:8px;font:400 12px var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.cl-nl{display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:0 2px}
.cl-addpid{margin-left:8px;padding:0;border:0;background:none;font:500 12px var(--font-sans);color:var(--warn);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.cl-addpid:hover{color:var(--foreground)} .cl-addpid:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:4px}
/* the ⋯ of a client column and of a department page */
.cl-dh .cl-dm{width:28px;height:28px;margin-left:2px;vertical-align:middle;color:var(--muted-foreground)}
.cl-dh .cl-dm:hover,.cl-dh .cl-dm:focus-visible,.cl-dh .cl-dm[aria-expanded="true"]{color:var(--foreground);background:var(--accent)}
.pd-more{width:36px;height:36px;border:1px solid var(--border-strong);border-radius:999px;color:var(--foreground)} .pd-more:hover,.pd-more[aria-expanded="true"]{background:var(--accent)}
/* P&L: a level with no costs, Game activity */
.pv-empty,.plad-none{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.pv-lvl .pv-empty{margin-left:10px}
.pv-actn{margin-top:8px}
.cl-impm{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lnk-plan{text-decoration:none}
/* old provider projects: the offer of the template, on top of Monthly plan */
.pv-offer{display:flex;gap:14px;align-items:flex-start;margin:0 0 20px;padding:18px 20px;border:1px solid var(--border-strong);border-radius:var(--radius-inner);background:var(--card)}
.pv-oi{flex:0 0 auto;width:32px;height:32px;border-radius:999px;display:grid;place-items:center;background:var(--accent);color:var(--foreground)}
.pv-ob{min-width:0} .pv-ob h2{margin:0 0 4px;font:600 15px/1.35 var(--font-sans)} .pv-ob p{margin:0;font:400 13px/1.5 var(--font-sans);color:var(--muted-foreground);max-width:80ch}
.pv-oa{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.pv-ol{list-style:none;margin:0 0 16px;padding:0;max-height:240px;overflow-y:auto;border-top:1px solid var(--border)}
.pv-ol li{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;padding:8px 2px;border-bottom:1px solid var(--border);font:400 13px var(--font-sans)}
.pv-ol li>span:last-child{flex:1 0 100%;color:var(--muted-foreground);font-size:12px}
.pv-ol li>.cl-side{flex:initial}
.pw .ss-in{width:100%;box-sizing:border-box}
/* phone: each client is a card, the labels above its fields */
@media (max-width:640px){ .pw-tw{border:0;background:none;overflow:visible} .pw-t{min-width:0;table-layout:auto} .pw-t thead{display:none} .pw-t colgroup{display:none}
  .pw-t,.pw-t tbody,.pw-t tr,.pw-t td{display:block;width:100%;box-sizing:border-box}
  .pw-t tr{position:relative;margin:0 0 10px;padding:12px 14px 6px;border:1px solid var(--border);border-radius:var(--radius-inner);background:var(--card)}
  .pw-t td,.pw-t td:first-child{padding:0 0 10px;border:0}
  .pw-t td[data-l]::before{content:attr(data-l);display:block;margin:0 0 6px;font:500 12px var(--font-sans);color:var(--muted-foreground)}
  .pw-t td:first-child{padding-right:40px} .pw-t td.pw-x{position:absolute;top:6px;right:6px;width:auto;padding:0} }
/* QA 15.10 · a calculated value (a Project total such as “€2,453,791”) never turns its pill into a scroll box: tighter padding in the
   compact tiers, and the read-only pill doesn't scroll (axe scrollable-region-focusable) */
.lnrows .fr.erow.lnr .lr-val .fld.calcv{overflow:visible}
@container erows (max-width:779px){ .lnrows .fr.erow.lnr .lr-val .fld{padding-inline:10px} }

/* ---- FIX v11.14 · team salaries in Finance ---- */
/* the team of a Finance line: a quiet tag after its name; a removed team says so under the name */
.cf-tag.tm-tag{margin-left:6px;border-color:var(--border);color:var(--muted-foreground);font-weight:400}
.cf-tag.tm-tag.gone{border-style:dashed}
.src.tm-gone{color:var(--warn)}
/* P&L · Fixed costs: “Salaries” is a group row, the teams sit under it */
.pline.p-grp{cursor:default;font-weight:500}
.pline.p-grp:hover{background:transparent}
.pline.p-sub>span:first-child{display:flex;align-items:center;gap:8px;color:var(--muted-foreground)}
.pline.p-sub .p-in{width:12px;height:1px;background:var(--border-strong);flex:none}
/* Budget utilization · Include team salaries */

/* Add line: a salary is entered in Finance */
.al-hint.al-sal .lnk{margin-left:4px}
.notice.sal-ban{margin-bottom:16px}

/* ---- FEATURE v11.15 + v11.17 · ProjectAvatar · the Project step ---- */
/* the avatar: a circle of 20 · 32 · 64 px; the image, or the initials on a colour that stays with the project */
.pav{position:relative;display:inline-grid;place-items:center;flex:none;border-radius:50%;overflow:hidden;color:oklch(0.985 0 0);font-family:var(--font-sans);font-weight:600;user-select:none;background:var(--pav-bg,var(--muted))}
.pav.s20{width:20px;height:20px;font-size:9px} .pav.s32{width:32px;height:32px;font-size:12px} .pav.s64{width:64px;height:64px;font-size:22px}
.pav img{width:100%;height:100%;object-fit:cover;display:block}
.pav.img{background:var(--muted)}
.pav.h0{--pav-bg:oklch(0.46 0.11 250)} .pav.h1{--pav-bg:oklch(0.46 0.11 160)} .pav.h2{--pav-bg:oklch(0.48 0.12 30)} .pav.h3{--pav-bg:oklch(0.45 0.11 300)}
.pav.h4{--pav-bg:oklch(0.47 0.10 200)} .pav.h5{--pav-bg:oklch(0.47 0.12 350)} .pav.h6{--pav-bg:oklch(0.46 0.10 110)} .pav.h7{--pav-bg:oklch(0.45 0.09 70)}
.pav-row{display:inline-flex;align-items:center;gap:10px}
/* the block with its buttons: row (the wizard) · card (Settings → Project) */
.pavb{display:grid;grid-template-columns:64px minmax(0,1fr);column-gap:16px;row-gap:12px;align-items:center;padding:4px;border-radius:20px;transition:background var(--dur-2) var(--ease-out)}
.pavb.over{background:color-mix(in oklch,var(--foreground) 6%,transparent);box-shadow:inset 0 0 0 1px var(--ring)}
.pavb-av{position:relative;width:64px;height:64px}
.pavb.row .pavb-tx{grid-column:2}
.pavb.card .pavb-side{display:flex;flex-direction:column;gap:2px;min-width:0}
.pavb.card .pavb-tx{grid-column:1 / -1}
.pavb-a{display:flex;flex-wrap:wrap;gap:8px}
.pavb .hint{margin:6px 0 0}
.pav-err{margin:6px 0 0;font:500 13px/1.4 var(--font-sans);color:var(--neg)}
.pav-up{display:inline-flex;align-items:center;gap:8px;height:32px;font:500 13px var(--font-sans);color:var(--muted-foreground)}
.pav-ring{position:absolute;inset:-3px;border-radius:50%;border:2px solid var(--border);border-top-color:var(--foreground);animation:pav-spin var(--dur-progress) var(--ease-linear) infinite}
@keyframes pav-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){ .pav-ring{animation:none;border-top-color:var(--border)} }
.pj-n{font:600 18px/1.3 var(--font-sans);color:var(--foreground);overflow-wrap:anywhere} .pj-ty{font:400 13px/1.4 var(--font-sans);color:var(--muted-foreground)}
.pj-avw{margin-top:24px;max-width:520px}
/* the fields: label above, the chips on one row; on a narrow screen the twelve months are a 6 × 2 grid */
.pj-fs{display:flex;flex-direction:column;gap:18px;margin-top:22px}
.pj-f{display:flex;flex-direction:column;gap:8px;min-width:0}
.pj-cur{display:flex;flex-wrap:nowrap;gap:6px}
.pj-f .hint{margin:0}
.pj-start{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
select.fld.pj-y{width:112px;flex:none;text-align:left;text-align-last:left}
.m12{display:grid;grid-template-columns:repeat(12,minmax(44px,auto));gap:6px;justify-content:start}
.m12 .chip{padding:0 10px;min-width:44px}
.pj-cap{margin-top:18px;max-width:640px}
@media (max-width:719px){ .m12{grid-template-columns:repeat(6,minmax(44px,1fr))} .pj-cur{flex-wrap:wrap} }
.pavb .hint,.pj-f .hint{font:400 13px/1.45 var(--font-sans);color:var(--muted-foreground)}
/* FEATURE v11.15 §2 · Royalty Fixed | Tiered in the Clients step: the switch and the rate (or the summary) side by side; the tiers open under the row */
.pw-roy{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.pw-hints dd .mono{white-space:nowrap}
.pw-rm{flex:none} .pw-rm button{padding:0 10px}
.pw-roy .pw-pct{flex:1 1 72px;min-width:72px}
.pw-tsum{flex:1 1 100%;font:500 13px/1.4 var(--font-sans);color:var(--foreground)}
.pw-te-b{font-size:13px}
.pw-t tr.pw-txr>td{padding:0 14px 14px;border-bottom:1px solid var(--border)}
.pw-tx{animation:pw-open var(--dur-3) var(--ease-out)}
@keyframes pw-open{from{opacity:0;transform:translateY(-4px)}}
@media (prefers-reduced-motion:reduce){ .pw-tx{animation:none} }
.pw-te{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:18px 24px;padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius-inner);background:var(--well)}
.pw-tc{display:flex;flex-direction:column;gap:12px;min-width:0}
.pw-tm{display:flex;flex-direction:column;gap:4px}
.pw-tm .fld{max-width:200px}
.pw-tn{margin:0}
.pw-tp{padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.pw-try{display:flex;align-items:center;gap:10px;flex-wrap:wrap} .pw-try .lab{margin:0} .pw-tg{max-width:180px}
@media (max-width:900px){ .pw-te{grid-template-columns:1fr} }
@media (max-width:640px){ .pw-t tr.pw-txr{padding:0;border:0;background:none} .pw-t tr.pw-txr>td{padding:0} }

/* ---- FEATURE v11.18 · quality bands: faint fills under the data, dashed boundaries, names on hover or focus ---- */
.chart-qb{stroke:none}
.chart-qb.t-poor{fill:var(--band-poor)} .chart-qb.t-fair{fill:var(--band-fair)} .chart-qb.t-normal{fill:none}
.chart-qb.t-good{fill:var(--band-good)} .chart-qb.t-excellent{fill:var(--band-excellent)}
.chart-qbe{stroke:var(--band-edge);stroke-width:1;stroke-dasharray:2 4;shape-rendering:crispEdges}
.chart-qbt{font:500 10.5px/1 var(--font-sans);   /* v11.18 asks 10 px; 10.5 px is the floor of chart text (ui_lint · C1) */
  fill:var(--muted-foreground);stroke:var(--card);stroke-width:3px;stroke-linejoin:round;paint-order:stroke;
  opacity:0;transition:opacity var(--dur-2) var(--ease-out);pointer-events:none}
.chart:hover .chart-qbt,.chart:focus-within .chart-qbt{opacity:1}
@media (prefers-reduced-motion: reduce){ .chart-qbt{transition:none} }
body.motion-reduced .chart-qbt,body.motion-off .chart-qbt{transition:none}
.chart-tip .ct-z{font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground)}
/* the Quality bands block on the metric page */
.qb-t{width:100%;max-width:640px;border-collapse:collapse}
.qb-t th{font:500 12px/1.4 var(--font-sans);color:var(--muted-foreground);text-align:left;padding:0 12px 8px 0}
.qb-t td{padding:6px 12px 6px 0;vertical-align:middle;border-top:1px solid var(--border)}
.qb-t tr:first-child td{border-top:0}
.qb-t td:nth-child(1),.qb-t td:nth-child(2){width:136px}
.qb-fx{display:inline-block;width:112px;padding-right:14px;box-sizing:border-box;text-align:right;font:400 14px/1.4 var(--font-sans);font-variant-numeric:tabular-nums;color:var(--foreground)}
.qb-lb .qb-fx{width:auto;text-align:left;padding:0}
.qb-in{position:relative;display:inline-flex;align-items:center;width:112px}
.qb-in .fld{width:100%;padding-right:30px;text-align:right;font-variant-numeric:tabular-nums}
.qb-u{position:absolute;right:14px;font:400 14px/1 var(--font-sans);color:var(--muted-foreground);pointer-events:none}
.qb-in.bad .fld,.qb-lb .fld.bad{box-shadow:0 0 0 1px var(--neg)}
.qb-lb{display:flex;align-items:center;gap:10px}
.qb-lb .fld{flex:1;min-width:0;max-width:240px}
.qb-sw{width:10px;height:10px;border-radius:3px;flex:none;border:1px solid var(--border-strong)}
.qb-sw.t-poor{background:color-mix(in oklch, var(--neg) 45%, transparent)} .qb-sw.t-fair{background:color-mix(in oklch, var(--warn) 45%, transparent)}
.qb-sw.t-normal{background:transparent} .qb-sw.t-good{background:color-mix(in oklch, var(--pos) 30%, transparent)} .qb-sw.t-excellent{background:color-mix(in oklch, var(--pos) 60%, transparent)}
.qb-err{margin-top:10px;font:400 13px/1.4 var(--font-sans);color:var(--neg)}
.qb-f{display:flex;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap}
.qb-ro{margin-top:12px}

/* ---- FEATURE v12.0 · Warehouse / Self-storage ---- */
/* the type picker: Industry (two cards) → Business model (pills of that industry) */
.btp-ind,.btp-bm{display:flex;flex-direction:column;gap:10px;margin-top:20px}
.ind-g{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}   /* v12.0 · not .ind: that is the indicator marker of Gambling */
@media (max-width:719px){ .ind-g{grid-template-columns:1fr} }
.ind-c{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:24px;border-radius:var(--radius-card);border:1px solid var(--border);background:var(--card);color:var(--foreground);text-align:left;cursor:pointer;min-height:148px;transition:border-color var(--dur-1) var(--ease-out)}
.ind-c:hover{border-color:var(--border-strong)} .ind-c.on{border-color:var(--ring);box-shadow:inset 0 0 0 1px var(--ring)}
.ind-c:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.ind-c .ichip{width:36px;height:36px;border-radius:12px;margin-bottom:6px} .ind-c .ichip svg{width:20px;height:20px}
.ind-t{font:600 18px/1.3 var(--font-sans)} .ind-w{font:400 14px/1.45 var(--font-sans);color:var(--muted-foreground)}
.bm-p.btp{display:flex;flex-wrap:wrap;gap:8px;grid-template-columns:none;margin-top:0}
.bm-p .btp-c.bm-c{display:inline-flex;flex-direction:row;align-items:center;min-height:0;height:36px;padding:0 16px;border-radius:var(--radius-pill);border:0;background:var(--secondary);color:var(--muted-foreground);font:500 14px/1 var(--font-sans);box-shadow:none}
.bm-p .btp-c.bm-c:hover{color:var(--foreground)} .bm-p .btp-c.bm-c.on{background:var(--primary);color:var(--primary-foreground);box-shadow:none}
.bm-p .btp-c.bm-c:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.bm-x{display:flex;flex-direction:column;gap:6px;padding:16px 18px;border-radius:var(--radius-inner);background:var(--well);max-width:760px}
.bm-x .btp-w{color:var(--foreground)} .bm-x .btp-m{margin-top:2px} .bm-demo{align-self:flex-start;margin-top:4px}
/* the warehouse setup (the guided setup shell) */
.sx-g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:20px;max-width:760px}
.sx-g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:20px}
@media (max-width:719px){ .sx-g2,.sx-g3{grid-template-columns:1fr} }
.sx-vat{display:flex;align-items:center;gap:12px;flex-wrap:wrap} .sx-vr{width:140px}
.sx-ut{margin-top:20px;padding:8px 20px 16px} .sx-units td{padding-top:8px;padding-bottom:8px;vertical-align:middle}
.sx-units .fld{width:100%;min-width:72px} .sx-units tfoot th,.sx-units tfoot td{font-weight:600;padding-top:12px}
.sx-ui{position:relative;display:flex;align-items:center} .sx-ui .fld.num{text-align:right;padding-right:44px} .sx-us{position:absolute;right:14px;font:400 13px/1 var(--font-sans);color:var(--muted-foreground);pointer-events:none}
.sx-ui.bad .fld{box-shadow:0 0 0 1px var(--neg)}
.sx-errs{margin:16px 0;padding:12px 16px;border-radius:var(--radius-inner);background:var(--neg-soft);color:var(--foreground);font:400 14px/1.45 var(--font-sans);display:flex;flex-direction:column;gap:4px}
.sx-errs b{font-weight:600}
/* pages */
.sx-page .grid12{margin-top:16px}
.sx-sfx{font:400 13px/1.3 var(--font-sans);color:var(--muted-foreground);align-self:flex-end;margin:0 0 6px -4px}
.sx-dfoot{display:flex;align-items:flex-start;gap:12px;margin-top:16px;flex-wrap:wrap}
.sx-lib>summary{list-style:none;cursor:pointer} .sx-lib>summary::-webkit-details-marker{display:none}
.sx-libl{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-top:12px;min-width:min(720px,90vw)}
.sx-libi{display:flex;flex-direction:column;gap:2px;align-items:flex-start;padding:12px 14px;border-radius:var(--radius-inner);border:0;background:var(--well);color:var(--foreground);text-align:left;cursor:pointer;font:500 14px var(--font-sans)}
.sx-libi:hover{background:var(--row-hover)} .sx-libi span{font:400 12px var(--font-sans);color:var(--muted-foreground)}
.sx-libi:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
/* the ladder: NOI is the main result; a period with no fact shows the plan column only */
.sx-plad .plad-s.sx-main>.plad-r.sec{background:var(--row-group)}
.sx-plad .plad-s.sx-main .plad-nt{font-weight:700}
.sx-mainb{margin-left:8px}
.sx-plad.sx-nofact .plad-p,.sx-plad.sx-nofact .plad-m,.sx-plad.sx-nofact .plad-pc,.sx-plad.sx-nofact .plad-d{display:none}
.sx-plad.sx-nofact .plad-r{grid-template-columns:20px 28px minmax(150px,1fr) var(--cw)}
@container (max-width:680px){ .sx-plad.sx-nofact .plad-r{grid-template-columns:16px 24px minmax(88px,1fr) var(--cw)} }
.bm-x .hint{font:400 13px/1.4 var(--font-sans);color:var(--muted-foreground)}
/* P&L by month */
.sx-yrs>button[aria-checked="true"],.sx-pre>button[aria-checked="true"]{background:var(--background);color:var(--foreground)}
.sx-pnl th[scope="row"]{position:sticky;left:0;background:var(--card);z-index:1;white-space:nowrap;font-weight:400}
.sx-page .tbl.sx-pnl tbody th[scope="row"]{white-space:nowrap}
@media (max-width:599px){ .sx-page .tbl.sx-pnl tbody th[scope="row"]{white-space:normal;min-width:128px;max-width:140px} }
.sx-pnl td,.sx-pnl thead th{white-space:nowrap} .sx-pnl .sx-cost th[scope="row"]{color:var(--muted-foreground)}
.sx-pnl .sx-res th,.sx-pnl .sx-res td{font-weight:600} .sx-pnl .sx-noi th,.sx-pnl .sx-noi td{background:var(--row-group)}
.sx-pnl .sx-yt{font-weight:600} .sx-fct{color:var(--muted-foreground)}
/* Metrics */
.sx-mc{display:flex;flex-direction:column;gap:2px;align-items:flex-start} .sx-mt th[scope="row"]{font-weight:400;vertical-align:middle}
.sx-page td.num,.sx-setup td.num{text-align:right} .sx-page td.num .sx-sfx,.sx-mv .sx-sfx{margin:0 0 0 4px}
.sx-mn{font:500 14px var(--font-sans)} .sx-mf .fx-trig{margin:0}
.sx-page table.dtable tbody th[scope="row"]{padding-top:12px;padding-bottom:12px}
.sx-page .tbl tbody th[scope="row"]{font:400 14px/1.4 var(--font-sans);color:var(--foreground);vertical-align:middle;white-space:normal} .sx-page .tbl tbody tr:last-child>*{border-bottom:0}
.sx-mt{table-layout:fixed} .sx-mt .sx-c2{width:156px} .sx-mt .sx-c3{width:34%} .sx-mt tbody tr:last-child>*{border-bottom:0} .sx-mt tbody th{white-space:normal;color:var(--foreground)}
.sx-sp{width:156px} .sx-mv{white-space:nowrap} .sx-why{font:400 13px/1.4 var(--font-sans);color:var(--muted-foreground);white-space:normal;display:inline-block;max-width:280px;text-align:right}
.sx-msum{padding:24px;display:flex;flex-direction:column;gap:12px} .sx-mfx{max-width:760px}
/* Facility, Plan & Fact */
.sx-tabs{margin:4px 0 16px;align-self:flex-start;width:max-content;max-width:100%}
.sx-fl .hint,.sx-fr .hint{font:400 13px/1.4 var(--font-sans);color:var(--muted-foreground)}
.sx-cols.one{grid-template-columns:1fr}
.sx-in .sx-ip{position:absolute;left:14px;font:400 13px/1 var(--font-sans);color:var(--muted-foreground);pointer-events:none} .sx-in.pre .fctl{padding-left:30px}
.sx-ui .sx-ip{position:absolute;left:14px;font:400 13px/1 var(--font-sans);color:var(--muted-foreground);pointer-events:none} .sx-ui.pre .fld.num{padding-left:30px;padding-right:14px}
.sx-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-panels,16px);align-items:start}
.sx-cols>.dpanel:first-child:nth-last-child(odd),.sx-fac .sx-cols>.dpanel:only-child{grid-column:1/-1}
.sx-cols3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gap-panels,16px);align-items:start}
.sx-cols2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
@media (max-width:1180px){ .sx-cols3{grid-template-columns:1fr 1fr} .sx-cols3>.dpanel:last-child{grid-column:1/-1} }
@media (max-width:899px){ .sx-cols,.sx-cols3,.sx-cols2{grid-template-columns:1fr} .sx-cols3>.dpanel:last-child{grid-column:auto} }
.sx-frs{display:flex;flex-direction:column}
.sx-fr{display:grid;grid-template-columns:minmax(0,1fr) 168px;gap:16px;align-items:center;padding:10px 0;border-top:1px solid var(--border)}
.sx-fr:first-child{border-top:0}
.sx-fl{display:flex;flex-direction:column;gap:2px;min-width:0} .sx-fn{font:500 14px/1.35 var(--font-sans)}
.sx-in{position:relative;display:flex;align-items:center} .sx-in .fctl{text-align:right;padding-right:42px;font-variant-numeric:tabular-nums}
.sx-in .fld.left{text-align:left;padding-right:14px}
.sx-is{position:absolute;right:14px;font:400 13px/1 var(--font-sans);color:var(--muted-foreground);pointer-events:none;max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sx-in .fctl:has(+ .sx-is:not(:empty)){padding-right:calc(14px + 7ch)}
.sx-in.bad .fctl{border-color:var(--destructive)}
.sx-ro{font:400 14px/1.4 var(--font-sans);font-variant-numeric:tabular-nums;text-align:right;color:var(--foreground)}
.sx-sel{width:100%}
.sx-fr.sx-tot .sx-fn,.sx-fr.sx-tot .sx-ro{font-weight:600}
.sx-season{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
@media (max-width:599px){ .sx-season{grid-template-columns:repeat(3,minmax(0,1fr))} }
.sx-sm{display:flex;flex-direction:column;gap:4px;font:500 12px var(--font-sans);color:var(--muted-foreground)} .sx-sm .fctl{text-align:right}
.sx-steady{margin-top:14px} .sx-uh{margin-top:10px}
.sx-units .sx-in{min-width:96px}
@media (max-width:599px){
  .sx-fr{grid-template-columns:minmax(0,1fr);gap:8px}
  .sx-units,.sx-units tbody{display:block;width:100%} .sx-units thead{display:none} .sx-units tfoot{display:block}
  .sx-units tbody tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px 12px;padding:14px 0;border-bottom:1px solid var(--border)}
  .sx-units tbody tr:last-child{border-bottom:0}
  .sx-units tbody td{display:flex;flex-direction:column;align-items:stretch;gap:6px;padding:0;border:0;text-align:left}
  .sx-units td[data-l]::before{content:attr(data-l);font:400 12px/1.3 var(--font-sans);color:var(--muted-foreground)}
  .sx-units td.sx-un{grid-column:1;grid-row:1} .sx-units td.sx-ux{grid-column:2;grid-row:1;align-items:flex-end;justify-content:center}
  .sx-page .sx-units tbody td.num{justify-content:flex-start;text-align:left;padding-top:2px} .sx-units .sx-in,.sx-units .sx-ui{min-width:0}
  .sx-mt colgroup,.sx-mt .sx-sp,.sx-mt thead th:nth-child(2){display:none} .sx-mt{table-layout:auto}
  .tbl.sx-mt td.sx-mv{white-space:normal} .sx-mt .sx-mv .sx-sfx{display:block;margin:2px 0 0} .sx-mt thead th.r{white-space:normal}
}
.sx-calc{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 16px} .sx-calc dd{text-align:right;font-variant-numeric:tabular-nums}
.sx-csv{width:100%;min-height:160px;border-radius:var(--radius-inner);padding:12px 14px;font:400 13px/1.5 var(--font-sans);resize:vertical}
.sx-impb{gap:10px;margin:12px 0;flex-wrap:wrap} .sx-impb .sp{flex:1} .sx-imp tr.bad td{background:var(--neg-soft)}
/* Investments, Analysis */
.sx-pre{margin-bottom:14px}
.seg.sx-pre{max-width:100%;flex-wrap:wrap;height:auto;border-radius:20px;align-self:flex-start;width:max-content} .seg.sx-pre>button{height:30px}   /* FIX v11.3 · the presets sit as one control, not a full-width strip */
.sx-scn{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap} .sx-sc{display:flex;flex-direction:column;gap:6px;width:180px}
.sx-scnote{margin-top:14px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font:400 14px/1.45 var(--font-sans)}
.sx-h3{font:600 14px/1.4 var(--font-sans);margin:18px 0 10px}
.sx-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:12px}
.sx-tile .w-l{display:flex;align-items:center;gap:8px;flex-wrap:wrap} .sx-tile .w-v{font:600 24px/1.2 var(--font-sans);font-variant-numeric:tabular-nums;margin-top:8px}
.sx-tile .w-s{margin-top:auto;padding-top:8px;font:400 13px/1.4 var(--font-sans);color:var(--muted-foreground)}
.sx-u{font:400 13px var(--font-sans);color:var(--muted-foreground)}
.sx-stab{margin:0}
.sx-cf td,.sx-cf th{white-space:nowrap} .sx-cf .sx-yt{font-weight:600}
.sx-asb{margin-top:16px}
.sx-grid td.sx-base{font-weight:600;background:var(--row-group)}
/* a self-storage project has no departments to close: the header's month status is not shown */
body.model-ss #hPill{display:none}


/* ---- FIX v11.19 · Confirm plan dialog: not destructive, so a neutral icon and a primary button; reasons above the buttons ---- */
.cdlg.pc-dlg{width:480px}
.cdlg-ic.pc-ic{background:var(--muted);color:var(--foreground)}
.pc-dlg .cdlg-r .v{font:600 14px var(--font-sans);font-variant-numeric:tabular-nums}
.pc-dlg .cdlg-w{font:400 13px/1.45 var(--font-sans)} .pc-dlg .cdlg-w a.lnk{color:inherit;font-weight:500;white-space:nowrap}
.pc-foot{display:flex;flex-direction:column;gap:8px}
.pc-err{margin:0;font:500 13px/1.4 var(--font-sans);color:var(--neg)}
.pc-why{margin:0;font:400 13px/1.4 var(--font-sans);color:var(--muted-foreground);text-align:right}

/* ---- FIX v11.20 · client plan footer: the counter left; the reason, the buttons and “Saved 17:29” right; Approve is never a silent grey button ---- */
.stepfoot.cl-foot{align-items:flex-end;flex-wrap:wrap;gap:12px}
.cl-fr{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.cl-fb{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.cl-msg{margin:0;font:400 13px/1.4 var(--font-sans);color:var(--muted-foreground);text-align:right;max-width:420px}
.cl-msg.neg{color:var(--neg);font-weight:500}
.cl-saved{font:400 12px/1.3 var(--font-sans);color:var(--muted-foreground);min-height:16px}
.btn.primary.soft-off{opacity:.55}
.btn.primary.soft-off:hover{opacity:.7}
.cl-in.cl-need{box-shadow:0 0 0 2px var(--neg) inset}
.stepfoot.cl-foot{align-items:flex-start} .stepfoot.cl-foot>#clCnt,.stepfoot.cl-foot>.eyebrow{padding-top:14px}
/* FIX v11.22 · client tables (Game provider · CRM · Distribution · Marketing): one grid for the header, the group rows, the client rows
   and Total. The widths come from the table's <colgroup> (fixed layout): Client takes the rest (at least 220), every number column has
   one width in its table. A cell is one stack, right-aligned on one edge: the field → its caption (12 muted) → the plan line.
   The edge: a field's text ends 21 px inside its cell (8 cell padding + 1 border + 12 field padding); headers, totals, captions and
   plan lines end there too. Narrow screens scroll sideways with Client held on the left; columns never shrink. */
table.cl-mx{table-layout:fixed;border-collapse:collapse}
table.cl-mx th,table.cl-mx td{padding-left:8px;padding-right:8px}
table.cl-mx th.cl-c,table.cl-mx td.cl-name,table.cl-mx tr.cl-grp>td{padding-left:12px}
.cl-scroll table.cl-mx tr.cl-grp>td:first-child{position:static}
table.cl-mx .cl-gl{position:sticky;left:12px;display:inline-block}
table.cl-mx th.r,table.cl-mx th.cl-dh{padding-right:21px;text-align:right}
table.cl-mx th{white-space:nowrap;vertical-align:bottom;line-height:16px;padding-bottom:10px}
table.cl-mx .cl-dhw{display:flex;align-items:flex-end;justify-content:flex-end;gap:2px;min-width:0}
table.cl-mx .cl-dht{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
table.cl-mx th.cl-dh .cl-dm{flex:none;width:24px;height:24px;margin:-4px 0 -4px 0}
table.cl-mx th.cl-dh .cl-x,table.cl-mx th.cl-dh .cl-lock{flex:none;margin:0 2px 0 0}
table.cl-mx td.cl-g,table.cl-mx td.cl-rv,table.cl-mx td.cl-tc,table.cl-mx td.cl-rt,table.cl-mx td.cl-fee,table.cl-mx td.cl-na,table.cl-mx td.cl-tier{
  width:auto;min-width:0;max-width:none;vertical-align:top;padding-top:10px;padding-bottom:10px;height:auto;white-space:nowrap}
table.cl-mx td.cl-name{vertical-align:top;padding-top:14px;padding-bottom:10px;white-space:normal;min-width:0;max-width:none}
table.cl-mx td.cl-name .cl-nm{display:flex;max-width:100%} table.cl-mx td.cl-name .cl-sub{white-space:normal}
/* the field takes the whole column */
table.cl-mx .fld.cl-in,table.cl-mx .fld.cl-ro,table.cl-mx .fld.calcv{display:flex;align-items:center;justify-content:flex-end;box-sizing:border-box;width:100%!important;
  height:34px!important;padding:0 12px!important;border-width:1px!important;font:500 14px/1 var(--font-sans)!important;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden}
table.cl-mx .fld.cl-ro{border:1px solid transparent!important;background:none!important}
table.cl-mx .fld.calcv,.cl-legend .k-calc{border-color:color-mix(in oklch,var(--foreground) 40%,transparent)!important}
/* under the field: one caption, then one plan line — both 12 muted, one line, ending on the field's text */
table.cl-mx .cl-cap,table.cl-mx .cl-cnt{display:block;margin-top:4px;padding-right:13px;font:400 12px/16px var(--font-sans);color:var(--muted-foreground);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
table.cl-mx .cl-cap .lnk{font-size:12px} table.cl-mx .cl-cap .pf-tag{font-size:11px;vertical-align:1px}
table.cl-mx .cl-pl[data-pl]{display:block;margin-top:4px;padding-right:13px;min-height:16px;font:400 12px/16px var(--font-sans);color:var(--muted-foreground);text-align:right;white-space:nowrap;overflow:hidden;letter-spacing:0}
table.cl-mx .cl-pl[data-pl] .cl-plv{white-space:nowrap} table.cl-mx .cl-pl[data-pl] .fp-dv{margin:0;font-size:12px;white-space:nowrap}
table.cl-mx .cl-pl[hidden],table.cl-mx .cl-cnt[hidden]{display:none}
table.cl-mx.plan-off .cl-pl[data-pl]{display:none}
/* totals: the number on the field's line, the plan line or “2 of 3” under it */
table.cl-mx .cl-v{display:block;height:34px;line-height:34px;padding-right:13px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden}
table.cl-mx tr.cl-tot td{font-weight:600} table.cl-mx tr.cl-tot td.cl-name{padding-top:18px}
table.cl-mx tr.cl-tot .cl-cnt,table.cl-mx tr.cl-tot .cl-pl{font-weight:400}
table.cl-mx td.cl-na{text-align:right;padding-right:21px;line-height:34px;color:var(--muted-foreground)}
table.cl-mx td.cl-tier{padding-top:16px}
/* the old template's ✎ (type over the aggregator fee) sits in front of the field without narrowing the column */
table.cl-mx .cl-fw{display:flex;align-items:center;gap:4px} table.cl-mx .cl-fw>.fld{flex:1 1 auto;min-width:0}
/* FEATURE v11.21 · Partner fees = GGR × the client's partner fee %: Fee % (72) next to Partner fees (180) */
table.cl-mx th.cl-fee,table.cl-mx td.cl-fee{padding-left:4px;padding-right:8px;text-align:right}
table.cl-mx th.cl-fee{padding-right:21px}
table.cl-mx td.cl-fee .lnk,table.cl-mx td.cl-fee>span{display:flex;align-items:center;justify-content:flex-end;width:100%;box-sizing:border-box;height:34px;padding:0 13px 0 0;
  font:500 13px var(--font-sans);font-variant-numeric:tabular-nums;color:var(--muted-foreground)}
table.cl-mx td.cl-fee .lnk{text-decoration:underline dotted;text-underline-offset:3px} table.cl-mx td.cl-fee .lnk.none{text-decoration:none}
table.cl-mx td.cl-fee .lnk:hover{color:var(--foreground)}
/* the calculated Partner fees: ⋯ inside the field on the left, so the field keeps the column's width */
.pf-cell{position:relative;display:block}
.pf-cell .cl-cm{position:absolute;left:3px;top:3px;width:28px;height:28px;color:var(--muted-foreground)}
.pf-cell .cl-cm:hover,.pf-cell .cl-cm:focus-visible,.pf-cell .cl-cm[aria-expanded="true"]{color:var(--foreground);background:var(--accent)}
table.cl-mx .pf-cell.has-m .fld.calcv{padding-left:34px!important}
.pf-sub{font:400 12px/16px var(--font-sans);color:var(--muted-foreground);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.pf-sub .lnk{font-size:12px}
/* Waiting for GGR: in the field's place, the same height */
.pf-wait{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:0;min-height:34px;padding-right:13px;font:400 12px/16px var(--font-sans);color:var(--muted-foreground);text-align:right;white-space:nowrap}
.pf-wait .lnk{font-size:12px}
.pf-sub .pf-tag{font-size:11px}
/* the toolbar: one row — what you do on the left (Copy last month and the keys), how you look on the right (whose clients, the lines,
   the plan). Under 1280 the key hint goes first, and it also goes whenever the row would wrap; a group then wraps whole */
.cl-ptools{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;margin-bottom:12px}
.cl-ptools .clt-l,.cl-ptools .clt-r{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;min-width:0}
.cl-ptools .clt-r{margin-left:auto}
.cl-ptools .cl-keys{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cl-ptools .cl-keys[hidden]{display:none}
.cl-ptools .fp-seg,.cl-ptools .cl-seg{margin:0!important}
@media (max-width:1279px){ .cl-ptools .cl-keys{display:none} }
table.cl-mx{min-width:calc(220px + var(--cl-nums))!important}
@media (max-width:640px){ table.cl-mx{min-width:calc(140px + var(--cl-nums))!important} table.cl-mx td.cl-name .cl-sub{font-size:11px} }
@media (max-width:640px){ .cl-ptools .clt-l,.cl-ptools .clt-r{flex-wrap:wrap} }
.pf-why{flex-wrap:wrap}
.cl-pf .cl-side{margin-top:6px}
.pw-t col.c-f{width:118px}
@media (min-width:641px){ .pw-t{min-width:880px} }
/* FEATURE v11.24 · Welcome to IBO: an account with no project yet. Three business types as cards (a click creates the project), the
   Self-storage way in, and whom to ask for an invitation. Centred like the business-type step. */
.page.welcome{max-width:1040px;margin-inline:auto;padding-top:clamp(24px,7vh,72px)}
.wel-h{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:28px}
.wel-h h1{font:var(--text-display);letter-spacing:-.02em}
.wel-h .sub{margin:0;font:400 16px/1.5 var(--font-sans);color:var(--muted-foreground);max-width:52ch;text-wrap:balance}
.wel-g{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:900px){ .wel-g{grid-template-columns:minmax(0,1fr)} }
.wel-c{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-height:212px;padding:24px;border:1px solid var(--border);border-radius:var(--radius-card);
  background:var(--card);color:var(--foreground);text-align:left;cursor:pointer;font:inherit;transition:border-color var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out)}
.wel-c:hover:not([disabled]){border-color:var(--border-strong)}
.wel-c:active:not([disabled]){transform:translateY(1px)}
.wel-c:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus);border-color:var(--ring)}
.wel-c[disabled]:not(.busy){opacity:.55;cursor:default}
.wel-c.busy{border-color:var(--ring);box-shadow:inset 0 0 0 1px var(--ring);cursor:progress}
.wel-ic{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:12px;background:color-mix(in oklch,var(--foreground) 6%,transparent);color:var(--foreground);margin-bottom:6px}
.wel-ic svg{width:20px;height:20px}
.wel-t{font:600 18px/1.3 var(--font-sans)}
.wel-w{font:var(--text-body);color:var(--muted-foreground);text-wrap:pretty}
.wel-m{font:var(--text-caption);color:var(--muted-foreground)}
.wel-go{margin-top:auto;padding-top:12px;display:inline-flex;align-items:center;gap:8px;font:500 14px/1.4 var(--font-sans);color:var(--foreground)}
.wel-c:hover:not([disabled]) .wel-go{text-decoration:underline;text-underline-offset:3px}
.wel-more{margin:24px 0 0;text-align:center;font:var(--text-body);color:var(--muted-foreground)}
.wel-wait{margin:12px auto 0;max-width:62ch;text-align:center;font:400 13px/1.5 var(--font-sans);color:var(--muted-foreground);text-wrap:balance}
.wel-wait .mono{color:var(--foreground);overflow-wrap:anywhere}
.welcome .btp-err{text-align:center;margin:16px 0 0}
.welcome .btp-rd{text-align:center;margin-top:8px}
@media (prefers-reduced-motion:reduce){ .wel-c{transition:none} .wel-c:active:not([disabled]){transform:none} }
/* FIX v12.29 · a business type closed to new projects while it is reworked (B2B): seen, dimmed, never picked; the reason at full strength */
.wel-c.paused{cursor:not-allowed;background:color-mix(in oklch,var(--card) 55%,var(--background))}
.wel-c.paused:hover{border-color:var(--border)} .wel-c.paused:active{transform:none}
.wel-c.paused :is(.wel-ic,.wel-t,.wel-w,.wel-m){opacity:.55}
.wel-c.paused .wel-go,.wel-c.paused:hover .wel-go{color:var(--muted-foreground);text-decoration:none}
.wel-pz .badge{margin-right:2px}
.wel-off{color:var(--muted-foreground);white-space:nowrap}
.bm-p .btp-c.bm-c.paused{cursor:not-allowed;gap:8px;background:color-mix(in oklch,var(--secondary) 55%,transparent);color:color-mix(in oklch,var(--muted-foreground) 70%,transparent)}
.bm-p .btp-c.bm-c.paused:hover{color:color-mix(in oklch,var(--muted-foreground) 70%,transparent)}
.bm-pz{display:inline-flex;align-items:center;height:20px;padding:1px 7px 0;border-radius:var(--radius-pill);background:color-mix(in oklch,var(--foreground) 8%,transparent);color:var(--muted-foreground);font:500 11px/1 var(--font-sans)}
.bm-x .bm-pzh{margin-top:4px}
.types .type.paused{cursor:not-allowed} .types .type.paused>:not(.badge){opacity:.55}
/* the sign-in page: who can come in, and the account list of Google */
.auth-new{margin:12px 0 0;font:var(--text-body);color:var(--muted-foreground)}
.auth-other{margin-top:4px;font:500 13px/1.4 var(--font-sans)}
/* FIX v11.26 · the invitation dialog (the ConfirmDialog host): 520 wide, the link field with its middle shortened, Copy link of one width */
.cdlg.inv-dlg{width:520px}
/* FIX v12.34 · invitations waiting for an answer; v12.35 · sign-out with unsaved changes */
.cdlg.inv-ask,.cdlg.so-dlg{width:480px}
.ia-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid var(--border)}
.ia-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.ia-t b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:560px){ .cdlg.inv-ask,.cdlg.so-dlg{width:calc(100vw - 16px)} .ia-row{flex-wrap:wrap} }
@media (max-width:560px){ .cdlg-scrim{padding:8px} .cdlg.inv-dlg{width:calc(100vw - 16px)} }
.cdlg-ic.invd-ic{background:var(--muted);color:var(--foreground);border-radius:12px}
.invd-em{color:var(--foreground);font-weight:500;overflow-wrap:anywhere}
.invd-row{display:flex;gap:8px;align-items:center}
.invd-f{position:relative;flex:1 1 auto;min-width:0;display:block}
.invd-in{box-sizing:border-box;width:100%;height:36px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-inner);background:var(--muted);
  font:400 13px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--foreground);cursor:text}
.invd-in:not(:focus){color:transparent}
.invd-in:focus{outline:none;border-color:var(--ring);box-shadow:0 0 0 3px var(--ring-focus)}
.invd-mid{position:absolute;inset:0;display:flex;align-items:center;padding:0 13px;pointer-events:none;white-space:nowrap;overflow:hidden;
  font:400 13px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--foreground)}
.invd-in:focus+.invd-mid{display:none}
.invd-copy{flex:none;width:128px;justify-content:center;gap:8px}
.invd-copy.done{color:var(--pos)}
.invd-hint{margin:-8px 0 0;min-height:0;font:var(--text-caption);color:var(--muted-foreground)}
.invd-hint:empty{display:none}
.invd-meta{margin:0;font:var(--text-caption);color:var(--muted-foreground);font-variant-numeric:tabular-nums}
.invd-a{justify-content:space-between;align-items:center;margin-top:4px}
.invd-a .btn.ghost.danger-t{background:transparent;padding-inline:12px} .invd-a .btn.ghost.danger-t:hover{background:color-mix(in oklch,var(--destructive) 14%,transparent)}
.invd-a .sp{flex:1}
@media (max-width:420px){ .invd-row{flex-direction:column;align-items:stretch} .invd-copy{width:100%} }
/* toasts: at most 400 wide, long text wraps (no address is ever shown in one) */
.toast{max-width:min(400px,calc(100vw - 32px))}
.toast .t{overflow-wrap:anywhere;text-wrap:pretty}
/* Users & roles: an invited person's name opens the card; an expired link is amber */
.u-open{font:inherit;color:inherit;text-align:left} .u-open:hover b{text-decoration:underline;text-underline-offset:3px}
.pl.dr.warn{color:var(--warn)}
/* FIX v11.29 · a shared project whose figures this browser doesn't have */
.shared-empty .empty{max-width:640px}
/* FIX v11.23 · KpiValue: a KPI tile is a size container; its number follows the tile's width and never leaves it — when even 18px is too
   wide the short form shows (−€127.2k), the full value is on hover and in the aria-label. No ellipsis anywhere. */
.well:has([data-kpi-value]),.kstat:has([data-kpi-value]),.kcard,.mcard,.mcc{container-type:inline-size}
[data-kpi-value]{display:block;max-width:100%;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:clip;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
/* a negative number at a tile's small sizes (18 px is not large text): the badge's lighter red keeps 4.5:1 on a well */
.t-neg>[data-kpi-value],.tv.t-neg [data-kpi-value]{color:color-mix(in oklch,var(--neg) 82%,var(--foreground))}
.well .w-v.lg [data-kpi-value],.kstat .ks-v [data-kpi-value]{font-size:clamp(18px,11cqi,28px);line-height:1.2}
.kc-v .v{min-width:0;max-width:100%;flex:0 1 auto}
.kc-v .v [data-kpi-value]{font-size:clamp(18px,11cqi,32px)}
.mcard .kc-v .v [data-kpi-value],.mcc .kc-v .v [data-kpi-value]{font-size:clamp(18px,11cqi,28px)}
.pstrip .w-v.lg [data-kpi-value]{flex:0 1 auto}
/* Your department moves: tiles of at least 150 (one column when the panel is under 340), 16 inside, one caption under the number */
.fg-live>.sh-b,.fg-strip{container:livepanel / inline-size}
.live-cards,.lst-cards.live-cards{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
@container livepanel (max-width:339px){ .live-cards,.lst-cards.live-cards{grid-template-columns:minmax(0,1fr)} }
.live-cards .well.lc{padding:16px}
.live-cards .well .w-s.lc-cap{margin-top:6px;font:500 12px/1.35 var(--font-sans);font-variant-numeric:tabular-nums}
.lc-wait{margin-top:6px;font:400 13px/1.4 var(--font-sans);color:var(--muted-foreground);text-decoration:underline dotted;text-underline-offset:3px;cursor:help;align-self:flex-start;border-radius:4px}
.lc-wait:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
/* FIX v11.25 · bar rows on one grid: name 220 · track 1fr · value 72 (right, tabular) · note 160 (always there), so the tracks start and
   end at the same point in every row; the track and its bar are 8 high, one colour; an empty value says No data. Under 900 the note
   goes under the name and the track and value keep the shared grid. */
.hbars{display:flex;flex-direction:column}
.hbar{display:grid;grid-template-columns:220px minmax(0,1fr) 72px 160px;gap:12px;align-items:center;padding:8px 0}
.hbar .hb-n{font:500 13px/1.35 var(--font-sans);color:var(--foreground);min-width:0}
.hbar .hb-t{height:8px!important;border-radius:999px;background:color-mix(in oklch,var(--foreground) 10%,transparent)!important;overflow:hidden;position:relative}
.hbar .hb-f{height:100%;border-radius:999px;background:var(--chart-1)}
.hbar .hb-f.first{background:var(--muted-foreground)}
.hbar .hb-v{text-align:right;font:500 14px/1.3 var(--font-sans);font-variant-numeric:tabular-nums;white-space:nowrap}
.hbar .hb-nd{font:400 12px/1.3 var(--font-sans);color:var(--muted-foreground)}
.hbar .hb-x{text-align:right;font:400 12px/1.35 var(--font-sans);color:var(--muted-foreground);min-width:0;overflow-wrap:anywhere}
.hbar .hb-x .lnk{font-size:12px}
@media (max-width:899px){ .hbar{grid-template-columns:minmax(110px,160px) minmax(0,1fr) 72px;row-gap:2px} .hbar .hb-n{grid-column:1;grid-row:1} .hbar .hb-t{grid-column:2;grid-row:1}
  .hbar .hb-v{grid-column:3;grid-row:1} .hbar .hb-x{grid-column:1;grid-row:2;text-align:left} }

/* FIX v11.27 · report cards: the header of the v11.1 cards — title with ⋯, “Formula” under it (a hint, never a side panel), then the
   period line; Budget utilization: its badges left and Expand all right, on one row above the list. Focus: a round ring, keyboard only */
.dp-fx{display:flex;margin:2px 0 2px}
.dp-fx .fx-trig{margin-top:0;height:24px}   /* a 24 px target (axe target-size): the period line sits right under it */
.dpanel .rc-more{flex:none;width:32px;height:32px;border-radius:999px;color:var(--muted-foreground)}
.dpanel .rc-more:hover,.dpanel .rc-more[aria-expanded="true"]{color:var(--foreground);background:var(--accent)}
.dpanel .rc-more:focus{outline:none} .dpanel .rc-more:focus-visible{box-shadow:0 0 0 3px var(--ring-focus)}
.fx-trig:focus{outline:none} .fx-trig:focus-visible{box-shadow:0 0 0 3px var(--ring-focus)}
.u-bar{display:flex;align-items:center;justify-content:space-between;gap:8px 12px;flex-wrap:wrap;margin:0 0 6px}
.u-bar .u-bdg{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.u-bar .u-bdg:empty{display:none}
.u-bar .util-all{margin-left:auto}
.rmenu.rc-menu{position:fixed;width:240px;min-width:0;padding:6px;gap:2px;background:var(--popover);border:1px solid var(--border);border-radius:var(--radius-inner);box-shadow:var(--shadow-pop);z-index:96}
.rmenu.rc-menu button{display:flex;align-items:center;gap:8px;height:36px;padding:0 10px;border-radius:10px;font:500 14px/1.2 var(--font-sans)}
.rmenu.rc-menu button:hover,.rmenu.rc-menu button:focus-visible{background:var(--accent)}
.rmenu.rc-menu .rm-sep{height:1px;background:var(--border);margin:4px 2px}
.rmenu.rc-menu button.neg{color:var(--neg)}
/* the Formula hint of Budget utilization: the lead, the bands as a list with their colours, the note */
.fx-tip.rich{max-width:340px;gap:6px}
.fx-tip .fx-bands{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}
.fx-tip .fx-bands li{display:flex;align-items:center;gap:8px;font:400 12px/1.4 var(--font-sans);color:var(--foreground)}
.fx-tip .fx-dot{width:8px;height:8px;border-radius:999px;flex:none} .fx-dot.pos{background:var(--pos)} .fx-dot.warn{background:var(--warn)} .fx-dot.neg{background:var(--neg)}
.fx-tip .f b{font-weight:600}
/* FIX v11.28 · Finance without salary access: one figure, no chevron, the hint on hover and focus */
.util.nox{cursor:default}
.util.nox:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus);border-radius:12px}
.util .u-ch.none{visibility:hidden}
.uln.sal{cursor:default}


/* ===== FEATURE v12.0 (v12.3) · Plan & fact: one section, the month's stage, two statuses per department, the upload zone after the form ===== */
.badge.pf-stage{gap:5px;border:1px solid transparent}
.badge.pf-stage.planning{background:transparent;border-color:var(--border-strong);color:var(--foreground)}
.badge.pf-stage.fact{background:var(--warn-soft);color:var(--warn)}
.badge.pf-stage.closed{background:var(--pos-soft);color:color-mix(in oklch,var(--pos) 85%,var(--foreground))}
.pf-title{text-wrap:balance}
/* the department list: Plan ✓ Approved · Fact — Not started (a word with every glyph, never colour alone) */
.pf-st{display:flex;flex-direction:column;gap:4px;min-width:0}
.pf-s{display:inline-flex;align-items:baseline;gap:6px;font:500 12px/1.3 var(--font-sans);white-space:nowrap;color:var(--foreground)}
.pf-s .pf-k{color:var(--muted-foreground);font-weight:400;min-width:28px}
.pf-s .pf-g{width:12px;text-align:center;flex:none}
.pf-s.pos .pf-g{color:var(--pos)} .pf-s.warn .pf-g{color:var(--warn)} .pf-s.neg .pf-g{color:var(--neg)} .pf-s.mut{color:var(--muted-foreground)}
.pf-cnt{margin-left:auto;font:500 12px/1.3 var(--font-sans);color:var(--muted-foreground);white-space:nowrap;font-variant-numeric:tabular-nums}
/* Planning: Line · Plan (the field, last fact under it) · Fact (closed until the plan is confirmed) */
.facts.erows.lnrows.pf-pl .fr.erow.lnr{grid-template-columns:var(--lr-ic) minmax(0,1fr) var(--lr-val) minmax(120px,180px) var(--lr-m)!important;grid-template-areas:"ic name last val m"!important}
.lnrows.pf-pl .fr.erow.lnr>.lr-cmp{display:none}
.lnrows.pf-pl .fr.erow.lnr .lr-last{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:4px;width:var(--lr-val);max-width:100%;justify-self:end}
.lnrows.pf-pl .fr.erow.lnr.h .lr-last{align-items:flex-end;justify-content:flex-end}
.lnrows.pf-pl .fr.erow.lnr .lr-last .entity-value{width:100%;height:var(--control-h);text-align:right;font-variant-numeric:tabular-nums;text-overflow:clip}
.lnrows.pf-pl .fr.erow.lnr .lr-last .fld.calcv,.lnrows.pf-pl .fr.erow.lnr .lr-last .tot-v{display:block;width:100%;height:var(--control-h);line-height:var(--control-h);padding:0 15px;text-align:right;white-space:nowrap;overflow:hidden}
.lnrows.pf-pl .fr.erow.lnr>.lr-val{justify-self:stretch;width:auto;padding-left:16px}
.lnrows.pf-pl .fr.erow.lnr.h>.lr-val{justify-content:flex-start}
.pf-lf{display:block;font:400 12px/1.3 var(--font-sans);color:var(--muted-foreground);text-align:right;padding-right:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pf-fc{display:flex;text-align:left;justify-content:flex-start;align-items:center;min-height:var(--control-h);padding:0 12px;border-radius:var(--radius-pill);background:var(--well);color:var(--muted-foreground);font:400 12px/1.3 var(--font-sans);white-space:normal}
/* Fact entry: the plan is read-only, with a lock and its version in the tooltip */
.lnrows .e-p.pf-lock{display:inline-flex;align-items:center;gap:5px;color:var(--muted-foreground)}
.lnrows .e-p.pf-lock svg{flex:none;opacity:.8}
.pf-addoff{display:flex;align-items:center;gap:12px;border-style:dashed;cursor:default}
.pf-addoff .btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed}
.pf-addoff .cap{font-size:12px;color:var(--muted-foreground)}
/* the result strip of Fact entry: Fact · Plan · Δ */
.pf-result .w-s .t-pos{color:var(--pos)} .pf-result .w-s .t-neg{color:color-mix(in oklch,var(--neg) 82%,var(--foreground))} .pf-result .w-s .t-nd{color:var(--muted-foreground)}
/* the upload zone after the form: a compact card; dashed only while a file is dragged over the page */
.dpanel.pf-up{display:flex;flex-direction:row;text-align:left;justify-content:flex-start;align-items:center;gap:16px;padding:18px 22px;margin-top:0;border:1px solid var(--border);transition:border-color var(--dur-2) var(--ease-out),background-color var(--dur-2) var(--ease-out)}
.pf-up-ic{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;background:var(--well);color:var(--foreground);flex:none}
.pf-up-t{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}
.pf-up-h{font:600 14px/1.3 var(--font-sans);color:var(--foreground)}
.pf-up-s{font:400 14px/1.4 var(--font-sans);color:var(--foreground)}
.pf-up-c{font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground)}
.pf-up-a{display:flex;gap:8px;flex:none;flex-wrap:wrap;justify-content:flex-end}
.pf-browse{position:relative;overflow:hidden;cursor:pointer}
.pf-browse input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.pf-browse:focus-within{box-shadow:0 0 0 3px var(--ring)}
body.pf-dragging .pf-up,.pf-up.over{border-style:dashed;border-color:var(--ring);background:color-mix(in oklch,var(--ring) 8%,var(--card))}
@media (max-width:760px){ .dpanel.pf-up{flex-wrap:wrap} .pf-up-a{width:100%;justify-content:flex-start} }
@media (prefers-reduced-motion:reduce){ .dpanel.pf-up{transition:none} }
.lnrows:has(.pf-lock){--lr-last:108px}
.lnrows .e-p.pf-lock{white-space:nowrap}
.pf-result .w-s>span{white-space:nowrap} .pf-result .w-s>span.pf-rw{white-space:normal}   /* FIX v12.27 B1 · “loss larger than planned” wraps inside the tile, never past its edge */
.cl-addl[aria-disabled="true"],.btn[data-act="pf-add-off"]{opacity:.55;cursor:not-allowed}
/* Planning rows on narrow widths: the fact cell goes under the plan field, then under the name on a phone */
@container erows (max-width:519px){
  .facts.erows.lnrows.pf-pl .fr.erow.lnr{grid-template-columns:var(--lr-ic) minmax(0,1fr) var(--lr-val) var(--lr-m)!important;grid-template-areas:"ic name last m" "ic name val m"!important;grid-template-rows:auto 1fr!important}
  .facts.erows.lnrows.pf-pl .fr.erow.lnr.h{grid-template-areas:"ic name last m"!important}
  .facts.erows.lnrows.pf-pl .fr.erow.lnr.h>.lr-val{display:none}
  .lnrows.pf-pl .fr.erow.lnr>.lr-val{padding-left:0}
}
@container erows (max-width:439px){
  .facts.erows.lnrows.pf-pl .fr.erow.lnr{grid-template-columns:var(--lr-ic) minmax(0,1fr) var(--lr-m)!important;grid-template-areas:"ic name m" "ic last last" "ic val val"!important;grid-template-rows:auto!important}
  .lnrows.pf-pl .fr.erow.lnr .lr-last{width:auto;justify-self:stretch}
}
/* the graph status: a long problem text is cut with an ellipsis inside the button, never wider than the screen (qa_types at 390) */
.bp-stw{min-width:0;max-width:100%}
.bp-status{max-width:100%;min-width:0}
.bp-status .bp-st{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:28px}

/* ---------- FIX v12.5 · choices that stay whole in a narrow sheet (Add investment and every sheet) ---------- */
/* chips that wrap: a radio group of pills, every option whole at any width */
.chipset{display:flex;flex-wrap:wrap;gap:8px}
.chipset .chip,.mp-m .chip{display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;border:0;border-radius:var(--radius-pill);background:var(--secondary);color:var(--muted-foreground);font:500 13px/1 var(--font-sans);white-space:nowrap;cursor:pointer;transition:background-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}
.chipset .chip:hover,.mp-m .chip:hover{color:var(--foreground)}
.chipset .chip[aria-checked="true"],.mp-m .chip[aria-checked="true"]{background:var(--primary);color:var(--primary-foreground)}
.chipset .chip:focus-visible,.mp-m .chip:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
/* option cards: one answer per line, the title and what it does; the picked one has a 2px ring */
.optcards{display:flex;flex-direction:column;gap:8px}
.optc{display:grid;grid-template-columns:18px minmax(0,1fr);gap:12px;align-items:start;width:100%;margin:0;padding:12px 14px;border:1px solid var(--border-strong);border-radius:16px;background:transparent;color:var(--foreground);text-align:left;cursor:pointer;transition:border-color var(--dur-1) var(--ease-out),background-color var(--dur-1) var(--ease-out)}
.optc:hover{background:var(--row-hover)}
.optc[aria-checked="true"]{border-color:var(--ring);box-shadow:inset 0 0 0 1px var(--ring)}
.optc:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.optc[aria-checked="true"]:focus-visible{box-shadow:inset 0 0 0 1px var(--ring),0 0 0 3px var(--ring-focus)}
.optc-r{width:18px;height:18px;margin-top:1px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--muted-foreground)}
.optc[aria-checked="true"] .optc-r{box-shadow:inset 0 0 0 5px var(--primary)}
.optc-t{display:flex;flex-direction:column;gap:4px;min-width:0}
.optc-h{font:500 14px/1.35 var(--font-sans);overflow-wrap:anywhere}
.optc-s{font:400 13px/1.45 var(--font-sans);color:var(--muted-foreground);overflow-wrap:anywhere}
/* the month: Year ▾ above 12 chips; 6 × 2 in a sheet, 4 × 3 when the column is narrower still */
.mpick{display:flex;flex-direction:column;align-items:stretch;gap:8px;container-type:inline-size;min-width:0}
.mpick select.mp-y{width:112px;flex:none;text-align:left;text-align-last:left}
.mpick .m12.mp-m{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
.mpick .mp-m .chip{min-width:0;padding:0}
@container (min-width:640px){ .mpick .m12.mp-m{grid-template-columns:repeat(12,minmax(44px,1fr))} }
@container (max-width:279px){ .mpick .m12.mp-m{grid-template-columns:repeat(4,minmax(0,1fr))} }
/* Add investment / Edit investment: one 20px step between fields and groups; the buttons stay at the bottom of the sheet */
#sheet.inv-sheet .inv-form{gap:20px}
#sheet.inv-sheet .inv-form .field{display:flex;flex-direction:column;gap:8px;margin:0}
#sheet.inv-sheet .inv-form .f-h{margin:0}
#sheet.inv-sheet .sh-f{position:sticky;bottom:0;background:var(--card);padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))}
/* §4 · any other sheet or dialog: a segmented choice of three or more options in the narrow column becomes chips that wrap */
#sheet .seg[role="radiogroup"]:has(> [role="radio"]:nth-child(3)),.cdlg .seg[role="radiogroup"]:has(> [role="radio"]:nth-child(3)){display:flex;flex-wrap:wrap;gap:8px;height:auto;max-width:100%;padding:0;border:0;border-radius:0;background:none;overflow:visible}
#sheet .seg[role="radiogroup"]:has(> [role="radio"]:nth-child(3))>[role="radio"],.cdlg .seg[role="radiogroup"]:has(> [role="radio"]:nth-child(3))>[role="radio"]{flex:none;height:32px;padding:0 12px;border:0;border-radius:var(--radius-pill);background:var(--secondary);color:var(--muted-foreground);font:500 13px/1 var(--font-sans);white-space:nowrap}
#sheet .seg[role="radiogroup"]:has(> [role="radio"]:nth-child(3))>[role="radio"]:is([aria-checked="true"],.on),.cdlg .seg[role="radiogroup"]:has(> [role="radio"]:nth-child(3))>[role="radio"]:is([aria-checked="true"],.on){background:var(--primary);color:var(--primary-foreground)}
#sheet .mpick select.mp-y,.mpick select.mp-y{width:112px;max-width:100%}

/* ---------- FEATURE v12.7 · Plan & fact: one page for a department (dept-month.js) ----------
   the same blocks and the same grid in Planning, Fact entry and Closed: ⠿ · Line · Plan · Fact · vs plan · Δ · ⋯; rows 64px with one caption
   line under the field in both stages, so nothing moves when the plan is confirmed */
.pf-dept .pf-head h1{display:block}
.pf-dh{display:inline-flex;align-items:center;gap:12px;flex-wrap:wrap;min-width:0}
.pf-dic{width:32px;height:32px;border-radius:10px;flex:none}
.pf-dn{min-width:0;overflow-wrap:anywhere}
.pf-dh .badge.pf-stage{font-size:12px;vertical-align:middle;letter-spacing:normal;word-spacing:normal;font-weight:500}
.pf-panel .dp-b{padding-top:4px}
.pf-tools{display:flex;align-items:center;justify-content:space-between;gap:8px 16px;flex-wrap:wrap;margin:0 0 8px}
.pf-tl,.pf-tr{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.pf-keys{font-size:12px}
.pf-add[aria-disabled="true"]{opacity:.5;cursor:not-allowed}
.facts.erows.lnrows.pf-one{--lr-ic:28px;--pf-cell:168px;--lr-vs:84px;--lr-d:104px;--lr-m:32px}
.facts.erows.lnrows.pf-one .fr.erow.lnr{grid-template-columns:var(--lr-ic) minmax(0,1fr) var(--pf-cell) var(--pf-cell) var(--lr-vs) var(--lr-d) var(--lr-m)!important;
  grid-template-areas:"ic name last val vs d m"!important;column-gap:12px!important;row-gap:6px!important;padding:8px 0!important;min-height:64px;align-items:start}
.facts.erows.lnrows.pf-one .fr.erow.lnr.h{min-height:0;padding:10px 0!important;align-items:end}
.lnrows.pf-one .fr.erow.lnr>.e-ic{justify-content:flex-start;padding-top:6px}
/* FIX v12.9 · P&L Categories: a category opens in place under its row (--dur-3; reduced motion: at once), the chevron turns › → ⌄ */
.pcats>.pl-x{display:grid;grid-template-rows:0fr;overflow:hidden;transition:grid-template-rows var(--dur-3) var(--ease-io)}
.pcats>.pl-x.open{grid-template-rows:1fr}
.pcats>.pl-x>.plines{min-height:0;overflow:hidden;padding-top:0;padding-bottom:0;border-bottom:0;background:var(--row-group)}   /* no padding or border on the folded item: they would keep it 15 px tall */
.pcats>.pl-x>.plines::after{content:"";display:block;height:14px}
.pcats>.pl-x.open{border-bottom:1px solid var(--border)}
.pcats .prow .pc-x .ico{transition:transform var(--dur-3) var(--ease-io)}
.pcats .prow[aria-expanded="true"] .pc-x .ico{transform:rotate(90deg)}
.prow.p9 .p9-nd{font:400 13px/1.35 var(--font-sans);color:var(--muted-foreground);white-space:normal}
.prow.p9 .p9-why{font:400 13px/1.35 var(--font-sans);color:var(--muted-foreground)}
.pnl-all{margin-right:4px}
.prow .pc-n .kpi-dot{margin-left:6px;vertical-align:middle}
.pstrip .w-nd{font:400 14px/1.4 var(--font-sans);color:var(--muted-foreground)}
@media (prefers-reduced-motion:reduce){ .pcats>.pl-x,.pcats .prow .pc-x .ico{transition:none} }
/* FIX v12.8 · back on the month page after Approve: the department just approved is lit for 2 s, then fades (--dur-4) */
.drow[data-dept].pf-just{background:var(--pos-soft)}
.drow[data-dept].pf-just-out{transition:background-color var(--dur-4) var(--ease-out)}
.notice.pf-done{margin-bottom:16px}
/* a link to one line (Confirm plan, waiting captions) marks its row for a moment; the row takes focus when nothing in it can */
.lnrows.pf-one .fr.erow.lnr.pf-hit{background:var(--neutral-soft);transition:background-color var(--dur-3) var(--ease-out)}
.lnrows.pf-one .fr.erow.lnr[tabindex="-1"]:focus{outline:none}
.lnrows.pf-one .fr.erow.lnr[tabindex="-1"]:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}
.lnrows.pf-one .fr.erow.lnr>.e-name{padding-top:8px}
.lnrows.pf-one .fr.erow.lnr>.lr-last,.lnrows.pf-one .fr.erow.lnr>.lr-val{grid-area:last;display:block;width:var(--pf-cell);max-width:100%;min-width:0;justify-self:end;min-height:0}
.lnrows.pf-one .fr.erow.lnr>.lr-val{grid-area:val}
.lnrows.pf-one .fr.erow.lnr.h>.lr-last,.lnrows.pf-one .fr.erow.lnr.h>.lr-val{display:flex;justify-content:flex-end}
.lnrows.pf-one .fr.erow.lnr .lr-vs,.lnrows.pf-one .fr.erow.lnr .lr-d{min-height:var(--control-h)}
.lnrows.pf-one .pf-c{display:flex;flex-direction:column;align-items:stretch;gap:2px;min-width:0}
.lnrows.pf-one .pf-c>.entity-value,.lnrows.pf-one .pf-c>.pf-tx{width:100%;height:var(--control-h);text-align:right;font-variant-numeric:tabular-nums}
.lnrows.pf-one .pf-c>.pf-tx{display:flex;align-items:center;justify-content:flex-end;gap:6px;padding:0 15px;font:400 14px/1 var(--font-sans);color:var(--foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lnrows.pf-one .pf-c>.pf-tx.pf-na{color:var(--muted-foreground);font-size:12px}
.lnrows.pf-one .pf-c>.pf-tx.pf-lock{color:var(--muted-foreground)}
.lnrows.pf-one .pf-c>.pf-tx.pf-lock svg{flex:none;opacity:.8}
.lnrows.pf-one .pf-c>.pf-sum{display:block;height:var(--control-h);line-height:var(--control-h);padding:0 15px;text-align:right;border:1px dashed color-mix(in oklch,var(--foreground) 40%,transparent)!important;background:transparent;border-radius:var(--radius-pill);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.lnrows.pf-one .pf-cap{display:block;min-height:16px;font:400 12px/16px var(--font-sans);color:var(--muted-foreground);text-align:right;padding-right:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* a calculated row has room for a two-line reason under its value (“Waiting for plan” / Marketing, Payments +1): every calculated row
   takes that height in every stage, so nothing moves when the plan is confirmed or the fact comes in (v12.7 §1.1) */
.facts.erows.lnrows.pf-one .fr.erow.lnr.pf-r.calc{min-height:84px}
.lnrows.pf-one .pf-r.calc .pf-cap:has(.pf-wait){overflow:visible;line-height:15px}
.lnrows.pf-one .pf-cap .pf-wait{display:block;min-height:0;padding:0;gap:0;font:inherit;line-height:15px;white-space:nowrap}
.lnrows.pf-one .pf-cap .pf-wait>.pf-wl,.lnrows.pf-one .pf-cap .pf-wait>.pf-wk{display:block;overflow:hidden;text-overflow:ellipsis}
.lnrows.pf-one .pf-cap a.lnk{font:inherit;color:var(--foreground);text-decoration:underline;text-underline-offset:2px}   /* “Waiting for plan: Marketing” under an empty calculated value */
.lnrows.pf-one .pf-cap .lnk.pf-z{font:inherit;color:var(--foreground);text-decoration:underline;text-underline-offset:2px;background:none;border:0;padding:0 2px;margin:-6px -2px;cursor:pointer;min-height:24px;display:inline-flex;align-items:center;vertical-align:middle}   /* a 24 px target (WCAG 2.5.8) in the 12 px caption line: the negative margin keeps the row at 64 px */
.lnrows.pf-one .pf-c>.pf-fc{min-height:var(--control-h);padding:0 0 0 4px;border-radius:0;background:none;color:var(--muted-foreground);font:400 12px/1.35 var(--font-sans);display:flex;align-items:center;white-space:normal;text-wrap:balance}
.lnrows.pf-one .fr.erow.lnr .lr-k.pf-k{display:none}
/* a sub-line hangs on a guide from its parent */
.lnrows.pf-one .fr.erow.lnr.subl>.e-name{position:relative;padding-left:26px}
.lnrows.pf-one .fr.erow.lnr.subl>.e-name::before{content:"";position:absolute;left:8px;top:0;bottom:50%;width:12px;border-left:1px solid var(--border-strong);border-bottom:1px solid var(--border-strong);border-bottom-left-radius:6px;transform:translateY(-6px)}
.lnrows.pf-one .fr.erow.lnr.sigma .e-n{font-weight:500}
.lnrows.pf-one .fr.erow.lnr.calc>.e-ic .pf-fx{width:24px;height:24px;font:600 11px/24px var(--font-sans)}
.lr-grip.off{cursor:not-allowed;opacity:.35!important}
.lr-grip.off:hover{background:none;color:var(--muted-foreground)}
.lnrows.pf-one.st-fact .fr.erow.lnr .lr-grip.off{opacity:.35!important}
.pf-empty{padding:14px 0}
.pf-foot{display:flex;align-items:center;justify-content:space-between;gap:12px 16px;flex-wrap:wrap;padding-top:16px;margin-top:4px}
.pf-hint{font:400 13px/1.45 var(--font-sans);color:var(--muted-foreground);min-width:0;flex:1 1 260px}
.pf-fa{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.cf-tag.newt{color:var(--foreground)}
/* the check banner (FIX v12.6 §3) */
.pfx-l{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.pfx-i{display:flex;align-items:center;justify-content:space-between;gap:8px 12px;flex-wrap:wrap}
.pfx-t{min-width:0}
.pfx-a{display:flex;gap:8px}
.cl-pl.cl-after .cl-plv{color:var(--muted-foreground);font-size:12px}
/* narrower tables: the numbers go under the name; their names show (Plan, Fact, vs plan, Δ) */
@container erows (max-width:719px){
  .facts.erows.lnrows.pf-one .fr.erow.lnr{grid-template-columns:var(--lr-ic) minmax(0,1fr) minmax(0,var(--pf-cell)) minmax(0,var(--pf-cell)) var(--lr-m)!important;
    grid-template-areas:"ic name name name m" "ic . last val m" "ic . vs d m"!important}
  .facts.erows.lnrows.pf-one .fr.erow.lnr.h{display:none!important}
  .lnrows.pf-one .fr.erow.lnr>.lr-cmp{display:contents}
  .lnrows.pf-one .fr.erow.lnr .lr-vs,.lnrows.pf-one .fr.erow.lnr .lr-d{min-height:0;justify-content:flex-end}
  .lnrows.pf-one .fr.erow.lnr .lr-k{display:inline}
  .lnrows.pf-one .fr.erow.lnr>.lr-last,.lnrows.pf-one .fr.erow.lnr>.lr-val{width:100%}
  .lnrows.pf-one .fr.erow.lnr>.lr-last>.lr-k,.lnrows.pf-one .fr.erow.lnr>.lr-val>.lr-k{display:block;text-align:right;padding-right:15px;margin-bottom:2px}
}
@container erows (max-width:439px){
  .facts.erows.lnrows.pf-one .fr.erow.lnr{grid-template-columns:var(--lr-ic) minmax(0,1fr) minmax(0,1fr) var(--lr-m)!important;
    grid-template-areas:"ic name name m" "ic last val m" "ic vs d m"!important}
  .lnrows.pf-one .pf-c>.pf-tx,.lnrows.pf-one .pf-c>.pf-sum{padding:0 10px}
  .lnrows.pf-one .pf-cap{padding-right:10px}
}
.facts.erows.lnrows.pf-one{--pf-cell:184px}
.facts.erows.lnrows.pf-one .fr.erow.lnr:not(.h){padding:5px 0!important}
.lnrows.pf-one .fr.erow.lnr>.e-name{padding-top:6px}
.lnrows.pf-one .fr.erow.lnr .lr-vs,.lnrows.pf-one .fr.erow.lnr .lr-d{align-self:start}
.lnrows.pf-one .lr-grip{opacity:.55}
.lnrows.pf-one .fr.erow.lnr:hover .lr-grip:not(.off),.lnrows.pf-one .lr-grip:focus-visible{opacity:1}
.facts.erows.lnrows.pf-one .fr.erow.lnr:not(.h){padding:5px 0 4px!important}
/* FEATURE v12.7 · a client department on the one page: the client table under the same toolbar and footer */
.pf-cl .pf-fa{align-items:center}
.pf-cl .pf-fa .cl-msg{margin:0;flex-basis:100%;text-align:right}
.pf-cl .pf-fa .cl-saved{flex-basis:100%;text-align:right;font-size:12px;color:var(--muted-foreground)}
.pf-cl .pf-fa .cl-saved:empty{display:none}
.pf-more{width:36px;height:36px;border-radius:var(--radius-pill)}
.pf-cl .pf-clt>.tscroll:first-child{margin-top:4px}
/* FEATURE v12.7 · drag a line to move it, put it inside another line or take it out (line-nest.js) */
.pf-one .lr-grip:not(.off){cursor:grab;touch-action:none}
body.ln-dragging,body.ln-dragging *{cursor:grabbing!important;user-select:none!important}
.pf-one .fr.erow.lnr.ln-trace{opacity:.35}
.facts.ln-ghost{background:var(--card);border-radius:12px;box-shadow:0 0 0 2px var(--ring),0 12px 32px oklch(0 0 0 / 38%);opacity:.97;transition:none;padding:0 12px}
.facts.ln-ghost>.fr.erow.lnr{border-bottom:0!important}
.ln-ghost .lr-grip{opacity:1}
.ln-ghost .ln-carry{margin-left:8px}
.ln-line{display:none;position:absolute;right:0;height:2px;border-radius:2px;background:var(--foreground);pointer-events:none;z-index:7}
.ln-line::before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--foreground)}
.pf-one .fr.erow.lnr.ln-into{border-radius:12px;box-shadow:inset 0 0 0 2px var(--ring);background:color-mix(in oklab,var(--ring) 7%,transparent)}
.pf-one .fr.erow.lnr.ln-bad{border-radius:12px;outline:2px dashed var(--destructive);outline-offset:-2px;background:color-mix(in oklab,var(--destructive) 6%,transparent)}
.ln-ring{display:none;position:fixed;z-index:65;border-radius:12px;pointer-events:none}
.ln-ring.into{box-shadow:inset 0 0 0 2px var(--ring)}
.ln-ring.bad{outline:2px dashed var(--destructive);outline-offset:-2px}
.facts.ln-ghost{opacity:.9}
.ln-tip{display:none;position:fixed;z-index:70;max-width:320px;padding:6px 12px;border-radius:var(--radius-pill);background:var(--popover,var(--card));color:var(--foreground);box-shadow:0 0 0 1px var(--border),0 8px 24px oklch(0 0 0 / 30%);font:500 12px/1.3 var(--font-sans);pointer-events:none;white-space:normal}
.ln-tip.bad{color:var(--destructive);box-shadow:0 0 0 1px color-mix(in oklab,var(--destructive) 55%,transparent),0 8px 24px oklch(0 0 0 / 30%)}
@media (prefers-reduced-motion: reduce){ .ln-ghost{box-shadow:0 0 0 2px var(--ring)} }
/* v12.7 · one line of description under the name (the full text in its tooltip), so a row stays 64 px in both stages */
@container erows (min-width:720px){ .lnrows.pf-one .fr.erow.lnr>.e-name>.ds85{white-space:nowrap;overflow:hidden;text-overflow:ellipsis} }
/* ---------- FIX v11.3 · Warehouse: Plan & Fact by month, Facility checks, cards and returns ---------- */
.sx-pft{position:sticky;top:var(--header-h);z-index:6;display:flex;justify-content:space-between;align-items:center;gap:8px 16px;flex-wrap:wrap;padding:10px 0;margin:-4px 0 8px;background:var(--background)}
.sx-pftl,.sx-pftr{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;min-width:0}
.sx-leg{font-size:12px}
.sx-pfp .dp-b{padding-top:8px}
.sx-pfs{overflow-x:auto;overscroll-behavior-x:contain}
.sx-pfg{table-layout:fixed;width:auto;min-width:100%;border-collapse:separate;border-spacing:0}
.sx-pfg col.sx-c0{width:248px} .sx-pfg col.sx-cm{width:108px}
.sx-pfg thead th{background:var(--card);font:500 12px/1.2 var(--font-sans);color:var(--muted-foreground);padding:8px 6px;white-space:nowrap}
.sx-pfg thead th.cur .sx-mh{color:var(--foreground);font-weight:600}
.sx-pfg th[scope="row"],.sx-pfg thead th:first-child,.sx-pfg .sx-sec th{position:sticky;left:0;z-index:2;background:var(--card)}
.sx-pfg .sx-sec th{position:static;z-index:auto}   /* a full-width section row can’t stick; its title does (FIX v11.3 · the title stayed out of view when the table opened on the current month) */
.sx-pfg .sx-sw{position:sticky;left:0;z-index:1;display:flex;align-items:baseline;gap:12px;width:max-content;max-width:min(100%,calc(100vw - 48px));background:var(--card);padding-right:12px}
.sx-pfg tbody td,.sx-pfg tbody th[scope="row"]{padding:6px;height:52px;vertical-align:middle;border-top:1px solid var(--border)}
.sx-pfg td.cur{background:color-mix(in oklch,var(--foreground) 4%,var(--card))}
.sx-pfg .sx-ci{width:100%;height:32px;border-radius:var(--radius-pill);padding:0 10px;text-align:right;font-variant-numeric:tabular-nums;font-size:13px}
.sx-pfg .sx-ci::placeholder{color:var(--muted-foreground);opacity:1}
.sx-pfg .sx-ci.bad{box-shadow:0 0 0 2px var(--destructive)}
.sx-pfg .sx-ci:focus-visible{outline:2px solid var(--ring);outline-offset:1px}
.sx-rl{display:block;font:500 14px/1.25 var(--font-sans);color:var(--foreground)}
.sx-ru{display:block;font:400 12px/1.3 var(--font-sans);color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sx-pfg .sx-sec th{padding:18px 0 6px;height:auto;border-top:0;text-align:left;white-space:nowrap}
.sx-st{display:inline-flex;align-items:center;gap:8px;background:none;border:0;color:var(--foreground);font:600 15px/1.2 var(--font-sans);cursor:pointer;padding:4px 0;border-radius:8px}
.sx-st:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.sx-st svg{transition:transform var(--dur-2) var(--ease-out)} .sx-st[aria-expanded="true"] svg{transform:rotate(90deg)}
.sx-sd{font-size:12px}
.sx-cv{text-align:right;color:var(--foreground);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:13px}
.sx-pv{color:var(--muted-foreground)}
.sx-pfg .sx-noi .sx-rl,.sx-pfg .sx-noi td{font-weight:600}
.sx-capm{display:block;margin-top:2px;font:500 11px/1 var(--font-sans);color:var(--warn);text-align:right}
.sx-pfmsg{margin:12px 0 0;font-size:13px;color:var(--muted-foreground)} .sx-pfmsg.neg-t{color:var(--neg)}
@media (prefers-reduced-motion: reduce){ .sx-st svg{transition:none} }
@media (max-width:600px){ .sx-pfg col.sx-c0{width:136px} .sx-pfg col.sx-cm{width:96px} .sx-sd{display:none} .sx-pft{top:var(--header-h)}
  .sx-pf .dpanel.sx-pfp{padding:16px 12px}   /* a phone shows one month beside the labels; the table scrolls sideways */
  .sx-pftr{max-width:100%} .sx-yrs{max-width:100%;overflow-x:auto;scrollbar-width:none} .sx-yrs::-webkit-scrollbar{display:none} .sx-yrs>button{flex:none} }
.sx-in.warn{box-shadow:0 0 0 1px color-mix(in oklch,var(--warn) 70%,transparent);border-radius:var(--radius-pill)}
.sx-units tr.sx-wr td{padding-top:0!important;border-top:0!important}
.sx-wt{margin:0 0 4px;font-size:12px;color:var(--warn)}
.sx-info{margin-top:10px}
.mcc-c.sx-warn{color:var(--warn)}
.sx-loss{margin-left:8px;align-self:center}
.badge.sx-loss{background:var(--neg-soft);color:var(--neg)}
.sx-np{font-size:11px;color:var(--muted-foreground)} .plad-r .plad-np{grid-column:span 2;justify-self:end;white-space:nowrap;font-size:12px}   /* FIX v11.3 §1.4 · instead of “% of plan” when the plan is 0 or below */
.sx-cause{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 0;font-size:13px;color:var(--foreground)}
.dpanel.sx-hl{box-shadow:0 0 0 2px var(--ring)}
.sx-cmp th[scope="row"]{font-weight:500}

/* FIX v12.10 · Change terms: two blocks (Royalty · Partner fee); errors under their field; the foot is one row, the warning above it */
#sheet.cl-terms .sh-b{padding-bottom:calc(var(--sh-fh,72px) + 16px)}
.cl-blk{display:flex;flex-direction:column;gap:14px;padding:16px;border:1px solid var(--border);border-radius:var(--radius-inner)}
.cl-blk+.cl-blk{margin-top:0}
.cl-bh{margin:0;font:600 14px/20px var(--font-sans);color:var(--foreground)}
.cl-blk .cl-seg2{align-self:flex-start}
.cl-ferr1{margin:6px 0 0;font-size:13px;line-height:18px;color:var(--neg)}
.cl-ferr1[hidden]{display:none}
#sheet.cl-terms .sh-f{flex-direction:column;align-items:stretch;gap:10px}
.cl-fnote{margin:0;font-size:13px;line-height:18px;color:var(--muted-foreground);display:flex;gap:8px;align-items:flex-start}
.cl-fnote[hidden]{display:none}
.cl-fnote.warn{color:var(--foreground);padding:10px 12px;border-radius:12px;background:var(--warn-soft)}
.cl-fnote.warn>span:first-child{color:var(--warn);flex:none;font-size:11px;line-height:18px}
#clTermsNote{color:var(--neg)}
.cl-fbtn{display:flex;justify-content:flex-end;gap:8px}
#sheet.cl-terms .cl-fbtn .btn{flex:0 0 auto}
/* FIX v12.10 §2.2 · a total with no data yet; the cells counter under each column */
table.cl-mx .cl-nv{color:var(--muted-foreground);font-weight:400}
.cl-zero{margin:0 0 16px}
table.cl-mx .cl-plt{white-space:normal}
table.cl-mx .cl-plt .cl-plv,table.cl-mx .cl-plt .fp-dv{display:block}
table.cl-mx .cl-plt .cl-pls{display:none}

/* FIX v12.11 · Plan & fact · the month's departments: the whole row is the way in; no Enter / View column (its room went to vs plan) */
.pf-deps .drow.pf-link{position:relative;cursor:pointer;border-radius:12px;transition:background-color var(--dur-1) var(--ease-out)}
.pf-deps .drow.pf-link:hover,.plan-grid .pf-deps .drow.dpt-r.pf-link:not(.h):hover{background:color-mix(in oklch,var(--foreground) 4%,transparent)}
.pf-deps .drow.pf-link:has(.drow-a:focus-visible),.plan-grid .pf-deps .drow.dpt-r.pf-link:has(.drow-a:focus-visible){outline:2px solid var(--ring);outline-offset:-2px;border-radius:12px}
.pf-deps .drow-a{color:inherit;text-decoration:none;border-radius:4px}
.pf-deps .drow-a:focus-visible{outline:none}
.pf-deps .drow-chev{position:absolute;right:6px;top:50%;transform:translateY(-50%);font:400 16px/1 var(--font-sans);color:var(--muted-foreground);opacity:0;pointer-events:none;transition:opacity var(--dur-1) var(--ease-out)}
.pf-deps .drow.pf-link:hover .drow-chev{opacity:1}
@media (prefers-reduced-motion:reduce){ .pf-deps .drow.pf-link,.pf-deps .drow-chev{transition:none} }
.pf-deps .drow-x{display:inline-flex;margin-left:8px;position:relative;z-index:1}
.pf-deps .drow-b{height:28px;padding:0 10px;font-size:12px}
.pf-deps .drow-stc,.pf-deps .dpt-st{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
/* Planning: Department · Responsible · Plan · Lines · vs fact · Status */
.plan-grid .pf-deps .drow.dpt-r{grid-template-columns:minmax(224px,1.6fr) minmax(116px,.9fr) minmax(96px,.8fr) 56px minmax(176px,1.4fr) 168px;padding:12px 8px}
@media (max-width:1100px){ .plan-grid .pf-deps .drow.dpt-r{grid-template-columns:minmax(190px,1.4fr) minmax(104px,.8fr) 64px minmax(170px,1.4fr) 168px} }
@media (max-width:760px){ .plan-grid .pf-deps .drow.dpt-r{grid-template-columns:minmax(0,1fr) 168px} }
/* Fact entry, Closed: · Department · Owner · Fact · Fields · vs plan · Status — every column stays at 1280 with the menu docked */
.pf-depf .drow{grid-template-columns:18px minmax(0,1.55fr) minmax(0,.65fr) minmax(0,.8fr) 52px minmax(0,1.35fr) 168px;gap:0 12px;padding:12px 10px}
@media (min-width:901px){ body.nav-docked:not(.collapsed) .pf-deps.pf-depf .drow.drow{grid-template-columns:18px minmax(0,1.55fr) minmax(0,.65fr) minmax(0,.8fr) 52px minmax(0,1.35fr) 168px}
  body.nav-docked:not(.collapsed) .pf-deps.pf-depf .drow.drow div.hide-md.row{display:flex}
  body.nav-docked:not(.collapsed) .pf-deps.pf-depf .drow.drow span.hide-md,body.nav-docked:not(.collapsed) .pf-deps.pf-depf .drow.drow div.hide-md:not(.row){display:block} }
@media (max-width:900px){ .pf-depf .drow{grid-template-columns:18px minmax(0,1fr) 168px} }
/* a phone (320–560): the status column takes only the room its content needs, nothing pushes the page sideways */
@media (max-width:560px){ .pf-depf .drow{grid-template-columns:18px minmax(0,1fr) auto} .plan-grid .pf-deps .drow.dpt-r{grid-template-columns:minmax(0,1fr) auto} .pf-deps .drow .drow-x{margin-left:4px} }
/* nothing wraps at 1280: names and captions end in “…”, the whole text in the tooltip of the owner or on the department page */
.pf-deps .dpt-n,.pf-deps .dpt-nt,.pf-depf .drow>div{min-width:0}
.pf-deps .dpt-s,.pf-depf .drow .eyebrow,.pf-deps .dn{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pf-depf .drow .vsf{flex-wrap:nowrap;min-width:0}.pf-depf .drow .vsf-p,.pf-depf .drow .vsf-l{white-space:nowrap}
/* OwnerCell: avatar 24 + name; Invited under the email; API with a key; No owner + Assign */
.oc{display:inline-flex;align-items:center;gap:8px;min-width:0;max-width:100%;vertical-align:middle}
.oc .av{flex:none}
.oc-n{font-size:14px;line-height:18px;color:var(--foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.oc-t{display:flex;flex-direction:column;min-width:0}
.oc-s{font-size:12px;line-height:16px;color:var(--muted-foreground)}
.av.oc-ini{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font:600 11px/1 var(--font-sans);color:var(--foreground);background:color-mix(in oklch,var(--oc-c,var(--muted)) 42%,var(--card));letter-spacing:0}
.av.oc-ini.inv{background:transparent;border:1px dashed var(--border-strong,var(--border));color:var(--muted-foreground)}
.av.oc-key{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--muted);color:var(--muted-foreground)}
.av.oc-none{display:inline-block;border-radius:50%;border:1px dashed var(--border)}
.oc.none .oc-n{color:var(--muted-foreground)}
.oc-as{background:none;border:0;padding:0;cursor:pointer;font-size:12px;position:relative;z-index:1}
.pf-own{display:inline-flex;vertical-align:middle;margin-right:10px}
.pf-own .oc-n{font-size:inherit}
.btn.pf-dmore{width:36px;min-width:36px;height:36px;padding:0;justify-content:center;color:var(--foreground)}

/* FEATURE v12.12 · the project's data on the server: where it stands (next to the bell), a conflict on a cell, a cell someone else
   changed (lit 2 s), the first visit's skeleton, the load error, Move this browser's data to your account */
.sync-st{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;margin-right:6px;border-radius:999px;font:500 12px/1 var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.sync-st[hidden]{display:none}
.sync-st::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.8}
.sync-st.ok{color:var(--muted-foreground)} .sync-st.busy{color:var(--foreground)} .sync-st.off,.sync-st.warn{color:var(--warn);background:var(--warn-soft)}
.sync-st.err{color:var(--neg);background:var(--neg-soft)} .sync-st .lnk{font:inherit;color:inherit;text-decoration:underline;background:none;border:0;padding:0;cursor:pointer}
@media (prefers-reduced-motion:no-preference){ .sync-st.busy::before{animation:syncPulse var(--dur-progress) var(--ease-io) infinite alternate} }
@keyframes syncPulse{from{opacity:.25}to{opacity:1}}
.sync-new{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 16px;padding:12px 16px;border-radius:16px;background:var(--warn-soft);color:var(--foreground);font-size:14px;line-height:20px}
.sync-new{background:color-mix(in oklch,var(--foreground) 6%,transparent)} .sync-new.warn{background:var(--warn-soft)}
.sync-lit{outline:2px solid color-mix(in oklch,var(--series-1) 70%,transparent)!important;outline-offset:-2px;background-color:color-mix(in oklch,var(--series-1) 14%,var(--input,transparent))!important;transition:background-color var(--dur-4) var(--ease-out)}
@media (prefers-reduced-motion:reduce){ .sync-lit{transition:none} }
.sync-skel .sk-h{display:flex;flex-direction:column;gap:10px;margin:8px 0 24px} .sync-skel .sk-h i:first-child{width:320px;height:32px} .sync-skel .sk-h i:last-child{width:480px;height:14px}
.sync-skel .sk-card{padding:24px;border-radius:26px;background:var(--card);margin-bottom:16px;display:flex;flex-direction:column;gap:14px}
.sync-skel .sk-r{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:16px}
.sync-skel i{display:block;height:16px;border-radius:8px;background:color-mix(in oklch,var(--foreground) 7%,transparent);max-width:100%}
@media (prefers-reduced-motion:no-preference){ .sync-skel i{animation:syncPulse var(--dur-pulse) var(--ease-io) infinite alternate} }
.sync-fail{max-width:520px;margin:80px auto;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}
.sync-fail h1{font:600 24px/1.25 var(--font-sans);margin:0} .sync-fail p{margin:0;color:var(--muted-foreground)}

/* ===================== FEATURE v11.4 · the AI assistant (app/ai-panel.js, app/ai-screens.js) =====================
   Restrained: the AI is one more reader of the numbers, so it wears the system's neutrals; the sparkle and the badge mark it.
   Every sentence carries its sources as chips; an assumption chip is amber (with the word). Motion: tokens only, reduced → none. */
#sheet.ai-panel{--sheet-w:460px}
/* §5 · the AI panel is not modal: no scrim, the page beside it stays usable (Esc or ✕ closes it) */
body:has(#sheet.ai-panel:not([hidden])) .scrim{display:none!important}
.ai-btn{gap:6px}
.ai-btn svg,.ai-spark svg,.ai-top svg,.ai-badge svg{color:var(--muted-foreground)}
.ai-btn:hover svg,.ai-spark:hover svg,.ai-top:hover svg{color:var(--foreground)}
.ai-btn.locked{opacity:.6}
.ai-spark{--bh:32px;color:var(--muted-foreground)}
.ai-top{margin-right:2px}
.mcc-hr .ai-spark,.kc-ht~* .ai-spark{margin-right:-4px}
.ai-badge{position:relative;background:var(--well);border:1px solid var(--border);color:var(--foreground);gap:5px;cursor:help}
.ai-badge:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.ai-badge[data-tip]:hover::after,.ai-badge[data-tip]:focus::after{content:attr(data-tip);position:absolute;left:0;top:calc(100% + 6px);z-index:90;width:max-content;max-width:260px;
  padding:8px 10px;border-radius:12px;background:var(--popover);border:1px solid var(--border-strong);color:var(--foreground);font:400 12px/1.4 var(--font-sans);white-space:normal;pointer-events:none}
.ai-conf{background:transparent;border:1px solid var(--border-strong);color:var(--foreground)}
.ai-conf.c-low{border-color:color-mix(in oklch,var(--warn) 55%,transparent)}
.ai-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 6px}
.ai-basis{margin:0 0 14px;color:var(--muted-foreground);font:var(--text-caption)}
.ai-pane{display:block}
.ai-ans{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.ai-s{animation:ai-in var(--dur-3) var(--ease-out) backwards;animation-delay:calc(var(--i,0) * var(--stagger))}
.ai-s p{margin:0;font:400 15px/1.55 var(--font-sans);color:var(--foreground);text-wrap:pretty;max-width:68ch}
@keyframes ai-in{from{opacity:0;transform:translateY(var(--rise,4px))}to{opacity:1;transform:none}}
.ai-src{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.ai-chip{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:2px 9px;border-radius:var(--radius-pill);background:var(--well);border:1px solid var(--border);
  font:400 12px/1.3 var(--font-sans);color:var(--muted-foreground);max-width:100%}
.ai-chip .ai-ck{color:var(--muted-foreground);font-weight:500}
.ai-chip .ai-cl{color:var(--foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:240px}
.ai-chip b{font-weight:600;color:var(--foreground);font-variant-numeric:tabular-nums;white-space:nowrap}
.ai-chip.k-assumption{border-color:color-mix(in oklch,var(--warn) 45%,transparent)}
.ai-chip.k-assumption .ai-ck{color:var(--warn)}
.ai-sec{margin-top:20px}
.ai-sec>h3{margin:0 0 10px;font:600 13px/1.3 var(--font-sans);color:var(--muted-foreground)}
.ai-load{display:flex;flex-direction:column;gap:10px;padding:4px 0}
.ai-lt{display:flex;align-items:center;gap:8px;margin:0 0 4px;color:var(--muted-foreground);font:var(--text-body)}
.ai-sk{height:12px;width:100%}.ai-sk.w2{width:82%}.ai-sk.w3{width:64%}
.ai-state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:14px 16px;border-radius:var(--radius-inner);background:var(--well)}
.ai-state p{margin:0;font:var(--text-body);color:var(--foreground);max-width:60ch}
.ai-sa{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ai-sug,.ai-draft{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border-radius:var(--radius-inner);background:var(--well);margin-top:10px}
.ai-sug ul{margin:0;padding-left:18px;color:var(--muted-foreground);font:var(--text-caption)}
.ai-draft p{margin:0;font:400 14px/1.5 var(--font-sans)}
.ai-why{color:var(--muted-foreground);font:var(--text-caption);max-width:44ch}
.ai-fl{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:8px}
.ai-fl li,.ai-cl0 li{display:flex;gap:8px;align-items:flex-start;font:var(--text-body)}
.ai-foot{gap:8px;flex-wrap:wrap}
.ai-note{margin:8px 0 0}
.ai-tbl{margin-top:14px}
.ai-tbl caption{caption-side:top}
.ai-low{display:block;color:var(--muted-foreground);font:var(--text-caption);font-weight:400}
.ai-asm{margin:14px 0 0}
.ai-home{display:flex;flex-direction:column;gap:16px}
.ai-home .cap{margin:0}
.ai-q{display:flex;flex-direction:column;gap:8px}
.ai-q .ai-qb{justify-content:flex-start;width:100%}
.ai-ask{display:flex;flex-direction:column;gap:8px}
.ai-ask .row{gap:8px;align-items:center}
.ai-ask .row .fctl{flex:1;min-width:0}
.ai-ask textarea.fctl{width:100%;resize:vertical;border-radius:var(--radius-inner);padding:10px 14px;height:auto}
.ai-ex{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.ai-ex .chip{height:30px;font-size:13px}
.ai-page .ai-tabs{margin:0 0 16px;width:max-content;max-width:100%}
.ai-runs{display:flex;flex-wrap:wrap;gap:8px}
.ai-qbar{gap:8px;flex-wrap:wrap;justify-content:flex-end}
.ai-fsel select{height:var(--control-h);min-width:180px}
.ai-ftab .ai-ft{min-width:280px;max-width:560px}
.ai-fh{display:flex;gap:8px;align-items:flex-start}
.ai-fh b{font-weight:500}
.ai-rs{margin:6px 0 0;padding-left:18px;color:var(--muted-foreground);font:var(--text-caption)}
.ai-fb{display:flex;gap:8px;align-items:flex-start;margin:8px 0 0;font:var(--text-caption);color:var(--muted-foreground)}
.ai-fb .ai-badge{flex:none}
.ai-acts{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.ai-fr.s-dismissed .ai-fh b,.ai-fr.s-applied .ai-fh b{color:var(--muted-foreground)}
.ai-dis{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.ai-dis .row{gap:8px}
.ai-data .ai-dact{gap:8px;flex-wrap:wrap}
.ai-file{position:relative;overflow:hidden}
.ai-file input{position:absolute;inset:0;opacity:0;cursor:pointer}
.ai-file:focus-within{box-shadow:0 0 0 3px var(--ring-focus)}
.ai-err{color:var(--neg);font:var(--text-body);margin:10px 0 6px}
.ai-ok{color:var(--pos)}
.ai-card0{display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.ai-card0 p{margin:0;color:var(--muted-foreground);font:var(--text-body)}
.ai-cl0{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:10px}
.ai-steps{display:flex;gap:8px;list-style:none;margin:0 0 16px;padding:0;flex-wrap:wrap}
.ai-steps li{display:flex;align-items:center;gap:8px;height:32px;padding:0 12px 0 4px;border-radius:var(--radius-pill);background:var(--muted);color:var(--muted-foreground);font:500 13px/1 var(--font-sans)}
.ai-steps li span{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--background);font-variant-numeric:tabular-nums}
.ai-steps li.on{color:var(--foreground)} .ai-steps li.on span{background:var(--primary);color:var(--primary-foreground)}
.ai-est-f{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:12px}
.ai-est-u input.fctl{width:100%;min-width:72px}
.ai-asm-l{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px}
.ai-bud{margin:0 0 10px;font:var(--text-body)}
.ai-budf{gap:12px;align-items:flex-end;margin-top:14px}
.ai-lv{display:flex;flex-direction:column;gap:8px}
/* row headers of the AI tables read as the first cell, not as a column heading; numbers to the right */
:is(.ai-page,#sheet.ai-panel) table.dtable tbody th[scope="row"]{font:500 14px/1.4 var(--font-sans);color:var(--foreground);vertical-align:middle;padding:12px;white-space:normal;border-bottom:1px solid var(--border)}
:is(.ai-page,#sheet.ai-panel) table.dtable td.num{text-align:right}
:is(.ai-page,#sheet.ai-panel) table.dtable tbody tr:last-child th{border-bottom:0}
.ai-tbl .ai-low{margin-top:2px}
@media (max-width:760px){
  #sheet.ai-panel{--sheet-w:100%}
  .ai-ftab .ai-ft{min-width:220px}
  .dpanel .dp-h:has(.ai-qbar){flex-direction:column;align-items:stretch;gap:10px}
  .dp-a:has(.ai-qbar){width:100%;min-width:0}
  .ai-qbar{justify-content:flex-start;width:100%;min-width:0}
  .ai-qbar .seg{flex:1 1 100%;min-width:0}
  .ai-fsel,.ai-fsel select{width:100%}
  .ai-chip .ai-cl{max-width:160px}
  /* FIX v12.16 · a long source chip wraps inside the finding instead of widening the column past the screen */
  .ai-ftab .ai-chip{border-radius:12px}
  .ai-ftab .ai-chip .ai-cl{white-space:normal;max-width:none;overflow:visible;overflow-wrap:anywhere}
  .ai-ask .row{flex-wrap:wrap} .ai-ask .row .btn{flex:1}
}
@media (prefers-reduced-motion: reduce){ .ai-s{animation:none} }
body.motion-reduced .ai-s,body.motion-off .ai-s{animation:none}
/* ===================== FIX v12.14 · AI assistant: always in the menu; the connect page; the status in Settings → AI =====================
   The menu badge is a word or a count in a quiet pill (no status colour: “Set up” is a task, not a warning). The connect page is a
   real sequence, so it is numbered: three steps on one rail, the command in a well beside its Copy button; what you get on the right. */
.mi .mbg{margin-left:auto;flex:none;display:inline-flex;align-items:center;justify-content:center;height:20px;min-width:20px;padding:1px 7px 0;box-sizing:border-box;border-radius:var(--radius-pill);background:var(--muted);color:var(--foreground);font:500 12px/1 var(--font-sans);font-variant-numeric:tabular-nums}
.mi .mbg.q{background:transparent;box-shadow:inset 0 0 0 1px var(--border-strong);color:var(--muted-foreground)}
.mi.active .mbg.q,.mi:hover .mbg.q{color:var(--foreground)}
.mi.active .mbg:not(.q),.mi:hover .mbg:not(.q){background:var(--background)}   /* the count stays a pill on the highlighted row */
.key .dot.mbd{background:var(--muted-foreground)}
.ai-cn{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--gap);align-items:start}
.ai-cs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.ai-cs>li{display:grid;grid-template-columns:28px minmax(0,1fr);column-gap:14px;position:relative;padding-bottom:24px}
.ai-cs>li:last-child{padding-bottom:0}
.ai-cs>li:not(:last-child)::before{content:'';position:absolute;left:13.5px;top:34px;bottom:6px;width:1px;background:var(--border)}
.ai-cs-n{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--well);box-shadow:inset 0 0 0 1px var(--border-strong);font:600 13px/1 var(--font-sans);font-variant-numeric:tabular-nums;color:var(--foreground)}
.ai-cs-b{min-width:0}
.ai-cs-b p{margin:3px 0 0;font:400 15px/1.6 var(--font-sans);color:var(--foreground);max-width:60ch;text-wrap:pretty}
.ai-cs-b a{color:var(--foreground);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px}
.ai-cs-b a:hover{text-decoration-color:currentColor}
.ai-cs-b a:focus-visible{outline:none;border-radius:4px;box-shadow:0 0 0 3px var(--ring-focus)}
.ai-cmd{display:inline-block;padding:0 8px;margin:0 1px;border-radius:8px;background:var(--well);box-shadow:inset 0 0 0 1px var(--border);font:500 14px/1.75 var(--font-sans);color:var(--foreground);white-space:nowrap;user-select:all}
.ai-cs-a{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:10px}
.ai-cs-a .btn svg{color:var(--muted-foreground)}
.ai-cs-a .cap{margin:0;max-width:52ch}
.ai-cs-key{display:flex;gap:10px;align-items:flex-start;margin:24px 0 0;padding:12px 14px;border-radius:var(--radius-inner);background:var(--well);color:var(--muted-foreground);font:var(--text-caption)}
.ai-cs-key svg{flex:none;margin-top:1px}
.ai-fx{list-style:none;margin:0;padding:0}
.ai-fx>li{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}
.ai-fx>li:first-child{padding-top:2px}
.ai-fx>li:last-child{border-bottom:0;padding-bottom:0}
.ai-fx-t{display:flex;flex-direction:column;gap:3px;min-width:0}
.ai-fx-t b{font:500 14px/1.35 var(--font-sans);color:var(--foreground)}
.ai-fx-t span{font:var(--text-caption);color:var(--muted-foreground)}
.ai-fx .badge{flex:none}
.badge.ai-free{background:var(--muted);color:var(--foreground)}
.ai-fx-n{margin:16px 0 0}
.ai-fx-n a{color:var(--foreground)}
@media (max-width:1100px){ .ai-cn{grid-template-columns:minmax(0,1fr)} }
@media (max-width:480px){ .ai-cmd{white-space:normal;overflow-wrap:anywhere} .ai-cs>li{column-gap:12px} }
/* FIX v12.14 · 390 px: the header keeps the bell in view (it ran 19 px past the edge on Gambling projects since the saved state joined the
   header in v12.12): “Saved” and “Saving…” show as their dot (the words stay for screen readers); the AI's top-bar button gives way to
   the menu item and the sparkles. Offline, “to check” and “Not saved · Retry” keep their words. */
@media (max-width:480px){
  .sync-st.ok,.sync-st.busy{font-size:0;gap:0;width:22px;padding:0;margin-right:2px;justify-content:center}
  .ai-top{display:none}
}
/* ===================== FIX v12.16 · when the model doesn't answer: the reason, and IBO's own check without AI words =====================
   “Checked by IBO” is an outline badge with a tick (not the AI badge); the reason is one plain sentence; the engine's numbers stay a table. */
.ai-ibo{gap:5px}
.ai-ibo svg{color:var(--pos)}
.ai-ibo-n{font:var(--text-caption);color:var(--muted-foreground)}
.ai-err-l{margin:0 0 10px;padding:10px 14px;border-radius:var(--radius-inner);background:var(--warn-soft);color:var(--foreground);font:400 14px/1.5 var(--font-sans);max-width:62ch}
.ai-fb-lead{margin:14px 0 4px;font:600 15px/1.45 var(--font-sans);color:var(--foreground);font-variant-numeric:tabular-nums}
.ai-fb-t{margin:0 0 4px;font:400 14px/1.5 var(--font-sans);color:var(--muted-foreground);font-variant-numeric:tabular-nums}
.ai-fb-a{margin-top:14px}
.ai-ibo-l{margin:6px 0 0;color:var(--muted-foreground)}
.ai-ibo-l::before{content:"✓ ";color:var(--pos)}
.ai-rests{font-variant-numeric:tabular-nums}
/* 390: the engine's table fits the panel without a sideways scroll (the effect column is the point of it) */
@media (max-width:480px){
  #sheet.ai-panel .ai-tbl table.dtable :is(thead th,td){padding-left:5px;padding-right:5px;font-size:13px}
  #sheet.ai-panel .ai-tbl table.dtable tbody th[scope="row"]{padding:10px 5px;font-size:13px}
}

/* ===================== FEATURE v12.17 · AI answers read in 5 seconds (app/ai-read.js) =====================
   Verdict → evidence → next step. The verdict is the loudest thing in the panel (22/600); the evidence is drawn (strip, bars, bridge),
   never a paragraph; colour comes only with a sign or a word. Footnotes replace the chips. Motion: the cell highlight and the working
   dot only, both off with reduced motion. */
#sheet.ai-panel.ai-wide{--sheet-w:min(900px,calc(100vw - 32px))}
#sheet.ai-wide .sh-b{container-type:inline-size}
.rd{display:flex;flex-direction:column;gap:18px}
.rd-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.rd-hdt{min-width:0;display:flex;flex-direction:column;gap:6px}
.rd-verdict{margin:0;font:600 22px/1.25 var(--font-sans);letter-spacing:-.015em;color:var(--foreground);text-wrap:balance}
.rd-sub{margin:0;font:400 14px/1.45 var(--font-sans);color:var(--muted-foreground);max-width:72ch;text-wrap:pretty}
.rd-ok{display:inline-grid;place-items:center;width:28px;height:28px;margin-right:10px;border-radius:50%;background:var(--pos-soft);color:var(--pos);vertical-align:-4px}
.rd .sg2{display:inline-flex;flex:none;background:var(--muted);border-radius:var(--radius-pill);padding:3px;height:32px}
.rd .sg2 button{border:0;background:transparent;padding:0 12px;border-radius:var(--radius-pill);font:500 12.5px/1 var(--font-sans);color:var(--muted-foreground);white-space:nowrap;cursor:pointer}
.rd .sg2 button[aria-pressed="true"]{background:var(--background);color:var(--foreground)}
.rd .sg2 button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.rd-sevs{display:flex;flex-direction:column;gap:10px}
.rd-sevs .sevbar{display:flex;height:10px;gap:3px}
.rd-sevs .sevbar span{display:block;height:100%;border-radius:var(--radius-pill);min-width:6px}
.rd-sevs .sevbar .neg,.rd-sevs .sevleg i.neg{background:var(--neg)} .rd-sevs .sevbar .warn,.rd-sevs .sevleg i.warn{background:var(--warn)} .rd-sevs .sevleg i.pos{background:var(--pos)}
.rd-sevs .sevleg{display:flex;flex-wrap:wrap;gap:16px;font:400 13px/1.3 var(--font-sans);color:var(--foreground)}
.rd-sevs .sevleg span{display:inline-flex;align-items:center;gap:6px}
.rd-sevs .sevleg i{width:8px;height:8px;border-radius:50%;display:inline-block}
.rd-sevs .sevleg b{font-weight:600;font-variant-numeric:tabular-nums}
.rd-grp{display:flex;flex-wrap:wrap;gap:8px}
.rd-gchip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border:0;border-radius:var(--radius-pill);background:var(--muted);font:500 13px/1 var(--font-sans);color:var(--foreground);cursor:pointer}
.rd-gchip svg{color:var(--muted-foreground)} .rd-gchip em{font-style:normal;color:var(--muted-foreground);font-variant-numeric:tabular-nums}
.rd-gchip.on{background:var(--foreground);color:var(--background)} .rd-gchip.on em,.rd-gchip.on svg{color:color-mix(in oklch,var(--background) 65%,transparent)}
.rd-gchip:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.rd-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0;font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground)}
.rd-meta>span{display:inline-flex;align-items:center;gap:6px}
.rd-meta .badge{font-size:12px}
.rd-conf{position:relative;height:22px;padding:1px 8px 0;border-radius:var(--radius-pill);border:1px solid var(--border-strong);color:var(--foreground);font-weight:500;cursor:help}
.rd-conf>i{display:inline-flex;gap:2px} .rd-conf>i b{width:4px;height:10px;border-radius:2px;background:var(--pos)} .rd-conf>i b.o{background:color-mix(in oklch,var(--foreground) 15%,transparent)}
.rd-conf.c-medium>i b:not(.o){background:var(--warn)} .rd-conf.c-low>i b:not(.o){background:var(--neg)}
.rd-conf:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.rd-ctip{display:none;position:absolute;left:0;top:calc(100% + 6px);z-index:90;width:300px;max-width:calc(100vw - 48px);padding:10px 12px;border-radius:12px;background:var(--popover);border:1px solid var(--border-strong);
  box-shadow:var(--shadow-pop);flex-direction:column;gap:4px;font:400 12px/1.45 var(--font-sans);color:var(--foreground);white-space:normal;cursor:auto}
.rd-ctip b{font-weight:600} .rd-ctip .rd-cs{color:var(--muted-foreground)}
.rd-conf:hover .rd-ctip,.rd-conf:focus .rd-ctip,.rd-conf:focus-within .rd-ctip{display:flex}
.rd-wk{color:var(--foreground)}
.rd-wk i{width:8px;height:8px;border-radius:50%;background:var(--muted-foreground);animation:kpi-dot var(--dur-crit-dot) var(--ease-out) infinite}
.rd-err{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px} .rd-err .ai-err-l{margin:0}
.rd-list{display:flex;flex-direction:column;gap:12px}
/* the finding card: the rail says the severity together with the badge (never the colour alone) */
.rd-card{display:grid;grid-template-columns:4px minmax(0,1fr);gap:0 16px;padding:18px 20px;border-radius:20px;background:color-mix(in oklch,var(--foreground) 4%,transparent)}
.rd-rail{border-radius:4px;background:var(--warn)} .rd-card.sev-high .rd-rail{background:var(--neg)}
.rd-ct{min-width:0}
.rd-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rd-top .badge{gap:4px}
.rd-of{margin-left:auto;font:400 12px/1 var(--font-sans);color:var(--muted-foreground);font-variant-numeric:tabular-nums}
.rd-ttl{margin:10px 0 0;font:600 16px/1.35 var(--font-sans);letter-spacing:-.005em;color:var(--foreground);text-wrap:balance}
.rd-path{margin:2px 0 0;font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground)}
.rd-body{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:20px;margin-top:14px;align-items:start}
.rd-wwn{display:grid;grid-template-columns:92px minmax(0,1fr);gap:8px 12px;margin:0;font:400 14px/1.45 var(--font-sans);color:var(--foreground)}
.rd-wwn dt{font-size:12px;color:var(--muted-foreground);padding-top:2px} .rd-wwn dd{margin:0;text-wrap:pretty}
.rd .rd-hn,.ai-s .rd-hn{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.rd-hn.neg{color:var(--neg)} .rd-hn.pos{color:var(--pos)} .rd-hn.warn{color:var(--warn)}
button.rd-fn,span.rd-fn{display:inline-grid;place-items:center;min-width:15px;height:15px;padding:0 3px;margin:0 0 0 2px;border:0;border-radius:var(--radius-pill);background:var(--muted);color:var(--muted-foreground);
  font:600 9.5px/1 var(--font-sans);vertical-align:4px;cursor:help;font-variant-numeric:tabular-nums;letter-spacing:0}
.rd-verdict button.rd-fn{vertical-align:8px}
button.rd-fn{position:relative} button.rd-fn::before{content:"";position:absolute;inset:-8px}   /* the hit area is larger than the mark */
button.rd-fn.on,button.rd-fn:hover{background:var(--foreground);color:var(--background)}
button.rd-fn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.rd-viz{display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:16px;background:var(--card)}
.rd-viz .rd-k{font:400 11px/1.3 var(--font-sans);color:var(--muted-foreground)}
.rd-viz .rd-pb{display:grid;grid-template-columns:52px minmax(0,1fr) 78px;align-items:center;gap:8px;font:400 12px/1.2 var(--font-sans);color:var(--muted-foreground)}
.rd-viz .rd-tr{position:relative;height:10px;border-radius:var(--radius-pill);background:color-mix(in oklch,var(--foreground) 7%,transparent)}
.rd-viz .rd-tr i{position:absolute;left:0;top:0;bottom:0;border-radius:var(--radius-pill)}
.rd-viz .rd-tr i.rd-pl{background:var(--chart-3)} .rd-viz .rd-tr i.neg{background:var(--neg)} .rd-viz .rd-tr i.pos{background:var(--pos)} .rd-viz .rd-tr i.warn{background:var(--warn)}
.rd-viz .rd-tr i.rd-off{left:auto;right:-3px;top:50%;bottom:auto;width:0;height:0;border-radius:0;transform:translateY(-50%);border-left:8px solid var(--foreground);border-top:7px solid transparent;border-bottom:7px solid transparent}
.rd-viz .rd-pb .rd-v{text-align:right;color:var(--foreground);font-variant-numeric:tabular-nums}
.rd-viz .rd-ratio{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;font:400 13px/1.2 var(--font-sans);color:var(--foreground)}
.rd-viz .rd-ratio b{font:600 24px/1.1 var(--font-sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.rd-viz .rd-ratio .cap{margin:0}
.rd-spk{display:flex;flex-direction:column;gap:4px;color:var(--muted-foreground)}
.rd-spk svg{display:block;width:100%;height:44px;overflow:visible}
.rd-spk circle{fill:currentColor} .rd-spk circle.cur.neg{fill:var(--neg)} .rd-spk circle.cur.warn{fill:var(--warn)}
.rd-acts{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px}
.rd-acts .cap{margin:0}
.rd-disf{margin-top:12px}
/* Medium as 56px rows that open into the card */
.rd-mlist{display:flex;flex-direction:column}
.rd-ml{margin:6px 0 0;padding:0 0 8px;font:400 12px/1.3 var(--font-sans);color:var(--muted-foreground)}
.rd-mrow{display:grid;grid-template-columns:4px 92px minmax(0,1fr) 170px 104px 32px;align-items:center;gap:12px;min-height:56px;padding:6px 0;border-top:1px solid var(--border);font:400 14px/1.35 var(--font-sans)}
.rd-mrow>.badge{justify-self:start}
.rd-nb{white-space:nowrap}
.rd-mrow .rd-rl{height:28px;border-radius:4px;background:var(--warn)} .rd-mrow.sev-high .rd-rl{background:var(--neg)}
.rd-mrow .fnm,.rd-ftab .rd-fc{min-width:0;display:flex;flex-direction:column;gap:2px}
.rd-mrow .fnm b,.rd-ftab .rd-fc b{font-weight:500;color:var(--foreground)}
.rd-mrow .fnm span,.rd-ftab .rd-fc span{font-size:12px;color:var(--muted-foreground);overflow:hidden;text-overflow:ellipsis}
.rd-mrow .rd-r{text-align:right;font-variant-numeric:tabular-nums}
.rd-mrow .neg,.rd-ftab td.neg{color:var(--neg)} .rd-mrow .pos,.rd-ftab td.pos{color:var(--pos)}
.rd-xp svg{transition:transform var(--dur-2) var(--ease-out)} .rd-xp[aria-expanded="true"] svg{transform:rotate(90deg)}
.rd-mlist .rd-card{margin:8px 0}
.rd button.lnk,.rd-pop button.lnk{background:none;border:0;padding:0;display:inline-flex;align-items:center;gap:4px;font:500 13px/1.3 var(--font-sans);white-space:nowrap}
.rd button.lnk:focus-visible,.rd-pop button.lnk:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus);border-radius:6px}
.rd-more{align-self:flex-start;margin-top:10px}
/* the footnotes close the answer; the popover is one element on top of everything */
.rd-srcs{margin:0;padding:12px 0 0;list-style:none;display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--border);font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground)}
.rd-srcs li{display:flex;gap:8px;align-items:baseline}
.rd-srcs .rd-fn{vertical-align:0;flex:none;cursor:default}
.rd-pop{position:fixed;z-index:97;width:300px;max-width:calc(100vw - 24px);display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:14px;background:var(--popover);border:1px solid var(--border-strong);
  box-shadow:var(--shadow-pop);font:400 12px/1.4 var(--font-sans);color:var(--foreground)}
.rd-pop[hidden]{display:none}
.rd-pop .rd-ph{font-size:11px;color:var(--muted-foreground)} .rd-pop .rd-pln{font-weight:500}
.rd-pop .rd-prow{display:flex;justify-content:space-between;gap:12px;font-variant-numeric:tabular-nums} .rd-pop .rd-ps{color:var(--muted-foreground)}
.rd-pop .lnk{align-self:flex-start;margin-top:2px}
/* Monthly summary: three tiles, the bridge, what to do */
.rd-kts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.rd-kt{min-height:0;gap:6px;padding:14px 16px}
.rd-kt .rd-kl{font:400 12px/1.3 var(--font-sans);color:var(--muted-foreground)}
.rd-kt .rd-kv{font:600 22px/1.15 var(--font-sans);letter-spacing:-.02em;color:var(--foreground);font-variant-numeric:tabular-nums}
.rd-kt .rd-kp{font:400 12px/1.3 var(--font-sans);color:var(--muted-foreground);font-variant-numeric:tabular-nums}
.rd-kd{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px} .rd-kd .badge{margin:0}
.rd-bridge{display:flex;flex-direction:column;gap:8px}
.rd-bh{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.rd-bh h5,.rd-todo h5{margin:0;font:600 15px/1.3 var(--font-sans);color:var(--foreground)} .rd-bh .cap{margin:0}
svg.rd-wf{display:block;overflow:visible}
svg.rd-wf text{font-family:var(--font-sans);font-variant-numeric:tabular-nums}
svg.rd-wf rect.tot{fill:var(--chart-3)} svg.rd-wf rect.neg{fill:var(--neg)} svg.rd-wf rect.pos{fill:var(--pos)}
svg.rd-wf path.brk{fill:none;stroke:var(--card);stroke-width:3}
svg.rd-wf text.bv{font-size:12px;font-weight:600;fill:var(--foreground)} svg.rd-wf text.bv.neg{fill:var(--neg)} svg.rd-wf text.bv.pos{fill:var(--pos)}
svg.rd-wf text.bl{font-size:11.5px;fill:var(--muted-foreground)} svg.rd-wf text.sc{font-size:11px;fill:var(--muted-foreground)}
svg.rd-wf line.cn{stroke:color-mix(in oklch,var(--foreground) 30%,transparent);stroke-dasharray:3 3} svg.rd-wf line.z{stroke:var(--border-strong)}
.rd-btbl summary{width:max-content;cursor:pointer;font:500 13px/1.3 var(--font-sans);color:var(--foreground);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--border-strong)}
.rd-btbl summary:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus);border-radius:6px}
.rd-btbl .tscroll{margin-top:8px}
.rd-todo{display:flex;flex-direction:column;gap:10px}
.rd-todo ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.rd-todo li{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:12px;align-items:start;font:400 14px/1.45 var(--font-sans);color:var(--foreground)}
.rd-todo .rd-n{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--muted);font:600 12px/1 var(--font-sans);font-variant-numeric:tabular-nums}
/* Needs review */
.rd-qh{display:flex;flex-direction:column;gap:12px;margin:0 0 8px}
.rd-qh .rd-meta svg{flex:none}
.rd-qbar{gap:8px;flex-wrap:wrap;align-items:center}
.rd-qbar .seg{margin-right:auto}
.rd-ftab td,.rd-ftab th{vertical-align:middle}
.rd-ftab .cbx{width:36px;padding-right:0} .rd-ftab .cbx input{width:16px;height:16px;margin:0;cursor:pointer}
.rd-ftab td.fnm{cursor:pointer;min-width:240px;max-width:440px}
.rd-ftab .rd-mt{min-width:170px} .rd-ftab td.rd-mo,.rd-ftab td.num{white-space:nowrap} .rd-ftab td.act .ai-acts{flex-wrap:nowrap;align-items:center} .rd-ftab .rd-mt .cap{display:block;margin:6px 0 0;white-space:nowrap}
.rd-ftab tr.done>td{opacity:.5} .rd-ftab tr.done>td.act{opacity:1}
.rd-ftab tr.rd-xrow>td,.rd-ftab tr.rd-dis>td{padding:4px 0 12px;border-top:0}
.rd-sort{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;white-space:nowrap}
.rd-sort:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus);border-radius:6px}
.ai-thr-f{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.ai-thr-a{gap:8px;margin-top:14px}
/* Open line in Plan & fact: the cell the finding is about lights up for 2 s */
.rd-lit{box-shadow:0 0 0 3px color-mix(in oklch,var(--warn) 60%,transparent)!important}
@container (max-width:660px){
  .rd-body{grid-template-columns:minmax(0,1fr)}
  .rd-mrow{grid-template-columns:4px 84px minmax(0,1fr) 96px 32px} .rd-mrow .meter{display:none}
  .rd-kts{grid-template-columns:minmax(0,1fr)}
  .rd-hd{flex-direction:column}
}
@media (max-width:760px){ .rd-wwn{grid-template-columns:minmax(0,1fr)} .rd-wwn dt{padding-top:0} }
@media (prefers-reduced-motion:reduce){ .rd-wk i{animation:none} .rd-lit{transition:none} .rd-xp svg{transition:none} }
:is(body.motion-reduced,body.motion-off) :is(.rd-wk i){animation:none} :is(body.motion-reduced,body.motion-off) :is(.rd-lit,.rd-xp svg){transition:none}

/* ---------- FEATURE v11.5 A1 · a change the server refused: a plaque of its own, on the screen of the change (never a toast that travels) ---------- */
.sync-held{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:41;width:min(420px,calc(100vw - 32px));box-sizing:border-box;
  display:grid;grid-template-columns:8px minmax(0,1fr) 32px;column-gap:12px;row-gap:10px;align-items:start;padding:12px 8px 12px 16px;
  background:var(--card);color:var(--foreground);border:1px solid var(--border-strong);border-radius:var(--radius-inner);box-shadow:var(--shadow-pop);font:400 14px/20px var(--font-sans)}
.sync-held[hidden]{display:none}
.sync-held .sh-ic{width:8px;height:8px;border-radius:2px;background:var(--neg);margin-top:6px}
.sync-held .sh-t{display:grid;gap:2px;min-width:0;padding-top:0;overflow-wrap:anywhere;text-wrap:pretty}
.sync-held .sh-t b{font-weight:500} .sync-held .sh-t span{color:var(--muted-foreground)}
.sync-held .sh-x{--bh:32px;width:32px;height:32px;margin-top:-6px;color:var(--muted-foreground)} .sync-held .sh-x:hover{background:var(--accent);color:var(--foreground)}
.sync-held .sh-a{grid-column:2 / 4;display:flex;flex-wrap:wrap;gap:8px}
body.sheet-open .sync-held{right:calc(var(--sheet-w) + 16px)} body.has-dock .sync-held{right:404px}
@media (max-width:1180px){ body.has-dock .sync-held{right:16px} } @media (max-width:760px){ body.sheet-open .sync-held{right:16px;bottom:96px} }
body:has(#syncHeld:not([hidden])) .toast{bottom:calc(24px + var(--sh-h,120px) + env(safe-area-inset-bottom,0px))}
@media (prefers-reduced-motion:no-preference){ .sync-held:not([hidden]){animation:shIn var(--dur-2) var(--ease-out)} }
@keyframes shIn{from{opacity:0;transform:translateY(8px)}}

/* ---------- FEATURE v11.5 A2 · a wrong address: what is near it and the way back ---------- */
.nf{display:grid;justify-items:center;padding:40px 0 64px}
.nf-c{width:min(640px,100%);box-sizing:border-box;background:var(--card);border-radius:var(--radius-card);padding:32px;display:grid;gap:16px}
.nf-ic{width:40px;height:40px;border-radius:var(--radius-pill);background:var(--muted);display:grid;place-items:center;color:var(--muted-foreground)}
.nf-t{font:600 24px/32px var(--font-sans);margin:0;text-wrap:balance;letter-spacing:-.01em}
.nf-p{margin:0;color:var(--muted-foreground);font:400 14px/20px var(--font-sans);text-wrap:pretty}
.nf-addr{color:var(--foreground);overflow-wrap:anywhere}
.nf-l{list-style:none;margin:0;padding:0;display:grid}
.nf-l li+li{border-top:1px solid var(--border)}
.nf-a{display:flex;align-items:center;gap:12px;min-height:56px;padding:0 12px;margin:0 -12px;border-radius:var(--radius-inner);color:var(--foreground);text-decoration:none}
.nf-a:hover{background:var(--accent)} .nf-a:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}
.nf-a>svg{flex:none;color:var(--muted-foreground)}
.nf-n{font:500 14px/20px var(--font-sans)} .nf-u{margin-left:auto;color:var(--muted-foreground);font:400 13px/20px var(--font-sans);overflow-wrap:anywhere;text-align:right}
.nf-b{padding-top:8px}

/* ---------- FEATURE v11.5 A5 · FIX v12.18 (v12.25) · the month in one line: Result │ mini bridge · Main reason │ actions (artboard MonthHeadline) ----------
   The zones follow the card's own width (container mhl), not the window: from 1100 px three zones in one row, the main reason's line one
   never wraps (the chip gives way: its department first, then its name, the whole in the tooltip); under 1100 px two rows — the result and
   the actions on top, the main reason across the card below. month-headline.js measures the middle zone and sets .mb-on (the mini bridge,
   176 × 44, left of the text) only where line one still fits whole beside it, and .chip-up (the line's chip beside “Main reason”, line one
   the amounts) where the chip and the amounts don't fit one line: a dashboard is at most 1216 px wide. */
.mhl{container:mhl/inline-size;margin:0}
.mh{display:grid;grid-template-columns:auto 1px minmax(0,1fr) auto;align-items:center;gap:0 24px;box-sizing:border-box;min-height:88px;padding:16px 16px 16px 22px;background:var(--card);border-radius:22px;font-variant-numeric:tabular-nums}
.mh-vr{width:1px;align-self:stretch;margin:4px 0;background:var(--border)}
.mh-rs{display:flex;flex-direction:column;gap:4px;min-width:0}
.mh-k{display:flex;align-items:center;gap:6px;min-width:0;white-space:nowrap;font:400 12px/16px var(--font-sans);color:var(--muted-foreground)}
.mh-dot{flex:none;width:6px;height:6px;border-radius:50%;background:var(--muted-foreground)}
.mh-dot.pos{background:var(--pos)} .mh-dot.neg{background:var(--neg)} .mh-dot.warn{background:var(--warn)}
.mh-vl{display:flex;align-items:center;gap:10px;white-space:nowrap}
.mh-v{font:600 26px/1.1 var(--font-sans);letter-spacing:-.02em;color:var(--foreground)} .mh-v.muted{color:var(--muted-foreground)}
.mh-pl{font:400 12px/16px var(--font-sans);color:var(--muted-foreground);white-space:nowrap}
.mh-l1 .mh-pl{font-size:13px}
.mh-why{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:center;min-width:0}
.mh.mb-on .mh-why{grid-template-columns:auto minmax(0,1fr)}
.mh-txt{display:flex;flex-direction:column;gap:4px;min-width:0}
.mh-l1{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;min-width:0;font:400 15px/1.35 var(--font-sans);color:var(--foreground)}
/* the result and no-plan states: label · chip + amounts · line two in one wrapping row box, so the chip can go up beside the label (.chip-up) */
.mhl:is([data-state="result"],[data-state="noplan"]) .mh-txt{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px 8px}
.mhl:is([data-state="result"],[data-state="noplan"]) .mh-txt>.mh-k{flex:0 0 100%}
.mhl:is([data-state="result"],[data-state="noplan"]) .mh-l1{display:contents}
.mhl:is([data-state="result"],[data-state="noplan"]) .mh-l1>.mh-chip{flex:0 1 auto}
.mhl:is([data-state="result"],[data-state="noplan"]) .mh-l1>.mh-am{flex:0 0 auto;font:400 15px/1.35 var(--font-sans);color:var(--foreground)}
.mhl:is([data-state="result"],[data-state="noplan"]) .mh-txt>.mh-l2{flex:0 0 100%}
.mh.chip-up .mh-txt>.mh-k{flex:0 0 auto} .mh.chip-up .mh-l1>.mh-am{flex:0 0 100%}
.mh-l2{min-width:0;font:400 12.5px/1.4 var(--font-sans);color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mh-chip{flex:0 1 auto;min-width:56px;display:inline-flex;align-items:center;gap:6px;height:26px;max-width:100%;box-sizing:border-box;padding:0 10px 0 4px;border-radius:var(--radius-pill);background:var(--muted);font:500 13px/1 var(--font-sans);color:var(--foreground);white-space:nowrap}
.mh-cn{min-width:0;overflow:hidden;text-overflow:ellipsis}
.mh-av{flex:none;display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:color-mix(in oklch,var(--foreground) 12%,transparent);font:600 11px/1 var(--font-sans)}
.mh-cs{color:var(--muted-foreground);font-weight:400}
.mh-am{flex:none;white-space:nowrap}
.mh-more{font:500 12px/1 var(--font-sans);color:var(--muted-foreground)}
.mh-n{font-weight:600;white-space:nowrap} .mh-n.neg{color:var(--neg)} .mh-n.pos{color:var(--pos)}
.mh-chk{display:inline-flex;align-items:center;gap:5px;height:24px;margin:-4px 0 -4px 4px;padding:0 8px;border:0;border-radius:var(--radius-pill);background:transparent;font:400 12px/1 var(--font-sans);color:var(--warn);white-space:nowrap;cursor:pointer}
.mh-chk svg{flex:none} .mh-chk:hover{background:var(--warn-soft)} .mh-chk:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.mh-mb{display:none;flex-direction:column;gap:2px;align-items:flex-start} .mh.mb-on .mh-mb{display:flex}
.mh-mb svg{display:block}
.mh-cap{max-width:176px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:400 11px/14px var(--font-sans);color:var(--muted-foreground)}
.mh-act{display:flex;align-items:center;gap:8px;white-space:nowrap}
.mh-act .btn{max-width:260px} .mh-act .btn svg{width:14px;height:14px}
.mh-x{--bh:32px;color:var(--muted-foreground)} .mh-x:hover{color:var(--foreground)}
@container mhl (width < 1100px){ .mh{grid-template-columns:minmax(0,1fr) auto;gap:14px 16px} .mh-vr,.mh.mb-on .mh-mb{display:none} .mh.mb-on .mh-why{grid-template-columns:minmax(0,1fr)} .mh-why{grid-column:1/-1;grid-row:2} .mh-act{grid-column:2;grid-row:1;align-self:start} .mhl[data-state="entry"] .mh-l1{flex-wrap:wrap} }
@container mhl (width < 520px){ .mh{grid-template-columns:minmax(0,1fr);padding:16px} .mh-act{grid-column:1/-1;grid-row:3;flex-wrap:wrap} .mh-act .mh-x{margin-left:auto}
  .mh-k,.mh-pl,.mh-l2,.mh-am,.mh-chk,.mh-act{white-space:normal} .mh-k,.mh-vl{flex-wrap:wrap} .mh-l2{overflow:visible} .mh-act .btn{max-width:100%;height:auto;min-height:32px} .mh-chip{max-width:100%}
  .mhl:is([data-state="result"],[data-state="noplan"]) .mh-l1>.mh-am{flex:1 1 100%;min-width:0} .mhl:is([data-state="result"],[data-state="noplan"]) .mh-txt>.mh-k{flex:1 1 100%} }   /* a phone (reflow at 320 px): the words wrap, nothing sticks out */
.mhl-off{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0;padding:8px 8px 8px 16px;border:1px dashed var(--border-strong);border-radius:var(--radius-inner);font:400 13px/20px var(--font-sans);color:var(--muted-foreground)}
body.motion-reduced .sync-held,body.motion-off .sync-held{animation:none}
.hbar .hb-x button.lnk{font:inherit;line-height:inherit;padding:0;background:none;border:0;cursor:pointer}   /* v11.5 A4 · Add MAU in the funnel: one line, as the text it replaces */

/* ---------- FEATURE v11.5 B1 · Start with · the sample project being built · the Sample badge · Clear sample data ---------- */
.setup-type .btp-go{flex-wrap:wrap;row-gap:8px}
.btp-start{display:flex;align-items:center;gap:10px;flex-wrap:wrap} .btp-stl{font:500 14px/20px var(--font-sans);color:var(--muted-foreground)}
.btp-go .btp-sh{order:1;flex:1 1 220px;min-width:0;margin:0;text-align:right;font-size:13px;line-height:18px;text-wrap:balance}
.btp-go .btp-start{order:2} .btp-go [data-act="btp-go"]{order:3} .btp-go .sp{flex:0 0 0}
@media (max-width:1100px){ .btp-go .btp-sh{flex-basis:100%;order:4} }
.st-seg{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;border-radius:var(--radius-pill);background:var(--muted);width:max-content;max-width:100%}
.st-seg [role="radio"]{height:32px;padding:0 14px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--muted-foreground);font:500 14px/1 var(--font-sans);cursor:pointer}
.st-seg [role="radio"][aria-checked="true"]{background:var(--background);color:var(--foreground);box-shadow:var(--shadow-xs,0 1px 2px rgb(0 0 0/.2))}
.st-seg [role="radio"]:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.btp-sh{margin:0;color:var(--muted-foreground)}
.wel-smp .lnk{font-weight:500}
.tchip.smp{background:color-mix(in oklch,var(--warn) 18%,transparent);color:var(--warn)}
.smp-page{padding-top:clamp(32px,10vh,96px)}
.smp-c{background:var(--card);border-radius:var(--radius-card);padding:32px;display:grid;gap:12px;max-width:560px}
.smp-c h1{margin:0;font:600 24px/32px var(--font-sans);text-wrap:balance} .smp-c .sub{margin:0;color:var(--muted-foreground)}
.smp-badge{justify-self:start;font:500 12px/1 var(--font-sans);padding:5px 10px 4px;border-radius:var(--radius-pill);background:color-mix(in oklch,var(--warn) 18%,transparent);color:var(--warn)}
.smp-steps{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:10px}
.smp-steps li{display:flex;align-items:center;gap:10px;color:var(--muted-foreground)} .smp-steps li.done,.smp-steps li.now{color:var(--foreground)}
.smp-dot{width:10px;height:10px;border-radius:50%;border:1.5px solid currentColor;flex:none} .smp-steps li.done .smp-dot{background:var(--pos);border-color:var(--pos)}
@media (prefers-reduced-motion:no-preference){ .smp-steps li.now .smp-dot{animation:kpi-dot var(--dur-crit-dot) var(--ease-io) infinite} }
.smp-act{display:flex;gap:8px;flex-wrap:wrap}
.smp-clr .dp-h{display:flex;align-items:center;gap:8px}

/* ---------- FEATURE v11.5 B2 · First steps ---------- */
.fst{background:var(--card);border-radius:var(--radius-inner);padding:8px 8px 8px 12px}
.fst-h{display:flex;align-items:center;gap:8px}
.fst-tg{flex:1;min-width:0;display:flex;align-items:center;gap:12px;min-height:40px;padding:0 8px;border:0;background:transparent;color:var(--foreground);cursor:pointer;border-radius:var(--radius-inner);text-align:left;font:inherit}
.fst-tg:hover{background:var(--accent)} .fst-tg:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}
.fst-tg>svg{margin-left:auto;color:var(--muted-foreground);transition:transform var(--dur-2) var(--ease-out)} .fst.open .fst-tg>svg{transform:rotate(180deg)}
.fst-t{font:600 15px/20px var(--font-sans)} .fst-n{font:400 13px/20px var(--font-sans);color:var(--muted-foreground);font-variant-numeric:tabular-nums;white-space:nowrap}
.fst-bar{flex:0 1 160px;height:6px;border-radius:999px;background:var(--muted);overflow:hidden} .fst-bar i{display:block;height:100%;background:var(--pos);border-radius:inherit}
.fst-x{color:var(--muted-foreground)} .fst-x:hover{color:var(--foreground);background:var(--accent)}
.fst-l{list-style:none;margin:4px 0 4px;padding:0 4px;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:4px 12px}
.fst-l li{display:flex;align-items:flex-start;gap:10px;padding:8px;border-radius:var(--radius-inner)}
.fst-c{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--border-strong);display:grid;place-items:center;flex:none;margin-top:1px;color:var(--background)}
.fst-l li.done .fst-c{background:var(--pos);border-color:var(--pos)}
.fst-a{display:grid;gap:2px;color:var(--foreground);text-decoration:none;min-width:0} .fst-a:hover .fst-it{text-decoration:underline}
.fst-a:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:6px}
.fst-it{font:500 14px/20px var(--font-sans)} .fst-w{font:400 13px/18px var(--font-sans);color:var(--muted-foreground)}
.fst-l li.done .fst-it{color:var(--muted-foreground);text-decoration:line-through;text-decoration-color:color-mix(in oklch,var(--muted-foreground) 60%,transparent)}

/* ---------- FEATURE v11.5 B3 · Screen tours: a tip next to what it explains, no backdrop ---------- */
.tour{position:fixed;z-index:42;box-sizing:border-box;padding:14px 14px 12px 16px;display:grid;gap:6px;background:var(--popover,var(--card));color:var(--foreground);border:1px solid var(--border-strong);border-radius:var(--radius-inner);box-shadow:var(--shadow-pop)}
.tour:focus{outline:none} .tour-n{font:500 12px/16px var(--font-sans);color:var(--muted-foreground)} .tour-t{font:600 15px/20px var(--font-sans)}
.tour-x{margin:0;font:400 14px/20px var(--font-sans);color:var(--muted-foreground);text-wrap:pretty}
.tour-a{display:flex;align-items:center;gap:8px;margin-top:6px} .tour-a .sp{flex:1}
.tour-on{outline:2px solid color-mix(in oklch,var(--ring) 80%,transparent);outline-offset:4px;border-radius:var(--radius-inner)}
@media (prefers-reduced-motion:no-preference){ .tour{animation:shIn var(--dur-2) var(--ease-out)} }
body.motion-reduced .tour,body.motion-off .tour{animation:none}

/* ======================================================= FEATURE v11.5 C1 · Import from a spreadsheet */
.imp-fmt{font:600 14px/1.45 var(--font-sans);font-variant-numeric:tabular-nums}   /* a spelling of a month, not a counter (ui_lint skips code) */
.imp-page .dpanel+.dpanel{margin-top:16px}
.imp-page .dpanel+.imp-foot{margin-top:16px}
.imp-page>.dpanel+.dpanel,.imp-page>.dpanel+.imp-foot{margin-top:0}   /* the page's own gap (16) between its panels: not 32 (e2e_fix78 §6.2) */
.fctl.sm{height:32px;font-size:13px;padding:0 12px} select.fctl.sm{padding-right:32px;background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%}
.imp-drop{min-height:112px}
.imp-err{display:flex;gap:8px;align-items:baseline;margin:12px 0 0;font:400 14px/20px var(--font-sans);color:var(--foreground)}
.imp-tb{flex-wrap:wrap;gap:8px}
.imp-ul{margin:0;padding:0 0 0 18px;display:grid;gap:6px;font:400 14px/20px var(--font-sans);color:var(--muted-foreground);max-width:72ch} .imp-ul b{color:var(--foreground);font-weight:500}
.imp-fr{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px}
.imp-fn{font:600 15px/20px var(--font-sans);overflow-wrap:anywhere}
.imp-fa{flex-wrap:wrap;gap:8px 12px;align-items:center}
.imp-sh{display:inline-flex;align-items:center;gap:8px} .imp-sh .fctl{width:auto;min-width:140px}
.imp-ign{margin-top:12px;font:400 13px/18px var(--font-sans);color:var(--muted-foreground)} .imp-ign summary{cursor:pointer;color:var(--foreground);width:max-content}
.imp-ign ul{margin:8px 0 0;padding-left:18px;display:grid;gap:4px}
.imp-ml{list-style:none;margin:0;padding:0;display:grid}
.imp-m{display:grid;grid-template-columns:minmax(120px,160px) 88px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:52px;padding:6px 0;border-top:1px solid var(--border)}
.imp-m:first-child{border-top:0}
.imp-mn{font:500 14px/20px var(--font-sans)} .imp-mv{font:400 13px/18px var(--font-sans);color:var(--muted-foreground);font-variant-numeric:tabular-nums}
.imp-ms{font:400 13px/18px var(--font-sans);color:var(--muted-foreground)} .imp-ms.has{color:var(--warn)} .imp-m.off .imp-mn{color:var(--muted-foreground)}
.imp-tbl td{vertical-align:top;padding-top:14px;padding-bottom:14px}
.imp-src b{display:block;font:500 14px/20px var(--font-sans);overflow-wrap:anywhere}
.imp-ref{display:block;font:400 12px/16px var(--font-sans);color:var(--muted-foreground)}
.imp-to .fctl{width:100%;min-width:220px;max-width:340px}
.imp-how{background:var(--muted);color:var(--foreground)} .imp-how.h-similar,.imp-how.h-ai{background:var(--warn-soft);color:var(--warn)}
.imp-why{font:400 13px/18px var(--font-sans);color:var(--muted-foreground)}
.imp-un .imp-src b{color:var(--foreground)}
.imp-iss{list-style:none;margin:0;padding:0;display:grid;gap:4px;font:400 13px/18px var(--font-sans);color:var(--muted-foreground)}
.imp-iss .c{display:inline-block;min-width:38px;font-weight:500;color:var(--neg);font-variant-numeric:tabular-nums}
.imp-ainote{margin:0 0 12px}
.imp-foot{position:sticky;bottom:0;z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:14px 20px;border-radius:var(--radius-card);background:var(--card);border:1px solid var(--border-strong);box-shadow:var(--shadow-pop)}
.imp-foot .sp{flex:1}
.imp-sum{font:500 14px/20px var(--font-sans);color:var(--foreground)}
.imp-done .row{margin-top:16px;gap:8px;flex-wrap:wrap}
.imp-done .cap{max-width:72ch}
/* ======================================================= FEATURE v11.5 C2 · Data sources */
.src-page .dpanel+.dpanel{margin-top:16px}
.src-page .ph-row .row{gap:8px;flex-wrap:wrap;align-self:flex-end}
.src-n{display:block;font:500 14px/20px var(--font-sans)}
.src-w,.src-e{display:block;margin-top:2px;max-width:46ch;overflow-wrap:anywhere}
.src-st.muted{background:var(--muted);color:var(--muted-foreground)}
.src-tbl td{vertical-align:top;padding-top:14px;padding-bottom:14px}
.src-a{white-space:nowrap} .src-a .btn+.btn{margin-left:4px}
.src-help details{border-top:1px solid var(--border);padding:12px 0} .src-help details:first-of-type{border-top:0;padding-top:0}
.src-help summary{cursor:pointer;font:500 14px/20px var(--font-sans);width:max-content}
.src-help .cap{max-width:80ch;margin:8px 0}
.src-help code,.src-page p code{font-size:12.5px}
.src-form{display:grid;gap:18px}
.src-f{display:grid;gap:6px;justify-items:start} .src-f .fctl{width:100%}
.src-l{font:500 14px/20px var(--font-sans)}
.src-kinds{border:0;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}
.src-kinds legend{margin-bottom:6px;padding:0}
.src-k{display:grid;gap:4px;text-align:left;padding:14px 16px;border-radius:var(--radius-inner);border:1px solid var(--border-strong);background:transparent;color:var(--foreground);cursor:pointer;font:inherit}
.src-k b{font:500 14px/20px var(--font-sans)} .src-k.on{border-color:var(--ring);background:var(--well)}
.src-k:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.src-g2{display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:12px}
.src-ta{font:400 12.5px/1.45 var(--font-sans);min-height:96px}
.src-btns{gap:8px;flex-wrap:wrap}
.src-dz .row{gap:8px;flex-wrap:wrap;margin-top:12px}
.src-log{list-style:none;margin:0;padding:0;display:grid}
.src-log>li{display:grid;gap:6px;padding:12px 0;border-top:1px solid var(--border)} .src-log>li:first-child{border-top:0;padding-top:0}
.src-lr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.src-log details summary{cursor:pointer;font:400 13px/18px var(--font-sans);color:var(--muted-foreground);width:max-content}
.src-log details ul{margin:6px 0 0;padding-left:18px;display:grid;gap:4px;font:400 13px/18px var(--font-sans);color:var(--muted-foreground)}
.src-tok .cdlg-r .v{display:flex;align-items:center;gap:8px;min-width:0} .src-tok code{overflow-wrap:anywhere;font-size:12.5px}
.src-pend{margin-bottom:16px} .src-pl{list-style:none;margin:0;padding:0;display:grid}
.src-pl li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;min-height:48px;border-top:1px solid var(--border)} .src-pl li:first-child{border-top:0}
.src-pl .sp{flex:1}


/* ======================================================= FEATURE v11.5 D · PDF, view-only links, reports by email */
.btn.rp-pdf svg,.btn[data-act="share-open"] svg{margin-right:6px;flex:none}
.rp-dlg,.sh-dlg{width:min(520px,calc(100vw - 32px));max-height:calc(100dvh - 48px);overflow:auto}
.rp-seg,.sh-dlg .seg{margin:4px 0 14px;max-width:100%}
.rp-err{color:var(--neg);margin:8px 0 0}
.sh-fs{border:0;margin:0 0 12px;padding:0;display:flex;flex-wrap:wrap;gap:6px 16px}.sh-fs legend{margin-bottom:6px;padding:0;width:100%}
.sh-ck{display:inline-flex;align-items:center;gap:8px;min-height:32px;font:400 14px/20px var(--font-sans);cursor:pointer}
.sh-ck input{width:16px;height:16px;accent-color:var(--foreground)}
.sh-row{display:grid;gap:4px;margin-bottom:10px}
.sh-made{margin-top:12px;padding:12px 14px;border-radius:var(--radius-inner);background:var(--well)}
.sh-url{display:flex;align-items:center;gap:8px;margin-top:6px;min-width:0} .sh-url code{flex:1;min-width:0;overflow-wrap:anywhere;font-size:12.5px}
.sh-list{margin-top:16px;border-top:1px solid var(--border);padding-top:12px} .sh-list ul{list-style:none;margin:6px 0 0;padding:0;display:grid}
.sh-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;align-items:center;padding:10px 0;border-top:1px solid var(--border)} .sh-list li:first-child{border-top:0}
.sh-list li>.btn{grid-row:1/3;grid-column:2}
.ml-blk .dp-h{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ml-warn{display:flex;gap:8px;align-items:baseline}
.ml-l{list-style:none;margin:0;padding:0;display:grid} .ml-i{display:grid;gap:6px;padding:14px 0;border-top:1px solid var(--border)} .ml-i:first-child{border-top:0;padding-top:0}
.ml-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px} .ml-h .sp{flex:1}
.ml-r{list-style:none;margin:0;padding:0;display:grid;gap:2px} .ml-r li{display:flex;flex-wrap:wrap;gap:4px 10px;font:400 13px/18px var(--font-sans)}

/* ======================================================= FEATURE v11.5 E · comments, tasks, notifications */
.cmt-hb{position:relative}
.cmt-hb .cmt-hn{position:absolute;top:2px;right:0;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--foreground);color:var(--background);font:600 10px/16px var(--font-sans);text-align:center}
.cmt-hb .cmt-hn[hidden]{display:none}
.cmt-b{display:inline-flex;align-items:center;gap:3px;margin-left:8px;padding:1px 7px 0;height:20px;border-radius:999px;background:var(--well);color:var(--muted-foreground);font:500 12px/1 var(--font-sans);vertical-align:middle;font-variant-numeric:tabular-nums}
button.cmt-b{border:0;cursor:pointer}
button.cmt-b:hover{color:var(--foreground)}
.kcard{position:relative}
.cmt-cb{position:absolute;top:14px;right:52px;display:inline-flex;align-items:center;gap:3px;height:28px;min-width:28px;padding:0 8px;border:0;border-radius:999px;background:transparent;color:var(--muted-foreground);font:500 12px/1 var(--font-sans);cursor:pointer;opacity:0}
.cmt-cb.has,.kcard:hover .cmt-cb,.cmt-cb:focus-visible{opacity:1}
.cmt-cb:hover{background:var(--well);color:var(--foreground)}
@media (hover:none){.cmt-cb{opacity:1}}
.cmt-sheet .sh-b{display:flex;flex-direction:column;gap:12px}
.cmt-seg{max-width:100%}
.cmt-list{list-style:none;margin:0;padding:0;display:grid}
.cmt-row{display:grid;gap:3px;width:100%;padding:12px 0;border:0;border-top:1px solid var(--border);background:none;color:var(--foreground);text-align:left;font:var(--text-body);cursor:pointer}
.cmt-list li:first-child .cmt-row{border-top:0}
.cmt-row:hover .cmt-rl b{text-decoration:underline}
.cmt-rx{color:var(--muted-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmt-th{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;align-items:end}
.cmt-th .cmt-back{grid-column:1/-1;justify-self:start;display:inline-flex;align-items:center;gap:4px}
.cmt-tt h3{margin:2px 0 0;font:var(--text-title)}
.cmt-ms{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.cmt-m{display:grid;grid-template-columns:28px minmax(0,1fr);gap:10px}
.cmt-av{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:999px;background:var(--well);font:600 11px/1 var(--font-sans);color:var(--foreground)}
.cmt-m.sys .cmt-av{color:var(--pos)}
.cmt-mh{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}
.cmt-mh .cmt-del{margin-left:auto;font-size:12px}
.cmt-tx{margin:2px 0 0;overflow-wrap:anywhere}
.cmt-x{margin:2px 0 0;color:var(--muted-foreground);font-style:italic}
.cmt-at{font-weight:600}
.cmt-none{color:var(--muted-foreground);margin:0}
.cmt-rs{display:flex;align-items:center;gap:8px}
.cmt-cmp{position:relative;display:grid;gap:8px}
.cmt-ta{width:100%;min-height:76px;resize:vertical}
.cmt-cf{display:flex;align-items:center;gap:8px}.cmt-cf .sp{flex:1}
.cmt-mn{position:absolute;left:0;top:calc(100% - 46px);z-index:5;min-width:220px;display:grid;padding:4px}
.cmt-mn [role="option"]{display:flex;align-items:center;gap:8px;padding:6px 8px;border:0;border-radius:10px;background:none;color:var(--foreground);font:var(--text-body);text-align:left;cursor:pointer}
.cmt-mn [aria-selected="true"],.cmt-mn [role="option"]:hover{background:var(--well)}
.cmt-err{color:var(--neg);margin:0}
.cmt-in{display:grid;gap:12px;margin-top:8px}
.tk-src{margin:0 0 8px}
.tk-page .tk-s{display:block;margin-top:2px}
.tk-page tr.tk-d b{color:var(--muted-foreground);text-decoration:line-through}
.tk-cb{width:18px;height:18px;accent-color:var(--foreground)}
.acct-n{margin-left:auto}
.nt-grid th.c,.nt-grid td.c{text-align:center;width:88px}
.nt-grid th[scope="row"]{font:var(--text-body);text-align:left}
.nt-cb{width:18px;height:18px;accent-color:var(--foreground)}
.nt-cb:disabled{opacity:.35}
.nt-q{display:grid;gap:10px;margin-top:16px}
.nt-qr{display:flex;flex-wrap:wrap;gap:12px}.nt-qr .field{min-width:120px}.nt-qr .field:last-child{flex:1 1 220px}
.nt-qr[hidden]{display:none}
.nt-save{margin-top:16px}
.nt-steps{margin:0 0 12px;padding-left:20px;display:grid;gap:6px}
.nt-code{font:600 16px/1.4 var(--font-sans);letter-spacing:.08em;padding:2px 8px;border-radius:8px;background:var(--well);font-variant-numeric:tabular-nums}
.nt-w{margin:4px 0 8px}

/* ======================================================= FEATURE v11.5 F · portfolio, groups, year targets */
.pfo-ctlp .pfo-ctl{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px}.pfo-ctl .field{min-width:200px}
.pfo-note{margin:10px 0 0}
.pfo-page th[scope="row"]{font:var(--text-body);text-align:left}
.pfo-sub{display:block}
.pfo-tot th,.pfo-tot td{border-top:1px solid var(--border)}
.pfo-gl{list-style:none;margin:0;padding:0;display:grid;gap:20px}
.pfo-gh{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px}.pfo-gh .sp{flex:1}
.pfo-res th,.pfo-res td{font-weight:600}
.pfo-rates{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}.pfo-rates .field{min-width:150px}
.ytc-g{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}
.ytc{display:grid;gap:10px}
.ytc-h{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ytc-v{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}
.ytc-n{font:var(--num-hero);font-variant-numeric:tabular-nums}
.ytc-r{margin:0}
.tg-row{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:16px;padding:14px 0;border-top:1px solid var(--border)}
.tg-row:first-child{border-top:0;padding-top:0}
.tg-l{display:grid;gap:8px;align-content:start}
.tg-ms{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.tg-m{display:grid;gap:2px}.tg-m .fctl{min-width:0;text-align:right}
.tg-m .fctl[readonly]{background:transparent;color:var(--muted-foreground)}
@media (max-width:1100px){.tg-row{grid-template-columns:1fr}}

/* ======================================================= FEATURE v11.5 G · plan versions, export, open pages (Security and data, Plans) */
.pv-l td.pv-note{max-width:420px;color:var(--foreground);white-space:normal}
.pv-l .pv-draft th,.pv-l .pv-draft td{color:var(--muted-foreground)}
.pv-cmp{display:grid;gap:12px;margin-top:20px;padding-top:20px;border-top:1px solid var(--border)}
.pv-sel{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px}.pv-sel .field{min-width:180px}.pv-sel .pv-sum{margin:0 0 9px}
.pv-t th[scope="row"]{font:var(--text-body);text-align:left}
.pv-t .pv-sub{display:block;font:400 12px/16px var(--font-sans);color:var(--muted-foreground)}
.pv-t .pv-tot th,.pv-t .pv-tot td{font-weight:600}
.pv-t td.pv-up{color:var(--pos)}.pv-t td.pv-dn{color:var(--neg)}
.cdlg.pc-dlg .pc-note{margin-top:4px}.cdlg.pc-dlg .pc-note textarea{resize:vertical;min-height:56px}
.ex-panel .ex-sum{margin:8px 0 0}.ex-panel .ex-a{margin-top:12px}
/* the open pages: their own bar, no menu */
.pub-top{display:flex;align-items:center;gap:16px 24px;flex-wrap:wrap;max-width:1080px;width:100%;margin:0 auto;padding:20px 32px;box-sizing:border-box}
.pub-logo{display:inline-flex;align-items:center;gap:10px;font:600 16px/1 var(--font-sans);color:var(--foreground);text-decoration:none}
.pub-tile{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--foreground);color:var(--background);font:700 11px/1 var(--font-sans)}
.pub-nav{display:flex;flex-wrap:wrap;gap:4px;margin-left:auto}
.pub-nav a{display:inline-flex;align-items:center;height:36px;padding:0 14px;border-radius:999px;color:var(--muted-foreground);text-decoration:none;font:500 14px/1 var(--font-sans)}
.pub-nav a:hover,.pub-nav a[aria-current="page"]{color:var(--foreground);background:var(--accent)}
.pub-nav a:focus-visible,.pub-logo:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
body.auth main>.page.pub-page{max-width:1080px;width:100%;margin:0 auto;padding:24px 32px 64px;box-sizing:border-box}
.sec-l{margin:0;display:grid}
.sec-i{display:grid;grid-template-columns:minmax(160px,220px) minmax(0,1fr);gap:8px 32px;padding:18px 0;border-top:1px solid var(--border)}
.sec-i:first-child{border-top:0;padding-top:0}.sec-i:last-child{padding-bottom:0}
.sec-i dt{font:600 14px/1.45 var(--font-sans);color:var(--foreground)}
.sec-i dd{margin:0;max-width:68ch;color:var(--muted-foreground);text-wrap:pretty}
.prc-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--gap)}
.prc-c .prc-p{margin:0}.prc-c .prc-v{font:600 24px/1.2 var(--font-sans);color:var(--foreground)}
.prc-c .prc-lead{margin:6px 0 0;color:var(--muted-foreground);max-width:52ch}
.prc-c .prc-h{margin:20px 0 8px;font:600 13px/1.3 var(--font-sans);color:var(--muted-foreground)}
.prc-l{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.prc-l li{position:relative;padding-left:22px}
.prc-l li::before{content:"";position:absolute;left:2px;top:6px;width:10px;height:6px;border-left:1.6px solid var(--pos);border-bottom:1.6px solid var(--pos);transform:rotate(-45deg)}
.prc-foot{margin:0}
@media (max-width:767px){ .pub-top,body.auth main>.page.pub-page{padding-inline:16px} .sec-i{grid-template-columns:1fr} }
/* row headers of the G and F tables read as the AI page's (middle, the rule between rows only) */
:is(.pv-panel,.pfo-page) table.dtable tbody th[scope="row"]{font:500 14px/1.4 var(--font-sans);color:var(--foreground);vertical-align:middle;white-space:normal;padding-top:12px;padding-bottom:12px}
:is(.pv-panel,.pfo-page) table.dtable tbody tr:last-child th{border-bottom:0}
.cdlg.pv-dlg .cdlg-ic{background:var(--muted);color:var(--foreground)}
/* G4 · the demo's banner and its prepared AI answers (the demo build only) */
.demo-bar{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap;padding:12px 12px 12px 20px;background:var(--card);border-radius:var(--radius-inner,16px);box-sizing:border-box}
.demo-bar p{margin:0;flex:1 1 360px;min-width:0;color:var(--muted-foreground)}
.demo-bar .demo-a{display:flex;gap:8px;flex-wrap:wrap}
.demo-bar.wait p{color:var(--foreground)}
.demo-ai-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.demo-ai-l{margin:0;padding-left:20px;display:grid;gap:6px;max-width:80ch}
.pf-up-s.imp-more .lnk{white-space:normal;text-align:left}   /* 320 px: the link wraps instead of pushing the page sideways */
.pv-panel .dt-scroll{position:relative}   /* its sr-only header stays inside the scroll box (320 px reflow) */
.ex-panel .ex-done{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;padding:12px 16px;border-radius:var(--radius-inner);background:var(--muted)}
.ex-panel .ex-done p{margin:0;flex:1 1 280px;min-width:0}

/* ======================================================= FEATURE v12.19 (v12.26) · plans Free / Pro / Team, the trial, the limits of Free (artboard Billing) */
/* /pricing · Choose your plan */
body.auth main>.page.pub-page.bill-pricing-page{max-width:1280px}
.prc-wrap{display:flex;flex-direction:column;gap:24px;padding:24px;background:var(--card);border-radius:var(--radius-card)}
.prc-top{display:flex;justify-content:flex-end}
.prc-save{font:500 11px/1 var(--font-sans);color:var(--pos);margin-left:4px}
.prc-g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.prc-card{position:relative;display:flex;flex-direction:column;gap:8px;padding:24px;background:var(--well);border:1px solid transparent;border-radius:var(--radius-inner);min-width:0}
.prc-card.rec{border-color:var(--border-strong);background:transparent}
.prc-rec{position:absolute;top:-11px;left:24px}
.prc-card h3{margin:0;font:600 18px/1.3 var(--font-sans)}
.prc-d{margin:0;font:var(--text-caption);color:var(--muted-foreground)}
.prc-price{margin:12px 0 0;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.prc-big{font:600 40px/1.05 var(--font-sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.prc-per{font:var(--text-body);color:var(--muted-foreground)}
.prc-l1{margin:0;min-height:40px;font:var(--text-caption);color:var(--muted-foreground);font-variant-numeric:tabular-nums}
.prc-f{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:10px;flex:1 1 auto}
.prc-f li{display:flex;gap:10px;align-items:flex-start;font:var(--text-body)}
.prc-f li svg{flex:none;margin-top:2px;color:var(--pos)}
.prc-f li.off{color:var(--muted-foreground)}.prc-f li.off svg{color:var(--muted-foreground)}
.prc-b{margin-top:20px;width:100%;justify-content:center}
.prc-cmp table{width:100%;min-width:640px}
.prc-cmp th,.prc-cmp td{vertical-align:top}
.prc-cmp td.off{color:var(--muted-foreground)}
.prc-cmp td svg,.prc-cmp td .ico{vertical-align:-3px;color:var(--pos)}.prc-cmp td.off svg{color:var(--muted-foreground)}
.prc-foot{display:flex;gap:8px;align-items:flex-start;margin:0;font:var(--text-caption);color:var(--muted-foreground)}
.prc-foot svg{flex:none;margin-top:1px}
@media (max-width:960px){ .prc-g3{grid-template-columns:1fr} .prc-l1{min-height:0} }
/* the user block's chip and the account menu's bar */
.bill-chip{display:inline-flex;align-items:center;align-self:flex-start;gap:4px;height:20px;padding:1px 7px 0;border-radius:var(--radius-pill);border:1px solid var(--border-strong);font:500 12px/1 var(--font-sans);color:var(--foreground);white-space:nowrap;flex:none}
.ub.has-chip .rl{display:none}
.bill-chip.warn{background:var(--warn-soft);border-color:transparent;color:var(--warn)}
.bill-chip.neg{background:var(--neg-soft);border-color:transparent;color:var(--neg)}
body.collapsed .ub .bill-chip{display:none}
.bill-mb{display:flex;flex-direction:column;gap:8px;padding:10px 10px 12px;margin-bottom:4px;border-bottom:1px solid var(--border)}
.bill-mb-h{display:flex;justify-content:space-between;gap:8px;font:500 14px/1.3 var(--font-sans)}
.bill-mb-bar{height:6px;border-radius:999px;background:var(--meter-track);overflow:hidden}
.bill-mb-bar i{display:block;height:100%;border-radius:inherit;background:var(--foreground)}
.bill-mb-bar.warn i{background:var(--warn)}.bill-mb-bar.neg i{background:var(--neg)}
.bill-mb-f a[role=menuitem]{display:inline;min-height:0;padding:0;border-radius:0;font:inherit;color:var(--foreground);text-decoration:underline;text-underline-offset:3px}
.bill-mb-f a[role=menuitem]:hover,.bill-mb-f a[role=menuitem]:focus-visible{background:transparent;outline:2px solid var(--ring-focus);outline-offset:2px}
.psw-m [role=menuitemradio].bill-has{grid-template-columns:28px minmax(0,1fr) auto 16px}
.psw-m .bill-b{display:inline-flex;flex-direction:row;align-items:center;gap:4px;white-space:nowrap;justify-self:end}
.psw-m .bill-b svg{flex:none}
/* the trial's banner, a read-only project, the months of Free */
.bill-ban,.bill-ro{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;padding:12px 12px 12px 16px;margin-bottom:16px;background:var(--card);border-radius:var(--radius-inner)}
.bill-ban p,.bill-ro p{margin:0;flex:1 1 320px;min-width:0;color:var(--muted-foreground)}
.bill-ban p b,.bill-ro p b{color:var(--foreground);font-weight:600}
.bill-ban-ic,.bill-ro-ic{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--warn-soft);color:var(--warn);flex:none}
.bill-ban.neg .bill-ban-ic{background:var(--neg-soft);color:var(--neg)}
.bill-ro-ic{background:var(--muted);color:var(--foreground)}
.bill-ro-a{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.bill-ms{display:flex;flex-direction:column;gap:8px;margin:0 0 16px}
.bill-mcs{display:flex;gap:6px;flex-wrap:wrap}
.bill-mc{display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 12px;border-radius:var(--radius-pill);border:0;background:var(--muted);color:var(--foreground);font:500 13px/1 var(--font-sans);cursor:pointer}
.bill-mc:hover{background:var(--accent)}
.bill-mc.on{background:var(--primary);color:var(--primary-foreground)}
.bill-mc.lk{background:transparent;border:1px dashed var(--border-strong);color:var(--muted-foreground)}
.bill-mc:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
.bill-ms>.cap{margin:0}
.bill-mmsg{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;padding:12px 12px 12px 16px;background:var(--card);border-radius:var(--radius-inner)}
.bill-mmsg p{margin:0;flex:1 1 280px}
.mpill.bill-lk .cur{color:var(--muted-foreground)}
.bill-lki{display:inline-flex;vertical-align:-2px;margin-right:4px}
/* day 31 · the paywall of a new project */
.cdlg.bill-d31{width:560px}
.cdlg.bill-d31>.cap:first-child,.cdlg.bill-pw>.cap:first-child,.cdlg.bill-cancel>.cap:first-child{margin:0 0 -8px}
.b31-l{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.b31-l legend{font:500 14px/1.3 var(--font-sans);margin-bottom:8px;padding:0}
.b31-r{display:grid;grid-template-columns:20px 32px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:56px;padding:8px 14px;border-radius:var(--radius-inner);background:var(--card);cursor:pointer}
.b31-r:has(input:checked){box-shadow:inset 0 0 0 1px var(--border-strong)}
.b31-r input{width:18px;height:18px;margin:0;accent-color:var(--foreground)}
.b31-r input:focus-visible{outline:2px solid var(--ring-focus);outline-offset:2px}
.b31-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.b31-t b{font-weight:500}
.b31-c{margin:0}
.cdlg.bill-pw{width:520px}
.cdlg.bill-pw .prc-f{margin:0}
/* AI on Free: one Pro screen */
.bill-aip{position:relative;overflow:hidden;padding:24px;min-height:420px;display:grid;place-items:center;background:var(--card);border-radius:var(--radius-card)}
.bill-aip-s{position:absolute;inset:24px 24px auto;display:flex;flex-direction:column;gap:12px;filter:blur(6px);opacity:.5;pointer-events:none;user-select:none}
.bill-aip-s p{margin:0;font:600 20px/1.3 var(--font-sans)}
.bill-aip-m{height:8px;border-radius:999px;background:linear-gradient(90deg,var(--neg) 0 20%,var(--warn) 20% 100%)}
.bill-aip-b{height:120px;border-radius:var(--radius-inner);background:var(--well)}
.bill-aip-c{position:relative;display:flex;flex-direction:column;align-items:center;gap:14px;max-width:520px;text-align:center}
.bill-aip-c h2{margin:0;font:600 20px/1.3 var(--font-sans)}
.bill-aip-c .prc-f{text-align:left;margin:0}
.bill-aip-ic{display:inline-grid;place-items:center;width:48px;height:48px;border-radius:14px;background:var(--muted);color:var(--foreground)}
.bill-aip-a{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.bill-aip-c>.cap{margin:0}
/* Settings → Plan & billing · Team seats · checkout */
.bill-kv dd{margin:0}.bill-kv dd svg{vertical-align:-3px}
.bill-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}
.bill-offer-r p{margin:0}
.bill-offer-r+.bill-offer-r{margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}
.bill-offer .bill-acts{margin-top:12px}
.bill-seat-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.bill-meter{height:8px;margin:10px 0 16px;border-radius:999px;background:var(--meter-track);overflow:hidden}
.bill-meter i{display:block;height:100%;border-radius:inherit;background:var(--foreground)}
.bill-who{display:inline-flex;gap:6px;align-items:baseline;flex-wrap:wrap;min-width:0}
.bill-seat-f{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.bill-seat-f .fctl{flex:1 1 240px;min-width:0}
.bill-seat-full{margin:16px 0 0}
.cap.neg{color:var(--neg)}
.bill-test{margin-top:16px;padding:16px;border:1px dashed var(--border-strong);border-radius:var(--radius-inner)}
.bill-test h4{margin:0 0 6px;font:600 14px/1.3 var(--font-sans)}
.bill-test-a{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}

/* ======================================================= FIX v12.27 · the checks of the figures at Close month (A3) · Not saved in the bell (A2) */
.cl-chk{display:flex;flex-direction:column;gap:10px;margin:0 0 16px;padding:16px;border-radius:var(--radius-inner);background:var(--well)}
.cl-chk h4{margin:0;font:600 14px/1.3 var(--font-sans)}
.cl-chk>.cap{margin:0}
.cl-cl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.cl-ci{display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;align-items:start}
.cl-ci .g{font-size:12px;line-height:20px;color:var(--warn)}
.cl-ci.s-block .g{color:var(--neg)}
.cl-ci.done .g{color:var(--pos)}
.cl-cb{display:flex;flex-direction:column;gap:4px;min-width:0}
.cl-cb b{font-weight:500}
.cl-ca{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:4px}
.cl-ca .fctl{flex:1 1 196px;min-width:0}
.cl-left{margin:0}
.ntf-held{margin:0 12px 8px;padding:12px;border-radius:var(--radius-inner);background:var(--well)}
.ntf-held h3{margin:0 0 8px;font:600 13px/1.3 var(--font-sans);color:var(--foreground);display:flex;align-items:center;gap:6px}
.ntf-held h3::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--warn);flex:none}
.ntf-hr+.ntf-hr{margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}
.ntf-hr p{margin:0 0 6px;font:var(--text-caption);color:var(--foreground)}
.ntf-ha{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.sync-st .lnk{font:inherit;color:inherit;text-decoration:underline;text-underline-offset:3px;background:none;border:0;padding:0;cursor:pointer}
@media (max-width:1180px){ .sync-st .lnk.sh-n{font-size:0} .sync-st .lnk.sh-n::after{content:attr(data-short);font-size:12px} }   /* “Saved · 11 not saved”: the header fits at 1024; the words stay for a screen reader */
/* FIX v12.27 B1 · the P&L category's Δ % for a loss or a plan below 0: the words */
.prow .p9-w{display:block;font:500 13px/1.3 var(--font-sans);white-space:normal;text-align:right}
.prow .p9-w.t-pos{color:var(--pos)}
.prow .p9-w.t-neg{color:var(--neg)}
/* FIX v12.27 B2 · the year plan covers part of the span: the reason under the pace, Plan <Month> beside it */
.cum-w.cum-part .cum-why{display:block;margin-top:2px;color:var(--muted-foreground)}
.cum-w.cum-part .btn{flex:none}
/* FIX v12.27 B6 · a check that blocks the close (a deduction above revenue) reads in the loss colour, with its words */
.mh-chk.blk{color:var(--neg)} .mh-chk.blk:hover{background:var(--neg-soft,var(--warn-soft))}
/* FIX v12.27 B5 · open findings kept before v12.17: one notice, Recheck <months> */
.rd-old{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px;padding:12px 14px;border-radius:var(--radius-inner);background:var(--well)}
.rd-old p{flex:1 1 320px;margin:0;font:var(--text-caption);color:var(--muted-foreground)}
.rd-old p b{color:var(--foreground);font-weight:500}
/* FIX v12.27 C5 · a forecast that is a loss: a full bar in the loss colour with the word on it, never an empty bar */
.meter.fc-loss{position:relative;display:flex;align-items:center;height:8px;border-radius:var(--radius-pill);background:var(--muted);overflow:visible}
.meter.fc-loss i{position:absolute;inset:0;border-radius:inherit;background:var(--neg);opacity:.55}
.meter.fc-loss.t-pos i{background:var(--pos)}
.meter.fc-loss b{position:relative;margin-left:auto;transform:translateY(-14px);font:500 11px/1 var(--font-sans);color:var(--neg)}
.meter.fc-loss.t-pos b{color:var(--pos)}
/* FIX v12.27 C1 · “Fact vs plan” is never cut: the header takes the meter's column and the % column beside it */
.plad-r.h .plad-m{grid-column:span 2;overflow:visible}
/* FIX v12.27 C2 · a metric card's caption wraps to a second line, never cut (“5.2% of GGR · lower is better”) */
.mcc-vr .kc-dl{white-space:normal;min-width:0;max-width:100%;flex-wrap:wrap;row-gap:2px}   /* the delta keeps its place (beside the value, or under it as before); only its caption wraps */
.mcc-vr .kc-vs{white-space:normal}
/* FIX v12.27 C7 · the glyph in a count field is the word of its line (bets, deposits, players …), never “pcs” where a word fits */
.fr .fld[data-unit="count"][data-cw="players"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Eplayers%3C/text%3E%3C/svg%3E");padding-left:66px}
.fr .fld[data-unit="count"][data-cw="bets"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='27' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Ebets%3C/text%3E%3C/svg%3E");padding-left:49px}
.fr .fld[data-unit="count"][data-cw="withdrawals"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Ewithdrawals%3C/text%3E%3C/svg%3E");padding-left:94px}
.fr .fld[data-unit="count"][data-cw="deposits"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='51' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Edeposits%3C/text%3E%3C/svg%3E");padding-left:73px}
.fr .fld[data-unit="count"][data-cw="bonuses"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='51' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Ebonuses%3C/text%3E%3C/svg%3E");padding-left:73px}
.fr .fld[data-unit="count"][data-cw="spins"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Espins%3C/text%3E%3C/svg%3E");padding-left:54px}
.fr .fld[data-unit="count"][data-cw="sessions"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='52' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Esessions%3C/text%3E%3C/svg%3E");padding-left:74px}
.fr .fld[data-unit="count"][data-cw="leads"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='33' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Eleads%3C/text%3E%3C/svg%3E");padding-left:55px}
.fr .fld[data-unit="count"][data-cw="units"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Eunits%3C/text%3E%3C/svg%3E");padding-left:52px}
.fr .fld[data-unit="count"][data-cw="transactions"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='74' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Etransactions%3C/text%3E%3C/svg%3E");padding-left:96px}
.fr .fld[data-unit="count"][data-cw="games"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='41' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Egames%3C/text%3E%3C/svg%3E");padding-left:63px}
.fr .fld[data-unit="count"][data-cw="pcs"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='14'%3E%3Ctext x='0' y='11' font-family='Inter,system-ui,sans-serif' font-size='13' fill='%23B5B5B5'%3Epcs%3C/text%3E%3C/svg%3E");padding-left:44px}
.fr .fld[data-unit="count"][data-cw][readonly]{background-image:none;padding-left:44px}
/* FIX v12.27 C8 · Players & payments by month: the reason instead of a dash */
.mrow-na{font:400 12px/1.3 var(--font-sans);white-space:normal}
/* FIX v12.27 C13 · a name already used: a warning under the field (the name stays allowed) */
.dup-note{margin:6px 0 0}

/* ===== FEATURE v12.33 · the training «Your first month» (artboard Onboarding · app/training.js) ===== */
.tr-chip{align-self:flex-start;display:inline-flex;align-items:center;height:22px;padding:1px 8px 0;border-radius:999px;background:var(--muted);color:var(--muted-foreground);font:500 12px/1 var(--font-sans)}
.tchip.tr{background:color-mix(in oklch,var(--series-1) 22%,transparent);color:var(--foreground)}
.cdlg.tr-wel,.cdlg.tr-done,.cdlg.tr-grad{width:min(480px,calc(100vw - 32px));display:flex;flex-direction:column;gap:12px;position:relative;overflow:hidden}
.cdlg.tr-wel h2,.cdlg.tr-done h2,.cdlg.tr-grad h2{font:600 22px/1.25 var(--font-sans);margin:0;text-wrap:balance}
.tr-wel-m{list-style:none;margin:4px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}
.tr-wel-m li{display:flex;align-items:center;gap:10px;font:500 14px/1.3 var(--font-sans)}
.tr-mi,.tr-nb,.tr-badge,.tr-badges span,.trc-m span{display:inline-grid;place-items:center;flex:none;color:var(--mc,var(--series-1))}
.tr-mi{width:28px;height:28px;border-radius:999px;background:color-mix(in oklch,var(--mc) 16%,transparent)}
.tr-wel-t{margin:4px 0 0;color:var(--muted-foreground);font-size:13px}
.tr-wel-f{margin:0;color:var(--muted-foreground);font-size:12px;line-height:1.45}
.tr-wel .cdlg-a,.tr-done .cdlg-a,.tr-grad .cdlg-a{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-top:6px}
.tr-badge{width:52px;height:52px;border-radius:999px;background:color-mix(in oklch,var(--mc) 18%,transparent)}
.tr-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:4px 0}
.tr-stats div{background:color-mix(in oklch,var(--foreground) 4%,transparent);border-radius:16px;padding:12px}
.tr-stats dt{color:var(--muted-foreground);font-size:12px} .tr-stats dd{margin:4px 0 0;font:600 18px/1.2 var(--font-sans);font-variant-numeric:tabular-nums}
.tr-badges{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.tr-badges li{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px 0 4px;border-radius:999px;background:var(--muted);color:var(--muted-foreground);font-size:12px;opacity:.55}
.tr-badges li.on{opacity:1;color:var(--foreground)} .tr-badges span{width:20px;height:20px;border-radius:999px;background:color-mix(in oklch,var(--mc) 18%,transparent)}
/* the map */
.tr-map .tr-xp{display:flex;flex-direction:column;gap:12px}
.tr-xph{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:baseline}
.tr-bar{height:8px;border-radius:999px;background:var(--muted);overflow:hidden} .tr-bar i{display:block;height:100%;border-radius:inherit;background:var(--series-1)}
.tr-path{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-direction:column;gap:0;position:relative}
.tr-node{display:flex;align-items:center;gap:14px;min-height:64px;position:relative}
.tr-node:not(:last-child)::after{content:"";position:absolute;left:21px;top:52px;bottom:-10px;width:2px;background:var(--border)}
.tr-node.done:not(:last-child)::after{background:var(--series-1)}
.tr-nb{width:44px;height:44px;border-radius:999px;background:var(--muted);color:var(--muted-foreground);z-index:1}
.tr-node.done .tr-nb{background:color-mix(in oklch,var(--mc) 22%,transparent);color:var(--mc)}
.tr-node.cur .tr-nb{background:color-mix(in oklch,var(--mc) 22%,transparent);color:var(--mc);box-shadow:0 0 0 3px var(--series-1)}
.tr-nt{display:flex;flex-direction:column;gap:2px} .tr-nt b{font:600 15px/1.3 var(--font-sans)} .tr-nt span{color:var(--muted-foreground);font-size:13px}
.tr-node.todo .tr-nt b{color:var(--muted-foreground)}
.tr-acts{margin-top:20px;display:flex;gap:10px} .tr-more{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}
/* the ring in the menu, the panel, the floating button */
.tr-ub{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:8px 6px;border:0;border-top:1px solid var(--border);background:transparent;color:var(--foreground);cursor:pointer;text-align:left;font:inherit}
.tr-ub:hover{background:color-mix(in oklch,var(--foreground) 5%,transparent)} .tr-ub:focus-visible{outline:2px solid var(--ring,var(--series-1));outline-offset:-2px}
.tr-ub .col{display:flex;flex-direction:column;min-width:0} .tr-ub .col b{font:600 13px/1.3 var(--font-sans)} .tr-ub .col span{color:var(--muted-foreground);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.collapsed .tr-ub{justify-content:center} body.collapsed .tr-ub .col{display:none}
.tr-ring{position:relative;display:inline-grid;place-items:center;flex:none} .tr-ring b{position:absolute;font:600 11px/1 var(--font-sans);font-variant-numeric:tabular-nums}
.tr-panel{position:fixed;z-index:91;width:288px;padding:16px;border-radius:20px;background:var(--popover);border:1px solid var(--border);box-shadow:var(--shadow-pop);display:flex;flex-direction:column;gap:12px}
.tr-ph{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.tr-panel ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.tr-panel li{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--muted-foreground)} .tr-panel li.done{color:var(--foreground)} .tr-panel li.cur{color:var(--foreground);font-weight:600}
.tr-ck{width:18px;height:18px;border-radius:999px;border:1.5px solid var(--border);display:inline-grid;place-items:center;flex:none}
.tr-panel li.done .tr-ck{background:var(--series-1);border-color:var(--series-1);color:#fff}
.tr-pa{display:flex;gap:8px;justify-content:flex-end}
.tr-mt{margin-left:auto;color:var(--muted-foreground);font-size:12px;font-variant-numeric:tabular-nums}
.tr-fab{position:fixed;right:24px;bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:84;display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 16px 0 10px;border-radius:999px;border:1px solid var(--border);background:var(--popover);color:var(--foreground);font:600 13px/1 var(--font-sans);cursor:pointer;box-shadow:var(--shadow-pop)}
.tr-fab:focus-visible{outline:2px solid var(--series-1);outline-offset:2px}
/* the coach */
.trc-root{position:fixed;inset:0;z-index:85;pointer-events:none}
.trc-dim{position:fixed;inset:0;background:var(--scrim);pointer-events:none}
.trc-root.soft .trc-dim{background:color-mix(in oklch,var(--scrim) 65%,transparent)}
.trc-ring{position:fixed;border:3px solid var(--series-1);border-radius:14px;pointer-events:none;z-index:1}
.trc-ring::after{content:"";position:absolute;inset:-3px;border-radius:inherit;border:3px solid var(--series-1);animation:trc-pulse var(--dur-pulse) var(--ease-out) infinite}
.trc-root.still .trc-ring::after,.trc-root.still .trc-ring{animation:none}
@keyframes trc-pulse{0%{opacity:.6;transform:scale(1)}100%{opacity:0;transform:scale(1.06)}}
.trc-block{position:fixed;pointer-events:auto;background:transparent}
.trc-root.soft .trc-block{pointer-events:none}
.trc-card{position:fixed;z-index:94;width:340px;max-width:calc(100vw - 32px);padding:16px;border-radius:20px;background:var(--popover);border:1px solid var(--border);box-shadow:var(--shadow-pop);display:flex;flex-direction:column;gap:8px;color:var(--foreground)}
.trc-card:focus-visible{outline:2px solid var(--series-1);outline-offset:2px}
.trc-h{display:flex;justify-content:space-between;gap:8px;align-items:center}
.trc-m{display:inline-flex;align-items:center;gap:6px;font:600 12px/1.2 var(--font-sans);color:var(--muted-foreground)} .trc-m span{color:var(--mc)}
.trc-s{color:var(--muted-foreground);font-size:12px;font-variant-numeric:tabular-nums}
.trc-bar{display:flex;gap:4px} .trc-bar i{flex:1;height:4px;border-radius:999px;background:var(--muted)} .trc-bar i.d{background:color-mix(in oklch,var(--series-1) 55%,transparent)} .trc-bar i.c{background:var(--series-1)}
.trc-t{font:600 16px/1.35 var(--font-sans);text-wrap:balance} .trc-x{margin:0;color:var(--muted-foreground);font-size:14px;line-height:1.45}
.trc-a{margin:2px 0 0;font:600 13px/1.4 var(--font-sans);color:var(--series-1)}
.trc-go{align-self:flex-start;margin-top:4px}
.trc-hint{margin:0;padding:10px 12px;border-radius:12px;background:color-mix(in oklch,var(--series-1) 14%,transparent);font-size:13px;line-height:1.45}
.trc-f{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:6px} .trc-f .sp{flex:1}
.trc-card.sheet{left:0!important;right:0;bottom:calc(64px + env(safe-area-inset-bottom,0px));top:auto!important;width:auto!important;max-width:none;border-radius:20px 20px 0 0;padding:16px 16px 14px}
.trc-cursor{position:fixed;z-index:119;width:18px;height:18px;border-radius:999px;background:#fff;border:3px solid var(--series-1);pointer-events:none;transition:transform var(--dur-4) var(--ease-out);transform:translate(-50%,-50%)}
.trc-conf{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.trc-conf i{position:absolute;left:50%;top:30%;width:6px;height:10px;border-radius:2px;opacity:0;animation:trc-conf var(--dur-progress) var(--ease-out) var(--d) forwards}
@keyframes trc-conf{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(calc(var(--x) * 200px),180px) rotate(320deg)}}
.badge.ai-demo{border-color:color-mix(in oklch,var(--series-1) 60%,transparent);color:var(--foreground)}
@media (max-width:767px){ .tr-fab{bottom:calc(76px + env(safe-area-inset-bottom,0px));right:16px} .tr-wel-m{grid-template-columns:1fr} .tr-stats{grid-template-columns:1fr} }
@media (prefers-reduced-motion:reduce){ .trc-ring,.trc-ring::after{animation:none} .trc-cursor{transition:none} .trc-conf{display:none} }
/* ===== FEATURE v12.35 · Market · Top 100 (artboard MarketTop100 · app/market.js): the Welcome choice, Admin → Market data ===== */
.cdlg.tr-pick{gap:14px}
.tr-opts{display:flex;flex-direction:column;gap:8px;margin-top:2px}
.tr-opt{display:grid;grid-template-columns:44px 1fr 16px;gap:14px;align-items:center;text-align:left;padding:14px 16px;border-radius:18px;border:0;background:var(--muted);color:var(--foreground);font:inherit;cursor:pointer;min-height:64px;transition:background-color var(--dur-1) var(--ease-out)}
.tr-opt:hover{background:color-mix(in oklch,var(--foreground) 12%,transparent)}
.tr-opt:disabled{opacity:.6;cursor:default}
.tr-oi{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:color-mix(in oklch,var(--series-1) 18%,transparent);color:var(--series-1)}
.tr-opt-training .tr-oi{background:color-mix(in oklch,var(--series-3) 18%,transparent);color:var(--series-3)}
.tr-opt-market .tr-oi{background:color-mix(in oklch,var(--series-2) 18%,transparent);color:var(--series-2)}
.tr-ot{display:flex;flex-direction:column;gap:2px;min-width:0}
.tr-ot b{font:600 15px/1.3 var(--font-sans)}
.tr-ot span{font-size:13px;color:var(--muted-foreground);line-height:1.35}
.tr-oc{color:var(--muted-foreground)}
.mk-adm .dpanel{margin-top:16px}
.mk-adm .notice{margin-top:12px}
.mk-adm td .cap{color:var(--muted-foreground);font-size:12.5px;margin-top:2px}
.mk-adm td.r{text-align:right;white-space:nowrap}
.mk-adm td.r .btn{margin-left:6px}
.mk-st{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.mk-st i{width:8px;height:8px;border-radius:50%;flex:none}
/* FIX v12.40 · Admin → Market data → Logos (artboard MarketEdits) and Data checks */
.mk-adm .seg{margin-bottom:14px}
.mk-lgs{list-style:none;margin:0;padding:0}
.mk-lg{display:grid;grid-template-columns:auto auto 1fr auto;gap:14px;align-items:center;padding:12px 0;border-top:1px solid var(--border)}
.mk-lg:first-child{border-top:0}
.mk-lg .r{text-align:right;white-space:nowrap}.mk-lg .r .btn{margin-left:6px}
.mk-lg-b{display:flex;flex-direction:column;gap:3px;min-width:0}.mk-lg-b .badge{align-self:flex-start}
.mk-lg-b .cap{color:var(--muted-foreground);font-size:12.5px;overflow-wrap:anywhere}
.mk-tiles{display:flex;gap:8px;align-items:center}
.mk-tile{width:56px;height:56px;border-radius:16px;background:var(--background);display:grid;place-items:center;overflow:hidden;font-size:11px;color:var(--muted-foreground);border:1px solid var(--border)}
.mk-tile img{width:56px;height:56px;border-radius:16px;display:block}
.mk-tile.dk{background:oklch(.145 0 0);padding:8px}.mk-tile.dk img{width:40px;height:40px;border-radius:11px}
.mk-tile.none{border-style:dashed}
.mk-ck{display:grid;place-items:center;min-width:44px;min-height:44px}
.mk-ck input{width:18px;height:18px}
.mk-opts{display:flex;flex-direction:column;gap:8px}
.mk-opt{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.mk-opt .cap{color:var(--muted-foreground);font-size:12.5px}
@media (max-width:767px){ .mk-lg{grid-template-columns:auto 1fr} .mk-lg .mk-tiles{grid-row:span 2} .mk-lg .r{grid-column:1 / -1;text-align:left;white-space:normal} .mk-lg .r .btn{margin:4px 6px 0 0} }
.wel-mk{margin-top:4px}
@media (max-width:767px){ .mk-adm td.r{white-space:normal} .mk-adm td.r .btn{margin:4px 0 0 0} }
/* FEATURE v12.45 · languages: the list (account menu, phone More, sign-in page), Profile → Language and formats, the one-time offer */
.lang-sheet .lang-note{margin:0 0 8px;color:var(--muted-foreground);font-size:14px}
.lang-list{display:flex;flex-direction:column}
.lang-i{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:8px 12px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--foreground);text-align:left;border-radius:0;cursor:pointer}
.lang-i:last-child{border-bottom:0}
.lang-i:hover,.lang-i:focus-visible{background:var(--accent);outline:none;border-radius:12px}
.lang-i .lang-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.lang-i .lang-t b{font-weight:500;font-size:15px}
.lang-i .lang-t span{color:var(--muted-foreground);font-size:13px}
.lang-i.on .lang-t b{font-weight:600}
.lang-ck{flex:none;color:var(--foreground)}
.lang-more{display:inline-flex;margin-top:12px;font-size:14px;color:var(--muted-foreground);text-decoration:underline;text-underline-offset:3px}
.psw-m .acct-lang{justify-content:flex-start;gap:10px;min-height:40px}
.psw-m .acct-lang .acct-lt{flex:1;text-align:left}
.psw-m .acct-lang .acct-v{color:var(--muted-foreground);font-size:13px}
.lang-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;margin:4px 0 16px}
.lang-tile{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:56px;padding:10px 14px;border:1px solid var(--border);border-radius:16px;background:transparent;color:var(--foreground);text-align:left;cursor:pointer}
.lang-tile b{font-weight:500;font-size:14.5px}.lang-tile span{color:var(--muted-foreground);font-size:12.5px}
.lang-tile:hover{background:var(--accent)}
.lang-tile.on{border-color:var(--foreground);box-shadow:inset 0 0 0 1px var(--foreground)}
.lang-tile.on b{font-weight:600}
.lang-tile:focus-visible,.lang-i:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.lang-fmt{max-width:420px}
.lang-pvw{margin-top:16px}
.lang-pv{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:8px 0 0}
.lang-pv>div{padding:10px 12px;border-radius:12px;background:color-mix(in oklch,var(--foreground) 4%,transparent)}
.lang-pv dt{color:var(--muted-foreground);font-size:12.5px}.lang-pv dd{margin:2px 0 0;font-variant-numeric:tabular-nums;font-size:15px}
.lang-p{margin:16px 0 0;color:var(--muted-foreground);font-size:14px;line-height:1.5;max-width:70ch}
.lang-chip{display:inline-flex;align-items:center;gap:6px}
.lang-offer{position:fixed;right:24px;bottom:24px;z-index:60;width:min(360px,calc(100vw - 32px));padding:16px 18px;border:1px solid var(--border);border-radius:20px;background:var(--popover,var(--card));color:var(--foreground);box-shadow:0 12px 40px rgba(0,0,0,.35)}
.lang-offer b{display:block;font-weight:600;font-size:15px}.lang-offer p{margin:6px 0 12px;color:var(--muted-foreground);font-size:14px;line-height:1.45}
.lang-offer-a{display:flex;gap:8px;flex-wrap:wrap}
@media (max-width:767px){ .lang-offer{right:16px;left:16px;bottom:calc(76px + env(safe-area-inset-bottom));width:auto} .lang-tiles{grid-template-columns:1fr 1fr} }
html.i18n-wait body{visibility:hidden}   /* v12.45 · at most 1.5 s while the person's language loads */

/* FIX v12.46 · data on the server only: who changed a cell (the later save wins), offline (editing paused), a page opened offline */
.sync-tip{position:absolute;z-index:var(--z-tooltip,70);max-width:min(320px,calc(100vw - 16px));padding:10px 12px;border-radius:14px;background:var(--popover);color:var(--popover-foreground,var(--foreground));border:1px solid var(--border-strong,var(--border));box-shadow:var(--shadow-pop);font-size:12px;line-height:16px;pointer-events:none}
.sync-tip[hidden]{display:none} .sync-tip .st-h{margin:0 0 6px;font-weight:500} .sync-tip .st-l{margin:0;padding-left:16px;color:var(--muted-foreground)} .sync-tip p.st-l{padding:0}
.sync-tip ol.st-l li{margin:2px 0} .sync-tip ol.st-l b{color:var(--foreground);font-weight:500;font-variant-numeric:tabular-nums}
.sync-off{display:flex;align-items:center;gap:10px;margin:0 0 16px;padding:12px 16px;border-radius:16px;background:var(--warn-soft);color:var(--foreground);font-size:14px;line-height:20px}
.sync-off .ob-ic{flex:none;width:8px;height:8px;border-radius:50%;background:var(--warn)} .sync-off .ob-n{display:none}
@media (max-width:639.98px){ .sync-off .ob-w{display:none} .sync-off .ob-n{display:inline} }
.off-why{display:block;margin-top:4px;color:var(--muted-foreground);font-size:12px;line-height:16px}
html.ibo-offline main input[data-off-ro]{cursor:not-allowed;opacity:.8}
.sync-fail.off .sf-ic{width:40px;height:40px;border-radius:50%;background:var(--muted);position:relative}
.sync-fail.off .sf-ic::after{content:"";position:absolute;inset:14px;border-radius:50%;background:var(--muted-foreground)}
/* FIX v12.46 · Settings → Project → Data */
.dc-h{font:600 14px/20px var(--font-sans);margin:20px 0 8px}
.dc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.dc-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;min-height:56px;padding:8px 0;border-top:1px solid var(--border)}
.dc-row:first-child{border-top:0} .dc-t{display:flex;flex-direction:column;gap:2px;font-size:14px;line-height:20px} .dc-a{display:flex;gap:8px;flex-wrap:wrap}
.sync-why{margin:4px 0 0;color:var(--warn);font-size:12px;line-height:16px;text-align:left;white-space:normal}
/* FEATURE v12.47 · AI insights on top of the Dashboard (artboard AiInsightsTop): the whole width, under the month line, above the cards */
.aiq{margin:0 0 16px;padding:20px 24px;border-radius:26px;background:var(--card);border:1px solid var(--border)}
.aiq-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:32px}
.aiq-ti{display:inline-flex;align-items:center;gap:8px;margin:0;font:600 16px/24px var(--font-sans)} .aiq-ti svg{color:var(--series-3,#7E6ADE)}
.aiq-m{color:var(--muted-foreground);font-size:13px;line-height:20px} .aiq-n{display:inline-flex;gap:6px;margin-left:auto}
.aiq-tg{margin-left:8px} .aiq-tg svg{transition:transform var(--dur-3,.2s) var(--ease-out,ease)} .aiq-tg[aria-expanded="true"] svg{transform:rotate(180deg)}
.aiq-c .aiq-n{margin-left:0} .aiq-cl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-foreground);font-size:14px}
.aiq-c .aiq-tg{margin-left:auto}
.aiq-b{margin-top:14px;display:flex;flex-direction:column;gap:12px} .aiq-tabs{align-self:flex-start}
.aiq-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:1100px){ .aiq-row{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:720px){ .aiq-row{grid-template-columns:1fr} }
.aiq-tile{display:flex;flex-direction:column;gap:8px;min-height:112px;padding:16px;border-radius:16px;background:color-mix(in oklch,var(--foreground) 4%,transparent);min-width:0}
.aiq-r1{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;line-height:16px}
.aiq-type{display:inline-flex;align-items:center;gap:4px;color:var(--foreground)} .aiq-conf{color:var(--muted-foreground)}
.aiq-t{margin:0;font:600 15px/20px var(--font-sans);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-variant-numeric:tabular-nums}
.aiq-l{margin:0;color:var(--muted-foreground);font-size:13px;line-height:18px;font-variant-numeric:tabular-nums}
.aiq-src{align-self:flex-start;padding:1px 8px 0;border-radius:999px;background:var(--muted);color:var(--muted-foreground);font-size:12px;line-height:20px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aiq-a{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}
.aiq-rg{position:relative;height:8px;margin:6px 0 0;border-radius:999px;background:var(--muted)}
.aiq-band{position:absolute;top:0;bottom:0;border-radius:999px;background:color-mix(in oklch,var(--chart-1,var(--foreground)) 35%,transparent)}
.aiq-plan{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:var(--foreground);opacity:.7}
.aiq-pt{position:absolute;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--foreground);box-shadow:0 0 0 2px var(--card)}
.aiq-rl{display:flex;justify-content:space-between;gap:8px;color:var(--muted-foreground);font-size:12px;line-height:16px;font-variant-numeric:tabular-nums}
.aiq-f{display:flex;align-items:center;gap:16px;flex-wrap:wrap} .aiq-f .btn{margin-left:auto}
.aiq-note,.aiq-empty,.aiq-msg p{margin:0;font-size:14px;line-height:20px;color:var(--muted-foreground)} .aiq-msg{flex-direction:row;align-items:center;gap:12px;flex-wrap:wrap}
.aiq-note .lnk{font:inherit;color:var(--foreground);text-decoration:underline;background:none;border:0;padding:0;cursor:pointer}
.aiq-sk i{display:block;height:12px;border-radius:999px;background:var(--muted);margin:4px 0} .aiq-sk i:nth-child(2){width:70%} .aiq-sk i:nth-child(3){width:45%}
@media (prefers-reduced-motion:no-preference){ .aiq-sk i{animation:syncPulse var(--dur-progress,1.2s) var(--ease-io,ease-in-out) infinite alternate} }
/* FEATURE v12.48 · Home (artboard GuestHome): a guest's page, the sign-in window, your dashboards */
.gsi-wrap{color-scheme:light}   /* the Google iframe on a dark page: no white frame around the button */
.gh{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh;min-height:100dvh;background:var(--background)}
.gh-nav{position:sticky;top:0;height:100vh;height:100dvh;display:flex;flex-direction:column;gap:16px;padding:16px 12px;border-right:1px solid var(--border);box-sizing:border-box}
.gh-brand{display:flex;align-items:center;gap:10px;color:var(--foreground);text-decoration:none;padding:4px 8px} .gh-brand .auth-logo{width:32px;height:32px;font-size:12px;margin:0}
.gh-mn{display:flex;flex-direction:column;gap:2px} .gh-mn .mg{margin:14px 8px 4px;font-size:12px;color:var(--muted-foreground)}
.gh-mi{display:flex;align-items:center;gap:10px;min-height:36px;padding:0 10px;border-radius:999px;color:var(--muted-foreground);text-decoration:none;font-size:14px}
.gh-mi:hover{color:var(--foreground);background:var(--muted)} .gh-mi.on{color:var(--foreground);background:var(--muted)}
.gh-bo{margin-top:auto;padding:16px;border-radius:16px;background:color-mix(in oklch,var(--foreground) 4%,transparent);display:flex;flex-direction:column;gap:6px;font-size:13px;line-height:18px}
.gh-bo p{margin:0;color:var(--muted-foreground)} .gh-bo .btn{align-self:flex-start;margin-top:4px}
.gh-m{min-width:0} .gh-h{display:flex;align-items:center;justify-content:flex-end;gap:12px;height:64px;padding:0 24px} .gh-mbrand{display:none;margin-right:auto;font-weight:600}
.gh-lang{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:999px;background:var(--muted);color:var(--foreground);text-decoration:none!important}
.gh-in{max-width:1180px;margin:0 auto;padding:8px 32px 48px;display:flex;flex-direction:column;gap:24px}
.gh-t{margin:0;font:600 32px/1.15 var(--font-sans);letter-spacing:-.01em;text-wrap:balance} .gh-sub{margin:-12px 0 0;color:var(--muted-foreground);font-size:15px;line-height:22px;max-width:70ch}
.gh-strip{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:20px 24px;border-radius:26px;border:1.5px dashed var(--border-strong,var(--border))}
.gh-strip h2{margin:0 0 4px;font:600 16px/22px var(--font-sans)} .gh-strip p{margin:0;color:var(--muted-foreground);font-size:14px;line-height:20px;max-width:60ch}
.gh-sb{display:flex;align-items:center;gap:8px;min-height:44px} .gh-sb .gsi-wrap:empty{display:none}
.hmk{display:flex;flex-direction:column;gap:12px} .hmk-top{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap} .hmk-top h2{margin:0;font:600 18px/24px var(--font-sans)}
.hmk-chips{display:none;align-self:flex-start}
.hmk-row3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:1100px){ .hmk-row3{grid-template-columns:1fr 1fr} }
.hmk-card{display:flex;flex-direction:column;gap:8px;padding:20px;border-radius:26px;background:var(--card);border:1px solid var(--border);min-width:0}
.hmk-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px} .hmk-h h3{margin:0;font:600 15px/20px var(--font-sans)}
.hmk-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.hmk-row{display:grid;grid-template-columns:22px 28px minmax(0,1fr) auto 44px;align-items:center;gap:10px;min-height:48px;color:var(--foreground);text-decoration:none;border-top:1px solid var(--border)}
.hmk-l li:first-child .hmk-row{border-top:0} .hmk-row:hover .hmk-n b{text-decoration:underline}
.hmk-r{color:var(--muted-foreground);font-size:13px;text-align:right} .hmk-lg{width:28px;height:28px;border-radius:8px;object-fit:contain;background:#fff}
.hmk-ini{display:grid;place-items:center;background:var(--muted);color:var(--foreground);font:600 11px/1 var(--font-sans)}
.hmk-n{display:flex;flex-direction:column;min-width:0} .hmk-n b{font-weight:500;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .hmk-n .cap{font-size:12px}
.hmk-x{font-weight:600;font-size:14px;font-variant-numeric:tabular-nums} .hmk-d{font-size:12px;text-align:right;font-variant-numeric:tabular-nums}
.hmk-d.pos,.hmk-mv .pos{color:var(--pos)} .hmk-d.neg{color:var(--neg)} .hmk-d.zero,.hmk-d.new{color:var(--muted-foreground)}
.hmk-mv{margin:0;font-size:13px;line-height:18px;color:var(--muted-foreground)} .hmk-mv b{color:var(--foreground);font-weight:500}
.hmk-f{display:flex;gap:16px;margin-top:auto;font-size:13px}
.hmk-sk i{display:block;height:14px;margin:10px 0;border-radius:999px;background:var(--muted)}
.gh-foot{display:flex;gap:16px;flex-wrap:wrap;align-items:center;justify-content:space-between;color:var(--muted-foreground);font-size:13px;line-height:18px;border-top:1px solid var(--border);padding-top:16px}
.gh-foot p{margin:0}
.gh-scrim{position:fixed;inset:0;z-index:var(--z-modal,60);display:grid;place-items:center;padding:16px;background:oklch(0 0 0 / 55%)}
.gh-dlg{position:relative;width:min(440px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:28px 28px 20px;border-radius:26px;background:var(--card);border:1px solid var(--border-strong,var(--border));box-shadow:var(--shadow-pop);display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;box-sizing:border-box}
.gh-x{position:absolute;top:12px;right:12px} .gh-dt{margin:6px 0 0;font:600 22px/28px var(--font-sans)} .gh-dp{margin:0;color:var(--muted-foreground);font-size:14px;line-height:20px}
.gh-why{margin:4px 0 0;padding:8px 12px;border-radius:12px;background:var(--muted);font-size:13px;line-height:18px}
.gh-di{width:100%;display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:8px} .gh-di .auth-state h2{font-size:18px}
.gh-di .gsi-wrap{display:flex;justify-content:center;width:100%;min-height:44px}
@media (max-width:639.98px){
  .gh{grid-template-columns:1fr} .gh-nav{display:none} .gh-mbrand{display:block} .gh-h{padding:0 16px}
  .gh-in{padding:8px 16px 40px} .gh-t{font-size:26px} .hmk-chips{display:inline-flex} .hmk-row3{grid-template-columns:1fr}
  .hmk-row3[data-tab="operator"] .hmk-c:not([data-k="operator"]),.hmk-row3[data-tab="provider"] .hmk-c:not([data-k="provider"]),.hmk-row3[data-tab="platform"] .hmk-c:not([data-k="platform"]){display:none}
  .gh-scrim{place-items:end center;padding:0} .gh-dlg{width:100%;border-radius:26px 26px 0 0;max-height:92dvh;padding-bottom:calc(20px + env(safe-area-inset-bottom,0px))}
}
.hp{display:flex;flex-direction:column;gap:24px} .hp-top h1{margin:0;font:600 24px/30px var(--font-sans)}
.hp-sec h2{margin:0 0 12px;font:600 16px/22px var(--font-sans)}
.hp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.hp-card{display:flex;flex-direction:column;gap:12px;min-height:200px;padding:20px;border-radius:26px;background:var(--card);border:1px solid var(--border);color:var(--foreground);text-decoration:none;text-align:left;font:inherit;cursor:pointer;box-sizing:border-box}
.hp-card:hover{border-color:var(--border-strong,var(--ring))} .hp-card:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.hp-h{display:flex;align-items:center;gap:10px} .hp-tile{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--muted);font-weight:600}
.hp-nm{display:flex;flex-direction:column;min-width:0} .hp-nm b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hp-m{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap} .hp-m .pill{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:999px;background:var(--muted);font-size:12px}
.hp-v{display:flex;flex-direction:column;gap:2px;margin:0} .hp-v b{font:600 24px/30px var(--font-sans);font-variant-numeric:tabular-nums} .hp-vl{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.hp-sk i{display:block;height:14px;border-radius:999px;background:var(--muted);margin:6px 0} .hp-sk i:first-child{height:24px;width:60%}
.hp-go{margin-top:auto;color:var(--muted-foreground);font-size:13px}
.hp-new{border-style:dashed;background:transparent;align-items:flex-start;justify-content:center} .hp-tr .btn{align-self:flex-start;margin-top:auto}
.hp-bar{display:block;height:8px;border-radius:999px;background:var(--muted);overflow:hidden} .hp-bar i{display:block;height:100%;background:var(--series-1)}
.hp-empty{padding:28px;border-radius:26px;border:1.5px dashed var(--border-strong,var(--border));display:flex;flex-direction:column;gap:8px} .hp-empty h3,.hp-empty p{margin:0} .hp-empty p{color:var(--muted-foreground);max-width:70ch}
@media (max-width:639.98px){ .hp-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;padding-bottom:4px} .hp-card{flex:0 0 84%;scroll-snap-align:start} }

/* ---------- FEATURE v12.51 · Acquisition “against the month” tiles, Lifecycle badge, Add detail, detail sheets (fact-detail.js) ---------- */
.dpanel.an-recon2{display:block;padding:20px 24px;text-align:left}
.an-recon2 .an-rh{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 16px;margin-bottom:14px}
.an-recon2 .an-rt{font:600 15px/1.3 var(--font-sans);margin:0;color:var(--foreground)}
.an-recon2 .an-ra{font-size:12px}
.an-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.an-tile{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:6px;min-width:0;height:auto;padding:12px 14px;border:1px solid var(--border-strong);border-radius:16px;background:transparent;color:var(--foreground);text-align:left;font:inherit;cursor:default}
button.an-tile{cursor:pointer} button.an-tile:hover{background:oklch(1 0 0 / 4%)} button.an-tile:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.an-tile.ok{border-color:color-mix(in oklch,var(--pos) 60%,transparent)} .an-tile.warn{border-color:color-mix(in oklch,var(--warn) 65%,transparent)}
.an-tl{font:500 12px/1.2 var(--font-sans);color:var(--muted-foreground)}
.an-tv{font:600 20px/1.15 var(--font-sans);font-variant-numeric:tabular-nums;color:var(--foreground)} .an-tile.ok .an-tv{color:var(--pos)}
.an-ts{font:400 12px/1.35 var(--font-sans);color:var(--muted-foreground);overflow-wrap:anywhere}
.an-rf{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;margin-top:14px;font-size:12px}
.an-rf .an-status{display:inline-flex;flex-wrap:wrap;gap:8px 12px;align-items:center}
.an-badge{display:inline-flex;align-items:center;min-height:22px;padding:1px 8px 0;border-radius:999px;font:500 12px/1.2 var(--font-sans);font-variant-numeric:tabular-nums;white-space:normal}
.an-badge.ok{color:var(--pos);background:color-mix(in oklch,var(--pos) 14%,transparent)} .an-badge.warn{color:var(--warn);background:var(--warn-soft)}
.an-miss{margin:6px 0 0;padding-left:18px;font:400 13px/1.6 var(--font-sans);color:var(--muted-foreground)} .an-miss .lnk{font:inherit}
.an-lown{margin-top:10px}
/* the department page: Acquisition by source · Feb ›, Add detail · N; the detail under a line */
.pf-head .fd-acq svg{margin-right:6px} .pf-head .fd-add svg{margin-left:6px}
.lnrows.pf-one .pf-cap .fd-split-l{display:inline-flex;align-items:center;gap:4px;font:inherit;color:var(--muted-foreground);text-decoration:underline;text-underline-offset:2px;background:none;border:0;padding:0;cursor:pointer;height:auto;min-height:0}
.lnrows.pf-one .pf-cap .fd-split-l:hover{color:var(--foreground)}
.lnrows.pf-one .pf-cap .fd-chip{display:inline-flex;align-items:center;height:22px;padding:1px 8px 0;margin-top:2px;font:500 12px/1 var(--font-sans);border-radius:999px;border:0;background:var(--secondary);color:var(--foreground);cursor:pointer}
.lnrows.pf-one .pf-cap .fd-chip.ok{color:var(--pos)} .lnrows.pf-one .pf-cap .fd-chip.warn{background:var(--warn-soft);color:var(--warn)}
.lnrows.pf-one .pf-cap:has(.fd-used){white-space:normal;overflow:visible;line-height:15px}
.lnrows.pf-one .pf-cap .fd-used{display:inline;white-space:normal;font:inherit;color:var(--muted-foreground);text-decoration:underline;text-underline-offset:2px;background:none;border:0;padding:0;height:auto;min-height:0;cursor:pointer;text-align:right}
.lnrows.pf-one .pf-cap .fd-use .lnk{font:inherit;color:var(--foreground);text-decoration:underline;text-underline-offset:2px;background:none;border:0;padding:0;height:auto;min-height:0;cursor:pointer}
.lnrows .fr.erow.lnr>.lr-msgs.fd-open{gap:4px;padding:4px 0 4px 14px;border-left:1px solid var(--border-strong);margin:2px 0 8px}
.fd-open .fd-r{display:grid;grid-template-columns:10px minmax(0,180px) 64px minmax(0,1fr);gap:8px;align-items:center;font:400 13px/1.45 var(--font-sans)}
.fd-open .fd-v{text-align:right;font-variant-numeric:tabular-nums} .fd-open .fd-p{color:var(--muted-foreground);font-size:12px} .fd-open .fd-p.t-caution{color:var(--warn)}
.fd-open .fd-t .fd-n,.fd-open .fd-t .fd-v{font-weight:600}
.fd-dot{display:inline-block;flex:none;width:8px;height:8px;border-radius:2px}
/* the Add detail menu */
.rmenu.fd-menu{padding:6px;border-radius:16px;max-width:calc(100vw - 16px);z-index:96}
.fd-menu .fd-mh{padding:8px 10px 6px;font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground)}
.rmenu.fd-menu button{height:auto;min-height:44px;display:flex;gap:12px;align-items:flex-start;padding:10px;border-radius:12px;white-space:normal}
.fd-menu .fd-mi{flex:none;margin-top:2px;color:var(--muted-foreground)}
.fd-menu .fd-mt{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.fd-menu .fd-m1{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 12px} .fd-menu .fd-m1 b{font:600 14px/1.3 var(--font-sans)}
.fd-menu .fd-mw,.fd-menu .fd-m2{font:400 12px/1.35 var(--font-sans);color:var(--muted-foreground)}
/* the detail sheets: 440 px on the right, from the bottom on a phone (mobile.css) */
#sheet.fd-sheet{--sheet-w:440px}
@media (max-width:760px){ #sheet.fd-sheet{--sheet-w:100%} }
#sheet.fd-sheet .fd-sub{margin:0 0 12px}
.fd-g{display:grid;grid-template-columns:minmax(0,1fr) repeat(var(--fd-c),minmax(80px,116px));gap:8px 10px;align-items:center;margin:8px 0 12px}
.fd-gh{font:500 12px var(--font-sans);color:var(--muted-foreground)} .fd-gh.r,.fd-gt.r{text-align:right}
.fd-ch{display:flex;align-items:center;gap:8px;font:500 14px var(--font-sans);min-width:0}
.fd-gt{font:600 14px var(--font-sans);font-variant-numeric:tabular-nums;padding-top:8px;border-top:1px solid var(--border)}
.fd-g .fld.fd-in,.fd-kr .fld.fd-in{width:100%;text-align:right;font-variant-numeric:tabular-nums}
.fd-gall{grid-column:1/-1}
.fd-strip{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:14px;margin:8px 0;font:400 13px/1.45 var(--font-sans);color:var(--foreground)}
.fd-strip.warn{background:var(--warn-soft);border:1px solid color-mix(in oklch,var(--warn) 45%,transparent)} .fd-strip.warn>span:first-child{color:var(--warn)}
.fd-strip.ok{border:1px solid color-mix(in oklch,var(--pos) 50%,transparent)} .fd-strip.ok>span:first-child{color:var(--pos)}
.fd-strip.info{border:1px solid var(--border-strong)}
.fd-kr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:7px 0}
.fd-kr.fd-fr{grid-template-columns:minmax(0,1fr) 130px}
.fd-kn{display:flex;flex-direction:column;gap:2px;font:500 14px var(--font-sans)} .fd-kn .an-sub{font-size:12px;font-weight:400}
.fd-kv{font:500 14px var(--font-sans);font-variant-numeric:tabular-nums;text-align:right}
.fd-err{grid-column:1/-1;color:var(--neg);font:400 12px/1.4 var(--font-sans)}
.fd-eb{margin-top:16px}
.fd-sl{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,190px);gap:6px 12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}
.fd-sn{display:flex;flex-direction:column;gap:2px;min-width:0} .fd-sw{grid-column:1/-1;font-size:12px}
.fd-why{font:400 12px/1.4 var(--font-sans);color:var(--muted-foreground)}
.fd-more{margin-top:14px} .fd-go{margin-top:2px}
/* ---------- FEATURE v12.53 · AI insights made clear: verdict, 1 Fix first · 2 Where EBIT moved · 3 Watch next (ai-insights.js, artboard AiInsights2) ---------- */
.aiq-cnt{display:inline-flex;align-items:center;gap:6px;font-size:13px;line-height:20px;color:var(--foreground);white-space:nowrap} .aiq-n{gap:14px;flex-wrap:wrap}
.aiq-dot{display:inline-block;width:8px;height:8px;border-radius:999px;background:var(--muted-foreground);flex:none}
.aiq-dot.warn{background:var(--warn)} .aiq-dot.neg{background:var(--neg)} .aiq-dot.pos{background:var(--pos)} .aiq-dot.outline,.aiq-dot.muted{background:transparent;box-shadow:inset 0 0 0 1.5px var(--muted-foreground)}
.aiq-v{margin:0;max-width:1100px;font:500 17px/26px var(--font-sans);font-variant-numeric:tabular-nums;text-wrap:pretty}
.aiq-st{margin:10px 0 0;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;line-height:20px;color:var(--muted-foreground)} .aiq-st svg{color:var(--warn);flex:none}
.aiq-g{display:grid;gap:12px;grid-template-columns:minmax(0,1fr);align-items:start}
.aiq-k{display:flex;flex-direction:column;gap:10px;min-width:0;padding:16px;border-radius:16px;background:color-mix(in oklch,var(--foreground) 4%,transparent)}
.aiq-k.k-fix{background:color-mix(in oklch,var(--warn) 11%,transparent);box-shadow:inset 0 0 0 1px color-mix(in oklch,var(--warn) 40%,transparent)}
.aiq-k.aiq-sk{min-height:180px}
/* the strip's own width decides (the menu takes 248 px of the window): three columns 400 | 1fr | 380 when the middle one keeps ≥ 460 px,
   else blocks 1 and 3 in a row and block 2 the whole width under them */
.aiq{container:aiq / inline-size}
@container aiq (min-width:1290px){
  .aiq-g.l-fix-br-fc{grid-template-columns:400px minmax(0,1fr) 380px}
  .aiq-g.l-fix-br{grid-template-columns:400px minmax(0,1fr)}
  .aiq-g:has(> .aiq-sk){grid-template-columns:400px minmax(0,1fr) 380px} }
@container aiq (min-width:900px){ .aiq-g.l-br-fc{grid-template-columns:minmax(0,1fr) 380px} }
@container aiq (min-width:680px) and (max-width:1289.98px){
  .aiq-g.l-fix-br-fc{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"fix fc" "br br"}
  .aiq-g.l-fix-br-fc>.k-fix{grid-area:fix} .aiq-g.l-fix-br-fc>.k-fc{grid-area:fc} .aiq-g.l-fix-br-fc>.k-br{grid-area:br} }
@container aiq (min-width:680px){ .aiq-g.l-fix-fc{grid-template-columns:minmax(0,1fr) minmax(0,1fr)} }
.aiq-kh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:24px}
.aiq-no{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:999px;background:var(--foreground);color:var(--background);font:600 12px/1 var(--font-sans);flex:none}
.aiq-kl{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;line-height:16px;color:var(--muted-foreground)}
.aiq-sw{display:inline-flex;align-items:center;gap:5px;color:var(--foreground)}
.aiq-kt{margin:0;font:600 15px/21px var(--font-sans);font-variant-numeric:tabular-nums;text-wrap:balance}
.aiq-kc{font-size:12px;color:var(--muted-foreground)}
.aiq-hb{display:flex;flex-direction:column;gap:6px}
.aiq-hr{display:grid;grid-template-columns:minmax(64px,auto) minmax(0,1fr) auto;gap:10px;align-items:center;font-size:13px;line-height:18px}
.aiq-hl{color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}
.aiq-ht{display:block;height:10px;border-radius:999px;background:color-mix(in oklch,var(--foreground) 6%,transparent);overflow:hidden}
.aiq-ht i{display:block;height:100%;border-radius:999px;background:var(--chart-2,var(--muted-foreground))}
.aiq-hr.warn .aiq-ht i{background:var(--warn)} .aiq-hr.warn .aiq-hl{color:var(--foreground);font-weight:500}
.aiq-hv{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.aiq-cz{display:flex;flex-direction:column;gap:4px;font-size:13px;line-height:19px} .aiq-czk{font-weight:600}
.aiq-cz ul{margin:0;padding-left:18px;color:var(--muted-foreground)}
.aiq-more{align-self:flex-start;font:500 13px var(--font-sans);color:var(--foreground);background:none;border:0;padding:0;text-decoration:underline;cursor:pointer}
.aiq-br{display:flex;flex-direction:column}
.aiq-tot{display:flex;justify-content:space-between;gap:12px;padding:8px 0;font-size:14px;line-height:20px;border-bottom:1px solid var(--border)} .aiq-tot:last-child{border-bottom:0;border-top:1px solid var(--border)}
.aiq-tot b{font-weight:600;font-variant-numeric:tabular-nums}
.aiq-sec{padding:10px 0 4px;font-size:12px;line-height:16px;font-weight:500;color:var(--muted-foreground)} .aiq-sec.neg{color:var(--neg)} .aiq-sec.pos{color:var(--pos)}
.aiq-r{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-height:40px}
.aiq-rb{display:grid;grid-template-columns:20px minmax(120px,1.3fr) minmax(80px,1fr) 92px;align-items:center;gap:10px;min-height:40px;width:100%;padding:0 6px;margin:0 -6px;border:0;border-radius:10px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.aiq-rb.st{cursor:default}
button.aiq-rb:hover{background:color-mix(in oklch,var(--foreground) 5%,transparent)} .aiq-r.open button.aiq-rb{background:color-mix(in oklch,var(--foreground) 7%,transparent)}
button.aiq-rb:focus-visible{outline:2px solid var(--ring,var(--foreground));outline-offset:1px}
.aiq-rn{font:600 12px var(--font-sans);color:var(--muted-foreground);text-align:center;font-variant-numeric:tabular-nums}
.aiq-rl{display:flex;align-items:center;gap:6px;min-width:0;font-size:14px} .aiq-rname{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aiq-see{display:inline-flex;align-items:center;gap:3px;height:20px;padding:0 7px;border-radius:999px;background:var(--warn-soft);color:var(--warn);font-size:11.5px;font-weight:500;white-space:nowrap;flex:none}
.aiq-bt{position:relative;display:block;height:10px}
.aiq-bt .z{position:absolute;left:22%;top:-5px;bottom:-5px;width:1px;background:color-mix(in oklch,var(--foreground) 20%,transparent)}
.aiq-bt .b{position:absolute;top:0;bottom:0;border-radius:4px}
.aiq-r.neg .aiq-bt .b{background:var(--neg)} .aiq-r.pos .aiq-bt .b{background:var(--pos)}
.aiq-rv{text-align:right;font-variant-numeric:tabular-nums;font-size:14px;white-space:nowrap} .aiq-r.neg .aiq-rv{color:var(--neg)} .aiq-r.pos .aiq-rv{color:var(--pos)}
.aiq-r.oth .aiq-rname,.aiq-r.sub .aiq-rname{color:var(--muted-foreground)} .aiq-r.sub{min-height:32px} .aiq-r.sub .aiq-rb{min-height:32px;font-size:13px}
.aiq-ra{display:flex;justify-content:flex-end;min-width:84px}
.aiq-ro{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-start;margin:4px 0 8px;padding:12px;border-radius:12px;background:color-mix(in oklch,var(--foreground) 4%,transparent)}
.aiq-rt{display:flex;flex-direction:column;gap:4px;min-width:200px;flex:1} .aiq-rt b{font-weight:600}
.aiq-6 .f-fact{fill:var(--chart-1)} .aiq-6 .f-warn{fill:var(--warn)} .aiq-6 .f-plan{fill:var(--foreground)} .aiq-6 .f-x,.aiq-fcc .f-x,.aiq-fcc .f-t{fill:var(--muted-foreground);font:11px var(--font-sans)}
.aiq-fcc{display:block;width:100%;max-width:420px;height:auto}
.aiq-fcc .f-g{stroke:var(--border)} .aiq-fcc .f-fl{fill:none;stroke:var(--chart-1);stroke-width:2} .aiq-fcc .f-dot{fill:var(--chart-1)}
.aiq-fcc .f-pl{fill:none;stroke:var(--foreground);stroke-opacity:.7;stroke-width:2;stroke-dasharray:4 4}
.aiq-fcc .f-cone{fill:color-mix(in oklch,var(--chart-1) 14%,transparent)} .aiq-fcc .f-wh{stroke:var(--chart-1);stroke-width:1.5}
.aiq-fcc .f-hol{fill:var(--card);stroke:var(--chart-1);stroke-width:2}
.aiq-fcc .f-pill rect{fill:var(--muted)} .aiq-fcc .f-pill text{fill:var(--foreground);font:500 11px var(--font-sans)}
.aiq-lg{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted-foreground)} .aiq-lg span{display:inline-flex;align-items:center;gap:6px}
.aiq-lg i{display:inline-block;width:16px;height:2px;background:var(--chart-1)} .aiq-lg i.lp{background:repeating-linear-gradient(90deg,var(--foreground) 0 4px,transparent 4px 7px);opacity:.7} .aiq-lg i.lr{height:8px;border-radius:2px;background:color-mix(in oklch,var(--chart-1) 22%,transparent)}
.aiq-old{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:14px;background:var(--warn-soft);box-shadow:inset 0 0 0 1px color-mix(in oklch,var(--warn) 40%,transparent)}
.aiq-old p{margin:0;font-size:14px;line-height:20px} .aiq-old svg{color:var(--warn);flex:none;margin-top:2px}
.aiq-links{display:flex;gap:18px;flex-wrap:wrap} .aiq-links .lnk{font:500 14px var(--font-sans);color:var(--foreground);background:none;border:0;padding:0;text-decoration:underline;cursor:pointer}
.aiq-rv2{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted-foreground)} .aiq-rv2 svg{color:var(--pos)}
.aiq-ord{flex:1 1 320px}
.aiq-cl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px} .aiq-cl li{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14px} .aiq-cl li>span:nth-child(2){flex:1;min-width:0}
.aiq-c .aiq-cl{flex:1;min-width:0}
.aiq .btn[disabled]{opacity:.5;cursor:not-allowed}
@media (max-width:719.98px){ .aiq{padding:16px} .aiq-v{font-size:16px;line-height:24px} .aiq-n{gap:10px} .aiq-rb{grid-template-columns:18px minmax(0,1.6fr) minmax(48px,.8fr) 80px;gap:8px} .aiq-ra{min-width:0}
  .aiq-f{gap:10px} .aiq-ord{flex-basis:100%} }
@media (prefers-reduced-motion:reduce){ .aiq-bt .b,.aiq-ht i{transition:none} }

/* FEATURE v12.55 · Admin → Market data → Games (board MarketGames F) */
.mk-gs .fld{height:32px;min-width:220px;max-width:320px}
.mk-gcw{display:flex;gap:12px;align-items:flex-start}
.mk-gct{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}
.mk-gc{flex:none;width:64px;height:48px;border-radius:10px;overflow:hidden;background:var(--muted)}
.mk-gc img{width:64px;height:48px;object-fit:cover;display:block}
.mk-gc.none{background:transparent;border:1px dashed var(--border)}
.mk-gcv .cap{max-width:20ch}
.mk-gct .btn.ghost{margin-left:-12px}
.mk-gd{max-width:44ch;margin-top:2px}



/* ======================================================= FEATURE v12.28 · IBO on a phone and a tablet (artboard Mobile.dc.html)
   One set of breakpoints for the whole site (app/mobile.js has the same numbers in D.BP):
     phone < 640 · tablet 640–1023 · laptop 1024–1279 · desktop ≥ 1280 — nothing here touches the desktop.
   Media queries for the shell (menu, tab bar, sheets), container queries where a part lives in different widths (cards, tables). */
:root{--mtop-h:52px;--tabbar-h:56px;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--tap:44px}
#mTop,#mTabs{display:none}
.m-only{display:none}

/* ----------------------------------------------------------------------------- touch targets: 44 × 44 below 1024, and on a touch screen up to 1279 */
@media (max-width:1023.98px), (pointer:coarse) and (max-width:1279.98px){
  :root{--control-h:44px}
  .btn,a.btn,button.btn{min-height:var(--tap)}
  .btn.sm,a.btn.sm,button.btn.sm{min-height:var(--tap);padding-left:14px;padding-right:14px}
  .ib,button.ib,a.ib{min-width:var(--tap);min-height:var(--tap)}
  .seg>button,.seg>a,.seg [role=tab],.seg [role=radio],.segl{min-height:var(--tap)}
  input.fctl,select.fctl,textarea.fctl,.fctl{min-height:var(--tap)}
  .mpill .stp{width:var(--tap);height:var(--tap)}
  .lnrows .fr.erow.lnr .lr-mb,.rmb{width:var(--tap);height:var(--tap)}
  .fx-trig{min-height:var(--tap);display:inline-flex;align-items:center}
  .xpd{min-width:var(--tap);min-height:var(--tap)}
  .mi,.key,.mtoggle{min-height:var(--tap)}
  .ub{min-height:56px}
  .psw-m [role^=menuitem],#pmenu [role^=menuitem],#pmenu a{min-height:var(--tap)}
  .hpill{min-height:var(--tap)}
  .bell{width:var(--tap);height:var(--tap)}
  .lnk[data-act],button.lnk{min-height:var(--tap);display:inline-flex;align-items:center}
  input[type=checkbox],input[type=radio]{width:22px;height:22px}
  label:has(>input[type=checkbox]),label:has(>input[type=radio]){min-height:var(--tap);display:inline-flex;align-items:center;gap:10px}
  .badge.click,[data-act].badge{min-height:var(--tap)}
  .ms-c{min-height:56px}
  /* everything else you can press: 44 × 44 (zero-specificity, so a component that sets its own size keeps it when it is bigger) */
  :where(main,#sheet,.hdr,.menu,[data-mobile-shell],.ntf-pop,#pmenu,.psw-m,.cdlg) :where(button,[role=button],[role=tab],[role=radio]:not(input),[role=switch],[role=menuitem],[role=menuitemradio],[role=option],summary,select,[data-act]:not(a):not(input):not(textarea):not(label)){min-height:var(--tap);min-width:var(--tap)}
  :where(main,#sheet,.hdr,.menu,[data-mobile-shell],.ntf-pop,#pmenu,.psw-m,.cdlg) :where(span,i,b,em,div)[data-act]{display:inline-flex;align-items:center}
  :where(main,#sheet,.hdr,.menu,[data-mobile-shell],.ntf-pop,#pmenu,.psw-m,.cdlg) :where(a[href]:not(:is(p,li,.cap,.sub,.muted,.lnk-in,.lr-mt,.ds85) a)){display:inline-flex;align-items:center;min-height:var(--tap);min-width:var(--tap)}
  :where(main,#sheet,.cdlg) :where(input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=range]):not([type=file]),select){min-height:var(--tap)}
  .menu a.key,.menu .key,.mtoggle,.ub{min-width:var(--tap)!important;min-height:var(--tap)!important}
  .kc-link{display:inline-flex;align-items:center;min-height:var(--tap)}
  .cmt-cb,.fst-tg,.inv-r,.esel,.bp-x,.chip{min-height:var(--tap)!important;min-width:var(--tap)}
  .m-cbl{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:var(--tap);min-width:var(--tap);cursor:pointer;position:relative}
  .fst-a{min-height:var(--tap);align-content:center}
  .snav a{min-height:var(--tap)!important}
  /* an open AI finding: the words over the fact / plan bars (side by side the words got 0 px next to a 250 px chart) */
  .rd-card .rd-body{grid-template-columns:minmax(0,1fr)!important;row-gap:12px}
  .rd-card .rd-viz{width:auto!important;max-width:100%;min-width:0}
  /* footnote numbers inside a sentence (WCAG 2.5.8 inline): the line keeps its height, the finger gets a bigger invisible target */
  .rd-fn{min-height:0!important;min-width:0!important;position:relative}
  .rd-fn::after{content:'';position:absolute;inset:-14px -12px}
  .fst-tg{flex-wrap:wrap;row-gap:6px} .fst-t{white-space:nowrap}
  button.badge,.pf-dmore,.btn.pf-dmore{min-height:var(--tap)!important;min-width:var(--tap)!important}
  /* numbers are never cut: they wrap with their words (wells, KPI values, Why it changed) */
  .wc-sub,.wc-n,.kpi-v,.well .v,.well .kpi-v{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere}
  /* card headers: the actions wrap under the title instead of pushing the page sideways */
  .dpanel>.dp-h{flex-wrap:wrap;row-gap:8px} .dpanel>.dp-h>.dp-a,.dp-a>.row,.row.cl-tools{flex-wrap:wrap;max-width:100%;min-width:0}
}
@media (min-width:640px) and (max-width:1023.98px) and (min-height:500px), (min-width:640px) and (max-width:1023.98px) and (pointer:fine){
  .dtable.pcats .prow{grid-template-columns:32px minmax(96px,1fr) repeat(4,minmax(56px,auto)) 12px!important;column-gap:10px!important}
}

/* ============================================================================= phone · below 640 */
@media (max-width:639.98px), (pointer:coarse) and (max-height:499.98px) and (max-width:1023.98px){
  body:not(.auth){--nav-w:0px;--page-x:16px;--header-h:0px;--sheet-w:100%}
  body:not(.auth) .menu{display:none}
  body:not(.auth) .hdr{display:none}
  body:not(.auth) main{margin-left:0;padding:calc(var(--mtop-h) + var(--safe-t) + 16px) 0 calc(var(--tabbar-h) + var(--safe-b) + 24px)}
  body:not(.auth) main>.page{padding-left:calc(16px + var(--safe-l));padding-right:calc(16px + var(--safe-r))}
  body.landscape:not(.auth) main>.page,body:not(.auth) main>.page.m-center{max-width:560px;margin-inline:auto}
  .m-only{display:revert}
  main .ph-back{display:none!important}   /* Back is in the top bar */
  .no-m{display:none!important}

  /* before the first screen is drawn: the top bar's place, so the phone paints at once instead of a blank page (the desktop header is hidden) */
  body:not(.m-ready)::before{content:'IBO';position:fixed;z-index:45;left:0;right:0;top:0;height:calc(var(--mtop-h) + var(--safe-t));box-sizing:border-box;padding:calc(var(--safe-t) + 14px) 16px 0;font:700 15px/24px var(--font-sans);color:var(--muted-foreground);background:var(--background);border-bottom:1px solid var(--border)}
  /* top bar · 52 px: the project (or Back and the title), the month, the bell */
  #mTop:not([hidden]){display:block;position:fixed;z-index:45;left:0;right:0;top:0;padding-top:var(--safe-t);background:color-mix(in oklch,var(--background) 92%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}
  .mt-in{height:var(--mtop-h);display:flex;align-items:center;gap:6px;padding:0 calc(8px + var(--safe-r)) 0 calc(8px + var(--safe-l))}
  .mt-sp{flex:1}
  .mt-proj{display:flex;align-items:center;gap:10px;min-height:var(--tap);min-width:0;max-width:52vw;padding:4px 8px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--foreground);text-align:left;cursor:pointer}
  .mt-proj .pav,.mt-proj svg{flex:none}
  .mt-pn{display:flex;flex-direction:column;min-width:0}
  .mt-pn b{font:600 15px/1.2 var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mt-pn span{font:var(--text-caption);color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mt-back{flex:none;width:var(--tap);height:var(--tap)}
  .mt-tt{display:flex;flex-direction:column;min-width:0;flex:1}
  .mt-tt b{font:600 15px/1.2 var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mt-tt span{font:var(--text-caption);color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mt-tt+.mt-sp{display:none}
  .mt-month{display:inline-flex;align-items:center;gap:6px;flex:none;height:var(--tap);padding:0 12px;border:0;border-radius:var(--radius-pill);background:var(--muted);color:var(--foreground);font:600 14px/1 var(--font-sans);cursor:pointer;white-space:nowrap}
  .mt-month .dot{width:7px;height:7px;border-radius:50%;background:var(--muted-foreground)}
  .mt-month .dot.t-pos{background:var(--pos)} .mt-month .dot.t-neg{background:var(--neg)} .mt-month .dot.t-warn,.mt-month .dot.t-caution{background:var(--warn)}
  .mt-bell{position:relative;flex:none}
  .mt-bell .dot{position:absolute;top:10px;right:11px;width:8px;height:8px;border-radius:50%;background:var(--warn)}
  :is(.mt-proj,.mt-month,.mt-bell,.mt-back):focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}

  /* tab bar · 56 + the home bar: Dashboard · Plan & fact · P&L · AI · More */
  #mTabs:not([hidden]){display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);position:fixed;z-index:45;left:0;right:0;bottom:0;padding:4px calc(4px + var(--safe-r)) calc(4px + var(--safe-b)) calc(4px + var(--safe-l));background:color-mix(in oklch,var(--background) 94%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--border)}
  .mtab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:48px;border-radius:12px;color:var(--muted-foreground);text-decoration:none;font:500 11px/1.1 var(--font-sans)}
  .mtab span{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mtab.on{color:var(--foreground)}
  .mtab.on svg{stroke-width:2}
  .mtab:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--ring-focus)}
  .mt-badge{position:absolute;top:2px;left:calc(50% + 6px);min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--neg);color:#fff;font:600 11px/18px var(--font-sans);text-align:center;font-style:normal}

  /* the page header: the title stays in the page, the actions wrap under it */
  main .phead{gap:12px}
  main .phead .ph-a{flex-wrap:wrap;gap:8px}
  main h1,main .ph-t{font-size:24px;line-height:1.2}
  .toast{left:16px!important;right:16px!important;bottom:calc(var(--tabbar-h) + var(--safe-b) + 12px)!important;max-width:none!important;transform:none!important}

  /* ---------------------------------------------------------------- bottom sheets instead of side panels and dialogs */
  #sheet{top:auto!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;max-height:90vh!important;max-height:90dvh!important;border:0!important;border-top:1px solid var(--border-strong)!important;border-radius:24px 24px 0 0!important;box-shadow:0 -12px 40px oklch(0 0 0 / 45%)!important;z-index:96!important;padding-bottom:var(--safe-b)}
  #sheet::before{content:'';position:absolute;z-index:5;top:8px;left:50%;width:40px;height:4px;margin-left:-20px;border-radius:2px;background:var(--border-strong);pointer-events:none}
  #sheet .sh-h{padding-top:22px!important}
  #sheet .sh-b{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  #sheet .sh-f{position:sticky;bottom:0;background:var(--card);padding-bottom:calc(12px + var(--safe-b))!important;display:flex;flex-wrap:wrap;gap:8px}
  #sheet .sh-f .btn{flex:1 1 auto}
  body.sheet-open{overscroll-behavior-y:none}   /* dragging a sheet down never pulls the page to refresh */
  body.sheet-open::after{content:'';position:fixed;inset:0;z-index:95;background:var(--scrim);pointer-events:none}
  .cdlg-scrim{place-items:end stretch!important;padding:0!important;z-index:97!important}
  .cdlg-scrim>.cdlg{width:100%!important;max-width:none!important;max-height:90vh;max-height:90dvh;overflow-y:auto;border-radius:24px 24px 0 0!important;padding:28px 16px calc(16px + var(--safe-b))!important;position:relative;margin:0}
  .cdlg-scrim>.cdlg::before{content:'';position:absolute;top:8px;left:50%;width:40px;height:4px;margin-left:-20px;border-radius:2px;background:var(--border-strong)}
  .cdlg-scrim>.cdlg.bill-d31::before{display:none}
  .cdlg-a{position:sticky;bottom:calc(-16px - var(--safe-b));background:var(--background);padding-top:12px}
  .cdlg-a .btn{flex:1 1 auto}
  /* popovers that hang from the header or the menu: sheets too */
  .ntf-pop,#pmenu,.psw-m,.hpop,.rd-pop,.src-pop,.ftip-pop,.mcc-menu,.rmenu.lr-menu{position:fixed!important;left:0!important;right:0!important;top:auto!important;bottom:0!important;width:100%!important;max-width:none!important;max-height:85vh;max-height:85dvh;overflow-y:auto;border-radius:24px 24px 0 0!important;padding:24px 8px calc(12px + var(--safe-b))!important;z-index:98!important;box-shadow:0 -12px 40px oklch(0 0 0 / 45%)!important}
  :is(.ntf-pop,#pmenu,.psw-m,.hpop,.mcc-menu,.rmenu.lr-menu)::before{content:'';position:absolute;top:8px;left:50%;width:40px;height:4px;margin-left:-20px;border-radius:2px;background:var(--border-strong)}
  .rmenu.lr-menu button,.mcc-menu [role^=menuitem]{min-height:var(--tap)}

  /* ---------------------------------------------------------------- More */
  .m-more .mr-g{display:flex;flex-direction:column;background:var(--card);border-radius:var(--radius-card);padding:4px 12px}
  .m-more .mr-i{display:flex;align-items:center;gap:12px;min-height:56px;padding:6px 4px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--foreground);text-decoration:none;text-align:left;width:100%;cursor:pointer;font:inherit}
  .m-more .mr-i:last-child{border-bottom:0}
  .m-more .mr-i>svg:first-child{flex:none;color:var(--muted-foreground)}
  .m-more .mr-t{flex:1;display:flex;flex-direction:column;min-width:0}
  .m-more .mr-t b{font:500 15px/1.3 var(--font-sans)}
  .m-more .mr-t span{font:var(--text-caption);color:var(--muted-foreground)}
  .m-more .mr-c{display:inline-flex;align-items:center;gap:4px;font:var(--text-caption);color:var(--muted-foreground);white-space:nowrap}
  .m-more .mr-acct{flex-direction:row;align-items:center;gap:8px;padding:8px 12px}
  .m-more .mr-acct .mr-i{border:0;flex:1}
  .m-more .mr-acct .av{width:40px;height:40px;border-radius:50%;overflow:hidden;display:inline-grid;place-items:center;background:var(--muted);flex:none}

  /* ---------------------------------------------------------------- the month sheet */
  .ms-sheet .sh-b{display:flex;flex-direction:column;gap:16px}
  .ms-seg{display:grid!important;grid-template-columns:repeat(3,1fr);height:auto!important}
  .ms-y{display:flex;align-items:center;justify-content:space-between}
  .ms-y b{font:600 17px/1 var(--font-sans)}
  .ms-g{display:grid;gap:8px}
  .ms-g.g4{grid-template-columns:repeat(3,minmax(0,1fr))}
  .ms-g.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ms-c{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:8px 4px;border:1px solid transparent;border-radius:16px;background:var(--muted);color:var(--foreground);cursor:pointer}
  .ms-c b{font:600 15px/1.2 var(--font-sans)}
  .ms-c .st{font:500 11px/1.2 var(--font-sans);color:var(--muted-foreground);text-align:center}
  .ms-c .st.s-closed::before,.ms-c .st.s-fact::before,.ms-c .st.s-planning::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:4px;vertical-align:1px;background:var(--muted-foreground)}
  .ms-c .st.s-closed::before{background:var(--pos)} .ms-c .st.s-fact::before{background:var(--warn)}
  .ms-c.on{background:var(--primary);color:var(--primary-foreground)} .ms-c.on .st{color:inherit;opacity:.8}
  .ms-c:disabled{opacity:.45;cursor:default}
  .ms-c.lk{border-style:dashed;border-color:var(--border-strong);background:transparent}
  /* FIX v12.41 · the last month with data, in words; Go to latest month above the unit switch */
  .ms-c .ms-ld{font:600 11px/1.2 var(--font-sans);color:var(--foreground)} .ms-c.on .ms-ld{color:inherit}
  .ms-c.ld:not(.on){border-color:var(--border-strong)}
  .ms-latest{min-height:44px}
  .btn.block{width:100%}
}

/* ============================================================================= tablet · 640–1023: the rail stays; sheets keep their side, dialogs fit */
@media (min-width:640px) and (max-width:1023.98px) and (min-height:500px), (min-width:640px) and (max-width:1023.98px) and (pointer:fine){
  :root{--page-x:24px}
  /* the header fits: Month / Quarter / Half-year move into the month sheet (tap the month) */
  .hdr #pcSeg{display:none!important}
  .hdr #mLabel{cursor:pointer;text-decoration:underline dotted;text-underline-offset:4px}
  .cdlg-scrim>.cdlg{max-height:calc(100vh - 32px);overflow-y:auto}
}

/* ============================================================================= phone · the parts of the screens (FEATURE v12.28 §3.3–§3.9) */
@media (max-width:639.98px), (pointer:coarse) and (max-height:499.98px) and (max-width:1023.98px){
  /* panels: a 16 px inset (the 24 of the desktop eats a third of a phone) */
  main .dpanel,main section.card,main .card.dpanel{padding:16px;border-radius:22px}
  main .dpanel .wells{gap:8px}
  /* words wrap before anything is cut (numbers never are) */
  .drow .eyebrow,.dpt-s,.wc-sub,.wc-n,.kpi-v,.mrow-na,.dpanel .dp-d{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
  .drow.h{display:none!important}

  /* ---- Plan & fact · a card per line: the name, Plan (or Last fact), a big field, the status under it */
  .page.pf-dept .lnrows .fr.erow.lnr.h{display:none!important}
  .page.pf-dept .facts.erows.lnrows .fr.erow.lnr:not(.h){grid-template-columns:minmax(0,1fr) minmax(0,1fr) var(--tap)!important;grid-template-areas:"name name m" "last last last" "val val val" "cmp cmp cmp"!important;grid-template-rows:auto!important;row-gap:8px!important;column-gap:8px!important;padding:16px 0!important;align-items:start}
  .page.pf-dept .facts.erows.lnrows.r2 .fr.erow.lnr:not(.h){grid-template-areas:"name name m" "ref2 last last" "val val val" "cmp cmp cmp"!important}
  .page.pf-dept .lnrows .fr.erow.lnr>.e-ic{display:none!important}
  .page.pf-dept .lnrows .fr.erow.lnr>.e-name{grid-area:name;padding:0!important}
  .page.pf-dept .lnrows .fr.erow.lnr>.e-name .e-n{font:600 16px/1.3 var(--font-sans)}
  .page.pf-dept .lnrows .fr.erow.lnr .ds85{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;-webkit-line-clamp:unset!important;display:block!important}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-m{grid-area:m;justify-self:end;align-self:start}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-last,.page.pf-dept .lnrows .fr.erow.lnr>.lr-ref2{display:flex!important;align-items:baseline;justify-content:flex-start!important;gap:6px;min-height:0!important;text-align:left;font:var(--text-caption)}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-last .lr-k,.page.pf-dept .lnrows .fr.erow.lnr>.lr-ref2 .lr-k{display:inline!important;color:var(--muted-foreground)}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-last .pf-c,.page.pf-dept .lnrows .fr.erow.lnr>.lr-ref2 .pf-c{display:inline-flex;align-items:baseline;gap:6px;flex-wrap:wrap}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-last .pf-c,.page.pf-dept .lnrows .fr.erow.lnr>.lr-ref2 .pf-c{justify-content:flex-start!important;width:auto!important;min-width:0!important}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-last .pf-tx,.page.pf-dept .lnrows .fr.erow.lnr>.lr-ref2 .pf-tx{width:auto!important;min-width:0!important;text-align:left!important;padding:0!important;height:auto!important;line-height:1.3!important}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-last .pf-tx{font:500 14px/1.3 var(--font-sans);font-variant-numeric:tabular-nums}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-val{grid-area:val;display:block!important;width:100%}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-val>.lr-k{display:block!important;margin:0 0 4px;font:var(--text-caption);color:var(--muted-foreground);text-align:left!important}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-val .pf-c{display:flex;flex-direction:column;align-items:stretch;gap:6px}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-val .fld,.page.pf-dept .lnrows .fr.erow.lnr>.lr-val .tot-v,.page.pf-dept .lnrows .fr.erow.lnr>.lr-val .calcv{width:100%!important;max-width:none!important;height:48px!important;line-height:48px!important;font-size:17px!important;border-radius:16px}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-val .fld[data-unit="money"]:not([readonly]){background-position:calc(100% - 16px) 50%!important;padding-left:16px!important;padding-right:var(--cur-pad,32px)!important}
  .page.pf-dept .lnrows .fr.erow.lnr .pf-cap,.page.pf-dept .lnrows .fr.erow.lnr .src{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;max-width:none!important;text-align:left}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-cmp{grid-area:cmp;display:flex!important;justify-content:flex-start!important;align-items:baseline;gap:4px 14px;flex-wrap:wrap;font:var(--text-caption)}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-cmp .lr-k{display:inline!important;margin-right:4px}
  .page.pf-dept .lnrows .fr.erow.lnr>.lr-cmp>*{min-height:0!important}
  .page.pf-dept .lnrows .fr.erow.lnr>.msgl,.page.pf-dept .lnrows .fr.erow.lnr>.lr-msg,.page.pf-dept .lnrows .fr.erow.lnr>.e-st,.page.pf-dept .lnrows .fr.erow.lnr>.lr-st{grid-column:1 / -1!important}
  .page.pf-dept .lr-msg{display:grid!important;grid-template-columns:auto minmax(0,1fr) auto!important;align-items:center;gap:4px 10px}
  .page.pf-dept .lr-msg .lr-ma{grid-column:3!important;grid-row:1!important;justify-self:end!important;flex-wrap:nowrap!important}   /* the warning in one line under the field, its button on the right */
  .page.pf-dept .lr-msg.lr-rs{grid-template-columns:minmax(0,1fr)!important}
  .page.pf-dept .lr-mt{white-space:normal!important}
  .page.pf-dept .pf-tools{flex-wrap:wrap;gap:8px}
  .page.pf-dept .pf-tools .pf-keys,.page.pf-dept .pf-kbd,.page.pf-dept .pf-tl>.cap{display:none}
  .page.pf-dept .pf-up,.page.pf-dept .imp-zone{display:none}
  .pf-fa.m-proxied .btn.primary{display:none}
  /* chips: every department with its progress, sideways */
  .m-chips{margin:0 -16px 12px;position:relative}
  .m-chips-t{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px 16px;scroll-snap-type:x proximity}
  .m-chips-t::-webkit-scrollbar{display:none}
  .m-chip{flex:none;display:inline-flex;align-items:center;gap:8px;min-height:var(--tap);padding:0 16px;border-radius:var(--radius-pill);background:var(--muted);color:var(--foreground);text-decoration:none;font:500 14px/1 var(--font-sans);scroll-snap-align:start;white-space:nowrap}
  .m-chip.on{background:var(--primary);color:var(--primary-foreground)}
  .m-chip-n{font-variant-numeric:tabular-nums;color:var(--muted-foreground)} .m-chip.on .m-chip-n{color:inherit;opacity:.75} .m-chip-n.ok{color:var(--pos)}
  .m-chip:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring-focus)}
  .m-prog{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;align-items:baseline;margin:0 0 16px}
  .m-prog-t{font:var(--text-body);color:var(--muted-foreground)} .m-prog-t b{color:var(--foreground);font-weight:600}
  .m-prog-p{font:600 14px/1 var(--font-sans);font-variant-numeric:tabular-nums}
  .m-prog-b{grid-column:1 / -1;height:6px;border-radius:3px;background:var(--muted);overflow:hidden} .m-prog-b i{display:block;height:100%;background:var(--pos);border-radius:3px}
  /* the bar over the tab bar: where the department stands and its Approve */
  .m-pfbar:not([hidden]){position:fixed;z-index:44;left:0;right:0;bottom:calc(var(--tabbar-h) + var(--safe-b) + 8px);margin:0 8px;display:flex;align-items:center;gap:12px;padding:10px 10px 10px 16px;border:1px solid var(--border-strong);border-radius:22px;background:color-mix(in oklch,var(--card) 96%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 -8px 30px oklch(0 0 0 / 35%)}
  .mpb-t{flex:1;min-width:0;font:var(--text-caption);color:var(--muted-foreground)} .mpb-t b{color:var(--foreground);font-weight:600}
  .mpb-w{display:block;color:var(--warn)}
  .m-pfbar .btn{flex:none}
  body.m-bar:not(.auth) main{padding-bottom:calc(var(--tabbar-h) + var(--safe-b) + 112px)}
  body.sheet-open .m-pfbar{display:none}

  /* ---- the dashboard: the month card stacked, the small cards in a carousel, the wide panels as rows */
  .grid12.rows{display:flex!important;flex-direction:column;gap:12px}
  .grid12.rows>.wd{width:100%!important;grid-column:auto!important;min-width:0}
  .m-car{margin:0 -16px;min-width:0}
  .m-car-t{display:flex;gap:12px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding:0 16px;padding:0 16px;scrollbar-width:none}
  .m-car-t::-webkit-scrollbar{display:none}
  .m-car-t>.wd{flex:0 0 86%;min-width:0;scroll-snap-align:start;display:flex;flex-direction:column;padding:0!important;border:0!important;background:none!important;min-height:0!important;position:relative}
  .m-car-t>.wd>*{flex:1 1 auto;min-width:0}
  .m-car-t:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--ring-focus);border-radius:26px}
  .m-car-f{display:flex;align-items:center;justify-content:center;gap:12px;padding:10px 16px 0}
  .m-car-d{display:inline-flex;gap:6px} .m-car-d i{width:6px;height:6px;border-radius:3px;background:var(--border-strong);transition:background-color var(--dur-2) var(--ease-out)} .m-car-d i.on{width:18px;background:var(--foreground)}
  .m-car-n{font:var(--text-caption);color:var(--muted-foreground);font-variant-numeric:tabular-nums}
  .grid12.rows .kcard,.grid12.rows .mcc{min-width:0}
  /* speed (§3.8): dashboard panels after the first two are laid out when they come near the screen (their menus and tips live on <body>) */
  .grid12.rows>.wd:nth-child(n+3){content-visibility:auto;contain-intrinsic-size:auto 420px}
  .chart,.chart svg{touch-action:pan-y}
  .mpage .mscroll .tchart.large{min-width:0!important}   /* the metric chart fits the screen (it scrolled sideways at 680) */
  .mpage .mscroll{overflow-x:visible}
  .chart{min-height:0}

  /* the profit ladder: rows of 56 with the chevron, the step and its fact; % of plan under the fact */
  .plad{overflow-x:visible!important}
  .plad-r,.plad-x{min-width:0!important}
  .plad .plad-r.h{display:none!important}
  .plad .plad-r{grid-template-columns:16px 28px minmax(0,1fr) auto!important;grid-template-rows:auto auto!important;column-gap:10px!important;row-gap:2px!important;min-height:56px!important;padding:6px 0!important;align-content:center}
  .plad .plad-r>.plad-ch,.plad .plad-r>.ichip{grid-row:1 / 3!important}
  .plad .plad-r.ln>:first-child{grid-column:1;grid-row:1 / 3}
  .plad .plad-r.ln>.plad-guide{grid-column:2;grid-row:1 / 3}
  .plad .plad-r>.plad-n{grid-column:3!important;grid-row:1!important;min-width:0}
  .plad .plad-r.ln>.plad-n{grid-row:1 / 3!important}
  .plad .plad-r>.plad-sub{grid-column:3!important;grid-row:2!important}
  .plad .plad-r .plad-nt{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
  .plad .plad-r .plad-f{grid-column:4!important;grid-row:1!important;text-align:right;font-weight:600;font-size:15px!important;white-space:nowrap}
  .plad .plad-r .plad-pc{grid-column:4!important;grid-row:2!important;text-align:right;font:var(--text-caption);color:var(--muted-foreground);white-space:nowrap}
  .plad .plad-r .plad-pc:not(:empty)::after{content:' of plan'}
  .plad .plad-r .plad-p,.plad .plad-r .plad-m,.plad .plad-r .plad-d{display:none!important}

  /* ---- P&L: the summary as 2 × 2 tiles; the categories as rows that open in place */
  .wells.pstrip{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
  .wells.pstrip>.well{min-width:0;padding:14px!important;min-height:0!important}
  .wells.pstrip .sv,.wells.pstrip .well-v,.wells.pstrip b{font-size:20px;line-height:1.2;overflow-wrap:anywhere}
  .wells.pstrip .badge{white-space:normal;height:auto;min-height:22px;line-height:1.2}

  /* ---- tables: a card per row (default) or the table with its first column held */
  .m-ct{display:inline-flex!important;margin:0 0 12px}
  .m-tw.cards table,.m-tw.cards tbody,.m-tw.cards tfoot{display:block;width:100%!important;min-width:0!important}
  .m-tw.cards thead{display:none}
  .m-tw.cards tr{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:10px 12px;padding:14px 16px;margin:0 0 8px;border-radius:18px;background:var(--muted);height:auto!important}
  .m-tw.cards td,.m-tw.cards th{display:block;background:none!important;padding:0!important;border:0!important;text-align:left!important;white-space:normal!important;width:auto!important;min-width:0;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;height:auto!important}
  .m-tw.cards tr>:first-child{grid-column:1 / -1;font:600 15px/1.3 var(--font-sans)}
  /* Game provider client tables: money with cents needs two columns, and its words wrap */
  .pf-cl .m-tw.cards tr{grid-template-columns:repeat(auto-fill,minmax(124px,1fr))}
  .m-tw.cards .cl-v{width:auto!important;max-width:none!important;min-width:0;white-space:nowrap}
  .m-tw.cards .cl-cap,.m-tw.cards .pf-sub{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;max-width:none!important}
  .m-tw.cards td:not(:first-child)::before,.m-tw.cards th:not(:first-child)::before{content:attr(data-label);display:block;margin-bottom:2px;font:var(--text-caption);color:var(--muted-foreground)}
  .m-tw.cards td[data-label=""]::before{display:none}
  .m-tw.cards td[data-label=""]:not(:first-child):not(.m-cbc){grid-column:1 / -1}
  .m-tw.cards .m-cbl{justify-content:flex-start} .m-tw.cards .m-cbl::after{content:attr(data-l);font:var(--text-caption);color:var(--muted-foreground)}
  /* the header's own controls (select all, sort) stay reachable above the cards */
  .m-tw.cards thead{display:block!important} .m-tw.cards thead tr{display:flex!important;flex-wrap:wrap;gap:8px;padding:0 0 8px;margin:0;background:none!important;border-radius:0}
  .m-tw.cards thead th{display:none!important} .m-tw.cards thead th:has(input,button){display:flex!important;align-items:center;font:var(--text-caption);color:var(--muted-foreground)}
  .m-tw.cards thead th:has(input,button)::before{display:none!important}
  .m-tw.table{overflow-x:auto;overscroll-behavior-x:contain;margin:0 -16px;padding:0 16px}
  .m-tw.table table{min-width:max-content}
  .m-tw.table :is(td,th):first-child{position:sticky;left:-16px;z-index:1;background:var(--card);box-shadow:8px 0 10px -8px oklch(0 0 0 / 70%)}

  /* AI · Needs review: a finding is a card — severity and status, the finding in one sentence, fact vs plan, the effect, the actions */
  .m-tw.cards .rd-ftab tr.rd-fr{grid-template-columns:var(--tap) minmax(0,1fr) auto!important;grid-template-areas:"cb sev st" "fnm fnm fnm" "mt mt mt" "eff eff mo" "act act act";gap:8px 12px}
  .m-tw.cards .rd-ftab tr.rd-fr>td.cbx{grid-area:cb!important} .m-tw.cards .rd-ftab tr.rd-fr>td:nth-child(2){grid-area:sev!important;align-self:center}
  .m-tw.cards .rd-ftab tr.rd-fr>td.fnm{grid-area:fnm!important;font:inherit} .m-tw.cards .rd-ftab tr.rd-fr>td.rd-mt{grid-area:mt!important}
  .m-tw.cards .rd-ftab tr.rd-fr>td:nth-child(5){grid-area:eff!important} .m-tw.cards .rd-ftab tr.rd-fr>td.rd-mo{grid-area:mo!important;text-align:right!important;align-self:end}
  .m-tw.cards .rd-ftab tr.rd-fr>td:nth-child(7){grid-area:st!important;align-self:center;justify-self:end} .m-tw.cards .rd-ftab tr.rd-fr>td.act{grid-area:act!important}
  .m-tw.cards .rd-ftab tr.rd-fr>:is(td.cbx,td:nth-child(2),td.fnm,td.rd-mo,td:nth-child(7),td.act)::before{display:none!important}
  .m-tw.cards .rd-ftab .rd-fc b{display:block;font:600 16px/1.3 var(--font-sans);margin-bottom:4px}
  .m-tw.cards .rd-ftab .rd-fc span{display:block;font:var(--text-caption);color:var(--muted-foreground)}
  .m-tw.cards .rd-ftab .ai-acts{display:flex;flex-wrap:wrap;gap:8px} .m-tw.cards .rd-ftab .ai-acts .btn{flex:1 1 auto}
  .m-tw.cards .rd-ftab tr:not(.rd-fr)>td{grid-column:1 / -1!important}
  .rd-acts{display:flex;flex-direction:column;align-items:stretch;gap:8px} .rd-acts .btn{width:100%;justify-content:center}

  /* ---- Metrics: loaded as you go */
  .mlib>.m-hid{display:none!important}
  .m-loadmore{display:flex;flex-direction:column;align-items:center;gap:8px;margin:16px 0 0}
  .m-lm-n{font:var(--text-caption);color:var(--muted-foreground)}
  .mt-share{flex:none}

  /* ---- the page header: ⋯ for what moved off it */
  .m-inmenu{display:none!important}
  .m-acts{display:flex;flex-direction:column}
  .m-act{display:flex;align-items:center;min-height:52px;padding:0 8px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--foreground);font:500 16px/1.2 var(--font-sans);text-align:left}
  .m-act:last-child{border-bottom:0}

  /* ---- a screen that stays on a computer */
  .m-big-c{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:24px 0 8px}
  .m-big-i{display:grid;place-items:center;width:56px;height:56px;border-radius:18px;background:var(--muted);color:var(--muted-foreground)}
  .m-big-c h1{font:600 24px/1.2 var(--font-sans);text-wrap:balance;margin:4px 0 0}
  .m-big-c p{color:var(--muted-foreground);margin:0;max-width:60ch}
  .m-big-a{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
  .m-big-a .btn{gap:8px}
  .m-big .dpanel{margin-top:24px}
  .mb-list,.mb-list ul{list-style:none;margin:0;padding:0}
  .mb-list>li{padding:12px 0;border-bottom:1px solid var(--border)} .mb-list>li:last-child{border-bottom:0}
  .mb-dh{display:flex;justify-content:space-between;gap:12px;align-items:baseline} .mb-dh span{font:var(--text-caption);color:var(--muted-foreground);white-space:nowrap}
  .mb-list li li{padding:6px 0 0 14px;color:var(--muted-foreground);font:var(--text-body)}
  .mb-list ul ul li{padding-left:14px}

  /* ---- hints by tap: a small sheet over the tab bar */
  .m-tip:not([hidden]){position:fixed;z-index:99;left:8px;right:8px;bottom:calc(var(--tabbar-h) + var(--safe-b) + 8px);display:flex;align-items:center;gap:8px;padding:6px 6px 6px 16px;border-radius:18px;background:var(--popover);border:1px solid var(--border-strong);box-shadow:0 -8px 30px oklch(0 0 0 / 40%);font:var(--text-body)}
  .m-tip span{flex:1}
  #fxTip.fx-tip{position:fixed!important;left:8px!important;right:8px!important;top:auto!important;bottom:calc(var(--tabbar-h) + var(--safe-b) + 8px)!important;width:auto!important;max-width:none!important;z-index:99}

  /* ---- Add to Home Screen */
  .m-a2hs{position:fixed;z-index:46;left:8px;right:8px;bottom:calc(var(--tabbar-h) + var(--safe-b) + 8px);display:flex;align-items:center;gap:12px;padding:10px 6px 10px 12px;border-radius:20px;background:var(--popover);border:1px solid var(--border-strong);box-shadow:0 -8px 30px oklch(0 0 0 / 40%)}
  .m-a2-i{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:11px;background:var(--foreground);color:var(--background);font:700 12px/1 var(--font-sans)}
  .m-a2-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;font:var(--text-caption);color:var(--muted-foreground)} .m-a2-t b{font:600 14px/1.3 var(--font-sans);color:var(--foreground)}
  body.m-bar .m-a2hs{display:none}
}
/* ---- offline: every width (the bar under the top bar on a phone, under the header elsewhere) */
.m-offbar:not([hidden]){position:fixed;z-index:47;left:50%;transform:translateX(-50%);top:calc(var(--header-h,64px) + 8px);display:flex;align-items:center;gap:8px;max-width:calc(100vw - 32px);padding:8px 14px;border-radius:var(--radius-pill);background:var(--popover);border:1px solid var(--border-strong);color:var(--foreground);font:var(--text-caption);box-shadow:var(--shadow-pop)}
@media (max-width:639.98px), (pointer:coarse) and (max-height:499.98px) and (max-width:1023.98px){ .m-offbar:not([hidden]){top:calc(var(--mtop-h) + var(--safe-t) + 8px);left:8px;right:8px;transform:none;max-width:none;border-radius:16px} }
body.m-off :is([data-act="submit-dept"],[data-act="m-pf-approve"],[data-act^="approve"],[data-act="save-draft"],[data-act="close-sheet"],[data-act="close-month"],[data-act="reopen-sheet"],[data-act^="line-add"],[data-act^="pf-add"],[data-act="dept-add-sheet"],[data-act="dept-edit-mode"],[data-act^="mark-"],[data-act^="pf-copy"],[data-act^="pf-fill"],[data-act="line-menu"],[data-act="plan-confirm-sheet"],[data-act="invite"],[data-act="ai-run"],[data-act^="ai-mark"],[data-act^="ai-review"],[data-act^="find-"]){display:none!important}
body.m-off .m-pfbar,body.m-off .pf-foot .pf-fa{display:none!important}
/* ---- touch below 1280: no drag handles (moves go through ⋯ · Move up / Move down / Put inside…) */
@media (max-width:1023.98px), (pointer:coarse) and (max-width:1279.98px){
  .lr-grip,.lnrows .lr-grip{display:none!important}
}
@media (prefers-reduced-motion:reduce){ .m-car-t{scroll-snap-stop:always;scroll-behavior:auto} .m-car-d i{transition:none} }

/* FEATURE v12.44 · More → Market (screen 11) and Admin → Market data on a phone (screen 12) */
.mk-dock,.mk-lg-open,.mk-q-s{display:none}   /* a computer and a tablet; the phone query below shows them (a phone held sideways too) */
@media (max-width:639.98px), (pointer:coarse) and (max-height:499.98px) and (max-width:1023.98px){
  .m-more .mr-h{font:var(--text-small,500 13px Inter,system-ui,sans-serif);color:var(--muted-foreground);margin:18px 4px 6px}
  .m-more .mr-mk .badge{margin-left:auto;flex:none}
  .m-more .mr-mk .mr-t{flex:1}
  .mk-adm .mk-qs{display:flex;overflow-x:auto;scrollbar-width:none;max-width:100%;white-space:nowrap}
  .mk-adm .mk-qs button{flex:none;min-height:44px}
  .mk-q-l{display:none}
  .mk-q-s{display:inline}
  .mk-lgs{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .mk-lg{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:12px;border:1px solid var(--border)!important;border-radius:18px;background:var(--card);min-width:0}
  .mk-lg .mk-tiles .mk-tile.dk,.mk-lg .mk-tiles .cap{display:none}
  .mk-lg .mk-tile{background:#fff;width:100%;height:auto;aspect-ratio:1;max-width:120px}
  .mk-lg .mk-tile img{width:70%;height:auto;margin:auto}
  .mk-lg-b .cap,.mk-lg .r{display:none}
  .mk-lg-b b{font-size:14px;overflow-wrap:anywhere}
  .mk-lg .mk-ck{position:absolute;top:4px;right:4px;z-index:2}
  .mk-lg-open{display:block;position:absolute;inset:0;z-index:1;border:0;background:transparent;border-radius:18px;cursor:pointer}
  .mk-lg-open:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
  .mk-dock{position:fixed;z-index:44;left:8px;right:8px;bottom:calc(var(--tabbar-h) + var(--safe-b) + 8px);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 10px 10px 16px;border:1px solid var(--border-strong);border-radius:22px;background:color-mix(in oklch,var(--card) 96%,transparent);box-shadow:0 -8px 30px oklch(0 0 0 / 35%)}
  .mk-dock>span{display:flex;flex-direction:column;min-width:0}
  .mk-dock .btn{min-height:44px}
  .mk-adm{padding-bottom:96px}
  .mk-adm .btn.sm[data-act="mk-lg-approve"]{display:none}   /* the dock has it */
  .mk-lg-sh .mk-tiles{gap:12px;margin-bottom:8px}
  .mk-lg-sh .mk-tile{background:#fff}
  .mk-lg-sh .mk-tile.dk{background:oklch(.145 0 0)}
  .mk-adm .mk-opts{display:flex;flex-direction:column;gap:8px}
  .mk-adm .mk-opt{display:flex;flex-direction:column;gap:4px}
  .mk-adm .mk-opt .btn{width:100%;justify-content:center;min-height:44px;white-space:normal}
  .mk-adm table[data-mcards="no"] thead{display:none}
  .mk-adm table[data-mcards="no"],.mk-adm table[data-mcards="no"] tbody,.mk-adm table[data-mcards="no"] tr,.mk-adm table[data-mcards="no"] td{display:block;width:100%}
  .mk-adm table[data-mcards="no"] tr{padding:12px 0;border-top:1px solid var(--border)}
  .mk-adm table[data-mcards="no"] td{padding:2px 0;border:0}
  .mk-adm td.r{white-space:normal;text-align:left}
  .mk-adm td.r .btn{margin:4px 6px 0 0;min-height:44px}
}
/* FEATURE v12.45 · More → Language: a row in the account block */
@media (max-width:1023px){ .m-more .mr-acct{flex-wrap:wrap} .m-more .mr-lang{flex-basis:100%;border-top:1px solid var(--border)} .m-more .mr-lang .mr-t span{color:var(--muted-foreground)} }
/* FEATURE v12.55 · the games' Approve dock sits above the logos' one when both are there */
@media (max-width:639.98px), (pointer:coarse) and (max-height:499.98px) and (max-width:1023.98px){
  .mk-dock.mk-gdock{bottom:calc(var(--tabbar-h) + var(--safe-b) + 84px)}
}
/* FEATURE v12.55 · Admin → Games as cards on a phone: one column (a cover, its source and a 220-character description do not fit three across) */
.m-tw.cards table.mk-gtab tbody tr{grid-template-columns:minmax(0,1fr)}
.m-tw.cards table.mk-gtab .mk-gcv .cap,.m-tw.cards table.mk-gtab .mk-gd{max-width:none}
.m-tw.cards table.mk-gtab td.r{justify-self:start}
.m-tw.cards table.mk-gtab td.r .btn.ghost{margin-left:-12px}

