/* ============================================================
   AEMA Booking — Felles CSS for alle offentlige sider
   Inkluder med: <link rel="stylesheet" href="/css/global.css">
   ============================================================ */

/* ── Landkode + Telefon-rad (LÅST AEMA-skjemastandard) ──────────
   Se docs/AEMA-BOOKING-SKJEMA-STANDARD.md. Denne raden har brukket
   gjentatte ganger (bord.html, camping.html, rom.html, aktiviteter.html)
   fordi "auto"-kolonnesizing på landkode-selecten sizer til selectens
   BREDESTE <option> (bygget av js/land.js sin byggLandkodeSelect(), f.eks.
   "+236 — Den sentralafrikanske republikk") — det presser telefonfeltet
   smalt eller helt ut av synlig område, verst på mobil. Fasit (bevist to
   ganger uavhengig, på bord.html og camping.html): stables i én kolonne
   under 1024px (ingen "auto"-kappløp i det hele tatt), side ved side kun
   fra 1024px med landkode fleksibel (1fr) og telefon fast 150px (nok for
   8-10 sifre, uten at lange landnavn klipper telefonfeltet smalt).

   Bruk: <div class="aema-landkode-telefon-rad"> rundt to
   <div class="min-w-0">-kolonner (landkode-select og telefon-input MÅ
   begge ha w-full min-w-0, ellers respekterer ikke CSS Grid kolonne-
   bredden). IKKE lag en ny grid-cols-variant per skjema — gjenbruk denne
   klassen. */
.aema-landkode-telefon-rad {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  align-items: start;
}
@media (min-width: 1024px) {
  .aema-landkode-telefon-rad {
    grid-template-columns: 1fr 150px;
  }
}

