/* Generated by scripts/build-typography.mjs. Edit tokens in lib/typography-system.js and refinements in client/typography.css. */
:root{--type-measure:62ch;--type-muted:#b8bec6;--type-duration:480ms;--type-accent-family:"JR Great Vibes", Georgia, serif;--type-display-family:"JR Urbanist", "JR Urbanist Fallback", Arial, sans-serif;--type-display-size:clamp(2.75rem, 1.375rem + 6.875vw, 8.25rem);--type-display-min:2.75rem;--type-display-mobile-max:4.25rem;--type-display-weight:750;--type-display-leading:1.02;--type-display-tracking:-0.045em;--type-display-transform:uppercase;--type-display-align:start;--type-display-color:inherit;--type-display-ink:var(--type-muted);--type-title-family:"JR Urbanist", "JR Urbanist Fallback", Arial, sans-serif;--type-title-size:clamp(2.75rem, 1.625rem + 5.625vw, 7.25rem);--type-title-min:2.75rem;--type-title-mobile-max:4.25rem;--type-title-weight:700;--type-title-leading:1.05;--type-title-tracking:-0.045em;--type-title-transform:none;--type-title-align:start;--type-title-color:inherit;--type-title-ink:var(--type-muted);--type-section-family:"JR Urbanist", "JR Urbanist Fallback", Arial, sans-serif;--type-section-size:clamp(2rem, 1.375rem + 3.125vw, 4.5rem);--type-section-min:2rem;--type-section-mobile-max:4.25rem;--type-section-weight:650;--type-section-leading:1.12;--type-section-tracking:-0.035em;--type-section-transform:none;--type-section-align:start;--type-section-color:inherit;--type-section-ink:var(--type-muted);--type-project-family:"JR Urbanist", "JR Urbanist Fallback", Arial, sans-serif;--type-project-size:clamp(1.375rem, 1.09375rem + 1.40625vw, 2.5rem);--type-project-min:1.375rem;--type-project-mobile-max:2.5rem;--type-project-weight:600;--type-project-leading:1.2;--type-project-tracking:-0.025em;--type-project-transform:none;--type-project-align:start;--type-project-color:inherit;--type-project-ink:var(--type-muted);--type-heading3-family:"JR Urbanist", "JR Urbanist Fallback", Arial, sans-serif;--type-heading3-size:clamp(1.625rem, 1.21875rem + 2.03125vw, 3.25rem);--type-heading3-min:1.625rem;--type-heading3-mobile-max:3.25rem;--type-heading3-weight:600;--type-heading3-leading:1.16;--type-heading3-tracking:-0.03em;--type-heading3-transform:none;--type-heading3-align:start;--type-heading3-color:inherit;--type-heading3-ink:var(--type-muted);--type-heading4-family:"JR Urbanist", "JR Urbanist Fallback", Arial, sans-serif;--type-heading4-size:clamp(1.25rem, 1.0625rem + 0.9375vw, 2rem);--type-heading4-min:1.25rem;--type-heading4-mobile-max:2rem;--type-heading4-weight:600;--type-heading4-leading:1.25;--type-heading4-tracking:-0.02em;--type-heading4-transform:none;--type-heading4-align:start;--type-heading4-color:inherit;--type-heading4-ink:var(--type-muted);--type-heading5-family:"JR Urbanist", "JR Urbanist Fallback", Arial, sans-serif;--type-heading5-size:clamp(1.125rem, 1.0625rem + 0.3125vw, 1.375rem);--type-heading5-min:1.125rem;--type-heading5-mobile-max:1.375rem;--type-heading5-weight:600;--type-heading5-leading:1.4;--type-heading5-tracking:-0.01em;--type-heading5-transform:none;--type-heading5-align:start;--type-heading5-color:inherit;--type-heading5-ink:var(--type-muted);--type-heading6-family:"JR Urbanist", "JR Urbanist Fallback", Arial, sans-serif;--type-heading6-size:clamp(1rem, 0.96875rem + 0.15625vw, 1.125rem);--type-heading6-min:1rem;--type-heading6-mobile-max:1.125rem;--type-heading6-weight:600;--type-heading6-leading:1.4;--type-heading6-tracking:0em;--type-heading6-transform:none;--type-heading6-align:start;--type-heading6-color:inherit;--type-heading6-ink:var(--type-muted);--type-lead-family:"JR Urbanist", "JR Urbanist Fallback", Arial, sans-serif;--type-lead-size:clamp(1.375rem, 1.125rem + 1.25vw, 2.375rem);--type-lead-min:1.375rem;--type-lead-mobile-max:2.375rem;--type-lead-weight:450;--type-lead-leading:1.5;--type-lead-tracking:-0.02em;--type-lead-transform:none;--type-lead-align:start;--type-lead-color:inherit;--type-lead-ink:var(--type-muted);--type-body-family:"JR Urbanist", "JR Urbanist Fallback", Arial, sans-serif;--type-body-size:clamp(1rem, 0.98438rem + 0.07813vw, 1.0625rem);--type-body-min:1rem;--type-body-mobile-max:1.0625rem;--type-body-weight:400;--type-body-leading:1.75;--type-body-tracking:0em;--type-body-transform:none;--type-body-align:start;--type-body-color:inherit;--type-body-ink:var(--type-muted);--type-caption-family:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--type-caption-size:clamp(0.75rem, 0.73438rem + 0.07813vw, 0.8125rem);--type-caption-min:0.75rem;--type-caption-mobile-max:0.8125rem;--type-caption-weight:400;--type-caption-leading:1.65;--type-caption-tracking:0.015em;--type-caption-transform:none;--type-caption-align:start;--type-caption-color:inherit;--type-caption-ink:var(--type-muted);--type-label-family:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--type-label-size:clamp(0.75rem, 0.75rem + 0vw, 0.75rem);--type-label-min:0.75rem;--type-label-mobile-max:0.75rem;--type-label-weight:400;--type-label-leading:1.6;--type-label-tracking:0.075em;--type-label-transform:uppercase;--type-label-align:start;--type-label-color:inherit;--type-label-ink:var(--type-muted);--type-nav-family:"JR Urbanist", "JR Urbanist Fallback", Arial, sans-serif;--type-nav-size:clamp(0.8125rem, 0.8125rem + 0vw, 0.8125rem);--type-nav-min:0.8125rem;--type-nav-mobile-max:0.8125rem;--type-nav-weight:600;--type-nav-leading:1.5;--type-nav-tracking:0.08em;--type-nav-transform:uppercase;--type-nav-align:start;--type-nav-color:inherit;--type-nav-ink:var(--type-muted)}
html .typography-system p,html .typography-system .type-body,html .typography-system .intro-end p,html .typography-system .collection-description,html .typography-system .collection-heading p,html .typography-system .index-heading>p,html .typography-system .detail-deck-right>p,html .typography-system .about-split .small-copy,html .typography-system .chapter-intro p,html .typography-system .chapter-step p,html .typography-system .footer-top p,html .typography-system .native-content .work-intro>p,html .typography-system .native-content .profile-copy p,html .typography-system .native-content .study-description,html .typography-system .native-content .custom-body,html .typography-system .origin-intro,html .typography-system .hero-meta p,html .typography-system .detail-index dd,html .typography-system .empty-results p,html .typography-system .showroom-after,html .typography-system .native-content .dialog-copy>p:not(.eyebrow),html .typography-system .native-content .dialog-copy dd{font-family:var(--type-body-family);font-size:var(--type-body-size);font-weight:var(--type-body-weight);line-height:var(--type-body-leading);letter-spacing:var(--type-body-tracking);text-transform:var(--type-body-transform);text-align:var(--type-body-align);color:var(--type-body-color)}
html .typography-system h1,html .typography-system .type-title,html .typography-system .index-heading h1,html .typography-system .about-hero h1,html .typography-system .detail-heading,html .typography-system .footer-title{font-family:var(--type-title-family);font-size:var(--type-title-size);font-weight:var(--type-title-weight);line-height:var(--type-title-leading);letter-spacing:var(--type-title-tracking);text-transform:var(--type-title-transform);text-align:var(--type-title-align);color:var(--type-title-color)}
html .typography-system h2,html .typography-system .type-section,html .typography-system .collection-heading h2,html .typography-system .editorial-intro .intro-heading,html .typography-system .statement-band h2,html .typography-system .section-top h2,html .typography-system .detail-deck h2,html .typography-system .gallery-heading h2,html .typography-system .next-project h2,html .typography-system .native-content .work-intro h2,html .typography-system .native-content .profile-grid h2,html .typography-system .native-content .study-copy h2,html .typography-system .native-content .custom-section h2,html .typography-system .native-content .origin-note h2,html .typography-system .native-content .chapter-intro h2,html .typography-system .native-content .dialog-copy h2,html .typography-system .project-media-model h2{font-family:var(--type-section-family);font-size:var(--type-section-size);font-weight:var(--type-section-weight);line-height:var(--type-section-leading);letter-spacing:var(--type-section-tracking);text-transform:var(--type-section-transform);text-align:var(--type-section-align);color:var(--type-section-color)}
html .typography-system h3,html .typography-system .chapter-step h3,html .typography-system .native-content .chapter-step h3,html .typography-system .skill-line span:first-child{font-family:var(--type-heading3-family);font-size:var(--type-heading3-size);font-weight:var(--type-heading3-weight);line-height:var(--type-heading3-leading);letter-spacing:var(--type-heading3-tracking);text-transform:var(--type-heading3-transform);text-align:var(--type-heading3-align);color:var(--type-heading3-color)}
html .typography-system h4{font-family:var(--type-heading4-family);font-size:var(--type-heading4-size);font-weight:var(--type-heading4-weight);line-height:var(--type-heading4-leading);letter-spacing:var(--type-heading4-tracking);text-transform:var(--type-heading4-transform);text-align:var(--type-heading4-align);color:var(--type-heading4-color)}
html .typography-system h5{font-family:var(--type-heading5-family);font-size:var(--type-heading5-size);font-weight:var(--type-heading5-weight);line-height:var(--type-heading5-leading);letter-spacing:var(--type-heading5-tracking);text-transform:var(--type-heading5-transform);text-align:var(--type-heading5-align);color:var(--type-heading5-color)}
html .typography-system h6{font-family:var(--type-heading6-family);font-size:var(--type-heading6-size);font-weight:var(--type-heading6-weight);line-height:var(--type-heading6-leading);letter-spacing:var(--type-heading6-tracking);text-transform:var(--type-heading6-transform);text-align:var(--type-heading6-align);color:var(--type-heading6-color)}
html .typography-system .collection-meta h3,html .typography-system .card-meta h3,html .typography-system .index-page .card-meta h3,html .typography-system .native-content .project-meta h3,html .typography-system .showroom-caption h3,html .typography-system .native-content .sketch-title{font-family:var(--type-project-family);font-size:var(--type-project-size);font-weight:var(--type-project-weight);line-height:var(--type-project-leading);letter-spacing:var(--type-project-tracking);text-transform:var(--type-project-transform);text-align:var(--type-project-align);color:var(--type-project-color)}
html .typography-system .about-split p:not(.small-copy),html .typography-system .type-lead{font-family:var(--type-lead-family);font-size:var(--type-lead-size);font-weight:var(--type-lead-weight);line-height:var(--type-lead-leading);letter-spacing:var(--type-lead-tracking);text-transform:var(--type-lead-transform);text-align:var(--type-lead-align);color:var(--type-lead-color)}
html .typography-system .type-caption,html .typography-system figcaption,html .typography-system .card-meta p,html .typography-system .index-page .card-meta p,html .typography-system .collection-meta>span,html .typography-system .card-index,html .typography-system .work-count,html .typography-system .footer-bottom,html .typography-system .menu-overlay-footer,html .typography-system .gallery-heading>span,html .typography-system .gallery-item figcaption,html .typography-system .spatial-scene-index,html .typography-system .native-content .project-meta>span,html .typography-system .native-content .edition,html .typography-system .native-content .native-tagline,html .typography-system .origin-signature,html .typography-system .chapter-visual-top,html .typography-system .chapter-visual-bottom,html .typography-system .native-content .chapter-visual-top,html .typography-system .native-content .chapter-visual-bottom,html .typography-system .native-content .stage-label,html .typography-system .native-content .stage-bottom,html .typography-system .native-content .study-note,html .typography-system .volume-label,html .typography-system .volume-foot,html .typography-system .glb-status,html .typography-system .native-content .glb-status,html .typography-system .opening-native .dress-intro-loading,html .typography-system .detail-bottom,html .typography-system .lightbox-label,html .typography-system .showroom-meta,html .typography-system .showroom-caption>span,html .typography-system .showroom-top>div>p,html .typography-system .showroom-top .eyebrow,html .typography-system .showroom-index-link,html .typography-system .native-content .dialog-facts dt,html .typography-system .native-content .dialog-facts dd,html .typography-system .native-content #dialog-caption,html .typography-system .native-content .sketch-controls,html .typography-system .native-content .model-status,html .typography-system .native-content .dialog-views button span,html .typography-system .related-studies small{font-family:var(--type-caption-family);font-size:var(--type-caption-size);font-weight:var(--type-caption-weight);line-height:var(--type-caption-leading);letter-spacing:var(--type-caption-tracking);text-transform:var(--type-caption-transform);text-align:var(--type-caption-align);color:var(--type-caption-color)}
html .typography-system .type-label,html .typography-system .eyebrow,html .typography-system .native-content .eyebrow,html .typography-system .kicker,html .typography-system .mono,html .typography-system .micro-number,html .typography-system .hero-topline .eyebrow,html .typography-system .hero-side-label,html .typography-system .step-num,html .typography-system .card-corner,html .typography-system .index-page .card-corner,html .typography-system .collection-number,html .typography-system .native-content .image-index,html .typography-system .native-content .image-views,html .typography-system .native-content .sketch-index,html .typography-system .detail-index dt,html .typography-system .native-content .practice-list,html .typography-system .showroom-caption>span,html .typography-system .volume-versions button,html .typography-system .garment-inspector-header h2,html .typography-system .skill-line span:last-child,html .typography-system .running-line,html .typography-system .native-content .dialog-copy dt{font-family:var(--type-label-family);font-size:var(--type-label-size);font-weight:var(--type-label-weight);line-height:var(--type-label-leading);letter-spacing:var(--type-label-tracking);text-transform:var(--type-label-transform);text-align:var(--type-label-align);color:var(--type-label-color)}
html .typography-system .type-nav,html .typography-system .desktop-nav a,html .typography-system .filter,html .typography-system .native-content .native-navigation,html .typography-system .native-content .view-button,html .typography-system .native-content .construction-toggle,html .typography-system .hero-scroll,html .typography-system .text-action,html .typography-system .back-link,html .typography-system .hero-work-link,html .typography-system .footer-profile,html .typography-system .footer-social a,html .typography-system .related-studies,html .typography-system .showroom-caption a,html .typography-system .showroom-activation button,html .typography-system .glb-toolbar button,html .typography-system .native-content .glb-toolbar button,html .typography-system .opening-inspect,html .typography-system .opening-activate,html .typography-system .native-content .text-link,html .typography-system .native-content .load-model,html .typography-system .native-content .glb-load,html .typography-system .native-content .dialog-image-link,html .typography-system .native-content #dialog-next-label,html .typography-system .lightbox-zoom{font-family:var(--type-nav-family);font-size:var(--type-nav-size);font-weight:var(--type-nav-weight);line-height:var(--type-nav-leading);letter-spacing:var(--type-nav-tracking);text-transform:var(--type-nav-transform);text-align:var(--type-nav-align);color:var(--type-nav-color)}
html .typography-system .hero-title{font-family:var(--type-display-family);font-size:var(--type-display-size);font-weight:var(--type-display-weight);line-height:var(--type-display-leading);letter-spacing:var(--type-display-tracking);text-transform:var(--type-display-transform);text-align:var(--type-display-align);color:var(--type-display-color)}
/* Typography alone owns type values. Scene geometry and camera code are untouched. */
@font-face{font-family:"JR Urbanist";src:url("fonts/urbanist-latin.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:"JR Great Vibes";src:url("fonts/great-vibes-latin.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
/* Cap-height matched Arial; vertical metrics match the variable font. */
@font-face{font-family:"JR Urbanist Fallback";src:local("Arial");size-adjust:101.78%;ascent-override:93.34%;descent-override:24.56%;line-gap-override:0%}
html body.typography-system{font-family:var(--type-body-family);font-size:var(--type-body-size);line-height:var(--type-body-leading);font-weight:var(--type-body-weight);font-kerning:normal;font-optical-sizing:auto}
html body.typography-system .native-content{--muted:var(--type-muted);--serif:var(--type-section-family);--sans:var(--type-body-family);font-family:var(--type-body-family);font-size:var(--type-body-size);font-weight:var(--type-body-weight);line-height:var(--type-body-leading)}
html body.typography-system :is(h1,h2,h3,h4,h5,h6){text-wrap:balance;overflow-wrap:anywhere;min-width:0;max-width:100%;font-style:normal}
html body.typography-system :is(p,dd,figcaption){text-wrap:pretty;overflow-wrap:anywhere}
html body.typography-system :is(.intro-end p,.collection-description,.collection-heading p,.index-heading>p,.detail-deck-right>p,.about-split .small-copy,.chapter-intro p,.chapter-step p,.footer-top p,.native-content .work-intro>p,.native-content .profile-copy p,.native-content .study-description,.native-content .custom-body,.origin-intro){max-width:var(--type-measure);color:var(--type-body-ink,var(--type-muted));letter-spacing:var(--type-body-tracking)}
html body.typography-system :is(.card-meta p,.collection-meta>span,.work-count,.footer-bottom,.gallery-item figcaption,.spatial-scene-index,.native-content .project-meta>span,.native-content .edition,.native-content .native-tagline){color:var(--type-caption-ink,var(--type-muted))}
html body.typography-system :is(.eyebrow,.kicker,.micro-number){color:var(--type-label-ink,var(--type-muted))}
html body.typography-system :is(.card-meta,.collection-meta,.detail-index,.footer-top,.collection-heading,.index-heading)>*{min-width:0}
html body.typography-system :is(.menu-link,.menu-name,.footer-title,.detail-heading,.index-heading h1,.about-hero h1){white-space:normal}
html body.typography-system .hero-title-block{max-width:60%;padding-bottom:3vh}
html body.typography-system .hero-title{max-width:100%;text-wrap:initial}
html body.typography-system .hero-title>span{overflow-wrap:anywhere}
html body.typography-system .hero-title .outlined{color:var(--type-display-color);-webkit-text-stroke:0}
html body.typography-system .hero-title .lastword{padding-left:0}
html body.typography-system .hero-meta{gap:24px;align-items:end}
html body.typography-system .hero-meta p{max-width:40ch}
html body.typography-system .hero-scroll{flex-shrink:0;max-width:15ch}
html body.typography-system .hero-topline .eyebrow{max-width:42ch;opacity:1}
html body.typography-system .hero-work-link{min-height:44px}
html body.typography-system .desktop-nav{gap:clamp(16px,2vw,30px)}
html body.typography-system .desktop-nav a{min-height:44px;display:inline-flex;align-items:center}
html body.typography-system .wordmark{font-family:var(--type-title-family);letter-spacing:-.065em;font-weight:750}
html body.typography-system .wordmark small{font-size:.75rem;letter-spacing:.07em;font-weight:600}
html body.typography-system .menu-overlay{overflow-y:auto;overscroll-behavior:contain}
html body.typography-system .menu-overlay-inner{height:auto;min-height:100%}
html body.typography-system .menu-link{font-size:var(--type-section-size);min-height:60px}
html body.typography-system .menu-link>span:first-child{font-family:var(--type-label-family);font-size:var(--type-label-size);letter-spacing:var(--type-label-tracking);font-weight:400;flex-shrink:0;color:var(--type-muted)}
html body.typography-system .menu-link .menu-name{font:inherit;letter-spacing:inherit;color:inherit}
html body.typography-system :is(.filter,.text-action,.back-link,.footer-profile,.native-navigation a){min-height:44px;align-content:center}
html body.typography-system .work-search input{font-size:1rem;letter-spacing:0}
html body.typography-system .filter-count{font-size:.75rem;opacity:1}
html body.typography-system .filter.active{color:var(--bg)}
html body.typography-system .card-corner{max-width:calc(100% - 24px);white-space:normal;background:#0b0e12ed;color:var(--fg)}
html body.typography-system :is(.showroom-top h1,.showroom-top h2){font-size:clamp(1.75rem,1.1rem + 2.6vw,3.5rem);line-height:1.12;margin:12px 0 10px}
html body.typography-system .showroom-top>div{max-width: min(38rem,70%);background:#101419ed;padding:12px 16px;border-left:1px solid #d9dbda33}
html body.typography-system .showroom-top>div>p{font-size:var(--type-caption-size);max-width:36ch;color:#d5d8dc}
html body.typography-system .showroom-bottom{background:linear-gradient(transparent,#0a0c10 24%);padding-top:48px}
html body.typography-system .showroom-caption h3{font-size:var(--type-project-size);line-height:var(--type-project-leading);max-width:28ch}
html body.typography-system .showroom-meta{flex-wrap:wrap;gap:12px}
html body.typography-system .showroom-meta p{max-width:40ch;text-align:var(--type-caption-align)}
html body.typography-system .showroom-select select{font-family:var(--type-body-family);font-size:1rem;height:auto;min-height:44px}
html body.typography-system .showroom-index-link{white-space:normal;max-width:17ch;background:#101419ed;padding:12px}
html body.typography-system :is(.detail-heading-wrap,.detail-bottom){background:#08090ceb;padding:20px;max-width:100%}
html body.typography-system .detail-heading-wrap{width:fit-content}
html body.typography-system .detail-content{gap:24px}
html body.typography-system .detail-hero{min-height:46rem;height:auto;padding-top:var(--header)}
html body.typography-system .detail-content{min-height:46rem}
html body.typography-system .detail-heading{max-width:16ch}
html body.typography-system .detail-index{grid-template-columns:repeat(2,minmax(0,1fr))}
html body.typography-system .spatial-composition figcaption{transform:none;position:relative}
html body.typography-system .statement-band :is(h2,p,span,a){color:inherit}
html body.typography-system .statement-band .eyebrow{color:#30363d}
html body.typography-system .signature{font-family:var(--type-accent-family);font-size:clamp(2rem,1.5rem + 1.5vw,3rem);line-height:1.35;font-weight:400;letter-spacing:0;text-transform:none}
html[data-type-accent=script] body.typography-system .editorial-intro .intro-heading em{font-family:var(--type-accent-family);font-size:1.14em;font-weight:400;line-height:1.35;letter-spacing:0;font-style:normal;display:block;margin-top:.25em;color:var(--fg)}
html[data-type-accent=editorial] body.typography-system .editorial-intro .intro-heading em{font-style:italic;color:var(--fg)}
html[data-type-accent=off] body.typography-system :is(.intro-heading em,.signature){font-family:var(--type-body-family);font-style:normal;letter-spacing:0}
html[data-type-motion=lines] body.typography-system .hero-title>span{animation:type-line-in var(--type-duration) var(--motion-ease) both}
html[data-type-motion=lines] body.typography-system .hero-title>span:nth-child(2){animation-delay:55ms}
html[data-type-motion=lines] body.typography-system .hero-title>span:nth-child(3){animation-delay:110ms}
html[data-type-motion=fade] body.typography-system .hero-title{animation:type-fade-in var(--type-duration) ease both}
html body.typography-system :is(h1,h2,h3,p,.eyebrow,.signature).reveal{transform:translateY(12px);transition:opacity var(--type-duration) ease,transform var(--type-duration) var(--motion-ease)}
html body.typography-system :is(h1,h2,h3,p,.eyebrow,.signature).reveal.visible{transform:none}
@keyframes type-line-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes type-fade-in{from{opacity:0}to{opacity:1}}
html body.typography-system :is(a,button,input,select,summary):focus-visible{outline:2px solid var(--fg);outline-offset:5px}
@media(max-width:1100px){html body.typography-system .hero-title-block{max-width:67%}html body.typography-system .detail-deck{gap:36px}}
@media(max-width:700px){
 html body.typography-system .hero{height:auto;min-height:132svh;overflow:visible}
 html body.typography-system .hero-sticky{height:auto;min-height:100svh;overflow:visible}
 html body.typography-system .hero-inner{min-height:100svh;height:auto;gap:24px;padding-bottom:32px}
 html body.typography-system .hero-title-block{max-width:100%;padding-top:42svh;padding-bottom:0;margin-top:0}
 html body.typography-system .hero-title{font-size:clamp(var(--type-display-min),1rem + 8vw,var(--type-display-mobile-max));line-height:max(1.04,var(--type-display-leading));letter-spacing:max(-.035em,var(--type-display-tracking))}
 html body.typography-system .hero-meta{flex-wrap:wrap;align-items:start;gap:16px}
 html body.typography-system .hero-meta>div{flex:1 1 16rem}
 html body.typography-system .hero-topline{gap:16px}
 html body.typography-system .hero-topline .eyebrow{font-size:var(--type-label-size);max-width:26ch}
 html body.typography-system .hero-scroll{max-width:none}
 html body.typography-system .wordmark small{font-size:.75rem;margin-left:8px}
 html body.typography-system .showroom-shell{height:auto;min-height:46rem}
 html body.typography-system .showroom-stage{height:100%}
 html body.typography-system .showroom-top{gap:10px;position:relative;left:auto;right:auto;padding:20px var(--edge);top:0}
 html body.typography-system .showroom-top>div{max-width:75%;padding:10px;flex:1}
 html body.typography-system .showroom-top h1,html body.typography-system .showroom-top h2{font-size:1.75rem}
 html body.typography-system .showroom-index-link{max-width:10ch;padding:10px;align-self:start}
 html body.typography-system .showroom-bottom{position:relative;margin-top:28svh;grid-template-columns:1fr;gap:20px;padding-top:40px}
 html body.typography-system .showroom-section,html body.typography-system .showroom-gallery{height:auto;min-height:110svh}
 html body.typography-system .showroom-shell{position:relative;top:0}
 html body.typography-system .detail-hero{min-height:40rem}
 html body.typography-system .detail-content{min-height:40rem}
 html body.typography-system .detail-heading-wrap,html body.typography-system .detail-bottom{padding:14px}
 html body.typography-system .detail-index{grid-template-columns:1fr}
 html body.typography-system .native-content .project-grid{grid-template-columns:1fr}
 html body.typography-system .native-content .project-panorama{grid-column:1}
 html body.typography-system .collection-meta{flex-wrap:wrap;gap:12px}
 html body.typography-system .collection-meta>span{max-width:none;text-align:start}
 html body.typography-system .gallery-item figcaption{flex-wrap:wrap;gap:8px}
 html body.typography-system .footer-bottom{gap:20px;line-height:1.7}
}

@media(prefers-reduced-motion:reduce){html body.typography-system .hero-title,html body.typography-system .hero-title>span{animation:none!important}html body.typography-system .reveal{opacity:1;transform:none;transition:none}}
html.motion-off body.typography-system .hero-title,html.motion-off body.typography-system .hero-title>span{animation:none}
html[data-type-motion=none] body.typography-system .reveal{opacity:1;transform:none;transition:none}

/* Layout constraints live after the type roles: text can grow without collisions. */
:root{--header-base:76px;--header:calc(var(--header-base) + env(safe-area-inset-top,0px));--edge-left:max(var(--edge),env(safe-area-inset-left,0px));--edge-right:max(var(--edge),env(safe-area-inset-right,0px))}
html:has(body.typography-system){scroll-padding-top:calc(var(--header) + 16px)}
html body.typography-system .site-header{height:auto;min-height:calc(var(--header-base) + env(safe-area-inset-top,0px));padding:calc(10px + env(safe-area-inset-top,0px)) var(--edge-right) 10px var(--edge-left);gap:clamp(12px,2vw,24px)}
html body.typography-system .wordmark{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:clamp(8px,1.2vw,16px);min-width:0;flex:0 1 auto;white-space:normal}
html body.typography-system .wordmark-monogram{white-space:nowrap;line-height:1}
html body.typography-system .wordmark small{display:block;margin:0;min-width:0;line-height:1.4;overflow-wrap:anywhere}
html body.typography-system .header-end{flex:0 0 auto;margin-left:0;gap:8px}
html body.typography-system :is(.menu-toggle,.motion-control){flex:0 0 44px;width:44px;height:44px;min-height:44px}
html body.typography-system .desktop-nav{min-width:0;flex-wrap:wrap;gap:4px clamp(12px,1.4vw,24px);padding:0;overflow:visible}
html body.typography-system .desktop-nav a{white-space:normal;overflow-wrap:anywhere;flex:0 1 auto}
html body.typography-system .menu-overlay{top:var(--header);height:calc(100dvh - var(--header));bottom:auto}
html body.typography-system .menu-overlay-inner{padding:clamp(24px,5dvh,56px) var(--edge-right) max(24px,env(safe-area-inset-bottom,0px)) var(--edge-left);min-height:100%;gap:24px}
html body.typography-system .menu-link{display:grid;grid-template-columns:2ch minmax(0,1fr) auto;gap:clamp(12px,3vw,32px);align-items:baseline;min-width:0;padding-block:12px}
html body.typography-system .menu-link b{margin:0}
html body.typography-system .menu-overlay-footer{flex-wrap:wrap;overflow-wrap:anywhere}
/* The shared gallery opens Home, Gallery and Work: reserve the fixed header on each route. */
html body.typography-system :is(.home-page,.gallery-page,.index-page){padding-top:var(--header)}
html body.typography-system :is(.showroom-top,.showroom-bottom,.hero-topline,.hero-meta,.detail-topbar,.detail-bottom,.section-top,.gallery-heading,.footer-bottom,.skill-line){min-width:0}
html body.typography-system :is(.showroom-top,.showroom-bottom,.hero-topline,.hero-meta,.detail-topbar,.detail-bottom,.section-top,.gallery-heading,.footer-bottom,.skill-line)>*{min-width:0;overflow-wrap:anywhere}
html body.typography-system :is(.showroom-index-link,.showroom-caption a,.hero-work-link){overflow-wrap:anywhere}
html body.typography-system .footer-email{overflow-wrap:anywhere;max-width:100%;white-space:normal}
html body.typography-system :is(.detail-topbar,.detail-bottom,.gallery-heading,.section-top,.footer-bottom,.skill-line){flex-wrap:wrap}
html body.typography-system .hero-sticky{min-height:max(650px,calc(var(--header) + 36rem))}
html body.typography-system .hero-topline{flex-wrap:wrap}
html body.typography-system .hero-title-block{margin-block:clamp(24px,4svh,64px)}
html body.typography-system .showroom-controls{display:grid;grid-template-columns:44px minmax(0,1fr) 44px 44px;gap:8px}
html body.typography-system .showroom-controls button{width:44px;min-height:44px}
html body.typography-system .showroom-select{min-width:0;width:100%;display:block}
html body.typography-system .showroom-select select{min-width:0;max-width:100%;width:100%}
html body.typography-system .garment-inspector{padding-bottom:env(safe-area-inset-bottom,0px);overflow-y:auto;overscroll-behavior:contain}
html body.typography-system .garment-inspector-header{padding-top:max(8px,env(safe-area-inset-top,0px))}
html body.typography-system .lightbox-label{overflow-wrap:anywhere}

@media(max-width:1100px){
 html body.typography-system .desktop-nav{display:none}
}
@media(max-width:900px),(max-height:700px){
 /* Explicit rows keep the room, its title and controls independent of text height. */
 html body.typography-system :is(.showroom-section,.showroom-gallery){height:auto;min-height:0}
 html body.typography-system .showroom-shell{position:relative;top:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto clamp(280px,44svh,520px) auto;height:auto;min-height:0;overflow:visible}
 html body.typography-system .showroom-top{grid-row:1;position:relative;inset:auto;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:16px;padding:clamp(24px,4vw,36px) var(--edge-right) 24px var(--edge-left);pointer-events:auto}
 html body.typography-system .showroom-top::before{display:none}
 html body.typography-system .showroom-top>div{max-width:none;padding:0 0 0 16px;min-width:0;background:transparent}
 html body.typography-system .showroom-top h1,html body.typography-system .showroom-top h2{font-size:clamp(1.75rem,1.2rem + 3vw,3rem)}
 html body.typography-system .showroom-index-link{max-width:16ch;min-height:44px;line-height:1.6;align-self:start}
 html body.typography-system .showroom-shell>*{grid-column:1}
 html body.typography-system .showroom-stage{grid-row:2;position:relative;inset:auto;height:100%;min-width:0}
 html body.typography-system .showroom-activation{grid-row:2;position:relative;inset:auto}
 html body.typography-system .showroom-bottom{grid-row:3;position:relative;inset:auto;grid-template-columns:minmax(0,1fr);margin:0;padding:28px var(--edge-right) max(28px,env(safe-area-inset-bottom,0px)) var(--edge-left);gap:24px;background:#0a0c10}
 html body.typography-system .showroom-meta{gap:12px;flex-wrap:wrap}
 html body.typography-system .showroom-meta p{max-width:100%;text-align:start}
}
@media(max-width:700px){
 :root{--header-base:66px;--edge:clamp(16px,5vw,22px)}
 html body.typography-system .wordmark{font-size:26px;flex:1 1 0}
 html body.typography-system .wordmark small{font-size:.75rem;letter-spacing:.04em;margin:0}
 html body.typography-system .menu-link{font-size:clamp(1.5rem,1rem + 3vw,2.5rem)}
 html body.typography-system .hero-sticky{min-height:100svh;height:auto;overflow:visible}
 html body.typography-system .hero-inner{padding-left:var(--edge-left);padding-right:var(--edge-right);padding-top:calc(var(--header) + 24px)}
 html body.typography-system .hero-title-block{padding-top:42svh;margin:0}
 /* Keep the canvas inside the viewport; centre the model in the marked right-hand space. */
 html body.typography-system .opening-native .dress-intro-stage{left:24%;right:0;width:76%;top:15svh;height:55svh;min-height:0}
 html body.typography-system .hero-topline .eyebrow{max-width:100%}
 html body.typography-system .hero-meta{display:grid;grid-template-columns:minmax(0,1fr);gap:24px}
 html body.typography-system .hero-scroll{justify-self:start}
 html body.typography-system .showroom-top{grid-template-columns:minmax(0,1fr);gap:20px}
 html body.typography-system .showroom-index-link{justify-self:start;max-width:100%;padding:10px 0;background:transparent}
 html body.typography-system .showroom-top>div{padding-left:12px}
 html body.typography-system .showroom-controls{grid-template-columns:44px minmax(0,1fr) 44px 44px;gap:6px}
 html body.typography-system .native-content .native-navigation{display:none}
 html body.typography-system .works-tools{position:relative;top:auto;flex-wrap:wrap}
 html body.typography-system .filters{display:flex;flex-wrap:wrap;justify-content:start;width:100%;gap:8px}
 html body.typography-system .filter{white-space:normal;min-width:0;max-width:100%}
 html body.typography-system .work-search{min-width:0;width:100%}
 html body.typography-system .detail-topbar{align-items:start;gap:16px}
 html body.typography-system .detail-bottom{align-items:start;gap:16px}
 html body.typography-system .detail-content{min-height:0;height:auto;padding-bottom:40px}
 html body.typography-system .detail-heading-wrap{margin-top:clamp(120px,24svh,240px)}
 html body.typography-system .skill-line{align-items:start;gap:16px}
 html body.typography-system .project-media-model{grid-template-columns:minmax(0,1fr)}
 html body.typography-system .media-viewer-shell .glb-stage{height:clamp(280px,50svh,500px);min-height:280px}
 html body.typography-system .lightbox:not(.zoomed){display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:52px minmax(0,1fr) auto 46px;gap:16px;padding:calc(12px + env(safe-area-inset-top,0px)) var(--edge-right) max(16px,env(safe-area-inset-bottom,0px)) var(--edge-left);height:100dvh}
 html body.typography-system .lightbox:not(.zoomed)>*{grid-column:1}
 html body.typography-system .lightbox:not(.zoomed) img{grid-row:2;max-height:100%;width:100%;height:100%;min-height:0}
 html body.typography-system .lightbox:not(.zoomed) .lightbox-label{grid-row:3;position:relative;inset:auto;max-width:100%}
 html body.typography-system .lightbox:not(.zoomed) :is(.lightbox-prev,.lightbox-next){grid-row:4;position:relative;inset:auto;width:46px}
 html body.typography-system .lightbox:not(.zoomed) .lightbox-next{justify-self:end}
 html body.typography-system .lightbox:not(.zoomed) :is(.lightbox-close,.lightbox-zoom){top:calc(12px + env(safe-area-inset-top,0px))}
}
@media(max-width:700px),(max-height:700px){
 /* Short/zoomed inspection dialogs scroll instead of squeezing controls away. */
 html body.typography-system .garment-inspector .glb-viewer{flex:none;height:auto;overflow:visible}
 html body.typography-system .garment-inspector .glb-stage{flex:none;height:clamp(200px,50dvh,600px)}
}
