/* V7 — display type, an interactive hero, a field behind every section, and one signature per project. */
:root{--display:"Smiley Sans","MiSans","PingFang SC","Microsoft YaHei",sans-serif}

/* Display type: Smiley Sans has one weight; headings and big numerals use it at 400. */
.brand>span,.hero-intro h1,.hero-selected h2,.section-heading h2,.archive-count>span,.row-main h3,.row-metric b,.case-info h2,.case-metrics b,.process-map h3,.flow-step b,.contact-section h2,.spatial-heading h2,.perspective-tabs button,.profile-lead,.dm-big,.dm-title,.boot-brand b,.boot-brand strong,.boot-pct,.layer-description h4,.empty-results h3,.resume-content h2,.mail-link{font-family:var(--display);font-weight:400;letter-spacing:0}
.brand>span{font-size:32px}

/* Hero: one line of type, the swarm, the archive. */
.archive-background{display:none}
.hero-field{position:absolute;inset:0;width:100%;height:100%;z-index:-1;display:block}
.hero-intro{top:3%;width:60%;pointer-events:none}
.hero-intro h1{font-size:clamp(64px,8.6vw,156px);line-height:1;margin:0}
.hero-signature{position:absolute;left:0;bottom:110px;width:40%;height:34%;z-index:2;cursor:pointer}
.rack-scene{top:-2%;width:60%;height:84%}
.hero-selected{bottom:22px;width:34%}
.hero-selected h2{font-size:48px;line-height:1.1;padding-bottom:14px}
.hero-selected>p{margin-top:14px}
.hero-file-actions{gap:28px;margin-top:18px}
.hero-file-actions .primary-button{min-height:44px}
.hero-file-actions .primary-button span{font-weight:400}
.archive-count:before{display:none}
.archive-count>span{font-size:64px}

/* Every section carries its own quiet field. */
.database-section,.process-section,.profile-section,.contact-section{position:relative;isolation:isolate}
.section-field{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;display:block}
.section-heading h2{font-size:clamp(40px,4.4vw,72px);line-height:1.1}
.section-intro,.console-label,.dock-current small,.row-delivery,.row-category,.rack-hint{display:none!important}

/* Project rows: each one draws its own shape and leads with its own number. */
.project-row{grid-template-columns:40px 132px minmax(0,1fr) minmax(180px,260px);gap:32px;padding:26px 0}
.row-no{color:var(--project-color)}
.project-row.is-active .row-no:before{background:var(--project-color)}
.row-thumb{width:132px;height:92px;background:none}
.row-sig{display:block;width:100%;height:100%}
.row-main h3{font-size:34px;line-height:1.15}
.row-main p{font-size:15px;margin-top:8px}
.row-metric{display:grid;grid-template-columns:auto 1fr;align-items:baseline;column-gap:6px;justify-self:end;text-align:right}
.row-metric b{font-size:44px;line-height:1;color:var(--project-color)}
.row-metric i{font-style:normal;font-size:15px;color:var(--muted);text-align:left}
.row-metric span{grid-column:1/-1;font-size:13px;color:var(--muted);margin-top:6px}
.project-results[data-view=grid] .row-thumb{aspect-ratio:4/3;height:auto}
.project-results[data-view=grid] .row-thumb img{display:none}
.project-results[data-view=grid] .row-main h3{font-size:30px}
.project-results[data-view=grid] .row-metric{justify-self:start;text-align:left}

/* Case view: the signature sits large behind the model, in the project's colour. */
.case-visual{isolation:isolate}
.case-sig{position:absolute;inset:4%;width:92%;height:92%;opacity:.3;z-index:0;pointer-events:none}
.case-info h2{font-size:clamp(40px,4vw,60px);line-height:1.05}
.case-info>.eyebrow{color:var(--project-color)}
.case-metrics b{font-size:40px;color:var(--project-color)}
.case-metrics small{opacity:0;transition:opacity .25s}
.case-metrics>div:hover small,.case-metrics>div:focus-within small{opacity:1}
.case-meta-line{display:none}

