/* =========================================================================
   Minilya Simulation App — Stylesheet
   v1.7 (extracted from v1.6 inline <style> block, no content changes)
   ========================================================================= */

    :root {
    /* === Pass 1 (v4.7.9) baseline tokens — preserved unchanged === */
    --navy:#1F3A5F;
    --navy-2:#2A4870;
    --teal:#2C8C99;
    --teal-soft:#D6ECEF;
    --light-bg:#EEF3F7;
    --soft-border:#BBC5CF;
    --dark-text:#222;
    --muted:#5A6675;
    --code-bg:#F5F2EC;
    --green:#2E7D32;
    --green-bg:#E1F0E3;
    --amber:#C77700;
    --amber-bg:#FCEFD6;
    --red:#B3261E;
    --red-bg:#F9DCDA;
    --grey-bg:#E7ECEF;

    --block-sales:#FDF6E3;
    --block-mortgage:#EAF2F8;
    --block-rent:#F1F5E8;
    --block-cashflow:#FEF3E8;
    --block-fy27:#F4E8F0;
    --block-jbem:#E8F4F3;
    --block-infuse:#F9E8E8;
    --block-proj:#F0F0F6;
    /* === Pass 2 (v4.7.10) Trust family === */
    --trust-deep: #2C3F5C;
    --trust-text-mid: #4A5663;
    --trust-accent-hover: #3D5375;
    --trust-tint-soft: #EEF3F9;
    --trust-tint-mid: #DCE3EA;
    --trust-surface: #FAFBFC;
    --trust-surface-alt: #F6F8FB;
    --trust-tint-alt: #EFF2F6;
    --trust-tint-hover: #DEE6EF;
    --trust-border-soft: #D5DAE0;
    --trust-border-mid: #D6DDE5;
    --trust-border-pale: #D2DCE8;
    --trust-border-bold: #B0BFD4;
    --trust-border-soft2: #C5CDD7;
    --trust-border-cool: #C7D0DB;
    --trust-border-soft3: #D4DAE2;
    --trust-border-soft4: #B8C3D1;
    --trust-tint-cool: #EAEEF3;
    --trust-tint-cool2: #E1E5EB;
    --trust-surface-mid: #F2F5F8;
    --trust-tint-cool3: #DCE5EE;
    --trust-mortgage-mid: #DCE9F4;
    --trust-strong-alt: #1F3A52;
    --trust-deep-alt: #2C3845;
    /* === Pass 2 (v4.7.10) ROI family === */
    --roi-pos: #1A7A4A;
    --roi-pos-deep: #1A5230;
    --roi-pos-strong-alt: #0B8043;
    --roi-pos-alt: #1F7A4A;
    --roi-pos-muted: #5B7A47;
    --roi-pos-tint-soft: #ECF7EE;
    --roi-pos-tint-soft2: #F2FAF5;
    --roi-pos-tint-mid: #CFEED7;
    --roi-pos-tint-mid2: #D9EFDF;
    --roi-pos-tint-pale: #E8F5EC;
    --roi-pos-tint-faded: #D9E5C5;
    --roi-pos-tint-faded2: #E4ECD5;
    --roi-pos-tint-mid3: #C7E1B2;
    --roi-pos-faded: #BFCEA1;
    --roi-neg-mid: #C62828;
    --roi-neg-deep: #8F1E18;
    --roi-neg-muted: #B0563A;
    --roi-neg-tint-soft: #FEEDEB;
    --roi-neg-tint-mid: #F2D7D5;
    /* === Pass 2 (v4.7.10) Cottesloe family === */
    --cot-deep: #6B5B2E;
    --cot-strong: #C97B18;
    --cot-gold: #C9A961;
    --cot-gold-deep: #D4A02A;
    --cot-tint-soft: #FFF8E1;
    --cot-tint-paler: #FFFCF2;
    --cot-tint-cream: #FBF6E1;
    --cot-tint-cream2: #FFFBEA;
    --cot-cream: #FDF3E8;
    --cot-cream-soft: #F8F4E8;
    --cot-cream-mid: #F8E6D0;
    --cot-cream-cool: #F7F3E4;
    --cot-cream-soft2: #F7EFD5;
    --cot-cream-pale: #F0E6C8;
    --cot-cream-faded: #ECE0BF;
    --cot-cream-amber: #F8E2B1;
    --cot-amber-mid: #F4D98F;
    --cot-amber-warm: #FBE6B5;
    --cot-orange-warm: #E9BE99;
    --cot-orange-tint: #F5DCC9;
    --cot-brown-mid: #A35A2A;
    --cot-brown-deep: #6B4A10;
    --cot-brown-text: #5A4A20;
    /* === Pass 2 (v4.7.10) Family family === */
    --family-mid: #A9D4CC;
    --family-tint-soft: #D7E8E6;
    --family-tint-soft2: #CDE7E2;
    /* === Pass 2 (v4.7.10) Diagnostic family === */
    --diag-near-black: #111111;
    --diag-grey-mid:   #999999;
    --diag-grey-soft:  #EEEEEE;
    --diag-dark: #3A3A3A;
    --diag-soft: #7B8694;
    --diag-accent-yellow: #FFD166;
    --diag-accent-be: #FFEEA3;
    --diag-accent-be-bg: #FFF3C7;
    --diag-accent-be-tint: #FFF1B8;
    --diag-purple: #6C4F8A;
    --diag-purple-deep: #634D9B;
    --diag-purple-tint-soft: #F3EEF8;
    --diag-purple-tint-mid: #E0DCED;
    --diag-purple-tint: #DFDFEA;
    --diag-purple-mid: #C8C0DD;
    --diag-mauve-tint: #E9D9E1;
    --diag-surface-white: #FFFFFF;
    --diag-accent-cream: #FFFBE8;
  }
  * { box-sizing:border-box; }
  html,body { margin:0; padding:0; }
  body {
    font-family: "Segoe UI", Arial, Helvetica, sans-serif;
    color:var(--dark-text);
    background:var(--trust-surface);
    font-size:13.5px;
    line-height:1.4;
  }
  a { color:var(--teal); }

  header {
    background:var(--navy);
    color:var(--diag-surface-white);
    padding:10px 22px;
    display:flex; align-items:center; justify-content:space-between;
    flex-wrap:wrap;
  }
  header h1 { font-size:18px; margin:0; font-weight:600; letter-spacing:.2px; }
  header h1 .hdr-ver {
    display: inline-block;
    font-size: 14px;
    color: var(--navy);
    background: var(--diag-accent-yellow);
    margin-left: 12px;
    font-weight: 700;
    letter-spacing: 0.3px;
    padding: 2px 11px;
    border-radius: 11px;
    vertical-align: middle;
  }
  header .meta { color:var(--trust-border-mid); font-size:12px; margin-top:2px; }
  nav.tabs button {
    background:transparent; color:var(--trust-border-mid); border:1px solid var(--navy-2);
    padding:6px 14px; margin-right:6px; border-radius:3px;
    font-size:13px; cursor:pointer;
  }
  nav.tabs button.active { background:var(--teal); color:var(--diag-surface-white); border-color:var(--teal); }
  nav.tabs button:hover:not(.active) { background:var(--navy-2); }

  #summary-strip {
    background:var(--light-bg);
    border-bottom:1px solid var(--soft-border);
    padding:8px 22px;
    display:flex; flex-wrap:wrap; gap:22px; align-items:center;
    font-size:12.5px;
  }
  #summary-strip .stat { color:var(--navy); }
  #summary-strip .stat b { color:var(--dark-text); margin-left:4px; }
  #summary-strip .legend { margin-left:auto; display:flex; gap:8px; align-items:center; font-size:12px; }
  #summary-strip .chip {
    display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; margin-right:3px;
  }
  .chip.pos { background:var(--green-bg); color:var(--green); }
  .chip.amb { background:var(--amber-bg); color:var(--amber); }
  .chip.neg { background:var(--red-bg);   color:var(--red); }
  .chip.na  { background:var(--grey-bg);  color:var(--muted); }
  .chip.good { background:var(--green-bg); color:var(--green); border:1px solid var(--green); }

  main { padding:16px 22px 50px 22px; }
  section.panel { background:var(--diag-surface-white); border:1px solid var(--soft-border); border-radius:5px; padding:14px 18px; margin-bottom:14px; }
  section.panel h2 { margin:0 0 10px 0; color:var(--navy); font-size:15px; border-bottom:2px solid var(--teal); padding-bottom:4px; }
  section.panel h3 { margin:12px 0 6px 0; color:var(--navy); font-size:13px; }

  /* Scenario comparison table: sticky header + sticky left column, coloured row blocks */
  .cmp-wrap {
    max-height: calc(100vh - 260px);
    overflow:auto;
    border:1px solid var(--soft-border);
    border-radius:4px;
    background:var(--diag-surface-white);
  }
  table.cmp {
    width:100%;
    border-collapse:separate;
    border-spacing:0;
    font-size:12.2px;
    min-width:1200px;
  }
  table.cmp thead th {
    position:sticky; top:0; z-index:3;
    background:var(--navy); color:var(--diag-surface-white); font-weight:600;
    padding:7px 8px; text-align:center; border-right:1px solid var(--navy-2);
  }
  table.cmp thead th.label-col {
    left:0; z-index:4; min-width:210px; max-width:210px; text-align:left; padding-left:10px;
    border-right:1px solid var(--navy-2);
  }
  table.cmp tbody td {
    padding:4px 8px; text-align:right; border-bottom:1px solid var(--grey-bg); border-right:1px solid var(--light-bg);
    min-width:110px;
  }
  table.cmp tbody td.label {
    position:sticky; left:0; z-index:2;
    text-align:left; font-weight:500; color:var(--dark-text);
    min-width:210px; max-width:210px;
    background:var(--light-bg);
    border-right:1px solid var(--soft-border);
  }
  table.cmp tbody td.label.sub {
    color:var(--muted); font-weight:400; font-style:italic; padding-left:22px;
  }
  table.cmp tbody tr.block-hdr td {
    background:var(--navy);
    color:var(--diag-surface-white); font-weight:700; font-size:11.5px; letter-spacing:.5px; text-transform:uppercase;
    padding:4px 10px;
  }
  table.cmp tbody tr.block-hdr td.label {
    background:var(--navy);
    color:var(--diag-surface-white); font-weight:700;
  }
  /* Block tinted backgrounds */
  table.cmp tbody tr.b-sales    td:not(.label) { background:var(--block-sales); }
  table.cmp tbody tr.b-sales    td.label       { background:var(--cot-cream-soft2); }
  table.cmp tbody tr.b-mortgage td:not(.label) { background:var(--block-mortgage); }
  table.cmp tbody tr.b-mortgage td.label       { background:var(--trust-mortgage-mid); }
  table.cmp tbody tr.b-rent     td:not(.label) { background:var(--block-rent); }
  table.cmp tbody tr.b-rent     td.label       { background:var(--roi-pos-tint-faded2); }
  table.cmp tbody tr.b-cashflow td:not(.label) { background:var(--block-cashflow); }
  table.cmp tbody tr.b-cashflow td.label       { background:var(--cot-cream-mid); }
  table.cmp tbody tr.b-fy27     td:not(.label) { background:var(--block-fy27); }
  table.cmp tbody tr.b-fy27     td.label       { background:var(--diag-mauve-tint); }
  table.cmp tbody tr.b-jbem     td:not(.label) { background:var(--block-jbem); }
  table.cmp tbody tr.b-jbem     td.label       { background:var(--family-tint-soft); }
  table.cmp tbody tr.b-infuse   td:not(.label) { background:var(--block-infuse); }
  table.cmp tbody tr.b-infuse   td.label       { background:var(--roi-neg-tint-mid); }
  table.cmp tbody tr.b-proj     td:not(.label) { background:var(--block-proj); }
  table.cmp tbody tr.b-proj     td.label       { background:var(--diag-purple-tint); }

  /* v2.2 — Per-FY block tints (Compare tab, multi-FY engine) */
  table.cmp tbody tr.b-fy27 td:not(.label) { background:var(--cot-amber-warm); }
  table.cmp tbody tr.b-fy27 td.label       { background:var(--cot-amber-mid); }
  table.cmp tbody tr.b-fy28 td:not(.label) { background:var(--family-tint-soft2); }
  table.cmp tbody tr.b-fy28 td.label       { background:var(--family-mid); }
  table.cmp tbody tr.b-fy29 td:not(.label) { background:var(--roi-pos-tint-faded); }
  table.cmp tbody tr.b-fy29 td.label       { background:var(--roi-pos-faded); }
  table.cmp tbody tr.b-fy30 td:not(.label) { background:var(--diag-purple-tint-mid); }
  table.cmp tbody tr.b-fy30 td.label       { background:var(--diag-purple-mid); }
  table.cmp tbody tr.b-fy31 td:not(.label) { background:var(--cot-orange-tint); }
  table.cmp tbody tr.b-fy31 td.label       { background:var(--cot-orange-warm); }
  table.cmp tbody tr.b-year5 td:not(.label) { background:var(--trust-border-pale); }
  table.cmp tbody tr.b-year5 td.label       { background:var(--trust-border-bold); font-weight:600; }

  /* v2.2 — Block headers with collapse/expand affordance */
  table.cmp tbody tr.block-hdr {
    cursor: pointer;
    user-select: none;
  }
  table.cmp tbody tr.block-hdr.fy-sales td  { background:var(--navy); }
  table.cmp tbody tr.block-hdr.fy-fy27 td   { background:var(--amber); }
  table.cmp tbody tr.block-hdr.fy-fy28 td   { background:var(--teal); }
  table.cmp tbody tr.block-hdr.fy-fy29 td   { background:var(--roi-pos-muted); }
  table.cmp tbody tr.block-hdr.fy-fy30 td   { background:var(--diag-purple-deep); }
  table.cmp tbody tr.block-hdr.fy-fy31 td   { background:var(--cot-brown-mid); }
  table.cmp tbody tr.block-hdr.fy-year5 td  { background:var(--navy); border-top:3px solid var(--diag-accent-yellow); }
  table.cmp tbody tr.block-hdr.fy-proj td   { background:var(--muted); }
  table.cmp tbody tr.block-hdr .block-toggle {
    display:inline-block;
    margin-right:6px;
    color:var(--diag-accent-yellow);
    font-size:11px;
    width:10px;
  }
  table.cmp tbody tr.block-hdr .block-summary {
    color:var(--trust-border-mid);
    font-weight:400;
    font-size:11px;
    text-transform:none;
    letter-spacing:0;
  }
  table.cmp tbody tr.block-hdr:hover td {
    filter: brightness(115%);
  }
  table.cmp tbody tr.block-hdr.collapsed .block-toggle::before {
    /* Collapsed state — handled inline in JS via ▶ vs ▼ */
  }

  /* v2.2 — Compare-tab toolbar links */
  a.cmp-link {
    color: var(--teal);
    text-decoration: none;
    font-weight: 500;
  }
  a.cmp-link:hover {
    text-decoration: underline;
  }

  /* v2.2 — Print-friendly Year-5 Summary */
  @media print {
    header, nav.tabs, #summary-strip, footer, #drill-sticky, .toast-host { display:none !important; }
    main { padding:8px !important; }
    table.cmp { font-size:10px !important; }
    table.cmp tbody tr.block-hdr.collapsed { display:none; }
    table.cmp tbody tr.block-hdr:not(.fy-year5):not(.fy-sales) { display:none; }
    /* Print only Sales timeline + Year-5 Summary */
  }

  table.cmp td.pos    { color:var(--green); font-weight:700; }
  table.cmp td.amb    { color:var(--amber); font-weight:700; }
  table.cmp td.neg    { color:var(--red);   font-weight:700; }
  table.cmp td.muted  { color:var(--muted); }
  table.cmp td.infuse { color:var(--red); font-weight:600; }
  table.cmp td.good   { color:var(--green); font-weight:700; }
  table.cmp th.sel    { cursor:pointer; user-select:none; }
  table.cmp th.sel:hover { background:var(--teal); }

  /* Drill-down detail tables */
  .admin-grid { display:grid; grid-template-columns: 1fr 1fr; gap:14px; }
  @media (max-width:1100px) { .admin-grid { grid-template-columns: 1fr; } }
  table.detail { width:100%; border-collapse:collapse; font-size:12.2px; margin-bottom:8px; }
  table.detail th, table.detail td { border:1px solid var(--soft-border); padding:4px 7px; text-align:right; }
  table.detail th { background:var(--teal); color:var(--diag-surface-white); font-weight:600; text-align:center; }
  table.detail td.label { text-align:left; background:var(--light-bg); font-weight:500; color:var(--navy); }
  table.detail tr.total td { background:var(--trust-tint-mid); font-weight:700; }
  table.detail td.pos { color:var(--green); font-weight:700; }
  table.detail td.amb { color:var(--amber); font-weight:700; }
  table.detail td.neg { color:var(--red);   font-weight:700; }
  table.detail td.infuse { color:var(--red); font-weight:600; }

  /* Inputs */
  label.field { display:block; margin:5px 0; font-size:12.5px; color:var(--navy); }
  label.field .lbl { display:inline-block; width:300px; vertical-align:middle; }
  label.field input[type=number], label.field input[type=text], label.field select {
    width:160px; padding:4px 6px; border:1px solid var(--soft-border); border-radius:3px; font-size:13px;
    text-align:right; background:var(--diag-surface-white);
  }
  label.field select { text-align:left; width:230px; }
  label.field input[type=checkbox] { transform:scale(1.15); margin-right:6px; vertical-align:middle; }
  label.field .unit { margin-left:6px; color:var(--muted); font-size:12px; }
  label.field input.invalid { border-color:var(--red); background:var(--roi-neg-tint-soft); }

  button.btn {
    background:var(--navy); color:var(--diag-surface-white); border:0; padding:6px 14px; font-size:13px;
    border-radius:3px; cursor:pointer; margin-right:6px;
  }
  button.btn:hover { background:var(--navy-2); }
  button.btn.secondary { background:var(--diag-surface-white); color:var(--navy); border:1px solid var(--navy); }
  button.btn.secondary:hover { background:var(--light-bg); }
  button.btn.danger { background:var(--red); }
  button.btn.danger:hover { background:var(--roi-neg-deep); }

  /* Admin */
  .admin-section { background:var(--diag-surface-white); border:1px solid var(--soft-border); border-radius:4px; padding:10px 14px; }
  .admin-section h3 { margin:0 0 8px 0; color:var(--navy); font-size:13px; border-bottom:1px dashed var(--soft-border); padding-bottom:4px; }
  .unit-editor table { font-size:11.8px; width:100%; border-collapse:collapse; }
  .unit-editor th, .unit-editor td { border:1px solid var(--soft-border); padding:3px 5px; }
  .unit-editor th { background:var(--navy); color:var(--diag-surface-white); }
  .unit-editor input { width:90px; text-align:right; padding:2px 4px; font-size:12px; border:1px solid var(--soft-border); border-radius:2px; }
  .debug-log { background:var(--diag-near-black); color:var(--roi-pos-tint-mid3); padding:10px; font-family:Consolas,monospace; font-size:11.5px; max-height:200px; overflow:auto; white-space:pre-wrap; }
  .state-view { background:var(--code-bg); padding:10px; font-family:Consolas,monospace; font-size:11px; max-height:280px; overflow:auto; white-space:pre-wrap; border:1px solid var(--soft-border); border-radius:3px; }

  /* Modals & toasts */
  .modal-backdrop { position:fixed; inset:0; background:rgba(20,30,45,0.55); display:flex; align-items:center; justify-content:center; z-index:100; }
  .modal { background:var(--diag-surface-white); border-radius:6px; min-width:420px; max-width:640px; padding:18px 22px; box-shadow:0 20px 60px rgba(0,0,0,.35); }
  .modal h3 { margin:0 0 10px 0; color:var(--navy); }
  .modal .actions { margin-top:16px; text-align:right; }
  .toast-host { position:fixed; bottom:20px; right:20px; z-index:200; display:flex; flex-direction:column; gap:8px; }
  .toast { padding:8px 14px; border-radius:3px; box-shadow:0 6px 18px rgba(0,0,0,.15); background:var(--navy); color:var(--diag-surface-white); font-size:13px; }
  .toast.err { background:var(--red); }
  .toast.ok  { background:var(--green); }

  footer {
    border-top:1px solid var(--soft-border); padding:10px 22px; font-size:12px; color:var(--muted);
    display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;
  }
  .muted { color:var(--muted); font-size:12px; }
  .scroll-x { overflow-x:auto; }

  /* Page-level sticky: main header (with tabs) stays visible while scrolling */
  header {
    position:sticky; top:0; z-index:15;
  }

  /* Sticky drill-down header (v1.3: full panel header, positioned below page header) */
  #drill-sticky {
    position:sticky; top:62px; z-index:5;
    background:var(--light-bg);
    border-bottom:2px solid var(--teal);
    padding:10px 18px;
    margin:-14px -18px 14px -18px;
    box-shadow:0 2px 6px rgba(0,0,0,0.06);
  }
  #drill-sticky h3 { margin:0 0 8px 0; color:var(--navy); font-size:14px; }
  #drill-sticky #drill-selector button { margin-bottom:0; }

  /* Selling sequence editor (v1.2) */
  .seq-editor table { width:auto; border-collapse:collapse; font-size:12.5px; }
  .seq-editor th, .seq-editor td { border:1px solid var(--soft-border); padding:4px 8px; text-align:center; }
  .seq-editor th { background:var(--navy); color:var(--diag-surface-white); }
  .seq-editor select { padding:3px 5px; font-size:12.5px; border:1px solid var(--soft-border); border-radius:2px; }
  .seq-editor td.err { background:var(--red-bg); }
  .seq-editor .units-summary { margin-top:8px; font-size:12px; color:var(--muted); }

  /* v2.3 — Matrix tab styling */
  table.matrix-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 8px;
    margin-top: 8px;
  }
  table.matrix-table thead th {
    background: var(--navy);
    color: var(--diag-surface-white);
    text-align: center;
    padding: 8px 10px;
    border-radius: 4px;
  }
  table.matrix-table thead th.row-label-col {
    background: transparent;
    width: 130px;
  }
  table.matrix-table thead th.policy-col .policy-key {
    font-size: 16px;
    font-weight: 700;
    color: var(--diag-accent-yellow);
  }
  table.matrix-table thead th.policy-col .policy-label {
    font-size: 11.5px;
    font-weight: 400;
    color: var(--trust-border-mid);
    margin-top: 2px;
  }
  table.matrix-table tbody td.row-label {
    background: var(--navy);
    color: var(--diag-surface-white);
    border-radius: 4px;
    padding: 12px 10px;
    text-align: left;
    vertical-align: middle;
    width: 130px;
  }
  table.matrix-table tbody td.row-label .row-label-n {
    font-size: 22px;
    font-weight: 700;
    color: var(--diag-accent-yellow);
  }
  table.matrix-table tbody td.row-label .row-label-detail {
    font-size: 11px;
    color: var(--trust-border-mid);
    margin-top: 4px;
    line-height: 1.4;
  }
  table.matrix-table tbody td.matrix-cell {
    background: var(--diag-surface-white);
    border: 1px solid var(--soft-border);
    border-radius: 4px;
    padding: 10px 12px;
    cursor: pointer;
    transition: transform 80ms ease-out, box-shadow 80ms ease-out;
    min-width: 220px;
  }
  table.matrix-table tbody td.matrix-cell:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.10);
  }
  table.matrix-table tbody td.matrix-cell.matrix-green {
    border-left: 4px solid var(--green);
  }
  table.matrix-table tbody td.matrix-cell.matrix-amber {
    border-left: 4px solid var(--amber);
  }
  table.matrix-table tbody td.matrix-cell.matrix-red {
    border-left: 4px solid var(--red);
  }
  table.matrix-table tbody td.matrix-cell .cell-line {
    display: flex;
    justify-content: space-between;
    font-size: 12px;
    padding: 2px 0;
  }
  table.matrix-table tbody td.matrix-cell .cell-line .lab {
    color: var(--muted);
  }
  table.matrix-table tbody td.matrix-cell .cell-line .val {
    color: var(--dark-text);
    font-weight: 500;
  }

  /* v2.4 — Drill-down per-FY blocks */
  .drill-fy-host { display: block; margin-top: 6px; }
  .drill-fy-block {
    background: var(--diag-surface-white);
    border: 1px solid var(--soft-border);
    border-radius: 5px;
    margin-bottom: 10px;
    overflow: hidden;
  }
  .drill-fy-header {
    color: var(--diag-surface-white);
    padding: 8px 12px;
    cursor: pointer;
    user-select: none;
    display: flex;
    align-items: center;
    gap: 12px;
    transition: filter 80ms;
  }
  .drill-fy-header:hover { filter: brightness(110%); }
  .drill-fy-header .block-toggle {
    color: var(--diag-accent-yellow); font-size: 11px; width: 12px; display:inline-block;
  }
  .drill-fy-header .drill-fy-title {
    font-weight: 700;
    font-size: 14px;
    letter-spacing: 0.5px;
  }
  .drill-fy-header .drill-fy-summary {
    color: var(--trust-border-mid);
    font-weight: 400;
    font-size: 12px;
    margin-left: auto;
  }
  .drill-fy-header.b-fy27-hdr { background: var(--amber); }
  .drill-fy-header.b-fy28-hdr { background: var(--teal); }
  .drill-fy-header.b-fy29-hdr { background: var(--roi-pos-muted); }
  .drill-fy-header.b-fy30-hdr { background: var(--diag-purple-deep); }
  .drill-fy-header.b-fy31-hdr { background: var(--cot-brown-mid); }
  .drill-fy-body { padding: 10px 14px; background: var(--trust-surface); }
  .drill-fy-row { margin-bottom: 10px; }
  .drill-fy-grid {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 12px;
  }
  @media (max-width: 1100px) { .drill-fy-grid { grid-template-columns: 1fr; } }
  .drill-subhdr {
    font-size: 12px;
    color: var(--navy);
    font-weight: 600;
    margin-bottom: 4px;
    margin-top: 6px;
    letter-spacing: 0.3px;
  }

  /* v2.5 — Polish: visual refinements */
  /* Year-5 Summary block more prominent */
  table.cmp tbody tr.block-hdr.fy-year5 {
    box-shadow: 0 -2px 0 var(--diag-accent-yellow) inset;
  }
  table.cmp tbody tr.block-hdr.fy-year5 td {
    padding-top: 8px; padding-bottom: 8px;
    font-size: 12.5px;
  }
  /* Hover on scenario column headers */
  table.cmp thead th.sel {
    transition: background 100ms;
  }
  table.cmp thead th.sel:hover {
    background: var(--teal);
  }
  /* Subtle striping inside FY blocks for readability */
  table.cmp tbody tr.b-fy27:nth-child(even) td:not(.label),
  table.cmp tbody tr.b-fy28:nth-child(even) td:not(.label),
  table.cmp tbody tr.b-fy29:nth-child(even) td:not(.label),
  table.cmp tbody tr.b-fy30:nth-child(even) td:not(.label),
  table.cmp tbody tr.b-fy31:nth-child(even) td:not(.label) {
    filter: brightness(98%);
  }
  /* Help cursor on labels with title attributes */
  table.cmp tbody td.label[title], table.detail td.label[title] {
    cursor: help;
    border-bottom: 1px dotted transparent;
  }
  table.cmp tbody td.label[title]:hover, table.detail td.label[title]:hover {
    border-bottom-color: var(--muted);
  }
  /* Sharper transitions on tab buttons */
  nav.tabs button {
    transition: background 120ms, color 120ms;
  }
  /* Polish the toast notifications */
  .toast {
    animation: toast-slide 200ms ease-out;
  }
  @keyframes toast-slide {
    from { transform: translateX(20px); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
  }
  /* Drill-down per-FY block: add subtle interaction feedback */
  .drill-fy-block {
    transition: box-shadow 120ms;
  }
  .drill-fy-block:hover {
    box-shadow: 0 2px 6px rgba(0,0,0,0.06);
  }

  /* v2.6.0 — Key Metrics block (Compare tab, prominent) */
  table.cmp tbody tr.b-keymetrics td:not(.label) {
    background: var(--diag-accent-cream);
    font-weight: 500;
  }
  table.cmp tbody tr.b-keymetrics td.label {
    background: var(--diag-accent-be-tint);
    font-weight: 600;
  }
  table.cmp tbody tr.block-hdr.fy-keymetrics td {
    background: var(--amber);
    border-top: 3px solid var(--diag-accent-yellow);
    border-bottom: 2px solid var(--diag-accent-yellow);
    font-size: 13px;
    padding-top: 8px;
    padding-bottom: 8px;
  }


/* v2.8.2 — Tax Matrix cell visibility */
.cell-badge {
  font-size: 11.5px;
  color: var(--trust-deep-alt);
  background: var(--trust-tint-cool);
  padding: 3px 6px;
  border-bottom: 1px solid var(--trust-border-soft3);
  line-height: 1.4;
  font-weight: 500;
}
.cell-badge .muted { color: var(--muted); font-weight: 400; }
.cell-vals {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 4px;
  padding: 4px 6px;
  font-size: 11.5px;
  text-align: right;
}
.cell-vals span { white-space: nowrap; }
.cell-vals span:nth-child(1) { color: var(--pos, var(--roi-pos-alt)); }
.cell-vals span:nth-child(2) { color: var(--neg, var(--roi-neg-muted)); }


/* === v3.0.0 — Big Pic tab styling + print export === */
.bigpic-section { margin: 14px 0 24px 0; }
.bigpic-section-hdr {
  margin: 0 0 6px 0;
  padding: 6px 10px;
  background: var(--teal);
  color: var(--diag-surface-white);
  border-radius: 3px 3px 0 0;
  font-size: 14px;
}
.bigpic-table { width: 100%; }
.bigpic-section .scroll-x { background: var(--diag-surface-white); border: 1px solid var(--soft-border); padding: 4px; }

/* Centre calc table — boxed Net + Coverage rows */
.bigpic-calc-wrap {
  margin: 18px 0;
  padding: 14px;
  background: var(--cot-cream-soft);
  border: 2px solid var(--cot-gold);
  border-radius: 5px;
}
.bigpic-calc-wrap .bigpic-section-hdr.calc-hdr { background: var(--cot-deep); }
.calc-table tr.calc-headline > td {
  background: var(--cot-tint-soft);
  border-top: 3px solid var(--cot-deep);
  font-size: 13px;
}
.calc-table tr.calc-headline-last > td {
  background: var(--cot-tint-soft);
  border-bottom: 3px solid var(--cot-deep);
  font-size: 13px;
}
.calc-table tr.calc-headline > td:first-child,
.calc-table tr.calc-headline-last > td:first-child { background: var(--cot-cream-pale); }

/* Print-only settings snapshot — hidden on screen */
.print-settings { display: none; }
.print-settings .settings-grid { border-collapse: collapse; width: 100%; font-size: 11px; margin-top: 6px; }
.print-settings .settings-grid td { border: 1px solid var(--diag-grey-mid); padding: 3px 6px; }
.print-settings .settings-grid td:nth-child(odd) { background: var(--diag-grey-soft); font-weight: 600; width: 18%; }

/* === Print rules — only Big Pic visible === */
@media print {
  @page { size: A4 landscape; margin: 10mm; }
  body { background: var(--diag-surface-white); }
  header, #summary-strip, nav.tabs, footer, #modal-host, .toast-host { display: none !important; }
  main { padding: 0 !important; }
  .panel { display: none !important; }
  #view-bigpic { display: block !important; }
  .print-settings { display: block !important; margin-bottom: 12px; }
  .print-settings h3 { margin: 0; font-size: 14px; }
  .bigpic-section-hdr { background: var(--trust-deep) !important; color: var(--diag-surface-white) !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .bigpic-calc-wrap { background: var(--cot-tint-paler) !important; border-color: var(--cot-deep) !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .calc-table tr.calc-headline > td, .calc-table tr.calc-headline-last > td { background: var(--cot-tint-soft) !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  table.detail th { background: var(--trust-deep) !important; color: var(--diag-surface-white) !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  table.detail td.pos { color: var(--roi-pos) !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  table.detail td.neg, table.detail td.infuse { color: var(--roi-neg-muted) !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .bigpic-table { font-size: 9.5px; }
  .bigpic-table th, .bigpic-table td { padding: 2px 4px !important; }
}


/* ============================================================================
   v4.0.0 Phase 13 — UI polish + colour scheme + Phase 11 FY-group framing
   ============================================================================ */

/* 13.1 — Tab colour scheme by domain.
   Navy:   consol, bigpic         (executive / decision)
   Teal:   compare, drill         (per-scenario detail)
   Amber:  persprop               (personal property side)
   Purple: taxcalc, taxmatrix     (tax-side calculators)
   Grey:   calc, matrix, admin    (utilities / config)                          */
nav.tabs button[data-tab="consol"],
nav.tabs button[data-tab="bigpic"]    { background: var(--trust-strong-alt); }
nav.tabs button[data-tab="compare"],
nav.tabs button[data-tab="drill"]     { background: var(--teal); }
nav.tabs button[data-tab="persprop"]  { background: var(--cot-strong); }
nav.tabs button[data-tab="taxcalc"],
nav.tabs button[data-tab="taxmatrix"] { background: var(--diag-purple); }
nav.tabs button[data-tab="calc"],
nav.tabs button[data-tab="matrix"],
nav.tabs button[data-tab="admin"]     { background: var(--muted); }

nav.tabs button { color: var(--diag-surface-white); }
nav.tabs button:hover { filter: brightness(1.10); }

/* 13.2 — Active tab indicator: amber top border, bold, shadow.                 */
nav.tabs button.active {
  border-top: 3px solid var(--diag-accent-yellow);
  font-weight: 700;
  box-shadow: 0 2px 6px rgba(0,0,0,0.18);
  z-index: 1;
}

/* 13.3 — Group spacing (left margin on first button of each tab cluster).      */
nav.tabs button[data-tab="persprop"],
nav.tabs button[data-tab="compare"],
nav.tabs button[data-tab="calc"],
nav.tabs button[data-tab="taxcalc"] {
  margin-left: 12px;
}

/* 13.4 — White text on dark section headers (Consolidation + bottom-line).    */
.consol-hdr, .consol-domain-hdr, .bottom-line-hdr, .calc-hdr {
  color: var(--diag-surface-white) !important;
}

/* Phase 11 — FY-group framing CSS for the Personal Property tab.              */
.fy-group-start td { border-top: 2px solid var(--soft-border, var(--trust-border-soft)); }
.fy-group-end td   { border-bottom: 2px solid var(--soft-border, var(--trust-border-soft)); }
table.detail tr.fy-group-start:nth-of-type(odd)  td { background: var(--trust-surface); }
table.detail tr.fy-group-start:nth-of-type(even) td { background: var(--trust-surface-mid); }

/* Bottom Line headline frame (Consolidation Section 3).                       */
.bottom-line-frame {
  border: 2px solid var(--roi-pos);
  background: var(--roi-pos-tint-soft2);
  padding: 8px 10px;
  border-radius: 4px;
}


/* ============================================================================
   v4.3.0 — Overview-tab cluster + per-FY frames + Bottom Line group frames +
            class badges + collapsibility + Sales & Profit containers
   ============================================================================ */

/* 4.3.1 — Tab cluster: Bottom Line / Trust 5y View / Cottesloe 5y View share
   the navy header colour. The tab-overview class on the three nav buttons wins
   over the Phase-13 per-data-tab colour blocks below. */
nav.tabs button.tab-overview {
  background: var(--navy) !important;
}
nav.tabs button.tab-overview.active {
  background: var(--navy-2) !important;
}

/* 4.3.2 — Per-FY block framing (Trust 5y View + Cottesloe 5y View + S&P).
   Each FY block is a tinted card with a left accent stripe. Per-FY <details>
   blocks get the same treatment. */
.fy-block {
  margin: 10px 0;
  padding: 8px 10px 10px 12px;
  background: var(--trust-surface-alt);
  border: 1px solid var(--trust-border-soft);
  border-left: 4px solid var(--navy);
  border-radius: 4px;
}
.fy-block > summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--navy);
  font-size: 13px;
  padding: 4px 0 6px 0;
  list-style: none;
  user-select: none;
}
.fy-block > summary::-webkit-details-marker { display: none; }
.fy-block > summary::before {
  content: "▸ ";
  display: inline-block;
  width: 14px;
  color: var(--navy);
  transition: transform .12s ease;
}
.fy-block[open] > summary::before { content: "▾ "; }
.fy-block .fy-block-body { margin-top: 4px; }

/* Per-FY block colour variants for Cottesloe 5y View striping. */
.fy-block.fy-27 { border-left-color: var(--teal); }
.fy-block.fy-28 { border-left-color: var(--navy); }
.fy-block.fy-29 { border-left-color: var(--cot-gold); }
.fy-block.fy-30 { border-left-color: var(--diag-purple); }
.fy-block.fy-31 { border-left-color: var(--roi-pos); }

/* Standalone "no sales this FY" muted placeholder inside per-FY blocks. */
.fy-empty-note {
  color: var(--diag-soft);
  font-style: italic;
  font-size: 12px;
  padding: 4px 0;
}

/* 4.3.3 — Bottom Line 4-group frames (blue / orange / green / purple).
   Each group is a coloured card with a tinted background and a bold left rule. */
.bl-group {
  margin: 12px 0;
  padding: 10px 12px;
  border-radius: 4px;
  border: 1px solid var(--trust-border-soft);
}
.bl-group .bl-group-hdr {
  margin: 0 0 6px 0;
  font-size: 13.5px;
  font-weight: 700;
  letter-spacing: .2px;
  color: var(--navy);
}
.bl-group table.detail { width: 100%; }
.bl-group.bl-trust       { background: var(--trust-tint-soft); border-left: 5px solid var(--navy); }
.bl-group.bl-cottesloe   { background: var(--cot-cream); border-left: 5px solid var(--cot-strong); }
.bl-group.bl-family      { background: var(--roi-pos-tint-soft); border-left: 5px solid var(--roi-pos); }
.bl-group.bl-revenue     { background: var(--diag-purple-tint-soft); border-left: 5px solid var(--diag-purple); }
/* v4.4.0 §1.4 — Performance over 5y (yellow/amber frame) */
.bl-group.bl-perf        { background: var(--cot-tint-soft); border-left: 5px solid var(--cot-gold); }
.bl-group.bl-perf .bl-group-hdr { color: var(--cot-deep); }
.bl-group.bl-perf tr.bl-perf-cagr > td { padding-top: 0; }
.bl-group.bl-perf td.bl-perf-pct { color: var(--cot-deep); font-size: 11px; margin-left: 4px; }
/* v4.5.0 §T5 — Group A sub-block header rows (Trust Assets / Liabilities / Performance) */
.bl-group tr.bl-subhdr > td { background: var(--trust-tint-cool3); font-size: 12px; color: var(--navy); padding: 4px 6px; letter-spacing: 0.3px; }
.bl-group.bl-family .bl-group-hdr { color: var(--roi-pos-deep); }
.bl-group.bl-family tr.bl-headline > td {
  background: var(--roi-pos-tint-mid2);
  font-weight: 700;
  font-size: 13px;
  border-top: 2px solid var(--roi-pos);
  border-bottom: 2px solid var(--roi-pos);
}

/* 4.3.4 — Class badges (Revenue / Capital) for Sales & Profit rows. */
.cls-badge {
  display: inline-block;
  padding: 1px 6px;
  border-radius: 9px;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: .3px;
  text-transform: uppercase;
  vertical-align: 1px;
}
.cls-badge.cls-revenue { background: var(--cot-cream-amber); color: var(--cot-brown-deep); border: 1px solid var(--cot-gold); }
.cls-badge.cls-capital { background: var(--roi-pos-tint-mid); color: var(--roi-pos-deep); border: 1px solid var(--roi-pos); }

/* 4.3.5 — Sales & Profit primary view: per-scenario containers + sub-blocks. */
.sp-scenario {
  margin: 10px 0;
  border: 1px solid var(--trust-border-soft);
  border-radius: 5px;
  background: var(--diag-surface-white);
}
.sp-scenario > summary {
  cursor: pointer;
  padding: 8px 12px;
  background: var(--navy);
  color: var(--diag-surface-white);
  font-weight: 700;
  font-size: 13.5px;
  border-radius: 4px 4px 0 0;
  list-style: none;
}
.sp-scenario > summary::-webkit-details-marker { display: none; }
.sp-scenario > summary::before {
  content: "▸ ";
  display: inline-block;
  width: 14px;
  color: var(--diag-accent-yellow);
}
.sp-scenario[open] > summary::before { content: "▾ "; }
.sp-scenario .sp-scenario-body { padding: 8px 12px 10px 12px; }
.sp-scenario .sp-chip {
  display: inline-block;
  margin-left: 8px;
  padding: 1px 8px;
  font-size: 11px;
  font-weight: 500;
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.25);
  border-radius: 9px;
  color: var(--diag-surface-white);
}
.sp-subblock {
  margin: 8px 0;
  border: 1px solid var(--trust-tint-cool2);
  border-radius: 4px;
  background: var(--trust-surface);
}
.sp-subblock > summary {
  cursor: pointer;
  padding: 6px 10px;
  font-weight: 600;
  font-size: 12.5px;
  color: var(--navy);
  list-style: none;
}
.sp-subblock > summary::-webkit-details-marker { display: none; }
.sp-subblock > summary::before {
  content: "▸ ";
  display: inline-block;
  width: 14px;
  color: var(--navy);
}
.sp-subblock[open] > summary::before { content: "▾ "; }
.sp-subblock .sp-subblock-body { padding: 4px 10px 8px 10px; }
.sp-subblock table.detail { width: 100%; font-size: 11.5px; }
.sp-subblock table.detail th,
.sp-subblock table.detail td { padding: 3px 6px; }

/* Sub-block totals row + muted capital-account note. */
.sp-subblock tr.sp-totals td {
  font-weight: 700;
  background: var(--trust-tint-soft);
  border-top: 2px solid var(--navy);
}
.sp-cap-note {
  padding: 4px 8px 6px 8px;
  background: var(--roi-pos-tint-soft);
  color: var(--roi-pos-deep);
  font-size: 11px;
  font-style: italic;
  border-top: 1px dashed var(--roi-pos);
}

/* Per-scenario summary footer (tinted recap below sub-blocks). */
.sp-footer {
  margin-top: 6px;
  padding: 8px 10px;
  background: var(--trust-tint-soft);
  border: 1px solid var(--navy);
  border-radius: 4px;
  font-size: 12px;
  color: var(--navy);
}
.sp-footer strong { color: var(--navy); }

/* Muted "$0 — capital" treatment for capital-account margin-GST cells. */
.sp-muted { color: var(--diag-soft); font-style: italic; }

/* 4.3.6 — Section-level collapsible headers (top-level S&P primary + pivoted). */
.sp-section {
  margin: 16px 0 8px 0;
  border: 1px solid var(--trust-border-soft);
  border-radius: 5px;
  background: var(--diag-surface-white);
}
.sp-section > summary {
  cursor: pointer;
  padding: 9px 12px;
  background: var(--navy);
  color: var(--diag-surface-white);
  font-weight: 700;
  font-size: 14px;
  border-radius: 4px 4px 0 0;
  list-style: none;
}
.sp-section > summary::-webkit-details-marker { display: none; }
.sp-section > summary::before {
  content: "▸ ";
  display: inline-block;
  width: 14px;
  color: var(--diag-accent-yellow);
}
.sp-section[open] > summary::before { content: "▾ "; }
.sp-section .sp-section-body { padding: 8px 12px 12px 12px; }

/* 4.3.7 — Trust 5y View per-FY block summary chip (key headline figure). */
.fy-block .fy-headline-chip {
  display: inline-block;
  margin-left: 10px;
  padding: 1px 8px;
  font-size: 11.5px;
  font-weight: 500;
  background: var(--diag-surface-white);
  color: var(--navy);
  border: 1px solid var(--trust-border-soft2);
  border-radius: 9px;
}

/* Print rules: keep S&P containers from printing as collapsed elements when
   the Export-PDF flow opens Trust 5y View only. */
@media print {
  .sp-section, .sp-scenario, .sp-subblock, .fy-block { background: var(--diag-surface-white) !important; }
  .sp-section > summary, .sp-scenario > summary { background: var(--trust-deep) !important; color: var(--diag-surface-white) !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .bl-group { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}


/* ============================================================================
   v4.3.2 — Bottom Line group collapsibility (<details> + <summary> on bl-group)
   ============================================================================ */
details.bl-group > summary.bl-group-hdr {
  cursor: pointer;
  user-select: none;
  list-style: none;
  padding: 2px 4px;
  border-radius: 3px;
}
details.bl-group > summary.bl-group-hdr::-webkit-details-marker { display: none; }
details.bl-group > summary.bl-group-hdr::before {
  content: "▾ ";
  display: inline-block;
  width: 14px;
  color: var(--navy);
}
details.bl-group:not([open]) > summary.bl-group-hdr::before { content: "▸ "; }
details.bl-group:not([open]) > summary.bl-group-hdr { margin-bottom: 0; }
details.bl-group > summary.bl-group-hdr:hover { background: rgba(0,0,0,0.04); }


/* ============================================================================
   v4.3.2 — Group C inner sub-frames (blue trust block + orange Cottesloe block)
   ============================================================================ */
.bl-group.bl-family tr.bl-c-trust > td {
  background: var(--trust-tint-soft);   /* same blue tint as bl-trust group frame */
  border-left: 4px solid var(--navy);
}
.bl-group.bl-family tr.bl-c-trust:first-of-type > td {
  border-top: 1px solid var(--navy);
}
.bl-group.bl-family tr.bl-c-trust:last-of-type > td {
  border-bottom: 1px solid var(--navy);
}
.bl-group.bl-family tr.bl-c-cot > td {
  background: var(--cot-cream);   /* same orange tint as bl-cottesloe group frame */
  border-left: 4px solid var(--cot-strong);
  border-top: 1px solid var(--cot-strong);
  border-bottom: 1px solid var(--cot-strong);
}


/* ============================================================================
   v4.3.2 — Trust 5y View section-level master toggles (<details> on bigpic-section)
   ============================================================================ */
details.bigpic-section > summary.bigpic-section-hdr {
  cursor: pointer;
  user-select: none;
  list-style: none;
}
details.bigpic-section > summary.bigpic-section-hdr::-webkit-details-marker { display: none; }
details.bigpic-section > summary.bigpic-section-hdr::before {
  content: "▾ ";
  display: inline-block;
  width: 14px;
  color: var(--diag-surface-white);
}
details.bigpic-section:not([open]) > summary.bigpic-section-hdr::before { content: "▸ "; }
details.bigpic-section > summary.bigpic-section-hdr:hover { filter: brightness(1.1); }


/* ============================================================================
   v4.4.0a §13.1 — Bottom Line PDF Export print rules.
   When the user clicks "Export PDF (print)" on the Bottom Line tab, JS sets
   body.print-bl before invoking window.print(). The afterprint event removes
   the class. These rules then scope printed output to #view-consol (overriding
   the default Big-Pic-only print rules in the v3.0.0 print block above), show
   the Settings snapshot footer, and apply page-break controls per Bottom Line
   group so each fits on a single page where possible.
   ============================================================================ */
.bl-print-settings { display: none; }
@media print {
  body.print-bl header,
  body.print-bl #summary-strip,
  body.print-bl nav.tabs,
  body.print-bl footer,
  body.print-bl #modal-host,
  body.print-bl .toast-host { display: none !important; }
  body.print-bl main { padding: 0 !important; }
  body.print-bl .panel { display: none !important; }
  body.print-bl #view-consol { display: block !important; }
  body.print-bl #view-bigpic { display: none !important; }
  body.print-bl .bl-print-settings { display: block !important; margin-bottom: 12px; }
  body.print-bl .bl-print-settings h3 { margin: 0 0 6px 0; font-size: 14px; color: var(--navy); }
  body.print-bl details.bl-group { page-break-inside: avoid; break-inside: avoid; }
  body.print-bl details.bl-group > summary.bl-group-hdr {
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
  body.print-bl .bl-group { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  body.print-bl table.detail th {
    background: var(--trust-deep) !important; color: var(--diag-surface-white) !important;
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
  body.print-bl table.detail td.pos { color: var(--roi-pos) !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  body.print-bl table.detail td.neg, body.print-bl table.detail td.infuse { color: var(--roi-neg-muted) !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  body.print-bl .bigpic-table { font-size: 9.5px; }
  body.print-bl .bigpic-table th, body.print-bl .bigpic-table td { padding: 2px 4px !important; }
}

/* ============================================================
   v4.6.0 — Bottom Line UX overhaul
   New classes for Group E (analytical block), CFP threshold notes,
   per-group Notes blocks, dual-display, and column collapsibility hooks.
   ============================================================ */

/* Group E (NEW — yellow/amber diagnostic frame, distinct from old Group D perf) */
.bl-group.bl-diag {
  background: var(--cot-tint-cream2);
  border-left: 5px solid var(--cot-gold-deep);
}
.bl-group.bl-diag .bl-group-hdr { color: var(--cot-deep); }

.bl-groupE-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 4px;
}
.bl-groupE-table td {
  padding: 7px 10px;
  vertical-align: top;
  border-bottom: 1px solid var(--cot-cream-faded);
}
.bl-groupE-table td.label {
  width: 42%;
  font-weight: 500;
  color: var(--cot-brown-text);
}
.bl-groupE-table td.bl-ge-val {
  width: 30%;
  font-size: 13px;
  line-height: 1.4;
}
.bl-groupE-table td.bl-ge-note {
  width: 28%;
  font-size: 11.5px;
  color: var(--cot-deep);
  line-height: 1.4;
}

/* Break-even row — the gravity line. Bordered box, distinctive emphasis. */
.bl-groupE-table tr.bl-ge-be td {
  background: var(--diag-accent-be-bg);
  border-top: 2px solid var(--cot-gold);
  border-bottom: 2px solid var(--cot-gold);
}
.bl-groupE-table tr.bl-ge-be td.bl-ge-be-val {
  background: var(--diag-accent-be);
  font-weight: 700;
}

/* Consolidated forward row — pale highlight as the feeder for primary delta. */
.bl-groupE-table tr.bl-ge-cons td {
  background: var(--cot-tint-cream);
}

/* Historical 5y trailing — subtle different tint for contextual contrast. */
.bl-groupE-table tr.bl-ge-hist td {
  background: var(--cot-cream-cool);
}

/* Primary delta row — board headline; bordered green-tinted highlight. */
.bl-groupE-table tr.bl-ge-delta td {
  background: var(--roi-pos-tint-pale);
  border-top: 3px solid var(--roi-pos);
  border-bottom: 3px solid var(--roi-pos);
  padding: 12px 10px;
}
.bl-groupE-table tr.bl-ge-delta td.bl-ge-delta-val {
  font-size: 14px;
  color: var(--roi-pos-deep);
}

/* CFP Threshold Analysis — always-visible notes block below Group A. */
.bl-cfp-notes {
  margin: 8px 0 4px 0;
  padding: 6px 10px;
  background: var(--diag-surface-white);
  border: 1px dashed var(--trust-border-soft4);
  border-radius: 3px;
}
.bl-cfp-notes b { color: var(--navy); }

/* Per-group Notes <details> blocks (§9) — collapsible, subdued styling. */
details.bl-notes {
  margin: 6px 2px 0 2px;
  padding: 4px 8px;
  background: rgba(255, 255, 255, 0.5);
  border-radius: 3px;
}
details.bl-notes > summary {
  cursor: pointer;
  font-size: 11.5px;
  font-weight: 600;
  color: var(--muted);
  padding: 2px 0;
  list-style: none;
}
details.bl-notes > summary::-webkit-details-marker { display: none; }
details.bl-notes > summary::before {
  content: "▸ ";
  display: inline-block;
  width: 14px;
  color: var(--muted);
}
details.bl-notes[open] > summary::before { content: "▾ "; }
details.bl-notes p {
  margin: 6px 0;
  font-size: 11.5px;
  line-height: 1.5;
  color: var(--trust-text-mid);
}

/* Per-column collapsibility hooks (§3 — used by collapsible-cols logic in T8-T10).
   Default state: all columns expanded. When a column is collapsed, its <th> and
   <td> cells get the .bl-col-collapsed class which hides them. JS sets these by
   inspecting state.assumptions.ui.bottomLineScenarioVisibility per column. */
.bigpic-table th.bl-col-collapsed,
.bigpic-table td.bl-col-collapsed {
  display: none;
}
.bl-col-controls {
  margin: 6px 2px 8px 2px;
  font-size: 11.5px;
  color: var(--muted);
}
.bl-col-controls .bl-col-toggle {
  display: inline-block;
  margin-right: 10px;
  padding: 2px 8px;
  background: var(--trust-tint-alt);
  border: 1px solid var(--trust-border-cool);
  border-radius: 3px;
  cursor: pointer;
  color: var(--navy);
}
.bl-col-controls .bl-col-toggle:hover { background: var(--trust-tint-hover); }

/* Clickable scenario column headers (toggle visibility) */
.bigpic-table th[data-bl-col] {
  cursor: pointer;
  user-select: none;
}
.bigpic-table th[data-bl-col]:hover { background: var(--trust-accent-hover); }

/* Print rules — collapsed columns absent in @media print output (§3.2). */
@media print {
  .bigpic-table th.bl-col-collapsed,
  .bigpic-table td.bl-col-collapsed { display: none !important; }
  .bl-col-controls { display: none !important; }
}

/* ============================================================
   v4.6.0 — Admin 5-tab restructure (§5)
   ============================================================ */
.admin-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin: 0 0 14px 0;
  padding: 0 0 8px 0;
  border-bottom: 1px solid var(--trust-border-cool);
}
.admin-tab {
  padding: 6px 14px;
  font-size: 12.5px;
  font-weight: 600;
  background: var(--trust-tint-alt);
  color: var(--navy);
  border: 1px solid var(--trust-border-cool);
  border-radius: 4px 4px 0 0;
  cursor: pointer;
}
.admin-tab:hover { background: var(--trust-tint-hover); }
.admin-tab.active {
  background: var(--navy, var(--navy));
  color: var(--diag-surface-white);
  border-color: var(--navy, var(--navy));
}


/* === v4.7.10 T4 (Pass 2) — extracted inline-style classes reassigned to semantic palette tokens === */

.year5-summary-th {
  background: var(--navy);
  color: var(--diag-surface-white);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: .5px;
  padding: 6px 10px;
}
.cgt-discount-label {
  color: var(--teal);
  font-weight: 500;
  font-size: 11px;
}
.infusion-label {
  color: var(--red);
}
.admin-note-callout {
  grid-column: 1 / -1;
  margin-top: 10px;
  background: var(--cot-tint-soft);
  border-left: 3px solid var(--diag-accent-yellow);
  padding: 8px 12px;
}
.gst-itc-heading {
  margin: 0 0 6px 0;
  color: var(--cot-deep);
  font-size: 13px;
}
.gst-itc-note {
  margin-top: 14px;
  padding: 10px 14px;
  background: var(--cot-tint-soft);
  border-left: 3px solid var(--cot-gold);
  border-radius: 4px;
  font-size: 11.5px;
  line-height: 1.5;
  color: var(--diag-dark);
}
.calc-error-block {
  padding: 6px 10px;
  background: var(--roi-neg-tint-soft);
  border-left: 3px solid var(--red);
  font-size: 12.5px;
}
.calc-scroll-pane {
  max-height: 320px;
  overflow: auto;
  border: 1px solid var(--soft-border);
  border-radius: 4px;
  background: var(--diag-surface-white);
}
.drift-flag {
  color: var(--amber);
  font-weight: 600;
}
.settings-note-light {
  margin-top: 6px;
  padding: 6px 10px;
  background: var(--trust-surface-alt);
  border: 1px solid var(--trust-border-soft);
  border-radius: 4px;
}
.settings-note-green {
  margin-top: 8px;
  padding: 8px 10px;
  background: var(--roi-pos-tint-soft);
  border: 1px solid var(--roi-pos);
  border-radius: 4px;
}
.calc-row-highlight {
  background: var(--trust-tint-mid);
}
.delta-pos { color: var(--roi-pos-strong-alt); }
.delta-neg { color: var(--roi-neg-mid); }

/* === v4.7.10 T6 — group-header collapsibility (unified Bottom Line matrix) === */
/* Rows assigned .bl-group-collapsed via _wireBLColControls when a group-header */
/* <tr class="bl-group-hdr"> is clicked. Persisted to state.assumptions.ui.bottomLineGroupCollapsed. */
tr.bl-group-collapsed { display: none; }

/* Per-row tint classes (replacing v4.7.9 group-level <details class="bl-X"> wrappers).
   Declared BEFORE the group-header rules so the compound-selector .bl-group-hdr
   rules below win on specificity (v4.7.11 F1 fix). */
tr.bl-row-trust     { background: var(--trust-tint); }
tr.bl-row-roi       { background: var(--roi-tint-soft, #ecf6ef); }
tr.bl-row-cottesloe { background: var(--cot-cream); }
tr.bl-row-family    { background: var(--family-tint); }
tr.bl-row-revenue   { background: var(--diag-purple-tint-soft); }

/* v4.8.0 §C5/§2.4 — Members' surplus inline drill-down collapsibility.
   bl-members-drill rows are the 4 reconciliation sub-rows under the Members' surplus headline.
   When the parent flag bottomLineMembersDrillCollapsed is true (default), the renderer adds
   the bl-members-drill-collapsed class, which CSS hides via display:none. */
tr.bl-members-drill-collapsed { display: none; }

/* v4.8.0 §C5 — Members' surplus headline is clickable (cursor pointer already inline);
   give the row a subtle hover affordance. */
tr.bl-members-headline:hover { background: var(--family-tint-hover, #d8ebe7); }

/* v4.8.0 §C5 — Dev net asset subtotal row gets a top border for visual separation. */
tr.bl-subtotal td { border-top: 1px solid var(--family-border, #b5cfca); padding-top: 6px; }

/* Group-header rows: clickable affordance for collapsibility toggle.
   v4.7.11 F1: compound selector (table.bl-unified tr.bl-group-hdr) wins on
   specificity over per-row tint rules above, guaranteeing the navy header
   background regardless of declaration order. */
table.bl-unified tr.bl-group-hdr {
  cursor: pointer;
  background: var(--trust-deep);
  color: var(--diag-surface-white);
  user-select: none;
}
/* v4.7.12 F6 — force left alignment (override .detail td default text-align:right);
   v4.7.12 F7 — CSS chevron via ::before pseudo-element (matches Group E's
   <details><summary> native chevron). Glyphs and behaviour intentionally mirror
   the details.bl-group > summary.bl-group-hdr::before rules elsewhere. */
table.bl-unified tr.bl-group-hdr td {
  border-color: var(--trust-deep);
  padding: 8px 12px;
  color: var(--diag-surface-white);
  text-align: left !important;
}
table.bl-unified tr.bl-group-hdr td::before {
  content: "\25BE ";     /* ▾ (down-pointing triangle) — open state */
  display: inline-block;
  width: 14px;
  font-size: 11px;
  color: var(--diag-surface-white);
}
table.bl-unified tr.bl-group-hdr.bl-group-hdr-collapsed td::before {
  content: "\25B8 ";     /* ▸ (right-pointing triangle) — collapsed state */
}
table.bl-unified tr.bl-group-hdr:hover { background: var(--trust-strong-alt); }

/* v4.7.11 F3 — CFP row uses pale Cottesloe tint (sits inside Trust region);
   left-aligned to override .detail td default cell alignment. */
tr.bl-cfp-row { background: var(--cot-tint-paler); }
tr.bl-cfp-row td {
  padding: 12px 14px;
  text-align: left;
}
tr.bl-cfp-row .bl-cfp-details > summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--cot-deep);
  font-size: 12px;
  padding: 2px 0;
  user-select: none;
}
tr.bl-cfp-row .bl-cfp-details ul {
  list-style: none;
  margin: 4px 0 2px 0;
  padding: 0;
}
tr.bl-cfp-row .bl-cfp-details ul li {
  padding-left: 14px;
  position: relative;
  font-size: 12px;
  line-height: 1.55;
  margin: 2px 0;
}
tr.bl-cfp-row .bl-cfp-details ul li::before {
  content: "\2013";  /* en-dash */
  position: absolute;
  left: 0;
  top: 0;
  color: var(--cot-deep);
  font-weight: 600;
}

/* v4.7.11 F2 — Bottom Line controls bar: two-axis layout.
   LEFT: Groups (expand-all / collapse-all). RIGHT: Scenarios (expand-all / S0-only).
   Replaces the v4.7.9 single-axis controls bar (which only covered Scenarios). */
.bl-col-controls {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  margin: 8px 2px 10px 2px;
  padding: 6px 10px;
  background: var(--trust-tint-soft);
  border: 1px solid var(--trust-border-soft);
  border-radius: 4px;
  font-size: 12px;
}
.bl-col-controls .bl-axis {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.bl-col-controls .bl-axis-label {
  font-weight: 600;
  color: var(--trust-strong);
}
.bl-col-controls .bl-col-toggle {
  display: inline-block;
  padding: 3px 9px;
  background: var(--diag-surface-white);
  border: 1px solid var(--trust-border-cool);
  border-radius: 3px;
  color: var(--trust-strong);
  cursor: pointer;
  text-decoration: none;
}


/* ============================================================================
   v4.8.1 §A5/§A6 — Bottom Line headline + Group F toning
   ============================================================================ */

/* §A6 — Board-level headline rows (Group D TOTAL + Δ, Group E annual net rent, LVR centre row).
   Bumps font + boldness slightly above standard bl-headline. Replaces the previous yellow/big-border
   prominence on Group F's BE rate + delta rows (which were stealing visual hierarchy from real
   headlines in Groups D and E). */
tr.bl-highlight-row > td {
  font-size: 15.5px;
  font-weight: 700;
  padding-top: 8px;
  padding-bottom: 8px;
}
tr.bl-lvr-headline > td {
  background: var(--family-tint-hover, #d8ebe7) !important;
}

/* §A5 + v4.8.3 §C2 — Group F BE rate + deltas toned: same row boundaries, same font size as other
   group highlights. v4.8.1 only overrode the BOTTOM borders; the TOP borders (2px gold on BE,
   3px green on deltas) remained. v4.8.3 overrides BOTH top and bottom to standard row separator. */
table.bl-groupE-table tr.bl-ge-be td,
table.bl-groupE-table tr.bl-ge-delta td {
  background: var(--diag-surface-pale, #f7f5ee) !important;
  border-top: 1px solid var(--diag-border-mid, #d8d4c8) !important;
  border-bottom: 1px solid var(--diag-border-mid, #d8d4c8) !important;
  font-size: 13px;
  padding: 6px 8px;
}
table.bl-groupE-table tr.bl-ge-be td.bl-ge-be-val span,
table.bl-groupE-table tr.bl-ge-delta td.bl-ge-delta-val span {
  font-size: 14px !important;
}

/* v4.8.3 §C3 — Empty separator rows at the end of each group (and within Group B between
   Reconciliation and ROI headline trio). Forces a small vertical gap for visual delineation. */
tr.bl-row-spacer td {
  background: transparent !important;
  border: none !important;
  padding: 6px 0 !important;
  height: 10px;
  line-height: 1;
}



/* v4.8.4 §B2 — ROI Reconciliation collapsibility */
tr.bl-roi-reconciliation-collapsed { display: none; }
tr.bl-roi-recon-subhdr:hover { background: rgba(0,0,0,0.04); }


/* v4.8.4 §B3 — Unified highlight-row format, matches the "Dev net asset @ FY31" row style
   (= bl-subtotal: top border + slight emphasis). Replaces the inconsistent bl-board-headline
   class from v4.8.1 which had varying font sizes across rows. */
tr.bl-highlight-row > td {
  font-size: 14px !important;
  font-weight: 700;
  border-top: 1px solid var(--family-border, #b5cfca) !important;
  padding-top: 7px;
  padding-bottom: 7px;
}

/* ===== v5.1.2 overrides ===== */
/* Admin sections match the Scenario panel shading (white card) */
.admin-section { background:var(--diag-surface-white); border:1px solid var(--soft-border); border-radius:5px; padding:12px 14px; }
/* Aligned input boxes — unit symbol always AFTER the box */
.field { display:flex; align-items:center; gap:6px; padding:3px 0; }
.field .lbl { flex:1 1 auto; color:var(--muted); }
.field input[type="text"], .field input[type="number"], .field select { width:9.5em; text-align:right; }
.field input[type="checkbox"] { width:auto; }
.field .unit { width:1.4em; text-align:left; color:var(--muted); }
