:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--paper:#f6f4ee;--raised:#fff;--sunk:#eeebe3;--ink:#15171c;--ink-muted:#5a5f69;--ink-faint:#8a8f99;--rule:#15171c1f;--rule-soft:#15171c0f;--rule-firm:#15171c33;--ink-1:#2340d6;--ink-1-bg:#2340d614;--ink-1-on:#fff;--ink-2:#c4186b;--ink-2-bg:#c4186b14;--overprint:#7a2aa0;--state-ok-bg:#15803d1a;--state-err-bg:#b3261e1a;--state-ok:#15803d;--state-warn:#8a5a00;--state-err:#b3261e;--font-sans:"Geist Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--text-2xs:.6875rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--text-4xl:3rem;--text-5xl:4rem;--text-6xl:clamp(3rem, 8vw, 5.5rem);--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--space-16:4rem;--space-24:6rem;--radius-sm:4px;--radius-md:8px;--content-width:1180px;--content-gutter:1rem;--nav-height:57px;--control-height:2.875rem}@media (min-width:1024px){:root{--nav-height:51px}}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#131519;--raised:#1c1f25;--sunk:#0e1013;--ink:#ecebe7;--ink-muted:#8d929b;--ink-faint:#676c76;--rule:#ecebe71c;--rule-soft:#ecebe70e;--rule-firm:#ecebe730;--ink-1:#8098ff;--ink-1-bg:#8098ff21;--ink-1-on:#0a0f2a;--ink-2:#ff6fa8;--ink-2-bg:#ff6fa821;--overprint:#c08cff;--state-ok-bg:#5fd48b24;--state-err-bg:#f0736f24;--state-ok:#5fd48b;--state-warn:#e8b54a;--state-err:#f0736f}}:root[data-theme=dark]{--paper:#131519;--raised:#1c1f25;--sunk:#0e1013;--ink:#ecebe7;--ink-muted:#8d929b;--ink-faint:#676c76;--rule:#ecebe71c;--rule-soft:#ecebe70e;--rule-firm:#ecebe730;--ink-1:#8098ff;--ink-1-bg:#8098ff21;--ink-1-on:#0a0f2a;--ink-2:#ff6fa8;--ink-2-bg:#ff6fa821;--overprint:#c08cff;--state-ok-bg:#5fd48b24;--state-err-bg:#f0736f24;--state-ok:#5fd48b;--state-warn:#e8b54a;--state-err:#f0736f}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}[hidden]{display:none!important}#services,#contact{scroll-margin-top:calc(var(--nav-height) + 1.5rem)}body{isolation:isolate;font-family:var(--font-sans);background-color:var(--paper);color:var(--ink);line-height:1.6;transition:background-color .25s,color .25s;position:relative;overflow-x:hidden}a{color:inherit;text-decoration:none}.icon-sprite{width:0;height:0;position:absolute;overflow:hidden}.divider{display:none}.navbar{z-index:1000;background-color:var(--paper);border-bottom:1px solid var(--rule);width:100%;position:fixed;top:0;left:0}.navbar-inner{width:min(calc(100% - (var(--content-gutter) * 2)), var(--content-width));flex-direction:column;margin:0 auto;display:flex}.navbar-bar{justify-content:space-between;align-items:center;gap:var(--space-4);padding-block:var(--space-3);flex-wrap:nowrap;display:flex}.nav-brand{z-index:1}.logo{font-weight:700;font-size:var(--text-lg);color:var(--ink);line-height:1.2;display:inline-block}.logo span{color:var(--ink-1)}.logo:focus-visible{outline:2px solid var(--ink-1);outline-offset:2px}.hamburger{width:var(--space-8);height:var(--space-8);border-radius:var(--radius-sm);cursor:pointer;z-index:1001;background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;display:flex}.hamburger:focus-visible{outline:2px solid var(--ink-1);outline-offset:2px}.hamburger-line{width:var(--space-4);background-color:var(--ink);height:1.5px;transition:transform .3s cubic-bezier(.4,0,.2,1)}.hamburger.active .hamburger-line:first-child{transform:translateY(3.25px)rotate(45deg)}.hamburger.active .hamburger-line:nth-child(2){transform:translateY(-3.25px)rotate(-45deg)}.nav-menu{top:var(--nav-height);background:var(--paper);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease-out,visibility 0s linear .2s;position:fixed;bottom:0;left:0;right:0;overflow-y:auto}.nav-menu.active{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .2s ease-out}.nav-menu-inner{width:100%;max-width:var(--content-width);align-items:stretch;gap:var(--space-6);padding:var(--space-8) var(--content-gutter) var(--space-6);flex-direction:column;margin:0 auto;display:flex}.nav-links{flex-direction:column;align-items:stretch;display:flex}.nav-menu-row{opacity:0;transition:opacity .2s ease-out,transform .2s ease-out;transform:translateY(8px)}.nav-menu.active .nav-menu-row{opacity:1;transform:translateY(0)}.nav-links a:first-child{transition-delay:0s}.nav-links a:nth-child(2){transition-delay:40ms}.nav-links a:nth-child(3){transition-delay:80ms}.nav-theme-row{transition-delay:.12s}.nav-links a{color:var(--ink);font-size:var(--text-lg);padding-block:var(--space-4);border-bottom:1px solid var(--rule);font-weight:600;transition:color .2s,border-color .2s,opacity .2s ease-out,transform .2s ease-out}.nav-theme-row{justify-content:space-between;align-items:center;gap:var(--space-4);padding-block:var(--space-4);border-bottom:1px solid var(--rule);display:flex}.nav-theme-label{font-size:var(--text-lg);color:var(--ink);font-weight:600}.nav-links a:hover{color:var(--ink-1)}.nav-links a:focus-visible{outline:2px solid var(--ink-1);outline-offset:2px}.nav-links a[aria-current=page]{color:var(--ink-1);border-bottom-color:var(--ink-1)}.theme-toggle{-webkit-appearance:none;appearance:none;width:var(--space-8);height:var(--space-8);border:1px solid var(--rule-firm);border-radius:var(--radius-sm);cursor:pointer;background:0 0;place-items:center;padding:0;transition:background-color .2s,border-color .2s;display:grid;position:relative}.theme-toggle:hover{background:var(--rule-soft)}.theme-toggle:focus-visible{outline:2px solid var(--ink-1);outline-offset:2px}.theme-icon{z-index:1;color:currentColor;fill:none;opacity:0;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;place-items:center;width:18px;height:18px;transition:opacity .18s,transform .18s;display:grid;position:absolute;transform:scale(.72)rotate(-14deg)}.theme-toggle[data-theme-mode=system] .theme-icon-system,.theme-toggle[data-theme-mode=light] .theme-icon-sun,.theme-toggle[data-theme-mode=dark] .theme-icon-moon{opacity:1;transform:scale(1)rotate(0)}.theme-icon-system-mobile{display:none}.theme-icon-moon{width:19px;height:19px}@media (max-width:1023px){.theme-icon-system-desktop{display:none}.theme-icon-system-mobile{display:grid}.theme-toggle{display:none}}html.gsap-reveal-pending .pitch-row,html.gsap-reveal-pending .project-row{opacity:0;transform:translateY(16px)}.row-rule{background:var(--ink-1);transform-origin:0;pointer-events:none;width:100%;height:1px;position:absolute;top:-1px;left:0;transform:scaleX(0)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.theme-toggle,.theme-icon,.hamburger-line,.nav-menu,.nav-menu-row,.nav-links a{transition:none}.hero-title,.hero-subtext,.hero-ctas,.hero-meta{opacity:1;animation:none;transform:none}.btn-primary,.btn-secondary,.project-row-links svg{transition-property:background-color,border-color,color}.btn-primary:active,.btn-secondary:active,.project-row-links a:hover svg{transform:none}html.gsap-reveal-pending .pitch-row,html.gsap-reveal-pending .project-row{opacity:1;transform:none}}.footer{border-top:1px solid var(--rule);width:100%}.footer-inner{width:min(calc(100% - (var(--content-gutter) * 2)), var(--content-width));padding:var(--space-8) 0 var(--space-6);gap:var(--space-6);flex-direction:column;margin:0 auto;display:flex;position:relative}.footer-top{gap:var(--space-8);flex-direction:column;display:flex}.footer-left-info{gap:var(--space-1);flex-direction:column;display:flex}.footer-name{color:var(--ink);font-size:var(--text-lg);font-weight:700;line-height:1.2}.footer-text{color:var(--ink-muted);font-size:var(--text-base);line-height:1.5}.footer-bottom{justify-content:space-between;align-items:flex-end;width:100%;display:flex}.footer-copy{color:var(--ink);font-size:var(--text-xs);line-height:1.4}.mobile-br{display:block}.social-links{gap:var(--space-6);color:var(--ink-muted);display:flex}.social-links a{width:var(--space-6);height:var(--space-6);place-items:center;transition:color .2s;display:grid}.social-links a:hover{color:var(--ink-1)}.social-links a:focus-visible{outline:2px solid var(--ink-1);outline-offset:3px;border-radius:var(--radius-sm)}.social-links svg{width:var(--space-4);height:var(--space-4);fill:currentColor}@media (min-width:768px){.footer-top{flex-direction:row;justify-content:space-between;align-items:flex-start}.footer-right-info{text-align:left;max-width:350px}.mobile-br{display:none}}@media (min-width:1024px){.navbar-inner{flex-direction:row;justify-content:space-between;align-items:center}.navbar-bar{flex:none}.hamburger{display:none}.nav-menu{opacity:1;visibility:visible;pointer-events:auto;background:0 0;flex:1;transition:none;display:block;position:static;inset:auto;overflow:visible}.nav-menu-inner{justify-content:space-between;align-items:center;gap:var(--space-8);width:auto;max-width:none;margin:0;margin-left:var(--space-16);flex-direction:row;padding:0;overflow:visible}.nav-links{align-items:center;gap:var(--space-8);flex-direction:row}.nav-menu-row,.nav-links a{opacity:1;transition:color .2s,border-color .2s;transform:none}.nav-links a{font-size:var(--text-sm);padding:var(--space-1) 0;border-bottom:1px solid #0000}.nav-theme-row{display:none}}.hero{width:min(calc(100% - (var(--content-gutter) * 2)), var(--content-width));padding:calc(var(--nav-height) + var(--space-12)) 0 var(--space-16);margin:0 auto}.hero-grid{gap:var(--space-8);flex-direction:column;display:flex}.hero-main{align-items:flex-start;gap:var(--space-6);flex-direction:column;max-width:40rem;display:flex}.hero-title{font-size:var(--text-3xl);color:var(--ink);font-weight:700;line-height:1.1}.hero-emphasis{color:var(--ink-2)}.hero-subtext{font-size:var(--text-base);color:var(--ink-muted);max-width:34rem}.hero-ctas{gap:var(--space-3);flex-direction:column;width:100%;max-width:20rem;display:flex}.btn-primary,.btn-secondary{font-family:var(--font-sans);font-size:var(--text-sm);padding:var(--space-3) var(--space-6);border-radius:var(--radius-sm);text-align:center;cursor:pointer;font-weight:600;transition:background-color .2s,border-color .2s,color .2s,transform .15s}.btn-primary:active,.btn-secondary:active{transform:scale(.98)}.btn-primary{background:var(--ink-1);border:1px solid var(--ink-1);color:var(--ink-1-on)}.btn-primary:hover{color:var(--ink-1);background:0 0}.btn-primary:focus-visible{outline:2px solid var(--ink-1);outline-offset:2px}.btn-secondary{border:1px solid var(--rule-firm);color:var(--ink);background:0 0}.btn-secondary:hover{border-color:var(--ink)}.btn-secondary:focus-visible{outline:2px solid var(--ink-1);outline-offset:2px}.hero-meta{flex-direction:column;max-width:26rem;display:flex}.hero-meta-row{justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-top:1px solid var(--rule);display:flex}.hero-meta-row:last-child{border-bottom:1px solid var(--rule)}.hero-meta-label{font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint)}.hero-meta-value{font-size:var(--text-sm);color:var(--ink);text-align:right}@keyframes hero-fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.hero-title,.hero-subtext,.hero-ctas,.hero-meta{animation:.4s ease-out both hero-fade-up}.hero-subtext{animation-delay:80ms}.hero-ctas{animation-delay:.16s}.hero-meta{animation-delay:.24s}@media (min-width:768px){.hero-main{max-width:none}.hero-title{font-size:var(--text-4xl)}.hero-ctas{flex-direction:row;max-width:none}.btn-primary,.btn-secondary{width:auto;padding-inline:var(--space-8)}}@media (min-width:1024px){.hero{padding-top:calc(var(--nav-height) + var(--space-16));padding-bottom:var(--space-24)}.hero-grid{justify-content:space-between;align-items:flex-start;gap:var(--space-12);flex-direction:row}.hero-main{max-width:none}.hero-title{font-size:var(--text-4xl)}.hero-meta{width:14rem;padding-top:var(--space-3);flex-shrink:0}}@media (min-width:1280px){.hero-title{font-size:var(--text-5xl)}.hero-subtext{font-size:var(--text-lg)}}.pitch{width:min(calc(100% - (var(--content-gutter) * 2)), var(--content-width));margin:var(--space-8) auto 0;padding:var(--space-8) var(--space-6);border:1px solid var(--ink-1);border-radius:var(--radius-md);background:var(--ink-1-bg)}.pitch-header{max-width:34rem;margin-bottom:var(--space-8)}.pitch-header h2{font-size:var(--text-2xl);color:var(--ink);margin-bottom:var(--space-2)}.pitch-header p{font-size:var(--text-base);color:var(--ink-muted)}.pitch-list{flex-direction:column;display:flex}.pitch-row{gap:var(--space-1);padding:var(--space-4) 0;border-top:1px solid var(--rule);flex-direction:column;display:flex;position:relative}.pitch-row-title{font-size:var(--text-base);color:var(--ink);font-weight:600}.pitch-row-desc{font-size:var(--text-sm);color:var(--ink-muted)}@media (min-width:768px){.pitch-row{align-items:baseline;gap:var(--space-6);flex-direction:row}.pitch-row-title{flex-shrink:0;width:16rem}}@media (min-width:1024px){.pitch{padding:var(--space-12) var(--space-8)}}@media (min-width:1280px){.pitch-row-title{width:20rem}}.contact{width:min(calc(100% - (var(--content-gutter) * 2)), var(--content-width));padding:var(--space-16) 0;border-top:1px solid var(--rule);margin:0 auto}.contact-grid{gap:var(--space-8);flex-direction:column;display:flex}.contact-intro h2{font-size:var(--text-2xl);color:var(--ink);margin-bottom:var(--space-2)}.contact-intro p{font-size:var(--text-base);color:var(--ink-muted)}.contact-form{gap:var(--space-4);flex-direction:column;display:flex}.contact-form-grid{gap:var(--space-4);grid-template-columns:1fr;display:grid}.field.contact-field-full{max-width:none}.contact-form-actions{display:flex}.form-submit{position:relative}.form-submit:disabled{cursor:default}.form-submit.loading:disabled{cursor:wait;opacity:.7}.form-submit.success{border-color:var(--state-ok);color:var(--state-ok)}.form-submit.error{border-color:var(--state-err);color:var(--state-err)}.form-submit-icon{width:var(--space-4);height:var(--space-4);display:none}.form-submit.loading .form-submit-icon,.form-submit.success .form-submit-icon,.form-submit.error .form-submit-icon{display:block}.form-submit.loading .form-submit-icon{border:2px solid;border-right-color:#0000;border-radius:50%;animation:.7s linear infinite spin}.form-submit.success .form-submit-icon:before,.form-submit.error .form-submit-icon:before,.form-submit.error .form-submit-icon:after{content:"";background:currentColor;display:block}.form-submit.success .form-submit-icon:before{background:0 0;border:0 solid;border-width:0 0 2px 2px;width:.55rem;height:.3rem;transform:rotate(-45deg)translate(.12rem,.2rem)}.form-submit.error .form-submit-icon{position:relative}.form-submit.error .form-submit-icon:before,.form-submit.error .form-submit-icon:after{border-radius:999px;width:.85rem;height:2px;position:absolute;top:50%;left:50%}.form-submit.error .form-submit-icon:before{transform:translate(-50%,-50%)rotate(45deg)}.form-submit.error .form-submit-icon:after{transform:translate(-50%,-50%)rotate(-45deg)}@media (min-width:768px){.contact-form-grid{grid-template-columns:1fr 1fr}.contact-field-full{grid-column:1/-1}}@media (min-width:1024px){.contact-grid{gap:var(--space-16);flex-direction:row}.contact-intro{flex:0 0 20rem}.contact-form{flex:1}.contact-form-actions{justify-content:flex-end}}@media (min-width:1280px){.contact{padding:var(--space-24) 0}}.projects-page{width:100%}.projects-intro{width:min(calc(100% - (var(--content-gutter) * 2)), var(--content-width));padding:calc(var(--nav-height) + var(--space-12)) 0 var(--space-8);background:var(--paper);z-index:1;margin:0 auto;position:relative}.projects-intro h1{font-size:var(--text-3xl);color:var(--ink);margin-bottom:var(--space-4);font-weight:700;line-height:1.1}.projects-intro-copy{font-size:var(--text-base);color:var(--ink-muted);max-width:34rem}.projects-list{width:min(calc(100% - (var(--content-gutter) * 2)), var(--content-width));padding:var(--space-4) 0 var(--space-16);margin:0 auto}.project-list{flex-direction:column;display:flex}.project-row{gap:var(--space-4);padding:var(--space-6) 0;border-top:1px solid var(--rule);flex-direction:column;display:flex;position:relative}.project-row-content{gap:var(--space-3);flex-direction:column;flex:1;min-width:0;display:flex}.project-row-top{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.project-row-name{font-size:var(--text-lg);color:var(--ink);font-weight:600}.project-type{font-family:var(--font-mono);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.06em;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-weight:600;line-height:1}.project-type-personal{color:var(--ink-1);background:var(--ink-1-bg)}.project-type-professional{color:var(--ink-2);background:var(--ink-2-bg)}.project-type-academic{color:var(--ink-faint);border:1px solid var(--rule-firm);background:0 0}.project-row-desc{font-size:var(--text-sm);color:var(--ink-muted);max-width:40rem}.project-tags{gap:var(--space-2);flex-wrap:wrap;list-style:none;display:flex}.project-tags li{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-muted);background:var(--sunk);border:1px solid var(--rule);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2)}.project-row-links{gap:var(--space-4);flex-wrap:wrap;display:flex}.project-row-links a{align-items:center;gap:var(--space-1);color:var(--ink-1);font-size:var(--text-sm);font-weight:600;display:inline-flex}.project-row-links a:hover{text-decoration:underline}.project-row-links a:focus-visible{outline:2px solid var(--ink-1);outline-offset:2px;border-radius:var(--radius-sm)}.project-row-links svg{width:var(--space-4);height:var(--space-4);fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;transition:transform .15s}.project-row-links a:hover svg{transform:translate(2px,-2px)}.projects-cta{width:min(calc(100% - (var(--content-gutter) * 2)), var(--content-width));padding:var(--space-16) 0;border-top:1px solid var(--rule);align-items:flex-start;gap:var(--space-3);flex-direction:column;margin:0 auto;display:flex}.projects-cta .btn-primary{margin-top:calc(var(--space-6) - var(--space-3))}.projects-cta h2{font-size:var(--text-2xl);color:var(--ink)}.projects-cta p{font-size:var(--text-base);color:var(--ink-muted)}@media (min-width:1024px){.projects-intro{padding-top:calc(var(--nav-height) + var(--space-16))}.projects-intro h1{font-size:var(--text-4xl)}}@media (min-width:1280px){.project-row-desc{font-size:var(--text-base)}}@keyframes spin{to{transform:rotate(360deg)}}@media (min-width:900px){:root{--content-gutter:1.5rem}}.field{gap:var(--space-1);flex-direction:column;max-width:32rem;display:flex}.field-label{font-size:var(--text-sm);color:var(--ink);font-weight:600}.field-input,.field-textarea{font-family:var(--font-sans);font-size:var(--text-base);color:var(--ink);background:var(--raised);border:1px solid var(--rule-firm);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);width:100%}.field-input::placeholder,.field-textarea::placeholder{color:var(--ink-muted)}.field-input:hover,.field-textarea:hover{border-color:var(--ink-muted)}:is(.field-input:focus-visible,.field-textarea:focus-visible){outline:2px solid var(--ink-1);outline-offset:1px;border-color:var(--ink-1)}.field-input:disabled,.field-textarea:disabled{color:var(--ink-faint);background:var(--sunk);border-color:var(--rule);cursor:not-allowed}.field-help{font-size:var(--text-xs);color:var(--ink-muted)}.field-error{align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--state-err);display:flex}.field.is-invalid .field-input,.field.is-invalid .field-textarea{border-color:var(--state-err)}:is(.field.is-invalid .field-input:focus-visible,.field.is-invalid .field-textarea:focus-visible){outline-color:var(--state-err);border-color:var(--state-err)}.field-textarea{resize:vertical;min-height:6rem;line-height:1.5}.code-pane{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--ink);background:var(--sunk);border:1px solid var(--rule);border-radius:var(--radius-sm);padding:var(--space-3);max-width:100%;line-height:1.5;overflow-x:auto}.code-pane pre{white-space:pre;margin:0}.code-pane .code-pane-match{color:var(--ink-2);background:var(--ink-2-bg)}.segmented{gap:var(--space-1);padding:var(--space-1);background:var(--sunk);border:1px solid var(--rule);border-radius:var(--radius-sm);grid-auto-columns:1fr;grid-auto-flow:column;width:max-content;display:inline-grid;position:relative}.segmented-indicator{top:var(--space-1);left:var(--space-1);bottom:var(--space-1);width:calc((100% - (2 * var(--space-1)) - ((var(--segmented-count,1) - 1) * var(--space-1))) / var(--segmented-count,1));background:var(--ink-1);border-radius:var(--radius-sm);transform:translateX(calc(var(--segmented-active-index,0) * (100% + var(--space-1))));pointer-events:none;transition:transform .2s cubic-bezier(.4,0,.2,1);position:absolute}@media (prefers-reduced-motion:reduce){.segmented-indicator{transition:none}}.segmented-option{z-index:1;min-width:0;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--ink-muted);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:inline-flex;position:relative}.segmented-option svg{width:var(--space-4);height:var(--space-4);fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.segmented-option:hover{color:var(--ink);background:var(--rule-soft)}.segmented-option:focus-visible{outline:2px solid var(--ink-1);outline-offset:1px}.segmented-option[aria-checked=true]{color:var(--ink-1-on)}.segmented-option[aria-checked=true]:hover{background:0 0}.segmented-option:disabled{color:var(--ink-faint);cursor:not-allowed}.tabs{flex-direction:column;display:flex}.tab-list{gap:var(--space-4);border-bottom:1px solid var(--rule);display:flex}.tab{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--ink-muted);padding:var(--space-2) var(--space-1);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;font-weight:600}.tab:hover{color:var(--ink)}.tab:focus-visible{outline:2px solid var(--ink-1);outline-offset:2px}.tab[aria-selected=true]{color:var(--ink-1);border-bottom-color:var(--ink-1)}.tab-panel{padding:var(--space-4) 0}.tab-panel[hidden]{display:none}.copy-btn{align-items:center;gap:var(--space-1);font-family:var(--font-sans);font-size:var(--text-sm);color:var(--ink);background:var(--raised);border:1px solid var(--rule-firm);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);cursor:pointer;font-weight:600;display:inline-flex}.copy-btn:hover{background:var(--rule-soft)}.copy-btn:focus-visible{outline:2px solid var(--ink-1);outline-offset:1px}.copy-btn:disabled{color:var(--ink-faint);cursor:not-allowed}.copy-btn[data-state=copied]{color:var(--state-ok);border-color:var(--state-ok)}.copy-btn[data-state=error]{color:var(--state-err);border-color:var(--state-err)}.inline-message{align-items:center;gap:var(--space-1);font-size:var(--text-sm);display:flex}.inline-message:before{content:"";width:var(--space-2);height:var(--space-2);border-radius:var(--radius-sm);background:currentColor;flex-shrink:0}.inline-message--error{color:var(--state-err)}.inline-message--success{color:var(--state-ok)}.toast-region{right:var(--space-4);bottom:var(--space-4);gap:var(--space-2);z-index:1000;pointer-events:none;flex-direction:column-reverse;max-width:24rem;display:flex;position:fixed}.toast{pointer-events:auto;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--ink);background:var(--raised);border:1px solid var(--rule-firm);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);opacity:1;transition:opacity .2s,transform .2s;transform:translateY(0)}.toast[data-variant=success]{border-left:3px solid var(--state-ok)}.toast[data-variant=error]{border-left:3px solid var(--state-err)}.toast[data-state=hiding]{opacity:0;transform:translateY(var(--space-2))}.toast-message{margin:0}.empty-state{gap:var(--space-1);padding:var(--space-8) var(--space-4);color:var(--ink-muted);background:var(--sunk);border:1px dashed var(--rule-firm);border-radius:var(--radius-md);flex-direction:column;align-items:flex-start;display:flex}.empty-state-title{font-size:var(--text-base);color:var(--ink);margin:0;font-weight:600}.empty-state-body{font-size:var(--text-sm);margin:0}.tools-page{width:min(calc(100% - (var(--content-gutter) * 2)), var(--content-width));padding:calc(var(--nav-height) + var(--space-12)) 0 var(--space-24);margin:0 auto}.tools-intro h1{font-size:var(--text-3xl);margin:0 0 var(--space-3);font-weight:700;line-height:1.1}.tools-intro-copy{color:var(--ink-muted);font-size:var(--text-lg);max-width:46ch;margin:0}.tools-filters{gap:var(--space-4);margin:var(--space-12) 0 var(--space-8);padding-bottom:var(--space-6);border-bottom:1px solid var(--rule);flex-direction:column;display:flex}.tools-search{max-width:22rem}.tools-chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.tools-chip{font-family:inherit;font-size:var(--text-xs);color:var(--ink-muted);border:1px solid var(--rule-firm);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-3);cursor:pointer;background:0 0;transition:color .16s,border-color .16s,background-color .16s}.tools-chip:hover{color:var(--ink);border-color:var(--ink-1)}.tools-chip:focus-visible{outline:2px solid var(--ink-1);outline-offset:2px}.tools-chip[aria-pressed=true]{color:var(--ink-1-on);background:var(--ink-1);border-color:var(--ink-1)}.tools-grid{gap:var(--space-4);grid-template-columns:1fr;margin:0;padding:0;list-style:none;display:grid}.tools-card{gap:var(--space-2);height:100%;padding:var(--space-6);color:inherit;background:var(--raised);border:1px solid var(--rule);border-radius:var(--radius-md);flex-direction:column;text-decoration:none;transition:border-color .16s,background-color .16s;display:flex}.tools-card:hover{border-color:var(--ink-1)}.tools-card:focus-visible{outline:2px solid var(--ink-1);outline-offset:2px}.tools-card-icon svg{width:var(--space-6);height:var(--space-6);fill:none;stroke:var(--ink-1);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.tools-card-name{font-size:var(--text-lg);font-weight:600}.tools-card-desc{color:var(--ink-muted);font-size:var(--text-sm);flex:auto}.tool-page{width:min(calc(100% - (var(--content-gutter) * 2)), var(--content-width));padding:calc(var(--nav-height) + var(--space-12)) 0 var(--space-24);margin:0 auto}.tool-page-inner{max-width:48rem}.tool-back{align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--ink-muted);text-decoration:none;display:inline-flex}.tool-back:hover{color:var(--ink-1)}.tool-back svg{width:var(--space-4);height:var(--space-4);fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;transform:rotate(-135deg)}.tool-title{font-size:var(--text-3xl);margin:var(--space-3) 0 var(--space-2);font-weight:700;line-height:1.1}.tool-description{color:var(--ink-muted);font-size:var(--text-lg);margin:0}.tool-note,.tool-privacy{font-size:var(--text-sm);color:var(--ink-muted);background:var(--sunk);border-left:2px solid var(--rule-firm);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);margin:var(--space-4) 0 0}.tool-note{border-left-color:var(--state-warn);color:var(--ink)}.tool-body{gap:var(--space-6);margin-top:var(--space-12);flex-direction:column;display:flex}.tool-field{max-width:none}.tool-controls{align-items:flex-start;gap:var(--space-6);flex-wrap:wrap;display:flex}.tool-body .field-input,.tool-controls .segmented,.tool-controls .copy-btn,.tool-controls .tool-checkbox,.tool-controls .color-picker{height:var(--control-height)}.tool-controls>.tool-control-inline{align-self:flex-end}.tool-control{gap:var(--space-1);flex-direction:column;display:flex}.tool-control-inline{align-items:center;gap:var(--space-2);flex-direction:row}.tool-output{gap:var(--space-2);flex-direction:column;display:flex}.tool-output-head{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.tool-output .code-pane{min-height:var(--space-16)}.tool-claims{gap:var(--space-1) var(--space-4);font-size:var(--text-sm);grid-template-columns:auto 1fr;margin:0;display:grid}.tool-claims dt{color:var(--ink-muted)}.tool-claims dd{font-family:var(--font-mono);margin:0}.case-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.case-row{align-items:center;gap:var(--space-2);grid-template-columns:1fr;justify-items:start;display:grid}.case-label{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-muted)}.case-value{min-width:0;min-height:var(--space-8);white-space:pre;justify-self:stretch;display:block;overflow-x:auto}@media (min-width:768px){.tools-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tools-filters{flex-direction:row;justify-content:space-between;align-items:flex-end}.case-row{gap:var(--space-4);grid-template-columns:12rem 1fr auto}}@media (min-width:1024px){.tools-intro h1,.tool-title{font-size:var(--text-4xl)}.tools-page,.tool-page{padding-top:calc(var(--nav-height) + var(--space-16))}.tools-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){.tools-chip,.tools-card,.tool-file-button{transition:none}}.tool-file{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.tool-file-button{font-family:var(--font-sans);font-size:var(--text-xs);color:var(--ink);background:var(--raised);border:1px solid var(--rule-firm);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-3);cursor:pointer;transition:color .16s,border-color .16s}.tool-file-button:hover{color:var(--ink-1);border-color:var(--ink-1)}.tool-file-button input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.tool-file-button:focus-within{outline:2px solid var(--ink-1);outline-offset:2px}.tool-file-name{font-size:var(--text-xs);color:var(--ink-faint)}.tool-checkbox{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--ink);cursor:pointer;padding:var(--space-2) 0;display:inline-flex}.tool-checkbox input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.tool-checkbox-box{width:var(--space-4);height:var(--space-4);background:var(--sunk);border:1px solid var(--rule-firm);border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.tool-checkbox-box svg{fill:none;width:100%;height:100%;stroke:var(--ink-1-on);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;opacity:0}.tool-checkbox input:checked+.tool-checkbox-box{background:var(--ink-1);border-color:var(--ink-1)}.tool-checkbox input:checked+.tool-checkbox-box svg{opacity:1}.tool-checkbox input:focus-visible+.tool-checkbox-box{outline:2px solid var(--ink-1);outline-offset:2px}.tool-checkbox:hover .tool-checkbox-box{border-color:var(--ink-1)}.jwt-parts{gap:var(--space-6);grid-template-columns:1fr;display:grid}.jwt-part{gap:var(--space-2);flex-direction:column;display:flex}.jwt-part .code-pane{min-height:var(--space-16)}.jwt-part-label{color:var(--ink)}.jwt-part-note{font-size:var(--text-xs);color:var(--ink-muted);margin:0}@media (min-width:1024px){.tool-page-wide{max-width:none}.jwt-body{align-items:start;column-gap:var(--space-12);grid-template-columns:minmax(0,5fr) minmax(0,7fr);display:grid}.jwt-body>.field,.jwt-body>.inline-message{grid-column:1}.jwt-body>.field .field-textarea{min-height:var(--space-24)}.jwt-parts{grid-area:1/2/span 2}}.tool-section{gap:var(--space-4);flex-direction:column;display:flex}.tool-section-title{font-size:var(--text-lg);padding-bottom:var(--space-2);border-bottom:1px solid var(--rule);margin:0;font-weight:600}.tool-hint{font-size:var(--text-xs);color:var(--ink-muted);max-width:60ch;margin:0}.tool-two-up{gap:var(--space-4);grid-template-columns:1fr;display:grid}.tool-count{max-width:8rem}.tool-zone{max-width:18rem}.tool-select{-webkit-appearance:none;appearance:none;padding-right:var(--space-8);background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - var(--space-4)) center, calc(100% - var(--space-3)) center;cursor:pointer;background-repeat:no-repeat;background-size:5px 5px,5px 5px}.tool-mono-input{font-family:var(--font-mono)}.tool-table{border-collapse:collapse;width:100%;font-size:var(--text-sm);display:block;overflow-x:auto}.tool-table th{text-align:left;font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);padding:var(--space-2) var(--space-3) var(--space-2) 0;border-bottom:1px solid var(--rule-firm);white-space:nowrap;font-weight:600}.tool-table td{font-family:var(--font-mono);padding:var(--space-2) var(--space-3) var(--space-2) 0;border-bottom:1px solid var(--rule-soft);vertical-align:top;word-break:break-all}.cron-examples{gap:var(--space-2);flex-wrap:wrap;display:flex}.cron-description{font-size:var(--text-lg);color:var(--ink);margin:0}.cron-runs{gap:var(--space-1);font-family:var(--font-mono);font-size:var(--text-sm);color:var(--ink-muted);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.color-picker-field{flex:none;width:6rem;max-width:6rem}.color-text-field{flex:20rem;max-width:28rem}.color-picker{-webkit-appearance:none;appearance:none;border:1px solid var(--rule-firm);border-radius:var(--radius-sm);cursor:pointer;background:0 0;width:100%;padding:0}.color-picker::-webkit-color-swatch-wrapper{padding:var(--space-1)}.color-picker::-webkit-color-swatch{border:none;border-radius:2px}.color-picker::-moz-color-swatch{border:none;border-radius:2px}.color-swatches{gap:var(--space-3);grid-template-columns:1fr;display:grid}.color-swatch{gap:var(--space-2);padding:var(--space-6);border:1px solid var(--rule);border-radius:var(--radius-md);flex-direction:column;display:flex}.color-swatch-light{background:#fff}.color-swatch-dark{background:#000}.color-sample{font-size:var(--text-xl);font-weight:600}.color-ratio{font-family:var(--font-mono);font-size:var(--text-xs);color:#767676}.regex-pattern-row{align-items:center;gap:var(--space-2);display:flex}.regex-pattern-row .field-input{flex:auto;min-width:0}.regex-delimiter{font-family:var(--font-mono);font-size:var(--text-lg);color:var(--ink-faint)}.regex-flags{gap:var(--space-4);flex-wrap:wrap;display:flex}.regex-highlight code{white-space:pre-wrap;word-break:break-word}.regex-results{gap:var(--space-6);flex-direction:column;display:flex}@media (min-width:768px){.tool-two-up,.color-swatches{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.regex-body{align-items:start;column-gap:var(--space-12);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.regex-body>.field,.regex-body>.inline-message{grid-column:1}.regex-results{grid-area:1/2/span 3}}.cf-date{max-width:12rem}.cf-place{flex:18rem;max-width:26rem}.cf-decoded{gap:var(--space-2);flex-direction:column;margin:0;display:flex}.cf-row{gap:var(--space-1);padding-bottom:var(--space-2);border-bottom:1px solid var(--rule-soft);grid-template-columns:1fr;display:grid}.cf-row dt{font-size:var(--text-xs);color:var(--ink-muted)}.cf-row dd{font-family:var(--font-mono);font-size:var(--text-sm);word-break:break-word;margin:0}@media (min-width:768px){.cf-row{gap:var(--space-4);grid-template-columns:12rem 1fr;align-items:baseline}}.sql-dialect{max-width:14rem}.diff-ignores{align-items:center;gap:var(--space-4);height:var(--control-height);display:flex}.diff-stats{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-muted)}.diff-pane{max-height:32rem;padding:0;overflow:auto}.diff-table{border-collapse:collapse;width:100%;font-family:var(--font-mono);font-size:var(--text-sm)}.diff-row td{padding:0 var(--space-2);vertical-align:top;white-space:pre-wrap;word-break:break-word}.diff-num{text-align:right;width:1%;color:var(--ink-faint);-webkit-user-select:none;user-select:none;white-space:nowrap}.diff-mark{text-align:center;width:1%;color:var(--ink-faint);-webkit-user-select:none;user-select:none}.diff-text{width:100%}.diff-row-insert{background:var(--state-ok-bg)}.diff-row-insert .diff-mark{color:var(--state-ok)}.diff-row-delete{background:var(--state-err-bg)}.diff-row-delete .diff-mark{color:var(--state-err)}.base-custom{max-width:8rem}.jd-table{display:table;overflow:visible}.jd-table th,.jd-table td{padding:var(--space-2) var(--space-3)}.jd-path{color:var(--ink);white-space:nowrap}.jd-row-added{background:var(--state-ok-bg)}.jd-row-removed{background:var(--state-err-bg)}.jd-row-changed .jd-path,.jd-row-type .jd-path{color:var(--ink-2)}.jts-name{max-width:12rem}.qr-size{max-width:9rem}.qr-output{justify-content:flex-start;display:flex}.qr-frame{aspect-ratio:1;border:1px solid var(--rule-firm);border-radius:var(--radius-md);width:100%;max-width:20rem;padding:var(--space-2);background:#fff;display:flex}.qr-frame:empty{display:none}.qr-frame svg{width:100%;height:100%}.tool-related{margin-top:var(--space-16);padding-top:var(--space-8);border-top:1px solid var(--rule)}.tool-related-title{font-size:var(--text-sm);color:var(--ink-muted);margin:0 0 var(--space-4);font-weight:600}.tool-related-list{gap:var(--space-2);grid-template-columns:1fr;margin:0;padding:0;list-style:none;display:grid}.tool-related-list a{gap:var(--space-1);padding:var(--space-3) var(--space-4);color:inherit;border:1px solid var(--rule);border-radius:var(--radius-sm);flex-direction:column;text-decoration:none;transition:border-color .16s;display:flex}.tool-related-list a:hover{border-color:var(--ink-1)}.tool-related-list a:focus-visible{outline:2px solid var(--ink-1);outline-offset:2px}.tool-related-name{font-size:var(--text-sm);font-weight:600}.tool-related-tagline{font-size:var(--text-xs);color:var(--ink-muted)}@media (min-width:768px){.tool-related-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){.tool-related-list a{transition:none}}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/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(/_astro/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(/_astro/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(/_astro/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(/_astro/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(/_astro/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(/_astro/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(/_astro/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(/_astro/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(/_astro/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(/_astro/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}
