*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{color:#e8e9ed;background:#0e0f13;font-family:system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.45}.app{min-height:100vh}.topbar{z-index:30;padding:calc(12px + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) 12px calc(16px + env(safe-area-inset-left));background:#0e0f13;border-bottom:1px solid #23252e;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.logo{color:#10b981;cursor:pointer;letter-spacing:.5px;font-size:19px;font-weight:700}.topbar .logo{flex:1}.user-menu{position:relative}.user-button{color:#9a9cab;white-space:nowrap;background:0 0;align-items:center;gap:4px;min-height:36px;padding:6px 8px;font-size:13px;font-weight:500;display:flex}.user-button[aria-expanded=true]{color:#e8e9ed}.user-button .icon{width:14px;height:14px}.menu{z-index:40;background:#171821;border:1px solid #23252e;border-radius:10px;min-width:160px;padding:4px;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #0006}.menu-item{color:#e8e9ed;text-align:left;background:0 0;align-items:center;gap:8px;width:100%;min-height:40px;padding:8px 10px;font-size:14px;font-weight:500;display:flex}.menu-item:hover{background:#23252e}.menu-item-current{color:#10b981;justify-content:space-between}.menu-heading{text-transform:uppercase;letter-spacing:.5px;color:#6b7080;padding:8px 10px 4px;font-size:11px;font-weight:600}.menu-divider{background:#23252e;height:1px;margin:4px 0}.menu-item-danger{color:#ff6b6b}.menu-item .icon{width:16px;height:16px}main{padding:16px calc(16px + env(safe-area-inset-right)) calc(40px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));max-width:720px;margin:0 auto}@media (width>=640px){.topbar{padding:calc(14px + env(safe-area-inset-top)) calc(22px + env(safe-area-inset-right)) 14px calc(22px + env(safe-area-inset-left))}.logo{font-size:22px}main{padding:24px calc(24px + env(safe-area-inset-right)) calc(48px + env(safe-area-inset-bottom)) calc(24px + env(safe-area-inset-left))}}h1{word-break:break-word;font-size:21px;font-weight:700;line-height:1.25}h2{margin:22px 0 10px;font-size:17px;font-weight:700;line-height:1.3}h2:first-child{margin-top:0}@media (width>=640px){h1{font-size:25px}h2{font-size:19px}}.center{flex-direction:column;align-items:center;gap:18px;padding-top:clamp(24px,10vh,96px);display:flex}.card{background:#171821;border:1px solid #23252e;border-radius:12px;flex-direction:column;gap:12px;width:100%;padding:18px;display:flex}.login-card{max-width:380px}@media (width>=640px){.card{padding:24px}}form{flex-direction:column;gap:10px;display:flex}label{color:#9a9cab;font-size:13px;display:block}input,select,textarea{color:#e8e9ed;background:#0e0f13;border:1px solid #2c2e3a;border-radius:8px;width:100%;padding:12px 13px;font-family:inherit;font-size:16px;line-height:20px}input:focus,select:focus,textarea:focus{border-color:#10b981;outline:none}input[type=date],input[type=datetime-local]{appearance:none;text-align:left;min-width:0;height:46px}input::-webkit-date-and-time-value{text-align:left;margin:0}button{color:#fff;cursor:pointer;background:#10b981;border:none;border-radius:8px;min-height:44px;padding:12px 16px;font-size:15px;font-weight:600}button:disabled{opacity:.5;cursor:default}button.link{color:#10b981;background:0 0;min-height:auto;padding:10px 8px;font-size:13px;font-weight:500}button.link.danger{color:#ff6b6b;background:0 0}.hint{color:#9a9cab;font-size:13px}.hint a{color:#10b981}.error{color:#ff6b6b;font-size:14px}.badge{color:#10b981;background:#10b98126;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:600;display:inline-block}.row-active{background:linear-gradient(90deg,#10b9812e,#10b9810d);border-color:#10b981;box-shadow:inset 3px 0 #10b981}.row-ended{opacity:.55}.collapsible>summary{cursor:pointer;justify-content:space-between;align-items:center;list-style:none;display:flex}.collapsible>summary::-webkit-details-marker{display:none}.collapsible{margin-top:22px}.collapsible>summary h2{margin:0}.collapsible[open]>summary{margin-bottom:10px}.collapsible-chevron{color:#9a9cab;width:20px;height:20px;transition:transform .15s}.collapsible[open] .collapsible-chevron{transform:rotate(180deg)}.modal-overlay{z-index:50;background:#0009;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}@media (width>=640px){.modal-overlay{align-items:center}}.modal{padding:18px 18px calc(18px + env(safe-area-inset-bottom));background:#171821;border:1px solid #23252e;border-radius:16px 16px 0 0;flex-direction:column;gap:12px;width:100%;max-width:480px;max-height:85vh;display:flex;overflow-y:auto}@media (width>=640px){.modal{border-radius:16px}}.modal-head{justify-content:space-between;align-items:center;display:flex}.modal-head h2{margin:0}label.checkbox{align-items:center;gap:8px;display:flex}label.checkbox input{width:auto}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 12px;margin:2px 0 16px;display:flex}.page-head h1,.page-head h2{flex:auto;min-width:0;margin:0}.head-actions{flex-wrap:wrap;gap:8px;display:flex}a.button{color:#fff;background:#10b981;border-radius:8px;align-items:center;min-height:44px;padding:10px 14px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}a.button.secondary,button.secondary{color:#e8e9ed;background:#171821;border:1px solid #2c2e3a}button.cta{width:100%;margin:6px 0 18px;padding:14px;font-size:17px;display:block}button.danger{background:#b03030}.back-link{color:#9a9cab;margin-bottom:10px;padding:4px 0;font-size:14px;text-decoration:none;display:inline-block}.back-link:hover{color:#10b981}.icon{vertical-align:-.125em;flex-shrink:0;width:1em;height:1em}.grid{grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));gap:12px;margin-bottom:20px;display:grid}.card-link{color:inherit;text-decoration:none;display:block}.card-link:hover,.card-link:active{border-color:#10b981}.card-title{word-break:break-word;margin-bottom:4px;font-size:16px;font-weight:600}.card-meta{color:#9aa0ae;align-items:center;gap:10px;margin-top:10px;font-size:13px;display:flex}.ptype-icon{color:#10b981;margin-right:4px}.stat-big{margin:6px 0 2px;font-size:clamp(24px,7vw,30px);font-weight:700}.stat-unit{color:#9aa0ae;font-size:15px;font-weight:400}.stat-cost{color:#10b981;margin-top:8px;font-size:18px;font-weight:600}.warning{color:#e2b93b;margin-top:6px;font-size:13px}.delta{color:#9aa0ae;font-size:13px;font-weight:400}.delta.warning{color:#e2b93b}.list{flex-direction:column;gap:8px;margin-bottom:20px;display:flex}.row{color:inherit;background:#171821;border:1px solid #2c2e3a;border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:12px 14px;text-decoration:none;display:flex}a.row:hover,a.row:active{border-color:#10b981}.row-icon{color:#10b981;flex-shrink:0;font-size:20px}.row-main{flex-direction:column;flex:160px;gap:2px;min-width:0;display:flex}.row-title{word-break:break-word;font-weight:600}.row .hint{font-size:13px}.row-actions{flex-shrink:0;align-items:center;gap:6px;margin-left:auto;display:flex}.thumb{object-fit:cover;cursor:pointer;border-radius:8px;width:44px;height:44px}.thumb-button{background:0 0;border:0;padding:0;line-height:0;position:relative}.thumb-count{color:#e8e9ed;background:#0e0f13cc;border-radius:6px;padding:2px 5px;font-size:11px;font-weight:600;line-height:1;position:absolute;bottom:3px;right:3px}.photo-extra{flex-direction:column;align-items:flex-end;margin-bottom:6px;display:flex}.photo-extra .photo-full{margin-bottom:4px}.photo-preview,.photo-full{object-fit:contain;background:#0e0f13;border-radius:10px;width:100%;max-height:60vh;margin:10px 0}.photo-actions{gap:8px;display:flex}.photo-actions button{flex:1 1 0}.photo-actions+.hint{margin:8px 0 14px}.entry{margin-bottom:4px;position:relative}.entry .photo-preview{max-height:40vh;margin:0}.entry-saved{opacity:.6}.entry-remove{z-index:1;color:#e8e9ed;background:#0e0f13bf;border-radius:50%;padding:8px;font-size:18px;line-height:0;position:absolute;top:10px;right:10px}.chart-block{flex-direction:column;gap:10px;min-width:0;display:flex}.chart-plot{position:relative}.chart-scroll{-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#2c2e3a transparent;direction:rtl;overflow-x:auto}.chart-scroll::-webkit-scrollbar{height:6px}.chart-scroll::-webkit-scrollbar-thumb{background:#2c2e3a;border-radius:3px}.chart{touch-action:pan-x pan-y;direction:ltr;display:block}.chart:focus{outline:none}.chart:focus-visible .chart-focus{stroke:#10b981;stroke-width:1px}.chart-grid{stroke:#23252e;stroke-width:1px}.chart-baseline{stroke:#3a3d4a;stroke-width:1px}.chart-avg{stroke:#9aa0ae;stroke-width:1px;opacity:.55;pointer-events:none}.chart-focus{fill:#1f212b}.chart-hit{fill:#0000;cursor:pointer}.bar path{transition:opacity .15s}.bar-actual{fill:#10b981}.bar-projected{fill:#2c6b57}.bar .bar-actual,.bar .bar-projected{opacity:.42}.bar-on .bar-actual,.bar-on .bar-projected{opacity:1}.bar-label{fill:#6b7080;font-variant-numeric:tabular-nums;font-size:11px}.bar-label-current{fill:#e8e9ed;font-weight:700}.bar-year{fill:#9aa0ae;font-size:11px;font-weight:600}.chart-tick{color:#6b7080;font-variant-numeric:tabular-nums;pointer-events:none;background:linear-gradient(90deg,#171821 70%,#0000);padding:0 4px 1px 0;font-size:10px;line-height:1.2;position:absolute;left:0;transform:translateY(-100%)}.readout{min-height:78px}.readout-period{color:#9a9cab;align-items:center;gap:8px;font-size:13px;display:flex}.readout-main{flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:2px;display:flex}.readout-value{font-size:28px;font-weight:700;line-height:1.15}.readout-cost{color:#e8e9ed;margin-left:auto;font-size:18px;font-weight:600}.readout-sub{color:#9a9cab;margin-top:2px;font-size:13px}.change{font-size:13px}.change-value{color:#c9cbd4;white-space:nowrap;align-items:center;gap:3px;font-weight:600;display:inline-flex}.change .icon{width:14px;height:14px}.change-down .icon{color:#10b981}.change-up .icon{color:#e2b93b}.change-label{color:#9a9cab}.chart-controls{flex-wrap:wrap;gap:8px;margin:4px 0 14px;display:flex}.segmented{background:#1a1c24;border-radius:10px;gap:4px;padding:3px;display:inline-flex}.segmented button{color:#9aa0ae;background:0 0;min-height:36px;padding:6px 12px;font-size:13px}.segmented button.active{color:#e6e8ef;background:#2c2e3a}.chart-legend{color:#9aa0ae;flex-wrap:wrap;gap:6px 16px;font-size:12px;display:flex}.chart-legend span{align-items:center;gap:6px;display:inline-flex}.legend-swatch{border-radius:3px;width:10px;height:10px;display:inline-block}.legend-actual{background:#10b981}.legend-projected{background:#2c6b57}.legend-line{background:#9aa0ae;width:14px;height:1px;display:inline-block}.chart-card{gap:16px}.chart-compact{margin-top:auto;overflow:hidden}main.has-dock{padding-bottom:0}.dock{z-index:20;padding:14px 16px calc(14px + env(safe-area-inset-bottom));background:linear-gradient(#0e0f1300,#0e0f13 22px);margin:8px -16px 0;position:sticky;bottom:0}.dock button.cta{justify-content:center;align-items:center;gap:8px;margin:0;display:flex;box-shadow:0 6px 20px #10b98140}@media (width>=640px){.dock{margin:8px -24px 0;padding-left:24px;padding-right:24px}}.icon-button{gap:6px;padding:10px 12px}.icon-button .icon{width:18px;height:18px}@media (width<=479px){.icon-button .button-label{display:none}}.hero{gap:4px;margin-bottom:8px}.hero-label{color:#9a9cab;font-size:13px}.hero-value{letter-spacing:-.5px;font-size:clamp(38px,12vw,48px);font-weight:700;line-height:1.1}.hero-sub{color:#9a9cab;font-size:13px}.hero-empty{color:#9a9cab;align-items:flex-start;gap:10px;font-size:14px;display:flex}.hero-empty .icon{color:#10b981;margin-top:1px;font-size:20px}.hero-empty a{color:#10b981}.shares{flex-direction:column;gap:10px;margin-top:14px;list-style:none;display:flex}.shares li{grid-template-columns:1fr auto;gap:4px 12px;font-size:14px;display:grid}.share-name{color:#c9cbd4;align-items:center;gap:6px;min-width:0;display:inline-flex}.share-name .icon{color:#9a9cab}.share-value{font-variant-numeric:tabular-nums;font-weight:600}.share-track{background:#23252e;border-radius:3px;grid-column:1/-1;height:6px;overflow:hidden}.share-fill{background:#10b981;border-radius:3px;height:100%;display:block}.tiles{grid-template-columns:repeat(auto-fill,minmax(min(150px,100%),1fr));gap:10px;margin-bottom:8px;display:grid}.tile{min-width:0;color:inherit;background:#171821;border:1px solid #23252e;border-radius:12px;flex-direction:column;gap:4px;padding:14px 14px 12px;text-decoration:none;display:flex}.tile:hover,.tile:active{border-color:#10b981}.tile-head{align-items:center;gap:8px;min-width:0;font-size:14px;font-weight:600;display:flex}.tile-icon{color:#10b981;background:#10b9811f;border-radius:8px;flex-shrink:0;place-items:center;width:28px;height:28px;display:inline-grid}.tile-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tile-chevron{color:#6b7080}.tile-value{margin-top:6px;font-size:24px;font-weight:700;line-height:1.2}.tile-value .stat-unit{font-size:13px}.tile-sub{color:#9a9cab;min-height:19px;font-size:13px}.tile .chart-compact{margin-top:10px}.tile .warning{margin-top:0}.section-head{margin-top:24px;margin-bottom:10px}button.small{min-height:36px;padding:6px 12px;font-size:13px}.row-side{text-align:right;flex-direction:column;align-items:flex-end;gap:2px;margin-left:auto;display:flex}.row-side .hint{white-space:nowrap;font-size:12px}.hint.due{color:#e2b93b;align-items:center;gap:4px;display:inline-flex}.stats-row{grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:10px;margin-bottom:10px;display:grid}.stat{background:#171821;border:1px solid #23252e;border-radius:12px;min-width:0;padding:12px 14px}.stat-label{color:#9a9cab;font-size:12px}.stat-value{word-break:break-word;margin-top:2px;font-size:18px;font-weight:700}.stat-value .stat-unit{font-size:12px}button.row-button{text-align:left;width:100%;min-height:0;font:inherit;font-weight:400}.row-selected{border-color:#10b981;box-shadow:inset 3px 0 #10b981}.empty{text-align:center;color:#9aa0ae;border:1px dashed #2c2e3a;border-radius:12px;margin-bottom:20px;padding:36px 16px}.empty-icon{margin-bottom:8px;font-size:40px;line-height:1}.empty-icon .icon{vertical-align:top}.tabbar{display:none}@media (width<=639px){.tabbar{z-index:30;padding:6px calc(4px + env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) calc(4px + env(safe-area-inset-left));background:#0e0f13;border-top:1px solid #23252e;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{color:#9a9cab;border-radius:10px;flex-direction:column;flex:1 1 0;align-items:center;gap:3px;min-width:0;padding:6px 2px;font-size:11px;font-weight:500;text-decoration:none;display:flex}.tab span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.tab .icon{width:22px;height:22px}.tab.active,.tab-accent .icon{color:#10b981}.app.has-tabbar main{padding-bottom:calc(84px + env(safe-area-inset-bottom))}.app.has-tabbar .dock{display:none}}
