/* -----------------------------------------------------------------------------
 * cleanamsterdam.nl — legacy.css
 *
 * The retiring renderer's stylesheet. Linked only by pages still rendered from
 * the mk* functions in sitegen/template.nix; it dies with the last of them.
 *
 * It lives in its own file because the two designs share a vocabulary and mean
 * different things by it. `.hero`, `.nav`, `.card` and `.lede` exist in both.
 * Scoping the new rules under `.shell` raises their specificity but does not
 * help for a property the new rule never mentions: `.hero h1` here also sets
 * `text-transform: uppercase`, and with both stylesheets loaded the office
 * page's headline came out shouting in a typeface it had never asked for.
 * Cascade is resolved per property, so the only reliable separation is not
 * loading both.
 *
 * Colour/shadow tokens (:root { --teal: … }) are generated from shared.colors
 * and stay inline in each page's <head>, so a rule here using var(--…) depends
 * on that inline block. Nothing checks that the two agree in either direction:
 * a var(--…) with no token renders as nothing, and a token no rule reads ships
 * in every legacy page's <head>. Both have happened.
 *
 * The `.k-*` / `body.niche-kantoor` block that prototyped the office design
 * lived here until 2026-08-02 — around 350 lines, still being downloaded on
 * every page that links this file months after mkKantoor was deleted and
 * nothing rendered those classes any more. Deleting a renderer does not delete
 * its stylesheet; that has to be done by hand, which is the argument for the
 * build-time checks that guard site.css.
 * ---------------------------------------------------------------------------*/

/* ============================================================================
 * base — layout primitives, sticky header, footer, buttons
 * ==========================================================================*/

* { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  color: var(--ink); line-height: 1.55; background: #fff;
}
img, svg { display: block; max-width: 100%; }
a { color: var(--teal); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3 { letter-spacing: -0.01em; }
.container { max-width: 1100px; margin: 0 auto; padding: 0 24px; }

header.site {
  position: sticky; top: 0; z-index: 50;
  background: rgba(255,255,255,0.85);
  backdrop-filter: saturate(180%) blur(12px);
  -webkit-backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--line);
}
.nav { display: flex; align-items: center; justify-content: space-between; padding: 14px 24px; gap: 12px; }
.logo {
  display: inline-flex; align-items: center; gap: 10px;
  font-weight: 800; letter-spacing: 1.5px; text-transform: uppercase;
  color: var(--teal); font-size: 0.95rem;
}
.logo .suffix { color: var(--ink); font-weight: 500; }
/* .logo .mark held the spray bottle; see the note in template.nix. */

.nav-right { display: inline-flex; align-items: center; gap: 14px; }

