/* Base */
:root {
  --pl-bg: #FBF6F4;
  --pl-surface: #FFFFFF;
  --pl-text: #2A1C1C;
  --pl-muted: #6A5352;
  --pl-accent: #A8323F;
  --pl-accent-dark: #8C2934;
  --pl-accent-text: #FFFFFF;
  --pl-plate-bg: #2A1C1C;
  --pl-plate-text: #FBF6F4;
  --pl-line: #E7DAD6;
  --pl-radius-card: 8px;
  --pl-radius-btn: 999px;
  --pl-font: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --pl-shadow: 0 1px 2px rgb(42 28 28 / .06), 0 12px 32px rgb(42 28 28 / .08);
  --pl-pad: clamp(16px, 4vw, 40px);
}

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

html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--pl-font);
  font-size: clamp(1rem, 0.96rem + 0.2vw, 1.125rem);
  font-weight: 400;
  line-height: 1.65;
  color: var(--pl-text);
  background-color: var(--pl-bg);
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
  font-weight: 750;
  line-height: 1.15;
  letter-spacing: -0.01em;
  margin: 0 0 16px;
}

h1 { font-size: clamp(2.4rem, 4.6vw + 0.6rem, 4.6rem); line-height: 1.05; letter-spacing: -0.02em; }
h2 { font-size: clamp(1.8rem, 2.6vw + 0.8rem, 3rem); }
h3 { font-size: clamp(1.2rem, 1vw + 0.8rem, 1.5rem); }

p { margin: 0 0 16px; max-width: 68ch; }
p:last-child { margin-bottom: 0; }

a { color: var(--pl-accent); text-decoration-thickness: 1px; text-underline-offset: 3px; transition: text-decoration-thickness .2s ease; }
a:hover { text-decoration-thickness: 3px; }

ul, ol { margin: 0; padding: 0; list-style: none; }

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

:focus-visible { outline: 3px solid var(--pl-accent); outline-offset: 2px; }

.pl_skip {
  position: absolute;
  left: 16px;
  top: -60px;
  z-index: 200;
  background: var(--pl-plate-bg);
  color: var(--pl-plate-text);
  padding: 12px 20px;
  border-radius: var(--pl-radius-btn);
  text-decoration: none;
  transition: top .2s ease;
}
.pl_skip:focus { top: 12px; }

/* Layout */
.pl_wrap {
  max-width: 1200px;
  margin: 0 auto;
  padding-left: var(--pl-pad);
  padding-right: var(--pl-pad);
}

.pl_block {
  position: relative;
  padding: clamp(56px, 7vw, 88px) 0;
}

.pl_block_title { margin-bottom: 16px; }
.pl_block_intro { color: var(--pl-muted); max-width: 62ch; margin-bottom: clamp(24px, 4vw, 48px); }

