.portfolio-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin:24px 0 64px}.portfolio-card{border:1px solid var(--line);background:#191919;min-width:0}.portfolio-card-image,.portfolio-hero-image{display:block;position:relative;background:#252e33}.portfolio-card img,.portfolio-hero img{display:block;width:100%;height:auto}.portfolio-card-body{padding:24px}.portfolio-card h2{font-size:28px;margin:10px 0}.portfolio-card p{color:var(--muted);line-height:1.6}.portfolio-card a{color:inherit;text-decoration:none}.portfolio-card a:hover,.portfolio-breadcrumb a:hover{color:var(--accent)}.portfolio-tag{position:absolute;left:14px;bottom:14px;font-size:12px;padding:6px 10px;background:#141414dd;color:#eee}.portfolio-breadcrumb{margin:32px 0;color:var(--muted);font-size:14px}.portfolio-hero{display:grid;grid-template-columns:1.05fr 1fr;gap:56px;align-items:center;margin-bottom:64px}.portfolio-hero h1{font-size:clamp(40px,6vw,76px);line-height:1.05;margin:16px 0 24px}.portfolio-lead{font-size:20px;line-height:1.6}.portfolio-facts{margin:28px 0}.portfolio-facts>div{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}.portfolio-facts dt{color:var(--muted)}.portfolio-facts dd{margin:0;text-align:right}.portfolio-story{max-width:820px;margin:0 auto 56px}.portfolio-story h2,.portfolio-cta h2{font-size:clamp(26px,3vw,38px);line-height:1.2}.portfolio-story p{line-height:1.8}.portfolio-process{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.portfolio-process figure{margin:0;min-width:0}.portfolio-process img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain;background:#252e33}.portfolio-process figcaption{padding:18px 0}.portfolio-process figcaption span{font-weight:600}.portfolio-process figcaption p{color:var(--muted);font-size:14px;line-height:1.5}.portfolio-cta{border-top:1px solid var(--line);padding:42px 0;margin-top:40px}.portfolio-cta p{margin-bottom:24px;color:var(--muted)}@media(max-width:900px){.portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portfolio-hero{gap:28px}.portfolio-process{gap:16px}}@media(max-width:600px){.portfolio-grid,.portfolio-hero,.portfolio-process{grid-template-columns:1fr}.portfolio-hero{margin-bottom:40px}.portfolio-card-body{padding:20px}.portfolio-facts{font-size:14px}.portfolio-process{gap:24px}}

.portfolio-viewer,.portfolio-angles{margin:48px 0}.portfolio-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:20px 0}.portfolio-controls button{font:inherit;color:var(--text);border:1px solid var(--line);background:#242424;padding:10px 14px;cursor:pointer}.portfolio-controls button:hover{border-color:var(--accent)}.portfolio-controls label{display:flex;align-items:center;gap:8px}.portfolio-controls input{accent-color:var(--accent)}#model3d{display:block;width:100%;height:620px;background:#11171b;touch-action:none;cursor:grab}#model3d:active{cursor:grabbing}#view-status{color:var(--muted);font-size:14px;line-height:1.6}.portfolio-angles .portfolio-process{grid-template-columns:1fr 1fr}@media(max-width:600px){#model3d{height:430px}.portfolio-controls{gap:10px;font-size:14px}.portfolio-angles .portfolio-process{grid-template-columns:1fr}}


.shell>footer{flex-wrap:wrap}



/* Story disclosure: text grows in place and carries its toggle below. */
.portfolio-story-reveal{display:grid;grid-template-rows:0fr;opacity:0;visibility:hidden;transition:grid-template-rows .28s ease,opacity .22s ease,visibility .28s}.portfolio-story-inner{overflow:hidden;min-height:0}.portfolio-story-details.is-open .portfolio-story-reveal{grid-template-rows:1fr;opacity:1;visibility:visible}.portfolio-story-toggle{display:inline-flex;align-items:center;gap:10px;min-height:40px;padding:4px 0;border:0;background:none;font:inherit;font-size:14px;font-weight:400;color:var(--accent);cursor:pointer}.portfolio-story-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.portfolio-story-details.is-open .story-more{display:none}.portfolio-story-details.is-open .story-less{display:inline}.portfolio-story-details.is-open .story-chevron{transform:rotate(225deg)}.portfolio-story-content{padding:0}.portfolio-story-content p:last-child{margin-bottom:8px}@media(prefers-reduced-motion:reduce){.portfolio-story-reveal{transition:none}}


/* Collapsible model panel */
.portfolio-viewer-launch{display:flex;align-items:center;justify-content:space-between;gap:20px;width:100%;padding:22px 24px;border:1px solid var(--line);background:#202020;color:var(--text);font:inherit;text-align:left;cursor:pointer}.portfolio-viewer-launch:hover{border-color:var(--accent)}.portfolio-viewer-launch[hidden]{display:none}.portfolio-model-panel{display:grid;grid-template-rows:0fr;opacity:0;visibility:hidden;transition:grid-template-rows .28s ease,opacity .22s ease,visibility .28s}.portfolio-model-panel.is-open{grid-template-rows:1fr;opacity:1;visibility:visible}.portfolio-model-inner{min-height:0;overflow:hidden}#close3d{margin-left:auto;order:10}.portfolio-process .portfolio-story-content p{font-size:14px}.portfolio-cta .portfolio-story-details{margin-bottom:18px}@media(prefers-reduced-motion:reduce){.portfolio-model-panel{transition:none}}





.portfolio-story-details{margin-top:8px;border:0}.portfolio-story-details>summary{display:inline-flex;align-items:center;gap:10px;min-height:40px;padding:4px 0;cursor:pointer;list-style:none;font:inherit;font-size:14px;font-weight:400;color:var(--accent)}.portfolio-story-details>summary::-webkit-details-marker{display:none}.portfolio-story-details>summary:hover{color:var(--accent)}.portfolio-story-details>summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.portfolio-story-details .story-less{display:none}.portfolio-story-details[open] .story-less{display:inline}.portfolio-story-details[open] .story-more{display:none}.story-chevron{width:6px;height:6px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg);margin:0 3px 3px 0;transition:transform .18s ease}.portfolio-story-details[open] .story-chevron{transform:rotate(225deg)}.portfolio-story-content{padding:12px 0 0;color:var(--muted)}.portfolio-story{margin-bottom:36px}.portfolio-story h2{font-size:clamp(24px,2.5vw,30px);font-weight:500;margin:10px 0 14px}.portfolio-story>p:not(.overline){font-size:16px;line-height:1.7;color:var(--muted);margin:0}.portfolio-story-content p{font-size:16px;line-height:1.7}@media(prefers-reduced-motion:reduce){.story-chevron{transition:none}}.portfolio-story-content>p:first-child{margin-top:0}
