/* Hallmark · component refinement · genre: editorial · theme: zzz light exhibition (restored by request) · original-photo wheel · v2.0.0 */
/* Hallmark · pre-emit critique: P4 H4 E4 S4 R4 V4 · weakest: S; original white portfolio structure restored, while new media and working controls are retained. */
/* Hallmark · dismissed 29 · liquid glass is user-requested; shared waiver in style.css. */
/* Hallmark · answered F24 · quiet reflective photo edges and glass controls preserve the user's requested material. */
/* Hallmark · dismissed 40 · legacy dark-wheel declarations are overridden by ink-on-white rules in this file; footer hover explicitly uses footer-ink on a dark mixed surface. Computed styles are verified in Chrome. */
:root{--wheel-mat:var(--white);--wheel-reflection:rgba(38,57,50,.11);--wheel-shadow:rgba(38,57,50,.16);--color-focus:var(--accent);--wave-duration:1100ms;--footer-paper:#edf0eb;--footer-ink:#252d2e;--footer-muted:#606d6b;--footer-line:#d3dad3}
.experience-toggle{appearance:none;border:0;padding:var(--space-2xs) var(--space-sm);margin-inline:calc(-1 * var(--space-sm));width:calc(100% + var(--space-lg));min-height:44px;background:var(--transparent);color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.experience-toggle::after{display:none}
.experience-toggle svg{width:20px;height:20px;flex:none;stroke-width:1.4;transition:transform var(--dur-long) var(--interaction-ease)}
.experience-toggle[aria-expanded=true] svg{transform:rotate(45deg)}
.experience-toggle:hover{color:var(--accent)}
.experience-extra{padding-top:var(--space-md)}
.experience-extra p{font-size:var(--type-ui);line-height:1.9}
.experience-more{border:0;background:var(--transparent);padding:var(--space-2xs) var(--space-sm);margin-left:calc(-1 * var(--space-sm));cursor:pointer}
.experience-more[aria-expanded=true] svg{transform:rotate(45deg)}
.selected-experience .experience-skills{padding-block:var(--space-lg) 0}
.experience-skills dt{font-size:var(--type-ui)}

.photo-section{color:var(--ink);padding-block:var(--space-2xl) var(--space-xl);overflow:clip;background:linear-gradient(to bottom,var(--warm-paper),var(--paper) 260px)}
.photo-gallery{max-width:none}
.photo-gallery-heading{max-width:1120px;margin:0 auto var(--space-xl);border:0;padding:0;align-items:center}
.photo-gallery-heading p{color:var(--muted);max-width:30ch}
.photo-section .photo-placeholder{display:none}
.photo-section .photo-gallery-end{border:0;color:var(--muted);max-width:1120px;margin:var(--space-xl) auto 0;padding:0}
.photo-section .photo-gallery-grid:not(.wheel__ring){max-width:720px;margin-inline:auto}
/* Wheel geometry and reflection adapted from usehallmark.com/js/wheel.js and its wheel rules. */
.photo-wheel{--cw:clamp(280px,30vw + 80px,570px);--n:15;--r3d:1000px;position:relative;height:calc(var(--cw) * .667 + 122px);perspective:1500px;perspective-origin:50% 35%;cursor:grab;touch-action:pan-y;outline:none;margin-top:var(--space-xl)}
.photo-wheel.is-drag{cursor:grabbing}
.photo-wheel:focus-visible{outline:none}
.photo-wheel:focus-visible .wheel__card[data-front=true]{outline:2px solid var(--color-focus);outline-offset:4px}
.wheel__stage{position:absolute;left:50%;top:28px;width:var(--cw);aspect-ratio:3/2;margin-left:calc(var(--cw) / -2);transform-style:preserve-3d}
.photo-gallery-grid.wheel__ring{position:absolute;inset:0;display:block;margin:0;padding:0;transform-style:preserve-3d;transform:translateZ(calc(var(--r3d) * -1)) rotateX(-3deg) rotateY(var(--turn,0deg));will-change:transform}
.photo-gallery-grid.wheel__ring .wheel__item{position:absolute;inset:0;width:100%;height:100%;max-width:none;margin:0;justify-self:stretch;grid-column:auto;transform-style:preserve-3d;transform:rotateY(calc(var(--k) * 360deg / var(--n))) translateZ(var(--r3d));backface-visibility:hidden;-webkit-backface-visibility:hidden}
.photo-gallery-grid.wheel__ring .wheel__card{position:absolute;inset:0;display:block;padding:var(--space-sm);color:var(--footer-ink);transform:translateZ(var(--lift,0px));border-radius:14px;overflow:hidden;background:var(--wheel-mat);box-shadow:0 0 0 1px var(--footer-line),0 30px 60px -30px var(--wheel-shadow);backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-box-reflect:below 14px linear-gradient(var(--transparent) 72%,var(--wheel-reflection))}
.photo-gallery-grid.wheel__ring .photo-print{width:100%;height:100%;aspect-ratio:auto;overflow:visible}
.photo-gallery-grid.wheel__ring img{display:block;width:100%;height:100%;max-height:none;object-fit:contain;filter:none;pointer-events:none;user-select:none}
.photo-gallery-grid.wheel__ring .wheel__item figcaption{display:none}
.photo-gallery-grid.wheel__ring .photo-open:hover{transform:translateZ(var(--lift,0px));box-shadow:0 0 0 1px var(--footer-muted),0 30px 60px -30px var(--wheel-shadow)}
.photo-wheel-bar{display:flex;align-items:center;justify-content:center;gap:var(--space-lg);margin-top:var(--space-md)}
.photo-wheel-direction{appearance:none;flex:none;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--wheel-mat);color:var(--ink);box-shadow:none}
.photo-wheel-direction:hover{box-shadow:inset 0 0 0 1px var(--footer-muted);background:var(--footer-line)}
.photo-wheel-direction.glass-action::before{background:var(--glass-dark-wave)}
.photo-wheel-direction svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.photo-wheel-cap{flex:0 1 260px;min-width:0;text-align:center}
.photo-wheel-cap strong{display:block;font-size:var(--type-work);font-weight:400;line-height:1.8}
.photo-wheel-cap span{font-size:var(--type-caption);color:var(--footer-muted);line-height:1.8}
.photo-section a:focus-visible,.photo-section button:focus-visible{outline-color:var(--color-focus)}

.photo-gallery-grid.wheel__ring .wheel__card{color:var(--ink);box-shadow:0 0 0 1px var(--line),0 30px 60px -30px var(--wheel-shadow)}
.photo-gallery-grid.wheel__ring .photo-open:hover{box-shadow:0 0 0 1px var(--muted),0 30px 60px -30px var(--wheel-shadow)}
.photo-wheel-direction{color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}
.photo-wheel-direction:hover{background:var(--paper);box-shadow:inset 0 0 0 1px var(--muted)}
.photo-wheel-direction.glass-action::before{background:var(--glass-wave)}
.photo-wheel-direction.glass-action{border:1px solid var(--line);box-shadow:none}
.photo-wheel-direction.glass-action:hover{border-color:var(--muted);box-shadow:0 4px 12px var(--shadow)}
.photo-wheel-cap span{color:var(--muted)}
.about-band{background:var(--paper)}
.about-band .about{padding-block:var(--space-2xl)}
.footer{background:var(--footer-paper);padding-block:var(--space-xl) var(--space-lg)}
.footer-main.foot__top{grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--space-lg);padding-top:var(--space-2xl);border-top:1px solid var(--footer-line)}
.foot__lead{grid-column:1/span 5}
.foot__install{grid-column:7/-1}
.footer-wordmark{font-size:clamp(64px,7vw,96px);font-weight:500;line-height:1;letter-spacing:-.06em;margin:0 0 var(--space-lg)}
.footer h2{font-size:var(--type-category);line-height:1.5;margin:0 0 var(--space-sm)}
.footer .contact-note{color:var(--footer-muted);font-size:var(--type-ui);line-height:1.9;margin-bottom:var(--space-lg)}
.email-copy{font-size:clamp(18px,2vw,25px);line-height:1.25;min-height:44px;padding:var(--space-xs) var(--space-md);margin-left:calc(-1 * var(--space-md))}
.footer-bottom.foot__bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-lg);margin-top:var(--space-2xl);padding-block:var(--space-lg);border:0}
.footer-explore.foot__links{display:flex;flex-wrap:wrap;gap:var(--space-xs);padding:0;margin-left:calc(-1 * var(--space-sm))}
.footer-explore a{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--space-sm);margin:0;border-radius:999px;color:var(--footer-muted);font-size:var(--type-caption);transition:background-color var(--dur-short) var(--interaction-ease),color var(--dur-short) var(--interaction-ease)}
.footer-explore a:hover{background:var(--wheel-mat);color:var(--footer-ink);text-decoration:none}
.footer-credits{font-size:12px;line-height:1.8;color:var(--footer-muted);padding-top:var(--space-xs)}
.footer-credits a{text-underline-offset:.2em}

