/* il Boccone — styles.css
   Fonts: Rammetto One, Cabin (SIL OFL 1.1, self-hosted, see /assets/fonts/OFL.txt)
   Icons: Lucide (ISC licence), inlined SVG */

/* ---------- Fonts ---------- */
@font-face{font-family:"Rammetto One";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/rammetto-one-latin-400-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Rammetto One";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/rammetto-one-latin-ext-400-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Cabin";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/cabin-latin-400-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Cabin";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/cabin-latin-ext-400-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Cabin";font-style:normal;font-weight:600;font-display:swap;src:url("/assets/fonts/cabin-latin-600-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Cabin";font-style:normal;font-weight:600;font-display:swap;src:url("/assets/fonts/cabin-latin-ext-600-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Cabin";font-style:normal;font-weight:700;font-display:swap;src:url("/assets/fonts/cabin-latin-700-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Cabin";font-style:normal;font-weight:700;font-display:swap;src:url("/assets/fonts/cabin-latin-ext-700-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

/* ---------- Tokens (SW Restaurants roles, values from il Boccone's logo + photos) ---------- */
:root{
  --ground:#F4ECDF;      /* warm limestone */
  --surface:#FBF7F0;
  --stone:#E8DAC2;       /* deeper limestone */
  --line:#D8C8AD;
  --ink:#1B1A17;         /* logo black */
  --ink-muted:#5A5146;
  --brand:#1D56A0;       /* Valletta blue shutters — CTAs */
  --brand-dark:#164682;
  --accent:#9E3B24;      /* terracotta from the chutney pot + red chairs */
  --font-display:"Rammetto One","Arial Black",system-ui,sans-serif;
  --font-body:"Cabin",system-ui,-apple-system,"Segoe UI",sans-serif;
  /* type scale (mobile → laptop) */
  --fs-sm:.9375rem;   /* 15px */
  --fs-body:1.0625rem;/* 17px */
  --fs-lead:1.1875rem;/* 19px */
  --fs-h3:1.1875rem;  /* 19px */
  --fs-h2:clamp(1.625rem,1.2rem + 2vw,2.375rem);
  --fs-h1:clamp(2.125rem,1.4rem + 3.6vw,3.5rem);
  --space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;
  --space-section:64px;
  --radius-md:10px;--radius-pill:999px;
  --wrap:1160px;--gutter:20px;
  --header-h:64px;
}
@media(min-width:769px){:root{--fs-body:1.125rem;--space-section:96px;--gutter:32px;--header-h:76px}}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 12px)}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--font-body);font-size:var(--fs-body);line-height:1.6;-webkit-font-smoothing:antialiased}
img,svg{max-width:100%;height:auto}
img{display:block}
h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}
ul[role=list],ol[role=list]{list-style:none;padding:0}
a{color:var(--brand)}
a:hover{color:var(--brand-dark)}
:focus-visible{outline:3px solid var(--brand);outline-offset:3px;border-radius:4px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:12px;top:-60px;z-index:10000;background:var(--ink);color:#fff;padding:10px 14px;border-radius:var(--radius-md)}
.skip:focus{top:12px}

/* ---------- Type ---------- */
h1,h2{font-family:var(--font-display);font-weight:400;letter-spacing:-.01em;line-height:1.08;text-wrap:balance}
h1{font-size:var(--fs-h1)}
h2{font-size:var(--fs-h2)}
h3{font-size:var(--fs-h3);font-weight:700;line-height:1.3}
.lead{font-size:var(--fs-lead);line-height:1.6;color:var(--ink)}
.eyebrow{font-size:.8125rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}
.muted{color:var(--ink-muted)}

/* ---------- Layout ---------- */
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-block:var(--space-section)}
.section--stone{background:var(--stone)}
.stack>*+*{margin-top:var(--space-4)}
.section-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-8)}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:48px;padding:.75rem 1.25rem;border-radius:var(--radius-md);font:600 1rem/1.2 var(--font-body);text-decoration:none;border:2px solid transparent;cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}
.btn svg{width:20px;height:20px;flex:none}
.btn--primary{background:var(--brand);color:#fff}
.btn--primary:hover{background:var(--brand-dark);color:#fff}
.btn--ghost{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn--ghost:hover{background:var(--ink);color:var(--ground)}
.btn-row{display:flex;flex-wrap:wrap;gap:var(--space-3)}
.icon{width:22px;height:22px;flex:none;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}

/* ---------- Loader (once per session) ---------- */
#loader{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:var(--ground);transition:opacity .4s ease,visibility .4s;animation:loader-failsafe 0s 2s forwards}
#loader img{height:44px;width:auto;animation:loader-in .6s ease both}
@media(min-width:769px){#loader img{height:58px}}
#loader.hide{opacity:0;visibility:hidden}
.no-loader #loader{display:none}
@keyframes loader-in{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
@keyframes loader-failsafe{to{opacity:0;visibility:hidden}}
@media(prefers-reduced-motion:reduce){#loader img{animation:none}#loader{transition:opacity .2s}}

/* ---------- Header: 1fr auto 1fr keeps the centre column on the page's centre ---------- */
.site-header{position:sticky;top:0;z-index:50;background:var(--ground);border-bottom:1px solid var(--line)}
.home .site-header{border-bottom-color:transparent}
.header-grid{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:var(--header-h);gap:var(--space-3)}
.header-left{justify-self:start;display:flex;align-items:center}
.header-centre{justify-self:center;display:flex;align-items:center}
.header-right{justify-self:end;display:flex;align-items:center}
.header-logo{display:block;line-height:0}
.header-logo img{height:34px;width:auto}
@media(min-width:769px){.header-logo img{height:46px}}
.icon-btn{display:inline-grid;place-items:center;width:48px;height:48px;margin-inline:-8px;border:0;background:transparent;color:var(--ink);border-radius:var(--radius-md);cursor:pointer;text-decoration:none}
.icon-btn:hover{background:var(--stone);color:var(--ink)}
.nav-toggle .icon-close{display:none}
.nav-open .nav-toggle .icon-open{display:none}
.nav-open .nav-toggle .icon-close{display:block}
.header-call-full{display:none}

/* Mobile nav panel */
.site-nav{position:absolute;left:0;right:0;top:100%;background:var(--ground);border-bottom:1px solid var(--line);display:none}
.nav-open .site-nav{display:block}
.no-js .site-nav{display:block;position:static;border:0}
.site-nav ul{list-style:none;margin:0;padding:var(--space-2) var(--gutter) var(--space-6)}
.site-nav a{display:flex;align-items:center;min-height:52px;font-weight:600;font-size:1.125rem;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line)}
.site-nav a[aria-current=page]{color:var(--brand)}

@media(min-width:960px){
  .nav-toggle{display:none}
  .site-nav{display:block;position:static;background:none;border:0}
  .site-nav ul{display:flex;gap:var(--space-6);padding:0}
  .site-nav a{min-height:48px;font-size:1rem;border:0;position:relative}
  .site-nav a[aria-current=page]::after{content:"";position:absolute;left:0;right:0;bottom:8px;height:2px;background:var(--brand)}
  .header-call-icon{display:none}
  .header-call-full{display:inline-flex}
}

/* ---------- Home hero ---------- */
.hero{position:relative}
.hero-media{aspect-ratio:4/5;overflow:hidden;background:var(--stone)}
@media(min-width:600px){.hero-media{aspect-ratio:3/2}}
@media(min-width:1100px){.hero-media{aspect-ratio:2/1}}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
/* Separate, uncropped layer above the photo. Soft limestone fade only behind the logo. */
.hero-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;text-align:center;padding:clamp(20px,4vw,48px) var(--gutter) 0;
  background:linear-gradient(to bottom,rgba(244,236,223,1) 0%,rgba(244,236,223,.94) 18%,rgba(244,236,223,.72) 30%,rgba(244,236,223,0) 46%)}
.hero-logo{height:56px;width:auto;max-width:none}
@media(min-width:600px){.hero-logo{height:84px}}
@media(min-width:1100px){.hero-logo{height:116px}}
.hero-title{margin-top:.75rem;font-family:var(--font-body);font-weight:700;font-size:.875rem;letter-spacing:.22em;text-transform:uppercase;line-height:1.3}
.hero-sub{font-size:.9375rem;color:var(--ink);margin-top:.15rem}
@media(min-width:600px){.hero-title{font-size:1rem}.hero-sub{font-size:1.0625rem}}

/* ---------- Intro + info ---------- */
.intro{display:grid;gap:var(--space-8)}
.intro .btn-row{margin-top:var(--space-6)}
.info-grid{display:grid;gap:var(--space-4)}
.info-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-6)}
.info-card h3{display:flex;align-items:center;gap:.5rem;margin-bottom:var(--space-3)}
.info-card address{font-style:normal}
@media(min-width:900px){.intro{grid-template-columns:1.2fr 1fr;align-items:start;gap:64px}}

.hours{display:grid;grid-template-columns:auto 1fr;gap:.25rem 1.25rem}
.hours dt{font-weight:600}
.hours dd{text-align:right}

/* ---------- Photo cards / swipe rows ---------- */
.photo-tile{margin:0;border-radius:var(--radius-md);overflow:hidden;background:var(--stone)}
.photo-tile .ratio{aspect-ratio:4/5;overflow:hidden}
.photo-tile .ratio img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.photo-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4)}
@media(max-width:768px){
  .swipe-row{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;padding:0 var(--gutter);margin:0 calc(var(--gutter) * -1);scroll-padding:0 var(--gutter);scrollbar-width:none;touch-action:pan-x pan-y}
  .swipe-row::-webkit-scrollbar{display:none}
  .swipe-row>*{flex:0 0 82%;scroll-snap-align:start}
}

