.visual-hero { padding-block: 32px 28px; }
.visual-hero > .breadcrumb { display: block; width: fit-content; margin-bottom: 24px; }
.visual-hero > .eyebrow { color: var(--muted); }
.visual-hero h1 { font-size: clamp(50px, 6vw, 76px); line-height: 1.04; margin-block: 18px 22px; }
.visual-intro { display: flex; justify-content: space-between; align-items: end; gap: 30px; }
.visual-intro p { max-width: 48ch; margin: 0; font-size: clamp(17px, 2vw, 22px); line-height: 1.65; color: var(--muted); }
.visual-total { white-space: nowrap; color: var(--muted); font-size: 12px; }
.visual-jumps { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: 32px; }
.visual-jumps a { display: flex; align-items: center; gap: 20px; border: 1px solid var(--line); border-radius: var(--radius-control); padding: var(--control-padding); min-height: var(--control-height); font-size: 14px; text-decoration: none; }
.visual-jumps a span { color: var(--muted); font-size: 11px; }
.visual-jumps a:hover { background: var(--surface); }
.visual-index { display: none; }
.visual-section { padding-block: 38px 60px; border-top: 1px solid var(--line); scroll-margin-top: 110px; }
.visual-section-head { display: flex; gap: 30px; justify-content: space-between; align-items: end; margin-bottom: 28px; }
.visual-section-head h2 { margin: 10px 0 0; font-size: clamp(32px, 4vw, 48px); }
.visual-section-head p { color: var(--muted); max-width: 35ch; font-size: 14px; line-height: 1.6; margin: 0; }
.visual-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 28px; row-gap: 44px; align-items: start; }
.visual-project { min-width: 0; }
.visual-feature { grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); align-items: center; gap: clamp(28px, 5vw, 70px); }
.visual-project-context h3 { font-size: clamp(28px, 3vw, 40px); line-height: 1.15; margin: 14px 0 24px; }
.visual-project-context p { color: var(--muted); font-size: 17px; line-height: 1.65; margin: 0 0 20px; max-width: 34ch; }
.visual-feature .visual-image img { object-fit: contain; object-position: center; }
.visual-project figure { margin: 0; }
.visual-image { display: block; width: 100%; aspect-ratio: 4 / 3; background: #f5f5f2; padding: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius-panel); overflow: hidden; cursor: zoom-in; }
.visual-image img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: top; border-radius: max(0px, calc(var(--radius-panel) - var(--space-4))); transition: opacity .2s; }
.visual-image:hover img { opacity: .88; }
.visual-image[data-clean-artwork] { padding: 0; border: 0; background: transparent; }
.visual-image[data-clean-artwork='screen'],
.visual-image[data-clean-artwork='screen'] img { border-radius: var(--radius-frame); }
.visual-image[data-clean-artwork='device'] { border-radius: 0; overflow: visible; }
.visual-image[data-clean-artwork='device'] img { border-radius: 0; }
.visual-image[data-clean-artwork='device'] img { object-fit: contain; object-position: center; }
.visual-carousel:has([data-clean-artwork='screen']) .visual-track { border-radius: var(--radius-frame); }
.visual-carousel:has([data-clean-artwork='device']) .visual-track { border-radius: 0; }
.visual-project figcaption { margin-top: 18px; gap: 16px; align-items: center; }
.visual-kind { display: block; color: var(--muted); font-size: 11px; line-height: 1.5; }
.visual-project h3 { margin: 6px 0 0; color: var(--ink); font-size: clamp(24px, 2.6vw, 34px); line-height: 1.15; }
.visual-enlarge { color: var(--muted); font-size: 24px; }
.visual-carousel { min-width: 0; }
.visual-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; border-radius: var(--radius-panel); }
.visual-track::-webkit-scrollbar { display: none; }
.visual-slide { flex: 0 0 100%; min-width: 0; scroll-snap-align: start; scroll-snap-stop: always; }
.visual-carousel-controls { display: flex; justify-content: space-between; align-items: center; gap: var(--space-3); min-height: var(--control-height); margin-top: var(--space-2); }
.visual-position { color: var(--muted); font-size: 12px; font-variant-numeric: tabular-nums; }
.visual-carousel-arrows { display: flex; gap: var(--space-2); }
.visual-carousel-arrows[hidden] { display: none; }
.visual-carousel-arrows button { display: grid; place-items: center; width: var(--control-height); height: var(--control-height); padding: var(--control-padding); border: 1px solid var(--line); border-radius: var(--radius-control); background: var(--surface); color: var(--ink); cursor: pointer; }
.visual-carousel-arrows button:hover:not(:disabled) { border-color: var(--muted); }
.visual-carousel-arrows button:disabled { opacity: .35; cursor: default; }
.visual-carousel-arrows svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
[data-design] .visual-viewer { --dialog-inset: var(--space-4); --dialog-viewport-gap: 24px; width: min(1150px, calc(100% - 24px)); height: min(1000px, calc(100dvh - var(--safe-top) - var(--safe-bottom) - 24px)); overflow: hidden; }
.visual-viewer[open] { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; gap: var(--space-4); }
.visual-viewer-header { display: flex; justify-content: space-between; align-items: center; gap: var(--space-4); min-width: 0; }
.visual-viewer-header > div { min-width: 0; }
.visual-viewer-kind { display: block; color: var(--muted); font-size: 12px; line-height: 1.5; }
.visual-viewer h2 { font-size: clamp(23px, 3vw, 32px); line-height: 1.15; margin: 4px 0 0; overflow-wrap: anywhere; }
.visual-viewer-detail { color: var(--muted); font-size: 12px; line-height: 1.5; margin: 8px 0 0; }
.visual-viewer-detail[hidden] { display: none; }
.visual-viewer .close-button svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; }
.visual-viewer-track { display: flex; min-width: 0; min-height: 0; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; border: 1px solid var(--line); border-radius: var(--radius-frame); background: #f5f5f2; }
.visual-viewer-track::-webkit-scrollbar { display: none; }
.visual-viewer[data-artwork='clean'] .visual-viewer-track { background: transparent; border-color: transparent; }
.visual-viewer[data-frame='device'] .visual-viewer-track { border-radius: 0; }
.visual-viewer[data-frame='screen'] .visual-viewer-slide > img { border-radius: var(--radius-frame); }
.visual-viewer-slide { flex: 0 0 100%; min-width: 0; height: 100%; overflow-y: auto; overscroll-behavior-y: contain; scroll-snap-align: start; scroll-snap-stop: always; }
.visual-viewer-slide > img { display: block; width: 100%; height: auto; }
.visual-viewer-footer { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); min-height: var(--control-height); }
.visual-viewer-position { color: var(--ink); font-size: 13px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.visual-viewer-hint { color: var(--muted); font-size: 12px; }
.visual-context { padding-block: 42px 56px; border-top: 1px solid var(--line); display: grid; grid-template-columns: 1fr 1fr; gap: 50px; }
.visual-context h2 { font-size: 32px; line-height: 1.2; margin-block: 14px 24px; }
.visual-context .sources { border-top: 0; padding-top: 0; }
.visual-collection-entry { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; align-items: center; padding: 28px; margin: 10px 0 45px; border: 1px solid var(--line); border-radius: var(--radius-panel); background: var(--surface); }
.visual-collection-entry h2 { margin-block: 12px; font-size: clamp(32px, 4vw, 44px); }
.visual-collection-entry p { color: var(--muted); font-size: 15px; line-height: 1.6; margin-bottom: 20px; }
.visual-entry-images { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; min-width: 0; }
.visual-entry-images img { width: 100%; height: 230px; object-fit: cover; object-position: top; border-radius: var(--radius-frame); background: transparent; }
@media (max-width: 720px) {
  .visual-hero { padding-block: 38px 32px; }
  .visual-hero > .breadcrumb { margin-bottom: 28px; }
  .visual-intro, .visual-section-head { display: block; }
  .visual-total { display: block; margin-top: 20px; }
  .visual-section-head p { margin-top: 16px; }
  .visual-grid { grid-template-columns: 1fr; gap: 34px; }
  .visual-section { padding-block: 30px 42px; }
  .visual-context { grid-template-columns: 1fr; gap: 30px; }
  .visual-collection-entry { grid-template-columns: 1fr; padding: 24px; gap: 24px; }
  .visual-entry-images img { height: 200px; }
}
@media (prefers-reduced-motion: reduce) { .visual-image img { transition: none; } }
@media (max-width: 480px) { .visual-viewer-hint { display: none; } }
