@font-face{font-family:Newsreader;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/6632a144c419935f-s.38msdipe8z81f.woff2)format("woff2");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:Newsreader;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/7b27d9904b50e540-s.p.30bhvdlsk8sra.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/d38f3bca7db33566-s.p.3se9ogqst-d6c.woff2)format("woff2");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:Newsreader Fallback;src:local(Times New Roman);ascent-override:69.68%;descent-override:25.12%;line-gap-override:0.0%;size-adjust:105.48%}.newsreader_1c6a10ff-module__DYREvq__className{font-family:Newsreader,Newsreader Fallback;font-style:normal}.newsreader_1c6a10ff-module__DYREvq__variable{--font-display:"Newsreader", "Newsreader Fallback"}
@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.00az9qtie3ho1.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.3j-a226dh71aj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.2gwoz23eiro2t.woff2)format("woff2");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;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.p.0i3h3th1vs4m7.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.0zr6hhvz-h9nw.woff2)format("woff2");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 Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_43e0cf5f-module__Kjs6fa__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_43e0cf5f-module__Kjs6fa__variable{--font-geist:"Geist", "Geist Fallback"}
@font-face{font-family:mono;src:url(../media/CommitMono_400_Regular-s.p.2qvz8s8anjyta.ttf)format("truetype");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:mono;src:url(../media/CommitMono_700_Regular-s.p.12hgwlllwq7iu.ttf)format("truetype");font-display:swap;font-weight:700;font-style:normal}@font-face{font-family:mono Fallback;src:local(Arial);ascent-override:68.45%;descent-override:15.21%;line-gap-override:0.0%;size-adjust:131.49%}.mono_a3b3c3d-module__dL-JNW__className{font-family:mono,mono Fallback}.mono_a3b3c3d-module__dL-JNW__variable{--font-commit:"mono", "mono Fallback"}
:root{--bg:#1b1b1d;--surface:#242426;--surface-2:#2c2c2f;--fg:#edebe6;--muted-2:#a3a19b;--muted-faint-2:#9a9892;--line:#323235;--line-strong:#434346;--ember:#b4bccb;--ember-bright:#d6dce6;--ember-soft:#2a2d34;--code:#8e97a8;--code-bright:#b4bccb;--code-soft:#25272d;--hot:#f1f3f7;--accent-fill:#b4bccb;--on-accent:#131316;--success:#7fc18c;--warning:#e3b95b;--warning-soft:#36301c;--danger:#e8806f;--danger-soft:#3a211d;--shadow-color:#00000080;--shadow:0 1px 2px #00000059, 0 18px 40px -22px var(--shadow-color);--viz-1:#3987e5;--viz-2:#d95926;--viz-3:#199e70;--viz-4:#c98500;--viz-5:#d55181;--viz-6:#008300;--viz-7:#9085e9;--viz-8:#e66767;--fx-dim:#3b3d46;--fx-mid:#8e97a8;--fx-peak:#f1f3f7;--ink:var(--bg);--paper:var(--fg);--slate:var(--muted-2);--cold:var(--code);--on-ember:var(--on-accent);--muted:var(--muted-2);--muted-soft:var(--muted-2);--muted-faint:var(--muted-faint-2);--line-soft:var(--line);--accent:var(--ember);--accent-soft:var(--ember-soft);--accent-contrast:var(--on-accent);--font-body:var(--font-geist);--font-mono:var(--font-commit);--font-serif:var(--font-display);--content-width:clamp(1200px, 90vw, 3000px);--prose-width:680px;--radius:20px;--radius-sm:12px;--radius-pill:999px;--ease-out:cubic-bezier(.2, .7, .2, 1)}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#e3e8de;--surface:#f7f8f3;--surface-2:#edf0e8;--fg:#1c231d;--muted-2:#56615a;--muted-faint-2:#5c665f;--line:#cfd6c8;--line-strong:#b7c0af;--ember:#186b56;--ember-bright:#1f7a63;--ember-soft:#d5e8df;--code:#186b56;--code-bright:#0b3b30;--code-soft:#d5e8df;--hot:#0b3b30;--accent-fill:#1f7a63;--on-accent:#f7f8f3;--success:#1a6e3e;--warning:#8a5a0b;--warning-soft:#f1e5c6;--danger:#a3302a;--danger-soft:#f3dcd6;--shadow-color:#1c231d24;--shadow:0 1px 2px #1c231d0d, 0 18px 40px -22px var(--shadow-color);--fx-dim:#9fb8ad;--fx-mid:#1f7a63;--fx-peak:#0b3b30;--viz-1:#2a78d6;--viz-2:#eb6834;--viz-3:#1baf7a;--viz-4:#eda100;--viz-5:#e87ba4;--viz-6:#008300;--viz-7:#4a3aa7;--viz-8:#e34948}html[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.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}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.ambient-background{z-index:-1;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;height:100%}html,body{max-width:100vw;overflow-x:hidden}body{min-height:100%;color:var(--fg);background:var(--bg);font-family:var(--font-body), system-ui, -apple-system, sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;font-size:16px;line-height:1.7;display:flex}a{color:inherit;text-decoration:none}a,button,input,textarea,select{outline-offset:2px}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}h1,h2,h3{font-family:var(--font-body), sans-serif;letter-spacing:-.02em;font-weight:800;line-height:1.15}h1{font-family:var(--font-display), Georgia, serif;font-variation-settings:"opsz" 72;letter-spacing:-.02em;font-size:clamp(2.1rem,1.6rem + 2vw,3.5rem);font-weight:400}h2{font-size:clamp(1.3rem,1.1rem + .8vw,1.85rem)}h3{font-size:1.15rem}ul,ol{list-style:none}.container{width:100%;max-width:var(--content-width);margin-inline:auto;padding-inline:clamp(1rem,4vw,3rem)}.full-bleed{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}.site-main{flex:1;padding-top:clamp(2.5rem,2rem + 2vw,4.5rem);padding-bottom:clamp(2.5rem,2rem + 2vw,4.5rem)}.site-main:has(.login-page){display:flex}.login-page{justify-content:center;align-items:center;display:flex}.login-card{width:min(100%,24rem)}.login-card h1{text-align:center;margin-bottom:0}.login-card .form{margin-bottom:0}.login-card__intro{color:var(--muted);text-align:center;margin:1rem 0 0}.login-card__notice{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;margin:1.5rem 0 0;padding:1rem 1.25rem}.login-card__link{width:fit-content;color:var(--muted);border-radius:4px;margin:1rem auto 0;font-size:.85rem;transition:color .15s;display:block}.login-card__link:hover{color:var(--accent)}.page>h1{margin-bottom:2rem}.prose{max-width:var(--prose-width)}.prose p,.prose li{font-family:var(--font-serif), Georgia, serif;font-size:1.05rem;line-height:1.75}.prose a{text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);transition:text-decoration-color .15s}.prose a:hover{text-decoration-color:currentColor}.prose h1{margin-bottom:1rem}.prose h2{margin-top:2.5rem;margin-bottom:.75rem}.prose p{margin-bottom:1rem}.prose p:last-child{margin-bottom:0}.prose ul,.prose ol{margin:0 0 1rem 1.3rem}.prose ul{list-style:outside}.prose ol{list-style:decimal}.prose li{margin-bottom:.4rem}.prose code{font-family:var(--font-mono), monospace;background:var(--surface-2,var(--line-soft));border-radius:4px;padding:.15em .4em;font-size:.9em}.prose pre{font-family:var(--font-mono), monospace;background:var(--surface-2,var(--line-soft));border:1px solid var(--line);border-radius:var(--radius-sm);margin-bottom:1.25rem;padding:1rem 1.1rem;font-size:.85rem;line-height:1.6;overflow-x:auto}.prose pre code{background:0 0;padding:0}.project-page{max-width:1240px}.project-page__back{width:fit-content;color:var(--fg);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);align-items:center;gap:.35rem;margin-bottom:1.75rem;padding:.4rem 1rem;font-size:.85rem;font-weight:600;transition:border-color .15s,color .15s;display:inline-flex}.project-page__back:hover{color:var(--accent);border-color:var(--accent)}.project-hero{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:clamp(2rem,5vw,4.5rem);margin-bottom:clamp(2rem,5vh,3.5rem);padding-bottom:clamp(1.75rem,4vh,2.75rem);display:grid}@media (max-width:900px){.project-hero{grid-template-columns:minmax(0,1fr);gap:1.75rem}}.markdown.project-body{max-width:68rem}.project-hero h1{text-wrap:balance;max-width:22ch;margin-bottom:0}.project-hero__lead{max-width:62ch;color:var(--muted);margin-top:1.1rem;font-size:clamp(1.05rem,.98rem + .35vw,1.25rem);line-height:1.6}.project-hero__actions{flex-wrap:wrap;gap:.6rem;margin-top:1.75rem;display:flex}.project-page__empty{color:var(--muted)}.project-aside{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem 1.4rem 1.4rem}.tech-badge{align-items:center;gap:.4rem;display:inline-flex}.tech-badge svg{flex:none}.project-aside__title{font-family:var(--font-mono), monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line);margin-bottom:1rem;padding-bottom:.85rem;font-size:.72rem}.project-aside dt{font-family:var(--font-mono), monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.7rem}.project-aside dd{margin:.3rem 0 1.1rem;font-size:.92rem}.project-aside dd:last-child{margin-bottom:0}.project-aside__link{color:var(--accent);word-break:break-all;align-items:center;gap:.3rem;display:inline-flex}.project-aside__link:hover{text-underline-offset:3px;text-decoration:underline}.chip-list{flex-wrap:wrap;gap:.35rem;display:flex}.chip{font-family:var(--font-mono), monospace;letter-spacing:.04em;color:var(--fg);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);padding:.15rem .6rem;font-size:.72rem}.markdown{max-width:76ch;color:var(--fg);overflow-wrap:break-word;font-size:1.02rem;line-height:1.75}.markdown>*+*{margin-top:1.1rem}.markdown h1,.markdown h2,.markdown h3{font-family:var(--font-display), Georgia, serif;letter-spacing:-.01em;text-wrap:balance;font-weight:450;line-height:1.2}.markdown h1{font-size:2rem}.markdown h2{margin-top:2.75rem;font-size:clamp(1.45rem,1.3rem + .5vw,1.75rem)}.markdown h3{margin-top:2rem;font-size:1.25rem}.markdown h4,.markdown h5,.markdown h6{margin-top:1.5rem;font-size:.95rem;font-weight:650}.markdown h2+*,.markdown h3+*,.markdown h4+*{margin-top:.6rem}.markdown hr{border:0;border-top:1px solid var(--line);margin:2.5rem 0}.markdown hr+h2,.markdown hr+h3{margin-top:0}.markdown strong{font-weight:650}.markdown a{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 35%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 35%, transparent);text-underline-offset:3px;transition:text-decoration-color .15s}.markdown a:hover{text-decoration-color:currentColor}.markdown ul,.markdown ol{padding-left:1.3rem}.markdown ul{list-style:outside}.markdown ol{list-style:decimal}.markdown li+li{margin-top:.3rem}.markdown li>p{margin:0}.markdown li::marker{color:var(--muted)}.markdown code{font-family:var(--font-mono), monospace;background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:.08em .4em;font-size:.85em}.markdown pre{font-family:var(--font-mono), monospace;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:1rem 1.25rem;font-size:.84rem;line-height:1.65;overflow-x:auto}.markdown pre code{font-size:inherit;background:0 0;border:0;padding:0}.markdown blockquote{color:var(--muted);background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius-sm);padding:.85rem 1.1rem}.markdown blockquote>*+*{margin-top:.5rem}.markdown .callout{color:var(--fg)}.callout__label{font-family:var(--font-mono), monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--callout,var(--accent));margin-bottom:.3rem;font-size:.7rem;display:block}.markdown .callout{border-left-color:var(--callout,var(--accent))}.callout--tip{--callout:var(--success)}.callout--important{--callout:var(--viz-7)}.callout--warning{--callout:var(--warning)}.callout--caution{--callout:var(--danger)}.code-block{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);overflow:hidden}.code-block__bar{background:var(--surface-2);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:.35rem .5rem .35rem 1rem;display:flex}.code-block__lang{font-family:var(--font-mono), monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.7rem}.code-block__copy{color:var(--muted);border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:0 0;padding:.2rem .7rem;font-size:.75rem}.code-block__copy:hover{color:var(--accent);border-color:var(--accent)}.markdown .code-block pre{border:0;border-radius:0;margin:0}.markdown h2[id]{scroll-margin-top:6rem}.zoomable{cursor:zoom-in;background:0 0;border:0;max-width:100%;padding:0;display:inline-block}.zoomable:hover{opacity:.92;transform:none}.markdown-diagram{position:relative}.markdown-diagram__svg{cursor:zoom-in}.markdown-diagram__expand{z-index:1;color:var(--muted);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);padding:.25rem .75rem;font-size:.75rem;position:absolute;top:.6rem;right:.6rem}.markdown-diagram__expand:hover{color:var(--accent);border-color:var(--accent)}.zoom-overlay{z-index:120;cursor:zoom-out;background:#000000d1;justify-content:center;align-items:center;padding:3.5rem 2vw 2rem;display:flex;position:fixed;inset:0}.zoom-overlay__content{cursor:auto;max-width:92vw;max-height:100%;overflow:auto}.zoom-overlay__content img{border-radius:var(--radius-sm);max-width:92vw;max-height:calc(100vh - 6rem);display:block}.zoom-overlay__diagram{background:var(--surface);border-radius:var(--radius);max-width:92vw;padding:1.5rem}.zoom-overlay__diagram svg{width:100%;height:auto;max-width:none!important}.project-content--toc{grid-template-columns:minmax(0,1fr) 220px;align-items:start;gap:clamp(2rem,4vw,3.5rem);display:grid}.project-toc{font-size:.85rem;position:sticky;top:6rem}.project-toc__title{font-family:var(--font-mono), monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:.75rem;font-size:.7rem}.project-toc ol{border-left:1px solid var(--line);padding:0 0 0 .9rem;list-style:none}.project-toc li+li{margin-top:.5rem}.project-toc a{color:var(--muted);border-radius:4px;transition:color .15s}.project-toc a:hover{color:var(--accent)}@media (max-width:1100px){.project-content--toc{display:block}.project-toc{display:none}}.tech-logo{color:var(--brand,currentColor)}html:not([data-theme=light]) .tech-logo--dark,html[data-theme=light] .tech-logo--light{color:inherit}.markdown img{border-radius:var(--radius-sm);max-width:100%}.markdown-table{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);max-width:100%;overflow-x:auto}.markdown table{border-collapse:collapse;font-size:.9rem}.markdown-table table{min-width:100%}.markdown .markdown-table th{font-family:var(--font-mono), monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:var(--surface-2);white-space:nowrap;font-size:.7rem;font-weight:500}.markdown .markdown-table th,.markdown .markdown-table td{vertical-align:top;border-bottom:1px solid var(--line);padding:.65rem 1rem}.markdown .markdown-table tr:last-child td{border-bottom:0}.markdown-table tbody tr:nth-child(2n){background:color-mix(in oklab, var(--surface-2) 45%, transparent)}.markdown-table td:first-child{font-weight:600}.markdown-diagram{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);text-align:center;max-width:100%;padding:1.25rem;overflow-x:auto}.markdown-diagram svg{max-width:100%;height:auto}.markdown input[type=checkbox]{margin-right:.4rem}.markdown th,.markdown td{border-bottom:1px solid var(--line);text-align:left;padding:.5rem .9rem .5rem 0}.markdown th{font-weight:650}.project-problem{background:var(--surface-2,var(--surface));border:1px solid var(--line);border-left:3px solid var(--code);border-radius:var(--radius-sm);padding:1rem 1.25rem}.project-problem__label{font-family:var(--font-mono), monospace;text-transform:uppercase;letter-spacing:.08em;color:var(--code);margin-bottom:.5rem;font-size:.72rem}.project-problem p{margin:0}.project-gallery{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem;margin-bottom:2rem;display:grid}.project-gallery--single{grid-template-columns:minmax(0,1fr)}.project-gallery__item{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2,var(--surface));cursor:zoom-in;padding:0;transition:border-color .15s;overflow:hidden}.project-gallery__item:hover{border-color:var(--code);opacity:1;transform:none}.project-gallery__item img{object-fit:cover;aspect-ratio:16/10;width:100%;height:100%;display:block}.lightbox{z-index:100;background:#000000d1;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}.lightbox img{border-radius:var(--radius-sm);max-width:100%;max-height:100%}.lightbox__close{border-radius:var(--radius-pill);color:#fff;cursor:pointer;background:#00000073;border:1px solid #ffffff40;justify-content:center;align-items:center;width:2.75rem;height:2.75rem;padding:0;font-size:1.6rem;line-height:1;display:flex;position:absolute;top:1.25rem;right:1.5rem}.project-grid--featured{margin-bottom:2rem}.meta{color:var(--muted);font-size:.85rem}.site-header{z-index:10;border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(10px);position:sticky;top:0}.site-header__inner{justify-content:space-between;align-items:center;gap:1rem;padding-top:1.25rem;padding-bottom:1.25rem;display:flex}.site-header__brand{letter-spacing:-.01em;font-weight:700}.site-header__nav-row{align-items:center;gap:1.75rem;display:flex}.site-header__nav{gap:1.75rem;font-size:.95rem;font-weight:500;display:flex}.site-header__utils{align-items:center;gap:.85rem;margin-left:.5rem;display:flex}.site-header__nav a{color:var(--muted);transition:color .15s}.site-header__nav a:hover{color:var(--accent)}.site-header__nav li{align-items:center;display:flex}.site-header__divider{background:var(--line-strong,var(--line));flex-shrink:0;width:1px;height:1.1rem}.site-header__nav--private a{color:var(--code)}.site-header__nav--private a:hover{color:var(--code-bright,var(--code))}.nav-button{font:inherit;color:var(--fg);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);justify-content:center;align-self:auto;align-items:center;gap:.35rem;padding:.35rem .95rem;font-size:.85rem;font-weight:600;transition:border-color .15s,color .15s,background-color .15s;display:inline-flex}.site-header__burger{background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);cursor:pointer;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:5px;width:2.4rem;height:2.4rem;padding:0;display:none}.site-header__burger span{background:var(--fg);width:1.25rem;height:2px;transition:transform .2s,opacity .2s;display:block}.site-header__burger.is-open span:first-child{transform:translateY(7px)rotate(45deg)}.site-header__burger.is-open span:nth-child(2){opacity:0}.site-header__burger.is-open span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.site-header__mobile-panel{display:contents}@media (max-width:720px){.site-header__burger{display:flex}.site-header__mobile-panel{inset-inline:0;border-bottom:1px solid var(--line);background:var(--bg);opacity:0;visibility:hidden;max-height:0;transition:opacity .18s ease-out,transform .18s ease-out,max-height .18s ease-out,visibility .18s;display:block;position:absolute;top:100%;overflow:hidden;transform:translateY(-6px)}.site-header__mobile-panel.is-open{opacity:1;visibility:visible;max-height:80vh;overflow-y:auto;transform:translateY(0)}.site-header__nav-row{flex-direction:column;align-items:flex-start;gap:1.5rem;padding:1.5rem clamp(1rem,4vw,3rem) 2rem}.site-header__nav{flex-direction:column;align-items:flex-start;gap:1.1rem;font-size:1.05rem}.site-header__divider{width:100%;height:1px}.site-header__utils{margin-left:0}.site-header__mobile-panel .lang-menu__list{inset:auto auto calc(100% + .4rem) 0}body.mobile-nav-open{overflow:hidden}}@media (prefers-reduced-motion:reduce){.site-header__mobile-panel,.site-header__burger span{transition:none}}.icon-button{width:2rem;height:2rem;color:var(--fg);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);justify-content:center;align-self:auto;align-items:center;padding:0;transition:border-color .15s,color .15s,background-color .15s;display:inline-flex}.icon-button:hover{opacity:1;color:var(--accent);border-color:var(--accent);transform:none}.icon-button[aria-pressed=true]{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--on-accent)}.icon-button svg{width:15px;height:15px}.theme-toggle{cursor:pointer;width:2.1rem;height:2.1rem;padding:0}.nav-button:hover{opacity:1;color:var(--accent);border-color:var(--accent);transform:none}.lang-menu{position:relative}.site-header .lang-menu__trigger{cursor:pointer;gap:.4rem;padding:.3rem .6rem .3rem .45rem}.lang-flag{border-radius:3px;flex:none;width:1.3rem;height:.87rem;display:inline-block;overflow:hidden;box-shadow:0 0 0 1px #00000024}.lang-flag svg{width:100%;height:100%;display:block}.lang-menu__code{font-family:var(--font-mono), monospace;letter-spacing:.06em;font-size:.75rem}.lang-menu__chevron{color:var(--muted);transition:transform .15s}.lang-menu__trigger[aria-expanded=true] .lang-menu__chevron{transform:rotate(180deg)}.lang-menu__list{z-index:60;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);min-width:11rem;box-shadow:0 14px 34px -14px var(--shadow-color), 0 2px 6px #00000014;flex-direction:column;gap:2px;padding:.35rem;display:flex;position:absolute;top:calc(100% + .4rem);right:0}.lang-menu__list .lang-menu__option{text-align:left;width:100%;color:var(--fg);border-radius:calc(var(--radius-sm) - 4px);background:0 0;border:0;align-self:stretch;align-items:center;gap:.6rem;padding:.5rem .65rem;font-size:.88rem;font-weight:500;display:flex}.lang-menu__list .lang-menu__option:hover,.lang-menu__list .lang-menu__option:focus-visible{background:var(--surface-2);opacity:1;transform:none}.lang-menu__list .lang-menu__option[aria-checked=true]{font-weight:650}.lang-menu__label{flex:1}.lang-menu__option svg:last-child:not(.lang-flag svg){color:var(--accent)}.site-footer__inner{justify-content:space-between;align-items:center;gap:1rem;padding-top:1.5rem;padding-bottom:1.5rem;display:flex}.site-footer__inner a{color:var(--muted);transition:color .15s}.site-footer__inner a:hover{color:var(--accent)}.site-footer__right{align-items:center;gap:1.5rem;display:flex}.site-footer__privacy{color:inherit;border-radius:4px;transition:color .15s}.site-footer__privacy:hover{color:var(--accent)}.markdown.privacy{max-width:62rem;margin-inline:auto}.privacy>h1,.privacy>.privacy__updated{text-align:center}.privacy table{width:100%}.privacy__updated{font-family:var(--font-mono), monospace;color:var(--muted);font-size:.8rem}.site-footer__icons{align-items:center;gap:.6rem;display:flex}.site-footer__icons a{background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);justify-content:center;align-items:center;width:2.4rem;height:2.4rem;transition:border-color .15s,color .15s;display:flex}.site-footer__icons a:hover{border-color:var(--accent)}.hero h1{max-width:16ch;margin-bottom:1.25rem}.hero p{max-width:60ch;color:var(--muted);margin-bottom:2rem;font-size:clamp(1rem,.9rem + .4vw,1.2rem)}.hero__actions{flex-wrap:wrap;gap:.75rem;display:flex}.hero__contact{font-family:var(--font-mono), monospace;letter-spacing:.02em;flex-wrap:wrap;gap:.35rem 1.25rem;margin:1.25rem 0 0;padding:0;font-size:.85rem;list-style:none;display:flex}.hero__contact a{color:var(--muted);border-radius:4px;transition:color .15s}.hero__contact a:hover{color:var(--accent)}.hero__status{font-family:var(--font-mono), monospace;color:var(--muted);margin:-.75rem 0 1.75rem;font-size:.85rem}.hero__status:before{content:"» ";color:var(--ember)}.yield-tag{font-family:var(--font-mono), monospace;color:var(--muted);align-items:center;gap:.35rem;font-size:.78rem;font-weight:600;transition:color .15s;display:inline-flex}.yield-tag:before{content:"»";color:var(--ember)}.yield-tag--code:before{color:var(--code)}.home-rails{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2.5rem;margin-top:3.5rem;padding-top:2.5rem;display:grid}@media (min-width:900px) and (min-height:960px){body:has(.home){height:100dvh;min-height:0;overflow:hidden}.site-main:has(.home){flex-direction:column;min-height:0;padding-top:clamp(1.5rem,5vh,4rem);padding-bottom:clamp(1.25rem,3vh,2.5rem);display:flex}.home{flex-direction:column;flex:1;justify-content:center;gap:clamp(2rem,5vh,3.5rem);min-height:0;display:flex}.home .home-rails{grid-template-columns:minmax(0,1fr);gap:clamp(1.25rem,3vh,2rem);margin-top:0;padding-top:clamp(1.25rem,3vh,2.5rem)}.home .home-rail__list{grid-template-rows:auto;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:0;row-gap:0;margin:-6px -6px 0;padding:6px 6px 0;overflow:hidden}}.home-rail__title{font-family:var(--font-mono), monospace;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:1.1rem;font-size:.78rem;font-weight:700}.home-rail__list{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:1.25rem;display:grid}.home-rail__empty{color:var(--muted);font-size:.9rem}.button{border-radius:var(--radius-pill);color:var(--fg);background:var(--surface-2);border:1px solid var(--line-strong);align-items:center;gap:.4rem;padding:.6rem 1.35rem;font-size:.9rem;font-weight:600;transition:border-color .15s,background-color .15s,opacity .15s,transform .15s;display:inline-flex}.button:hover{border-color:var(--accent);color:var(--accent);text-decoration:none;transform:translateY(-1px)}.button--primary{background:var(--accent-fill);color:var(--on-accent);border-color:var(--accent-fill)}.button--primary:hover{opacity:.88;color:var(--on-accent)}.card-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:1.25rem;display:grid}.tag-list{flex-wrap:wrap;gap:.5rem;margin:.75rem 0;display:flex}.tag{font-family:var(--font-mono), monospace;background:var(--accent-soft);color:var(--accent);border-radius:var(--radius-pill);padding:.15rem .65rem;font-size:.78rem}.auto-translated{font-family:var(--font-mono), monospace;letter-spacing:.04em;color:var(--muted);margin-top:.5rem;font-size:.72rem}.recipe-editor-page{max-width:1240px}.recipe-editor{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:clamp(2rem,5vw,4.5rem);display:grid}@media (max-width:960px){.recipe-editor{grid-template-columns:minmax(0,1fr)}}.recipe-editor__main{flex-direction:column;min-width:0;display:flex}.recipe-editor input,.recipe-editor textarea{font-size:.95rem}.recipe-editor .recipe-editor__title,.recipe-editor .recipe-editor__lead{width:100%;color:var(--fg);background:0 0;border:0;border-bottom:1px solid #0000;border-radius:0;padding:.1rem 0;transition:border-color .15s}.recipe-editor .recipe-editor__title{font-family:var(--font-display), Georgia, serif;font-variation-settings:"opsz" 72;letter-spacing:-.02em;font-size:clamp(2.1rem,1.6rem + 2vw,3.3rem);font-weight:400;line-height:1.1}.recipe-editor .recipe-editor__lead{color:var(--muted);resize:none;margin-top:.75rem;font-size:clamp(1.02rem,.96rem + .3vw,1.2rem);line-height:1.55}.recipe-editor .recipe-editor__title:hover,.recipe-editor .recipe-editor__lead:hover,.recipe-editor .recipe-editor__title:focus-visible,.recipe-editor .recipe-editor__lead:focus-visible{border-bottom-color:var(--line-strong);outline:none}.recipe-editor .recipe-editor__title::placeholder,.recipe-editor .recipe-editor__lead::placeholder{color:color-mix(in srgb, var(--muted) 70%, transparent)}.recipe-editor .recipe-editor__title--error{border-bottom-color:var(--danger)}.recipe-editor__facts{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin:1.75rem 0 .5rem;display:grid}@media (max-width:560px){.recipe-editor__facts{grid-template-columns:repeat(2,minmax(0,1fr))}}.recipe-fact{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);flex-direction:column;gap:.35rem;padding:.65rem .8rem;transition:border-color .15s;display:flex}.recipe-fact:focus-within{border-color:var(--accent)}.recipe-fact__label,.recipe-editor__section-head .recipe-editor__hint{font-family:var(--font-mono), monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.68rem}.recipe-fact__input{align-items:baseline;gap:.3rem;display:flex}.recipe-fact .recipe-fact__input input{width:100%;min-width:0;font-family:var(--font-mono), monospace;background:0 0;border:0;padding:0;font-size:1.15rem}.recipe-fact .recipe-fact__input input:focus-visible{outline:none}.recipe-fact__suffix{font-family:var(--font-mono), monospace;color:var(--muted);font-size:.75rem}.recipe-editor__section{flex-direction:column;gap:.9rem;margin-top:2.5rem;display:flex}.recipe-editor__section-head{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem;padding-bottom:.6rem;display:flex}.recipe-editor__section-head h2{font-family:var(--font-display), Georgia, serif;letter-spacing:-.01em;font-size:1.5rem;font-weight:450}.recipe-editor__section-head .recipe-editor__hint{text-transform:none;letter-spacing:.03em}.ingredient-rows,.step-rows{flex-direction:column;gap:.5rem;padding:0;list-style:none;display:flex}.ingredient-rows--error,.step-rows--error{border:1px dashed var(--danger);border-radius:var(--radius-sm);padding:.5rem}.ingredient-row{grid-template-columns:5.5rem 5.5rem minmax(0,1fr) auto;align-items:center;gap:.5rem;display:grid}.ingredient-row .ingredient-row__amount,.ingredient-row .ingredient-row__unit{font-family:var(--font-mono), monospace;font-size:.88rem}.ingredient-row input,.step-row textarea,.step-row__minutes input{background:var(--surface);border-color:var(--line);width:100%;min-width:0}.step-row{grid-template-columns:2rem minmax(0,1fr) 6rem auto;align-items:start;gap:.6rem;display:grid}.step-row__number{width:2rem;height:2rem;font-family:var(--font-mono), monospace;color:var(--on-accent);background:var(--accent-fill);border-radius:var(--radius-pill);place-items:center;margin-top:.2rem;font-size:.8rem;display:grid}.step-row .step-row__text{resize:vertical;line-height:1.5}.step-section-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.6rem;margin-top:.75rem;display:grid}.step-section-row:first-child{margin-top:0}.step-section-row .step-section-row__title{font-family:var(--font-mono), monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);border:0;border-bottom:1px dashed var(--line-strong);background:0 0;border-radius:0;padding:.4rem .1rem;font-size:.85rem}.step-section-row .step-section-row__title::placeholder{text-transform:none;letter-spacing:0}.step-rows__hint{margin:.6rem 0 0}.recipe-editor__adds{flex-wrap:wrap;gap:.5rem;display:flex}.ingredient-row select.ingredient-row__unit{background:var(--surface);border-color:var(--line);width:100%;min-width:0;padding-right:.3rem}.step-row__minutes{font-family:var(--font-mono), monospace;color:var(--muted);align-items:center;gap:.3rem;font-size:.75rem;display:flex}.step-row__minutes input{font-family:var(--font-mono), monospace}@media (max-width:560px){.ingredient-row{grid-template-columns:4.5rem 4.5rem minmax(0,1fr) auto}.step-row{grid-template-columns:2rem minmax(0,1fr) auto}.step-row__minutes{grid-column:2}}.recipe-editor .row-remove{width:1.9rem;height:1.9rem;color:var(--muted);border-radius:var(--radius-pill);background:0 0;border:1px solid #0000;align-self:center;place-items:center;padding:0;font-size:1.1rem;line-height:1;display:grid}.recipe-editor .row-remove:hover{color:var(--danger);border-color:var(--line-strong);opacity:1;transform:none}.recipe-editor .recipe-editor__add{color:var(--fg);background:var(--surface-2);border:1px dashed var(--line-strong);align-self:flex-start;padding:.45rem 1rem;font-size:.85rem}.recipe-editor .recipe-editor__add:hover{color:var(--accent);border-color:var(--accent);opacity:1}.tag-picker__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem;display:flex}.tag-picker__head .recipe-editor__hint{font-weight:400}.tag-picker{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);flex-direction:column;gap:.9rem;padding:1rem;display:flex}.tag-picker__group{grid-template-columns:9.5rem minmax(0,1fr);align-items:start;gap:.5rem 1rem;display:grid}@media (max-width:560px){.tag-picker__group{grid-template-columns:minmax(0,1fr)}}.tag-picker__label{font-family:var(--font-mono), monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-top:.35rem;font-size:.68rem}.tag-picker__chips{flex-wrap:wrap;gap:.4rem;display:flex}.tag-picker .tag-option{color:var(--fg);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);align-self:auto;align-items:center;gap:.3rem;padding:.3rem .8rem;font-size:.82rem;font-weight:500;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.tag-picker .tag-option:hover{border-color:var(--accent);opacity:1;transform:none}.tag-picker .tag-option[aria-pressed=true]{color:var(--on-accent);background:var(--accent-fill);border-color:var(--accent-fill)}.tag-picker__new{border-top:1px solid var(--line);align-items:center;gap:.5rem;padding-top:.75rem;display:flex}.tag-picker__new input{background:var(--surface-2);border-color:var(--line);flex:1;min-width:0;max-width:18rem}.recipe-editor .photo-drop{min-height:9rem;color:var(--muted);background:var(--surface);border:1.5px dashed var(--line-strong);border-radius:var(--radius-sm);flex-direction:column;justify-content:center;align-self:stretch;align-items:center;gap:.35rem;padding:1.25rem;transition:border-color .15s,background-color .15s,color .15s;display:flex}.recipe-editor .photo-drop:hover,.recipe-editor .photo-drop[data-dragging]{color:var(--accent);border-color:var(--accent);background:var(--accent-soft);opacity:1;transform:none}.photo-drop__title{color:var(--fg);font-size:.95rem;font-weight:600}.photo-drop__hint{font-family:var(--font-mono), monospace;letter-spacing:.03em;font-size:.72rem;font-weight:400}.photo-field{flex-direction:column;gap:.6rem;display:flex}.photo-field__image{object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--line);width:100%;max-height:22rem}.photo-field__actions{gap:.4rem;display:flex}.recipe-editor .photo-field__url{border-color:var(--line);background:0 0;font-size:.85rem}.field--group{flex-direction:column;gap:.5rem;display:flex}.recipe-editor__side{min-width:0}.recipe-editor__sticky{flex-direction:column;gap:.9rem;display:flex;position:sticky;top:6rem}.recipe-editor__preview{pointer-events:none}.recipe-editor .recipe-editor__save{justify-content:center;align-self:stretch;padding:.75rem 1.35rem;font-size:.95rem}.recipe-editor__hint{color:var(--muted);font-size:.8rem}.toast-region{right:max(1rem, env(safe-area-inset-right,0px));bottom:max(1rem, env(safe-area-inset-bottom,0px));z-index:100;pointer-events:none;flex-direction:column;align-items:flex-end;gap:.5rem;width:min(380px,100vw - 2rem);display:flex;position:fixed}.toast{pointer-events:auto;width:100%;color:var(--fg);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);box-shadow:0 14px 34px -14px var(--shadow-color), 0 2px 6px #00000014;animation:toast-in .2s var(--ease-out) both;align-items:flex-start;gap:.7rem;padding:.75rem .75rem .75rem .9rem;display:flex}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}.toast__icon{border-radius:var(--radius-pill);width:1.4rem;height:1.4rem;color:var(--on-accent);background:var(--accent-fill);flex:none;place-items:center;margin-top:.05rem;font-size:.75rem;font-weight:700;display:grid}.toast--error .toast__icon{background:var(--danger);color:#fff}.toast--info .toast__icon{background:var(--surface-2);color:var(--fg);border:1px solid var(--line-strong)}.toast--error{border-color:color-mix(in srgb, var(--danger) 45%, var(--line-strong))}.toast__message{overflow-wrap:anywhere;flex:1;min-width:0;font-size:.88rem;line-height:1.45}.toast .toast__close{width:1.5rem;height:1.5rem;color:var(--muted);border-radius:var(--radius-pill);background:0 0;border:0;flex:none;align-self:flex-start;place-items:center;padding:0;display:grid}.toast .toast__close:hover{color:var(--fg);background:var(--surface-2);opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.toast{animation:none}}.load-error{background:var(--danger-soft);border:1px solid color-mix(in srgb, var(--danger) 40%, transparent);border-radius:var(--radius-sm);color:var(--fg);margin-bottom:1.5rem;padding:.8rem 1rem;font-size:.92rem}.empty-invite{color:var(--muted);align-items:center;gap:1rem;font-size:.95rem;display:flex}.recipe-page{max-width:1240px}.recipe-hero{grid-template-columns:minmax(0,1fr);align-items:center;gap:clamp(1.5rem,4vw,3.5rem);margin-bottom:clamp(1.75rem,4vh,2.75rem);display:grid}.recipe-hero--with-image{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}@media (max-width:860px){.recipe-hero--with-image{grid-template-columns:minmax(0,1fr)}}.recipe-hero h1{text-wrap:balance;max-width:18ch;margin-bottom:0}.recipe-hero__tags{margin-top:1.1rem}.recipe-hero__image{aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);border:1px solid var(--line);width:100%;box-shadow:var(--shadow)}.recipe-owner-actions{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:1.5rem;display:flex}.button.button--danger{color:var(--danger)}.button.button--danger:hover{color:var(--danger);border-color:var(--danger);background:color-mix(in srgb, var(--danger) 10%, var(--surface-2))}.recipe-facts{flex-wrap:wrap;gap:.75rem;margin-bottom:clamp(2rem,5vh,3rem);display:flex}.recipe-facts__item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);flex:0 auto;min-width:8.5rem;padding:.8rem 1.25rem}.recipe-facts dt{font-family:var(--font-mono), monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.68rem}.recipe-facts dd{font-family:var(--font-mono), monospace;margin:.3rem 0 0;font-size:1.15rem}.recipe-layout{grid-template-columns:minmax(260px,360px) minmax(0,1fr);align-items:start;gap:clamp(1.5rem,4vw,3.5rem);display:grid}@media (max-width:860px){.recipe-layout{grid-template-columns:minmax(0,1fr)}}.recipe-section-head{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem;margin-bottom:1rem;padding-bottom:.7rem;display:flex}.recipe-section-head h2{font-family:var(--font-display), Georgia, serif;letter-spacing:-.01em;font-size:1.6rem;font-weight:450}.recipe-section-head__hint{font-family:var(--font-mono), monospace;letter-spacing:.03em;color:var(--muted);font-size:.7rem}.recipe-ingredients-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem 1.4rem 1.4rem;position:sticky;top:6rem}@media (max-width:860px){.recipe-ingredients-card{position:static}}.ingredient-checklist{flex-direction:column;gap:.15rem;display:flex}.ingredient-check{border-radius:calc(var(--radius-sm) - 4px);cursor:pointer;align-items:baseline;gap:.6rem;padding:.45rem .35rem;transition:background-color .15s;display:flex}.ingredient-check:hover{background:var(--surface-2)}.ingredient-check input{opacity:0;pointer-events:none;position:absolute}.ingredient-check__box{color:#0000;border:1.5px solid var(--line-strong);border-radius:5px;flex:none;align-self:center;place-items:center;width:1.1rem;height:1.1rem;transition:background-color .15s,border-color .15s;display:grid}.ingredient-check input:focus-visible+.ingredient-check__box{outline:2px solid var(--accent);outline-offset:2px}.ingredient-check--done .ingredient-check__box{color:var(--on-accent);background:var(--accent-fill);border-color:var(--accent-fill)}.ingredient-check__qty{min-width:4.5rem;font-family:var(--font-mono), monospace;flex:none;font-size:.82rem;font-weight:600}.ingredient-check__name{font-size:.95rem;line-height:1.45}.ingredient-check--done .ingredient-check__qty,.ingredient-check--done .ingredient-check__name{color:var(--muted);text-decoration:line-through}.method-steps{flex-direction:column;gap:1.1rem;display:flex}.method-step{grid-template-columns:2.25rem minmax(0,1fr) auto;align-items:start;gap:.9rem;display:grid}.method-step__number{width:2.25rem;height:2.25rem;font-family:var(--font-mono), monospace;color:var(--on-accent);background:var(--accent-fill);border-radius:var(--radius-pill);place-items:center;font-size:.85rem;display:grid}.method-step__text{padding-top:.35rem;font-size:1.02rem;line-height:1.7}.method-step__text>*+*{margin-top:.4rem}.method-step__lead{font-weight:600}.method-step__list{margin:0;padding-left:1.2rem;list-style:outside}.method-step__list li+li{margin-top:.25rem}.method-step__list li::marker{color:var(--accent)}.method-group+.method-group{margin-top:2rem}.method-group__title{font-family:var(--font-mono), monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin:0 0 1rem;font-size:.78rem;font-weight:500}.method-step__time{font-family:var(--font-mono), monospace;white-space:nowrap;color:var(--muted);border:1px solid var(--line-strong);border-radius:var(--radius-pill);margin-top:.4rem;padding:.15rem .6rem;font-size:.75rem}.form{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:1rem;margin:1.5rem 0 2rem;padding:1.5rem;display:flex}.field{color:var(--muted);flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:600;display:flex}input,textarea,select{font:inherit;font-family:var(--font-body), sans-serif;color:var(--fg);background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--radius-sm);padding:.5rem .65rem;font-size:1rem;transition:border-color .15s}input:hover,textarea:hover,select:hover{border-color:var(--muted)}textarea{resize:vertical}button{font:inherit;color:var(--on-accent);background:var(--accent-fill);border:1px solid var(--accent-fill);border-radius:var(--radius-pill);cursor:pointer;align-self:flex-start;padding:.6rem 1.35rem;font-size:.9rem;font-weight:600;transition:opacity .15s,transform .15s}button:hover{opacity:.88;transform:translateY(-1px)}button:active:not(:disabled){opacity:1;transition-duration:60ms;transform:translateY(0)scale(.97)}button:disabled{opacity:.6;cursor:default;transform:none}.button-link{color:var(--on-accent);background:var(--accent-fill);border-radius:var(--radius-pill);cursor:pointer;padding:.6rem 1.35rem;font-size:.9rem;font-weight:600;transition:opacity .15s,transform .15s;display:inline-block}.button-link:hover{opacity:.88;transform:translateY(-1px)}.form-error{color:var(--danger);font-size:.85rem}.summary{margin-bottom:2.5rem}.summary-hero{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);margin-bottom:1rem;padding:1.5rem 1.75rem}.summary-hero__label{font-family:var(--font-mono), monospace;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-faint);margin-bottom:.5rem;font-size:.78rem;font-weight:600}.summary-hero__value{font-family:var(--font-mono), monospace;font-size:clamp(2rem,1.6rem + 1.5vw,2.75rem);font-weight:700}.summary-hero__value--positive{color:var(--success)}.summary-hero__value--negative{color:var(--danger)}.summary-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;display:grid}.summary-card{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);padding:.85rem 1rem}.summary-card__label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted-faint);margin-bottom:.35rem;font-size:.68rem;font-weight:600}.summary-card__value{font-family:var(--font-mono), monospace;font-size:1.05rem;font-weight:700}.summary-card__value--positive{color:var(--success)}.summary-card__value--negative{color:var(--danger)}.participant-chips{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:2rem;display:flex}.participant-chip{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-pill);align-items:center;gap:.5rem;padding:.4rem .5rem .4rem .9rem;font-size:.85rem;font-weight:600;display:flex}.participant-chip__action{cursor:pointer;color:var(--muted-faint);background:0 0;border:none;padding:0;font-size:.72rem;font-weight:500}.participant-chip__action--delete{color:var(--danger);font-size:.95rem;line-height:1}.participant-chip__add{cursor:pointer;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);color:var(--fg);padding:.35rem .95rem;font-size:.85rem;font-weight:600}.finance-sharing{flex-direction:column;gap:.35rem;margin-bottom:2rem;display:flex}.finance-sharing__toggle{cursor:pointer;align-items:center;gap:.6rem;width:fit-content;font-size:.9rem;font-weight:600;display:inline-flex}.finance-sharing__toggle input[type=checkbox]{width:1.1rem;height:1.1rem;accent-color:var(--accent);cursor:pointer}.finance-sharing__status{color:var(--muted-faint);font-size:.8rem}.finance-section{margin-bottom:2.5rem}.chart-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem;margin-bottom:2.5rem;display:grid}.chart-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);padding:1.25rem 1.4rem}.chart-card__header{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.chart-card__title{font-family:var(--font-mono), monospace;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.78rem;font-weight:700}.chart-card__header .chart-card__title{margin-bottom:0}.chart-card__nav{color:var(--muted);align-items:center;gap:.4rem;font-size:.78rem;display:flex}.chart-card__nav-btn{background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);color:var(--fg);width:1.9rem;height:1.9rem;padding:0;font-size:.9rem;line-height:1}.chart-card__nav-btn:hover:not(:disabled){border-color:var(--ember);color:var(--ember);opacity:1;transform:none}.chart-card__month{text-align:center;min-width:6.5rem}.chart-empty{color:var(--muted-faint);font-size:.88rem}.chart-legend{color:var(--muted);gap:1rem;margin:0 0 .75rem;padding:0;font-size:.78rem;list-style:none;display:flex}.chart-legend--wrap{flex-wrap:wrap;margin-top:.85rem;margin-bottom:0}.chart-legend__item{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:.4rem;padding:0;transition:opacity .15s;display:inline-flex}.chart-legend__item:hover{opacity:1;color:var(--fg);transform:none}.chart-legend__swatch{border-radius:2px;flex-shrink:0;width:.65rem;height:.65rem}.chart-legend__swatch--income{background:var(--success)}.chart-legend__swatch--expense{background:var(--danger)}.bar-chart{flex-direction:column;gap:.6rem;display:flex}.bar-chart__row{width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;grid-template-columns:6.5rem 1fr auto;align-items:center;gap:.6rem;padding:.15rem 0;transition:opacity .15s;display:grid}.bar-chart__row:hover{opacity:1;transform:none}.bar-chart__row--dimmed{opacity:.4}.bar-chart__label{color:var(--fg);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}.bar-chart__track{background:var(--surface-2,var(--line-soft));border-radius:var(--radius-sm);height:.6rem;display:block;overflow:hidden}.bar-chart__fill{background:var(--code);border-radius:var(--radius-sm);transform-origin:0;width:100%;height:100%;transition:transform .5s ease-out;display:block;transform:scaleX(0)}.bar-chart__value{font-family:var(--font-mono), monospace;color:var(--muted);white-space:nowrap;font-size:.78rem}.line-chart-wrap{position:relative}.line-chart{cursor:crosshair;width:100%;height:auto;overflow:visible}.line-chart__baseline{stroke:var(--line);stroke-width:1px}.line-chart__line{fill:none;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;transition:opacity .15s}.line-chart__line--income{stroke:var(--success)}.line-chart__line--expense{stroke:var(--danger)}.line-chart__dot--income{fill:var(--success);transition:opacity .15s,r .15s}.line-chart__dot--expense{fill:var(--danger);transition:opacity .15s,r .15s}.line-chart__tick{fill:var(--muted-faint);font-size:9px;font-family:var(--font-mono), monospace}.line-chart__crosshair{stroke:var(--muted-faint);stroke-width:1px;stroke-dasharray:3 3;pointer-events:none}.line-chart__tooltip{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow);white-space:nowrap;pointer-events:none;z-index:2;padding:.5rem .65rem;font-size:.75rem;position:absolute;transform:translate(-50%,calc(-100% - 10px))}.line-chart__tooltip-month{font-family:var(--font-mono), monospace;color:var(--muted-faint);margin-bottom:.2rem}.line-chart__tooltip-row--income{color:var(--success)}.line-chart__tooltip-row--expense{color:var(--danger)}.stacked-bar{border-radius:var(--radius-sm);background:var(--surface-2,var(--line-soft));height:1.5rem;display:flex;overflow:hidden}.stacked-bar__slot{height:100%;overflow:hidden}.stacked-bar__slot+.stacked-bar__slot{border-left:2px solid var(--surface)}.stacked-bar__segment{transform-origin:0;width:100%;height:100%;transition:transform .5s ease-out,opacity .15s;transform:scaleX(0)}.finance-month{margin-bottom:1.5rem}.stale-badge{font-family:var(--font-mono), monospace;text-transform:uppercase;letter-spacing:.05em;color:var(--warning);background:var(--warning-soft);border-radius:var(--radius-sm);vertical-align:middle;margin-left:.5rem;padding:.1rem .4rem;font-size:.65rem;font-weight:700;display:inline-block}.shared-badge{font-family:var(--font-mono), monospace;text-transform:uppercase;letter-spacing:.05em;color:var(--code);background:var(--code-soft);border-radius:var(--radius-sm);vertical-align:middle;margin-left:.5rem;padding:.1rem .4rem;font-size:.65rem;font-weight:700;display:inline-block}.split-notice{color:var(--warning);background:var(--warning-soft);border-radius:var(--radius-sm);margin-bottom:1rem;padding:.75rem 1rem;font-size:.88rem}.recurring-paused{font-family:var(--font-mono), monospace;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-faint);background:var(--surface-2,var(--line-soft));border-radius:var(--radius-sm);vertical-align:middle;margin-left:.5rem;padding:.1rem .4rem;font-size:.65rem;font-weight:700;display:inline-block}.finance-month__header{justify-content:space-between;align-items:baseline;margin-bottom:.6rem;padding:0 .1rem;display:flex}.finance-month__title{font-family:var(--font-mono), monospace;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.8rem;font-weight:700}.finance-month__totals{font-family:var(--font-mono), monospace;gap:.85rem;font-size:.82rem;font-weight:600;display:flex}.finance-month__total--positive{color:var(--success)}.finance-month__total--negative{color:var(--danger)}.jobs-toolbar{justify-content:flex-end;margin-bottom:1rem;display:flex}.jobs-toolbar--split{justify-content:space-between;align-items:center}.status-pill{font-family:var(--font-mono), monospace;text-transform:uppercase;letter-spacing:.04em;border-radius:var(--radius-pill);white-space:nowrap;align-items:center;padding:.2rem .55rem;font-size:.7rem;font-weight:700;display:inline-flex}.status-pill--neutral{background:var(--surface-2,var(--line-soft));color:var(--muted)}.status-pill--active{background:var(--code-soft);color:var(--code)}.status-pill--success{background:color-mix(in srgb, var(--success) 18%, transparent);color:var(--success)}.status-pill--danger{background:var(--danger-soft);color:var(--danger)}.status-pill--warning{background:var(--warning-soft);color:var(--warning)}.job-row__meta{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.job-row__listing-link{color:var(--muted);margin-top:.35rem;font-size:.78rem;display:inline-block}.job-row__listing-link:hover{color:var(--ember)}.job-row__stage-days{font-family:var(--font-mono), monospace;color:var(--muted);background:var(--surface-2,var(--line-soft));border-radius:var(--radius-pill);padding:.15rem .5rem;font-size:.72rem}.job-row__timeline{color:var(--muted);flex-wrap:wrap;margin-top:.4rem;font-size:.8rem;display:flex}.job-row__timeline>span:not(:first-child):before{content:"·";color:var(--line-strong,var(--line));margin:0 .5rem}.job-row__followup--overdue{color:var(--warning);font-weight:600}.job-row__notes{color:var(--muted);margin-top:.4rem;font-size:.85rem}.job-history{border-top:1px dashed var(--line);flex-direction:column;gap:.5rem;margin-top:.5rem;padding-top:.6rem;display:flex}.job-history__row{align-items:center;gap:.6rem;display:flex}.job-history__meta{font-family:var(--font-mono), monospace;color:var(--muted);font-size:.75rem}.view-toggle{background:var(--surface-2,var(--surface));border:1px solid var(--line-strong);border-radius:var(--radius-pill);align-items:center;gap:2px;padding:3px;display:inline-flex}.view-toggle .view-toggle__option{color:var(--muted);border-radius:var(--radius-pill);background:0 0;border:0;align-self:auto;padding:.4rem 1rem;font-size:.82rem;font-weight:600;transition:background-color .15s,color .15s,box-shadow .15s}.view-toggle .view-toggle__option:hover{color:var(--fg);background:color-mix(in srgb, var(--fg) 6%, transparent);opacity:1;transform:none}.view-toggle .view-toggle__option--active,.view-toggle .view-toggle__option--active:hover{background:var(--accent-fill);color:var(--on-accent);box-shadow:0 1px 2px #0003}.kanban{gap:1rem;padding-bottom:1rem;display:flex;overflow-x:auto}.kanban__column{background:var(--surface-2,var(--surface));border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;flex:1 1 0;min-width:240px;min-height:0;padding:.75rem;transition:border-color .15s,background-color .15s;display:flex}.kanban .kanban__column--closed{min-width:3rem;color:var(--muted);cursor:pointer;flex:0 0 3rem;justify-content:flex-start;align-self:stretch;align-items:center;gap:.75rem;padding:.75rem 0;font-size:.82rem;font-weight:600}.kanban .kanban__column--closed:hover{border-color:var(--accent);color:var(--fg);opacity:1;transform:none}.kanban__closed-count{font-family:var(--font-mono), monospace;justify-content:center;min-width:1.6rem}.kanban__closed-label{writing-mode:vertical-rl;white-space:nowrap}.kanban__column-head{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.kanban__column-head .kanban__column-title{flex:1;min-width:0;margin-bottom:0}.kanban .kanban__collapse{width:1.75rem;height:1.75rem;color:var(--muted);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-pill);flex:none;justify-content:center;align-self:auto;align-items:center;padding:0;display:flex}.kanban .kanban__collapse:hover{color:var(--accent);border-color:var(--accent);opacity:1;transform:none}.kanban__column--over{border-color:var(--code);background:var(--code-soft)}.kanban__column-title{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.kanban__count{font-family:var(--font-mono), monospace;opacity:.75}.kanban__cards{flex-direction:column;gap:.6rem;min-height:2rem;display:flex}.finance-list,.kanban,.kanban__cards{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.finance-list:hover,.kanban:hover,.kanban__cards:hover{scrollbar-color:var(--muted) transparent}@media (min-width:900px) and (min-height:600px){body:has(.jobs-page){height:100dvh;min-height:0;overflow:hidden}.site-main:has(.jobs-page){flex-direction:column;min-height:0;padding-top:clamp(1.5rem,4vh,3rem);padding-bottom:clamp(1rem,2.5vh,2rem);display:flex}.jobs-page{flex-direction:column;flex:1;min-height:0;display:flex}.jobs-page .jobs-section{flex-direction:column;flex:1;min-height:0;margin-bottom:0;display:flex}.jobs-section>.finance-list{flex:1;min-height:0;overflow-y:auto}.jobs-section>.kanban{flex:1;min-height:0;padding-bottom:.5rem}.jobs-section .kanban__cards{scrollbar-gutter:stable;flex:1;min-height:0;margin:-2px;padding:2px;overflow-y:auto}}.kanban__card{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:grab;width:100%;padding:.65rem .75rem;transition:border-color .15s;display:block;position:relative}.kanban__card:hover{border-color:var(--ember)}.kanban__card .kanban__card-open{width:100%;font:inherit;text-align:left;color:inherit;cursor:inherit;background:0 0;border:0;border-radius:0;flex-direction:column;align-items:flex-start;padding:0;display:flex}.kanban__card .kanban__card-open:hover{opacity:1;transform:none}.kanban__card .kanban__card-open:after{content:"";border-radius:inherit;position:absolute;inset:0}.kanban__card .kanban__card-open:focus-visible{outline:none}.kanban__card:has(.kanban__card-open:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.kanban__join{z-index:1;color:var(--on-accent);background:var(--accent-fill);border-radius:var(--radius-pill);align-items:center;gap:.3rem;margin-top:.5rem;padding:.25rem .7rem;font-size:.75rem;font-weight:600;transition:opacity .15s;display:inline-flex;position:relative}.kanban__join:hover{opacity:.88}.kanban__card-title{font-size:.88rem;font-weight:700}.kanban__card-company{color:var(--muted);font-size:.8rem}.kanban__card-meta{font-family:var(--font-mono), monospace;color:var(--muted);margin-top:.2rem;font-size:.75rem}.kanban__card-overdue{color:var(--warning);margin-top:.35rem;font-size:.75rem;font-weight:600}.next-step{width:fit-content;max-width:100%;color:var(--fg);background:var(--accent-soft);border:1px solid color-mix(in srgb, var(--accent) 35%, transparent);border-radius:var(--radius-pill);flex-wrap:wrap;align-items:center;gap:.35rem;margin:.45rem 0 .1rem;padding:.25rem .7rem;font-size:.82rem;font-weight:600;display:inline-flex}.next-step a{color:var(--accent)}.next-step--past{color:var(--muted);border-color:var(--line);background:0 0;font-weight:500}.kanban__card .next-step{margin-top:.4rem;padding:.15rem .55rem;font-size:.72rem}.jobs-toolbar__actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.jobs-toolbar__actions>button{align-self:auto}.calendar-dialog .calendar-dialog__apple{align-self:flex-start}.calendar-dialog__url{align-items:center;gap:.5rem;display:flex}.calendar-dialog__url input{min-width:0;font-family:var(--font-mono), monospace;flex:1;font-size:.78rem}.calendar-dialog__hint{color:var(--muted);font-size:.8rem}.calendar-dialog__rotate{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.35rem .75rem;padding-top:.75rem;display:flex}.job-row__footer{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.75rem;display:flex}.job-row__footer .job-row__history-toggle{color:var(--fg);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);align-self:auto;align-items:center;gap:.35rem;padding:.3rem .85rem;font-size:.78rem;font-weight:600;transition:border-color .15s,color .15s;display:inline-flex}.job-row__footer .job-row__history-toggle:hover{color:var(--accent);border-color:var(--accent);opacity:1;transform:none}.cv-chip{border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:var(--surface-2);align-items:stretch;max-width:100%;display:inline-flex;overflow:hidden}.cv-chip .cv-chip__open,.job-cv .job-cv__file{min-width:0;color:var(--fg);background:0 0;border:0;border-radius:0;align-self:auto;align-items:center;gap:.4rem;padding:.3rem .75rem;font-size:.78rem;font-weight:600;transition:color .15s;display:inline-flex}.cv-chip .cv-chip__open:hover{color:var(--accent);opacity:1;transform:none}.cv-chip__name{text-overflow:ellipsis;white-space:nowrap;max-width:22ch;overflow:hidden}.cv-chip__download{color:var(--muted);border-left:1px solid var(--line-strong);align-items:center;padding:0 .6rem;transition:color .15s;display:inline-flex}.cv-chip__download:hover{color:var(--accent)}.job-cv{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}.job-cv .job-cv__file{color:var(--accent);padding:0;font-size:.88rem}.job-cv__actions{flex-wrap:wrap;gap:.35rem;display:inline-flex}.job-cv .load-error{flex-basis:100%;margin:0}.job-cv .cv-drop{text-align:left;color:var(--fg);background:var(--surface-2);border:1.5px dashed var(--line-strong);border-radius:var(--radius-sm);flex:100%;align-self:auto;align-items:center;gap:.85rem;padding:.9rem 1.1rem;transition:border-color .15s,background-color .15s;display:flex}.job-cv .cv-drop:hover,.job-cv .cv-drop[data-dragging]{opacity:1;border-color:var(--accent);background:var(--accent-soft);transform:none}.cv-drop__icon{border-radius:var(--radius-pill);background:var(--surface);width:2.25rem;height:2.25rem;color:var(--accent);flex:none;place-items:center;display:grid}.cv-drop__text{flex-direction:column;gap:.1rem;font-size:.9rem;font-weight:600;display:flex}.cv-drop__hint{font-family:var(--font-mono), monospace;letter-spacing:.04em;color:var(--muted);font-size:.72rem;font-weight:400}.cv-preview-overlay{z-index:40}.modal-panel.cv-preview{gap:.75rem;max-width:min(1100px,100%);height:calc(100dvh - 3rem);max-height:none;padding:1rem;overflow:hidden}.cv-preview__bar{align-items:center;gap:.5rem;display:flex}.cv-preview__title{font-family:var(--font-mono), monospace;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-right:auto;font-size:.8rem;overflow:hidden}.cv-preview__loading{font-family:var(--font-mono), monospace;color:var(--muted);place-items:center;font-size:.8rem;display:grid}.cv-preview__frame{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2);flex:1;width:100%}.kanban__empty{color:var(--muted-faint);text-align:center;padding:.5rem 0;font-size:.8rem}.list-toolbar{flex-wrap:wrap;gap:.6rem;margin-bottom:1.5rem;display:flex}.list-toolbar input[type=text]{border-radius:var(--radius-pill);background-color:var(--surface-2);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239a9a9a' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E");background-position:.85rem;background-repeat:no-repeat;background-size:1rem;border:1px solid #0000;flex:0 360px;min-width:200px;padding:.55rem 1rem .55rem 2.35rem}.list-toolbar input[type=text]:hover,.list-toolbar input[type=text]:focus-visible{border-color:var(--line-strong,var(--line));background-color:var(--bg)}.list-toolbar select{appearance:none;cursor:pointer;color:var(--muted);border-radius:var(--radius-pill);background-color:var(--surface-2);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239a9a9a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;background-size:.8rem;border:1px solid #0000;flex:0 auto;padding:.55rem 2.1rem .55rem 1rem;font-size:.85rem;font-weight:600}.list-toolbar select:hover,.list-toolbar select:focus-visible{color:var(--fg);border-color:var(--line-strong,var(--line));background-color:var(--bg)}.finance-section__header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.finance-section__title{align-items:center;gap:.5rem;font-size:1.05rem;font-weight:700;display:flex}.finance-list{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.finance-row{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;transition:background-color .15s;display:flex}.finance-row--highlighted{background:var(--ember-soft)}.finance-row:last-child{border-bottom:none}.finance-row__main{min-width:0}.finance-row__title{font-weight:600}.finance-row__meta{color:var(--muted-faint);margin-top:.15rem;font-size:.8rem}.finance-row__actions{flex-shrink:0;align-items:center;gap:.9rem;display:flex}.finance-row__value{text-align:right}.finance-row__amount{font-weight:700}.finance-row__amount--positive{color:var(--success)}.finance-row__amount--negative{color:var(--danger)}.finance-row__action{cursor:pointer;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);color:var(--fg);padding:.35rem .85rem;font-size:.78rem;font-weight:600;transition:border-color .15s,color .15s,background-color .15s,transform .15s}.finance-row__action:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);opacity:1;transform:none}.finance-row__action--delete{color:var(--danger)}.finance-row__action--delete:hover{border-color:var(--danger);color:var(--danger);background:color-mix(in srgb, var(--danger) 12%, transparent)}.finance-empty{color:var(--muted-faint);padding:1rem 1.25rem;font-size:.9rem}.finance-row--investment{flex-direction:column;align-items:stretch;padding:0;display:flex}.finance-row__top{justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex}.investment-lots-toggle{background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);color:var(--fg);cursor:pointer;align-self:flex-start;margin:0 1.25rem .85rem;padding:.3rem .85rem;font-size:.78rem;font-weight:600}.investment-lots-toggle:hover{color:var(--accent);border-color:var(--accent);opacity:1;transform:none}.investment-lots{border-top:1px solid var(--line-soft);flex-direction:column;gap:.6rem;padding:.75rem 1.25rem 1rem;display:flex}.investment-lots__row{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.investment-lots__meta{color:var(--muted-faint);font-size:.8rem}.investment-lots__actions{flex-shrink:0;gap:.5rem;display:flex}.investment-lots__add{background:var(--surface-2);border:1px dashed var(--line-strong);border-radius:var(--radius-pill);color:var(--fg);cursor:pointer;align-self:flex-start;padding:.35rem .85rem;font-size:.78rem;font-weight:600}.investment-lots__add:hover{border-style:solid;border-color:var(--accent);color:var(--accent);opacity:1;transform:none}.live-dot{background:var(--success);border-radius:50%;width:7px;height:7px;animation:1.6s infinite pulse-warm;display:inline-block}@keyframes pulse-warm{0%,to{opacity:1}50%{opacity:.25}}.live-label{color:var(--muted-faint);font-size:.72rem;font-weight:600}.loan-progress{border-radius:var(--radius-pill);background:var(--line);width:200px;max-width:100%;height:6px;margin-top:.5rem;overflow:hidden}.loan-progress__fill{background:var(--accent-fill);border-radius:var(--radius-pill);transform-origin:0;width:100%;height:100%;transition:transform .6s ease-out}.budget-progress__fill--over{background:var(--warning)}.budget-over{color:var(--warning);font-weight:600}.modal-overlay{background:color-mix(in srgb, var(--fg) 45%, transparent);z-index:30;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.modal-panel{background:var(--surface);border-radius:var(--radius);width:100%;max-width:420px;max-height:calc(100vh - 3rem);box-shadow:var(--shadow);flex-direction:column;gap:1rem;padding:1.75rem;display:flex;overflow-y:auto}.modal-panel--wide{max-width:620px}.modal-panel--small{max-width:340px}.modal-panel--form{grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:1.1rem 1.25rem;max-width:min(760px,100%);padding:1.75rem 2rem 0;display:grid}.modal-panel--form>h2,.modal-panel--form>.field--full,.modal-panel--form>.form-error,.modal-panel--form>.modal-actions{grid-column:1/-1}.modal-panel--form>.modal-actions,.modal-panel--full>.modal-actions{z-index:1;background:var(--surface);border-top:1px solid var(--line);margin-top:.25rem;padding:1rem 0 1.5rem;position:sticky;bottom:0}.modal-panel--full{padding-bottom:0}.modal-panel--form .field,.modal-panel--full .field{font-size:.8rem}@media (max-width:640px){.modal-panel--form{grid-template-columns:minmax(0,1fr);padding:1.4rem 1.25rem 0}}.modal-panel--full{grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:1rem 1.5rem;max-width:min(1600px,100%);display:grid}.modal-panel--full>h2,.modal-panel--full>.field--textarea,.modal-panel--full>.form-error,.modal-panel--full>.modal-actions{grid-column:1/-1}@media (max-width:720px){.modal-panel--full{grid-template-columns:minmax(0,1fr)}}.textarea--mono{font-family:var(--font-mono), monospace;font-size:.85rem;line-height:1.6}.modal-panel h2{font-family:var(--font-display), Georgia, serif;letter-spacing:-.01em;margin-bottom:.25rem;font-size:1.7rem;font-weight:450}.modal-actions{justify-content:flex-end;gap:.6rem;display:flex}.modal-toggle{flex-wrap:wrap;gap:.5rem;display:flex}.modal-toggle--picker .modal-toggle-option{white-space:nowrap;flex:none;min-width:0;padding:.45rem .95rem}.modal-toggle-option{text-align:center;border-radius:var(--radius-pill);border:1px solid var(--line-strong);background:var(--surface-2);min-width:90px;color:var(--fg);cursor:pointer;flex:1;padding:.5rem .85rem;font-size:.85rem;font-weight:600;transition:border-color .15s,background-color .15s,color .15s}.modal-toggle-option--active{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--on-accent)}.symbol-search{position:relative}.symbol-search__dropdown{z-index:40;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);max-height:220px;box-shadow:0 8px 24px color-mix(in srgb, var(--fg) 18%, transparent);flex-direction:column;display:flex;position:absolute;top:calc(100% + .25rem);left:0;right:0;overflow-y:auto}.symbol-search__option{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:0;flex-direction:column;align-self:stretch;align-items:flex-start;gap:.1rem;width:100%;padding:.5rem .65rem;font-weight:400;display:flex}.symbol-search__option:hover,.symbol-search__option:focus-visible{background:var(--accent-soft)}.symbol-search__symbol{color:var(--fg);font-size:.85rem;font-weight:700}.symbol-search__name{color:var(--muted);font-size:.78rem}.modal-cancel{background:var(--surface-2);color:var(--fg);border:1px solid var(--line-strong)}.modal-cancel:hover{border-color:var(--accent);color:var(--accent);opacity:1}.modal-delete-confirm{background:var(--danger);border-color:var(--danger);color:#fff}.github-panel{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.9rem 1.1rem}.github-panel dl{grid-template-columns:max-content minmax(0,1fr);gap:.35rem 1.25rem;margin:0 0 .6rem;display:grid}.github-panel dt{font-family:var(--font-mono), monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-top:.15rem;font-size:.7rem}.github-panel dd{overflow-wrap:anywhere;margin:0;font-size:.88rem}.github-panel a{color:var(--accent)}.github-panel__note{color:var(--muted);margin:0;font-size:.8rem}.stack-picker{position:relative}.stack-picker__field{background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);cursor:text;flex-wrap:wrap;align-items:center;gap:.4rem;min-height:2.75rem;padding:.4rem .5rem;display:flex}.stack-picker__field:focus-within{border-color:var(--accent)}.stack-picker__field input{background:0 0;border:0;outline:none;flex:10rem;min-width:8rem;padding:.25rem}.stack-picker__chip button{width:1.1rem;height:1.1rem;color:var(--muted);border-radius:var(--radius-pill);background:0 0;border:0;place-items:center;margin-left:.1rem;padding:0;font-size:.9rem;line-height:1;display:grid}.stack-picker__chip button:hover{color:var(--danger)}.stack-picker__list{z-index:70;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);max-height:16rem;box-shadow:var(--shadow);padding:.3rem;list-style:none;position:absolute;top:calc(100% + .3rem);left:0;right:0;overflow-y:auto}.stack-picker__list li{cursor:pointer;border-radius:8px;align-items:center;gap:.6rem;padding:.45rem .6rem;font-size:.88rem;display:flex}.stack-picker__list li.is-active{background:var(--surface-2);color:var(--accent)}.stack-picker__custom{color:var(--muted)}.stack-picker__empty{color:var(--muted);cursor:default}.stack-picker__suggest{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.4rem;margin-top:.6rem;font-size:.8rem;display:flex}.stack-picker__suggest .chip{cursor:pointer;border-style:dashed}.stack-picker__suggest .chip:hover,.stack-picker__all:hover{color:var(--accent);border-color:var(--accent)}.stack-picker__all{color:var(--fg);border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:0 0;padding:.2rem .7rem;font-size:.78rem}
