:root {
  --paper: #ffffff;
  --cream: #f3f4f2;
  --card: #ffffff;
  --ink: #171717;
  --muted: #656565;
  --line: #ddddda;
  --rust: #ad3f27;
  --rust-dark: #84301e;
  --shell: 82rem;
  --gutter: clamp(1.25rem, 4vw, 4rem);
  --serif: Georgia, "Times New Roman", serif;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  --ease: cubic-bezier(.16, 1, .3, 1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--sans); font-size: 1rem; line-height: 1.6; }
img { display: block; width: 100%; height: auto; }
a { color: inherit; text-decoration-color: #a99b8d; text-underline-offset: .22em; transition: color .2s var(--ease); }
a:hover { color: var(--rust); }
button, input { font: inherit; }
:focus-visible { outline: 3px solid var(--rust); outline-offset: 3px; }
.shell { width: min(calc(100% - (2 * var(--gutter))), var(--shell)); margin-inline: auto; }
.skip-link { position: fixed; left: 1rem; top: -5rem; z-index: 20; padding: .75rem 1rem; color: #fff; background: var(--rust-dark); }
.skip-link:focus { top: 1rem; }

.masthead { position: sticky; top: 0; z-index: 10; border-bottom: 1px solid rgba(23,23,23,.1); background: rgba(255,255,255,.94); backdrop-filter: blur(14px); }
.masthead__inner { min-height: 4.75rem; display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 2rem; }
.wordmark { display: inline-flex; align-items: center; width: max-content; text-decoration: none; }
.wordmark__logo { width: clamp(13.5rem, 19vw, 17rem); height: auto; }
.wordmark__main { font-family: var(--serif); font-size: 1.1rem; font-weight: 700; letter-spacing: -.025em; }
.wordmark__bar { display: none; }
.wordmark__country { color: var(--muted); font-size: .67rem; font-weight: 700; letter-spacing: .15em; }
.nav { display: flex; gap: 1.75rem; font-size: .86rem; font-weight: 600; }
.nav a, .search-link { text-decoration: none; }
.province-menu { position: relative; }
.province-menu summary { cursor: pointer; list-style: none; }
.province-menu summary::-webkit-details-marker { display: none; }
.province-menu summary::after { content: "↓"; display: inline-block; margin-left: .4rem; color: var(--rust); font-size: .72rem; transition: transform .2s var(--ease); }
.province-menu[open] summary::after { transform: rotate(180deg); }
.province-menu[open]::before { content: ""; position: absolute; top: 100%; right: 0; width: 18rem; height: 1rem; }
.province-menu ul { position: absolute; top: calc(100% + 1rem); right: 0; width: 18rem; max-height: min(70vh, 30rem); margin: 0; padding: .65rem; overflow-y: auto; border: 1px solid var(--line); background: #fff; box-shadow: 0 1.25rem 3rem rgba(23,23,23,.14); list-style: none; }
.province-menu li + li { border-top: 1px solid #eeeeeb; }
.province-menu li a { display: block; padding: .55rem .65rem; }
.province-menu li a:hover { color: var(--rust-dark); background: var(--cream); }
.search-link { padding-bottom: .12rem; border-bottom: 2px solid var(--rust); font-size: .84rem; font-weight: 700; }

h1, h2, h3 { margin: 0; color: var(--ink); font-family: var(--serif); font-weight: 700; letter-spacing: -.035em; text-wrap: balance; }
h1 { max-width: 12ch; font-size: clamp(3.25rem, 5.8vw, 5.8rem); line-height: .94; }
h2 { font-size: clamp(2.35rem, 4.5vw, 4.5rem); line-height: 1; }
h3 { font-size: clamp(1.3rem, 2vw, 1.7rem); line-height: 1.15; }
.eyebrow { margin: 0 0 1.2rem; color: var(--rust-dark); font-size: .78rem; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.lede { max-width: 36rem; margin: 1.5rem 0 2rem; color: var(--muted); font-size: clamp(1.05rem, 1.5vw, 1.25rem); text-wrap: pretty; }
.text-link { font-weight: 700; text-decoration-thickness: 2px; }

.hero { display: grid; align-items: stretch; padding: 0; background: #fff; }
.hero-grid { width: min(calc(100% - (2 * var(--gutter))), var(--shell)); display: grid; grid-template-columns: minmax(22rem, .78fr) minmax(32rem, 1.22fr); align-items: stretch; gap: 0; }
.hero-copy { position: relative; z-index: 1; display: flex; flex-direction: column; justify-content: center; padding: clamp(2.5rem, 4.5vw, 4.25rem) clamp(2.5rem, 5vw, 5rem) clamp(3rem, 5vw, 4.75rem) 0; }
.hero-copy::before { content: ""; width: 3rem; height: 3px; margin-bottom: 1.25rem; background: var(--rust); }
.hero-copy h1 { max-width: 11ch; font-size: clamp(3.1rem, 4.7vw, 5rem); line-height: .92; }
.hero-media, .page-media, .craft-story figure { margin: 0; }
.hero-media { position: relative; min-height: 27rem; max-height: 34rem; overflow: hidden; background: #e9eae8; }
.hero-media::after { content: ""; position: absolute; inset: 0; pointer-events: none; box-shadow: inset 1px 0 rgba(23,23,23,.08); }
.hero-media img { width: 100%; height: 100%; min-height: 27rem; object-fit: cover; object-position: 58% center; border-radius: 0; box-shadow: none; filter: saturate(.82) contrast(1.03); }
.hero-media figcaption { display: none; }
.page-media figcaption, .craft-story figcaption { margin-top: .85rem; color: var(--muted); font-family: var(--serif); font-size: .95rem; font-style: italic; }
.hero-stat { display: none; }
.hero-stat strong { display: block; font-family: var(--serif); font-size: 2rem; line-height: 1; }
.hero-stat span { font-size: .7rem; font-weight: 700; text-transform: uppercase; }
.find-form { max-width: 37rem; display: grid; grid-template-columns: 1fr auto; gap: .65rem; align-items: end; }
.field label { display: block; margin-bottom: .55rem; color: var(--ink); font-size: .82rem; font-weight: 700; }
input { width: 100%; min-height: 3.75rem; padding: .9rem 1.1rem; border: 1px solid #cfcfcb; border-radius: .15rem; color: var(--ink); background: var(--card); }
input::placeholder { color: #918579; }
.button { min-height: 3.75rem; padding: .8rem 1.45rem; border: 1px solid var(--rust); border-radius: .15rem; color: #fff; background: var(--rust); font-weight: 750; cursor: pointer; transition: background .2s var(--ease), transform .2s var(--ease); }
.button:hover { background: var(--rust-dark); transform: translateY(-2px); }
.button:active { transform: translateY(1px); }

.city-rail { border-block: 1px solid var(--line); background: #f3f4f2; }
.city-rail .shell { min-height: 6rem; display: grid; grid-template-columns: 10rem 1fr; align-items: center; gap: 2rem; }
.city-rail > .shell > span, .section-heading > span { color: var(--muted); font-size: .76rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.city-rail div { display: flex; justify-content: space-between; gap: 1rem; }
.city-rail a { font-family: var(--serif); font-size: 1.1rem; font-weight: 600; text-decoration: none; }

.craft-story { padding: clamp(5rem, 10vw, 9rem) 0; }
.craft-story__grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(17rem, .65fr); align-items: center; gap: clamp(3rem, 8vw, 8rem); }
.craft-story img { height: clamp(22rem, 42vw, 36rem); object-fit: cover; border-radius: .5rem; }
.craft-story p:last-child { max-width: 31rem; color: var(--muted); font-size: 1.1rem; }

.section { padding: clamp(5rem, 9vw, 8rem) 0; border-top: 1px solid var(--line); }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 2.75rem; }
.section-heading a { color: var(--muted); font-size: .88rem; font-weight: 650; text-decoration: none; }
.ranking-note { max-width: 54rem; margin: -1.75rem 0 2.5rem; color: var(--muted); font-size: .82rem; }
.section-grid { display: grid; grid-template-columns: minmax(14rem, .65fr) minmax(0, 1.35fr); gap: clamp(3rem, 8vw, 8rem); }
.section-grid > div:first-child p { max-width: 24rem; color: var(--muted); }
.index-list, .directory-list { margin: 0; padding: 0; list-style: none; }
.index-list--tiles { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(1rem, 2.2vw, 2rem); }
.index-card { display: block; overflow: hidden; color: var(--ink); background: var(--card); text-decoration: none; box-shadow: 0 1rem 2.5rem rgba(79,57,41,.08); transition: transform .3s var(--ease), box-shadow .3s var(--ease); }
.index-card:hover { color: var(--ink); transform: translateY(-5px); box-shadow: 0 1.5rem 3rem rgba(79,57,41,.14); }
.index-card__media { height: clamp(10rem, 18vw, 15rem); object-fit: cover; transition: transform .6s var(--ease); }
.index-card:hover .index-card__media { transform: scale(1.025); }
.index-card__body { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding: 1.25rem 1.35rem 1.4rem; }
.index-card__body strong { font-family: var(--serif); font-size: clamp(1.3rem, 2vw, 1.75rem); font-weight: 600; }
.index-card__body span { color: var(--muted); font-size: .78rem; text-align: right; }
/* Compatibility for generated pages made before the editorial card template. */
.index-list--tiles > li:not(:has(.index-card)) { position: relative; overflow: hidden; min-height: 20rem; display: grid; align-content: end; padding: 1.4rem; background: var(--card); box-shadow: 0 1rem 2.5rem rgba(79,57,41,.08); }
.index-list--tiles > li:not(:has(.index-card))::before { content: ""; position: absolute; inset: 0 0 5.5rem; background: var(--card-image, url('/assets/missing-photo-landscape.svg')) center / cover; }
.index-list--tiles > li:nth-child(1) { --card-image: url('/assets/businesses/9df9fe80d95c-amp-motorsports-inc-xpel-paint-protection-film-ppf-window-tinting-ceramic-coating-detailing-vinyl-wraps-more-1-4868943e54f5.jpg'); }
.index-list--tiles > li:nth-child(2) { --card-image: url('/assets/businesses/1e6ed8d5a8fd-satin-auto-wrap-1-61c9e3a870b1.jpg'); }
.index-list--tiles > li:nth-child(3) { --card-image: url('/assets/businesses/34b886ee432d-wraptors-tricity-wrap-ppf-starlight-paint-protection-film-1-c851ccaed638.jpg'); }
.index-list--tiles > li:nth-child(4) { --card-image: url('/assets/businesses/5686fb59e59b-s-a-signs-wraps-in-mississauga-1-bd56b2debfc5.jpg'); }
.index-list--tiles > li:nth-child(5) { --card-image: url('/assets/businesses/74b5885b5496-summit-wraps-1-9d85fa3b298b.jpg'); }
.index-list--tiles > li:nth-child(6) { --card-image: url('/assets/businesses/8186a13a5c3f-colibri-car-wrap-and-detailing-1-8a3939fe42a5.jpg'); }
.index-list--tiles > li:nth-child(7) { --card-image: url('/assets/businesses/a073d91c65e4-wrap-id-vehicle-wrap-ppf-ceramic-coating-window-tint-digital-print-corporate-events-1-ffe07db5e760.jpg'); }
.index-list--tiles > li:nth-child(8) { --card-image: url('/assets/businesses/c2cdeff7bec9-exotik-wrapz-car-wraps-1-2a0316df88d5.jpg'); }
.index-list--tiles > li:nth-child(9) { --card-image: url('/assets/businesses/dbe2a19f592d-toronto-car-wrap-1-f6ea040c1919.jpg'); }
.index-list--tiles > li:nth-child(10) { --card-image: url('/assets/businesses/e1f17ee98e91-ev1studio-ppf-wraps-ceramic-coating-car-detailing-studio-1-2e0e68073c77.jpg'); }
.index-list--tiles > li:nth-child(11) { --card-image: url('/assets/businesses/94f7e0efd40c-yyz-wraps-1-57c186418b67.jpg'); }
.index-list--tiles > li:nth-child(12) { --card-image: url('/assets/businesses/21ddd028eb6c-mad-graphics-1-19212d15dc09.jpg'); }
.index-list--tiles > li:nth-child(13) { --card-image: url('/assets/businesses/89c424b6860c-wrap-academy-of-canada-1-160a4e86dc04.jpg'); }
.index-list--tiles > li:nth-child(14) { --card-image: url('/assets/businesses/03091bc017ee-halifax-tint-plus-ceramic-coat-ppf-detail-car-wrap-more-1-ef82fcdaf89f.jpg'); }
.index-list--tiles > li:nth-child(15) { --card-image: url('/assets/businesses/120bf35999fd-promax-trois-rivieres-films-solaires-anti-chaleur-uv-residentielles-films-protection-de-peinture-ppf-3m-vitres-teintees-1-3606cff71155.jpg'); }
.index-list--tiles > li:nth-child(16) { --card-image: url('/assets/businesses/229b2abd850b-wrap-central-1-1b3629f4af93.jpg'); }
.index-list--tiles > li:nth-child(17) { --card-image: url('/assets/businesses/29fe2bb2204a-nl-wraps-and-designs-1-f3f0fdcc58c6.jpg'); }
.index-list--tiles > li:nth-child(18) { --card-image: url('/assets/businesses/403a226a193d-amp-motorsports-inc-barrie-xpel-paint-protection-film-ppf-window-tint-detailing-ceramic-coating-paint-correction-1-d10a57a18abf.jpg'); }
.index-list--tiles > li:nth-child(19) { --card-image: url('/assets/businesses/57513f30b594-wrap-it-signs-1-5b490ff84c59.jpg'); }
.index-list--tiles > li:nth-child(20) { --card-image: url('/assets/businesses/7e71a3a58853-la-maison-des-wraps-1-9ce519ac5aee.jpg'); }
.index-list--tiles > li:not(:has(.index-card)) > * { position: relative; z-index: 1; }
.index-list--tiles > li:not(:has(.index-card)) > .mono:first-child { display: none; }
.index-list--tiles > li:not(:has(.index-card)) > a { font-family: var(--serif); font-size: 1.5rem; font-weight: 600; text-decoration: none; }
.index-list--tiles > li:not(:has(.index-card)) > .mono:last-child { color: var(--muted); font-family: var(--sans); font-size: .75rem; }
.legacy-index-card { cursor: pointer; transition: transform .25s var(--ease), box-shadow .25s var(--ease); }
.legacy-index-card:hover { transform: translateY(-5px); box-shadow: 0 1.5rem 3rem rgba(79,57,41,.14); }

.crumbs { padding-top: 1.35rem; color: var(--muted); font-size: .78rem; }
.page-head { padding: clamp(2.25rem, 4vw, 3.75rem) 0 clamp(2.75rem, 5vw, 4.5rem); }
.page-head__grid { display: grid; grid-template-columns: minmax(0, .85fr) minmax(25rem, 1.15fr); align-items: center; gap: clamp(3rem, 8vw, 8rem); }
.page-head h1 { max-width: 15ch; font-size: clamp(2.75rem, 4vw, 4.25rem); }
.page-media img { height: clamp(18rem, 30vw, 26rem); object-fit: cover; border-radius: .25rem; }
.page-media figcaption { display: none; }
.page-media .image-credit, .craft-story .image-credit { display: block; margin-top: .65rem; color: var(--muted); font-family: var(--sans); font-size: .72rem; font-style: normal; }
.image-credit a { color: inherit; text-underline-offset: .16em; }
.page-orbit, .page-note { position: relative; min-height: clamp(18rem, 30vw, 26rem); display: block; padding: 0; overflow: hidden; border-radius: .25rem; color: transparent; background: url('/assets/missing-photo-landscape.svg') center / cover; font-size: 0; }
.page-orbit > *, .page-note > * { display: none; }

.data-band { padding: 1.5rem 0; border-block: 1px solid var(--line); background: var(--cream); }
.data-band__grid { display: flex; gap: clamp(2.5rem, 7vw, 7rem); }
.data-point span { display: block; color: var(--muted); font-size: .76rem; }
.data-point strong { display: block; margin-top: .1rem; font-family: var(--serif); font-size: 1.55rem; font-weight: 600; }

.directory-section { background: var(--cream); }
.directory-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(1rem, 2.5vw, 2rem); }
.directory-row { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "media media" "copy rating" "action action"; gap: 1rem 1.25rem; align-items: start; min-width: 0; padding: 0 1.4rem 1.4rem; background: var(--card); box-shadow: 0 .75rem 2rem rgba(79,57,41,.08); transition: transform .25s var(--ease), box-shadow .25s var(--ease); }
.directory-row:hover { transform: translateY(-4px); box-shadow: 0 1.25rem 2.75rem rgba(79,57,41,.14); }
.directory-row > .position { display: none; }
.directory-card__media { grid-area: media; margin-inline: -1.4rem; overflow: hidden; }
.directory-card__media img { width: 100%; height: clamp(12rem, 20vw, 17rem); object-fit: cover; transition: transform .5s var(--ease); }
.directory-row:hover .directory-card__media img { transform: scale(1.025); }
.directory-card__copy, .directory-row > div:not(.rating-block) { grid-area: copy; min-width: 0; }
.directory-row h3 { font-size: clamp(1.25rem, 1.8vw, 1.65rem); }
.directory-row h3 a { text-decoration: none; }
.directory-row h3 a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.directory-row p { margin: .45rem 0 0; color: var(--muted); font-size: .86rem; }
.rating-block { grid-area: rating; min-width: 7rem; text-align: right; }
.stars { display: block; color: var(--rust); font-size: 1rem; letter-spacing: .08em; line-height: 1; white-space: nowrap; }
.rating-summary { display: block; margin-top: .4rem; color: var(--muted); font-size: .74rem; white-space: nowrap; }
.rating-summary strong { color: var(--ink); font-family: var(--serif); font-size: .95rem; }
.arrow-link { grid-area: action; width: max-content; position: relative; z-index: 2; padding-bottom: .15rem; border-bottom: 1px solid var(--rust); text-decoration: none; font-size: .82rem; font-weight: 700; white-space: nowrap; }
.arrow-link span { color: var(--rust); }
.empty-row { padding: 3rem 0; color: var(--muted); }

.facts { margin: 0; }
.fact { display: grid; grid-template-columns: 10rem 1fr; gap: 2rem; padding: 1.2rem 0; border-bottom: 1px solid var(--line); }
dt { color: var(--muted); font-size: .78rem; font-weight: 650; }
dd { margin: 0; }
.subhead { margin-top: 3rem; }
.hours-list { margin: 1rem 0 0; padding: 0; list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: .65rem; }
.hours-list li { padding: .85rem 1rem; color: #51483f; background: var(--cream); }

.reviews-section { background: var(--card); }
.reviews-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1rem, 2vw, 1.5rem); }
.review-card { min-width: 0; padding: clamp(1.25rem, 2.5vw, 2rem); border-top: 3px solid var(--rust); background: var(--paper); }
.review-card__head { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.review-card__head strong, .review-card__head a { display: block; color: var(--ink); font-weight: 750; text-decoration: none; }
.review-card__head div > span { display: block; margin-top: .2rem; color: var(--muted); font-size: .75rem; }
.review-card blockquote { margin: 1.4rem 0 0; color: #51483f; font-family: var(--serif); font-size: 1.05rem; line-height: 1.6; }
.reviews-source, .reviews-empty { max-width: 54rem; color: var(--muted); }
.reviews-source { margin: 2rem 0 0; font-size: .75rem; }

.award-head { background: linear-gradient(135deg, #f4ede5, #fff); }
.award-head > .shell:not(.page-head__grid) { padding-block: clamp(4rem, 9vw, 8rem); }
.award-list { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; }
.award-card { min-height: 16rem; display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-end; gap: .65rem; padding: clamp(1.5rem, 4vw, 2.5rem); color: var(--ink); background: var(--card); border-top: 4px solid var(--rust); box-shadow: 0 .75rem 2rem rgba(79,57,41,.08); text-decoration: none; }
.award-card:hover { transform: translateY(-3px); }
.award-card__year { color: var(--rust-dark); font-size: .78rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.award-card strong { font-family: var(--serif); font-size: clamp(1.65rem, 3vw, 2.4rem); line-height: 1; }
.award-card .arrow-link { margin-top: 1rem; }
.award-plate { padding: clamp(1.75rem, 4vw, 3rem); background: #171512; color: #fff; border: 1px solid #3c3832; box-shadow: inset 0 0 0 6px #171512, inset 0 0 0 7px #625b52; }
.award-plate > span { display: block; margin-bottom: 1.25rem; color: #d9b98c; font-size: .75rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.award-plate > strong { display: block; font-family: var(--serif); font-size: clamp(2rem, 4vw, 3.5rem); line-height: 1; }
.award-plate dl { margin: 2rem 0 0; display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.award-plate dl div { padding-top: .8rem; border-top: 1px solid #625b52; }
.award-plate dt { color: #aaa197; }
.award-plate dd { margin: .25rem 0 0; font-size: .85rem; }
.award-site-shot { margin: 0; align-self: center; }
.award-site-shot a { display: block; overflow: hidden; border: 1px solid #302d29; box-shadow: 0 1.5rem 3rem rgba(23,21,18,.18); }
.award-site-shot img { width: 100%; height: auto; display: block; }
.award-site-shot figcaption { margin-top: .65rem; color: var(--muted); font-size: .75rem; }
.award-badge { background: var(--card); }
.award-badge__grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: clamp(2.5rem, 8vw, 7rem); align-items: start; }
.award-badge__grid > div { max-width: 48rem; }
.embed-label { display: block; margin: 1.75rem 0 .45rem; color: var(--muted); font-size: .75rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.embed-code { display: block; width: 100%; padding: 1rem; border: 1px solid var(--line); border-radius: .15rem; background: var(--paper); color: var(--ink); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .78rem; line-height: 1.55; resize: vertical; }
.copy-embed { min-height: 3rem; margin-top: .75rem; }
.award-badge__preview { margin: 0; text-align: center; }
.award-badge__preview img { display: block; width: 220px; height: 220px; filter: drop-shadow(0 1rem 1.5rem rgba(23,21,18,.14)); }
.award-badge__preview figcaption { max-width: 15rem; margin-top: .8rem; color: var(--muted); font-size: .75rem; }
.recipient-profile { background: var(--cream); }
.semantic-triples { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--line); }
.semantic-triples li { padding: 1rem 0; border-bottom: 1px solid var(--line); color: #51483f; }
.semantic-triples strong { color: var(--ink); }
.semantic-triples span { color: var(--rust-dark); font-weight: 750; }
.profile-source { margin-top: 1.5rem; color: var(--muted); font-size: .78rem; }
.award-verification { background: #f4ede5; }

.footer { padding: 4.5rem 0 2rem; border-top: 1px solid var(--line); background: var(--cream); }
.footer-grid { display: grid; grid-template-columns: minmax(14rem, 1fr) repeat(3, auto); gap: clamp(2.5rem, 6vw, 5rem); }
.footer p { max-width: 22rem; color: var(--muted); }
.footer ul { margin: 0; padding: 0; list-style: none; }
.footer li + li { margin-top: .55rem; }
.footer a { text-decoration: none; }
.footer-nav > strong, .footer-grid > ul > li:first-child strong { display: block; margin-bottom: .8rem; font-family: var(--serif); font-size: 1.05rem; }
.footer-info { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(2rem, 5vw, 4rem); margin-top: 3.5rem; padding-block: 2.25rem; border-block: 1px solid var(--line); }
.footer-info h3 { font-family: var(--sans); font-size: .86rem; letter-spacing: 0; }
.footer-info p { max-width: 27rem; margin: .65rem 0 0; font-size: .82rem; line-height: 1.55; }
.footer-info a { color: var(--ink); text-decoration: underline; text-underline-offset: .2em; }
.footer-bottom { margin-top: 1.5rem; color: var(--muted); font-size: .75rem; }
.footer-legal { display: flex; gap: 1.25rem; margin-top: 2rem; font-size: .82rem; }
.legal-page { padding: clamp(4rem, 8vw, 7rem) 0; }
.legal-page h1 { max-width: none; font-size: clamp(3rem, 5vw, 5rem); }
.legal-copy { max-width: 48rem; margin-top: clamp(3rem, 6vw, 5rem); }
.legal-copy section + section { margin-top: 3rem; padding-top: 3rem; border-top: 1px solid var(--line); }
.legal-copy h2 { font-size: clamp(1.7rem, 3vw, 2.4rem); }
.legal-copy p { color: var(--muted); }

.will-reveal { opacity: 0; transform: translateY(20px); transition: opacity .5s var(--ease), transform .5s var(--ease); transition-delay: var(--reveal-delay, 0ms); }
.will-reveal[data-reveal="media"] { transform: translateY(16px) scale(.985); }
.will-reveal.is-visible { opacity: 1; transform: none; }

@media (max-width: 780px) {
  .masthead__inner { grid-template-columns: 1fr auto; gap: 1rem; }
  .nav > a, .search-link { display: none; }
  .province-menu ul { position: fixed; top: 4.75rem; right: var(--gutter); left: var(--gutter); width: auto; }
  .hero { min-height: auto; padding: 0; }
  .hero-grid, .page-head__grid, .craft-story__grid, .section-grid { grid-template-columns: 1fr; }
  .hero-copy { padding: 3rem 0 3.25rem; }
  .hero-copy h1 { max-width: 11ch; }
  .hero-media { width: calc(100% + (2 * var(--gutter))); max-width: none; min-height: 23rem; margin-left: calc(-1 * var(--gutter)); }
  .hero-media img { min-height: 23rem; }
  .page-media { max-width: 45rem; }
  .page-media img { border-radius: .25rem; }
  .directory-list { grid-template-columns: 1fr; }
  .directory-card__media img { height: clamp(13rem, 45vw, 20rem); }
  .reviews-grid { grid-template-columns: 1fr; }
  .award-list { grid-template-columns: 1fr; }
  .award-badge__grid { grid-template-columns: 1fr; }
  .award-badge__preview { justify-self: start; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .footer-grid > :first-child { grid-column: 1 / -1; }
  .footer-info { grid-template-columns: 1fr; gap: 1.5rem; }
}

@media (max-width: 640px) {
  .wordmark__logo { width: min(11.5rem, 56vw); }
  h1 { font-size: clamp(2.8rem, 13vw, 4.25rem); }
  .search-link { display: none; }
  .hero-grid { gap: 0; }
  .hero-copy { padding-block: 2.5rem 2.75rem; }
  .hero-copy h1 { font-size: clamp(2.85rem, 12vw, 3.8rem); }
  .hero-media { min-height: 19rem; }
  .hero-media img { min-height: 19rem; height: 42vh; }
  .find-form { grid-template-columns: 1fr; }
  .button { width: 100%; }
  .city-rail .shell { grid-template-columns: 1fr; gap: .75rem; padding-block: 1.25rem; }
  .city-rail div { display: grid; grid-template-columns: 1fr 1fr; }
  .index-list--tiles { grid-template-columns: 1fr; }
  .index-card__media { height: 13rem; }
  .section-heading { align-items: start; flex-direction: column; }
  .directory-row { grid-template-columns: 1fr auto; gap: .75rem 1rem; }
  .data-band__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
  .fact, .hours-list { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr; gap: 2rem; }
  .footer-grid > :first-child { grid-column: auto; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: .01ms !important; }
  .will-reveal { opacity: 1; transform: none; }
}
