:root {
  --bg: #f5f5f8;
  --panel: #fff;
  --panel-alt: #fafafc;
  --ink: #15151c;
  --muted: #6a6a76;
  --line: #e3e3ea;
  --soft: #ededf3;
  --dark: #111116;
  --accent: #5b4dfc;
  --accent-ink: #fff;
  --accent-soft: #ece9ff;
  --danger: #d1425c;
  --danger-soft: #fbe8ec;
  --ok: #1f9d63;
  --ok-soft: #e6f6ee;
  --warn: #b8790a;
  --warn-soft: #fdf1de;
  --radius: 16px;
  --radius-sm: 10px;
  --shadow: 0 10px 30px rgba(20,20,30,.06);
  --shadow-lg: 0 25px 70px rgba(20,20,30,.18);
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #101014;
    --panel: #17171d;
    --panel-alt: #1c1c23;
    --ink: #f1f1f5;
    --muted: #9797a3;
    --line: #2b2b33;
    --soft: #212129;
    --dark: #0a0a0d;
    --accent: #7c6fff;
    --accent-ink: #fff;
    --accent-soft: #26224d;
    --danger: #ef5b76;
    --danger-soft: #3a1b23;
    --ok: #35c283;
    --ok-soft: #163826;
    --warn: #e0a53c;
    --warn-soft: #3a2e12;
    --shadow: 0 10px 30px rgba(0,0,0,.35);
    --shadow-lg: 0 25px 70px rgba(0,0,0,.55);
  }
}

* { box-sizing: border-box }
html, body { margin: 0; min-height: 100%; font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background: var(--bg); color: var(--ink) }
button, input, select { font: inherit }
button { cursor: pointer }
button:focus-visible, input:focus-visible, select:focus-visible, a:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px }
.hidden { display: none !important }

.login-screen { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: radial-gradient(circle at 20% 20%, #423bad 0, #17162b 40%, #08080b 100%) }
.login-card { width: min(420px, 100%); background: var(--panel); border-radius: 22px; padding: 36px; box-shadow: var(--shadow-lg); display: grid; gap: 16px }
.login-card h1 { margin: 0 }
.login-card p { margin: 0; color: var(--muted) }

label { display: grid; gap: 7px; font-size: .88rem; color: var(--muted) }
input, select { width: 100%; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 10px 12px; background: var(--panel); color: var(--ink); min-height: 42px; transition: border-color .15s ease, box-shadow .15s ease }
input:focus, select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft) }

.brand-mark { width: 54px; height: 54px; border-radius: 16px; background: linear-gradient(145deg, var(--accent), #362eb0); color: #fff; display: grid; place-items: center; font-weight: 800; letter-spacing: .08em; box-shadow: 0 8px 20px rgba(91,77,252,.35) }
.brand-mark.small { width: 40px; height: 40px; border-radius: 11px; font-size: .8rem }

.primary, .secondary, .ghost, .link-btn, .menu-btn { border: 0; border-radius: var(--radius-sm); padding: 10px 16px; font-weight: 700; transition: transform .1s ease, filter .15s ease, background-color .15s ease }
.primary { background: var(--accent); color: var(--accent-ink) }
.primary:hover { filter: brightness(1.08) }
.primary:active { transform: translateY(1px) }
.secondary { background: var(--soft); color: var(--ink) }
.secondary:hover { filter: brightness(.97) }
.ghost { background: transparent; color: inherit; border: 1px solid var(--line) }
.ghost:hover { background: var(--soft) }
.link-btn { background: transparent; color: var(--accent); text-decoration: underline; padding: 5px }
.button-link { display: inline-block; text-decoration: none; text-align: center }
.error { color: var(--danger); min-height: 20px }

.shell { display: grid; grid-template-columns: 252px 1fr; min-height: 100vh }
.sidebar { position: sticky; top: 0; height: 100vh; background: var(--dark); color: #fff; padding: 18px 14px; display: flex; flex-direction: column }
.brand { display: flex; align-items: center; gap: 10px; padding: 4px 6px 24px }
.brand div { display: grid }
.brand small { color: #9c9ca8 }
.sidebar nav { display: grid; gap: 4px }
.sidebar nav button { border: 0; border-radius: var(--radius-sm); background: transparent; color: #a6a6b3; text-align: left; padding: 11px 12px; font-weight: 600; position: relative; transition: background-color .15s ease, color .15s ease }
.sidebar nav button:hover { background: #232330; color: #fff }
.sidebar nav button.active { background: var(--accent-soft); color: var(--accent) }
@media (prefers-color-scheme: dark) { .sidebar nav button.active { background: #2a2660; color: #b3a9ff } }
.sidebar nav button.active::before { content: ""; position: absolute; left: -14px; top: 8px; bottom: 8px; width: 3px; border-radius: 3px; background: var(--accent) }
.sidebar-foot { margin-top: auto; border-top: 1px solid #2a2a34; padding-top: 14px; display: grid; gap: 8px; font-size: .82rem; color: #a6a6b3 }
.sidebar .ghost { border-color: #34343f; color: #fff }

.workspace { min-width: 0; padding: 0 28px 40px }
.topbar { height: 96px; display: flex; align-items: center; gap: 18px; position: sticky; top: 0; background: color-mix(in srgb, var(--bg) 90%, transparent); backdrop-filter: blur(12px); z-index: 10; border-bottom: 1px solid var(--line) }
.topbar h1 { font-size: 1.45rem; margin: 0; letter-spacing: -.01em }
.topbar p { margin: 3px 0 0; color: var(--muted); font-size: .9rem }
.month-picker { margin-left: auto; width: 160px }
.menu-btn { display: none; background: var(--panel); border: 1px solid var(--line) }

.view { display: none; padding-top: 24px }
.view.active { display: block; animation: fade-in .18s ease }
@keyframes fade-in { from { opacity: 0; transform: translateY(4px) } to { opacity: 1; transform: none } }

.metric-grid { display: grid; grid-template-columns: repeat(6, minmax(0,1fr)); gap: 12px; margin-bottom: 18px }
.metric, .metric-card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px; display: grid; gap: 7px; box-shadow: var(--shadow) }
.metric-card span, .metric span { color: var(--muted); font-size: .82rem; font-weight: 600 }
.metric-card strong, .metric strong { font-size: 1.32rem; letter-spacing: -.01em }

.grid { display: grid; gap: 18px; margin-bottom: 18px }
.grid.two { grid-template-columns: repeat(2, minmax(0,1fr)) }
.card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow); min-width: 0 }
.card h2 { margin: 0 0 12px; font-size: 1.05rem }
.card p { color: var(--muted) }
.card-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 14px }
.card-head h2 { margin: 0 }
.card-head.wrap { flex-wrap: wrap }

.list { display: grid; gap: 8px }
.list-row, .room-card { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--soft) }
.list-row:last-child { border-bottom: 0 }
.list-row .meta { display: grid; gap: 3px }
.list-row small { color: var(--muted) }
.amount.positive { color: var(--ok) }
.amount.negative { color: var(--danger) }

.bars { display: grid; gap: 12px }
.bar-row { display: grid; grid-template-columns: 130px 1fr 90px; align-items: center; gap: 10px; font-size: .85rem }
.bar { height: 9px; background: var(--soft); border-radius: 999px; overflow: hidden }
.bar i { display: block; height: 100%; background: var(--accent); border-radius: 999px }

.budget-list { display: grid; gap: 12px }
.budget-row { display: grid; grid-template-columns: minmax(160px,1fr) 2fr minmax(150px,auto); gap: 14px; align-items: center }
.budget-row > div:first-child { display:grid; gap:3px; min-width:0 }
.budget-row > div:first-child small { display:block; color:var(--muted); font-size:.72rem; font-weight:650 }
.budget-row > span { text-align:right; font-variant-numeric:tabular-nums }
.progress { height: 12px; background: var(--soft); border-radius: 999px; overflow: hidden }
.progress i { display: block; height: 100%; background: var(--accent) }
.progress i.over { background: var(--danger) }

.inline-form, .stack-form { background: var(--panel-alt); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 14px; margin: 12px 0; gap: 10px }
.inline-form { display: flex; align-items: end; flex-wrap: wrap }
.inline-form > * { flex: 1 1 140px }
.inline-form button { flex: 0 0 auto }
.stack-form { display: grid }

.actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap }
.actions.vertical { align-items: stretch; flex-direction: column }
.hint { font-size: .82rem; color: var(--muted) }

.table-wrap { overflow: auto }
.table-wrap table { width: 100%; border-collapse: collapse; min-width: 760px }
th, td { text-align: left; border-bottom: 1px solid var(--soft); padding: 10px 8px; font-size: .84rem }
th { color: var(--muted); font-weight: 700; position: sticky; top: 0; background: var(--panel) }
th.sortable { cursor: pointer; user-select: none }
th.sortable:hover { color: var(--ink) }
th.sortable.sort-asc::after { content: ' \25B2'; font-size: .7em }
th.sortable.sort-desc::after { content: ' \25BC'; font-size: .7em }
.icon-btn { border: 0; background: transparent; color: var(--danger); font-size: 1rem; padding: 5px }

.notice { position: fixed; right: 24px; top: 110px; z-index: 30; max-width: 420px; background: var(--dark); color: #fff; border-radius: var(--radius-sm); padding: 13px 16px; box-shadow: var(--shadow-lg) }
.notice.error { background: var(--danger) }

.status-box, .insight { min-height: 80px; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 14px; margin-top: 14px; background: var(--panel-alt); white-space: pre-wrap; line-height: 1.5 }

.check { display: flex; grid-template-columns: auto 1fr; align-items: center }
.check input { width: auto; min-height: auto }

.room-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 12px }
.room-card { border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 14px; align-items: flex-start; background: var(--panel) }
.room-card > div { display: grid; gap: 4px }

.audit-list { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .78rem; display: grid; gap: 8px }
.audit-row { padding: 9px; border-bottom: 1px solid var(--soft) }

.public-room { display: grid; place-items: center; min-height: 100vh; background: var(--dark); padding: 20px }
.public-card { width: min(480px, 100%); background: var(--panel); border-radius: 22px; padding: 28px; display: grid; gap: 16px; box-shadow: var(--shadow-lg) }
.public-card h1 { margin: 0 }

.pill { display: inline-flex; align-items: center; gap: 5px; font-size: .74rem; font-weight: 700; padding: 3px 9px; border-radius: 999px; white-space: nowrap }
.pill.priority { background: var(--ok-soft); color: var(--ok) }
.pill.discretionary { background: var(--accent-soft); color: var(--accent) }
.pill.warn { background: var(--warn-soft); color: var(--warn) }

.tip-list { display: grid; gap: 10px }
.tip-card { border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 13px 14px; display: grid; gap: 6px; background: var(--panel-alt) }
.tip-card .tip-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap }
.tip-card .tip-figures { color: var(--muted); font-size: .82rem }
.tip-card p { margin: 0; font-size: .88rem }

.help-card { border: 1px solid var(--warn); background: var(--warn-soft); border-radius: var(--radius); padding: 18px; margin-top: 16px; display: grid; gap: 12px }
.help-card h3 { margin: 0; color: var(--warn) }
.help-card p { margin: 0; font-size: .86rem }
.help-resources { display: grid; gap: 10px; grid-template-columns: repeat(2, minmax(0,1fr)) }
.help-resource { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 12px; display: grid; gap: 3px }
.help-resource strong { font-size: .92rem }
.help-resource a { color: var(--accent); font-size: .82rem; text-decoration: none }
.help-resource a:hover { text-decoration: underline }
.help-resource small { color: var(--muted) }

.status { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 999px; font-size: .76rem; font-weight: 700 }
.status.pending { background: var(--warn-soft); color: var(--warn) }
.status.processing { background: var(--accent-soft); color: var(--accent) }
.status.paid { background: var(--ok-soft); color: var(--ok) }
.status.overdue { background: var(--danger-soft); color: var(--danger) }
.status.waived { background: var(--soft); color: var(--muted) }

@media (max-width: 1100px) {
  .metric-grid { grid-template-columns: repeat(3, 1fr) }
  .room-grid { grid-template-columns: repeat(2, 1fr) }
  .help-resources { grid-template-columns: 1fr }
}

@media (max-width: 820px) {
  .shell { grid-template-columns: 1fr }
  .sidebar { position: fixed; z-index: 50; left: -260px; transition: left .2s; width: 252px }
  .sidebar.open { left: 0 }
  .workspace { padding: 0 15px 30px }
  .menu-btn { display: block }
  .grid.two { grid-template-columns: 1fr }
  .room-grid { grid-template-columns: 1fr }
  .topbar { height: 86px }
  .topbar h1 { font-size: 1.18rem }
  .month-picker { width: 130px }
  .metric-grid { grid-template-columns: repeat(2, 1fr) }
  .budget-row { grid-template-columns: 1fr }
  .bar-row { grid-template-columns: 100px 1fr 75px }
}

@media (max-width: 480px) {
  .metric-grid { grid-template-columns: 1fr 1fr }
  .login-card { padding: 24px }
  .topbar p { display: none }
  .workspace { padding-left: 10px; padding-right: 10px }
  .card { padding: 14px }
  .month-picker { width: 108px }
  .month-picker input { padding: 7px 6px }
  .bar-row { grid-template-columns: 92px minmax(0,1fr) 82px; gap: 7px }
}

.month-picker, .month-picker input { min-width: 0 }
.bar-row strong { font-size: .78rem; white-space: nowrap; overflow: hidden; text-overflow: clip }

.button-link.compact { padding: 8px 11px; font-size: .8rem }
.button-link.disabled, .button-link[aria-disabled="true"] { opacity: .45; pointer-events: none }
.csv-format-control { display: grid; gap: 6px; margin: 10px 0 4px }
.csv-format-control span { font-size: .82rem; font-weight: 700; color: var(--muted) }
.csv-format-control select { width: 100% }

/* Intelligence, reconciliation and tenant agreement views */
.metric-link, .bar-link { width: 100%; color: inherit; text-align: left; font: inherit; cursor: pointer }
.metric-link { transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease }
.metric-link:hover { transform: translateY(-2px); border-color: var(--accent); box-shadow: var(--shadow-lg) }
.metric-link small { color: var(--accent); font-size: .72rem }
.bar-link { border: 0; background: transparent; padding: 0 }
.bar-link:hover span { color: var(--accent) }
.compact-metrics { grid-template-columns: repeat(6,minmax(0,1fr)) }
.trend-list { display: grid; gap: 12px }
.trend-row { display: grid; grid-template-columns: 78px minmax(180px,1fr) 180px; align-items: center; gap: 12px }
.trend-row small { color: var(--muted); text-align: right }
.trend-bars { display: grid; grid-template-columns: 1fr 1fr; gap: 5px; height: 24px; align-items: center }
.trend-bars span, .trend-bars i { width: var(--bar); max-width: 100%; height: 8px; border-radius: 999px; display: block }
.trend-bars span { background: var(--ok); justify-self: start }
.trend-bars i { background: var(--danger); justify-self: start }
.debt-layout { grid-template-columns: minmax(0,2fr) minmax(280px,1fr) }
.wide-card { min-width: 0 }
.status.partial { background: var(--accent-soft); color: var(--accent) }
.status.not_required { background: var(--soft); color: var(--muted) }
.agreement-status { display: grid; gap: 12px }
.agreement-summary, .agreement-person, .agreement-history-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap }
.agreement-summary { justify-content: space-between }
.agreement-person { padding: 12px; background: var(--panel-alt); border: 1px solid var(--line); border-radius: var(--radius-sm) }
.agreement-person strong { flex-basis: 100% }
.agreement-person small { color: var(--muted) }
.agreement-status details { border-top: 1px solid var(--line); padding-top: 10px }
.agreement-status summary { cursor: pointer; color: var(--muted) }
.agreement-history-row { justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--soft); font-size: .82rem }
.tenant-portal { width: min(1120px,100%); align-self: start; margin: 20px auto }
.tenant-header { align-items: flex-start }
.tenant-header > div { display: grid; gap: 5px }
.tenant-header .brand-mark { margin-bottom: 8px }
.tenant-section { border-top: 1px solid var(--line); padding-top: 20px }
.agreement-box { border: 1px solid var(--line); border-radius: var(--radius); padding: 18px; background: var(--panel-alt); display: grid; gap: 12px }
.agreement-box h3 { margin: 8px 0 0; font-size: .95rem }
.agreement-facts { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; padding-bottom: 12px; border-bottom: 1px solid var(--line); font-size: .84rem }
.agreement-text { white-space: normal; line-height: 1.6; font-size: .9rem }
.agreement-check { align-items: flex-start }
.agreement-accepted { padding: 14px; border: 1px solid var(--ok); border-radius: var(--radius-sm); background: var(--ok-soft); display: grid; gap: 4px }
.agreement-accepted small { color: var(--muted) }
textarea { width: 100%; resize: vertical; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 10px 12px; background: var(--panel); color: var(--ink); font: inherit }
textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft) }

