/* DRY7 tiny design system — tokens + base + components (FAZ 01.12).
   Logical properties throughout for RTL. Budget: ≤ 20 KB gzip. */

:root {
  --c-bg: #f7f8fa;
  --c-surface: #ffffff;
  --c-text: #111827;
  --c-muted: #4b5563;
  --c-border: #d1d5db;
  --c-primary: #0b5cab;
  --c-primary-text: #ffffff;
  --c-primary-hover: #094a8a;
  --c-focus: #f59e0b;
  --c-danger: #b42318;
  --c-info-bg: #e8f1fb;
  --c-success-bg: #e7f6ec;
  --c-success: #166534;
  --c-warning-bg: #fff4dc;
  --c-warning: #8a4b00;
  --c-danger-bg: #fdecea;

  --font: system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", Arial, sans-serif;
  --fs-sm: 0.875rem;
  --fs-base: 1rem;
  --fs-lg: 1.125rem;
  --fs-xl: clamp(1.5rem, 1.2rem + 1.5vw, 2.25rem);
  --lh: 1.5;

  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;

  --radius: 0.75rem;
  --radius-sm: 0.5rem;
  --shadow: 0 1px 2px rgb(0 0 0 / 0.06), 0 1px 3px rgb(0 0 0 / 0.08);
  --tap: 2.75rem; /* 44px touch target */
  --container: 72rem;
  --gutter: 1rem;
  --bottom-nav-h: 4rem;

  color-scheme: light dark;
}

@media (prefers-color-scheme: dark) {
  :root {
    --c-bg: #0f172a;
    --c-surface: #111c33;
    --c-text: #e5e7eb;
    --c-muted: #a3adbd;
    --c-border: #334155;
    --c-primary: #60a5fa;
    --c-primary-text: #0b1220;
    --c-primary-hover: #93c5fd;
    --c-danger: #f87171;
    --c-info-bg: #13294b;
    --c-success-bg: #10301f;
    --c-success: #86efac;
    --c-warning-bg: #3a2a0a;
    --c-warning: #fcd34d;
    --c-danger-bg: #3b1515;
    --shadow: none;
  }
}

/* ---------- base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
  margin: 0;
  min-block-size: 100vh;
  font-family: var(--font);
  font-size: var(--fs-base);
  line-height: var(--lh);
  color: var(--c-text);
  background: var(--c-bg);
  display: flex;
  flex-direction: column;
}
body.has-bottom-nav { padding-block-end: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom, 0px)); }
main { flex: 1; padding-block: var(--space-5); outline: none; }
h1, h2, h3 { line-height: 1.2; margin-block: 0 var(--space-3); }
p { margin-block: 0 var(--space-3); }
a { color: var(--c-primary); text-underline-offset: 0.15em; }
img, svg { max-inline-size: 100%; block-size: auto; }
code, pre { font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: var(--fs-sm); }
:focus-visible { outline: 3px solid var(--c-focus); outline-offset: 2px; }

.container { inline-size: 100%; max-inline-size: var(--container); margin-inline: auto; padding-inline: var(--gutter); }
.visually-hidden {
  position: absolute !important; inline-size: 1px; block-size: 1px; overflow: hidden;
  clip-path: inset(50%); white-space: nowrap;
}
.skip-link { position: absolute; inset-inline-start: var(--space-2); inset-block-start: -10rem; z-index: 100;
  background: var(--c-surface); padding: var(--space-2) var(--space-3); border-radius: var(--radius-sm); }
.skip-link:focus { inset-block-start: var(--space-2); }
.muted { color: var(--c-muted); font-size: var(--fs-sm); }
.stack > * + * { margin-block-start: var(--space-4); }
.cluster { display: flex; flex-wrap: wrap; gap: var(--space-2); }

/* ---------- header / footer ---------- */
.site-header { background: var(--c-surface); border-block-end: 1px solid var(--c-border); }
.site-header__inner { display: flex; align-items: center; justify-content: space-between; min-block-size: 3.5rem; gap: var(--space-3); }
.brand { font-weight: 800; font-size: var(--fs-lg); letter-spacing: 0.04em; color: var(--c-text); text-decoration: none;
  min-block-size: var(--tap); display: inline-flex; align-items: center; }
