/* Shared palette, layout and controls. Page typography lives in type-system.css. */
:root {
  --paper: #f7f4ef;
  --cream: #efe8df;
  --sand: #e9dfd5;
  --ink: #413a36;
  --muted: #695d56;
  --clay: #835842;
  --rose: #b78773;
  --sage: #a9aa8d;
  --sage-text: #5f6450;
  --line: rgba(65, 58, 54, .16);
  --photo-grade: saturate(.92) sepia(.035);
  --sans: "Avenir Next", "Segoe UI", sans-serif;
  --serif: Georgia, "Times New Roman", serif;
  --page-gutter: clamp(22px, 6vw, 96px);
  --content-width: 1200px;
  --section-space: clamp(56px, 7vw, 104px);
  --section-gap: clamp(24px, 4vw, 56px);
  --page-inset: max(var(--page-gutter), calc((100vw - var(--content-width)) / 2));
}
* { box-sizing:border-box; }
[hidden] { display:none !important; }
html { scroll-behavior:smooth; }
body { margin:0;color:var(--ink);background:var(--paper);font-family:var(--sans);line-height:1.5;-webkit-font-smoothing:antialiased; }
main { min-width:0; }
a { color:inherit;text-decoration:none; }
button,input { font:inherit; }
button,a { -webkit-tap-highlight-color:rgba(131,88,66,.15); }
h1,h2,h3,p { margin-top:0; }
h1,h2,h3 { overflow-wrap:break-word;text-wrap:balance; }
p { text-wrap:pretty; }
h1,h2 { font-family:var(--serif);font-weight:500;letter-spacing:-.035em; }
h2 { margin-bottom:0; }
h1 em,h2 em { color:var(--clay);font-weight:500; }
:focus-visible { outline:2px solid var(--clay);outline-offset:4px; }
.skip-link { position:fixed;top:12px;left:12px;z-index:30;transform:translateY(-170%);padding:14px 18px;background:var(--ink);color:var(--paper);font-size:14px; }
.skip-link:focus { transform:translateY(0); }

/* Navigation */
.site-header { min-height:104px;padding:10px var(--page-inset);display:flex;align-items:center;justify-content:space-between;gap:28px;border-bottom:1px solid var(--line);position:relative;z-index:20;background:var(--paper); }
.brand { width:148px;flex-shrink:0;display:flex;align-items:center; }
.brand img { width:100%;height:auto;display:block;mix-blend-mode:multiply; }
.site-nav { display:flex;align-items:center;gap:clamp(18px,2vw,28px);text-transform:uppercase; }
.site-nav>a { min-height:44px;display:inline-flex;align-items:center; }
.site-nav a:not(.nav-cta):hover,.site-nav a[aria-current="page"]:not(.nav-cta) { color:var(--clay); }
.site-nav a[aria-current="page"]:not(.nav-cta) { text-decoration:underline;text-underline-offset:7px;text-decoration-thickness:1px; }
.nav-cta { padding:13px 18px;border:1px solid var(--ink);border-radius:2px;gap:16px;transition:background .2s,color .2s; }
.nav-cta:hover,.site-nav .nav-cta[aria-current="page"] { background:var(--ink);color:var(--paper); }
.menu-toggle { display:none; }
.breadcrumbs { display:flex;align-items:center;flex-wrap:wrap;gap:4px 12px;padding:20px var(--page-inset);color:var(--muted); }
.breadcrumbs a { display:inline-flex;align-items:center;min-height:44px; }
.breadcrumbs a:hover { color:var(--clay); }
.breadcrumbs>span:last-child { min-width:0;overflow-wrap:anywhere; }
.breadcrumbs>span[aria-hidden] { opacity:.55; }