/* Tinted band layer with soft wavy edge */
.pl_block::before {
  content: "";
  position: absolute;
  inset: 16px 0 8px;
  z-index: -1;
  background:
    linear-gradient(180deg, rgba(231, 218, 214, .5), rgba(255, 255, 255, .92) 28%),
    var(--pl-surface);
  border-radius: 0 0 50% 50% / 0 0 28px 28px;
  -webkit-mask-image:
    radial-gradient(140% 36px at 50% 0, transparent 98%, #000 100%),
    radial-gradient(140% 36px at 50% 100%, transparent 98%, #000 100%);
  -webkit-mask-composite: source-in;
  mask-image:
    radial-gradient(140% 36px at 50% 0, transparent 98%, #000 100%),
    radial-gradient(140% 36px at 50% 100%, transparent 98%, #000 100%);
  mask-composite: intersect;
}

.pl_block:nth-of-type(even)::before { background: rgba(231, 218, 214, .45); }

/* Header */
.pl_topbar {
  position: sticky;
  top: 12px;
  z-index: 100;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 12px;
  width: calc(100% - 2 * clamp(12px, 3vw, 32px));
  max-width: 1240px;
  margin: 12px auto;
  padding: 12px 20px;
  background: var(--pl-surface);
  border-radius: 18px;
  box-shadow: var(--pl-shadow);
  min-height: 64px;
}

.pl_mark {
  font-weight: 750;
  font-size: 1.35rem;
  color: var(--pl-text);
  text-decoration: none;
  text-align: center;
}
.pl_mark:hover { text-decoration: none; color: var(--pl-accent); }

.pl_topbar .pl_btn { justify-self: end; }

.pl_burger {
  justify-self: start;
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 48px;
  height: 48px;
  padding: 12px 11px;
  background: transparent;
  border: 1px solid var(--pl-line);
  border-radius: 14px;
  cursor: pointer;
}
.pl_burger_bar {
  display: block;
  height: 2px;
  width: 100%;
  background: var(--pl-text);
  border-radius: 2px;
  transition: transform .25s ease, opacity .2s ease;
}
.pl_burger[aria-expanded="true"] .pl_burger_bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.pl_burger[aria-expanded="true"] .pl_burger_bar:nth-child(2) { opacity: 0; }
.pl_burger[aria-expanded="true"] .pl_burger_bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Drawer */
.pl_drawer {
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 150;
  width: min(320px, 84vw);
  padding: 96px 28px 28px;
  background: var(--pl-plate-bg);
  color: var(--pl-plate-text);
  transform: translateX(-100%);
  transition: transform .3s ease;
  overflow-y: auto;
}
.is_drawer_on { transform: translateX(0); }

.pl_drawer_shade {
  position: fixed;
  inset: 0;
  z-index: 140;
  background: rgba(42, 28, 28, .55);
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s ease;
}
.is_drawer_on ~ .pl_drawer_shade,
body.is_drawer_open .pl_drawer_shade { opacity: 1; pointer-events: auto; }

.pl_drawer_item {
  display: block;
  padding: 14px 0;
  font-size: 1.05rem;
  color: var(--pl-plate-text);
  text-decoration: none;
  border-bottom: 1px solid rgba(251, 246, 244, .15);
  transition: text-decoration-thickness .2s ease, color .2s ease;
}
.pl_drawer_item:hover { text-decoration: underline; text-decoration-thickness: 3px; text-decoration-color: var(--pl-accent); }
.pl_drawer_item[aria-current="page"] { color: #F0B9BE; }

/* Buttons */
.pl_btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 0 26px;
  font-family: var(--pl-font);
  font-size: 1rem;
  font-weight: 600;
  color: var(--pl-accent-text);
  background: var(--pl-accent);
  border: 0;
  border-radius: var(--pl-radius-btn);
  cursor: pointer;
  text-decoration: none;
  position: relative;
  overflow: hidden;
  transition: background-color .2s ease, transform .15s ease, box-shadow .2s ease;
}
.pl_btn::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--pl-accent-dark);
  border-radius: inherit;
  transform: scaleX(0);
  transform-origin: center;
  transition: transform .3s ease;
  z-index: 0;
}
.pl_btn > * { position: relative; z-index: 1; }
.pl_btn { isolation: isolate; }
.pl_btn span, .pl_btn summary { position: relative; z-index: 1; }
.pl_btn:hover::before { transform: scaleX(1); }
.pl_btn:hover { box-shadow: 0 8px 24px rgba(168, 50, 63, .35); }
.pl_btn:focus-visible { outline: 3px solid var(--pl-text); outline-offset: 3px; box-shadow: 0 0 0 6px rgba(168, 50, 63, .35); }
.pl_btn:active { transform: scale(0.97); }

.pl_btn_ghost {
  background: transparent;
  color: var(--pl-accent);
  border: 2px solid var(--pl-accent);
}
.pl_btn_ghost::before { background: rgba(168, 50, 63, .12); transform: scaleY(0); }
.pl_btn_ghost:hover::before { transform: scaleY(1); }
.pl_btn_ghost:hover { box-shadow: none; color: var(--pl-accent-dark); }

/* Hero */
.pl_hero { padding-top: clamp(48px, 7vw, 88px); }
.pl_hero_grid {
  display: grid;
  gap: clamp(24px, 5vw, 56px);
  align-items: center;
}
.pl_hero_copy > * { position: relative; }
.pl_hero_title { display: flex; flex-direction: column; gap: 0; margin-bottom: 20px; }
.pl_hero_line_sm {
  margin-top: 14px;
  font-size: clamp(1.4rem, 2.2vw + 0.6rem, 2.6rem);
  font-weight: 650;
  line-height: 1.15;
  color: var(--pl-muted);
}
.pl_hero_text { font-size: clamp(1.05rem, 0.9rem + 0.6vw, 1.3rem); color: var(--pl-muted); margin-bottom: 28px; }

.pl_big_type {
  font-size: clamp(2.4rem, 5.4vw + 0.6rem, 5.4rem);
  line-height: 1.05;
  letter-spacing: -0.025em;
  color: var(--pl-accent);
}

.pl_hero_media { margin: 0; align-self: center; }
.pl_hero_media img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--pl-radius-card);
  box-shadow: var(--pl-shadow);
}

