/* Extend the existing portfolio tokens; no separate visual theme. */
#three-d .section-head h2{max-width:16ch}
#three-d .three-d-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(24px,5vw,72px);row-gap:48px;align-items:start}
#three-d .three-d-card{min-width:0;margin:0}
#three-d .three-d-card:nth-child(even){margin-top:88px}
#three-d .three-d-media{overflow:hidden;border:1.5px solid var(--line-strong);border-radius:var(--r-lg);background:#8d80bd;max-width:640px}
#three-d .three-d-card:nth-child(2) .three-d-media{background:#252619}
#three-d .three-d-card:nth-child(4) .three-d-media{background:#9d92b5;max-width:470px}
#three-d video{display:block;width:100%;height:auto;object-fit:contain;aspect-ratio:16/9}
#three-d .three-d-card:nth-child(4) video{aspect-ratio:1}
#three-d .three-d-caption{padding:18px 0 0}
#three-d .work-meta{margin-bottom:10px}
#three-d h3{font-family:var(--display);font-size:clamp(22px,2.5vw,30px);line-height:1.2;margin:0;max-width:24ch}
#three-d .three-d-caption p{font-size:.92rem;line-height:1.6;color:var(--ink-soft);margin:10px 0 0;max-width:40ch}
#three-d .three-d-index{font-family:var(--mono);font-size:.68rem;color:var(--ink-soft);margin-right:auto}
#three-d .three-d-labels{display:flex;align-items:center;gap:12px;margin:0 0 12px}
#three-d .three-d-labels .mono{font-size:.68rem;color:var(--ink-soft)}
#three-d video:focus-visible{outline:3px solid var(--green-deep);outline-offset:-4px}
@media(max-width:760px){#three-d .three-d-grid{grid-template-columns:minmax(0,1fr);row-gap:36px}#three-d .three-d-card:nth-child(even){margin-top:0}#three-d .three-d-card:nth-child(4) .three-d-media{max-width:470px}}
/* Keep the media, index and caption centered on the same axis. */
#three-d .three-d-card{width:100%;max-width:640px;justify-self:center}
#three-d .three-d-card:nth-child(4){max-width:470px}
#three-d .three-d-media,#three-d .three-d-card:nth-child(4) .three-d-media{max-width:none;width:100%}
.visual-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:16px;margin:-12px 0 28px}
.visual-toolbar .btn{font-size:.8rem;min-height:44px;cursor:pointer}
.illustration-image{transition:transform .22s ease,box-shadow .22s ease}
@media(hover:hover) and (prefers-reduced-motion:no-preference){.illustration-card:nth-child(odd) .illustration-image:hover{transform:translateY(-4px) rotate(-1deg)}.illustration-card:nth-child(even) .illustration-image:hover{transform:translateY(-4px) rotate(1deg)}}
@media(prefers-reduced-motion:reduce){.illustration-image{transition:none}}
@media(max-width:600px){.visual-toolbar{justify-content:flex-start}}

/* Clip the decorative experience blob instead of widening the page. */
#experience{overflow:clip}