.footer{position:relative;padding-top:var(--space-xl);background:var(--footer-paper);border-top:1px solid var(--footer-line)}
.footer::before{display:none}
.footer-explore a:hover{background:color-mix(in oklab,var(--footer-ink) 8%,var(--footer-paper))}
.email-copy-wrap{display:block;width:100%;max-width:100%}
.email-copy-wrap{margin-bottom:48px}
.email-tooltip{top:calc(100% + var(--space-xs));bottom:auto}
.copy-status{position:absolute;width:1px;height:1px;min-height:0;padding:0;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.email-copy{width:max-content;max-width:100%;white-space:nowrap;overflow-wrap:normal;font-size:clamp(18px,2vw,25px)}
/* Restore the earlier quiet wave on category controls, with a slower return. */
.format-heading .collection-tabs button{border-radius:0;padding-inline:var(--space-sm);background:var(--transparent);color:var(--muted);transition:color var(--dur-long) var(--interaction-ease),box-shadow var(--dur-long) var(--interaction-ease),transform var(--dur-long) var(--interaction-ease)}
.format-heading .collection-tabs button[aria-selected=true]{background:var(--transparent);color:var(--ink)}
.format-heading .collection-tabs button:hover:not([aria-selected=true]){background:var(--transparent);color:var(--ink)}
.format-heading .collection-tabs button::before{inset:-100% -40%;border-radius:43%;background:color-mix(in oklab,var(--ink) 5%,var(--transparent));opacity:0;transform:translate(-55%,80%) rotate(-35deg);transition:transform var(--wave-duration) var(--interaction-ease),opacity var(--dur-long) var(--interaction-ease)}
.format-heading .collection-tabs button::after{display:block;content:'';position:absolute;inset:auto var(--space-sm) 0;height:1px;background:var(--muted);transform:scaleX(0);transform-origin:center;transition:transform var(--dur-long) var(--interaction-ease)}
.format-heading .collection-tabs button[aria-selected=true]::after{transform:scaleX(1)}
.format-heading .collection-tabs button:focus-visible{outline-offset:4px}
@media(hover:hover) and (pointer:fine){.format-heading .collection-tabs button:hover::before{opacity:1;transform:translate(15%,-5%) rotate(20deg)}.format-heading .collection-tabs button:hover{box-shadow:none}}
@media(prefers-reduced-motion:reduce){.format-heading .collection-tabs button,.format-heading .collection-tabs button::before,.format-heading .collection-tabs button::after{transition:none}.format-heading .collection-tabs button:hover::before{opacity:0;transform:none}}

.clip-caption{display:grid;justify-items:center;width:100%;max-width:720px}
.clip-caption h5,.clip-caption p{width:100%;max-width:none;margin-inline:0;text-align:center}
.clip-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);width:100%;height:100%;min-height:120px;background:var(--warm-paper);color:var(--muted);border:1px solid var(--line);border-radius:var(--radius-media);text-align:center;padding:var(--space-md)}
.clip-placeholder span{font-size:var(--type-work);color:var(--ink)}
.clip-placeholder p{font-size:var(--type-caption);max-width:none}

