  :root{
    /* Palette aligned to MDMT's util bar + Pathway BODY theme
       (Client/mdmt-utilbar.js, copied 2026-07-07). Suite theme carry-over
       (2026-08-23): MUT INHERITS the tenant's MDMT theme via data-brand
       blocks further down - defaults here stay Pathway. No switcher. */
    --backdrop:#1A2E2A; --primary:#1B6B5A; --secondary:#2A9D8F; --subline:#2A9D8F;
    --mist:#F4F8F6; --border:#E2ECE8; --muted:#6E827C; --ink:#1A2E2A; --body:#33433F;
    --money:#047857; --brass:#9C7A38; --neg:#B91C1C; --warn:#B45309; --bad:#B91C1C;
    --money-bg:rgba(46,160,67,.12); --warn-bg:rgba(180,83,9,.14); --bad-bg:rgba(185,28,28,.12);
    --surface:#fff; --hover:#F0F7F4;
    --shadow:0 2px 10px rgba(26,46,42,.08);
  }
  /* Dark theme (2026-07-11, header parity round) - mirrors MDMT's dark
     palette so the moon toggle behaves identically across the suite. */
  html[data-theme="dark"]{
    --mist:#0E1A16; --surface:#16241F; --hover:#1A2C26; --border:#2C4A44;
    --muted:#9FC4BC; --ink:#E6EFEC; --body:#C7D6D1;
    --money:#4FC79E; --shadow:0 2px 10px rgba(0,0,0,.35);
    /* Deep-polish 2026-07-14: accent INKS brighten for dark surfaces (the
       light values sat near 2.5:1); solid FILLS get their own rules below
       so white-text chips and buttons stay readable. */
    --backdrop:#0E1A16;
    --primary:#2A9D8F; --secondary:#4FB3A5;
    --neg:#E88A7E; --warn:#E0A458; --brass:#C9A45C; --bad:#E88A7E;
    --money-bg:rgba(93,202,165,.14); --warn-bg:rgba(217,179,106,.16); --bad-bg:rgba(232,138,126,.16);
    color-scheme:dark;
  }
  html[data-theme="dark"] .btn{background:#1B6B5A;}
  html[data-theme="dark"] .btn:hover{background:#17604F;}
  html[data-theme="dark"] .btn.sec{background:var(--surface);}
  html[data-theme="dark"] .btn.sec:hover{background:rgba(42,157,143,.16);}
  html[data-theme="dark"] .btn.danger{background:var(--surface);}
  html[data-theme="dark"] .btn.danger:hover{background:rgba(232,138,126,.16);}
  html[data-theme="dark"] .btn.brass{background:#7E6229;}
  html[data-theme="dark"] .chip.good{background:#0E5C44;}
  html[data-theme="dark"] .chip.warn{background:#8A4D0B;}
  html[data-theme="dark"] .chip.bad{background:#8E1B1B;}
  html[data-theme="dark"] .chip.brass{background:#7E6229;}
  html[data-theme="dark"] .tag.warn{background:#8A4D0B;}
  html[data-theme="dark"] .tag.neg{background:#8E1B1B;}
  html[data-theme="dark"] .metrics,html[data-theme="dark"] .raildark{background:#1A2E2A;border-color:var(--border);}
  html[data-theme="dark"] .vstat.hero{background:rgba(93,202,165,.14);}
  html[data-theme="dark"] input:not([type=checkbox]):not([type=radio]),html[data-theme="dark"] select,html[data-theme="dark"] textarea{background:var(--hover);}
  @media print{
    :root, html[data-theme="dark"]{
      --mist:#fff; --surface:#fff; --hover:#F0F7F4; --border:#E2ECE8;
      --muted:#6E827C; --ink:#1A2E2A; --body:#33433F; --money:#047857;
      --backdrop:#1A2E2A; --primary:#1B6B5A; --neg:#B91C1C; --warn:#B45309;
      --brass:#9C7A38; --bad:#B91C1C;
      --money-bg:rgba(46,160,67,.12); --warn-bg:rgba(180,83,9,.14); --bad-bg:rgba(185,28,28,.12);
    }
  }
  /* ---- Suite theme carry-over (2026-08-23): tenant brand skins ----
     data-brand is set by applySuiteBrand() from the /api/me payload.
     Presets get static blocks (incl. dark-mode ink adjustments); custom
     MDMT themes get inline variables from JS instead. */
  .ub-wm img{height:38px;width:auto;max-width:200px;object-fit:contain;display:block;} /* = MDMT .ub-brand img - one exact measurement suite-wide */
  html[data-brand="preset_dreamkey"]{ --backdrop:#1E293F; --primary:#4F8E74; --secondary:#8DB8A0; --subline:#8DB8A0; }
  html[data-brand="preset_dreamkey"][data-theme="dark"]{ --backdrop:#1E293F; --primary:#8DB8A0; --secondary:#A7CFB9; }
  html[data-brand="preset_gabm"]{ --backdrop:#000000; --primary:#636B6B; --secondary:#D0A446; --subline:#D0A446; --brass:#D0A446; }
  html[data-brand="preset_gabm"][data-theme="dark"]{ --primary:#8A9494; --secondary:#D0A446; }
  *{box-sizing:border-box}
  body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
       color:var(--body);background:var(--mist);}
  /* ===== header - verbatim MDMT util-bar look (.ub-*) ===== */
  .ub-bar{position:sticky;top:0;z-index:50;background:var(--backdrop);color:#fff;margin:0;padding:0;line-height:1.5;font-family:-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;border-bottom:2px solid var(--brass);}
  .ub-inner{max-width:1400px;margin:0 auto;padding:8px 22px;display:flex;align-items:center;gap:16px;}
  .ub-brand{display:flex;align-items:center;gap:11px;text-decoration:none;flex:0 0 auto;height:52px;cursor:pointer;}
  .ub-tile{width:34px;height:34px;background:linear-gradient(135deg,#2A9D8F 0%,#1B6B5A 100%);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font-family:Georgia,serif;font-weight:700;font-size:1.7rem;line-height:1;flex:0 0 auto;}
  .ub-tile,.wallmark{background:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 100 100%27%3E%3Cdefs%3E%3ClinearGradient id=%27g%27 x1=%270%25%27 y1=%270%25%27 x2=%27100%25%27 y2=%27100%25%27%3E%3Cstop offset=%270%25%27 stop-color=%27%232A9D8F%27/%3E%3Cstop offset=%27100%25%27 stop-color=%27%231B6B5A%27/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width=%27100%27 height=%27100%27 rx=%2718%27 fill=%27url(%23g)%27/%3E%3Ctext x=%2750%27 y=%2776%27 font-family=%27Georgia,serif%27 font-size=%2768%27 font-weight=%27700%27 fill=%27white%27 text-anchor=%27middle%27%3EP%3C/text%3E%3C/svg%3E") center/100% 100% no-repeat;color:transparent;}
  .ub-wm{display:flex;flex-direction:column;line-height:1.05;}
  .ub-wm b{font-family:Georgia,"Times New Roman",serif;font-weight:700;font-size:1.2rem;color:#fff;letter-spacing:.4px;}
  .ub-wm s{font-size:.5rem;font-weight:500;letter-spacing:2.4px;text-transform:uppercase;color:var(--subline);text-decoration:none;margin-top:1px;white-space:nowrap;}
  .ub-prod{margin-left:10px;padding:3px 10px;border-radius:999px;background:rgba(201,164,92,.16);border:1px solid rgba(201,164,92,.45);color:#E3C88F;font-size:.62rem;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;flex:0 0 auto;}
  .ub-actions{margin-left:auto;display:flex;align-items:center;gap:10px;}
  /* Header controls: copied verbatim from Client/mdmt-utilbar.js so the two
     bars are pixel-identical (2026-07-11 header parity round). */
  .ub-search{flex:1 1 auto;max-width:540px;display:flex;align-items:center;gap:9px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);border-radius:999px;padding:8px 15px;}
  .ub-search:focus-within{background:rgba(255,255,255,.20);border-color:rgba(255,255,255,.62);box-shadow:0 0 0 2px rgba(255,255,255,.18);}
  .ub-search .ic{color:rgba(255,255,255,.72);font-size:.95rem;line-height:1;}
  .ub-search input{flex:1;width:auto;background:transparent;border:none;border-radius:0;outline:none;color:#fff;font-size:.9rem;min-width:0;padding:1px 2px;height:auto;line-height:normal;}
  .ub-search input::placeholder{color:rgba(255,255,255,.6);}
  .ub-add{background:var(--primary);color:#fff;border:none;padding:9px 17px;border-radius:999px;font-size:.85rem;font-weight:700;line-height:1.5;cursor:pointer;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center;font-family:inherit;}
  .ub-add:hover{filter:brightness(1.09);}
  .ub-ico{background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.22);color:#fff;width:36px;height:36px;border-radius:50%;cursor:pointer;font-size:1rem;display:inline-flex;align-items:center;justify-content:center;position:relative;text-decoration:none;}
  .ub-ico:hover{background:rgba(255,255,255,.22);}
  .ub-dot{position:absolute;top:-2px;right:-2px;width:10px;height:10px;background:#dc2626;border-radius:50%;border:1.5px solid var(--backdrop);}
  .ub-back{color:#fff;text-decoration:none;font-size:.85rem;font-weight:600;line-height:1.5;white-space:nowrap;display:inline-flex;align-items:center;gap:5px;opacity:.92;}
  .ub-back:hover{opacity:1;}
  .ub-acct{position:relative;display:inline-flex;}
  .ub-pill{background:rgba(255,255,255,.15);color:#fff;border:1px solid rgba(255,255,255,.3);padding:6px 14px 6px 7px;border-radius:999px;cursor:pointer;font-weight:600;font-size:.85rem;display:inline-flex;align-items:center;gap:8px;font-family:inherit;}
  .ub-av{width:28px;height:28px;border-radius:50%;overflow:hidden;flex:0 0 auto;background:linear-gradient(135deg,#2A9D8F 0%,#1B6B5A 100%);color:#fff;font-family:Georgia,"Times New Roman",serif;font-weight:700;font-size:.92rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;}
  #ub_name{display:inline-block;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;}
  .ub-menu{position:absolute;right:0;top:100%;margin-top:7px;background:var(--surface);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.2);min-width:210px;z-index:9999;overflow:hidden;display:none;}
  .ub-menu a,.ub-menu button{display:block;width:100%;text-align:left;background:none;text-decoration:none;padding:11px 16px;color:var(--ink);font-weight:600;font-size:.85rem;border:none;border-bottom:1px solid var(--border);cursor:pointer;font-family:inherit;}
  .ub-menu a:last-child,.ub-menu button:last-child{border-bottom:none;}
  .ub-menu a:hover,.ub-menu button:hover{background:var(--hover);}
  /* Sign out is destructive: same red as MDMT's Sign out (suite token --bad). */
  .ub-menu #ubm_signout{color:var(--bad);}
  .ub-notif{position:absolute;right:0;top:100%;margin-top:9px;width:290px;background:var(--surface);border-radius:10px;box-shadow:0 10px 28px rgba(0,0,0,.22);overflow:hidden;z-index:9999;display:none;}
  .ub-notif h4{margin:0;padding:12px 16px;font-size:.85rem;color:var(--ink);border-bottom:1px solid var(--border);}
  .ub-notif p{margin:0;padding:18px 16px;color:var(--muted);font-size:.82rem;line-height:1.45;}
  .ub-notif a{display:block;padding:11px 16px;color:var(--ink);text-decoration:none;font-size:.82rem;border-bottom:1px solid var(--border);}
  .ub-notif a:last-child{border-bottom:none;}
  .ub-notif a:hover{background:var(--hover);}
  @media(max-width:760px){.ub-search{display:none;}}
  .wrap{max-width:980px;margin:0 auto;padding:20px 22px 80px;}
  h2{font-family:Georgia,serif;color:var(--primary);font-size:1.08rem;border-bottom:2px solid var(--border);padding-bottom:6px;margin:30px 0 14px;}
  h3{font-size:.82rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:16px 0 8px;}
  .card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px;margin-bottom:14px;}
  /* Section rhythm inside cards (2026-08-18 polish): each sub-section gets
     air and a hairline rule so dense cards (Underwriting, Documents) read
     as distinct blocks instead of one bunched run. First header keeps the
     card's own top padding. */
  .card h3{margin:26px 0 10px;padding-top:16px;border-top:1px solid var(--border);}
  /* Flex section headers (h3 + action button) keep the same boundary the
     bare .card h3 gets - the inline margin:0 on the inner h3 was stripping
     it, welding sections together (Patrick 2026-08-25). */
  .card .lens-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:26px 0 10px;padding-top:16px;border-top:1px solid var(--border);}
  .card h3:first-child{margin-top:0;padding-top:0;border-top:none;}
  #uw_notes:not(:empty){margin-top:26px;padding-top:16px;border-top:1px solid var(--border);} /* engine notes render as a div, not an h3 - same rhythm */
  label{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-weight:700;margin:0 0 4px;}
  .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px 14px;}
  .grid .span2{grid-column:span 2;}
  input,select,textarea{width:100%;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:.9rem;background:var(--surface);color:var(--ink);font-family:inherit;}
  input[type=checkbox],input[type=radio]{width:auto;}
  .ck{display:flex;align-items:center;gap:7px;font-size:.85rem;color:var(--ink);text-transform:none;letter-spacing:0;font-weight:500;margin-top:18px;}
  .btn{background:var(--primary);color:#fff;border:none;border-radius:8px;padding:10px 18px;font-size:.9rem;font-weight:700;cursor:pointer;text-decoration:none;display:inline-block;transition:background .15s ease;}
  .btn:hover{background:#14564A}
  .btn:disabled{opacity:.5;cursor:default;}
  .btn.sec{background:var(--surface);color:var(--primary);border:1px solid var(--primary);}
  .btn.sec:hover{background:var(--hover);}
  .btn.small{padding:6px 12px;font-size:.82rem;}
  .btn.danger{background:var(--surface);color:var(--neg);border:1px solid var(--neg);}
  .btn.danger:hover{background:var(--bad-bg);}
  .btn.brass{background:var(--brass);}
  .btn.brass:hover{background:#7E6229;}
  .muted{color:var(--muted);font-size:.85rem;}
  /* Polish pass (2026-07-14): ONE language for embedded feature panels.
     Containers 12px, controls 8px, pills 999px; type scale .72 eyebrow /
     .78 fine print / .82 small / .85 body-small / .9 inputs. */
  .inset{margin-top:12px;padding:12px 14px;background:var(--mist);border:1px solid var(--border);border-radius:12px;}
  .eyebrow{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin:0 0 8px;}
  /* State-tinted selects (2026-07-14, Patrick-approved): the dropdown itself
     carries the state colour so a table scans at a glance. */
  select.st-dim{background:var(--mist);color:var(--muted);}
  select.st-brass{background:#FBF3E1;color:var(--brass);border-color:transparent;}
  select.st-good{background:var(--money-bg);color:var(--money);border-color:transparent;}
  select.st-bad{background:var(--bad-bg);color:var(--neg);border-color:transparent;}
  html[data-theme="dark"] select.st-brass{background:rgba(156,122,56,.22);}
  .linkchip{display:inline-flex;align-items:center;gap:5px;border-radius:999px;border:1px solid var(--border);background:var(--mist);padding:3px 11px;font-size:.82rem;font-weight:600;color:var(--ink);}
  .linkchip a{color:inherit;text-decoration:none;font-weight:700;}
  .linkchip .rowdel{font-size:.85rem;padding:0 2px;}
  .note{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;font-size:.85rem;margin-bottom:16px;box-shadow:0 1px 4px rgba(26,46,42,.06);}
  /* Signed-out wall (polish pass 2026-08-24): centered hero, theme-var driven. */
  .wallhero{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:56vh;padding:48px 16px;}
  .wallmark{width:64px;height:64px;flex:0 0 auto;filter:drop-shadow(0 5px 12px rgba(90,122,116,.30));}
  .walllock{display:flex;align-items:center;gap:14px;}
  .wallwm{display:flex;flex-direction:column;align-items:flex-start;line-height:1.05;text-align:left;}
  .wallwm b{font-family:Georgia,'Times New Roman',serif;font-weight:700;font-size:1.6rem;color:#1A3A35;letter-spacing:.5px;}
  html[data-theme="dark"] .wallwm b{color:var(--ink);}
  .wallwm s{font-size:.72rem;font-weight:500;letter-spacing:3px;text-transform:uppercase;color:#2A9D8F;text-decoration:none;margin-top:3px;white-space:nowrap;}
  .walllock .mut{padding:2px 9px;border:1px solid #2A9D8F;color:#2A9D8F;border-radius:999px;font-size:.66rem;letter-spacing:.12em;font-family:-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;font-weight:600;align-self:flex-start;margin-top:4px;}
  .wallhero h1{margin:12px 0 0;border:none;font-size:1.9rem;letter-spacing:-.01em;color:#1A3A35;}
  html[data-theme="dark"] .wallhero h1{color:var(--ink);}
  .wallsub{margin-top:10px;max-width:520px;color:var(--body);font-size:.95rem;line-height:1.55;}
  .wallhero .btn{margin-top:22px;padding:12px 34px;font-size:1rem;border-radius:10px;}
  .wallpoints{display:flex;gap:26px;flex-wrap:wrap;justify-content:center;margin-top:34px;}
  .wallpoints div{max-width:200px;font-size:.8rem;color:var(--muted);line-height:1.45;}
  .wallpoints b{display:block;color:var(--body);font-size:.84rem;margin-bottom:3px;}
  .wallfine{margin-top:30px;font-size:.72rem;color:var(--muted);}
  .hide{display:none !important;}
  #auth_msg.plain{background:transparent;border:none;box-shadow:none;}
  .stick{position:sticky;top:68px;z-index:30;background:var(--mist);}
  .pstrip-row{display:flex;flex-direction:column;gap:4px;align-items:stretch;}
  .bcard{cursor:grab;}
  .bcard .btags{display:flex;flex-wrap:wrap;gap:4px 6px;margin-top:6px;}
  .bcard .btags .tag{display:inline-flex;align-items:center;line-height:1.3;}
  .bcard .bmeta{margin-top:6px;font-size:.72rem;line-height:1.5;display:grid;grid-template-columns:auto 1fr auto 1fr;gap:1px 8px;}
  .bcard .bmeta .bml{color:var(--muted);}
  .bcard .bmeta .bmv{color:var(--body);font-weight:600;white-space:nowrap;}
  .bcard .bmeta .bmv.done{color:var(--money);}
  /* board polish (2026-09-25): the deal ID stays a link to the full file
     but no longer reads as the card's title */
  .bcard > .deallink{font-weight:500;font-size:.74rem;color:var(--muted);}
  .bcard > .deallink:hover{color:var(--primary);}
  .tag.bflag{background:var(--warn-bg);color:var(--warn);}
  .eyebrow .tag.bflag{margin-left:6px;text-transform:none;letter-spacing:0;vertical-align:1px;}
  .toast .tundo{margin-left:6px;background:none;border:1px solid var(--border);border-radius:999px;color:var(--primary);font:inherit;font-size:.78rem;font-weight:700;padding:2px 10px;cursor:pointer;}
  .toast .tundo:disabled{opacity:.5;cursor:default;}
  /* board polish rank 3: the filtered state beside the filters */
  .fstate{display:inline-flex;align-items:center;gap:6px;background:#EAF4F1;color:var(--primary);border-radius:999px;padding:3px 4px 3px 10px;font-size:.78rem;font-weight:700;white-space:nowrap;}
  html[data-theme="dark"] .fstate{background:rgba(42,157,143,.18);}
  .fstate button{background:none;border:1px solid currentColor;border-radius:999px;color:inherit;font:inherit;font-size:.74rem;padding:1px 9px;cursor:pointer;}
  .pstep{display:flex;width:100%;box-sizing:border-box;align-items:flex-start;gap:7px;border-radius:8px;padding:5px 10px;font-size:.72rem;line-height:1.35;font-weight:600;border:1px solid var(--border);background:var(--mist);color:var(--muted);cursor:pointer;user-select:none;}
  .pstep.done{background:var(--money-bg,rgba(46,160,67,.12));color:var(--money);border-color:transparent;}
  .pstep.locked{cursor:default;}
  .pstep.warn{background:var(--warn-bg);color:var(--warn);border-color:transparent;} /* disclosure timing flag (2026-09-16, suite audit P1 #18) */
  .esign-when{display:block;margin-top:3px;font-size:.68rem;font-weight:500;color:var(--muted);white-space:nowrap;}
  .esign-when.warn{color:var(--warn);}
  .pstep .pm{font-size:.72rem;line-height:1.35;flex:0 0 14px;text-align:center;}
  .chippop{position:absolute;z-index:60;min-width:290px;max-width:360px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 30px rgba(26,46,42,.18);padding:6px;display:none;}
  .chippop.open{display:block;}
  .chippop .cp-card{border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin:6px;}
  .chippop .cp-h{font-weight:700;font-size:.85rem;margin:0 0 6px;color:var(--ink);}
  .chippop .cp-row{display:flex;justify-content:space-between;gap:14px;font-size:.82rem;padding:2px 0;color:var(--body);}
  .chippop .cp-row span:last-child{font-weight:600;white-space:nowrap;color:var(--ink);}
  .chippop .cp-total{display:flex;justify-content:space-between;gap:14px;font-size:.82rem;font-weight:700;background:var(--mist);border-radius:8px;padding:6px 9px;margin-top:6px;color:var(--ink);}
  .chippop .cp-note{font-size:.78rem;color:var(--muted);margin:6px 6px 4px;line-height:1.45;}
  .chippop .cp-vhead{font-weight:700;font-size:.9rem;color:var(--ink);margin:8px 10px 2px;line-height:1.35;}
  .chippop .cp-vhead.good{color:var(--money);} .chippop .cp-vhead.warn{color:var(--warn);} .chippop .cp-vhead.bad{color:var(--neg);}
  .chippop .cp-row span.cp-dim{color:var(--muted);font-weight:400;white-space:nowrap;}
  .chip[data-pop]{cursor:pointer;}
  .metrics{background:var(--backdrop);border-radius:12px 12px 0 0;
    padding:10px 16px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;box-shadow:var(--shadow);}
  .chip{border-radius:999px;padding:6px 13px;color:#fff;font-weight:700;font-size:.82rem;background:#3d5a54;white-space:nowrap;}
  .chip small{opacity:.75;font-weight:500;margin-right:6px;}
  .chip.good{background:var(--money);} .chip.warn{background:var(--warn);} .chip.bad{background:var(--neg);}
  .chip.brass{background:var(--brass);} .chip.dim{background:#3d5a54;}
  .metrics .sp{flex:1}
  .computing{color:#9fc6bd;font-size:.78rem;}
  .qnav{background:var(--mist);display:flex;gap:4px;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid var(--border);}
  h2{scroll-margin-top:200px;}
  .qnav a{font-size:.82rem;font-weight:600;color:var(--muted);text-decoration:none;padding:4px 10px;border:1px solid transparent;border-radius:999px;}
  .qnav a:hover,.qnav a.on{background:var(--surface);color:var(--primary);border-color:var(--border);}
  table{width:100%;border-collapse:collapse;font-size:.85rem;}
  th{text-align:left;font-size:.72rem;color:var(--muted);font-weight:600;padding:6px 8px 6px 0;border-bottom:1px solid var(--border);}
  td{padding:6px 8px 6px 0;vertical-align:middle;border-bottom:1px solid var(--border);}
  td input,td select{padding:6px 8px;font-size:.85rem;}
  .rowdel{background:none;border:none;color:var(--neg);cursor:pointer;font-size:1rem;padding:2px 6px;}
  .reveal{font-size:.8rem;font-weight:400;letter-spacing:0;color:var(--sage);text-decoration:underline;text-underline-offset:2px;}
  /* "Detach" removes the stored FILE and keeps the row; the X at the end of the
     row removes the ROW. They used to be identical glyphs sitting side by side. */
  .filedel{background:none;border:1px solid var(--line);color:var(--muted);cursor:pointer;
           font-size:.72rem;padding:1px 6px;border-radius:4px;margin-left:6px;}
  .filedel:hover{border-color:var(--bad);color:var(--bad);}
  .docchk-col{width:28px;text-align:center;}
  .docs-bulk{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0;padding:8px 10px;
             background:var(--tint,#f4f7f6);border:1px solid var(--line);border-radius:6px;}
  .docs-bulk-count{font-weight:600;}
  .docs-bulk-set{display:flex;align-items:center;gap:5px;font-size:.82rem;color:var(--muted);}
  .docs-bulk-set select{font-size:.82rem;padding:2px 4px;}
  .docs-bulk-del{margin-left:auto;border-color:var(--bad);color:var(--bad);}
  .addrow{margin-top:8px;}
  .badge{display:inline-block;padding:3px 10px;border-radius:999px;font-weight:700;font-size:.78rem;}
  .b-good{background:var(--money-bg);color:var(--money);} .b-brass{background:#FBF3E1;color:var(--brass);} .b-bad{background:var(--bad-bg);color:var(--neg);} .b-dim{background:var(--mist);color:var(--muted);border:1px solid var(--border);} .b-warn{background:var(--warn-bg);color:var(--warn);}
  html[data-theme="dark"] .b-brass{background:rgba(156,122,56,.2);} html[data-theme="dark"] .b-bad{background:rgba(185,28,28,.18);}
  .tag{display:inline-block;background:#EAF4F1;color:var(--primary);border-radius:999px;padding:2px 8px;font-size:.72rem;font-weight:700;}
  html[data-theme="dark"] .tag{background:rgba(42,157,143,.18);}
  .cellpills{display:flex;flex-wrap:wrap;gap:4px 6px;margin-top:3px;font-size:.72rem;}
  .cellpills .tag{display:inline-flex;align-items:center;line-height:1.3;}
  /* Count pills (docs n/n, steps n/n) sized to their own text, so "docs 0/10"
     was 8px wider than "docs 0/8" and shoved the steps pill out of line with
     the row above. A fixed floor plus tabular figures pins the start of the
     second pill regardless of the digits. 84px covers every count case up to
     three digits ("docs 0/100" measures 83px at .72rem); the Stage column is
     185px, so two of them plus the gap still fit on one line. (2026-08-13) */
  .cellpills .tag.cpill{min-width:84px;justify-content:flex-start;font-variant-numeric:tabular-nums;}
  .vstats{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0 4px;}
  .vstat{flex:1 1 140px;background:var(--mist);border:1px solid var(--border);border-radius:12px;padding:10px 12px;}
  .vstat small{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin-bottom:3px;}
  .vstat b{font-size:1.05rem;color:var(--ink);}
  .vstat.hero{background:#EAF4F1;} .vstat.hero b{color:var(--money);}
  .vstat.gap b{color:var(--neg);}
  .savebar{position:fixed;bottom:0;left:0;right:0;z-index:40;background:var(--surface);border-top:1px solid var(--border);
    padding:10px 22px calc(10px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;gap:14px;box-shadow:0 -4px 14px rgba(19,55,50,.12);}
  .savebar .msg{flex:1;font-size:.85rem;color:var(--brass);font-weight:600;}
  .deal-row{cursor:pointer;}
  .deallink{font-weight:700;color:var(--primary);text-decoration:none;white-space:nowrap;}
  .deallink:hover{text-decoration:underline;text-underline-offset:2px;}
  a:focus-visible,[data-pop]:focus-visible,.bcard:focus-visible{outline:2px solid var(--secondary);outline-offset:1px;border-radius:4px;}
  .deal-row:hover td{background:var(--hover);}
  ul.plain{margin:8px 0 0;padding-left:18px;font-size:.85rem;}
  ul.plain li{margin:3px 0;}
  /* Required-documents panel (2026-07-13): room to breathe. Columns on
     wide screens, one item per row, source note tucked to the right. */
  ul.reqlist{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:0 32px;}
  ul.reqlist li{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-size:.85rem;line-height:1.5;padding:7px 0;border-bottom:1px solid var(--border);}
  ul.reqlist li .reqsrc{margin-left:auto;font-size:.72rem;color:var(--muted);white-space:nowrap;}
  .trace li{color:var(--muted);}
  .warnli{color:var(--warn);}
  /* ===== toasts (P1) - one quiet feedback channel; success dismisses
     itself, errors stay until dismissed ===== */
  #toasts{position:fixed;top:86px;right:26px;z-index:10000;display:flex;flex-direction:column;gap:8px;
    max-width:420px;width:calc(100vw - 52px);}
  .toast{background:var(--surface);border:1px solid var(--border);border-radius:12px;
    padding:11px 34px 11px 16px;font-size:.85rem;color:var(--body);position:relative;
    box-shadow:0 6px 22px rgba(26,46,42,.18),0 1px 3px rgba(26,46,42,.10);
    animation:toastin .18s ease-out;}
  .toast.err{background:var(--bad-bg);border-color:transparent;color:var(--neg);font-weight:600;}
  .toast .tx{background:none;border:none;color:var(--muted);cursor:pointer;position:absolute;top:7px;right:7px;font-size:.85rem;padding:2px 5px;}
  @keyframes toastin{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
  /* ===== board (P1) - reads as MDMT's pipeline lens ===== */
  .bcol-head{padding-bottom:8px;border-bottom:1px solid var(--border);}
  .bcol-head b{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink);line-height:1.35;hyphens:none;}
  .bcol-head .bcol-sub{display:block;margin-top:2px;font-size:.78rem;font-weight:500;color:var(--muted);}
  .bcard{padding:10px 12px;margin:10px 0 0;transition:box-shadow .12s ease,transform .12s ease;}
  .bcard:hover{box-shadow:var(--shadow);transform:translateY(-1px);}
  .bcard select{color:var(--muted);border-color:transparent;background:transparent;padding:4px 2px;}
  .bcard select:hover,.bcard select:focus{border-color:var(--border);background:var(--surface);}
  /* ===== board, Trello-grade round (2026-07-23) ===== Lanes read as
     soft panels distinct from the white cards, cards lift on hover, and a
     pointer drag carries a tilted ghost between lanes. Every colour rides
     the theme variables (plus color-mix), so the dark token block keeps
     working untouched. */
  .bcol{min-width:210px;max-width:230px;flex:0 0 auto;}
  .bcol.bcollapsed{min-width:44px;max-width:44px;}
  .bcol-panel{background:color-mix(in srgb, var(--backdrop) 5%, var(--mist));border:1px solid var(--border);border-radius:12px;padding:10px 12px;}
  html[data-theme="dark"] .bcol-panel,html[data-theme="dark"] .bcol-strip{background:color-mix(in srgb, var(--surface) 45%, var(--mist));}
  .bcol-head{position:relative;padding-right:26px;}
  .bcol-toggle{position:absolute;top:-4px;right:-6px;background:none;border:none;color:var(--muted);cursor:pointer;font-size:1rem;line-height:1;padding:4px 8px;border-radius:8px;font-family:inherit;}
  .bcol-toggle:hover{background:var(--hover);color:var(--ink);}
  .bcol-strip{display:flex;flex-direction:column;align-items:center;gap:8px;width:44px;min-height:170px;padding:10px 0;background:color-mix(in srgb, var(--backdrop) 5%, var(--mist));border:1px solid var(--border);border-radius:12px;cursor:pointer;font-family:inherit;}
  .bcol-strip:hover{background:var(--hover);}
  .bcol-strip .bstrip-count{font-size:.72rem;font-weight:700;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:2px 7px;}
  .bcol-strip .bstrip-label{writing-mode:vertical-rl;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700;}
  .baddfile{display:block;width:100%;margin-top:10px;background:none;border:1px dashed var(--border);border-radius:8px;color:var(--muted);font-size:.82rem;font-weight:600;padding:8px 10px;cursor:pointer;font-family:inherit;text-align:left;}
  .docs-drop{display:block;width:100%;margin-top:10px;background:none;border:1.5px dashed var(--border);border-radius:8px;color:var(--muted);font-size:.82rem;font-weight:600;padding:12px;cursor:pointer;text-align:center;transition:border-color .15s ease,background .15s ease,color .15s ease;}
  .docs-drop.drag{border-color:var(--secondary);background:color-mix(in srgb, var(--secondary) 8%, transparent);color:var(--ink);}
  .baddfile:hover{background:var(--hover);color:var(--primary);border-color:var(--primary);}
  .bfoot{display:flex;align-items:center;gap:8px;margin-top:6px;}
  .bav{width:22px;height:22px;border-radius:999px;background:color-mix(in srgb, var(--ink) 10%, transparent);color:var(--ink);font-size:.72rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;}
  /* Trello-style colour language: pill hue rides the theme variables */
  .btags .tag[class*="tt-"]{background:color-mix(in srgb, var(--tthue, var(--primary)) var(--ttmix, 13%), transparent);color:var(--tthue, var(--primary));}
  .tt-purchase{--tthue:var(--primary);}
  .tt-pre-approval{--tthue:var(--secondary);}
  .tt-refinance{--tthue:var(--brass);}
  .tt-switch{--tthue:var(--warn);}
  .tt-renewal{--tthue:var(--money);}
  .tt-heloc{--tthue:var(--ink);}
  html[data-theme="dark"] .btags .tag[class*="tt-"]{--ttmix:22%;}
  .tag.own{background:color-mix(in srgb, var(--brass) 14%, transparent);color:var(--brass);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--brass) 30%, transparent);}
  html[data-theme="dark"] .tag.own{background:color-mix(in srgb, var(--brass) 22%, transparent);color:var(--brass);}
  .tag.done,html[data-theme="dark"] .tag.done{background:var(--money-bg);color:var(--money);}
  .tag.tclose{background:var(--mist);color:var(--muted);box-shadow:inset 0 0 0 1px var(--border);}
  html[data-theme="dark"] .tag.tclose{background:var(--hover);color:var(--muted);}
  .tag.tclose.soon,html[data-theme="dark"] .tag.tclose.soon{background:var(--warn-bg);color:var(--warn);box-shadow:none;}
  .tag.tclose.late,html[data-theme="dark"] .tag.tclose.late{background:var(--bad-bg);color:var(--neg);box-shadow:none;}
  /* drag and drop */
  .bghost{position:fixed;left:0;top:0;margin:0;z-index:80;pointer-events:none;opacity:.95;box-shadow:0 12px 30px rgba(26,46,42,.28);will-change:transform;transition:none;}
  .bdragsrc{opacity:.35;}
  .bdragging{user-select:none;-webkit-user-select:none;}
  .bdragging,.bdragging *{cursor:grabbing;}
  .bcol.bdrop .bcol-panel,.bcol.bdrop .bcol-strip{border-color:var(--secondary);box-shadow:inset 0 0 0 1px var(--secondary);background:color-mix(in srgb, var(--secondary) 8%, var(--mist));}
  .bcol.bdrop .bcol-panel::after{content:"";display:block;height:38px;margin-top:10px;border-radius:8px;border:2px dashed color-mix(in srgb, var(--secondary) 55%, transparent);background:color-mix(in srgb, var(--secondary) 10%, transparent);}
  /* board polish rank 1 (2026-09-25): the board uses the window's width,
     and its horizontal scrollbar is always visible */
  body.board-view:not(.deal-open) .wrap{max-width:none;}
  #board_wrap{scrollbar-width:thin;scrollbar-color:var(--border) transparent;}
  #board_wrap::-webkit-scrollbar{height:10px;}
  #board_wrap::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px;}
  #board_wrap::-webkit-scrollbar-track{background:transparent;}
  #board_wrap.bfade-r{-webkit-mask-image:linear-gradient(90deg, #000 calc(100% - 64px), transparent);mask-image:linear-gradient(90deg, #000 calc(100% - 64px), transparent);}
  /* ===== card-back modal (2026-07-23): replaces the in-place expansion.
     Centred dialog to 860px, full-screen sheet under 760px. Radii
     12/8/999, theme variables only, so dark mode rides along. ===== */
  .cmask{position:fixed;inset:0;z-index:70;background:color-mix(in srgb, var(--backdrop) 62%, transparent);display:flex;align-items:center;justify-content:center;padding:24px;}
  /* ===== Pathway's own confirm dialog (board polish commit 5, 2026-09-26):
     the first piece of the dialogs branch's shared dialog. Rides .cmask's
     backdrop one layer up, theme variables only. ===== */
  .pwc-mask{z-index:80;}
  .pwc{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 18px 48px rgba(26,46,42,.32);width:100%;max-width:480px;padding:20px 22px 18px;color:var(--ink);}
  .pwc h2{margin:0 0 10px;font-size:1.05rem;line-height:1.35;}
  .pwc-body{font-size:.9rem;line-height:1.55;}
  .pwc-body p{margin:0 0 8px;}
  .pwc-body ul{margin:0 0 10px;padding-left:20px;}
  .pwc-body li{margin:0 0 4px;}
  .pwc-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid var(--border);}
  /* Inline fields (dialogs branch c4, 2026-10-04): a prompt becomes a small
     panel where the action started. Theme variables only. */
  .inl-ask{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin:8px 0;max-width:520px;color:var(--ink);text-align:left;}
  .inl-ask .inl-t{font-weight:700;font-size:.85rem;margin:0 0 8px;}
  .inl-ask .inl-hint{font-size:.78rem;margin:4px 0 0;}
  .inl-ask .inl-err{color:var(--neg);font-size:.8rem;font-weight:600;margin:6px 0 0;}
  .inl-ask .inl-foot{display:flex;gap:8px;margin-top:10px;}
  .inl-tr > td{background:var(--hover);}
  .inl-set{border:0;margin:0;padding:0;min-width:0;}
  .inl-set legend{padding:0;}
  .inl-ask .inl-lead{font-size:.85rem;line-height:1.5;margin:0 0 6px;}
  .inl-ask .inl-choice{display:flex;align-items:center;gap:8px;margin:4px 0;font-size:.85rem;font-weight:400;text-transform:none;letter-spacing:0;color:var(--ink);cursor:pointer;}
  .inl-ask .inl-more{margin-top:10px;}
  .cmodal{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 18px 48px rgba(26,46,42,.32);width:100%;max-width:860px;max-height:88vh;display:flex;flex-direction:column;outline:none;}
  .cmodal-head{display:flex;justify-content:flex-end;padding:8px 10px 0;flex:0 0 auto;margin-bottom:-34px;position:relative;z-index:2;pointer-events:none;}
  .cmodal-head .cmodal-x{pointer-events:auto;}
  .cmodal-x{width:30px;height:30px;background:var(--surface);border:1px solid var(--border);border-radius:999px;color:var(--muted);cursor:pointer;font-size:.85rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;}
  .cmodal-x:hover{background:var(--hover);color:var(--ink);}
  .cmodal-body{overflow-y:auto;padding:18px 20px;display:grid;grid-template-columns:minmax(0,58fr) minmax(0,42fr);gap:0 22px;align-items:start;}
  .cm-right{border-left:1px solid var(--border);padding-left:22px;}
  .cm-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;padding-right:30px;}
  .cm-head .deallink{font-size:1.05rem;}
  .cm-who{font-size:.85rem;color:var(--ink);margin:4px 0 0;}
  .cm-when{font-size:.82rem;font-weight:600;color:var(--ink);margin:8px 0 0;}
  .cm-block{margin-top:16px;}
  .cm-team>summary{cursor:pointer;list-style:none;}
  .cm-team>summary::-webkit-details-marker{display:none;}
  .cm-team>summary::before{content:'\25B8';display:inline-block;margin-right:6px;transition:transform .15s;}
  .cm-team[open]>summary::before{transform:rotate(90deg);}
  .cm-team:not([open])>summary{margin-bottom:0;}
  .cm-team>summary:focus-visible{outline:2px solid var(--secondary);outline-offset:1px;border-radius:4px;}
  .cm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px 12px;}
  .cm-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:16px;}
  .cm-doc{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:.78rem;padding:6px 0;color:var(--body);}
  .cm-doc + .cm-doc{border-top:1px solid var(--border);} /* hairlines between rows only - never a trailing rule */
  .cm-doc > span:first-child{flex:1;min-width:0;overflow-wrap:anywhere;padding-left:14px;text-indent:-14px;} /* long names wrap with a hanging indent */
  .cm-doc .cm-dim{color:var(--muted);white-space:nowrap;}
  .cm-note{display:flex;gap:8px;align-items:flex-start;margin-bottom:12px;}
  .cm-note textarea{flex:1;font-size:.85rem;}
  .cm-act{display:flex;gap:8px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--border);}
  .cm-act:last-child{border-bottom:none;}
  .cm-act .cm-body2{flex:1;min-width:0;}
  .cm-act .cm-meta2{display:flex;gap:8px;align-items:baseline;}
  .cm-act .cm-meta2 b{font-size:.82rem;color:var(--ink);}
  .cm-act .cm-meta2 .cm-ts{font-size:.72rem;color:var(--muted);margin-left:auto;white-space:nowrap;}
  .cm-act .cm-txt{font-size:.82rem;margin-top:2px;white-space:pre-wrap;}
  .cm-act.sys .cm-txt{color:var(--muted);}
  .cm-act.escd .cm-txt{background:var(--warn-bg);border:1px solid color-mix(in srgb, var(--warn) 35%, transparent);border-radius:8px;padding:6px 8px;}
  /* Deal-page timeline (M5 Phase 3, 2026-07-28): date-grouped vertical
     trail in the Notes section - same entry classification as the card
     back (notes and escalations read as bubbles, system entries stay
     quiet), per-actor .bav circles on the rail. */
  .tl-day{font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:14px 0 6px;}
  .tl-group{border-left:2px solid var(--border);margin-left:10px;padding-left:14px;}
  .tl-item{display:flex;gap:8px;align-items:flex-start;padding:6px 0;}
  .tl-item .tl-body{flex:1;min-width:0;}
  .tl-item .tl-meta{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;}
  .tl-item .tl-meta b{font-size:.82rem;color:var(--ink);}
  .tl-item .tl-meta .tl-ts{font-size:.72rem;color:var(--muted);margin-left:auto;white-space:nowrap;}
  .tl-item .tl-txt{font-size:.85rem;margin-top:3px;white-space:pre-wrap;background:var(--mist);border:1px solid var(--border);border-radius:8px;padding:8px 10px;}
  .tl-item.sys{padding:3px 0;}
  .tl-item.sys .tl-txt{font-size:.78rem;color:var(--muted);background:transparent;border:none;border-radius:0;padding:0;margin-top:1px;}
  /* Notes rank 4 (2026-09-28): the deleted and corrected traces, the
     edited tag, earlier versions, the note's own actions, the mention
     picker, and the fields inside Pathway's dialog. Theme variables only. */
  .nt-trace{color:var(--muted);font-style:italic;}
  .nt-kept{margin-top:4px;padding:6px 8px;border:1px dashed var(--border);border-radius:8px;color:var(--muted);}
  .nt-tags{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:4px;white-space:normal;}
  .nt-tag{font-size:.7rem;}
  .nt-link{background:none;border:none;padding:0;color:var(--primary);cursor:pointer;font-size:.74rem;text-decoration:underline;font-family:inherit;}
  .nt-vers{margin-top:6px;border-left:2px solid var(--border);padding-left:8px;}
  .nt-ver{margin:0 0 6px;font-size:.8rem;}
  .nt-vby{font-size:.72rem;color:var(--muted);}
  .nt-acts{display:flex;gap:12px;margin-top:4px;white-space:normal;}
  .nt-mention{font-size:.8rem;max-width:150px;}
  .pwc .nt-ch{display:block;margin:6px 0;font-size:.88rem;}
  .pwc .nt-fl{display:block;margin:10px 0 0;font-size:.82rem;color:var(--muted);}
  /* Rank 7 (2026-09-28): the quick view's step owners and due dates. */
  .cm-steps{width:100%;border-collapse:collapse;margin-top:10px;font-size:.76rem;}
  .cm-steps th{text-align:left;font-weight:600;color:var(--muted);padding:2px 4px;}
  .cm-steps td{padding:3px 4px;border-top:1px solid var(--border);vertical-align:middle;}
  .cm-steps select, .cm-steps input{font-size:.74rem;max-width:130px;}
  .pwc .nt-help{display:block;margin-top:4px;font-size:.76rem;color:var(--muted);} /* N7 helper line */
  .pwc .nt-field{display:block;width:100%;box-sizing:border-box;margin-top:4px;font-size:.88rem;}
  .tl-item.escd .tl-txt{background:var(--warn-bg);border-color:color-mix(in srgb, var(--warn) 35%, transparent);}
  .cm-frows{display:grid;grid-template-columns:auto 1fr;gap:4px 16px;align-items:baseline;}
  .cm-frows .cm-fl{font-size:.78rem;color:var(--muted);}
  .cm-frows .cm-fv{font-size:.82rem;color:var(--ink);min-width:0;overflow-wrap:anywhere;}
  .cm-task{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--body);padding:4px 0;border-bottom:1px solid var(--border);}
  .cm-task:last-of-type{border-bottom:none;}
  .cm-task.done span{opacity:.55;text-decoration:line-through;}
  .cm-task .cm-dim{color:var(--muted);white-space:nowrap;text-decoration:none;}
  .cm-task .rowdel{margin-left:auto;}
  .cm-taskadd{display:flex;gap:8px;margin-top:8px;}
  .cm-taskadd input{flex:1;font-size:.85rem;}
  .cm-upload{display:flex;gap:8px;align-items:center;margin-top:10px;}
  .cm-upload select{flex:1;min-width:0;font-size:.82rem;padding:4px 6px;}
  .cm-actf{display:flex;gap:0;border:1px solid var(--border);border-radius:8px;overflow:hidden;}
  .cm-actf button{border:none;background:transparent;color:var(--muted);font-size:.72rem;font-weight:700;padding:4px 8px;cursor:pointer;}
  .cm-actf button[aria-pressed="true"]{background:var(--hover);color:var(--ink);}
  body.cm-open{overflow:hidden;}
  @media(max-width:760px){
    .cmask{padding:0;}
    .cmodal{max-width:none;max-height:none;height:100%;border-radius:0;border:none;}
    .cmodal-body{grid-template-columns:1fr;}
    .cm-right{border-left:none;padding-left:0;margin-top:18px;border-top:1px solid var(--border);padding-top:16px;}
  }
  /* ===== V2 polish - MOVED OUT of @media print 2026-07-11: the rollback
     rebuild had pasted these rules INSIDE the print block, so none of them
     (including the 1060px width) applied on screen. ===== */
  body{font-variant-numeric:tabular-nums;}
  ::selection{background:rgba(42,157,143,.25);}
  .wrap{max-width:1060px;}
  .card{padding:20px 24px;box-shadow:0 1px 4px rgba(26,46,42,.06);}
  h2{font-size:1.18rem;}
  input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--secondary);outline-offset:1px;}
  .ub-search input:focus-visible{outline:none;}
  .btn{transition:background .15s ease,color .15s ease;}
  .vstat b{font-family:Georgia,'Times New Roman',serif;font-size:1.3rem;}
  th,td{padding-top:8px;padding-bottom:8px;}
  th.num,td.num{text-align:right;}
  /* deal-health chips (audit 2026-07-11): classed, AA-contrast */
  .tag.warn{background:var(--warn);color:#fff;}
  .tag.neg{background:var(--neg);color:#fff;}
  .tag.hold{background:#7E6229;color:#fff;}
  /* money columns scan right-aligned */
  #deal_table th:nth-child(5),#deal_table td:nth-child(5),#deal_table th:nth-child(6),#deal_table td:nth-child(6),#deal_table th:nth-child(7),#deal_table td:nth-child(7){text-align:right;}

  /* ===== deal workspace (Phases 1+2, 2026-07-11) - at >=1440px the deal
     page becomes two panes: fluid work column + sticky intelligence rail
     (live ratios, verdict, engine notes with click-to-focus, doc gaps,
     actions). Under 1360px, and in the pop-out docs window, the original
     single-column layout with the sticky ribbon is untouched. ===== */
  .rail{display:none;}
  /* Narrow-tier fluid width (2026-07-11): below the rail breakpoint the
     single column fills the window instead of pooling margins around the
     1060px cap. The rail tiers set their own caps above 1360px. */
  body.deal-open .wrap{max-width:1330px;}
  .dealmain{min-width:0;}
  .dm-hide{display:none !important;}
  .flashfield{outline:2px solid var(--brass) !important;outline-offset:2px;}
  .railmid{display:contents;}
  .railcard{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px;box-shadow:0 1px 4px rgba(26,46,42,.06);}
  .railcard h4{margin:0 0 10px;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
  .railcard .plain{margin:0;padding-left:16px;}
  .railcard .plain li{margin:6px 0;font-size:.85rem;line-height:1.55;}
  .raildark{background:var(--backdrop);border-color:transparent;box-shadow:var(--shadow);}
  .railchips{display:flex;flex-direction:column;gap:8px;}
  .railrow{display:flex;flex-wrap:wrap;gap:6px;}
  .railrow:empty{display:none;}
  .railchips .chip{font-size:.78rem;padding:5px 11px;}
  a.notelink{color:var(--primary);font-weight:600;text-decoration:underline;text-underline-offset:2px;}
  body.docs-window .qnav{display:none;}
  body.docs-window #btn_popout_docs{display:none;}
  /* Phase 3 (2026-07-11): at >=1920px the entry sections pair up -
     Borrowers beside Assets & Liabilities, Properties beside Mortgage
     Request. display:contents keeps every narrower width byte-identical. */
  .secpair,.secol{display:contents;}
  /* Ultra-wide bands (2026-07-11): at >=2100px the side margins get jobs -
     vertical section nav (scroll-spy) on the left, promoted verdict history
     and portal uploads on the right. Below 2100px nothing changes. */
  .lnav{display:none;}
  .lnav a{font-size:.82rem;font-weight:600;color:var(--muted);text-decoration:none;padding:7px 12px;border:1px solid transparent;border-radius:999px;}
  .lnav a:hover,.lnav a.on{background:var(--surface);color:var(--primary);border-color:var(--border);}
  @media screen and (min-width:2100px){
    body.deal-open:not(.docs-window) .wrap{max-width:2400px;}
    body.deal-open:not(.docs-window) .dealgrid{grid-template-columns:200px minmax(0,1fr) 400px;}
    body.deal-open:not(.docs-window) .lnav{display:flex;flex-direction:column;gap:2px;position:sticky;top:80px;align-self:start;}
    body.deal-open:not(.docs-window) .stick .qnav{display:none;}
    body.deal-open:not(.docs-window) #vh_h3{display:none;}
    body.deal-open:not(.docs-window) .rail{top:80px;height:calc(100vh - 96px);max-height:calc(100vh - 96px);}
    body.deal-open:not(.docs-window) h2{scroll-margin-top:84px;}
  }
  @media screen and (min-width:1920px){
    body.deal-open:not(.docs-window) .secpair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 24px;align-items:start;}
    body.deal-open:not(.docs-window) .secpair .secol{display:block;min-width:0;}
  }
  @media screen and (min-width:1360px){
    body.deal-open .wrap{max-width:1780px;}
    body.deal-open .dealgrid{display:grid;grid-template-columns:minmax(0,1fr) 372px;gap:24px;align-items:start;}
    /* Sticky-shove fix (2026-07-11): the page's bottom padding moves INSIDE
       the grid's work column, so the rail's containing block reaches the
       true end of the page and the rail is never pushed under the nav. */
    body.deal-open .wrap{padding-bottom:0;}
    body.deal-open .dealmain{padding-bottom:80px;}
    /* Anchor offset per tier (2026-07-11): 200px was tuned for the old
       ribbon+strip stack. Two-band keeps header+strip (109px), ultra keeps
       only the header (68px). */
    body.deal-open h2{scroll-margin-top:130px;}
    body.deal-open .rail{display:flex;flex-direction:column;gap:20px;position:sticky;top:121px;height:calc(100vh - 137px);max-height:calc(100vh - 137px);overflow:hidden;}
    /* Cockpit split (2026-07-11): chips pinned top, actions pinned bottom,
       only the middle stack scrolls when space runs short. */
    body.deal-open .railmid{display:flex;flex-direction:column;gap:20px;flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;}
    body.deal-open .railmid > .railcard{flex:0 0 auto;}
    body.deal-open #rc_actions{margin-top:auto;}
    /* Savebar unification (2026-07-11): on rail tiers the Actions card IS
       the save surface - the full-width bottom bar would duplicate it and
       cover the page. It still serves narrow windows and the docs window. */
    body.deal-open:not(.docs-window) .savebar{display:none;}
    body.deal-open .stick .metrics{display:none;}
    body.deal-open.docs-window .stick .metrics{display:flex;}
    body.deal-open.docs-window .dealgrid{display:block;}
    body.deal-open.docs-window .rail{display:none;}
    body.deal-open.docs-window .wrap{max-width:1160px;}
  }

  @media print{
    .chippop,.seg,.listhead .btn,.savebar,.cmask{display:none !important;}
    body.cm-open{overflow:visible;}
    textarea{height:auto;overflow:visible;}
  }
  /* ===== small screens (polish pass round 2, 2026-07-14) =====
     One rule set for phones and narrow splits: the page never scrolls
     sideways - individual cards do. Everything else tightens spacing. */
  @media screen and (max-width:760px){
    .wrap{padding:14px 12px 90px;}
    .card{padding:12px;overflow-x:auto;}
    .card table{min-width:620px;}
    #report_wrap .card table{min-width:480px;}
    .metrics{padding:8px 10px;gap:6px;}
    .chip{padding:5px 10px;font-size:.78rem;}
    .qnav{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;}
    .qnav a{white-space:nowrap;}
    .chippop{min-width:240px;max-width:92vw;}
    .savebar{padding:10px 12px;gap:10px;}
    .grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));}
    #report_tiles .vstat{flex:1 1 100%;}
    .listhead{flex-wrap:wrap;}
    .ub-back{display:none;}
    #ub_name{display:none;}
    /* 2026-09-01: hiding #ub_name was not enough. .ub-inner is a nowrap flex
       row, so the actions still ran to 534px on a 390px viewport - 144px of
       page overflow, with the account pill's centre at x=500, off-screen and
       untappable (theme toggle and notifications went with it). Same failure
       as MDMT's .util-actions. Wrapping brings the account menu back to
       x=334 and drops page overflow to zero. */
    .ub-inner{flex-wrap:wrap;row-gap:8px;}
    .ub-actions{flex-wrap:wrap;}
    .listhead h2{flex-basis:100%;}
    h2{font-size:1rem;margin:24px 0 12px;}
  }

  /* ===== print (P1) - verdicts and the statement review print clean ===== */
  @media print{
    .ub-bar,.qnav,.savebar,.btn,.rowdel,.addrow,#toasts,#auth_msg,.rail,input[type=file],.cmask{display:none !important;}
    body.cm-open{overflow:visible;}
    body{background:var(--surface);}
    .wrap{max-width:none;padding:0;}
    .stick{position:static;}
    .metrics{display:flex !important;background:var(--surface);box-shadow:none;padding:0 0 6px;}
    .chip{color:var(--ink);background:var(--surface);border:1px solid var(--border);}
    .computing{display:none;}
    .card{break-inside:avoid;border-color:#ccc;}
    input,select,textarea{border:none;padding:0;background:none;appearance:none;}
    a{color:var(--ink);text-decoration:none;}
  }

  /* Down payment picture (2026-09-26, Patrick's polish pass) */
  .dp-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
  .dpv{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:12px;padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:var(--mist)}
  .dpv.short{border-color:var(--neg);background:var(--bad-bg)}
  .dpv.ok{border-color:var(--money);background:var(--money-bg)}
  .dpk{min-width:0}
  .dpk small{display:block;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}
  .dpk b{display:block;font-size:1.15rem;line-height:1.2;margin-top:2px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dpk.lead b{font-size:1.45rem}
  .dpv.short .dpk.lead b{color:var(--neg)} .dpv.ok .dpk.lead b{color:var(--money)}
  .dpk span{display:block;font-size:.8rem;color:var(--muted);line-height:1.3}
  .dp-asks{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:6px}
  .dp-asks li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
  .dp-asks li .badge{margin-top:1px}
  .dp-fold{margin-top:10px}
  .dp-fold > summary{cursor:pointer;font-size:.9rem;color:var(--muted);font-weight:600}
  .dp-accts{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-top:6px}
  .dp-acct{border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:var(--surface);display:grid;gap:4px;font-size:.9rem}
  .dp-acct-bal{font-size:1.15rem;font-weight:700;color:var(--ink)}
  @media (max-width:900px){.dpv{grid-template-columns:repeat(2,minmax(0,1fr))}.dpk.lead{grid-column:1/-1}}
  .bs-headline{font-weight:600;color:var(--ink);margin-bottom:2px}
  .bs-headline.reconciles{color:var(--money)} .bs-headline.failed{color:var(--neg)} .bs-headline.cannot{color:var(--brass)}
