.main-nav { font-size: 1rem; }
.main-nav > a:not(.shop-link) { display: inline-block; transition: color .18s ease, transform .18s ease; }
.main-nav > a:not(.shop-link):hover, .main-nav > a:not(.shop-link):focus-visible, .main-nav > a:not(.shop-link):active { color: var(--red); transform: translateY(-2px); }
.shop-link { position: relative; overflow: hidden; isolation: isolate; }
.shop-link::before { content: ''; position: absolute; inset: 0; z-index: 0; background: linear-gradient(110deg, transparent 35%, rgba(255,255,255,.38) 50%, transparent 65%); transform: translateX(-130%); pointer-events: none; }
.shop-link:hover::before, .shop-link:focus-visible::before, .shop-link:active::before { animation: shop-sheen .75s ease-out; }
.shop-link span, .button span, .service-card b { display: inline-flex; width: 1em; align-items: center; justify-content: center; font: 700 1rem/1 'DM Sans', sans-serif; transform: scaleX(1.08); }
@keyframes shop-sheen { from { transform: translateX(-130%); } to { transform: translateX(130%); } }
.hero-actions .button { position: relative; overflow: hidden; isolation: isolate; }
.hero-actions .button { transition: color .18s ease, transform .18s ease, border-color .18s ease; }
.hero-actions .button:hover, .hero-actions .button:focus-visible, .hero-actions .button:active { color: var(--red); transform: translateY(-2px); border-color: var(--red); }
.hero-actions .button-primary:hover, .hero-actions .button-primary:focus-visible, .hero-actions .button-primary:active { color: #fff; border-color: transparent; }
.hero-actions .button::before { content: ''; position: absolute; inset: 0; z-index: 0; background: linear-gradient(110deg, transparent 35%, rgba(255,255,255,.38) 50%, transparent 65%); transform: translateX(-130%); pointer-events: none; }
.hero-actions .button-plain::before { display: none; }
.hero-actions .button-plain { transition: color .18s ease, transform .18s ease, border-color .18s ease; }
.hero-actions .button-plain:hover, .hero-actions .button-plain:focus-visible, .hero-actions .button-plain:active { color: var(--red); transform: translateY(-2px); border-color: var(--red); }
.hero-actions .button:hover::before, .hero-actions .button:focus-visible::before, .hero-actions .button:active::before { animation: shop-sheen .75s ease-out; }
.site-header { position: sticky; top: 0; width: 100%; max-width: none; background: rgb(253, 253, 255); box-shadow: 0 5px 18px rgba(32,35,40,.08); }
.site-header .brand { height: 100%; display: flex; align-items: center; overflow: hidden; }
.site-header .brand img { width: auto; max-height: calc(100% - 10px); }
.site-header { transition: height .6s cubic-bezier(.22,.75,.24,1), padding .6s cubic-bezier(.22,.75,.24,1), box-shadow .6s ease; }
.site-header .brand img { transform: none; transition: max-height .6s cubic-bezier(.22,.75,.24,1); }
.site-header .main-nav { transition: gap .6s cubic-bezier(.22,.75,.24,1), font-size .6s cubic-bezier(.22,.75,.24,1); }
.site-header .shop-link { transition: padding .6s cubic-bezier(.22,.75,.24,1), background .18s ease; }
.site-header:not(.is-compact) { height: 126px; padding-left: 52px; padding-right: 52px; }
.site-header:not(.is-compact) .brand img { max-height: calc(100% - 18px); }
.site-header.is-compact { height: 104px; }
.site-header.is-compact .brand img { max-height: calc(100% - 10px); }
.site-header:not(.is-compact) .main-nav { gap: 38px; font-size: 1.08rem; }
.site-header:not(.is-compact) .shop-link { padding: 15px 22px; }
.service-card a { align-self: flex-start; margin-top: auto; padding: 10px 13px; background: var(--red); color: #fff; }
.service-card a { transition: transform .22s ease, box-shadow .22s ease, background .22s ease, color .22s ease; }
.service-card.featured a { background: transparent; color: #fff; border-color: #fff; }
.service-card.featured { background: #fff; color: var(--ink); }
.service-card.featured p { color: var(--gray); }
.service-card.featured a { background: var(--red); color: #fff; }
.service-card.featured { background: var(--red); color: #fff; }
.service-card.featured p { color: #fff; }
.service-card.featured span { color: var(--gray); }
.service-card h3 { min-height: 86px; }
.service-grid { grid-template-columns: repeat(5, 1fr); }
.service-card.featured a { background: transparent; color: #fff; border-color: #fff; }
@media (hover: hover) { .service-card { transition: background .22s ease, color .22s ease; }.service-card:hover, .service-card:focus-within { background: var(--red); color: #fff; }.service-card:hover p, .service-card:focus-within p, .service-card:hover span, .service-card:focus-within span { color: #fff; }.service-card:hover a, .service-card:focus-within a { background: transparent; color: #fff; border-color: #fff; transform: scale(1.1); box-shadow: 0 8px 18px rgba(0,0,0,.18); }.service-grid:has(.service-card:hover) .service-card.featured:not(:hover) { background: #fff; color: var(--ink); }.service-grid:has(.service-card:hover) .service-card.featured:not(:hover) p { color: var(--gray); }.service-grid:has(.service-card:hover) .service-card.featured:not(:hover) a { background: var(--red); color: #fff; border-color: transparent; } }
.seo-note { position: relative; max-width: 1100px; margin: 0 auto; padding: 42px 36px 46px; color: var(--gray); font-size: 1rem; }
.seo-note summary { display: block; width: max-content; max-width: 100%; margin: 0 auto; padding: 14px 20px; background: var(--light); color: var(--ink); font-weight: 700; cursor: pointer; text-align: center; }
.seo-note summary::-webkit-details-marker { display: none; }
.seo-content { max-width: 860px; margin: 38px auto 0; text-align: center; }
.seo-note h2 { margin: 0 auto 24px; color: var(--ink); font: normal clamp(2.3rem, 4vw, 3.8rem)/1.04 'DM Serif Display', serif; }
.seo-note p { margin: 0 auto 18px; }
.seo-accordions { max-width: 860px; margin: 16px auto 0; }
.seo-accordions details { border-top: 1px solid var(--line); }
.seo-accordions details:last-child { border-bottom: 1px solid var(--line); }
.seo-accordions summary { width: 100%; margin: 0; padding: 19px 4px; background: transparent; text-align: left; }
.seo-accordions summary::after { content: '+'; float: right; color: var(--red); font-size: 1.3rem; line-height: .8; }
.seo-accordions details[open] summary::after { content: '−'; }
.seo-accordions details > div { padding: 2px 4px 20px; color: var(--gray); }
.seo-occasions { padding-top: 0; }
.seo-note { padding-bottom: 0; }
.bottom-cta { position: relative; max-width: none; margin: 0; padding: 34px 36px; background: var(--red); color: #fff; text-align: center; }
.bottom-cta .eyebrow { color: #ffd2d4; }
.bottom-cta h2 { margin: 0; font: normal clamp(3rem, 5vw, 5.2rem)/1 'DM Serif Display', serif; }
.bottom-cta .button { margin-top: 18px; padding: 15px 24px; font-size: 1rem; }
.bottom-cta .bottom-actions .button { padding: 12px 20px; font-size: .88rem; }
.bottom-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; }
.bottom-note { margin: 16px auto 0; max-width: 620px; color: #fff; font-size: .9rem; line-height: 1.55; }
.bottom-actions .button:not(.attention-button) { animation: none; transition: none; }
.bottom-actions .button:not(.attention-button):hover, .bottom-actions .button:not(.attention-button):focus-visible { transform: none; box-shadow: none; }
.people-gallery { margin: 22px auto 0; max-width: 660px; }
.people-gallery summary { cursor: pointer; color: #ffd2d4; font-size: .78rem; font-weight: 700; }
.people-gallery > div { display: grid; grid-template-columns: repeat(4, 1fr); gap: 9px; margin-top: 14px; }
.people-gallery > div > button { display: grid; min-height: 85px; place-items: center; border: 0; background: rgba(255,255,255,.16); color: #ffe3e4; font: inherit; font-size: .72rem; cursor: zoom-in; }
.people-gallery > div > button { overflow: hidden; transition: transform .22s ease; }
.people-gallery > div > button img { display: block; width: 100%; height: 100%; min-height: 85px; object-fit: cover; filter: grayscale(1); transition: filter .22s ease, transform .22s ease; }
.people-gallery > div > button:hover, .people-gallery > div > button:focus-visible, .people-gallery > div > button:active { transform: scale(1.06); z-index: 1; }
.people-gallery > div > button:hover img, .people-gallery > div > button:focus-visible img, .people-gallery > div > button:active img { filter: grayscale(0); transform: scale(1.04); }
.team .people-gallery { margin: 56px auto 0; max-width: 660px; text-align: center; }
.team .people-gallery summary { display: inline-block; padding: 10px 16px; background: var(--red); color: #fff; }
.team .people-gallery summary::after { content: '↓'; display: inline-block; width: 1em; margin-left: 9px; font: 700 1rem/1 'DM Sans', sans-serif; text-align: center; animation: gallery-arrow 1.7s ease-in-out infinite; }
.team .people-gallery[open] summary::after { transform: rotate(180deg); animation: none; }
@keyframes gallery-arrow { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(3px); } }
.team .people-gallery > div > button { background: var(--light); color: var(--gray); }
.gallery-note { margin: 18px auto 0; max-width: 560px; color: var(--gray); font-size: .93rem; }
.gallery-note span { color: var(--red); font-weight: 700; }
.gallery-cta { margin-top: 18px; padding: 8px 12px; font-size: .78rem; }
.team-contact { display: flex; flex-wrap: wrap; gap: 3px 10px; margin-top: 14px; font-size: .77rem; }
.team-grid article { display: flex; flex-direction: column; }
.team-grid article .team-contact { min-height: 56px; margin-top: auto; padding-top: 14px; }
.team-contact a { color: var(--gray); overflow-wrap: anywhere; transition: color .18s ease, font-weight .18s ease; }
.team-contact a[href^="mailto:"] { flex-basis: 100%; }
.team-contact a:hover, .team-contact a:focus-visible, .team-contact a:active { color: var(--red); font-weight: 700; text-decoration: underline; }
.contact-placeholder { align-items: flex-start; }
.contact { background: var(--light); color: var(--ink); }
.contact .eyebrow { color: var(--red); }
.contact .contact-copy > p:not(.eyebrow) { color: var(--gray); }
.contact-placeholder { color: var(--gray); }
.contact-placeholder strong, .contact-placeholder a { color: var(--ink); }
.contact-placeholder a { font-size: 1.06rem; font-weight: 700; }
.contact-placeholder p { line-height: 1.7; }
.contact-form input, .contact-form textarea { color: var(--ink); border-bottom-color: var(--line); }
.contact-form input:focus, .contact-form textarea:focus { border-color: var(--red); }
.contact-form input::placeholder, .contact-form textarea::placeholder { color: #aeb1b5; opacity: 1; }
.contact-form select { width: 100%; margin-top: 7px; padding: 13px 0; border: 0; border-bottom: 1px solid #777; border-radius: 0; outline: 0; appearance: auto; background: transparent; color: #aeb1b5; color-scheme: light; font-family: 'DM Sans', sans-serif; font-size: 16px; font-weight: 400; transition: border-color .18s ease; }
.contact-form select:hover, .contact-form select:focus { border-color: var(--red); }
.contact-form select:has(option[value=""]:checked) { color: #aeb1b5; }
.contact-form select option { background: #fff; color: var(--ink); font-family: 'DM Sans', sans-serif; font-weight: 400; }
.contact-form .focus-label { font-size: .8rem; font-weight: 700; color: var(--ink); }
.contact-form .privacy-consent { display: flex; align-items: flex-start; gap: 10px; color: var(--gray); font-size: .82rem; font-weight: 400; line-height: 1.5; }
.contact-form .privacy-consent input { width: 17px; height: 17px; min-width: 17px; margin: 2px 0 0; padding: 0; accent-color: var(--red); }
.contact-form .privacy-consent a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.contact-form .website-field { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.contact-form button:disabled { cursor: wait; opacity: .7; }
.shop-banner { margin-top: 96px; width: 100%; max-width: none; background: var(--red); }
.service-card.featured p { text-wrap: balance; }
.service-card a { margin-top: auto; transform: translateY(26px); }
@media (min-width: 801px) { .service-card { min-height: 354px; } }
@media (min-width: 1100px) {
  .service-grid { grid-template-columns: repeat(5, 1fr); }
  .service-card { padding: 24px 20px 50px; }
  .service-card h3 { font-size: 1.27rem; }
}
.photo-dialog { width: fit-content; max-width: 92vw; padding: 0; border: 0; background: transparent; box-shadow: none; overflow: visible; }
.photo-dialog::backdrop { background: rgba(0,0,0,.7); }
.dialog-close { position: fixed; top: 20px; right: 24px; z-index: 2; border: 0; background: transparent; color: #fff; font-size: 2.4rem; line-height: 1; cursor: pointer; }
.dialog-image { line-height: 0; }
.dialog-image img { display: block; width: auto; height: auto; max-width: 92vw; max-height: 92vh; }
.dialog-arrow { position: fixed; top: 50%; z-index: 2; width: 52px; height: 52px; border: 0; border-radius: 50%; background: rgba(0,0,0,.46); color: #fff; font: 2.7rem/.8 'DM Sans', sans-serif; cursor: pointer; transform: translateY(-50%); transition: background .2s ease, transform .2s ease; }
.dialog-arrow:hover, .dialog-arrow:focus-visible { background: var(--red); transform: translateY(-50%) scale(1.08); }
.dialog-prev { left: 22px; }.dialog-next { right: 22px; }
@media (max-width: 600px) { .dialog-arrow { width: 42px; height: 42px; font-size: 2.2rem; }.dialog-prev { left: 10px; }.dialog-next { right: 10px; }.dialog-close { top: 10px; right: 14px; } }
.attention-button { animation: soft-pulse 2.5s ease-in-out infinite; }
@keyframes soft-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.075); } }
@media (prefers-reduced-motion: reduce) { .attention-button, .shop-link::before, .hero-actions .button::before, .bottom-actions .button { animation: none; } }
@media (max-width: 480px) { .bottom-cta { margin-top: 0; padding: 30px 20px; }.bottom-actions { flex-direction: column; align-items: center; } }
@media (max-width: 800px) { .shop-banner { margin-top: 68px; } }
main { display: flex; flex-direction: column; }
.hero { order: 1; }.services { order: 2; }.team { order: 3; }.contact { order: 4; }.shop-banner { order: 5; }.seo-note { order: 6; }
@media (max-width: 480px) { .seo-note { padding: 35px 20px 10px; } }
@media (max-width: 800px) { .service-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .service-grid { grid-template-columns: 1fr; } }
@media (max-width: 800px) { .site-header:not(.is-compact) { height: 94px; padding-left: 20px; padding-right: 20px; }.site-header:not(.is-compact) .main-nav { font-size: 1rem; }.site-header:not(.is-compact) .brand img { max-height: calc(100% - 14px); } }
@media (max-width: 800px) { .site-header.is-compact { height: 72px; }.site-header.is-compact .brand img { max-height: calc(100% - 10px); } }
