/* ==========================================================================
   Ristorante Grimaldi — „Vesuv & Velluto" · com.on Werbeagentur 2026
   Design-System: siehe 03_Styleguide/design-system.md
   ========================================================================== */

@font-face{font-family:"Jost";src:url(../fonts/jost-latin-wght-normal.woff2) format("woff2");font-weight:300 700;font-display:swap;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:"Jost";src:url(../fonts/jost-latin-ext-wght-normal.woff2) format("woff2");font-weight:300 700;font-display:swap;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:"DM Serif Display";src:url(../fonts/dm-serif-display-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap;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:"DM Serif Display";src:url(../fonts/dm-serif-display-latin-ext-400-normal.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+A720-A7FF}
@font-face{font-family:"DM Serif Display";src:url(../fonts/dm-serif-display-latin-400-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Allison";src:url(../fonts/allison-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}

:root{
  --napoli:#e55c52; --napoli-tief:#b8392f; --napoli-hover:#9f2f26; --basilico:#5fb66b; --bordeaux:#712623;
  --creme:#f2efe8; --creme-hell:#f8f6f1; --creme-dunkel:#e7e2d7; --anthrazit:#343432; --nacht:#1d1d1b;
  --text:#343432; --text-leise:#6b675f; --text-hell:#f2efe8; --text-hell-leise:#c9c4b8;
  --skript:#8d775f; --skript-dunkel:#b9ab98;
  --linie:rgba(52,52,50,.14); --linie-hell:rgba(242,239,232,.16);
  --font-display:"DM Serif Display",Georgia,"Times New Roman",serif;
  --font-text:"Jost","Futura","Century Gothic",system-ui,sans-serif;
  --font-skript:"Allison","Brush Script MT",cursive;
  --container:1240px; --rand:clamp(20px,5vw,48px);
  --abstand-s:clamp(56px,7vw,88px); --abstand-m:clamp(72px,10vw,128px); --abstand-l:clamp(96px,13vw,176px);
  --radius-s:6px; --radius-m:14px; --radius-l:28px; --radius-pille:999px;
  --schatten:0 2px 6px rgba(29,29,27,.06),0 8px 24px rgba(29,29,27,.06);
  --schatten-hover:0 4px 10px rgba(29,29,27,.08),0 18px 44px rgba(29,29,27,.12);
  --dur-micro:180ms; --dur-ui:320ms; --dur-reveal:680ms; --ease-out:cubic-bezier(.22,1,.36,1);
  --kopf-h:76px;
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--kopf-h) + 16px)}
body{margin:0;background:var(--creme);color:var(--text);font-family:var(--font-text);font-size:1.0625rem;line-height:1.7;font-weight:400;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
img,svg,video{display:block;max-width:100%;height:auto}
a{color:var(--napoli-tief);text-decoration-thickness:1px;text-underline-offset:.2em}
a:hover{color:var(--napoli-hover)}
h1,h2,h3,h4{margin:0;font-weight:400}
p{margin:0 0 1em}
p:last-child{margin-bottom:0}
ul,ol{margin:0;padding:0}
address{font-style:normal}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--napoli-tief);outline-offset:3px;border-radius:4px}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.sprunglink{position:absolute;left:16px;top:-80px;z-index:200;background:var(--creme);color:var(--nacht);padding:12px 18px;border-radius:var(--radius-s);font-weight:600;transition:top var(--dur-micro)}
.sprunglink:focus{top:16px}
.umbruch{overflow-wrap:anywhere}

/* ---------- Layout ---------- */
.container{width:100%;max-width:calc(var(--container) + 2*var(--rand));margin-inline:auto;padding-inline:var(--rand)}
.container--schmal{max-width:calc(820px + 2*var(--rand))}
.sektion{position:relative;padding-block:var(--abstand-m)}
.sektion--s{padding-block:var(--abstand-s)}
.sektion--l{padding-block:var(--abstand-l)}
.sektion--hell{background:var(--creme-hell)}
.sektion--dunkel{background:var(--anthrazit);color:var(--text-hell)}
.sektion--nacht{background:var(--nacht);color:var(--text-hell)}
.raster{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(32px,5vw,72px);align-items:center}
@media (min-width:900px){
  .raster--57{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
  .raster--75{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
  .raster--11{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}

/* ---------- Typografie ---------- */
.eyebrow{display:flex;align-items:center;gap:12px;margin:0 0 18px;font-size:.78rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--napoli-tief)}
.eyebrow::before{content:"";width:28px;height:1.5px;background:currentColor;flex:none}
.display{font-family:var(--font-display);font-size:clamp(2.875rem,1.6rem + 5.4vw,6.5rem);line-height:.96;letter-spacing:-.02em}
.h1{font-family:var(--font-display);font-size:clamp(2.6rem,1.6rem + 4vw,5rem);line-height:.98;letter-spacing:-.02em}
.h2{font-family:var(--font-display);font-size:clamp(2.125rem,1.6rem + 2.2vw,3.5rem);line-height:1.02;letter-spacing:-.015em;margin-bottom:.45em;max-width:18ch;text-wrap:balance}
.h3{font-family:var(--font-display);font-size:clamp(1.375rem,1.2rem + .7vw,1.75rem);line-height:1.15;margin-bottom:.4em}
.lead{font-size:clamp(1.125rem,1rem + .5vw,1.3125rem);line-height:1.5;max-width:58ch}
.text{max-width:66ch}
.leise{color:var(--text-leise)}
.skript{font-family:var(--font-skript);font-weight:400;color:var(--skript);font-size:clamp(3.5rem,2.4rem + 4.4vw,6rem);line-height:.95;letter-spacing:0;display:block;margin-bottom:.12em}
.mittig{text-align:center;margin-inline:auto}
.mittig .eyebrow{justify-content:center}
.mittig .h2{margin-inline:auto}
.sektion--dunkel .eyebrow,.sektion--nacht .eyebrow,.hero .eyebrow{color:var(--basilico)}
.sektion--dunkel .skript,.sektion--nacht .skript{color:var(--skript-dunkel)}
.sektion--dunkel .leise,.sektion--nacht .leise{color:var(--text-hell-leise)}
.sektion--dunkel a:not(.btn),.sektion--nacht a:not(.btn),.link-hell{color:var(--text-hell)}
.prosa{max-width:68ch}
.prosa h2{font-family:var(--font-display);font-size:clamp(1.6rem,1.3rem + 1vw,2.1rem);line-height:1.12;margin:1.8em 0 .5em}
.prosa h3{font-weight:600;font-size:1.1rem;margin:1.6em 0 .4em}
.prosa ul{padding-left:1.2em;margin:0 0 1em}
.prosa li{margin-bottom:.35em}
.prosa table{width:100%;border-collapse:collapse;margin:1em 0 1.6em;font-size:.95rem}
.prosa th,.prosa td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--linie);vertical-align:top}
.prosa th{font-weight:600}
.tabelle-scroll{overflow-x:auto}

/* ---------- Buttons ---------- */
.btn{--bg:var(--napoli-tief);--fg:#fff;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:14px 26px;border-radius:var(--radius-pille);background:var(--bg);color:var(--fg);border:1.5px solid var(--bg);font-weight:600;font-size:1rem;letter-spacing:.01em;line-height:1.2;text-decoration:none;cursor:pointer;transition:transform var(--dur-micro) var(--ease-out),box-shadow var(--dur-micro) var(--ease-out),background-color var(--dur-micro),color var(--dur-micro),border-color var(--dur-micro)}
.btn:hover{color:var(--fg);transform:translateY(-2px);box-shadow:var(--schatten-hover)}
.btn:active{transform:translateY(1px);box-shadow:none}
.btn--rot:hover{--bg:var(--napoli-hover)}
.btn--linie{--bg:transparent;--fg:var(--text);border-color:var(--text)}
.btn--linie:hover{--bg:var(--text);--fg:var(--creme)}
.btn--hell{--bg:var(--creme);--fg:var(--nacht)}
.btn--hell:hover{--bg:#fff;--fg:var(--nacht)}
.btn--linie-hell{--bg:transparent;--fg:var(--text-hell);border-color:rgba(242,239,232,.6)}
.btn--linie-hell:hover{--bg:var(--creme);--fg:var(--nacht);border-color:var(--creme)}
.btn--klein{min-height:44px;padding:10px 18px;font-size:.92rem}
.btn[disabled]{opacity:.45;pointer-events:none}
.btn svg{flex:none;transition:transform var(--dur-micro) var(--ease-out)}
.btn:hover .pfeil{transform:translateX(4px)}
.knopfreihe{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}
.sektion--dunkel :focus-visible,.sektion--nacht :focus-visible,.hero :focus-visible,.kopf :focus-visible,.fuss :focus-visible,.menue :focus-visible{outline-color:var(--creme)}
.textlink{font-weight:600;color:var(--napoli-tief);text-decoration:none;display:inline-flex;gap:8px;align-items:center}
.textlink:hover .pfeil{transform:translateX(4px)}
.textlink .pfeil{transition:transform var(--dur-micro) var(--ease-out)}

/* ---------- Hinweisband ---------- */
.hinweisband{background:var(--napoli-tief);color:#fff;font-size:.95rem;padding:10px 0;text-align:center}
.hinweisband strong{font-weight:600;margin-right:.4em}

/* ---------- Kopf ---------- */
.kopf{position:sticky;top:0;z-index:50;background:rgba(29,29,27,.94);backdrop-filter:saturate(140%) blur(10px);-webkit-backdrop-filter:saturate(140%) blur(10px);color:var(--text-hell);border-bottom:1px solid var(--linie-hell)}
.kopf__innen{display:flex;align-items:center;gap:24px;height:var(--kopf-h)}
.kopf__logo img{width:clamp(132px,14vw,168px);height:auto}
.kopf__nav{margin-left:auto;display:none}
.kopf__nav ul{display:flex;gap:clamp(14px,1.8vw,30px);list-style:none}
.kopf__nav a{position:relative;color:var(--text-hell);text-decoration:none;font-size:.95rem;font-weight:500;padding:8px 0}
.kopf__nav a::after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1.5px;background:var(--basilico);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-micro) var(--ease-out)}
.kopf__nav a:hover::after,.kopf__nav a[aria-current="page"]::after{transform:scaleX(1)}
.kopf__cta{display:none}
.kopf__burger{margin-left:auto;width:48px;height:48px;display:grid;place-content:center;gap:7px;background:none;border:0;cursor:pointer;color:var(--creme)}
.kopf__burger span[aria-hidden]{display:block;width:26px;height:1.8px;background:currentColor;border-radius:2px}
@media (min-width:1180px){
  .kopf__nav{display:block}
  .kopf__burger{display:none}
  .kopf__cta{display:inline-flex}
}
@media (min-width:640px) and (max-width:1179px){.kopf__cta{display:inline-flex;margin-left:auto}.kopf__burger{margin-left:0}}

/* ---------- Menü-Overlay ---------- */
.menue{position:fixed;inset:0;z-index:100;background:rgba(29,29,27,.55)}
.menue__panel{position:absolute;inset:0 0 0 auto;width:min(440px,100%);background:var(--nacht);color:var(--text-hell);padding:24px var(--rand) 32px;display:flex;flex-direction:column;overflow-y:auto}
.menue__zu{align-self:flex-end;width:48px;height:48px;display:grid;place-items:center;background:none;border:0;color:var(--creme);cursor:pointer}
.menue__liste{list-style:none;margin:24px 0 32px}
.menue__liste a{display:block;padding:12px 0;font-family:var(--font-display);font-size:2rem;line-height:1.1;color:var(--text-hell);text-decoration:none;border-bottom:1px solid var(--linie-hell)}
.menue__liste a[aria-current="page"]{color:var(--basilico)}
.menue__fuss{margin-top:auto;display:grid;gap:16px}
.menue__status{color:var(--text-hell-leise);font-size:.95rem}

/* ---------- Hero ---------- */
.hero{position:relative;background:var(--nacht);color:var(--text-hell);overflow:hidden;isolation:isolate}
.hero__bild{position:absolute;inset:0;z-index:-2}
.hero__bild img{width:100%;height:100%;object-fit:cover;object-position:70% 50%}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(29,29,27,.92) 0%,rgba(29,29,27,.72) 42%,rgba(29,29,27,.18) 78%),linear-gradient(0deg,rgba(29,29,27,.55),rgba(29,29,27,0) 40%)}
.hero__innen{min-height:min(88vh,860px);display:grid;align-content:center;padding-block:clamp(72px,10vw,128px) clamp(120px,14vw,190px)}
.hero__text{max-width:760px}
.hero .lead{color:var(--text-hell-leise);margin-top:26px}
.hero__illu{position:absolute;right:max(var(--rand),calc((100vw - var(--container))/2));bottom:clamp(80px,9vw,120px);width:clamp(150px,20vw,290px);display:none;filter:drop-shadow(0 18px 40px rgba(0,0,0,.45))}
@media (min-width:1024px){.hero__illu{display:block}}
.hero .vesuv{position:absolute;left:0;right:0;bottom:-1px;width:100%;height:clamp(48px,7vw,110px);color:var(--creme)}
.hero--klein .hero__innen{min-height:0;padding-block:clamp(64px,9vw,112px) clamp(110px,12vw,170px)}
.hero--klein .hero__bild img{object-position:50% 50%}
.hero--klein::before{background:linear-gradient(90deg,rgba(29,29,27,.92) 0%,rgba(29,29,27,.7) 55%,rgba(29,29,27,.35) 100%)}
.brotkrumen{font-size:.85rem;margin-bottom:22px;color:var(--text-hell-leise)}
.brotkrumen ol{display:flex;flex-wrap:wrap;gap:8px;list-style:none}
.brotkrumen li+li::before{content:"/";margin-right:8px;opacity:.6}
.brotkrumen a{color:var(--text-hell-leise)}

