:root{--ink:#171713;--paper:#f4f0e8;--card:#fffdf8;--muted:#746f65;--line:#d9d2c5;--red:#b33a2b;--green:#284f42}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.5 ui-sans-serif,system-ui,-apple-system,"Helvetica Neue",Arial}header{min-height:72px;padding:18px clamp(20px,5vw,72px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:rgba(244,240,232,.94);position:sticky;top:0;z-index:2}.brand{font:800 18px/1 ui-sans-serif;letter-spacing:.12em;color:var(--ink);text-decoration:none}.brand span{font-weight:400;color:var(--muted)}nav{display:flex;gap:20px;flex-wrap:wrap}nav a,.section-head a{color:var(--ink);text-decoration:none;font-size:13px}nav a:hover{color:var(--red)}main{max-width:1440px;margin:auto;padding:clamp(28px,5vw,70px)}footer{padding:30px;text-align:center;color:var(--muted);font-size:12px}.page-head,.section-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:28px}.eyebrow{font-size:11px;letter-spacing:.18em;color:var(--red);font-weight:750}h1{font:500 clamp(36px,6vw,72px)/.98 Georgia,serif;letter-spacing:-.04em;margin:8px 0}h2{font:500 25px/1.2 Georgia,serif;margin:28px 0 15px}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:25px 0 48px}.metrics article{background:var(--card);border:1px solid var(--line);padding:22px;min-height:135px;display:flex;flex-direction:column}.metrics article.accent{background:var(--green);color:white;border-color:var(--green)}.metrics span,.metrics small{color:var(--muted);font-size:12px}.metrics .accent span{color:#d4ded9}.metrics strong{font:500 clamp(27px,3vw,42px)/1 Georgia,serif;margin:auto 0 4px}.grid{display:grid;grid-template-columns:2fr 1fr;gap:30px;margin-bottom:40px}.table-wrap{overflow:auto;border:1px solid var(--line);background:var(--card)}table{border-collapse:collapse;width:100%;min-width:660px}th,td{padding:13px 15px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}th{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.num{text-align:right}.pill{display:inline-block;padding:3px 8px;border:1px solid var(--line);border-radius:99px;font-size:11px}.warning{color:var(--red);font-weight:700}.empty{color:var(--muted);text-align:center;padding:28px}.open-item{background:var(--card);border-left:3px solid var(--red);padding:16px;margin-bottom:10px;display:flex;flex-direction:column}.open-item span,.open-item em{color:var(--muted);font-size:12px}.open-item p{margin:6px 0}.open-item.large{padding:25px;max-width:760px}.line-item{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line)}.outline,button{display:inline-block;padding:11px 17px;border:1px solid var(--ink);background:transparent;color:var(--ink);text-decoration:none;font-weight:700;cursor:pointer}.login-card{max-width:470px;margin:7vh auto;background:var(--card);border:1px solid var(--line);padding:clamp(28px,6vw,55px);box-shadow:12px 12px 0 #e1dacd}.login-card p{color:var(--muted);margin:24px 0}.login-card label{display:block;font-size:12px;font-weight:700;margin-bottom:7px}.login-card input{width:100%;padding:14px;border:1px solid var(--line);background:white;font-size:18px;margin-bottom:12px}.login-card button{width:100%;background:var(--ink);color:white}.message{max-width:470px;margin:0 auto 12px;color:var(--red);font-weight:700}.hero-block,.report-hero{display:flex;align-items:stretch;justify-content:space-between;gap:22px;margin-bottom:28px}.period-banner,.report-period{background:var(--red);color:white;padding:18px 22px;display:inline-flex;flex-direction:column;min-width:min(100%,360px);margin-bottom:12px}.period-banner span,.report-period span{font-size:12px;font-weight:800;letter-spacing:.16em}.period-banner strong,.report-period strong{font:500 30px/1.15 Georgia,serif;margin:5px 0}.period-banner small,.report-period small{color:#f3d8d3}.report-cta{align-self:stretch;min-width:270px;background:var(--ink);color:white;text-decoration:none;padding:24px;display:flex;justify-content:flex-end;flex-direction:column}.report-cta span{color:#bbb7ae;font-size:12px}.report-cta strong{font-size:17px}.annual-strip{display:grid;grid-template-columns:repeat(3,1fr);background:var(--green);color:white;margin:0 0 38px}.annual-strip div{padding:24px;border-right:1px solid rgba(255,255,255,.2)}.annual-strip div:last-child{border:0}.annual-strip span{display:block;color:#cfddd8;font-size:11px;font-weight:700;letter-spacing:.1em}.annual-strip strong{display:block;font:500 clamp(27px,3vw,40px)/1.15 Georgia,serif;margin-top:9px}.section-title{margin-bottom:10px}.month-section-head{display:flex;align-items:end;gap:22px;margin-top:12px}.month-section-head .period-banner{margin:0}.metric-card-link{display:block;color:inherit;text-decoration:none}.metric-card-link article{height:100%;transition:transform .15s,border-color .15s,box-shadow .15s}.metric-card-link:hover article,.metric-card-link:focus-visible article{transform:translateY(-2px);border-color:var(--red);box-shadow:0 6px 18px rgba(23,23,19,.08)}.metric-card-link small{color:var(--red)}.report-actions{display:flex;align-items:flex-end;gap:8px}.report-period{margin:0;min-width:min(100%,430px);padding:24px 28px}.report-period strong{font-size:clamp(32px,5vw,55px)}.month-browser{display:flex;justify-content:space-between;align-items:end;gap:30px;background:var(--card);border:1px solid var(--line);padding:22px;margin:20px 0 28px}.month-browser>div>span,.month-browser label{display:block;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:9px}.month-links{display:flex;gap:8px;flex-wrap:wrap}.month-links a{padding:8px 12px;border:1px solid var(--line);color:var(--ink);text-decoration:none;font-weight:700}.month-links a.active{background:var(--ink);color:white;border-color:var(--ink)}.month-browser form{display:flex;align-items:end;gap:8px}.month-browser form label{position:absolute;transform:translateY(-40px)}.month-browser input{min-height:42px;padding:8px 11px;border:1px solid var(--line);background:white;font:inherit}.month-browser button{background:var(--ink);color:white}.report-metrics{margin-top:28px}.reimbursement-hero{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:30px}.reimbursement-hero p{color:var(--muted)}.reimbursement-total{background:var(--red);color:white;padding:24px;min-width:280px}.reimbursement-total span{display:block;font-size:11px;font-weight:800;letter-spacing:.12em}.reimbursement-total strong{display:block;font:500 44px/1.1 Georgia,serif;margin-top:8px}.person-totals{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:22px}.person-totals div{background:var(--green);color:white;padding:16px 20px;min-width:220px}.person-totals span{color:#cfddd8;font-size:12px}.person-totals strong{display:block;font:500 27px/1.1 Georgia,serif;margin-top:4px}@media(max-width:900px){header{align-items:flex-start;gap:14px;position:static}nav{gap:10px}.metrics{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:1fr}.annual-strip{grid-template-columns:1fr}.annual-strip div{border-right:0;border-bottom:1px solid rgba(255,255,255,.2)}.hero-block,.report-hero,.month-browser,.reimbursement-hero{align-items:stretch;flex-direction:column}.report-cta{min-height:120px}.report-actions{align-items:stretch}.month-section-head{align-items:flex-start;flex-direction:column}}@media(max-width:560px){header{display:block}nav{margin-top:16px}.metrics{grid-template-columns:1fr}.page-head{align-items:flex-start;flex-direction:column}main{padding:26px 16px}.login-card{margin:3vh auto;box-shadow:6px 6px 0 #e1dacd}.month-browser form{align-items:stretch;flex-direction:column}.month-browser form label{position:static;transform:none}.report-actions{flex-direction:column}.report-actions a{text-align:center}.reimbursement-total{min-width:0}}
.pending-pill{background:#fff0e8;border-color:#d85a32;color:#a52f16;font-weight:800}.paid-pill{background:#e8f3ee;border-color:#6b9b87;color:#285b48;font-weight:700}
.expense-table{table-layout:fixed;width:100%;min-width:900px}.expense-table .col-date{width:10%}.expense-table .col-category{width:14%}.expense-table .col-payee{width:10%}.expense-table .col-description{width:27%}.expense-table .col-money{width:8%}.expense-table .col-payer{width:7%}.expense-table .col-source{width:11%}.expense-table .col-status{width:13%}.expense-table th,.expense-table td{white-space:normal;vertical-align:top}.expense-table .num{white-space:nowrap}.expense-table .description-cell{overflow-wrap:anywhere;line-height:1.45}.expense-table .pill{white-space:normal;text-align:center}.reimbursement-table .col-date{width:11%}.reimbursement-table .col-payer{width:9%}.reimbursement-table .col-category{width:15%}.reimbursement-table .col-payee{width:12%}.reimbursement-table .col-description{width:30%}.reimbursement-table .col-source{width:14%}.reimbursement-table .col-money{width:9%}
.section-links{display:flex;gap:16px;flex-wrap:wrap}.recent-ledger-table{table-layout:fixed;min-width:700px}.recent-ledger-table th:nth-child(1){width:17%}.recent-ledger-table th:nth-child(2){width:13%}.recent-ledger-table th:nth-child(3){width:34%}.recent-ledger-table th:nth-child(4){width:20%}.recent-ledger-table th:nth-child(5){width:16%}.recent-ledger-table td{white-space:normal;vertical-align:middle}.recent-ledger-table .recent-detail{overflow-wrap:anywhere}.recent-ledger-table .num{white-space:nowrap}.transaction-income{border-color:#8fb3a6;background:#edf5f1;color:var(--green)}.transaction-expense{border-color:#d8a49b;background:#faefec;color:var(--red)}.transaction-positive{color:var(--green);font-weight:700}.transaction-negative{color:var(--red);font-weight:700}
