/* Current 2.1 — exhibit rebuild layer. Loaded last on gallery, now, posts and post.
   One section per project; each keeps the software's own palette and one signature face. */

.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* ============ DOT/AIR — Orbital Earth 1.1 ============ */
.da-exhibit,.da-dialog,.da-detail,.wa--dotair,.milestone--dot-air{--da-wide:'acumin-pro-wide','Dot Air Display','Archivo Black',var(--zh-display),sans-serif;--da-type:var(--da-wide)}
#project-dot-air :is(.da-masthead h2,.da-display h3,.da-way,.da-coordinate>strong,.da-airports button b,.da-release-heading>strong),
.da-detail h2,.wa--dotair .wa-title{font-family:var(--da-wide);font-weight:900;font-synthesis:none}
#project-dot-air .da-display h3{font-size:clamp(72px,10.6vw,196px);line-height:.84;letter-spacing:-.045em}
#project-dot-air .da-way{font-size:clamp(28px,4.1vw,76px);letter-spacing:-.04em;padding:12px 32px 18px 18px}
#project-dot-air .da-way::after{content:none}
#project-dot-air .da-masthead h2{font-size:28px;letter-spacing:-.04em}
#project-dot-air .da-coordinate>strong{font-size:40px;letter-spacing:-.04em}
#project-dot-air .da-airports button b{font-size:17px;letter-spacing:-.01em}
html[lang=en] #project-dot-air :is(.da-section-heading h3,.da-dna h3,.da-history-title){font-family:var(--da-wide);font-weight:900;letter-spacing:-.045em}

/* halftone sky field (canvas drawn by dot-air-motion.js) */
#project-dot-air .da-hero[data-field=on]{background-image:none}
.da-field{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;display:block}