/* ---------- Trust-Leiste ---------- */
.trust{background:var(--creme);padding-block:clamp(24px,4vw,40px) clamp(48px,6vw,72px)}
.trust__liste{list-style:none;display:grid;gap:16px;grid-template-columns:1fr}
@media (min-width:768px){.trust__liste{grid-template-columns:repeat(3,1fr)}}
.trust__item{display:flex;gap:16px;align-items:center;padding:18px 20px;background:var(--creme-hell);border:1px solid var(--linie);border-radius:var(--radius-m)}
.trust__item img{width:56px;height:auto;border-radius:6px;flex:none;box-shadow:var(--schatten)}
.trust__item strong{display:block;font-weight:600;line-height:1.3}
.trust__item span{font-size:.9rem;color:var(--text-leise)}

/* ---------- Fakten / Zahlen ---------- */
.fakten{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,3vw,40px);margin-top:40px;border-top:1px solid var(--linie);padding-top:28px}
.fakt__zahl{font-family:var(--font-display);font-size:clamp(2.2rem,1.4rem + 3vw,4rem);line-height:1;color:var(--napoli-tief);letter-spacing:-.02em;white-space:nowrap}
.fakt__label{font-size:.92rem;color:var(--text-leise);line-height:1.4;margin-top:8px}
.sektion--dunkel .fakten{border-color:var(--linie-hell)}
.sektion--dunkel .fakt__zahl{color:var(--creme)}

