/* ══════════════════════════════════
   TAX (BETA) — js/pages/tax.js
   Tokens only, so every palette × mode renders. Secondary text mixes
   --muted toward --text: plain --muted on cards sits under 4.5:1 in
   some palettes.
   ══════════════════════════════════ */
:root{--tax-sub:color-mix(in srgb, var(--muted) 55%, var(--text));}

/* Nav entries stay hidden until Tax (Beta) is turned on */
.nav-fly-item.tax-nav-off,.mob-menu-item.tax-nav-off{display:none;}

.tax-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.tax-mono{font-family:var(--font-mono);font-weight:500;font-variant-numeric:tabular-nums;}
.tax-muted{color:var(--tax-sub);}
.tax-note{display:block;font-size:.72rem;color:var(--tax-sub);margin-top:2px;font-weight:400;}
.tax-desc{font-size:.8rem;color:var(--tax-sub);line-height:1.5;margin:8px 0 0;}
.tax-desc--next{margin-top:12px;}
.tax-k-sub{font-size:.72rem;color:var(--tax-sub);}

/* Header */
.tax-ttl{display:flex;align-items:center;gap:var(--sp2);flex-wrap:wrap;}
.tax-beta{font-family:var(--font-body);font-size:.66rem;font-weight:700;letter-spacing:.02em;
  background:color-mix(in srgb, var(--purple) 18%, transparent);color:var(--purple-ink);
  border:1px solid color-mix(in srgb, var(--purple) 40%, transparent);border-radius:var(--radius-pill);padding:2px 9px;}

/* Person + FY switchers */
.tax-switches{display:flex;gap:var(--sp2);margin-bottom:var(--sp3);}
.tax-switch-fld{flex:1;min-width:0;}
.tax-switch-fld select{min-height:44px;}

/* Lodging chip */
.tax-chips{display:flex;flex-wrap:wrap;gap:var(--sp2);margin-bottom:var(--sp3);}
.tax-chip{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 16px;border-radius:var(--radius-pill);
  border:1.5px solid var(--border);background:var(--card2);color:var(--text);font-family:var(--font-body);
  font-size:.82rem;font-weight:600;cursor:pointer;}
.tax-chip:hover{border-color:var(--primary);}

/* Segmented control (role=tablist) — selected = filled pill + aria-selected, not colour alone */
.tax-seg{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:var(--sp3);-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.tax-seg::-webkit-scrollbar{display:none;}
.tax-seg-btn{flex:0 0 auto;min-height:44px;padding:0 16px;border-radius:var(--radius-pill);border:1.5px solid var(--border);
  background:transparent;color:var(--tax-sub);font-family:var(--font-body);font-size:.82rem;font-weight:600;cursor:pointer;}
.tax-seg-btn.on{background:var(--primary);border-color:var(--primary);color:var(--primary-text);}
.tax-seg-btn:focus-visible,.tax-chip:focus-visible,.tax-sw:focus-visible,.tax-icon-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}

/* Notices */
.tax-warnbox,.tax-infobox{border-radius:var(--radius-sm);padding:10px 12px;font-size:.8rem;line-height:1.5;margin-bottom:var(--sp3);color:var(--text);}
.tax-warnbox{background:var(--warn-bg);border:1px solid color-mix(in srgb, var(--warn) 45%, transparent);}
.tax-infobox{background:color-mix(in srgb, var(--purple) 10%, transparent);border:1px solid color-mix(in srgb, var(--purple) 35%, transparent);}
.tax-infobox a{color:var(--purple-ink);font-weight:600;}
.tax-warn-acts{display:flex;flex-wrap:wrap;gap:var(--sp2);margin-top:var(--sp2);}
.tax-warn-acts .btn{min-height:44px;}
.tax-flex{display:flex;align-items:center;justify-content:space-between;gap:var(--sp2);flex-wrap:wrap;}
.tax-flex .btn{min-height:44px;}
.tax-details summary{cursor:pointer;font-weight:600;min-height:44px;display:flex;align-items:center;}
.tax-list{margin:4px 0 0 18px;}
.tax-list li{margin:2px 0;}
.tax-b-info{background:var(--purple-bg);color:var(--purple-ink);}

