:root {
  color-scheme: light;
  --ink: #172a2e;
  --ink-soft: #40565b;
  --muted: #5a6e72;
  --paper: #f4f5f1;
  --white: #fff;
  --line: #d5ddd8;
  --accent: #d9f266;
  --accent-ink: #15272b;
  --deep: #14292e;
  --page-width: 1200px;
  --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
}

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

html { scroll-behavior: smooth; scroll-padding-top: 6rem; }

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.6;
  font-kerning: normal;
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
button, input, textarea, select { font: inherit; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { color: var(--ink); }

:focus-visible { outline: 3px solid #315b60; outline-offset: 4px; }

.skip-link {
  position: fixed;
  z-index: 20;
  top: 0.75rem;
  left: 0.75rem;
  padding: 0.75rem 1rem;
  transform: translateY(-160%);
  border-radius: 0.35rem;
  background: var(--white);
  color: var(--ink);
  font-weight: 700;
}
.skip-link:focus { transform: translateY(0); }

.page-shell,
.header-inner { width: min(calc(100% - 3rem), var(--page-width)); margin-inline: auto; }

.site-header {
  position: sticky;
  z-index: 10;
  top: 0;
  border-bottom: 1px solid var(--line);
  background: rgba(244, 245, 241, 0.97);
  backdrop-filter: blur(14px);
}
.header-inner {
  min-height: 76px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(1rem, 2vw, 2rem);
}
.wordmark {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 0.65rem;
  color: var(--ink);
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: -0.035em;
}
.wordmark > span:last-child > span { color: #537276; }
.wordmark-symbol { display: flex; align-items: end; gap: 3px; height: 1.2rem; }
.wordmark-symbol i { display: block; width: 4px; border-radius: 2px; background: #537276; }
.wordmark-symbol i:nth-child(1) { height: 60%; }
.wordmark-symbol i:nth-child(2) { height: 100%; background: #8da33b; }
.wordmark-symbol i:nth-child(3) { height: 78%; }
.desktop-nav { display: flex; align-items: center; gap: clamp(1rem, 2.2vw, 2rem); }
.desktop-nav a,
.mobile-menu nav a { color: var(--ink-soft); font-size: 0.94rem; font-weight: 600; }
.desktop-nav a:hover,
.mobile-menu nav a:hover { color: #1d6064; }
.language-picker { flex: 0 0 auto; }
.language-picker select {
  appearance: none;
  -webkit-appearance: none;
  min-height: 44px;
  padding: 0.4rem 0.7rem;
  border: 1px solid #aebbb5;
  border-radius: 999px;
  background: transparent;
  color: var(--ink);
  font-size: 0.88rem;
  font-weight: 650;
}
.language-picker select::-ms-expand { display: none; }
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

.button {
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem 1.25rem;
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 0.95rem;
  font-weight: 650;
  line-height: 1.25;
  text-align: center;
  transition: background-color 150ms ease, border-color 150ms ease, transform 150ms ease;
}
.button:hover { transform: translateY(-1px); }
.button-dark { background: var(--deep); color: var(--white); }
.button-dark:hover { background: #25444a; }
.button-accent { background: var(--accent); color: var(--accent-ink); }
.button-accent:hover { background: #cbe65b; }

.mobile-menu { display: none; position: relative; }
.mobile-menu summary {
  width: 46px;
  height: 46px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  border: 1px solid var(--line);
  border-radius: 50%;
  cursor: pointer;
  list-style: none;
}
.mobile-menu summary::-webkit-details-marker { display: none; }
.mobile-menu summary span { width: 17px; height: 1.5px; background: var(--ink); }
.mobile-menu nav {
  position: absolute;
  top: calc(100% + 0.7rem);
  right: 0;
  width: min(17rem, calc(100vw - 2rem));
  display: grid;
  gap: 0.15rem;
  padding: 0.8rem;
  border: 1px solid var(--line);
  background: var(--paper);
  box-shadow: 0 1rem 2.5rem rgba(23, 42, 46, 0.12);
}
.mobile-menu nav a { padding: 0.75rem 0.65rem; }

.intro-section { padding: clamp(2rem, 3.5vw, 3rem) 0; }
.intro-copy { max-width: 1040px; }
.intro-copy > .eyebrow { margin-bottom: 1rem; }
.eyebrow {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin: 0 0 1rem;
  color: var(--ink-soft);
  font-size: 0.9rem;
  font-weight: 620;
  line-height: 1.4;
}
.eyebrow::before { content: ""; width: 7px; height: 7px; flex: 0 0 7px; border-radius: 50%; background: #8da33b; }
.eyebrow > span:empty { display: none; }
.eyebrow > span:not(:empty) { width: auto; height: auto; flex: 0 1 auto; border-radius: 0; background: transparent; }
h1 {
  max-width: 900px;
  margin-bottom: 0.75rem;
  font-size: clamp(2.9rem, 6.3vw, 5rem);
  font-weight: 650;
  letter-spacing: -0.035em;
  line-height: 1.04;
}
h1 em { color: #526f73; font-style: normal; }
.intro-lede { max-width: 62ch; margin-bottom: 1.65rem; color: var(--ink-soft); font-size: 1.06rem; line-height: 1.55; }
.intro-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 1.3rem; }
.text-link { display: inline-flex; align-items: center; gap: 0.45rem; color: var(--ink-soft); font-size: 0.95rem; font-weight: 650; }
.text-link:hover { color: #1d6064; }

.entry-choices { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.85rem; margin-top: 1.75rem; }
.entry-choice {
  min-height: 146px;
  display: flex;
  align-items: flex-start;
  padding: 1.3rem 1.35rem;
  border: 1px solid #cbd5d0;
  border-radius: 0.4rem;
  background: var(--white);
  transition: border-color 150ms ease, background-color 150ms ease, transform 150ms ease;
}
.entry-choice:hover { transform: translateY(-2px); border-color: #829691; background: #fbfcfa; }
.entry-choice:first-child { border-color: var(--accent); background: var(--accent); }
.entry-choice:first-child:hover { background: #cfea5d; }
.entry-choice strong, .entry-choice small { display: block; }
.entry-choice strong { max-width: 26ch; font-size: 1.08rem; font-weight: 650; line-height: 1.35; }
.entry-choice small { max-width: 38ch; margin-top: 0.55rem; color: var(--ink-soft); font-size: 0.94rem; line-height: 1.5; }

.review-steps-section { padding: clamp(1.75rem, 3vw, 2.75rem) 0; }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 1.75rem; }
.section-heading > div { flex: 1 1 auto; min-width: 0; }
.section-heading > div > .eyebrow { width: fit-content; max-width: 100%; }
.section-heading h2,
.reviews-inner h2,
.footer-intro h2 { max-width: 660px; margin-bottom: 0; font-size: clamp(1.9rem, 3.6vw, 3rem); font-weight: 650; letter-spacing: -0.03em; line-height: 1.12; }
.section-heading > p { max-width: 42ch; margin: 0 0 0.1rem; color: var(--ink-soft); font-size: 1rem; }
.review-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.85rem; margin: 0; padding: 0; list-style: none; }
.review-steps li { min-height: 0; display: flex; align-items: center; gap: 0.75rem; padding: 0.9rem; border: 1px solid var(--line); border-radius: 0.4rem; background: rgba(255,255,255,0.62); }
.step-number { width: 2.25rem; height: 2.25rem; flex: 0 0 2.25rem; display: grid; place-items: center; border-radius: 50%; background: var(--deep); color: var(--white); font-size: 0.82rem; font-weight: 650; font-variant-numeric: tabular-nums; }
.review-steps li > div { min-width: 0; }
.review-steps h3 { margin: 0.1rem 0 0.35rem; font-size: 1rem; font-weight: 650; letter-spacing: -0.02em; line-height: 1.3; }
.review-steps p { margin: 0; color: var(--ink-soft); font-size: 0.9rem; line-height: 1.45; }

.services-section { padding: clamp(1.75rem, 3vw, 2.75rem) 0; background: #e7ece8; }
.services-heading { align-items: end; margin-bottom: 1rem; }
.services-heading h2 { margin: 0; font-size: clamp(1.65rem, 2.7vw, 2.25rem); }
.services-heading > p { max-width: 48ch; }
.service-offers { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.75rem; }
.service-offer { min-width: 0; padding: 1rem 1.1rem 1.05rem; border: 1px solid #c1cec7; border-radius: 0.4rem; background: rgba(255,255,255,0.78); }
.service-offer h3 { margin: 0 0 0.35rem; font-size: 1.08rem; font-weight: 650; letter-spacing: -0.02em; line-height: 1.3; }
.service-offer p { margin: 0; color: var(--ink-soft); font-size: 0.94rem; line-height: 1.5; }

.directory-section { padding: clamp(1.75rem, 3.5vw, 3rem) 0; background: var(--white); scroll-margin-top: 6rem; }
.directory-carousel { overflow-x: auto; overscroll-behavior-inline: contain; scroll-snap-type: x mandatory; scrollbar-gutter: stable; padding: 0.25rem 0 0.75rem; }
.directory-grid { display: flex; align-items: stretch; gap: 1rem; }
.directory-card { min-width: 0; flex: 0 0 clamp(270px, calc((100% - 2rem) / 3), 380px); overflow: hidden; scroll-snap-align: start; border: 1px solid var(--line); border-radius: 0.4rem; background: var(--white); }
.directory-card-art { aspect-ratio: 2.4; background-color: #dfe6e1; background-position: center 56%; background-size: cover; }
.directory-card-art:focus-visible { outline-offset: -4px; }
.concierge-art { display: grid; place-items: center; background: #10252c; }
.concierge-art img { width: min(84%, 380px); height: 82%; object-fit: contain; }
.boatcharter-art, .vayo-art, .easy-thai-art { display: grid; place-items: center; padding: 1rem; text-align: center; }
.boatcharter-art { background: #eaf4fb; }
.boatcharter-art img { width: auto; max-width: 90%; height: 110px; object-fit: contain; }
.vayo-art { color: #24241f; background: #f4f4f1; }
.vayo-art .directory-brand-mark { display: flex; flex-direction: column; align-items: center; line-height: 1; }
.vayo-art strong { font-size: clamp(2.5rem, 4vw, 3.5rem); font-weight: 550; letter-spacing: 0.07em; }
.vayo-art small { margin-top: 0.55rem; font-size: 0.85rem; letter-spacing: 0.1em; }
.vayo-art img { max-width: 90%; height: 110px; object-fit: contain; }
.easy-thai-art { background: #fff; }
.easy-thai-art img { width: auto; max-width: 90%; height: 110px; object-fit: contain; }
.directory-card-body { padding: 1.25rem clamp(1rem, 2vw, 1.5rem) 1.45rem; }
.directory-card h3 { margin-bottom: 0.55rem; font-size: clamp(1.3rem, 1.7vw, 1.65rem); font-weight: 650; letter-spacing: -0.025em; line-height: 1.2; }
.directory-card p { min-height: 0; margin-bottom: 1.2rem; color: var(--ink-soft); font-size: 0.96rem; line-height: 1.55; }
.directory-card .button { min-height: 46px; font-size: 0.91rem; }
.directory-card-placeholder { background: #f2f4f0; }
.directory-card-placeholder .directory-card-body { padding-top: 1.5rem; }
.work-meta { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: 0.8rem; color: #52696d; font-size: 0.82rem; font-weight: 620; }
.work-status { color: var(--muted); font-size: 0.86rem; font-weight: 620; }
.directory-privacy { margin: 1.2rem 0 0; color: var(--ink-soft); font-size: 0.9rem; }

.request-section { scroll-margin-top: 6rem; padding: clamp(1.75rem, 3.5vw, 3rem) 0; background: #e7ece8; }
.request-layout { display: grid; grid-template-columns: 0.95fr 1.05fr; align-items: start; gap: clamp(2rem, 6vw, 5rem); }
.request-copy h2 { max-width: 550px; margin-bottom: 1rem; font-size: clamp(2rem, 3.7vw, 3.1rem); font-weight: 650; letter-spacing: -0.03em; line-height: 1.12; }
.request-copy > p:not(.eyebrow) { max-width: 58ch; color: var(--ink-soft); font-size: 1rem; }
.request-copy .request-caveat { margin-top: 1rem; color: #52666a; font-size: 0.9rem!important; }
.request-form { display: grid; gap: 0.7rem; padding: clamp(1.25rem, 3vw, 2rem); border: 1px solid #c1cec7; border-radius: 0.4rem; background: rgba(255,255,255,0.82); }
.request-form > label, .website-field-wrap > label { font-size: 0.94rem; font-weight: 650; }
.request-form input[type="url"], .request-form textarea { width: 100%; min-height: 48px; padding: 0.75rem 0.85rem; border: 1px solid #b9c6c0; border-radius: 0.25rem; background: #fff; color: var(--ink); }
.request-form textarea { min-height: 110px; resize: vertical; }
.site-status-options { display: flex; flex-wrap: wrap; gap: 0.65rem 1rem; margin: 0 0 0.4rem; padding: 0 0 0.8rem; border: 0; border-bottom: 1px solid var(--line); }
.site-status-options legend { width: 100%; margin-bottom: 0.4rem; font-size: 0.94rem; font-weight: 650; }
.site-status-options label { display: inline-flex; align-items: center; gap: 0.4rem; color: var(--ink-soft); font-size: 0.94rem; }
.site-status-options input { accent-color: #486761; }
.website-field-wrap { display: grid; gap: 0.65rem; }
.request-form [hidden] { display: none!important; }
.request-form .button { width: fit-content; min-width: 190px; margin-top: 0.35rem; border: 0; cursor: pointer; }
.request-form .button:disabled { cursor: not-allowed; opacity: 0.55; }
.form-status { margin: 0.1rem 0 0; color: var(--ink-soft); font-size: 0.88rem; line-height: 1.5; }
#how-it-works, #reviews { scroll-margin-top: 6rem; }

.reviews-section { padding: clamp(1.75rem, 3.5vw, 3rem) 0; background: #e7ece8; }
.reviews-inner { display: grid; grid-template-columns: 0.9fr 1.1fr; align-items: center; gap: clamp(2rem, 7vw, 6rem); }
.reviews-inner > div:first-child { align-self: start; padding-top: 1rem; }
.reviews-inner h2 { max-width: 460px; }
.review-placeholder { position: relative; max-width: 550px; padding: 1.65rem 1.75rem 1.45rem; border: 1px solid #c1cec7; border-radius: 0.4rem; background: rgba(255,255,255,0.78); }
.quote-mark { position: absolute; top: 0.2rem; right: 1.2rem; color: #bdcbc4; font-family: Georgia, serif; font-size: 4rem; line-height: 1; }
.review-placeholder p { position: relative; max-width: 46ch; margin-bottom: 1.4rem; color: var(--ink-soft); font-size: 1rem; }
.review-status { color: var(--ink-soft); font-size: 0.86rem; font-weight: 620; }

.site-footer { padding: clamp(2rem, 3.5vw, 3rem) 0 1rem; background: var(--deep); color: var(--white); }
.footer-main { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 4rem; align-items: center; padding-bottom: clamp(1.5rem, 3vw, 2.5rem); }
.site-footer .eyebrow { color: #d0ddda; }
.site-footer .eyebrow::before { background: var(--accent); }
.footer-intro h2 { max-width: 620px; margin-bottom: 1rem; color: var(--white); }
.footer-intro > p:last-child { max-width: 44ch; margin-bottom: 0; color: #d0ddda; }
.footer-contact-pending { padding: 1.35rem; border: 1px solid #718487; border-radius: 0.35rem; color: #edf2ef; }
.footer-contact-pending strong { font-size: 1rem; }
.footer-contact-pending p { margin: 0.55rem 0 0; color: #d0ddda; font-size: 0.94rem; }
.footer-bottom { min-height: 70px; display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; padding-top: 1rem; border-top: 1px solid #52676b; }
.wordmark-footer { color: #fff; }
.wordmark-footer > span:last-child > span { color: #c7da7e; }
.footer-bottom p { margin: 0; color: #d0ddda; font-size: 0.9rem; }
.back-top { color: #e6eee9; font-size: 0.9rem; font-weight: 620; }
.back-top:hover { text-decoration: underline; text-underline-offset: 0.2em; }

@media (max-width: 960px) {
  .header-inner { gap: 1rem; }
  .desktop-nav { gap: 0.85rem; }
  .desktop-nav a { font-size: 0.88rem; }
  .header-cta { min-height: 44px; padding-inline: 1rem; font-size: 0.88rem; }
  .section-heading { align-items: start; flex-direction: column; gap: 0.85rem; }
  .section-heading > p { max-width: 58ch; }
  .directory-card { flex-basis: clamp(270px, calc((100% - 1rem) / 2), 380px); }
  .request-layout { grid-template-columns: 1fr; gap: 2rem; }
}

@media (max-width: 680px) {
  .page-shell, .header-inner { width: min(calc(100% - 2rem), var(--page-width)); }
  .header-inner { min-height: 68px; gap: 0.55rem; }
  .desktop-nav, .header-cta { display: none; }
  .mobile-menu { display: block; }
  .language-picker select { min-height: 42px; padding-inline: 0.55rem; }
  .intro-section { padding: 1.75rem 0 2rem; }
  h1 { max-width: 15ch; font-size: clamp(2.55rem, 11vw, 3.6rem); }
  .intro-lede { margin-bottom: 1.3rem; font-size: 1rem; }
  .entry-choices { grid-template-columns: 1fr; gap: 0.65rem; margin-top: 1.35rem; }
  .entry-choice { min-height: 0; padding: 1rem 1.05rem; }
  .entry-choice strong { font-size: 1.03rem; }
  .entry-choice small { margin-top: 0.35rem; font-size: 0.94rem; }
  .section-heading h2, .reviews-inner h2, .footer-intro h2 { font-size: clamp(1.85rem, 8vw, 2.55rem); }
  .services-section { padding-block: 1.75rem; }
  .review-steps { grid-template-columns: 1fr; }
  .services-heading { gap: 0.65rem; }
  .service-offers { grid-template-columns: 1fr; gap: 0.55rem; }
  .service-offer { padding: 0.9rem 1rem; }
  .directory-card { flex-basis: min(78vw, 340px); }
  .request-form { padding: 1.1rem; }
  .site-status-options { flex-direction: column; gap: 0.5rem; }
  .reviews-inner, .footer-main { grid-template-columns: 1fr; }
  .reviews-inner { gap: 1.5rem; }
  .reviews-inner > div:first-child { padding-top: 0; }
  .footer-main { gap: 2rem; }
  .footer-bottom { align-items: flex-start; flex-wrap: wrap; }
  .footer-bottom p { order: 1; flex-basis: 100%; }
}

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

.directory-controls { display:flex; justify-content:flex-end; gap:.5rem; margin-top:.5rem; }
.directory-controls button { min-height:44px; padding:.5rem 1rem; border:1px solid var(--line); border-radius:999px; background:var(--white); color:var(--ink); cursor:pointer; font-size:.9rem; }
.directory-controls button:disabled { opacity:.45; cursor:default; }

.directory-card { display:flex; flex-direction:column; }
.directory-card-art { flex-shrink:0; }
.directory-card-body { display:flex; flex-direction:column; flex:1; }
.directory-card-body > p { flex:1; }
.directory-card-body > .button { align-self:flex-start; }

/* Live contact controls, with space reserved for the fixed WhatsApp action. */
.request-contact-fields{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.request-form input:not([type="radio"]){width:100%;min-height:48px;padding:.75rem .85rem;border:1px solid #b9c6c0;border-radius:.4rem;background:#fff;color:var(--ink);font:inherit}
.request-trap{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
#request-receipt{overflow-wrap:anywhere;color:var(--ink-soft)}
.whatsapp-contact{position:fixed;right:20px;bottom:max(20px,env(safe-area-inset-bottom));z-index:50;display:flex;align-items:center;gap:8px;padding:12px 17px;border-radius:999px;background:#087e40;color:white;text-decoration:none;min-height:52px;font-size:15px;font-weight:650}
.whatsapp-contact svg{width:28px;height:28px;fill:currentColor}.whatsapp-contact:hover{background:#096b38}
.site-footer{padding-bottom:88px}
@media(max-width:680px){.request-contact-fields{grid-template-columns:1fr;gap:.7rem}.whatsapp-contact{right:16px;padding:12px}.whatsapp-contact span{display:none}}

/* Editable WhatsApp draft: opening the panel does not contact WhatsApp. */
.whatsapp-contact{border:0;cursor:pointer;font-family:inherit}
.whatsapp-composer{position:fixed;right:20px;bottom:calc(max(20px, env(safe-area-inset-bottom)) + 64px);z-index:51;width:min(360px,calc(100vw - 32px));max-height:calc(100dvh - 110px);overflow:auto;overscroll-behavior:contain;padding:18px;border:1px solid var(--line);border-radius:12px;background:var(--white);color:var(--ink)}
.whatsapp-composer[hidden]{display:none}
.whatsapp-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.whatsapp-heading h2{margin:0;font-size:18px;line-height:1.35;letter-spacing:normal}
.whatsapp-heading button{flex-shrink:0;width:44px;height:44px;border:0;border-radius:50%;background:var(--surface,#f3f5f2);color:var(--ink);font:inherit;font-size:26px;cursor:pointer}
.whatsapp-composer form{display:grid;gap:10px}
.whatsapp-composer label{font-size:14px;font-weight:650}
.whatsapp-composer textarea{width:100%;min-height:112px;max-height:32dvh;resize:vertical;padding:12px;border:1px solid #b9c6c0;border-radius:8px;background:#fff;color:var(--ink);font:inherit;font-size:16px;line-height:1.45}
.whatsapp-composer p{margin:0;color:var(--ink-soft);font-size:13px;line-height:1.5}
.whatsapp-composer .button{justify-self:start;min-height:44px;padding:10px 24px;border:0;background:#087e40;color:#fff;cursor:pointer;font:inherit;font-weight:650}
.whatsapp-composer .button:hover{background:#096b38}
@media(max-width:680px){.whatsapp-composer{right:16px}}
.whatsapp-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
#whatsapp-copy{min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--ink);font:inherit;font-size:14px;cursor:pointer}
#whatsapp-copy:disabled{opacity:.6;cursor:wait}

.contact-section{padding:clamp(1.75rem,3.5vw,3rem) 0;background:var(--deep);color:var(--white);scroll-margin-top:6rem}
.contact-section .footer-main{padding-bottom:0}
.contact-section .eyebrow{color:#d0ddda}
.contact-section .eyebrow::before{background:var(--accent)}
.site-footer{padding-top:1rem}
.site-footer .footer-bottom{border-top:0;padding-top:0}
.request-form .field-error{margin:.4rem 0 0;color:#9c2730;font-size:.85rem;line-height:1.45}
.request-form input[aria-invalid="true"]{border-color:#9c2730}

.whatsapp-contact[hidden], [data-primary-email][hidden], [data-primary-whatsapp][hidden] { display: none; }

.directory-card[hidden], .review-placeholder[hidden], [data-published-reviews][hidden] { display: none; }
.published-review { margin: 0; padding: 20px 0; border-bottom: 1px solid var(--line); }
.published-review:first-child { padding-top: 0; }
.published-review blockquote { margin: 0 0 12px; white-space: pre-wrap; overflow-wrap: anywhere; }
.published-review figcaption { font-size: .9rem; font-weight: 600; overflow-wrap: anywhere; }

/* Studio attribution and sibling products stay secondary to EasyStart. */
.footer-network{display:grid;grid-template-columns:1.2fr 1fr;gap:2rem;padding-block:1rem 1.5rem}
.footer-studio .wordmark{display:inline-flex;margin-bottom:1rem}
.footer-studio p,.footer-projects p{margin:0 0 .5rem;color:#d0ddda;font-size:.88rem;line-height:1.5}
.footer-network a{color:#f0f4ed;text-decoration:underline;text-underline-offset:3px}
.footer-network .wordmark{text-decoration:none}
.footer-studio .footer-company{max-width:56ch;font-size:.78rem;color:#b8cac7}
.footer-legal{font-size:.8rem}
.footer-projects h2{margin:0 0 1rem;font-size:.88rem;font-weight:600;color:#d0ddda}
.footer-projects ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
.footer-projects li>a{display:inline-block;margin-bottom:.45rem;font-size:1rem;font-weight:650}
.footer-projects p{font-size:.82rem;max-width:27ch}
.site-footer .footer-bottom{border-top:1px solid #52676b;padding-top:1rem;min-height:54px}
@media(max-width:680px){.footer-network{grid-template-columns:1fr;gap:1.4rem;padding-block:.75rem 1.25rem}.footer-projects ul{gap:1rem}.site-footer .footer-bottom{min-height:0;gap:.75rem;padding-bottom:4rem}.site-footer .footer-bottom p{order:0;flex-basis:auto}}

/* Script-aware fallbacks for the six EasyStart locales — 2026-10-12 */
html[lang^="th"] body{font-family:"Noto Sans Thai",var(--font-body)}
html[lang^="zh"] body{font-family:"Noto Sans SC","PingFang SC","Microsoft YaHei",var(--font-body);letter-spacing:normal;word-spacing:normal;line-height:1.65}

/* Public portfolio, separate from the protected proposal directory. */
.portfolio-section { padding: clamp(2rem, 4vw, 3.5rem) 0; background: var(--white); scroll-margin-top: 6rem; }
.portfolio-heading h2 { margin-bottom: 0; }
.portfolio-carousel { overflow-x: auto; overscroll-behavior-inline: contain; scroll-snap-type: x mandatory; padding: 4px 0 1rem; }
.portfolio-grid { display: flex; gap: 1.25rem; list-style: none; padding: 0; margin: 0; }
.portfolio-item { flex: 0 0 clamp(240px, 27%, 320px); min-width: 0; scroll-snap-align: start; }
.portfolio-link { display: block; position: relative; }
.portfolio-art { display: grid; place-items: center; height: 200px; background: #f4f5f1; overflow: hidden; border-radius: .4rem; }
.portfolio-art img { width: auto; height: 140px; max-width: 85%; object-fit: contain; transition: transform .2s ease-out; }
.portfolio-art-easystay { background: #0d192b; }
.portfolio-art-easystay img { height: 170px; }
.portfolio-art-goodstuff { background: #000; }
.portfolio-art-goodstuff img { height: 170px; }
.portfolio-art-gv-luxurytime { background: #fff; box-shadow: inset 0 0 0 1px var(--line); }
.portfolio-name { display: block; margin-top: .9rem; font-size: 1.15rem; font-weight: 650; line-height: 1.35; }
.portfolio-domain { display: block; margin-top: .25rem; color: var(--ink-soft); font-size: .875rem; overflow-wrap: anywhere; }
.portfolio-link:hover .portfolio-name { text-decoration: underline; text-underline-offset: .2em; }
.portfolio-link:hover .portfolio-art img { transform: scale(1.035); }
@media(max-width:640px) { .portfolio-item { flex-basis: min(78vw, 300px); } }
@media(prefers-reduced-motion:reduce) { .portfolio-art img { transition: none; } .portfolio-link:hover .portfolio-art img { transform: none; } }

/* Keep off-screen carousel accessibility labels inside their scroll container. */
.portfolio-carousel, .editorial-carousel { position: relative; }

/* Owner rule: carousels use native scrolling, swipes and keyboard, without arrows. */
body .directory-controls, body .editorial-controls { display: none; }

.portfolio-description{display:block;margin-top:.4rem;font-size:.95rem;color:var(--ink-soft);overflow-wrap:anywhere}.portfolio-description:empty{display:none}