.lang-switch { display: flex; gap: var(--space-1); }
.lang-switch a { min-inline-size: var(--tap); min-block-size: var(--tap); display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--radius-sm); text-decoration: none; font-weight: 600; font-size: var(--fs-sm); color: var(--c-muted); }
.lang-switch a[aria-current="true"] { color: var(--c-text); background: var(--c-bg); }
.site-footer { border-block-start: 1px solid var(--c-border); padding-block: var(--space-4); color: var(--c-muted); font-size: var(--fs-sm); }

/* ---------- hero (full container width by design rule: no max-width) ---------- */
.hero { padding-block: var(--space-5); }
.hero--compact { padding-block: var(--space-3) var(--space-4); }
.hero__title { font-size: var(--fs-xl); font-weight: 800; }
.hero__lead { font-size: var(--fs-lg); color: var(--c-muted); }
.eyebrow { font-weight: 700; color: var(--c-primary); margin-block-end: var(--space-1); }

/* ---------- buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  min-block-size: var(--tap); padding: var(--space-2) var(--space-4);
  font: inherit; font-weight: 600; line-height: 1.2; text-decoration: none; cursor: pointer;
  color: var(--c-text); background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius-sm);
}
.btn:hover { border-color: var(--c-muted); }
.btn--primary { color: var(--c-primary-text); background: var(--c-primary); border-color: var(--c-primary); }
.btn--primary:hover { background: var(--c-primary-hover); border-color: var(--c-primary-hover); }
.btn--danger { color: #fff; background: var(--c-danger); border-color: var(--c-danger); }
.btn--lg { min-block-size: 3.25rem; padding-inline: var(--space-5); font-size: var(--fs-lg); }
.btn:disabled, .btn[aria-disabled="true"] { opacity: 0.55; cursor: not-allowed; }

/* ---------- card / empty / alert ---------- */
.card, .empty-state {
  background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius);
  padding: var(--space-4); box-shadow: var(--shadow);
}
.card + .card { margin-block-start: var(--space-3); }
.card__title { font-size: var(--fs-lg); }
.empty-state { text-align: center; padding-block: var(--space-6); }
.empty-state__title { font-size: var(--fs-lg); }
.empty-state p:last-child, .card p:last-child { margin-block-end: 0; }

.alert { display: flex; gap: var(--space-3); padding: var(--space-3) var(--space-4); border-radius: var(--radius-sm);
  background: var(--c-info-bg); border-inline-start: 4px solid var(--c-primary); }
.alert p { margin: 0; }
.alert__title { font-weight: 700; }
.alert--success { background: var(--c-success-bg); border-color: var(--c-success); }
.alert--warning { background: var(--c-warning-bg); border-color: var(--c-warning); }
.alert--danger { background: var(--c-danger-bg); border-color: var(--c-danger); }
.alert__icon { flex: none; }

/* ---------- form fields ---------- */
.field { display: grid; gap: var(--space-1); }
.field__label { font-weight: 600; }
.field__hint { margin: 0; color: var(--c-muted); font-size: var(--fs-sm); }
.field__input {
  inline-size: 100%; min-block-size: var(--tap); padding: var(--space-2) var(--space-3);
  font: inherit; color: var(--c-text); background: var(--c-surface);
  border: 1px solid var(--c-border); border-radius: var(--radius-sm);
}
.field--invalid .field__input { border-color: var(--c-danger); }
.field__error { margin: 0; color: var(--c-danger); font-size: var(--fs-sm); font-weight: 600; }

[hidden] { display: none !important; }
.card + .empty-state, .card + .card, .hero + .card { margin-block-start: var(--space-3); }

