:root{--ink:#18221f;--muted:#5f6a65;--paper:#f4f1ea;--surface:#fffdf8;--surface-alt:#f0eee7;--line:#d9d8cf;--line-light:#d9d8cf99;--accent:#e85d3f;--accent-dark:#b8402b;--accent-soft:#e85d3f1a;--accent-light:#f18b75;--accent-dark-soft:#b8402b1a;--sage:#dbe4d7;--sage-dark:#3a533c;--night:#05070e;--night-edge:#0b1120;--night-deep:#03040a;--on-ink-muted:#b7c0ba;--on-ink-line:#f4f1ea2e;--on-ink-line-strong:#f4f1ea66;--on-ink-soft:#f4f1ea1a;--code-bg:var(--ink);--code-ink:var(--paper);--code-line:#f4f1ea29;--serif:"Space Grotesk", -apple-system, BlinkMacSystemFont, sans-serif;--sans:"Manrope", -apple-system, BlinkMacSystemFont, sans-serif;--mono:"DM Mono", monospace;--shell-width:1320px;--radius-sm:4px;--radius-md:8px;--radius-pill:999px;--track-display:-.03em;--track-label:.08em;--track-micro:.14em;--text-micro:.62rem;--text-label:.72rem;--text-sm:.8rem;--text-body-sm:.9rem;--text-body:1rem;--text-lead:1.15rem;--text-subtitle:1.4rem;--text-title:1.7rem;--text-headline:2rem;--text-display:2.4rem;--text-hero:clamp(3.2rem, 15vw, 5.2rem);--text-page-title:clamp(2.4rem, 6vw, 5rem);--text-block-title:clamp(2.2rem, 4vw, 4rem);--text-section:clamp(1.6rem, 3.5vw, 2.6rem);--text-subsection:clamp(1.2rem, 2.2vw, 1.6rem);--space-4:.25rem;--space-8:.5rem;--space-12:.75rem;--space-16:1rem;--space-20:1.25rem;--space-24:1.5rem;--space-32:2rem;--space-40:2.5rem;--space-48:3rem;--space-64:4rem;--space-96:6rem;--shadow-rest:0 4px 18px #18221f08;--shadow-raised:0 8px 24px #18221f14;--shadow-lift:0 12px 28px #18221f14;--shadow-focus:0 0 0 3px var(--accent-soft);--shadow-focus-error:0 0 0 3px var(--accent-dark-soft);--paper-veil:#f4f1eaf5;--night-veil:#03040ae6;--night-grid:#f4f1ea0b;--line-strong:#c4c3b9}*{box-sizing:border-box;margin:0;padding:0}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;position:absolute;overflow:hidden}html{scroll-behavior:smooth;overflow-x:clip}body{background:var(--paper);color:var(--ink);font-family:var(--sans);min-height:100vh;margin:0;position:relative;overflow-x:clip}h1,h2,h3,h4,h5,p{margin-top:0}h1,h2,h3,h4{font-family:var(--serif);letter-spacing:-.03em;color:var(--ink);text-wrap:balance}p{color:var(--muted);text-wrap:pretty;line-height:1.7}h1{font-size:var(--text-page-title);font-weight:700;line-height:1.02}h2{font-size:var(--text-section);line-height:1.15}h3{font-size:var(--text-subsection)}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}::selection{background:var(--accent);color:var(--ink)}body,input,textarea,[contenteditable]{caret-color:var(--accent-dark)}::placeholder{color:var(--muted);opacity:1}html{scrollbar-color:var(--line-strong) var(--paper);scrollbar-width:thin}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--paper)}::-webkit-scrollbar-thumb{background:var(--line-strong);border:2px solid var(--paper);border-radius:var(--radius-pill)}::-webkit-scrollbar-thumb:hover{background:var(--muted)}a{text-underline-offset:.18em;text-decoration-thickness:1px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.App{min-height:100vh;position:relative}.site-nav{background:var(--paper-veil);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);max-width:var(--shell-width);padding:var(--space-20) var(--space-48);z-index:1000;justify-content:space-between;align-items:center;margin:0 auto;display:flex;position:sticky;top:0}.brand-mark{color:var(--ink);font-size:var(--text-lead);align-items:center;gap:var(--space-8);padding:0;font-weight:800;text-decoration:none;display:flex}.brand-mark__dot{background:var(--accent);border-radius:50%;width:10px;height:10px;display:inline-block}.brand-mark__suffix{color:var(--muted);font-family:var(--mono);font-size:var(--text-label);margin-left:var(--space-4);font-weight:400}.nav-links{align-items:center;gap:var(--space-32);display:flex}.nav-links a{color:var(--ink);font-family:var(--sans);font-size:var(--text-body-sm);padding:var(--space-8) 0;align-items:center;font-weight:700;text-decoration:none;transition:color .22s cubic-bezier(.22,1,.36,1);display:inline-flex;position:relative}.nav-links a:not(.nav-contact):after{background:var(--accent);border-radius:var(--radius-sm);content:"";transform-origin:100%;height:2px;transition:transform .3s cubic-bezier(.22,1,.36,1);position:absolute;bottom:.12rem;left:0;right:0;transform:scaleX(0)}.nav-links a:not(.nav-contact):hover,.nav-links a:not(.nav-contact):focus-visible,.nav-links a:not(.nav-contact).nav-link--active{color:var(--accent-dark)}.nav-links a:not(.nav-contact):hover:after,.nav-links a:not(.nav-contact):focus-visible:after,.nav-links a:not(.nav-contact).nav-link--active:after{transform-origin:0;transform:scaleX(1)}.nav-contact{border:1px solid var(--line);border-radius:var(--radius-pill);padding:var(--space-8) var(--space-16);transition:background-color .22s cubic-bezier(.22,1,.36,1),border-color .22s cubic-bezier(.22,1,.36,1),color .22s cubic-bezier(.22,1,.36,1)}.nav-contact:hover,.nav-contact:focus-visible,.nav-contact.nav-link--active{background:var(--accent-dark);border-color:var(--accent-dark);color:var(--paper)}.nav-contact span{color:var(--accent);font-size:var(--text-body);margin-left:var(--space-4);transition:color .22s cubic-bezier(.22,1,.36,1)}.nav-contact:hover span,.nav-contact:focus-visible span,.nav-contact.nav-link--active span{color:var(--paper)}.brand-mark:focus-visible,.nav-links a:focus-visible,.nav-toggle:focus-visible{outline:2px solid var(--accent-dark);outline-offset:3px}.nav-links .nav-contact:focus-visible{outline-offset:1px}@media (prefers-reduced-motion:reduce){.nav-links a,.nav-links a:not(.nav-contact):after,.nav-contact,.nav-contact span{transition:none}}.nav-toggle{cursor:pointer;z-index:1010;background:0 0;border:none;flex-direction:column;justify-content:space-around;width:36px;height:32px;padding:6px;display:none}.nav-toggle__bar{background-color:var(--ink);border-radius:var(--radius-sm);width:100%;height:2.5px;transition:transform .25s,opacity .25s;display:block}.nav-toggle.is-open .nav-toggle__bar:first-child{transform:translateY(7px)rotate(45deg)}.nav-toggle.is-open .nav-toggle__bar:nth-child(2){opacity:0}.nav-toggle.is-open .nav-toggle__bar:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.home-shell{max-width:var(--shell-width);padding:0 var(--space-48) var(--space-64);margin:0 auto}.home-hero{min-height:680px;padding:var(--space-96) 0 var(--space-96);grid-template-columns:minmax(0,1.15fr) minmax(270px,.85fr);align-items:center;gap:8vw;display:grid}.hero-copy{max-width:730px}:is(.section-title,.about-hero,.projects-hero,.contact-hero,.assistant-hero,.audit-hero,.signal-grid h2):after{background-image: repeating-linear-gradient(90deg, var(--line-strong) 0 1px, transparent 1px calc(var(--space-16) * 5)),  repeating-linear-gradient(90deg, var(--line) 0 1px, transparent 1px var(--space-16)),  linear-gradient(var(--line-strong), var(--line-strong));background-position:0 100%;background-repeat:no-repeat;background-size:100% var(--space-12), 100% var(--space-4), 100% 1px;content:"";height:var(--space-12);margin-top:var(--space-24);width:100%;display:block}.section-title{align-items:center;gap:var(--space-24);display:flex}.section-title>span{flex:none}.section-title:after{min-width:var(--space-32);flex:1 1 0;width:auto;margin-top:0}.section-header-inline>.section-title{flex:auto}.hero-copy h1{margin:var(--space-24) 0 var(--space-32);max-width:750px}.hero-copy h1 em{color:var(--accent);font-style:normal}.hero-intro{font-size:var(--text-lead);max-width:530px}.hero-actions{align-items:center;gap:var(--space-32);margin-top:var(--space-40);flex-wrap:wrap;display:flex}.button{align-items:center;gap:var(--space-16);padding:var(--space-16) var(--space-20);border-radius:var(--radius-sm);cursor:pointer;border:none;text-decoration:none;display:inline-flex}.button--accent{background:var(--accent-dark);color:var(--paper);font-size:var(--text-sm);font-weight:800;transition:background-color .22s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1)}.button--accent:hover{background:var(--ink);color:var(--paper);transform:translateY(-3px)}.text-link{border-bottom:1px solid var(--ink);color:var(--ink);font-size:var(--text-sm);align-items:center;gap:var(--space-8);padding-bottom:var(--space-4);font-weight:800;text-decoration:none;transition:color .22s cubic-bezier(.22,1,.36,1),border-color .22s cubic-bezier(.22,1,.36,1);display:inline-flex}.text-link span{color:var(--accent-dark);transition:transform .25s cubic-bezier(.22,1,.36,1),color .22s cubic-bezier(.22,1,.36,1)}.text-link:hover,.text-link:focus-visible{border-color:var(--accent-dark);color:var(--accent-dark)}.text-link:hover span,.text-link:focus-visible span{transform:translate(4px)}.text-link:focus-visible{outline:2px solid var(--accent-dark);outline-offset:4px}@media (prefers-reduced-motion:reduce){.text-link,.text-link span,.button--accent{transition:none}}.hero-portrait-wrap{position:relative}.scene-3d{pointer-events:none;z-index:0;position:absolute}.scene-3d--hero{inset:-20%}.scene-3d--showcase{inset:0}.scene-3d canvas{display:block}.scene-3d--showcase{cursor:grab;pointer-events:auto;touch-action:pan-y}.scene-3d--showcase *{cursor:inherit;touch-action:pan-y}.scene-3d--showcase canvas.is-dragging{cursor:grabbing}.scene-3d__canvas{width:100%;height:100%;animation:.9s cubic-bezier(.22,1,.36,1) both sceneFadeIn}.scene-3d__placeholder{background:radial-gradient(circle at 50% 50%, var(--accent-soft), transparent 62%);width:100%;height:100%;display:block}@keyframes sceneFadeIn{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.scene-3d__canvas{animation:none}}.portrait-frame{background:var(--sage);max-width:370px;padding:var(--space-20) var(--space-20) 4.8rem;margin:0 auto;position:relative;transform:rotate(3deg)}.portrait-image{aspect-ratio:.82;filter:saturate(.8);object-fit:cover;width:100%;display:block}.portrait-stamp{background:var(--accent);color:var(--paper);font-family:var(--mono);font-size:var(--text-body);border-radius:50%;justify-content:center;align-items:center;width:60px;height:60px;display:flex;position:absolute;bottom:1.5rem;right:1.7rem;transform:rotate(-8deg)}.portrait-note{background:var(--ink);color:var(--paper);font-family:var(--mono);font-size:var(--text-micro);padding:var(--space-12) var(--space-16);z-index:2;line-height:1.6;position:absolute;top:8%;left:-3.5rem;transform:rotate(-5deg)}.portrait-caption{font-family:var(--mono);font-size:var(--text-micro);margin:var(--space-24) 0 0 var(--space-32);text-transform:uppercase;line-height:1.7}.portrait-caption span{color:var(--accent-dark)}.home-signal{border-top:1px solid var(--line);padding:var(--space-64) 0 var(--space-96)}.signal-grid{gap:var(--space-48);grid-template-columns:repeat(3,1fr);display:grid}.signal-grid article{border-top:2px solid var(--ink);padding-top:var(--space-16)}.signal-grid h2{font-size:var(--text-subtitle);margin:0 0 var(--space-16)}.signal-grid p{font-size:var(--text-body-sm);max-width:280px}.home-feature{background:var(--ink);color:var(--paper);align-items:center;gap:var(--space-64);padding:var(--space-48);grid-template-columns:1.2fr .8fr;display:grid}.feature-image{height:330px;overflow:hidden}.feature-image img{object-fit:cover;width:100%;height:100%;transition:transform .6s}.home-feature:hover .feature-image img{transform:scale(1.04)}.feature-copy h2{color:var(--paper);font-size:var(--text-block-title);margin:var(--space-20) 0}.feature-copy p{color:var(--on-ink-muted)}.feature-status{border-top:1px solid var(--on-ink-line-strong);font-family:var(--mono);font-size:var(--text-label);letter-spacing:var(--track-label);margin-top:var(--space-20);padding-top:var(--space-12);text-transform:uppercase;color:var(--accent-light)!important}.feature-copy .text-link{border-color:var(--on-ink-line-strong);color:var(--paper);margin-top:var(--space-20);display:inline-flex}.feature-copy .text-link span{color:var(--accent-light)}.feature-copy .text-link:hover,.feature-copy .text-link:focus-visible{border-color:var(--paper);color:var(--paper)}.feature-copy .text-link:hover span,.feature-copy .text-link:focus-visible span{color:var(--paper)}.home-bottom-line{border-bottom:1px solid var(--line);padding:var(--space-48) 0 var(--space-16);justify-content:space-between;align-items:center;display:flex}.home-bottom-line p{font-family:var(--serif);font-size:var(--text-title)}.home-bottom-line a{color:var(--accent-dark);font-weight:800;text-decoration:none}.home-3d{background:radial-gradient(120% 82% at 50% 44%, var(--night-edge) 0%, var(--night) 56%, var(--night-deep) 100%);isolation:isolate;margin-block:var(--space-96) var(--space-96);min-height:780px;padding:var(--space-96) 0 var(--space-96);margin-inline:calc(50% - 50vw);position:relative}.home-3d:before{background:inherit;content:"";z-index:0;position:absolute;inset:-3rem 0}.home-3d__inner{max-width:var(--shell-width);padding-inline:var(--space-48);z-index:2;pointer-events:none;width:100%;margin-inline:auto;position:relative}.home-3d__head{pointer-events:auto;max-width:560px}.home-3d__head h2{color:var(--paper);font-size:var(--text-section);margin:0 0 var(--space-16)}.home-3d__meta{color:var(--accent-light);font-family:var(--mono);font-size:var(--text-micro);letter-spacing:var(--track-micro);margin-top:var(--space-24);text-transform:uppercase}.home-3d__head h2,.home-3d__meta{text-shadow:0 1px 16px var(--night-veil), 0 0 5px var(--night-veil)}.home-3d__stage{z-index:1;position:absolute;inset:-3rem 0}.home-3d:after{background-image:linear-gradient(var(--night-grid) 1px, transparent 1px), linear-gradient(90deg, var(--night-grid) 1px, transparent 1px);background-size:var(--space-32) var(--space-32);content:"";pointer-events:none;z-index:0;position:absolute;inset:-3rem 0;-webkit-mask-image:linear-gradient(#000 0%,#00000073 52%,#0000 92%);mask-image:linear-gradient(#000 0%,#00000073 52%,#0000 92%)}.site-footer{background:var(--ink);color:var(--paper);padding:var(--space-64) max(var(--space-48), calc((100% - var(--shell-width)) / 2 + var(--space-48))) var(--space-32);margin-top:0}.site-footer h3,.site-footer h4{color:var(--paper)}.site-footer p,.site-footer a{color:var(--on-ink-muted)}.site-footer a:hover{color:var(--paper);text-shadow:none}.site-footer .footer-content{max-width:none;margin:0}.site-footer .footer-main{border-bottom:1px solid var(--on-ink-line);gap:var(--space-48);padding-bottom:var(--space-48);grid-template-columns:2fr 1fr 1fr;display:grid}.site-footer .footer-brand h3{font-size:var(--text-headline)}.site-footer .footer-links ul{padding:0;list-style:none}.site-footer .footer-links li{margin:var(--space-8) 0}.site-footer .footer-links a,.site-footer .social-link{font-size:var(--text-sm);text-decoration:none}.site-footer .footer-bottom{padding-top:var(--space-24)}.site-footer .footer-divider,.site-footer .footer-glow{display:none}.site-footer .footer-bottom-content{justify-content:space-between;align-items:center;display:flex}.site-footer .footer-bottom-content p{font-family:var(--mono);font-size:var(--text-micro);margin:0}@media (width<=768px){.site-nav{padding:var(--space-16) var(--space-20)}.nav-toggle{display:flex}.nav-links{background:var(--paper-veil);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--line);padding:var(--space-24) var(--space-32) var(--space-32);align-items:flex-start;gap:var(--space-24);box-shadow:var(--shadow-raised);flex-direction:column;display:none;position:absolute;top:100%;left:0;right:0}.nav-links.nav-links--open{animation:.2s ease-out navSlideDown;display:flex}@keyframes navSlideDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.nav-links a{font-size:var(--text-lead);padding:var(--space-8) 0}.nav-links .nav-contact{margin-top:var(--space-8);padding:var(--space-8) var(--space-16)}.home-shell{padding:0 var(--space-20) var(--space-48)}.home-hero{gap:var(--space-48);min-height:auto;padding:var(--space-64) 0 var(--space-64);flex-direction:column;display:flex}.hero-copy h1{font-size:var(--text-hero)}.hero-portrait-wrap{margin:0 var(--space-16);align-self:stretch}.scene-3d--hero{inset:-12% -6%}.portrait-note{left:-.5rem}.home-3d{margin-block:var(--space-64) var(--space-64);min-height:560px;padding:var(--space-64) 0 var(--space-64)}.home-3d__inner{padding-inline:var(--space-20)}.signal-grid,.home-feature{grid-template-columns:1fr}.home-feature{gap:var(--space-32);padding:var(--space-20)}.feature-image{height:240px}.site-footer{padding:var(--space-48) var(--space-20) var(--space-24)}.site-footer .footer-main{grid-template-columns:1fr 1fr}.site-footer .footer-brand{grid-column:span 2}}.page-container{max-width:var(--shell-width);padding:var(--space-48) var(--space-48) var(--space-64);box-shadow:none;background:0 0;border:none;margin:0 auto}@media (width<=768px){.page-container{padding:var(--space-32) var(--space-20) var(--space-64)}}.about-hero,.projects-hero,.contact-hero,.assistant-hero,.audit-hero{margin-bottom:var(--space-48);max-width:800px}.about-hero h1,.projects-hero h1,.contact-hero h1,.assistant-hero h1,.audit-hero h1{margin:var(--space-12) 0 var(--space-20);color:var(--ink);font-family:var(--serif)}.about-subtitle,.projects-subtitle,.contact-subtitle{font-size:var(--text-lead);color:var(--muted);line-height:1.6}.availability-note{border-left:2px solid var(--accent);align-items:center;gap:var(--space-20);margin-top:var(--space-32);padding:var(--space-4) 0 var(--space-4) var(--space-24);flex-wrap:wrap;justify-content:space-between;max-width:720px;display:flex}.availability-note__text{color:var(--muted);font-size:var(--text-body);flex:380px;margin:0;line-height:1.6}.availability-note__text strong{color:var(--ink);font-size:var(--text-lead);margin-bottom:var(--space-4);font-weight:700;display:block}.availability-note .button{padding:var(--space-12) var(--space-24);flex-shrink:0}.section-title{font-size:var(--text-title);margin-bottom:var(--space-24);font-family:var(--serif);color:var(--ink);letter-spacing:var(--track-display)}.about-section{margin-bottom:var(--space-64);padding-bottom:var(--space-48);border-bottom:1px solid var(--line)}.experience-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-32);box-shadow:var(--shadow-rest)}.experience-header{margin-bottom:var(--space-32);justify-content:space-between;align-items:flex-start;gap:var(--space-16);flex-wrap:wrap;display:flex}.experience-header h3{font-size:var(--text-subtitle);margin-bottom:var(--space-4);color:var(--ink);font-weight:700}.experience-company{color:var(--accent-dark);font-size:var(--text-body);font-weight:600}.experience-duration{font-family:var(--mono);font-size:var(--text-sm);padding:var(--space-4) var(--space-12);background:var(--sage);color:var(--sage-dark);border-radius:var(--radius-pill);font-weight:600}.experience-tasks{gap:var(--space-32);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid}.task-category h5{font-size:var(--text-body);font-family:var(--sans);color:var(--ink);margin-bottom:var(--space-12);font-weight:700}.task-category ul{padding:0;list-style:none}.task-category li{font-size:var(--text-body-sm);color:var(--muted);padding-left:var(--space-20);margin-bottom:var(--space-8);line-height:1.6;position:relative}.task-category li:before{content:"▪";color:var(--accent);position:absolute;left:0}.skills-categories{gap:var(--space-32);grid-template-columns:repeat(auto-fit,minmax(250px,1fr));display:grid}.skill-category{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-24)}.skill-category h4{font-size:var(--text-body);color:var(--ink);margin-bottom:var(--space-20);font-family:var(--sans);font-weight:700}.skill-badges{gap:var(--space-8);flex-wrap:wrap;display:flex}.skill-badge{font-size:var(--text-sm);font-family:var(--mono);padding:var(--space-4) var(--space-12);border-radius:var(--radius-sm);background:var(--surface-alt);color:var(--ink);border:1px solid var(--line);display:inline-block}.skill-badge.expert{border-color:var(--accent);color:var(--accent-dark);background:var(--accent-soft);font-weight:600}.skill-badge.advanced{border-color:var(--sage-dark);color:var(--sage-dark);background:var(--sage)}.skill-badge.intermediate{border-color:var(--line);color:var(--muted);background:var(--surface-alt)}.info-grid{gap:var(--space-24);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.info-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-24)}.info-item h4{font-size:var(--text-body);margin-bottom:var(--space-8);color:var(--ink)}.info-level{font-size:var(--text-body-sm);color:var(--muted)}.about-cta{text-align:center;padding:var(--space-48) var(--space-32);background:var(--ink);color:var(--paper);border-radius:var(--radius-md);margin-top:var(--space-32)}.about-cta h3{color:var(--paper);font-size:var(--text-headline);margin-bottom:var(--space-12)}.about-cta p{color:var(--on-ink-muted);font-size:var(--text-lead);margin-bottom:var(--space-32)}.cta-buttons{justify-content:center;gap:var(--space-20);flex-wrap:wrap;display:flex}.cta-button{padding:var(--space-16) var(--space-24);border-radius:var(--radius-sm);font-size:var(--text-body-sm);font-weight:700;text-decoration:none;transition:background-color .2s,border-color .2s,transform .2s;display:inline-block}.cta-button.primary{background:var(--accent-dark);color:var(--paper)}.cta-button.primary:hover{background:var(--ink);transform:translateY(-2px)}.cta-button.secondary{color:var(--paper);border:1px solid var(--on-ink-line-strong);background:0 0}.cta-button.secondary:hover{border-color:var(--paper);background:var(--on-ink-soft)}.interactive-game-section{margin-bottom:var(--space-64);padding-bottom:var(--space-48);border-bottom:1px solid var(--line)}.projects-grid+.interactive-game-section{border-top:1px solid var(--line);margin-top:var(--space-64);padding-top:var(--space-48)}.section-header-inline{margin-bottom:var(--space-24);justify-content:space-between;align-items:center;gap:var(--space-16);flex-wrap:wrap;display:flex}.badge-pill{font-family:var(--mono);font-size:var(--text-label);padding:var(--space-4) var(--space-12);background:var(--sage);color:var(--sage-dark);border-radius:var(--radius-pill);font-weight:600}.unity-iframe-wrapper{background:var(--night-deep);border:1px solid var(--line);border-radius:var(--radius-md);margin:var(--space-24) 0;box-shadow:var(--shadow-raised);overflow:hidden}.unity-iframe{border:none;width:100%;height:520px;display:block}@media (width<=768px){.unity-iframe{height:340px}}.project-card__media{background:var(--surface-alt);border:1px solid var(--line-light);border-radius:var(--radius-md);margin-bottom:var(--space-24);overflow:hidden}.project-card__media img{object-fit:cover;width:100%;height:100%;transition:transform .5s cubic-bezier(.22,1,.36,1);display:block}.project-card:hover .project-card__media img{transform:scale(1.03)}@media (prefers-reduced-motion:reduce){.project-card__media img,.project-card:hover .project-card__media img{transition:none;transform:none}}.scene-embed__intro{font-size:var(--text-body);margin-bottom:var(--space-24);max-width:780px}.scene-embed{aspect-ratio:3/2;background:var(--night-edge);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-raised);margin:var(--space-24) 0;min-height:380px;overflow:hidden}.scene-embed__frame{border:none;width:100%;height:100%;display:block}@media (width<=768px){.scene-embed{aspect-ratio:1;min-height:0}}.iframe-actions{padding:var(--space-12) var(--space-24);background:var(--surface);border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:var(--space-12);flex-wrap:wrap;display:flex}.button-link-subtle{color:var(--ink);cursor:pointer;font-family:inherit;font-size:var(--text-body-sm);background:0 0;border:0;padding:0;font-weight:700;text-decoration:none;transition:color .2s}.button-link-subtle:hover{color:var(--accent)}.button-link-subtle:disabled{color:var(--muted);cursor:default}.projects-filter-bar{margin-bottom:var(--space-40);justify-content:space-between;align-items:center;gap:var(--space-20);flex-wrap:wrap;display:flex}.filter-buttons{gap:var(--space-8);flex-wrap:wrap;display:flex}.filter-btn{background:var(--surface);border:1px solid var(--line);padding:var(--space-8) var(--space-20);border-radius:var(--radius-pill);font-size:var(--text-sm);color:var(--ink);cursor:pointer;font-weight:600;transition:background-color .2s,border-color .2s,color .2s}.filter-btn:hover{border-color:var(--accent);color:var(--accent)}.filter-btn--active{background:var(--accent);border-color:var(--accent);color:var(--paper)}.projects-count{font-family:var(--mono);font-size:var(--text-sm);color:var(--muted)}.projects-grid{gap:var(--space-32);grid-template-columns:repeat(auto-fill,minmax(min(340px,100%),1fr));display:grid}@media (width<=480px){.projects-grid{grid-template-columns:minmax(0,1fr)}}.project-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-32);flex-direction:column;justify-content:space-between;transition:transform .25s,box-shadow .25s,border-color .25s;display:flex}.project-card:hover{box-shadow:var(--shadow-lift);border-color:var(--line-strong);transform:translateY(-4px)}.webgl-card{margin-bottom:var(--space-40)}.project-card__header{margin-bottom:var(--space-20);justify-content:space-between;align-items:flex-start;gap:var(--space-16);display:flex}.project-category-tag{font-family:var(--mono);font-size:var(--text-label);color:var(--accent-dark);text-transform:uppercase;letter-spacing:var(--track-label);margin-bottom:var(--space-8);display:block}.project-card__title{font-size:var(--text-subtitle);color:var(--ink);font-weight:700;line-height:1.25}.project-status-badge{font-family:var(--mono);font-size:var(--text-label);padding:var(--space-4) var(--space-12);border-radius:var(--radius-sm);white-space:nowrap;font-weight:600}.project-status-badge.is-completed{background:var(--sage);color:var(--sage-dark)}.project-status-badge.is-progress{background:var(--accent-soft);color:var(--accent-dark)}.project-status-badge.is-playable,.project-status-badge.is-online{background:var(--ink);color:var(--paper)}.project-card__desc{font-size:var(--text-body);color:var(--muted);margin-bottom:var(--space-32);flex-grow:1;line-height:1.65}.tech-tags-list{gap:var(--space-8);margin-bottom:var(--space-32);flex-wrap:wrap;display:flex}.tech-tag{font-family:var(--mono);font-size:var(--text-label);padding:var(--space-4) var(--space-8);background:var(--surface-alt);color:var(--ink);border-radius:var(--radius-sm)}.project-card__footer{justify-content:space-between;align-items:center;gap:var(--space-16);padding-top:var(--space-20);border-top:1px solid var(--line-light);flex-wrap:wrap;display:flex}.project-btn{padding:var(--space-12) var(--space-20);font-size:var(--text-sm)}.contact-layout{gap:var(--space-48);grid-template-columns:1.3fr .9fr;align-items:flex-start;display:grid}@media (width<=860px){.contact-layout{gap:var(--space-40);grid-template-columns:1fr}}.contact-form-card,.contact-info-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-40);box-shadow:var(--shadow-rest)}@media (width<=480px){.contact-form-card,.contact-info-card{padding:var(--space-24)}}.modern-form{gap:var(--space-24);flex-direction:column;display:flex}.form-group{gap:var(--space-8);flex-direction:column;display:flex}.form-label{font-size:var(--text-sm);color:var(--ink);text-transform:uppercase;letter-spacing:var(--track-label);font-weight:700;font-family:var(--sans)}.form-input,.form-textarea{width:100%;padding:var(--space-16) var(--space-16);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);font-family:var(--sans);font-size:var(--text-body);color:var(--ink);transition:border-color .2s,box-shadow .2s}.form-input:focus,.form-textarea:focus{border-color:var(--accent);box-shadow:var(--shadow-focus);background:var(--surface);outline:none}.form-honeypot{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.form-input--invalid,.form-textarea.form-input--invalid{border-color:var(--accent-dark)}.form-input--invalid:focus,.form-textarea.form-input--invalid:focus{border-color:var(--accent-dark);box-shadow:var(--shadow-focus-error)}.form-error{font-size:var(--text-sm);color:var(--accent-dark);line-height:1.5}.instrument-panel{border-bottom:1px solid var(--line-strong);border-top:1px solid var(--line-strong);padding:var(--space-24) 0}.chat-log{gap:var(--space-16);min-height:260px;max-height:62vh;padding-right:var(--space-4);scrollbar-width:thin;flex-direction:column;display:flex;overflow-y:auto}.chat-message{align-self:flex-start;max-width:100%;animation:.32s cubic-bezier(.22,1,.36,1) both chatAppear}.chat-message--user{align-self:flex-end}@keyframes chatAppear{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.chat-message__author{color:var(--muted);font-family:var(--mono);font-size:var(--text-micro);letter-spacing:var(--track-micro);margin-bottom:var(--space-4);text-transform:uppercase;display:block}.chat-message--user .chat-message__author{color:var(--accent-dark);text-align:right}.chat-message__body{background:var(--surface-alt);border:1px solid var(--line);border-radius:var(--radius-md);color:var(--ink);font-size:var(--text-body-sm);padding:var(--space-12) var(--space-16);line-height:1.65}.chat-message--user .chat-message__body{background:var(--accent-soft);border-color:var(--accent);white-space:pre-wrap}.chat-message__body>*+*{margin-top:var(--space-12)}.chat-message__body p{overflow-wrap:anywhere;margin:0}.chat-message__body h4,.chat-message__body h5{color:var(--ink);font-family:var(--sans);margin:0;font-weight:800;line-height:1.35}.chat-message__body h4{font-size:var(--text-body)}.chat-message__body h5{font-size:var(--text-body-sm)}.chat-message__body ul,.chat-message__body ol{padding-left:var(--space-20);margin:0}.chat-message__body li{margin-top:var(--space-4)}.chat-message__body li:first-child{margin-top:0}.chat-message__body li::marker{color:var(--accent-dark);font-weight:700}.chat-message__body strong{color:var(--ink);font-weight:800}.chat-message__body a{color:var(--accent-dark);overflow-wrap:anywhere;text-underline-offset:2px;font-weight:600;text-decoration:underline}.chat-message__body a:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}.chat-message__body .md-code{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);font-family:var(--mono);padding:.1em .35em;font-size:.85em}.chat-message__body .md-code-block{background:var(--code-bg);border-radius:var(--radius-md);overflow:hidden}.chat-message__body .md-code-block__bar{border-bottom:1px solid var(--code-line);align-items:center;gap:var(--space-12);padding:var(--space-4) var(--space-8) var(--space-4) var(--space-12);justify-content:space-between;display:flex}.chat-message__body .md-code-block__lang{color:var(--accent);font-family:var(--mono);font-size:var(--text-micro);letter-spacing:var(--track-micro);text-transform:uppercase}.chat-message__body .md-code-block__copy{border:1px solid var(--code-line);border-radius:var(--radius-sm);color:var(--code-ink);cursor:pointer;font-family:var(--mono);font-size:var(--text-micro);letter-spacing:var(--track-micro);padding:var(--space-4) var(--space-8);text-transform:uppercase;background:0 0;transition:background-color .2s}.chat-message__body .md-code-block__copy:hover{background:var(--code-line)}.chat-message__body .md-code-block__copy:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.chat-message__body .md-code-block__pre{color:var(--code-ink);font-family:var(--mono);font-size:var(--text-sm);padding:var(--space-12);tab-size:2;white-space:pre;margin:0;line-height:1.6;overflow-x:auto}.chat-message__body--pending{align-items:center;gap:var(--space-8);display:flex}.chat-sources{border-top:1px solid var(--line);margin-top:var(--space-12);padding-top:var(--space-12)}.chat-sources__label{color:var(--muted);font-family:var(--mono);font-size:var(--text-micro);letter-spacing:var(--track-micro);margin-bottom:var(--space-8);text-transform:uppercase}.chat-sources ul{gap:var(--space-4);flex-direction:column;padding:0;list-style:none;display:flex}.chat-sources a{color:var(--accent-dark);font-size:var(--text-sm);line-height:1.5;text-decoration:none}.chat-sources a:hover{text-decoration:underline}.chat-sources a:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}.chat-sources__index{color:var(--muted);font-family:var(--mono);margin-right:var(--space-4)}.chat-sources__empty{color:var(--muted);font-size:var(--text-label);margin-top:var(--space-8);font-style:italic}.chat-search-mode{align-items:center;gap:var(--space-8) var(--space-16);margin:0 0 var(--space-8);border:none;flex-wrap:wrap;padding:0;display:flex}.chat-search-mode legend{width:100%;padding:0}.chat-search-mode__option{cursor:pointer;font-size:var(--text-sm);align-items:center;gap:var(--space-4);display:inline-flex}.chat-search-mode__option input{accent-color:var(--accent-dark)}.chat-search-mode__option input:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}.chat-typing{gap:var(--space-4);display:inline-flex}.chat-typing i{background:var(--accent-dark);border-radius:50%;width:5px;height:5px;animation:1.1s ease-in-out infinite chatPulse}.chat-typing i:nth-child(2){animation-delay:.15s}.chat-typing i:nth-child(3){animation-delay:.3s}@keyframes chatPulse{0%,to{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}.chat-suggestions{margin-top:var(--space-24)}.chat-suggestions__label{color:var(--muted);font-family:var(--mono);font-size:var(--text-micro);letter-spacing:var(--track-micro);margin-bottom:var(--space-12);text-transform:uppercase}.chat-suggestions ul{gap:var(--space-8);flex-wrap:wrap;padding:0;list-style:none;display:flex}.chat-suggestions button{background:var(--surface-alt);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--ink);cursor:pointer;font:inherit;font-size:var(--text-sm);padding:var(--space-8) var(--space-16);transition:border-color .2s,color .2s}.chat-suggestions button:hover{border-color:var(--accent-dark);color:var(--accent-dark)}.chat-suggestions button:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}.chat-form{gap:var(--space-8);margin-top:var(--space-24);flex-direction:column;display:flex}.chat-input{resize:vertical;min-height:88px}.chat-input:disabled{cursor:not-allowed;opacity:.6}.chat-form__footer{align-items:center;gap:var(--space-16);flex-wrap:wrap;justify-content:space-between;display:flex}.chat-help{color:var(--muted);font-family:var(--mono);font-size:var(--text-micro);margin:0}.chat-error-link{margin-top:var(--space-12)}.chat-error-link a{color:var(--accent-dark);font-weight:700}.assistant-note{color:var(--muted);font-size:var(--text-sm);margin-top:var(--space-24);max-width:70ch;line-height:1.6}.assistant-note a{color:var(--accent-dark);font-weight:700}@media (width>=768px){.instrument-panel{padding:var(--space-24) 0}.chat-log{min-height:340px;max-height:56vh}.chat-message{max-width:85%}}@media (prefers-reduced-motion:reduce){.chat-message{animation:none}.chat-typing i{opacity:1;animation:none}.chat-message__body .md-code-block__copy{transition:none}}.seo-form,.seo-form__ligne{gap:var(--space-8);flex-direction:column;display:flex}.seo-input{font-family:var(--mono);font-size:var(--text-body-sm)}.seo-submit{white-space:nowrap}.seo-form__footer{align-items:baseline;gap:var(--space-8) var(--space-20);flex-wrap:wrap;justify-content:space-between;display:flex}.seo-rapport{border-top:1px solid var(--line);margin-top:var(--space-32);padding-top:var(--space-32)}.seo-rapport__titre{color:var(--ink);font-family:var(--mono);font-size:var(--text-body);margin:0 0 var(--space-24);overflow-wrap:anywhere;font-weight:500}.seo-rapport__titre:focus{outline:2px solid var(--accent-dark);outline-offset:4px}.seo-verdict{align-items:center;gap:var(--space-24);margin-bottom:var(--space-24);flex-wrap:wrap;display:flex}.seo-note{background:var(--surface-alt);border:1px solid var(--line);border-radius:var(--radius-md);align-items:baseline;gap:var(--space-4) var(--space-4);min-width:148px;padding:var(--space-16) var(--space-16);flex-wrap:wrap;justify-content:center;display:flex}.seo-note__valeur{font-family:var(--mono);font-size:var(--text-display);font-weight:500;line-height:1}.seo-note__sur{color:var(--muted);font-family:var(--mono);font-size:var(--text-sm)}.seo-note__lettre{font-family:var(--mono);font-size:var(--text-label);letter-spacing:var(--track-label);margin-top:var(--space-8);text-align:center;text-transform:uppercase;flex-basis:100%}.seo-note.is-pass{background:var(--sage);border-color:var(--sage-dark);color:var(--sage-dark)}.seo-note.is-fail{background:var(--accent-dark-soft);border-color:var(--accent-dark);color:var(--accent-dark)}.seo-verdict__texte{flex:260px}.seo-verdict__appreciation{color:var(--ink);font-size:var(--text-body);margin:0 0 var(--space-8);font-weight:600;line-height:1.5}.seo-compte{color:var(--muted);font-family:var(--mono);font-size:var(--text-label);margin:0}.seo-mesures{border-bottom:1px solid var(--line);border-top:1px solid var(--line);gap:var(--space-16);margin-bottom:var(--space-24);padding:var(--space-16) 0;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));display:grid}.seo-mesure{gap:var(--space-4);flex-direction:column;display:flex}.seo-mesure__label{color:var(--muted);font-family:var(--mono);font-size:var(--text-micro);letter-spacing:var(--track-micro);text-transform:uppercase}.seo-mesure__valeur{color:var(--ink);font-family:var(--mono);font-size:var(--text-body-sm)}.seo-redirections,.seo-avertissements{background:var(--surface-alt);margin-bottom:var(--space-24);padding:var(--space-16)}.seo-redirections{border-top:2px solid var(--accent)}.seo-avertissements{border-top:2px solid var(--ink)}.seo-redirections__label{color:var(--accent-dark);font-family:var(--mono);font-size:var(--text-label);letter-spacing:var(--track-label);margin:0 0 var(--space-8);text-transform:uppercase}.seo-redirections ol{color:var(--muted);font-family:var(--mono);font-size:var(--text-label);overflow-wrap:anywhere;padding-left:var(--space-20);margin:0}.seo-avertissements p{color:var(--ink);font-size:var(--text-body-sm);margin:0;line-height:1.55}.seo-avertissements p+p{margin-top:var(--space-8)}.seo-groupe{margin-bottom:var(--space-32)}.seo-groupe__titre{border-bottom:1px solid var(--line);color:var(--ink);font-family:var(--mono);font-size:var(--text-label);letter-spacing:var(--track-label);margin:0 0 var(--space-16);padding-bottom:var(--space-8);text-transform:uppercase;font-weight:500}.seo-checks{gap:var(--space-8);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.seo-check{background:var(--surface-alt);border-top:1px solid var(--line);gap:var(--space-8) var(--space-16);padding:var(--space-12) var(--space-16);flex-wrap:wrap;display:flex}.seo-check.is-pass{background:var(--sage)}.seo-check.is-warn{background:var(--accent-soft)}.seo-check.is-fail{background:var(--accent-dark-soft)}.seo-check__statut{align-items:center;gap:var(--space-8);color:var(--muted);font-family:var(--mono);font-size:var(--text-micro);letter-spacing:var(--track-micro);text-transform:uppercase;flex-shrink:0;flex-basis:108px;display:flex}.seo-check.is-pass .seo-check__statut{color:var(--sage-dark)}.seo-check.is-warn .seo-check__statut,.seo-check.is-fail .seo-check__statut{color:var(--accent-dark)}.seo-check__symbole{font-size:var(--text-micro);border:1px solid;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:1.05rem;height:1.05rem;display:inline-flex}.seo-check__corps{flex:240px}.seo-check__label{color:var(--ink);font-size:var(--text-body-sm);margin:0 0 var(--space-4);font-weight:700}.seo-check__detail{color:var(--ink);font-size:var(--text-body-sm);overflow-wrap:anywhere;margin:0;line-height:1.55}.seo-check__preuve{margin:var(--space-8) 0 0;overflow-wrap:anywhere}.seo-check__preuve code{background:var(--surface-alt);border:1px solid var(--line-light);border-radius:var(--radius-sm);color:var(--ink);font-family:var(--mono);font-size:var(--text-micro);padding:var(--space-4) var(--space-8);line-height:1.5;display:inline-block}.sev-badge{border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--muted);font-family:var(--mono);font-size:var(--text-micro);letter-spacing:var(--track-micro);margin-left:var(--space-8);padding:1px var(--space-8);text-transform:uppercase;vertical-align:1px;white-space:nowrap;font-weight:600}.sev-badge.is-critique{background:var(--ink);border-color:var(--ink);color:var(--paper)}.sev-badge.is-elevee,.sev-badge.is-moyenne{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent-dark)}.seo-check__conseil{border-top:1px solid var(--line);color:var(--muted);font-size:var(--text-sm);margin:var(--space-8) 0 0;padding-top:var(--space-8);line-height:1.55}.seo-avertissement-final{border-top:1px solid var(--line);color:var(--muted);font-size:var(--text-sm);margin:var(--space-32) 0 0;padding-top:var(--space-20);line-height:1.6}@media (width>=768px){.seo-form__ligne{flex-direction:row}.seo-form__ligne .seo-input{flex:auto;min-width:0}}.form-submit-btn{margin-top:var(--space-8);padding:var(--space-16) var(--space-32);cursor:pointer;align-self:flex-start}.form-submit-btn:disabled{opacity:.65;cursor:not-allowed}.status-banner{margin-top:var(--space-24);padding:var(--space-20) var(--space-24);border-radius:var(--radius-sm)}.status-banner.is-success{background:var(--sage);border:1px solid var(--sage-dark);color:var(--sage-dark)}.status-banner.is-error{background:var(--accent-soft);border:1px solid var(--accent-dark);color:var(--accent-dark)}.status-banner h3{font-size:var(--text-body);margin-bottom:var(--space-4)}.status-banner p{font-size:var(--text-body-sm);color:inherit;margin:0}.contact-info-intro{font-size:var(--text-body);color:var(--muted);margin-bottom:var(--space-32);line-height:1.6}.contact-channels{gap:var(--space-24);flex-direction:column;display:flex}.channel-item{align-items:flex-start;gap:var(--space-16);padding-bottom:var(--space-20);border-bottom:1px solid var(--line-light);display:flex}.channel-item:last-child{border-bottom:none;padding-bottom:0}.channel-item strong{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--muted);margin-bottom:var(--space-4);font-family:var(--mono);display:block}.channel-link{font-size:var(--text-body);color:var(--ink);font-weight:700;transition:color .2s}.channel-link:hover{color:var(--accent)}.channel-text{font-size:var(--text-body);color:var(--ink);margin:0}@media (width<=768px){.cta-buttons{flex-direction:column;width:100%}.cta-button{text-align:center}}.experience-card+.experience-card{margin-top:var(--space-24)}.experience-card--featured{border-color:var(--accent);box-shadow:0 6px 22px var(--accent-soft)}.experience-badge{font-family:var(--mono);font-size:var(--text-label);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--accent-dark);background:var(--accent-soft);padding:var(--space-4) var(--space-8);border-radius:var(--radius-sm);margin-bottom:var(--space-12);font-weight:600;display:inline-block}.formation-list{gap:var(--space-32);margin:0;padding:0;list-style:none;display:grid}.formation-item{gap:var(--space-32);border-top:2px solid var(--line);padding-top:var(--space-20);grid-template-columns:200px 1fr;display:grid}.formation-item--current{border-top-color:var(--accent)}.formation-period{align-items:flex-start;gap:var(--space-8);flex-direction:column;display:flex}.formation-years{font-family:var(--mono);font-size:var(--text-body-sm);color:var(--ink);letter-spacing:var(--track-display);font-weight:500}.formation-status{font-family:var(--mono);font-size:var(--text-micro);letter-spacing:var(--track-micro);text-transform:uppercase;padding:var(--space-4) var(--space-8);border-radius:var(--radius-pill);background:var(--sage);color:var(--sage-dark);font-weight:600}.formation-body h3{font-size:var(--text-lead);color:var(--ink);margin-bottom:var(--space-4);font-weight:700}.formation-school{font-size:var(--text-body-sm);color:var(--accent-dark);margin-bottom:var(--space-12);font-weight:600}.formation-body p:last-child{font-size:var(--text-body-sm);color:var(--muted);line-height:1.65}@media (width<=768px){.formation-item{gap:var(--space-16);padding:var(--space-24);grid-template-columns:1fr}.formation-period{align-items:center;gap:var(--space-12);flex-direction:row}}.info-level{padding:var(--space-4) var(--space-16);border-radius:var(--radius-pill);font-size:var(--text-sm);background:var(--surface-alt);color:var(--muted);font-weight:600;display:inline-block}.info-level.native{background:var(--sage);color:var(--sage-dark)}.info-level.intermediate{background:var(--accent-soft);color:var(--accent-dark)}@media (width<=768px){.experience-header{gap:var(--space-16);flex-direction:column}.skills-categories,.info-grid{grid-template-columns:1fr}.cta-buttons{flex-direction:column;align-items:center}}.footer-content{position:relative}.footer-main{gap:var(--space-48);margin-bottom:var(--space-32);grid-template-columns:2fr 1fr 1fr 1.5fr;display:grid}.footer-brand h3{font-size:var(--text-title);margin-bottom:var(--space-16)}.footer-tagline{color:var(--on-ink-muted);font-size:var(--text-lead);line-height:1.6}.footer-links h4,.footer-contact h4{font-family:var(--mono);font-size:var(--text-label);letter-spacing:var(--track-label);margin-bottom:var(--space-16);text-transform:uppercase;font-weight:500}.footer-links ul{padding:0;list-style:none}.footer-links li{margin-bottom:var(--space-8)}.footer-links a{color:var(--on-ink-muted);text-decoration:none;transition:transform .2s;display:inline-block}.footer-links a:hover{color:var(--paper);transform:translate(3px)}.contact-info p{color:var(--on-ink-muted);font-size:var(--text-body-sm);margin-bottom:var(--space-8)}.social-links{gap:var(--space-8);margin-top:var(--space-16);flex-wrap:wrap;display:flex}.social-link{border:1px solid var(--on-ink-line);border-radius:var(--radius-pill);color:var(--paper);font-size:var(--text-sm);padding:var(--space-8) var(--space-16);text-decoration:none;transition:transform .2s}.social-link:hover{background:var(--on-ink-line);transform:translateY(-2px)}.footer-bottom-content{font-size:var(--text-body-sm);text-align:center}.footer-bottom-content p{margin-bottom:var(--space-8)}.footer-version{color:var(--on-ink-muted);font-size:var(--text-sm)}@media (width<=768px){.footer-main{gap:var(--space-32);text-align:center;grid-template-columns:1fr}.social-links{justify-content:center}}@media (width<=480px){.footer-brand h3{font-size:var(--text-subtitle)}.social-links{flex-direction:column;align-items:center}}