.footer-tools{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-xs) var(--space-lg);padding-top:var(--space-lg);border-top:1px solid var(--footer-line);color:var(--footer-muted);font-size:var(--type-caption);line-height:1.9}
.footer-tools h3{margin:0;font-size:inherit;font-weight:400;color:var(--footer-ink)}
.footer-tools p{max-width:none}

@media(max-width:700px){
 .format-heading .collection-tabs{gap:var(--space-xs)}
 .format-heading .collection-tabs button{padding-inline:var(--space-xs)}
 .photo-gallery-heading{display:block}.photo-gallery-heading p{margin-top:var(--space-md)}
 .photo-wheel{--cw:clamp(240px,66vw,380px);height:calc(var(--cw) * .667 + 100px);perspective:1100px;margin-top:var(--space-lg)}
 .photo-gallery-grid.wheel__ring .wheel__card{padding:var(--space-xs)}
 .photo-wheel-bar{gap:var(--space-md)}
 .photo-section .photo-gallery-end{display:block;margin-top:var(--space-xl)}
 .photo-gallery-end span{display:block;line-height:1.9}
 .footer-main.foot__top{grid-template-columns:minmax(0,1fr);gap:var(--space-xl);padding-top:var(--space-xl)}
 .foot__lead,.foot__install{grid-column:1}
 .footer-bottom.foot__bottom{margin-top:var(--space-xl);gap:var(--space-md)}
 .footer-wordmark{font-size:48px}
 .footer{padding-top:var(--space-lg)}
}
@media(prefers-reduced-motion:reduce){.photo-wheel-direction,.experience-toggle svg,.footer-explore a{transition:none}}