@media (max-width: 900px) {
  .compact-metrics { grid-template-columns: repeat(2,minmax(0,1fr)) }
  .debt-layout { grid-template-columns: 1fr }
  .trend-row { grid-template-columns: 70px 1fr }
  .trend-row small { grid-column: 2; text-align: left }
  .agreement-facts { grid-template-columns: 1fr }
}

.rules-panel { margin-top: 16px; border-top: 1px solid var(--line); padding-top: 12px }
.rules-panel summary, .match-details summary { cursor: pointer; color: var(--muted); font-weight: 700 }
.match-details { margin-top: 8px; min-width: 220px }
.match-row { display: grid; grid-template-columns: minmax(180px,1fr) auto auto auto; gap: 8px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--soft); font-size: .78rem }
.match-row span:first-child { overflow-wrap: anywhere }
.match-row .mini-link { border: 0; background: transparent; color: var(--accent); cursor: pointer; font: inherit; font-weight: 700; padding: 2px 4px }
.recurring-row { align-items: flex-start }
.badge.warning { background: #fff4d6; color: #7b5400 }
.status.suggested { background: #fff4d6; color: #7b5400 }
.status.confirmed { background: var(--ok-soft); color: var(--ok) }

@media (max-width: 700px) {
  .match-row { grid-template-columns: 1fr auto }
  .match-row .status, .match-row .mini-link { justify-self: start }
}

/* Notifications, financial flow classification and own-account rules */
.topbar-title{min-width:0;flex:1}.notification-wrap{position:relative;margin-left:auto}.notification-btn{position:relative;border:1px solid var(--line);background:var(--panel);border-radius:999px;width:42px;height:42px;font-size:1rem}.notification-badge{position:absolute;right:-4px;top:-5px;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:var(--danger);color:#fff;font-size:.7rem;display:grid;place-items:center}.notification-panel{position:absolute;right:0;top:50px;width:min(420px,calc(100vw - 24px));max-height:520px;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:14px;z-index:60}.notification-list{display:grid;gap:6px}.notification-item{width:100%;text-align:left;border:1px solid var(--soft);background:var(--panel-alt);border-radius:var(--radius-sm);padding:11px;display:grid;gap:4px}.notification-item.unread{border-color:var(--accent)}.notification-item small{color:var(--muted)}.flow-pill{display:inline-flex;padding:3px 8px;border-radius:999px;background:var(--soft);font-size:.72rem;font-weight:700}.owned-transfer-panel{margin-top:14px}.owned-transfer-panel summary{font-weight:700;cursor:pointer}.notification-panel .card-head{position:sticky;top:-14px;background:var(--panel);padding:10px 0;z-index:2}
@media(max-width:820px){.notification-panel{position:fixed;right:12px;top:76px}.language-picker{display:none}}

/* Decision-centre UI */
:root {
  --radius: 18px;
  --radius-sm: 12px;
  --shadow: 0 12px 34px rgba(28, 27, 45, .07);
  --shadow-lg: 0 28px 80px rgba(28, 27, 45, .18);
}
.workspace { max-width: 1680px; margin: 0 auto; width: 100% }
.sidebar { background: linear-gradient(180deg,#101015 0%,#151521 100%) }
.sidebar nav { gap: 6px }
.sidebar nav button { min-height: 44px; letter-spacing: -.01em }
.card, .metric-card { box-shadow: var(--shadow); border-color: color-mix(in srgb,var(--line) 75%,transparent) }
.card { overflow: hidden }
.grid.three { grid-template-columns: repeat(3,minmax(0,1fr)) }
.dashboard-grid { grid-template-columns: minmax(0,2fr) minmax(280px,1fr) }
.span-2 { min-width: 0 }
.decision-hero { margin: 0 0 18px; padding: 24px 26px; display:flex; justify-content:space-between; align-items:center; gap:20px; border-radius:24px; color:#fff; background: radial-gradient(circle at 90% 20%,rgba(255,255,255,.2),transparent 32%), linear-gradient(135deg,#241f67,#5b4dfc 68%,#8e7eff); box-shadow:0 24px 60px rgba(64,52,180,.23) }
.decision-hero h2 { margin:5px 0 6px; font-size:clamp(1.35rem,2vw,2rem); letter-spacing:-.035em }
.decision-hero p { margin:0; color:rgba(255,255,255,.76) }
.decision-hero .primary { background:#fff; color:#33299d; white-space:nowrap }
.eyebrow { text-transform:uppercase; letter-spacing:.12em; font-size:.7rem; font-weight:800; opacity:.72 }
.decision-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:18px }
.decision-card { padding:16px 18px; border:1px solid var(--line); background:var(--panel); border-radius:var(--radius); display:grid; gap:5px; box-shadow:var(--shadow) }
.decision-card span { color:var(--muted); font-size:.78rem; font-weight:700 }
.decision-card strong { font-size:1.35rem; letter-spacing:-.035em }
.decision-card.good strong,.decision-card.safe strong { color:var(--ok) }
.decision-card.risk strong { color:var(--danger) }
.modern-chart { min-height:230px; display:grid; align-items:center }
.modern-chart.large { min-height:310px }
.forecast-bars { display:grid; gap:15px }
.forecast-bar { display:grid; grid-template-columns:minmax(120px,160px) minmax(160px,1fr) auto; align-items:center; gap:12px }
.forecast-bar > span { font-size:.82rem; color:var(--muted) }
.forecast-bar > div { height:12px; border-radius:999px; background:var(--soft); overflow:hidden }
.forecast-bar i { display:block; height:100%; border-radius:999px; background:var(--ok) }
.forecast-bar i.expense { background:var(--danger) }
.forecast-bar i.soft { opacity:.45 }
.chart-note { margin:16px 0 0!important; font-size:.77rem!important }
.health-card { background:linear-gradient(180deg,var(--panel),var(--panel-alt)) }
.health-ring-wrap { display:flex; align-items:center; gap:18px; margin:8px 0 20px }
.health-ring { --score:0deg; width:112px; height:112px; flex:0 0 112px; border-radius:50%; display:grid; place-items:center; background:conic-gradient(var(--danger) var(--score),var(--soft) 0); position:relative }
.health-ring.watch { background:conic-gradient(var(--warn) var(--score),var(--soft) 0) }
.health-ring.stable { background:conic-gradient(var(--ok) var(--score),var(--soft) 0) }
.health-ring:after { content:""; position:absolute; inset:10px; border-radius:50%; background:var(--panel) }
.health-ring > div { position:relative; z-index:1; display:grid; text-align:center }
.health-ring strong { font-size:1.7rem; letter-spacing:-.06em }
.health-ring small,.health-copy small { color:var(--muted) }
.health-copy { display:grid; gap:6px }
.health-copy strong { font-size:1.05rem }
.component-bars { display:grid; gap:9px }
.component-bars > div { display:grid; grid-template-columns:95px 1fr 25px; align-items:center; gap:8px; font-size:.72rem }
.component-bars span { color:var(--muted); text-transform:capitalize }
.component-bars i { height:6px; background:var(--soft); border-radius:99px; overflow:hidden }
.component-bars b { display:block; height:100%; background:var(--accent); border-radius:99px }
.insight-stack { display:grid; gap:9px }
.insight-row { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:11px 0; border-bottom:1px solid var(--soft) }
.insight-row:last-child { border-bottom:0 }
.insight-row > div { display:grid; gap:3px }
.insight-row small { color:var(--muted); font-size:.76rem }
.insight-row > span { font-weight:800; color:var(--ok) }
.goal-mini { display:grid; grid-template-columns:1fr auto; gap:6px 10px; align-items:center; padding:7px 0 }
.goal-mini > div:first-child { display:grid }
.goal-mini small { color:var(--muted); font-size:.74rem }
.goal-mini > span { font-size:.72rem; color:var(--muted); grid-column:1/-1 }
.mini-progress,.goal-progress { height:7px; border-radius:99px; background:var(--soft); overflow:hidden }
.mini-progress { grid-column:1/-1 }
.mini-progress i,.goal-progress i { display:block; height:100%; border-radius:99px; background:linear-gradient(90deg,var(--accent),#9b8eff) }
.empty-state { border:1px dashed var(--line); border-radius:var(--radius-sm); padding:18px; display:grid; gap:5px; color:var(--muted) }
.empty-state.large { min-height:160px; place-content:center; text-align:center }
.goal-form { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; padding:14px; margin-bottom:16px; background:var(--panel-alt); border:1px solid var(--line); border-radius:var(--radius) }
.goal-form button { align-self:stretch }
.goal-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px }
.goal-card { padding:16px; border:1px solid var(--line); border-radius:var(--radius); background:var(--panel-alt); display:grid; gap:12px }
.goal-card.achieved { border-color:color-mix(in srgb,var(--ok) 55%,var(--line)) }
.goal-card.at_risk,.goal-card.overdue { border-color:color-mix(in srgb,var(--danger) 45%,var(--line)) }
.goal-card-head { display:flex; justify-content:space-between; align-items:flex-start; gap:10px }
.goal-card h3 { margin:3px 0 0; font-size:1rem }
.goal-type { color:var(--muted); font-size:.68rem; text-transform:uppercase; letter-spacing:.08em }
.goal-amount strong { font-size:1.35rem }
.goal-amount span { color:var(--muted) }
.goal-facts { display:grid; grid-template-columns:1fr 1fr; gap:8px }
.goal-facts span { display:grid; gap:3px; color:var(--muted); font-size:.72rem }
.goal-facts strong { color:var(--ink); font-size:.8rem }
.status.on_track,.status.achieved { background:var(--ok-soft); color:var(--ok) }
.status.at_risk,.status.no_plan { background:var(--warn-soft); color:var(--warn) }
.scenario-list { display:grid; gap:8px }
.scenario-total { display:grid; gap:4px; border-radius:var(--radius); padding:18px; margin-bottom:6px; background:linear-gradient(135deg,var(--accent-soft),var(--panel-alt)) }
.scenario-total strong { font-size:1.45rem; color:var(--accent) }
.scenario-total small { color:var(--muted) }
.scenario-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 0; border-bottom:1px solid var(--soft) }
.scenario-row > div { display:grid; gap:3px }
.scenario-row small { color:var(--muted); font-size:.76rem }
.scenario-row > span { font-weight:800 }
.forecast-panel { display:grid; gap:16px }
.forecast-number { padding:18px; border-radius:var(--radius); background:var(--panel-alt); display:grid; gap:5px }
.forecast-number span { color:var(--muted); font-size:.8rem }
.forecast-number strong { font-size:2rem; letter-spacing:-.05em }
.forecast-number.positive strong { color:var(--ok) }.forecast-number.negative strong { color:var(--danger) }
.forecast-facts { display:grid; grid-template-columns:1fr 1fr; gap:10px }
.forecast-facts span { display:grid; gap:4px; border:1px solid var(--line); border-radius:var(--radius-sm); padding:11px; color:var(--muted); font-size:.72rem }
.forecast-facts strong { color:var(--ink); font-size:.9rem }
.report-toolbar { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-bottom:18px }
.report-toolbar h2 { margin:0 0 4px }
.segmented { display:flex; gap:3px; padding:4px; border-radius:14px; background:var(--soft) }
.segmented button { border:0; background:transparent; color:var(--muted); padding:8px 14px; border-radius:10px; font-weight:700 }
.segmented button.active { background:var(--panel); color:var(--ink); box-shadow:0 4px 14px rgba(0,0,0,.08) }
.series-chart { height:260px; display:flex; align-items:stretch; gap:8px; padding:12px 6px 0; border-bottom:1px solid var(--line) }
.series-column { flex:1; min-width:18px; display:grid; grid-template-rows:1fr 24px; gap:6px; text-align:center }
.series-bars { display:flex; align-items:flex-end; justify-content:center; gap:3px; min-height:0 }
.series-bars i { width:min(15px,42%); min-height:2px; border-radius:5px 5px 1px 1px }
.series-bars .income,.chart-legend i.income { background:var(--ok) }
.series-bars .expense,.chart-legend i.expense { background:var(--danger) }
.series-column small { color:var(--muted); font-size:.62rem; overflow:hidden }
.chart-legend { display:flex; justify-content:center; gap:18px; margin-top:10px; font-size:.75rem; color:var(--muted) }
.chart-legend span { display:flex; align-items:center; gap:6px }.chart-legend i { width:9px; height:9px; border-radius:50% }
.rank-list { display:grid; gap:4px }
.rank-row { display:grid; grid-template-columns:28px 1fr auto; align-items:center; gap:10px; padding:8px 0 }
.rank-number { width:24px; height:24px; border-radius:8px; background:var(--soft); display:grid; place-items:center; color:var(--muted); font-size:.68rem; font-weight:800 }
.rank-row > div { min-width:0; display:grid; gap:5px }.rank-row > div strong { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:.82rem }
.rank-bar { height:5px; border-radius:99px; background:var(--soft); overflow:hidden }.rank-bar i { display:block; height:100%; border-radius:99px; background:var(--accent) }
.rank-row > span:last-child { display:grid; justify-items:end; font-weight:800; font-size:.8rem }.rank-row > span small { color:var(--muted); font-weight:500 }

@media (max-width:1150px){.grid.three{grid-template-columns:1fr 1fr}.grid.three>article:last-child{grid-column:1/-1}.goal-form{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:900px){.dashboard-grid,.grid.three{grid-template-columns:1fr}.grid.three>article:last-child{grid-column:auto}.decision-grid{grid-template-columns:1fr}.goal-grid{grid-template-columns:1fr}.decision-hero{align-items:flex-start;flex-direction:column}.forecast-bar{grid-template-columns:105px 1fr}.forecast-bar strong{grid-column:2}.report-toolbar{align-items:flex-start;flex-direction:column}}
@media (max-width:600px){.goal-form{grid-template-columns:1fr}.goal-facts,.forecast-facts{grid-template-columns:1fr}.health-ring-wrap{align-items:flex-start}.series-chart{gap:3px}.segmented{width:100%}.segmented button{flex:1;padding:8px 6px}.decision-hero{padding:20px}.forecast-bar{grid-template-columns:1fr}.forecast-bar strong{grid-column:auto}.component-bars>div{grid-template-columns:76px 1fr 22px}}

/* Planning: net worth, assets, subscriptions and scenarios */
.net-worth-summary,.subscription-summary,.debt-strategy,.scenario-result{display:grid;gap:16px}
.net-worth-total,.scenario-outcome{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:18px;border-radius:16px;background:linear-gradient(135deg,var(--panel-alt),var(--soft));border:1px solid var(--line)}
.net-worth-total span,.scenario-outcome span{font-size:.8rem;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.net-worth-total strong,.scenario-outcome strong{font-size:clamp(1.7rem,4vw,2.6rem);letter-spacing:-.05em}
.net-worth-total.positive strong,.scenario-outcome.positive strong{color:var(--ok)}
.net-worth-total.negative strong,.scenario-outcome.negative strong{color:var(--danger)}
.asset-list{display:grid;gap:8px;margin-top:14px}
.asset-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--soft)}
.asset-row>div:first-child{display:grid;gap:3px;min-width:0}.asset-row small{color:var(--muted)}.asset-row>span{font-weight:800;white-space:nowrap}
.subscription-totals{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.subscription-totals>span{display:grid;gap:5px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--panel-alt)}
.subscription-totals small{color:var(--muted);font-weight:700}.subscription-totals strong{font-size:1.35rem}
.scenario-controls{display:grid;gap:14px}.scenario-controls label{display:grid;grid-template-columns:minmax(150px,1fr) minmax(150px,1fr) auto;align-items:center;gap:12px}.scenario-controls label>span{font-size:.84rem;font-weight:750}.scenario-controls output{min-width:42px;text-align:right;font-weight:850;color:var(--accent)}
.scenario-controls input[type=range]{accent-color:var(--accent);width:100%}
.scenario-facts,.strategy-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.scenario-facts span,.strategy-facts span{display:grid;gap:3px;padding:10px;border-radius:12px;background:var(--panel-alt);font-size:.78rem;color:var(--muted)}.scenario-facts strong,.strategy-facts strong{color:var(--ink);font-size:.94rem}
.strategy-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.strategy-card{display:grid;gap:12px;border:1px solid var(--line);border-radius:16px;padding:15px;background:var(--panel-alt)}.strategy-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.strategy-head>span{font-size:.78rem;font-weight:800;padding:4px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent)}.strategy-card ol{margin:0;padding-left:20px;display:grid;gap:7px}.strategy-card li{padding-left:3px}.strategy-card li span{display:inline}.strategy-card li em{float:right;font-style:normal;font-weight:750}
@media(max-width:900px){.scenario-controls label{grid-template-columns:1fr}.scenario-controls output{text-align:left}.strategy-grid{grid-template-columns:1fr}.scenario-facts,.strategy-facts{grid-template-columns:1fr 1fr}.asset-row{grid-template-columns:1fr auto}.asset-row .actions{grid-column:1/-1}}
@media(max-width:520px){.subscription-totals,.scenario-facts,.strategy-facts{grid-template-columns:1fr}.net-worth-total,.scenario-outcome{align-items:flex-start;flex-direction:column}}

.subscription-summary .rank-row>span{display:grid;gap:3px;min-width:0}.subscription-summary .rank-row em{font-style:normal;font-weight:800;white-space:nowrap}.net-worth-card .card-head button{white-space:nowrap}
@media(max-width:1150px){.decision-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}


.next-actions-card{margin:16px 0}.next-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.next-action{display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;padding:13px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel-alt);color:var(--ink)}.next-action:hover{border-color:var(--accent);transform:translateY(-1px)}.next-action span{font-size:.8rem;font-weight:750}.next-action strong{white-space:nowrap;color:var(--accent)}
@media(max-width:1050px){.next-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.next-actions{grid-template-columns:1fr}.budget-row>span{text-align:left}}

.skip-link{position:fixed;left:12px;top:10px;z-index:1000;transform:translateY(-160%);background:var(--panel);color:var(--ink);border:2px solid var(--accent);border-radius:10px;padding:10px 14px;font-weight:800;text-decoration:none}.skip-link:focus{transform:none}.system-stack{display:grid;gap:18px}.system-status{display:grid;gap:8px;margin:12px 0}.system-status>span{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--soft)}.system-status code,.actions code{display:block;overflow:auto;padding:9px 10px;border-radius:9px;background:var(--soft);color:var(--ink);font-size:.76rem}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.preset-form { display: grid; grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr) auto; align-items: end; gap: 10px; padding: 14px; margin: 12px 0; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--panel-alt) }
.preset-form .check { align-self: center }
@media (max-width: 900px) { .preset-form { grid-template-columns: 1fr } }

/* 8.9.0 brand and product finish */
.brand-tagline { margin: 2px 0 0; color: var(--muted); font-size: .78rem; letter-spacing: .01em }
.brand-mark { background: linear-gradient(145deg, #7667ff, #4d35df); box-shadow: 0 10px 28px rgba(87,67,230,.32); }
.card, .metric, .metric-card { transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease }
.card:hover, .metric:hover, .metric-card:hover { border-color: color-mix(in srgb, var(--accent) 22%, var(--line)); box-shadow: 0 14px 36px rgba(25, 22, 48, .08) }
.metric[data-view] { cursor: pointer }
.metric[data-view]:focus-visible, .metric-card:focus-visible { outline: 3px solid var(--accent-soft); outline-offset: 2px }
.topbar { box-shadow: 0 1px 0 rgba(30,25,55,.02) }
.card-head h2 { letter-spacing: -.015em }
.table-wrap { scrollbar-width: thin }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important } }

/* 8.9 product review: grouped suggestions, compact accounts and drill-downs */
#view-transactions > .grid.two { grid-template-columns: minmax(300px,.72fr) minmax(520px,1.28fr); align-items:start }
#accountsList { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:10px }
#accountsList .list-row { min-height:92px; border:1px solid var(--line); border-radius:14px; padding:14px; align-items:flex-start; background:linear-gradient(180deg,var(--panel),var(--panel-alt)) }
#accountsList .list-row .meta { min-width:0 }
#accountsList .list-row .actions { margin-left:auto }
.suggestions-head { gap:18px; align-items:flex-start }
.suggestion-bulk-actions { justify-content:flex-end }
.suggestion-toolbar { display:flex; gap:8px; flex-wrap:wrap; margin:16px 0 }
.filter-chip { border:1px solid var(--line); background:var(--panel); color:var(--muted); border-radius:999px; min-height:36px; padding:8px 14px; font-weight:700; cursor:pointer }
.filter-chip.active,.filter-chip:hover { border-color:var(--accent); color:var(--accent); background:var(--accent-soft) }
.suggestion-list { display:grid; gap:12px }
.suggestion-card.product-card { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:16px; align-items:start; padding:18px; border:1px solid var(--line); border-radius:16px; background:var(--panel); transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease }
.suggestion-card.product-card:hover { border-color:color-mix(in srgb,var(--accent) 45%,var(--line)); box-shadow:var(--shadow); transform:translateY(-1px) }
.suggestion-select { padding-top:4px }
.suggestion-main { min-width:0; display:grid; gap:12px }
.suggestion-title-row { display:flex; align-items:flex-start; justify-content:space-between; gap:12px }
.suggestion-title-row h3 { margin:6px 0 0; font-size:1.06rem; overflow-wrap:anywhere }
.confidence-badge { display:inline-flex; border-radius:999px; padding:6px 10px; font-size:.72rem; font-weight:800; white-space:nowrap }
.confidence-high { color:var(--ok); background:var(--ok-soft) }.confidence-medium { color:var(--warn); background:var(--warn-soft) }.confidence-low { color:var(--danger); background:var(--danger-soft) }
.suggestion-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px }
.suggestion-stats span { display:grid; gap:2px; color:var(--muted); font-size:.74rem; min-width:0 }
.suggestion-stats strong { color:var(--ink); font-size:.88rem; overflow-wrap:anywhere }
.suggestion-proposal { display:flex; align-items:center; gap:10px; flex-wrap:wrap }
.suggestion-proposal span { color:var(--muted); font-size:.78rem }.suggestion-proposal strong { background:var(--accent-soft); color:var(--accent); border-radius:999px; padding:5px 10px; font-size:.78rem }
.suggestion-samples { color:var(--muted); font-size:.78rem; margin:0; line-height:1.45; overflow-wrap:anywhere }
.suggestion-actions { display:grid; gap:8px; min-width:142px }.suggestion-actions button { width:100%; min-height:40px }
.empty-state { min-height:130px; display:grid; place-content:center; text-align:center; gap:5px; color:var(--muted); border:1px dashed var(--line); border-radius:16px }
.detail-drawer { position:fixed; inset:0; z-index:100 }.drawer-backdrop { position:absolute; inset:0; background:rgba(8,12,28,.48); backdrop-filter:blur(2px) }.drawer-panel { position:absolute; right:0; top:0; bottom:0; width:min(620px,94vw); background:var(--panel); box-shadow:-20px 0 60px rgba(8,12,28,.22); padding:24px; overflow:auto; display:grid; align-content:start; gap:18px }
.drawer-head { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; position:sticky; top:-24px; background:var(--panel); padding:20px 0 14px; z-index:2 }.drawer-head h2{margin:3px 0}.eyebrow{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);font-weight:800}.icon-close{border:1px solid var(--line);background:var(--panel-alt);border-radius:10px;width:40px;height:40px;font-size:1.5rem;cursor:pointer}
.drawer-summary { display:grid; grid-template-columns:repeat(3,1fr); gap:10px }.drawer-summary div { background:var(--panel-alt); border:1px solid var(--line); border-radius:12px; padding:12px; display:grid; gap:4px }.drawer-summary span,.drawer-proposal span{color:var(--muted);font-size:.75rem}.drawer-summary strong{font-size:1rem}
.drawer-proposal { display:grid; gap:5px; padding:14px; border:1px solid var(--line); border-radius:12px }.drawer-transaction-list{display:grid;gap:8px}.drawer-transaction{width:100%;border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:12px;text-align:left;display:flex;justify-content:space-between;gap:14px;cursor:pointer}.drawer-transaction span{display:grid;gap:4px;min-width:0}.drawer-transaction strong{overflow-wrap:anywhere}.drawer-transaction small{color:var(--muted)}.drawer-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;position:sticky;bottom:-24px;background:var(--panel);padding:14px 0 20px}
body.drawer-open { overflow:hidden }
.table-drill { border:0; background:transparent; color:var(--ink); padding:0; font:inherit; font-weight:700; cursor:pointer; text-align:left }.table-drill:hover { color:var(--accent); text-decoration:underline }
.clickable-row:hover td { background:var(--panel-alt) }
@media(max-width:1050px){#view-transactions>.grid.two{grid-template-columns:1fr}.suggestion-card.product-card{grid-template-columns:auto minmax(0,1fr)}.suggestion-actions{grid-column:2;display:flex;min-width:0}.suggestion-actions button{width:auto}.suggestion-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:650px){.suggestion-card.product-card{grid-template-columns:1fr}.suggestion-select{position:absolute}.suggestion-main{padding-left:28px}.suggestion-actions{grid-column:1;display:grid;grid-template-columns:1fr 1fr}.suggestion-actions .ghost{grid-column:1/-1}.suggestion-title-row{display:grid}.confidence-badge{justify-self:start}.drawer-summary{grid-template-columns:1fr}.drawer-actions{grid-template-columns:1fr}}

.detected-debts-card{margin-bottom:20px;padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--surface-soft)}
.detected-debts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-top:14px}
.detected-debt{display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.detected-debt.accepted{opacity:.72}.detected-debt-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.detected-debt h4{margin:7px 0 0;font-size:1.05rem}
.detected-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}.detected-stats span{display:flex;flex-direction:column;gap:3px;padding:10px;border-radius:12px;background:var(--surface-soft)}.detected-stats small{color:var(--muted)}
.debt-editor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.debt-editor-grid button{min-height:42px}@media(max-width:720px){.debt-editor-grid{grid-template-columns:1fr}}