/* ── Kalender ────────────────────────────────────────────────── */
.kal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; margin-top:4px; }
.kal-header { font-size:11px; font-weight:500; letter-spacing:0.1em; text-transform:uppercase; color:#73787b; text-align:center; padding:10px 0 6px; font-family:var(--font-body, sans-serif); }
.kal-dag { font-size:14px; font-family:var(--font-body, sans-serif); background:none; border:none; outline:none; cursor:pointer; width:100%; aspect-ratio:1; min-height:34px; display:flex; align-items:center; justify-content:center; border-radius:50%; transition:background 0.12s,color 0.12s; color:#191c1d; position:relative; }
.kal-dag:focus { outline:none; box-shadow:none; }
/* Kontekstgrep: kundens CTA-farge — hover på tilgjengelige, ikke-valgte
   dager bruker en lys tint (--cta-tint, 12% alfa) av CTA-grunnfargen, klart
   svakere enn den solide --cta-bg-fyllingen på kal-valgt under, slik at
   hover aldri kan forveksles med en valgt dato. Se js/cta-farge.js. */
.kal-dag:hover:not(:disabled) { background:var(--cta-tint, rgba(29,111,165,0.12)); }
.kal-dag.kal-i-dag::after { content:''; position:absolute; bottom:4px; left:50%; transform:translateX(-50%); width:4px; height:4px; border-radius:50%; background:#695d49; }
.kal-dag.kal-opptatt { color:#c3c7ca; text-decoration:line-through; cursor:not-allowed !important; }
.kal-dag.kal-opptatt-utsjekk { color:#c3c7ca; text-decoration:line-through; cursor:pointer; }
.kal-dag.kal-opptatt-utsjekk:hover { background:var(--cta-tint, rgba(29,111,165,0.12)); }
.kal-dag.kal-forbi { color:#c3c7ca; cursor:not-allowed !important; }
.kal-dag.kal-valgt { background:var(--cta-bg, #1D6FA5) !important; color:var(--cta-text, #fff) !important; border-radius:50% !important; }
.kal-dag.kal-mellom { background:rgba(105,93,73,0.12); border-radius:0; }
.kal-dag.kal-mellom-start { background:rgba(105,93,73,0.12); border-radius:50% 0 0 50%; }
.kal-dag.kal-mellom-slutt { background:rgba(105,93,73,0.12); border-radius:0 50% 50% 0; }

/* ── Tidslot-knapper (bord/aktiviteter) ──────────────────────── */
/* Kontekstgrep: kundens CTA-farge — samme delte .slot-btn-klasse brukes av
   bord.html OG aktiviteter.html (identisk renderSlots()-markup i begge),
   én stilkilde her dekker begge. Ledig, ikke-valgt tidsluke beholder
   dagens nøytrale utseende (ingen bakgrunn) helt til hover. */
.slot-btn { transition:all 0.15s ease; }
.slot-btn:not(:disabled):not(.valgt):hover { background:var(--cta-tint, rgba(29,111,165,0.12)); }
.slot-btn.valgt { background:var(--cta-bg, #1D6FA5) !important; border-color:var(--cta-bg, #1D6FA5) !important; }
/* span-selektoren er nødvendig fordi tekst-fargen ellers arves fra
   .slot-btn, men hvert <span> i markupet har sin egen Tailwind-klasse
   (text-on-surface/text-on-surface-variant) som alltid vinner over en
   arvet farge — uansett !important på forelderen. Må derfor overstyres
   direkte på selve span-elementene for at "hvit tekst"-kravet faktisk skal
   gjelde. */
.slot-btn.valgt, .slot-btn.valgt span { color:var(--cta-text, #fff) !important; }
.slot-btn.valgt:hover { background:var(--cta-hover, #1a6291) !important; border-color:var(--cta-hover, #1a6291) !important; }
.slot-btn:not(:disabled):active { background:var(--cta-active, #175781) !important; border-color:var(--cta-active, #175781) !important; }
.slot-btn:not(:disabled):focus-visible { outline:none; box-shadow:0 0 0 3px var(--cta-focus, rgba(29,111,165,0.35)); }
/* Fullbooket/utilgjengelig: uendret nøytral statusfarge (opacity-dimming),
   ALDRI CTA-farget — beholdes bevisst som egen, siste regel. */
.slot-btn:disabled { opacity:0.4; cursor:not-allowed; }

/* ── Flatpickr — Fjord Cabins-tema ──────────────────────────── */
.flatpickr-calendar { font-family:var(--font-body, sans-serif) !important; border-radius:14px !important; box-shadow:0 20px 48px rgba(0,0,0,0.14) !important; border:1px solid #c3c7ca !important; background:#fff !important; }
.flatpickr-months { padding:8px 0 0; }
.flatpickr-month { background:transparent !important; }
.flatpickr-current-month { font-family:var(--font-heading, serif) !important; font-size:1rem !important; font-weight:400 !important; color:#191c1d !important; padding:4px 0 !important; }
.flatpickr-current-month input.cur-year { font-family:var(--font-body, sans-serif) !important; font-weight:400 !important; }
.flatpickr-prev-month, .flatpickr-next-month { color:#43474a !important; fill:#43474a !important; }
.flatpickr-prev-month:hover svg, .flatpickr-next-month:hover svg { fill:#191c1d !important; }
.flatpickr-weekday { font-family:var(--font-body, sans-serif) !important; font-size:11px !important; font-weight:500 !important; letter-spacing:0.08em !important; text-transform:uppercase !important; color:#73787b !important; }
.flatpickr-day { font-family:var(--font-body, sans-serif) !important; border-radius:50% !important; font-size:14px !important; color:#191c1d !important; border:1px solid transparent !important; }
/* Kontekstgrep: kundens CTA-farge — samme --cta-tint-vask som .kal-dag over
   (delt logikk, ikke en egen løsning for flatpickr). */
.flatpickr-day:hover { background:var(--cta-tint, rgba(29,111,165,0.12)) !important; border-color:transparent !important; }
.flatpickr-day.today { border-color:#695d49 !important; color:#695d49 !important; }
.flatpickr-day.today:hover { background:#695d49 !important; color:#fff !important; border-color:#695d49 !important; }
/* Valgt dato: CTA-grunnfarge + hvit tekst (--cta-text er alltid hvit, se
   js/cta-farge.js). Hover/active på en allerede valgt dato avledes fra
   samme --cta-hover som primærknappenes hover-tilstand — "eksisterende
   CTA-logikk", ingen ny fargeberegning innført her. */
.flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange {
  background:var(--cta-bg, #1D6FA5) !important; border-color:var(--cta-bg, #1D6FA5) !important; color:var(--cta-text, #fff) !important;
}
.flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover {
  background:var(--cta-hover, #1a6291) !important; border-color:var(--cta-hover, #1a6291) !important; color:var(--cta-text, #fff) !important;
}
.flatpickr-day.inRange { background:rgba(208,222,231,0.6) !important; border-color:rgba(208,222,231,0.6) !important; box-shadow:-5px 0 0 rgba(208,222,231,0.6),5px 0 0 rgba(208,222,231,0.6) !important; }
.flatpickr-day.flatpickr-disabled, .flatpickr-day.flatpickr-disabled:hover { color:#c3c7ca !important; text-decoration:line-through; cursor:not-allowed !important; }
.flatpickr-day.prevMonthDay, .flatpickr-day.nextMonthDay { color:#c3c7ca !important; }

/* Tidsvelger (enableTime, både med og uten kalender — f.eks. utleie.html
   sin frie starttidsvelger med noCalendar:true). Flatpickr sin egen
   standardstil for dette (rund "pille") arver ingen av temafargene/
   -fontene over, og ser løsrevet/stusselig ut sammenlignet med resten av
   siden — samme border/avrunding/skygge-språk som .flatpickr-calendar
   over, i stedet for flatpickr sin egen standard. */
.flatpickr-calendar.noCalendar { border-radius:12px !important; box-shadow:0 20px 48px rgba(0,0,0,0.14) !important; border:1px solid #c3c7ca !important; background:#fff !important; }
.flatpickr-time { max-height:48px !important; height:48px !important; border-radius:12px !important; }
.flatpickr-time .numInputWrapper { height:48px !important; }
.flatpickr-time input.numInput { font-family:var(--font-body, sans-serif) !important; font-size:1.05rem !important; font-weight:500 !important; color:#191c1d !important; height:48px !important; }
.flatpickr-time input.numInput:hover, .flatpickr-time input.numInput:focus { background:var(--cta-tint, rgba(29,111,165,0.08)) !important; }
.flatpickr-time .flatpickr-time-separator { color:#73787b !important; font-weight:500 !important; line-height:48px !important; }
.flatpickr-time .flatpickr-am-pm { font-family:var(--font-body, sans-serif) !important; font-weight:500 !important; }

/* ── Autofill: fjern blå Chrome-bakgrunn ─────────────────────── */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
textarea:-webkit-autofill {
  -webkit-box-shadow: 0 0 0px 1000px #f8f9fa inset !important;
  -webkit-text-fill-color: #191c1d !important;
  transition: background-color 5000s ease-in-out 0s;
}

/* ── Gantt-kalender (plasser) ────────────────────────────────── */
.gantt-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; }
.rack-table { border-collapse:collapse; min-width:640px; width:100%; }
.rack-table th, .rack-table td { padding:0; }

.col-enhet { position:sticky; left:0; background:#fff; z-index:3; width:156px; min-width:156px; max-width:156px; border-right:1px solid #e5e7eb; }
.col-enhet-inner { padding:6px 10px 6px 14px; font-size:13px; color:#43474a; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

.dag-kol { min-width:58px; text-align:center; }
.dag-header-cell { padding:8px 4px 10px; text-align:center; border-bottom:2px solid #e5e7eb; }
.dag-navn { display:block; font-size:9px; font-weight:700; letter-spacing:0.06em; text-transform:uppercase; color:#73787b; }
.dag-dato { display:block; font-size:14px; font-weight:700; color:#191c1d; margin-top:1px; }
.i-dag-kol .dag-dato { color:#d97706; }
.i-dag-kol { background:#fffbeb; }

.celle { height:46px; border-bottom:1px solid #f3f4f6; vertical-align:middle; cursor:pointer; }
.booking-bar { height:34px; display:flex; align-items:center; margin:0 3px; border-radius:8px; position:relative; }
.bekreftet .booking-bar { background:#fee2e2; }
.forespurt .booking-bar { background:#fef3c7; }
.ledig .booking-bar { border-radius:8px; }
.ledig:hover .booking-bar { background:#f0fdf4; }
.booking-gjest { font-size:11px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:80px; }

.kat-rad { background:#f8f9fa; }
.kat-rad td { font-size:9.5px; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:#73787b; padding:7px 14px; border-top:2px solid #e5e7eb; border-bottom:1px solid #e5e7eb; position:sticky; left:0; }

.enhet-rad:hover td.col-enhet { background:#fafafa; }

.uke-nav { display:flex; align-items:center; gap:8px; margin-bottom:20px; }
.uke-btn { width:34px; height:34px; border:1px solid #e5e7eb; border-radius:10px; background:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center; color:#43474a; font-size:16px; transition:background 0.1s; flex-shrink:0; }
.uke-btn:hover { background:#f3f4f6; }
.uke-btn:disabled { opacity:0.5; cursor:not-allowed; }
.uke-tekst { font-size:14px; font-weight:500; color:#191c1d; white-space:nowrap; }

.kat-tabs { display:flex; gap:6px; overflow-x:auto; padding-bottom:2px; scrollbar-width:none; margin-bottom:20px; }
.kat-tabs::-webkit-scrollbar { display:none; }
.kat-tab { flex-shrink:0; padding:6px 14px; border-radius:100px; font-size:12px; font-weight:500; border:1px solid #e5e7eb; background:#fff; color:#73787b; cursor:pointer; transition:all 0.15s; white-space:nowrap; }
.kat-tab:hover { border-color:#695d49; }
.kat-tab.aktiv { background:#191c1d; color:#fff; border-color:#191c1d; }

#rack-thead { position:sticky; top:0; z-index:4; background:#fff; }
#rack-thead th.col-enhet { z-index:5; }

/* Responsive: mobil */
@media (max-width:639px) {
  .gantt-wrap { display:none; }
}

/* ── Hero-overlay/tekst (delt av alle offentlige sider med bilde-hero:
   booking.html/rom.html/camping.html/aktiviteter.html/bord.html) ──
   .hero: legges til på selve hero-<section>-en, ved siden av de
   eksisterende relative/overflow-hidden-klassene — gir en flat, jevn
   mørk overlay via ::after (generert innhold, ingen ekstra <div>),
   som erstatter den tidligere per-side linear-gradient-diven.
   .hero-tekst: legges til på tekst-wrapperen inni hero-en, i tillegg
   til (ikke i stedet for) den eksisterende absolute/inset-0/z-10 — den
   diven MÅ være absolutt posisjonert for riktig vertikal sentrering
   uten en prosent-basert h-full (se h-full-regresjonen dokumentert i
   supabase/tests/sticky-header-footer-nav-tester.js), så kun farge og
   tekstskygge er tatt med her, ikke position/z-index. */
.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.28);
  pointer-events: none;
}
.hero-tekst {
  color: #fff;
  text-shadow:
    0 1px 3px rgba(0, 0, 0, 0.75),
    0 4px 14px rgba(0, 0, 0, 0.35);
}

/* ── Kort-hover — sitewide standard for alle kort-grid (restaurant-kort/
   aktivitet-kort/plass-kort/overnatting-kortene) ─────────────────────────
   Utviklet og testet først isolert på overnatting.html sine kort (egen
   klasse der, .overnatting-kort-premium), deretter godkjent som ny
   standard og flyttet hit + rullet ut på de tre andre kort-gridene.
   Erstatter den tidligere, forskjellige oppførselen hver side hadde for
   seg (Tailwind sin shadow-soft-klasse i alltid-på hvile + et raskt/hardt
   hopp til en mørkere skygge på 0.2s ease ved hover): subtil skygge i
   hvile i stedet for shadow-soft sin lyse 20px/40px-skygge, mye
   mykere/større dobbel-lags skygge + 6px løft (mot 4px før) + valgfri
   bilde-zoom (.kort-premium-bilde, samme scale-mønster som booking.html
   sine featured-bilder) ved hover, på en roligere
   cubic-bezier(0.16,1,0.3,1)-kurve (500-600ms) i stedet for ease 0.2s.
   cursor:pointer lagt til her (var tidligere satt lokalt kun på
   .restaurant-kort/.aktivitet-kort — camping.html sin .plass-kort manglet
   den helt, se supabase/tests for evt. dekning). border-color:transparent
   ved hover er et bevisst no-op for de kortene som ikke har noen border i
   utgangspunktet (kun overnatting.html sine kort har det). */
.kort-premium {
  cursor: pointer;
  box-shadow: 0 1px 2px rgba(25,28,29,0.04), 0 1px 3px rgba(25,28,29,0.06);
  transition: transform 0.5s cubic-bezier(0.16,1,0.3,1),
              box-shadow 0.5s cubic-bezier(0.16,1,0.3,1),
              border-color 0.5s cubic-bezier(0.16,1,0.3,1);
}
.kort-premium:hover {
  transform: translateY(-6px);
  box-shadow: 0 8px 16px rgba(25,28,29,0.06), 0 32px 64px rgba(25,28,29,0.12);
  border-color: transparent;
}
.kort-premium-bilde { transition: transform 0.6s cubic-bezier(0.16,1,0.3,1); }
.kort-premium:hover .kort-premium-bilde { transform: scale(1.06); }

/* ── Tenantstyrt tekst (kunde_sideinnhold) — unngå fallback-glimt ────────
   Elementer med denne klassen (hero-tittel/-ingress som kan overstyres av
   kunde_sideinnhold) er skjult med visibility:hidden — IKKE display:none —
   fram til siden sitt eget JS har hentet get-tenant-config?side=... og
   avgjort om innholdet er kundens egen tekst eller i18n-standardteksten.
   visibility:hidden beholder elementets plass i layouten (ingen
   layout-hopp for naboelementer), i motsetning til display:none. Siden
   fjerner klassen (se avsloerTenantTekst()-mønsteret i hver sides eget
   script) uansett utfall — også ved feilet nettverkskall — slik at
   teksten ALDRI blir usynlig for godt. Delt av alle sider som bruker
   denne modellen (i dag: camping.html/booking.html, senere rom.html for
   hotellrom/øvrige overnattingstyper). */
.tenant-tekst-lastes { visibility: hidden; }
