/* ============================================================
   Smart Menu Solutions — clean design system
   Palette matched to the real site: white, orange #F66A09, grey #737373
   ============================================================ */

/* Open Sans is now loaded via a <link> tag with preconnect in each page's
   <head>, not @import here -- @import blocks CSS parsing on an extra
   network round-trip before anything can render. */

html{
  scroll-behavior: smooth; 
}

html,
body{
  overflow-x: hidden;
}

:root{
  --bg:        #FFFFFF;
  --bg-alt:    #FAFAF9;
  --ink:       #262421;
  --grey:      #737373;
  --paper:     #FFFFFF;
  --orange:    #F66A09;
  --orange-dark:#D85D06;
  --orange-tint: #FFF1E4;
  --line:      #E7E5E1;

  --radius:    14px;
  --border:    1px solid var(--line);
  --shadow:    0 14px 30px -18px rgba(38,36,33,.35);
  --shadow-sm: 0 8px 18px -10px rgba(38,36,33,.3);

  --maxw:      1160px;
  --space-1:   .5rem;
  --space-2:   1rem;
  --space-3:   1.75rem;
  --space-4:   3rem;
  --space-5:   5rem;
}

*, *::before, *::after{ 
  box-sizing: border-box; 
}

body{
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: 'Open Sans', system-ui, sans-serif;
  font-size: 17px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

img{ 
  max-width: 100%; 
  display: block; 
}

a{ 
  color: inherit; 
}

h1, h2, h3, h4{
  font-family: 'Open Sans', system-ui, sans-serif;
  font-weight: 600;
  line-height: 1.18;
  margin: 0 0 .55em;
  text-wrap: balance;
}

h1{ font-size: clamp(2.3rem, 5vw, 3.4rem); text-align: center; }
h2{ font-size: clamp(1.7rem, 3.4vw, 2.3rem); }
h3{ font-size: 1.25rem; }

p{ margin: 0 0 1em; max-width: 62ch; color: var(--grey); }

.container{
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 24px;
}

.visually-hidden{
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap;
}

/* ---------- skip link ---------- */
.skip-link{
  position: absolute; left: -999px; top: 0;
  background: var(--ink); color: #fff; padding: .7em 1.2em;
  z-index: 200; border-radius: 0 0 8px 0;
}
.skip-link:focus{ left: 0; }

/* ---------- focus ---------- */
a:focus-visible, button:focus-visible, summary:focus-visible{
  outline: 3px solid var(--orange);
  outline-offset: 3px;
}

/* ============================================================
   Header / nav
   ============================================================ */
.site-header{
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  background: rgba(255,255,255,.92);
  backdrop-filter: blur(6px);
  border-bottom: var(--border);
}
/* --header-h is kept in sync with the real, live height of .site-header by
   script.js's syncHeaderHeight() (a ResizeObserver) - the fixed header's
   actual height can shift by a pixel or two after load (web font swap,
   the DE/EN buttons re-wrapping, etc.), and a hardcoded value here would
   then leave a sliver of body background showing above the hero image on
   some phones/browsers. 69px is only the before-JS fallback. */
body{ padding-top: var(--header-h, 69px); }
.header-inner{
  display: flex; align-items: center; justify-content: space-between;
  gap: 1.5rem;
  padding: 12px 24px;
  max-width: var(--maxw); margin: 0 auto;
}
.brand{
  display: flex; align-items: center; gap: .65rem;
  text-decoration: none;
  flex: 0 0 auto;
}
.brand img{ height: 42px; width: auto; }
.brand-text{
  font-weight: 700; font-size: 1.15rem; letter-spacing: -.01em;
  white-space: nowrap;
}
.brand-text .n-smart{ color: var(--orange); }
.brand-text .n-rest{ color: var(--ink); }

.nav-toggle{
  display: none;
  background: var(--bg-alt); color: var(--ink);
  border: var(--border); border-radius: 10px;
  width: 44px; height: 44px;
  align-items: center; justify-content: center;
  cursor: pointer;
}
.nav-toggle svg{ width: 20px; height: 20px; }

.main-nav{
  display: flex; align-items: center; gap: 1.7rem;
}
.main-nav ul{
  list-style: none; display: flex; gap: 2.1rem;
  margin: 0; padding: 0;
}
.main-nav a{
  text-decoration: none;
  font-weight: 500;
  font-size: .96rem;
  color: var(--ink);
  position: relative;
  padding: 4px 2px;
  white-space: nowrap;
}
.main-nav a[aria-current="page"]{ color: var(--orange); font-weight: 600; }

.nav-cta{
  display: inline-block;
  white-space: nowrap;
  flex: 0 0 auto;
}

@media (max-width: 860px){
  .header-inner{padding-left:10px;padding-right:10px;gap:.5rem}
  .header-inner .brand{gap:.4rem}
  .header-inner .brand-text{font-size:.92rem}
  .nav-lang-container .lang-switcher{gap:4px !important}
  .nav-lang-container .lang-btn{min-width:29px !important;height:30px !important;padding:0 5px !important;font-size:.72rem !important}
  .nav-toggle{ display: flex; }
  .main-nav{
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    position: fixed; inset: 69px 0 auto 0;
    background: var(--paper);
    border-bottom: var(--border);
    max-height: calc(100vh - 69px);
    overflow: auto;
    transform: translateY(-8px);
    opacity: 0; pointer-events: none;
    transition: opacity .16s ease, transform .16s ease;
  }
  .main-nav.is-open{
    opacity: 1; pointer-events: auto; transform: translateY(0);
  }
  .main-nav ul{
    flex-direction: column; gap: 0;
    padding: 8px 24px 20px;
  }
  .main-nav li{ border-bottom: 1px solid var(--line); }
  .main-nav a{ display: block; padding: 14px 4px; }
  .nav-cta{ margin: 4px 24px 20px; align-self: stretch; }
}

/* ============================================================
   Buttons
   ============================================================ */
.btn{
  display: inline-flex; align-items: center; gap: .5em;
  font-family: 'Open Sans', sans-serif;
  font-weight: 600;
  font-size: .98rem;
  text-decoration: none;
  padding: .8em 1.7em;
  border-radius: 999px;
  border: 1px solid var(--orange);
  background: var(--orange);
  color: #fff;
  box-shadow: var(--shadow-sm);
  transition: background .15s ease, transform .12s ease;
  cursor: pointer;
}
.btn:hover{ background: var(--orange-dark); transform: translateY(-1px); }
.btn:active{ transform: translateY(0); }
.btn:visited{ color: #fff; }
.btn--outline{ background: transparent; color: var(--ink); border-color: var(--line); box-shadow: none; }
.btn--outline:visited{ color: var(--ink); }
.btn--outline:hover{ border-color: var(--orange); color: var(--orange); background: transparent; }
.btn--block{ width: 100%; justify-content: center; }

/* ============================================================
   Hero
   ============================================================ */
.hero{
  position: relative;
  background: var(--ink);
  overflow: hidden;
}
.hero::after{
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(to top, rgba(15,13,11,.86) 0%, rgba(15,13,11,.55) 45%, rgba(15,13,11,.18) 100%);
  pointer-events: none;
}
.hero-banner img{
  width: 100%;
  height: clamp(420px, 62vw, 620px);
  object-fit: cover;
  display: block;
}
.hero-inner{
  position: absolute; inset: 0;
  z-index: 2;
  display: flex; flex-direction: column; align-items: center; justify-content: flex-end;
  max-width: 820px; margin: 0 auto;
  padding: var(--space-4) 24px calc(var(--space-4) + 1rem);
  text-align: center;
}
.hero h1{ color: #fff; margin-bottom: 0.9em; }
.hero h1 .accent{ color: var(--orange); }
.hero h1 .hero-sub{ display: block; font-size: 0.5em; font-weight: 600; margin-top: 0.6em; color: #fff; }
/* Home hero: the keyword line is the real <h1> (what search engines read as
   the page topic) and the "Scan|View|Enjoy" slogan above it is a styled
   <p> - same look as before, when the slogan was the big part of the h1. */
.hero .hero-slogan{
  font-size: clamp(2.3rem, 5vw, 3.4rem); font-weight: 600; line-height: 1.18;
  color: var(--orange); margin: 0; text-wrap: balance;
}
.hero h1.hero-title{ font-size: calc(clamp(2.3rem, 5vw, 3.4rem) * .5); margin: .6em 0 1.8em; }
/* German "Scannen|Ansehen|Genießen" is noticeably longer than the
   English "Scan|View|Enjoy" - widen the hero text zone on German pages
   only, instead of shrinking the font, so it stays the same size as the
   English version and still fits on one line. */
html[lang="de"] .hero-inner{ max-width: 1000px; }
.hero-lede{ font-size: 1.12rem; max-width: 52ch; color: #EDEBE7; }
.hero-actions{ margin-top: 1.2rem; }

.page-hero{
  border-bottom: var(--border);
  background: var(--bg-alt);
  padding: var(--space-4) 0 var(--space-3);
  text-align: center;
}
.page-hero .container{ max-width: 780px; }
.page-hero h1{ overflow-wrap: break-word; }
.page-hero h1 .accent{ color: var(--orange); }
.page-hero p{ font-size: 1.06rem; margin-left: auto; margin-right: auto; }

/* ============================================================
   Sections & Grids
   ============================================================ */
.section{ padding: var(--space-5) 0; }
.section--tight{ padding: var(--space-4) 0; }
.section-head{ max-width: 640px; margin: 0 auto var(--space-3); text-align: center; }
.section-head h2 .accent{ color: var(--orange); }
.section--alt{ background: var(--bg-alt); border-top: var(--border); border-bottom: var(--border); }

.section--dark{ background: var(--ink); color: #fff; border-top: var(--border); border-bottom: var(--border); padding: var(--space-3) 0; }
.section--dark .section-head{ margin-bottom: var(--space-2); }
.section--dark .section-head p{ color: #C9C6C0; }
#before-after .container{ max-width: 3200px; }

.compare-grid{
  display: grid; grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr auto 1fr; gap: var(--space-3);
  align-items: stretch; max-width: 2800px; margin: 0 auto;
}
.compare-card{
  background: var(--paper); border: var(--border); border-radius: var(--radius);
  box-shadow: var(--shadow-sm); padding: 1.15rem; text-align: left;
  display: flex; flex-direction: column;
}
.compare-card--after{ border-color: var(--orange); box-shadow: 0 18px 36px -18px rgba(246,106,9,.45); }
.compare-tag{
  align-self: flex-start; font-size: .7rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--grey); background: var(--bg-alt); border-radius: 999px; padding: .25em .85em; margin-bottom: .7em;
}
.compare-tag--after{ color: #fff; background: var(--orange); }
.compare-photo{ position: relative; border-radius: calc(var(--radius) - 4px); overflow: hidden; margin-bottom: .8em; aspect-ratio: 16/5; }
.compare-photo img{ width: 100%; height: 100%; object-fit: cover; display: block; }
/* The report photo is 4:3 but shown in a 16:6 strip - anchor it low so the
   whole donut chart stays in view instead of being cut off at the bottom. */
.compare-photo img.compare-photo__report{ object-position: center 65%; }
/* The QR code image is a tight square crop - cover at 16:5 would slice into
   the QR pattern itself, so show it uncropped over an atmospheric restaurant
   photo instead of a plain background. */
.compare-photo--qr{ background: var(--bg-alt) url('assets/images/qr-demo-background.png') center/cover no-repeat; }
.compare-photo--qr img{
  position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);
  width: auto; height: 92%; object-fit: contain;
  border-radius: 6px; box-shadow: 0 6px 18px -4px rgba(0,0,0,.45);
}
.compare-card h3{ margin: 0 0 .4em; font-size: 1.05rem; }
.compare-list{ list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .4em; color: var(--grey); font-size: .88rem; }
.compare-list li{ padding-left: 1.3em; position: relative; }
.compare-list li::before{ content: "—"; position: absolute; left: 0; color: var(--grey); }
.compare-list a{ color: var(--orange); }
.compare-card--after .compare-list li::before{ content: "✓"; color: var(--orange); font-weight: 700; }
.compare-arrow{ display: flex; align-items: center; justify-content: center; color: var(--orange); }

.compare-photo--demo{
  position: absolute; inset: 0; z-index: 1;
  border: 0; padding: 0; width: 100%; height: 100%; font: inherit; cursor: pointer;
  background: transparent;
  display: flex; align-items: center; justify-content: center;
}
.compare-photo--demo .demo-pill{
  display: inline-flex; align-items: center; gap: .5em;
  background: var(--ink); color: #fff;
  padding: .55em 1.1em; border-radius: 999px;
  font-weight: 600; font-size: .85rem;
  box-shadow: 0 10px 22px -8px rgba(0,0,0,.55);
}
.compare-photo--demo svg{ color: var(--orange); flex-shrink: 0; }
.compare-photo--demo:hover .demo-pill{ background: #34302b; }

.stats-demo-overlay{
  position: fixed; inset: 0; z-index: 400; background: rgba(20,18,16,.75);
  display: flex; align-items: center; justify-content: center; padding: 1.2rem;
}
.stats-demo-overlay[hidden]{ display: none; }
.stats-demo-box{
  position: relative; background: var(--paper); border-radius: var(--radius);
  width: 100%; max-width: 980px; height: min(85vh, 800px); overflow: hidden;
  box-shadow: 0 30px 60px -20px rgba(0,0,0,.45);
}
.stats-demo-box iframe{ width: 100%; height: 100%; border: 0; display: block; }
.stats-demo-close{
  position: absolute; top: .6rem; right: .6rem; z-index: 1; width: 34px; height: 34px;
  border-radius: 50%; border: 0; background: rgba(0,0,0,.55); color: #fff; font-size: .95rem;
  line-height: 1; cursor: pointer;
}
.stats-demo-close:hover{ background: rgba(0,0,0,.75); }

.hub-demo-box{
  position: relative; background: var(--paper); border-radius: var(--radius);
  width: 100%; max-width: 420px; max-height: min(88vh, 760px); overflow-y: auto;
  box-shadow: 0 30px 60px -20px rgba(0,0,0,.45); padding: 2.4rem 1.6rem 1.8rem;
}
.hub-flow{ display: flex; flex-direction: column; align-items: center; text-align: center; }
.hub-flow h3{ margin: 0 0 1.4rem; font-size: 1.15rem; }
.hub-flow-node{
  background: var(--ink); color: #fff; font-weight: 700; font-size: .85rem;
  padding: .5em 1.3em; border-radius: 999px;
}
.hub-flow-arrow{ width: 2px; height: 1.6rem; background: var(--line); }
.hub-flow-step{
  width: 100%; display: flex; align-items: center; gap: .9rem; text-align: left;
  background: var(--bg-alt); border: var(--border); border-radius: 14px; padding: .8rem 1rem;
}
.hub-flow-icon{
  flex: 0 0 auto; width: 42px; height: 42px; border-radius: 50%; background: #fff1e4;
  display: grid; place-items: center; font-size: 1.3rem;
}
.hub-flow-step h4{ margin: 0 0 .15em; font-size: .92rem; }
.hub-flow-step p{ margin: 0; font-size: .78rem; color: var(--grey); line-height: 1.4; }
.hub-flow-outcome{ margin: 1.1rem 0 0; font-size: .88rem; font-weight: 600; color: var(--ink); }

@media (max-width: 780px){
  .compare-grid{ grid-template-columns: 1fr; }
  .compare-arrow{ transform: rotate(90deg); padding: .4rem 0; }
  .stats-demo-box{ height: min(90vh, 800px); }
  .hub-demo-box{ padding: 2.2rem 1.1rem 1.4rem; }
}

.panel{
  background: var(--paper);
  border: var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: var(--space-3);
}

.sfm-panel{
  margin-top: 1.6rem;
  text-align: center;
}
.sfm-panel h3{ margin-bottom: .5em; }
.sfm-panel > p:first-of-type{ max-width: 560px; margin: 0 auto .9rem; }
.sfm-features{
  list-style: none; margin: 0 auto .8rem; padding: 0;
  max-width: 560px; text-align: left;
}
.sfm-features li{ margin: .3em 0; font-weight: 500; font-size: .96rem; }
.sfm-available{ max-width: 560px; margin: 0 auto; font-weight: 500; font-size: .96rem; color: var(--grey); text-align: center; }

.grid-3{
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.6rem;
}
.grid-4{
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.6rem;
}
.grid-2{
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.6rem;
}
@media (max-width: 1100px){
  .grid-4{ grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 860px){
  .grid-3{ grid-template-columns: 1fr; }
  .grid-4{ grid-template-columns: 1fr; }
  .grid-2{ grid-template-columns: 1fr; }
}

.two-col{
  display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4);
  align-items: center;
}
@media (max-width: 860px){ .two-col{ grid-template-columns: 1fr; } }
.two-col img{ border-radius: var(--radius); border: var(--border); width: 100%; height: 100%; min-height: 340px; object-fit: cover; }
.two-col.reverse > *:first-child{ order: 2; }

/* ============================================================
   Service cards
   ============================================================ */
.service-card{
  position: relative;
  display: flex; align-items: flex-end;
  border-radius: var(--radius);
  overflow: hidden;
  min-height: 320px;
  min-width: 0;
  padding: 0;
  isolation: isolate;
}
.service-card img{
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; border-radius: 0; border: none; margin: 0; z-index: -2;
}
.service-card::after{
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(to top, rgba(15,13,11,.88) 0%, rgba(15,13,11,.45) 55%, rgba(15,13,11,.05) 100%);
}
.service-card .card-copy{ padding: 1.5rem 1.4rem; color: #fff; text-align: left; }
.service-card h3{ color: #fff; margin-bottom: .35em; }
.service-card p{ color: #E7E4DF; margin: 0; max-width: none; }
/* Add-on row on our-services (4 cards): taller, so more of the photo shows above the text */
.grid-4 > .service-card{ min-height: 400px; }
.service-card .badge{
  position: absolute; top: 14px; right: 14px; z-index: 1;
  background: var(--orange); color: #fff;
  font-weight: 600; font-size: .75rem;
  padding: .35em .9em; border-radius: 999px;
}

/* ============================================================
   Testimonials & Pricing
   ============================================================ */
.testimonial{
  background: var(--paper);
  border: var(--border);
  border-radius: var(--radius);
  padding: 1.6rem;
}
.testimonials-marquee{ overflow: hidden; }
.testimonials-track{
  display: flex; gap: 1.6rem; width: max-content;
  animation: testimonials-scroll 42s linear infinite;
}
.testimonials-track:hover,
.testimonials-track:focus-within{ animation-play-state: paused; }
.testimonials-track .testimonial{ flex: 0 0 min(360px, 78vw); }
@keyframes testimonials-scroll{
  from{ transform: translateX(0); }
  to{ transform: translateX(calc(-50% - .8rem)); }
}
@media (prefers-reduced-motion: reduce){
  .testimonials-track{ animation: none; flex-wrap: wrap; width: 100%; }
}
.testimonial p{ font-size: 1rem; color: var(--ink); }
.testimonial cite{
  display: block; margin-top: .8rem; font-style: normal;
  font-weight: 600; font-size: .9rem; color: var(--grey);
}

.price-card{
  position: relative;
  display: flex; flex-direction: column;
  text-align: center;
}
.price-card--featured{ border-color: var(--orange); box-shadow: 0 18px 36px -18px rgba(246,106,9,.45); }
.price-card .price{
  font-family: 'Open Sans', sans-serif;
  font-weight: 700;
  font-size: 2.4rem;
  margin: .15em 0 .3em;
  color: var(--ink);
}
.price-card .price small{
  font-family: 'Open Sans', sans-serif;
  font-weight: 500; font-size: .95rem;
  color: var(--grey);
  white-space: nowrap;
}
.price-card ul{
  list-style: none; margin: 1em 0 1.4em; padding: 0;
  display: flex; flex-direction: column; gap: .6em;
  text-align: left;
}
.price-card li{
  display: flex; gap: .6em; align-items: flex-start;
  font-weight: 500; font-size: .96rem;
}
.price-card li svg{ flex: 0 0 auto; margin-top: 3px; color: var(--orange); }
.price-card .badge{
  position: absolute; top: -13px; left: 50%; transform: translateX(-50%);
  background: var(--orange); color: #fff;
  font-weight: 600; font-size: .75rem;
  padding: .35em .9em; border-radius: 999px;
}

/* ============================================================
   FAQ & Steps
   ============================================================ */
.faq-list{ display: flex; flex-direction: column; gap: .8rem; max-width: 760px; margin: 0 auto; }
.faq-item{
  background: var(--paper);
  border: var(--border);
  border-radius: 12px;
  overflow: hidden;
}
.faq-item summary{
  cursor: pointer;
  list-style: none;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: 1.1rem 1.3rem;
  font-weight: 600; font-size: 1.01rem;
}
.faq-item summary::-webkit-details-marker{ display: none; }
.faq-item .plus{
  flex: 0 0 auto; width: 24px; height: 24px;
  border-radius: 50%; background: var(--orange-tint);
  display: flex; align-items: center; justify-content: center;
  position: relative;
}
.faq-item .plus::before, .faq-item .plus::after{
  content: ""; position: absolute; background: var(--orange);
}
.faq-item .plus::before{ width: 10px; height: 2px; }
.faq-item .plus::after{ width: 2px; height: 10px; transition: transform .15s ease; }
.faq-item[open] .plus::after{ transform: scaleY(0); }
.faq-item .faq-a{ padding: 0 1.3rem 1.2rem; margin: 0; }

.steps{ display: flex; flex-direction: column; gap: 1rem; max-width: 760px; margin: 0 auto; }
.step{
  display: grid; grid-template-columns: 48px 1fr; gap: 1.1rem;
  background: var(--paper); border: var(--border); border-radius: 12px;
  padding: 1.1rem 1.3rem;
  align-items: flex-start;
}
.step-num{
  width: 48px; height: 48px; border-radius: 50%;
  background: var(--orange-tint); color: var(--orange);
  display: flex; align-items: center; justify-content: center;
  font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 1.2rem;
}
.step h3{ margin: 0 0 .2em; font-size: 1.08rem; }
.step p{ margin: 0; }

/* ============================================================
   Contact form & Side panel
   ============================================================ */
.contact-grid{
  display: grid; grid-template-columns: 1.1fr .9fr; gap: var(--space-4);
  align-items: start;
}
@media (max-width: 900px){ .contact-grid{ grid-template-columns: 1fr; } }

.field{ margin-bottom: 1.2rem; }
.field label{
  display: block; font-weight: 600; margin-bottom: .4em; font-size: .94rem;
}
.field input, .field textarea{
  width: 100%;
  border: var(--border);
  border-radius: 10px;
  padding: .85em 1em;
  font: inherit;
  background: var(--paper);
}
.field input:focus, .field textarea:focus{
  outline: 3px solid var(--orange-tint); border-color: var(--orange);
}
.field-hint{ font-size: .82rem; color: var(--grey); margin-top: .3em; }
.hp-field{ position: absolute; left: -9999px; }

.contact-side .panel{ background: var(--ink); color: #fff; border-color: var(--ink); }
.contact-side h3{ color: #fff; }
.contact-side p{ color: #D9D7D3; }
.contact-side a{ color: #fff; text-decoration: underline; }
.contact-side .contact-link{
  display: flex; align-items: center; gap: .55em;
  margin-bottom: .5em;
}
.contact-side .contact-link-icon{ flex-shrink: 0; color: #D9D7D3; }
.contact-side .contact-link a{
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
  color: var(--orange);
}

/* ============================================================
   CTA band & Footer
   ============================================================ */
.cta-band{
  border-top: var(--border); border-bottom: var(--border);
  background: var(--ink); color: #fff;
  padding: var(--space-4) 0;
  text-align: center;
}
.cta-band h2{ color: #fff; }
.cta-band p{ color: #C9C6C0; margin-left: auto; margin-right: auto; }
.cta-band--light{
  border-top: 0;
  background: var(--bg-alt);
  color: var(--ink);
}
.services-testimonials{ border-bottom: 0; }
.cta-band--light h2{ color: var(--ink); }
.cta-band--light p{ color: var(--grey); }

.site-footer{
  padding: var(--space-4) 0 var(--space-3);
  background: var(--ink);
  color: #E7E4DF;
}
.footer-inner{
  display: flex; justify-content: space-between; align-items: center;
  flex-wrap: wrap; gap: 1rem;
}
.footer-brand{ display: flex; align-items: center; gap: .5rem; font-weight: 600; text-decoration: none; }
.footer-brand img{ height: 32px; }
.footer-brand .brand-text .n-rest{ color: #fff; }
.footer-links{ display: flex; gap: 1.4rem; list-style: none; padding: 0; margin: 0; flex-wrap: wrap; }
.footer-links a{ text-decoration: none; font-weight: 500; font-size: .92rem; color: #E7E4DF; }
.footer-links a:hover{ color: var(--orange); }
.footer-social{ display: flex; gap: .6rem; }
.footer-social a{
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 50%;
  border: 1px solid #46433E; text-decoration: none; color: #E7E4DF;
}
.footer-social a:hover{ border-color: var(--orange); color: var(--orange); }
.footer-bottom{
  margin-top: var(--space-3);
  padding-top: var(--space-3);
  border-top: 1px solid #3A3733;
  font-size: .85rem; color: #A8A49D;
  display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: .6rem;
}
.footer-bottom a{ text-decoration: none; color: #A8A49D; }
.footer-bottom a:hover{ color: var(--orange); }
.footer-powered{ white-space: nowrap; }
.footer-legal{ display: flex; gap: 1.2rem; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; flex-basis: 100%; }
/* Industry landing pages + About - linked from every footer so they aren't
   orphan pages only reachable via the sitemap. Its own class, not
   .footer-links: script.js translates .footer-links items by position. */
.footer-industries{
  margin-top: var(--space-3);
  display: flex; flex-wrap: wrap; gap: .5rem 1.4rem;
  font-size: .88rem;
}
.footer-industries a{ text-decoration: none; color: #C9C5BE; }
.footer-industries a:hover{ color: var(--orange); }

/* Guides (guides.html overview + one page per article) */
.guide-meta{ color: var(--grey); font-size: .92rem; margin-bottom: 1.6rem; }
.guide-table-wrap{ overflow-x: auto; margin: 1.2rem 0 1.4rem; -webkit-overflow-scrolling: touch; }
.guide-table{ width: 100%; border-collapse: collapse; font-size: .95rem; min-width: 560px; }
.guide-table th, .guide-table td{ padding: .65rem .8rem; border-bottom: 1px solid #E7E4DF; text-align: left; }
.guide-table th{ font-weight: 600; background: #F7F5F2; }
.guide-table td{ white-space: nowrap; }
.guide-table td:first-child{ font-weight: 600; }
/* the mobile "table{ display:block; overflow-x:auto }" rule would give a
   second scrollbar - the wrapper already scrolls */
.guide-table-wrap .guide-table{ display: table; overflow: visible; }
.guide-list{ display: grid; gap: 1.2rem; max-width: 760px; margin: 0 auto; }
.guide-card{
  display: block; padding: 1.4rem 1.6rem; border: 1px solid #E7E4DF; border-radius: 14px;
  background: #fff; text-decoration: none; color: inherit; transition: border-color .15s, box-shadow .15s;
}
.guide-card:hover{ border-color: var(--orange); box-shadow: 0 6px 20px rgba(0,0,0,.06); }
.guide-card h2{ font-size: 1.35rem; margin: .3rem 0 .5rem; }
.guide-card p{ color: var(--grey); margin: 0 0 .8rem; }
.guide-card__meta{ color: var(--grey); font-size: .85rem; }
.guide-card__more{ color: var(--orange); font-weight: 600; }

@media (max-width: 640px){
  .footer-inner, .footer-bottom{ flex-direction: column; align-items: flex-start; }
}

/* ============================================================
   Order form page
   ============================================================ */
.order-layout{
  display: grid; grid-template-columns: 1.15fr .9fr; gap: 1.75rem;
  align-items: start;
}
@media (max-width: 900px){ .order-layout{ grid-template-columns: 1fr; } }

.order-card{
  background: var(--paper);
  border: var(--border);
  border-radius: 20px;
  box-shadow: var(--shadow);
  padding: 2.2rem;
}
.order-card > h2{ margin-bottom: 1.6rem; }


.order-step-label{
  font-size: .76rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase;
  color: var(--orange); margin-bottom: .9rem;
}
.order-section{ margin-bottom: 1.9rem; padding-bottom: 1.9rem; border-bottom: 1px solid var(--line); }
.order-section:last-of-type{ border-bottom: none; margin-bottom: 1.6rem; padding-bottom: 0; }

.order-form-grid{ display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
@media (max-width: 520px){ .order-form-grid{ grid-template-columns: 1fr; } }

.order-field label{ display: block; font-weight: 700; font-size: .9rem; margin-bottom: .4em; }
.order-field input{
  width: 100%; border: var(--border); border-radius: 9px;
  padding: .8em 1em; font: inherit; background: var(--paper);
}
.order-field input:focus{ outline: 3px solid var(--orange-tint); border-color: var(--orange); }
.order-field + .order-field{ margin-top: .9rem; }
.order-form-grid > .order-field + .order-field{ margin-top: 0; }

.plan-grid{ display: grid; grid-template-columns: repeat(3,1fr); gap: .75rem; }
@media (max-width: 480px){ .plan-grid{ grid-template-columns: 1fr; } }
.plan-option input{ position: absolute; opacity: 0; width: 0; height: 0; }
.plan-option label{
  display: block; padding: 1rem .5rem; text-align: center; cursor: pointer;
  border: 1.5px solid var(--line); border-radius: 10px; transition: all .15s ease;
}
.plan-option input:checked + label{ border-color: var(--orange); background: var(--orange-tint); }
.plan-option .p-name{ display: block; font-weight: 700; font-size: .95rem; }
.plan-option .p-price{ display: block; font-weight: 700; font-size: 1.15rem; color: var(--orange); margin-top: .2em; }
.plan-option .plan-badge{
  display: inline-block; margin-bottom: .45rem; padding: .22rem .5rem;
  border-radius: 999px; background: var(--orange); color: #fff;
  font-size: .68rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
}

/* Small "add photos" toggle embedded in each plan card. Sits inside the
   card's own <label>, so clicks on it must not bubble up and re-trigger
   the plan radio's label (handled in order-form.js with stopPropagation).
   Grid, not flex+justify-content:center: with justify-content:center the
   whole [dot][text][price] row is centered as one unit, so when the label
   text wraps to a different number of lines per row (Add photos: 1 line,
   Weekly Analytics Report: up to 3), each row's own total width changes
   and the centered dot/price end up at a different x per row - a visible
   staircase. A fixed-column grid instead pins the dot to the far left and
   the price to the far right on every row regardless of how the middle
   column wraps. */
.p-photo-toggle{
  display: grid; grid-template-columns: 15px 1fr auto; align-items: center; column-gap: .5rem;
  margin-top: .7rem; padding-top: .6rem; border-top: 1px dashed var(--line);
  font-size: .74rem; color: var(--grey); cursor: pointer; text-align: left;
}
.p-photo-toggle input{ position: absolute; opacity: 0; width: 0; height: 0; }
.photo-addon-mini-mark{
  width: 15px; height: 15px; border-radius: 50%;
  border: 2px solid var(--orange); display: grid; place-items: center;
}
.photo-addon-mini-mark::after{
  content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--orange);
  transform: scale(0); transition: transform .15s ease;
}
.p-photo-toggle input:checked ~ .photo-addon-mini-mark::after{ transform: scale(1); }
.photo-addon-mini-price{ font-weight: 700; color: var(--orange); white-space: nowrap; }

/* Second, independent add-on toggle in the same card - same look as the
   photo one, own class names so the two never fight over the same
   checkbox/JS state. */
.p-sfm-toggle{
  display: grid; grid-template-columns: 15px 1fr auto; align-items: center; column-gap: .5rem;
  margin-top: .5rem; padding-top: .5rem; border-top: 1px dashed var(--line);
  font-size: .74rem; color: var(--grey); cursor: pointer; text-align: left;
}
.p-sfm-toggle input{ position: absolute; opacity: 0; width: 0; height: 0; }
.sfm-addon-mini-mark{
  width: 15px; height: 15px; border-radius: 50%;
  border: 2px solid var(--orange); display: grid; place-items: center;
}
.sfm-addon-mini-mark::after{
  content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--orange);
  transform: scale(0); transition: transform .15s ease;
}
.p-sfm-toggle input:checked ~ .sfm-addon-mini-mark::after{ transform: scale(1); }
.sfm-addon-mini-price{ font-weight: 700; color: var(--orange); white-space: nowrap; }

/* Third, independent add-on toggle - same look again, own class names. */
.p-analytics-toggle{
  display: grid; grid-template-columns: 15px 1fr auto; align-items: center; column-gap: .5rem;
  margin-top: .5rem; padding-top: .5rem; border-top: 1px dashed var(--line);
  font-size: .74rem; color: var(--grey); cursor: pointer; text-align: left;
}
.p-analytics-toggle input{ position: absolute; opacity: 0; width: 0; height: 0; }
.analytics-addon-mini-mark{
  width: 15px; height: 15px; border-radius: 50%;
  border: 2px solid var(--orange); display: grid; place-items: center;
}
.analytics-addon-mini-mark::after{
  content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--orange);
  transform: scale(0); transition: transform .15s ease;
}
.p-analytics-toggle input:checked ~ .analytics-addon-mini-mark::after{ transform: scale(1); }
.analytics-addon-mini-price{ font-weight: 700; color: var(--orange); white-space: nowrap; }

.p-hub-toggle{
  display: grid; grid-template-columns: 15px 1fr auto; align-items: center; column-gap: .5rem;
  margin-top: .5rem; padding-top: .5rem; border-top: 1px dashed var(--line);
  font-size: .74rem; color: var(--grey); cursor: pointer; text-align: left;
}
.p-hub-toggle input{ position: absolute; opacity: 0; width: 0; height: 0; }
.hub-addon-mini-mark{
  width: 15px; height: 15px; border-radius: 50%;
  border: 2px solid var(--orange); display: grid; place-items: center;
}
.hub-addon-mini-mark::after{
  content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--orange);
  transform: scale(0); transition: transform .15s ease;
}
.p-hub-toggle input:checked ~ .hub-addon-mini-mark::after{ transform: scale(1); }
.hub-addon-mini-price{ font-weight: 700; color: var(--orange); white-space: nowrap; }

/* Weekly Analytics Report stats page (stats.html) - dashboard of donut-ring
   cards, built via stats.js's ringSvg(); see also the wider .stats-wide
   container override below (this page needs more room than the site's
   normal prose-width pages). */
.stats-range{ color: var(--grey); font-size: .9rem; margin: -.6rem 0 1.2rem; }

/* This dashboard needs more room than the site's normal prose-width (760px)
   pages to let the two-column card grid breathe. */
.stats-wide{ max-width: 980px; }

/* Manage-addons page (addons.html) */
.addons-list{ display: grid; gap: .9rem; margin: 1.2rem 0; }
.addon-row{
  display: flex; align-items: center; gap: .9rem; flex-wrap: wrap;
  border: var(--border); border-radius: 12px; padding: .9rem 1.1rem;
}
.addon-name{ font-weight: 700; display: flex; flex-direction: column; gap: .2rem; }
.addon-price{ font-weight: 400; color: var(--grey); font-size: .85rem; }
.addon-prorate-hint{ font-weight: 400; font-style: italic; color: var(--grey); font-size: .78rem; }
.addon-active-badge{
  margin-left: auto; font-size: .75rem; font-weight: 700; color: #1e6b3c;
  background: #e8f5ec; padding: .3rem .7rem; border-radius: 999px;
}
.button-add-addon{
  margin-left: auto; border: var(--border); border-radius: 999px; padding: .5rem 1.1rem;
  background: var(--orange); color: #fff; font-weight: 700; font-size: .85rem; cursor: pointer;
}
.button-add-addon:hover{ background: var(--orange-dark); }
.button-add-addon:disabled{ opacity: .6; cursor: not-allowed; }
.addon-error{ flex-basis: 100%; color: #b3261e; font-size: .8rem; }
.addons-note{ color: var(--grey); font-size: .85rem; line-height: 1.5; }

.dash-grid{ display: grid; grid-template-columns: 1fr 1.25fr; grid-auto-rows: min-content; gap: 1rem; }
.d-card{
  background: var(--paper); border: var(--border); border-radius: 18px;
  padding: 1.3rem 1.4rem; box-shadow: var(--shadow);
}
.d-card h3{ font-size: .95rem; font-weight: 700; margin: 0 0 1rem; }
.card-visits{ grid-column: 1; grid-row: 1; }
.card-categories{ grid-column: 2; grid-row: 1; }
.card-dishes{ grid-column: 1; grid-row: 2; }
.card-sfm{ grid-column: 2; grid-row: 2; }

.ring-wrap{ display: flex; justify-content: center; margin: .15rem 0 1rem; }
.ring{ width: 132px; height: 132px; }
.ring-num{ font-size: 1.4rem; font-weight: 700; fill: var(--ink); font-family: inherit; }
.ring-sub{ font-size: .64rem; fill: var(--grey); font-family: inherit; text-transform: uppercase; letter-spacing: .04em; }

.ring-legend{ display: grid; gap: .5rem; margin-top: .1rem; }
.ring-legend span{ display: flex; align-items: center; gap: .5rem; font-size: .82rem; color: var(--ink); }
.ring-legend span b{ margin-left: auto; font-weight: 700; }
.ring-legend i{ width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }

.trend-pill{
  display: inline-flex; margin-top: .8rem; font-size: .72rem; font-weight: 700; color: #1e6b3c;
  background: #e8f5ec; padding: .3rem .7rem; border-radius: 999px;
}
.trend-pill.down{ color: #a52d20; background: #fdecea; }

.donut-row{ display: flex; align-items: center; gap: 1.3rem; }
.donut-row .ring-wrap{ margin: 0; flex-shrink: 0; }
.donut-row .ring{ width: 118px; height: 118px; }
.donut-row .ring-legend{ flex: 1; }

.stats-bars-empty{ color: var(--grey); font-size: .9rem; }

.stats-header-row{ display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.stats-header-row h2{ margin-bottom: .1em; }

/* Used when stats.html is embedded in the homepage's live-example popup
   (?embed=1) - hides the full site nav so a click inside the iframe can't
   navigate a visitor away from the tiny modal to a whole other page. */
html.is-embedded .site-header,
html.is-embedded .site-footer{ display: none; }
html.is-embedded .page-hero{ padding-top: 1.6rem; padding-bottom: 1.2rem; }

.sfm-subhead{ font-size: .78rem; font-weight: 700; color: var(--grey); text-transform: uppercase; letter-spacing: .04em; margin: 0 0 .7rem; }
.sfm-legend{ flex: 1; display: grid; gap: .7rem; }
.sfm-legend .sfm-row{ display: grid; grid-template-columns: auto auto 1fr auto; align-items: center; gap: .6rem; font-size: .82rem; }
.sfm-legend .sfm-row i{ width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.sfm-legend .sfm-course{ color: var(--grey); }
.sfm-legend .sfm-dish{ font-weight: 600; color: var(--ink); }
.sfm-legend .sfm-row b{ font-weight: 700; }

@media (max-width: 720px){
  .dash-grid{ grid-template-columns: 1fr; }
  .card-visits, .card-categories, .card-dishes, .card-sfm{ grid-column: 1; grid-row: auto; }
  .donut-row{ flex-direction: column; align-items: stretch; }
}

/* Robust "this plan is selected" highlight that doesn't depend on the
   radio input being the label's immediate previous sibling (the mini
   photo toggle above sits inside the label, between other content). */
.plan-option:has(input[name="Selected Plan"]:checked) label{ border-color: var(--orange) !important; background: var(--orange-tint) !important; }

.dropzone{
  border: 2px dashed var(--orange);
  background: var(--orange-tint);
  border-radius: 12px;
  padding: 1.8rem 1.2rem;
  text-align: center; cursor: pointer;
}
.dropzone svg{ margin: 0 auto .5rem; color: var(--orange); }
.dropzone .dz-title{ font-weight: 700; margin: 0 0 .25em; }
.dropzone .dz-sub{ margin: 0; font-size: .88rem; color: var(--grey); }
.dropzone .dz-hint{ margin: .5em 0 0; font-size: .72rem; font-weight: 700; color: var(--grey); }
.photo-upload-note{ margin: .7rem 0 0; font-size: .82rem; color: var(--grey); text-align: center; }

/* upload.html - the upload step after payment (upload.js) */
.upload-card{ max-width: 720px; margin: 0 auto; }
.upload-card h2{ margin-bottom: .4em; }
.upload-status{ text-align: center; margin: 1rem auto; }
.upload-status--error{ color: #b3261e; font-weight: 600; }
.upload-already{ margin: .6rem 0 0; font-size: .85rem; color: #1e7b34; font-weight: 600; text-align: center; }

.order-submit{
  display: flex; align-items: center; justify-content: center; gap: .5em;
  width: 100%; background: var(--orange); color: #fff; border: none;
  padding: 1em; font: inherit; font-weight: 700; font-size: 1rem;
  border-radius: 999px; cursor: pointer; text-decoration: none;
  box-shadow: var(--shadow-sm); transition: background .15s ease, transform .12s ease;
}
.order-submit:hover{ background: var(--orange-dark); transform: translateY(-1px); }

.order-summary{
  background: var(--ink); color: #fff;
  border-radius: 20px; padding: 2rem;
}
.order-summary .os-label{
  font-size: .76rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase;
  color: var(--orange);
}
.order-summary h3{ color: #fff; font-size: 1.7rem; margin: .3em 0 1.2em; }
.os-line{
  display: flex; justify-content: space-between; gap: 1rem;
  padding: .9rem 0; border-bottom: 1px solid #3A3733;
  font-size: .95rem;
}
.os-line span:first-child{ color: #B7B3AC; }
.os-line span:last-child{ font-weight: 700; }
.os-total{ display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: .3rem 1rem; margin-top: 1.4rem; }
.os-total .os-total-label{ font-size: .76rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: #B7B3AC; }
.os-total .os-total-value{ font-size: 2rem; font-weight: 700; color: var(--orange); }
.os-note{
  display: flex; gap: .6rem; margin-top: 1.4rem; padding-top: 1.4rem;
  border-top: 1px solid #3A3733; font-size: .86rem; color: #B7B3AC;
}
.os-note svg{ flex: 0 0 auto; margin-top: 2px; color: var(--orange); }
.os-note strong{ color: #fff; }

/* ============================================================
   Legal / prose pages
   ============================================================ */
.prose{ max-width: 760px; margin: 0 auto; }
/* Safety net so a long German compound word (Datenschutzgrundverordnung,
   Geschäftsinformationen, etc.) wraps instead of overflowing its container
   on narrow screens, without needing a manual space in every single one. */
.prose h1, .prose h2, .prose h3{ overflow-wrap: break-word; }
.prose h2{ margin-top: 2.4rem; }
.prose h3{ margin-top: 1.6rem; }
.prose h2:first-child{ margin-top: 0; }
.prose ul{ color: var(--grey); padding-left: 1.2rem; }
.prose li{ margin-bottom: .5em; }
.prose p{ max-width: none; }
.prose .updated{ color: var(--grey); font-size: .92rem; margin-bottom: 2rem; }

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior: auto; }
  *{ transition-duration: .001ms !important; animation-duration: .001ms !important; }
}

/* ============================================================
   MOBILE OPTIMIZATION (Including Language Switcher & Contact Grid Fix)
   ============================================================ */

@media (max-width: 768px) {
  .nav-cta {
    width: auto !important;
    display: inline-flex !important;
    padding: 6px 14px !important;
    margin: 10px auto !important;
  }

  .container{
    width: 92%;
    margin: 0 auto;
  }

  /* Korrektur für das Kontaktformular auf Mobilgeräten */
  .contact-grid,
  .order-layout,
  .footer-inner{
    display: flex !important;
    flex-direction: column !important;
  }

  .contact-grid {
    gap: 1.5rem;
  }

  .contact-side, 
  .contact-side .panel,
  .order-card,
  .order-summary{
    width: 100% !important;
  }

  .order-layout{
    gap: 1.5rem;
  }

  .order-form-grid{
    grid-template-columns: 1fr;
  }

  .plan-grid{
    grid-template-columns: 1fr;
  }

  h1{
    font-size: 2rem;
    line-height: 1.2;
  }
  .hero .hero-slogan{ font-size: 2rem; line-height: 1.2; }
  .hero h1.hero-title{ font-size: 1rem; }

  h2{
    font-size: 1.8rem;
  }

  .main-nav ul{
    flex-direction: column;
    gap: 1rem;
  }

  .btn,
  .order-submit{
    width: 100%;
    justify-content: center;
  }

  img{
    max-width: 100%;
    height: auto;
  }

  table{
    display: block;
    overflow-x: auto;
  }

  .hero-inner{
    justify-content: center;
    padding: 120px 20px 140px;
  }

  .hero-banner img{
    min-height: 620px;
  }

  .hero-lede{
    font-size: 1rem;
  }

  .brand img{
    height: 34px;
  }

  .brand-text{
    font-size: .95rem;
  }
}

/* ============================================================
   Language Switcher & Round Flags Styles
   ============================================================ */
.lang-switcher {
  display: flex;
  gap: 8px;
  align-items: center;
}

.flag-btn {
  background: none;
  border: 2px solid var(--line);
  border-radius: 50%;
  width: 32px;
  height: 32px;
  padding: 0;
  overflow: hidden;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color .15s ease, transform .12s ease;
}

.flag-btn:hover {
  border-color: var(--orange);
  transform: scale(1.05);
}

.flag-btn img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* ============================================================
   FINAL RESTORATION FOR HEADER CTA & LANG SWITCHER
   ============================================================ */

.nav-cta {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: var(--orange) !important;
  color: #fff !important;
  padding: .7em 1.5em !important;
  border-radius: 999px !important;
  font-weight: 600 !important;
  font-size: .95rem !important;
  text-decoration: none !important;
  box-shadow: var(--shadow-sm) !important;
  border: 1px solid var(--orange) !important;
}

.nav-cta:hover {
  background: var(--orange-dark) !important;
}

.nav-lang-container {
  display: flex !important;
  align-items: center !important;
  margin-left: 0 !important;
}

.lang-switcher {
  display: flex !important;
  gap: 6px !important;
  align-items: center !important;
}

.flag-btn, .nav-lang-container .lang-btn {
  background: transparent !important;
  border: 1px solid var(--line) !important;
  border-radius: 6px !important;
  min-width: 34px !important;
  height: 30px !important;
  padding: 0 8px !important;
  cursor: pointer !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: var(--ink) !important;
  font: inherit !important;
  font-size: .78rem !important;
  font-weight: 700 !important;
}

.flag-btn:hover, .flag-btn.active, .nav-lang-container .lang-btn:hover, .nav-lang-container .lang-btn.active {
  background: var(--orange) !important;
  border-color: var(--orange) !important;
  color: #fff !important;
}

/* Use one rectangular button shape throughout the site. */
.btn,
.nav-cta,
.order-submit {
  border-radius: 6px !important;
}

@media (max-width: 480px){
  .page-hero h1[data-i18n="refund_hero_title"],.page-hero h1[data-i18n="privacy_page_title"]{font-size:clamp(1.8rem,8.5vw,2.25rem)}
  .page-hero h1[data-i18n="refund_hero_title"] .accent,.page-hero h1[data-i18n="privacy_page_title"] .accent{display:block}
  .header-inner{padding:8px 10px;gap:.35rem}
  .header-inner .brand{min-width:0;gap:.3rem}
  .header-inner .brand img{height:32px;width:32px;object-fit:contain}
  .header-inner .brand-text{font-size:.82rem;letter-spacing:0;overflow-wrap:anywhere}
  .nav-toggle{width:38px;height:38px;flex:0 0 38px}
  .nav-lang-container{flex:0 0 auto}
  .nav-lang-container .lang-switcher{gap:3px!important}
  .flag-btn,.nav-lang-container .lang-btn{min-width:28px!important;width:28px;height:28px!important;padding:0!important;font-size:.65rem!important}
  .flag-btn span{font-size:1rem!important}
  .main-nav{inset:55px 0 auto 0}
}

/* Legal and informational content */
.prose a{ text-decoration:none; color:var(--orange); }
.prose a:visited{ color:var(--orange); }
.prose a:hover{ text-decoration:underline; }
/* .prose a's color rule above is more specific than .btn's, which made
   button-styled links (e.g. success/cancel/404 page CTAs) render with
   invisible orange-on-orange text when placed inside a .prose container. */
.prose .btn{ color:#fff; text-decoration:none; }
.prose .btn:visited{ color:#fff; }
.prose .btn:hover{ text-decoration:none; }
.prose .btn--outline{ color:var(--ink); }
.prose .btn--outline:visited{ color:var(--ink); }
.prose .btn--outline:hover{ color:var(--orange); }
.prose tr th,.prose tr td{ border:1px solid #e6e6e6; }
.prose tr th{ background-color:#f5f5f5; }
.order-consent{ display:flex; align-items:flex-start; gap:.55rem; margin:.75rem 0; color:var(--grey); font-size:.86rem; }
.order-consent input{ margin-top:.25rem; flex:0 0 auto; }
.order-consent-text{ flex:1 1 auto; min-width:0; }
.order-consent a{ color:var(--orange-dark); }
.order-field input[type="number"]{ width:100%; }
/* ============================================================
   KORREKTUR FÜR BESTELLSEITE (GRID & TARIFE)
   ============================================================ */

.order-layout {
  display: grid !important;
  grid-template-columns: 1.15fr .9fr !important;
  gap: 1.75rem !important;
  align-items: start !important;
}

.order-form-grid {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 1rem !important;
}

.plan-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: .75rem !important;
}

.plan-option {
  position: relative;
}

.plan-option input {
  position: absolute !important;
  opacity: 0 !important;
  width: 0 !important;
  height: 0 !important;
}

.plan-option label {
  display: block !important;
  padding: 1rem .5rem !important;
  text-align: center !important;
  cursor: pointer !important;
  border: 1.5px solid var(--line) !important;
  border-radius: 10px !important;
  transition: all .15s ease !important;
  background: var(--paper) !important;
}

.plan-option input:checked + label {
  border-color: var(--orange) !important;
  background: var(--orange-tint) !important;
}

.plan-option .p-name {
  display: block !important;
  font-weight: 700 !important;
  font-size: .95rem !important;
}

.plan-option .p-price {
  display: block !important;
  font-weight: 700 !important;
  font-size: 1.15rem !important;
  color: var(--orange) !important;
  margin-top: .2em !important;
}
/* ============================================================
   KOMPATIBILITÄTS-FIX FÜR TARIFE & FORMULAR-GRID
   ============================================================ */

.plan-grid,
.plan-cards-row {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 15px !important;
}

.order-form-grid,
.form-row {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 20px !important;
}

@media (max-width: 600px) {
  .plan-grid,
  .plan-cards-row,
  .order-form-grid,
  .form-row {
    grid-template-columns: 1fr !important;
  }
}
/* ============================================================
   FEHLENDE KLASSEN FÜR DIE PLAN-KACHELN ERGÄNZEN
   ============================================================ */

.plan-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 0.75rem !important;
  margin-top: 0.5rem;
}

@media (max-width: 480px) {
  .plan-grid {
    grid-template-columns: 1fr !important;
  }
}

/* Keep the mobile navigation visible after the menu toggle. */
@media (max-width: 860px) {
  .main-nav.is-open {
    opacity: 1 !important;
    pointer-events: auto !important;
    transform: translateY(0) !important;
    visibility: visible !important;
    z-index: 110;
  }
}

.plan-option {
  position: relative;
}

.plan-option input {
  position: absolute !important;
  opacity: 0 !important;
  width: 0 !important;
  height: 0 !important;
}

.plan-option label {
  display: block !important;
  padding: 1rem .5rem !important;
  text-align: center !important;
  cursor: pointer !important;
  border: 1.5px solid var(--border-color, #eaeaea) !important;
  border-radius: 10px !important;
  transition: all .15s ease !important;
  background: var(--card-bg, #ffffff) !important;
}

.plan-option input:checked + label {
  border-color: var(--primary, #f36c21) !important;
  background: #fff3ed !important;
}

.plan-option .p-name {
  display: block !important;
  font-weight: 700 !important;
  font-size: .95rem !important;
  color: var(--text-main, #333) !important;
}

.plan-option .p-price {
  display: block !important;
  font-weight: 700 !important;
  font-size: 1.15rem !important;
  color: var(--primary, #f36c21) !important;
  margin-top: .2em !important;
}

@media (max-width: 900px) {
  .order-layout { grid-template-columns: 1fr !important; }
  .order-card, .order-summary { width: 100%; min-width: 0; }
  .order-summary { overflow: hidden; }
  /* .os-total already wraps (flex-wrap: wrap) so long labels drop the value
     to its own line instead of overflowing - .os-line never got the same
     treatment, so a long label (esp. German) pushed its value past the
     card edge, where the overflow:hidden above silently clipped it. */
  .os-line { flex-direction: column; align-items: flex-start; gap: .2rem; }
}
/* Smart ServiceHub showcase on the homepage (#servicehub-showcase): the
   same compare cards as #before-after, on the warm cream of the Service
   Hub floor plan, with clickable screenshots that open full size. */
.section--servicehub{ background: #fbf5ec; border-top: 1px solid #f1e6d6; border-bottom: 1px solid #f1e6d6; padding: var(--space-3) 0; }
.section--servicehub .section-head{ margin-bottom: var(--space-2); }
#servicehub-showcase .container{ max-width: 3200px; }
/* Card text is dark on the white card - without this the titles inherited
   the white text of .section--dark and were invisible in #before-after. */
.compare-card{ color: var(--ink); }
.compare-photo--shot{ aspect-ratio: 16/10; }
.compare-photo--shot img{ object-position: left top; }
button.compare-photo{ display: block; width: 100%; padding: 0; border: 1px solid var(--line); background: #f4f3f1; font: inherit; cursor: zoom-in; }
.shot-zoom-badge{
  position: absolute; right: .45rem; bottom: .45rem; width: 28px; height: 28px; border-radius: 50%;
  background: rgba(38,36,33,.75); color: #fff; display: grid; place-items: center; font-size: .9rem;
}
button.compare-photo:hover .shot-zoom-badge, button.compare-photo:focus-visible .shot-zoom-badge{ background: var(--orange); }
.shot-overlay{ position: fixed; inset: 0; z-index: 200; background: rgba(20,18,16,.86); display: flex; align-items: center; justify-content: center; padding: 1rem; cursor: zoom-out; }
.shot-overlay[hidden]{ display: none; }
.shot-overlay img{ max-width: min(1440px, 100%); max-height: 90vh; border-radius: 10px; box-shadow: 0 20px 50px rgba(0,0,0,.5); cursor: default; }
.shot-close{ position: absolute; top: .8rem; right: 1rem; width: 40px; height: 40px; border: 0; border-radius: 50%; background: #fff; color: var(--ink); font-size: 1.1rem; cursor: pointer; }