/* Shared controls */
.ui-arrow { display:inline-block;width:18px;height:18px;flex-shrink:0;vertical-align:middle; }
.eyebrow { margin:0 0 20px;color:var(--muted);font-weight:600; }
.eyebrow-dot { width:6px;height:6px;background:var(--clay);border-radius:50%;display:inline-block;margin:0 8px 1px 0; }
.button { display:inline-flex;align-items:center;justify-content:center;min-height:50px;max-width:100%;gap:24px;padding:15px 22px;border:1px solid transparent;border-radius:2px;text-transform:uppercase;font-weight:600;line-height:1.4;text-align:center; }
.button-dark { background:var(--ink);color:var(--paper);transition:background .2s; }
.button-dark:hover { background:var(--clay); }
.text-link { display:inline-flex;align-items:center;min-height:44px;gap:16px;padding:7px 0;border-bottom:1px solid var(--clay);font-weight:600;line-height:1.5;transition:color .2s; }
.text-link:hover { color:var(--clay); }
.section-wrap { padding-inline:var(--page-inset); }

/* Home: preserve the cream background and original hero photograph. */
.hero { display:grid;grid-template-columns:minmax(0,.96fr) minmax(0,1.04fr);align-items:center;gap:var(--section-gap);padding:48px var(--page-inset) var(--section-space); }
.hero-copy { min-width:0; }
.hero h1 { margin:0 0 24px; }
.hero-intro { max-width:440px;margin-bottom:28px; }
.hero-actions { display:flex;align-items:center;flex-wrap:wrap;gap:14px 26px; }
.hero-note { display:flex;align-items:center;gap:12px;margin-top:36px;color:var(--muted); }
.note-mark { width:38px;height:38px;flex-shrink:0;display:grid;place-items:center;border:1px solid var(--clay);border-radius:50%;color:var(--clay);font:20px var(--serif); }
.hero-note strong { color:var(--ink);font-weight:600; }
.hero-art { margin:0;position:relative;aspect-ratio:1 / 1.14;max-height:620px;overflow:hidden;background:var(--sand); }
.hero-art-photo { width:100%;height:100%;object-fit:cover;object-position:center 56%;display:block;filter:var(--photo-grade); }
.hero-art-caption { position:absolute;left:18px;bottom:18px;padding:8px 11px;background:var(--paper);color:var(--muted);font-size:11px;letter-spacing:.08em;line-height:1.4; }
.intro { padding-block:var(--section-space);border-top:1px solid var(--line); }
.intro-grid { display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.9fr);align-items:start;gap:var(--section-gap); }
.intro-text { max-width:510px; }
.intro-text p { margin-bottom:16px; }
.intro-text .text-link { margin-top:4px; }
.visit { padding-block:var(--section-space);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.85fr);align-items:start;gap:36px var(--section-gap); }
.visit-copy>p:last-child { max-width:440px;margin:24px 0 0; }
.contact-phone { min-height:44px;display:inline-flex;align-items:center;gap:12px;font-size:23px;font-weight:500;letter-spacing:.01em; }
.contact-phone span { color:var(--clay); }
.visit-locations { display:block; }
.visit-locations .visit-copy { max-width:680px;margin-bottom:40px; }
.home-locations { display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:var(--section-gap); }
.home-location { display:flex;flex-direction:column;align-items:flex-start;min-width:0;padding-block:28px;border-top:1px solid var(--line); }
.home-location h3 { margin:0 0 20px;font:500 clamp(28px, 3vw, 36px)/1.15 var(--serif);letter-spacing:-.025em; }
.home-location address { margin-bottom:16px;color:var(--muted);font:400 16px/1.7 var(--sans); }
.home-location .contact-phone { font:500 26px/1.4 var(--serif); }
.home-location .text-link { margin-top:8px;font-size:14px; }

