@font-face{font-family:Outfit;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/outfit-latin-wght-normal-5FXBKKJF.woff2") format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:100 800;src:url("./media/jetbrains-mono-latin-wght-normal-VBS632QH.woff2") format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-display: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-body: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--space-2xs: .25rem;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--space-4xl: 6rem;--radius-sm: .375rem;--radius-md: .75rem;--radius-lg: 1.25rem;--radius-xl: 2rem;--radius-pill: 999px;--shadow-soft: 0 24px 64px oklch(.13 .012 270 / .35);--shadow-card: 0 1px 0 oklch(.97 .01 280 / .05), 0 12px 40px oklch(.13 .012 270 / .28);--shadow-glow: 0 0 28px var(--color-glow);--transition-fast: .16s ease;--transition-base: .24s ease;--transition-slow: .5s ease;--container-max: 60rem;--container-narrow: 44rem;--page-inline-padding: clamp(1.5rem, 8vw, 7rem);--top-bar-height: 3.5rem;--section-padding-block: clamp(4rem, 10vw, 7rem);--section-header-gap: var(--space-sm);--section-stack-gap: var(--space-2xl)}:root,:root.dark,:root[data-theme=dark]{color-scheme:dark;--color-bg: oklch(.16 .014 268);--color-surface: oklch(.21 .018 265);--color-surface-soft: oklch(.27 .024 262);--color-text: oklch(.97 .01 280);--color-text-muted: oklch(.86 .02 275);--color-primary: oklch(.62 .21 288);--color-primary-dark: oklch(.47 .22 285);--color-accent: oklch(.72 .17 55);--color-success: oklch(.75 .15 160);--color-warning: oklch(.82 .14 85);--color-danger: oklch(.66 .19 15);--color-border: oklch(.27 .024 262 / .9);--color-glow: oklch(.62 .21 288 / .18);--color-focus-ring: oklch(.7 .18 290 / .45)}:root.light,:root[data-theme=light]{color-scheme:light;--color-bg: oklch(.97 .006 275);--color-surface: oklch(.985 .005 275);--color-surface-soft: oklch(.92 .01 270);--color-text: oklch(.19 .02 265);--color-text-muted: oklch(.4 .02 265);--color-primary: oklch(.5 .19 288);--color-primary-dark: oklch(.42 .2 285);--color-accent: oklch(.6 .16 50);--color-success: oklch(.55 .13 160);--color-warning: oklch(.65 .13 80);--color-danger: oklch(.55 .19 20);--color-border: oklch(.87 .014 268 / .8);--color-glow: oklch(.5 .19 288 / .16);--color-focus-ring: oklch(.56 .17 290 / .45)}:root,:root.dark,:root[data-theme=dark]{--pm-uv-core: oklch(.62 .21 288);--pm-uv-bright: oklch(.7 .18 290);--pm-uv-soft: oklch(.8 .12 292);--pm-uv-deep: oklch(.47 .22 285);--pm-ion-violet: oklch(.63 .2 295);--pm-spectral-violet: oklch(.66 .24 310);--pm-photon-blue: oklch(.78 .13 235);--pm-plasma-cyan: oklch(.85 .13 210);--pm-prism-pink: oklch(.78 .19 330);--pm-laser-orange: oklch(.72 .17 55);--pm-beam: oklch(.98 .005 250);--pm-crystal-fill: oklch(.97 .01 280 / .07);--pm-crystal-border: oklch(.97 .01 280 / .18);--pm-crystal-fill-opaque: oklch(.21 .018 265 / .92);--pm-frosted-fill: oklch(.21 .018 265 / .55);--pm-frosted-border: oklch(.97 .01 280 / .14);--pm-polymer-fill: oklch(.24 .02 268);--pm-polymer-border: oklch(.32 .024 265);--pm-metal-hi: oklch(.23 .015 260);--pm-metal-lo: oklch(.17 .012 262);--pm-shadow-tint: oklch(.13 .012 270);--pm-edge-highlight: oklch(.97 .01 280 / .12)}:root.light,:root[data-theme=light]{--pm-uv-core: oklch(.5 .19 288);--pm-uv-bright: oklch(.56 .17 290);--pm-uv-soft: oklch(.66 .12 292);--pm-uv-deep: oklch(.42 .2 285);--pm-ion-violet: oklch(.51 .18 295);--pm-spectral-violet: oklch(.54 .22 310);--pm-photon-blue: oklch(.55 .13 240);--pm-plasma-cyan: oklch(.58 .11 215);--pm-prism-pink: oklch(.6 .2 330);--pm-laser-orange: oklch(.6 .16 50);--pm-beam: oklch(.42 .2 285);--pm-crystal-fill: oklch(.985 .006 275 / .55);--pm-crystal-border: oklch(.5 .19 288 / .22);--pm-crystal-fill-opaque: oklch(.97 .006 275 / .95);--pm-frosted-fill: oklch(.97 .006 275 / .7);--pm-frosted-border: oklch(.42 .2 285 / .14);--pm-polymer-fill: oklch(.93 .01 272);--pm-polymer-border: oklch(.85 .016 268);--pm-metal-hi: oklch(.88 .012 268);--pm-metal-lo: oklch(.82 .014 266);--pm-shadow-tint: oklch(.35 .03 270);--pm-edge-highlight: oklch(1 0 0 / .75)}:root{--pm-z-scene: 0;--pm-z-content: 1;--pm-z-nav: 100;--pm-z-overlay: 200;--pm-z-response: 300;--pm-z-diagnostics: 400;--pm-blur-crystal: 16px;--pm-blur-frosted: 24px;--pm-cycle-a: 19s;--pm-cycle-b: 23s;--pm-cycle-c: 41s;--pm-ease-snappy: linear(0, .118, .387, .674, .892, 1.021, 1.058, 1.041, 1.014, .999, 1);--pm-dur-snappy: .22s;--pm-ease-standard: linear( 0, .06, .213, .427, .638, .811, .933, 1.006, 1.038, 1.041, 1.025, 1.008, .998, .997, 1 );--pm-dur-standard: .38s;--pm-ease-heavy: linear( 0, .038, .141, .288, .454, .617, .759, .87, .943, .983, .998, 1 );--pm-dur-heavy: .62s;--pm-glow-low: 0 0 12px;--pm-glow-mid: 0 0 24px;--pm-light-x: .7;--pm-light-y: .15;--pm-motion: 1;--pm-play: running}@media(max-width:768px){:root{--pm-blur-crystal: 10px;--pm-blur-frosted: 12px}}@media(prefers-reduced-motion:reduce){:root{--pm-motion: 0;--pm-play: paused}}@keyframes pm-drift-a{0%{transform:translateZ(0) scale(1)}50%{transform:translate3d(6%,-4%,0) scale(1.08)}to{transform:translate3d(-4%,5%,0) scale(.96)}}@keyframes pm-drift-b{0%{transform:translateZ(0) rotate(0)}to{transform:translate3d(-5%,6%,0) rotate(3deg)}}@keyframes pm-beam-sweep{0%{transform:translate(-12%) rotate(24deg);opacity:.5}50%{opacity:.9}to{transform:translate(10%) rotate(22deg);opacity:.5}}@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}html{font-family:var(--font-body);font-size:100%;line-height:1.5;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{color:var(--color-text);font-family:var(--font-body);font-size:1rem}h1,h2,h3,h4,h5,h6{color:var(--color-text);font-family:var(--font-display);font-weight:600;letter-spacing:-.03em;line-height:1.02}h1,h2,h3,p{margin-block-start:0}p{color:var(--color-text-muted)}strong{color:var(--color-text)}small{color:var(--color-text-muted)}.eyebrow{margin:0;color:var(--color-primary);font-family:var(--font-mono);font-size:.75rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase}*,*:before,*:after{box-sizing:border-box}html,body{min-height:100%}body{margin:0;background:var(--color-bg)}html:has(.top-bar__mobile-layer),body:has(.top-bar__mobile-layer){overflow:hidden}app-root{display:block;min-height:100svh}img,picture,svg{display:block;max-width:100%}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:var(--color-primary);text-decoration-thickness:.08em;text-underline-offset:.2em;transition:color var(--transition-fast)}a:hover{color:var(--color-accent)}:focus-visible{outline:3px solid var(--color-focus-ring);outline-offset:3px}::selection{background:var(--color-primary);color:var(--color-bg)}.container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--page-inline-padding);box-sizing:border-box}.container--narrow{width:100%;max-width:var(--container-narrow);margin-inline:auto;padding-inline:var(--page-inline-padding);box-sizing:border-box}.section{padding-block:var(--section-padding-block)}.section__header{display:grid;gap:var(--section-header-gap);margin-block-end:var(--section-stack-gap)}.surface{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-card)}.button{display:inline-flex;min-height:2.875rem;align-items:center;justify-content:center;gap:var(--space-xs);border:1px solid transparent;border-radius:var(--radius-pill);padding:.85rem 1.35rem;font-weight:600;letter-spacing:-.01em;line-height:1;text-align:center;text-decoration:none;transition:transform var(--pm-dur-standard) var(--pm-ease-standard),box-shadow var(--pm-dur-standard) var(--pm-ease-standard),background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast);transform:translate(var(--pm-mag-x, 0px),var(--pm-mag-y, 0px))}.button:hover{transform:translate(var(--pm-mag-x, 0px),calc(var(--pm-mag-y, 0px) - 1px))}.button--primary{background:linear-gradient(180deg,var(--pm-uv-bright),var(--pm-uv-core) 55%,var(--pm-uv-deep));color:#f6f9fc;border:1px solid color-mix(in oklch,var(--pm-uv-bright) 60%,transparent);box-shadow:inset 0 1px #ffffff40,var(--pm-glow-low) color-mix(in oklch,var(--pm-uv-core) 40%,transparent)}.button--primary:hover{box-shadow:inset 0 1px #ffffff4d,var(--pm-glow-mid) color-mix(in oklch,var(--pm-uv-core) 45%,transparent)}.button--primary:active{transform:translate(var(--pm-mag-x, 0px),var(--pm-mag-y, 0px)) scale(.98);box-shadow:inset 0 2px 6px #00000059,var(--pm-glow-low) color-mix(in oklch,var(--pm-uv-core) 30%,transparent)}.button--primary:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-bg),0 0 0 4px var(--color-focus-ring),var(--pm-glow-mid) color-mix(in oklch,var(--pm-uv-core) 45%,transparent)}.button--secondary{background:var(--pm-frosted-fill);color:var(--color-text);border:1px solid var(--pm-frosted-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.button--secondary:hover{border-color:color-mix(in oklch,var(--pm-uv-core) 40%,var(--pm-frosted-border))}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes fade-up{0%{opacity:0;transform:translateY(calc(var(--pm-motion) * 16px))}to{opacity:1;transform:translateY(0)}}.animate-fade-up{animation:fade-up var(--transition-slow) both}.reveal{opacity:0;transform:translateY(calc(var(--pm-motion) * 12px));transition:opacity calc(.15s + var(--pm-motion) * .55s) var(--pm-ease-heavy),transform calc(.15s + var(--pm-motion) * .55s) var(--pm-ease-heavy)}.reveal.is-visible{opacity:1;transform:translateY(0)}.budget-page .budget-view-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.budget-page .budget-filter-trigger{display:inline-flex;align-items:center;gap:.45rem}.budget-page .budget-filter-trigger.button--active{border-color:var(--color-primary);background:color-mix(in oklch,var(--color-primary) 13%,var(--color-surface));box-shadow:0 0 1.25rem color-mix(in oklch,var(--color-primary) 17%,transparent);color:var(--color-text)}.budget-page .budget-filter-count{display:grid;min-width:1.35rem;min-height:1.35rem;place-items:center;border-radius:50%;background:var(--color-primary);color:var(--color-bg);font-family:var(--font-mono);font-size:.66rem}.budget-page .budget-filter-summary{display:flex;flex:1 1 100%;flex-wrap:wrap;align-items:center;gap:.4rem;color:var(--color-text-muted);font-size:.74rem}.budget-page .budget-filter-summary__label{font-family:var(--font-mono);font-weight:700;letter-spacing:.05em;text-transform:uppercase}.budget-page .filter-chip{display:inline-flex;align-items:center;min-height:1.8rem;border:1px solid color-mix(in oklch,var(--color-primary) 42%,var(--color-border));border-radius:var(--radius-pill);padding:.25rem .6rem;background:color-mix(in oklch,var(--color-primary) 10%,transparent);color:var(--color-text)}.budget-page .budget-filter-clear{display:inline-flex;border:0;background:transparent;color:var(--color-primary);cursor:pointer;font-weight:700}.budget-shell .budget-modal.budget-modal--filters{width:min(100%,46rem);grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden}.filter-modal__body{display:grid;min-width:0;gap:var(--space-lg);overflow-y:auto;overscroll-behavior:contain;padding-inline-end:.15rem}.filter-option-group{display:grid;min-width:0;min-inline-size:0;gap:var(--space-sm);margin:0;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md)}.filter-option-group legend{padding-inline:.35rem;color:var(--color-text);font-family:var(--font-mono);font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.filter-option-group>label{display:flex;min-width:0;align-items:center;gap:var(--space-sm);min-height:2.25rem;color:var(--color-text-muted);cursor:pointer}.filter-option-group .filter-control,.filter-category-options .filter-control{width:1.1rem;min-height:1.1rem;accent-color:var(--color-primary)}.filter-option-group__hint{margin:0;color:var(--color-text-muted);font-size:.76rem}.filter-category-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(12rem,100%),1fr));gap:var(--space-xs)}.filter-category-options label{display:flex;min-width:0;align-items:center;gap:var(--space-xs);padding:var(--space-xs);border-radius:var(--radius-md);cursor:pointer}.filter-category-options label:hover{background:color-mix(in oklch,var(--color-primary) 8%,transparent)}.budget-shell .form-actions.filter-modal__actions{position:sticky;inset-block-end:0;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;border-block-start:1px solid var(--color-border);padding-block:var(--space-md) max(var(--space-md),env(safe-area-inset-bottom));background:var(--pm-frosted-fill);box-shadow:0 -.75rem 1.25rem color-mix(in oklch,var(--color-bg) 34%,transparent)}.filter-modal__actions .button{min-width:0}@media(max-width:560px){.budget-shell .modal-backdrop.modal-backdrop--filters{place-items:stretch;overflow:hidden;padding:0}.budget-shell .budget-modal.budget-modal--filters{width:100%;min-height:100svh;max-height:100svh;border-radius:0;padding:max(1rem,env(safe-area-inset-top)) var(--space-md) 0}.filter-modal__body{padding-block-end:var(--space-md)}.filter-option-group>label{align-items:flex-start}.filter-option-group>label>span{overflow-wrap:anywhere}.filter-category-options{grid-template-columns:minmax(0,1fr)}.filter-modal__actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xs);margin-inline:calc(var(--space-md) * -1);padding-inline:var(--space-md)}.filter-modal__clear{grid-column:1/-1}.filter-modal__actions .button{width:100%;padding-inline:var(--space-sm)}}