/* ---------- Bildflächen ---------- */
.bild{border-radius:var(--radius-l);overflow:hidden;position:relative;background:var(--creme-dunkel)}
.bild img{width:100%;height:100%;object-fit:cover}
.bild--45{aspect-ratio:4/5}
.bild--32{aspect-ratio:3/2}
.bild--frei{background:none;border-radius:0;overflow:visible}
.bildunterschrift{font-size:.88rem;color:var(--text-leise);margin-top:12px}
.sticker{position:absolute;width:clamp(128px,14vw,168px);aspect-ratio:1;display:grid;place-items:center;text-align:center;color:#fff;font-weight:600;font-size:clamp(.82rem,.7rem + .3vw,.95rem);line-height:1.25;padding:22px;transform:rotate(-8deg);z-index:2}
.sticker::before{content:"";position:absolute;inset:0;background:var(--napoli-tief);border-radius:46% 54% 50% 50%/52% 46% 54% 48%;z-index:-1;box-shadow:var(--schatten)}
.sticker strong{display:block;font-family:var(--font-display);font-weight:400;font-size:1.9em;line-height:1}

/* ---------- Gerichte ---------- */
.gerichte{list-style:none;display:grid;gap:0}
.gericht{padding:18px 0;border-bottom:1px solid var(--linie)}
.gericht__kopf{display:flex;align-items:baseline;gap:12px}
.gericht__name{font-family:var(--font-text);font-weight:600;font-size:clamp(.95rem,.9rem + .15vw,1rem);letter-spacing:.06em;text-transform:uppercase;line-height:1.35;flex:0 1 auto}
.gericht__zusatz{display:block;font-weight:500;letter-spacing:.04em;color:var(--text-leise);font-size:.88em}
.gericht__allergene{font-weight:500;font-size:.68rem;letter-spacing:0;color:var(--text-leise);margin-left:2px;cursor:help}
.gericht__linie{flex:1 1 24px;border-bottom:1.5px dotted rgba(52,52,50,.3);transform:translateY(-4px);min-width:16px}
.gericht__preise{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:none}
.gericht__preis{font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}
.gericht__preis small{font-weight:400;color:var(--text-leise);font-size:.82rem;margin-right:4px}
.gericht__text{margin:6px 0 0;color:var(--text-leise);font-size:.98rem;line-height:1.55;max-width:60ch}
.gericht--extra .gericht__name{text-transform:none;letter-spacing:.01em;font-weight:500}
.sektion--dunkel .gericht{border-color:var(--linie-hell)}
.sektion--dunkel .gericht__linie{border-color:rgba(242,239,232,.3)}
.sektion--dunkel .gericht__text,.sektion--dunkel .gericht__zusatz,.sektion--dunkel .gericht__allergene,.sektion--dunkel .gericht__preis small{color:var(--text-hell-leise)}

/* Highlight-Karten Startseite */
.highlights{display:grid;gap:20px;margin-top:40px}
@media (min-width:900px){.highlights{grid-template-columns:repeat(3,1fr)}}
.karte{background:var(--creme-hell);border:1px solid var(--linie);border-radius:var(--radius-m);padding:28px;display:flex;flex-direction:column;gap:10px;transition:transform var(--dur-micro) var(--ease-out),box-shadow var(--dur-micro) var(--ease-out)}
.karte:hover{transform:translateY(-3px);box-shadow:var(--schatten-hover)}
.karte__kat{font-size:.75rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--napoli-tief)}
.karte__titel{font-family:var(--font-display);font-size:1.7rem;line-height:1.1}
.karte__text{color:var(--text-leise);font-size:.98rem;line-height:1.55;flex:1}
.karte__preis{font-weight:600;font-size:1.1rem}