/* 9.0.2 debt drill-down */
.debt-overview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 18px}
.debt-metric-card{position:relative;min-height:118px;padding:16px;text-align:left;border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,var(--surface),var(--surface-soft));display:grid;gap:6px;align-content:start;transition:.18s ease;overflow:hidden}
.debt-metric-card:hover,.debt-metric-card:focus-visible{transform:translateY(-2px);border-color:var(--accent);box-shadow:var(--shadow)}
.debt-metric-card span{font-size:.8rem;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.debt-metric-card strong{font-size:1.45rem;line-height:1.1}
.debt-metric-card small{color:var(--muted)}
.debt-metric-card i{position:absolute;right:14px;bottom:12px;font-style:normal;font-size:1.2rem;color:var(--accent)}
.debt-overdue,.debt-critical{border-color:color-mix(in srgb,var(--danger) 38%,var(--line))}
.debt-table-link,.debt-detail-title{border:0;background:none;padding:0;color:inherit;text-align:left}
.debt-table-link:hover,.debt-table-link:focus-visible{color:var(--accent);text-decoration:underline}
.debt-detail-list{display:grid;gap:14px}
.debt-detail-item{border:1px solid var(--line);border-radius:16px;background:var(--surface);padding:16px;display:grid;gap:14px}
.debt-detail-title{width:100%;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.debt-detail-title span:first-child{display:grid;gap:3px}.debt-detail-title small{color:var(--muted)}
.debt-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0}
.debt-detail-grid div{padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface-soft);min-width:0}
.debt-detail-grid dt{font-size:.72rem;color:var(--muted);margin-bottom:4px}.debt-detail-grid dd{margin:0;font-weight:750;overflow-wrap:anywhere}
.debt-detail-note{margin:0;color:var(--muted);font-size:.86rem}
.priority{display:inline-flex;padding:3px 8px;border-radius:999px;font-size:.75rem;font-weight:800;background:var(--soft)}
.priority.critical,.priority.high{background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger)}
.priority.review{background:color-mix(in srgb,var(--warning) 18%,transparent);color:var(--warning)}
@media(max-width:900px){.debt-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.debt-overview-grid,.debt-detail-grid{grid-template-columns:1fr}}

