.icon-defs{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.icon{display:inline-block;flex:none;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
.action-arrow .icon{width:18px;height:18px}
.hero .action-arrow .icon{width:17px;height:17px}
.menu>.icon{width:21px;height:21px}
.menu .menu-label{font-size:inherit}
.occasions-toggle>.icon{width:15px;height:15px}
.hero-secondary>.icon,.text-link>.icon{width:18px;height:18px}
.card-caption>.icon{width:19px;height:19px}
.occasion-option>span:last-child>.icon{width:18px;height:18px}
.text-link{display:inline-flex;align-items:center;gap:12px;min-height:44px}
.light-button{gap:24px;padding:10px 10px 10px 24px}
.button{transition:transform 180ms cubic-bezier(.2,.7,.3,1),background-color 180ms,box-shadow 180ms}
.button .action-arrow{transition:background-color 180ms,transform 180ms}
.button .icon,.hero-secondary .icon,.text-link .icon,.card-caption .icon,.occasion-links .icon{transition:transform 180ms cubic-bezier(.2,.7,.3,1)}
.button:active{transform:scale(.98);box-shadow:none}
.hero-secondary{min-height:44px}
.nav-left>a,.occasions-toggle,.menu{min-height:44px}
.label-switch button{display:inline-flex;align-items:center;gap:8px;min-height:44px;transition:opacity 180ms,background-color 180ms}
.label-switch .icon{width:16px;height:16px;opacity:.85}
.sample-controls[aria-busy=true] .label-switch button{cursor:progress}
.photo-status{min-height:17px}
.label-annotation .icon{display:block;width:88px;height:88px;margin-left:-48px;margin-top:8px;stroke-width:.65}
.occasion-ribbon{padding:0 4vw;gap:0;white-space:normal;overflow:visible}
.occasion-ribbon>a{display:flex;align-items:center;justify-content:center;gap:24px;min-height:68px;flex:1;padding:16px 22px;font-size:20px;line-height:1.2;transition:background-color 180ms}
.occasion-ribbon>a+a{border-left:1px solid rgba(255,255,255,.3)}
.occasion-ribbon .icon{width:18px;height:18px}
.label-navigation{display:none}
.icon-button{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;background:transparent;color:var(--navy);border:1px solid rgba(27,42,142,.35);border-radius:50%;cursor:pointer;transition:background-color 180ms,transform 180ms,opacity 180ms}
.icon-button:disabled{opacity:.3;cursor:default}
.icon-button:not(:disabled):active{transform:scale(.94)}
.occasion-option{transition:box-shadow 180ms,transform 180ms}
.occasion-links>a{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:52px}
.occasion-links .icon{width:18px;height:18px}
.occasion-menu,.mobile-nav{will-change:opacity,transform}
@media(hover:hover) and (pointer:fine){
 .button:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(11,36,93,.16)}
 .button:hover .icon,.hero-secondary:hover .icon,.text-link:hover .icon,.name-card:hover .card-caption .icon,.occasion-links>a:hover .icon{transform:translateX(3px)}
 .button:hover .action-arrow{transform:scale(1.035)}
 .button:hover:active{transform:scale(.98);box-shadow:none}
 .occasion-option:hover{transform:translateY(-2px)}
 .occasion-ribbon>a:hover{background:rgba(255,255,255,.09)}
 .icon-button:not(:disabled):hover{background:#e1f0fb}
}
@media(max-width:1100px) and (min-width:801px){
 .label-annotation .icon{width:64px;height:64px;margin-left:-30px}
 .occasion-ribbon>a{font-size:18px;gap:15px;padding-inline:16px}
}
@media(max-width:960px){
 .header{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}
 .mobile-nav{max-height:calc(100svh - 132px);overflow-y:auto;overscroll-behavior:contain}
 .mobile-nav a>.icon{width:24px;height:24px}
}
@media(max-width:800px){
 .hero h1{font-size:clamp(44px,14.4vw,94px)}
 .menu{padding:8px 0 8px 8px}
 .hero-secondary{font-size:12px;gap:7px}
 .hero-secondary>.icon{width:17px;height:17px}
 .sample-controls{padding-block:9px}
 .label-switch button{margin-right:24px;font-size:12px;padding:10px 0}
 .sample-controls .photo-status{margin-top:7px;line-height:1.45}
 .occasion-ribbon{display:flex;flex-direction:column;align-items:stretch;padding:3px 22px}
 .occasion-ribbon>a{font-family:DM,Arial,sans-serif;font-size:14px;font-weight:550;justify-content:space-between;min-height:51px;padding:12px 0;flex:none}
 .occasion-ribbon>a+a{border-left:0;border-top:1px solid rgba(255,255,255,.25)}
 .labels-section h2,.gathering-copy h2,.order-section h2{font-size:clamp(36px,11.5vw,45px)}
 .label-navigation{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:28px;font-size:12px;font-weight:550}
 .label-navigation-actions{display:flex;align-items:center;gap:10px}
 .label-count{min-width:36px;text-align:center;font-size:11px;font-weight:500}
 .name-wall{margin-top:17px;scrollbar-width:none;overscroll-behavior-x:contain}
 .name-wall::-webkit-scrollbar{display:none}
 .label-art strong{font-size:clamp(48px,15vw,62px)}
 .hospitality strong{font-size:clamp(48px,15vw,64px)}
 .label-bottom .text-link{margin-top:8px}
 footer>a:last-child{display:inline-flex;align-items:center;min-height:44px}
}
@media(max-width:374px){
 .hero-description{font-size:14px;max-width:100%}
 .hero-actions{gap:12px}
 .hero-actions .button{font-size:13px;gap:12px;padding-left:15px}
 .hero-secondary{font-size:11px;gap:5px}
 .hero-secondary>.icon{width:16px;height:16px}
 .label-navigation-actions{gap:7px}
 .label-art{padding-inline:23px}
}
@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto}
 .button,.button .action-arrow,.button .icon,.hero-secondary .icon,.text-link .icon,.card-caption .icon,.occasion-links .icon,.icon-button,.occasion-ribbon>a,.occasion-option,.label-switch button,.label-art{transition:none!important}
 .button:hover,.button:active,.button:hover .icon,.button:hover .action-arrow,.hero-secondary:hover .icon,.text-link:hover .icon,.occasion-option:hover,.name-card:hover .label-art,.name-card:hover .card-caption .icon,.occasion-links>a:hover .icon,.icon-button:active{transform:none!important}
}

@media(min-width:801px) and (max-width:960px){.hero-image img{object-position:center}}

/* GSAP owns fine-pointer movement; colour and shadows remain CSS driven. */
.gsap-interactions .button{transition:background-color 180ms,box-shadow 180ms}
.gsap-interactions .button .icon{transition:none}
.gsap-interactions .button:hover,.gsap-interactions .button:active,.gsap-interactions .button:hover:active,.gsap-interactions .button:hover .icon{transform:none}