/* ---------- Speisekarte-Seite ---------- */
.karten-nav{position:sticky;top:var(--kopf-h);z-index:30;background:rgba(242,239,232,.96);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--linie)}
.karten-nav ul{display:flex;gap:8px;list-style:none;overflow-x:auto;padding:12px 0;scrollbar-width:none}
.karten-nav ul::-webkit-scrollbar{display:none}
.karten-nav a{display:block;white-space:nowrap;padding:8px 16px;border-radius:var(--radius-pille);border:1px solid var(--linie);color:var(--text);text-decoration:none;font-size:.92rem;font-weight:500;transition:background-color var(--dur-micro),color var(--dur-micro),border-color var(--dur-micro)}
.karten-nav a:hover,.karten-nav a[aria-current="true"]{background:var(--anthrazit);color:var(--creme);border-color:var(--anthrazit)}
.kategorie{padding-block:clamp(48px,6vw,88px) 0}
.kategorie__kopf{display:grid;gap:8px;margin-bottom:12px}
.kategorie__kopf .skript{margin-bottom:-.05em}
.kategorie__hinweis{color:var(--text-leise);max-width:60ch;font-size:.98rem}
.kategorie .gerichte{columns:1}
@media (min-width:960px){
  .gerichte--zwei{display:grid;grid-template-columns:1fr 1fr;column-gap:clamp(40px,5vw,80px)}
}
.allergene{display:grid;gap:4px 24px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));list-style:none;font-size:.95rem;color:var(--text-leise)}
.allergene b{color:var(--text);font-weight:600;margin-right:6px}
.karte-stand{font-size:.9rem;color:var(--text-leise)}