.receipt-list{display:grid;gap:10px;margin-top:16px}.receipt-row{display:flex;justify-content:space-between;align-items:center;padding:12px;border:1px solid var(--line);border-radius:14px}.receipt-row small{display:block;color:var(--muted);margin-top:4px}.cashflow-calendar{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.calendar-day{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--card);text-align:left}.calendar-day small{color:var(--muted)}.password-gate{position:fixed;inset:0;background:rgba(10,12,20,.72);z-index:9999;display:grid;place-items:center;padding:24px}.password-gate.hidden{display:none}.password-gate-card{width:min(440px,100%);background:var(--card);border-radius:22px;padding:28px;box-shadow:0 24px 80px rgba(0,0,0,.28)}


/* 9.2.0 — labelled recurring editor and restrained colour cues */
.recurring-editor { padding: 18px; gap: 16px; background: linear-gradient(180deg, var(--panel-alt), var(--panel)); }
.form-intro { display: grid; gap: 4px; }
.form-intro strong { font-size: .98rem; color: var(--ink); }
.form-intro span { color: var(--muted); font-size: .82rem; line-height: 1.45; }
.recurring-fields { display: grid; grid-template-columns: minmax(220px, 1.55fr) minmax(170px, 1fr) minmax(130px, .72fr) minmax(170px, 1fr) minmax(150px, .8fr); gap: 12px; align-items: stretch; }
.form-field { border: 1px solid var(--line); border-radius: 14px; padding: 12px; background: var(--panel); align-content: start; transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
.form-field > span { color: var(--ink); font-weight: 800; font-size: .82rem; }
.form-field > small { min-height: 2.35em; color: var(--muted); font-size: .72rem; line-height: 1.3; }
.form-field input, .form-field select { margin-top: 2px; background: color-mix(in srgb, var(--panel) 88%, transparent); }
.form-field:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); transform: translateY(-1px); }
.field-tone-blue { background: color-mix(in srgb, #dcecff 42%, var(--panel)); border-color: color-mix(in srgb, #8cb8eb 45%, var(--line)); }
.field-tone-green { background: color-mix(in srgb, #ddf4e7 45%, var(--panel)); border-color: color-mix(in srgb, #7bc79d 45%, var(--line)); }
.field-tone-violet { background: color-mix(in srgb, #ece7ff 48%, var(--panel)); border-color: color-mix(in srgb, #ac9be7 45%, var(--line)); }
.field-tone-amber { background: color-mix(in srgb, #fff1d7 48%, var(--panel)); border-color: color-mix(in srgb, #dfb56a 45%, var(--line)); }
.field-tone-rose { background: color-mix(in srgb, #ffe5ea 45%, var(--panel)); border-color: color-mix(in srgb, #df9aaa 45%, var(--line)); }
.form-actions { display: flex; gap: 10px; justify-content: flex-end; align-items: center; }
.passkey-login { width: 100%; }
.passkey-login-hint { text-align: center; line-height: 1.4; }
.passkey-list { display: grid; gap: 8px; margin-top: 12px; }
.passkey-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; border: 1px solid var(--line); border-radius: 14px; padding: 12px; background: var(--panel-alt); }
.passkey-row > div { display: grid; gap: 3px; min-width: 0; }
.passkey-row small { color: var(--muted); }
.passkey-status { display: inline-flex; align-items: center; gap: 6px; font-size: .78rem; font-weight: 750; color: var(--ok); }
.passkey-status::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: currentColor; }

@media (max-width: 1120px) {
  .recurring-fields { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .recurring-fields .form-field:first-child { grid-column: 1 / -1; }
}
@media (max-width: 650px) {
  .recurring-fields { grid-template-columns: 1fr; }
  .recurring-fields .form-field:first-child { grid-column: auto; }
  .form-field > small { min-height: 0; }
  .form-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .passkey-row { align-items: flex-start; }
}

/* 9.2.0 — hierarchical categories and batch assignment */
.suggestion-category-tools,.transaction-bulk-toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin:14px 0;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--panel-alt)}
.suggestion-category-tools label{display:grid;gap:5px;min-width:min(320px,100%)}
.suggestion-category-tools label span{font-size:.76rem;font-weight:800;color:var(--muted)}
.transaction-bulk-toolbar select{min-width:280px}.transaction-bulk-toolbar small{color:var(--muted);flex:1 1 220px}
.category-select{background:linear-gradient(90deg,var(--category-tone),var(--panel) 42%)}
.category-tree{display:grid;gap:7px;margin:14px 0}.category-tree-row{margin-left:calc(var(--category-depth) * 20px);display:grid;grid-template-columns:auto minmax(120px,.6fr) minmax(220px,1.4fr);gap:10px;align-items:center;padding:9px 11px;border:1px solid color-mix(in srgb,var(--category-tone) 65%,var(--line));border-left:5px solid var(--category-tone);border-radius:11px;background:color-mix(in srgb,var(--category-tone) 38%,var(--panel))}
.category-tree-row small{color:var(--muted);overflow-wrap:anywhere}.category-node-type{display:inline-flex;padding:3px 7px;border-radius:999px;background:var(--panel);border:1px solid var(--line);font-size:.68rem;text-transform:uppercase;font-weight:800;color:var(--muted)}
.category-node-form{grid-template-columns:1.2fr .8fr 1.4fr .7fr auto auto}.category-node-form input[type=color]{width:48px;padding:4px}
.drawer-transaction.editable{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(220px,.7fr) auto;align-items:center;cursor:default}.drawer-transaction.editable select{min-width:0}.drawer-transaction.editable button{white-space:nowrap}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(max-width:900px){.category-node-form{grid-template-columns:1fr 1fr}.category-node-form>*{min-width:0}.drawer-transaction.editable{grid-template-columns:1fr auto}.drawer-transaction.editable select,.drawer-transaction.editable button{grid-column:1/-1;width:100%}}
@media(max-width:620px){.suggestion-category-tools,.transaction-bulk-toolbar{display:grid}.transaction-bulk-toolbar select,.suggestion-category-tools label{min-width:0;width:100%}.category-tree-row{grid-template-columns:auto 1fr;margin-left:calc(var(--category-depth) * 10px)}.category-tree-row small{grid-column:1/-1}.category-node-form{grid-template-columns:1fr}}

/* 9.2.0 — real global date range and financial Q&A */
.global-range{display:grid;grid-template-columns:repeat(2,minmax(130px,1fr));gap:8px;padding-left:12px;border-left:1px solid var(--line)}
.global-range label,.ai-range-grid label{display:grid;gap:4px;min-width:0}
.global-range span,.ai-range-grid span{font-size:.7rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.global-range input{min-width:135px;padding:8px 10px}
.ai-question-card{min-width:0}
.ai-range-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.ai-source-fieldset{margin:0;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--panel-alt)}
.ai-source-fieldset legend{padding:0 6px;font-size:.78rem;font-weight:800;color:var(--muted)}
.ai-source-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px 12px}
.ai-source-grid .check{min-width:0;margin:0}
.ai-query-meta{margin-top:14px;color:var(--muted);font-size:.78rem;overflow-wrap:anywhere}
.ai-answer{min-height:120px;white-space:pre-wrap;line-height:1.58;overflow-wrap:anywhere}
.section-rule{margin:22px 0;border:0;border-top:1px solid var(--line)}
@media(max-width:1180px){.topbar{flex-wrap:wrap}.global-range{order:3;width:100%;padding:10px 0 0;border-left:0;border-top:1px solid var(--line)}}
@media(max-width:760px){.global-range,.ai-range-grid,.ai-source-grid{grid-template-columns:1fr}.global-range input{width:100%}}
.import-partial-option{align-items:flex-start;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel-alt)}
.import-partial-option span{display:grid;gap:3px}.import-partial-option strong{font-size:.82rem}.import-partial-option small{color:var(--muted);font-size:.72rem;line-height:1.35}

/* 9.3.3 — desktop-first passkey and recovery access */
.recovery-login { border-top: 1px solid var(--line); padding-top: 12px; }
.recovery-login summary { cursor: pointer; color: var(--muted); font-size: .84rem; font-weight: 700; }
.recovery-login summary:hover { color: var(--ink); }
.recovery-login-fields { display: grid; gap: 12px; padding-top: 12px; }
.recovery-login-fields .secondary { width: 100%; }
body.desktop-app .login-card { width: min(440px, 100%); }
body.desktop-app .passkey-login { min-height: 48px; }

/* 9.4.9 — Finance Service Lab controls and operational modules */
.topbar{height:auto;min-height:126px;display:grid;grid-template-rows:auto auto;align-content:center;gap:9px;padding:12px 0}
.topbar-main{display:flex;align-items:center;gap:14px;min-width:0}
.topbar-main .notification-wrap{margin-left:0}
.analysis-toolbar{display:grid;grid-template-columns:90px 150px 145px 145px 120px minmax(175px,1fr);gap:8px;align-items:end;width:100%}
.analysis-toolbar>label{gap:4px}
.analysis-toolbar>label>span,.source-picker>summary{font-size:.67rem;font-weight:850;color:var(--muted);text-transform:uppercase;letter-spacing:.045em}
.analysis-toolbar input,.analysis-toolbar select,.source-picker>summary{min-height:38px;padding:7px 9px}
.ai-mode-badge{display:inline-flex;align-items:center;gap:6px;margin-left:auto;padding:7px 11px;border:1px solid var(--line);border-radius:999px;background:var(--panel);font-size:.72rem;font-weight:800;color:var(--muted);white-space:nowrap}
.ai-mode-badge::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--ok)}
.ai-mode-badge.cloud::before{background:var(--accent)}
.ai-mode-badge.warning::before,.ai-mode-badge[data-mode=error]::before{background:var(--warn)}
.source-picker{position:relative;min-width:0}
.source-picker>summary{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);cursor:pointer;list-style:none;text-transform:none;font-size:.78rem;color:var(--ink)}
.source-picker>summary::-webkit-details-marker{display:none}
.source-picker>summary strong{display:grid;place-items:center;min-width:23px;height:23px;border-radius:999px;background:var(--soft);font-size:.7rem}
.source-menu{position:absolute;right:0;top:44px;z-index:70;width:min(330px,calc(100vw - 30px));display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg)}
.source-menu label{display:flex;align-items:center;gap:8px;padding:7px;border-radius:9px;background:var(--panel-alt);font-size:.77rem;color:var(--ink)}
.source-menu input{width:auto;min-height:auto}
.metric-button{border:1px solid var(--line);text-align:left;cursor:pointer;color:var(--ink)}
.metric-button:hover{border-color:var(--accent);transform:translateY(-1px)}
.metric-button small{color:var(--muted);font-size:.68rem}
.live-report-card{margin-bottom:18px}
.live-tabs{margin:6px 0 14px;overflow-x:auto;justify-content:flex-start}
.live-report-panel{min-height:180px}
.source-audit-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.source-audit{display:grid;gap:5px;padding:13px;border:1px solid var(--line);border-radius:12px;background:var(--panel-alt);opacity:.68}
.source-audit.included{opacity:1;border-color:color-mix(in srgb,var(--accent) 42%,var(--line))}
.source-audit span,.source-audit small{color:var(--muted);font-size:.75rem}
.methodology-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.methodology-grid p{margin:0;padding:13px;border:1px solid var(--line);border-radius:12px;background:var(--panel-alt);line-height:1.5}
.form-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}
#view-calendar .cashflow-calendar{max-height:620px;overflow:auto}
#view-support .list,#view-promotions .list,#view-calendar .list{max-height:520px;overflow:auto}
#aiStatus ul{margin:8px 0;padding-left:20px;color:var(--muted)}
#aiStatus p{margin:7px 0}
.compact{padding:6px 9px;font-size:.74rem}

