:root{--color-bg:#07111c;--color-bg-raised:#0c1a2b;--color-surface:#102033;--color-surface-strong:#15293f;--color-line:#94bcff29;--color-line-strong:#94bcff61;--color-text:#e7eef8;--color-text-soft:#c5d2e4;--color-electric:#4c9dff;--color-electric-strong:#9ecbff;--color-focus:#c5e0ff;--font-display:"Syne", "Avenir Next", "Segoe UI", sans-serif;--font-body:"Outfit", "Segoe UI", sans-serif;--font-mono:ui-monospace, "Cascadia Code", "Segoe UI Mono", monospace;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2.5rem;--space-2xl:4rem;--radius-md:1rem;--radius-lg:1.25rem;--header-height:4.25rem;--shadow:0 24px 50px #00000047;--content:1120px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-color:#2a4666 var(--color-bg)}body{min-height:100vh;font-family:var(--font-body);color:var(--color-text);background:radial-gradient(ellipse 80% 50% at 100% -10%, #4c9dff2e, transparent 52%), radial-gradient(ellipse 45% 40% at -10% 30%, #4c9dff14, transparent 50%), var(--color-bg);margin:0;font-size:1.0625rem;line-height:1.65}body:before{content:"";z-index:-1;pointer-events:none;background-image:linear-gradient(#94bcff0b 1px,#0000 1px),linear-gradient(90deg,#94bcff0b 1px,#0000 1px);background-size:72px 72px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(at 50% 0,#000 15%,#0000 72%);mask-image:radial-gradient(at 50% 0,#000 15%,#0000 72%)}h1,h2,h3,p,ul,ol,dl{margin:0}h1,h2,h3,.brand__mark,.stat strong,.footer-name{font-family:var(--font-display);letter-spacing:-.03em;text-wrap:balance;line-height:1.12}a{color:var(--color-electric-strong)}img,svg{max-width:100%;display:block}button,input,textarea{font:inherit;color:inherit}button{background:0 0;border:0;padding:0}:focus{outline:none}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}::selection{color:#fff;background:#4c9dff59}[id]{scroll-margin-top:5.5rem}.container{width:min(var(--content), calc(100% - 2rem));margin-inline:auto}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--color-electric);color:#07111c;border-radius:999px;padding:.65rem .95rem;font-weight:700;text-decoration:none;position:absolute;top:1rem;left:1rem;transform:translateY(-160%)}.skip-link:focus{transform:none}.eyebrow{color:var(--color-electric-strong);letter-spacing:.14em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:600}.pending-note{color:var(--color-text-soft);font-size:.95rem}@media (width>=720px){.container{width:min(var(--content), calc(100% - 3rem))}}@media (width<=860px){body.menu-open{overflow:hidden}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}.site-header{z-index:30;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#07111cb8;border-bottom:1px solid #0000;position:sticky;top:0}.site-header.is-scrolled{border-bottom-color:var(--color-line);background:#07111ce6}.header-inner{min-height:var(--header-height);align-items:center;gap:1rem;display:flex}.brand{color:inherit;align-items:center;gap:.75rem;text-decoration:none;display:flex}.brand__mark{background:var(--color-electric);color:#07111c;border-radius:.75rem;place-items:center;width:2.5rem;height:2.5rem;font-size:.95rem;font-weight:800;display:grid}.brand__text{flex-direction:column;line-height:1.15;display:flex}.brand__text strong{font-size:.98rem}.brand__text small{color:var(--color-text-soft);font-size:.75rem}.site-nav{margin-left:auto}.site-nav ul,.footer-nav{gap:.15rem;padding:0;list-style:none;display:flex}.footer-nav{flex-wrap:wrap}.site-nav a,.footer-nav a{min-height:44px;color:var(--color-text-soft);border-radius:999px;align-items:center;padding:0 .75rem;text-decoration:none;display:inline-flex}.site-nav a:hover,.footer-nav a:hover{color:var(--color-text);background:#4c9dff1a}.header-cta{margin-left:.35rem}.menu-toggle{border:1px solid var(--color-line);width:44px;height:44px;color:var(--color-text);border-radius:.8rem;justify-content:center;align-items:center;display:none}.button{cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.5rem;min-height:44px;padding:.7rem 1.15rem;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.button--primary{background:var(--color-electric);color:#07111c}.button--primary:hover{background:var(--color-electric-strong)}.button--ghost{border-color:var(--color-line-strong);color:var(--color-text);background:0 0}.button--ghost:hover{border-color:var(--color-electric);color:var(--color-electric-strong)}.site-footer{border-top:1px solid var(--color-line)}.footer-inner{gap:1.25rem;min-width:0;padding-block:2rem 2.5rem;display:grid}.footer-inner>*{min-width:0}.footer-name{font-size:1.35rem}.footer-brand,.footer-meta,.footer-meta a{color:var(--color-text-soft)}.footer-meta{gap:.2rem;display:grid}.footer-meta a{text-underline-offset:.2em}.project-card{border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow);background:#102033c7;gap:.8rem;padding:1.35rem;display:grid}.project-card:hover{border-color:#4c9dff73;transform:translateY(-2px)}.project-card__index{font-family:var(--font-mono);color:var(--color-electric-strong);letter-spacing:.08em}.project-card h3{font-size:clamp(1.45rem,2vw,1.8rem)}.project-card__summary{color:var(--color-text-soft);margin-top:.45rem}.project-details{gap:1rem;margin-top:1.15rem;display:grid}.project-details dt{color:var(--color-electric-strong);letter-spacing:.08em;text-transform:uppercase;margin-bottom:.25rem;font-size:.75rem;font-weight:600}.project-details dd{color:var(--color-text)}.tag-list{flex-wrap:wrap;gap:.4rem;padding:0;list-style:none;display:flex}.tag-list li{color:var(--color-electric-strong);background:#4c9dff1f;border-radius:999px;padding:.22rem .6rem;font-size:.85rem}@media (width>=800px){.project-card{grid-template-columns:auto 1fr;gap:1.25rem;padding:1.6rem}.project-details{grid-template-columns:1fr 1fr}.project-details div:nth-child(n+3){grid-column:1/-1}}@media (width<=860px){.menu-toggle{margin-left:auto;display:inline-flex}.header-cta,.brand__text small{display:none}body.menu-open .site-header{border-bottom-color:var(--color-line);background:#07111c}.site-nav{z-index:2;border-bottom:1px solid var(--color-line);background:#07111c;padding:.4rem 1rem 1rem;display:none;position:absolute;top:100%;left:0;right:0;box-shadow:0 18px 40px #00000073}.site-nav.is-open{display:block}.site-nav ul{flex-direction:column;gap:.15rem}.site-nav a{width:100%}}@media (width>=900px){.footer-inner{grid-template-columns:1.1fr auto auto;align-items:center}.footer-meta{text-align:right;justify-items:end}}@media (prefers-reduced-motion:no-preference){.project-card,.button,.site-nav a,.skill-list li,.contact-card,.approach-list li{transition:border-color .2s,background-color .2s,color .2s,transform .2s}}@media (prefers-reduced-motion:reduce){.project-card:hover{transform:none}}.section{padding-block:clamp(4rem,8vw,6.5rem)}.section-heading{max-width:42rem;margin-bottom:var(--space-xl)}.section-heading h2{margin-top:.45rem;font-size:clamp(2rem,4vw,3.1rem)}.section-heading__text{color:var(--color-text-soft);margin-top:.85rem}.hero{padding-top:clamp(2.5rem,7vw,5.5rem);padding-bottom:clamp(3rem,8vw,6rem)}.hero-grid{gap:var(--space-xl);align-items:center;display:grid}.hero__intro{justify-items:start;gap:.9rem;display:grid}.hero h1{letter-spacing:-.05em;font-size:clamp(3.4rem,9vw,6.4rem);font-weight:800;line-height:.88;display:grid}.hero__role{color:var(--color-electric-strong);letter-spacing:.08em;text-transform:uppercase;font-size:.92rem;font-weight:600}.hero__lead{max-width:38rem;color:var(--color-text-soft);font-size:1.12rem}.hero__actions{flex-wrap:wrap;gap:.75rem;margin-top:.6rem;display:flex}.hero-panel{border:1px solid var(--color-line);border-radius:var(--radius-lg);background:linear-gradient(180deg, #4c9dff1f, transparent 32%), var(--color-surface);box-shadow:var(--shadow);padding:1.25rem}.hero-panel ol{gap:.75rem;margin-top:1rem;padding:0;list-style:none;display:grid}.hero-panel li{border:1px solid var(--color-line);border-radius:var(--radius-md);background:#07111c59;grid-template-columns:auto 1fr;gap:.1rem .85rem;padding:.85rem .9rem;display:grid}.hero-panel li span{color:var(--color-electric-strong);font-family:var(--font-mono);grid-row:1/span 2;align-self:center;font-size:.82rem}.hero-panel small{color:var(--color-text-soft)}.about-layout{gap:var(--space-xl);align-items:start;display:grid}.prose{gap:1rem;display:grid}.prose p{max-width:68ch}.about-panel{border:1px solid var(--color-line);border-top:2px solid var(--color-electric);border-radius:var(--radius-lg);background:linear-gradient(180deg, #4c9dff1a, transparent 38%), var(--color-surface);padding:1.3rem}.stat strong{color:var(--color-electric-strong);font-size:clamp(3.2rem,6vw,4.4rem);line-height:.9;display:block}.stat span{color:var(--color-text-soft);margin-top:.45rem;display:block}.check-list{gap:.7rem;margin:1.25rem 0;padding:0;list-style:none;display:grid}.check-list li{align-items:flex-start;gap:.55rem;display:flex}.check-list svg{color:var(--color-electric);flex:none;margin-top:.28rem}.skill-groups,.project-list,.approach-list,.contact-grid{gap:1rem;display:grid}.skill-group,.approach-list li,.contact-card{border:1px solid var(--color-line);border-radius:var(--radius-lg);background:#102033b8;padding:1.15rem}.skill-group h3,.approach-list h3{font-size:1.25rem}.skill-group>p,.approach-list li>p:last-child{color:var(--color-text-soft);margin-top:.35rem}.skill-list{flex-wrap:wrap;gap:.55rem;margin-top:1rem;padding:0;list-style:none;display:flex}.skill-list li{border:1px solid var(--color-line);background:#07111c59;border-radius:999px;align-items:center;gap:.45rem;min-height:42px;padding:.35rem .8rem;display:inline-flex}.skill-list li:hover,.contact-card:hover,.approach-list li:hover{border-color:#4c9dff80}.skill-list svg{color:var(--color-electric-strong)}.approach-list{counter-reset:step;padding:0;list-style:none}.approach-list__icon{width:2.4rem;height:2.4rem;color:var(--color-electric-strong);background:#4c9dff1f;border-radius:.75rem;place-items:center;display:grid}.approach-list__step{color:var(--color-electric-strong);font-family:var(--font-mono);letter-spacing:.08em;margin-top:.85rem;font-size:.78rem}.approach-list h3{margin-top:.25rem}.contact-grid{padding:0;list-style:none}.contact-card{min-height:100%;color:inherit;align-items:center;gap:.9rem;text-decoration:none;display:flex}.contact-card__icon{width:2.6rem;height:2.6rem;color:var(--color-electric-strong);background:#4c9dff1f;border-radius:.8rem;flex:none;place-items:center;display:grid}.contact-card__label,.contact-card__value{display:block}.contact-card__label{font-family:var(--font-display);font-size:1.15rem}.contact-card__value{color:var(--color-text-soft);overflow-wrap:anywhere}.contact-card--pending{border-style:dashed}@media (width>=800px){.skill-groups{grid-template-columns:1fr 1fr}}@media (width>=900px){.hero-grid,.about-layout{grid-template-columns:1.35fr .8fr}.approach-list{grid-template-columns:repeat(6,1fr)}.approach-list li{grid-column:span 2}.approach-list li:nth-child(4){grid-column:2/span 2}.approach-list li:nth-child(5){grid-column:4/span 2}}@media (width>=700px) and (width<=899px){.approach-list{grid-template-columns:1fr 1fr}.approach-list li:last-child{grid-column:1/-1}}@media (width>=720px){.contact-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}}@media (prefers-reduced-motion:no-preference){.hero-grid>*{animation:.7s both rise}.hero-grid>:last-child{animation-delay:.12s}}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.admin{color:#102033;background:#f3f6fb;min-height:100vh}.admin a{color:#0b4ea8}.admin h1,.admin h2,.admin h3{color:#102033;letter-spacing:-.03em}.admin-top,.admin-shell{width:min(1120px,100% - 2rem);margin-inline:auto}.admin-top{justify-content:space-between;align-items:center;gap:1rem;min-height:4.5rem;display:flex}.admin-top p,.admin-card p,.hint,.admin-error{color:#3d5168}.admin-shell{gap:1.25rem;padding-bottom:3rem;display:grid}.admin-nav{gap:.4rem;padding:0;list-style:none;display:flex;overflow-x:auto}.admin-nav a,.admin button.linkish{color:#102033;background:#fff;border:1px solid #d5dfec;border-radius:999px;align-items:center;min-height:40px;padding:.35rem .8rem;text-decoration:none;display:inline-flex}.admin-nav a.is-active{color:#fff;background:#102033;border-color:#102033}.admin-main h1{font-size:clamp(1.8rem,3vw,2.4rem)}.flash,.admin-error{border-radius:.8rem;margin:.8rem 0 0;padding:.75rem .9rem}.flash{color:#135c2c;background:#e5f6ea}.admin-error{color:#8a1f1f;background:#fde8e8}.admin-grid,.stack{gap:1rem;display:grid}.admin-card,.login-card{background:#fff;border:1px solid #d5dfec;border-radius:1rem;padding:1rem 1.1rem}.login-wrap{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.login-card{width:min(420px,100%)}.login-card h1{margin-bottom:.4rem}.field{gap:.3rem;margin-top:.8rem;display:grid}.field span{font-size:.92rem;font-weight:600}.field input,.field textarea,.field select{color:#102033;width:100%;min-height:44px;font:inherit;background:#fff;border:1px solid #c5d2e4;border-radius:.7rem;padding:.6rem .75rem}.field textarea{resize:vertical;min-height:7rem}.field-error{color:#8a1f1f;font-size:.85rem}.check{align-items:center;gap:.5rem;margin-top:.8rem;display:flex}.admin-actions,.row-actions{flex-wrap:wrap;gap:.5rem;margin-top:.9rem;display:flex}.admin .button--ghost{color:#102033;background:#fff;border-color:#9aafc6}.admin .button--primary{color:#07111c}.admin button.linkish{cursor:pointer;font:inherit}.stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.8rem;display:grid}.stats strong{font-family:var(--font-display);font-size:2rem;display:block}.skill-editor{gap:.5rem;margin-top:.8rem;display:grid}.skill-editor__row{grid-template-columns:1fr 180px auto;gap:.5rem;display:grid}@media (width<=720px){.skill-editor__row{grid-template-columns:1fr}}@media (width>=900px){.admin-shell{grid-template-columns:220px 1fr;align-items:start}.admin-nav{flex-direction:column;overflow:visible}.form-grid{grid-template-columns:1fr 1fr}}