/* ---------- Familie ---------- */
.familie-illu{width:100%;max-width:min(440px,100%);margin-inline:auto;filter:drop-shadow(0 22px 40px rgba(0,0,0,.35))}
.zitat{font-family:var(--font-display);font-size:clamp(1.6rem,1.2rem + 1.6vw,2.4rem);line-height:1.18;margin:0;max-width:24ch}
.zitat-quelle{margin-top:16px;font-size:.92rem;color:var(--text-leise)}

/* ---------- Öffnungszeiten ---------- */
.zeiten{display:grid;gap:10px;margin:0}
.zeiten div{display:flex;justify-content:space-between;gap:16px;padding-bottom:10px;border-bottom:1px solid var(--linie)}
.zeiten dt{font-weight:600}
.zeiten dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.zeiten--hell div{border-color:var(--linie-hell)}
.zeiten--hell dd{color:var(--text-hell-leise)}
.zeiten--block div{flex-direction:column;gap:2px}
.zeiten--block dd{text-align:left}
.status{display:inline-flex;align-items:center;gap:10px;font-weight:500;margin-top:14px}
.status:empty{display:none}
.status::before{content:"";width:10px;height:10px;border-radius:50%;background:var(--text-leise)}
.status[data-offen="1"]::before{background:var(--basilico);box-shadow:0 0 0 4px rgba(95,182,107,.22)}
.status[data-offen="0"]::before{background:var(--napoli)}
.info-karte{background:var(--creme-hell);border:1px solid var(--linie);border-radius:var(--radius-m);padding:clamp(24px,3vw,40px)}
.sektion--dunkel .info-karte{background:rgba(255,255,255,.05);border-color:var(--linie-hell)}
.sektion--dunkel .zeiten div{border-color:var(--linie-hell)}

/* ---------- Kacheln (Angebote) ---------- */
.kacheln{display:grid;gap:20px}
@media (min-width:900px){.kacheln{grid-template-columns:1fr 1fr}}
.kachel{position:relative;border-radius:var(--radius-l);overflow:hidden;background:var(--anthrazit);color:var(--text-hell);padding:clamp(32px,4vw,56px);min-height:380px;display:flex;flex-direction:column;justify-content:flex-end;isolation:isolate}
.kachel__bild{position:absolute;inset:0;z-index:-1}
.kachel__bild img{width:100%;height:100%;object-fit:cover;opacity:.45;transition:transform 600ms var(--ease-out)}
.kachel:hover .kachel__bild img{transform:scale(1.04)}
.kachel::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,rgba(29,29,27,.92) 10%,rgba(29,29,27,.1) 85%)}
.kachel .eyebrow{color:var(--basilico)}
.kachel .h2{font-size:clamp(1.9rem,1.4rem + 1.6vw,2.8rem);max-width:15ch}
.kachel p{color:var(--text-hell-leise);max-width:46ch}

/* ---------- Auf einen Blick ---------- */
.blick{list-style:none;display:grid;gap:0;border-top:1px solid var(--linie);margin-top:12px}
.blick li{display:grid;grid-template-columns:minmax(120px,170px) 1fr;gap:16px;padding:14px 0;border-bottom:1px solid var(--linie)}
.blick b{font-weight:600}
.sektion--dunkel .blick,.sektion--dunkel .blick li{border-color:var(--linie-hell)}

/* ---------- FAQ ---------- */
.faq__liste{margin-top:32px;border-top:1px solid var(--linie)}
.faq__item{border-bottom:1px solid var(--linie)}
.faq__item summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:22px 0;cursor:pointer;font-weight:600;font-size:1.1rem;line-height:1.4}
.faq__item summary::-webkit-details-marker{display:none}
.faq__item summary svg{flex:none;color:var(--napoli-tief);transition:transform var(--dur-ui) var(--ease-out)}
.faq__item[open] summary svg{transform:rotate(45deg)}
.faq__antwort{display:grid;grid-template-rows:1fr}
.faq__antwort>div{overflow:hidden}
.faq__antwort p{padding-bottom:22px;color:var(--text-leise);max-width:64ch}