/* A clear title and one real film frame carry the restored light opening. */
.intro{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:center;gap:var(--space-2xl);padding-block:var(--space-2xl) var(--space-xl)}
.intro h1{font-size:clamp(38px,4.2vw,60px);line-height:1.3}
.intro-copy{font-size:var(--type-body);max-width:30ch;line-height:1.9}
.intro-aside{display:block;width:100%;max-width:430px;justify-self:end}
.intro-feature{display:block;text-decoration:none;border-radius:var(--radius-media);transition:transform var(--dur-long) var(--interaction-ease)}
.intro-feature-frame{position:relative;display:block;aspect-ratio:16/9;overflow:hidden;border-radius:var(--radius-media);background:var(--warm-paper)}
.intro-feature img{width:100%;height:100%;display:block;object-fit:contain}
.intro-feature-play{position:absolute;inset:0;margin:auto;display:grid;place-items:center;width:48px;height:48px;border:1px solid var(--glass-edge);border-radius:50%;background:var(--glass);backdrop-filter:blur(12px);color:var(--ink)}
.intro-feature-play svg{width:22px;height:22px;fill:currentColor}
.intro-feature-caption{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);padding-block:var(--space-sm);color:var(--ink);font-size:var(--type-ui)}
.intro-feature-caption small{font-size:var(--type-caption);color:var(--muted);white-space:nowrap}
.intro-feature:hover{transform:translateY(-3px)}
.section-navigation{justify-content:flex-start;gap:var(--space-xl);padding-block:var(--space-md) var(--space-lg)}
.film-introduction{text-align:left;margin-bottom:var(--space-xl)}
.format-heading{max-width:none}
.collection-heading{margin-bottom:var(--space-lg)}
.collection-heading h4{position:absolute;width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip-path:inset(50%)}
@media(max-width:700px){.intro{grid-template-columns:minmax(0,1fr);gap:var(--space-lg);padding-block:var(--space-xl) var(--space-lg)}.intro-aside{max-width:none}.intro-copy{max-width:none}.intro-feature-caption{font-size:var(--type-caption)}.intro-feature-caption small{font-size:12px}.section-navigation{gap:var(--space-lg)}}
@media(prefers-reduced-motion:reduce){.intro-feature{transition:none}.intro-feature:hover{transform:none}}
.photo-dialog{width:min(1180px,94%);max-width:1180px;max-height:90svh;padding:var(--space-md)}
.photo-dialog-image img{max-height:calc(90svh - 132px);max-width:100%;width:auto;object-fit:contain}
.photo-gallery-grid.wheel__ring .wheel__card{will-change:transform}
@media(max-width:700px){.photo-dialog{width:94%;padding:var(--space-sm);max-height:88svh}.photo-dialog-image img{max-height:calc(88svh - 132px)}}

/* A type-led opening and a quiet rule between the photographs and biography. */
.intro{grid-template-columns:minmax(0,1fr)}
.intro-main{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.8fr);align-items:end;gap:var(--space-2xl)}
.intro-copy{margin:0 0 var(--space-xs);justify-self:end}
.about-band .about{border-top:1px solid var(--line)}
@media(max-width:700px){.intro-main{grid-template-columns:minmax(0,1fr);gap:var(--space-lg)}.intro-copy{justify-self:start;margin:0}}

/* Exhibition photographs keep their native proportions without a white landscape mat. */
.live-photo-card .photo-open{width:fit-content;max-width:100%;margin-inline:auto;padding:0;background:var(--transparent);box-shadow:none;border-radius:2px}
.live-photo-card img{width:auto;max-width:100%;height:auto;max-height:340px;aspect-ratio:auto;object-fit:contain}
.live-photo-grid{align-items:start}
@media(max-width:700px){.live-photo-card img{max-height:380px}}

