:root{--color-ground:#0a0e14;--color-surface:#111823;--color-surface-raised:#17202d;--color-overlay:#04060ab8;--color-hairline:#26313f;--color-hairline-strong:#354254;--color-ink:#f1f5f4;--color-ink-dim:#9aa7b2;--color-ink-faint:#6b7885;--color-ink-inverse:#0a0e14;--color-accent:#22c55e;--color-accent-hover:#3fde76;--color-accent-active:#16a34a;--color-accent-tint:#22c55e24;--color-accent-border:#22c55e66;--color-highlight:#f5a623;--color-highlight-tint:#f5a62324;--color-highlight-border:#f5a62366;--color-success:var(--color-accent);--color-success-tint:var(--color-accent-tint);--color-danger:#f87171;--color-danger-tint:#f8717124;--color-device-bezel:#05070a;--color-device-bezel-edge:#ffffff14;--shadow-sm:0 1px 2px #0006;--shadow-md:0 8px 20px -6px #0000008c;--shadow-lg:0 20px 40px -12px #0009;--shadow-hard:4px 4px 0 var(--color-accent);--shadow-hard-highlight:4px 4px 0 var(--color-highlight);--font-heading:"Space Grotesk", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--text-display:700 3.25rem/1.08 var(--font-heading);--text-h1:700 2.25rem/1.15 var(--font-heading);--text-h2:700 1.75rem/1.22 var(--font-heading);--text-h3:600 1.25rem/1.3 var(--font-heading);--text-h4:600 1.0625rem/1.4 var(--font-heading);--text-body-lg:400 1.125rem/1.6 var(--font-sans);--text-body:400 1rem/1.6 var(--font-sans);--text-body-sm:400 .875rem/1.5 var(--font-sans);--text-label:600 .75rem/1.4 var(--font-mono);--text-code:400 .8125rem/1.5 var(--font-mono);--tracking-tight:-.02em;--tracking-normal:0;--tracking-label:.06em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--space-24:96px;--space-32:128px;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:14px;--radius-full:9999px;--container-max:1280px;--gutter-mobile:16px;--gutter:24px;--gutter-lg:32px;--bp-sm:480px;--bp-md:768px;--bp-lg:1024px;--bp-xl:1280px;--bp-2xl:1536px;--motion-fast:.15s;--motion-base:.3s;--motion-entrance:.45s;--motion-ease:cubic-bezier(.4, 0, .2, 1);--motion-hover-scale:1.02;--motion-tap-scale:.98}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--color-ground:#f7f8fa;--color-surface:#fff;--color-surface-raised:#eef1f5;--color-overlay:#0f141980;--color-hairline:#d9dee5;--color-hairline-strong:#b7c0cb;--color-ink:#10151b;--color-ink-dim:#4b5563;--color-ink-faint:#6b7280;--color-ink-inverse:#fff;--color-accent:#16a34a;--color-accent-hover:#128a3e;--color-accent-active:#0f7534;--color-accent-tint:#16a34a1a;--color-accent-border:#16a34a59;--color-highlight:#b5651d;--color-highlight-tint:#b5651d1a;--color-highlight-border:#b5651d59;--color-danger:#c2493c;--color-danger-tint:#c2493c1a;--shadow-sm:0 1px 2px #0f141914;--shadow-md:0 8px 20px -6px #0f14191f;--shadow-lg:0 20px 40px -12px #0f141929;--shadow-hard:4px 4px 0 var(--color-accent);--shadow-hard-highlight:4px 4px 0 var(--color-highlight)}}[data-theme=light]{--color-ground:#f7f8fa;--color-surface:#fff;--color-surface-raised:#eef1f5;--color-overlay:#0f141980;--color-hairline:#d9dee5;--color-hairline-strong:#b7c0cb;--color-ink:#10151b;--color-ink-dim:#4b5563;--color-ink-faint:#6b7280;--color-ink-inverse:#fff;--color-accent:#16a34a;--color-accent-hover:#128a3e;--color-accent-active:#0f7534;--color-accent-tint:#16a34a1a;--color-accent-border:#16a34a59;--color-highlight:#b5651d;--color-highlight-tint:#b5651d1a;--color-highlight-border:#b5651d59;--color-danger:#c2493c;--color-danger-tint:#c2493c1a;--shadow-sm:0 1px 2px #0f141914;--shadow-md:0 8px 20px -6px #0f14191f;--shadow-lg:0 20px 40px -12px #0f141929;--shadow-hard:4px 4px 0 var(--color-accent);--shadow-hard-highlight:4px 4px 0 var(--color-highlight)}[data-theme=dark]{--color-ground:#0a0e14;--color-surface:#111823;--color-surface-raised:#17202d;--color-overlay:#04060ab8;--color-hairline:#26313f;--color-hairline-strong:#354254;--color-ink:#f1f5f4;--color-ink-dim:#9aa7b2;--color-ink-faint:#6b7885;--color-ink-inverse:#0a0e14;--color-accent:#22c55e;--color-accent-hover:#3fde76;--color-accent-active:#16a34a;--color-accent-tint:#22c55e24;--color-accent-border:#22c55e66;--color-highlight:#f5a623;--color-highlight-tint:#f5a62324;--color-highlight-border:#f5a62366;--color-danger:#f87171;--color-danger-tint:#f8717124;--shadow-sm:0 1px 2px #0006;--shadow-md:0 8px 20px -6px #0000008c;--shadow-lg:0 20px 40px -12px #0009;--shadow-hard:4px 4px 0 var(--color-accent);--shadow-hard-highlight:4px 4px 0 var(--color-highlight)}.btn{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-md);font:var(--text-body);cursor:pointer;transition:background-color var(--motion-fast) var(--motion-ease), border-color var(--motion-fast) var(--motion-ease), color var(--motion-fast) var(--motion-ease), box-shadow var(--motion-fast) var(--motion-ease);border:1px solid #0000;font-weight:600;display:inline-flex}.btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--sm{height:32px;padding:0 var(--space-3);font:var(--text-body-sm);border-radius:var(--radius-sm);font-weight:600}.btn--md{height:40px;padding:0 var(--space-5)}.btn--lg{height:48px;padding:0 var(--space-8);font:var(--text-body-lg);font-weight:600}.btn--primary{background:var(--color-accent);color:var(--color-ink-inverse)}.btn--primary:hover{background:var(--color-accent-hover);box-shadow:var(--shadow-hard)}.btn--primary:active{background:var(--color-accent-active);box-shadow:none}.btn--secondary{background:var(--color-surface-raised);border-color:var(--color-hairline);color:var(--color-ink)}.btn--secondary:hover{border-color:var(--color-highlight-border);background:var(--color-surface);box-shadow:var(--shadow-hard-highlight)}.btn--secondary:active{box-shadow:none}.btn--ghost{color:var(--color-accent);background:0 0}.btn--ghost:hover{background:var(--color-accent-tint)}.btn--outline{border-color:var(--color-accent-border);color:var(--color-accent);background:0 0}.btn--outline:hover{background:var(--color-accent-tint)}.btn--danger{background:var(--color-danger);color:var(--color-ink-inverse)}.card{background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);padding:var(--space-6);transition:transform var(--motion-base) var(--motion-ease), border-color var(--motion-base) var(--motion-ease), box-shadow var(--motion-base) var(--motion-ease);flex-direction:column;display:flex}.card:hover{border-color:var(--color-accent-border);box-shadow:var(--shadow-hard);transform:translate(-4px,-4px)}.card:active{box-shadow:none;transform:translate(0)}.card__tags{gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.card__tag{font:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-ink-dim);background:var(--color-surface-raised);border:1px solid var(--color-hairline);border-radius:var(--radius-full);padding:var(--space-1) var(--space-3)}.card__title{font:var(--text-h4);color:var(--color-ink);margin:0 0 var(--space-2)}.card__desc{font:var(--text-body-sm);color:var(--color-ink-dim);flex-grow:1;margin:0}.card__footer{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-hairline);justify-content:space-between;align-items:center;display:flex}.badge{align-items:center;gap:var(--space-1);font:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;border-radius:var(--radius-full);padding:var(--space-1) var(--space-3);display:inline-flex}.badge:before{content:"";border-radius:var(--radius-full);background:currentColor;width:6px;height:6px}.badge--accent{color:var(--color-accent);background:var(--color-accent-tint)}.badge--success{color:var(--color-success);background:var(--color-success-tint)}.badge--muted{color:var(--color-ink-faint);background:var(--color-surface-raised)}.badge--highlight{color:var(--color-highlight);background:var(--color-highlight-tint)}.field{gap:var(--space-2);flex-direction:column;display:flex}.field+.field{margin-top:var(--space-5)}.field__label{font:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-ink-dim)}.field__input,.field__textarea{font:var(--text-body);color:var(--color-ink);background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);transition:border-color var(--motion-fast) var(--motion-ease), box-shadow var(--motion-fast) var(--motion-ease)}.field__input::placeholder,.field__textarea::placeholder{color:var(--color-ink-faint)}.field__input:focus,.field__textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-tint);outline:none}.field__textarea{resize:vertical;min-height:120px}.field--error .field__input,.field--error .field__textarea{border-color:var(--color-danger)}.field__hint{font:var(--text-body-sm);color:var(--color-ink-faint)}.field--error .field__hint{color:var(--color-danger)}*{min-width:0}html{scroll-behavior:smooth}body{overflow-x:hidden}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.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}.skip-link{left:var(--space-4);background:var(--color-accent);color:var(--color-ink-inverse);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);z-index:100;transition:top var(--motion-fast) var(--motion-ease);font-weight:600;text-decoration:none;position:absolute;top:-48px}.skip-link:focus-visible{top:var(--space-4)}.container{max-width:var(--container-max);padding-inline:var(--gutter-mobile);margin-inline:auto}@media (width>=768px){.container{padding-inline:var(--gutter)}}@media (width>=1024px){.container{padding-inline:var(--gutter-lg)}}.section{padding-block:var(--space-16);border-top:1px solid var(--color-hairline)}.section:first-of-type{border-top:none}.section--tight{padding-block:var(--space-10)}@media (width>=1024px){.section{padding-block:var(--space-24)}.section--tight{padding-block:var(--space-12)}}.eyebrow{font:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-accent);margin-bottom:var(--space-4);align-items:center;gap:10px;display:inline-flex}.eyebrow__dot{border-radius:var(--radius-full);background:var(--color-accent);flex-shrink:0;width:6px;height:6px;animation:2s ease-in-out infinite pulse-dot}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.35}}.section-heading{max-width:640px;margin-bottom:var(--space-10)}.section-heading--center{text-align:center;max-width:640px;margin-inline:auto}.section-heading h2{letter-spacing:var(--tracking-tight);text-wrap:balance;margin:0;font-size:clamp(1.5rem,3vw,1.875rem);font-weight:700}.section-heading p{color:var(--color-ink-dim);margin:var(--space-3) 0 0;max-width:60ch}.section-heading--center p{margin-inline:auto}.navbar{z-index:50;background:color-mix(in srgb, var(--color-ground) 85%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--color-hairline);position:sticky;top:0}.navbar__inner{justify-content:space-between;align-items:center;height:64px;display:flex}.navbar__logo{font:600 15px var(--font-heading);color:var(--color-ink);align-items:center;gap:2px;text-decoration:none;display:inline-flex}.navbar__logo-prompt{font-family:var(--font-mono);color:var(--color-accent)}.navbar__links{align-items:center;gap:var(--space-6);margin:0;padding:0;list-style:none;display:flex}.navbar__links a{color:var(--color-ink-dim);transition:color var(--motion-fast) var(--motion-ease);font-size:.9375rem;font-weight:600;text-decoration:none}.navbar__links a:hover,.navbar__links a:focus-visible{color:var(--color-ink)}.navbar__actions{align-items:center;gap:var(--space-4);display:flex}.navbar__toggle{border:1px solid var(--color-hairline);border-radius:var(--radius-sm);width:40px;height:40px;color:var(--color-ink);cursor:pointer;background:0 0;justify-content:center;align-items:center;display:none}.navbar__toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.navbar__panel{gap:var(--space-4);padding:var(--space-5) var(--gutter-mobile) var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-hairline);box-shadow:var(--shadow-md);flex-direction:column;display:flex;position:absolute;top:100%;left:0;right:0}.navbar__panel a{color:var(--color-ink);padding:var(--space-2) 0;font-weight:600;text-decoration:none}.lang-switch{border:1px solid var(--color-hairline);border-radius:var(--radius-full);background:var(--color-surface);flex-shrink:0;align-items:center;gap:2px;padding:3px;display:inline-flex}.lang-switch__option{border-radius:var(--radius-full);color:var(--color-ink-dim);font:600 12px var(--font-mono);letter-spacing:.02em;cursor:pointer;transition:background-color var(--motion-fast) var(--motion-ease), color var(--motion-fast) var(--motion-ease);background:0 0;border:none;align-items:center;gap:5px;padding:5px 10px;display:inline-flex}.lang-switch__option:hover{color:var(--color-ink)}.lang-switch__option.is-active{background:var(--color-accent-tint);color:var(--color-accent)}.lang-switch__option:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.lang-switch__flag{font-size:14px;line-height:1}.navbar__lang--mobile{align-self:flex-start}@media (width<=767px){.navbar__links,.navbar__actions .btn,.navbar__actions .navbar__lang{display:none}.navbar__toggle{display:inline-flex}}@media (width>=768px){.navbar__toggle{display:none}}.hero-section{padding-block:clamp(56px, 10vw, 96px) var(--space-16);position:relative;overflow:hidden}.hero-section:before{content:"";z-index:0;background:radial-gradient(circle at 12% 8%, var(--color-accent-tint), transparent 55%), radial-gradient(circle at 88% 0%, var(--color-highlight-tint), transparent 50%);pointer-events:none;position:absolute;inset:0}.hero__grid{z-index:1;gap:var(--space-12);grid-template-columns:1fr;align-items:center;display:grid;position:relative}@media (width>=1024px){.hero__grid{gap:var(--space-8);grid-template-columns:1.05fr 1fr}}.hero__content{max-width:640px}.hero__content h1{letter-spacing:var(--tracking-tight);text-wrap:balance;margin:0 0 var(--space-5);font-size:clamp(1.875rem,4.2vw,2.75rem);font-weight:700}.hero__tagline{color:var(--color-ink-dim);max-width:58ch;margin:0 0 var(--space-8);font-size:1.125rem;line-height:1.6}.hero__actions{gap:var(--space-4);flex-wrap:wrap;display:flex}.hero__note{margin-top:var(--space-5);font-size:.8125rem;font-family:var(--font-mono);color:var(--color-ink-faint)}.terminal-window{background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}.terminal-window__bar{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface-raised);border-bottom:1px solid var(--color-hairline);display:flex}.terminal-window__dots{gap:6px;display:flex}.terminal-window__dots i{border-radius:var(--radius-full);width:10px;height:10px;display:block}.terminal-window__dots i:first-child{background:var(--color-danger)}.terminal-window__dots i:nth-child(2){background:var(--color-highlight)}.terminal-window__dots i:nth-child(3){background:var(--color-accent)}.terminal-window__title{font-family:var(--font-mono);color:var(--color-ink-faint);align-items:center;gap:6px;margin-left:auto;font-size:.75rem;display:inline-flex}.terminal-window__title-icon{width:14px;height:14px}.terminal-window__body{padding:var(--space-6);gap:var(--space-4);flex-direction:column;display:flex}.terminal-line__prompt{font-family:var(--font-mono);color:var(--color-accent);margin:0;font-size:.875rem}.terminal-line__output{margin:var(--space-1) 0 0;font-family:var(--font-mono);color:var(--color-ink-dim);padding-left:var(--space-4);font-size:.875rem}.terminal-line__prompt--cursor{align-items:center;gap:4px;display:flex}.terminal-cursor{background:var(--color-accent);width:8px;height:16px;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.bento-grid{gap:var(--space-5);grid-template-columns:repeat(4,1fr);display:grid}.bento-card{background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);padding:var(--space-6);transition:transform var(--motion-base) var(--motion-ease), border-color var(--motion-base) var(--motion-ease), box-shadow var(--motion-base) var(--motion-ease);grid-column:span 1}.bento-card:hover{border-color:var(--color-accent-border);box-shadow:var(--shadow-hard);transform:translate(-4px,-4px)}.bento-card--featured{border-color:var(--color-highlight-border);grid-column:span 2}.bento-card--featured:hover{box-shadow:var(--shadow-hard-highlight)}.bento-card__value{font-family:var(--font-heading);color:var(--color-accent);font-variant-numeric:tabular-nums;font-size:clamp(1.5rem,2.6vw,1.875rem);font-weight:700}.bento-card--featured .bento-card__value{color:var(--color-highlight);font-size:clamp(2rem,4vw,2.75rem)}.bento-card__label{margin-top:var(--space-2);color:var(--color-ink-dim);max-width:34ch;font-size:.875rem}@media (width<=1023px){.bento-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=479px){.bento-grid{grid-template-columns:1fr}.bento-card--featured{grid-column:span 1}}.timeline{margin:0;padding:0;list-style:none}.timeline__item{padding-left:64px;padding-bottom:var(--space-12);position:relative}.timeline__item:last-child{padding-bottom:0}.timeline__item:not(:last-child):after{content:"";top:52px;left:23px;bottom:calc(-1 * var(--space-12));background:var(--color-hairline);width:2px;position:absolute}.timeline__node{border-radius:var(--radius-full);background:var(--color-surface-raised);border:1.5px solid var(--color-hairline-strong);width:48px;height:48px;color:var(--color-ink-dim);justify-content:center;align-items:center;display:flex;position:absolute;top:0;left:0}.timeline__node svg{width:20px;height:20px}.timeline__node--current{background:var(--color-accent-tint);border-color:var(--color-accent);color:var(--color-accent)}.timeline__content{background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);padding:var(--space-6)}.timeline__head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.timeline__role{font-family:var(--font-heading);color:var(--color-ink);margin:0;font-size:1.1875rem;font-weight:600}.timeline__company{color:var(--color-ink-dim);margin:var(--space-1) 0 0;font-size:.9375rem}.timeline__period{font-family:var(--font-mono);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-ink-faint);white-space:nowrap;align-items:center;gap:6px;font-size:.75rem;display:inline-flex}.timeline__current-dot{border-radius:var(--radius-full);background:var(--color-accent);width:6px;height:6px;animation:2s ease-in-out infinite pulse-dot}.timeline__list{margin:0 0 var(--space-5);gap:var(--space-2);flex-direction:column;padding:0;list-style:none;display:flex}.timeline__list li{padding-left:var(--space-4);color:var(--color-ink-dim);font-size:.9375rem;line-height:1.6;position:relative}.timeline__list li:before{content:"—";color:var(--color-ink-faint);position:absolute;left:0}.timeline__impact{padding-top:var(--space-4);border-top:1px dashed var(--color-hairline)}.timeline__impact-title{align-items:center;gap:var(--space-2);font:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-highlight);margin:0 0 var(--space-3);display:inline-flex}.timeline__impact-icon{width:14px;height:14px}.timeline__list--impact li{color:var(--color-ink)}.timeline__list--impact li:before{content:"▲";color:var(--color-highlight);font-size:.65em;top:.35em}@media (width<=639px){.timeline__item{padding-left:52px;padding-bottom:var(--space-10)}.timeline__item:not(:last-child):after{top:44px;left:19px;bottom:calc(-1 * var(--space-10))}.timeline__node{width:40px;height:40px}.timeline__node svg{width:18px;height:18px}.timeline__head{align-items:flex-start;gap:var(--space-2);flex-direction:column}}.project-grid{gap:var(--space-8);grid-template-columns:repeat(3,1fr);display:grid}@media (width<=1279px){.project-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=767px){.project-grid{grid-template-columns:1fr}}.project-card{background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);transition:border-color var(--motion-base) var(--motion-ease), box-shadow var(--motion-base) var(--motion-ease), transform var(--motion-base) var(--motion-ease);flex-direction:column;display:flex;overflow:hidden}.project-card:hover{border-color:var(--color-accent-border);box-shadow:var(--shadow-hard);transform:translate(-4px,-4px)}.project-card__body{padding:var(--space-6);gap:var(--space-1);color:inherit;cursor:pointer;flex-direction:column;flex-grow:1;text-decoration:none;display:flex}.project-card__body:hover .project-card__name{color:var(--color-accent)}.project-card__body:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.project-card__category{font-family:var(--font-mono);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-accent);margin:0;font-size:.6875rem}.project-card__name{font-family:var(--font-heading);color:var(--color-ink);transition:color var(--motion-fast) var(--motion-ease);margin:0;font-size:1.0625rem;font-weight:600}.project-card__company{font-family:var(--font-mono);color:var(--color-ink-faint);margin:0;font-size:.75rem}.project-card__desc{color:var(--color-ink-dim);margin:var(--space-2) 0 0;flex-grow:1;font-size:.875rem}.project-card__tags{gap:var(--space-2);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.project-card__tag{font-family:var(--font-mono);padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--color-surface-raised);border:1px solid var(--color-hairline);color:var(--color-ink-dim);font-size:.6875rem}.project-card__more{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-hairline);color:var(--color-accent);align-items:center;gap:4px;font-size:.8125rem;font-weight:600;display:inline-flex}.project-card__more svg{width:15px;height:15px;transition:transform var(--motion-fast) var(--motion-ease)}.project-card__body:hover .project-card__more svg{transform:translate(3px)}.project-carousel{background:var(--color-surface-raised);padding:var(--space-6) var(--space-6) 0;flex-direction:column;align-items:center;display:flex}.project-carousel__track{height:100%;display:flex}.project-carousel__slide{flex-shrink:0;justify-content:center;height:100%;display:flex}.project-carousel__controls{justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-4) 0 var(--space-6);display:flex}.project-carousel__nav{border-radius:var(--radius-full);border:1px solid var(--color-hairline);background:var(--color-surface);width:32px;height:32px;color:var(--color-ink-dim);cursor:pointer;transition:border-color var(--motion-fast) var(--motion-ease), color var(--motion-fast) var(--motion-ease);justify-content:center;align-items:center;display:inline-flex}.project-carousel__nav:hover{border-color:var(--color-accent-border);color:var(--color-accent)}.project-carousel__nav:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-carousel__nav svg{width:16px;height:16px}.project-carousel__dots{align-items:center;gap:6px;display:flex}.project-carousel__dot{border-radius:var(--radius-full);background:var(--color-hairline-strong);cursor:pointer;width:6px;height:6px;transition:background-color var(--motion-fast) var(--motion-ease), transform var(--motion-fast) var(--motion-ease);border:none;padding:0}.project-carousel__dot.is-active{background:var(--color-accent);transform:scale(1.3)}.project-carousel__dot:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.device-frame--phone{aspect-ratio:9/19.5;background:var(--color-device-bezel);border:3px solid var(--color-device-bezel-edge);width:190px;box-shadow:var(--shadow-lg);border-radius:28px;padding:10px 8px;position:relative}.device-frame__screen{background:var(--color-ground);border-radius:20px;width:100%;height:100%;position:relative;overflow:hidden}.device-frame__notch{border-radius:var(--radius-full);background:var(--color-device-bezel);z-index:2;width:10px;height:10px;position:absolute;top:16px;left:50%;transform:translate(-50%)}.device-frame__home{border-radius:var(--radius-full);background:var(--color-device-bezel-edge);width:70px;height:4px;position:absolute;bottom:6px;left:50%;transform:translate(-50%)}.device-frame--watch-wrap{flex-direction:column;align-items:center;display:flex}.device-frame--watch{z-index:1;background:var(--color-device-bezel);border:4px solid var(--color-device-bezel-edge);border-radius:var(--radius-full);width:168px;height:168px;box-shadow:var(--shadow-lg);flex-shrink:0;padding:8px;position:relative}.device-frame__strap{background:var(--color-device-bezel);border-left:1px solid var(--color-device-bezel-edge);border-right:1px solid var(--color-device-bezel-edge);flex-shrink:0;width:68px;height:34px;position:relative}.device-frame__strap:after{content:"";border-radius:var(--radius-full);background:color-mix(in srgb, var(--color-device-bezel) 55%, transparent);width:22px;height:3px;position:absolute;left:50%;transform:translate(-50%)}.device-frame__strap--top{border-radius:10px 10px 0 0;margin-bottom:-14px}.device-frame__strap--top:after{bottom:8px}.device-frame__strap--bottom{border-radius:0 0 10px 10px;margin-top:-14px}.device-frame__strap--bottom:after{top:8px}.device-frame__crown{background:var(--color-device-bezel-edge);border-radius:3px;width:12px;height:22px;position:absolute;top:50%;right:-7px;transform:translateY(-50%)}.device-frame__screen--watch{border-radius:var(--radius-full);background:var(--color-ground);width:100%;height:100%;overflow:hidden}.device-frame__screen--watch .mock-screen__status{display:none}.device-frame__screen--watch .mock-screen__body{padding:var(--space-5) var(--space-4);justify-content:center;height:100%}.device-frame--desktop{aspect-ratio:16/10;background:var(--color-device-bezel);border:3px solid var(--color-device-bezel-edge);border-radius:var(--radius-lg);width:min(320px,100%);box-shadow:var(--shadow-lg);flex-direction:column;padding:0 0 8px;display:flex}.device-frame__browser-bar{align-items:center;gap:var(--space-3);padding:8px var(--space-3);flex-shrink:0;display:flex}.device-frame__browser-dots{flex-shrink:0;gap:5px;display:flex}.device-frame__browser-dots i{border-radius:var(--radius-full);background:var(--color-device-bezel-edge);width:7px;height:7px;display:block}.device-frame__browser-url{border-radius:var(--radius-sm);background:var(--color-device-bezel-edge);flex:1;height:14px}.device-frame__screen--desktop{border-radius:var(--radius-md);background:var(--color-ground);flex:1;margin:0 6px 6px;overflow:hidden}.device-frame__screen--desktop .mock-screen__status{display:none}.mock-screen{background:var(--color-ground);width:100%;height:100%;color:var(--color-ink);flex-direction:column;display:flex}.mock-screen__status{font-family:var(--font-mono);color:var(--color-ink-faint);justify-content:space-between;align-items:center;padding:10px 14px 2px;font-size:8px;display:flex}.mock-screen__status-icons{align-items:center;gap:3px;display:flex}.mock-screen__status-icons i{background:var(--color-ink-faint);border-radius:1px;width:7px;height:5px;display:block}.mock-screen__body{padding:var(--space-4);gap:var(--space-3);flex-direction:column;flex:1;display:flex;overflow:hidden}.mock-screen__body--center{text-align:center;justify-content:center;align-items:center}.mock-screen__body--dark{background:var(--color-device-bezel)}.mock-screen__body--nopad{padding:0}.mock-screen--image{background:var(--color-surface-raised);width:100%;height:100%}.mock-screen__image{object-fit:contain;width:100%;height:100%;display:block}.mock-screen__logo{border-radius:var(--radius-full);background:var(--color-accent-tint);border:1.5px solid var(--color-accent);width:36px;height:36px;margin-bottom:var(--space-2)}.mock-screen__field{border-radius:var(--radius-sm);background:var(--color-surface-raised);border:1px solid var(--color-hairline);width:100%;height:12px}.mock-screen__button{border-radius:var(--radius-sm);background:var(--color-accent);width:70%;height:14px;margin-top:var(--space-2)}.mock-screen__link{border-radius:var(--radius-sm);background:var(--color-hairline-strong);width:40%;height:7px;margin-top:var(--space-1)}.mock-screen__viewfinder{margin:var(--space-2) 0;border-radius:var(--radius-md);background:#ffffff08;flex:1;position:relative}.mock-screen__corner{border:2px solid var(--color-accent);width:14px;height:14px;position:absolute}.mock-screen__corner--tl{border-bottom:none;border-right:none;top:8px;left:8px}.mock-screen__corner--tr{border-bottom:none;border-left:none;top:8px;right:8px}.mock-screen__corner--bl{border-top:none;border-right:none;bottom:8px;left:8px}.mock-screen__corner--br{border-top:none;border-left:none;bottom:8px;right:8px}.mock-screen__scanline{background:var(--color-accent);height:2px;box-shadow:0 0 6px var(--color-accent);animation:2.4s ease-in-out infinite scan;position:absolute;top:12%;left:8px;right:8px}@keyframes scan{0%,to{top:12%}50%{top:82%}}.mock-screen__caption{border-radius:var(--radius-sm);background:var(--color-surface-raised);width:55%;height:9px;margin:0 auto}.mock-screen__greeting{border-radius:var(--radius-sm);background:var(--color-hairline-strong);width:55%;height:11px;margin-bottom:var(--space-1)}.mock-screen__grid{gap:var(--space-2);grid-template-columns:repeat(2,1fr);display:grid}.mock-screen__tile{border-radius:var(--radius-sm);background:var(--color-surface-raised);border:1px solid var(--color-hairline);height:32px}.mock-screen__wide-card{border-radius:var(--radius-md);background:var(--color-accent-tint);border:1px solid var(--color-accent-border);height:40px}.mock-screen__search{border-radius:var(--radius-full);background:var(--color-surface-raised);border:1px solid var(--color-hairline);height:15px;margin-bottom:var(--space-1)}.mock-screen__row{align-items:center;gap:var(--space-2);border-bottom:1px solid var(--color-hairline);padding:6px 0;display:flex}.mock-screen__row-icon{border-radius:var(--radius-full);background:var(--color-surface-raised);flex-shrink:0;width:18px;height:18px}.mock-screen__row-lines{flex-direction:column;flex:1;gap:3px;display:flex}.mock-screen__row-lines i{background:var(--color-hairline-strong);border-radius:2px;height:5px;display:block}.mock-screen__row-lines i:last-child{background:var(--color-hairline);width:60%}.mock-screen__row-tag{border-radius:var(--radius-sm);background:var(--color-accent-tint);flex-shrink:0;width:18px;height:7px}.mock-screen__chart{padding:var(--space-2) 0;flex:1;align-items:flex-end;gap:4px;display:flex}.mock-screen__bar{background:var(--color-accent);opacity:.85;border-radius:2px 2px 0 0;flex:1}.mock-screen__legend{gap:var(--space-1);display:flex}.mock-screen__legend i{background:var(--color-hairline-strong);border-radius:2px;width:14px;height:4px;display:block}.mock-screen__map{border-radius:var(--radius-md);background:var(--color-surface-raised);background-image:linear-gradient(var(--color-hairline) 1px, transparent 1px), linear-gradient(90deg, var(--color-hairline) 1px, transparent 1px);background-size:16px 16px;flex:1;position:relative;overflow:hidden}.mock-screen__route{width:100%;height:100%;position:absolute;inset:0}.mock-screen__route path{stroke:var(--color-accent);stroke-width:2.5px;stroke-linecap:round}.mock-screen__pin{background:var(--color-highlight);border-radius:50% 50% 50% 0;width:10px;height:10px;position:absolute;top:16%;right:12%;transform:rotate(-45deg)}.mock-screen__video{background:linear-gradient(160deg,#22c55e2e,#0a0e1499);flex:1;position:relative}.mock-screen__video-pip{border-radius:var(--radius-sm);background:var(--color-surface-raised);border:1px solid var(--color-hairline-strong);width:40px;height:56px;position:absolute;bottom:12px;right:12px}.mock-screen__call-bar{justify-content:center;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;background:#0006;display:flex}.mock-screen__call-bar i{border-radius:var(--radius-full);background:var(--color-surface-raised);width:26px;height:26px;display:block}.mock-screen__call-end{background:var(--color-danger)}.skills-grid{gap:var(--space-6);grid-template-columns:repeat(2,1fr);display:grid}@media (width<=767px){.skills-grid{grid-template-columns:1fr}}.skills-card{background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);padding:var(--space-6)}.skills-card__title{font-family:var(--font-heading);margin:0 0 var(--space-4);color:var(--color-ink);font-size:1.0625rem;font-weight:600}.skills-card__tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.skills-tag{font-family:var(--font-mono);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);background:var(--color-surface-raised);border:1px solid var(--color-hairline);color:var(--color-ink-dim);transition:border-color var(--motion-fast) var(--motion-ease), color var(--motion-fast) var(--motion-ease);font-size:.8125rem}.skills-tag:hover{border-color:var(--color-accent-border);color:var(--color-accent)}.contact-chips{justify-content:center;gap:var(--space-4);margin-top:var(--space-10);flex-wrap:wrap;display:flex}.contact-chip{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border:1px solid var(--color-hairline);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-ink);transition:border-color var(--motion-fast) var(--motion-ease), background-color var(--motion-fast) var(--motion-ease);font-size:.9375rem;font-weight:600;text-decoration:none;display:inline-flex}.contact-chip:hover{border-color:var(--color-accent-border);background:var(--color-accent-tint)}.contact-chip:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.contact-chip__icon{width:18px;height:18px;color:var(--color-accent);flex-shrink:0}.site-footer{border-top:1px solid var(--color-hairline);padding-block:var(--space-12) var(--space-8)}.site-footer__grid{gap:var(--space-8);padding-bottom:var(--space-10);grid-template-columns:1fr;display:grid}@media (width>=480px){.site-footer__grid{grid-template-columns:repeat(3,1fr)}}.site-footer__brand .navbar__logo{padding:0}.site-footer__brand p{margin-top:var(--space-3);color:var(--color-ink-faint);max-width:34ch;font-size:.875rem}.site-footer__col-title{font:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-ink-faint);margin:0 0 var(--space-4)}.site-footer__col ul{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.site-footer__col a{color:var(--color-ink-dim);transition:color var(--motion-fast) var(--motion-ease);align-items:center;gap:6px;font-size:.9375rem;text-decoration:none;display:inline-flex}.site-footer__col a:hover,.site-footer__col a:focus-visible{color:var(--color-ink)}.site-footer__icon{flex-shrink:0;width:15px;height:15px}.site-footer__bottom{padding-top:var(--space-8);border-top:1px solid var(--color-hairline)}.site-footer__bottom p{font-size:.8125rem;font-family:var(--font-mono);color:var(--color-ink-faint);margin:0}.product-detail{padding-block:var(--space-10) var(--space-24)}.product-detail__back{align-items:center;gap:var(--space-1);color:var(--color-ink-dim);margin-bottom:var(--space-8);transition:color var(--motion-fast) var(--motion-ease);font-size:.875rem;font-weight:600;text-decoration:none;display:inline-flex}.product-detail__back:hover,.product-detail__back:focus-visible{color:var(--color-accent)}.product-detail__back svg{width:18px;height:18px}.product-detail__header{max-width:720px;margin-bottom:var(--space-16)}.product-detail__header h1{letter-spacing:var(--tracking-tight);margin:0 0 var(--space-3);text-wrap:balance;font-size:clamp(1.875rem,4.4vw,2.75rem);font-weight:700}.product-detail__meta{font-family:var(--font-mono);color:var(--color-ink-faint);margin:0 0 var(--space-5);font-size:.875rem}.product-detail__desc{color:var(--color-ink-dim);margin:0 0 var(--space-6);max-width:68ch;font-size:1.0625rem;line-height:1.7}.product-detail__tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.product-detail__features{gap:var(--space-20);flex-direction:column;display:flex}.feature-row{gap:var(--space-8);grid-template-columns:1fr;align-items:center;display:grid}@media (width>=1024px){.feature-row{gap:var(--space-16);grid-template-columns:minmax(0,340px) 1fr}.feature-row--reverse{grid-template-columns:1fr minmax(0,340px)}.feature-row--reverse .feature-row__frame{order:2}.feature-row--reverse .feature-row__text{order:1}}.feature-row__frame{justify-content:center;display:flex}.feature-row__frame .device-frame--phone{width:230px}.feature-row__frame .device-frame--watch{width:200px;height:200px}.feature-row__frame .device-frame__strap{width:80px;height:40px}.feature-row__frame .device-frame--desktop{width:min(420px,100%)}.feature-row__index{font-family:var(--font-mono);color:var(--color-accent);margin-bottom:var(--space-3);font-size:.8125rem;font-weight:600;display:block}.feature-row__title{font-family:var(--font-heading);margin:0 0 var(--space-4);color:var(--color-ink);text-wrap:balance;font-size:1.5rem;font-weight:600}.feature-row__desc{color:var(--color-ink-dim);max-width:52ch;margin:0;font-size:1rem;line-height:1.7}.product-detail__cta{margin-top:var(--space-24);padding-top:var(--space-12);border-top:1px solid var(--color-hairline);align-items:flex-start;gap:var(--space-5);flex-direction:column;display:flex}.product-detail__cta p{font-family:var(--font-heading);color:var(--color-ink);margin:0;font-size:1.25rem;font-weight:600}@media (width>=768px){.product-detail__cta{flex-direction:row;justify-content:space-between;align-items:center}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font:var(--text-body);color:var(--color-ink);background:var(--color-ground);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*,:before,:after{box-sizing:border-box}body{background:var(--color-ground);color:var(--color-ink);margin:0}h1,h2,h3,h4{font-family:var(--font-heading);color:var(--color-ink);margin:0}p{margin:0}a{color:inherit}img,svg{max-width:100%;display:block}code{font-family:var(--font-mono);font-size:.875em}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}
