:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f3ebdd;--surface:#fbf6ea;--surface-raised:#fffdf6;--surface-sunken:#eae0ce;--ink:#000e1e;--ink-soft:#24374a;--muted:#44566a;--border:#c9bca6;--border-strong:#000e1e;--orange:#ff6b2c;--red:#d92d3f;--violet:#5b3df5;--cyan:#0e9fbe;--focus:#2547e8;--on-accent:#000e1e;--shadow-color:#000e1e;--shadow-sm:3px 3px 0 var(--shadow-color);--shadow-md:6px 6px 0 var(--shadow-color);--shadow-lg:10px 10px 0 var(--shadow-color);--cartridge-bg:#f3ebdd;--cartridge-ink:#000e1e;--cartridge-border:#000e1e;--max-width:73.75rem;--gutter:clamp(1rem, 5vw, 2.5rem);--header-height:4rem;--section-space:clamp(4rem, 10vw, 8rem);--step-1:.75rem;--step-2:.875rem;--step-3:1rem;--step-4:1.0625rem;--step-5:1.25rem;--step-6:1.5rem;--step-7:2rem;--step-8:2.5rem;--step-9:3.25rem;--ease-out:cubic-bezier(.22, 1, .36, 1);--astro-code-background:var(--surface-sunken);--astro-code-foreground:var(--ink);--astro-code-token-comment:#6b7b8c;--astro-code-token-keyword:var(--red);--astro-code-token-string:#0c7b91;--astro-code-token-function:var(--violet);--astro-code-token-number:#a85100;--astro-code-token-punctuation:var(--muted);--astro-code-token-constant:var(--cyan);--astro-code-token-variable:var(--ink-soft);--astro-code-token-parameter:var(--ink-soft);--astro-code-token-string-expression:#0c7b91;--astro-code-token-link:var(--violet)}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#000e1e;--surface:#092033;--surface-raised:#0d2a41;--surface-sunken:#04121f;--ink:#f3ebdd;--ink-soft:#d9e0e6;--muted:#a9b7c6;--border:#274158;--border-strong:#f3ebdd;--orange:#ff8a4c;--red:#ff6b78;--violet:#9b87ff;--cyan:#4fd1ea;--focus:#ff8a4c;--on-accent:#000e1e;--shadow-color:#020a12;--shadow-sm:3px 3px 0 var(--shadow-color);--shadow-md:6px 6px 0 var(--shadow-color);--shadow-lg:10px 10px 0 var(--shadow-color);--cartridge-bg:#f3ebdd;--cartridge-ink:#000e1e;--cartridge-border:#f3ebdd;--astro-code-background:#04121f;--astro-code-foreground:#f3ebdd;--astro-code-token-comment:#8fa1b2;--astro-code-token-keyword:#ff6b78;--astro-code-token-string:#4fd1ea;--astro-code-token-function:#9b87ff;--astro-code-token-number:#ffb86b;--astro-code-token-punctuation:#a9b7c6;--astro-code-token-constant:#4fd1ea;--astro-code-token-variable:#d9e0e6;--astro-code-token-parameter:#d9e0e6;--astro-code-token-string-expression:#4fd1ea;--astro-code-token-link:#9b87ff}@media (prefers-color-scheme:dark){:root:not([data-theme]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#000e1e;--surface:#092033;--surface-raised:#0d2a41;--surface-sunken:#04121f;--ink:#f3ebdd;--ink-soft:#d9e0e6;--muted:#a9b7c6;--border:#274158;--border-strong:#f3ebdd;--orange:#ff8a4c;--red:#ff6b78;--violet:#9b87ff;--cyan:#4fd1ea;--focus:#ff8a4c;--on-accent:#000e1e;--shadow-color:#020a12;--shadow-sm:3px 3px 0 var(--shadow-color);--shadow-md:6px 6px 0 var(--shadow-color);--shadow-lg:10px 10px 0 var(--shadow-color);--cartridge-bg:#f3ebdd;--cartridge-ink:#000e1e;--cartridge-border:#f3ebdd;--astro-code-background:#04121f;--astro-code-foreground:#f3ebdd;--astro-code-token-comment:#8fa1b2;--astro-code-token-keyword:#ff6b78;--astro-code-token-string:#4fd1ea;--astro-code-token-function:#9b87ff;--astro-code-token-number:#ffb86b;--astro-code-token-punctuation:#a9b7c6;--astro-code-token-constant:#4fd1ea;--astro-code-token-variable:#d9e0e6;--astro-code-token-parameter:#d9e0e6;--astro-code-token-string-expression:#4fd1ea;--astro-code-token-link:#9b87ff}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--step-4);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;line-height:1.7;overflow-x:clip}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:.01em;text-wrap:balance;margin:0;font-weight:400;line-height:.98}p{margin:0}p+p{margin-top:1em}ul,ol{margin:0;padding:0}a{color:inherit;text-underline-offset:.22em;transition:color .14s var(--ease-out);text-decoration-thickness:2px}a:hover{color:var(--orange)}img,svg{max-width:100%;display:block}img{height:auto}.logo-mark{width:var(--logo-size,2rem);height:var(--logo-size,2rem);background:currentColor;flex-shrink:0;display:inline-block;-webkit-mask:url(/brand/mark.svg) 50%/contain no-repeat;mask:url(/brand/mark.svg) 50%/contain no-repeat}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}::selection{background:var(--orange);color:var(--on-accent)}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}:target{scroll-margin-top:calc(var(--header-height) + 1.5rem)}.container{width:100%;max-width:var(--max-width);padding-inline:var(--gutter);margin-inline:auto}.section{padding-block:var(--section-space)}.section--tight{padding-block:clamp(3rem,7vw,5rem)}.section--line{border-top:2px solid var(--border-strong)}.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{z-index:100;border:2px solid var(--border-strong);background:var(--surface);color:var(--ink);font-family:var(--font-ui);font-size:var(--step-1);letter-spacing:.04em;text-transform:uppercase;padding:.75rem 1rem;text-decoration:none;position:fixed;top:.75rem;left:.75rem;transform:translateY(-160%)}.skip-link:focus-visible{transform:translateY(0)}.eyebrow{font-family:var(--font-ui);font-size:var(--step-1);letter-spacing:.03em;text-transform:uppercase;color:var(--ink);align-items:center;gap:1.15rem;font-weight:400;line-height:1.4;display:inline-flex}.eyebrow:before{content:"";background:var(--orange);width:.45rem;height:.45rem;box-shadow:.55rem 0 0 var(--violet);flex-shrink:0}.label{font-family:var(--font-ui);font-size:var(--step-1);letter-spacing:.05em;text-transform:uppercase;font-weight:400;line-height:1.5}.muted{color:var(--muted)}.dither{background-image:repeating-conic-gradient(var(--ink) 0% 25%, transparent 0% 50%);opacity:.06;background-size:8px 8px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.site-header{z-index:50;background:var(--paper);border-bottom:2px solid var(--border-strong);position:sticky;top:0}.site-header__inner{min-height:var(--header-height);justify-content:space-between;align-items:center;gap:1rem;display:flex}.brand{color:var(--ink);flex-shrink:0;align-items:center;gap:.75rem;text-decoration:none;display:inline-flex}.brand:hover{color:var(--ink)}.brand__mark{width:2rem;height:2rem;color:var(--ink)}.brand__text{gap:.1rem;line-height:1;display:grid}.brand__name{font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;font-size:.8125rem;font-weight:700}.brand__sub{font-family:var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:.5625rem}.site-nav{align-items:center;gap:clamp(.75rem,2.4vw,1.75rem);display:flex}.site-nav__link{font-family:var(--font-ui);font-size:var(--step-1);letter-spacing:.035em;text-transform:uppercase;color:var(--ink);padding-block:.5rem;text-decoration:none;position:relative}.site-nav__link:after{content:"";background:var(--orange);transform-origin:0;height:3px;transition:transform .16s var(--ease-out);position:absolute;bottom:.2rem;left:0;right:0;transform:scaleX(0)}.site-nav__link:hover:after,.site-nav__link[aria-current=page]:after{transform:scaleX(1)}.site-header__actions{align-items:center;gap:.75rem;display:flex}.hero{padding-block:clamp(2.5rem,6vw,5.5rem)}.hero__grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:clamp(2rem,5vw,5rem);display:grid}.hero__copy{align-content:center;gap:clamp(1.25rem,2.5vw,2rem);display:grid}.hero__eyebrow-row{flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;display:flex}.hero__title{max-width:15ch;font-size:clamp(2.5rem,5.6vw,5rem)}.hero__title em{color:var(--orange);font-style:normal}.hero__lead{max-width:46ch;color:var(--muted);font-size:clamp(1.0625rem,1.7vw,1.25rem);line-height:1.65}.hero__actions{flex-wrap:wrap;gap:.875rem;display:flex}.hero__stats{border:2px solid var(--border-strong);background:var(--surface);box-shadow:var(--shadow-sm);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.hero__stat{gap:.2rem;padding:.75rem .9rem;display:grid}.hero__stat+.hero__stat{border-left:2px solid var(--border-strong)}.hero__stat dt{font-family:var(--font-ui);letter-spacing:.03em;text-transform:uppercase;color:var(--muted);font-size:.625rem}.hero__stat dd{font-family:var(--font-display);margin:0;font-size:1.35rem;font-weight:400;line-height:1}.hero__visual{justify-self:end;width:100%;max-width:28rem}.hero__track{margin-top:clamp(2rem,4vw,3rem)}.section-head{border-bottom:2px solid var(--border-strong);justify-content:space-between;align-items:flex-end;gap:1.5rem;margin-bottom:clamp(2rem,4vw,3rem);padding-bottom:1rem;display:flex}.section-head__index{font-family:var(--font-ui);font-size:var(--step-1);letter-spacing:.03em;text-transform:uppercase;color:var(--muted);margin-bottom:.75rem;display:block}.section-head h2{font-size:clamp(2rem,4.6vw,3.4rem)}.section-head__link{font-family:var(--font-ui);font-size:var(--step-1);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;flex-shrink:0;padding-bottom:.25rem;text-decoration:none}.section-head__link:after{content:" ->"}.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1.5rem,3vw,2.25rem);display:grid}.project-card--featured{grid-column:1/-1}.project-card--featured .project-card__link{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:stretch;display:grid}.project-card--featured .project-card__cover{aspect-ratio:auto;border-right:2px solid var(--border-strong);border-bottom:0;height:100%;min-height:18rem}.about-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:start;gap:clamp(2rem,5vw,5rem);display:grid}.about-copy{gap:1.25rem;max-width:62ch;display:grid}.about-copy h2{max-width:16ch;font-size:clamp(2rem,4.6vw,3.4rem)}.spec-sheet{border:2px solid var(--border-strong);background:var(--surface);box-shadow:var(--shadow-sm)}.spec-sheet__title{border-bottom:2px solid var(--border-strong);font-family:var(--font-ui);font-size:var(--step-1);letter-spacing:.05em;text-transform:uppercase;padding:.75rem 1rem}.spec-sheet dl{margin:0}.spec-sheet__row{grid-template-columns:7.5rem minmax(0,1fr);gap:1rem;padding:.8rem 1rem;display:grid}.spec-sheet__row+.spec-sheet__row{border-top:1px dashed var(--border)}.spec-sheet dt{font-family:var(--font-ui);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:.6875rem}.spec-sheet dd{margin:0;font-size:.9375rem;line-height:1.5}.spec-sheet__tags{border-top:2px solid var(--border-strong);padding:.9rem 1rem}.contact{border-top:2px solid var(--border-strong);background:var(--surface-sunken)}.contact__grid{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:2rem;display:grid}.contact h2{max-width:15ch;margin-top:1rem;font-size:clamp(2.2rem,6vw,4.5rem)}.contact__mail{font-family:var(--font-display);letter-spacing:.01em;overflow-wrap:anywhere;margin-top:2rem;font-size:clamp(1.5rem,4.5vw,3.25rem);font-weight:400;line-height:1;text-decoration:none;display:inline-block}.contact__mail:hover{color:var(--orange);text-decoration:underline;text-decoration-thickness:4px}.contact__links{flex-wrap:wrap;justify-content:flex-end;gap:.75rem;display:flex}.site-footer{border-top:2px solid var(--border-strong);background:var(--paper)}.site-footer__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-block:1.5rem;display:flex}.site-footer__brand{font-family:var(--font-ui);letter-spacing:.05em;text-transform:uppercase;align-items:center;gap:.6rem;font-size:.6875rem;display:flex}.site-footer__mark{width:1.5rem;height:1.5rem}.site-footer__note{font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:.625rem}.page-head{border-bottom:2px solid var(--border-strong);padding-block:clamp(2.5rem,5vw,4.5rem) clamp(2rem,4vw,3.5rem)}.page-head h1{max-width:18ch;font-size:clamp(2.6rem,7vw,5rem)}.page-head__lead{max-width:58ch;color:var(--muted);margin-top:1.25rem}.page-head__meta{flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:1.5rem;display:flex}.project-page__top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-top:1.5rem;display:flex}.back-link{font-family:var(--font-ui);font-size:var(--step-1);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:.5rem;text-decoration:none;display:inline-flex}.back-link:before{content:"";border-bottom:2px solid;border-left:2px solid;width:.5rem;height:.5rem;transform:rotate(45deg)}.project-hero{padding-block:clamp(2rem,4vw,3.5rem)}.project-hero h1{max-width:20ch;font-size:clamp(2.4rem,6.5vw,4.75rem)}.project-hero__tagline{max-width:56ch;color:var(--muted);margin-top:1.25rem;font-size:clamp(1.0625rem,1.8vw,1.25rem)}.project-links{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.project-hero__meta{border:2px solid var(--border-strong);background:var(--surface);grid-template-columns:repeat(4,minmax(0,1fr));margin-top:2rem;display:grid}.project-hero__meta>div{padding:.8rem 1rem}.project-hero__meta>div+div{border-left:2px solid var(--border-strong)}.project-hero__meta dt{font-family:var(--font-ui);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:.6875rem}.project-hero__meta dd{margin:.35rem 0 0;font-size:.9375rem;line-height:1.4}.project-cover-wrap{aspect-ratio:16/8;border:2px solid var(--border-strong);box-shadow:var(--shadow-md);background:var(--surface);margin-block:clamp(2rem,4vw,3.5rem);position:relative;overflow:hidden}.project-cover-wrap .project-cover{position:absolute;inset:0}.project-body{padding-bottom:clamp(3rem,6vw,5rem)}.project-nav{border-top:2px solid var(--border-strong);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.project-nav__link{gap:.4rem;padding:1.25rem 0;text-decoration:none;display:grid}.project-nav__link+.project-nav__link{border-left:2px solid var(--border-strong);text-align:right;padding-left:1.5rem}.project-nav--single{grid-template-columns:minmax(0,1fr)}.project-nav--single .project-nav__link+.project-nav__link{border-left:0}.project-nav__label{font-family:var(--font-ui);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:.6875rem}.project-nav__title{font-family:var(--font-display);font-size:1.5rem;font-weight:400;line-height:1.1}.empty-state{border:2px dashed var(--border-strong);text-align:center;padding:2rem}.error-page{justify-items:start;gap:1.25rem;max-width:44rem;display:grid}.error-page h1{font-size:clamp(2.5rem,7vw,5rem)}.contact .label{margin-bottom:.75rem}@media (width<=56rem){.hero__grid{grid-template-columns:minmax(0,1fr)}.project-cover-wrap{aspect-ratio:16/10}.hero__visual{justify-self:start;max-width:26rem}.project-card--featured .project-card__link{grid-template-columns:minmax(0,1fr)}.project-card--featured .project-card__cover{aspect-ratio:16/10;border-right:0;border-bottom:2px solid var(--border-strong);min-height:0}.about-grid{grid-template-columns:minmax(0,1fr)}.contact__grid{grid-template-columns:minmax(0,1fr);align-items:start}.contact__links{justify-content:flex-start}.project-hero__meta{grid-template-columns:repeat(2,minmax(0,1fr))}.project-hero__meta>div:nth-child(3){border-left:0;border-top:2px solid var(--border-strong)}.project-hero__meta>div:nth-child(4){border-top:2px solid var(--border-strong)}}@media (width<=44rem){.projects-grid{grid-template-columns:minmax(0,1fr)}.project-card--featured{grid-column:auto}.section-head{flex-direction:column;align-items:flex-start;gap:.75rem}.spec-sheet__row{grid-template-columns:5.5rem minmax(0,1fr)}.project-nav{grid-template-columns:minmax(0,1fr)}.project-nav__link+.project-nav__link{border-left:0;border-top:2px solid var(--border-strong);text-align:left;padding-left:0}}@media (width<=30rem){.site-header__inner{gap:.5rem}.brand__text{display:none}.site-nav{gap:.5rem}.site-nav__link{font-size:.6875rem}.hero__stats{grid-template-columns:minmax(0,1fr)}.hero__stat+.hero__stat{border-left:0;border-top:2px solid var(--border-strong)}.project-hero__meta{grid-template-columns:minmax(0,1fr)}.project-hero__meta>div+div{border-left:0;border-top:2px solid var(--border-strong)}}.btn{border:2px solid var(--border-strong);background:var(--surface);color:var(--ink);box-shadow:4px 4px 0 var(--border-strong);font-family:var(--font-ui);font-size:var(--step-1);letter-spacing:.04em;text-transform:uppercase;transition:transform .14s var(--ease-out), box-shadow .14s var(--ease-out);justify-content:center;align-items:center;gap:.6rem;padding:.85rem 1.15rem;line-height:1;text-decoration:none;display:inline-flex}.btn:hover{color:var(--ink);box-shadow:6px 6px 0 var(--border-strong);transform:translate(-2px,-2px)}.btn:active{box-shadow:2px 2px 0 var(--border-strong);transform:translate(2px,2px)}.btn--primary{background:var(--orange);color:var(--on-accent)}.btn--primary:hover{color:var(--on-accent)}.btn--ghost{background:0 0}.btn__icon{flex-shrink:0;width:1rem;height:1rem}.theme-toggle{border:2px solid var(--border-strong);background:var(--surface);width:2.75rem;height:2.75rem;color:var(--ink);box-shadow:var(--shadow-sm);transition:transform .14s var(--ease-out), box-shadow .14s var(--ease-out);place-items:center;padding:0;display:grid}.theme-toggle:hover{box-shadow:4px 4px 0 var(--border-strong);transform:translate(-1px,-1px)}.theme-toggle:active{box-shadow:1px 1px 0 var(--border-strong);transform:translate(2px,2px)}.theme-toggle svg{width:1.25rem;height:1.25rem}.theme-toggle .icon-sun{display:none}[data-theme=dark] .theme-toggle .icon-sun{display:block}[data-theme=dark] .theme-toggle .icon-moon{display:none}.tag-list{flex-wrap:wrap;gap:.4rem;list-style:none;display:flex}.tag{border:1px solid var(--border);background:var(--surface);color:var(--ink-soft);font-family:var(--font-ui);letter-spacing:.03em;text-transform:uppercase;align-items:center;padding:.28rem .5rem;font-size:.6875rem;line-height:1.3;display:inline-flex}.status{font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);align-items:center;gap:.45rem;font-size:.6875rem;line-height:1.4;display:inline-flex}.status:before{content:"";background:var(--status-color,var(--muted));width:.5rem;height:.5rem}.status[data-status=en-ligne]{--status-color:var(--cyan)}.status[data-status=en-cours]{--status-color:var(--orange)}.status[data-status=prototype]{--status-color:var(--violet)}.status[data-status=archive]{--status-color:var(--muted)}.badge-example{border:2px solid var(--border-strong);background:var(--orange);color:var(--on-accent);font-family:var(--font-ui);letter-spacing:.05em;text-transform:uppercase;padding:.3rem .5rem;font-size:.5625rem;line-height:1.3;display:inline-flex}.placeholder-note{border:2px dashed var(--orange);background:var(--surface);gap:.4rem;margin-bottom:2rem;padding:1rem;display:grid}.placeholder-note strong{font-family:var(--font-ui);font-size:var(--step-1);letter-spacing:.04em;text-transform:uppercase}.placeholder-note p{color:var(--muted);margin:0;font-size:.9375rem}.placeholder-note code{border:1px solid var(--border);background:var(--surface-sunken);font-family:var(--font-ui);padding:.1em .3em;font-size:.8em}.project-card{min-width:0}.project-card__link{border:2px solid var(--border-strong);background:var(--surface);height:100%;box-shadow:var(--shadow-md);color:var(--ink);transition:transform .16s var(--ease-out), box-shadow .16s var(--ease-out);text-decoration:none;display:block}.project-card__link:hover{color:var(--ink);box-shadow:9px 9px 0 var(--shadow-color);transform:translate(-3px,-3px)}.project-card__link:focus-visible{outline-offset:5px}.project-card__cover{aspect-ratio:16/10;border-bottom:2px solid var(--border-strong);background:var(--surface-sunken);position:relative;overflow:hidden}.project-card__info{flex-direction:column;align-items:flex-start;gap:.9rem;padding:clamp(1rem,2.5vw,1.5rem);display:flex}.project-card__topline,.project-card__title,.project-card__tagline{width:100%}.project-card__topline{justify-content:space-between;align-items:center;gap:1rem;display:flex}.project-card__index{font-family:var(--font-ui);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:.6875rem}.project-card__title{transition:color .14s var(--ease-out);font-size:clamp(1.6rem,2.8vw,2.1rem);line-height:1}.project-card__link:hover .project-card__title{color:var(--orange)}.project-card__tagline{max-width:46ch;color:var(--muted);font-size:.9375rem;line-height:1.55}.project-card__footer{border-top:1px dashed var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;width:100%;margin-top:auto;padding-top:.9rem;display:flex}.project-card__year{font-family:var(--font-ui);letter-spacing:.05em;color:var(--muted);align-items:center;gap:.4rem;font-size:.6875rem;display:inline-flex}.project-card__arrow{width:.875rem;height:.875rem;transition:transform .14s var(--ease-out)}.project-card__link:hover .project-card__arrow{transform:translate(3px)}.project-cover{background-color:var(--surface-sunken);background-image:repeating-conic-gradient(color-mix(in srgb, var(--accent) 17%, transparent) 0% 25%, transparent 0% 50%), linear-gradient(var(--surface-sunken), var(--surface-sunken));color:var(--ink);background-size:8px 8px,100% 100%;flex-direction:column;justify-content:space-between;padding:clamp(1rem,3vw,1.75rem);display:flex;position:absolute;inset:0;overflow:hidden}.project-cover:before{content:"";background-image:repeating-conic-gradient(var(--ink) 0% 25%, transparent 0% 50%);opacity:.035;pointer-events:none;background-size:8px 8px;position:absolute;inset:0}.project-cover[data-pattern=rings]{background-image:repeating-radial-gradient(circle at 74% 28%, color-mix(in srgb, var(--accent) 46%, transparent) 0 2px, transparent 2px 18px), linear-gradient(var(--surface-sunken), var(--surface-sunken));background-size:auto,100% 100%}.project-cover[data-pattern=rings]:before{opacity:.025}.project-cover[data-pattern=grid]{background-image:linear-gradient(90deg, color-mix(in srgb, var(--accent) 28%, transparent) 1px, transparent 1px), linear-gradient(color-mix(in srgb, var(--accent) 28%, transparent) 1px, transparent 1px), linear-gradient(var(--surface-sunken), var(--surface-sunken));background-size:24px 24px,24px 24px,100% 100%}.project-cover[data-pattern=grid]:before{opacity:.02}.project-cover__top{z-index:1;font-family:var(--font-ui);letter-spacing:.05em;text-transform:uppercase;justify-content:space-between;align-items:flex-start;gap:1rem;font-size:.625rem;display:flex;position:relative}.project-cover__index{z-index:1;font-family:var(--font-display);letter-spacing:0;color:var(--ink);text-shadow:6px 6px 0 var(--accent);align-self:flex-end;font-size:clamp(4.25rem,13vw,9rem);font-weight:400;line-height:.72;position:relative}.project-cover__word{z-index:1;font-family:var(--font-ui);letter-spacing:.03em;text-transform:uppercase;color:var(--muted);font-size:.625rem;position:absolute;bottom:clamp(1rem,3vw,1.75rem);left:clamp(1rem,3vw,1.75rem)}.project-cover__accent{background:var(--accent);width:4rem;height:.5rem;position:absolute;bottom:0;right:0}.project-cover__image{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.project-cover--image:before,.project-cover--image .project-cover__index{display:none}.pixel-fox{width:var(--fox-width);height:var(--fox-height);background-position:0 0;background-repeat:no-repeat;background-size:calc(var(--fox-width) * var(--fox-frames)) var(--fox-height);image-rendering:pixelated;flex-shrink:0;display:inline-block}.pixel-fox--walk{--fox-frames:6;background-image:url(/sprites/fox-walk.webp);animation:.8s steps(6,end) infinite fox-walk}.pixel-fox--sleep{--fox-frames:4;background-image:url(/sprites/fox-sleep.webp);animation:2.8s steps(4,end) infinite fox-sleep}@keyframes fox-walk{to{background-position:calc(var(--fox-width) * -6) 0}}@keyframes fox-sleep{to{background-position:calc(var(--fox-width) * -4) 0}}.fox-runner{border:2px solid var(--border-strong);background:var(--surface);height:8.5rem;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.fox-runner:before{content:"";background-image:repeating-conic-gradient(var(--ink) 0% 25%, transparent 0% 50%);opacity:.025;pointer-events:none;background-size:8px 8px;position:absolute;inset:0}.fox-runner__label{font-family:var(--font-ui);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:.5625rem;position:absolute;top:.5rem;left:.75rem}.fox-runner__ground{background-image:repeating-linear-gradient(90deg, var(--border) 0 8px, transparent 8px 16px);height:2px;position:absolute;bottom:14px;left:0;right:0}.fox-runner__unit{align-items:flex-end;animation:24s linear -6s infinite fox-cross;display:flex;position:absolute;bottom:14px;left:-90px}.fox-runner__fox{z-index:1;animation:.8s steps(6,end) infinite fox-walk,.4s steps(2,end) infinite fox-bob;position:relative}.fox-runner__dust{width:2rem;height:1.5rem;position:absolute;bottom:0;left:-1rem}.fox-runner__dust i{background:var(--muted);width:6px;height:6px;animation:.7s steps(3,end) infinite fox-dust;position:absolute;bottom:0}.fox-runner__dust i:first-child{animation-delay:-.1s;left:0}.fox-runner__dust i:nth-child(2){width:4px;height:4px;animation-delay:-.35s;bottom:6px;left:10px}.fox-runner__dust i:nth-child(3){width:3px;height:3px;animation-delay:-.55s;bottom:2px;left:20px}@keyframes fox-cross{to{left:calc(100% + 90px)}}@keyframes fox-bob{50%{transform:translateY(-2px)}}@keyframes fox-dust{0%{opacity:0;transform:translate(4px)}40%{opacity:.55}to{opacity:0;transform:translate(-12px)}}.contact__fox{justify-content:flex-end;margin-bottom:1rem;display:flex}.error-page__fox{margin-bottom:.5rem}.cartridge{border:2px solid var(--cartridge-border);background:var(--cartridge-bg);width:100%;color:var(--cartridge-ink);box-shadow:var(--shadow-lg);transition:transform .22s var(--ease-out);padding:.75rem;position:relative;transform:rotate(-1.5deg)}.cartridge:hover{transform:rotate(-.5deg)translateY(-3px)}.cartridge__stripe{border:2px solid var(--cartridge-border);background:linear-gradient(90deg,#00c2ff 0%,#5b3df5 38%,#d92d3f 68%,#ff6b2c 100%);height:.5rem}.cartridge__screen{border:2px solid var(--cartridge-border);background-color:var(--cartridge-bg);place-items:center;margin-top:.75rem;padding:clamp(.75rem,2.5vw,1.5rem);display:grid;position:relative;overflow:hidden}.cartridge__screen:before{content:"";opacity:.055;pointer-events:none;background-image:repeating-conic-gradient(#000e1e 0% 25%,#0000 0% 50%);background-size:8px 8px;position:absolute;inset:0}.cartridge__logo{z-index:1;width:100%;position:relative}.cartridge__logo picture,.cartridge__logo img{width:100%;height:auto;display:block}.cartridge__meta{font-family:var(--font-ui);letter-spacing:.05em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:1rem;margin-top:.75rem;font-size:.5625rem;display:flex}.cartridge__meta span:last-child{color:#44566a}.ticker{border-block:2px solid var(--border-strong);background:var(--surface);overflow:hidden}.ticker__track{width:max-content;padding-block:.7rem;animation:38s linear infinite ticker;display:flex}.ticker__group{flex-shrink:0;align-items:center;display:flex}.ticker__item{font-family:var(--font-ui);font-size:var(--step-1);letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:1rem;padding-inline:1rem;line-height:1;display:inline-flex}.ticker__item:after{content:"";background:var(--orange);width:.5rem;height:.5rem}.ticker__item:nth-child(2n):after{background:var(--violet)}.ticker__item:nth-child(3n):after{background:var(--cyan)}@keyframes ticker{to{transform:translate(-50%)}}.social-links{flex-wrap:wrap;gap:.6rem;list-style:none;display:flex}.social-link{border:2px solid var(--border-strong);background:var(--surface);box-shadow:var(--shadow-sm);font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;transition:transform .14s var(--ease-out), box-shadow .14s var(--ease-out);align-items:center;gap:.5rem;padding:.6rem .8rem;font-size:.625rem;text-decoration:none;display:inline-flex}.social-link:hover{color:var(--ink);box-shadow:5px 5px 0 var(--border-strong);transform:translate(-2px,-2px)}.social-link svg{width:1rem;height:1rem}.icon-pixel{shape-rendering:crispedges}@media (width<=56rem){.cartridge{transform:none}.contact__fox{justify-content:flex-start}.fox-runner{height:7.25rem}.cartridge:hover{transform:translateY(-3px)}}@media (scripting:none){[data-theme-toggle]{display:none}}@media (prefers-reduced-motion:reduce){.pixel-fox,.fox-runner__unit,.fox-runner__fox,.fox-runner__dust i{animation:none}.fox-runner__unit{left:1.25rem}.fox-runner__dust{display:none}.ticker__track{animation:none;transform:none}.cartridge,.cartridge:hover,.project-card__link:hover,.social-link:hover,.btn:hover{transform:none}}.prose{max-width:68ch}.prose>*+*{margin-top:1.25rem}.prose h2{margin-top:2.75rem;font-size:clamp(1.7rem,3vw,2.35rem)}.prose h3{margin-top:2rem;font-size:1.5rem}.prose h2+*,.prose h3+*{margin-top:.75rem}.prose p,.prose li{color:var(--ink-soft)}.prose a{color:var(--ink);-webkit-text-decoration-color:var(--orange);text-decoration-color:var(--orange)}.prose a:hover{color:var(--orange)}.prose ul,.prose ol{padding-left:1.4rem}.prose li+li{margin-top:.4rem}.prose ul{padding-left:0;list-style:none}.prose ul li{padding-left:1.4rem;position:relative}.prose ul li:before{content:"";background:var(--orange);width:.45rem;height:.45rem;position:absolute;top:.68em;left:0}.prose blockquote{border-left:4px solid var(--orange);margin-inline:0;padding:.75rem 0 .75rem 1.25rem;font-size:1.125rem}.prose blockquote p{color:var(--ink);margin:0}.prose code{border:1px solid var(--border);background:var(--surface-sunken);font-family:var(--font-ui);padding:.15em .35em;font-size:.8125em}.prose pre{border:2px solid var(--border-strong);padding:1rem;font-size:.875rem;line-height:1.6;overflow-x:auto}.prose pre code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:inherit;background:0 0;border:0;padding:0}.prose .astro-code{background-color:var(--astro-code-background);color:var(--astro-code-foreground)}.prose table{border-collapse:collapse;width:100%;font-size:.9375rem}.prose th,.prose td{border:1px solid var(--border);text-align:left;padding:.6rem .75rem}.prose th{background:var(--surface);font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;font-size:.625rem}.prose hr{background-image:repeating-conic-gradient(var(--ink) 0% 25%, transparent 0% 50%);opacity:.12;background-size:8px 8px;border:0;height:8px}.prose img{border:2px solid var(--border-strong)}