/* Maps remain readable before and after loading. */
.map-shell { min-width:0; }
.map-shell iframe { width:100%;height:100%;min-height:inherit;border:0;display:block; }
.map-placeholder { min-height:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px;background:var(--cream); }
.map-placeholder .eyebrow { margin-bottom:16px;color:var(--clay); }
.map-placeholder h2,.map-placeholder h3 { margin:0 0 12px;font:500 clamp(27px,3vw,36px)/1.15 var(--serif);letter-spacing:-.025em; }
.map-placeholder>p:not(.eyebrow) { max-width:440px;margin:0 0 24px; }
.map-placeholder>p a { color:var(--ink);text-decoration:underline;text-underline-offset:3px; }
.map-toolbar { display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px 16px;padding:8px 18px;background:var(--paper);border-top:1px solid var(--line); }
.map-toolbar a,.map-toolbar button { min-height:44px;display:inline-flex;align-items:center;gap:8px;font:600 13px/1.5 var(--sans);color:var(--ink); }
.map-toolbar button { border:0;border-bottom:1px solid var(--clay);padding:0;background:transparent;cursor:pointer; }
.map-toolbar a:hover,.map-toolbar button:hover { color:var(--clay); }

/* A shared footer with clear paths to the menu, cakes and both venues. */
.site-footer { padding:56px var(--page-inset) 20px;border-top:1px solid var(--line);background:var(--cream);color:var(--muted); }
.footer-main { display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.8fr) minmax(0,1.15fr) minmax(0,1.15fr);align-items:start;gap:clamp(24px,3vw,40px);padding-bottom:40px; }
.footer-main>* { min-width:0; }
.footer-brand { display:inline-flex;width:140px;min-height:44px; }
.footer-brand img { display:block;width:100%;height:auto;mix-blend-mode:multiply; }
.footer-intro p { max-width:24ch;margin:18px 0 0;font:400 15px/1.7 var(--sans); }
.footer-main h2 { margin:8px 0 18px;font:600 13px/1.6 var(--sans);letter-spacing:.025em;color:var(--ink); }
.footer-nav { display:flex;flex-direction:column;align-items:stretch; }
.footer-nav a,.footer-venue a { display:inline-flex;align-items:center;gap:8px;min-height:44px;font:400 14px/1.5 var(--sans);overflow-wrap:anywhere; }
.footer-main a:hover,.footer-meta a:hover { color:var(--clay);text-decoration:underline;text-underline-offset:4px; }
.footer-nav>a { justify-content:space-between;gap:16px;padding:12px 2px;border-bottom:1px solid var(--line);color:var(--ink);transition:color .2s,border-color .2s; }
.footer-nav>a::after { content:"";width:6px;height:6px;flex:0 0 6px;margin-right:3px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg); }
.footer-nav>a:hover,.footer-nav>a:focus-visible { color:var(--clay);border-bottom-color:var(--clay);text-decoration:none; }
.footer-nav>a[aria-current="page"] { color:var(--clay);font-weight:600;border-bottom-color:var(--clay); }
.footer-venue address { font-style:normal; }
.footer-venue address a { align-items:flex-start;line-height:1.7;padding-block:6px; }
.footer-venue .footer-phone { color:var(--ink);font-weight:600; }
.footer-venue .footer-visit { display:flex;width:fit-content;margin-top:4px;border-bottom:1px solid var(--line); }
.footer-meta { display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 24px;padding-top:18px;border-top:1px solid var(--line); }
.footer-company { display:grid;gap:4px;min-width:0;line-height:1.7; }
.footer-identity { color:inherit;overflow-wrap:anywhere; }
.footer-legal { display:flex;align-items:center;flex-wrap:wrap;gap:4px 24px; }
.footer-legal a { display:inline-flex;align-items:center;min-height:44px;font-size:13px; }
.cake-local-note a { text-decoration:underline;text-underline-offset:4px; }

/* Cakes are reachable from the homepage without going through the catalog. */
.home-cakes { display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:var(--section-gap);padding-block:var(--section-space);border-bottom:1px solid var(--line); }
.home-cakes figure { position:relative;margin:0;aspect-ratio:1.2;overflow:hidden;background:var(--sand); }
.home-cakes img { display:block;width:100%;height:100%;object-fit:cover;filter:var(--photo-grade); }
.home-cakes figcaption { position:absolute;left:16px;bottom:16px;padding:8px 11px;background:var(--paper);color:var(--muted);font-size:11px;line-height:1.5;letter-spacing:.08em; }
.home-cakes h2 { font-size:var(--type-section);line-height:1.12; }
.home-cakes-copy>p:not(.eyebrow) { max-width:44ch;margin:24px 0;font-size:16px;line-height:1.7;color:var(--muted); }
.home-cakes .button { width:fit-content; }

