@font-face{font-family:Geist;src:url('assets/Geist.woff2') format('woff2');font-weight:100 900;font-display:swap}@font-face{font-family:'Geist Mono';src:url('assets/GeistMono.woff2') format('woff2');font-weight:100 900;font-display:swap}
:root{color-scheme:light;--paper:#f7f7f3;--ink:#242621;--muted:#73766c;--line:#dce0d4;--accent:#557445;--mono:'Geist Mono',monospace;--sans:Geist,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.55}body:before{content:'';position:fixed;inset:0;background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(69,80,53,.025) 3px,rgba(69,80,53,.025) 4px);pointer-events:none;z-index:-1}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:4px}button,select{font:inherit;color:inherit}button{cursor:pointer}a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:450}h2{font-size:21px;line-height:1.25;letter-spacing:-.035em}h3{font-size:14px}.skip{position:fixed;top:-100px;left:20px;z-index:10;background:var(--paper);padding:10px}.skip:focus{top:10px}.sidebar{position:fixed;inset:0 auto 0 0;width:245px;padding:32px 26px;display:flex;flex-direction:column;border-right:1px solid var(--line);overflow-y:auto;background:rgba(247,247,243,.94)}.identity{font-size:24px;letter-spacing:-.055em;line-height:1.13;position:relative;display:block;width:max-content}.identity-dot{font-size:14px;color:var(--accent);position:absolute;right:-36px;top:2px}.sidebar-intro{font-size:12px;line-height:1.55;margin:18px 0 38px;color:var(--muted)}.index-heading{font-family:var(--mono);font-size:10px;color:var(--muted);display:flex;justify-content:space-between;gap:8px;margin-bottom:12px}nav{display:grid;gap:6px}nav a{font-size:12px;line-height:1.4;display:flex;gap:10px;padding:4px 0;color:var(--muted);transition:color .15s}nav a span{font-family:var(--mono);font-size:10px;color:#93988c;min-width:15px;padding-top:2px}nav a:hover,nav a[aria-current]{color:var(--ink)}nav a[aria-current] span{color:var(--accent)}.sidebar-bottom{display:grid;gap:5px;font-size:11px;padding-top:30px;margin-top:auto}.mobile-jump{display:none}main{margin-left:245px;padding:31px 34px 24px;max-width:1540px}.intro{padding-bottom:48px;border-bottom:1px solid var(--line);margin-bottom:40px}.intro-top{display:flex;justify-content:space-between;gap:12px;font:10px var(--mono);color:var(--muted);margin-bottom:44px}.intro h1{font-size:clamp(29px,3vw,43px);font-weight:400;letter-spacing:-.05em;line-height:1.13}.intro-copy{display:grid;grid-template-columns:1.15fr 1fr;gap:54px;margin-top:24px;max-width:750px;font-size:13px}.intro-copy p:last-child{color:var(--muted)}.project-section{display:grid;grid-template-columns:minmax(185px,26%) minmax(0,1fr);gap:30px;margin-bottom:86px;scroll-margin-top:25px}.project-number{font:10px var(--mono);color:var(--muted);display:flex;gap:12px;align-items:center;margin-bottom:13px}.project-number span:first-child{color:var(--accent)}.project-copy h2{margin-bottom:13px}.meta{font:10px/1.6 var(--mono);color:var(--muted);margin-bottom:20px}.project-copy .journey{font-size:13px;line-height:1.6;max-width:315px}.focus{font-size:12px;color:var(--accent);margin-top:20px;line-height:1.5}.steps{font-size:10px;padding:14px 0 0;list-style:none;display:grid;gap:4px;color:var(--muted)}.steps li{display:flex;gap:10px}.steps span{font-family:var(--mono);font-size:9px;opacity:.7}.project-links{display:grid;gap:7px;margin-top:22px;font-size:11px}.text-button{padding:0;border:0;background:none;font-size:11px;text-align:left;width:max-content}.text-button:hover{text-decoration:underline;text-underline-offset:4px}.project-links .text-button{color:var(--muted)}.project-notes{margin-top:18px;font-size:11px;color:var(--muted);display:grid;gap:4px}.project-visual .category{font:10px/1.5 var(--mono);color:var(--muted);margin-bottom:14px;min-height:15px}.media-button{display:block;width:100%;padding:0;border:0;text-align:left;background:#050505;overflow:hidden;border-radius:5px}.crop{display:block;width:100%;position:relative;overflow:hidden;background:#050505;aspect-ratio:var(--ratio)}.crop img{position:absolute;width:var(--image-width);max-width:none;left:var(--image-left);top:var(--image-top);height:auto;transition:filter .2s}.media-button:hover img{filter:brightness(1.08)}.visual-caption{display:flex;justify-content:space-between;gap:16px;margin-top:10px;font:9px/1.5 var(--mono);color:var(--muted)}.motion-demo{margin-top:18px;font-size:11px}.motion-demo summary{cursor:pointer;width:max-content;color:var(--accent)}.motion-demo video{width:100%;display:block;margin-top:12px;border-radius:5px;background:#050505;max-height:600px}.standalone-video{width:100%;border-radius:5px;background:#050505;display:block}.about{border-top:1px solid var(--line);padding-top:44px;margin:20px 0 70px;display:grid;grid-template-columns:1fr 1fr;gap:60px;scroll-margin-top:30px}.eyebrow{font:10px var(--mono);color:var(--muted)}.about h2{font-size:27px;margin:20px 0 18px}.about p{font-size:13px;max-width:310px}.background h3{font:10px var(--mono);color:var(--muted);margin-bottom:16px}.background dl{margin:0 0 35px;display:grid;gap:16px}.background dt{font-size:13px}.background dd{margin:2px 0 0;font-size:11px;color:var(--muted)}.background .text-button{margin-top:20px}.contact-links{display:flex;flex-wrap:wrap;gap:18px;margin-top:30px;font-size:11px}footer{border-top:1px solid var(--line);padding:18px 0 0;display:flex;justify-content:space-between;font:10px var(--mono);color:var(--muted)}dialog{padding:20px;max-width:calc(100vw - 40px);width:1300px;max-height:calc(100dvh - 40px);border:1px solid #333;border-radius:6px;background:#050505;color:#eee}dialog::backdrop{background:rgba(18,20,15,.78)}.dialog-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:14px}.dialog-bar h2{font-size:13px;letter-spacing:0}.dialog-bar button{font-size:12px;border:0;background:transparent;color:#ddd;padding:6px}dialog img{display:block;width:100%;height:auto}dialog a{display:inline-block;font-size:11px;color:#aaa;margin-top:14px}
@media(min-width:1500px){.sidebar{width:285px;padding:36px}main{margin-left:285px;padding:35px 45px}.project-section{grid-template-columns:260px minmax(0,1fr);gap:50px}}
@media(max-width:1050px){.sidebar{width:215px;padding:26px 20px}main{margin-left:215px;padding:28px 24px}.project-section{grid-template-columns:minmax(165px,30%) minmax(0,1fr);gap:20px}.intro-copy{gap:25px}.identity{font-size:22px}}
@media(max-width:760px){html{scroll-padding-top:20px}.sidebar{position:relative;width:100%;padding:22px 22px 18px;overflow:visible;border-right:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:14px}.identity{font-size:21px}.identity br{display:none}.identity-dot{right:-27px}.sidebar-intro{font-size:10px;margin:0;text-align:right}.sidebar-intro br{display:none}.index-heading,nav{display:none}.sidebar-bottom{display:flex;gap:16px;flex-wrap:wrap;padding-top:0;margin:0;font-size:10px;grid-column:1/-1}.sidebar-bottom a:first-child{display:none}.mobile-jump{display:block;grid-column:1/-1;width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:3px;background:var(--paper);font-size:11px}main{margin-left:0;padding:24px 22px}.intro{padding-bottom:32px;margin-bottom:30px}.intro-top{margin-bottom:28px;font-size:9px}.intro h1{font-size:32px}.intro-copy{grid-template-columns:1fr;gap:12px;margin-top:20px;max-width:430px;font-size:12px}.project-section{display:flex;flex-direction:column;gap:22px;margin-bottom:58px}.project-copy .journey{max-width:100%;font-size:13px}.project-copy h2{font-size:23px}.meta{margin-bottom:15px}.focus{margin-top:12px}.steps{padding-top:10px}.project-links{margin-top:14px;display:flex;flex-wrap:wrap;gap:10px 20px}.project-notes{margin-top:12px}.project-visual .category{font-size:9px}.about{grid-template-columns:1fr;gap:35px;padding-top:32px;margin-bottom:50px}.about h2{font-size:25px}.about p{max-width:100%}dialog{padding:12px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Reference layout: fixed index, concise description, large project image. */
:root{--paper:#fff;--ink:#171717;--muted:#171717;--line:#ececec}
body{font-size:13px;background:#fff}body:before{display:none}
.sidebar{width:25%;padding:20px;border:0;background:#fff;display:block}
.reference-intro{font-size:13px;line-height:1.4;margin-bottom:46px}.reference-intro a:hover{text-decoration:underline}
nav{gap:0}nav a{font-size:13px;line-height:1.25;padding:1px 0;gap:4px;color:var(--ink)}nav a span{font:inherit;color:inherit;min-width:0;padding:0}
.sidebar-bottom{padding-top:32px;margin:0;gap:0;font-size:13px}
main{margin-left:25%;padding:20px;max-width:none}
.project-section{grid-template-columns:32% minmax(0,1fr);gap:20px;margin-bottom:74px}
.project-copy h2{font-size:13px;line-height:1.35;letter-spacing:0;margin-bottom:16px;font-weight:400}
.project-copy .journey{font-size:13px;line-height:1.25;max-width:100%}
.project-links{margin-top:16px;gap:4px;font-size:13px}.project-links .text-button{color:var(--ink);font-size:13px}
.project-visual .category{font:13px/1.35 var(--sans);color:var(--ink);margin-bottom:16px}
.media-button,.standalone-video{border-radius:10px}.text-button{font-size:13px}
.about{margin-top:0;padding-top:25px}.about h2{font-size:20px}.about .eyebrow{display:none}
@media(min-width:1500px){.sidebar{width:25%;padding:20px}main{margin-left:25%;padding:20px}.project-section{grid-template-columns:32% minmax(0,1fr);gap:20px}}
@media(max-width:1050px) and (min-width:761px){.sidebar{width:25%;padding:20px}main{margin-left:25%;padding:20px}.project-section{grid-template-columns:32% minmax(0,1fr);gap:20px}}
@media(max-width:760px){.sidebar{position:relative;width:100%;padding:20px;display:block}.reference-intro{margin-bottom:20px}.sidebar-bottom{display:flex;padding-top:16px;gap:16px}.sidebar-bottom a:first-child{display:block}main{margin:0;padding:20px}.mobile-jump{margin-top:15px;background:#fff}.project-section{display:flex;gap:24px;margin-bottom:55px}.project-copy h2{font-size:15px}.project-copy .journey{font-size:13px}.project-links{display:flex;gap:16px}.project-visual .category{font-size:12px}}

:root{--accent:#171717}#slide-links{font-size:11px;color:#aaa}

/* Dark treatment drawn from the main portfolio. */
:root{color-scheme:dark;--paper:#08080d;--ink:#e0e0e5;--muted:#b5b5bf;--line:#34343d;--accent:#99c9ff}
body{background-color:#08080d;--full-portfolio-gradient:linear-gradient(to bottom,rgba(193,157,236,.14) 0%,rgba(153,85,240,.17) 20%,rgba(111,0,35,.16) 37%,rgba(9,12,55,.16) 52%,rgba(92,5,34,.14) 64%,rgba(39,99,220,.18) 67%,rgba(193,151,245,.20) 67.3%,rgba(52,11,44,.12) 71%,rgba(0,124,189,.16) 84%,rgba(169,121,225,.15) 100%);background-image:var(--full-portfolio-gradient);background-attachment:fixed;background-repeat:no-repeat;color:var(--ink)}
body:before{display:block;z-index:0;background:repeating-linear-gradient(to bottom,transparent 0,transparent 4px,rgba(255,255,255,.035) 4px,rgba(255,255,255,.035) 5px)}
.sidebar{background:transparent;z-index:2}main{position:relative;z-index:1}
.project-links .text-button,.project-links a,.motion-demo summary{color:#99c9ff}
.project-links .text-button:hover,.project-links a:hover,.motion-demo summary:hover{color:#cce4ff}
nav a,nav a span,.project-visual .category{color:var(--muted)}nav a:hover,nav a[aria-current]{color:#fff}
.mobile-jump{background:#15131e;color:var(--ink);border-color:var(--line)}
.site-micrographics{position:fixed;inset:0;pointer-events:none;z-index:3;color:#b9d9ff;opacity:.55}
.site-micrographics .mark{position:absolute;width:13px;height:13px;background:linear-gradient(currentColor,currentColor) center/1px 11px no-repeat,linear-gradient(currentColor,currentColor) center/11px 1px no-repeat}
.site-micrographics .mark:nth-child(1){top:8px;left:8px}.site-micrographics .mark:nth-child(2){top:8px;right:8px}.site-micrographics .mark:nth-child(3){bottom:8px;left:8px}.site-micrographics .mark:nth-child(4){bottom:8px;right:8px}
.site-micrographics .ticks{position:absolute;top:48%;right:7px;width:5px;height:57px;background:repeating-linear-gradient(to bottom,currentColor 0,currentColor 1px,transparent 1px,transparent 7px)}
.project-visual .category:after{content:'';display:inline-block;margin-left:12px;width:17px;height:7px;background:repeating-linear-gradient(to right,#99c9ff 0,#99c9ff 1px,transparent 1px,transparent 4px);opacity:.6;vertical-align:middle}
@media(max-width:760px){.sidebar{background:transparent}.mobile-jump{background:#15131e}.site-micrographics .ticks{display:none}}

/* A gentle oscillation of one scan-line interval. */
body::before{
  inset:-6px 0;
  animation:scan-line-breathe 6s ease-in-out infinite alternate;
  will-change:transform;
}
@keyframes scan-line-breathe{
  from{transform:translateY(-1.5px);opacity:.88}
  to{transform:translateY(1.5px);opacity:1}
}
@media(prefers-reduced-motion:reduce){
  body::before{animation:none;transform:none;will-change:auto}
}

/* More breathing room at the top of the page. */
.sidebar{padding-top:40px}
main{padding-top:40px}
@media(min-width:1500px){.sidebar,main{padding-top:40px}}
@media(max-width:1050px) and (min-width:761px){.sidebar,main{padding-top:40px}}
@media(max-width:760px){.sidebar{padding-top:36px}main{padding-top:28px}}
/* Simple project pages and media at its natural aspect ratio. */
.uncropped-image,.uncropped-video{display:block;width:100%;height:auto;max-width:100%;object-fit:contain;border-radius:8px;background:#050505}
.media-link{display:block;overflow:visible;border-radius:8px}.project-copy h2 a{color:inherit}.motion-toggle{border:0;background:none;color:#99c9ff;font-size:11px;padding:0;margin-top:10px}
.lab-sidebar{margin-top:26px}.lab-sidebar h2{font-size:13px;letter-spacing:0;margin-bottom:9px}.lab-heading{font-size:16px;margin:10px 0 35px;letter-spacing:0}
main.simple-detail{width:min(850px,100%);margin:0 auto;padding:50px 32px 70px}.detail-back{display:inline-block;color:#99c9ff;font-size:12px;margin-bottom:32px}.simple-detail h1{font-size:23px;line-height:1.35;margin-bottom:10px;letter-spacing:-.025em}.detail-meta{font-size:11px;color:var(--muted);margin-bottom:18px}.detail-description{font-size:14px;line-height:1.65;max-width:680px;margin-bottom:28px}.detail-media{display:grid;gap:26px}.detail-media p{font-size:14px;line-height:1.6}.detail-links{display:grid;gap:9px;margin-top:30px;font-size:12px;color:#99c9ff}.detail-objects{display:grid;gap:14px;margin-top:24px}.detail-objects small{color:var(--muted)}
@media(max-width:760px){main.simple-detail{padding:36px 22px}.lab-sidebar{display:none}}
.mobile-menu-toggle{display:none}
dialog.mobile-menu{inset:0 0 0 auto;margin:0;width:min(340px,88vw);max-width:none;height:100dvh;max-height:none;border:0;border-left:1px solid #34343d;border-radius:0;padding:26px 24px;background:#14111d;color:#e0e0e5;overflow-y:auto}
.mobile-menu::backdrop{background:rgba(0,0,0,.6)}.mobile-menu-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px;font-size:12px;color:#b5b5bf}.mobile-menu-close{background:none;border:0;font-size:29px;line-height:1;color:#e0e0e5;padding:4px 8px}.mobile-menu h2{font-size:13px;margin:24px 0 12px;letter-spacing:0}.mobile-menu nav{display:grid;gap:10px}.mobile-menu nav a{font-size:13px;line-height:1.4}.mobile-menu-contacts{display:grid;gap:14px;margin-top:30px;padding-top:24px;border-top:1px solid #34343d;font-size:13px}
@media(max-width:760px){.sidebar{padding-right:70px}.reference-intro{margin-bottom:0}.sidebar>.sidebar-bottom,.sidebar>.lab-sidebar,.sidebar>.mobile-jump{display:none}.mobile-menu-toggle{display:block;position:absolute;right:20px;top:32px;width:36px;height:36px;padding:0;border:0;background:none;color:#b9d9ff;font-size:30px;line-height:36px;cursor:pointer}main{padding-top:22px}}

.asset-gallery{display:grid;gap:20px}.asset-window{position:relative;aspect-ratio:var(--asset-ratio);overflow:hidden;background:#000;border-radius:8px}.asset-window img{position:absolute;width:var(--asset-width);max-width:none;height:auto;left:var(--asset-left);top:var(--asset-top)}.medal-assets{grid-template-columns:1fr 1.15fr;align-items:start}.medal-assets .asset-window:first-child{grid-row:span 2}.detail-media .medal-assets{gap:25px}@media(max-width:500px){.medal-assets{grid-template-columns:1fr}.medal-assets .asset-window:first-child{grid-row:auto;max-width:310px;width:100%;justify-self:center}}

/* Keep the original compact presentation footprint, without deck writing. */
.asset-gallery {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  width: 100%;
  aspect-ratio: 16 / 9;
  padding: 18px;
  overflow: hidden;
  background: #000;
  border-radius: 10px;
}
.asset-gallery .asset-window {
  flex: 1 1 0;
  width: auto;
  max-width: 100%;
  max-height: 100%;
  border-radius: 4px;
}
.medal-assets .asset-window:first-child {
  flex: 0 0 26%;
  width: 26%;
  grid-row: auto;
}
.medal-assets .asset-window:nth-child(2) { flex: 0 0 38%; }
.medal-assets .asset-window:nth-child(3) { flex: 0 0 24%; }
.detail-media .asset-gallery { gap: 18px; }
@media (max-width: 500px) {
  .asset-gallery { padding: 10px; gap: 8px; }
  .medal-assets .asset-window:first-child {
    width: 26%;
    max-width: none;
    flex: 0 0 26%;
  }
  .detail-media .asset-gallery { gap: 8px; }
}

.asset-gallery { container-type: size; }
.asset-gallery .asset-window {
  flex: 0 1 auto;
  width: min(100%, calc((100cqh - 36px) * var(--asset-ratio)));
  height: auto;
}
.asset-gallery:has(.asset-window:nth-child(2)) .asset-window {
  max-width: 38%;
}
@media (max-width: 500px) {
  .asset-gallery .asset-window {
    width: min(100%, calc((100cqh - 20px) * var(--asset-ratio)));
  }
}

/* Light portfolio theme. Media retains its own framing. */
:root {
  color-scheme: light;
  --paper: #fff;
  --ink: #232326;
  --muted: #55545b;
  --line: #d6d5da;
  --accent: #2455b5;
  --micro-blue: #2763dc;
}
body {
  background-color: var(--paper);
  background-image: linear-gradient(180deg, rgba(153, 85, 240, .038) 0%, rgba(170, 68, 114, .028) 37%, rgba(91, 97, 166, .018) 54%, rgba(39, 99, 220, .033) 69%, rgba(0, 124, 189, .033) 87%, rgba(169, 121, 225, .026) 100%);
  color: var(--ink);
}
body::before {
  background: repeating-linear-gradient(to bottom, transparent 0 4px, rgba(0, 0, 0, .047) 4px 5px);
}
:root nav a[data-project-nav] {
  width: fit-content;
  max-width: calc(100% + 10px);
  margin-inline-start: -5px;
  padding-inline: 5px;
  transition: none;
}
:root nav a[data-project-nav] span { color: var(--accent); }
:root nav a[data-project-nav]:is(:hover, :focus-visible, [aria-current="location"]) {
  background: #000;
  color: #fff;
  text-decoration: none;
}
:root nav a[data-project-nav]:is(:hover, :focus-visible, [aria-current="location"]) span {
  color: inherit;
}
:root .project-links a,
:root .project-links .text-button,
:root .motion-demo summary,
:root .motion-toggle,
:root .detail-back,
:root .detail-links,
:root .eval-figure figcaption a,
:root .model-context a,
:root #slide-links { color: var(--accent); }
:root .project-links a:hover,
:root .project-links .text-button:hover,
:root .motion-demo summary:hover { color: #000; }
:root nav a:hover, :root nav a[aria-current] { color: var(--ink); }
:root .site-micrographics, :root .mobile-menu-toggle { color: var(--micro-blue); }
:root .site-micrographics { opacity: .8; }
.project-visual .category::after {
  background: repeating-linear-gradient(to right, var(--micro-blue) 0 1px, transparent 1px 4px);
  opacity: .85;
}
:root .mobile-jump, :root dialog.mobile-menu, :root #slide-dialog {
  background: var(--paper);
  border-color: var(--line);
  color: var(--ink);
}
:root .mobile-menu-bar { color: var(--muted); }
:root .mobile-menu-close, :root #close-dialog { color: var(--ink); }
:root .mobile-menu-contacts { border-color: var(--line); }

/* A small type lift on the index and project pages. */
body, .reference-intro, nav a, .sidebar-bottom, .lab-sidebar h2,
.project-copy h2, .project-copy .journey, .project-links,
.project-links .text-button, .project-visual .category, .about p,
.background dt, .mobile-menu nav a, .mobile-menu h2, .mobile-menu-contacts {
  font-size: 14px;
}
.background dd, .contact-links, #slide-links { font-size: 12px; }
.background h3 { font-size: 11px; }
.about h2 { font-size: 21px; }
.lab-heading { font-size: 17px; }
.mobile-menu-bar, .detail-back, .detail-links { font-size: 13px; }
.detail-meta { font-size: 12px; }
.simple-detail h1 { font-size: 24px; }
.detail-description, .detail-media p, .simple-detail .case-note p,
.simple-detail .mcp-design figcaption p, .simple-detail .model-context p {
  font-size: 15px;
}
.simple-detail .case-note h2, .simple-detail .mcp-design figcaption h2 { font-size: 17px; }
.simple-detail .custom-design figcaption h2 { font-size: 16px; }
.simple-detail .custom-design figcaption p, .simple-detail .eval-intro { font-size: 14px; }
.simple-detail .detail-design figcaption { font-size: 13px; }
.simple-detail .eval-graphs h2 { font-size: 20px; }
.simple-detail .model-context h2 { font-size: 19px; }
.simple-detail .eval-figure figcaption { font-size: 12px; }

@media (max-width: 760px) {
  .project-copy h2 { font-size: 16px; }
  .project-visual .category { font-size: 13px; }
}

/* A soft lavender strip sweeps upward through the scan lines. */
body::after {
  content: "";
  position: fixed;
  z-index: 0;
  inset: 100% 0 auto;
  height: clamp(48px, 9vh, 90px);
  pointer-events: none;
  background: linear-gradient(to bottom, transparent, rgba(169, 132, 232, .24) 50%, transparent);
  opacity: 0;
  animation: lavender-sweep 4s linear infinite;
}
@keyframes lavender-sweep {
  0% { transform: translateY(0); opacity: 0; }
  10%, 82% { opacity: .55; }
  95%, 100% { transform: translateY(calc(-100vh - 100%)); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  body::after { display: none; animation: none; }
}