@media(max-width:1180px){
 .topbar{min-height:174px}
 .analysis-toolbar{grid-template-columns:repeat(3,minmax(0,1fr))}
 .source-audit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:820px){
 .topbar{min-height:0;position:relative;padding:10px 0}
 .topbar-main{position:sticky;top:0}
 .analysis-toolbar{grid-template-columns:1fr 1fr}
 .ai-mode-badge{max-width:150px;overflow:hidden;text-overflow:ellipsis}
 .source-menu{position:fixed;left:15px;right:15px;top:150px;width:auto}
 .methodology-grid,.source-audit-grid{grid-template-columns:1fr}
}
@media(max-width:520px){
 .analysis-toolbar{grid-template-columns:1fr}
 .topbar-title p{display:none}
 .ai-mode-badge{display:none}
 .form-pair{grid-template-columns:1fr}
 .source-menu{grid-template-columns:1fr;top:120px;max-height:65vh;overflow:auto}
}
.report-history{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
.report-history>summary{cursor:pointer;font-weight:800;color:var(--muted)}
.report-history .list{margin-top:10px;max-height:320px;overflow:auto}
.advice-export-options{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel-alt)}
.advice-export-options legend{padding:0 6px;color:var(--muted);font-size:.76rem;font-weight:800}
#view-shopping .table-wrap{overflow:auto}
#view-shopping table{min-width:1180px}
#opportunityMonitorForm{margin-top:10px}
@media(max-width:820px){.advice-export-options{display:grid;grid-template-columns:1fr 1fr}}