/* Rows */
#tax-panel .dr{min-height:44px;}
#tax-panel .dr-k{color:var(--tax-sub);}
#tax-panel .dr-v{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px;}
.tax-est .section-label{margin-bottom:4px;}
.tax-rules{font-size:.7rem;color:var(--tax-sub);text-align:center;margin:var(--sp4) 0 var(--sp2);}

/* Household comparison */
.tax-cmp{width:100%;border-collapse:collapse;font-size:.82rem;}
.tax-cmp th,.tax-cmp td{padding:10px 6px;border-bottom:1px solid var(--border);text-align:right;vertical-align:middle;}
.tax-cmp thead th{font-size:.74rem;color:var(--tax-sub);font-weight:700;}
.tax-cmp tbody th{text-align:left;font-weight:500;color:var(--tax-sub);}
.tax-cmp tr:last-child th,.tax-cmp tr:last-child td{border-bottom:none;}
.tax-cmp .tax-chip{padding:0 10px;font-size:.74rem;}

/* Switch (role=switch) — 52×30 track inside a 44px+ row */
.tax-sw-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp3);min-height:56px;}
.tax-sw-txt{display:flex;flex-direction:column;min-width:0;}
.tax-sw-lbl{font-weight:600;font-size:.9rem;color:var(--text);}
.tax-sw-sub{font-size:.76rem;color:var(--tax-sub);margin-top:2px;}
.tax-sw{position:relative;flex:none;width:52px;height:44px;padding:0;border:none;background:transparent;cursor:pointer;}
.tax-sw::before{content:"";position:absolute;left:0;top:7px;width:52px;height:30px;border-radius:var(--radius-pill);background:var(--card3);transition:background .2s;}
.tax-sw-thumb{position:absolute;left:3px;top:10px;width:24px;height:24px;border-radius:50%;background:var(--white);transition:transform .2s;box-shadow:var(--shadow-sm);}
.tax-sw[aria-checked="true"]::before{background:var(--primary);}
.tax-sw[aria-checked="true"] .tax-sw-thumb{transform:translateX(22px);}

/* Option cards (native radios, styled) */
.tax-fieldset{border:none;margin:var(--sp3) 0;padding:0;min-width:0;}
.tax-legend{font-size:.72rem;font-weight:700;color:var(--muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.06em;}
.tax-opts{display:flex;flex-direction:column;gap:var(--sp2);}
.tax-opts--2{display:grid;grid-template-columns:1fr 1fr;}
.tax-opt{position:relative;display:flex;flex-direction:column;gap:2px;min-height:44px;padding:12px 14px;border-radius:var(--radius-sm);
  border:1.5px solid var(--border);background:var(--card2);cursor:pointer;}
.tax-opt input{position:absolute;opacity:0;width:1px;height:1px;margin:0;padding:0;}
.tax-opt-t{font-weight:600;font-size:.88rem;color:var(--text);}
.tax-opt-t::before{content:"";display:inline-block;width:14px;height:14px;margin-right:8px;vertical-align:-2px;border-radius:50%;border:2px solid var(--muted);}
.tax-opt-s{font-size:.76rem;color:var(--tax-sub);}
.tax-opt:has(input:checked){border-color:var(--primary);background:color-mix(in srgb, var(--primary) 8%, var(--card2));}
.tax-opt:has(input:checked) .tax-opt-t::before{border-color:var(--primary);background:radial-gradient(circle, var(--primary) 0 45%, transparent 50%);}
.tax-opt:has(input:focus-visible){outline:2px solid var(--primary);outline-offset:2px;}

/* Checkbox rows */
.tax-check{position:relative;display:flex;gap:10px;align-items:flex-start;min-height:44px;padding:10px 0;font-size:.84rem;cursor:pointer;}
.tax-check input{position:absolute;opacity:0;width:1px;height:1px;margin:0;padding:0;}
.tax-box{flex:none;width:22px;height:22px;border-radius:6px;border:1.5px solid var(--input-border);background:var(--input-bg);
  display:flex;align-items:center;justify-content:center;color:transparent;font-size:.9rem;}
.tax-check input:checked + .tax-box{background:var(--primary);border-color:var(--primary);color:var(--primary-text);}
.tax-check input:focus-visible + .tax-box{outline:2px solid var(--primary);outline-offset:2px;}

/* Date fields in lodgement settings */
.tax-datefld{margin-bottom:var(--sp3);}
.tax-datefld .badge{margin-left:6px;text-transform:none;letter-spacing:0;}
.tax-date-row{display:flex;gap:var(--sp2);align-items:center;}
.tax-date-row input{flex:1;min-width:0;}
.tax-date-row .btn{min-height:44px;flex:none;}

/* Instalment quarters */
.tax-q{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--border);}
.tax-q:last-child{border-bottom:none;}
.tax-qn{flex:none;width:36px;height:36px;border-radius:50%;background:var(--card3);display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-size:.72rem;}
.tax-qn.done{background:var(--success-bg);color:var(--success);}
.tax-qn.next{background:var(--primary);color:var(--primary-text);}
.tax-q-main{flex:1;min-width:0;display:flex;flex-direction:column;font-size:.84rem;}
.tax-q-due{font-size:.74rem;color:var(--tax-sub);}
.tax-q-end{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px;}
.tax-q-amt{text-align:right;font-size:.86rem;}
@media (min-width:760px){
  .tax-q-end{flex-direction:row;align-items:center;gap:10px;}
}
.tax-icon-btn{min-width:44px;min-height:44px;border:none;background:transparent;color:var(--tax-sub);cursor:pointer;border-radius:var(--radius-sm);font-size:1.05rem;}
.tax-icon-btn:hover{color:var(--danger);}
.tax-full{width:100%;margin-top:var(--sp3);min-height:44px;}
.tax-btn-row{display:flex;justify-content:center;gap:var(--sp2);margin-top:var(--sp3);}
.tax-btn-row .btn{min-height:44px;}