/* Contact keeps its grid inside the shell now that the section is full-bleed. */
.contact-section{display:block}
.contact-grid{display:grid;grid-template-columns:1.1fr 1fr;align-items:end;gap:80px}
.contact-section h2{font-size:clamp(44px,5vw,84px);line-height:1.08}
.mail-link{font-size:clamp(22px,2.4vw,34px)}
.identity-sculpture{height:160px}
.boot-brand b{font-size:clamp(56px,8vw,128px)}.boot-brand em{font-family:var(--display)}

@media(min-width:801px) and (max-height:830px){.hero-intro h1{font-size:clamp(56px,7.4vw,120px)}.hero-signature{bottom:96px;height:30%}.hero-selected h2{font-size:40px}.archive-count>span{font-size:52px}}
@media(max-width:1150px){.project-row{grid-template-columns:32px 104px minmax(0,1fr) minmax(140px,200px);gap:22px}.row-thumb{width:104px;height:74px}.row-main h3{font-size:28px}.row-metric b{font-size:36px}.hero-selected{width:40%}}
@media(max-width:800px){.hero-intro{width:100%}.hero-intro h1{font-size:56px}.hero-signature{left:0;right:0;width:100%;top:170px;bottom:auto;height:120px}.rack-scene{top:300px;height:400px;width:100%}.hero-selected{width:100%}.hero-selected h2{font-size:38px}.project-row{grid-template-columns:24px 76px minmax(0,1fr);gap:14px}.row-thumb{width:76px;height:56px;grid-row:1/3}.row-metric{grid-column:3;justify-self:start;text-align:left;margin-top:-6px}.row-metric b{font-size:30px}.row-main h3{font-size:24px}.contact-grid{grid-template-columns:1fr;gap:44px}.section-heading h2{font-size:40px}}
@media(max-width:560px){.hero-intro h1{font-size:46px}.hero-signature{top:140px;height:110px}.brand>span{font-size:24px}.row-main h3{font-size:21px}.row-main p{font-size:13px}.contact-section h2{font-size:38px}.case-info h2{font-size:36px}}

/* Phones: thumb-sized targets and room for the home indicator. */
@media(max-width:800px){
 .contact-actions>div>*,footer a,.related-projects button,.dm-chips button,.category-filters button,.view-controls button,.process-tabs button{min-height:44px;display:inline-flex;align-items:center}
 .hero-pagination button{height:44px}
 .dock-controls>button{width:44px;height:44px}
 .archive-dock{height:calc(68px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}
 body{padding-bottom:calc(72px + env(safe-area-inset-bottom))}
 .hero-file-actions{flex-wrap:wrap;gap:10px 24px}
 .topbar nav .ask-trigger{min-height:44px}
}
@media(max-width:359px){.topbar nav a:first-child{display:none}.hero-intro h1{font-size:40px}.row-metric b{font-size:26px}}

/* Page transitions (transitions.js). Cross-document view transitions where supported: the old page sinks and
   fades, the new one rises; a project title clicked on the way flies into the next page's headline. */
@view-transition{navigation:auto}
::view-transition-old(root){animation:vt-out .3s cubic-bezier(.4,0,1,1) both}
::view-transition-new(root){animation:vt-in .55s cubic-bezier(.22,1,.36,1) both}
::view-transition-group(project-title){animation-duration:.62s;animation-timing-function:cubic-bezier(.22,1,.36,1)}
@keyframes vt-out{to{opacity:0;transform:translateY(-16px) scale(.985)}}
@keyframes vt-in{from{opacity:0;transform:translateY(24px)}}
html[data-motion=off]::view-transition-group(*),html[data-motion=off]::view-transition-old(*),html[data-motion=off]::view-transition-new(*){animation:none}
@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none}}
.page-curtain{position:fixed;inset:0;z-index:999;pointer-events:none;background:var(--curtain);clip-path:inset(0 0 0 0)}