/* Hero entrance */
@keyframes pl_rise {
  from { transform: translateY(12px); }
  to { transform: translateY(0); }
}
.pl_hero_copy { animation: pl_rise .5s ease both; }
.pl_slide .pl_hero_title { animation: pl_rise .5s ease .05s both; }
.pl_slide .pl_hero_text, .pl_slide .pl_btn { animation: pl_rise .5s ease .1s both; }

/* Reveal on scroll */
html.is_live .pl_slide:not(.pl_hero_copy) {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .5s ease, transform .5s ease;
}
html.is_live .pl_slide.is_shown { opacity: 1; transform: none; }

/* Tabs */
.pl_tabs {
  display: flex;
  flex-wrap: nowrap;
  gap: 10px;
  margin-bottom: 24px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.pl_tabs::-webkit-scrollbar { display: none; }
.pl_tab_btn { flex: none; white-space: nowrap; }
.pl_tab_btn {
  min-height: 44px;
  padding: 0 20px;
  font-family: var(--pl-font);
  font-size: .95rem;
  font-weight: 600;
  color: var(--pl-muted);
  background: var(--pl-surface);
  border: 1px solid var(--pl-line);
  border-radius: var(--pl-radius-btn);
  cursor: pointer;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.pl_tab_btn:hover { border-color: var(--pl-accent); color: var(--pl-accent); }
.pl_tab_btn:focus-visible { outline: 3px solid var(--pl-accent); outline-offset: 2px; }
.pl_tab_btn:active { transform: scale(0.97); }
.pl_tab_btn.is_active { background: var(--pl-accent); border-color: var(--pl-accent); color: var(--pl-accent-text); }

.pl_pane[hidden] { display: none; }

/* Numbered service rows */
.pl_num_list { display: grid; gap: 16px; grid-auto-rows: 1fr; }
.pl_num_row {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 8px 20px;
  align-items: baseline;
}
.pl_num {
  font-size: clamp(1.6rem, 2vw + 0.8rem, 2.4rem);
  font-weight: 750;
  color: var(--pl-accent);
  letter-spacing: -0.02em;
}
.pl_num_head { grid-column: 2; margin: 0; }
.pl_num_text { grid-column: 2; color: var(--pl-muted); margin: 0; }

/* Cards */
.pl_tile {
  background: var(--pl-surface);
  border-radius: var(--pl-radius-card);
  box-shadow: var(--pl-shadow);
  transition: box-shadow .25s ease, transform .25s ease;
}
.pl_tile:hover { box-shadow: 0 2px 4px rgba(168, 50, 63, .08), 0 16px 40px rgba(168, 50, 63, .18); }

.pl_num_list .pl_tile { padding: 24px; height: 100%; }
.pl_qa, .pl_town_list { padding: clamp(20px, 3vw, 32px); }

/* Dark plate */
.pl_dark_strip {
  background: var(--pl-plate-bg);
  color: var(--pl-plate-text);
  border-radius: 18px;
  padding: clamp(28px, 4vw, 48px);
  max-width: 760px;
}
.pl_strip_title { color: var(--pl-plate-text); }
.pl_strip_text { color: rgba(251, 246, 244, .88); }
.pl_dark_strip a { color: #F0B9BE; }

/* FAQ */
.pl_qa { display: grid; gap: 4px; }
.pl_qa_item { border-bottom: 1px solid var(--pl-line); padding: 18px 0; }
.pl_qa_item:last-child { border-bottom: 0; }
.pl_qa_item summary {
  cursor: pointer;
  font-weight: 600;
  font-size: 1.05rem;
  line-height: 1.4;
  list-style-position: outside;
  padding: 4px 0;
}
.pl_qa_item[open] summary { color: var(--pl-accent); }
.pl_qa_item p { color: var(--pl-muted); margin: 12px 0 0; }

/* Towns */
.pl_town_list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 10px 24px;
}
.pl_town { padding: 8px 0 8px 18px; position: relative; color: var(--pl-text); }
.pl_town::before {
  content: "";
  position: absolute;
  left: 0;
  top: 18px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--pl-accent);
}

/* Gallery */
.pl_gallery { display: grid; gap: 24px; }
.pl_shot { margin: 0; }
.pl_shot img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--pl-radius-card);
}
.pl_shot:nth-child(3) img { aspect-ratio: 3 / 4; }