/* Sheet */
.tax-sheet .modal-actions .btn{min-height:44px;}
.tax-sheet .btn:disabled{opacity:.45;cursor:not-allowed;}
.tax-close{min-width:44px;min-height:44px;}
.tax-sheet .modal-title[tabindex]:focus{outline:none;}


/* ── Phase 1b: estimate, readiness, Return worksheet ── */
#page-tax .btn,.tax-sheet .btn{min-height:44px;}
.tax-big{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp2);font-size:1.9rem;line-height:1.2;margin:4px 0 2px;color:var(--text);}
.tax-big .badge{font-size:.7rem;}
.tax-desc--top{margin:0 0 var(--sp2);}
.tax-ready-line{margin:0 0 var(--sp2);font-size:.92rem;color:var(--text);}
/* Readiness meter: one segment per section; the count is also in text above it */
.tax-meter{display:flex;gap:4px;margin-bottom:var(--sp3);}
.tax-meter-seg{flex:1;height:8px;border-radius:var(--radius-pill);background:var(--card3);}
.tax-meter-seg.on{background:var(--success);}
.tax-missing{list-style:none;margin:0 0 var(--sp2);padding:0;}
.tax-missing li{display:flex;align-items:center;justify-content:space-between;gap:var(--sp2);min-height:44px;padding:8px 0;border-bottom:1px solid var(--border);font-size:.86rem;}
.tax-missing li:last-child{border-bottom:none;}

/* Worksheet rows: each is one button that opens its detail sheet */
.tax-rows{list-style:none;margin:0;padding:0;}
.tax-rows li{border-bottom:1px solid var(--border);}
.tax-rows li:last-child{border-bottom:none;}
.tax-row{display:flex;align-items:center;gap:10px;width:100%;min-height:60px;padding:10px 0;border:none;background:transparent;
  color:var(--text);font-family:var(--font-body);text-align:left;cursor:pointer;}
.tax-row:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:var(--radius-sm);}
.tax-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
.tax-row-t{font-size:.9rem;font-weight:600;}
.tax-row-code{font-family:var(--font-mono);font-weight:500;color:var(--tax-sub);margin-right:2px;}
.tax-src{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:2px 8px;border-radius:var(--radius-pill);
  background:var(--card2);border:1px solid var(--border);font-size:.72rem;color:var(--tax-sub);}
.tax-row-end{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px;font-size:.9rem;}
.tax-row-chev{flex:none;color:var(--tax-sub);}
.tax-row .badge .ti,.tax-missing .badge .ti{font-size:.8rem;vertical-align:-1px;}