/* Gallery: swipe row on mobile (fixed 4/5 tiles), uncropped masonry columns on laptop */
.gallery-dots{display:flex;justify-content:center;gap:8px;margin-top:var(--space-4)}
.gallery-dots span{width:8px;height:8px;border-radius:50%;background:var(--line);transition:background .2s,transform .2s}
.gallery-dots span.on{background:var(--ink);transform:scale(1.15)}
@media(min-width:769px){
  .gallery-dots{display:none}
  .gallery.swipe-row{display:block;columns:3;column-gap:var(--space-4)}
  .gallery .photo-tile{break-inside:avoid;margin-bottom:var(--space-4)}
  .gallery .photo-tile .ratio{aspect-ratio:auto}
  .gallery .photo-tile .ratio img{height:auto;object-fit:initial}
}
@media(min-width:1100px){.gallery.swipe-row{columns:4}}

/* ---------- Menu ---------- */
.page-head{padding-top:clamp(40px,6vw,72px);padding-bottom:var(--space-6)}
.page-head p{margin-top:var(--space-3);max-width:60ch}
.menu-jump{position:sticky;top:var(--header-h);z-index:20;background:var(--ground);border-bottom:1px solid var(--line)}
.menu-jump ul{display:flex;gap:8px;overflow-x:auto;list-style:none;margin:0;padding:10px var(--gutter);scrollbar-width:none;max-width:var(--wrap);margin-inline:auto}
.menu-jump ul::-webkit-scrollbar{display:none}
.menu-jump a{display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border:1px solid var(--line);border-radius:var(--radius-pill);white-space:nowrap;text-decoration:none;color:var(--ink);font-weight:600;font-size:.9375rem;background:var(--surface)}
.menu-jump a:hover{border-color:var(--ink)}
.menu-sections{display:grid;gap:56px;padding-block:48px var(--space-section)}
@media(min-width:900px){.menu-sections{grid-template-columns:1fr 1fr;column-gap:72px;row-gap:64px}}
.menu-section h2{padding-bottom:var(--space-3);border-bottom:2px solid var(--ink);margin-bottom:var(--space-2);display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem .75rem}
.menu-section .tag{font-family:var(--font-body);font-size:.8125rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);border:1.5px solid currentColor;border-radius:var(--radius-pill);padding:.1rem .6rem;line-height:1.5;transform:translateY(-3px)}
.menu-list{list-style:none;margin:0;padding:0}
.menu-item{padding:var(--space-4) 0;border-bottom:1px dashed var(--line)}
.menu-item:last-child{border-bottom:0}
.menu-item-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-4)}
.menu-item h3{font-size:1.0625rem}
.price{font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}
.menu-item p{color:var(--ink-muted);font-size:var(--fs-sm);line-height:1.55;margin-top:.25rem}
.menu-note{font-size:var(--fs-sm);color:var(--ink-muted)}