/* ---------- places ---------- */
.place-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-2); }
.place-item {
  display: flex; flex-direction: column; gap: 2px; min-block-size: var(--tap);
  padding: var(--space-3) var(--space-4); text-decoration: none; color: var(--c-text);
  background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius-sm);
}
.place-item:hover { border-color: var(--c-primary); }
.place-item__name { font-weight: 700; }
.place-item__meta { color: var(--c-muted); font-size: var(--fs-sm); }
.place-name { font-size: var(--fs-lg); font-weight: 700; }
.place-item--row { flex-direction: row; align-items: center; justify-content: space-between; gap: var(--space-3); }
.place-item--row > span { display: flex; flex-direction: column; gap: 2px; min-inline-size: 0; overflow-wrap: anywhere; }
.check { display: flex; align-items: center; gap: var(--space-2); min-block-size: var(--tap); }
.check input { inline-size: 1.25rem; block-size: 1.25rem; }
form.inline { display: inline; }
.recovery-codes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); list-style: none; padding: 0; }
.recovery-codes code, .secret { font-size: var(--fs-lg); letter-spacing: 0.05em; overflow-wrap: anywhere; }
.audit-list { list-style: none; padding: 0; margin: 0; font-size: var(--fs-sm); display: grid; gap: var(--space-1); }
select.field__input { appearance: auto; }
.card + .card, section.card + section.card { margin-block-start: var(--space-4); }
.geo-status:empty { display: none; }
.location-tools { margin-block: var(--space-4); }
.attribution { margin-block-start: var(--space-5); }

