/* Actual project interface captures; v32 adds device presentation frames. */
.v30portfolio{color:var(--ink,#20201d);background:var(--paper,#fff);padding-bottom:clamp(80px,10vw,160px)}
.v30portfolio *, .workviewer *{box-sizing:border-box}
.v30portfolio .v30work-intro{padding:clamp(164px,12vw,210px) var(--page-gutter,5vw) clamp(42px,6vw,84px);max-width:1600px;margin:auto}
.v30portfolio .v30work-eyebrow,.v30portfolio .v30work-sector,.workviewer .workviewer-eyebrow,.workviewer .workviewer-status{font:400 10px/1.5 var(--label,var(--sans,sans-serif));letter-spacing:.12em;text-transform:uppercase}
.v30portfolio .v30work-intro h1{font:300 clamp(54px,7.5vw,124px)/.99 var(--serif,serif);letter-spacing:-.045em;margin:25px 0 20px;max-width:1050px}
.v30portfolio .v30work-intro>p:last-of-type{font:400 clamp(16px,1.4vw,20px)/1.65 var(--sans,sans-serif);max-width:470px;color:var(--muted,#66645f);margin:0}
.v30work-filters{display:flex;flex-wrap:wrap;gap:8px;margin-top:36px}
.v30work-filters[hidden]{display:none}
.v30work-filters button{font:400 13px/1.3 var(--sans,sans-serif);min-height:44px;border:1px solid var(--line,#deddd8);border-radius:0;padding:12px 18px;background:transparent;color:inherit;cursor:pointer;transition:background .2s,color .2s}
.v30work-filters button[aria-pressed=true]{background:var(--ink,#20201d);color:var(--paper,#fff);border-color:var(--ink,#20201d)}
.v30work-grid{max-width:1760px;padding:0 var(--page-gutter,5vw);margin:0 auto;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(55px,8vw,120px) clamp(24px,4vw,64px)}
.v30work-card{grid-column:span 6;min-width:0;margin:0}
.v30work-card:nth-child(3n+1){grid-column:span 12}
.v30work-card[hidden]{display:none}
.v30work-art{display:block;position:relative;overflow:hidden;background:transparent;isolation:isolate;color:inherit;text-decoration:none}
.v30work-art img{display:block;width:100%;height:auto;aspect-ratio:1.53;object-fit:cover;object-position:top;transition:transform 1.1s cubic-bezier(.2,.7,.2,1)}
.v30work-art:after{content:'';position:absolute;inset:0;border:1px solid #2222220d;pointer-events:none}
.v30work-open{position:absolute;right:18px;bottom:18px;background:var(--paper,#fff);color:var(--ink,#20201d);display:flex;align-items:center;gap:12px;min-height:44px;padding:12px 16px;font:400 12px/1.3 var(--sans,sans-serif);transform:translateY(5px);opacity:0;transition:opacity .3s,transform .3s}
.v30work-art:hover img{transform:scale(1.025)}
.v30work-art:hover .v30work-open,.v30work-art:focus-visible .v30work-open{opacity:1;transform:none}
.v30work-caption{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding-top:20px}
.v30work-caption h2{font:300 clamp(24px,2.6vw,40px)/1.12 var(--serif,serif);letter-spacing:-.025em;margin:0 0 9px}
.v30work-caption h2 a{color:inherit;text-decoration:none}
.v30work-caption .v30work-sector{color:var(--muted,#66645f);margin:0;font-size:10px}
.v30work-caption>a{flex:none;display:grid;place-items:center;color:inherit;text-decoration:none;width:44px;height:44px;border:1px solid var(--line,#deddd8);transition:background .2s,color .2s}
.v30work-caption>a:hover{background:var(--ink,#20201d);color:var(--paper,#fff)}
.v30work-note{font:400 12px/1.6 var(--sans,sans-serif);color:var(--muted,#66645f);margin:10px 0 0;max-width:540px}
.v30work-empty{margin:40px 5vw;font:400 16px var(--sans,sans-serif)}
.v30work-invitation{margin:clamp(70px,10vw,150px) var(--page-gutter,5vw) 0;border-top:1px solid var(--line,#deddd8);padding-top:32px;display:flex;justify-content:space-between;align-items:center;gap:24px}
.v30work-invitation h2{font:300 clamp(28px,4vw,60px)/1.12 var(--serif,serif);letter-spacing:-.03em;margin:0}
.v30work-link{color:inherit;display:inline-flex;align-items:center;gap:24px;min-height:48px;padding:12px 0;font:400 14px/1.3 var(--sans,sans-serif);text-decoration:none;border-bottom:1px solid currentColor}
.v30case-hero{padding:clamp(156px,12vw,200px) var(--page-gutter,5vw) 45px;max-width:1500px;margin:auto}
.v30case-hero>a{font:400 13px/1.5 var(--sans,sans-serif);display:inline-flex;align-items:center;min-height:44px;gap:12px;color:inherit;text-decoration:none}
.v30case-hero h1{font:300 clamp(52px,7vw,110px)/1 var(--serif,serif);letter-spacing:-.04em;margin:28px 0 18px}
.v30case-hero>p{font:400 16px/1.6 var(--sans,sans-serif);max-width:560px;color:var(--muted,#66645f)}
.v30case-art{margin:0 var(--page-gutter,5vw)}
.v30case-art>a{display:block;position:relative;color:inherit}
.v30case-art img{width:100%;height:auto;display:block;border:1px solid #2222220d}
.v30case-art .v30work-open{opacity:1;transform:none}
.v30case-content{max-width:1440px;margin:clamp(45px,7vw,100px) auto 0;padding:0 var(--page-gutter,5vw);display:grid;grid-template-columns:1fr 1fr;gap:8vw}
.v30case-content h2{font:300 clamp(31px,3.6vw,54px)/1.14 var(--serif,serif);letter-spacing:-.03em;margin:0 0 24px}
.v30case-content p,.v30case-content li{font:400 15px/1.8 var(--sans,sans-serif);color:var(--muted,#66645f)}
.v30case-details details{border-top:1px solid var(--line,#deddd8);padding:0 0 12px}
.v30case-details details:last-child{border-bottom:1px solid var(--line,#deddd8)}
.v30case-details summary{cursor:pointer;min-height:58px;display:flex;justify-content:space-between;align-items:center;gap:18px;font:400 15px/1.4 var(--sans,sans-serif);list-style:none}
.v30case-details summary::-webkit-details-marker{display:none}
.v30case-details summary:after{content:'+';font:400 23px/1 var(--sans,sans-serif)}
.v30case-details details[open] summary:after{content:'−'}
.v30case-details p{margin:5px 0 16px}
.v30case-mobile-capture{max-width:400px;margin:clamp(55px,8vw,115px) auto 0;padding:0 24px}
.v30case-mobile-capture img{width:100%;height:auto;display:block;border:1px solid var(--line,#deddd8)}
.v30case-mobile-capture figcaption{font:400 12px/1.5 var(--sans,sans-serif);color:var(--muted,#66645f);margin-top:14px;text-align:center}
/* Full project viewer. The actual interface is the artwork. */
.workviewer{--viewer-paper:var(--paper,#fff);padding:0;border:0;background:var(--viewer-paper);color:var(--ink,#20201d);width:calc(100vw - 32px);max-width:1660px;height:calc(100dvh - 32px);max-height:calc(100dvh - 32px);overflow:hidden;box-shadow:0 24px 100px #0003;margin:auto}
.workviewer::backdrop{background:#151a1dcc;backdrop-filter:blur(9px)}
.workviewer:not([open]){display:none}
.workviewer-shell{height:100%;display:flex;flex-direction:column;min-height:0}
.workviewer-header{display:flex;align-items:center;justify-content:space-between;gap:20px;flex:none;padding:18px 24px;border-bottom:1px solid var(--line,#deddd8)}
.workviewer-header h2{font:300 clamp(23px,2.3vw,37px)/1.05 var(--serif,serif);letter-spacing:-.025em;margin:3px 0 0}
.workviewer-eyebrow{font-size:9px;margin:0;color:var(--muted,#66645f)}
.workviewer-button{display:inline-flex;justify-content:center;align-items:center;gap:10px;min-width:44px;min-height:44px;padding:11px 15px;border:1px solid var(--line,#deddd8);border-radius:0;background:transparent;color:inherit;cursor:pointer;font:400 13px/1.3 var(--sans,sans-serif);text-decoration:none;transition:none}
.workviewer-button:hover,.workviewer-button[aria-pressed=true]{background:var(--ink,#20201d);color:var(--viewer-paper);border-color:var(--ink,#20201d)}
.workviewer-close{border:0;flex:none;padding:10px;display:grid;place-items:center}
.workviewer-close svg{width:22px;height:22px}
.workviewer-body{overflow-y:auto;overscroll-behavior:contain;min-height:0;scrollbar-gutter:stable}
.workviewer-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px}
.workviewer-device{display:flex;gap:0}
.workviewer-device .workviewer-button+.workviewer-button{margin-left:-1px}
.workviewer-move{display:flex;align-items:center;gap:8px}
.workviewer-position{font:400 12px/1.3 var(--sans,sans-serif);font-variant-numeric:tabular-nums;padding:0 8px;color:var(--muted,#66645f)}
.workviewer-canvas{display:flex;justify-content:center;align-items:flex-start;min-height:200px;margin:0 24px;overflow:hidden;position:relative;background:transparent}
.workviewer-canvas img{display:block;max-width:100%;width:auto;height:auto;max-height:57dvh;object-fit:contain;object-position:top;border:1px solid #20201d12}
.workviewer-canvas[data-device=mobile] img{width:auto;max-width:min(100%,330px);max-height:65dvh;object-fit:contain}
.workviewer-canvas.is-expanded{max-height:none;overflow:auto;justify-content:flex-start}
.workviewer-canvas.is-expanded img{width:100%;max-height:none;max-width:none;flex:none;object-fit:initial}
.workviewer-canvas.is-expanded[data-device=mobile]{justify-content:center}
.workviewer-canvas.is-expanded[data-device=mobile] img{width:min(100%,390px)}
.workviewer-image-error{max-width:480px;padding:40px 10px;font:400 15px/1.7 var(--sans,sans-serif);text-align:center}
.workviewer-image-error a{color:inherit}
.workviewer-meta{padding:27px 24px 20px;display:flex;justify-content:space-between;align-items:center;gap:20px}
.workviewer-status{font-size:9px;color:var(--muted,#66645f);margin:0}
.workviewer-scope{font:400 12px/1.5 var(--sans,sans-serif);margin:5px 0 0;color:var(--muted,#66645f)}
.workviewer-meta .workviewer-button{flex:none;font-size:12px}
.workviewer-details{border-top:1px solid var(--line,#deddd8);margin:0 24px;padding:24px 0 30px;display:grid;grid-template-columns:220px minmax(0,1fr);gap:25px}
.workviewer-tabs{display:flex;flex-direction:column;align-items:stretch;gap:4px}
.workviewer-tab{border:0;border-radius:0;position:relative;min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;color:var(--muted,#66645f);background:transparent;font:400 14px/1.5 var(--sans,sans-serif);text-align:left;cursor:pointer}
.workviewer-tab[aria-selected=true]{color:var(--ink,#20201d);background:color-mix(in srgb,var(--ink,#20201d) 4%,transparent)}
.workviewer-tab span{font-size:11px;opacity:.65}
.workviewer-panel{font:400 15px/1.75 var(--sans,sans-serif);max-width:820px;padding:7px 0}
.workviewer-panel[hidden]{display:none}
.workviewer-panel p{margin:0 0 15px}
.workviewer-panel p:last-child{margin-bottom:0}
.workviewer-journey{margin:22px 0 0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.workviewer-journey li{font-size:13px;line-height:1.65;border-top:1px solid var(--line,#deddd8);padding-top:12px}
.workviewer-journey li:before{content:attr(data-step);display:block;font-size:10px;letter-spacing:.08em;margin-bottom:6px;color:var(--muted,#66645f)}
.workviewer-strip{border-top:1px solid var(--line,#deddd8);padding:18px 24px 20px;display:flex;gap:10px;overflow:auto;scrollbar-width:thin}
.workviewer-thumb{flex:0 0 110px;text-align:left;padding:4px;background:transparent;border:1px solid transparent;color:var(--muted,#66645f);cursor:pointer;min-height:80px}
.workviewer-thumb[aria-current=true]{border-color:var(--ink,#20201d);color:var(--ink,#20201d)}
.workviewer-thumb img{display:block;width:100%;height:62px;object-fit:cover;object-position:top}
.workviewer-thumb span{font:400 10px/1.4 var(--sans,sans-serif);display:block;padding:6px 1px 1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.workviewer button:focus-visible,.workviewer a:focus-visible,.v30portfolio button:focus-visible,.v30portfolio a:focus-visible,.v30portfolio summary:focus-visible{outline:2px solid currentColor;outline-offset:4px}
@media(hover:none){.v30work-open{opacity:1;transform:none}}
@media(min-width:1450px){.workviewer-canvas img{max-height:59dvh}}
@media(max-width:850px){.v30work-grid{gap:48px 24px}.v30work-card,.v30work-card:nth-child(3n+1){grid-column:span 12}.v30work-open{opacity:1;transform:none}.v30case-content{grid-template-columns:1fr;gap:35px}.workviewer-details{grid-template-columns:1fr;gap:15px}.workviewer-tabs{flex-direction:row;border-bottom:1px solid var(--line,#deddd8);gap:8px}.workviewer-tab{padding:10px 13px;flex:1;justify-content:center}.workviewer-tab span{display:none}.workviewer-tab[aria-selected=true]{background:transparent;border-bottom:1px solid currentColor}.workviewer-journey{gap:15px}}
@media(max-width:560px){.v30portfolio .v30work-intro{padding-top:155px;padding-bottom:35px}.v30portfolio .v30work-intro h1{font-size:58px}.v30work-caption{padding-top:16px;gap:12px}.v30work-caption h2{font-size:29px}.v30work-open{right:10px;bottom:10px;padding:10px 12px;font-size:11px}.v30work-note{font-size:12px}.v30work-invitation{align-items:flex-start;flex-direction:column}.v30case-hero h1{font-size:52px}.workviewer{width:100%;height:100dvh;max-height:100dvh;margin:0;max-width:none}.workviewer-header{padding:14px 16px;gap:12px}.workviewer-header h2{font-size:27px}.workviewer-eyebrow{font-size:8px}.workviewer-toolbar{padding:13px 16px;gap:8px;flex-wrap:wrap}.workviewer-button{padding:10px 12px;font-size:12px}.workviewer-position{display:none}.workviewer-move{gap:5px}.workviewer-expand{font-size:11px;padding:10px}.workviewer-canvas{margin:0 16px;min-height:150px}.workviewer-canvas img{max-height:54dvh}.workviewer-canvas[data-device=mobile] img{max-height:62dvh}.workviewer-meta{padding:24px 16px 18px;align-items:flex-start;flex-direction:column;gap:13px}.workviewer-meta .workviewer-button{width:100%;justify-content:space-between}.workviewer-details{margin:0 16px;padding:15px 0 25px}.workviewer-tab{font-size:13px;padding:10px 4px}.workviewer-panel{font-size:14px;line-height:1.75}.workviewer-journey{grid-template-columns:1fr;gap:15px;margin-top:20px}.workviewer-journey li{display:grid;grid-template-columns:24px 1fr;gap:12px;font-size:13px}.workviewer-strip{padding:14px 16px 20px}.workviewer-thumb{flex-basis:100px}.workviewer-thumb img{height:58px}}
@media(prefers-reduced-motion:reduce){.v30work-art img,.v30work-open,.v30work-caption>a,.workviewer-button{transition:none}.v30work-art:hover img{transform:none}}
.workviewer-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
/* Keep component controls compact after the shared button font reset. */
.v30 .workviewer-button{font-family:var(--sans,sans-serif);font-size:13px;line-height:1.3}
.v30 .workviewer-tab{font-family:var(--sans,sans-serif);font-size:14px;line-height:1.5}
@media(max-width:560px){.v30 .workviewer-button{font-size:12px}.v30 .workviewer-expand{font-size:11px}.v30 .workviewer-tab{font-size:13px}}