/* Error page */
.not-found { min-height:65vh;display:grid;place-items:center;text-align:center;padding:var(--section-space) var(--page-inset); }
.not-found-inner { max-width:680px; }
.not-found-code { font-size:11px;letter-spacing:.14em;color:var(--clay); }
.not-found h1 { margin:20px 0 24px; }
.not-found p { max-width:440px;margin:0 auto 28px; }

/* One location chooser for phone and directions shortcuts. */
body.location-action-open { overflow:hidden; }
.location-action-dialog { width:min(600px, calc(100% - 32px));max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);margin:auto;padding:24px 28px 28px;overflow-y:auto;overscroll-behavior:contain;border:1px solid var(--line);border-radius:2px;background:var(--paper);color:var(--ink);box-shadow:0 24px 80px rgba(35,27,22,.2); }
.location-action-dialog::backdrop { background:rgba(35,27,22,.62); }
.location-action-close { position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;min-width:88px;margin:0 0 12px auto;padding:8px 14px;border:1px solid var(--line);border-radius:2px;background:var(--paper);color:var(--ink);font:600 14px/1.5 var(--sans);cursor:pointer; }
.location-action-close:hover { border-color:var(--clay);color:var(--clay); }
.location-action-dialog .eyebrow { margin-bottom:12px; }
.location-action-dialog h2 { margin:0 0 24px;font:500 clamp(28px, 5vw, 36px)/1.15 var(--serif);letter-spacing:-.025em; }
.location-action-list { display:grid;gap:12px;padding:0;margin:0;list-style:none; }
.location-action-list li { min-width:0; }
.location-choice { display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:20px;border:1px solid var(--line);border-radius:2px;background:var(--cream);transition:border-color .2s, background .2s; }
.location-choice:hover { border-color:var(--clay);background:var(--sand); }
.location-choice-city { font:600 18px/1.4 var(--sans); }
.location-choice-address { font:400 14px/1.6 var(--sans);color:var(--muted); }
.location-choice-action { display:inline-flex;align-items:center;gap:10px;min-height:48px;margin-top:2px;border-bottom:1px solid var(--clay);color:var(--clay);font:600 14px/1.4 var(--sans); }
@media (max-width:620px) {
  .location-action-dialog { padding:16px 20px 20px; }
  .location-choice { padding:16px; }
}

