.fv-btn{justify-content:center;align-items:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-4);border-radius:var(--r-btn);border:1px solid var(--line);background:var(--bg);color:var(--ink);font-size:var(--fs-body);white-space:nowrap;transition:background-color var(--t-press) ease-out;-webkit-user-select:none;user-select:none;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}.fv-btn:active:not(:disabled){background:var(--surface)}.fv-btn:disabled,.fv-btn[aria-disabled=true]{opacity:.4;cursor:default}.fv-btn--primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:600}.fv-btn--primary:active{background:var(--accent-pressed);border-color:var(--accent-pressed)}.fv-btn--primary:active:not(:disabled){background:var(--ink-pressed)}.fv-btn--destructive{color:var(--bad)}.fv-btn--sm{min-height:40px;padding:0 var(--s-3);font-size:var(--fs-secondary);position:relative}.fv-btn--sm:after{content:"";position:absolute;inset:-2px 0}.fv-btn--lg{min-height:52px}.fv-btn--full{width:100%}.fv-btn--icon{width:var(--tap);padding:0}.fv-btn--ghost{background:0 0;border-color:#0000}.fv-btn--ghost:active:not(:disabled){background:var(--surface)}.fv-btn__spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite fv-spin}@keyframes fv-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.fv-btn__spinner{animation-duration:2s}}.fv-card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--card-pad)}.fv-card--flush{padding:0;overflow:hidden}.fv-card__head{justify-content:space-between;align-items:center;gap:var(--s-2);margin-bottom:var(--s-3);display:flex}.fv-tag{border-radius:var(--r-chip);background:var(--surface);color:var(--ink);font-size:var(--fs-label);white-space:nowrap;align-items:center;padding:2px 8px;font-weight:500;line-height:1.4;display:inline-flex}.fv-tag--good{color:var(--good)}.fv-tag--warn{color:var(--warn)}.fv-tag--bad{color:var(--bad)}.fv-tag--muted{color:var(--muted)}.fv-pill{justify-content:space-between;align-items:center;gap:var(--s-3);width:100%;min-height:var(--tap);padding:var(--s-3) var(--s-4);border-radius:var(--r-pill);background:var(--surface);color:var(--ink);text-align:left;font-size:var(--fs-row);border:0;display:flex}.fv-pill__meta{color:var(--muted);font-size:var(--fs-secondary);white-space:nowrap}.fv-pill-list{gap:var(--s-2);flex-direction:column;display:flex}.fv-chip-wrap{margin:-8px 0;padding:8px 0;display:inline-flex}.fv-chip{border-radius:var(--r-chip);background:var(--surface);height:28px;color:var(--muted);font-size:var(--fs-small);border:0;align-items:center;padding:4px 10px;font-weight:500;display:inline-flex}button.fv-chip{position:relative}button.fv-chip:after{content:"";position:absolute;inset:-8px 0}button.fv-chip:active{background:var(--line)}.fv-seg{border:1px solid var(--line);border-radius:var(--r-btn);scrollbar-width:none;height:40px;display:flex;overflow-x:auto}.fv-seg::-webkit-scrollbar{display:none}.fv-seg__item{padding:0 var(--s-2);border:0;border-right:1px solid var(--line);background:var(--bg);color:var(--ink);font-size:var(--fs-secondary);white-space:nowrap;flex:1 0 auto;justify-content:center;align-items:center;gap:4px;font-weight:500;display:inline-flex}.fv-seg__item:last-child{border-right:0}.fv-seg__item[aria-selected=true]{background:var(--accent);color:var(--on-accent)}.fv-seg__count{opacity:.7}.fv-list{flex-direction:column;display:flex}.fv-list-row{justify-content:space-between;align-items:center;gap:var(--s-3);min-height:64px;padding:var(--s-3) var(--s-4);border:0;border-bottom:1px solid var(--track);color:inherit;text-align:left;background:0 0;width:100%;display:flex}.fv-list-row:last-child{border-bottom:0}button.fv-list-row:active{background:var(--surface)}.fv-list-row__main{flex:1;min-width:0}.fv-list-row__title{font-size:var(--fs-row);font-weight:500;line-height:1.3}.fv-list-row__sub{font-size:var(--fs-secondary);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fv-list-row__side{text-align:right;flex-direction:column;align-items:flex-end;gap:2px;display:flex}.fv-list-row__amount{font-size:var(--fs-row);font-weight:600}.fv-tile{flex-direction:column;display:flex}.fv-tile__head{justify-content:space-between;align-items:center;gap:var(--s-2);min-height:28px;display:flex}.fv-tile__head-right{align-items:center;gap:var(--s-2);color:var(--muted);display:flex}.fv-tile__value{margin-top:var(--s-3)}.fv-tile__bar{margin-top:14px}.fv-tile__foot{justify-content:space-between;gap:var(--s-2);font-size:var(--fs-secondary);margin-top:14px;display:flex}.fv-tile__foot-right{color:var(--ink);font-weight:600}.fv-tile__note{border-top:1px solid var(--track);font-size:var(--fs-secondary);color:var(--muted);margin-top:14px;padding-top:14px}.fv-tile__link{color:var(--ink);font-size:var(--fs-secondary);min-height:var(--tap);text-align:left;background:0 0;border:0;padding:0;text-decoration:underline}.fv-progress{background:var(--track);height:3px;position:relative}.fv-progress__fill{background:var(--accent);position:absolute;inset:0 auto 0 0}.fv-field{flex-direction:column;gap:6px;min-width:0;display:flex}.fv-field__label{font-size:var(--fs-small);color:var(--muted);font-weight:500}.fv-field__hint{font-size:var(--fs-small);color:var(--muted)}.fv-field__error{font-size:var(--fs-small);color:var(--bad)}.fv-input,.fv-select,.fv-textarea{width:100%;min-height:48px;padding:0 var(--s-3);border:1px solid var(--line);border-radius:var(--r-btn);background:var(--bg);color:var(--ink);font-size:1rem}.fv-textarea{padding:var(--s-3);resize:vertical;min-height:120px;line-height:1.4}.fv-input:focus-visible,.fv-select:focus-visible,.fv-textarea:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.fv-input[aria-invalid=true],.fv-select[aria-invalid=true],.fv-textarea[aria-invalid=true]{border-color:var(--bad)}.fv-input-prefix{align-items:center;display:flex;position:relative}.fv-input-prefix>span{left:var(--s-3);color:var(--muted);pointer-events:none;position:absolute}.fv-input-prefix>.fv-input{padding-left:28px}.fv-select-wrap{position:relative}.fv-select{appearance:none;padding-right:40px}.fv-select-wrap>svg{pointer-events:none;color:var(--muted);position:absolute;top:50%;right:12px;transform:translateY(-50%)}.fv-check{align-items:center;gap:var(--s-3);min-height:var(--tap);cursor:pointer;font-size:var(--fs-body);display:flex}.fv-check input{appearance:none;border:1px solid var(--muted);background:var(--bg);border-radius:4px;flex:none;place-content:center;width:22px;height:22px;margin:0;display:grid}.fv-check input:checked{background:var(--accent);border-color:var(--accent)}.fv-check input:checked:after{content:"";border:solid var(--on-ink);border-width:0 2px 2px 0;width:6px;height:11px;margin-top:-2px;transform:rotate(45deg)}.fv-check input:disabled{opacity:.6}.fv-switch{justify-content:space-between;align-items:center;gap:var(--s-3);min-height:var(--tap);display:flex}.fv-switch input{appearance:none;background:var(--line);width:44px;height:26px;transition:background-color var(--t-press);border-radius:13px;flex:none;margin:0;position:relative}.fv-switch input:after{content:"";background:var(--bg);width:20px;height:20px;transition:transform var(--t-press);border-radius:50%;position:absolute;top:3px;left:3px}.fv-switch input:checked{background:var(--accent)}.fv-switch input:checked:after{transform:translate(18px)}.fv-scrim{z-index:50;background:var(--scrim);animation:fv-fade var(--t-sheet) ease-out;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.fv-sheet{width:100%;max-height:92vh;background:var(--bg);border-top:1px solid var(--line);border-radius:var(--r-sheet) var(--r-sheet) 0 0;max-height:92dvh;animation:fv-slide-up var(--t-sheet) var(--ease-out);flex-direction:column;display:flex}.fv-sheet__grab{background:var(--line);border-radius:2px;flex:none;width:36px;height:4px;margin:8px auto 0}.fv-sheet__head{justify-content:space-between;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-2) var(--s-2) var(--s-4);flex:none;display:flex}.fv-sheet__title{font-size:var(--fs-sheet-title);letter-spacing:-.01em;font-weight:700}.fv-sheet__body{padding:var(--s-2) var(--s-4) var(--s-4);overscroll-behavior:contain;flex:1;overflow-y:auto}.fv-sheet__foot{gap:var(--s-2);padding:var(--s-3) var(--s-4) calc(var(--s-3) + var(--safe-bottom));border-top:1px solid var(--line);flex:none;display:flex}.fv-sheet__foot>*{flex:1}@media (min-width:600px){.fv-scrim{align-items:center}.fv-sheet{border:1px solid var(--line);border-radius:12px;width:520px;max-height:85vh}.fv-sheet__grab{display:none}}@keyframes fv-fade{0%{opacity:0}to{opacity:1}}@keyframes fv-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.fv-scrim,.fv-sheet{animation:none}}.fv-toast-host{z-index:60;left:0;right:0;bottom:calc(var(--nav-h) + var(--safe-bottom) + 16px);pointer-events:none;padding:0 var(--gutter);justify-content:center;display:flex;position:fixed}.fv-toast{pointer-events:auto;align-items:center;gap:var(--s-4);border-radius:var(--r-btn);background:var(--ink);max-width:100%;color:var(--on-ink);font-size:var(--fs-secondary);animation:fv-fade var(--t-press) ease-out;padding:12px 16px;display:flex}.fv-toast__action{color:var(--on-ink);background:0 0;border:0;min-height:32px;padding:0;font-weight:600;position:relative}.fv-toast__action:after{content:"";position:absolute;inset:-6px -8px}.fv-empty{padding:var(--s-8) var(--s-4);text-align:center;color:var(--muted);font-size:var(--fs-body)}.fv-skel{background:var(--surface);border-radius:var(--r-pill)}.fv-error{justify-content:space-between;align-items:center;gap:var(--s-3);margin-top:var(--s-2);color:var(--bad);font-size:var(--fs-secondary);display:flex}.fv-offline{background:var(--surface);height:32px;font-size:var(--fs-small);color:var(--muted);justify-content:center;align-items:center;display:flex}.fv-stop{background:var(--ink);min-width:32px;height:32px;color:var(--on-ink);font-size:var(--fs-secondary);border-radius:16px;flex:none;place-content:center;padding:0 8px;font-weight:600;display:inline-grid}.fv-stop--done{background:var(--surface);color:var(--muted)}.fv-stop--sm{min-width:24px;height:24px;font-size:var(--fs-label);border-radius:12px;padding:0 6px;box-shadow:0 0 0 2px #fff}.fv-topbar{z-index:30;padding-top:var(--safe-top);background:var(--bg);border-bottom:1px solid var(--line);position:sticky;top:0}.fv-topbar__inner{max-width:var(--content-max);height:var(--topbar-h);padding:0 calc(var(--gutter) - 6px) 0 var(--gutter);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.fv-topbar__logo{align-items:center;min-height:44px;text-decoration:none;display:flex}.fv-logo{width:auto;height:40px;display:block}.fv-logo--dark{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .fv-logo--light{display:none}:root:not([data-theme=light]) .fv-logo--dark{display:block}}:root[data-theme=dark] .fv-logo--light{display:none}:root[data-theme=dark] .fv-logo--dark{display:block}.fv-topbar__actions{gap:4px;display:flex}.fv-iconbtn{position:relative}.fv-dot{background:var(--accent);border-radius:50%;width:8px;height:8px;position:absolute;top:9px;right:9px}.fv-nav{z-index:30;background:var(--bg);border-top:1px solid var(--line);padding-bottom:var(--safe-bottom);position:fixed;bottom:0;left:0;right:0}.fv-nav__inner{max-width:var(--content-max);height:var(--nav-h);grid-template-columns:repeat(3,1fr) 64px repeat(3,1fr);align-items:center;margin:0 auto;display:grid}.fv-nav__add{background:var(--accent);width:56px;height:56px;color:var(--on-accent);cursor:pointer;border:0;border-radius:50%;place-content:center;justify-self:center;margin-top:-22px;display:grid;box-shadow:0 6px 16px #3ec6e059}.fv-nav__add:active{transform:scale(.96)}.fv-nav__add:focus-visible{outline:3px solid var(--line);outline-offset:3px}.fv-nav__item{color:var(--muted);font-size:var(--fs-nav);flex-direction:column;justify-content:center;align-items:center;gap:2px;min-width:0;font-weight:500;text-decoration:none;display:flex}.fv-nav__icon{border-radius:12px;place-content:center;width:48px;height:32px;display:grid;position:relative}.fv-nav__item[aria-current=page]{color:var(--ink);font-weight:600}.fv-nav__item[aria-current=page] .fv-nav__icon{background:var(--accent-soft);color:var(--accent-ink)}.fv-badge{background:var(--accent);min-width:16px;height:16px;color:var(--on-accent);text-align:center;border-radius:8px;padding:0 4px;font-size:10px;font-weight:600;line-height:16px;position:absolute;top:-2px;right:4px}.fv-plan-row{padding:var(--s-3) 0;border-bottom:1px solid var(--track)}.fv-plan-row:last-of-type{border-bottom:0}.fv-plan-row__fields{gap:var(--s-3);margin-top:var(--s-2);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}