/* Home menu highlights */
.highlights{display:grid;gap:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-2) var(--space-6)}
@media(min-width:769px){.highlights{grid-template-columns:1fr 1fr;column-gap:48px}}

/* ---------- Contact ---------- */
.contact-grid{display:grid;gap:var(--space-8);padding-bottom:var(--space-section)}
@media(min-width:900px){.contact-grid{grid-template-columns:1fr 1.3fr;align-items:start;gap:56px}}
.contact-block+.contact-block{margin-top:var(--space-8)}
.contact-block h2{font-size:1.5rem;margin-bottom:var(--space-3)}
.contact-block address{font-style:normal;font-size:var(--fs-lead)}
.map-frame{aspect-ratio:4/3;overflow:hidden;border-radius:var(--radius-md);border:1px solid var(--line);background:var(--stone)}
@media(min-width:900px){.map-frame{aspect-ratio:1/1}}
.map-frame iframe{width:100%;height:100%;display:block;border:0}
.social{display:flex;flex-wrap:wrap;gap:var(--space-3)}
.social-btn{display:inline-flex;align-items:center;gap:.6rem;min-height:48px;padding:.6rem 1.1rem .6rem .8rem;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);text-decoration:none;font-weight:600}
.social-btn:hover{border-color:var(--ink);color:var(--ink)}
.social-btn svg{width:26px;height:26px;flex:none}