/* 9.4.9 — receipt scanning, mobile upload and collision-free responsive layout */
button,input,select,textarea,.button-link{min-width:0;max-width:100%}
.primary,.secondary,.ghost,.button-link{min-height:42px;display:inline-flex;align-items:center;justify-content:center;line-height:1.2;text-align:center;white-space:normal}
.card-head>*{min-width:0}.card-head .actions{justify-content:flex-end}.actions>*{min-width:0}
.inline-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr));align-items:end}
.inline-form>*{min-width:0;width:100%}.inline-form button,.inline-form .button-link{width:100%}
.stack-form>*{min-width:0;width:100%}.form-pair>*{min-width:0}
.list-row{min-width:0}.list-row .meta{min-width:0;overflow-wrap:anywhere}.list-row>.actions{flex:0 1 auto;justify-content:flex-end}
.table-wrap{max-width:100%;overscroll-behavior-inline:contain}.table-wrap th,.table-wrap td{vertical-align:top}
.analysis-toolbar>*{min-width:0}.analysis-toolbar label,.analysis-toolbar input,.analysis-toolbar select,.source-picker{width:100%}
.receipt-scanner-card{margin-bottom:18px}.receipt-ingest-grid{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(0,1.2fr);gap:16px;align-items:start}.receipt-scan-form{margin:0}.file-drop{position:relative;min-height:132px;padding:20px;border:1.5px dashed color-mix(in srgb,var(--accent) 45%,var(--line));border-radius:16px;background:linear-gradient(145deg,var(--accent-soft),var(--panel-alt));display:grid;place-content:center;text-align:center;gap:6px;overflow:hidden}.file-drop strong{color:var(--ink);font-size:1rem}.file-drop span{font-size:.78rem}.file-drop input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.scan-preview{min-height:250px;border:1px solid var(--line);border-radius:16px;padding:16px;background:var(--panel-alt);overflow:hidden}.scan-preview-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px}.scan-preview-head>div:first-child{min-width:0}.scan-preview-head h3{margin:7px 0 3px;overflow-wrap:anywhere}.scan-preview-head p{margin:0;color:var(--muted);font-size:.8rem}.scan-warnings{display:grid;gap:6px;margin-bottom:12px}.scan-warnings p{margin:0;padding:9px 10px;border-radius:10px;background:var(--warn-soft);color:var(--warn);font-size:.76rem}.scan-items-table{max-height:360px}.scan-items-table table{min-width:520px}.mobile-scanner-panel{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:18px;align-items:center;margin-top:16px;padding:18px;border:1px solid var(--line);border-radius:16px;background:var(--panel-alt)}.mobile-scanner-copy{display:grid;gap:8px;min-width:0}.mobile-scanner-copy p{margin:0}.mobile-scanner-copy a{justify-content:flex-start;overflow-wrap:anywhere;word-break:break-all}.mobile-scanner-panel img{width:190px;height:190px;padding:8px;border-radius:12px;background:#fff;justify-self:end}.receipt-scan-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;margin-top:16px}.receipt-scan-list .list-row{padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel-alt)}.shopping-editor-grid{align-items:start}
@media(max-width:1100px){.receipt-ingest-grid{grid-template-columns:1fr}.scan-preview{min-height:180px}}
@media(max-width:820px){.grid.two,.grid.three,.dashboard-grid,#view-transactions>.grid.two{grid-template-columns:1fr!important}.card-head{align-items:flex-start;flex-wrap:wrap}.card-head .actions{width:100%;justify-content:stretch}.card-head .actions>*{flex:1 1 160px}.analysis-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.mobile-scanner-panel{grid-template-columns:1fr}.mobile-scanner-panel img{justify-self:start}.scan-preview-head{display:grid}.scan-preview-head .actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.list-row{align-items:flex-start}.list-row>.actions{flex-wrap:wrap}}
@media(max-width:560px){.workspace{padding-left:10px;padding-right:10px}.view{padding-top:14px}.card{padding:15px;border-radius:14px}.analysis-toolbar,.form-pair{grid-template-columns:1fr}.topbar-main{gap:8px}.topbar-title h1{font-size:1.16rem}.topbar-main .notification-wrap{margin-left:auto}.source-picker{grid-column:1/-1}.actions{display:grid;grid-template-columns:1fr;width:100%}.actions>*{width:100%}.list-row{display:grid}.list-row>.actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.scan-preview-head .actions{grid-template-columns:1fr}.mobile-scanner-panel img{width:min(100%,220px);height:auto}.receipt-scan-list{grid-template-columns:1fr}.primary,.secondary,.ghost,.button-link{width:100%}.table-wrap{margin-left:-4px;margin-right:-4px}.login-card{padding:24px 18px}.notice{left:12px;right:12px;max-width:none}.source-menu{left:10px;right:10px}}

/* 9.4.9 — unified layout, export controls, responsive sidebar and visible scanner entry */
:root{
  --control-height:44px;
  --compact-control-height:38px;
  --export-control-width:128px;
  --ui-font-size:.86rem;
}
html,body,button,input,select,textarea,.button-link{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
body{font-size:var(--ui-font-size);line-height:1.45}
h1,h2,h3,h4{font-family:inherit;line-height:1.2;letter-spacing:-.025em;text-wrap:balance}
h1{font-weight:800}h2,h3,h4{font-weight:760}
input,select,textarea{font-size:var(--ui-font-size)}
input,select{height:var(--control-height);min-height:var(--control-height);padding:0 12px}
textarea{min-height:96px;padding:11px 12px;line-height:1.45}
.primary,.secondary,.ghost,.button-link,.menu-btn,.scan-quick-action,.sidebar-scan-action,.scanner-choice{
  min-height:var(--control-height);border-radius:12px;padding:0 14px;font-size:.82rem;font-weight:760;line-height:1.2;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;text-align:center;text-decoration:none;
}
.compact,.button-link.compact{min-height:var(--compact-control-height);height:var(--compact-control-height);padding:0 11px;font-size:.76rem}
.actions{gap:10px;align-items:stretch}
.actions>.primary,.actions>.secondary,.actions>.ghost,.actions>.button-link{align-self:stretch}
[data-csv-dataset]{inline-size:var(--export-control-width);min-inline-size:var(--export-control-width);max-inline-size:var(--export-control-width);flex:0 0 var(--export-control-width);white-space:nowrap}
[data-advice-export]{min-inline-size:74px}
.card-head{align-items:flex-start;min-height:48px}
.card-head>h2,.card-head>div:first-child{padding-top:3px}
.card-head .actions{margin-left:auto;justify-content:flex-end}
.grid.two,.grid.three,.dashboard-grid{align-items:stretch}
.grid.two>.card,.grid.three>.card,.dashboard-grid>.card{height:100%}
.card{padding:20px}
.card h2{font-size:1.04rem}.card h3{font-size:.94rem}
.inline-form,.stack-form,.form-pair,.analysis-toolbar{align-items:stretch}
.inline-form button,.inline-form .button-link,.stack-form button,.stack-form .button-link{min-height:var(--control-height)}
.table-wrap table{font-variant-numeric:tabular-nums}
th{font-size:.77rem}td{font-size:.82rem}

.sidebar{overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;padding-bottom:14px}
.sidebar nav{flex:0 0 auto}
.sidebar-foot{position:sticky;bottom:-14px;background:linear-gradient(180deg,transparent 0%,#151521 18%);padding-bottom:10px;padding-top:24px}
.sidebar-scan-action{width:100%;margin:0 0 12px;border:1px solid rgba(255,255,255,.16);background:#28223f;color:#fff;justify-content:flex-start;position:sticky;top:0;z-index:2;box-shadow:0 8px 22px rgba(0,0,0,.18)}
.sidebar-scan-action:hover{background:#332b58}
.scanner-action-icon{font-size:1.05rem;line-height:1}
.scan-quick-action{border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));background:var(--accent-soft);color:var(--accent);white-space:nowrap;flex:0 0 auto}
.scan-quick-action:hover{border-color:var(--accent);filter:brightness(1.02)}

.receipt-scanner-card{scroll-margin-top:150px;border-color:color-mix(in srgb,var(--accent) 30%,var(--line))}
.receipt-scan-form{gap:14px}
.scanner-choice-grid{display:grid;grid-template-columns:1fr;gap:10px}
.scanner-choice{width:100%;min-height:92px;padding:14px;border:1px solid var(--line);background:var(--panel);color:var(--ink);justify-content:flex-start;text-align:left;white-space:normal}
.scanner-choice:hover{border-color:var(--accent);background:var(--accent-soft)}
.scanner-choice-featured{border-color:color-mix(in srgb,var(--accent) 48%,var(--line));background:linear-gradient(145deg,var(--accent-soft),var(--panel));color:var(--ink)}
.scanner-choice-icon{display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;border-radius:11px;background:var(--soft);color:var(--accent);font-size:1.08rem}
.scanner-choice>span:last-child{display:grid;gap:4px;min-width:0}
.scanner-choice strong{font-size:.84rem;color:var(--ink)}
.scanner-choice small{font-size:.71rem;color:var(--muted);line-height:1.35}
.selected-file-strip{min-height:46px;display:flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel-alt);overflow:hidden}
.selected-file-strip strong{flex:0 0 auto;font-size:.76rem;color:var(--muted)}
.selected-file-strip span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scanner-submit{width:100%}
.mobile-scanner-panel{scroll-margin-top:150px}

@media(max-width:1180px){
  .shell{grid-template-columns:1fr}
  .sidebar{position:fixed;z-index:95;left:-286px;top:0;width:272px;height:100vh;transition:left .2s ease;box-shadow:18px 0 45px rgba(0,0,0,.28)}
  .sidebar.open{left:0}
  .menu-btn{display:inline-flex;flex:0 0 var(--control-height);width:var(--control-height);padding:0}
  .workspace{padding-left:18px;padding-right:18px}
  body.sidebar-open{overflow:hidden}
  body.sidebar-open::before{content:"";position:fixed;inset:0;background:rgba(8,8,14,.46);backdrop-filter:blur(2px);z-index:80}
  .topbar{z-index:30}
  .analysis-toolbar{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(min-width:1181px){.sidebar{left:auto!important}.menu-btn{display:none!important}}
@media(max-width:900px){
  .scanner-choice-grid{grid-template-columns:1fr}
  .scanner-choice{min-height:76px}
  .scan-quick-action span:last-child{display:none}
  .scan-quick-action{width:var(--control-height);padding:0}
  .card-head{min-height:0}
  [data-csv-dataset]{inline-size:124px;min-inline-size:124px;max-inline-size:124px;flex-basis:124px}
}
@media(max-width:720px){
  .workspace{padding-left:10px;padding-right:10px}
  .card{padding:15px}
  .actions{display:grid;grid-template-columns:1fr;width:100%}
  .actions>*{width:100%;max-width:none}
  [data-csv-dataset],[data-advice-export]{inline-size:100%;min-inline-size:0;max-inline-size:none;flex-basis:auto}
  .card-head .actions{margin-left:0}
  .selected-file-strip{align-items:flex-start;flex-direction:column}
  .selected-file-strip span{white-space:normal;overflow-wrap:anywhere}
}

/* Finance Service Lab 9.4.9: provider portals, affordability and visual categories */
:root{
 --pastel-card-blue:#eef4ff;--pastel-card-rose:#fff0f2;--pastel-card-amber:#fff8e6;
 --pastel-card-mint:#ecfbf4;--pastel-card-green:#eefaf0;--pastel-card-peach:#fff1e8;
 --pastel-card-violet:#f3efff;--pastel-border:#dfe3ed;--provider-logo-size:42px;
}
.pastel-card{border-color:var(--pastel-border);background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(255,255,255,.88));position:relative;overflow:hidden}
.pastel-card::before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--pastel-accent,#d9def0)}
.pastel-bill{--pastel-accent:#f1d47a;background-color:var(--pastel-card-amber)}
.pastel-reminder{--pastel-accent:#e8a4ae;background-color:var(--pastel-card-rose)}
.pastel-provider{--pastel-accent:#9cb8ef;background-color:var(--pastel-card-blue)}
.pastel-affordability{--pastel-accent:#8fcfb2;background-color:var(--pastel-card-mint)}
.provider-connection-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:end;margin-top:18px}
.provider-connection-form .provider-url-field{grid-column:span 2}
.provider-connection-form .form-actions{grid-column:1/-1}
.provider-monitor-toggle{min-height:46px;align-self:end}
.provider-monitor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:24px}
.provider-card-list{display:grid;gap:12px}
.provider-card{border:1px solid var(--pastel-border);border-radius:16px;padding:14px;min-width:0;box-shadow:0 8px 22px rgba(26,31,54,.05)}
.pastel-provider-card{background:var(--pastel-card-blue)}
.pastel-bill-card{background:var(--pastel-card-amber)}
.provider-card-head{display:flex;align-items:center;gap:12px;min-width:0}
.provider-card-copy{display:grid;gap:3px;min-width:0;flex:1}
.provider-card-copy strong,.provider-card-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.provider-logo{width:var(--provider-logo-size);height:var(--provider-logo-size);min-width:var(--provider-logo-size);display:grid;place-items:center;border-radius:12px;background:#fff;border:1px solid rgba(60,70,100,.12);overflow:hidden;box-shadow:0 4px 12px rgba(28,35,65,.08);position:relative}
.provider-logo img{width:28px;height:28px;object-fit:contain;display:block;z-index:2;background:#fff}
.provider-logo b{font-size:12px;letter-spacing:.04em;color:#38415b;position:absolute}
.provider-logo:not(.logo-fallback) b{opacity:0}
.provider-name-cell{display:flex;align-items:flex-start;gap:10px;min-width:190px}
.provider-name-cell .provider-logo{--provider-logo-size:36px;border-radius:10px}
.provider-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0 0}
.provider-meta div{background:rgba(255,255,255,.7);border-radius:10px;padding:8px;min-width:0}
.provider-meta dt{font-size:11px;color:var(--muted);margin-bottom:3px}
.provider-meta dd{font-size:12px;font-weight:700;margin:0;overflow-wrap:anywhere}
.provider-actions{margin-top:12px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) 40px;gap:8px}
.provider-actions .compact{width:100%;min-width:0;white-space:normal;line-height:1.15}
.provider-error,.provider-excerpt{font-size:12px;overflow-wrap:anywhere;margin:10px 0 0}
.provider-error{color:#a23d49}
.provider-inline-link{font-size:12px;font-weight:700;color:var(--accent);text-decoration:none}
.ui-icon{font-size:15px;line-height:1;margin-right:5px}
.export-action-set>a{min-width:72px;text-align:center}
.affordability-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:18px 0}
.affordability-metric,.affordability-status{border-radius:14px;padding:13px;border:1px solid rgba(40,50,80,.1);min-width:0}
.affordability-metric span{display:block;color:var(--muted);font-size:12px;min-height:31px}
.affordability-metric strong{display:block;font-size:18px;margin-top:5px;overflow-wrap:anywhere}
.affordability-status{grid-column:1/-1;display:flex;justify-content:space-between;gap:16px;align-items:center}
.pastel-income{background:var(--pastel-card-blue)}.pastel-essential{background:var(--pastel-card-amber)}.pastel-other{background:var(--pastel-card-violet)}.pastel-debt{background:var(--pastel-card-rose)}.pastel-savings{background:var(--pastel-card-green)}.pastel-warning{background:var(--pastel-card-peach)}
.affordability-status.is-affordable{background:var(--pastel-card-green)}.affordability-status.is-unaffordable{background:var(--pastel-card-peach)}
.affordability-editor-grid form{height:100%}.checks-row{align-items:center}.compact-evidence-form{margin-bottom:12px}
.affordability-item.is-priority{background:var(--pastel-card-rose);border-radius:12px;padding:10px}
.missing-evidence{background:var(--pastel-card-peach);border:1px solid #efc9aa;border-radius:12px;padding:10px;margin-bottom:10px;display:grid;gap:4px}
.duplicate-review-panel{border:1px solid #edbf9e;background:var(--pastel-card-peach);border-radius:16px;padding:16px;margin-bottom:16px}
.duplicate-review-head h4{margin:8px 0 12px}
.duplicate-match-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,auto);gap:14px;align-items:center;background:#fff;border:1px solid rgba(70,50,40,.12);border-radius:13px;padding:12px;margin-top:9px}
.duplicate-match-card>div:first-child{display:grid;gap:3px;min-width:0}.duplicate-match-card small{overflow-wrap:anywhere}
.duplicate-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.duplicate-actions button{width:100%;min-width:0;white-space:normal}
.debt-row-priority td{background:rgba(255,240,242,.6)}.debt-row-standard td{background:rgba(238,244,255,.35)}
.priority-badge{background:#f3c5cc;color:#6e2230}.provider-monitor-card input,.provider-monitor-card select,.affordability-card input,.affordability-card select,.affordability-card textarea{width:100%;min-width:0}

@media(max-width:1180px){
 .provider-connection-form{grid-template-columns:repeat(2,minmax(0,1fr))}.provider-connection-form .provider-url-field{grid-column:1/-1}
 .affordability-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
 .provider-monitor-grid{grid-template-columns:1fr}
}
@media(max-width:760px){
 .provider-connection-form{grid-template-columns:1fr}.provider-connection-form .provider-url-field{grid-column:auto}
 .provider-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.provider-actions .icon-btn{width:100%}
 .provider-meta{grid-template-columns:1fr}.affordability-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
 .affordability-status{display:grid}.duplicate-match-card{grid-template-columns:1fr}.duplicate-actions{grid-template-columns:1fr 1fr}
}
@media(max-width:480px){
 .affordability-summary{grid-template-columns:1fr}.duplicate-actions{grid-template-columns:1fr}
 .provider-actions{grid-template-columns:1fr}.provider-actions .icon-btn{min-height:44px}
}

/* 9.4.9 — compact identity, AI controls, statement accounts and credit-card facts */
.profile-trigger{display:flex;flex-direction:column;gap:2px;width:100%;padding:10px 12px;border:1px solid transparent;border-radius:12px;background:transparent;color:inherit;text-align:left;min-width:0}
.profile-trigger:hover,.profile-trigger:focus-visible{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12)}
.profile-trigger span,.profile-trigger small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.profile-trigger small{font-size:11px;opacity:.68}
.profile-modal{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;padding:20px}
.profile-modal.hidden{display:none}
.profile-backdrop{position:absolute;inset:0;border:0;background:rgba(15,15,25,.58);backdrop-filter:blur(4px)}
.profile-dialog{position:relative;width:min(620px,calc(100vw - 28px));max-height:min(820px,calc(100vh - 32px));overflow:auto;background:#fff;border:1px solid #e2e3ed;border-radius:22px;box-shadow:0 30px 90px rgba(20,20,40,.28);padding:24px;display:grid;gap:18px}
.profile-email-list{display:grid;gap:10px}
.profile-email-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border:1px solid #e4e5ef;border-radius:14px;background:#f8f9fc}
.profile-email-row.primary{background:#eef8f2;border-color:#bfe4ce}
.profile-email-row>div:first-child{display:grid;gap:3px;min-width:0}
.profile-email-row strong,.profile-email-row small{overflow-wrap:anywhere}
.profile-action-password{display:grid;gap:6px;padding:12px;border-radius:14px;background:#fff7df;border:1px solid #f0dda0}
#aiModel{width:100%;max-width:100%;min-width:0;white-space:nowrap;text-overflow:ellipsis}
#view-ai .card,#view-ai .stack-form{min-width:0}
.report-download-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}
.report-download-grid .button-link{display:flex;align-items:center;justify-content:flex-start;min-width:0;min-height:46px;padding:10px 14px;white-space:normal;overflow-wrap:anywhere;text-align:left}
#view-system>.grid.two{grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);align-items:start}
.account-row{border-left:5px solid #b8d9ff;background:#f3f8ff}
.credit-card-facts{display:grid;grid-template-columns:repeat(3,minmax(90px,1fr));gap:6px;margin-top:8px;max-width:560px}
.credit-card-facts>span{display:grid;gap:2px;padding:6px 8px;border-radius:9px;border:1px solid rgba(30,30,50,.08)}
.credit-card-facts small{font-size:10px;line-height:1.2;color:#545566}
.credit-card-facts strong{font-size:12px;line-height:1.2}
.fact-blue{background:#eaf4ff}.fact-green{background:#eaf8ef}.fact-yellow{background:#fff7d8}.fact-rose{background:#ffecef}.fact-violet{background:#f0ecff}.fact-grey{background:#f0f1f4}
.debt-editor-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.debt-editor-grid textarea,.debt-editor-grid .check,.debt-editor-grid button{grid-column:auto}
@media(max-width:1180px){#view-system>.grid.two{grid-template-columns:1fr}.report-download-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.debt-editor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.report-download-grid,.credit-card-facts,.debt-editor-grid{grid-template-columns:1fr}.profile-email-row{align-items:stretch;flex-direction:column}.profile-email-row .actions{width:100%}.profile-email-row .actions>*{flex:1}}

/* 9.4.9 — report exports use the grid cell, not the compact table-action width. */
.report-download-grid .button-link,
.report-download-grid [data-csv-dataset]{
  inline-size:100%;
  min-inline-size:0;
  max-inline-size:none;
  width:100%;
  flex-basis:auto;
  justify-content:flex-start;
}

/* 9.4.9 — dedicated provider centre and statement discovery */
.provider-command-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px 26px;border:1px solid #d9ddf0;border-radius:20px;background:linear-gradient(135deg,#eef4ff 0%,#f4efff 58%,#fff7df 100%);margin-bottom:16px}
.provider-command-hero h2{margin:4px 0 7px;font-size:clamp(22px,2.2vw,31px);letter-spacing:-.035em}
.provider-command-hero p{margin:0;max-width:820px;color:var(--muted)}
.provider-summary-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:16px}
.provider-summary-card{display:grid;gap:8px;min-height:92px;padding:15px 16px;border:1px solid rgba(45,50,80,.09);border-radius:16px;box-shadow:0 7px 18px rgba(25,30,55,.04)}
.provider-summary-card span{font-size:12px;color:#5b6072;font-weight:700}
.provider-summary-card strong{font-size:26px;line-height:1}
.pastel-blue{background:#edf5ff}.pastel-green{background:#edf9f0}.pastel-yellow{background:#fff8df}.pastel-rose{background:#fff0f3}.pastel-mint{background:#eafaf5}.pastel-apricot{background:#fff0e5}
.provider-discovery-card{margin-bottom:16px}
.provider-discovery-list{display:grid;gap:10px}
.provider-discovery-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;padding:13px 14px;border:1px solid #e1e4ee;border-radius:15px;background:#f8f9fc}
.provider-discovery-row.is-essential{background:#edf9f0;border-color:#cde7d5}.provider-discovery-row.is-priority{background:#fff0e5;border-color:#efcfb8}
.provider-discovery-copy{display:grid;gap:5px;min-width:0}.provider-discovery-copy>small{color:var(--muted);overflow-wrap:anywhere}
.provider-discovery-title{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.provider-discovery-facts{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:#5b6072}
.provider-badges{display:flex;gap:5px;flex-wrap:wrap}.provider-badges .badge{font-size:10px;padding:3px 7px;border-radius:999px}
.category-badge{background:#eceef4;color:#4b5264}.essential-badge{background:#cdebd8;color:#205c39}.priority-badge{background:#f6d2bb;color:#733b1f}
.provider-card.is-essential{border-color:#bfe2cb}.provider-card.is-priority{border-color:#eabf9f;box-shadow:0 0 0 1px rgba(234,191,159,.35),0 8px 22px rgba(26,31,54,.05)}
.provider-monitor-scope{margin:10px 0 0;color:var(--muted);font-size:11px;line-height:1.35}
.provider-classification{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;grid-column:1/-1}
.provider-classification .check{min-height:46px;padding:10px 12px;border:1px solid #e1e4ee;border-radius:12px;background:#f8f9fc;align-items:center}
.provider-calendar-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.provider-calendar-summary span{display:grid;gap:3px;padding:12px 14px;border-radius:13px;background:rgba(255,255,255,.78);border:1px solid rgba(50,60,90,.08);font-size:12px;color:var(--muted)}
.provider-calendar-summary strong{font-size:20px;color:var(--text)}
#view-providers .provider-monitor-card{margin-bottom:24px}
#view-providers .provider-monitor-grid>section{min-width:0}
@media(max-width:1260px){.provider-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:840px){.provider-command-hero{align-items:flex-start;flex-direction:column}.provider-command-hero button{width:100%}.provider-discovery-row{grid-template-columns:auto minmax(0,1fr)}.provider-discovery-row>button{grid-column:1/-1;width:100%}.provider-classification{grid-template-columns:1fr}.provider-calendar-summary{grid-template-columns:1fr}}
@media(max-width:560px){.provider-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.provider-summary-card{min-height:78px}.provider-summary-card strong{font-size:22px}}

/* 9.4.9 — compact, consistent selection controls across every screen */
input[type="checkbox"],input[type="radio"]{
  -webkit-appearance:none;appearance:none;
  width:18px!important;height:18px!important;
  min-width:18px!important;min-height:18px!important;
  max-width:18px!important;max-height:18px!important;
  padding:0!important;margin:0;
  border:1.5px solid #aeb4c6;background:#fff;
  display:inline-grid;place-content:center;
  flex:0 0 18px;vertical-align:middle;
  box-shadow:0 1px 2px rgba(25,30,55,.05);
  cursor:pointer;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease;
}
input[type="checkbox"]{border-radius:5px}
input[type="radio"]{border-radius:50%}
input[type="checkbox"]::after{
  content:"";width:8px;height:4px;
  border-left:2px solid #fff;border-bottom:2px solid #fff;
  transform:rotate(-45deg) scale(0);transform-origin:center;
  transition:transform .12s ease;
}
input[type="radio"]::after{
  content:"";width:7px;height:7px;border-radius:50%;background:#fff;
  transform:scale(0);transition:transform .12s ease;
}
input[type="checkbox"]:checked,input[type="radio"]:checked{
  border-color:var(--accent);background:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent);
}
input[type="checkbox"]:checked::after,input[type="radio"]:checked::after{transform:rotate(-45deg) scale(1)}
input[type="radio"]:checked::after{transform:scale(1)}
input[type="checkbox"]:focus-visible,input[type="radio"]:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:2px}
input[type="checkbox"]:disabled,input[type="radio"]:disabled{opacity:.5;cursor:not-allowed}
.check{display:flex;align-items:center;gap:9px;min-width:0}
.check>span{min-width:0;line-height:1.3}
.provider-classification .check{justify-content:flex-start}