/* Form */
.pl_lead_box { padding: clamp(24px, 4vw, 40px); }
.pl_lead { display: grid; gap: 20px; row-gap: 20px; width: 100%; max-width: 720px; margin: 0 auto; }
.pl_lead_field { display: grid; gap: 0; margin: 0; }
.pl_lead_label { font-weight: 600; font-size: .95rem; }
.pl_lead_input {
  font-family: var(--pl-font);
  font-size: 1rem;
  color: var(--pl-text);
  background: var(--pl-bg);
  border: 1px solid var(--pl-line);
  border-radius: 10px;
  padding: 12px 14px;
  min-height: 48px;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.pl_lead_input::placeholder { color: #7d6a68; }
.pl_lead_input:focus { outline: none; border-color: var(--pl-accent); box-shadow: 0 0 0 3px rgba(168, 50, 63, .2); }
.is_invalid .pl_lead_input, .pl_lead_input.is_invalid { border-color: var(--pl-accent); box-shadow: 0 0 0 3px rgba(168, 50, 63, .25); }
.pl_lead_area { min-height: 140px; resize: vertical; }
.pl_lead_check { display: flex; gap: 10px; align-items: flex-start; font-size: .95rem; line-height: 1.5; color: var(--pl-muted); }
.pl_lead_check input { width: 20px; height: 20px; margin-top: 2px; accent-color: var(--pl-accent); flex: none; }
.pl_lead_check label { max-width: 60ch; }
.pl_lead_hint { font-size: .9rem; color: var(--pl-muted); }
.pl_lead_send { justify-self: start; }
.pl_lead_send.is_locked { opacity: .7; pointer-events: none; }

/* Prose pages */
.pl_read { max-width: 760px; }
.pl_read h2 { font-size: clamp(1.4rem, 1.4vw + 1rem, 1.9rem); margin-top: 40px; }
.pl_read ol, .pl_read ul { padding-left: 24px; margin: 0 0 16px; max-width: 68ch; }
.pl_read ol li, .pl_read ul li { margin-bottom: 8px; }
.pl_read table { width: 100%; border-collapse: collapse; margin: 0 0 20px; font-size: .95rem; }
.pl_read th, .pl_read td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--pl-line); }
.pl_read th { font-weight: 600; }

