/* JS Finances — a quiet, tactile interface. */
.brand{letter-spacing:-.7px;white-space:nowrap;gap:4px}.brand-mark{background-image:url(js-finances-icon-192-v2.png);border-radius:0;flex-shrink:0;width:62px;height:62px}.story .brand-mark{background-color:#f8f9f5;border-radius:8px}
:root{--paper:#f4f5ef;--line:#e2e7df;--radius:22px;--muted:#63746c;--shadow:0 4px 24px #193e2f06;--ease:cubic-bezier(.2,.7,.2,1)}
.ui-icon{width:21px;height:21px;flex-shrink:0;vertical-align:middle}
.expense-filters select{min-height:46px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:#f7f9f4;color:var(--green);font:inherit}.expense-filters select:focus-visible{outline:3px solid #b99c42;outline-offset:2px}
.expense-filters{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) auto;gap:14px;align-items:end;margin:18px 0 8px}.expense-filters label{display:grid;gap:7px;font-size:13px;min-width:0}.expense-filters select{width:100%;min-width:0}.expense-filters p{margin:0;grid-column:1/-1}@media(max-width:700px){.expense-filters{grid-template-columns:minmax(0,1fr)}.expense-filters .button{justify-self:start}}
.app-body{background:radial-gradient(ellipse at 85% 0,#e7edde 0,transparent 42%),var(--paper)}
.app-header{background:#ffffffed;border-bottom-color:#dde5db;position:relative;z-index:5;padding:18px 4vw}
.app-header .brand{font-size:29px}.app-header .brand-mark{width:60px;height:60px}.app-header nav a{transition:background .18s,color .18s}.app-header nav a:hover{background:#f0f4eb}
@media(max-width:699px){.app-header .brand,.mobile-brand .brand{font-size:24px}.app-header .brand-mark,.mobile-brand .brand-mark{width:52px;height:52px}}
.app-main{max-width:1360px;padding-top:38px}.finance-heading{margin-bottom:22px;gap:20px}.finance-heading h1{font-size:clamp(34px,4vw,50px);font-weight:600;letter-spacing:-2px;margin:8px 0 10px}.heading-dot{color:#7f9853}.page-subtitle{font-size:14px;max-width:480px;margin:0;line-height:1.65}.eyebrow.dark{font-size:10px;letter-spacing:2.2px;color:#687a5b}
.month-form{padding:7px;background:#ffffffc9;border:1px solid var(--line);border-radius:15px;gap:7px;box-shadow:var(--shadow)}.month-form label{padding-left:8px;color:var(--muted);font-size:12px}.month-form input{border:0;background:transparent;font-size:13px;min-height:40px;padding:6px;max-width:190px}.month-form .button{min-height:40px;padding:8px 13px;background:#edf2e7;border:0;font-size:12px}
.finance-nav{flex-wrap:wrap;gap:7px;padding:0 0 22px;margin:0 0 5px;overflow:visible}.finance-nav a{display:flex;align-items:center;gap:7px;border-radius:11px;padding:10px 12px;font-size:12px;background:#ffffffa8;border-color:transparent;transition:background .2s,transform .2s,box-shadow .2s}.finance-nav .ui-icon{width:17px;height:17px}.finance-nav a:hover{background:white;transform:translateY(-2px);box-shadow:0 4px 12px #173c3010}.finance-nav a[aria-current]{background:var(--green);box-shadow:0 4px 10px #1d564821;color:white}
.consolidated{position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:row;align-items:center;justify-content:space-between;background:linear-gradient(115deg,#123e32,#235c48);border:1px solid #296551;box-shadow:0 16px 32px #123e3214;padding:36px 40px;border-radius:26px;margin-bottom:20px;min-height:260px}.consolidated:after{content:"";position:absolute;width:430px;height:430px;border:1px solid #e2edc415;border-radius:50%;right:-100px;top:-110px;z-index:-1;box-shadow:0 0 0 54px #e2edc408,0 0 0 108px #e2edc406}.balance-copy{max-width:650px;position:relative;z-index:1}.balance-label{font-size:13px;color:#d4e6d2;display:flex;gap:9px;align-items:center}.balance-label:before{content:"";height:7px;width:7px;background:#dce9a6;border-radius:50%}.consolidated strong{display:block;font-size:clamp(34px,4.8vw,58px);font-weight:550;letter-spacing:-2px;margin:10px 0}.consolidated small{display:block;max-width:465px;line-height:1.7;font-size:12px;color:#bfd4c6}.hero-actions{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-top:25px}.hero-actions .button{gap:8px;border-radius:11px;font-size:13px;min-height:43px;padding:10px 16px;background:#e0ecaf}.hero-link{display:flex;gap:12px;align-items:center;color:#e0e9df;font-size:13px;text-decoration:none}.hero-link:hover{text-decoration:underline}.balance-orbit{position:relative;width:176px;height:176px;border:21px solid #abc98a;border-right-color:#658e6e;border-bottom-color:#d9e7ad;border-radius:50%;flex-shrink:0;margin:0 15px 0 35px;transform:rotate(-25deg);box-shadow:0 0 0 12px #ffffff05}.orbit-core{display:grid;place-items:center;height:100%;transform:rotate(25deg)}.orbit-core .ui-icon{width:45px;height:45px;color:#dce9bd;stroke-width:1}.orbit-label{position:absolute;right:-38px;bottom:-12px;padding:7px 13px;border:1px solid #678c65;background:#244d3c;color:#e0edbb;border-radius:10px;transform:rotate(25deg);font-size:12px;letter-spacing:1px}
.quick-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:26px}.quick-actions>a{display:flex;align-items:center;gap:12px;text-decoration:none;background:#ffffffa8;border:1px solid var(--line);border-radius:16px;padding:16px;transition:transform .2s,background .2s,box-shadow .2s;font-weight:600;font-size:13px}.quick-actions>a>span:nth-child(2){flex:1}.quick-actions small{display:block;font-size:11px;font-weight:400;color:var(--muted);margin-top:3px}.quick-actions>a>.ui-icon{width:16px;color:#7f917e}.action-icon{width:39px;height:39px;display:grid;place-items:center;border-radius:12px;background:#edf2e6;color:var(--green)}.quick-actions>a:hover{transform:translateY(-3px);background:white;box-shadow:0 9px 18px #1d56480c}
.surface{box-shadow:var(--shadow);border-color:#e3e8de}.metric-grid{gap:14px;margin-bottom:24px}.metric{position:relative;display:block;text-decoration:none;padding:23px;transition:transform .2s,box-shadow .2s,border-color .2s}.metric:hover{transform:translateY(-3px);border-color:#b6c9af;box-shadow:0 12px 26px #20432d0b}.metric-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.metric-top>.ui-icon{width:15px;height:15px;color:#8e9b8c}.metric-icon{width:34px;height:34px;border-radius:10px;background:#edf2e7;color:#3f694e;display:grid;place-items:center}.metric-expense .metric-icon{background:#f8eee6;color:#af6a47}.metric-monthly .metric-icon{background:#f1efe3;color:#8e8246}.metric h2{font-size:12px;margin-bottom:8px;font-weight:500}.metric strong{font-size:26px;letter-spacing:-.7px;font-variant-numeric:tabular-nums}.surface h2{font-weight:600}.info-grid>.surface{padding:28px}.amount-line{padding:15px 0}.amount-line strong{font-weight:550;font-variant-numeric:tabular-nums}
.empty{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;min-height:185px;background:linear-gradient(145deg,#fbfcf8,#f1f4eb);border:1px dashed #cdd8c5;border-radius:18px;padding:30px;max-width:100%;margin:20px 0;font-size:13px}.empty:before{content:"";width:42px;height:42px;border:10px solid #c7d5ab;border-radius:50%;border-right-color:#e6ecdb;box-shadow:0 0 0 10px #eaf0e1}.empty-action{border:0;background:transparent;color:var(--green);font-weight:600;text-decoration:underline;text-underline-offset:4px;padding:5px 10px;min-height:40px}
.editor{overflow:hidden;padding:0!important;border-radius:18px}.editor>summary{display:flex;align-items:center;gap:12px;padding:21px 25px;list-style:none;min-height:66px;font-size:14px}.editor>summary::-webkit-details-marker{display:none}.editor>summary:before{content:"+";font-size:23px;font-weight:400;width:30px;height:30px;display:grid;place-items:center;border-radius:9px;background:#edf2e5;line-height:1}.editor[open]>summary{border-bottom:1px solid var(--line)}.editor[open]>summary:before{content:"−"}.editor>.stack-form{padding:25px;margin-top:0}.stack-form>label,.inline-form>label{color:#53685b;font-size:12px;letter-spacing:.1px}.stack-form input:not([type=checkbox]),.stack-form select,.inline-form input:not([type=checkbox]):not([type=hidden]),.inline-form select{border:1px solid #dce3d7;border-radius:11px;min-height:48px;padding:11px 13px;background:#fbfcf9;color:var(--ink);font-size:15px;max-width:100%;min-width:0;transition:background .2s,box-shadow .2s,border-color .2s}.stack-form input:focus,.stack-form select:focus,.inline-form input:focus{background:white;border-color:#789a6f;box-shadow:0 0 0 4px #1d564809}.form-grid>.button{align-self:end;justify-self:start;min-width:170px}.stack-form .hint.span-all{padding:14px 16px;background:#f3f6ed;border-radius:10px;font-size:12px}.button{transition:transform .18s,box-shadow .18s,background .18s;gap:10px}.button:hover{transform:translateY(-1px)}.button:active{transform:translateY(1px)}.button.primary{box-shadow:0 4px 9px #1d564815}.button.ghost:hover{background:#eef3e8}.check{accent-color:var(--green)}[hidden]{display:none!important}
.record{transition:border-color .2s,box-shadow .2s}.record:hover{border-color:#bacdb1}.record h2{font-size:19px}.record-date{display:inline-block;background:#f2f5ee;border-radius:7px;padding:4px 8px;font-size:11px}.record-actions .button{min-height:39px;font-size:12px;padding:8px 12px}.record-search{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:white;border-radius:13px;padding:7px 14px;margin:20px 0 10px;max-width:480px}.record-search input{border:0;background:transparent;min-height:36px;min-width:0;width:100%;outline-offset:2px;font-size:14px}.search-feedback{color:var(--muted);font-size:12px;min-height:18px}
.rate-card{position:relative;transition:transform .2s,border-color .2s,background .2s}.rate-card:hover{transform:translateY(-3px);border-color:#a4bf8d;background:#f5f9ee}.rate-card span{font-weight:600;letter-spacing:.6px;font-size:11px}.rate-card strong{font-weight:550;font-variant-numeric:tabular-nums;font-size:26px}.rate-card.is-selected{border-color:#78985e;background:#edf4e3;box-shadow:inset 0 0 0 1px #78985e}.module-tags{gap:8px;margin:18px 0}.module-tags a{padding:9px 14px;font-size:12px;background:#f6f8f1;transition:background .2s}.module-tags a:hover,.module-tags a[aria-current]{background:var(--green);color:white;border-color:var(--green)}.line-chart{background:repeating-linear-gradient(to top,transparent 0,transparent calc(25% - 1px),#e8eee2 25%);border-radius:10px;padding:8px 0;overflow:visible}.line-chart polyline{stroke:#347657;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.table-scroll{border:1px solid #e5eadd;border-radius:13px}thead{background:#f3f6ed}tbody tr{transition:background .15s}tbody tr:hover{background:#f4f8ef}th,td{padding:16px 13px;font-variant-numeric:tabular-nums}.alert{box-shadow:var(--shadow)}
.auth-panel{background:radial-gradient(ellipse at top right,#eaf0df,transparent 60%)}.story{background:linear-gradient(145deg,#123f32,#28634e)}.story:after{content:"";position:absolute;width:500px;height:500px;bottom:-340px;right:-150px;border-radius:50%;border:1px solid #d7e5b42e;box-shadow:0 0 0 50px #d7e5b408,0 0 0 100px #d7e5b408;pointer-events:none}.auth-card h2{letter-spacing:-1.4px}.auth-card .eyebrow{color:#527247}
@media(min-width:1100px){.finance-nav{margin-bottom:12px}.finance-nav a{flex:1;justify-content:center;padding:11px 8px}.app-main{padding-left:46px;padding-right:46px}.consolidated{padding:38px 44px}.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){.balance-orbit{width:120px;height:120px;border-width:15px;margin-right:8px;margin-left:20px}.quick-actions{grid-template-columns:1fr}.quick-actions>a{padding:13px 16px}.quick-actions small{display:inline;margin-left:10px}.consolidated{padding:28px;min-height:245px}.finance-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}.finance-nav a{flex-direction:column;justify-content:center;text-align:center;gap:7px;padding:12px 3px;font-size:10px;white-space:normal;line-height:1.3}.finance-nav .ui-icon{width:20px;height:20px}.finance-heading{align-items:flex-start}.month-form{margin-top:6px}.metric{padding:20px}}
@media(max-width:480px){.app-main{padding:25px 16px 48px}.finance-heading h1{font-size:35px}.page-subtitle{font-size:13px}.month-form{width:100%;justify-content:space-between}.finance-heading{gap:14px}.finance-nav{margin-top:2px}.consolidated{padding:25px 22px;min-height:270px}.balance-orbit{display:none}.consolidated strong{font-size:38px}.consolidated small{font-size:11px}.hero-actions{gap:20px}.quick-actions small{display:block;margin-left:0}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.metric{padding:16px}.metric strong{font-size:21px}.metric h2{font-size:11px;line-height:1.4}.metric-top{margin-bottom:14px}.metric-icon{width:30px;height:30px}.info-grid{gap:16px}.info-grid>.surface{padding:22px}.surface{padding:22px}.editor>.stack-form{padding:20px}.finance-nav a{font-size:9px}.rate-card{padding:16px}.rate-card strong{font-size:24px}.auth-panel{padding:22px}}
@media(prefers-reduced-motion:no-preference){.app-main{animation:studio-in .4s var(--ease) both}.consolidated,.quick-actions,.metric-grid{animation:studio-in .5s var(--ease) both}.metric-grid{animation-delay:.06s}@keyframes studio-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}}
.table-hint{font-size:12px;color:var(--muted);margin:10px 0}
@media screen{.table-scroll{max-width:100%;overscroll-behavior-x:contain;scrollbar-width:thin}.table-scroll table{min-width:580px}.table-scroll td:first-child,.table-scroll td:last-child{white-space:nowrap}.table-scroll td{overflow-wrap:normal}.table-scroll:focus-visible{outline:3px solid #b99c42;outline-offset:3px}}
.finance-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.expense-filter-menu{position:relative;z-index:8}.expense-filter-menu>summary{list-style:none;display:flex;align-items:center;gap:7px;min-height:48px;padding:10px 14px;cursor:pointer;background:white}.expense-filter-menu>summary::-webkit-details-marker{display:none}.expense-filter-menu .expense-filters{position:absolute;right:0;top:calc(100% + 8px);width:340px;max-width:calc(100vw - 32px);display:grid;grid-template-columns:minmax(0,1fr);padding:20px;margin:0;box-shadow:0 16px 45px #173c3026;border:1px solid var(--line)}
.expense-list{gap:8px}.expense-list>.expense-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px 14px;padding:14px 18px;margin:0;border-radius:14px}.expense-overview{display:grid;grid-template-columns:minmax(140px,1fr) minmax(90px,130px) 90px 130px;align-items:center;gap:14px;min-width:0}.expense-overview h2{font-size:15px;line-height:1.35;margin:0;overflow-wrap:anywhere}.expense-overview time{font-size:12px;color:var(--muted);white-space:nowrap}.expense-overview>strong{font-size:15px;white-space:nowrap;text-align:right}.expense-category{font-size:11px;color:var(--green);background:#edf3e8;padding:4px 8px;border-radius:6px;width:fit-content;max-width:100%;overflow-wrap:anywhere}.expense-actions,.expense-detail{display:contents}.expense-actions>.button{font-size:12px;padding:6px 10px;min-height:34px}.expense-detail>summary{font-size:12px;color:var(--muted);cursor:pointer;padding:8px 2px;white-space:nowrap}.expense-detail-body{grid-column:1/-1;border-top:1px solid var(--line);padding:12px 0 0;display:flex;flex-wrap:wrap;gap:8px 24px;font-size:12px;color:var(--muted)}.expense-detail:not([open])>.expense-detail-body{display:none}.expense-detail-body p{margin:0}.expense-detail-body strong{font-size:12px}.expense-delete{flex-basis:100%}.expense-delete>summary{color:#a44343;cursor:pointer;width:fit-content}.expense-delete form{max-width:420px;padding:12px 0}.expense-detail>summary:focus-visible,.expense-filter-menu>summary:focus-visible{outline:3px solid #b99c42;outline-offset:3px}
@media(max-width:1000px){.expense-overview{grid-template-columns:minmax(0,1fr) auto;gap:5px 12px}.expense-overview h2{grid-column:1;grid-row:1}.expense-overview>strong{grid-column:2;grid-row:1}.expense-overview time{grid-column:2;grid-row:2;text-align:right}.expense-category{grid-column:1;grid-row:2}}
@media(max-width:480px){.finance-tools{width:100%;flex-wrap:nowrap;align-items:center}.finance-tools .month-form{flex:1;min-width:0;width:auto;margin:0;gap:3px}.finance-tools .month-form input{min-width:0;width:125px}.finance-tools .month-form label{display:none}.expense-filter-menu>summary{font-size:12px;padding:10px}.expense-filter-menu>summary .ui-icon{display:none}.expense-list>.expense-row{padding:12px;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px}.expense-overview{grid-column:1/-1}.expense-actions>.button{justify-self:start;padding:4px 8px;min-height:30px}.expense-detail>summary{justify-self:end}.expense-detail-body{gap:8px}}
/* Inline expense metadata; disclosure is reserved for delete confirmation. */
.category-layout .record-list{gap:10px;align-items:start}.category-layout .record{padding:14px 18px;margin:0;border-radius:14px;align-items:center;gap:12px}.category-layout .record>div:first-child{min-width:0}.category-layout .record h2{font-size:15px;line-height:1.35;margin:0}.category-layout .record-actions{align-items:center;gap:12px;margin:0}.category-layout .record-actions .button{min-height:34px;padding:6px 10px}.category-layout .record-actions summary{font-size:12px;color:#a44343;cursor:pointer}.category-layout .record-actions details[open]{flex-basis:100%;max-width:100%}.category-layout .record:has(details[open]) .record-actions{flex-basis:100%}.category-layout .record-actions select{max-width:100%}.category-layout .empty{grid-column:1/-1}@media(min-width:1000px){.category-layout .record-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:480px){.category-layout .record{padding:12px}.category-layout .record-actions{gap:10px}}
.reserve-layout .record-list{gap:10px}.reserve-layout .reserve-row{display:grid;grid-template-columns:minmax(180px,1.5fr) minmax(140px,1fr) minmax(175px,1.2fr) 70px 100px 65px;align-items:center;gap:12px 18px;padding:14px 22px;border-radius:14px;margin:0}.reserve-row h2{min-width:0;margin:0;font-size:15px;line-height:1.35}.reserve-row>strong{font-size:15px;white-space:nowrap;text-align:center}.reserve-history{font-size:13px;justify-self:center}.reserve-row>.button{font-size:12px;min-height:34px;padding:6px 10px;justify-self:center}.reserve-description-toggle{border:0;background:none;color:var(--muted);font:inherit;font-size:12px;padding:8px 0;cursor:pointer;justify-self:center;white-space:nowrap}.reserve-description-toggle span{display:inline-block;transition:transform .15s}.reserve-description-toggle[aria-expanded=true] span{transform:rotate(90deg)}.reserve-description-body{grid-column:1/-1;grid-row:2;min-width:0}.reserve-description-body[hidden],.reserve-description-body:empty{display:none}.reserve-description-body p{margin:0;padding:12px 0 0;border-top:1px solid var(--line);white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;color:var(--muted)}.reserve-delete{grid-column:6;grid-row:1;justify-self:center}.reserve-delete>summary{font-size:12px;color:#a44343;cursor:pointer;padding:8px 0}.reserve-delete[open]{grid-column:1/-1;grid-row:3;justify-self:stretch}.reserve-delete>form{max-width:480px}.reserve-row summary:focus-visible,.reserve-description-toggle:focus-visible{outline:3px solid #b99c42;outline-offset:3px}@media(max-width:1000px){.reserve-layout .reserve-row{grid-template-columns:minmax(0,1fr) auto auto;gap:10px 14px}.reserve-row h2{grid-column:1/3}.reserve-row>strong{grid-column:3}.reserve-history{grid-column:1;grid-row:2;justify-self:start}.reserve-row>.button{grid-column:2;grid-row:2}.reserve-description-toggle{grid-column:3;grid-row:2}.reserve-delete{grid-column:3;grid-row:3}.reserve-description-body{grid-row:4}.reserve-delete[open]{grid-row:5}}@media(max-width:480px){.reserve-layout .reserve-row{padding:12px;gap:8px}.reserve-row h2{grid-column:1/-1}.reserve-row>strong{grid-column:1/-1;text-align:left}.reserve-history{grid-column:1/-1;grid-row:3}.reserve-row>.button{grid-column:1;grid-row:4;justify-self:start}.reserve-description-toggle{grid-column:2;grid-row:4}.reserve-delete{grid-column:3;grid-row:4}.reserve-description-body{grid-row:5}.reserve-delete[open]{grid-row:6}}
.reserve-row>.reserve-tools{display:flex;align-items:center;justify-content:center;gap:8px;min-width:0}.reserve-tools .button{min-height:34px;padding:6px 10px;font-size:12px;white-space:nowrap}#reserve-panel{scroll-margin-top:24px}@media(max-width:1000px){.reserve-row>.reserve-tools{grid-column:1;grid-row:2;justify-content:flex-start}}@media(max-width:480px){.reserve-row>.reserve-tools{grid-column:1/-1;grid-row:3}}
@media(min-width:1001px){.reserve-layout .reserve-row{grid-template-columns:minmax(180px,1.4fr) minmax(185px,1.1fr) minmax(100px,.7fr) minmax(145px,1fr) 70px 65px;gap:12px 14px}.reserve-row>h2{grid-column:1;grid-row:1}.reserve-row>.reserve-tools{grid-column:2;grid-row:1}.reserve-description-toggle{grid-column:3;grid-row:1}.reserve-row>strong{grid-column:4;grid-row:1;justify-self:end;text-align:right}.reserve-row>.button{grid-column:5;grid-row:1}.reserve-delete{grid-column:6;grid-row:1}}
@media(min-width:1001px){.reserve-layout .reserve-row{grid-template-columns:minmax(170px,1.4fr) minmax(95px,.8fr) minmax(100px,.8fr) minmax(90px,.8fr) minmax(145px,1fr) 70px 65px}.reserve-row>.reserve-tools{display:contents}.reserve-tools>a:first-child{grid-column:2;grid-row:1;justify-self:center}.reserve-description-toggle{grid-column:3}.reserve-tools>a:last-child{grid-column:4;grid-row:1;justify-self:center}.reserve-row>strong{grid-column:5}.reserve-row>.button{grid-column:6}.reserve-delete{grid-column:7}.reserve-delete[open]{grid-column:1/-1}}
.budget-layout .budget-editor{padding:18px 22px;border-radius:14px}.budget-editor h2{font-size:16px;margin:0 0 16px}.budget-editor .form-grid{grid-template-columns:minmax(160px,1.2fr) minmax(130px,.8fr) minmax(150px,1fr) auto auto;align-items:end;gap:14px}.budget-editor .stack-form{margin:0}.budget-editor .stack-form input:not([type=checkbox]),.budget-editor .stack-form select{min-height:40px;padding:8px 10px;font-size:14px}.budget-editor .check{align-self:center}.budget-editor .form-grid>.button{min-width:0;min-height:40px;padding:8px 14px;font-size:13px}.budget-list{gap:10px}.budget-row{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(160px,1fr) minmax(150px,1fr) minmax(150px,1fr) auto;align-items:center;gap:14px 22px;padding:14px 22px;border-radius:14px}.budget-row h2{margin:0;font-size:15px;line-height:1.35}.budget-usage{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--muted)}.budget-usage progress{width:100%;min-width:0;height:8px;appearance:none;border:0;border-radius:8px;background:#e9ede6;overflow:hidden}.budget-usage progress::-webkit-progress-bar{background:#e9ede6}.budget-usage progress::-webkit-progress-value{background:var(--green)}.budget-usage progress::-moz-progress-bar{background:var(--green)}.budget-row.near progress::-webkit-progress-value{background:#c69231}.budget-row.over progress::-webkit-progress-value{background:#b95443}.budget-spent,.budget-limit{font-size:12px;color:var(--muted);text-align:right}.budget-row strong{display:block;color:var(--ink);font-size:15px;white-space:nowrap}.budget-remove>summary{font-size:12px;color:#a44343;cursor:pointer;padding:8px 0}.budget-remove[open]{grid-column:1/-1}.budget-remove .stack-form{max-width:400px;margin-top:12px}@media(max-width:1000px){.budget-editor .form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.budget-row{grid-template-columns:1fr 1fr}.budget-row h2{grid-column:1}.budget-usage{grid-column:2}.budget-spent,.budget-limit{text-align:left}.budget-remove{grid-column:1/-1}}@media(max-width:600px){.budget-editor .form-grid{grid-template-columns:1fr}.budget-layout .budget-editor,.budget-row{padding:14px}.budget-row{gap:12px}.budget-row strong{font-size:14px}}
.record-add-trigger{display:flex;align-items:center;width:100%;max-width:480px;min-height:52px;padding:12px 16px;margin:0 0 14px;border-radius:13px;font:inherit;font-size:14px;text-align:left;color:var(--green);cursor:pointer}.record-modal{width:calc(100% - 32px);max-width:760px;max-height:calc(100dvh - 32px);margin:auto;padding:24px;border:1px solid var(--line);border-radius:18px;background:#fff;color:var(--ink);box-shadow:0 24px 80px #142c3840;overflow:auto}.record-modal::backdrop{background:#142d285c;backdrop-filter:blur(3px)}.record-modal-header{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:20px}.record-modal-header h2{margin:0;font-size:20px}.record-modal .form-grid{margin:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.record-modal .form-grid .span-all{grid-column:1/-1}.record-modal .stack-form input:not([type=checkbox]):not([type=hidden]),.record-modal .stack-form select{min-height:42px;padding:9px 12px}.record-add-trigger:focus-visible{outline:3px solid #b99c42;outline-offset:3px}body:has(.record-modal[open]){overflow:hidden}@media(max-width:600px){.record-modal{padding:18px}.record-modal .form-grid{grid-template-columns:minmax(0,1fr)}.record-modal-header h2{font-size:17px}}
.record-toolbar{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0 0 18px}.record-toolbar>.record-search,.record-toolbar>.record-add-trigger{width:calc((100% - 24px)/2);max-width:480px;min-height:52px;margin:0;box-sizing:border-box}.record-toolbar>.record-add-trigger{margin-left:auto}.record-toolbar>.record-search{padding:7px 14px}@media(max-width:700px){.record-toolbar{flex-direction:column;gap:10px;align-items:stretch}.record-toolbar>.record-search,.record-toolbar>.record-add-trigger{width:100%;max-width:none;margin:0}}
.record-toolbar>.record-add-trigger{margin-left:0}.record-toolbar>.record-search{margin-left:auto}@media(max-width:700px){.record-toolbar>.record-search{margin-left:0}}
.category-main{display:flex;align-items:center;gap:10px}.category-drag{border:0;background:transparent;color:var(--muted);padding:6px;font-size:19px;cursor:grab;touch-action:none;flex-shrink:0}.category-drag:active{cursor:grabbing}.category-number{color:var(--muted);font-size:13px;min-width:22px;font-variant-numeric:tabular-nums}.category-main h2{flex:1}.category-row.is-dragging{outline:2px solid var(--green);background:#eff5eb;box-shadow:0 8px 18px #193e281a}.category-order-status{font-size:12px;margin:0}.category-drag:focus-visible{outline:2px solid var(--green);border-radius:6px}@media(min-width:1000px){.category-layout .record-list{grid-auto-flow:column}}@media(max-width:999px){.category-layout .record-list{grid-auto-flow:row}}
.expense-frequency{font-size:11px;color:var(--muted);white-space:nowrap}
.expense-overview{grid-template-columns:minmax(135px,1fr) 85px 165px minmax(85px,115px) 85px 120px;gap:12px}.expense-status{font-size:11px;border-radius:20px;padding:5px 9px;width:fit-content;white-space:nowrap}.expense-status.is-scheduled{color:#826327;background:#faf0d6}.expense-status.is-completed{color:#28654c;background:#e8f2eb}.expense-added{font-size:11px;color:var(--muted);white-space:nowrap}.expense-overview .expense-added time{font-size:11px}.expense-delete{display:contents}.expense-delete>summary{font-size:12px;white-space:nowrap;padding:8px 0}.expense-delete>form{grid-column:1/-1;border-top:1px solid var(--line);max-width:none}.expense-delete:not([open])>form{display:none}
@media(max-width:1150px){.expense-overview{grid-template-columns:minmax(130px,1fr) auto auto;gap:6px 12px}.expense-overview h2{grid-column:1;grid-row:1}.expense-status{grid-column:2;grid-row:1}.expense-overview>strong{grid-column:3;grid-row:1}.expense-added{grid-column:1;grid-row:2}.expense-overview .expense-added time{grid-column:auto;grid-row:auto}.expense-category{grid-column:2;grid-row:2}.expense-overview .expense-payment-date{grid-column:3;grid-row:2;text-align:right}}
@media(max-width:700px){.expense-list>.expense-row{grid-template-columns:minmax(0,1fr) auto;padding:12px;gap:8px}.expense-overview{grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px}.expense-overview h2{grid-column:1;grid-row:1}.expense-overview>strong{grid-column:2;grid-row:1}.expense-status{grid-column:1;grid-row:2}.expense-added{grid-column:1/-1;grid-row:3}.expense-category{grid-column:2;grid-row:2;justify-self:end}.expense-overview .expense-payment-date{grid-column:2;grid-row:4}.expense-actions>.button{grid-column:1;grid-row:2;justify-self:start}.expense-delete>summary{grid-column:2;grid-row:2;justify-self:end}}
.expense-overview{grid-template-columns:minmax(125px,1fr) 85px 75px 165px minmax(80px,110px) 85px 115px;gap:10px}
@media(max-width:1150px){.expense-overview{grid-template-columns:minmax(130px,1fr) auto auto}.expense-frequency{grid-column:2;grid-row:3}.expense-added{grid-column:1;grid-row:3}.expense-category{grid-column:1;grid-row:2}.expense-overview .expense-payment-date{grid-column:3;grid-row:2}}
@media(max-width:700px){.expense-overview{grid-template-columns:minmax(0,1fr) auto}.expense-frequency{grid-column:2;grid-row:3;text-align:right}.expense-added{grid-column:1/-1;grid-row:4}.expense-category{grid-column:2;grid-row:2}.expense-overview .expense-payment-date{grid-column:1;grid-row:3;text-align:left}}
@media(min-width:1151px){.expense-overview{grid-template-columns:minmax(130px,1.25fr) minmax(85px,.8fr) minmax(130px,1fr) minmax(165px,1.3fr) minmax(90px,.8fr) minmax(85px,.75fr) minmax(115px,.95fr);gap:14px}.expense-overview>.expense-status,.expense-overview>.expense-frequency,.expense-overview>.expense-added,.expense-overview>.expense-category,.expense-overview>.expense-payment-date{justify-self:center;text-align:center}.expense-overview>strong{justify-self:end}.expense-list>.expense-row{padding-inline:22px}}
.expense-overview>.expense-charge-date{font-size:11px}.expense-overview>.expense-state-text{font-family:inherit;font-size:11px;font-weight:400;color:var(--muted);white-space:nowrap}
@media(max-width:1000px){.expense-overview>.expense-charge-date{grid-column:2;grid-row:1;text-align:center}}
@media(max-width:700px){.expense-overview>.expense-charge-date{grid-column:1;grid-row:2}}
/* One shared, readable size for all secondary expense information. */
.expense-overview>.expense-frequency,.expense-overview>.expense-charge-date,.expense-overview>.expense-added,.expense-overview>.expense-added time,.expense-overview>.expense-category,.expense-overview>.expense-state-text{font-family:inherit;font-size:14px;font-weight:400;line-height:1.4}
@media(min-width:1151px){.expense-overview{grid-template-columns:minmax(115px,1.2fr) minmax(100px,.85fr) minmax(85px,.8fr) minmax(205px,1.4fr) minmax(100px,.9fr) minmax(95px,.85fr) minmax(115px,1fr);gap:10px}}
.income-row .expense-status.is-completed{background:#e3f3e8;color:#1b744d}.income-row .expense-category{background:#eaf3ed}.income-row .expense-overview>strong{color:#178258}
.income-row .expense-overview{grid-template-columns:minmax(110px,1.15fr) minmax(100px,.8fr) minmax(140px,1.05fr) minmax(205px,1.4fr) minmax(100px,.85fr) minmax(120px,.95fr)}
@media(max-width:1150px){.income-row .expense-overview{grid-template-columns:minmax(130px,1fr) auto auto}.income-row .expense-state-text{grid-column:2;grid-row:2;text-align:center}.income-row .expense-frequency{grid-column:3;grid-row:2}.income-row .expense-added{grid-column:1;grid-row:2}}
@media(max-width:700px){.income-row .expense-overview{grid-template-columns:minmax(0,1fr) auto}.income-row .expense-state-text{grid-column:2;grid-row:2;text-align:right}.income-row .expense-frequency{grid-column:1;grid-row:3;text-align:left}.income-row .expense-added{grid-column:1/-1;grid-row:4}}
/* Date and category retain the earlier compact badge treatment. */
.expense-overview>.expense-charge-date,.expense-overview>.expense-category{font-size:12px;font-weight:600;line-height:1.3}
@media print{.quick-actions,.hero-actions,.record-search,.search-feedback,.table-hint,.expense-filter-menu{display:none!important}.app-body{background:white}.surface{box-shadow:none}.app-main{animation:none}}

/* Dashboard: compact cards and session-only visual privacy. */
.dashboard-values .metric{display:grid;grid-template-columns:34px minmax(0,1fr) 15px;grid-template-rows:auto auto;align-items:center;gap:5px 14px;padding:20px 22px;min-height:100px}
.dashboard-values .metric-top{display:contents}.dashboard-values .metric-icon{grid-column:1;grid-row:1/3}
.dashboard-values .metric-top>.ui-icon{grid-column:3;grid-row:1/3}
.dashboard-values .metric h2{grid-column:2;grid-row:1;margin:0;font-size:12px;line-height:1.4}
.dashboard-values .metric strong{grid-column:2;grid-row:2;font-size:25px;line-height:1.25;overflow-wrap:anywhere}
.dashboard-visibility{min-height:46px;padding:10px 14px;font-size:12px;border-color:#c7d5c1;background:#eef3e8;color:var(--green);white-space:nowrap}
.dashboard-visibility[aria-pressed=true] .eye-slash{display:none}
.values-hidden strong,.values-hidden .budget-bar .hint{visibility:hidden;position:relative;user-select:none}
.values-hidden strong:after,.values-hidden .budget-bar .hint:after{content:'••••••';visibility:visible;position:absolute;left:0;top:0;letter-spacing:3px;color:var(--muted)}
.values-hidden .consolidated strong:after{color:#e0e9df}
.values-hidden .donut,.values-hidden progress{visibility:hidden}
.finance-tools .month-form{padding:5px 6px 5px 12px;gap:8px;border-radius:12px;background:#fff;border-color:#d8e2d3;box-shadow:0 3px 12px #193e2f05}
.finance-tools .month-form label{display:block;font-size:13px;font-weight:600;padding:0 3px;color:var(--green);cursor:pointer}
.finance-tools .month-form input[type=month]{font-family:inherit;font-size:15px;font-weight:600;color:var(--green);padding:7px 11px;min-height:36px;max-width:195px;border-radius:7px;background:#edf3e7;cursor:pointer}
.finance-tools .month-form .button{min-height:36px;border-radius:8px;background:var(--green);color:#fff;padding:7px 12px;font-size:12px}
.finance-tools .month-form input:focus-visible,.dashboard-visibility:focus-visible{outline:3px solid #b99c42;outline-offset:3px}
@media(max-width:700px){.finance-tools:has(.dashboard-visibility){flex-wrap:wrap}.dashboard-visibility{min-height:42px}.dashboard-values .metric-grid{grid-template-columns:1fr 1fr}.dashboard-values .metric{padding:16px;gap:5px 10px;grid-template-columns:30px minmax(0,1fr) 15px}.dashboard-values .metric strong{font-size:22px}}
@media(max-width:550px){.dashboard-values .metric-grid{grid-template-columns:1fr}.dashboard-values .metric{min-height:85px}.finance-tools .month-form input[type=month]{width:auto;min-width:0;flex:1}}
@media print{.dashboard-visibility{display:none!important}}
.email-verification-notice{display:flex;gap:12px 20px;align-items:center;justify-content:space-between;flex-wrap:wrap;font-size:13px;background:#faf3df;border:1px solid #ebdcae}.email-verification-notice>span{flex:1;min-width:220px}.email-verification-notice form{margin:0}.email-verification-notice .button{font-size:12px;white-space:nowrap}.account-security-form{max-width:480px}
.statement-compact .statement-transactions td,.statement-compact .statement-transactions th{padding:10px 9px;font-size:13px}.statement-compact .statement-transactions th.statement-value{text-align:right}.statement-compact .statement-value strong{font-size:13px}.statement-compact .direction-badge{font-size:12px;white-space:nowrap;padding:4px 7px;border-radius:5px}.statement-compact .income .direction-badge{color:#218052;background:#eaf4ee}.statement-compact .expense .direction-badge{color:#b64d49;background:#fbefec}
.statement-compact{padding:22px}.statement-compact h2{margin:0;font-size:20px}.statement-compact h3{margin:18px 0 8px;font-size:14px}.statement-compact table{table-layout:fixed;width:100%;border-collapse:collapse}.statement-compact th,.statement-compact td{padding:7px 9px;font-size:12px;vertical-align:top;overflow-wrap:anywhere}.statement-compact .statement-date{white-space:nowrap}.statement-compact .statement-value{text-align:right}.statement-value strong{font-size:12px;font-weight:600}.statement-value small{display:block;color:var(--muted);font-size:10px}.statement-compact .income .statement-value,.statement-compact .income .statement-sign,.statement-totals .income strong{color:#218052}.statement-compact .expense .statement-value,.statement-compact .expense .statement-sign,.statement-totals .expense strong{color:#b64d49}.statement-compact .statement-transactions tr:nth-child(even){background:#f8faf6}.statement-totals,.statement-general{background:#f1f5ed;margin:12px 0}.statement-totals span,.statement-general span{display:block;color:var(--muted);font-size:11px}.statement-totals strong,.statement-general strong{display:block;margin-top:5px;font-size:16px;font-weight:600}.statement-compact .statement-totals td,.statement-compact .statement-general td{text-align:left;padding:12px}.statement-note,.statement-status{font-size:11px;color:var(--muted)}.statement-inline-summary{display:flex;flex-wrap:wrap;gap:5px 20px;font-size:12px}.statement-inline-summary strong{font-size:12px;font-weight:550}.statement-compact .statement-status{color:#826327}@media(max-width:600px){.statement-compact{padding:12px;overflow-x:auto}.statement-compact table{min-width:540px}.statement-inline-summary{min-width:0}}
.projection-wealth-line{fill:none;stroke:#b18a36;stroke-width:2.5;stroke-dasharray:6 4;stroke-linejoin:round;vector-effect:non-scaling-stroke}.cash-legend:before{content:'';display:inline-block;width:16px;height:3px;background:#27744f;vertical-align:middle;margin-right:6px}.projection-combined .wealth-legend:before{background:none;border-top:3px dashed #b18a36;height:0}
.projection-combined [data-chart-flows]{flex-basis:100%;font-size:12px}.projection-combined .projection-legend{margin-top:12px;flex-wrap:wrap}.wealth-legend:before{content:'';display:inline-block;width:16px;height:3px;background:#27744f;vertical-align:middle;margin-right:6px}.projection-combined [data-tooltip-flows]{font-size:12px;margin-top:6px;white-space:normal;max-width:260px;line-height:1.5}.projection-combined .projection-axis{font-size:10px}.projection-combined .projection-income-bar{fill:#83b49a}.projection-combined .projection-expense-bar{fill:#d39a8a}
.projection-monthly{margin:20px 0 24px;padding-top:20px;border-top:1px solid var(--line)}.projection-monthly h3{font-size:16px;margin:0 0 10px}.projection-legend{display:flex;gap:20px;align-items:center;color:var(--muted);font-size:12px}.projection-legend .flow-income:before,.projection-legend .flow-expense:before{content:'';display:inline-block;width:9px;height:9px;margin-right:6px;border-radius:3px;background:#63a585}.projection-legend .flow-expense:before{background:#c98270}.projection-bars-scroll{overflow-x:auto;padding:40px 0 8px}.projection-bars{display:flex;gap:8px;min-width:100%}.projection-bar-month{flex:1 0 62px;position:relative;text-align:center;outline-offset:2px}.projection-bar-month>svg{height:140px;width:60px;display:block;margin:auto}.projection-bar-month>span{font-size:11px;color:var(--muted);white-space:nowrap}.projection-income-bar{fill:#63a585}.projection-expense-bar{fill:#c98270}.projection-bar-tip{display:none;position:absolute;bottom:40px;left:0;z-index:3;background:#fff;padding:9px 12px;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);font-size:12px;white-space:nowrap;text-align:left}.projection-bar-month:hover .projection-bar-tip,.projection-bar-month:focus .projection-bar-tip{display:block}.projection-bar-month:nth-last-child(-n+3) .projection-bar-tip{left:auto;right:0}.projection-bar-tip strong{font-size:12px;font-weight:550}
.projection-chart{margin:28px 0 24px}.projection-chart-readout{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}.projection-chart-readout>span{font-size:14px;color:var(--muted)}.projection-chart-readout>strong{font-size:25px;font-weight:550;font-variant-numeric:tabular-nums;color:var(--green)}.projection-chart>.hint{font-size:12px;margin:8px 0 14px}.projection-plot{position:relative;outline-offset:4px;border-radius:10px;touch-action:pan-y}.projection-plot:focus-visible{outline:2px solid #78985e}.projection-plot svg{width:100%;height:auto;display:block;overflow:visible}.projection-gridline{stroke:#e2e8df;stroke-width:1}.projection-axis{fill:var(--muted);font-size:12px;font-family:inherit;font-variant-numeric:tabular-nums}.projection-line{fill:none;stroke:#27744f;stroke-width:3;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.projection-guide{stroke:#70947c;stroke-dasharray:3 4;vector-effect:non-scaling-stroke}.projection-dot{fill:#27744f;stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}.projection-tooltip{position:absolute;pointer-events:none;background:#fff;border:1px solid #d8e4d5;border-radius:10px;padding:9px 12px;box-shadow:0 5px 18px #173c301c;white-space:nowrap;font-size:12px;z-index:2;max-width:calc(100% - 16px)}.projection-tooltip span{display:block;color:var(--muted);margin-bottom:3px}.projection-tooltip strong{font-size:15px;font-weight:550;color:var(--green);font-variant-numeric:tabular-nums}@media(max-width:600px){.projection-chart-readout>strong{font-size:21px}.projection-axis{font-size:18px}.projection-tooltip strong{font-size:13px}}
.rates-grid .rate-card{--quote-size:18px}
.rates-grid a.rate-card .rate-source,.rates-grid a.rate-card strong,.rates-grid a.rate-card strong span{font-family:inherit;font-size:var(--quote-size);font-weight:550;line-height:1.3;font-variant-numeric:tabular-nums;letter-spacing:0}
@media(max-width:700px){.rates-grid .rate-card{--quote-size:16px}}
.rates-grid .rate-card{flex-direction:row}
.asset-layout .record-list{gap:10px}.asset-layout .asset-row{display:grid;grid-template-columns:minmax(160px,1.4fr) minmax(120px,1fr) minmax(130px,1fr) auto auto;align-items:center;gap:12px 22px;padding:14px 22px;border-radius:14px;margin:0}
.asset-row h2{margin:0;font-size:15px;line-height:1.35;overflow-wrap:anywhere}.asset-row>strong{font-size:15px;text-align:right;white-space:nowrap}.asset-row>.button{font-size:12px;min-height:34px;padding:6px 10px}
.asset-notes-toggle{justify-self:center;border:0;background:none;color:var(--muted);font:inherit;font-size:13px;cursor:pointer;padding:8px 0;white-space:nowrap}.asset-notes-toggle span{display:inline-block;transition:transform .15s}.asset-notes-toggle[aria-expanded=true] span{transform:rotate(90deg)}
.asset-notes-body{grid-column:1/-1;grid-row:2;min-width:0}.asset-notes-body:empty{display:none}.asset-notes-body p{margin:0;padding:12px 0 0;border-top:1px solid var(--line);white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;color:var(--muted)}
.asset-delete{display:contents}.asset-delete>summary{font-size:12px;color:#a44343;cursor:pointer;padding:8px 0}.asset-delete>form{grid-column:1/-1;grid-row:3;margin:0;border-top:1px solid var(--line);padding-top:12px}.asset-delete:not([open])>form{display:none}.asset-notes-toggle:focus-visible,.asset-delete>summary:focus-visible{outline:3px solid #b99c42;outline-offset:3px}
.rates-grid{gap:10px}.rates-grid .rate-card{display:flex;align-items:center;justify-content:center;gap:12px;padding:16px 20px;min-height:65px;border-radius:14px}.rates-grid .rate-card span{font-size:14px;letter-spacing:0}.rates-grid .rate-card .rate-source{white-space:nowrap;color:var(--green)}.rates-grid .rate-card .rate-equals{font-weight:400;color:var(--muted)}.rates-grid .rate-card strong{font-size:18px;white-space:nowrap;line-height:1.3}.rates-grid .rate-card strong span{font-size:14px;color:var(--muted);font-weight:500}
@media(max-width:700px){.asset-layout .asset-row{grid-template-columns:minmax(0,1fr) auto auto;padding:12px;gap:8px 14px}.asset-row h2{grid-column:1/3}.asset-row>strong{grid-column:3;grid-row:1}.asset-notes-toggle{grid-column:1;grid-row:2;justify-self:start}.asset-row>.button{grid-column:2;grid-row:2}.asset-delete>summary{grid-column:3;grid-row:2}.asset-notes-body{grid-row:3}.asset-delete>form{grid-row:4}.rates-grid .rate-card{padding:14px 12px;gap:8px}.rates-grid .rate-card strong{font-size:16px}}