/* Detail sheets */
.tax-list-card{border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 12px;margin:var(--sp3) 0;background:var(--card2);}
.tax-list-card .dr{min-height:44px;}
.tax-list-card .dr-k{color:var(--tax-sub);}
.tax-list-card .dr-v{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap;}
.tax-st{display:flex;align-items:center;gap:4px;padding:8px 0;border-bottom:1px solid var(--border);}
.tax-st-main{flex:1;min-width:0;display:flex;flex-direction:column;font-size:.86rem;}
.tax-ded-hd{padding:10px 0 2px;font-size:.84rem;}
.tax-btn-row--start{justify-content:flex-start;flex-wrap:wrap;}
.tax-opts--3{display:grid;grid-template-columns:repeat(3,1fr);}
.tax-exp{display:grid;grid-template-columns:1fr;gap:var(--sp2);}
.tax-exp .btn{justify-content:center;}
@media (min-width:760px){ .tax-exp{grid-template-columns:repeat(2,1fr);} }
.tax-cmp tr.tax-cmp-key th,.tax-cmp tr.tax-cmp-key td{font-weight:700;color:var(--text);}

/* Summary (on screen in a sheet, and in print) */
.tax-sum-ttl{font-family:var(--font-head);font-size:1.05rem;margin:0 0 2px;}
.tax-sum-sub{font-size:.8rem;color:var(--tax-sub);margin:0 0 var(--sp3);}
.tax-sum-tbl{width:100%;border-collapse:collapse;font-size:.8rem;margin-bottom:var(--sp3);}
.tax-sum-tbl caption{text-align:left;font-weight:700;font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;color:var(--tax-sub);padding-bottom:4px;}
.tax-sum-tbl th,.tax-sum-tbl td{padding:6px 4px;border-bottom:1px solid var(--border);vertical-align:top;}
.tax-sum-tbl th{text-align:left;font-weight:500;text-transform:none;letter-spacing:0;font-size:.8rem;color:inherit;background:transparent;}
.tax-sum-tbl td{text-align:right;}
.tax-sum-tbl thead th{font-size:.72rem;color:var(--tax-sub);font-weight:600;}
.tax-sum-tbl thead th:not(:first-child){text-align:right;}
.tax-sum-total th,.tax-sum-total td{font-weight:700;}
.tax-sum-k{font-size:.76rem;color:var(--tax-sub);margin:0 0 6px;}
.tax-sum-foot{font-size:.72rem;color:var(--tax-sub);border-top:1px solid var(--border);padding-top:8px;margin-top:var(--sp3);}

/* Print / PDF: only the summary. System colours, so it prints dark-on-white in every theme. */
#tax-print{display:none;}
@media print{
  /* :not(#tax-print) carries id specificity, enough to beat the app's own display rules */
  body.tax-printing > *:not(#tax-print){display:none;}
  body.tax-printing{background:Canvas;}
  body.tax-printing #tax-print{display:block;width:100%;flex:1 1 100%;color-scheme:light;color:CanvasText;background:Canvas;padding:0;}
  #tax-print .tax-sum-sub,#tax-print .tax-sum-k,#tax-print .tax-sum-foot,#tax-print .tax-sum-tbl caption,
  #tax-print .tax-sum-tbl thead th,#tax-print .tax-k-sub{color:GrayText;}
  #tax-print .tax-sum-tbl th,#tax-print .tax-sum-tbl td,#tax-print .tax-sum-foot{border-color:GrayText;}
  #tax-print .tax-sum-tbl tr{break-inside:avoid;}
}

/* Transactions: tax deduction tag */
.tx-tax{border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px 0;margin:0 0 14px;min-width:0;}
.tx-tax .tax-legend{padding:0 4px;margin-bottom:0;}
.tax-tx-badge{margin-left:6px;vertical-align:1px;}
.tax-tx-btn{min-width:44px;min-height:44px;border:none;background:transparent;color:var(--tax-sub);cursor:pointer;border-radius:var(--radius-sm);font-size:1.05rem;}
.tax-tx-btn:hover{color:var(--primary);}
.tax-tx-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}

@media (prefers-reduced-motion: reduce){
  .tax-sw::before,.tax-sw-thumb{transition:none;}
}
