:root{color-scheme:dark;--bg:#101010;--ink:#f1efe8;--muted:#a5a5a5;--accent:#fd5c3b;--line:#292929;--surface:#181818;--expo:cubic-bezier(.16,1,.3,1);--soft:cubic-bezier(.33,1,.68,1);--pad:48px;--display:"Inter Tight",Arial,sans-serif;--body:Inter,Arial,sans-serif;--mono:"JetBrains Mono","Courier New",monospace}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:1rem/1.5 var(--body)}[hidden]{display:none!important}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}a:hover,button:hover{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}h1,h2,h3,p,ol{margin:0}h1,h2,h3{font-family:var(--display)}.mono{font:500 .72rem/1.45 var(--mono);letter-spacing:.09em;text-transform:uppercase}.icon{display:inline-block;flex:none}.wordmark{height:auto;width:100%}.skip{position:fixed;z-index:120;top:1rem;left:1rem;padding:12px;background:var(--ink);color:var(--bg);transform:translateY(-180%)}.skip:focus{transform:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.header,main,.footer{max-width:1440px;margin-inline:auto;padding-inline:var(--pad)}.header{position:sticky;top:0;z-index:100;background:var(--bg)}#main,#work,#about,#contact{scroll-margin-top:138px}.topbar{height:72px;display:flex;align-items:center;gap:28px;border-bottom:1px solid var(--line)}.brand,.modal-head .wordmark{width:164px;flex:none}.name,.mast-meta span,.card-meta,.section-head,.archive-meta span,.copyright,.modal-foot{color:var(--muted)}.header-actions{margin-left:auto;display:flex;align-items:center;gap:22px}.header-actions button{font:inherit;text-transform:inherit;letter-spacing:inherit}.header-actions>*{display:inline-flex;align-items:center;gap:8px;min-height:44px}.category-nav{position:relative;display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid var(--line)}.category-nav a{display:flex;align-items:center;gap:6px;min-height:44px;border-bottom:2px solid transparent}.category-nav [aria-current]{color:var(--accent);border-color:var(--accent)}sup{font:inherit;color:var(--muted);align-self:flex-start;padding-top:.8em}
.masthead{padding-top:clamp(24px,4vw,56px)}.masthead h1 .wordmark{width:100%;height:auto}.mast-meta,.archive-meta{border-block:1px solid var(--line);display:flex;justify-content:space-between;gap:12px 24px;flex-wrap:wrap;padding-block:12px}
.hero-copy h2{font-size:clamp(3.4rem,7.6vw,7rem);line-height:.9;letter-spacing:-.065em}.kicker{display:flex;align-items:center;gap:9px;color:var(--muted);margin:22px 0}.kicker::before{content:"";width:8px;height:8px;flex:none;background:var(--accent)}.section{margin-top:clamp(54px,8vw,112px);padding-top:20px;border-top:1px solid var(--line)}.hero+.section{margin-top:10px}.section-head{display:flex;justify-content:space-between;gap:16px;margin-bottom:32px}.section-head h2{font:inherit}.section-head a{color:var(--ink)}.section-head a:hover{color:var(--accent)}
.archive-head{padding-block:44px 50px}.archive-head h1{font-size:clamp(3.2rem,14.5vw,13.75rem);font-weight:700;line-height:.89;letter-spacing:-.067em;text-transform:uppercase;margin-bottom:22px;overflow-wrap:anywhere}.archive-head .long-title{font-size:clamp(2.6rem,10.4vw,9.4rem)}.archive-head .kicker{margin:12px 0 24px}.archive-meta{border-top:0;justify-content:flex-start;column-gap:8vw}
.layout{container-type:inline-size;display:grid;gap:clamp(28px,4.5vw,72px)}.row{display:grid;grid-template-columns:minmax(0,1fr);align-items:start}.position{grid-area:1/1;width:var(--w);margin-left:var(--x);margin-top:var(--offset);min-width:0}.position:focus-within{z-index:2}.card,.teaser{display:block;width:100%;text-align:left;color:var(--ink);position:relative}.card-inner{display:block;position:relative;transform-origin:center;transition:transform 280ms var(--soft),filter 300ms var(--soft)}.media{display:block;aspect-ratio:var(--ratio,3/2);position:relative;background:var(--surface);overflow:hidden}.media>img{width:100%;height:100%;object-fit:cover}.placeholder{display:grid;place-content:center;text-align:center;color:var(--muted);height:100%;padding:8px;background:linear-gradient(to top right,transparent calc(50% - .5px),var(--line) 50%,transparent calc(50% + .5px)),linear-gradient(to bottom right,transparent calc(50% - .5px),var(--line) 50%,transparent calc(50% + .5px));border:1px solid var(--line)}.preview-badge{position:absolute;left:0;bottom:0;background:var(--bg);color:var(--ink);padding:4px 7px;font-size:.61rem}.card-meta{display:block;margin-top:10px;padding-right:26px}.card-title{display:block;font-size:clamp(1rem,1.45vw,1.19rem);line-height:1.3;padding-right:24px;overflow-wrap:anywhere}.card-arrow{position:absolute;right:1px;bottom:0;color:var(--accent)}.card:focus-visible 
@media(hover:hover) and (pointer:fine){.card:hover .card-title,.teaser:hover .card-title{color:var(--accent)}.card:active .card-inner{transform:scale(.98);transition-duration:120ms}}
.series ol{list-style:none;padding:0}.index-button{width:100%;min-height:48px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:64px 1fr auto;align-items:center;text-align:left;gap:12px}.index-button .mono{color:var(--muted)}.about{display:grid;grid-template-columns:minmax(112px,300px) minmax(0,720px);gap:6%;align-items:center}.about img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;border-radius:50%}.about h3,.contact-title{font-family:var(--display);font-size:clamp(2.35rem,6.6vw,6.4rem);font-weight:700;line-height:.91;letter-spacing:-.064em;overflow-wrap:anywhere}.about p{max-width:54ch;margin-top:20px;color:var(--muted);font-size:1.05rem}.contacts{display:flex;gap:26px 72px;flex-wrap:wrap;margin-top:30px}.contacts>*{display:grid;align-content:center;min-height:44px}.contacts span{color:var(--muted);margin-top:4px}.footer{margin-top:72px;padding-top:26px;padding-bottom:24px;border-top:1px solid var(--line);display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:20px}.top-link{display:flex;align-items:center;min-height:44px}.top-link{justify-self:end}.copyright{align-self:center}
dialog{inset:0;position:fixed;margin:0;padding:max(12px,env(safe-area-inset-top)) max(var(--pad),env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(var(--pad),env(safe-area-inset-left));width:100%;max-width:none;height:100%;height:100dvh;max-height:none;background:var(--bg);color:var(--ink);border:0;overscroll-behavior:contain;overflow:auto}dialog::backdrop{background:#0c0c0c}.modal-head{min-height:60px;display:flex;align-items:center;gap:20px;border-bottom:1px solid var(--line);padding-bottom:12px}.modal-head>a:first-child{margin-right:auto}.round{border:1px solid #828282;border-radius:50%;width:52px;height:52px;display:grid;place-items:center;flex:none}.round[aria-disabled=true]{opacity:.4;cursor:default}.round:not([aria-disabled=true]):hover{border-color:var(--accent)}.menu-body{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);gap:7vw;align-items:start;padding-block:clamp(26px,5vw,68px)}.menu-cats a{display:grid;grid-template-columns:32px auto 1fr;gap:8px;align-items:center;min-height:44px;padding-block:4px;text-transform:uppercase}.menu-cats strong{font-family:var(--display);font-size:clamp(1.8rem,5vw,5rem);line-height:.98;letter-spacing:-.055em}.menu-cats a[aria-current]{color:var(--accent)}.menu-cats a[aria-current]>span{text-decoration:underline;text-underline-offset:.35em}.menu-aside nav{display:flex;flex-wrap:wrap;gap:12px 20px;margin-top:30px}.menu-aside nav a{display:flex;min-height:44px;align-items:center}.modal-foot{padding-block:20px;border-top:1px solid var(--line)}
#gallery{background:#0c0c0c}#gallery .modal-head{position:sticky;top:0;z-index:2;background:#0c0c0c;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr) auto}#gallery h2{text-align:center;font-size:clamp(1rem,1.8vw,1.5rem);line-height:1.15;overflow-wrap:anywhere}#counter{text-align:right}.stage img{width:100%;height:100%;min-height:0;object-fit:contain;user-select:none}.gallery-details{max-width:1100px;margin:16px auto 0;color:var(--muted)}.gallery-details p{margin:8px 0}.retry{display:block;min-height:44px;margin:6px auto 0;text-decoration:underline}.shared{position:fixed;pointer-events:none;object-fit:cover;z-index:5;transform-origin:top left}
@media(max-width:1199px){:root{--pad:32px}.layout{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 18px}.row{display:contents}.position{grid-area:auto;width:auto;margin:0}.position:only-child{grid-column:1/-1}.hero-copy h2{font-size:clamp(2.7rem,7vw,6.5rem)}.category-nav .mono,.category-nav{font-size:.66rem}.menu-body{gap:4vw}}
@media(max-width:767px){:root{--pad:24px}#main,#work,#about,#contact{scroll-margin-top:66px}.topbar{height:62px;gap:8px}.brand,.modal-head .wordmark{width:116px}.name,.category-nav,.about-link{display:none!important}.header-actions{gap:10px;letter-spacing:0}.mast-meta span:last-child{display:none}.mast-meta{gap:4px;font-size:.62rem}.hero-copy h2{font-size:clamp(3.2rem,12vw,5.5rem)}.hero-N01,.layout{grid-template-columns:minmax(0,1fr);gap:32px}.archive-head{padding-block:25px 32px}.archive-head h1{font-size:clamp(2.65rem,12vw,5.75rem)}.archive-head .long-title{font-size:clamp(2.3rem,11vw,4rem)}.archive-meta{gap:6px 12px}.section-head{margin-bottom:20px}.about{grid-template-columns:1fr;gap:22px}.about img{width:min(144px,48%)}.footer{grid-template-columns:1fr;gap:12px;text-align:center}.top-link{justify-self:center}.index-button{grid-template-columns:42px 1fr auto;gap:6px}.round{width:44px;height:44px}.menu-body{grid-template-columns:1fr;gap:12px}.menu-cats a{grid-template-columns:26px auto 1fr}.menu-cats strong{font-size:clamp(1.6rem,7.7vw,3.45rem)}#menu-preview{display:none}.menu-aside nav{margin-top:0}#gallery .modal-head{gap:7px;grid-template-columns:minmax(0,1fr) auto auto}#gallery h2{grid-area:2/1/3/4;text-align:left}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.card .card-inner{transform:none!important}}



.hero {
 display: grid;
 grid-template-columns: minmax(0, 1fr) minmax(0, 2.25fr);
 align-items: center;
 gap: clamp(20px, 3vw, 48px);
 padding-block: 30px 16px;
}
.hero-copy h2 { font-size: clamp(2rem, 4.25vw, 4.65rem); }
.category-carousel { min-width: 0; }
.carousel-head {
 display: flex;
 align-items: center;
 justify-content: space-between;
 gap: 12px;
 margin-bottom: 14px;
}
.carousel-head h3 { color: var(--muted); }
.carousel-track {
 display: grid;
 grid-auto-flow: column;
 grid-auto-columns: calc((100% - 36px) / 2.15);
 gap: 12px;
 overflow-x: auto;
 overscroll-behavior-inline: contain;
 scroll-snap-type: x mandatory;
 scrollbar-color: #737373 var(--surface);
 scrollbar-width: thin;
 padding: 4px 0 12px;
 margin: 0;
 list-style: none;
}
.carousel-track li { min-width: 0; scroll-snap-align: start; }
.carousel-link { display: block; }
.carousel-link:focus-visible { outline-offset: -2px; }
.carousel-link .media { --ratio: 4/5; }
.carousel-label { display: grid; gap: 4px; padding: 10px 4px; }
.carousel-label strong { line-height: 1.2; }
.carousel-label .mono { color: var(--muted); }

.project-grid {
 display: grid;
 grid-template-columns: repeat(12, minmax(0, 1fr));
 grid-auto-rows: clamp(300px, 29vw, 465px);
 gap: 12px;
}
.project-tile { grid-column: span var(--span); min-width: 0; position: relative; }
.project-tile:focus-within { z-index: 1; }
.project-grid .card, .project-grid .card-inner { height: 100%; }
.project-grid .card { border: 1px solid #646464; overflow: clip; }
.project-grid .media { position: absolute; inset: 0; aspect-ratio: auto; }
.project-grid .card-inner::after {
 content: "";
 position: absolute;
 inset: 0;
 background: linear-gradient(180deg, #0008, transparent 24%, transparent 35%, #000e 93%);
 pointer-events: none;
}
.project-number, .project-copy { position: absolute; z-index: 1; }
.project-number {
 display: flex;
 align-items: center;
 gap: 12px;
 top: 18px;
 left: clamp(12px, 2vw, 28px);
 text-shadow: 0 1px 5px #000;
}
.project-number::after { content: ""; width: 30px; border-top: 1px solid currentColor; }
.project-copy { inset: auto clamp(12px, 2vw, 28px) 18px; }
.project-grid .card-title {
 padding: 0;
 font-family: Georgia, serif;
 font-size: clamp(1.35rem, 2.4vw, 2.55rem);
 line-height: 1.05;
 text-transform: uppercase;
}
.project-details {
 display: flex;
 justify-content: space-between;
 align-items: end;
 gap: 8px;
 margin-top: 14px;
}
.project-details > span:first-child { border-bottom: 1px solid currentColor; }
.project-details > span:last-child { white-space: nowrap; }
.topbar .name { text-transform: none; }



@media (min-width: 768px) {
 .menu-body { grid-template-columns: minmax(0, 1fr) minmax(0, 1.16fr); gap: clamp(24px, 5vw, 90px); }
 .menu-aside { grid-area: 1 / 2; min-width: 0; }
 .menu-cats { grid-area: 1 / 1; }
 #menu-preview .media { --ratio: 4/3; }
 .menu-cats strong { font-size: clamp(1.6rem, 4.35vw, 4.5rem); }
}
@media (max-width: 1023px) {
 .project-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
 .project-tile { grid-column: auto; }
 .project-tile:first-child:nth-last-child(odd) { grid-column: 1 / -1; }
}
@media (max-width: 767px) {
 .hero { grid-template-columns: minmax(0, 1fr); gap: 8px; padding-block: 24px 12px; }
 .hero-copy h2 { font-size: clamp(3rem, 11vw, 5.5rem); }
 .carousel-track { grid-auto-columns: 78%; }
 .project-grid { grid-template-columns: minmax(0, 1fr); grid-auto-rows: clamp(265px, 92vw, 420px); }
}

@media (any-pointer: fine) {
 body,
 button,
 a[href] {
  cursor: url("./assets/icons/cursor.svg") 2 2, auto;
 }
 button:not(:disabled):not([aria-disabled="true"]),
 a[href] {
  cursor: url("./assets/icons/cursor.svg") 2 2, pointer;
 }
}

.carousel-track.is-rotating {
 position: relative;
 display: block;
 width: 100%;
 margin-inline: auto;
 aspect-ratio: 2.05;
 min-height: 182px;
 padding: 0;
 overflow: clip;
 scroll-snap-type: none;
}
.carousel-track.is-rotating li {
 position: absolute;
 inset: 0 auto auto 23%;
 width: 54%;
 transform: translateX(calc(var(--slide-offset) * 76%)) scale(.76);
 opacity: .55;
 transition: transform 560ms var(--expo), opacity 420ms ease;
}
.carousel-track.is-rotating li[inert] { opacity: 0; }
.carousel-track.is-rotating li.slide-wrap { transition: none; }
.carousel-track.is-rotating li[data-position="0"] {
 z-index: 1;
 opacity: 1;
 transform: translateX(0) scale(1);
}
.carousel-track.is-rotating .media { --ratio: 3/2; }
.carousel-track.is-rotating .media > img { object-position: center; }
.carousel-track.is-rotating .carousel-label { text-align: center; }
@media (max-width: 767px) {
 .carousel-track.is-rotating { aspect-ratio: 1.65; }
 .carousel-track.is-rotating li { left: 18%; width: 64%; }
 .carousel-track.is-rotating li:not([data-position="0"]) .carousel-label { visibility: hidden; }
}

.carousel-head h3 { flex: 1; text-align: center; }
.carousel-arrow { width: 44px; height: 44px; }

.design-carousel .carousel-link { width: 100%; }
.design-carousel .carousel-label { font-size: .875rem; }
.design-carousel .carousel-track.is-rotating {
 aspect-ratio: auto;
 min-height: 0;
 padding-bottom: calc(39% + 62px);
}
.design-carousel + #about { margin-top: clamp(24px, 3vw, 44px); }
@media (max-width: 767px) {
 .design-carousel .carousel-track.is-rotating { padding-bottom: calc(46% + 66px); }
}

.explore-categories {
 min-height: 44px;
 padding-inline: 8px;
 font: inherit;
 text-transform: inherit;
 text-underline-offset: .35em;
}
.explore-categories:is(:hover, :focus-visible) { text-decoration: underline; }

/* The slides are positioned absolutely. Reserve room for the photo,
   caption, and hover scale rather than for an empty fixed-ratio box. */
.hero .carousel-track.is-rotating {
 aspect-ratio: auto;
 min-height: 0;
 padding-bottom: calc(46% + 54px);
}
@media (min-width: 768px) {
 .hero-copy { align-self: start; padding-top: 58px; }
 .hero .carousel-track.is-rotating { padding-bottom: calc(42% + 54px); }
 .hero .carousel-track.is-rotating .media { --ratio: 1.4; }
}
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
 .category-carousel .carousel-link {
  transform-origin: center top;
  transition: transform 260ms var(--expo);
 }
 .category-carousel .carousel-link:hover { transform: scale(1.07); }
}

.design-carousel .section-head {
 display: grid;
 grid-template-columns: minmax(0, 1fr);
 justify-items: center;
 gap: 12px;
}
.design-carousel .section-head h2 {
 color: var(--ink);
 font: 700 clamp(1.65rem, 4.6vw, 4rem)/1.02 var(--display);
 letter-spacing: -.045em;
 text-align: center;
}
.design-carousel .section-head a {
 justify-self: end;
}

.design-carousel .carousel-link .media > img { object-fit: contain; }

/* With three slides, the far card wraps directly to the opposite edge. */
.design-carousel .carousel-track.is-rotating li.slide-wrap {
 animation: design-slide-in 560ms var(--expo);
}
@keyframes design-slide-in {
 from {
  transform: translateX(calc(var(--slide-offset) * 152%)) scale(.76);
  opacity: 0;
 }
}

#about .section-head,
#contact .section-head,
#contact .contacts {
 justify-content: center;
 text-align: center;
}
.about {
 justify-content: center;
 grid-template-columns: minmax(112px, 300px) minmax(0, 660px);
}
#contact .contact-title { text-align: center; }
#contact .contacts { font-size: clamp(.75rem, .95vw, .875rem); }

@media (max-width: 767px) {
 .about {
  grid-template-columns: minmax(0, 1fr);
  justify-items: center;
  text-align: center;
 }
 .about p { margin-inline: auto; }
}

@media (any-hover: hover) and (any-pointer: fine) and (prefers-reduced-motion: no-preference) {
 .project-grid .card:is(:hover, :focus-visible) .card-inner {
  transform: translateY(-3px) scale(1.07);
  transition: transform 260ms var(--expo);
 }
}

.hero-copy h2 > span { display: block; }

@media (prefers-reduced-motion: no-preference) {
 .home-entrance .mast-meta {
  animation: entrance-text .65s .18s var(--expo) both;
 }
 .home-entrance .hero-copy h2 > span {
  animation: entrance-text .84s var(--expo) both;
 }
 .home-entrance .hero-copy h2 > span:nth-child(1) { animation-delay: .26s; }
 .home-entrance .hero-copy h2 > span:nth-child(2) { animation-delay: .36s; }
 .home-entrance .hero-copy h2 > span:nth-child(3) { animation-delay: .46s; }
 .home-entrance .hero-copy .kicker {
  animation: entrance-text .7s .56s var(--expo) both;
 }
 .home-entrance .hero .category-carousel {
  animation: entrance-photos 1.12s .25s var(--expo) both;
 }
 .home-entrance .hero .category-carousel:focus-within {
  animation: none;
 }
}

@keyframes entrance-text {
 from { opacity: 0; filter: blur(9px); transform: translateY(var(--reveal-text-offset, 14px)) scale(var(--reveal-text-scale, 1)); }
 to { opacity: 1; filter: none; transform: none; }
}
@keyframes entrance-photos {
 from { opacity: 0; transform: translateY(var(--reveal-photo-offset, 20px)) scale(.97); }
 to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: no-preference) {
 .reveal-pending:not(:focus-within) { opacity: 0; }
 .reveal-enter:not(:focus-within) {
  --reveal-text-scale: .95;
  animation: entrance-text .8s var(--reveal-delay, 0ms) var(--expo) backwards;
 }
 .masthead.reveal-enter:not(:focus-within) { animation: none; }
 .project-tile.reveal-enter:not(:focus-within),
 .carousel-track.reveal-enter:not(:focus-within) {
  animation-name: entrance-photos;
 }
}

.reveal-from-top {
 --reveal-text-offset: -14px;
 --reveal-photo-offset: -20px;
}
body { text-shadow: 0 0 10px color-mix(in srgb, currentColor 22%, transparent); }
button { text-shadow: inherit; }
h1, h2, h3, .contact-title {
 text-shadow: 0 0 18px color-mix(in srgb, currentColor 24%, transparent);
}

.category-nav.has-indicator [aria-current] { border-color: transparent; }
.category-nav.has-indicator::after {
 content: "";
 position: absolute;
 bottom: -1px;
 left: 0;
 width: var(--indicator-width, 0px);
 height: 2px;
 background: var(--accent);
 pointer-events: none;
 transform: translateX(var(--indicator-x, 0px));
}
.category-nav.indicator-ready::after {
 transition: transform 650ms ease-in-out, width 650ms ease-in-out;
}

@media (any-hover: hover) and (any-pointer: fine) and (prefers-reduced-motion: no-preference) {
 :is(h1, h2, h3, p, a, button, .name, .mast-meta > *, .archive-meta > *, .contacts > div):not(.round, .card, .carousel-link, .masthead h1, .mast-discipline, .archive-head h1, :has(button)) {
  transition: scale 220ms ease-out;
 }
 :is(h1, h2, h3, p, a, button, .name, .mast-meta > *, .archive-meta > *, .contacts > div):not(.round, .card, .carousel-link, .masthead h1, .mast-discipline, .archive-head h1, :has(button)):hover {
  scale: 1.035;
 }
}


.masthead .wordmark { display: block; }
@media (prefers-reduced-motion: no-preference) {
 :is(.home-entrance .masthead, .masthead.reveal-enter):not(.reveal-pending) .wordmark-letter {
  animation: wordmark-type 90ms ease-out var(--letter-delay) backwards;
 }
 :is(.home-entrance .masthead, .masthead.reveal-enter):not(.reveal-pending) {
  --point-delay: 1155ms;
 }
 .wordmark-point {
  animation: wordmark-type 90ms ease-out var(--point-delay, 0ms) backwards,
   wordmark-blink 2.4s calc(var(--point-delay, 0ms) + 1s) ease-in-out infinite;
 }
}
@keyframes wordmark-type {
 from { opacity: 0; }
 to { opacity: 1; }
}
@keyframes wordmark-blink {
 0%, 66%, 100% { opacity: 1; }
 80% { opacity: .22; }
}

@media (prefers-reduced-motion: no-preference) {
 .is-decoding { position: relative; }
 .is-decoding > .decode-original { opacity: 0; }
 .is-decoding > .decode-overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: clip;
 }
}
@media (prefers-reduced-motion: reduce) {
 .decode-overlay { display: none; }
}

@media (prefers-reduced-motion: no-preference) {
 .contact-title.reveal-enter:not(:focus-within) {
  animation: entrance-text .8s var(--reveal-delay, 0ms) var(--expo) backwards,
   contact-hop 620ms calc(var(--reveal-delay, 0ms) + 380ms) ease-in-out;
 }
 .contacts.reveal-enter > *,
 .footer.reveal-enter .copyright {
  animation: contact-hop 620ms calc(var(--reveal-delay, 0ms) + var(--hop-delay, 220ms)) ease-in-out;
 }
 .contacts.reveal-enter > :nth-child(2) { --hop-delay: 300ms; }
 .contacts.reveal-enter > :nth-child(3) { --hop-delay: 380ms; }
}

@keyframes contact-hop {
 0%, 100% { translate: 0 0; }
 36% { translate: 0 -6px; }
 64% { translate: 0 1px; }
 82% { translate: 0 -1px; }
}

#gallery .viewer {
 display: grid;
 gap: 12px;
 max-width: 1500px;
 margin: 12px auto 0;
}
#gallery .stage {
 display: grid;
 place-items: center;
 height: clamp(160px, calc(100dvh - 200px), 1100px);
 min-width: 0;
 overflow: clip;
 text-align: center;
 touch-action: pan-y pinch-zoom;
}
.gallery-navigation {
 display: grid;
 grid-template-columns: 44px minmax(0, 1fr) 44px;
 align-items: center;
 gap: clamp(10px, 2vw, 24px);
 width: min(100%, 880px);
 margin-inline: auto;
}
.gallery-navigation .round { width: 44px; height: 44px; }
#gallery-position {
 width: 100%;
 min-width: 0;
 height: 36px;
 margin: 0;
 accent-color: var(--accent);
 cursor: ew-resize;
 touch-action: pan-y;
}
@media (max-width: 767px) {
 #gallery .stage { height: clamp(120px, calc(100dvh - 232px), 760px); }
}

@media (prefers-reduced-motion: no-preference) {
 .mast-meta .mast-discipline { animation: discipline-lamp 2.4s ease-in-out infinite; }
}
@keyframes discipline-lamp {
 0%, 100% { color: var(--ink); text-shadow: 0 0 7px #f1efe8b3, 0 0 18px #f1efe866; }
 52% { color: var(--muted); text-shadow: none; }
}

@media (prefers-reduced-motion: no-preference) {
 .masthead .wordmark,
 .archive-head h1 { animation: wordmark-lamp 2.4s ease-in-out infinite; }
}
.archive-head h1 { text-shadow: none; }
@keyframes wordmark-lamp {
 0%, 100% { scale: 1.018; filter: drop-shadow(0 0 7px #f1efe875) drop-shadow(0 0 20px #f1efe84d); }
 52% { scale: 1; filter: drop-shadow(0 0 0 #f1efe800) drop-shadow(0 0 0 #f1efe800); }
}