/* console: viewpoints · departure board · orbit controls */
#project-dot-air .da-console{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:end;gap:24px clamp(20px,3vw,48px)}
.da-board{justify-self:center;display:flex;align-items:flex-end;flex-wrap:wrap;gap:12px 14px;color:var(--da-paper)}
.da-board-cell{display:flex;flex-direction:column;gap:9px}
.da-board-cell>span{font:500 12px/1.2 var(--body);color:#f5f3ebb3;white-space:nowrap}
.da-board-cell--wide{margin-left:clamp(4px,1vw,14px)}
.da-flaps{display:flex;gap:3px}
.da-flaps i{position:relative;display:grid;place-items:center;width:27px;height:40px;border-radius:5px;background:#30322d;color:var(--da-paper);font:900 24px/1 var(--da-wide);font-style:normal;font-synthesis:none;overflow:hidden;transform-origin:50% 50%;box-shadow:inset 0 -1px 0 #0000004d}
.da-flaps i::after{content:'';position:absolute;inset:50% 0 auto;height:1px;background:#20221f}
.da-board[data-route=true] .da-board-cell:nth-child(3) .da-flaps i{color:var(--da-yellow)}
.da-flaps i.is-flipping{animation:da-flap .12s cubic-bezier(.3,.7,.4,1)}
@keyframes da-flap{from{transform:perspective(160px) rotateX(-78deg);filter:brightness(.55)}to{transform:none;filter:none}}
.da-board-arc{position:relative;width:46px;height:24px;margin-bottom:8px;border-top:2px dotted #f5f3eb80;border-radius:50% 50% 0 0}
.da-board-arc i{position:absolute;left:0;top:0;width:8px;height:8px;margin:-5px 0 0 -4px;border-radius:50%;background:var(--da-yellow);opacity:0;offset-path:path('M4 24 Q 27 -8 50 24');offset-rotate:0deg}
.da-board[data-route=true] .da-board-arc i{opacity:1}
@media (prefers-reduced-motion:no-preference){html:not([data-site-motion=off]) .da-board[data-route=true] .da-board-arc i{left:0;top:0;margin:-4px 0 0 -4px;animation:da-hop 2.6s cubic-bezier(.45,0,.55,1) infinite}}
@keyframes da-hop{0%{offset-distance:0%}70%,100%{offset-distance:100%}}
.da-board-arc i{offset-distance:50%}
@media (max-width:1360px){
  #project-dot-air .da-console{grid-template-columns:minmax(0,1fr) auto}
  #project-dot-air .da-board{grid-column:1/-1;grid-row:2;justify-self:start}
}

/* fleet atlas: magnetic halftone discs */
#project-dot-air .da-tail-disc[data-canvas=on]{background-image:none;transform:none!important;transition:none}
#project-dot-air .da-tail-disc canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
#project-dot-air .da-tail img{transition:translate .7s cubic-bezier(.16,1,.3,1),rotate .7s cubic-bezier(.16,1,.3,1)}
#project-dot-air .da-tail:is(:hover,:focus-visible) img{translate:0 -14px;rotate:-3deg}

/* Flight DNA: the onboarding questions as one dotted strand */
#project-dot-air .da-dna{grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);align-items:start;gap:clamp(32px,5vw,96px)}
.da-dna-copy{display:flex;flex-direction:column;align-items:flex-start;position:sticky;top:120px}
.da-dna-copy>a{margin-top:32px;display:inline-flex;align-items:center;gap:12px;min-height:52px;padding:0 24px;border-radius:999px;background:var(--da-ink);color:var(--da-paper);font:600 13px var(--body);text-decoration:none;transition:translate .3s cubic-bezier(.16,1,.3,1)}
.da-dna-copy>a:hover{translate:0 -2px}
.da-dna-copy>a .ic{width:16px;height:16px}
.da-dna-board{display:flex;flex-direction:column;gap:22px;padding:clamp(22px,2.6vw,40px);border-radius:28px;background:var(--da-paper);color:var(--da-ink)}
.da-dna-intro,.da-dna-note{margin:0;font:400 14px/1.8 var(--body);color:#54564e;max-width:52ch}
.da-dna-note{font-size:13px}
.da-genes{display:flex;flex-direction:column}
.da-gene{display:grid;grid-template-columns:minmax(120px,190px) auto minmax(0,1fr);align-items:center;gap:6px 18px;min-height:52px;border-top:1px solid #20221f1f}
.da-gene:last-child{border-bottom:1px solid #20221f1f}
.da-gene-name{font:400 14px/1.4 var(--body)}
html:not([lang=en]) .da-gene-name{letter-spacing:.04em}
.da-gene-dots{display:flex;gap:2px}
.da-allele{position:relative;width:36px;height:40px;padding:0;border:0;background:none;cursor:pointer;color:var(--da-ink)}
.da-allele::before{content:'';position:absolute;left:50%;top:50%;width:14px;height:14px;translate:-50% -50%;border-radius:50%;border:2px solid currentColor;transition:width .45s cubic-bezier(.16,1,.3,1),height .45s cubic-bezier(.16,1,.3,1),background-color .25s,scale .6s cubic-bezier(.16,1,.3,1) calc(var(--g)*55ms + var(--i)*28ms)}
.da-allele:hover::before{background:#20221f22}
.da-allele:is([aria-checked=true],[aria-pressed=true])::before{width:26px;height:26px;background:var(--da-red);border-color:var(--da-red)}
.da-gene:nth-child(even) .da-allele:is([aria-checked=true],[aria-pressed=true])::before{background:var(--da-ink);border-color:var(--da-ink)}
.da-allele:focus-visible{outline:2px solid #285b79;outline-offset:-2px;border-radius:12px}
.da-gene-value{justify-self:end;text-align:right;font:500 13px/1.4 var(--body);color:#54564e}
@media (prefers-reduced-motion:no-preference){html:not([data-site-motion=off]) .da-dna-board:not(.is-in) .da-allele::before{scale:0}}
.da-dna-strand{display:flex;align-items:flex-end;gap:clamp(10px,1.6vw,22px);padding:6px 0 2px}
.da-dna-strand span{display:flex;flex-direction:column-reverse;gap:5px}
.da-dna-strand i{width:12px;height:12px;border-radius:50%;border:1.5px solid #20221f59;transition:background-color .35s,border-color .35s,scale .45s cubic-bezier(.16,1,.3,1)}
.da-dna-strand i.on{background:var(--da-ink);border-color:var(--da-ink);scale:1.2}
.da-dna-strand span:nth-child(odd) i.on{background:var(--da-red);border-color:var(--da-red)}

/* edition journal: boarding passes */
.da-ticket{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,250px);grid-template-areas:"main stub" "main code";margin-bottom:clamp(28px,3vw,44px);border:1px solid var(--da-ink);border-radius:22px;background:var(--da-paper)}
.da-ticket>.da-release-heading{grid-area:main;padding:clamp(22px,2.6vw,40px);margin:0}
.da-ticket>.da-release-meta{grid-area:stub;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:14px;margin:0;padding:clamp(22px,2.6vw,34px) clamp(20px,2vw,30px) 0;border-left:2px dashed #20221f4d}
.da-ticket>.da-release-meta time{font:500 clamp(20px,1.8vw,26px)/1 var(--mono);color:var(--da-ink);letter-spacing:-.02em}
.da-ticket-barcode{grid-area:code;align-self:end;display:flex;align-items:flex-end;gap:3px;padding:18px clamp(20px,2vw,30px) clamp(20px,2.2vw,30px);border-left:2px dashed #20221f4d;color:var(--da-ink)}
.da-ticket-barcode i{width:6px;height:calc(var(--h)*6px);background:radial-gradient(circle,currentColor 2.1px,transparent 2.6px) 0 100%/6px 6px repeat-y}
.da-ticket::before,.da-ticket::after{content:'';position:absolute;right:calc(clamp(200px,17.4vw,250px) - 14px);width:26px;height:26px;border-radius:50%;background:var(--da-paper);border:1px solid var(--da-ink);clip-path:inset(50% 0 0 0)}
.da-ticket::before{top:-14px}
.da-ticket::after{bottom:-14px;clip-path:inset(0 0 50% 0)}
#project-dot-air .da-release-heading>strong{width:clamp(110px,10vw,150px);height:clamp(110px,10vw,150px);font-size:clamp(44px,4vw,60px);line-height:1;letter-spacing:-.05em;color:var(--da-ink)}
.da-release--current .da-ticket{background:var(--da-ink);color:var(--da-paper)}
.da-release--current .da-ticket :is(h4,p,.da-overline,time){color:var(--da-paper)!important}
.da-release--current .da-ticket .da-release-heading>strong{color:var(--da-ink)}
.da-release--current .da-ticket .da-release-heading>strong::before{border-color:var(--da-red)}
.da-release--current .da-ticket>.da-release-meta,.da-release--current .da-ticket-barcode{border-left-color:#f5f3eb4d;color:var(--da-yellow)}
#project-dot-air .da-release--current .da-ticket .da-release-meta span{background:var(--da-red);border-color:var(--da-red);color:var(--da-paper)}
.da-release--current .da-ticket::before,.da-release--current .da-ticket::after{background:var(--da-paper)}
@media (max-width:760px){
  .da-ticket{grid-template-columns:1fr;grid-template-areas:"main" "stub" "code"}
  .da-ticket>.da-release-meta,.da-ticket-barcode{border-left:0}
  .da-ticket>.da-release-meta{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;border-top:2px dashed #20221f4d;padding-top:18px}
  .da-release--current .da-ticket>.da-release-meta{border-top-color:#f5f3eb4d}
  .da-ticket::before,.da-ticket::after{display:none}
}

/* windows: Now entries + post cover */
.wa--dotair .wa-dots{position:absolute;inset:0;z-index:0;background-image:radial-gradient(#f5f3eb 2.4px,transparent 2.9px);background-size:24px 24px;opacity:.85;-webkit-mask-image:linear-gradient(to top,#000 10%,transparent 92%);mask-image:linear-gradient(to top,#000 10%,transparent 92%)}
.wa--dotair .wa-title{letter-spacing:-.045em;line-height:.9}
.wa-board{position:absolute;z-index:4;left:clamp(18px,6cqw,44px);bottom:clamp(16px,5cqw,32px);display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;margin:0;padding:9px 11px;border-radius:12px;background:#20221f;color:var(--da-paper)}
.wa-board .da-flaps i{width:17px;height:25px;border-radius:3px;font-size:13px}
.wa-board .da-flaps:nth-of-type(2) i{color:var(--da-yellow)}
.wa-board>b{width:16px;height:2px;background:radial-gradient(circle,#f5f3eb 1px,transparent 1.4px) 0 0/4px 2px}
.wa-board>em{font-style:normal;margin-left:4px}
@container wa (aspect-ratio > 1){
  .wa--dotair .wa-dots{-webkit-mask-image:linear-gradient(to left,#000 20%,transparent 75%);mask-image:linear-gradient(to left,#000 20%,transparent 75%)}
  .wa-board{left:auto;right:clamp(18px,3cqw,40px);bottom:clamp(16px,3cqw,36px)}
  .wa-board .da-flaps i{width:20px;height:30px;font-size:15px}
}
@media (max-width:760px){
  #project-dot-air .da-dna{grid-template-columns:minmax(0,1fr)}
  .da-dna-copy{position:static}
  .da-gene{grid-template-columns:1fr auto;padding:8px 0}
  .da-gene-name{grid-column:1/-1}
  .da-gene-dots{grid-column:1}
  .da-allele{width:34px}
  .da-flaps i{width:22px;height:34px;font-size:17px}
  .da-board-cell--wide{margin-left:0;flex-basis:100%}
  #project-dot-air .da-console{grid-template-columns:minmax(0,1fr)}
  #project-dot-air .da-board{grid-row:auto}
}
/* DOT/AIR — DNA ordering and strand scale (beats room-level .da-dna p rules) */
#project-dot-air .da-dna-copy>h3{order:1;margin:0 0 20px}
#project-dot-air .da-dna-copy>p{order:2;margin:0}
#project-dot-air .da-dna-copy>a{order:3}
#project-dot-air .da-dna-copy>.da-overline{order:4;margin-top:28px;color:#20221fb3}
#project-dot-air .da-dna-board>.da-dna-intro{order:0;font:400 14px/1.8 var(--body);color:#54564e}
#project-dot-air .da-dna-board>.da-genes{order:1}
#project-dot-air .da-dna-board>.da-dna-strand{order:2}
#project-dot-air .da-dna-board>.da-dna-note{order:3;font:400 13px/1.7 var(--body);color:#54564e}
#project-dot-air .da-dna-strand{justify-content:space-between;padding:18px 4px 4px;border-top:1px solid #20221f1f;min-height:150px}
#project-dot-air .da-dna-strand span{gap:7px}
#project-dot-air .da-dna-strand i{width:16px;height:16px}
.da-flaps i::after{background:#20221fb3}
.da-ticket>.da-release-heading{grid-template-columns:auto minmax(0,1fr);align-items:center}
@media (max-width:760px){.da-ticket>.da-release-heading{grid-template-columns:1fr}}
.wa-board .da-flaps i{font-weight:700}
.wa-board .da-flaps i::after{background:#20221f80}
.wa--dotair .wa-title{letter-spacing:-.025em}
@container wa (aspect-ratio > 1){.wa--dotair .wa-dots{-webkit-mask-image:linear-gradient(to left,#000 30%,transparent 88%);mask-image:linear-gradient(to left,#000 30%,transparent 88%)}}

/* ============ Roseraie — the violet atelier 0.2 ============ */
.rose-petal-host{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.rose-petal-field{position:absolute;inset:0;width:100%;height:100%;display:block}
#project-roseraie .rose-hero>.rose-petals{display:none}
/* silver filigree corners that draw in */
.rose-frame{position:relative}
.rose-filigree{position:absolute;z-index:6;width:clamp(64px,7vw,104px);height:auto;fill:none;stroke:#a993c2;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;overflow:visible}
.rose-filigree circle{fill:#b29770;stroke:none;opacity:0;transition:opacity .6s .9s}
.rose-filigree path{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.6s cubic-bezier(.45,0,.2,1)}
.rose-filigree path:nth-child(2){transition-delay:.15s}.rose-filigree path:nth-child(3),.rose-filigree path:nth-child(4){transition-delay:.45s}.rose-filigree path:nth-child(5),.rose-filigree path:nth-child(6){transition-delay:.7s}
.rose-frame.is-drawn .rose-filigree path{stroke-dashoffset:0}
.rose-frame.is-drawn .rose-filigree circle{opacity:1}
.rose-filigree--tl{left:-14px;top:-14px}
.rose-filigree--tr{right:-14px;top:-14px;scale:-1 1}
.rose-filigree--bl{left:-14px;bottom:-14px;scale:1 -1}
.rose-filigree--br{right:-14px;bottom:-14px;scale:-1 -1}
#project-roseraie .rose-v2-preview{overflow:visible}
.rose-frame--stage{position:relative}

/* porcelain medallions */
#project-roseraie .rose-medallions{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,3vw,56px);padding:clamp(40px,5vw,80px) 0;border:0;margin:0 var(--gutter)}
#project-roseraie .rose-medallions>.rose-medallion{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:0;text-align:center;aspect-ratio:200/260;padding:clamp(26px,3.6vw,54px) clamp(18px,2.4vw,36px) 0;border:0;background:radial-gradient(ellipse at 50% 32%,#fffdff 0,#f6eefc 52%,#ecdff6 100%);border-radius:50%;box-shadow:0 30px 60px -34px #5b3f7d66,inset 0 0 0 1px #ffffffb3}
#project-roseraie .rose-medallions>.rose-medallion+.rose-medallion{border-left:0}
.rose-oval{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#a993c2;stroke-width:1.2;overflow:visible;pointer-events:none}
.rose-oval ellipse:first-child{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 2s cubic-bezier(.45,0,.2,1)}
.rose-oval-beads{stroke:#b29770;stroke-width:3;stroke-linecap:round;stroke-dasharray:0 9;opacity:0;transition:opacity .8s 1.1s}
.rose-medallion.is-drawn .rose-oval ellipse:first-child{stroke-dashoffset:0}
.rose-medallion.is-drawn .rose-oval-beads{opacity:.8}
#project-roseraie .rose-medallion>span{order:2;margin-top:auto;font:italic 400 clamp(15px,1.3vw,19px)/1.3 var(--rv-latin);color:#8d70a3}
#project-roseraie .rose-medallion>strong{order:3;margin:8px 0 6px;font-family:var(--rv-han);font-size:clamp(19px,1.9vw,28px);font-weight:400;color:#5d4378;letter-spacing:.04em}
html[lang=en] #project-roseraie .rose-medallion>strong{font:500 clamp(15px,1.4vw,20px)/1.2 var(--rv-latin);letter-spacing:.06em}
#project-roseraie .rose-medallion>p{order:4;margin:0 0 clamp(36px,4.6vw,66px);font:400 14px/1.6 var(--body);color:#766385;max-width:22ch}
.rose-emblem{order:1;position:relative;display:grid;place-items:center;width:62%;aspect-ratio:1;margin-top:4%}
/* the room: a nine-petal rose that blooms */
.rose-bloom i{position:absolute;left:50%;top:50%;width:34%;height:46%;margin:-46% 0 0 -17%;border-radius:50% 50% 50% 50%/62% 62% 38% 38%;background:linear-gradient(170deg,#f6ecff,#a684c9);transform-origin:50% 100%;rotate:calc(var(--petal)*40deg);scale:.2;opacity:.2;transition:scale 1.1s cubic-bezier(.16,1,.3,1) calc(var(--petal)*70ms),opacity .8s calc(var(--petal)*70ms);box-shadow:inset 0 -6px 12px #7a58a033}
.rose-bloom i:nth-child(even){background:linear-gradient(170deg,#fff6fb,#c6a3dc)}
.rose-bloom b{position:absolute;width:18%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 40% 35%,#fff,#b29770);box-shadow:0 0 0 6px #ffffff80}
.rose-medallion.is-drawn .rose-bloom i{scale:1;opacity:.92}
.rose-medallion--room:hover .rose-bloom{rotate:20deg}
.rose-bloom{transition:rotate 1.6s cubic-bezier(.16,1,.3,1)}
/* the model: Sol, Astra, Luna */
.rose-orbs{display:flex!important;align-items:center;justify-content:center;gap:clamp(6px,1vw,14px)}
.rose-orbs button{display:grid;place-items:center;width:clamp(48px,4.6vw,66px);aspect-ratio:1;padding:0;border:1px solid #cbb4e5;border-radius:50%;background:#fffaffcc;color:#8b6cab;cursor:pointer;transition:scale .5s cubic-bezier(.16,1,.3,1),background-color .3s,color .3s,box-shadow .3s}
.rose-orbs svg{width:58%;height:58%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.rose-orbs button[aria-checked=true]{scale:1.22;background:#79589d;border-color:#79589d;color:#fff;box-shadow:0 10px 24px -8px #5b3f7d99,0 0 0 5px #e6d9f4}
.rose-orbs button[aria-checked=true] svg{fill:#ffffff33}
.rose-orbs button:focus-visible{outline:2px solid #5d4378;outline-offset:4px}
/* the weave: three threads braid */
.rose-weave svg{width:100%;height:auto;fill:none;stroke-width:2.2;stroke-linecap:round;overflow:visible}
.rose-weave path:nth-of-type(1){stroke:#8b6cab}.rose-weave path:nth-of-type(2){stroke:#c6a3dc}.rose-weave path:nth-of-type(3){stroke:#b29770}
.rose-weave path{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.8s cubic-bezier(.45,0,.2,1)}
.rose-weave path:nth-of-type(2){transition-delay:.25s}.rose-weave path:nth-of-type(3){transition-delay:.5s}
.rose-weave circle{fill:#5d4378;opacity:0;transition:opacity .5s 1.6s}
.rose-medallion.is-drawn .rose-weave path{stroke-dashoffset:0}
.rose-medallion.is-drawn .rose-weave circle{opacity:1}
@media (prefers-reduced-motion:no-preference){html:not([data-site-motion=off]) .rose-medallion--weave.is-drawn:hover .rose-weave path{stroke-dasharray:.06 .03;animation:rose-thread 2.4s linear infinite}}
@keyframes rose-thread{to{stroke-dashoffset:-.9}}

/* the closing rosette, drawn by scroll */
#project-roseraie .rose-v2-closing{position:relative;overflow:hidden}
.rose-closing-art{position:absolute;right:clamp(-120px,-4vw,-20px);top:50%;width:clamp(300px,34vw,520px);translate:0 -50%;pointer-events:none;z-index:0}
#project-roseraie .rose-v2-closing>:not(.rose-closing-art){position:relative;z-index:1}
.rose-rosette{width:100%;height:auto;fill:none;stroke:#9f83bf;stroke-width:1.1;stroke-linecap:round;overflow:visible}
.rose-rosette path{stroke-dasharray:1;stroke-dashoffset:calc(1 - clamp(0,(var(--draw,1) * 7 - var(--ring)) / 1.6,1))}
.rose-rosette path:first-child{stroke:#b29770}
#project-roseraie .rose-v2-closing .rose-actions{align-self:end}

/* windows */
.wb--roseraie .rose-petal-host{z-index:3}
@media (max-width:760px){
  #project-roseraie .rose-medallions{grid-template-columns:minmax(0,1fr);justify-items:center}
  #project-roseraie .rose-medallions>.rose-medallion{width:min(100%,300px)}
  .rose-closing-art{opacity:.45;right:-120px}
  .rose-filigree{width:58px}
}
#project-roseraie .rose-medallions{justify-items:center}
#project-roseraie .rose-medallions>.rose-medallion{width:min(100%,340px);padding:13% 11% 0}
#project-roseraie .rose-medallion>p{margin-bottom:17%}
#project-roseraie .rose-medallion>span{margin-top:auto;font-size:16px}
.rose-emblem{width:58%;margin-top:6%}
#project-roseraie .rose-v2-closing>.rose-closing-art{position:absolute;left:47%;right:auto;top:50%;width:clamp(260px,26vw,400px);translate:-50% -50%;opacity:.9}
#project-roseraie .rose-medallions>.rose-medallion{background:radial-gradient(ellipse at 50% 30%,#ffffff 0,#faf5fe 45%,#e9dbf4 100%);box-shadow:0 34px 60px -36px #5b3f7d80,inset 0 0 0 1px #fff}
@media (max-width:760px){#project-roseraie .rose-v2-closing>.rose-closing-art{left:auto;right:-90px;top:30%;translate:0 -50%;opacity:.35}}
#project-roseraie .rose-v2-closing>.rose-closing-art{grid-column:1/-1;grid-row:1}
#project-roseraie .rose-v2-closing>.rose-closing-art{left:50%;width:clamp(220px,19vw,290px);opacity:.8}

/* ============ Atlas — the Diploma constellation ============ */
.atlas-chart{position:absolute;inset:0;width:100%;height:100%;z-index:2;display:block}
.atlas-v2-plate--sky .atlas-v2-orrery{opacity:.35}
.atlas-v2-plate--sky .atlas-v2-sky-title,.atlas-v2-plate--sky .atlas-v2-sky-count{z-index:3}
.atlas-chart-legend{position:absolute;z-index:3;left:clamp(20px,4vw,56px);top:clamp(18px,3vw,36px);max-width:min(46ch,60%);margin:0;font:400 13px/1.6 var(--body);color:#e8d6b2;letter-spacing:0}
html:not([lang=en]) .atlas-chart-legend{letter-spacing:.03em}
.atlas-chart-legend{left:auto;top:auto;right:clamp(20px,4vw,56px);bottom:clamp(120px,13vw,170px);text-align:right;max-width:34ch}
@media (max-width:760px){.atlas-chart-legend{left:20px;right:20px;bottom:auto;top:16px;text-align:left;max-width:none}}

/* ============ CHROMA — signal scope ============ */
.chx-scope{grid-column:1/-1;position:relative;display:grid;grid-template-columns:1fr auto;gap:12px 20px;padding:clamp(16px,2vw,26px);border-radius:22px;background:#0d1a63;border:2px solid #ffffff2e}
.chx-scope canvas{grid-column:1/-1;display:block;width:100%;height:clamp(150px,15vw,230px)}
.chx-scope>.chx-pixel{font-size:12px;color:#e9f2ffcc}
.chx-scope>.chx-pixel:last-child{justify-self:end;color:#fff000}
.xr--chroma[data-chroma-channel=gpu] .chx-scope{background:#5d0a14}
.xr--chroma[data-chroma-channel=ram] .chx-scope{background:#14182f}

/* ============ ProjectLens — the loupe ============ */
.lnx-plate,.lnx-capture{position:relative}
.lnx-plate img,.lnx-capture img{cursor:zoom-in}
.lens-loupe{position:absolute;left:0;top:0;z-index:8;width:clamp(150px,13vw,210px);aspect-ratio:1;border-radius:50%;pointer-events:none;background-repeat:no-repeat;background-color:#0b1210;opacity:0;scale:.6;transition:opacity .25s,scale .45s cubic-bezier(.16,1,.3,1);box-shadow:0 0 0 2px #9df0c8,0 0 0 9px #9df0c829,0 26px 50px -18px #000c,inset 0 0 26px #9df0c855}
.lens-loupe i{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 32% 26%,#ffffff40,transparent 34%),conic-gradient(from 210deg,transparent 0 80%,#9df0c84d 92%,transparent)}
.is-looking>.lens-loupe{opacity:1;scale:1}
@media (hover:none){.lens-loupe{display:none}}

/* ============ AFTERIMAGE — trails and ghosts ============ */
.air-trails{position:absolute;inset:0;width:100%;height:100%;z-index:-1;mix-blend-mode:screen;pointer-events:none;display:block}
.air-ghost{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;pointer-events:none;mix-blend-mode:screen;z-index:1}

/* ============ Festival Toolkit — season weather + breathing bands ============ */
#project-festival-toolkit{position:relative}
#project-festival-toolkit>.xr-inner{position:relative;z-index:1}
.fsx-weather{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;display:block}
@media (prefers-reduced-motion:no-preference){
  html:not([data-site-motion=off]) .fsx-ribbons path{animation:fsx-breathe 7s ease-in-out infinite alternate;transform-box:view-box}
  html:not([data-site-motion=off]) .fsx-ribbons path:nth-child(odd){animation-duration:9s;animation-delay:-2s}
  html:not([data-site-motion=off]) .fsx-ribbons path:nth-child(3n){animation-duration:11s;animation-delay:-4s}
}
@keyframes fsx-breathe{from{transform:translateY(-10px) scaleY(.98)}to{transform:translateY(12px) scaleY(1.03)}}

/* ============ AXIOM — live least-squares figure ============ */
.axx-figure .axiom-observations>g{cursor:ns-resize;outline:none;touch-action:none}
.axx-figure .axiom-observations>g circle{transition:r .25s cubic-bezier(.16,1,.3,1)}
.axx-figure .axiom-observations>g:is(:hover,:focus-visible,.is-dragging) circle{r:7;fill:#d8ff2e;stroke:#2442e0;stroke-width:2}
.axx-figure .axiom-observations>g:focus-visible circle{stroke-width:3}
.axx-readout{display:flex;align-items:center;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;margin:6px 0 12px;padding:12px 14px;border-radius:12px;background:#f1f4ff}
.axx-readout p{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0;font:400 13px/1.4 var(--mono);color:#1a1f3a;font-variant-numeric:tabular-nums}
.axx-readout b{font-weight:600;color:#2442e0}
.axx-readout button{min-height:36px;padding:0 14px;border:1px solid #1a1f3a40;border-radius:999px;background:#fff;font:500 12px var(--body);color:#1a1f3a;cursor:pointer;opacity:.45;transition:opacity .3s}
.axx-figure.is-edited .axx-readout button{opacity:1}

/* ============ Folio — pages fan and turn ============ */
@media (hover:hover) and (prefers-reduced-motion:no-preference){
  html:not([data-site-motion=off]) .xr--folio .fox-stack:hover .fox-page{transform:translate(calc(var(--x) * 1.5),calc(var(--y) * 1.35)) rotate(calc(var(--r) * 1.6))}
  html:not([data-site-motion=off]) .xr--folio .fox-stack:hover .fox-page[style*="z-index"]{transform:none}
}
.xr--folio .fox-page::after{content:'';position:absolute;left:0;top:10px;bottom:10px;width:10px;border-radius:6px 0 0 6px;background:linear-gradient(90deg,#4a3a241f,transparent);pointer-events:none}

/* ============ NBA After Hours — shoot around ============ */
#project-nba-after-hours{position:relative;cursor:crosshair}
#project-nba-after-hours :is(a,button,figure){cursor:pointer}
.nba-court-fx{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;display:block}
.nba-shoot{position:absolute;z-index:3;right:var(--gutter,60px);bottom:clamp(170px,15vw,220px);display:flex;align-items:center;gap:14px;padding:10px 10px 10px 18px;border-radius:999px;background:#0c0e12d9;border:1px solid #d4ff4840;color:#e9f0ff;cursor:default}
.nba-shoot p{display:flex;align-items:baseline;gap:6px;margin:0;font:400 13px var(--mono);font-variant-numeric:tabular-nums}
.nba-shoot b{font:400 24px/1 var(--display);color:#d4ff48}
.nba-shoot small{margin-left:6px;font:400 12px var(--body);color:#e9f0ffa6}
.nba-shoot button{min-height:40px;padding:0 16px;border:0;border-radius:999px;background:#d4ff48;color:#0c0e12;font:600 13px var(--body);cursor:pointer}
.nba-shoot button:focus-visible{outline:2px solid #fff;outline-offset:3px}
@media (max-width:760px){.nba-shoot{left:20px;right:20px;bottom:76px;justify-content:space-between}}

/* ============ School Lab signatures ============ */
.nabat-specimen-breathe{position:relative}
.nabat-nfc{position:absolute;left:72%;top:58%;width:0;height:0;pointer-events:none;z-index:3}
.nabat-nfc b{position:absolute;left:-5px;top:-5px;width:10px;height:10px;border-radius:50%;background:#e8b23a;box-shadow:0 0 0 3px #fffdf6}
.nabat-nfc i{position:absolute;left:-12px;top:-12px;width:24px;height:24px;border-radius:50%;border:1.5px solid #2f5a43;opacity:0}
.nabat-nfc.is-ping i{animation:nabat-ping 1.8s cubic-bezier(.16,1,.3,1) forwards}
.nabat-nfc.is-ping i:nth-child(2){animation-delay:.22s}.nabat-nfc.is-ping i:nth-child(3){animation-delay:.44s}
@keyframes nabat-ping{0%{opacity:.9;scale:.4}100%{opacity:0;scale:5.5}}
#project-nerf{position:relative}
.nerf-rays{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}
.wis-cover{position:relative}
.wis-sonar{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}

/* ============ Window signatures (Now entries + Post covers): each plate answers a hover ============ */
@media (hover:hover) and (prefers-reduced-motion:no-preference){
  html:not([data-site-motion=off]) .wb--chroma:hover .wb-meter rect{animation:wb-meter .7s steps(2,jump-none) infinite alternate}
  html:not([data-site-motion=off]) .wb--chroma:hover .wb-meter rect:nth-child(3n){animation-duration:.5s}
  html:not([data-site-motion=off]) .wb--chroma:hover .wb-meter rect:nth-child(4n+1){animation-duration:.9s;animation-delay:-.3s}
  html:not([data-site-motion=off]) .wb--atlas .wb-orb svg g{transform-origin:100px 100px;transition:rotate 2.4s cubic-bezier(.16,1,.3,1)}
  html:not([data-site-motion=off]) .wb--atlas:hover .wb-orb svg g{rotate:-120deg}
  html:not([data-site-motion=off]) .wb--atlas .wb-orb img{transition:scale 1.6s cubic-bezier(.16,1,.3,1)}
  html:not([data-site-motion=off]) .wb--atlas:hover .wb-orb img{scale:1.08}
  html:not([data-site-motion=off]) .wb--lens .wb-lens{transition:scale .9s cubic-bezier(.34,1.56,.64,1),rotate .9s cubic-bezier(.16,1,.3,1)}
  html:not([data-site-motion=off]) .wb--lens:hover .wb-lens{scale:1.12;rotate:-8deg}
  html:not([data-site-motion=off]) :is(.wa--nabat:hover .nabat-circuit,.wa--nerf:hover .wa-rays,.wb--festival:hover :is(.wb-journey,.wb-garage),.wb--court:hover .wb-court,.wa--ib:hover svg,.wa--agents:hover svg) :is(path,line,polyline,circle){stroke-dasharray:7 5;animation:wb-trace 1.1s linear infinite}
  html:not([data-site-motion=off]) .wa--afterimage{overflow:hidden}
  html:not([data-site-motion=off]) .wa--afterimage::after{content:'';position:absolute;inset:-10% auto -10% -40%;width:30%;z-index:4;background:linear-gradient(100deg,transparent,#ff6a4a33 40%,#fff4ec66 50%,#ff6a4a33 60%,transparent);transform:skewX(-18deg);opacity:0;pointer-events:none}
  html:not([data-site-motion=off]) .wa--afterimage:hover::after{animation:wb-streak 1.1s cubic-bezier(.45,0,.2,1)}
  html:not([data-site-motion=off]) :is(.wb--folio,.wb--roseraie,.wb--wis,.wb--axiom,.wb--court-models) .wb-motif img{transition:scale 1.4s cubic-bezier(.16,1,.3,1),translate 1.4s cubic-bezier(.16,1,.3,1)}
  html:not([data-site-motion=off]) :is(.wb--folio,.wb--roseraie,.wb--wis,.wb--axiom,.wb--court-models):hover .wb-motif img{scale:1.05;translate:0 -6px}
  html:not([data-site-motion=off]) .wa--dotair:hover .wa-board{translate:0 -4px}
  .wa-board{transition:translate .5s cubic-bezier(.16,1,.3,1)}
}
@keyframes wb-meter{from{opacity:1}to{opacity:.25}}
@keyframes wb-trace{to{stroke-dashoffset:-24}}
@keyframes wb-streak{0%{left:-40%;opacity:0}20%{opacity:1}100%{left:120%;opacity:0}}

/* ============ 2.1 audit fixes ============ */
@media (max-width:760px){
  .jr-latest,html[lang=en] .jr-latest{font-size:12px;max-width:64px}
  .nba-shoot{position:relative;left:auto;right:auto;bottom:auto;margin:0 20px 28px}
}

/* ============ Current 2.0 — the release window (Now 030, post current-2) ============ */
.wa--current{--wa-bg:#0b0d26;--wa-fg:#e7ebf2;--wa-dim:#e7ebf2b8;background:#0b0d26}
.wa--current .wa-motif{inset:0;height:auto;overflow:hidden}
.wa--current .wa-motif canvas{display:block;width:100%;height:100%}
.wa--current .wa-type{justify-content:space-between}
.wa--current .wa-data span:first-child{color:var(--wa-fg)}
.wa--current .wa-head{margin-top:auto;max-width:none}
.wa--current .wa-title.wa-current-mark{display:flex;align-items:baseline;font:400 min(56cqw,58cqh)/.8 var(--display);letter-spacing:-.04em;color:var(--wa-fg);font-synthesis:none;margin-left:-.04em}
.wa--current .wa-current-dot{color:#ff5c9a;margin:0 -.04em}
.wa--current .wa-line{margin-top:clamp(12px,3.4cqw,20px);color:var(--wa-dim)}
@container wa (aspect-ratio > 1){
  .wa--current .wa-head{max-width:none}
  .wa--current .wa-title.wa-current-mark{font-size:min(30cqw,66cqh)}
}
.current-now-art{display:block}
.wa.wa--current .wa-motif{left:0;right:0;top:0;bottom:0;width:100%!important;height:100%!important;max-width:none;translate:none}
.wa--current .wa-line,.wa--current .wa-data>span{display:inline-block;width:fit-content;padding:3px 9px;margin-left:-9px;border-radius:6px;background:#0b0d26e6}
.wa--current .wa-data>span:last-child{margin-left:0;margin-right:-9px}

/* ============ DOT/AIR 1.2 + 2.0 ============ */
/* 1.2 Airline Identity: three fins rise from the dotted ground; the board reads carriers */
.wa--dotair-fins .da-fin-row{position:absolute;z-index:2;left:50%;bottom:24%;width:84%;translate:-50% 0;display:flex;align-items:flex-end;justify-content:center;gap:5%}
.wa--dotair-fins .da-fin{width:28%;height:auto;filter:drop-shadow(0 14px 18px #5d0c0866);transform-origin:50% 100%}
.wa--dotair-fins .da-fin:nth-child(2){width:33%}
@media (prefers-reduced-motion:no-preference){
  html:not([data-site-motion=off]) .wa--dotair-fins .da-fin{animation:da-fin-rise .9s cubic-bezier(.34,1.56,.64,1) calc(.25s + var(--i) * .14s) backwards}
  html:not([data-site-motion=off]) .wa--dotair-fins:hover .da-fin{animation:da-fin-sway 1.6s ease-in-out infinite alternate;animation-delay:calc(var(--i) * -.4s)}
}
@keyframes da-fin-rise{from{translate:0 60%;opacity:0}to{translate:0 0;opacity:1}}
@keyframes da-fin-sway{from{rotate:-3deg}to{rotate:3deg}}
@container wa (aspect-ratio > 1){.wa--dotair-fins .da-fin-row{left:auto;right:4%;width:52%;translate:none;bottom:18%}}

/* 2.0 The White Room: a glossy red dotted planet in a white gallery */
.wa--whiteroom{--wa-bg:#f6f5f1;--wa-fg:#111214;--wa-dim:#3c3d40;background:#f6f5f1;color:#111214}
.wa--whiteroom .wa-motif{inset:0;height:auto;overflow:hidden}
.wa--whiteroom .wa-title{font-family:'neue-haas-grotesk-display',var(--display);font-weight:500;letter-spacing:-.025em;line-height:.92;color:#111214;font-synthesis:none}
.wa--whiteroom .wa-data,.wa--whiteroom .wa-line{color:#3c3d40}
.wr-rules{position:absolute;inset:0;background:linear-gradient(#1112141a 1px,transparent 1px) 0 0/100% 20%,linear-gradient(90deg,#1112141a 1px,transparent 1px) 0 0/20% 100%}
.wr-planet{position:absolute;z-index:2;left:50%;top:66%;width:min(60cqw,46cqh);aspect-ratio:1;translate:-50% -50%;border-radius:50%;overflow:hidden;background:radial-gradient(circle at 34% 30%,#ff6d5e 0,#e5241b 36%,#b6130d 70%,#6a0705 100%);box-shadow:inset -14px -20px 36px #4f0402b0}
.wr-dots{position:absolute;inset:0;border-radius:50%;background-image:radial-gradient(#fff 24%,transparent 26%);background-size:14% 14%;background-position:0 0;-webkit-mask-image:radial-gradient(circle at 46% 44%,#000 52%,transparent 74%);mask-image:radial-gradient(circle at 46% 44%,#000 52%,transparent 74%)}
.wr-gloss{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 31% 25%,#ffffffc0 0,#ffffff00 19%),radial-gradient(circle at 70% 82%,#00000040 0,transparent 46%)}
.wr-floor{position:absolute;z-index:1;left:50%;top:calc(66% + min(30cqw,23cqh) + 2%);width:min(56cqw,42cqh);height:min(8cqw,6cqh);translate:-50% -50%;border-radius:50%;background:radial-gradient(closest-side,#11121442,transparent)}
.wr-sign{position:absolute;z-index:3;right:7%;top:30%;writing-mode:vertical-rl;font:400 15px/1 var(--zh-strong);letter-spacing:.32em;color:#111214}
.wr-sign i{display:block;width:7px;height:7px;margin:10px auto 0;border-radius:50%;background:#e5241b}
.wr-wall{position:absolute;inset:0;z-index:2;pointer-events:none;transition:opacity .6s}
.wr-wall i{position:absolute;border-radius:50%;background:#e5241b;translate:-50% -50%;animation:wr-stick .5s cubic-bezier(.34,1.56,.64,1) both}
.wr-wall.is-fading{opacity:0}
@keyframes wr-stick{from{scale:0}to{scale:1}}
@media (prefers-reduced-motion:no-preference){
  html:not([data-site-motion=off]) .wa--whiteroom:not(.is-in) .wa-motif{clip-path:circle(0% at 50% 66%)}
  html:not([data-site-motion=off]) .wa--whiteroom.is-in .wa-motif{animation:wr-open 1.2s cubic-bezier(.65,0,.15,1)}
  html:not([data-site-motion=off]) .wr-dots{animation:wr-spin 18s linear infinite}
  html:not([data-site-motion=off]) .wa--whiteroom:hover .wr-planet{animation:wr-bob 2.4s ease-in-out infinite}
}
@keyframes wr-open{from{clip-path:circle(0% at 50% 66%);background:#e5241b}to{clip-path:circle(150% at 50% 66%)}}
@keyframes wr-spin{to{background-position:-100% 0}}
@keyframes wr-bob{0%,100%{translate:-50% -50%}50%{translate:-50% -53%}}
@container wa (aspect-ratio > 1){.wr-planet{left:70%;top:52%;width:min(36cqw,64cqh)}.wr-floor{left:70%;top:calc(52% + min(18cqw,32cqh) + 2%);width:min(32cqw,58cqh)}.wr-sign{right:4%}}

/* 2.0 boarding pass: white gallery ticket, red planet seal */
.da-release--white.da-release--current .da-ticket{background:#fbfaf7;color:#111214;border-color:#111214}
.da-release--white.da-release--current .da-ticket :is(h4,p,.da-overline,time){color:#111214!important}
.da-release--white .da-ticket>.da-release-meta,.da-release--white .da-ticket-barcode{border-left-color:#11121433;color:#e5241b}
#project-dot-air .da-release--white.da-release--current .da-ticket .da-release-meta span{background:#e5241b;border-color:#e5241b;color:#fff}
#project-dot-air .da-release--white .da-release-heading>strong{color:#fff;font-family:'neue-haas-grotesk-display',var(--da-wide);font-weight:500;letter-spacing:-.03em}
.da-release--white .da-release-heading>strong::before{border:0!important;background:radial-gradient(circle at 31% 25%,#ffffffb0 0,#fff0 20%),radial-gradient(#fff 22%,transparent 24%) 0 0/18% 18%,radial-gradient(circle at 34% 30%,#ff6d5e,#e5241b 38%,#9e0f0a)!important;box-shadow:inset -8px -12px 20px #4f0402a0}
.da-release--white .da-ticket::before,.da-release--white .da-ticket::after{background:var(--da-paper);border-color:#111214}
@media (max-width:760px){.da-release--white .da-ticket>.da-release-meta{border-top-color:#11121433}}
.da-software--past{margin-top:18px;opacity:.92}
.wr-sign i{position:absolute;left:50%;top:100%;margin:10px 0 0 -3.5px}
#project-dot-air .da-release--white .da-release-heading>strong{text-shadow:0 2px 12px #6a0705cc}

/* ============ 代码影像 / Code films — 《没了我你依然拥有太阳》 ============ */
.smv{--sm-ink0:#05060a;--sm-ink1:#12141a;--sm-ink2:#2a2d35;--sm-ink3:#6b6f78;--sm-ink4:#b7bac0;--sm-paper:#ede6d6;--sm-cin:#c23a22;position:relative;isolation:isolate;padding:clamp(72px,8vw,140px) var(--gutter) clamp(64px,7vw,120px);background:var(--sm-ink0);color:var(--sm-paper);overflow:hidden}
.smv::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(120% 70% at 80% 0%,#c23a2214,transparent 60%),repeating-linear-gradient(90deg,#ede6d605 0 1px,transparent 1px 7px)}
.smv-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:24px clamp(32px,5vw,96px);align-items:end;margin-bottom:clamp(36px,4vw,64px)}
.smv-head h2{margin:0;font:400 clamp(46px,6.4vw,112px)/1.15 var(--zh-display);letter-spacing:.03em;color:var(--sm-paper)}
html[lang=en] .smv-head h2{font:400 clamp(44px,6vw,104px)/1 var(--display);letter-spacing:-.02em}
.smv-head p{margin:0;max-width:44ch;font:400 16px/1.9 var(--body);color:#ede6d6b8}
.smv-stage{position:relative;height:clamp(560px,82svh,940px);border-radius:4px;overflow:hidden;background:var(--sm-ink0);box-shadow:0 0 0 1px #ede6d61a,0 60px 120px -60px #000}
.smv-stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.smv-stage[data-stage=static]{background:#05060a url("./assets/projects/sun-mv/star.jpg") center/cover}
.smv-stage-top,.smv-stage-foot{position:absolute;left:clamp(20px,3vw,44px);right:clamp(20px,3vw,44px);z-index:2;display:flex;justify-content:space-between;gap:20px;pointer-events:none}
.smv-stage-top{top:clamp(18px,2.4vw,32px);font:400 12px/1.4 var(--mono);color:#ede6d699}
.smv-stage-foot{bottom:clamp(22px,3vw,44px);align-items:flex-end;flex-wrap:wrap}
.smv-name h3{margin:0;font:400 clamp(18px,1.6vw,24px)/1.3 var(--zh-strong);letter-spacing:.12em;color:var(--sm-paper)}
.smv-name p{margin:8px 0 0;font:400 13px/1.6 var(--body);color:#ede6d699}
.smv-actions{display:flex;gap:10px;flex-wrap:wrap;pointer-events:auto}
.smv-btn{display:inline-flex;align-items:center;gap:10px;min-height:46px;padding:0 20px;border:1px solid #ede6d659;border-radius:999px;background:#05060ab3;color:var(--sm-paper);font:500 13px var(--body);text-decoration:none;cursor:pointer;transition:background-color .3s,border-color .3s,color .3s}
.smv-btn:hover{border-color:var(--sm-paper)}
.smv-btn--main{background:var(--sm-paper);color:var(--sm-ink0);border-color:var(--sm-paper)}
.smv-btn--main:hover{background:#fff}
.smv-btn .ic{width:15px;height:15px}
.smv-btn:focus-visible,.smv-reel button:focus-visible,.smv-seg:focus-visible,.smv-sound:focus-visible{outline:2px solid var(--sm-cin);outline-offset:3px}
.smv-progress{position:absolute;left:0;right:0;bottom:0;height:2px;z-index:2;background:#ede6d614}
.smv-progress i{display:block;height:100%;width:calc(var(--title-progress,0) * 100%);background:linear-gradient(90deg,#ede6d6,var(--sm-cin))}
.smv-hint{position:absolute;z-index:2;right:clamp(20px,3vw,44px);top:clamp(44px,4.6vw,64px);margin:0;font:400 12px/1.5 var(--body);color:#ede6d680;pointer-events:none}
.smv-specs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));margin:clamp(28px,3vw,44px) 0 0;border-top:1px solid #ede6d61f}
.smv-specs>div{padding:18px 16px 0 0}
.smv-specs dt{font:400 clamp(22px,2.2vw,34px)/1 var(--display);color:var(--sm-paper);letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.smv-specs dd{margin:8px 0 0;font:400 12px/1.4 var(--body);color:#ede6d68c}
.smv-theater{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,300px);gap:clamp(24px,3vw,48px);margin-top:clamp(64px,7vw,120px);align-items:start;scroll-margin-top:120px}
.smv-screen-wrap{position:relative}
.smv-screen-rim{position:absolute;left:-8px;top:-8px;width:calc(100% + 16px);aspect-ratio:16/9;background:#ede6d6;filter:blur(7px);opacity:.3}
.smv-screen{position:relative;aspect-ratio:16/9;background:var(--sm-ink1);overflow:hidden}
.smv-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0}
.smv-video.is-front,.smv-video.is-tearing{opacity:1}
.smv-video.is-tearing{z-index:2}
.smv-seam{position:absolute;z-index:3;top:-4%;bottom:-4%;left:110%;width:10px;translate:-50% 0;background:linear-gradient(90deg,transparent,#ede6d6,#fff7e6,#ede6d6,transparent);filter:blur(3px);opacity:0;pointer-events:none}
.smv-screen-meta{display:flex;align-items:center;gap:14px;margin-top:16px;font:400 13px/1.4 var(--body);color:#ede6d6b3}
.smv-screen-meta [data-smv-tc]{margin-left:auto;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--sm-paper)}
.smv-sound{min-height:34px;padding:0 14px;border:1px solid #c23a2299;border-radius:999px;background:none;color:var(--sm-paper);font:500 12px var(--body);cursor:pointer}
.smv-sound[aria-pressed=true]{background:var(--sm-cin);border-color:var(--sm-cin)}
.smv-reel{list-style:none;margin:0;padding:0;border-top:1px solid #ede6d61f}
.smv-reel button{display:grid;grid-template-columns:52px 1fr auto;align-items:baseline;gap:10px;width:100%;min-height:52px;padding:14px 4px;border:0;border-bottom:1px solid #ede6d61a;background:none;color:#ede6d6b3;text-align:left;font:400 14px/1.45 var(--body);cursor:pointer;transition:color .25s,padding .4s cubic-bezier(.16,1,.3,1)}
.smv-reel button b{font:400 12px var(--mono);color:#ede6d666;font-variant-numeric:tabular-nums}
.smv-reel button em{font-style:normal;font-size:11px;color:var(--sm-cin)}
.smv-reel button:hover{color:var(--sm-paper);padding-left:10px}
.smv-reel button[aria-pressed=true]{color:var(--sm-paper)}
.smv-reel button[aria-pressed=true] b{color:var(--sm-cin)}
html:not([lang=en]) .smv-reel button span{letter-spacing:.04em}
.smv-map{margin-top:clamp(64px,7vw,120px)}
.smv-map-head{display:flex;justify-content:space-between;align-items:baseline;gap:20px;flex-wrap:wrap;margin-bottom:20px}
.smv-map-head h3{margin:0;font:400 clamp(24px,2.4vw,36px)/1.3 var(--zh-strong);letter-spacing:.04em}
html[lang=en] .smv-map-head h3{font:400 clamp(24px,2.4vw,36px)/1.2 var(--display);letter-spacing:-.01em}
.smv-map-head p{margin:0;font:400 13px/1.6 var(--body);color:#ede6d699}
.smv-map-bar{position:relative;display:flex;gap:2px;height:clamp(84px,9vw,128px)}
.smv-seg{position:relative;min-width:0;padding:0;border:0;background:linear-gradient(180deg,#2a2d35,#12141a);color:#ede6d6a6;cursor:pointer;overflow:hidden;transition:filter .3s}
.smv-seg span{position:absolute;left:8px;bottom:8px;font:400 12px/1.2 var(--body);white-space:nowrap}
.smv-seg.is-you{background:linear-gradient(180deg,#c23a22,#6b1b10)}
.smv-seg.is-you span{color:var(--sm-paper)}
.smv-seg:hover,.smv-seg.is-active{filter:brightness(1.45)}
.smv-seg.is-active{box-shadow:inset 0 -3px 0 var(--sm-paper)}
.smv-head-line{position:absolute;top:-10px;bottom:-10px;left:0;width:2px;background:var(--sm-paper);box-shadow:0 0 12px #ede6d6;pointer-events:none}
.smv-map-info{min-height:3.4em;margin:18px 0 0;max-width:72ch;font:400 14px/1.8 var(--body);color:#ede6d6b3}
.smv-map-info b{font:400 12px var(--mono);color:var(--sm-cin);margin-right:8px}
.smv-map-info span{color:var(--sm-paper);margin-right:6px}
.smv-notes{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,5vw,96px);margin-top:clamp(64px,7vw,120px);padding-top:clamp(40px,4vw,64px);border-top:1px solid #ede6d61f}
.smv-notes h3{margin:0 0 22px;font:400 clamp(22px,2vw,30px)/1.3 var(--zh-strong);letter-spacing:.04em}
html[lang=en] .smv-notes h3{font:400 clamp(22px,2vw,30px)/1.2 var(--display);letter-spacing:-.01em}
.smv-notes p{margin:0 0 16px;max-width:60ch;font:400 15px/1.9 var(--body);color:#ede6d6c7}
.smv-song dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 24px;margin:0 0 26px}
.smv-song dt{font:400 12px var(--body);color:#ede6d680}
.smv-song dd{margin:4px 0 0;font:400 15px/1.5 var(--body);color:var(--sm-paper)}
.smv-notes .smv-rights{padding-left:14px;border-left:1px solid var(--sm-cin);font-size:13px;color:#ede6d699}
.smv-make ol{list-style:none;margin:6px 0 0;padding:0;counter-reset:s}
.smv-make li{position:relative;padding:14px 0 14px 46px;border-top:1px solid #ede6d61a;counter-increment:s}
.smv-make li::before{content:counter(s);position:absolute;left:0;top:14px;width:30px;height:30px;border-radius:50%;border:1px solid #c23a22aa;display:grid;place-items:center;font:400 12px var(--mono);color:var(--sm-cin)}
.smv-make li b{display:block;font:400 16px/1.4 var(--zh-strong);letter-spacing:.06em;color:var(--sm-paper)}
html[lang=en] .smv-make li b{font:500 15px var(--body);letter-spacing:0}
.smv-notes .smv-make li p{margin:6px 0 0;font-size:14px;line-height:1.8}
.smv-foot{display:flex;flex-wrap:wrap;gap:12px 28px;margin-top:clamp(48px,5vw,80px)}
.smv-foot a{display:inline-flex;align-items:center;gap:8px;font:500 14px var(--body);color:var(--sm-paper);text-decoration:underline;text-decoration-color:#c23a22;text-underline-offset:6px}
.smv-foot a .ic{width:14px;height:14px}
@media (max-width:1000px){.smv-theater{grid-template-columns:minmax(0,1fr)}.smv-specs{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){
  .smv-head,.smv-notes{grid-template-columns:minmax(0,1fr)}
  .smv-stage{height:min(92svh,760px)}
  .smv-hint{top:auto;bottom:170px;left:20px;right:20px}
  .smv-seg span{display:none}
  .smv-song dl{grid-template-columns:minmax(0,1fr)}
}

/* ============ Code film 01 window (Now 033, post cover/hero) ============ */
.wa--sunmv{--wa-bg:#05060a;--wa-fg:#ede6d6;--wa-dim:#ede6d6b3;background:#05060a}
.wa--sunmv .wa-motif{left:0;right:0;top:0;bottom:0;width:100%!important;height:100%!important;max-width:none!important;translate:none;overflow:hidden}
.wa--sunmv .wa-plate,.wa--sunmv .wa-sunmv-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 46%}
.wa--sunmv .wa-sunmv-video{opacity:0;transition:opacity .6s}
.wa--sunmv.is-playing .wa-sunmv-video{opacity:1}
.wa--sunmv .wa-motif::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#05060ad9 0%,#05060a33 34%,#05060a22 62%,#05060ae6 100%)}
.wa--sunmv .wa-torn{position:absolute;left:-2%;right:-2%;bottom:-1px;height:16%;z-index:2;background:#05060a;clip-path:polygon(0 38%,6% 30%,11% 44%,17% 26%,23% 40%,29% 22%,36% 37%,42% 28%,49% 45%,55% 24%,62% 38%,68% 27%,74% 43%,81% 25%,87% 39%,93% 29%,100% 36%,100% 100%,0 100%)}
.wa--sunmv .wa-torn::before{content:"";position:absolute;inset:0;background:#ede6d6;opacity:.5;clip-path:polygon(0 34%,6% 26%,11% 40%,17% 22%,23% 36%,29% 18%,36% 33%,42% 24%,49% 41%,55% 20%,62% 34%,68% 23%,74% 39%,81% 21%,87% 35%,93% 25%,100% 32%,100% 38%,93% 31%,87% 41%,81% 27%,74% 45%,68% 29%,62% 40%,55% 26%,49% 47%,42% 30%,36% 39%,29% 24%,23% 42%,17% 28%,11% 46%,6% 32%,0 40%);filter:blur(1px)}
.wa-sunseal{position:absolute;z-index:3;right:7%;bottom:15%;width:clamp(64px,22cqw,112px);aspect-ratio:1;background:url(./assets/projects/sun-mv/sun.webp) center/contain no-repeat;mix-blend-mode:screen;pointer-events:none}
@media (prefers-reduced-motion:no-preference){html:not([data-site-motion=off]) .wa-sunseal{animation:wa-sun-burn 5.2s ease-in-out infinite}}
@keyframes wa-sun-burn{0%,100%{filter:brightness(1) saturate(1)}50%{filter:brightness(1.14) saturate(1.1)}}
@container wa (aspect-ratio > 1){.wa-sunseal{bottom:auto;top:24%;right:6%;width:clamp(80px,13cqw,150px)}}
.wa--sunmv .wa-title{font-family:var(--display);letter-spacing:-.02em;color:#ede6d6}
.wa--sunmv .wa-line.wa-zh{letter-spacing:.12em;color:#ede6d6d9}
.smv-specs dt{white-space:nowrap;font-size:clamp(20px,1.9vw,30px)}
@media (max-width:700px){.smv-hint{display:none}.smv-specs{grid-template-columns:repeat(2,minmax(0,1fr))}.smv-specs dt{font-size:24px}}

/* ============ Code film 02 window: 《周旋》 (Now 034, post cover/hero) ============ */
.wa--zhouxuan{--wa-bg:#17171b;--wa-fg:#efe6d6;--wa-dim:#efe6d6b3;background:#17171b}
.wa--zhouxuan .wa-motif{left:0;right:0;top:0;bottom:0;width:100%!important;height:100%!important;max-width:none!important;translate:none;overflow:hidden;background:radial-gradient(60% 60% at 56% 60%,#24242c,transparent 72%)}
.wa--zhouxuan .wa-motif canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.wa--zhouxuan .wa-motif::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#17171bcc 0%,#17171b33 30%,transparent 55%,#17171b99 100%)}
.wa--zhouxuan .wa-title{font-family:var(--display);letter-spacing:-.02em;color:#efe6d6}
.wa--zhouxuan .wa-line.wa-zh{letter-spacing:.3em;color:#efe6d6d9}
.wa--zhouxuan .wa-data{color:#efe6d699}