.lang-switcher { display: inline-flex; align-items: center; gap: 4px; font-size: 0.8rem; }
.lang-link { color: var(--muted); padding: 4px 6px; border-radius: 6px; text-decoration: none; font-weight: 600; letter-spacing: 0.5px; }
.lang-link:hover { background: var(--bg-soft); color: var(--teal); text-decoration: none; }
.lang-current { background: var(--teal); color: #fff; }
.lang-current:hover { background: var(--teal); color: #fff; }
.lang-sep { color: rgba(10,31,43,0.15); }

.cta-mini {
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--wa); color: #fff;
  padding: 9px 14px; border-radius: 999px;
  font-size: 0.85rem; font-weight: 600;
}
.cta-mini:hover { text-decoration: none; transform: translateY(-1px); }
.cta-mini svg { width: 14px; height: 14px; }

footer.site {
  padding: 32px 0; text-align: center;
  font-size: 0.88rem; color: var(--muted);
  border-top: 1px solid var(--line);
}
footer.site a { color: var(--teal); text-decoration: none; }
footer.site a:hover { text-decoration: underline; }
footer.site .legal { margin-top: 4px; font-size: 0.78rem; opacity: 0.75; }

button.linklike {
  background: none; border: none; padding: 0;
  color: var(--teal); cursor: pointer;
  font: inherit; text-decoration: none;
}
button.linklike:hover { text-decoration: underline; }


/* ============================================================================
 * hero
 * ==========================================================================*/

.hero {
  position: relative; overflow: hidden;
  background:
    radial-gradient(ellipse 60% 60% at 85% 0%,  rgba(59,232,198,0.35) 0%, transparent 60%),
    radial-gradient(ellipse 70% 60% at 10% 100%, rgba(26,138,138,0.10) 0%, transparent 60%),
    linear-gradient(180deg, var(--bg-soft) 0%, #fff 100%);
  padding: 96px 0 104px;
  text-align: center;
}
.hero-bubbles { position: absolute; inset: 0; pointer-events: none; }
.hero-bubbles circle { fill: var(--teal); opacity: 0.045; }
.hero h1 {
  margin: 0; font-size: clamp(2.6rem, 7vw, 4.4rem);
  font-weight: 800; line-height: 1.02;
  color: var(--teal);
  text-transform: uppercase; letter-spacing: 1.5px;
}
.hero h1 .suffix { color: var(--ink); font-weight: 500; }
.hero .tagline { margin: 18px 0 0; font-size: clamp(1.1rem, 2.5vw, 1.4rem); color: var(--ink); font-weight: 600; letter-spacing: 0.2px; }
.hero .lede { margin: 14px auto 0; max-width: 640px; font-size: clamp(1rem, 2vw, 1.1rem); color: var(--muted); }
.hero-region { display: inline-flex; align-items: center; gap: 6px; margin-top: 22px; font-size: 0.9rem; color: var(--muted); }
.hero-region svg { width: 14px; height: 14px; color: var(--teal); }



/* An accent rule for body-copy links lived here, scoped to `article a`,
 * `.airbnb-included a` and `.hero-image + section a`. All three of those
 * selectors left with the prose and niche renderers, so the rule matched
 * nothing and is gone rather than rewritten — widening it to `a` would have
 * turned every link on the homepage orange, which is not what it was for. */


/* ============================================================================
 * price card (tiered) + supplies note
 * ==========================================================================*/

/* price-pill — moved to sitegen/components/price-pill.nix (colocated) */
.service-link {
  text-decoration: none; color: inherit;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.service-link:hover { transform: translateY(-1px); box-shadow: 0 6px 20px rgba(10, 31, 43, 0.08); }
.service-link strong { color: var(--teal); }
.service-link::after {
  content: "→"; margin-left: auto; color: var(--teal);
  align-self: center; font-size: 1.1rem; opacity: 0.55;
  transition: opacity 0.15s ease, transform 0.15s ease;
}
.service-link:hover::after { opacity: 1; transform: translateX(2px); }


/* ============================================================================
 * CTAs (hero + banner buttons)
 * ==========================================================================*/

.cta-row { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
.cta {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 16px 26px; border-radius: 999px;
  font-size: 1.05rem; font-weight: 700;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.cta:hover { text-decoration: none; transform: translateY(-2px); }
.cta svg { width: 20px; height: 20px; }
.cta-wa   { background: var(--wa); color: #fff; box-shadow: var(--shadow-hero); }
.cta-wa:hover { box-shadow: 0 20px 64px rgba(10,31,43,0.22); }
.cta-call { background: #fff; color: var(--teal); border: 1px solid var(--line); box-shadow: var(--shadow-card); }


/* ============================================================================
 * sections — shared rhythm
 * ==========================================================================*/

section { padding: 88px 0; }
section h2 { text-align: center; margin: 0 0 10px; font-size: clamp(1.7rem, 3.5vw, 2.2rem); }
section .subtitle { text-align: center; margin: 0 auto 56px; color: var(--muted); max-width: 580px; }


/* ============================================================================
 * promises (grid-4) + generic .card
 * ==========================================================================*/

.grid-4 { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.card {
  background: #fff; padding: 22px 24px; border-radius: 18px;
  box-shadow: var(--shadow-card); border: 1px solid var(--line);
  display: grid; grid-template-columns: auto 1fr; column-gap: 14px; row-gap: 10px;
}
.card .icon {
  width: 40px; height: 40px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--mint-soft); border-radius: 10px; color: var(--teal);
  grid-column: 1; grid-row: 1;
}
.card .icon svg { width: 20px; height: 20px; }
.card h3 {
  margin: 0; font-size: 1.05rem; color: var(--ink);
  grid-column: 2; grid-row: 1; align-self: center;
}
.card p  {
  margin: 0; color: var(--muted); font-size: 0.93rem; line-height: 1.5;
  grid-column: 1 / -1;
}


/* ============================================================================
 * services list
 * ==========================================================================*/

section.services { background: var(--bg-soft); }
.service-grid { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); max-width: 900px; margin: 0 auto; }
.service { display: flex; gap: 14px; align-items: flex-start; background: #fff; padding: 18px 20px; border-radius: 14px; box-shadow: var(--shadow-card); border: 1px solid var(--line); }
.service .check { flex: 0 0 30px; width: 30px; height: 30px; background: var(--mint); border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; color: var(--teal); }
.service .check svg { width: 16px; height: 16px; }
.service strong { display: block; font-size: 1rem; color: var(--ink); margin-bottom: 2px; }
.service span  { font-size: 0.92rem; color: var(--muted); }


/* ============================================================================
 * regular + deep overview cards
 * ==========================================================================*/

.overview-grid { display: grid; gap: 24px; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); max-width: 900px; margin: 0 auto; }
.overview-card { background: #fff; padding: 32px; border-radius: 18px; box-shadow: var(--shadow-card); border: 1px solid var(--line); }
.overview-card .overview-icon { width: 48px; height: 48px; display: inline-flex; align-items: center; justify-content: center; background: var(--mint-soft); border-radius: 12px; color: var(--teal); margin-bottom: 18px; }
.overview-card .overview-icon svg { width: 26px; height: 26px; }
.overview-card h3 { margin: 0 0 12px; font-size: 1.25rem; color: var(--ink); }
.overview-card p { margin: 0; color: var(--muted); font-size: 0.95rem; }
.overview-card-deep { background: linear-gradient(160deg, #ffffff 0%, var(--bg-soft) 100%); }
.overview-card-deep .overview-icon { background: var(--teal); color: #fff; }
.overview-includes-label { margin: 18px 0 8px !important; font-size: 0.82rem; font-weight: 600; letter-spacing: 0.5px; text-transform: uppercase; color: var(--teal); }
.overview-includes { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.overview-includes li { background: #fff; color: var(--ink); padding: 5px 10px; border-radius: 999px; font-size: 0.82rem; border: 1px solid var(--line); }


/* audiences — moved to sitegen/sections/audiences.nix (colocated pattern) */


/* bespoke, about, cta-banner — moved to sitegen/sections/{bespoke,about,cta-banner}.nix (colocated) */



/* ============================================================================
 * 404 page
 * ==========================================================================*/

.err {
  min-height: 60vh;
  display: flex; align-items: center; justify-content: center;
  padding: 64px 24px; text-align: center;
}
.err-inner { max-width: 520px; }
.err-code {
  font-size: clamp(4rem, 12vw, 7rem);
  font-weight: 800; color: var(--teal); line-height: 1;
  margin: 0 0 12px; letter-spacing: -2px;
}
.err h1 { margin: 0 0 12px; font-size: 1.4rem; color: var(--ink); }
.err p  { margin: 0 0 24px; color: var(--muted); }
.err .cta {
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--teal); color: #fff;
  padding: 12px 22px; border-radius: 999px;
  font-weight: 600; text-decoration: none;
}
.err .cta:hover { text-decoration: none; }


/* ============================================================================
 * mobile — one tightening block for narrow viewports (≤ 640px)
 *
 * Ordered by page-flow: nav → hero → sections → cards → price → misc.
 * ==========================================================================*/

@media (max-width: 640px) {
  /* Nav row was overflowing with logo + langs + CTA on narrow viewports.
     Hero CTA is right below, so the top-nav CTA is redundant on mobile. */
  .cta-mini { display: none; }
  .nav { padding: 12px 24px; }

  .hero { padding: 64px 0 80px; }

  section { padding: 48px 0; }
  section h2 { font-size: 1.5rem; }
  section .subtitle { margin: 0 auto 32px; }

  /* Price card stacks vertically on mobile; the separator becomes a horizontal rule. */

  /* Promises cards */
  .grid-4 { gap: 12px; }
  .card { padding: 20px; }
  .card .icon { width: 40px; height: 40px; margin-bottom: 12px; border-radius: 10px; }
  .card .icon svg { width: 20px; height: 20px; }
  .card h3 { font-size: 1rem; margin-bottom: 4px; }
  .card p { font-size: 0.9rem; }

  /* Service tiles */
  .service-grid { gap: 10px; }
  .service { padding: 14px 16px; gap: 12px; border-radius: 12px; }
  .service .check { flex-basis: 26px; width: 26px; height: 26px; }
  .service .check svg { width: 14px; height: 14px; }
  .service strong { font-size: 0.95rem; }
  .service span { font-size: 0.88rem; }

  /* Regular + deep overview cards */
  .overview-grid { gap: 14px; }
  .overview-card { padding: 20px; border-radius: 14px; }
  .overview-card .overview-icon { width: 40px; height: 40px; margin-bottom: 12px; border-radius: 10px; }
  .overview-card .overview-icon svg { width: 22px; height: 22px; }
  .overview-card h3 { font-size: 1.1rem; margin-bottom: 6px; }
  .overview-card p { font-size: 0.9rem; }
  .overview-includes-label { margin-top: 12px !important; }
  .overview-includes li { font-size: 0.78rem; padding: 4px 8px; }

  /* Audience mobile styles moved to sitegen/sections/audiences.nix */

  /* Bespoke callout stacks vertically */

  /* About avatar */

  /* CTA banner rhythm */
  section.cta-banner p { margin-bottom: 20px; }

  /* Airbnb checklist + cards */
}
.about { padding: 56px 0; text-align: center; }
.about__avatar {
  width: 104px; height: 104px; border-radius: 999px;
  background: linear-gradient(160deg, var(--teal-light), var(--teal));
  color: #fff; font-size: 2.1rem; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center;
  margin-bottom: 22px; box-shadow: var(--shadow-card);
}
.about__heading { margin: 0 0 8px; font-size: 1.35rem; color: var(--ink); }
.about__body { margin: 0 auto; color: var(--muted); font-size: 0.98rem; max-width: 640px; }
@media (max-width: 640px) {
  .about__avatar { width: 80px; height: 80px; font-size: 1.6rem; margin-bottom: 14px; }
}
.audiences { padding: 56px 0; }
.audiences__heading {
  text-align: center; margin: 0 0 6px;
  font-size: clamp(1.5rem, 3.2vw, 1.95rem); color: var(--ink);
}
.audiences__subtitle {
  text-align: center; margin: 0 0 32px; color: var(--muted); font-size: 0.98rem;
}
.audiences__grid {
  display: grid; gap: 20px;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  max-width: 900px; margin: 0 auto;
}
.audiences__card {
  background: #fff; padding: 26px; border-radius: 16px;
  box-shadow: var(--shadow-card); border: 1px solid var(--line);
  display: grid; grid-template-columns: auto 1fr; gap: 0 14px; align-items: center;
}
.audiences__card-icon {
  grid-column: 1; grid-row: 1;
  width: 40px; height: 40px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--mint-soft); border-radius: 10px; color: var(--teal);
}
.audiences__card-icon svg { width: 22px; height: 22px; }
.audiences__card-title {
  grid-column: 2; grid-row: 1;
  margin: 0; font-size: 1.15rem; color: var(--ink);
}
.audiences__tags {
  grid-column: 1 / -1;
  margin: 16px 0 0; padding: 0;
  list-style: none;
  display: flex; flex-wrap: wrap; gap: 6px;
}
.audiences__tag {
  background: var(--bg-soft); color: var(--ink);
  padding: 4px 10px; border-radius: 999px;
  font-size: 0.82rem; border: 1px solid var(--line);
  white-space: nowrap;
}
@media (max-width: 640px) {
  .audiences__card { padding: 22px; border-radius: 14px; }
  .audiences__card-title { font-size: 1.1rem; margin-bottom: 8px; }
}
.bespoke { padding: 40px 0; }
.bespoke__box {
  max-width: 820px; margin: 0 auto; background: #fff;
  padding: 36px 40px; border-radius: 18px;
  box-shadow: var(--shadow-card); border: 1px solid var(--line);
  display: flex; gap: 28px; align-items: center;
}
.bespoke__icon {
  flex: 0 0 56px; width: 56px; height: 56px;
  background: var(--teal); color: #fff; border-radius: 14px;
  display: inline-flex; align-items: center; justify-content: center;
}
.bespoke__icon svg { width: 28px; height: 28px; }
.bespoke__title { margin: 0 0 6px; font-size: 1.2rem; }
.bespoke__body { margin: 0; color: var(--muted); font-size: 0.95rem; }
@media (max-width: 640px) {
  .bespoke__box { padding: 24px 20px; gap: 16px; flex-direction: column; text-align: center; }
}
.cta-banner {
  padding: 56px 0; text-align: center;
  background: linear-gradient(160deg, var(--teal-light) 0%, var(--teal) 100%);
  color: #fff; position: relative; overflow: hidden;
}
.cta-banner__heading { margin: 0 0 14px; }
.cta-banner__body { margin: 0 auto 28px; opacity: 0.9; }
.cta-banner .cta-wa { background: #fff; color: var(--teal); }
.cta-banner .cta-wa:hover { box-shadow: 0 20px 64px rgba(0,0,0,0.22); }
.price-pill-card {
  display: inline-flex; flex-direction: column;
  margin: 32px 0 24px;
  background: #fff; border: 1px solid var(--line);
  border-radius: 18px; box-shadow: var(--shadow-card);
  overflow: hidden;
}
.price-pill-row {
  display: flex; align-items: stretch;
}
.price-pill {
  display: flex; flex-direction: column; align-items: flex-start;
  padding: 14px 22px; gap: 4px;
}
.price-pill__amt      { color: var(--teal); font-size: 1.5rem; font-weight: 700; line-height: 1; }
.price-pill__lbl      { color: var(--muted); font-size: 0.85rem; font-weight: 500; }
.price-pill__secondary {
  border-left: 1px solid var(--line);
  background: linear-gradient(180deg, #ffffff 0%, var(--bg-soft) 100%);
}
.price-pill__secondary .price-pill__amt { color: var(--teal-light); }
.price-pill__notes {
  padding: 8px 16px; color: var(--muted); font-size: 0.82rem;
  background: var(--bg-soft); border-top: 1px solid var(--line);
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: center;
}
.price-pill__supplies { display: inline-flex; align-items: center; gap: 6px; }
.price-pill__supplies::before { content: "✓"; color: var(--teal); font-weight: 700; }
.price-pill__sep      { opacity: 0.4; }
.price-pill__vat      { font-variant-numeric: tabular-nums; }