/* ---------- storefront & profile ---------- */
.storefront__cover { display: block; inline-size: 100%; block-size: auto; aspect-ratio: 8 / 3; object-fit: cover; border-radius: var(--radius); margin-block-end: var(--space-4); }
.storefront__head { display: flex; gap: var(--space-4); align-items: flex-start; margin-block-end: var(--space-3); }
.storefront__logo { inline-size: 4.5rem; block-size: 4.5rem; border-radius: var(--radius-sm); object-fit: cover; flex: none; background: var(--c-surface); }
.storefront__meta { color: var(--c-muted); }
.storefront__actions { margin-block: var(--space-4); }
.storefront__links { margin-block-start: var(--space-5); }
.badge { display: inline-block; padding: 2px var(--space-2); border-radius: 999px; font-size: var(--fs-sm); font-weight: 700; }
.badge--verified { background: var(--c-success-bg); color: var(--c-success); }
.status { font-weight: 700; margin: 0; }
.status--open { color: var(--c-success); }
.status--closed { color: var(--c-danger); }
.muted-inline { font-weight: 400; opacity: 0.85; }
.prewrap { white-space: pre-line; overflow-wrap: anywhere; }
.hours-table { border-collapse: collapse; inline-size: 100%; }
.hours-table th, .hours-table td { text-align: start; padding: var(--space-1) var(--space-2); border-block-end: 1px solid var(--c-border); }
.hours-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); border: 0; padding: 0; margin: 0 0 var(--space-2); }
.hours-row legend { font-weight: 600; inline-size: 100%; }
.hours-row .field__input { inline-size: auto; }
.gallery { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr)); gap: var(--space-2); }
.gallery li { min-inline-size: 0; }
.gallery a { display: block; }
.gallery img, .media-thumb { inline-size: 100%; block-size: auto; aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--radius-sm); }
.media-thumb { max-inline-size: 15rem; }
.tag-list { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: var(--space-2); }
.tag-list li { padding: 2px var(--space-2); border: 1px solid var(--c-border); border-radius: 999px; font-size: var(--fs-sm); }
.checklist { list-style: none; padding: 0; display: grid; gap: var(--space-1); }
.checklist .is-done { color: var(--c-success); }
.checklist .is-todo { color: var(--c-muted); }
.subnav { margin-block-end: var(--space-4); }
.subnav a[aria-current="page"] { border-color: var(--c-primary); color: var(--c-primary); }
.facts { display: grid; grid-template-columns: minmax(0, 10rem) minmax(0, 1fr); gap: var(--space-1) var(--space-3); margin: 0; }
.facts dt { font-weight: 600; } .facts dd { margin: 0; overflow-wrap: anywhere; }
textarea.field__input { min-block-size: 6rem; resize: vertical; }
/* ---------- discovery ---------- */
.search-form__place { margin: 0; font-weight: 600; }
.search-form__place a { margin-inline-start: var(--space-2); font-weight: 400; display: inline-block; min-block-size: var(--tap); padding-block: var(--space-2); }
.filters { display: grid; gap: var(--space-3); grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); }
.filter-checks { border: 0; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); gap: 0 var(--space-3); }
.filter-checks legend { margin-block-end: var(--space-1); }
.results { margin-block-start: var(--space-4); }
.result-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-3); }
.business-card { background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); padding: var(--space-4); }
.business-card__head { display: flex; gap: var(--space-3); align-items: flex-start; }
.business-card__logo { inline-size: 3.5rem; block-size: 3.5rem; border-radius: var(--radius-sm); object-fit: cover; flex: none; }
.business-card__name { font-size: var(--fs-lg); margin: 0; overflow-wrap: anywhere; }
.business-card__name a { color: var(--c-text); text-decoration: none; display: inline-block; min-block-size: var(--tap); padding-block: var(--space-1); }
.business-card__name a:hover { text-decoration: underline; }
.business-card__meta, .business-card__address { margin: 0; color: var(--c-muted); font-size: var(--fs-sm); overflow-wrap: anywhere; }
.business-card__actions { margin: var(--space-3) 0 0; }
.status--inline { font-weight: 700; }
.results__more, .results__fallback { margin-block: var(--space-4); }
/* ---------- catalogue & prices ---------- */
.price-group { border: 1px solid var(--c-border); border-radius: var(--radius-sm); padding: var(--space-3); margin: 0; display: grid; gap: var(--space-2); }
.price-group legend { font-weight: 700; padding-inline: var(--space-1); overflow-wrap: anywhere; }
.price-row { display: grid; gap: var(--space-2); grid-template-columns: repeat(auto-fit, minmax(min(100%, 9rem), 1fr)); align-items: end; border: 0; padding: 0; margin: 0; }
.price-row__name { font-weight: 600; align-self: center; overflow-wrap: anywhere; }
.price-table { border-collapse: collapse; inline-size: 100%; }
.price-table th, .price-table td { text-align: start; padding: var(--space-2); border-block-end: 1px solid var(--c-border); vertical-align: top; overflow-wrap: anywhere; }
.price-table td:last-child { text-align: end; white-space: nowrap; }
.price-table th[scope="row"] { font-weight: 400; }
.quote-table__total th, .quote-table__total td { font-weight: 800; font-size: var(--fs-lg); border-block-end: 0; }
.table-scroll { overflow-x: auto; }
/* ---------- inquiries ---------- */
.steps { display: flex; flex-wrap: wrap; gap: var(--space-2); list-style: none; padding: 0; margin: 0 0 var(--space-3); counter-reset: step; font-size: var(--fs-sm); }
.steps li { counter-increment: step; color: var(--c-muted); }
.steps li::before { content: counter(step) ". "; }
.steps li[aria-current="step"] { color: var(--c-text); font-weight: 700; }
.messages { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-2); }
.message { padding: var(--space-3); border-radius: var(--radius); background: var(--c-surface); border: 1px solid var(--c-border); overflow-wrap: anywhere; }
.message p { margin: 0; }
.message--mine { background: var(--c-info-bg); margin-inline-start: var(--space-5); }
.message--system { background: transparent; border-style: dashed; text-align: center; font-size: var(--fs-sm); }
.message__meta { color: var(--c-muted); font-size: var(--fs-sm); margin-block-end: var(--space-1) !important; }
.quote--accepted { border-color: var(--c-success); }
.quote--expired, .quote--superseded, .quote--withdrawn, .quote--rejected { opacity: 0.75; }
/* ---------- booking ---------- */
.slot-day { border: 0; padding: 0; margin: 0 0 var(--space-3); }
.slot-day legend { font-weight: 700; margin-block-end: var(--space-2); }
.slot-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(5rem, 1fr)); gap: var(--space-2); }
.slot { display: flex; align-items: center; justify-content: center; gap: var(--space-1); min-block-size: var(--tap); border: 1px solid var(--c-border); border-radius: var(--radius-sm); background: var(--c-surface); cursor: pointer; font-variant-numeric: tabular-nums; }
.slot:has(input:checked) { border-color: var(--c-primary); background: var(--c-info-bg); font-weight: 700; }
.booking-code { font-size: var(--fs-lg); letter-spacing: 0.1em; font-variant-numeric: tabular-nums; }
/* ---------- courier ---------- */
.otp-code { font-size: var(--fs-xl, 1.75rem); font-weight: 800; letter-spacing: 0.2em; font-variant-numeric: tabular-nums; margin: 0; }
.stop-list { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-3); }
.stop { display: grid; gap: var(--space-2); padding: var(--space-3); border: 1px solid var(--c-border); border-radius: var(--radius); background: var(--c-surface); overflow-wrap: anywhere; }
.stop__head { display: flex; flex-wrap: wrap; gap: var(--space-2); justify-content: space-between; font-weight: 700; }
.stop--done { opacity: 0.7; }
.stop details > summary { cursor: pointer; min-block-size: var(--tap); display: flex; align-items: center; }
.queue-note:empty { display: none; }
.qr { inline-size: 15rem; max-inline-size: 100%; block-size: auto; background: #fff; padding: var(--space-2); border-radius: var(--radius-sm); }
.break-all { overflow-wrap: anywhere; }
form.cluster { align-items: end; }
.cluster > .field { flex: 1 1 14rem; min-inline-size: 0; }
input[type="file"].field__input { max-inline-size: 100%; overflow: hidden; }

/* ---------- loading skeleton ---------- */
.skeleton { display: grid; gap: var(--space-2); }
.skeleton span { display: block; block-size: 1rem; border-radius: var(--radius-sm); background: var(--c-border); animation: pulse 1.4s ease-in-out infinite; }
.skeleton span:nth-child(2) { inline-size: 80%; }
.skeleton span:nth-child(3) { inline-size: 60%; }
@keyframes pulse { 50% { opacity: 0.45; } }

.debug { white-space: pre-wrap; overflow-wrap: anywhere; background: var(--c-surface); border: 1px solid var(--c-border);
  border-radius: var(--radius-sm); padding: var(--space-3); }

/* ---------- bottom navigation ---------- */
.bottom-nav {
  position: fixed; inset-inline: 0; inset-block-end: 0; z-index: 50;
  background: var(--c-surface); border-block-start: 1px solid var(--c-border);
  padding-block-end: env(safe-area-inset-bottom, 0px);
}
.bottom-nav ul { display: grid; grid-template-columns: repeat(4, 1fr); margin: 0 auto; padding: 0; list-style: none; max-inline-size: var(--container); }
.bottom-nav a, .bottom-nav .is-disabled {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
  min-block-size: var(--bottom-nav-h); font-size: 0.75rem; font-weight: 600; text-decoration: none; color: var(--c-muted);
}
.bottom-nav a[aria-current="page"] { color: var(--c-primary); }
.bottom-nav .is-disabled { opacity: 0.5; }
.bottom-nav__icon { display: inline-flex; }

@media (min-width: 64rem) {
  :root { --gutter: 1.5rem; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}

.timeline { margin: 0; padding-inline-start: var(--space-4); display: grid; gap: var(--space-1); font-size: var(--fs-sm); }
.garment-code { font-family: ui-monospace, "SFMono-Regular", Consolas, monospace; font-weight: 800; letter-spacing: 0.06em; }
.gallery--small { display: flex; flex-wrap: wrap; gap: var(--space-1); }
.gallery--small img { inline-size: 7.5rem; block-size: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--radius-sm); }
.garment-more summary { cursor: pointer; min-block-size: var(--tap); display: flex; align-items: center; }
.scan-input { font-family: ui-monospace, Consolas, monospace; font-size: var(--fs-lg); letter-spacing: 0.08em; text-transform: uppercase; }
.stage-columns { display: grid; gap: var(--space-3); grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); }
.stage-column h3 { font-size: var(--fs-base, 1rem); margin: 0 0 var(--space-2); }
.plain-list { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-1); font-size: var(--fs-sm); }
.is-late { color: var(--c-danger); font-weight: 700; }

/* Tenant microsite themes (FAZ 21.01): fixed palette, all ≥ 4.5:1 with white text. */
.site--ink { --c-primary: #1f2937; --c-primary-hover: #111827; }
.site--ocean { --c-primary: #0b5cab; --c-primary-hover: #094a8a; }
.site--forest { --c-primary: #166534; --c-primary-hover: #14532d; }
.site--berry { --c-primary: #9d174d; --c-primary-hover: #831843; }
.site--sun { --c-primary: #92400e; --c-primary-hover: #78350f; }
.site-hero { padding-block: var(--space-6); border-block-end: 4px solid var(--c-primary); }