/* ---------- Schluss-CTA ---------- */
.schluss{background:var(--napoli-tief);color:#fff;text-align:center;position:relative;overflow:hidden;isolation:isolate}
.schluss .skript{color:rgba(255,255,255,.75)}
.schluss .h2{margin-inline:auto;max-width:20ch}
.schluss p{max-width:52ch;margin-inline:auto;color:rgba(255,255,255,.9)}
.schluss .knopfreihe{justify-content:center}
.schluss .btn--hell{--fg:var(--napoli-tief)}
.schluss :focus-visible{outline-color:#fff}

/* ---------- Karte (Zwei-Klick) ---------- */
.karte-2klick{position:relative;border-radius:var(--radius-l);overflow:hidden;background:var(--anthrazit) url("../img/karte-platzhalter.svg") center/cover;min-height:380px;display:grid;place-items:center;color:var(--text-hell);text-align:center;padding:32px}
.karte-2klick iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.karte-2klick__box{max-width:420px;background:rgba(29,29,27,.82);padding:28px;border-radius:var(--radius-m)}
.karte-2klick__box p{color:var(--text-hell-leise);font-size:.95rem}
.karte-2klick label{display:flex;gap:10px;justify-content:center;align-items:center;font-size:.9rem;margin-top:12px;color:var(--text-hell-leise)}

/* ---------- Formular ---------- */
.formular{background:var(--creme-hell);border:1px solid var(--linie);border-radius:var(--radius-l);padding:clamp(24px,4vw,48px)}
.formular__fortschritt{display:flex;flex-direction:column;gap:10px;margin-bottom:28px}
.formular__fortschritt p{margin:0;font-size:.9rem;font-weight:600;color:var(--text-leise)}
.formular__balken{height:4px;border-radius:4px;background:var(--creme-dunkel);overflow:hidden}
.formular__balken span{display:block;height:100%;width:25%;background:var(--napoli-tief);transform-origin:left;transition:width var(--dur-ui) var(--ease-out)}
.schritt{border:0;margin:0;padding:0;min-width:0}
.schritt legend{font-family:var(--font-display);font-size:clamp(1.5rem,1.2rem + 1vw,2rem);line-height:1.15;margin-bottom:8px;padding:0}
.schritt legend:focus{outline:none}
.schritt__hilfe{color:var(--text-leise);margin-bottom:20px;font-size:.98rem}
html.js .formular[data-schritte] .schritt:not(.ist-aktiv){display:none}
html:not(.js) .formular__fortschritt,html:not(.js) .formular__nav [data-weiter],html:not(.js) .formular__nav [data-zurueck]{display:none}
html:not(.js) .schritt{margin-bottom:40px}
.wahl{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}
.wahl input{position:absolute;opacity:0;pointer-events:none}
.wahl label{display:flex;align-items:center;gap:12px;min-height:68px;padding:14px 18px;border:1.5px solid var(--linie);border-radius:var(--radius-m);background:#fff;cursor:pointer;font-weight:500;line-height:1.3;hyphens:none;overflow-wrap:normal;transition:border-color var(--dur-micro),background-color var(--dur-micro),transform var(--dur-micro) var(--ease-out)}
.wahl label:hover{border-color:var(--text);transform:translateY(-2px)}
.wahl input:checked+label{border-color:var(--napoli-tief);background:#fdf3f1;box-shadow:inset 0 0 0 1px var(--napoli-tief)}
.wahl input:focus-visible+label{outline:3px solid var(--napoli-tief);outline-offset:3px}
.wahl__icon{font-size:1.4rem;line-height:1;flex:none;width:28px;text-align:center}
.feld{display:grid;gap:6px;margin-bottom:18px}
.feld label{font-weight:600;font-size:.95rem}
.feld input,.feld select,.feld textarea{width:100%;min-height:52px;padding:12px 14px;border:1.5px solid var(--linie);border-radius:var(--radius-s);background:#fff;transition:border-color var(--dur-micro),box-shadow var(--dur-micro)}
.feld textarea{min-height:120px;resize:vertical}
.feld input:focus,.feld select:focus,.feld textarea:focus{outline:none;border-color:var(--napoli-tief);box-shadow:0 0 0 3px rgba(184,57,47,.18)}
.feld__hilfe{font-size:.88rem;color:var(--text-leise)}
.feld--fehler input,.feld--fehler textarea{border-color:var(--napoli-tief)}
.feld__fehler{font-size:.9rem;color:var(--napoli-tief);font-weight:500}
.felder-2{display:grid;gap:0 18px}
@media (min-width:640px){.felder-2{grid-template-columns:1fr 1fr}}
.zaehler{display:inline-flex;align-items:center;border:1.5px solid var(--linie);border-radius:var(--radius-pille);background:#fff;overflow:hidden}
.zaehler button{width:52px;height:52px;border:0;background:none;font-size:1.4rem;cursor:pointer;color:var(--text)}
.zaehler button:hover{background:var(--creme)}
.zaehler input{width:72px;text-align:center;border:0;min-height:52px;font-weight:600;font-size:1.1rem;-moz-appearance:textfield}
.zaehler input::-webkit-outer-spin-button,.zaehler input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.check{display:flex;gap:12px;align-items:flex-start;font-size:.95rem;line-height:1.5}
.check input{width:22px;height:22px;margin-top:2px;accent-color:var(--napoli-tief);flex:none}
.zusammenfassung{background:var(--creme);border-radius:var(--radius-m);padding:18px 20px;margin-bottom:22px;font-size:.95rem}
.zusammenfassung dl{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;margin:0}
.zusammenfassung dt{font-weight:600}
.zusammenfassung dd{margin:0}
.formular__nav{display:flex;justify-content:space-between;gap:12px;margin-top:28px;flex-wrap:wrap}
.formular__fehlerbox{background:#fdf3f1;border-left:4px solid var(--napoli-tief);padding:14px 18px;border-radius:var(--radius-s);margin-bottom:22px;color:var(--text)}
.honig{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}

/* ---------- Danke / 404 ---------- */
.schritte-liste{list-style:none;counter-reset:s;display:grid;gap:16px;margin:32px 0}
.schritte-liste li{counter-increment:s;display:grid;grid-template-columns:48px 1fr;gap:16px;align-items:start}
.schritte-liste li::before{content:counter(s);width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--napoli-tief);color:#fff;font-family:var(--font-display);font-size:1.3rem}

/* ---------- Fuß ---------- */
.fuss{position:relative;background:var(--nacht);color:var(--text-hell);padding-top:clamp(72px,9vw,120px);margin-top:clamp(40px,6vw,80px)}
.fuss__vesuv{position:absolute;left:0;right:0;top:calc(-1 * clamp(40px,6vw,90px) + 1px);width:100%;height:clamp(40px,6vw,90px);color:var(--nacht)}
.fuss__grid{display:grid;gap:40px;padding-bottom:56px}
@media (min-width:768px){.fuss__grid{grid-template-columns:1fr 1fr}}
@media (min-width:1100px){.fuss__grid{grid-template-columns:1.2fr 1.1fr .9fr 1fr}}
.fuss__marke img{width:190px}
.fuss__marke p{margin-top:16px;color:var(--text-hell-leise);font-family:var(--font-display);font-size:1.25rem;line-height:1.3}
.fuss__mad{width:120px!important;margin-top:18px;opacity:.8}
.fuss__titel{font-family:var(--font-text);font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;font-weight:600;color:var(--basilico);margin-bottom:16px}
.fuss__klein{font-size:.9rem;color:var(--text-hell-leise);margin-top:12px}
.fuss address{color:var(--text-hell-leise);margin-bottom:12px;line-height:1.6}
.fuss .status{color:var(--text-hell)}
.social{display:flex;gap:10px;list-style:none;margin-top:16px}
.social a{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--linie-hell);color:var(--text-hell);transition:background-color var(--dur-micro),color var(--dur-micro),transform var(--dur-micro) var(--ease-out)}
.social a:hover{background:var(--creme);color:var(--nacht);transform:translateY(-2px)}
.fuss__unten{border-top:1px solid var(--linie-hell);padding-block:24px 32px;display:flex;flex-wrap:wrap;gap:12px 32px;align-items:center;justify-content:space-between;font-size:.88rem;color:var(--text-hell-leise)}
.fuss__unten p{margin:0}
.fuss__recht{display:flex;flex-wrap:wrap;gap:8px 20px;list-style:none}
.fuss__unten a{color:var(--text-hell-leise)}
.fuss__unten a:hover{color:var(--creme)}
.fuss__vertrauen{flex-basis:100%}
.anruf-fab{position:fixed;right:16px;bottom:16px;z-index:40;width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:var(--napoli-tief);color:#fff;box-shadow:0 10px 28px rgba(29,29,27,.32);transition:transform var(--dur-micro) var(--ease-out)}
.anruf-fab:hover{color:#fff;transform:translateY(-2px)}
@media (min-width:640px){.anruf-fab{display:none}}

/* ---------- Deko ---------- */
.vesuv,.welle{display:block}
.trenner-vesuv{display:block;width:100%;height:clamp(40px,6vw,90px);color:var(--anthrazit);margin-bottom:-1px}
.trenner-vesuv--unten{transform:scaleY(-1);margin-top:-1px;margin-bottom:0}
.deko-illu{position:absolute;opacity:.5;pointer-events:none;width:clamp(180px,22vw,320px)}

/* ==========================================================================
   MOTION — IntersectionObserver + Klassen. Versteck-Regeln NUR hinter html.js
   und nur bei no-preference (P1). Zeiten aus den Tokens.
   ========================================================================== */
@media (prefers-reduced-motion:no-preference){
  html.js [data-reveal]{opacity:0;transform:translateY(24px);transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out);transition-delay:var(--verzug,0ms)}
  html.js [data-reveal].ist-sichtbar{opacity:1;transform:none}
  html.js .hero [data-hero]{opacity:0;transform:translateY(22px);animation:hero-rein var(--dur-reveal) var(--ease-out) forwards;animation-delay:var(--hd,0ms)}
  html.js .hero__bild img{transform:scale(1.07);animation:hero-bild 1500ms var(--ease-out) 60ms forwards}
  html.js .hero__illu[data-hero]{animation-name:hero-illu}
  .faq__antwort{grid-template-rows:0fr;transition:grid-template-rows 400ms var(--ease-out)}
  .faq__item[open] .faq__antwort{grid-template-rows:1fr}
  .menue__panel{transform:translateX(102%);transition:transform var(--dur-ui) var(--ease-out)}
  .menue.ist-offen .menue__panel{transform:none}
  .menue__liste li{opacity:0;transform:translateX(24px);transition:opacity var(--dur-ui) var(--ease-out),transform var(--dur-ui) var(--ease-out)}
  .menue.ist-offen .menue__liste li{opacity:1;transform:none}
  .menue.ist-offen .menue__liste li:nth-child(1){transition-delay:90ms}.menue.ist-offen .menue__liste li:nth-child(2){transition-delay:130ms}.menue.ist-offen .menue__liste li:nth-child(3){transition-delay:170ms}.menue.ist-offen .menue__liste li:nth-child(4){transition-delay:210ms}.menue.ist-offen .menue__liste li:nth-child(5){transition-delay:250ms}.menue.ist-offen .menue__liste li:nth-child(6){transition-delay:290ms}.menue.ist-offen .menue__liste li:nth-child(7){transition-delay:330ms}
  .menue{opacity:0;transition:opacity var(--dur-ui)}
  .menue.ist-offen{opacity:1}
  .sticker{animation:sticker-schweben 6s ease-in-out infinite alternate}
}
@keyframes hero-rein{to{opacity:1;transform:none}}
@keyframes hero-illu{from{opacity:0;transform:translateY(30px) rotate(-4deg)}to{opacity:1;transform:none}}
@keyframes hero-bild{to{transform:scale(1)}}
@keyframes sticker-schweben{from{transform:rotate(-8deg) translateY(0)}to{transform:rotate(-6deg) translateY(-6px)}}

/* P4 — globaler Reset bei reduzierter Bewegung */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  [data-reveal],[data-hero]{opacity:1!important;transform:none!important}
  .btn:hover,.karte:hover,.wahl label:hover,.social a:hover,.anruf-fab:hover{transform:none}
  .kachel:hover .kachel__bild img{transform:none}
}
@media print{.kopf,.fuss,.anruf-fab,.karten-nav,.hinweisband{display:none}.hero{background:none;color:#000}.hero::before,.hero__bild{display:none}body{background:#fff}}

/* ---------- Aktionen (über der Speisekarte) ---------- */
.aktionen{padding-block:clamp(16px,3vw,32px) clamp(48px,6vw,80px)}
.aktionen__kopf{margin-bottom:28px}
.aktionen__kopf .h2{margin-bottom:0}
.aktionen__raster{display:grid;gap:20px;grid-template-columns:minmax(0,1fr)}
@media (min-width:1000px){.aktionen__raster{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}.aktionen__raster--eins{grid-template-columns:minmax(0,1fr)}}
.aktion{position:relative;border-radius:var(--radius-l);padding:clamp(28px,4vw,48px);overflow:hidden;isolation:isolate}
.aktion__titel{font-family:var(--font-display);font-size:clamp(1.9rem,1.4rem + 1.6vw,2.8rem);line-height:1.04;letter-spacing:-.015em;margin-bottom:14px;max-width:16ch;text-wrap:balance}
.aktion__zeit{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:.95rem;margin-bottom:10px}
.aktion__text{max-width:52ch}
.aktion__hinweis{font-size:.9rem;margin-top:18px;max-width:56ch}
.aktion--liste{background:var(--creme-hell);border:1px solid var(--linie)}
.aktion--liste .aktion__zeit{color:var(--napoli-tief)}
.aktion--liste .aktion__text,.aktion--liste .aktion__hinweis{color:var(--text-leise)}
.aktion--liste .gerichte{margin-top:12px}
.aktion--liste .gericht{padding:14px 0}
.aktion--liste .gericht:last-child{border-bottom:0}
.aktion--deal{background:var(--nacht);color:var(--text-hell);display:flex;flex-direction:column;justify-content:flex-end;min-height:520px}
.aktion--deal .eyebrow{color:var(--basilico)}
.aktion--deal .aktion__text,.aktion--deal .aktion__hinweis{color:var(--text-hell-leise)}
.aktion--deal .aktion__zeit{color:var(--text-hell)}
.aktion--deal :focus-visible{outline-color:var(--creme)}
.aktion__bild{position:absolute;right:-18%;top:-10%;width:78%;max-width:440px;z-index:-1;opacity:.95;filter:drop-shadow(0 24px 40px rgba(0,0,0,.5))}
.aktion--deal::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,rgba(29,29,27,1) 42%,rgba(29,29,27,.35) 75%,rgba(29,29,27,0))}
.aktion__zahl{position:absolute;left:clamp(28px,4vw,48px);top:clamp(24px,3vw,40px);width:clamp(110px,11vw,140px);aspect-ratio:1;display:grid;place-items:center;font-family:var(--font-display);font-size:clamp(2rem,1.6rem + 1.2vw,2.6rem);color:#fff;transform:rotate(-8deg);z-index:1}
.aktion__zahl::before{content:"";position:absolute;inset:0;background:var(--napoli-tief);border-radius:46% 54% 50% 50%/52% 46% 54% 48%;z-index:-1;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.aktion__inhalt{position:relative}
@media (prefers-reduced-motion:no-preference){.aktion__zahl{animation:sticker-schweben 6s ease-in-out infinite alternate}}
.gericht__zusatz{text-transform:none;letter-spacing:.01em;font-size:.92em}
@media (max-width:999px){.aktion--deal{padding-top:clamp(200px,52vw,300px);min-height:0}.aktion__bild{right:-12%;top:-6%;width:70%}}
