@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-opsz-normal-D9N6E8K1.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-opsz-normal-IcJDqblK.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-opsz-normal-Cre6nC2_.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--font:"Geist Variable", "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--display:"Bricolage Grotesque Variable", "Bricolage Grotesque", var(--font);--mono:"Geist Mono Variable", "Geist Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--bg:#f4f1eb;--surface:#fffdf9;--surface2:#f2ede5;--surface3:#e9e2d7;--border:#e4dcd0;--border-strong:#d3c9ba;--text:#19150f;--text1:var(--text);--text2:#6a6156;--text3:#9a9084;--accent:#b9390b;--accent-bright:#cc430c;--accent-vivid:#ff5a1f;--accent-soft:#ffe7da;--on-accent:#fff;--green:#2c7a3d;--green-bright:#3a9150;--green-soft:#ddf0de;--orange:#946000;--orange-bright:#dc9a18;--purple:#6a5fc1;--red:#c4352a;--run:#d24a14;--cycle:#19808f;--swim:#2c68c8;--strength:#7356d0;--rest:#8d857a;--series-easy:#2f72cc;--series-long:#7d55d8;--series-parkrun:#2f9248;--series-race:#d2362b;--series-workout:#e0780f;--series-runwalk:#8d857a;--on-tone:#fff;--ember-1:#ff3b1f;--ember-2:#ff7a2f;--ember-3:#ffc857;--grad-ember:linear-gradient(115deg, var(--ember-1) 0%, var(--ember-2) 52%, var(--ember-3) 100%);--grad-button:linear-gradient(135deg, #e04a14 0%, #c23a0b 100%);--glow:#ff5a1f29;--glass:#fffdf9b8;--scrim:#19150f61;--hi:#ffffffb3;--radius:16px;--radius-sm:11px;--radius-lg:22px;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--focus-ring:0 0 0 2px var(--bg), 0 0 0 4px var(--accent-vivid);--shadow-card:0 1px 0 var(--hi) inset, 0 1px 2px #281c0c0d, 0 4px 14px -8px #281c0c1a;--shadow:0 1px 0 var(--hi) inset, 0 2px 6px #281c0c0f, 0 22px 48px -18px #281c0c47;--shadow-pop:0 1px 2px #281c0c14, 0 12px 32px -12px #281c0c4d;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#0b0a09;--surface:#141210;--surface2:#1c1916;--surface3:#26221e;--border:#2a2622;--border-strong:#3a3530;--text:#f4eee6;--text2:#a69d91;--text3:#776e64;--accent:#ff8d5e;--accent-bright:#ff6a2b;--accent-vivid:#ff6a2b;--accent-soft:#3a1a0c;--on-accent:#170903;--green:#6fd98a;--green-bright:#4dbf6c;--green-soft:#13261a;--orange:#d9a53c;--orange-bright:#f2b84b;--purple:#ab9ef7;--red:#ff6b5e;--run:#ff7a3d;--cycle:#4cc3cf;--swim:#6aa5ff;--strength:#a98bff;--rest:#8a8278;--series-easy:#6aa5ff;--series-long:#b493ff;--series-parkrun:#6fd98a;--series-race:#ff6b5e;--series-workout:#ffa04a;--series-runwalk:#a69d91;--on-tone:#120d08;--grad-button:linear-gradient(135deg, #ff6a2b 0%, #ff9440 100%);--glow:#ff6a2b24;--glass:#141210b3;--scrim:#0009;--hi:#fff0e10b;--shadow-card:0 1px 0 var(--hi) inset, 0 1px 2px #0006;--shadow:0 1px 0 var(--hi) inset, 0 24px 60px -18px #000000d9, 0 2px 8px #0006;--shadow-pop:0 1px 0 var(--hi) inset, 0 16px 40px -12px #000c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{background:var(--bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;scrollbar-gutter:stable}body{font-family:var(--font);background:var(--bg);color:var(--text);touch-action:pan-y;-webkit-overflow-scrolling:touch;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-variant-numeric:tabular-nums;font-feature-settings:"ss01", "cv11";min-height:100dvh;transition:background-color .4s var(--ease-out), color .4s var(--ease-out);font-size:15px;line-height:1.55;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:-1;background:radial-gradient(42% 60% at 82% 0%, var(--glow), transparent 70%), radial-gradient(36% 50% at 8% 4%, color-mix(in srgb, var(--ember-3) 10%, transparent), transparent 70%);height:70vh;position:fixed;inset:-20vh -10vw auto}body:after{content:"";pointer-events:none;z-index:1000;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}[data-theme=dark] body:after{opacity:.05}::selection{background:color-mix(in srgb, var(--accent-vivid) 30%, transparent)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}:focus-visible{outline:2px solid var(--accent-vivid);outline-offset:2px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent-vivid);outline-offset:1px;border-color:var(--accent-vivid)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}svg,.recharts-wrapper,.recharts-wrapper *,.recharts-surface,.recharts-tooltip-wrapper{outline:none!important}a{color:var(--accent);text-underline-offset:3px}.mono{font-family:var(--mono);letter-spacing:-.02em}h1,h2,h3{font-family:var(--display);letter-spacing:-.025em;font-variation-settings:"opsz" 48;font-weight:700;line-height:1.15}h3{font-family:var(--font);letter-spacing:-.01em}.app-layout{flex-direction:column;min-height:100dvh;display:flex}.nav{z-index:100;width:100%;max-width:1440px;padding:.75rem 1.5rem;padding-top:calc(.75rem + env(safe-area-inset-top));padding-left:calc(1.5rem + env(safe-area-inset-left));padding-right:calc(1.5rem + env(safe-area-inset-right));align-items:center;gap:1.25rem;margin:0 auto;display:flex;position:sticky;top:0}.nav:before{content:"";inset:calc(.45rem + env(safe-area-inset-top)) calc(.75rem + env(safe-area-inset-right)) .3rem calc(.75rem + env(safe-area-inset-left));z-index:-1;background:var(--glass);border:1px solid color-mix(in srgb, var(--border) 80%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(18px);box-shadow:var(--shadow-card);transition:box-shadow .3s var(--ease-out);border-radius:20px;position:absolute}.nav.is-scrolled:before{box-shadow:var(--shadow-pop)}.nav-brand{color:var(--text);align-items:center;gap:.6rem;text-decoration:none;display:inline-flex}.nav-logo{flex-shrink:0;width:32px;height:32px}.app-switcher{position:relative}button.nav-brand{cursor:pointer;transition:background .2s var(--ease-out);background:0 0;border:0;border-radius:14px;margin:-.3rem -.55rem -.3rem -.3rem;padding:.3rem .55rem .3rem .3rem;font-family:inherit}button.nav-brand:hover,button.nav-brand[aria-expanded=true]{background:color-mix(in srgb, var(--surface2) 80%, transparent)}.nav-brand .nav-logo{transition:transform .5s var(--ease-spring)}button.nav-brand:hover .nav-logo{transform:rotate(-8deg)scale(1.06)}.nav-brand-text{flex-direction:column;align-items:flex-start;line-height:1;display:inline-flex}.nav-switch-hint{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text2);align-items:center;gap:.15rem;margin-top:.22rem;font-size:.6rem;font-weight:500;display:inline-flex}.nav-switch-hint svg{transition:transform .25s var(--ease-out)}button.nav-brand[aria-expanded=true] .nav-switch-hint svg{transform:rotate(180deg)}.wordmark{font-family:var(--display);letter-spacing:-.045em;font-variation-settings:"opsz" 96;color:var(--text);font-size:1.28rem;font-weight:750}.wordmark-dot{color:var(--accent-vivid)}.app-switcher-menu{background:var(--surface);border:1px solid var(--border);min-width:15.5rem;box-shadow:var(--shadow);z-index:110;transform-origin:0 0;animation:pop-in .28s var(--ease-out) both;border-radius:18px;flex-direction:column;gap:2px;padding:.4rem;display:flex;position:absolute;top:calc(100% + .7rem);left:-.4rem}.app-switcher-label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text2);padding:.4rem .6rem .3rem;font-size:.62rem}.app-switcher-menu a{color:var(--text);border-radius:12px;align-items:center;gap:.75rem;padding:.5rem .6rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:background .15s;display:flex}.app-switcher-menu a:hover{background:var(--surface2)}.app-icon{color:#fff;width:36px;height:36px;box-shadow:0 1px 0 #ffffff4d inset, 0 4px 12px -4px var(--tone,var(--accent-vivid));border-radius:11px;flex-shrink:0;place-items:center;display:grid}.app-icon.fitness{--tone:#ff5a1f;background:linear-gradient(140deg,#ff7a2f,#e8380f)}.app-icon.finance{--tone:#1f9d72;background:linear-gradient(140deg,#3cc68f,#137a5a)}.app-switcher-name{flex-direction:column;line-height:1.2;display:flex}.app-switcher-sub:after{content:attr(data-blurb);color:var(--text2);font-size:.75rem;font-weight:500}.app-check{color:var(--accent-vivid);opacity:0;margin-left:auto}.app-switcher-menu a[aria-current=true] .app-check{opacity:1}.nav-links{background:color-mix(in srgb, var(--surface2) 75%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent);border-radius:999px;gap:2px;padding:4px;display:flex}.nav-links a{isolation:isolate;color:var(--text2);letter-spacing:-.005em;transition:color .2s var(--ease-out);border-radius:999px;align-items:center;gap:.45rem;padding:.42rem .95rem;font-size:.875rem;font-weight:600;text-decoration:none;display:inline-flex;position:relative}.nav-links a:hover,.nav-links a.active{color:var(--text)}.nav-links a svg{opacity:.75;transition:opacity .2s, transform .3s var(--ease-spring);flex-shrink:0}.nav-links a:hover svg{transform:translateY(-1px)}.nav-links a.active svg{opacity:1;color:var(--accent-vivid)}.nav-pill{z-index:-1;background:var(--surface);box-shadow:0 1px 2px #00000014, inset 0 0 0 1px var(--border);border-radius:999px;position:absolute;inset:0}[data-theme=dark] .nav-pill{background:var(--surface3);box-shadow:inset 0 1px 0 var(--hi), 0 1px 3px #00000080}.nav-badge{background:var(--red);min-width:1.2rem;height:1.2rem;color:var(--on-tone);font-family:var(--mono);animation:badge-in .5s var(--ease-spring) both;border-radius:999px;place-items:center;padding:0 .35rem;font-size:.66rem;font-weight:600;display:inline-grid}.nav-actions{align-items:center;gap:.35rem;margin-left:auto;display:flex}.nav-user{background:color-mix(in srgb, var(--surface2) 70%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent);color:var(--text);border-radius:999px;align-items:center;gap:.45rem;padding:.2rem .65rem .2rem .2rem;font-weight:550;display:inline-flex}.nav-user img,.nav-avatar{width:26px;height:26px;box-shadow:0 0 0 2px var(--surface);border-radius:50%;flex-shrink:0}.nav-avatar{background:var(--grad-ember);color:#fff;text-transform:uppercase;place-items:center;font-size:.72rem;font-weight:700;display:grid}.nav-panel{display:contents}.nav-current,.nav .nav-menu-toggle{display:none}.nav-menu-toggle{position:relative}.nav-menu-dot{background:var(--red);width:8px;height:8px;box-shadow:0 0 0 2px var(--surface);border-radius:50%;position:absolute;top:5px;right:5px}.nav-scrim{display:none}.theme-toggle{position:relative;overflow:hidden}.theme-toggle svg{animation:spin-in .5s var(--ease-spring) both}.main-content{padding:1.5rem;padding-left:calc(1.5rem + env(safe-area-inset-left));padding-right:calc(1.5rem + env(safe-area-inset-right));padding-bottom:calc(3rem + env(safe-area-inset-bottom));flex:1;width:100%;max-width:1440px;margin:0 auto}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.5rem;display:flex}.page-header h1{letter-spacing:-.045em;font-variation-settings:"opsz" 96;font-size:clamp(1.9rem,1.2rem + 2vw,2.75rem);font-weight:750;line-height:1.02}.btn{border-radius:var(--radius-sm);border:1px solid var(--border);min-height:2.35rem;font-size:.85rem;font-weight:600;font-family:var(--font);letter-spacing:-.005em;cursor:pointer;white-space:nowrap;background:var(--surface);color:var(--text);box-shadow:0 1px 0 var(--hi) inset, 0 1px 2px #0000000a;transition:background .18s var(--ease-out), color .18s, border-color .18s, transform .18s var(--ease-out), box-shadow .18s, filter .18s;justify-content:center;align-items:center;gap:.4rem;padding:.5rem 1rem;line-height:1.2;text-decoration:none;display:inline-flex;position:relative}.btn:hover{background:var(--surface2);border-color:var(--border-strong)}.btn:active:not(:disabled){transform:scale(.965)}.btn svg{flex-shrink:0}.btn-primary{background:var(--grad-button);color:var(--on-accent);box-shadow:0 1px 0 #ffffff47 inset, 0 8px 20px -8px color-mix(in srgb, var(--accent-vivid) 70%, transparent);border-color:#0000;overflow:hidden}.btn-primary:after{content:"";transition:transform .7s var(--ease-out);pointer-events:none;background:linear-gradient(105deg,#0000 30%,#ffffff59 50%,#0000 70%);position:absolute;inset:0;transform:translate(-110%)}.btn-primary:hover{background:var(--grad-button);filter:brightness(1.06);box-shadow:0 1px 0 #ffffff47 inset, 0 12px 26px -8px color-mix(in srgb, var(--accent-vivid) 80%, transparent);border-color:#0000}.btn-primary:hover:after{transform:translate(110%)}.btn-danger{background:color-mix(in srgb, var(--red) 12%, var(--surface));border-color:color-mix(in srgb, var(--red) 35%, transparent);color:var(--red);box-shadow:none}.btn-danger:hover{background:var(--red);border-color:var(--red);color:var(--on-tone)}.btn-quiet{box-shadow:none;background:0 0;border-color:#0000}.btn-quiet:hover{background:var(--surface2);border-color:#0000}.btn-lg{border-radius:14px;min-height:3rem;padding:.75rem 1.4rem;font-size:.98rem}.btn-sm{border-radius:10px;min-height:2rem;padding:.32rem .75rem;font-size:.8rem}.btn-icon{box-shadow:none;width:2.35rem;height:2.35rem;min-height:0;color:var(--text2);background:0 0;border-color:#0000;border-radius:999px;padding:0;font-size:1.25rem;line-height:0}.btn-icon:hover{color:var(--text);background:var(--surface2);border-color:#0000}.btn:disabled{opacity:.4;cursor:default}.btn:disabled:hover{filter:none;background:var(--surface);border-color:var(--border)}.btn-primary:disabled:hover{background:var(--grad-button);border-color:#0000}.btn-primary:disabled:after{display:none}.btn-icon:disabled:hover{background:0 0;border-color:#0000}.segment{background:var(--surface2);border:1px solid var(--border);border-radius:13px;gap:2px;padding:3px;display:inline-flex;box-shadow:inset 0 1px 2px #0000000a}.segment .btn{color:var(--text2);box-shadow:none;background:0 0;border-color:#0000;border-radius:10px}.segment .btn:hover{color:var(--text);background:0 0}.segment .btn.active,.segment .btn[aria-pressed=true],.segment .btn[aria-selected=true]{background:var(--surface);color:var(--text);border-color:var(--border);box-shadow:0 1px 0 var(--hi) inset, 0 2px 6px -2px #00000026;animation:seg-in .3s var(--ease-out)}[data-theme=dark] .segment .btn.active,[data-theme=dark] .segment .btn[aria-pressed=true],[data-theme=dark] .segment .btn[aria-selected=true]{background:var(--surface3)}input,select,textarea{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);min-height:2.5rem;color:var(--text);font-size:.9rem;font-family:var(--font);width:100%;padding:.55rem .8rem;transition:border-color .18s,box-shadow .18s,background .18s;box-shadow:inset 0 1px 2px #00000008}[data-theme=dark] input,[data-theme=dark] select,[data-theme=dark] textarea{background:var(--surface2)}input:hover,select:hover,textarea:hover{border-color:var(--border-strong)}textarea{resize:vertical;min-height:5rem;line-height:1.5}select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23948a7e' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right .8rem center;background-repeat:no-repeat;padding-right:2.2rem}input::placeholder,textarea::placeholder{color:var(--text3);opacity:1}input:focus,select:focus,textarea:focus{border-color:var(--accent-vivid);outline:none}input[type=range],input[type=checkbox],input[type=radio]{accent-color:var(--accent-vivid);min-height:0;box-shadow:none}input[type=checkbox],input[type=radio]{cursor:pointer;width:1.05rem;height:1.05rem}input[type=date]::-webkit-calendar-picker-indicator{opacity:.55;cursor:pointer}html input.switch[type=checkbox]{appearance:none;background:var(--border-strong);vertical-align:middle;cursor:pointer;width:2.65rem;height:1.5rem;min-height:0;transition:background .22s var(--ease-out), box-shadow .22s;border:0;border-radius:999px;flex-shrink:0;margin:0;padding:0;position:relative;box-shadow:inset 0 1px 2px #0000001f}html input.switch[type=checkbox]:before{content:"";width:calc(1.5rem - 6px);height:calc(1.5rem - 6px);transition:transform .3s var(--ease-spring);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0000004d}html input.switch[type=checkbox]:checked{background:var(--accent-vivid)}html input.switch[type=checkbox]:checked:before{transform:translate(1.15rem)}html input.switch[type=checkbox]:focus-visible{box-shadow:var(--focus-ring);outline:none}html input.switch[type=checkbox]:disabled{opacity:.45;cursor:not-allowed}[data-theme=dark] input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.85)}label,.pattern legend{font-family:var(--mono);color:var(--text2);letter-spacing:.1em;text-transform:uppercase;margin-bottom:.35rem;font-size:.66rem;font-weight:500;display:block}.form-group{margin-bottom:.95rem}.form-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.form-hint{color:var(--text2);margin-top:.3rem;font-size:.78rem;line-height:1.5}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:1.2rem}.card-error{border-color:color-mix(in srgb, var(--red) 50%, var(--border));color:var(--text)}.error-detail{color:var(--text2);word-break:break-word;margin-bottom:.75rem;font-size:.85rem}.error-stack{font-family:var(--mono);white-space:pre-wrap;margin-top:.3rem;font-size:.65rem}.card-title{font-family:var(--display);letter-spacing:-.025em;font-variation-settings:"opsz" 48;color:var(--text);align-items:center;gap:.6rem;margin-bottom:1rem;font-size:clamp(1.2rem,1.05rem + .55vw,1.5rem);font-weight:700;line-height:1.15;display:flex}.card-title:before{content:"";background:var(--grad-ember);border-radius:4px;flex-shrink:0;width:4px;height:.95em}.muted{color:var(--text2)}.muted-sm{color:var(--text2);font-size:.8rem}.garmin-head{align-items:center;gap:.85rem;margin-bottom:1rem;display:flex}.garmin-mark{background:var(--grad-ember);color:#fff;width:2.75rem;height:2.75rem;box-shadow:0 10px 22px -12px var(--accent-vivid);border-radius:.8rem;flex-shrink:0;justify-content:center;align-items:center;display:flex}.garmin-mark.is-syncing svg{animation:.9s linear infinite spin}.garmin-head .garmin-title{margin:0;font-size:clamp(1.6rem,1.2rem + 1.4vw,2.2rem)}.garmin-head .garmin-title:before{display:none}.garmin-status{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text2);white-space:nowrap;align-items:center;gap:.45rem;margin-left:auto;font-size:.72rem;font-weight:500;display:inline-flex}.garmin-status:before{content:"";background:var(--red);border-radius:50%;width:8px;height:8px}.garmin-status.is-ready:before{background:var(--green);box-shadow:0 0 0 0 color-mix(in srgb, var(--green) 50%, transparent);animation:ready-ping 2.4s var(--ease-out) infinite}@keyframes ready-ping{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--green) 45%, transparent)}70%,to{box-shadow:0 0 0 7px #0000}}.garmin-sync{width:18rem;max-width:100%;min-height:3.2rem;transition:background .3s, transform .25s var(--ease-spring);font-size:1rem}.garmin-sync.is-synced{animation:tick-pop .45s var(--ease-spring)}.sync-progress{background:var(--surface3);opacity:0;border-radius:3px;width:18rem;max-width:100%;height:6px;margin-top:.7rem;transition:opacity .4s;overflow:hidden}.sync-progress i{border-radius:inherit;background:var(--grad-ember);transform-origin:0;height:100%;display:block;transform:scaleX(.04)}.sync-progress.is-running,.sync-progress.is-done,.sync-progress.is-error{opacity:1}.sync-progress.is-running i{transition:transform 14s cubic-bezier(.08,.7,.2,1);transform:scaleX(.92)}.sync-progress.is-done i{transition:transform .35s var(--ease-out);transform:scaleX(1)}.sync-progress.is-error i{background:var(--red);transition:transform .35s var(--ease-out);transform:scaleX(1)}.sync-progress.is-done,.sync-progress.is-error{animation:.6s 1.8s forwards fade-out}@keyframes fade-out{to{opacity:0}}@media (width<=768px){.garmin-sync,.sync-progress{width:100%}}.sync-result{animation:pop-in .35s var(--ease-out) both}.activity-row{animation:rise .45s var(--ease-out) both;animation-delay:calc(var(--i,0) * 30ms)}.activity-row.is-new td{animation:new-flash 1.8s var(--ease-out) both}@keyframes new-flash{0%,30%{background:color-mix(in srgb, var(--accent-vivid) 16%, transparent)}}.badge{letter-spacing:.01em;white-space:nowrap;border-radius:999px;align-items:center;gap:.25rem;padding:.14rem .55rem;font-size:.68rem;font-weight:650;line-height:1.4;display:inline-flex}.badge-run{background:var(--run);color:var(--on-tone)}.badge-cycle{background:var(--cycle);color:var(--on-tone)}.badge-strength{background:var(--strength);color:var(--on-tone)}.badge-rest,.badge-muted{background:var(--surface2);color:var(--text2);box-shadow:inset 0 0 0 1px var(--border)}.badge-deload{background:color-mix(in srgb, var(--orange-bright) 20%, var(--surface));color:var(--orange);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--orange-bright) 40%, transparent)}.badge-ill{background:color-mix(in srgb, var(--red) 14%, var(--surface));color:var(--red);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--red) 35%, transparent)}.badge-current{background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent-vivid) 30%, transparent)}.badge-current:before{content:"";background:var(--accent-vivid);width:6px;height:6px;animation:pulse 2.2s var(--ease-out) infinite;border-radius:50%}.workout-type-icon{border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:.72rem;font-weight:800;display:flex;box-shadow:inset 0 1px #ffffff40}.workout-type-icon.run{background:var(--run);color:var(--on-tone)}.workout-type-icon.cycle{background:var(--cycle);color:var(--on-tone)}.workout-type-icon.strength{background:var(--strength);color:var(--on-tone)}.workout-type-icon.swim{background:var(--swim);color:var(--on-tone)}.modal-overlay{background:var(--scrim);-webkit-backdrop-filter:blur(6px)saturate(1.2);z-index:200;animation:fade-in .25s var(--ease-out) both;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overscroll-behavior:contain;width:100%;max-width:800px;max-height:88vh;box-shadow:var(--shadow);animation:modal-in .42s var(--ease-out) both;padding:1.6rem;position:relative;overflow-y:auto}.modal:before{content:"";background:var(--grad-ember);opacity:.9;border-radius:0 0 2px 2px;height:2px;position:absolute;top:0;left:1.6rem;right:1.6rem}.modal h2{letter-spacing:-.035em;margin-bottom:1rem;font-size:1.5rem;font-weight:750}.modal-header{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.9rem;display:flex}.modal-close{font-size:1.4rem}.modal-close:hover{transform:rotate(90deg)}.modal-close{transition:transform .3s var(--ease-spring), background .2s, color .2s}.menu-wrap{position:relative}.menu{z-index:60;background:var(--surface);border:1px solid var(--border);min-width:200px;box-shadow:var(--shadow);transform-origin:100% 0;animation:pop-in .24s var(--ease-out) both;border-radius:14px;margin-top:.4rem;padding:.3rem;position:absolute;top:100%;right:0;overflow:hidden}.menu-item{width:100%;color:var(--text);cursor:pointer;text-align:left;font-size:.86rem;font-weight:550;font-family:var(--font);background:0 0;border:none;border-radius:9px;padding:.55rem .75rem;transition:background .15s;display:block}.menu-item:hover{background:var(--surface2)}.week-list{flex-direction:column;gap:.6rem;display:flex}.week-list>.card{animation:rise .55s var(--ease-out) both}.week-list>.card:nth-child(2){animation-delay:30ms}.week-list>.card:nth-child(3){animation-delay:60ms}.week-list>.card:nth-child(4){animation-delay:90ms}.week-list>.card:nth-child(5){animation-delay:.12s}.week-list>.card:nth-child(6){animation-delay:.15s}.week-list>.card:nth-child(7){animation-delay:.18s}.week-list>.card:nth-child(8){animation-delay:.21s}.week-list>.card:nth-child(9){animation-delay:.24s}.week-total{font-family:var(--display);letter-spacing:-.02em;font-variant-numeric:proportional-nums;font-variation-settings:"opsz" 96;background:var(--grad-ember);color:#0000;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;width:fit-content;margin:.35rem 0 .25rem;padding-right:.1em;font-size:clamp(2.6rem,2rem + 2.4vw,3.6rem);font-weight:700;line-height:1}.week-total .unit{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text2);-webkit-text-fill-color:var(--text2);margin-left:.5rem;font-size:.7rem;font-weight:500}.week-total .hard{color:var(--red);-webkit-text-fill-color:var(--red);margin-left:1.1rem;font-size:.55em}.week-tally{border-top:1px dashed var(--border);grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.35rem 1rem;margin-top:.9rem;padding-top:.9rem;font-size:.84rem;list-style:none;display:grid}.week-tally li{align-items:center;gap:.55rem;display:flex}.week-tally .tone{background:var(--tone,var(--rest));width:9px;height:9px;box-shadow:0 0 0 3px color-mix(in srgb, var(--tone,var(--rest)) 18%, transparent);border-radius:3px;flex-shrink:0}.week-tally .tone.run{--tone:var(--run)}.week-tally .tone.cycle{--tone:var(--cycle)}.week-tally .tone.strength{--tone:var(--strength)}.week-tally .tone.time{--tone:var(--text)}.week-days{grid-template-columns:repeat(7,minmax(0,1fr));align-items:stretch;gap:.55rem;display:grid}.week-days>.day-row{animation:rise .55s var(--ease-out) both;animation-delay:calc(var(--i,0) * 35ms)}.day-row{cursor:pointer;min-height:15rem;font:inherit;color:inherit;text-align:left;border-radius:var(--radius);width:100%;transition:background .2s var(--ease-out), border-color .2s, transform .25s var(--ease-out), box-shadow .25s var(--ease-out), opacity .2s;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;flex-direction:column;padding:.75rem .6rem .6rem;display:flex}.day-head{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text2);flex-wrap:wrap;align-items:baseline;gap:.2rem .4rem;padding:0 .2rem;font-size:.7rem;display:flex}.day-head .day-date{color:var(--text);font-weight:600}.day-head .badge{font-family:var(--font);letter-spacing:.02em;text-transform:none;margin-left:auto}.day-row.is-today .day-name{color:var(--accent)}.day-sessions{flex-direction:column;gap:.45rem;margin-top:.6rem;display:flex}.day-rest{font-family:var(--display);color:var(--text3);padding:.7rem .2rem 0;font-size:1rem;font-weight:600}.day-row.is-complete .day-head .day-date:after{content:" ✓";color:var(--green)}.session{--tone:var(--rest);color:var(--on-tone);background:linear-gradient(155deg, color-mix(in srgb, var(--tone) 86%, #fff) 0%, var(--tone) 70%);box-shadow:inset 0 1px 0 #ffffff38, 0 10px 22px -16px var(--tone);transition:transform .28s var(--ease-spring), box-shadow .25s var(--ease-out), opacity .2s, filter .2s;animation:rise .5s var(--ease-out) both;animation-delay:calc(var(--i,0) * 35ms + .12s);border-radius:14px;align-items:flex-start;gap:.3rem;padding:.6rem .25rem .65rem .7rem;display:flex;position:relative}.session.tone-run{--tone:var(--run)}.session.tone-cycle{--tone:var(--cycle)}.session.tone-strength{--tone:var(--strength)}.session.tone-swim{--tone:var(--swim)}.session-main{flex-direction:column;flex:1;gap:.12rem;min-width:0;display:flex}.session-kind{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;opacity:.8;font-size:.6rem;font-weight:500}.session-title{font-family:var(--display);letter-spacing:-.01em;overflow-wrap:anywhere;font-size:1rem;font-weight:700;line-height:1.15}.session-details{font-family:var(--mono);opacity:.88;overflow-wrap:anywhere;font-size:.68rem;font-weight:500}.session.is-done{filter:saturate(.8)}.session.draggable:hover{box-shadow:inset 0 1px 0 #ffffff38, 0 16px 28px -14px var(--tone);transform:translateY(-2px)rotate(-.4deg)}.session.draggable.is-dragging{opacity:.3;transform:scale(.97)}.session .toggle-dot{border-color:color-mix(in srgb, var(--on-tone) 70%, transparent);width:26px;height:26px}.session .toggle-dot:after{width:0;height:0}.session .toggle-dot.done{background:var(--on-tone);border-color:var(--on-tone);box-shadow:0 0 0 3px color-mix(in srgb, var(--on-tone) 22%, transparent)}.session .toggle-dot.done:after{border-color:var(--tone);width:5px;height:10px}.session .drag-handle{min-width:30px;min-height:30px;color:color-mix(in srgb, var(--on-tone) 70%, transparent)}.session .drag-handle:hover{color:var(--on-tone)}@media (hover:hover) and (pointer:fine){.session .drag-handle{display:none}}@media (width>=769px) and (width<=1100px){.week-days{gap:.4rem}.day-row{padding:.65rem .4rem .5rem}.session{padding-left:.55rem}.session-title{font-size:.9rem}}@media (width<=768px){.week-days{grid-template-columns:1fr;gap:.6rem}.day-row{min-height:0;padding:.8rem .8rem .85rem}.day-sessions{grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));display:grid}.day-rest{padding-top:.35rem}}.day-row:hover{background:color-mix(in srgb, var(--surface2) 60%, var(--surface));box-shadow:var(--shadow-pop);transform:translateY(-1px)}.day-row:active{transform:scale(.995)}.day-row.is-today{border-color:color-mix(in srgb, var(--accent-vivid) 55%, var(--border));box-shadow:0 0 0 1px color-mix(in srgb, var(--accent-vivid) 55%, transparent), 0 10px 30px -14px var(--accent-vivid);background:radial-gradient(120% 140% at 0% 0%, color-mix(in srgb, var(--accent-vivid) 7%, transparent), transparent 60%), var(--surface)}.workout-line{align-items:center;gap:.55rem;margin-bottom:.2rem;font-size:.88rem;display:flex}.workout-line-main{flex-wrap:wrap;flex:1;align-items:center;gap:.4rem;min-width:0;display:flex}.toggle-dot{border:1.75px solid var(--tone,var(--text2));color:#0000;cursor:pointer;width:24px;height:24px;transition:background .2s var(--ease-out), border-color .2s, transform .25s var(--ease-spring);background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:0;display:inline-flex;position:relative}.toggle-dot:hover{transform:scale(1.12)}.toggle-dot:after{content:"";background:var(--tone,var(--text2));width:8px;height:8px;transition:transform .25s var(--ease-spring);border-radius:50%}.toggle-dot:hover:after{transform:scale(1.25)}.toggle-dot.tone-run{--tone:var(--run)}.toggle-dot.tone-cycle{--tone:var(--cycle)}.toggle-dot.tone-strength{--tone:var(--strength)}.toggle-dot.tone-swim{--tone:var(--swim)}.toggle-dot.done{background:var(--green);border-color:var(--green);animation:tick-pop .45s var(--ease-spring);box-shadow:0 0 0 4px color-mix(in srgb, var(--green) 18%, transparent)}.toggle-dot.done:after{border:solid var(--surface);background:0 0;border-width:0 2.25px 2.25px 0;border-radius:0;width:5px;height:10px;transform:translateY(-1px)rotate(45deg)}.cal-grid{grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:1rem;display:grid}.cal-head{text-align:center;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text2);padding:.35rem 0;font-size:.64rem;font-weight:500}.cal-cell{background:color-mix(in srgb, var(--surface2) 45%, transparent);color:var(--text);font-family:var(--font);cursor:default;min-height:3rem;transition:background .18s, transform .25s var(--ease-spring), border-color .18s;border:1px solid #0000;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:.35rem .1rem;display:flex}.cal-cell.has-data{cursor:pointer;background:var(--surface2)}.cal-cell.has-data:hover{background:var(--surface3);transform:translateY(-1px)}.cal-cell.is-today{border-color:var(--accent-vivid);box-shadow:0 0 0 1px var(--accent-vivid) inset}.cal-cell.is-selected{background:var(--text);color:var(--bg);transform:scale(1.04)}.cal-cell.is-selected .muted,.cal-cell.is-selected span{color:var(--bg)}.cal-day-num{font-family:var(--mono);font-size:.78rem;font-weight:500}.cal-dots{flex-wrap:wrap;justify-content:center;gap:3px;display:flex}.cal-dot{border-radius:50%;width:6px;height:6px}.draggable{cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.draggable.is-dragging{opacity:.35}.workout-line.draggable,.draggable-card{background:var(--surface2);border:1px solid var(--border);border-radius:12px;margin-bottom:.35rem;padding:.3rem 0 .3rem .55rem;transition:border-color .18s,background .18s}.workout-line.draggable:hover,.draggable-card:hover{border-color:var(--border-strong)}.drag-handle{touch-action:none;min-width:44px;min-height:36px;color:var(--text3);cursor:grab;justify-content:center;align-self:stretch;align-items:center;margin-left:auto;transition:color .15s;display:flex}.drag-handle:hover{color:var(--text)}.draggable.is-dragging .drag-handle{color:var(--accent-vivid)}.day-row.is-drop-target,.cal-cell.is-drop-target{outline:2px dashed var(--accent-vivid);outline-offset:-2px;background:color-mix(in srgb, var(--accent-vivid) 8%, var(--surface))}.drag-ghost{pointer-events:none;z-index:1000;background:var(--grad-ember);color:#fff;box-shadow:0 12px 28px -8px color-mix(in srgb, var(--accent-vivid) 70%, transparent);border-radius:999px;padding:.35rem .8rem;font-size:.8rem;font-weight:700;position:fixed;transform:rotate(-3deg)}.drag-ghost.tone-run,.drag-ghost.tone-cycle,.drag-ghost.tone-strength,.drag-ghost.tone-swim{background:var(--tone);color:var(--on-tone);box-shadow:0 12px 28px -8px color-mix(in srgb, var(--tone) 70%, transparent)}.drag-ghost.tone-run{--tone:var(--run)}.drag-ghost.tone-cycle{--tone:var(--cycle)}.drag-ghost.tone-strength{--tone:var(--strength)}.drag-ghost.tone-swim{--tone:var(--swim)}body:has(.drag-ghost){cursor:grabbing}.table-scroll{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:.82rem}.table th{text-align:left;border-bottom:1px solid var(--border);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text2);white-space:nowrap;padding:.55rem .6rem;font-size:.64rem;font-weight:500}.table td{border-bottom:1px solid color-mix(in srgb, var(--border) 70%, transparent);white-space:nowrap;padding:.5rem .6rem}.table tbody tr{transition:background .15s}.table tbody tr:hover td{background:color-mix(in srgb, var(--surface2) 70%, transparent)}.table .num{text-align:right;font-family:var(--mono);letter-spacing:-.02em;font-size:.8rem}.recharts-cartesian-axis-tick-value,.recharts-label{font-family:var(--mono);font-size:.66rem}.recharts-cartesian-grid line{stroke-dasharray:2 4}.recharts-default-tooltip{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--shadow-pop);font-size:.8rem;border-color:var(--border)!important;background:color-mix(in srgb, var(--surface) 92%, transparent)!important;border-radius:12px!important;padding:.6rem .8rem!important}.recharts-tooltip-label{font-family:var(--mono);color:var(--text2);font-size:.7rem;margin-bottom:.2rem!important}.empty-state{text-align:center;color:var(--text2);animation:rise .6s var(--ease-out) both;padding:4rem 1rem 3rem}.empty-state:before{content:"";background:var(--grad-ember);opacity:.85;border-radius:18px;width:64px;height:64px;margin:0 auto 1.25rem;display:block;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cg transform='translate(256 256) skewX(-14) translate(-256 -256)'%3E%3Cpath d='M168 132V380M232 132V380M296 132V380M360 132V380' stroke='%23000' stroke-width='46' stroke-linecap='round'/%3E%3C/g%3E%3Cpath d='M92 336L420 188' stroke='%23000' stroke-width='48' stroke-linecap='round'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cg transform='translate(256 256) skewX(-14) translate(-256 -256)'%3E%3Cpath d='M168 132V380M232 132V380M296 132V380M360 132V380' stroke='%23000' stroke-width='46' stroke-linecap='round'/%3E%3C/g%3E%3Cpath d='M92 336L420 188' stroke='%23000' stroke-width='48' stroke-linecap='round'/%3E%3C/svg%3E") 50%/contain no-repeat}.empty-state h2{color:var(--text);letter-spacing:-.035em;margin-bottom:.5rem;font-size:1.6rem;font-weight:750}.empty-state p{max-width:34rem;margin:0 auto}.spinner{background:conic-gradient(from 0deg, transparent 0deg, var(--ember-1) 200deg, var(--ember-3) 340deg, transparent 360deg);border-radius:50%;width:30px;height:30px;margin:3rem auto;animation:.8s linear infinite spin;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 3.5px),#000 calc(100% - 3px));mask:radial-gradient(farthest-side,#0000 calc(100% - 3.5px),#000 calc(100% - 3px))}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}@keyframes pop-in{0%{opacity:0;transform:translateY(-6px)scale(.96)}}@keyframes modal-in{0%{opacity:0;transform:translateY(16px)scale(.97)}}@keyframes sheet-in{0%{transform:translateY(100%)}}@keyframes seg-in{0%{transform:scale(.94)}}@keyframes badge-in{0%{transform:scale(0)}}@keyframes spin-in{0%{opacity:0;transform:rotate(-90deg)scale(.4)}}@keyframes tick-pop{0%{transform:scale(.6)}60%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent-vivid) 55%, transparent)}70%,to{box-shadow:0 0 0 6px #0000}}@keyframes grow{0%{transform:scaleX(0)}}@keyframes fold-open{0%{opacity:0;transform:translateY(-4px)}}.split-parts{margin:0 0 .35rem;padding:0;font-size:.85rem;list-style:none}.split-editor{grid-template-columns:minmax(0,1fr);gap:.5rem;padding:.25rem 0;display:grid}.split-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.split-row input{width:7rem}.categoriser{grid-template-columns:minmax(0,1fr);gap:.5rem;min-width:0;display:grid}.category-picker{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.category-picker select{flex-shrink:0;width:13rem;max-width:100%}.categoriser label{font-family:var(--font);text-transform:none;letter-spacing:normal;color:var(--text);align-items:center;gap:.4rem;margin:0;font-size:.82rem;display:inline-flex}.categoriser input[type=checkbox]{width:1.05rem}.categoriser-offer{margin-bottom:.75rem;padding:.7rem 1rem;font-size:.85rem}.categoriser-rule{gap:.35rem;display:grid}.categoriser-exception{gap:.4rem;display:grid}.categoriser .categoriser-offer{margin:0;padding:0}.finance-filters{margin-bottom:1rem}.card.txn-card{padding:0;overflow:hidden}.txn-list{margin:0;padding:0;list-style:none}.txn-list li+li{border-top:1px solid color-mix(in srgb, var(--border) 75%, transparent)}.txn-list>li{animation:rise .45s var(--ease-out) both}.txn-list>li:nth-child(2){animation-delay:20ms}.txn-list>li:nth-child(3){animation-delay:40ms}.txn-list>li:nth-child(4){animation-delay:60ms}.txn-list>li:nth-child(5){animation-delay:80ms}.txn-list>li:nth-child(6){animation-delay:.1s}.txn-list>li:nth-child(7){animation-delay:.12s}.txn-list>li:nth-child(n+8){animation-delay:.14s}.txn-list-head,.txn-item{grid-template-columns:6.5rem minmax(0,1.4fr) minmax(0,1fr) minmax(0,.8fr) 6.5rem;align-items:baseline;gap:.25rem 1rem;padding:.75rem 1.2rem;display:grid}.txn-list-head{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--surface2) 50%, transparent);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text2);font-size:.64rem}.txn-list-head .num{text-align:right}.txn-item{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;font-size:.87rem;transition:background .15s;position:relative}.txn-item:before{content:"";background:var(--grad-ember);width:3px;transition:transform .25s var(--ease-out);border-radius:0 3px 3px 0;position:absolute;top:22%;bottom:22%;left:0;transform:scaleY(0)}.txn-item:hover{background:color-mix(in srgb, var(--surface2) 70%, transparent)}.txn-item:hover:before{transform:scaleY(1)}.txn-item:focus-visible{box-shadow:inset 0 0 0 2px var(--accent-vivid);border-radius:0;outline:none}.txn-date{color:var(--text2);font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.8rem}.txn-merchant{flex-wrap:wrap;align-items:center;gap:.2rem .4rem;min-width:0;font-weight:600;display:flex}.txn-merchant .attention-note{flex-basis:100%;margin:0;font-weight:400}.txn-category,.txn-starling{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text2);overflow:hidden}.txn-uncategorised{color:var(--red);font-weight:600}.txn-amount{text-align:right;font-family:var(--mono);white-space:nowrap;letter-spacing:-.02em;font-size:.86rem;font-weight:500}.txn-in{color:var(--green)}@media (width<=768px){.form-row.finance-filters{grid-template-columns:1fr 1fr;gap:.5rem}.finance-filters input[type=search]{grid-column:1/-1}.txn-list-head{display:none}.txn-item{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"merchant amount""date category";gap:.2rem .75rem;padding:.8rem .95rem}.txn-merchant{grid-area:merchant}.txn-amount{grid-area:amount}.txn-date{grid-area:date;font-size:.74rem}.txn-category{text-align:right;max-width:55vw;color:var(--text2);grid-area:category;font-size:.78rem}.txn-category.txn-uncategorised{color:var(--red)}.txn-starling{display:none}}.txn-detail .modal-header h2{overflow-wrap:anywhere;margin:0}.txn-detail-amount{font-family:var(--display);letter-spacing:-.02em;font-variant-numeric:proportional-nums;font-variation-settings:"opsz" 96;margin:0 0 1rem;font-size:2.4rem;font-weight:700;line-height:1}.txn-detail-facts{background:var(--surface2);border-radius:14px;gap:.45rem;margin:0 0 1.1rem;padding:.85rem 1rem;font-size:.88rem;display:grid}.txn-detail-facts>div{grid-template-columns:9rem minmax(0,1fr);gap:.75rem;display:grid}.txn-detail-facts dt{color:var(--text2)}.txn-detail-facts dd{overflow-wrap:anywhere;margin:0}.txn-detail-heading{border-top:1px solid var(--border);font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--text2);margin:0 0 .6rem;padding-top:1rem;font-size:.66rem;font-weight:500}.txn-detail .category-picker select{flex:1;width:auto;min-width:min(10rem,100%)}.modal.sheet{max-width:34rem}@media (width<=768px){.modal-overlay:has(>.sheet){align-items:flex-end;padding:0}.modal.sheet{width:100%;max-width:none;max-height:90dvh;padding:1.6rem 1.1rem calc(1.4rem + env(safe-area-inset-bottom));animation:sheet-in .45s var(--ease-out) both;border-bottom:0;border-radius:26px 26px 0 0}.modal.sheet:before{background:var(--border-strong);opacity:1;border-radius:999px;width:40px;height:5px;top:.6rem;left:50%;right:auto;transform:translate(-50%)}.txn-detail-facts>div{grid-template-columns:7.5rem minmax(0,1fr)}.txn-detail .split-row select{flex:1 1 0;min-width:0}.txn-detail .split-row input{flex:none;width:6rem}}.attention-note{color:var(--red);margin-top:.2rem;font-size:.8rem}.badge-over{background:color-mix(in srgb, var(--red) 14%, var(--surface));color:var(--red);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--red) 35%, transparent)}.month-summary{animation:rise .55s var(--ease-out) both;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:1rem 1.5rem;margin-bottom:1rem;padding:1.3rem 1.4rem;display:grid;position:relative;overflow:hidden}.month-summary:before{content:"";background:radial-gradient(closest-side, var(--glow), transparent);pointer-events:none;width:50%;height:160%;position:absolute;inset:-40% -10% auto auto}.month-summary-item{flex-direction:column;gap:.2rem;min-width:0;display:flex;position:relative}.month-summary-label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--text2);font-size:.64rem;font-weight:500}.month-summary-value{font-variant-numeric:tabular-nums;font-weight:600}.month-summary .over{color:var(--red)}.month-summary-headline{font-family:var(--display);letter-spacing:-.02em;font-variant-numeric:proportional-nums;font-variation-settings:"opsz" 96;font-size:clamp(1.5rem,1.1rem + 1.2vw,2rem);font-weight:700;line-height:1.1}.finance-group-title{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--text2);margin:1.5rem 0 .6rem;font-size:.66rem;font-weight:500}.fold-title .budget-row-label{display:block}.fold-title .budget-bar{grid-column:auto;margin-top:.5rem;display:block}.txn-row{cursor:pointer}.txn-row:hover{background:var(--surface2)}.txn-link{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.txn-link:hover{color:var(--accent)}.month-txns{table-layout:fixed}.month-txns .month-txn-date{width:6.5rem;color:var(--text2);font-family:var(--mono);font-size:.76rem}.month-txns td.num{width:6.5rem}.month-txn-merchant{overflow:hidden}.month-txn-merchant .txn-link{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:550;display:block;overflow:hidden}@media (width<=480px){.month-txns .month-txn-date{width:5.4rem;font-size:.7rem}.month-txns td.num{width:5.6rem}}.budget-list{margin:0;padding:.35rem 0;list-style:none}.budget-row+.budget-row{border-top:1px solid var(--border)}.budget-row-head{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:1fr auto;gap:.4rem .75rem;padding:.85rem 1.2rem;transition:background .15s;display:grid}.budget-row-head:hover{background:color-mix(in srgb, var(--surface2) 70%, transparent)}.budget-row-label{font-weight:600}.budget-row-amount{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text2);font-size:.82rem}.budget-row-amount.over{color:var(--red)}.budget-bar{background:var(--surface2);border-radius:999px;grid-column:1/-1;height:8px;overflow:hidden;box-shadow:inset 0 1px 2px #0000000f}[data-theme=dark] .budget-bar{background:var(--surface3)}.budget-bar-fill{border-radius:inherit;background:linear-gradient(90deg, color-mix(in srgb, var(--green) 70%, var(--surface)), var(--green));transform-origin:0;height:100%;animation:grow 1s var(--ease-out) .1s both;display:block}.budget-bar-fill.over{background:linear-gradient(90deg, var(--ember-2), var(--red))}.budget-row-empty{padding:0 1.2rem .85rem}.budget-row .table{margin-bottom:.5rem}.badge-missing{background:color-mix(in srgb, var(--red) 14%, var(--surface));color:var(--red);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--red) 35%, transparent)}.badge-paid{background:var(--green-soft);color:var(--green);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--green) 35%, transparent)}.card.year-scroll{padding:0}.year-grid th[scope=row],.year-grid thead th:first-child{white-space:nowrap;background:var(--surface);z-index:1;box-shadow:inset -1px 0 0 var(--border);padding-left:1rem;position:sticky;left:0}.year-grid th[scope=row]{text-transform:none;letter-spacing:normal;color:var(--text);font-size:.86rem;font-family:var(--font);font-weight:600}.year-grid thead th:first-child{z-index:2}.year-grid tbody tr:hover th[scope=row]{background:var(--surface2)}.year-grid th.year-current{color:var(--accent)}.year-grid tr>:last-child{padding-right:1rem}.year-grid td:has(>a){padding:0}.year-grid td a{color:inherit;padding:.5rem .6rem;text-decoration:none;transition:background .15s;display:block}.year-grid td a:hover{text-decoration:underline}.year-grid td.over,.year-grid td.over a{color:var(--red);font-weight:600}.year-grid td.within,.year-grid td.within a{color:var(--green);font-weight:600}.year-grid td.within{background:color-mix(in srgb, var(--green) 9%, transparent)}.year-grid td.over{background:color-mix(in srgb, var(--red) 10%, transparent)}.year-ring-fenced td.over,.year-ring-fenced td.over a{color:var(--orange)}.year-grid .year-ring-fenced td.over{background:color-mix(in srgb, var(--orange-bright) 14%, transparent)}.year-grid .year-group th[scope=rowgroup]{text-align:left;border-top:1px solid var(--border-strong);background:var(--surface);padding-top:1.1rem}.year-group-title span{position:sticky;left:1rem}@media (width<=768px){.year-grid th[scope=row],.year-grid thead th:first-child{white-space:normal;min-width:6.5rem;max-width:7.5rem;padding-left:.75rem;font-size:.78rem;line-height:1.25}.year-grid tr>:last-child{padding-right:.75rem}}.year-grid th.year-month{min-width:6.5rem}.year-total th,.year-total td{border-top:1px solid var(--border-strong);font-weight:650}.bill-lines{margin-bottom:.5rem}.bill-lines .bill-edit{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.4rem;display:flex}@media (width<=768px){.bill-lines,.bill-lines tbody{display:block}.bill-lines tr{border-bottom:1px solid color-mix(in srgb, var(--border) 70%, transparent);grid-template-columns:minmax(0,1fr) auto;display:grid}.bill-lines td{border-bottom:0;display:block}.bill-lines .bill-name{white-space:normal;overflow-wrap:anywhere;grid-row:span 2}.bill-lines .bill-name .muted-sm{white-space:nowrap}.bill-lines .bill-amount{padding-bottom:.1rem}.bill-lines .bill-status{text-align:right;padding-top:0}.bill-lines .bill-actions{grid-column:1/-1;padding-top:0}.bill-lines .bill-actions:empty{display:none}.bill-lines .bill-edit input{flex:8rem;min-width:0;max-width:100%}}.budget-setting{border:0;min-width:0;margin:0;padding:.6rem 0}.budget-setting+.budget-setting{border-top:1px solid var(--border)}.budget-setting legend{padding:0;font-weight:600}.fold-card{margin-bottom:1rem;padding:0;overflow:hidden}.finance-setup select{width:auto;max-width:100%}.setup-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.setup-name{width:14rem;max-width:100%}.setup-amount{width:8rem}@media (width<=768px){.rule-lines,.rule-lines tbody{display:block}.rule-lines tr{border-bottom:1px solid color-mix(in srgb, var(--border) 70%, transparent);flex-wrap:wrap;align-items:center;display:flex}.rule-lines td{border-bottom:0;display:block}.rule-lines .rule-merchant{white-space:normal;overflow-wrap:anywhere;flex:1 0 100%;padding-bottom:0;font-weight:550}.rule-lines .rule-target{flex:1 1 0;min-width:0}.finance-setup .rule-lines select{width:100%}}.setup-add{margin-top:1rem}.setup-cats{grid-template-columns:minmax(0,1fr);gap:.6rem;margin-top:.85rem;display:grid}.setup-cat{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);transition:box-shadow .3s var(--ease-out), border-color .2s;position:relative}.setup-cat:hover{border-color:var(--border-strong)}.setup-cat:has(.fold-open){box-shadow:var(--shadow);border-color:var(--border-strong)}.setup-cat:has(>.setup-cat-move) .fold-head{padding-right:6rem}.setup-cat .fold-head{border-radius:var(--radius)}.setup-cat .fold-open>.fold-head{border-radius:var(--radius) var(--radius) 0 0}.setup-cat .fold-title{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.setup-cat-archived .fold-title{color:var(--text2)}.setup-cat-move{gap:.25rem;display:flex;position:absolute;top:.55rem;right:.6rem}.setup-cat-move .btn{justify-content:center;min-width:2rem}.setup-panel{border-top:1px solid var(--border)}.setup-panel>.setup-block{padding:.95rem 0}.setup-panel>.setup-block+.setup-block{border-top:1px dashed var(--border)}.setup-panel>.setup-block:last-of-type{padding-bottom:0}.setup-block-title,.setup-panel .budget-setting legend{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text2);margin:0 0 .55rem;padding:0;font-size:.64rem;font-weight:500}.setup-block>.muted-sm{margin:0 0 .5rem}.setup-panel .budget-setting{padding:0}.setup-check{cursor:pointer;font-family:var(--font);text-transform:none;letter-spacing:normal;color:var(--text);align-items:flex-start;gap:.65rem;margin:0;font-size:.9rem;font-weight:600;display:flex}.setup-check .switch{margin-top:.1rem}.setup-check .muted-sm{font-weight:400;display:block}.amount-history{font-size:.8rem;font-family:var(--mono);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:.35rem;margin:0 0 .6rem;padding:0;list-style:none;display:flex}.amount-history-item{font:inherit;color:var(--text);cursor:pointer;background:var(--surface2);box-shadow:inset 0 0 0 1px var(--border);border:0;border-radius:999px;align-items:center;gap:.4rem;padding:.22rem .65rem;display:inline-flex}.amount-history-item svg{color:var(--text2)}.amount-history-item:hover,.amount-history-item.is-editing{box-shadow:inset 0 0 0 1px var(--accent)}.history-edit{margin:0 0 .7rem}.setup-cat .fold-body>.budget-setting{border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--surface2) 40%, transparent);margin-top:.6rem;padding:.8rem .9rem}.setup-cat .fold-body>.budget-setting+.budget-setting{border-top:1px solid var(--border)}@media (width<=768px){.finance-setup .fold-body{padding:0 .85rem .85rem}}.fold{min-width:0}.fold+.fold{border-top:1px solid var(--border)}.fold-head{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:.75rem;padding:.85rem 1.2rem;transition:background .15s;display:grid}.fold-head:hover{background:color-mix(in srgb, var(--surface2) 70%, transparent)}.fold-title{overflow-wrap:break-word;min-width:0;font-weight:600}.fold-summary{color:var(--text2);font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;font-size:.78rem}.fold-chevron{width:1.6rem;height:1.6rem;color:var(--text2);background:var(--surface2);transition:transform .35s var(--ease-spring), background .2s, color .2s;border-radius:50%;place-items:center;display:grid}.fold-head:hover .fold-chevron{color:var(--text)}.fold-open>.fold-head .fold-chevron{background:var(--accent-soft);color:var(--accent);transform:rotate(180deg)}.fold-body{min-width:0;animation:fold-open .35s var(--ease-out) both;padding:0 1.2rem 1rem}@media (width<=480px){.fold-head{grid-template-columns:1fr auto;gap:.2rem .75rem}.fold-summary{text-align:left;grid-area:2/1}.fold-chevron{grid-area:1/2}}.error-note{color:var(--red);font-size:.85rem}.result-note{color:var(--text2);font-size:.85rem}.code-inline{font-family:var(--mono);background:var(--surface2);box-shadow:inset 0 0 0 1px var(--border);border-radius:6px;padding:.12rem .4rem;font-size:.8em}details>summary{transition:color .15s}details>summary:hover{color:var(--text)}.login{isolation:isolate;grid-template-columns:1.15fr 1fr;min-height:100dvh;display:grid;position:relative;overflow:hidden}.login-stage{padding:clamp(1.5rem,4vw,3.5rem);padding-top:calc(clamp(1.5rem, 4vw, 3.5rem) + env(safe-area-inset-top));color:#f6efe4;isolation:isolate;background:#0d0b09;flex-direction:column;justify-content:space-between;display:flex;position:relative;overflow:hidden}.login-aurora{z-index:-1;filter:blur(40px);background:radial-gradient(30% 35% at 30% 65%,#ff3b1f8c,#0000 70%),radial-gradient(28% 30% at 70% 35%,#ff8c3266,#0000 70%),radial-gradient(25% 25% at 55% 80%,#ffc85747,#0000 70%);animation:18s ease-in-out infinite alternate aurora;position:absolute;inset:-30%}.login-stage:after{content:"";z-index:-1;background-image:linear-gradient(#ffffff0a 1px,#0000 1px),linear-gradient(90deg,#ffffff0a 1px,#0000 1px);background-size:48px 48px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(70% 70%,#000,#0000);mask-image:radial-gradient(70% 70%,#000,#0000)}@keyframes aurora{0%{transform:translate(0)rotate(0)scale(1)}50%{transform:translate(4%,-3%)rotate(8deg)scale(1.08)}to{transform:translate(-3%,4%)rotate(-6deg)scale(1.02)}}.login-brand{align-items:center;gap:.7rem;display:flex}.login-brand .wordmark{color:#f6efe4;font-size:1.5rem}.login-hero{max-width:36rem}.login-kicker{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:#f6efe4a6;align-items:center;gap:.5rem;margin-bottom:1.25rem;font-size:.7rem;display:inline-flex}.login-kicker:before{content:"";background:var(--grad-ember);border-radius:2px;width:1.5rem;height:2px}.login-title{font-family:var(--display);letter-spacing:-.06em;font-variation-settings:"opsz" 96;color:#f6efe4;font-size:clamp(3rem,1.5rem + 5.5vw,6.5rem);font-weight:750;line-height:.9}.login-title em{background:var(--grad-ember);color:#0000;-webkit-background-clip:text;background-clip:text;font-style:normal}.login-title span{display:block}.login-lede{color:#f6efe4b3;max-width:26rem;margin-top:1.4rem;font-size:1.02rem;line-height:1.6}.login-stats{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:#f6efe480;flex-wrap:wrap;gap:2rem;font-size:.7rem;display:flex}.login-stats strong{font-family:var(--display);letter-spacing:-.04em;text-transform:none;color:#f6efe4;margin-bottom:.15rem;font-size:1.6rem;font-weight:700;display:block}.login-side{padding:2rem 1.5rem calc(2rem + env(safe-area-inset-bottom));justify-content:center;align-items:center;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:380px;box-shadow:var(--shadow);border-radius:26px;padding:2.2rem 2rem}.login-logo{filter:drop-shadow(0 12px 24px #ff5a1f4d);width:64px;height:64px;margin:0 0 1.4rem;display:block}.login-card h2{letter-spacing:-.045em;margin-bottom:.4rem;font-size:1.85rem;font-weight:750}.login-card p{color:var(--text2);margin-bottom:1.6rem;font-size:.92rem}.login-error{color:var(--red);background:color-mix(in srgb, var(--red) 10%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--red) 25%, transparent);border-radius:12px;margin-bottom:.9rem;padding:.65rem .8rem;font-size:.82rem}.login-github{width:100%}.login-fine{color:var(--text3);text-align:center;margin-top:1.4rem;font-size:.75rem}@media (width<=900px){.login{grid-template-rows:auto 1fr;grid-template-columns:1fr}.login-stage{gap:2.5rem;min-height:52dvh}.login-stats{display:none}.login-side{align-items:flex-start;margin-top:-3.5rem}}.link-plain{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.skip-link{background:var(--accent-bright);color:var(--on-accent);z-index:300;border-radius:0 0 10px;padding:.5rem .9rem;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}.boot{place-items:center;min-height:100dvh;display:grid}.boot .spinner{margin:0}@media (width>=769px) and (width<=1100px){.nav{gap:.75rem}.nav-switch-hint{display:none}.nav-user-login{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.nav-user{padding:.2rem}.nav-links a{padding:.42rem .75rem}}@media (width>=769px) and (width<=900px){.nav-links a svg,.nav-actions .btn-sm svg{display:none}}@media (width<=768px){body{font-size:15px}.form-row{grid-template-columns:1fr 1fr}.main-content{padding:.75rem .85rem;padding-left:calc(.85rem + env(safe-area-inset-left));padding-right:calc(.85rem + env(safe-area-inset-right));padding-bottom:calc(2rem + env(safe-area-inset-bottom))}.page-header{flex-direction:column;align-items:flex-start;gap:.6rem;margin-bottom:1.1rem}.nav{padding:.6rem .9rem;padding-top:calc(.6rem + env(safe-area-inset-top));padding-left:calc(.9rem + env(safe-area-inset-left));padding-right:calc(.9rem + env(safe-area-inset-right));gap:.6rem}.nav:before{box-shadow:none;border-width:0 0 1px;border-radius:0;inset:0}.nav-brand-text{display:none}.nav-current{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--display);letter-spacing:-.03em;animation:rise .4s var(--ease-out) both;font-size:1.15rem;font-weight:700;display:block;overflow:hidden}.nav .nav-menu-toggle{background:var(--surface2);border-color:var(--border);margin-left:auto;display:inline-flex}.nav-menu-toggle svg{transition:transform .35s var(--ease-spring)}.nav-open .nav-menu-toggle svg{transform:rotate(90deg)}.nav-panel{top:calc(100% + .5rem);left:calc(.6rem + env(safe-area-inset-left));right:calc(.6rem + env(safe-area-inset-right));background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);visibility:hidden;opacity:0;transform-origin:top;max-height:calc(100dvh - 5.5rem);transition:opacity .22s var(--ease-out), transform .3s var(--ease-out), visibility 0s .3s;border-radius:22px;flex-direction:column;gap:.6rem;padding:.6rem;display:flex;position:absolute;overflow-y:auto;transform:translateY(-10px)scale(.97)}.nav-open .nav-panel{visibility:visible;opacity:1;transition:opacity .22s var(--ease-out), transform .4s var(--ease-out), visibility 0s;transform:none}.nav-scrim{z-index:90;background:var(--scrim);-webkit-backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .3s var(--ease-out);display:block;position:fixed;inset:0}.nav-scrim.is-open{opacity:1;pointer-events:auto}.nav-panel .nav-links{box-shadow:none;background:0 0;border-radius:0;flex-direction:column;gap:2px;padding:0}.nav-panel .nav-links a{color:var(--text);opacity:0;transition:opacity .3s var(--ease-out), transform .4s var(--ease-out), background .15s;border-radius:14px;align-items:center;gap:.85rem;padding:.8rem .9rem;font-size:1.02rem;display:flex;transform:translateY(-6px)}.nav-open .nav-panel .nav-links a{opacity:1;transform:none}.nav-open .nav-panel .nav-links a:nth-child(2){transition-delay:35ms}.nav-open .nav-panel .nav-links a:nth-child(3){transition-delay:70ms}.nav-open .nav-panel .nav-links a:nth-child(4){transition-delay:.105s}.nav-panel .nav-links a svg{background:var(--surface2);opacity:1;width:36px;height:36px;color:var(--text2);border-radius:11px;padding:8px}.nav-panel .nav-links a.active{background:var(--surface2)}.nav-panel .nav-links a.active svg{background:var(--grad-ember);color:#fff}.nav-panel .nav-pill{display:none}.nav-panel .nav-badge{margin-left:auto}.nav-panel .nav-actions{border-top:1px solid var(--border);flex-wrap:wrap;gap:.5rem;margin-left:0;padding:.75rem .3rem .2rem}.nav-panel .nav-user{min-width:0;box-shadow:none;background:0 0;flex:100%;order:-1;font-size:.9rem}.nav-panel .nav-actions .btn-sm:last-child{margin-left:auto}.nav-user-login{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.modal{border-radius:20px;width:96%;padding:1.25rem}.card{padding:1rem}.table{font-size:.76rem}}@media (width<=420px){.form-row{grid-template-columns:1fr}}.form-row-3{grid-template-columns:1.3fr .7fr 1.3fr}.form-optional{color:var(--text2);text-transform:none;letter-spacing:0;font-weight:400;font-family:var(--font)}.pattern{border:0;min-width:0;margin:0 0 1rem;padding:0}.pattern legend{margin-bottom:.45rem;padding:0}.pattern-presets .btn[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb, var(--accent-vivid) 45%, transparent)}.pattern-presets{flex-wrap:wrap;gap:.35rem;margin-bottom:.7rem;display:flex}.pattern-grid{gap:.35rem;display:grid}.pattern-day{background:var(--surface2);border-radius:12px;align-items:center;gap:.4rem;padding:.35rem .55rem;display:flex}.pattern-day-name{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;width:2.6rem;color:var(--text2);font-size:.72rem;font-weight:500}.pattern-chip{font:inherit;border:1px solid var(--border);background:var(--surface);min-height:30px;color:var(--text2);cursor:pointer;transition:background .2s var(--ease-out), color .2s, border-color .2s, transform .25s var(--ease-spring);border-radius:999px;padding:.2rem .7rem;font-size:.76rem;font-weight:600}.pattern-chip:hover{color:var(--text);transform:translateY(-1px)}.pattern-chip.tone-run{--tone:var(--run)}.pattern-chip.tone-cycle{--tone:var(--cycle)}.pattern-chip.tone-strength{--tone:var(--strength)}.pattern-chip[aria-pressed=true]{background:var(--tone);border-color:var(--tone);color:var(--on-tone);box-shadow:0 4px 12px -4px var(--tone)}.pattern-chip:focus-visible{box-shadow:var(--focus-ring);outline:none}.pattern-rest{color:var(--text3);font-size:.68rem;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;margin-left:auto}@media (width<=480px){.form-row-3{grid-template-columns:1fr 1fr}.form-row-3 .form-group:last-child{grid-column:1/-1}.pattern-chip{padding:.2rem .55rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.spinner{animation-duration:1.6s!important;animation-iteration-count:infinite!important}}.ins{flex-direction:column;gap:1rem;display:flex}.ins .page-header{margin-bottom:.25rem}.ins-year{color:var(--text2);align-self:center;padding:0 .5rem;font-size:.85rem}.ins h2{font-family:var(--display);letter-spacing:-.01em;font-size:1.05rem;font-weight:650}.ins code{font-family:var(--mono);background:var(--surface2);overflow-wrap:anywhere;border-radius:5px;padding:.05rem .3rem;font-size:.78em}.ins .num{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.link-btn{color:var(--accent);font:inherit;cursor:pointer;text-underline-offset:2px;background:0 0;border:0;padding:0;text-decoration:underline}.ins-syncbar{color:var(--text2);flex-wrap:wrap;align-items:center;gap:.6rem;min-height:2rem;font-size:.82rem;display:flex}.ins-sync-text{flex:14rem;min-width:0}.ins-dot{background:var(--green);border-radius:50%;flex-shrink:0;width:.5rem;height:.5rem}.ins-dot.busy{background:var(--orange-bright);animation:1.2s ease-in-out infinite ins-pulse}.ins-dot.bad{background:var(--red)}.ins-sync-btn{padding:.3rem .65rem;font-size:.8rem}.ins .spin{animation:1s linear infinite spin}@keyframes ins-pulse{50%{opacity:.35}}.ins-setup{flex-direction:column;gap:.9rem;display:flex}.ins-steps{counter-reset:ins-step;flex-direction:column;gap:.6rem;list-style:none;display:flex}.ins-steps li{counter-increment:ins-step;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface2);grid-template-columns:1.7rem minmax(0,1fr) auto;align-items:center;gap:.35rem .8rem;padding:.8rem .9rem;display:grid}.ins-steps li:before{content:counter(ins-step);font:650 .85rem var(--display);background:var(--surface);border:1px solid var(--border-strong);width:1.6rem;height:1.6rem;color:var(--text2);border-radius:50%;place-items:center;display:grid}.ins-steps li.done:before{content:"✓";background:var(--green-soft);color:var(--green);border-color:#0000}.ins-steps li>div{flex-direction:column;gap:.2rem;min-width:0;display:flex}.ins-token{grid-column:2/-1;gap:.5rem;display:flex}.ins-token input{min-width:0;font-family:var(--mono);flex:1;font-size:.8rem}.ins-ok{color:var(--green);font-size:.8rem}.ins-hero{flex-direction:column;gap:1.1rem;display:flex}.ins-headline{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem 2rem;display:flex}.ins-headline>div:first-child{flex-direction:column;gap:.15rem;display:flex}.ins-eyebrow{font:500 .7rem var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text2)}.ins .ins-total{font-family:var(--display);letter-spacing:-.02em;font-variant-numeric:proportional-nums;font-size:clamp(2.1rem,6vw,3rem);font-weight:700;line-height:1}.ins-facts{flex-wrap:wrap;gap:1.6rem;display:flex}.ins-facts div{flex-direction:column;gap:.1rem;display:flex}.ins-facts dt{color:var(--text2);font-size:.72rem}.ins-facts dd{font-size:1.05rem}.ins-facts dd.up{color:var(--accent)}.ins-facts dd.down{color:var(--green)}.ins-timeline{align-items:stretch;gap:.6rem;display:flex}.ins-year-btn{font:600 .72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--text2);background:var(--surface2);border:1px solid var(--border);cursor:pointer;border-radius:999px;align-self:flex-end;margin-bottom:1.2rem;padding:.35rem .7rem}.ins-year-btn.on{background:var(--text);color:var(--bg);border-color:#0000}.ins-cols{flex:1;gap:2px;min-width:0;height:8.5rem;display:flex}.ins-col{cursor:pointer;background:0 0;border:0;border-radius:6px;flex-direction:column;flex:1;justify-content:flex-end;align-items:stretch;min-width:0;padding:0;display:flex;position:relative}.ins-col-bar{background:var(--border-strong);transition:height .45s var(--ease-out), background .2s;border-radius:4px 4px 1px 1px;margin:0 12%;display:block}.ins-col.all .ins-col-bar{background:color-mix(in srgb, var(--accent) 55%, var(--border-strong))}.ins-col:hover .ins-col-bar{background:color-mix(in srgb, var(--accent) 70%, var(--border-strong))}.ins-col.on .ins-col-bar{background:var(--grad-ember)}.ins-col-label{font:500 .68rem var(--mono);color:var(--text3);text-align:center;height:1.2rem;padding-top:.35rem}.ins-col.on .ins-col-label{color:var(--text);font-weight:600}.ins-col-tip{z-index:2;pointer-events:none;opacity:0;white-space:nowrap;background:var(--text);color:var(--bg);box-shadow:var(--shadow-pop);border-radius:8px;flex-direction:column;align-items:center;padding:.3rem .5rem;font-size:.7rem;transition:opacity .15s,transform .15s;display:flex;position:absolute;bottom:calc(100% - 1rem);left:50%;transform:translate(-50%,4px)}.ins-col-tip b{font-family:var(--mono);font-weight:600}.ins-col:hover .ins-col-tip,.ins-col:focus-visible .ins-col-tip{opacity:1;transform:translate(-50%)}.ins-col:focus-visible{box-shadow:var(--focus-ring);outline:none}.ins-grid{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);align-items:start;gap:1rem;display:grid}.ins-section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;margin-bottom:.8rem;display:flex}.ins-rows{flex-direction:column;list-style:none;display:flex}.ins-row{border-top:1px solid var(--border)}.ins-row:first-child{border-top:0}.ins-row.child{border-top-style:dashed}.ins-row-main{grid-template-columns:1.4rem minmax(6.5rem,10rem) minmax(3rem,1fr) 2.6rem 4.8rem 5.5rem;align-items:center;gap:.6rem;padding:.45rem 0;display:grid}.ins-row.zero .ins-row-label,.ins-row.zero .num{color:var(--text3)}.ins-expand,.ins-expand-gap{width:1.4rem;height:1.4rem}.ins-expand{color:var(--text2);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.ins-expand:hover{background:var(--surface2)}.ins-expand svg{transition:transform .2s var(--ease-out);transform:rotate(-90deg)}.ins-expand[aria-expanded=true] svg{transform:none}.ins-row-label{text-align:left;font:inherit;color:var(--text);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;min-width:0;padding:.15rem 0;font-size:.88rem;overflow:hidden}.ins-row-label:hover,.ins-row-label[aria-expanded=true]{color:var(--accent)}.ins-row.child .ins-row-label{color:var(--text2);padding-left:.8rem;font-size:.82rem}.ins-row.uncat .ins-row-label{font-style:italic}.ins-bar-track{background:var(--surface2);border-radius:999px;height:.6rem;overflow:hidden}.ins-bar{background:var(--text);height:100%;transition:width .45s var(--ease-out);border-radius:999px;display:block}.ins-row.child .ins-bar{background:var(--text2)}.ins-row.uncat .ins-bar{background:var(--text3)}.ins-share,.ins-spend{text-align:right;font-size:.8rem}.ins-share{color:var(--text2)}.ins-spark{align-items:flex-end;gap:1px;height:1.4rem;display:flex}.ins-spark-bar{background:var(--border-strong);border-radius:2px 2px 0 0;flex:1;min-width:2px;transition:background .2s}.ins-spark-bar.on{background:var(--accent-vivid)}.ins-items{background:var(--surface2);border-radius:var(--radius-sm);flex-direction:column;margin:0 0 .6rem 2rem;padding:.4rem .7rem;list-style:none;display:flex}.ins-items li{grid-template-columns:minmax(0,1fr) auto minmax(7rem,11rem);align-items:center;gap:.6rem;padding:.35rem 0;font-size:.82rem;display:grid}.ins-items li+li{border-top:1px solid var(--border)}.ins-item-name{overflow-wrap:anywhere;flex-direction:column;min-width:0;display:flex}.ins-item-cat{min-width:0;padding:.25rem .4rem;font-size:.75rem}.ins-items-empty{margin:0 0 .6rem 2rem}.ins-top-list{counter-reset:ins-top;flex-direction:column;gap:.55rem;list-style:none;display:flex}.ins-top-list li{counter-increment:ins-top;grid-template-rows:auto auto;grid-template-columns:1.3rem minmax(0,1fr) auto;align-items:center;gap:.2rem .5rem;font-size:.84rem;display:grid}.ins-top-list li:before{content:counter(ins-top);font:600 .72rem var(--mono);color:var(--text3);grid-row:span 2}.ins-top-name{overflow-wrap:anywhere;flex-direction:column;grid-area:1/2;min-width:0;display:flex}.ins-top-list li>.num{grid-area:1/3;align-self:start;font-size:.8rem}.ins-top-name .muted-sm{font-size:.72rem}.ins-top-bar{background:var(--surface2);border-radius:99px;grid-area:2/2/auto/-1;height:3px;overflow:hidden}.ins-top-bar span{background:var(--accent);height:100%;transition:width .45s var(--ease-out);border-radius:99px;display:block}@media (width<=900px){.ins-grid{grid-template-columns:minmax(0,1fr)}}@media (width<=560px){.ins-row-main{grid-template-columns:1.4rem minmax(0,1fr) 2.6rem 4.6rem;grid-template-areas:"x label share spend"".track track spark";row-gap:.3rem}.ins-expand,.ins-expand-gap{grid-area:x}.ins-row-label{grid-area:label}.ins-bar-track{grid-area:track}.ins-share{grid-area:share}.ins-spend{grid-area:spend}.ins-spark{grid-area:spark;justify-self:end;width:4.6rem}.ins-items{margin-left:0}.ins-items li{grid-template-columns:minmax(0,1fr) auto}.ins-item-cat{grid-column:1/-1}.ins-col-label-rest{display:none}.ins-cols{height:6.5rem}.ins-steps li{grid-template-columns:1.7rem minmax(0,1fr)}.ins-steps li>.btn{grid-column:2;justify-self:start}}