/* Inner page head */
.pl_page_head { padding-top: clamp(48px, 7vw, 96px); }
.pl_page_head h1 { margin-bottom: 20px; }
.pl_page_head p { color: var(--pl-muted); font-size: clamp(1.05rem, 0.9rem + 0.5vw, 1.25rem); }

/* Steps */
.pl_step_list { display: grid; gap: 16px; counter-reset: pl_steps; }
.pl_step_list .pl_tile { padding: 24px; }

/* Simple status pages */
.pl_center { text-align: center; padding-top: clamp(48px, 7vw, 96px); }
.pl_center .pl_wrap { max-width: 640px; }

/* Footer */
.pl_foot {
  background: var(--pl-plate-bg);
  color: var(--pl-plate-text);
  padding: clamp(48px, 6vw, 80px) 0 32px;
  margin-top: clamp(48px, 6vw, 80px);
}
.pl_foot_grid {
  display: grid;
  gap: 32px;
  padding-bottom: 32px;
  border-bottom: 1px solid rgba(251, 246, 244, .15);
}
.pl_mark_foot { color: var(--pl-plate-text); text-align: left; }
.pl_mark_foot:hover { color: #F0B9BE; }
.pl_foot_note { color: rgba(251, 246, 244, .75); font-size: .95rem; margin-top: 12px; }
.pl_foot_head { font-size: 1rem; font-weight: 700; color: var(--pl-plate-text); margin-bottom: 12px; }
.pl_foot_list { display: grid; gap: 8px; }
.pl_foot_list a { color: rgba(251, 246, 244, .85); text-decoration: none; }
.pl_foot_list a:hover { color: #F0B9BE; text-decoration: underline; }
.pl_foot_bottom { padding-top: 24px; }
.pl_foot_copy { color: rgba(251, 246, 244, .6); font-size: .9rem; margin: 0; }

/* Breakpoints */
@media (max-width: 479px) {
  .pl_topbar .pl_btn { padding: 0 16px; font-size: .9rem; }
  .pl_hero_title { font-size: clamp(2.1rem, 9vw, 2.6rem); }
}

@media (min-width: 480px) {
  .pl_num_list { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 640px) {
  .pl_hero_grid { grid-template-columns: 1fr 1fr; }
  .pl_hero_grid .pl_hero_media { order: 2; }
  .pl_gallery { grid-template-columns: repeat(2, 1fr); }
  .pl_gallery .pl_shot:nth-child(3) { grid-row: span 1; }
  .pl_foot_grid { grid-template-columns: 2fr 1fr 1fr; }
}

@media (min-width: 768px) {
  .pl_lead { grid-template-columns: 1fr 1fr; }
  .pl_lead_field:nth-last-child(-n+3), .pl_lead_check, .pl_lead_hint, .pl_lead_send { grid-column: 1 / -1; }
}

@media (min-width: 1024px) {
  .pl_gallery { grid-template-columns: repeat(2, 1fr) 0.8fr; align-items: start; }
}

@media (min-width: 1280px) {
  .pl_block_intro { font-size: 1.15rem; }
}

/* Motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
  html.is_live .pl_slide { opacity: 1; transform: none; }
}

/* Form alignment */
.pl_lead_input { width: 100%; }

@media (max-width: 767px) {
  .pl_block_title, h2 { font-size: clamp(1.6rem, 6vw + 0.5rem, 1.9rem); }
  .pl_block { padding: clamp(48px, 10vw, 64px) 0; }
  .pl_wrap { padding-left: max(20px, var(--pl-pad)); padding-right: max(20px, var(--pl-pad)); }
}

@media (max-width: 767px) {
  .pl_tabs { flex-wrap: nowrap; overflow-x: auto; }
  .pl_tab_btn { padding: 0 16px; font-size: .9rem; }
}

@media (min-width: 768px) {
  .pl_lead { grid-template-columns: 1fr 1fr; column-gap: 24px; row-gap: 20px; }
}

.pl_lead_check a { white-space: nowrap; }