@media (max-width:1000px) {
  .footer-main { grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 40px; }
}
@media (max-width:1100px) {
  .site-header { min-height:84px; }
  .brand { width:124px; }
  .menu-toggle { display:grid;grid-template-columns:auto 18px;grid-template-rows:1px 1px;align-content:center;column-gap:12px;row-gap:6px;min-width:112px;min-height:46px;padding:12px 14px;border:1px solid var(--line);border-radius:2px;background:transparent;color:var(--ink);cursor:pointer;transition:background .2s,border-color .2s; }
  .menu-toggle:hover,.menu-toggle[aria-expanded="true"] { background:var(--cream);border-color:var(--clay); }
  .menu-toggle::after { content:"Esplora";grid-column:1;grid-row:1 / 3;align-self:center;font:600 13px/1.4 var(--sans); }
  .menu-toggle span { grid-column:2;width:18px;height:1px;background:var(--ink);transition:transform .2s; }
  .menu-toggle span:first-child { grid-row:1; }
  .menu-toggle span:last-child { grid-row:2; }
  .menu-toggle[aria-expanded="true"] span:first-child { transform:translateY(3.5px) rotate(45deg); }
  .menu-toggle[aria-expanded="true"] span:last-child { transform:translateY(-3.5px) rotate(-45deg); }
  .menu-toggle[aria-expanded="true"]::after { content:"Chiudi"; }
  .site-nav { display:none;position:absolute;top:100%;left:0;right:0;padding:12px var(--page-inset) 20px;flex-direction:column;align-items:stretch;gap:0;background:var(--paper);border-bottom:1px solid var(--line);box-shadow:0 16px 22px rgba(65,58,54,.06);max-height:calc(100dvh - 100px);overflow-y:auto;overscroll-behavior:contain; }
  .site-nav.is-open { display:flex; }
  .site-nav>a,.site-nav .nav-cta { justify-content:space-between;gap:16px;min-height:56px;margin:0;padding:15px 16px;border:0;border-left:2px solid transparent;border-bottom:1px solid var(--line);border-radius:0;background:transparent;color:var(--ink);font:400 16px/1.5 var(--sans);letter-spacing:0;text-transform:none;transition:background .2s,color .2s; }
  .site-nav>a::after { content:"";width:7px;height:7px;flex:0 0 7px;margin-right:3px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg); }
  .site-nav>a>.ui-arrow { display:none; }
  .site-nav>a:hover,.site-nav>a:focus-visible { background:var(--cream);color:var(--clay);text-decoration:none; }
  .site-nav>a[aria-current="page"],.site-nav>a[aria-current="page"]:not(.nav-cta),.site-nav .nav-cta[aria-current="page"] { background:var(--cream);color:var(--clay);border-left-color:var(--clay);font-weight:600;text-decoration:none; }
  html:not(.js-enabled) .site-header { flex-wrap:wrap; }
  html:not(.js-enabled) .menu-toggle { display:none; }
  html:not(.js-enabled) .site-nav { display:flex;position:static;flex-basis:100%;padding:8px 0 12px;border:0;box-shadow:none;max-height:none; }
}
@media (max-width:850px) {
  .decorative-symbol { display:none !important; }
  .hero { padding-top:32px; }
  .hero-note { display:none; }
  .visit { grid-template-columns:1fr 1fr; }
}
@media (max-width:760px) {
  .hero { grid-template-columns:1fr;gap:32px; }
  .hero-art { aspect-ratio:4 / 3;max-height:480px; }
  .hero-art-photo { object-position:center 60%; }
  .intro-grid,.visit,.home-cakes { grid-template-columns:1fr; }
  .intro-grid { gap:28px; }
}
@media (max-width:620px) {
  .home-locations { grid-template-columns:1fr;gap:24px; }
  .site-header { min-height:78px; }
  .brand { width:116px; }
  .hero { padding-top:30px; }
  .hero h1 { margin-bottom:22px; }
  .hero-actions { gap:12px 22px; }
  .hero-art { aspect-ratio:1.06; }
  .hero-art-caption { left:12px;bottom:12px;font-size:11px; }
  .breadcrumbs { padding-block:12px; }
  .map-placeholder { padding:28px 20px; }
  .site-footer { padding-block:36px 18px; }
  .footer-main { grid-template-columns:1fr;gap:26px;padding-bottom:28px; }
  .footer-intro { padding-bottom:4px; }
  .footer-intro p { max-width:none; }
  .footer-nav { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px; }
  .footer-nav h2 { grid-column:1 / -1;margin-top:0;margin-bottom:6px; }
  .footer-nav>a { min-height:50px;padding-block:13px; }
  .footer-venue { border-top:1px solid var(--line);padding-top:20px; }
  .footer-meta { display:block; }
  .footer-legal { margin-top:8px;gap:4px 20px; }
  .home-cakes .button { width:100%; }
}
@media (max-width:359px) {
  :root { --page-gutter:18px; }
  .footer-nav { column-gap:16px; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { transition-duration:.01ms !important;animation-duration:.01ms !important; }
}
@media print {
  .menu-toggle,.product-share,.map-toolbar,.location-action-dialog { display:none !important; }
}

/* Discourage image saving gestures; visible images remain copyable. */
img { -webkit-user-drag:none;-webkit-touch-callout:none;user-select:none; }