.project-experience{grid-column:1/-1;min-width:0}
.project-experience h3{font-size:var(--type-category);font-weight:400;line-height:1.5;margin:0 0 var(--space-lg)}
.selected-projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xl)}
.selected-projects .experience-toggle{line-height:1.6;min-width:0}
.about-tools{margin-block:var(--space-lg);padding-top:var(--space-lg);border-top:1px solid var(--line);max-width:40ch}
.about-tools h3{font-size:var(--type-caption);font-weight:400;line-height:1.8;margin-bottom:var(--space-xs)}
.about-tools p{font-size:var(--type-caption);line-height:1.9}
.photo-section > .photo-wheel-direction{position:absolute;top:calc(28px + var(--cw) / 3);z-index:var(--z-raised);transform:translateY(-50%);width:48px;height:48px;border:1px solid var(--glass-edge);background:color-mix(in oklab,var(--glass) 65%,var(--transparent));backdrop-filter:blur(16px) saturate(1.15);-webkit-backdrop-filter:blur(16px) saturate(1.15);box-shadow:inset 0 1px 0 var(--glass-edge),inset 0 -1px 0 var(--photo-edge),0 6px 20px var(--shadow);transition:background-color var(--dur-long) var(--interaction-ease),box-shadow var(--dur-long) var(--interaction-ease)}
.photo-section > [data-wheel-step="-1"]{left:clamp(12px,2.4vw,40px)}
.photo-section > [data-wheel-step="1"]{right:clamp(12px,2.4vw,40px)}
.photo-section > .photo-wheel-direction:hover{background:var(--glass);box-shadow:inset 0 1px 0 var(--glass-edge),0 8px 26px var(--shadow-strong)}
.photo-section > .photo-wheel-direction::before{background:var(--glass-wave)}
.photo-section > .photo-wheel-direction svg{position:relative;z-index:1}
@media(max-width:700px){.selected-projects{grid-template-columns:minmax(0,1fr);gap:var(--space-lg)}.photo-section > .photo-wheel-direction{width:44px;height:44px}.photo-section > [data-wheel-step="-1"]{left:clamp(12px,2.4vw,40px)}.photo-section > [data-wheel-step="1"]{right:clamp(12px,2.4vw,40px)}}
@media(prefers-reduced-motion:reduce){.photo-section > .photo-wheel-direction{transition:none}}
.photo-section > .photo-wheel-direction{top:var(--wheel-control-y,50%)}
.selected-projects dd{margin:0;color:var(--muted);font-size:var(--type-ui);line-height:1.9}
.format-heading .collection-tabs button::before{display:none}

.photo-section{position:relative}
.photo-section > .photo-wheel-direction{width:60px;height:60px}
.photo-section > .photo-wheel-direction svg{width:22px;height:22px}
@media(max-width:700px){.photo-section > .photo-wheel-direction{width:50px;height:50px}.photo-section > .photo-wheel-direction svg{width:20px;height:20px}}

/* Biography, parallel experience lists, then their shared controls and tools. */
.about-band .about{display:block}
.about-introduction{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:var(--space-3xl)}
.about-copy p{max-width:none}
.experience-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xl);margin-top:var(--space-xl)}
.work-experience,.project-experience{min-width:0}
.work-experience h3,.project-experience h3{font-size:22px;line-height:1.5;font-weight:400;margin:0 0 var(--space-lg)}
.project-experience{grid-column:auto}
.selected-projects{display:block}
.experience-tail{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-lg);margin-top:var(--space-lg)}
.experience-tail .about-tools{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:var(--space-3xl);width:100%;max-width:none;margin:0;padding-top:var(--space-lg)}
.experience-tail .about-tools h3{margin:0}
.experience-tail .about-tools p{max-width:none}
@media(max-width:700px){.about-introduction,.experience-columns,.experience-tail .about-tools{grid-template-columns:minmax(0,1fr);gap:var(--space-lg)}.experience-columns{gap:var(--space-xl)}}
.intro-portfolio-title{display:block;margin-bottom:var(--space-sm);color:var(--ink);font-size:clamp(26px,2.4vw,34px);font-weight:500;line-height:1.5;letter-spacing:-.02em}
