.navbar{position:fixed;top:0;left:0;right:0;z-index:100;border-bottom:1px solid transparent;transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease),backdrop-filter var(--dur) var(--ease)}.navbar.is-scrolled{background:color-mix(in srgb,var(--canvas) 86%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);border-bottom-color:var(--hairline);box-shadow:var(--shadow-md)}.navbar-inner{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:.9rem var(--gutter)}.navbar-logo{display:flex;flex-direction:column;gap:.1rem;text-decoration:none;color:var(--ink);font-weight:600;font-size:.975rem;letter-spacing:-.015em;line-height:1.15;white-space:nowrap}.navbar-logo-role{font-family:var(--font-mono);font-size:.625rem;font-weight:400;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.navbar-nav{display:flex;align-items:center;gap:.15rem}.navbar-link{position:relative;background:none;border:none;cursor:pointer;font-family:var(--font-mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);padding:.55rem .75rem;border-radius:var(--radius-sm);transition:color var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease)}.navbar-link:hover{color:var(--ink);background:var(--surface-2)}.navbar-link.is-active{color:var(--accent)}.navbar-link.is-active:after{content:"";position:absolute;left:.75rem;right:.75rem;bottom:.25rem;height:1.5px;background:var(--accent);border-radius:1px}.navbar-actions{display:flex;align-items:center;gap:.55rem}.navbar-resume{display:inline-flex;align-items:center;gap:.3rem;font-family:var(--font-mono);font-size:.75rem;letter-spacing:.04em;color:var(--ink);text-decoration:none;border:1px solid var(--hairline-strong);border-radius:var(--radius-full);padding:.5rem .95rem;min-height:40px;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease)}.navbar-resume:hover{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.navbar .navbar-menu-btn{display:none}.navbar-sheet{display:none;flex-direction:column;background:var(--canvas);border-top:1px solid var(--hairline);overflow:hidden;max-height:0;transition:max-height var(--dur) var(--ease)}.navbar-sheet.is-open{max-height:70vh}.navbar-sheet-link{display:flex;align-items:center;gap:1rem;width:100%;background:none;border:none;border-bottom:1px solid var(--hairline);cursor:pointer;text-align:left;text-decoration:none;font-family:inherit;font-size:1.0625rem;font-weight:500;color:var(--ink);padding:1.05rem var(--gutter);min-height:56px;transition:color var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease)}.navbar-sheet-link:active{background:var(--surface-2)}.navbar-sheet-link.is-active{color:var(--accent)}.navbar-sheet-index{font-family:var(--font-mono);font-size:.6875rem;color:var(--ink-3);letter-spacing:.08em}@media(max-width:1080px){.navbar-link{padding:.55rem;font-size:.7rem}}@media(max-width:900px){.navbar-nav{display:none}.navbar .navbar-menu-btn{display:inline-flex}.navbar-sheet{display:flex}.navbar.is-scrolled,.navbar:has(.navbar-sheet.is-open){background:color-mix(in srgb,var(--canvas) 92%,transparent);border-bottom-color:var(--hairline)}}@media(max-width:480px){.navbar-resume{display:none}.navbar-inner{padding:.75rem var(--gutter)}}.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding:clamp(7rem,14vh,9.5rem) var(--gutter) clamp(4rem,8vh,6rem);overflow:hidden}.hero:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at center,var(--hairline-strong) 1px,transparent 1px);background-size:34px 34px;-webkit-mask-image:radial-gradient(ellipse 75% 60% at 50% 42%,#000 20%,transparent 78%);mask-image:radial-gradient(ellipse 75% 60% at 50% 42%,#000 20%,transparent 78%);opacity:.55;pointer-events:none}.hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(2.5rem,5vw,4.5rem);align-items:center}.hero-lead{animation:heroIn .7s var(--ease) both}.hero-eyebrow{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--hairline);background:var(--surface);border-radius:var(--radius-full);padding:.45rem .95rem;margin-bottom:1.75rem}.hero-title{font-size:var(--text-display);font-weight:600;letter-spacing:-.03em;line-height:1.1;color:var(--ink);max-width:19ch;margin-bottom:1.35rem}.hero-lede{font-size:var(--text-lg);line-height:1.7;color:var(--ink-2);max-width:52ch;margin-bottom:2.25rem}.hero-lede strong{color:var(--ink);font-weight:600}.hero-actions{display:flex;align-items:center;gap:.85rem;flex-wrap:wrap;margin-bottom:2.75rem}.hero-resume{display:inline-flex;align-items:center;gap:.3rem;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--ink-3);text-decoration:none;padding:.5rem .35rem;border-bottom:1px solid transparent;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.hero-resume:hover{color:var(--accent);border-bottom-color:var(--accent-line)}.hero-social{display:flex;gap:.6rem}.hero-card{position:relative;overflow:hidden;box-shadow:var(--shadow-xl);animation:heroIn .85s var(--ease) .18s both}.hero-card:before,.hero-card:after{content:"";position:absolute;width:40px;height:40px;z-index:2;pointer-events:none}.hero-card:before{top:-1px;left:-1px;border-top:2px solid var(--accent);border-left:2px solid var(--accent);border-top-left-radius:var(--radius-lg)}.hero-card:after{bottom:-1px;right:-1px;border-bottom:2px solid var(--accent);border-right:2px solid var(--accent);border-bottom-right-radius:var(--radius-lg)}.hero-card-photo{aspect-ratio:4 / 3.4;overflow:hidden;border-bottom:1px solid var(--hairline);background:var(--surface-2)}.hero-card-photo img{width:100%;height:100%;object-fit:cover;object-position:center 22%;filter:saturate(.94);transition:transform var(--dur-slow) var(--ease)}.hero-card:hover .hero-card-photo img{transform:scale(1.03)}.hero-facts{padding:.35rem 0}.hero-fact{display:grid;grid-template-columns:82px 1fr;gap:.75rem;align-items:baseline;padding:.7rem 1.35rem;border-bottom:1px solid var(--hairline)}.hero-fact:last-child{border-bottom:none}.hero-fact dt{font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.hero-fact dd{font-size:var(--text-sm);color:var(--ink);font-weight:500;line-height:1.45}.hero-scroll{position:relative;z-index:1;align-self:center;display:inline-flex;align-items:center;gap:.5rem;margin-top:clamp(2.5rem,6vh,4rem);background:none;border:none;cursor:pointer;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);transition:color var(--dur-fast) var(--ease)}.hero-scroll:hover{color:var(--accent)}.hero-scroll svg{animation:nudge 2.4s var(--ease) infinite}@keyframes heroIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes nudge{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}@media(max-width:940px){.hero-grid{grid-template-columns:1fr;gap:2.75rem}.hero-card{max-width:440px}.hero-title{max-width:18ch}}@media(max-width:620px){.hero{min-height:auto;padding-top:clamp(6rem,18vh,8rem)}.hero-title{max-width:none;letter-spacing:-.03em}.hero-actions{gap:.6rem}.hero-actions .btn{flex:1 1 auto;min-width:150px}.hero-card-photo{aspect-ratio:4 / 3}.hero-fact{grid-template-columns:72px 1fr;padding:.65rem 1.1rem}.hero-scroll{display:none}}.about-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.75fr);gap:clamp(2rem,4.5vw,4.5rem);align-items:start}.about-prose p{font-size:var(--text-lg);line-height:1.78;color:var(--ink-2);max-width:66ch}.about-prose p+p{margin-top:1.5rem}.about-closing{position:relative;padding-left:1.5rem;border-left:2px solid var(--accent);color:var(--ink)!important;font-weight:500}.about-glance{padding:1.6rem 0 .4rem;position:sticky;top:110px}.about-glance-title{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);padding:0 1.5rem 1.1rem;border-bottom:1px solid var(--hairline)}.about-glance-row{padding:1rem 1.5rem;border-bottom:1px solid var(--hairline)}.about-glance-row:last-child{border-bottom:none}.about-glance-row dt{font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.35rem}.about-glance-row dd{font-size:var(--text-sm);color:var(--ink);line-height:1.55;font-weight:500}@media(max-width:900px){.about-grid{grid-template-columns:1fr;gap:2.5rem}.about-glance{position:static}}.practice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}.practice-card{position:relative;padding:1.6rem 1.5rem 1.75rem;display:flex;flex-direction:column;gap:.7rem;overflow:hidden}.practice-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform var(--dur) var(--ease)}.practice-card:hover:before{transform:scaleX(1)}.practice-card:hover{border-color:var(--accent-line);transform:translateY(-6px);box-shadow:var(--shadow-xl)}.practice-card:hover .practice-card-icon{background:var(--accent);color:var(--accent-on);transform:scale(1.06)}.practice-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:.35rem}.practice-card-icon{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--radius-md);background:var(--accent-soft);color:var(--accent);flex-shrink:0;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease),transform var(--dur) var(--ease)}.practice-card-index{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;color:var(--ink-3)}.practice-card h3{font-size:var(--text-lg);font-weight:600;color:var(--ink);letter-spacing:-.012em}.practice-card p{font-size:var(--text-sm);line-height:1.7;color:var(--ink-2)}.practice-dev{margin-top:1.25rem;padding:1.75rem 1.75rem 1.85rem;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr);gap:clamp(1.5rem,3vw,3rem);align-items:start}.practice-dev-head{display:flex;gap:.9rem;align-items:flex-start}.practice-dev-head h3{font-size:var(--text-lg);font-weight:600;color:var(--ink);margin-bottom:.3rem}.practice-dev-head p{font-size:var(--text-sm);color:var(--ink-3);line-height:1.55}.practice-dev-list{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem 1.75rem}.practice-dev-list li{position:relative;padding-left:1.1rem;font-size:var(--text-sm);line-height:1.6;color:var(--ink-2)}.practice-dev-list li:before{content:"";position:absolute;left:0;top:.62em;width:5px;height:5px;border-radius:50%;background:var(--accent)}@media(max-width:980px){.practice-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.practice-dev{grid-template-columns:1fr;gap:1.5rem}}@media(max-width:640px){.practice-grid,.practice-dev-list{grid-template-columns:1fr}.practice-dev{padding:1.5rem 1.35rem}.practice-card{padding:1.4rem 1.35rem 1.5rem}}.timeline{list-style:none;display:flex;flex-direction:column}.timeline-item{display:grid;grid-template-columns:170px minmax(0,1fr);gap:clamp(1.25rem,2.5vw,2.25rem);padding-bottom:1.75rem}.timeline-meta{padding-top:1.9rem}.timeline-body{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);padding:1.85rem 2rem 1.9rem;box-shadow:var(--shadow-sm);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}.timeline-body:hover{border-color:var(--accent-line);box-shadow:var(--shadow-lg);transform:translateY(-4px)}.timeline-meta{display:flex;flex-direction:column;align-items:flex-start;gap:.6rem;position:relative}.timeline-dot{width:9px;height:9px;border-radius:50%;background:var(--hairline-strong);margin-bottom:.15rem}.timeline-dot.is-current{background:var(--signal);box-shadow:0 0 0 4px color-mix(in srgb,var(--signal) 16%,transparent)}.timeline-period{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;color:var(--ink-3);white-space:nowrap}.timeline-badge{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.12em;text-transform:uppercase;color:var(--signal);border:1px solid color-mix(in srgb,var(--signal) 34%,transparent);background:color-mix(in srgb,var(--signal) 10%,transparent);border-radius:var(--radius-full);padding:.2rem .55rem}.timeline-role{font-size:var(--text-2xl);font-weight:600;color:var(--ink);letter-spacing:-.022em;margin-bottom:.4rem}.timeline-company{font-size:var(--text-base);color:var(--accent);font-weight:500;margin-bottom:1.1rem}.timeline-sep{color:var(--ink-3);margin:0 .5rem}.timeline-location{color:var(--ink-3);font-weight:400}.timeline-summary{font-size:var(--text-lg);line-height:1.7;color:var(--ink-2);max-width:68ch;padding-bottom:1.4rem;border-bottom:1px solid var(--hairline);margin-bottom:1.4rem}.timeline-points{list-style:none;display:flex;flex-direction:column;gap:.85rem;margin-bottom:1.6rem}.timeline-points li{position:relative;padding-left:1.35rem;font-size:var(--text-base);line-height:1.65;color:var(--ink-2);max-width:76ch}.timeline-points li:before{content:"";position:absolute;left:0;top:.66em;width:6px;height:1.5px;background:var(--accent)}.timeline-tools{display:flex;flex-wrap:wrap;gap:.45rem}@media(max-width:820px){.timeline-item{grid-template-columns:1fr;gap:1rem}.timeline-meta{flex-direction:row;align-items:center;gap:.7rem;padding-top:0}.timeline-body{padding:1.4rem 1.35rem 1.5rem}.timeline-dot{margin-bottom:0}.timeline-role{font-size:var(--text-xl)}.timeline-summary{font-size:var(--text-base)}.timeline-points li{font-size:var(--text-sm)}}.projects-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}.project-card{position:relative;overflow:hidden;display:flex;flex-direction:column}.project-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform var(--dur) var(--ease);z-index:2}.project-card:hover:before{transform:scaleX(1)}.project-card:hover{border-color:var(--accent-line);transform:translateY(-7px);box-shadow:var(--shadow-xl)}.project-media{position:relative;aspect-ratio:16 / 9;background:#08080a;border-bottom:1px solid var(--hairline);overflow:hidden}.project-video{width:100%;height:100%;object-fit:cover}.project-media-hint{position:absolute;top:.85rem;left:.85rem;display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.1em;text-transform:uppercase;color:#fff;background:#0a0a0c9e;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.16);border-radius:var(--radius-full);padding:.3rem .65rem;pointer-events:none;transition:opacity var(--dur) var(--ease)}.project-card:hover .project-media-hint{opacity:0}.project-body{padding:1.5rem;display:flex;flex-direction:column;flex:1}.project-index{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.12em;color:var(--ink-3);margin-bottom:.6rem}.project-name{font-size:var(--text-xl);font-weight:600;color:var(--ink);letter-spacing:-.018em;margin-bottom:.55rem}.project-description{font-size:var(--text-sm);line-height:1.7;color:var(--ink-2);margin-bottom:1.25rem}.project-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:auto;margin-bottom:1.25rem}.project-link{display:inline-flex;align-items:center;gap:.35rem;align-self:flex-start;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);text-decoration:none;padding-bottom:2px;border-bottom:1px solid var(--hairline-strong);transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.project-link:hover{color:var(--accent);border-bottom-color:var(--accent)}.project-link svg{transition:transform var(--dur-fast) var(--ease)}.project-link:hover svg{transform:translate(2px,-2px)}@media(max-width:820px){.projects-grid{grid-template-columns:1fr}}@media(max-width:480px){.project-body{padding:1.25rem}}.skills-list{display:flex;flex-direction:column}.skills-row{display:grid;grid-template-columns:230px minmax(0,1fr);gap:clamp(1.25rem,3vw,2.5rem);align-items:baseline;padding:1.4rem 1.1rem;border-radius:var(--radius-md);border-top:1px solid var(--hairline);transition:background-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.skills-row:hover{background:var(--surface);box-shadow:var(--shadow-md);border-top-color:transparent}.skills-row:hover .skills-category{color:var(--accent)}.skills-row:last-child{border-bottom:1px solid var(--hairline)}.skills-category{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);padding-top:.35rem;transition:color var(--dur) var(--ease)}.skills-chips{display:flex;flex-wrap:wrap;gap:.5rem}.skills-chips .chip{font-size:var(--text-sm);padding:.42rem .9rem;background:transparent}@media(max-width:760px){.skills-row{grid-template-columns:1fr;gap:.9rem;padding:1.25rem 0}.skills-category{padding-top:0}}.education-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(2rem,5vw,5rem);align-items:start}.education-block{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);padding:1.75rem 1.9rem 1.9rem;box-shadow:var(--shadow-sm);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}.education-block:hover{border-color:var(--accent-line);box-shadow:var(--shadow-lg);transform:translateY(-4px)}.education-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);padding-bottom:1rem;margin-bottom:1.5rem;border-bottom:1px solid var(--hairline)}.education-degree h3{font-size:var(--text-xl);font-weight:600;color:var(--ink);letter-spacing:-.018em;margin-bottom:.5rem}.education-institution{font-size:var(--text-base);color:var(--accent);font-weight:500;margin-bottom:.4rem}.education-period{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;color:var(--ink-3)}.certifications{list-style:none;display:flex;flex-direction:column}.certifications li{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;padding:.95rem 0;border-bottom:1px solid var(--hairline)}.certifications li:last-child{border-bottom:none}.certification-name{font-size:var(--text-base);color:var(--ink);line-height:1.5;font-weight:500}.certification-issuer{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);white-space:nowrap;flex-shrink:0}@media(max-width:860px){.education-grid{grid-template-columns:1fr;gap:2.5rem}}@media(max-width:520px){.certifications li{flex-direction:column;gap:.3rem}.certification-name{font-size:var(--text-sm)}}.contact{padding-bottom:clamp(5rem,10vw,8rem)}.contact-inner{max-width:880px}.contact-title{font-size:var(--text-display);font-weight:600;letter-spacing:-.035em;line-height:1.04;color:var(--ink);margin-bottom:1.25rem}.contact-lede{font-size:var(--text-xl);line-height:1.65;color:var(--ink-3);max-width:52ch;margin-bottom:clamp(2.5rem,5vw,3.5rem)}.contact-email{display:inline-flex;align-items:center;gap:1rem;font-size:clamp(1.25rem,3.2vw,2.1rem);font-weight:500;letter-spacing:-.025em;color:var(--ink);text-decoration:none;padding-bottom:.85rem;border-bottom:1px solid var(--hairline-strong);margin-bottom:2.5rem;max-width:100%;overflow-wrap:anywhere;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.contact-email:hover{color:var(--accent);border-bottom-color:var(--accent)}.contact-email svg{flex-shrink:0;transition:transform var(--dur) var(--ease)}.contact-email:hover svg{transform:translate(4px,-4px)}.contact-meta{display:flex;flex-wrap:wrap;gap:.75rem 2rem;margin-bottom:2.5rem}.contact-meta-item{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--text-sm);color:var(--ink-3);text-decoration:none;transition:color var(--dur-fast) var(--ease)}a.contact-meta-item:hover{color:var(--accent)}.contact-links{display:flex;flex-wrap:wrap;gap:.6rem}.contact-social{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);text-decoration:none;border:1px solid var(--hairline);border-radius:var(--radius-full);padding:.6rem 1.05rem;min-height:42px;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease)}.contact-social:hover{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}@media(max-width:560px){.contact-email{gap:.65rem;padding-bottom:.7rem}.contact-meta{gap:.6rem 1.25rem}}.footer{border-top:1px solid var(--hairline);padding:clamp(2.5rem,5vw,3.5rem) var(--gutter) 1.75rem;background:var(--canvas)}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:2rem;flex-wrap:wrap;padding-bottom:1.75rem;border-bottom:1px solid var(--hairline)}.footer-name{font-size:var(--text-lg);font-weight:600;color:var(--ink);letter-spacing:-.015em}.footer-role{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-top:.3rem}.footer-social{display:flex;gap:.55rem}.footer-bottom{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding-top:1.5rem;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;color:var(--ink-3)}@media(max-width:620px){.footer-inner{flex-direction:column;align-items:flex-start;gap:1.5rem}.footer-bottom{flex-direction:column;align-items:flex-start;gap:.4rem}}:root,[data-theme=light]{--canvas: #f7fbff;--canvas-alt: #eaf4ff;--surface: #ffffff;--surface-2: #f0f8ff;--hairline: #d6eaff;--hairline-strong: #b7d9fb;--ink: #0f1c2e;--ink-2: #33455e;--ink-3: #4d6180;--accent: #0066cc;--accent-hover: #004499;--accent-on: #ffffff;--accent-soft: rgba(0, 102, 204, .08);--accent-line: rgba(0, 102, 204, .3);--signal: #16a34a;--shadow-sm: 0 1px 2px rgba(11, 45, 84, .06), 0 2px 6px rgba(11, 45, 84, .05);--shadow-md: 0 2px 6px rgba(11, 45, 84, .07), 0 8px 20px rgba(11, 45, 84, .09);--shadow-lg: 0 6px 16px rgba(11, 45, 84, .09), 0 20px 44px rgba(11, 45, 84, .14);--shadow-xl: 0 10px 24px rgba(11, 45, 84, .11), 0 32px 70px rgba(11, 45, 84, .19);color-scheme:light}[data-theme=dark]{--canvas: #101010;--canvas-alt: #161616;--surface: #1e1e1e;--surface-2: #252525;--hairline: #303030;--hairline-strong: #414141;--ink: #f2f4f7;--ink-2: #cdd5df;--ink-3: #9fabbb;--accent: #64b5f6;--accent-hover: #90caf9;--accent-on: #0b1220;--accent-soft: rgba(100, 181, 246, .13);--accent-line: rgba(100, 181, 246, .34);--signal: #4ade80;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .5), 0 2px 6px rgba(0, 0, 0, .35);--shadow-md: 0 2px 6px rgba(0, 0, 0, .5), 0 8px 22px rgba(0, 0, 0, .45);--shadow-lg: 0 6px 16px rgba(0, 0, 0, .5), 0 22px 48px rgba(0, 0, 0, .6);--shadow-xl: 0 10px 26px rgba(0, 0, 0, .55), 0 34px 72px rgba(0, 0, 0, .7);color-scheme:dark}:root{--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--text-xs: .78125rem;--text-sm: .9375rem;--text-base: 1.03125rem;--text-lg: 1.09375rem;--text-xl: clamp(1.125rem, .4vw + 1rem, 1.25rem);--text-2xl: clamp(1.35rem, .9vw + 1.1rem, 1.65rem);--text-3xl: clamp(1.7rem, 1.7vw + 1.1rem, 2.35rem);--text-display: clamp(2rem, 2.6vw + 1.1rem, 3.15rem);--gutter: clamp(1.25rem, 4vw, 3rem);--shell: 1180px;--section-y: clamp(4.5rem, 9vw, 8rem);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-full: 999px;--ease: cubic-bezier(.22, 1, .36, 1);--dur-fast: .16s;--dur: .26s;--dur-slow: .52s}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px;-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);background-color:var(--canvas);color:var(--ink);line-height:1.6;font-size:var(--text-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}#root,.app-wrapper{min-height:100vh;background-color:var(--canvas);overflow-x:clip}h1,h2,h3,h4{line-height:1.14;letter-spacing:-.022em;font-weight:600;text-wrap:balance}p{text-wrap:pretty}img,video{max-width:100%;display:block}a{color:inherit}::selection{background:var(--accent);color:var(--accent-on)}.section{padding:var(--section-y) var(--gutter);position:relative}.section--alt{background-color:var(--canvas-alt);border-block:1px solid var(--hairline)}.section--invert{--canvas: #004b9b;--canvas-alt: #005bb8;--surface: #0060c0;--surface-2: #0069cf;--hairline: rgba(255, 255, 255, .18);--hairline-strong: rgba(255, 255, 255, .32);--ink: #ffffff;--ink-2: #dceaff;--ink-3: #bcd7fb;--accent: #ffffff;--accent-hover: #ffffff;--accent-on: #004b9b;--accent-soft: rgba(255, 255, 255, .14);--accent-line: rgba(255, 255, 255, .45);background-color:var(--canvas);color:var(--ink);border-top:1px solid var(--hairline)}[data-theme=dark] .section--invert{--canvas: #0a0a0a;--canvas-alt: #101010;--surface: #171717;--surface-2: #1e1e1e;--hairline: #2c2c2c;--hairline-strong: #3d3d3d;--ink: #f2f4f7;--ink-2: #cdd5df;--ink-3: #9fabbb;--accent: #64b5f6;--accent-hover: #90caf9;--accent-on: #0b1220;--accent-soft: rgba(100, 181, 246, .13);--accent-line: rgba(100, 181, 246, .34)}@media(min-width:1280px){.section:after,.hero:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;background:linear-gradient(var(--hairline),var(--hairline)) calc(50% - var(--shell) / 2) 0 / 1px 100% no-repeat,linear-gradient(var(--hairline),var(--hairline)) calc(50% + var(--shell) / 2) 0 / 1px 100% no-repeat}.section>*,.hero>*{position:relative;z-index:1}}.shell{max-width:var(--shell);margin:0 auto;width:100%}.section-head{margin-bottom:clamp(2.5rem,5vw,4rem);max-width:72ch}.section-index{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem}.section-index:after{content:"";height:1px;flex:1;max-width:90px;background:var(--accent-line)}.section-title{font-size:var(--text-3xl);font-weight:600;color:var(--accent);margin-bottom:.9rem}.section-lede{font-size:var(--text-lg);color:var(--ink-2);max-width:62ch;line-height:1.7}.panel{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease),background-color var(--dur) var(--ease)}.panel:hover{box-shadow:var(--shadow-lg)}.chip{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;letter-spacing:.01em;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--radius-full);padding:.32rem .72rem;white-space:nowrap;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease)}.chip:hover{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft);transform:translateY(-2px);box-shadow:var(--shadow-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;font-family:inherit;font-size:var(--text-sm);font-weight:500;letter-spacing:.005em;padding:.85rem 1.5rem;min-height:46px;border-radius:var(--radius-full);border:1px solid transparent;cursor:pointer;text-decoration:none;transition:background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.btn:active{transform:translateY(1px)}.btn--primary{background:var(--accent);color:var(--accent-on);box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 32%,transparent)}.btn--primary:hover{background:var(--accent-hover);transform:translateY(-2px);box-shadow:0 10px 24px color-mix(in srgb,var(--accent) 40%,transparent)}.btn--ghost{background:var(--surface);color:var(--ink);border-color:var(--hairline-strong);box-shadow:var(--shadow-sm)}.btn--ghost:hover{border-color:var(--ink);transform:translateY(-2px);box-shadow:var(--shadow-md)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-full);border:1px solid var(--hairline);background:transparent;color:var(--ink-2);cursor:pointer;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease)}.icon-btn:hover{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--signal);flex-shrink:0;box-shadow:0 0 0 3px color-mix(in srgb,var(--signal) 18%,transparent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}:focus:not(:focus-visible){outline:none}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--canvas)}::-webkit-scrollbar-thumb{background:var(--hairline-strong);border-radius:var(--radius-full);border:2px solid var(--canvas)}::-webkit-scrollbar-thumb:hover{background:var(--ink-3)}*{scrollbar-color:var(--hairline-strong) var(--canvas);scrollbar-width:thin}.reveal{opacity:0;transform:translateY(26px) scale(.988);transition:opacity .72s var(--ease),transform .72s var(--ease);will-change:opacity,transform}.reveal.visible,.stagger.visible>.reveal{opacity:1;transform:none;will-change:auto}.stagger.visible>.reveal:nth-child(1){transition-delay:.05s}.stagger.visible>.reveal:nth-child(2){transition-delay:.13s}.stagger.visible>.reveal:nth-child(3){transition-delay:.21s}.stagger.visible>.reveal:nth-child(4){transition-delay:.29s}.stagger.visible>.reveal:nth-child(5){transition-delay:.37s}.stagger.visible>.reveal:nth-child(6){transition-delay:.45s}.stagger.visible>.reveal:nth-child(7){transition-delay:.53s}.stagger.visible>.reveal:nth-child(8){transition-delay:.61s}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}
