:root{font-family:Segoe UI,Arial,sans-serif;color:#202624;background:#f6f8f7;font-size:14px;font-synthesis:none;--green:#16634a;--muted:#69766f;--line:#e0e6e2}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;border:1px solid var(--line);border-radius:6px;background:#fff;color:inherit;padding:10px 14px;min-height:40px}button:hover{background:#eff4f1}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #83bca7;outline-offset:2px}svg{width:18px;height:18px;flex-shrink:0}.sidebar{width:234px;position:fixed;inset:0 auto 0 0;background:#fff;border-right:1px solid var(--line);padding:28px 18px;display:flex;flex-direction:column}.brand{color:inherit;text-decoration:none;display:flex;align-items:center;gap:10px;font-size:17px;font-weight:650;white-space:nowrap}.brand-mark{background:var(--green);color:white;padding:8px;display:flex;border-radius:6px}.sidebar nav{margin-top:44px;display:grid;gap:7px}.sidebar nav button{justify-content:flex-start;border:0;padding:12px;color:#59645e}.sidebar nav button.active{background:#e8f2ed;color:var(--green);font-weight:600}.sidebar-bottom{margin-top:auto;display:grid;gap:15px;padding-top:32px}.sidebar-bottom button{justify-content:flex-start}.eyebrow{font-size:11px;font-weight:650;color:var(--muted);margin:0 0 8px;letter-spacing:0}.local-status{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}.dot{width:7px;height:7px;background:#238b64;border-radius:50%}main{margin-left:234px;padding:34px 40px;max-width:1660px}header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:30px}h1{font-size:28px;font-weight:650;margin:0;letter-spacing:0}h2{font-size:18px;font-weight:650;margin:0}h3{font-size:15px;margin:0}p{line-height:1.6}.header-actions{display:flex;gap:10px;align-items:center}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#104f3b}.icon-button{width:40px;padding:9px}.notice{padding:14px 18px;background:#edf3f8;border-left:3px solid #4f7fa4;color:#34556d;display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:24px;font-size:13px}.notice.warning{background:#fff5e5;border-color:#c59432;color:#785b21}.notice a{color:inherit}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px;padding:6px 0 28px;border-bottom:1px solid var(--line);margin-bottom:28px}.stat{border-right:1px solid var(--line);padding-right:15px}.stat:last-child{border:0}.stat-label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:8px;margin-bottom:11px}.stat-value{font-size:27px;font-weight:600;white-space:nowrap}.stat-caption{font-size:11px;color:var(--muted);margin-top:6px}.amber{color:#a16d20}.green{color:var(--green)}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:28px 0 16px}.section-heading p{margin:5px 0 0;font-size:12px;color:var(--muted)}.count{background:#edf1ef;padding:3px 8px;border-radius:4px;font-size:12px;margin-left:8px}.empty{padding:42px 20px;border-block:1px solid var(--line);text-align:center;color:var(--muted)}.empty svg{width:32px;height:32px;margin-bottom:8px;color:#90a79b}.empty h3{color:#263d31;margin:4px 0 8px}.empty p{max-width:430px;margin:0 auto 18px}.transaction-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:16px 0;border-bottom:1px solid var(--line)}.transaction-icon{background:#eaf0ec;border-radius:6px;display:grid;place-items:center;width:40px;height:40px;color:#527364}.transaction-icon.credit{background:#e4f1e9;color:#16634a}.row-title{font-weight:600;overflow-wrap:anywhere}.row-meta{font-size:12px;color:var(--muted);margin-top:5px;overflow-wrap:anywhere}.amount{font-weight:650;white-space:nowrap}.tag{display:inline-flex;padding:3px 7px;background:#e9f2ed;color:#376a50;border-radius:4px;font-size:11px;margin-right:6px}.tag.pending{background:#fff0d9;color:#996b26}.text-button{background:transparent;border:0;color:var(--green);padding:8px}.filters{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin:16px 0 24px}.filters input[type=search]{flex:1;min-width:180px}.filters input,.filters select{width:auto;min-height:40px}.month-input{width:155px!important}.bank-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.bank-card{border:1px solid var(--line);background:#fff;border-radius:8px;padding:22px;min-width:0}.bank-card h3{margin:16px 0 8px}.bank-card .bank-icon{width:40px;height:40px;display:grid;place-items:center;background:#f5e9e9;color:#ad4949;border-radius:6px}.bank-card:nth-child(2) .bank-icon{background:#e9eaf8;color:#615697}.bank-card:nth-child(3) .bank-icon{background:#e6f2ed;color:#278365}.bank-card p{font-size:12px;color:var(--muted)}.bank-card button{width:100%;margin-top:12px}.account-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;border-bottom:1px solid var(--line);padding:19px 0}.account-line p{margin:5px 0;font-size:12px;color:var(--muted)}.account-line button{margin-top:8px}.config-status{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding-bottom:18px;margin:22px 0;color:var(--muted)}dialog{width:min(540px,calc(100vw - 28px));border:1px solid var(--line);border-radius:8px;padding:24px;max-height:90vh;overflow:auto}dialog::backdrop{background:#12251b66}.dialog-heading{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:18px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}label{display:block;font-size:12px;font-weight:600;margin-bottom:6px}.field{margin-bottom:16px}.full{grid-column:1/-1}input,select,textarea{width:100%;padding:10px 12px;border:1px solid #cbd5ce;border-radius:5px;background:#fff;color:#27342b}textarea{min-height:80px;resize:vertical}.dialog-summary{background:#f1f5f2;border-radius:5px;padding:14px;margin-bottom:20px;display:flex;justify-content:space-between;gap:10px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.form-error{color:#ac3737;font-size:13px;line-height:1.5}.helper{font-size:12px;color:var(--muted);line-height:1.6}.drafts{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.draft-card{padding:16px;border:1px solid var(--line);border-radius:6px;background:#fff}.draft-card p{margin:7px 0;font-size:12px;color:var(--muted);overflow-wrap:anywhere}.table-scroll{overflow:auto;border-block:1px solid var(--line)}table{border-collapse:collapse;width:100%;font-size:12px;white-space:nowrap}th,td{padding:13px 12px;text-align:right;border-bottom:1px solid var(--line)}th{background:#edf2ee;font-weight:600}th:first-child,td:first-child{text-align:left;position:sticky;left:0;background:#f6f8f7;min-width:160px}tfoot td{font-weight:650;background:#eaf1ed}#toast{position:fixed;bottom:24px;right:24px;max-width:calc(100vw - 48px);padding:14px 20px;background:#203d2d;color:#fff;border-radius:6px;box-shadow:0 4px 16px #0002;z-index:10}a{color:var(--green)}.loading{padding:48px;color:var(--muted);text-align:center}
@media(max-width:1000px){.sidebar{width:200px;padding:24px 12px}.brand{font-size:15px}main{margin-left:200px;padding:28px 24px}.stats{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:25px}.stat:nth-child(2){border:0}.bank-list{grid-template-columns:1fr}.stat-value{font-size:25px}}
@media(max-width:640px) {
  .sidebar {
    inset:auto 0 0;
    width:100%;
    height:calc(80px + env(safe-area-inset-bottom,0px));
    padding:0 4px env(safe-area-inset-bottom,0px);
    border-top:1px solid var(--line);
    z-index:5;
    display:grid;
    grid-template-columns:32px minmax(0,1fr) 32px;
    align-items:center;
    gap:0;
    overflow:hidden;
  }
  .brand,.sidebar-bottom {
    display:none;
  }
  .sidebar .nav-scroll {
    display:inline-flex;
    width:32px;
    height:52px;
    min-height:44px;
    padding:0;
    box-shadow:none;
    border:0;
    background:transparent;
  }
  .sidebar nav {
    margin:0;
    display:flex;
    align-items:stretch;
    overflow-x:auto;
    overflow-y:hidden;
    scrollbar-width:thin;
    scrollbar-color:#61736b transparent;
    gap:0;
    height:76px;
    width:100%;
    min-width:0;
  }
  .sidebar nav button {
    flex:0 0 98px;
    min-width:98px;
    min-height:64px;
    flex-direction:column;
    gap:5px;
    font-size:11px;
    padding:10px 4px;
    border-radius:0;
    white-space:normal;
    line-height:1.25;
  }
  .sidebar nav svg {
    width:19px;
    height:19px;
  }
  main {
    margin-left:0;
    padding:24px 18px calc(104px + env(safe-area-inset-bottom,0px));
  }
  header {
    align-items:flex-start;
    margin-bottom:22px;
  }
  h1 {
    font-size:23px;
  }
  .header-actions {
    gap:6px;
  }
  .header-actions .primary {
    font-size:0;
    width:40px;
    padding:10px;
  }
  .header-actions .primary svg {
    width:20px;
    height:20px;
  }
  .notice {
    flex-direction:column;
    align-items:flex-start;
    gap:10px;
  }
  .stats {
    gap:18px;
    padding-bottom:24px;
  }
  .stat {
    padding-right:6px;
  }
  .stat-value {
    font-size:23px;
  }
  .stat-label {
    font-size:11px;
    gap:5px;
  }
  .transaction-row {
    grid-template-columns:34px minmax(0,1fr) auto;
    gap:10px;
    padding:14px 0;
  }
  .transaction-icon {
    width:32px;
    height:32px;
  }
  .transaction-row>button {
    grid-column:2/-1;
    justify-self:end;
    min-height:30px;
    padding:5px 10px;
  }
  .row-meta {
    font-size:11px;
  }
  .section-heading {
    align-items:flex-start;
  }
  .section-heading h2 {
    font-size:17px;
  }
  .section-heading .text-button {
    font-size:12px;
  }
  .form-grid {
    grid-template-columns:1fr;
  }
  .full {
    grid-column:auto;
  }
  .filters {
    gap:8px;
  }
  .filters input[type=search] {
    flex-basis:100%;
  }
  #toast {
    bottom:calc(94px + env(safe-area-inset-bottom,0px));
    right:18px;
  }
  dialog {
    padding:18px;
  }
}
[hidden]{display:none!important}
#year{width:100px}
.bank-list{grid-template-columns:repeat(4,minmax(0,1fr))}.bank-card:nth-child(4) .bank-icon{background:#edf0f8;color:#425c92}.market-account strong{align-self:center}@media(max-width:1200px){.bank-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:1000px){.bank-list{grid-template-columns:1fr}}
/* Paired entries stay readable inside the account-link dialog. */
.account-link-pair { display: grid; gap: 12px; padding: 16px 0; border-bottom: 1px solid var(--border, #394440); }
.account-link-pair > div { display: grid; gap: 4px; min-width: 0; }
.account-link-pair strong, .account-link-pair span { overflow-wrap: anywhere; }
.account-link-pair button { justify-self: start; }
.portfolio-section { margin-bottom: 28px; }
.portfolio-evolution { padding: 18px 0 24px; min-width: 0; }
.portfolio-chart-controls { display: flex; align-items: end; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.portfolio-chart-controls .field { min-width: 0; width: min(100%, 340px); }
.portfolio-chart-controls select { width: 100%; }
.portfolio-periods { display: flex; gap: 4px; }
.portfolio-periods button { width: 48px; height: 36px; padding: 0; border: 0; background: transparent; }
.portfolio-periods button[aria-pressed=true] { background: #76d5ad26; color: #76d5ad; }
.portfolio-chart-heading { display: flex; justify-content: space-between; gap: 16px; align-items: start; margin: 24px 0 12px; min-height: 100px; }
.portfolio-chart-heading h3 { margin: 0 0 8px; font-size: 16px; }
.portfolio-chart-heading strong { font-size: 30px; overflow-wrap: anywhere; }
.portfolio-chart-heading p { font-size: 13px; margin-top: 8px; }
#portfolio-chart-point { font-size: 13px; text-align: right; max-width: 45%; }
.portfolio-chart-surface { height: 300px; position: relative; width: 100%; min-width: 0; }
#portfolio-chart-empty { height: 100%; display: grid; place-items: center; text-align: center; color: #9aa8ad; padding: 24px; border-bottom: 1px solid #ffffff18; }
#portfolio-chart-empty[hidden] { display: none; }
.portfolio-negative { color: #ef848b; }
@media(max-width:640px) { .portfolio-chart-controls { gap: 12px; } .portfolio-chart-controls .field { width: 100%; } .portfolio-chart-surface { height: 250px; } .portfolio-chart-heading strong { font-size: 26px; } }
.portfolio-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.lab-tabs { display:flex; flex-wrap:wrap; gap:6px; margin:12px 0 20px; }
.lab-tabs button[aria-pressed=true] { background:#76d5ad26; color:var(--green); border-color:#76d5ad; }
.market-lab { min-width:0; }
.investment-tracking .table-scroll { max-height:600px; }
.investment-tracking select { min-width:180px; }
.investment-tracking td:first-child { white-space:normal; min-width:210px; max-width:340px; }
.investment-tracking .stat-value { font-size:24px; white-space:normal; overflow-wrap:anywhere; }
@media(max-width:640px) { .investment-tracking .stats { grid-template-columns:repeat(2,minmax(0,1fr)); } .investment-tracking .section-heading { flex-wrap:wrap; } }
.pytr-activity h2 { display:flex; align-items:center; gap:8px; }
.pytr-events { max-height:600px; overflow:auto; }
.pytr-event { display:grid; grid-template-columns:28px minmax(0,1fr) auto; gap:12px; padding:16px 0; border-bottom:1px solid var(--line); }
.pytr-event h3,.pytr-event strong,.pytr-event small { overflow-wrap:anywhere; }
.pytr-event p { margin:5px 0; color:var(--muted); font-size:12px; }
.pytr-event small { color:var(--muted); font-size:10px; }
.pytr-event strong { max-width:170px; text-align:right; font-size:13px; }
@media(max-width:640px) { .pytr-event { grid-template-columns:24px minmax(0,1fr); } .pytr-event strong { grid-column:2; text-align:left; max-width:none; } }
.lab-primary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; padding:22px 0 30px; margin:0; border-block:1px solid var(--line); }
.lab-metric { min-width:0; }
.lab-metric dt { font-size:12px; color:var(--muted); }
.lab-metric dd { margin:8px 0 0; font-weight:600; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.lab-primary dd { font-size:24px; }
.lab-layout-groups { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; padding:24px 0; border-bottom:1px solid var(--line); }
.lab-metric-group { min-width:0; }
.lab-metric-group h3 { display:flex; align-items:center; gap:8px; margin-bottom:20px; }
.lab-metric-group h3 svg { color:#75b8d6; }
.lab-metric-group dl { margin:0; display:grid; gap:16px; }
.lab-metric-group .lab-metric { display:flex; justify-content:space-between; align-items:baseline; gap:12px; }
.lab-metric-group .lab-metric dd { margin:0; text-align:right; }
.lab-balance { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,2fr); gap:40px; padding:24px 0; border-block:1px solid var(--line); }
.lab-balance-total { display:flex; flex-direction:column; gap:12px; }
.lab-balance-total span { font-size:13px; color:var(--muted); }
.lab-balance-total strong { font-size:28px; overflow-wrap:anywhere; }
.lab-balance-lines { display:grid; gap:18px; }
.lab-balance-line { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; font-size:13px; }
.lab-balance-line progress { grid-column:1/-1; width:100%; height:6px; appearance:none; border:0; border-radius:2px; }
.lab-balance-line progress::-webkit-progress-bar { background:#ffffff12; }
.lab-balance-line progress::-webkit-progress-value { background:#76d5ad; }
.lab-balance-line .leg-0::-webkit-progress-value { background:#75b8d6; }
.lab-balance-line .leg-2::-webkit-progress-value { background:#ef848b; }
.lab-balance-line .leg-3::-webkit-progress-value { background:#dcc575; }
.lab-balance-net { border-top:1px solid var(--line); padding-top:14px; }
@media(max-width:1000px) { .lab-layout-groups { grid-template-columns:1fr; } .lab-primary { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:640px) { .lab-primary { gap:24px 12px; } .lab-primary dd { font-size:21px; } .lab-balance { grid-template-columns:1fr; gap:24px; } .lab-layout-tabs button { padding:8px 10px; } }
.lab-sheet-summary { width:min(100%,520px); table-layout:fixed; font-size:14px; white-space:normal; }
.lab-sheet-summary thead th { background:#245d80; color:#fff; text-align:center; position:static; }
.lab-sheet-summary tbody th { width:58%; text-align:left; position:static; background:#274654; color:#e0edf5; font-weight:500; min-width:0; overflow-wrap:anywhere; }
.lab-sheet-summary td { background:#20272b; font-variant-numeric:tabular-nums; white-space:nowrap; }
.lab-sheet-summary th,.lab-sheet-summary td { padding:9px 12px; border:1px solid #52636b; }
.lab-sheet-summary .gain th { background:#24646a; }
.lab-sheet-summary .gain td { background:#214c37; color:#8de4b6; font-weight:600; }
.lab-sheet-results { display:flex; flex-wrap:wrap; gap:16px 36px; margin:20px 0 28px; }
.lab-sheet-results dt { color:var(--muted); font-size:12px; }
.lab-sheet-results dd { margin:6px 0 0; font-weight:600; }
.lab-valuation { display:grid; grid-template-columns:minmax(0,260px) minmax(0,210px); gap:16px; margin:24px 0; }
.lab-summary .stat-value { font-size:24px; white-space:normal; overflow-wrap:anywhere; }
.lab-breakdown { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 24px; margin:0 0 28px; }
.lab-breakdown > div { padding:14px 0; border-bottom:1px solid var(--line); min-width:0; }
.lab-breakdown dt { color:var(--muted); font-size:12px; }
.lab-breakdown dd { margin:8px 0 0; font-weight:600; overflow-wrap:anywhere; }
.lab-entry-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.lab-table th:first-child,.lab-table td:first-child { max-width:280px; white-space:normal; overflow-wrap:anywhere; }
.market-lab .table-scroll { max-height:540px; }
.lab-table thead { position:sticky; top:0; z-index:1; }
.lab-method { border-top:1px solid var(--line); margin-top:28px; padding-top:18px; color:var(--muted); font-size:12px; }
.lab-method summary { cursor:pointer; font-weight:600; }
@media(max-width:640px) { .lab-summary { grid-template-columns:repeat(2,minmax(0,1fr)); } .lab-valuation,.lab-entry-grid { grid-template-columns:1fr; } .lab-breakdown { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 16px; } .lab-summary .stat-value { font-size:21px; } }
.portfolio-scroll { max-width: 100%; overflow-x: auto; }
.portfolio-table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.portfolio-table th, .portfolio-table td { padding: 14px 12px; text-align: right; white-space: nowrap; border-bottom: 1px solid var(--border, #dce1e8); }
.portfolio-table th:first-child, .portfolio-table td:first-child { text-align: left; white-space: normal; min-width: 180px; }
.portfolio-table th { font-size: 12px; font-weight: 600; }
.portfolio-table td small { display: block; margin-top: 4px; opacity: .7; }
.portfolio-section .stats { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 16px; }
@media(max-width:640px) { .portfolio-section .section-heading { align-items: flex-start; flex-direction: column; gap: 14px; } .portfolio-section .stats, .market-stats { grid-template-columns: 1fr; } .portfolio-actions { width: 100%; } }
