.data-loader{background-color:var(--color-surface);flex-direction:column;min-height:100vh;display:flex}.loader-header{padding:var(--space-md) var(--space-margin);border-bottom:var(--border-width-thick) solid var(--color-outline);justify-content:space-between;align-items:center;display:flex}.loader-nav-row{gap:var(--space-md);display:flex}.loader-hero{justify-content:center;align-items:center;gap:var(--space-md);padding:var(--space-lg) var(--space-margin);flex-direction:column;flex:1;display:flex}.loader-hero h1{font-family:var(--font-headline);font-size:var(--text-display);line-height:var(--text-display-line);letter-spacing:var(--text-display-tracking);color:var(--color-on-surface)}.loader-hero p{font-family:var(--font-body);font-size:var(--text-body-md);color:var(--color-on-surface-variant)}.skeleton-retry{font-family:var(--font-headline);font-size:var(--text-label);text-transform:uppercase;padding:var(--space-sm) var(--space-md);background:var(--color-primary);color:var(--color-on-primary);border:var(--border-width-thick) solid var(--color-outline);box-shadow:var(--shadow-offset-sm) var(--shadow-offset-sm) 0 var(--shadow-color);cursor:pointer;font-weight:700}.loader-grid{gap:var(--space-md);padding:var(--space-md) var(--space-margin);padding-bottom:var(--space-lg);grid-template-columns:repeat(3,1fr);display:grid}.skeleton{background-color:var(--color-surface-container-high);border:var(--border-width-thick) solid var(--color-outline);box-shadow:var(--shadow-offset-sm) var(--shadow-offset-sm) 0 var(--shadow-color);animation:1.5s ease-in-out infinite skeleton-pulse}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}.skeleton-logo{width:160px;height:36px}.skeleton-nav-item{width:100px;height:20px}.skeleton-hero-title{width:600px;max-width:90%;height:96px}.skeleton-hero-text{width:400px;max-width:70%;height:24px}.skeleton-card{height:220px}@media (width<=932px){.loader-header{padding:var(--space-sm) var(--space-md)}.loader-nav-row{display:none}.skeleton-logo{width:120px;height:28px}.loader-hero{padding:var(--space-md)}.skeleton-hero-title{height:64px}.loader-grid{padding:var(--space-md);grid-template-columns:1fr}}.btn{justify-content:center;align-items:center;gap:var(--space-sm);border:var(--border-width-thick) solid var(--color-outline);font-family:var(--font-body);text-transform:uppercase;cursor:pointer;box-shadow:var(--shadow-offset-sm) var(--shadow-offset-sm) 0 0 var(--shadow-color);font-weight:700;transition:transform .1s,box-shadow .1s;display:inline-flex}.btn:hover{box-shadow:2px 2px 0 0 var(--shadow-color);transform:translate(2px,2px)}.btn:active{transform:translate(var(--shadow-offset-sm), var(--shadow-offset-sm));box-shadow:none}.btn--primary{background:var(--color-primary);color:var(--color-on-primary)}.btn--secondary{background:var(--color-secondary);color:var(--color-on-secondary)}.btn--outline{background:var(--color-surface);color:var(--color-on-surface)}.btn--sm{padding:calc(var(--space-unit) * 2) var(--space-sm);font-size:var(--text-label)}.btn--md{padding:var(--space-sm) var(--space-gutter);font-size:var(--text-body-md)}.btn--lg{padding:var(--space-md) var(--space-lg);font-size:var(--text-body-lg)}@media (width<=932px){.btn{text-align:center;width:100%}.btn--sm{padding:calc(var(--space-unit) * 2) var(--space-md)}.btn--md{padding:var(--space-sm) var(--space-md)}.btn--lg{padding:var(--space-md) var(--space-gutter)}}.icon{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-webkit-font-smoothing:antialiased;direction:ltr;font-family:Material Symbols Outlined;font-size:24px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.header{z-index:100;background:var(--color-surface);border-bottom:var(--border-width-thick) solid var(--color-outline);position:sticky;top:0}.header-inner{padding:var(--space-md) var(--space-margin);justify-content:space-between;align-items:center;display:flex}.header-logo{font-family:var(--font-headline);font-size:var(--text-headline-md);text-transform:uppercase;color:var(--color-on-surface);font-weight:700}.header-nav{align-items:center;gap:var(--space-gutter);display:flex}.header-nav-link{font-family:var(--font-body);font-size:var(--text-body-md);text-transform:uppercase;color:var(--color-on-surface);transition:color .15s}.header-nav-link:hover{color:var(--color-secondary)}.header-menu-btn{display:none}.header-actions{align-items:center;gap:var(--space-sm);display:flex}.header-actions .btn{justify-content:center;align-items:center;width:46px;height:46px;padding:0}.header-overlay{display:none}@media (width<=932px){.header-nav{display:none}.header-menu-btn{display:inline-flex}.header-overlay{z-index:200;padding:var(--space-lg);background:var(--color-surface);flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.header-overlay-close{top:var(--space-lg);right:var(--space-lg);border:var(--border-width-thick) solid var(--color-outline);font-family:var(--font-body);font-size:var(--text-headline-md);color:var(--color-on-surface);cursor:pointer;padding:var(--space-sm) var(--space-md);background:0 0;font-weight:700;line-height:1;transition:background-color .15s,color .15s;position:absolute}.header-overlay-close:hover{background:var(--color-primary);color:var(--color-on-primary)}.header-overlay-nav{align-items:center;gap:var(--space-gutter);flex-direction:column;display:flex}.header-overlay-link{font-family:var(--font-headline);font-size:var(--text-headline-md);text-transform:uppercase;color:var(--color-on-surface);font-weight:700;transition:color .15s}.header-overlay-link:hover{color:var(--color-secondary)}.header-inner{padding:var(--space-md) var(--space-gutter)}.header-logo{font-size:var(--text-headline-md)}}.marquee{background:var(--color-outline);color:var(--color-primary);border-top:var(--border-width-thick) solid var(--color-outline);border-bottom:var(--border-width-thick) solid var(--color-outline);overflow:hidden}.marquee-track{width:max-content;animation:30s linear infinite marquee-scroll;display:flex}.marquee-content{padding:var(--space-sm) 0;font-family:var(--font-headline);font-size:var(--text-headline-md);text-transform:uppercase;white-space:nowrap;padding-right:var(--space-lg);flex-shrink:0;font-weight:700}@keyframes marquee-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}@media (width<=932px){.marquee-content{font-size:var(--text-headline-md);padding:calc(var(--space-unit) * 2) 0}}.footer{border-top:var(--border-width-thick) solid var(--color-outline);background:var(--color-surface)}.footer-inner{padding:var(--space-lg) var(--space-margin);justify-content:space-between;display:flex}.footer-brand{gap:var(--space-sm);flex-direction:column;display:flex}.footer-logo{font-family:var(--font-headline);font-size:var(--text-headline-md);text-transform:uppercase;font-weight:700}.footer-copyright{font-size:var(--text-caption);color:var(--color-on-surface-variant)}.footer-links{gap:var(--space-lg);display:flex}.footer-col{gap:var(--space-sm);flex-direction:column;display:flex}.footer-col-title{font-family:var(--font-headline);font-size:var(--text-label);text-transform:uppercase;margin-bottom:var(--space-sm);font-weight:700}.footer-link{font-size:var(--text-body-md);color:var(--color-on-surface);transition:color .15s}.footer-link:hover{color:var(--color-secondary)}@media (width<=932px){.footer-inner{gap:var(--space-lg);padding:var(--space-lg) var(--space-gutter);flex-direction:column}.footer-links{gap:var(--space-md);flex-direction:column}}.layout-main{min-height:60vh}.hero{padding:var(--space-lg) var(--space-margin);border-bottom:var(--border-width-thick) solid var(--color-outline)}.hero-greeting{font-family:var(--font-body);font-size:var(--text-body-lg);color:var(--color-on-surface-variant);margin-bottom:var(--space-md)}.hero-title{font-size:var(--text-display);line-height:var(--text-display-line);letter-spacing:var(--text-display-tracking);max-width:12ch}.hero-tagline{font-size:var(--text-body-lg);line-height:var(--text-body-lg-line);color:var(--color-on-surface-variant);max-width:50ch;margin-top:var(--space-md)}@media (width<=932px){.hero{padding:var(--space-lg) var(--space-gutter)}.hero-title{letter-spacing:-.02em;font-size:40px;line-height:1.1}.hero-tagline{font-size:var(--text-body-md)}}.card{background:var(--color-surface-container-lowest);border:var(--border-width-thick) solid var(--color-outline);padding:var(--space-gutter)}.card--shadow-sm{box-shadow:var(--shadow-offset-sm) var(--shadow-offset-sm) 0 0 var(--shadow-color)}.card--shadow-md{box-shadow:var(--shadow-offset-md) var(--shadow-offset-md) 0 0 var(--shadow-color)}.card--shadow-lg{box-shadow:var(--shadow-offset-lg) var(--shadow-offset-lg) 0 0 var(--shadow-color)}@media (width<=932px){.card{padding:var(--space-md)}}.skills{padding:var(--space-lg) var(--space-margin);border-bottom:var(--border-width-thick) solid var(--color-outline)}.skills-heading{font-size:var(--text-headline-md);margin-bottom:var(--space-lg)}.skills-grid{gap:var(--space-gutter);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.skill-card{gap:var(--space-sm);flex-direction:column;display:flex}.skill-icon{margin-bottom:var(--space-sm);font-size:32px}.skill-name{font-family:var(--font-headline);font-size:var(--text-headline-md);line-height:var(--text-headline-md-line)}.skill-description{font-size:var(--text-body-md);line-height:var(--text-body-md-line);color:var(--color-on-surface-variant)}@media (width<=932px){.skills{padding:var(--space-lg) var(--space-gutter)}}.experience{padding:var(--space-lg) var(--space-margin);border-bottom:var(--border-width-thick) solid var(--color-outline)}.experience-heading{font-size:var(--text-headline-md);margin-bottom:var(--space-lg)}.experience-list{flex-direction:column;gap:0;display:flex}.experience-entry{padding:var(--space-md) 0;border-bottom:var(--border-width-thin) solid var(--color-outline)}.experience-entry:last-child{border-bottom:none}.experience-meta{align-items:baseline;gap:var(--space-sm);margin-bottom:var(--space-sm);font-family:var(--font-headline);font-size:var(--text-headline-md);line-height:var(--text-headline-md-line);display:flex}.experience-role{color:var(--color-on-surface)}.experience-divider{color:var(--color-outline)}.experience-company{color:var(--color-primary)}.experience-period{font-family:var(--font-body);font-size:var(--text-caption);color:var(--color-on-surface-variant);margin-left:auto}.experience-description{font-size:var(--text-body-md);line-height:var(--text-body-md-line);color:var(--color-on-surface-variant)}@media (width<=932px){.experience{padding:var(--space-lg) var(--space-gutter)}.experience-meta{flex-wrap:wrap}.experience-period{width:100%;margin-left:0}}.chip{border:var(--border-width-thin) solid var(--color-outline);padding:calc(var(--space-unit) * 1) var(--space-sm);font-family:var(--font-body);font-size:var(--text-caption);text-transform:uppercase;font-weight:700;display:inline-block}.chip--primary{background:var(--color-primary);color:var(--color-on-primary)}.chip--secondary{background:var(--color-secondary);color:var(--color-on-secondary)}.chip--tertiary{background:var(--color-tertiary);color:var(--color-on-tertiary)}@media (width<=932px){.chip{font-size:var(--text-caption);padding:calc(var(--space-unit) * 1) var(--space-sm)}}.projects{padding:var(--space-lg) var(--space-margin);border-bottom:var(--border-width-thick) solid var(--color-outline)}.projects-heading{font-size:var(--text-headline-md);margin-bottom:var(--space-sm)}.projects-filter{font-family:var(--font-body);font-size:var(--text-caption);color:var(--color-on-surface-variant);margin-bottom:var(--space-lg)}.projects-grid{gap:var(--space-gutter);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.project-card{gap:var(--space-md);flex-direction:column;display:flex}.project-card-header{gap:var(--space-sm);display:flex}.project-card-title{font-family:var(--font-headline);font-size:var(--text-headline-md);line-height:var(--text-headline-md-line)}.project-card-description{font-size:var(--text-body-md);line-height:var(--text-body-md-line);color:var(--color-on-surface-variant);flex:1}.project-card-actions{gap:var(--space-sm);flex-wrap:wrap;display:flex}@media (width<=932px){.projects{padding:var(--space-lg) var(--space-gutter)}}.input-wrapper{gap:var(--space-sm);flex-direction:column;display:flex}.input-label{font-family:var(--font-body);font-size:var(--text-label);text-transform:uppercase;color:var(--color-on-surface);font-weight:700}.input{border:var(--border-width-thick) solid var(--color-outline);box-shadow:var(--shadow-offset-sm) var(--shadow-offset-sm) 0 0 var(--shadow-color);padding:var(--space-sm) var(--space-md);font-family:var(--font-body);font-size:var(--text-body-md);background:var(--color-surface-container-lowest);color:var(--color-on-surface);outline:none}.input::placeholder{color:var(--color-on-surface-variant);opacity:.5}.input:focus{background:var(--color-primary-container)}.input-textarea{resize:vertical;min-height:80px}@media (width<=932px){.input{padding:var(--space-sm);font-size:var(--text-body-md)}}.contact{padding:var(--space-lg) var(--space-margin);border-bottom:var(--border-width-thick) solid var(--color-outline)}.contact-heading{font-size:var(--text-headline-md);margin-bottom:var(--space-md)}.contact-availability{font-size:var(--text-body-lg);line-height:var(--text-body-lg-line);color:var(--color-on-surface-variant);max-width:60ch;margin-bottom:var(--space-md)}.contact-info{gap:var(--space-gutter);margin-bottom:var(--space-lg);display:flex}.contact-detail{align-items:center;gap:var(--space-sm);font-family:var(--font-body);font-size:var(--text-body-md);color:var(--color-on-surface-variant);display:flex}.contact-form{gap:var(--space-md);flex-direction:column;max-width:480px;display:flex}.contact-success{text-align:center;padding:var(--space-lg) 0}.contact-success-icon{color:var(--color-primary);margin-bottom:var(--space-md);font-size:48px}.contact-success p{font-family:var(--font-body);font-size:var(--text-body-lg);color:var(--color-on-surface-variant)}.contact-error{font-family:var(--font-body);font-size:var(--text-caption);color:var(--color-error);text-transform:uppercase}@media (width<=932px){.contact{padding:var(--space-lg) var(--space-gutter)}.contact-info{gap:var(--space-sm);flex-direction:column}}.project-detail{max-width:960px;padding:var(--space-lg) var(--space-margin);margin:0 auto}.project-detail-back{align-items:center;gap:var(--space-sm);font-family:var(--font-body);font-size:var(--text-body-md);color:var(--color-on-surface);margin-bottom:var(--space-lg);text-transform:uppercase;display:inline-flex}.project-detail-back:hover{color:var(--color-secondary)}.project-detail-header{justify-content:space-between;align-items:flex-end;gap:var(--space-lg);margin-bottom:var(--space-lg);padding-bottom:var(--space-lg);border-bottom:var(--border-width-thick) solid var(--color-outline);display:flex}.project-detail-title{font-size:var(--text-headline-lg);line-height:var(--text-headline-lg-line);letter-spacing:var(--text-headline-lg-tracking)}.project-detail-featured{font-family:var(--font-body);font-size:var(--text-caption);color:var(--color-tertiary);margin-top:var(--space-sm)}.project-detail-meta{gap:var(--space-lg);margin-bottom:var(--space-lg);padding-bottom:var(--space-lg);border-bottom:var(--border-width-thin) solid var(--color-outline);display:flex}.project-meta-col{gap:var(--space-sm);flex-direction:column;display:flex}.meta-label{font-family:var(--font-body);font-size:var(--text-caption);text-transform:uppercase;color:var(--color-on-surface-variant);font-weight:700}.meta-value{font-family:var(--font-headline);font-size:var(--text-body-lg)}.meta-chips{gap:var(--space-sm);flex-wrap:wrap;display:flex}.project-detail-body{gap:var(--space-lg);flex-direction:column;display:flex}.project-detail-section{border:var(--border-width-thick) solid var(--color-outline);padding:var(--space-gutter);box-shadow:var(--shadow-offset-md) var(--shadow-offset-md) 0 0 var(--shadow-color);background:var(--color-surface-container-lowest)}.section-header{align-items:baseline;gap:var(--space-sm);margin-bottom:var(--space-md);display:flex}.section-number{font-family:var(--font-headline);font-size:var(--text-headline-lg);line-height:var(--text-headline-lg-line);color:var(--color-primary)}.section-title{font-size:var(--text-headline-md);line-height:var(--text-headline-md-line)}.section-text{font-size:var(--text-body-md);line-height:var(--text-body-md-line);color:var(--color-on-surface-variant);margin-bottom:var(--space-md)}.section-text:last-child{margin-bottom:0}.section-note{border-left:var(--border-width-thick) solid var(--color-primary);padding-left:var(--space-md);margin-top:var(--space-md);font-family:var(--font-headline);font-size:var(--text-body-lg);color:var(--color-on-surface);font-style:italic}.section-list{gap:var(--space-md);flex-direction:column;display:flex}.section-list-item{align-items:center;gap:var(--space-sm);font-size:var(--text-body-md);display:flex}.project-detail-live{margin-top:var(--space-md);align-self:flex-start}@media (width<=932px){.project-detail{padding:var(--space-lg) var(--space-gutter)}.project-detail-header{flex-direction:column;align-items:flex-start}.project-detail-meta{gap:var(--space-md);flex-direction:column}}:root{--color-primary:#cf0;--color-primary-container:#cf0;--color-on-primary:#1b1b1b;--color-on-primary-container:#5b7300;--color-primary-fixed:#c3f400;--color-primary-fixed-dim:#abd600;--color-secondary:#06f;--color-secondary-container:#0266ff;--color-on-secondary:#fff;--color-tertiary:#f0f;--color-tertiary-container:#ffe6f7;--color-on-tertiary:#fff;--color-surface:#f9f9f9;--color-surface-dim:#dadada;--color-surface-bright:#f9f9f9;--color-surface-container-lowest:#fff;--color-surface-container-low:#f3f3f3;--color-surface-container:#eee;--color-surface-container-high:#e8e8e8;--color-surface-container-highest:#e2e2e2;--color-on-surface:#1b1b1b;--color-on-surface-variant:#444933;--color-inverse-surface:#303030;--color-inverse-on-surface:#f1f1f1;--color-inverse-primary:#abd600;--color-outline:#000;--color-outline-variant:#c4c9ac;--color-error:#ba1a1a;--color-on-error:#fff;--color-error-container:#ffdad6;--color-on-error-container:#93000a;--border-width-thick:4px;--border-width-thin:2px;--radius:0px;--shadow-offset-sm:4px;--shadow-offset-md:8px;--shadow-offset-lg:12px;--shadow-color:#000;--font-headline:"Space Grotesk", sans-serif;--font-body:"JetBrains Mono", monospace;--text-display:96px;--text-display-line:1;--text-display-tracking:-.04em;--text-headline-lg:64px;--text-headline-lg-line:1.1;--text-headline-lg-tracking:-.02em;--text-headline-md:32px;--text-headline-md-line:1.2;--text-body-lg:18px;--text-body-lg-line:1.6;--text-body-md:16px;--text-body-md-line:1.6;--text-label:14px;--text-label-line:1;--text-caption:12px;--text-caption-line:1.4;--space-unit:4px;--space-sm:8px;--space-md:16px;--space-lg:48px;--space-gutter:24px;--space-margin:32px}[data-theme=dark]{--color-primary:#abd600;--color-primary-container:#3c4d00;--color-on-primary:#161e00;--color-on-primary-container:#cf0;--color-primary-fixed:#c3f400;--color-primary-fixed-dim:#abd600;--color-secondary:#b3c5ff;--color-secondary-container:#003fa4;--color-on-secondary:#001849;--color-tertiary:#ffabf3;--color-tertiary-container:#810081;--color-on-tertiary:#380038;--color-surface:#1b1b1b;--color-surface-dim:#303030;--color-surface-bright:#1b1b1b;--color-surface-container-lowest:#0d0d0d;--color-surface-container-low:#232323;--color-surface-container:#2d2d2d;--color-surface-container-high:#383838;--color-surface-container-highest:#434343;--color-on-surface:#f1f1f1;--color-on-surface-variant:#b7bba8;--color-inverse-surface:#e2e2e2;--color-inverse-on-surface:#303030;--color-inverse-primary:#506600;--color-outline:#fff;--color-outline-variant:#444933;--color-shadow:#000;--shadow-color:#000}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}img,picture,video,canvas,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit}button{cursor:pointer;background:0 0;border:none}a{color:inherit;text-decoration:none}ul,ol{list-style:none}html{scroll-behavior:smooth;font-size:100%}section[id]{scroll-margin-top:120px}body{font-family:var(--font-body);font-size:var(--text-body-md);line-height:var(--text-body-md-line);color:var(--color-on-surface);background-color:var(--color-surface);-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{font-family:var(--font-headline);text-transform:uppercase;font-weight:700}