/* ---------- Footer ---------- */
.site-footer{background:var(--ink);color:#EDE5D7;padding-block:56px 32px}
.site-footer a{color:#fff}
.footer-grid{display:grid;gap:var(--space-8)}
@media(min-width:769px){.footer-grid{grid-template-columns:1.2fr 1fr 1fr}}
.site-footer h2{font-family:var(--font-body);font-weight:700;font-size:.8125rem;letter-spacing:.14em;text-transform:uppercase;color:#C9BFAF;margin-bottom:var(--space-3)}
.site-footer address{font-style:normal}
.site-footer .hours dd{text-align:left}
.footer-nav{list-style:none;margin:0;padding:0;display:grid;gap:.25rem}
.footer-nav a{display:inline-flex;align-items:center;min-height:40px;text-decoration:none}
.footer-nav a:hover{text-decoration:underline}
.footer-base{margin-top:40px;padding-top:20px;border-top:1px solid #3A3730;font-size:.875rem;color:#C9BFAF}

/* ---------- Sticky action bar (mobile) ---------- */
.action-bar{position:fixed;left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom));z-index:60;display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:6px;background:var(--ink);border-radius:var(--radius-pill);box-shadow:0 8px 24px rgba(27,26,23,.25)}
.action-bar a{display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:48px;border-radius:var(--radius-pill);font-weight:700;text-decoration:none;color:#fff}
.action-bar a.primary{background:var(--brand)}
.action-bar svg{width:20px;height:20px}
body{padding-bottom:84px}
@media(min-width:769px){.action-bar{display:none}body{padding-bottom:0}}

/* ---------- 404 ---------- */
.notfound{min-height:60vh;display:grid;place-items:center;text-align:center;padding-block:var(--space-section)}
.notfound .btn-row{justify-content:center;margin-top:var(--space-6)}
