:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#e7edf9;background:#0b1120;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}.boot{min-height:100vh;display:grid;place-items:center;color:#94a3b8}.shell{min-height:100vh;display:flex}.sidebar{width:228px;flex:0 0 228px;background:#101829;border-right:1px solid #25304a;padding:29px 14px;display:flex;flex-direction:column;gap:24px;position:sticky;top:0;height:100vh}.brand{padding:0 11px}.brand h1{font-size:25px;letter-spacing:-1.1px;color:#fafafa;font-weight:800}.brand p{font-size:11px;margin-top:5px;color:#8999b0;letter-spacing:.04em}.nav{display:grid;gap:6px}.nav button{display:flex;align-items:center;gap:12px;text-align:left;border:0;background:none;color:#9aacc5;border-radius:10px;padding:12px 13px;width:100%;font-weight:600;font-size:13px}.nav button:hover,.nav button.active{color:#f5f9ff;background:#1b2c45}.nav button.active{box-shadow:inset 3px 0 #74a9ff}.nav .ico{font-size:17px;width:20px;text-align:center}.sidetip{border:1px solid #2a3952;background:#152137;padding:13px;border-radius:12px;color:#9fb1ca;line-height:1.55;font-size:12px;margin-top:auto}.sidetip strong{display:block;color:#f0f5ff;margin-bottom:5px}.main{width:min(100%,1700px);margin:0 auto;min-width:0;flex:1;padding:29px clamp(16px,3vw,46px) 50px}.topbar,.heading,.sectionbar,.table-headline{display:flex;align-items:center;justify-content:space-between;gap:14px}.topbar{margin-bottom:32px}.eyebrow{color:#91a3bd;font-size:12px}.topbar h2{font-size:26px;margin-top:6px;letter-spacing:-.7px}.avatar{background:#28364d;border:1px solid #425472;color:#c5dcff;border-radius:100%;font-weight:700;width:41px;height:41px;display:grid;place-items:center}.tag{padding:7px 10px;border-radius:999px;font-size:11px;font-weight:700;background:#192a44;color:#a7c9fe}.tag.warn{color:#ffdca1;background:#4a3119}.notice{padding:12px 14px;color:#b6c8e2;background:#17243a;border:1px solid #30415d;border-radius:10px;font-size:12px;margin-bottom:21px;line-height:1.5}.heading{margin-bottom:19px;align-items:flex-start}.heading h3{font-size:22px;letter-spacing:-.5px}.subtext{font-size:13px;color:#94a3b8;margin-top:6px}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.btn{border:1px solid #33435b;background:#1d2a3d;border-radius:9px;padding:10px 13px;font-size:12px;font-weight:700;color:#e6efff;white-space:nowrap}.btn:hover{background:#30435e}.btn.primary{border-color:#6796ea;background:#3869bd;color:#fff}.btn.primary:hover{background:#4a7bcf}.btn.ghost{background:transparent}.btn.danger{color:#ffb9b9;border-color:#78404a}.year-nav{display:flex;align-items:center;gap:8px;border:1px solid #35445c;border-radius:10px;padding:3px}.year-nav button{background:none;border:0;color:#b3c4da;font-weight:700;padding:5px 10px}.year-nav strong{font-size:13px;min-width:48px;text-align:center}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:23px}.card,.panel{border:1px solid #2a3952;border-radius:13px;background:#121e30}.card{padding:19px;min-height:129px;display:flex;flex-direction:column;gap:12px}.card .label{color:#95a8c2;font-size:12px;display:flex;justify-content:space-between;gap:6px}.card .value{font-size:clamp(18px,2vw,27px);letter-spacing:-.7px;font-weight:800;font-variant-numeric:tabular-nums}.card .hint{font-size:11px;color:#8b9bb4}.positive{color:#63d9a7!important}.negative{color:#ff8c91!important}.muted{color:#8b9bb4}.panel{overflow:hidden}.table-headline{padding:18px 19px;border-bottom:1px solid #26354e}.table-headline strong{font-size:14px}.table-headline span{font-size:12px;color:#91a3bd}.table-wrap{overflow-x:auto;max-width:100%;scrollbar-color:#53617a #131e30}.budget-table{border-collapse:separate;border-spacing:0;width:100%;min-width:1110px;table-layout:fixed}.budget-table th,.budget-table td{border-bottom:1px solid #223149;border-right:1px solid #223149;height:45px;padding:7px 8px;text-align:right;white-space:nowrap;font-size:12px}.budget-table th{font-size:11px;font-weight:700;color:#a5b5cc;background:#172339;position:sticky;top:0;z-index:2}.budget-table .sticky{position:sticky;left:0;z-index:3;box-shadow:5px 0 12px #0d1627bd;text-align:left;width:222px;min-width:222px;max-width:222px}.budget-table th.sticky{z-index:5;background:#1b2b42}.budget-table td.sticky{background:#121e30}.budget-table .month-head{cursor:pointer;min-width:76px}.budget-table .month-head.selected{background:#284674;color:#fff}.budget-table td.month-current{background:#16283e}.budget-table tr:hover td:not(.group-cell){background:#20304a}.budget-table tr:hover td.sticky{background:#20304a}.budget-table .group-row td{background:#17283e;color:#c3d4ec;font-weight:800;text-transform:uppercase;letter-spacing:.065em;font-size:10px;height:35px}.budget-table .group-row td.sticky{background:#17283e}.budget-table .group-row.income td{color:#74ddb5}.budget-table .summary-row td{font-weight:800;background:#1c3048}.budget-table .summary-row td.sticky{background:#1c3048}.budget-table .summary-row.remain td,.budget-table .summary-row.remain td.sticky{background:#243952}.cell-btn{width:100%;height:29px;text-align:right;display:block;border:1px solid transparent;border-radius:6px;background:transparent;color:#e3eeff;font-size:11px;font-variant-numeric:tabular-nums;padding:2px 3px;position:relative}.cell-btn:hover,.cell-btn:focus-visible{background:#294c71;border-color:#4c83c2;outline:none}.cell-btn .dot{position:absolute;top:1px;right:0;background:#60d6b8;width:4px;height:4px;border-radius:50%}.cell-btn.zero{color:#64778f}.item-name{display:flex;align-items:center;gap:7px;overflow:hidden;text-overflow:ellipsis}.item-name span:first-child{overflow:hidden;text-overflow:ellipsis}.item-actions{margin-left:auto;opacity:0;font-size:11px;background:transparent;border:0;color:#b7c9e6;padding:4px 6px}.budget-table tr:hover .item-actions,.item-actions:focus-visible{opacity:1}.table-footer{padding:14px 18px;display:flex;justify-content:space-between;gap:10px;color:#8fa2bc;font-size:11px;flex-wrap:wrap}.legend{display:flex;gap:13px;align-items:center}.legend i{display:inline-block;width:7px;height:7px;background:#60d6b8;border-radius:100%;margin-right:4px}.month-pills{display:flex;gap:7px;overflow-x:auto;padding-bottom:12px;margin-bottom:9px}.pill{border:1px solid #34455f;padding:8px 11px;border-radius:8px;background:#172439;color:#abbcd5;font-weight:700;font-size:11px}.pill.active{border-color:#6c9ff5;background:#23436d;color:#fff}.extras{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:20px}.extras .panel{padding:20px}.extras h4{font-size:14px;margin:0 0 15px}.quick-links{display:flex;gap:9px;flex-wrap:wrap}.quick-link{border:1px solid #33465f;background:#1c2c43;padding:10px 13px;border-radius:9px;font-size:12px;font-weight:650}.quick-link:hover{background:#2f4766}.statsline{display:flex;justify-content:space-between;gap:9px;margin:12px 0;color:#a7b9d0;font-size:12px}.statsline b{color:#ecf3ff}.empty{padding:35px 15px;text-align:center;color:#a0b1ca}.empty h3{color:#f4f7fe;margin-bottom:9px}.dialog-shade{position:fixed;inset:0;background:#050911d9;display:grid;place-items:center;padding:15px;z-index:100;overflow:auto}.dialog{max-height:min(90vh,900px);overflow:auto;width:min(100%,510px);background:#141f32;border:1px solid #3a4d68;border-radius:16px;box-shadow:0 25px 70px #0008;padding:24px}.dialog.wide{width:min(100%,760px)}.dialog h3{font-size:20px;margin-bottom:6px}.dialog .desc{color:#98a9c0;font-size:12px;margin-bottom:20px;line-height:1.6}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.field{display:grid;gap:6px;margin-bottom:16px}.field.full{grid-column:1/-1}.field label{font-size:12px;color:#b5c6dc;font-weight:650}.field input,.field select,.field textarea{width:100%;border:1px solid #354863;border-radius:9px;padding:11px;background:#0d1828;color:#f0f5ff;font-size:13px;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:#76a9fe}.field input[type=checkbox]{width:auto}.field textarea{min-height:68px;resize:vertical}.form-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;margin-top:8px}.inline-check{display:flex;align-items:center;gap:9px;font-size:12px;color:#b8c8dd}.inline-check input{accent-color:#508bdf}.danger-zone{margin-right:auto}.hint{font-size:12px;color:#a4b5ca;line-height:1.6}.info{border:1px solid #394b61;border-radius:9px;background:#1c2c43;padding:11px;margin-bottom:16px;color:#c1d3eb;font-size:12px;line-height:1.6}.error{color:#ffc1c1;background:#48242a;border-color:#994a59}.import-table{width:100%;border-collapse:collapse;font-size:12px}.import-table th,.import-table td{padding:9px;border-bottom:1px solid #2b3a51;text-align:left}.import-table select{font-size:12px;padding:5px;background:#0d1828;color:#fff;border:1px solid #3a4d68;border-radius:6px}.import-scroll{max-height:300px;overflow:auto}.toast{position:fixed;bottom:18px;right:18px;background:#25466d;color:#fff;border:1px solid #517cab;padding:14px 20px;border-radius:11px;font-size:12px;box-shadow:0 10px 36px #0008;z-index:130;max-width:320px}.login-bg{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(100%,420px);padding:30px;background:#142037;border:1px solid #3a4c65;border-radius:18px}.login-card h1{font-size:30px;letter-spacing:-1px}.login-card p{font-size:13px;color:#9db0ca;margin:12px 0 25px}.login-card button{width:100%}.logged{font-size:11px;color:#96b7db}.mobile-brand{display:none}.tools-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.toolbox{padding:20px}.toolbox h4{margin:0 0 7px;font-size:15px}.toolbox p{font-size:12px;color:#98acc5;line-height:1.55}.footer{text-align:center;padding:28px 0 0;color:#536a89;font-size:11px}@media(max-width:1110px){.cards{grid-template-columns:repeat(2,1fr)}.sidebar{width:195px;flex-basis:195px}.budget-table{min-width:1080px}}@media(max-width:750px){.sidebar{display:none}.main{padding:16px 12px 32px}.mobile-brand{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.mobile-brand strong{font-size:20px}.topbar{margin-bottom:18px}.topbar h2{font-size:20px}.heading{flex-direction:column;align-items:stretch}.heading h3{font-size:20px}.actions{gap:6px}.btn{font-size:11px;padding:9px}.cards{gap:8px;margin-bottom:15px}.card{padding:13px;min-height:112px}.card .value{font-size:19px}.card .hint{font-size:10px}.extras{grid-template-columns:1fr}.table-headline{padding:14px}.budget-table .sticky{width:155px;min-width:155px;max-width:155px}.budget-table{min-width:1000px}.formgrid{grid-template-columns:1fr}.tools-grid{grid-template-columns:1fr}.dialog{padding:19px}.topbar .tag{display:none}}@media(max-width:400px){.card .value{font-size:16px}.card .label{font-size:10px}.actions{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* Google OAuth primary login; email/password retained for owner recovery. */
.login-card .google-login{background:#f8fafc;border-color:#dee5ee;color:#1f2937;font-size:14px;font-weight:750;padding:13px 15px;width:100%}
.login-card .google-login:hover{background:#e5e7eb}
.login-backup{border-top:1px solid #354863;margin:18px 0 12px;padding-top:14px}
.login-backup summary{cursor:pointer;color:#b8cdf1;font-size:12px;font-weight:650;margin-bottom:12px}
.login-backup form{margin:13px 0 0}
.login-help{margin:12px 0 0!important;color:#91a5c2!important;font-size:11px!important}

/* Direct passkey sign-in on iPhone. Face ID is handled by the OS and never by page code. */
.login-card .faceid-login{background:#315fbb;border-color:#6796ea;color:#fff;font-size:14px;font-weight:750;padding:13px 15px;width:100%}
.login-card .faceid-login:hover{background:#4476d5}
.login-card .google-login{margin-top:13px}
.security-panel{padding:22px;max-width:780px}
.security-panel h4{font-size:16px;margin:0 0 11px}
.security-panel .hint{line-height:1.7}
.security-actions{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0 14px}
.security-small{margin-top:16px}
.security-section{border-top:1px solid #354762;margin-top:23px!important;padding-top:22px}
.passkey-list{display:grid;gap:9px}
.passkey-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 15px;border:1px solid #35445c;border-radius:10px;background:#18253a}
.passkey-row strong{font-size:13px}
.passkey-row .hint{margin-top:4px}
@media(max-width:750px){.security-panel{padding:16px}.security-actions .btn{white-space:normal}.passkey-row{align-items:flex-start}.login-card .faceid-login{font-size:13px}}
