:root{color:#172033;background:#f5f7fa;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;--navy: #142b4a;--navy-hover: #0d2039;--line: #dce2e9;--muted: #637083;--green: #18794e;--green-soft: #e9f6ef;--red: #b42318;--red-soft: #fff0ee;--amber: #9a6700;--amber-soft: #fff6d8}*{box-sizing:border-box}body{margin:0;min-width:320px;background:#f5f7fa}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}h1,h2,p{margin-top:0}h1{margin-bottom:8px;font-size:clamp(1.65rem,3vw,2.35rem);letter-spacing:-.035em}h2{margin-bottom:8px;font-size:1.12rem;letter-spacing:-.015em}.topbar{height:64px;display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:18px;padding:0 32px;background:var(--navy);color:#fff}.brand{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none;font-weight:650}.brand__mark{display:grid;place-items:center;width:36px;height:36px;border:1px solid #6580a3;font-size:.75rem;letter-spacing:.08em}.topbar nav{display:flex;align-self:stretch}.topbar nav button{min-width:92px;padding:0 18px;border:0;border-bottom:3px solid transparent;color:#cfdae9;background:transparent}.topbar nav button:hover,.topbar nav button.active{color:#fff;border-bottom-color:#fff}.user-chip{justify-self:end;color:#cfdae9;font-size:.875rem}.logout-button{border:0;background:transparent;color:#cfdae9;text-decoration:underline;text-underline-offset:3px}main{width:min(1180px,calc(100% - 40px));margin:34px auto 64px}.cash-summary{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;margin-bottom:12px;border:1px solid var(--line);background:#fff}.cash-summary>div{display:grid;gap:7px;padding:15px 18px;border-right:1px solid var(--line)}.cash-summary>div:last-child{border:0}.cash-summary span{color:var(--muted);font-size:.78rem}.cash-summary strong{font-size:1.12rem;font-variant-numeric:tabular-nums}.quick-entry{padding:30px;border:1px solid #c7d0dc;background:#fff;box-shadow:0 12px 34px #142b4a14}.quick-entry__heading,.section-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.quick-entry__hint{color:var(--muted);font-size:.875rem}.eyebrow{margin-bottom:6px;color:#526277;font-size:.72rem;font-weight:750;letter-spacing:.11em;text-transform:uppercase}.command-line label,.login-form label{display:grid;gap:7px;color:#38465a;font-size:.88rem;font-weight:650}.command-line__controls{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:stretch}textarea,input{width:100%;border:1px solid #aeb9c8;border-radius:4px;background:#fff;color:#172033;outline:none}select{width:100%;height:44px;border:1px solid #aeb9c8;border-radius:4px;background:#fff;padding:0 10px}textarea{min-height:76px;padding:15px 16px;resize:vertical;font-size:1rem;line-height:1.45}input{height:44px;padding:0 12px}textarea:focus,input:focus{border-color:#315c91;box-shadow:0 0 0 3px #315c9121}.button{min-height:44px;padding:0 18px;border:1px solid transparent;border-radius:4px;font-weight:700}.button--primary{background:var(--navy);color:#fff}.button--primary:hover:not(:disabled){background:var(--navy-hover)}.button--secondary{border-color:#9cabbc;background:#fff;color:#233752}.button--quiet{background:transparent;color:#3e526c}.preview{margin-top:20px;padding-top:22px;border-top:1px solid var(--line)}.preview__summary{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}.direction,.status{display:inline-flex;padding:4px 8px;border-radius:999px;background:#eef1f5;color:#4d5b6d;font-size:.76rem;font-weight:750}.direction--income,.status--income{background:var(--green-soft);color:var(--green)}.direction--expense,.status--expense{background:var(--red-soft);color:var(--red)}.status--warning{background:var(--amber-soft);color:var(--amber)}.money{font-variant-numeric:tabular-nums;white-space:nowrap}.preview__summary .money{font-size:1.55rem}.date,.muted{color:var(--muted)}.classification{margin-top:22px}.field-label{display:block;margin-bottom:9px;color:#47566a;font-size:.82rem;font-weight:700}.choice-row{display:flex;flex-wrap:wrap;gap:8px}.choice{min-height:38px;padding:0 12px;border:1px solid #bec8d4;border-radius:4px;background:#fff;color:#334459}.choice--selected{border-color:var(--navy);background:#edf3fa;color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy)}.duplicate-warning{display:flex;justify-content:space-between;gap:16px;margin-top:18px;padding:13px 15px;background:var(--amber-soft);color:#6f4a00}.duplicate-warning label{display:flex;align-items:center;gap:8px}.duplicate-warning input{width:18px;height:18px}.details-toggle{margin:16px 0 0;padding:4px 0;border:0;background:transparent;color:#355a87;font-weight:650}.details-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 24px;margin:12px 0 0}.details-list div{padding:10px 0;border-bottom:1px solid var(--line)}.details-list dt{color:var(--muted);font-size:.78rem}.details-list dd{margin:5px 0 0}.details-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0 0}.details-fields label{display:grid;gap:6px;color:var(--muted);font-size:.78rem}.details-fields label:nth-child(4),.details-fields label:nth-child(5){grid-column:1 / -1}.manual-classifier{margin-bottom:0}.preview__actions{display:flex;gap:8px;margin-top:22px}.message{margin:14px 0 0;padding:10px 12px;font-size:.875rem}.message--error{background:var(--red-soft);color:var(--red)}.message--success{background:var(--green-soft);color:var(--green)}.panel{margin-top:22px;padding:24px;border:1px solid var(--line);background:#fff}.journal .section-heading{align-items:center}.journal-filters{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:12px;margin:0 0 16px}.journal-filters label{display:grid;gap:6px;color:var(--muted);font-size:.78rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{color:#59677a;font-size:.75rem;letter-spacing:.035em;text-align:left;text-transform:uppercase}th,td{padding:13px 10px;border-bottom:1px solid #e8ecf0;vertical-align:middle}.align-right{text-align:right}.direction-text--income{color:var(--green)}.direction-text--expense{color:var(--red)}.journal__mobile{display:none;list-style:none;margin:0;padding:0}.operation-card{display:grid;gap:9px;padding:16px 0;border-bottom:1px solid var(--line)}.operation-card>div{display:flex;justify-content:space-between;align-items:center;gap:12px}.operation-card>.money{font-size:1.1rem}.empty-state{margin:18px 0 0;padding:22px;background:#f7f9fb;color:var(--muted);text-align:center}.page-section>.section-heading{align-items:center;margin-bottom:20px}.import-box{display:flex;align-items:center;justify-content:space-between;gap:24px}.file-button{display:inline-flex;align-items:center;flex:none;cursor:pointer}.file-button input{position:absolute;width:1px;height:1px;opacity:0}.import-ready{border-left:4px solid var(--navy)}.import-meta,.import-final{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:18px 0;padding:16px 18px;background:#fff;border:1px solid var(--line)}.import-summary{grid-template-columns:repeat(3,1fr);margin-bottom:18px}.import-summary-title{margin:18px 0 8px;font-size:1rem}.import-summary .summary{min-height:86px}.import-final{position:sticky;bottom:12px;box-shadow:0 8px 28px #142b4a1f}.import-final p{margin:0}.import-rows{display:grid;gap:12px}.import-row{padding:18px;border:1px solid #cbd3dd;background:#fff}.import-row--reviewed{border-left:4px solid var(--green)}.import-row header,.import-row__facts,.row-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.import-row header{justify-content:space-between}.import-row__facts{margin:13px 0;color:var(--muted);font-size:.88rem}.import-row__facts strong{margin-left:auto;color:#172033}.row-issues{color:var(--amber);font-size:.84rem}.classifier-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}.classifier-fields label{display:grid;gap:5px;color:var(--muted);font-size:.78rem}.period-controls{padding-top:12px}.period-controls__body{display:grid;gap:14px;margin-top:10px;border-top:1px solid var(--line);padding-top:16px}.period-controls__body>label,.period-controls details label{display:grid;gap:6px;color:var(--muted);font-size:.82rem}.period-controls summary{margin-bottom:14px;color:#355a87;cursor:pointer;font-weight:650}.operation-menu{position:relative;font-size:.8rem}.operation-menu summary{color:#355a87;cursor:pointer}.operation-menu button{display:block;width:100%;margin-top:5px;padding:5px 8px;border:1px solid var(--line);background:#fff;text-align:left}.settings-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:14px}.settings-form h2,.settings-form .message{grid-column:1/-1}.settings-form label{display:grid;gap:6px;color:var(--muted);font-size:.82rem}.classifier-list{list-style:none;margin:20px 0 0;padding:0}.classifier-list li{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}.classifier-list li .status{margin-left:auto}.audit-list article{padding:15px 0;border-bottom:1px solid var(--line)}.audit-list article>div{display:flex;justify-content:space-between;gap:18px}.audit-list time,.audit-list p{color:var(--muted);font-size:.84rem}.audit-list p{margin:7px 0 0}.audit-list details{margin-top:10px}.audit-list summary{color:#355a87;cursor:pointer;font-size:.84rem}.audit-snapshots{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}.audit-snapshots section{min-width:0;padding:10px;background:#f7f9fb}.audit-snapshots pre{overflow:auto;white-space:pre-wrap;font-size:.72rem}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.report-filter{display:grid;grid-template-columns:180px 220px auto;align-items:end;gap:14px;margin-bottom:14px}.report-filter label{display:grid;gap:7px;color:#38465a;font-size:.82rem;font-weight:650}.report-filter__note{align-self:center;margin:0}.summary{min-height:108px;padding:18px;border:1px solid var(--line);background:#fff}.summary span{display:block;margin-bottom:20px;color:var(--muted);font-size:.82rem}.summary strong{font-size:clamp(1.15rem,2vw,1.48rem);font-variant-numeric:tabular-nums}.summary--income strong{color:var(--green)}.summary--expense strong{color:var(--red)}.largest-list{margin:12px 0 0;padding-left:24px}.largest-list li{padding:12px 4px;border-bottom:1px solid var(--line)}.largest-list li::marker{color:#8290a2;font-variant-numeric:tabular-nums}.largest-list li span{margin-left:6px}.largest-list strong{float:right;font-variant-numeric:tabular-nums}.login-page{min-height:calc(100vh - 68px);display:grid;place-items:center}.login-form{width:min(430px,100%);padding:32px;border:1px solid #cbd3dd;background:#fff;box-shadow:0 14px 42px #142b4a1a}.login-form label{margin-top:18px}.login-form .button{width:100%;margin-top:22px}@media(max-width:760px){.topbar{height:auto;grid-template-columns:1fr auto auto;padding:12px 16px 0;gap:8px 12px}.brand>span:last-child,.user-chip{font-size:.8rem}.topbar nav{grid-column:1 / -1;order:3;overflow-x:auto}.topbar nav button{min-width:0;flex:1;min-height:45px;padding:0 13px}main{width:min(100% - 24px,680px);margin-top:18px}.quick-entry,.panel,.login-form{padding:18px}.quick-entry__heading{align-items:flex-start}.quick-entry__hint{max-width:120px;text-align:right}.command-line__controls{grid-template-columns:1fr}.command-line__controls .button{width:100%}.preview__summary .money{width:100%;order:3}.choice{width:100%;text-align:left}.duplicate-warning,.import-box{align-items:stretch;flex-direction:column}.details-list,.details-fields{grid-template-columns:1fr}.details-fields label:nth-child(4),.details-fields label:nth-child(5){grid-column:auto}.preview__actions{flex-direction:column}.journal__desktop{display:none}.journal__mobile{display:block}.journal-filters,.audit-snapshots{grid-template-columns:1fr}.summary-grid,.import-summary{grid-template-columns:repeat(2,1fr)}.cash-summary{grid-template-columns:1fr 1fr}.cash-summary>div:nth-child(2){border-right:0}.cash-summary>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.report-filter,.classifier-fields,.settings-form{grid-template-columns:1fr}.import-meta,.import-final{align-items:stretch;flex-direction:column}.import-final .button{width:100%}.page-section>.section-heading{align-items:flex-start}}@media(max-width:410px){.summary-grid{grid-template-columns:1fr}.brand>span:last-child{display:none}.largest-list strong{float:none;display:block;margin:6px 0 0 6px}}
