/* ==========================================================================
   AVANTGARD ROBOTICS 合同会社 · Sistema visual "Manifiesto de misión"
   Portado desde el sitio del grupo (Sitio_Web_2/sitio/css/styles.css) para que
   ambos se lean como una misma empresa. Mismos tokens, mismas formas; lo que
   cambia es la tipografía de texto, ajustada a la composición en japonés.
   - Nevis Bold            -> Sora (700)            · títulos en alfabeto latino
   - Maison Neue Extended  -> Archivo (ancho 112%)  · texto en alfabeto latino
   - Japonés               -> Noto Sans JP (texto y títulos)
                              Shippori Mincho (antetítulos, tategaki, sello)
   ========================================================================== */

/* ---------- Fuentes latinas (auto-hospedadas, las mismas del sitio del grupo) ---------- */
@font-face {
  font-family: "Sora";
  src: url("../fonts/sora-latin-var.woff2") format("woff2");
  font-weight: 100 800;
  font-display: swap;
}
@font-face {
  font-family: "Archivo";
  src: url("../fonts/archivo-latin-wdth-var.woff2") format("woff2");
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
}

/* ---------- Tokens ---------- */
:root {
  /* Marca */
  --rhodonite: #38374c;
  --rhodonite-950: #1c1b26;
  --rhodonite-900: #23222f;
  --rhodonite-800: #2c2b3b;
  --rhodonite-700: #414058;
  --rhodonite-400: #7f7d96;
  --coral: #e58554;
  --poppy: #e3713d;
  --red: #c52938;
  --red-deep: #a51f2d;
  --rhubarb: #6f1f33;
  --putty: #d3c8b7;

  /* Derivados */
  --paper: #f4f0e9;
  --paper-2: #ebe5da;
  --paper-3: #e0d8ca;
  --ink: var(--rhodonite);
  --ink-soft: #55546b;
  --on-dark: #f1ece4;
  --on-dark-soft: #bdb9cf;
  --rule: rgba(56, 55, 76, 0.18);
  --rule-dark: rgba(241, 236, 228, 0.16);

  /* Mundo Ikebana (Pioneers) */
  --plaster: #efe9df;
  --plaster-2: #e6ded1;
  --pine: #4b4a5e;
  --bronze: #3a2a2c;
  --iris: var(--red);

  --burn: linear-gradient(90deg, var(--poppy) 0%, var(--red) 55%, var(--rhubarb) 100%);
  --burn-diag: linear-gradient(135deg, var(--poppy) 0%, var(--red) 52%, var(--rhubarb) 100%);

  /* Tipografía: la fuente latina va primero y el japonés cae en Noto Sans JP */
  --font-display: "Sora", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", system-ui, sans-serif;
  --font-text: "Archivo", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", system-ui, sans-serif;
  --font-jp: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;

  --step--1: clamp(0.8rem, 0.78rem + 0.1vw, 0.86rem);
  --step-0: clamp(0.98rem, 0.95rem + 0.15vw, 1.05rem);
  --step-1: clamp(1.1rem, 1.04rem + 0.3vw, 1.25rem);
  --step-2: clamp(1.3rem, 1.18rem + 0.6vw, 1.65rem);
  --step-3: clamp(1.6rem, 1.35rem + 1.2vw, 2.3rem);
  --step-4: clamp(1.95rem, 1.5rem + 2.1vw, 3.1rem);
  --step-5: clamp(2.2rem, 1.6rem + 3vw, 4rem);

  /* Espaciado */
  --gutter: clamp(1rem, 0.4rem + 3vw, 3rem);
  --section: clamp(4.5rem, 3rem + 7vw, 9rem);
  --maxw: 1240px;
  --radius: 2px;
  --chamfer: 14px;

  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --shadow-1: 0 1px 2px rgba(28, 27, 38, 0.08), 0 8px 24px -8px rgba(28, 27, 38, 0.18);
  --header-h: 88px;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 16px); }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-text);
  font-stretch: 112%;
  font-size: var(--step-0);
  line-height: 1.85;
  font-weight: 400;
  line-break: strict;
  overflow-wrap: anywhere;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
img, video, svg { display: block; max-width: 100%; }
img, video { height: auto; }
a { color: inherit; }
button, input, select, textarea { font: inherit; color: inherit; }
/* En japonés los títulos piden más interlínea y nada de tracking negativo;
   auto-phrase evita que una palabra se parta entre dos renglones. */
h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: 0.01em;
  font-feature-settings: "palt";
  margin: 0 0 0.5em;
  text-wrap: balance;
  word-break: auto-phrase;
}
h1 { font-size: var(--step-5); }
h2 { font-size: clamp(1.7rem, 1.35rem + 1.6vw, 2.7rem); }
h3 { font-size: var(--step-2); line-height: 1.45; text-wrap: pretty; }
h4 { font-size: var(--step-1); line-height: 1.5; text-wrap: pretty; }
p { margin: 0 0 1em; max-width: 68ch; text-wrap: pretty; }
ul, ol { margin: 0; padding: 0; }
strong { font-weight: 700; }
address { font-style: normal; }
::selection { background: var(--coral); color: var(--rhodonite-950); }

:focus-visible { outline: 2px solid var(--poppy); outline-offset: 3px; }
.skip-link {
  position: absolute; left: 1rem; top: -100px; z-index: 200;
  background: var(--red); color: #fff; padding: 0.75rem 1rem; text-decoration: none; font-weight: 600;
}
.skip-link:focus { top: 1rem; }
.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.wrap { width: min(100% - 2 * var(--gutter), var(--maxw)); margin-inline: auto; }
.section { padding-block: var(--section); position: relative; }
.section--tight { padding-block: calc(var(--section) * 0.6); }
.lead { font-size: var(--step-1); line-height: 1.8; color: var(--ink-soft); max-width: 60ch; font-weight: 400; word-break: auto-phrase; }
.dark .lead { color: var(--on-dark-soft); }

/* Datos técnicos: etiquetas de manifiesto (solo para datos, nunca como antetítulo) */
.data {
  font-family: var(--font-text);
  font-stretch: 100%;
  font-size: var(--step--1);
  font-weight: 600;
  letter-spacing: 0.08em;
  line-height: 1.5;
  text-transform: uppercase;
  font-variant-numeric: tabular-nums;
}

/* Antetítulo japonés, en Mincho: es la única etiqueta que va sobre un título */
.jp-eyebrow {
  display: block; font-family: var(--font-jp); font-weight: 500;
  font-size: 0.95rem; letter-spacing: 0.3em; line-height: 1.5; color: var(--red); margin: 0 0 0.7rem;
}
@media (max-width: 600px) { .jp-eyebrow { letter-spacing: 0.16em; font-size: 0.88rem; } }
.dark .jp-eyebrow, .hero .jp-eyebrow, .page-hero .jp-eyebrow { color: var(--coral); }
.burn-field .jp-eyebrow { color: #fff; }

/* ---------- Superficies ---------- */
.dark { background: var(--rhodonite-900); color: var(--on-dark); }
.paper-2 { background: var(--paper-2); }
.burn-field { background: var(--burn-diag); color: #fff; }
.burn-rule { height: 6px; background: var(--burn); border: 0; margin: 0; }

/* ---------- Botones: esquina cortada a 45°, la geometría del logotipo ---------- */
.btn {
  --bg: var(--red); --fg: #fff;
  display: inline-flex; align-items: center; justify-content: center; gap: 0.6em;
  min-height: 48px; padding: 0.7em 1.5em 0.7em 1.25em;
  background: var(--bg); color: var(--fg);
  font-family: var(--font-text); font-stretch: 108%; font-weight: 700; font-size: 0.95rem; letter-spacing: 0.04em; line-height: 1.4;
  text-decoration: none; border: 0; cursor: pointer;
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - var(--chamfer)), calc(100% - var(--chamfer)) 100%, 0 100%);
  transition: background-color 0.25s var(--ease-out), color 0.25s var(--ease-out), transform 0.25s var(--ease-out);
}
.btn svg { width: 1.1em; height: 1.1em; flex: none; transition: transform 0.3s var(--ease-out); }
.btn:hover { --bg: var(--rhubarb); }
.btn:hover svg { transform: translateX(3px); }
.btn:active { transform: translateY(1px); }
.btn--ink { --bg: var(--rhodonite); --fg: var(--on-dark); }
.btn--ink:hover { --bg: var(--rhodonite-950); }
.btn--ghost {
  --bg: transparent; --fg: currentColor;
  box-shadow: inset 0 0 0 1.5px currentColor;
  clip-path: none;
}
.btn--ghost:hover { --bg: rgba(127, 125, 150, 0.14); }
.btn-row { display: flex; flex-wrap: wrap; gap: 0.75rem 1rem; align-items: center; }

.link-arrow {
  display: inline-flex; align-items: center; gap: 0.45em; font-weight: 700; text-decoration: none;
  border-bottom: 1.5px solid currentColor; padding-bottom: 2px; line-height: 1.5;
}
.link-arrow svg { width: 1em; height: 1em; transition: transform 0.3s var(--ease-out); }
.link-arrow:hover svg { transform: translateX(3px); }

/* ---------- Encabezado ---------- */
.site-header {
  position: fixed; inset: 0 0 auto 0; z-index: 100; height: var(--header-h);
  color: var(--on-dark);
  transition: background-color 0.35s var(--ease-out), box-shadow 0.35s var(--ease-out);
}
.site-header::after {
  content: ""; position: absolute; inset: auto 0 0 0; height: 2px; background: var(--burn);
  transform: scaleX(0); transform-origin: left; transition: transform 0.6s var(--ease-out);
}
.site-header.is-solid {
  background: rgba(28, 27, 38, 0.94);
  box-shadow: 0 10px 30px -18px rgba(0, 0, 0, 0.6);
}
@supports (backdrop-filter: blur(10px)) {
  .site-header.is-solid { background: rgba(28, 27, 38, 0.82); backdrop-filter: blur(14px) saturate(1.2); }
}
/* Con el menú abierto no se desenfoca el encabezado: un filtro convierte a sus
   hijos "fixed" en hijos suyos y el panel del menú quedaría recortado. */
body.nav-open .site-header { background: var(--rhodonite-950); backdrop-filter: none; }
.site-header.is-solid::after { transform: scaleX(1); }

.site-header .wrap { height: 100%; display: flex; align-items: center; gap: 1.5rem; }
.brand { display: flex; align-items: center; flex: none; }
.brand img { height: 62px; width: auto; }
.brand .logo-dark { display: none; }
@media (max-width: 600px) { :root { --header-h: 76px; } .brand img { height: 52px; } }
.nav { margin-left: auto; display: flex; align-items: center; gap: 1.75rem; }
.nav__list { list-style: none; display: flex; align-items: center; gap: 1.6rem; }
.nav__list a {
  text-decoration: none; font-size: 0.9rem; font-weight: 500; letter-spacing: 0.04em; line-height: 1.5;
  padding-block: 0.4rem; position: relative; color: var(--on-dark); white-space: nowrap;
}
.nav__list a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--coral);
  transform: scaleX(0); transform-origin: left; transition: transform 0.3s var(--ease-out);
}
.nav__list a:hover::after, .nav__list a[aria-current="page"]::after { transform: scaleX(1); }
/* Contacto: la única llamada en rojo dentro de la navegación */
.nav__cta a {
  background: var(--red); color: #fff; padding: 0.45rem 1.1em 0.45rem 0.95em; display: inline-flex; align-items: center;
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - var(--chamfer)), calc(100% - var(--chamfer)) 100%, 0 100%);
  transition: background-color 0.25s var(--ease-out);
}
.nav__cta a:hover { background: var(--rhubarb); }
.nav__cta a::after { display: none; }
.nav-toggle {
  display: none; margin-left: auto; width: 48px; height: 48px; border: 0; background: transparent; cursor: pointer; color: var(--on-dark);
  position: relative;
}
.nav-toggle span:not(.visually-hidden) { position: absolute; left: 12px; right: 12px; height: 2px; background: currentColor; transition: transform 0.3s var(--ease-out), opacity 0.2s; }
.nav-toggle span:nth-child(1) { top: 17px; }
.nav-toggle span:nth-child(2) { top: 23px; }
.nav-toggle span:nth-child(3) { top: 29px; right: 20px; }
.nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); right: 12px; }

@media (max-width: 900px) {
  .nav-toggle { display: block; }
  .nav {
    position: fixed; inset: var(--header-h) 0 0 0; z-index: 2; flex-direction: column; align-items: stretch;
    padding: clamp(0.75rem, 2.5vh, 2rem) var(--gutter) clamp(1rem, 3vh, 3rem);
    background: var(--rhodonite-950); overflow-y: auto; overscroll-behavior: contain;
    visibility: hidden; opacity: 0; transform: translateY(-8px);
    transition: opacity 0.3s var(--ease-out), transform 0.3s var(--ease-out), visibility 0s 0.3s;
  }
  .nav.is-open { visibility: visible; opacity: 1; transform: none; transition-delay: 0s; }
  .nav__list { flex-direction: column; align-items: stretch; gap: 0; }
  .nav .nav__list a {
    display: block; font-family: var(--font-display); font-weight: 700; color: var(--on-dark);
    font-size: clamp(1.05rem, 3.1vh, 1.5rem);
    padding: clamp(0.5rem, 1.6vh, 0.9rem) 0; border-bottom: 1px solid var(--rule-dark); white-space: normal;
  }
  .nav__list a::after { display: none; }
  .nav .nav__list a[aria-current="page"] { color: var(--coral); }
  .nav .nav__cta a { display: inline-flex; margin-top: 1.25rem; padding: 0.7rem 1.4em 0.7rem 1.1em; border-bottom: 0; color: #fff; }
  .nav .nav__cta a[aria-current="page"] { color: #fff; }
  @supports (height: 100dvh) { .nav { max-height: calc(100dvh - var(--header-h)); } }
  body.nav-open { overflow: hidden; }
}

/* ---------- Hero ---------- */
.hero {
  position: relative; min-height: 100svh; display: grid; align-items: end;
  color: var(--on-dark); background: var(--rhodonite-950); overflow: hidden; isolation: isolate;
}
.hero__media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.hero::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(180deg, rgba(28, 27, 38, 0.6) 0%, rgba(28, 27, 38, 0.15) 28%, rgba(28, 27, 38, 0.45) 62%, rgba(28, 27, 38, 0.9) 100%),
    linear-gradient(90deg, rgba(28, 27, 38, 0.82) 0%, rgba(28, 27, 38, 0.15) 70%);
}
.hero__inner { padding-top: calc(var(--header-h) + 3rem); padding-bottom: clamp(4rem, 12vh, 8rem); }
/* El tamaño mínimo deja entrar el primer renglón (12 caracteres) en 320 px */
.hero h1 { font-size: clamp(1.45rem, 0.9rem + 3.4vw, 4rem); line-height: 1.3; margin-bottom: 0.5em; }
.hero h1 .line { display: block; }
.hero h1 em { font-style: normal; color: var(--coral); }
.hero__lead { font-size: var(--step-1); line-height: 1.8; color: var(--on-dark); max-width: 40em; margin-bottom: 0; word-break: auto-phrase; }
.hero .btn-row { margin-top: 2.25rem; }

/* Encabezado de páginas internas */
.page-hero {
  position: relative; color: var(--on-dark); background: var(--rhodonite-950);
  padding-top: calc(var(--header-h) + clamp(3.5rem, 8vw, 7rem)); padding-bottom: clamp(3rem, 6vw, 5.5rem);
  overflow: hidden; isolation: isolate;
}
.page-hero__media { position: absolute; inset: 0; z-index: -2; }
.page-hero__media img { width: 100%; height: 100%; object-fit: cover; }
.page-hero::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(90deg, rgba(28, 27, 38, 0.96) 0%, rgba(28, 27, 38, 0.82) 45%, rgba(28, 27, 38, 0.45) 100%);
}
/* Sin fotografía: el logosímbolo en filigrana ocupa el lugar de la imagen */
.page-hero__mark { position: absolute; right: -3%; bottom: -30%; width: min(480px, 50vw); opacity: 0.07; z-index: -1; pointer-events: none; }
.page-hero h1 { font-size: var(--step-5); }
.page-hero .lead { color: var(--on-dark-soft); margin-bottom: 0; }

/* ---------- Encabezados de sección ---------- */
.section-head { margin-bottom: clamp(2.5rem, 5vw, 3.75rem); max-width: 46rem; }
.section-head h2 { margin: 0 0 0.6rem; }
.section-head p { margin: 0; color: var(--ink-soft); font-size: var(--step-1); line-height: 1.8; }
.section-head p + p { margin-top: 0.75em; }
.section-head .status { margin: 0.25rem 0 1rem; }
.dark .section-head p { color: var(--on-dark-soft); }

/* Estado de cada línea de negocio: diamante a 45° */
.status {
  display: inline-flex; align-items: center; gap: 0.6em; font-size: 0.82rem; font-weight: 700; letter-spacing: 0.06em; line-height: 1.5;
}
.status::before { content: ""; width: 9px; height: 9px; transform: rotate(45deg); background: currentColor; flex: none; }
.status--go { color: #1f7a4d; }
.status--next { color: var(--red); }
.status--soon { color: var(--ink-soft); }

/* ---------- Compuertas: el recorrido en pasos ---------- */
.gates { list-style: none; display: grid; grid-template-columns: repeat(var(--n, 4), minmax(0, 1fr)); position: relative; }
.gates::before { content: ""; position: absolute; left: 0; right: 0; top: 11px; height: 2px; background: var(--rule); }
.dark .gates::before { background: var(--rule-dark); }
.gates::after {
  content: ""; position: absolute; left: 0; top: 11px; height: 2px; width: 100%; background: var(--burn);
  transform: scaleX(var(--progress, 1)); transform-origin: left; transition: transform 1.6s var(--ease-out);
}
.gate { position: relative; padding: 2.75rem 2rem 0 0; }
.gate::before {
  content: ""; position: absolute; left: 1px; top: 2px; width: 18px; height: 18px; transform: rotate(45deg);
  background: var(--paper); border: 2px solid var(--red); z-index: 1;
}
.dark .gate::before { background: var(--rhodonite-900); border-color: var(--coral); }
.gate--milestone::before { background: var(--red); }
.dark .gate--milestone::before { background: var(--coral); }
.gate__code { display: block; color: var(--red); margin-bottom: 0.35rem; }
.dark .gate__code { color: var(--coral); }
.gate h3, .gate h4 { font-size: 1.2rem; margin-bottom: 0.4rem; }
.gate p { font-size: 0.95rem; color: var(--ink-soft); margin: 0; }
.dark .gate p { color: var(--on-dark-soft); }
@media (max-width: 900px) {
  .gates { grid-template-columns: 1fr; gap: 0; }
  .gates::before, .gates::after { left: 9px; right: auto; top: 0; bottom: 0; width: 2px; height: 100%; }
  .gates::after { transform: scaleY(var(--progress, 1)); transform-origin: top; }
  .gate { padding: 0 0 2rem 2.75rem; }
  .gate::before { top: 3px; left: 1px; }
}

/* ---------- Divisiones editoriales ---------- */
.split { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(1.5rem, 4vw, 4rem); align-items: center; }
.split__media { grid-column: 1 / span 6; position: relative; }
.split__body { grid-column: 8 / span 5; }
.split--flip .split__media { grid-column: 7 / span 6; order: 2; }
.split--flip .split__body { grid-column: 1 / span 5; }
@media (min-width: 901px) { .split--wide .split__media { grid-column: 1 / span 7; } }
.partner-logo { display: block; width: fit-content; margin-bottom: 1.75rem; }
.partner-logo img { display: block; height: 64px; width: auto; }
.split--even { align-items: start; }
.split--even .split__media { grid-column: 1 / span 4; }
.split--even .split__body { grid-column: 6 / span 7; }
@media (max-width: 900px) {
  .split, .split--flip { grid-template-columns: 1fr; }
  .split__media, .split__body, .split--even .split__media, .split--even .split__body, .split--flip .split__media, .split--flip .split__body { grid-column: auto; order: 0; }
}
.split__body > :last-child, .split__media > :last-child { margin-bottom: 0; }
.frame { margin: 0; position: relative; overflow: hidden; background: var(--rhodonite-800); clip-path: polygon(0 0, 100% 0, 100% calc(100% - 44px), calc(100% - 44px) 100%, 0 100%); }
.frame img, .frame video { width: 100%; height: 100%; object-fit: cover; object-position: var(--pos, center); aspect-ratio: var(--ratio, 4 / 3); }

.checklist { list-style: none; display: grid; gap: 0.6rem; margin: 1.25rem 0 0; }
.checklist li { display: grid; grid-template-columns: 14px 1fr; gap: 0.75rem; align-items: baseline; }
.checklist li::before { content: ""; width: 8px; height: 8px; transform: rotate(45deg) translateY(-2px); background: var(--red); }
.dark .checklist li::before { background: var(--coral); }

/* ---------- Registro técnico (hojas de especificación) ---------- */
.spec { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--min, 190px)), 1fr)); column-gap: clamp(1.25rem, 2.5vw, 2.5rem); border-top: 1.5px solid currentColor; margin: 0; }
.spec > div { padding: 1rem 0; border-bottom: 1px solid var(--rule); }
.dark .spec > div { border-color: var(--rule-dark); }
.spec dt { color: var(--ink-soft); margin-bottom: 0.25rem; }
.dark .spec dt { color: var(--on-dark-soft); }
.spec dd { margin: 0; font-family: var(--font-display); font-weight: 600; font-size: 1.15rem; line-height: 1.5; }
.spec dd small { display: block; font-family: var(--font-text); font-weight: 400; font-size: 0.85rem; color: var(--ink-soft); }
.spec dd a { text-decoration-color: var(--red); text-underline-offset: 4px; }
.spec--stack { --min: 100%; }

/* ---------- Sede: logotipo de ODP ---------- */
/* El logotipo va siempre sobre blanco, sin recortes ni filtros. */
.resident { display: grid; grid-template-columns: clamp(120px, 22vw, 190px) 1fr; gap: clamp(1rem, 2.5vw, 2rem); align-items: center; }
.resident__logo, .footer-odp {
  display: block; background: #fff; padding: clamp(0.6rem, 1.5vw, 1rem);
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - var(--chamfer)), calc(100% - var(--chamfer)) 100%, 0 100%);
}
.footer-odp { width: 150px; padding: 0.6rem 0.9rem; }
.footer-odp img { display: block; width: 100%; height: auto; margin: 0; }
.footer-odp__cap { margin: 0.6rem 0 0; font-size: 0.8rem; max-width: 150px; }
.resident__logo img { display: block; width: 100%; height: auto; }
.resident .data { display: block; color: var(--ink-soft); margin-bottom: 0.25rem; }
.resident p { margin: 0; }
.resident--compact { grid-template-columns: 1fr; gap: 0.75rem; max-width: 220px; margin-top: 2rem; }
.resident--compact p { font-size: 0.88rem; color: var(--ink-soft); }

/* ---------- Acceso: dirección y mapa ---------- */
.access__addr { margin: 1.5rem 0 1rem; font-family: var(--font-display); font-weight: 600; line-height: 1.7; }
.map { background: var(--paper-3); clip-path: polygon(0 0, 100% 0, 100% calc(100% - 44px), calc(100% - 44px) 100%, 0 100%); }
.map iframe { display: block; width: 100%; aspect-ratio: 4 / 3; min-height: 320px; border: 0; }

/* ---------- Nota de prensa: la foto lleva al medio que la publicó ---------- */
.nota-foto { margin: 0 0 clamp(2rem, 4vw, 3rem); }
.nota-foto figcaption { margin-top: 0.75rem; }
.frame__enlace { display: block; }
.frame__enlace img { transition: transform 0.6s var(--ease-out); }
.frame__enlace:hover img, .frame__enlace:focus-visible img { transform: scale(1.03); }
.ledger__item .checklist { margin: 0.75rem 0 0; }

/* ---------- Columnas con regla ---------- */
.ledger { display: grid; grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr)); gap: 0 clamp(1.5rem, 3vw, 3rem); list-style: none; }
.ledger__item { border-top: 1.5px solid currentColor; padding-top: 1.25rem; padding-bottom: 2rem; }
.ledger__item h3, .ledger__item h4 { font-size: 1.2rem; margin-bottom: 0.5rem; }
.ledger__item p { color: var(--ink-soft); font-size: 0.96rem; margin: 0; }
.ledger__item .data { display: block; color: var(--red); margin-bottom: 0.4rem; }
.dark .ledger__item p { color: var(--on-dark-soft); }
.dark .ledger__item .data { color: var(--coral); }
@media (max-width: 900px) { .ledger { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .ledger { grid-template-columns: 1fr; } }

/* ---------- Líneas de negocio (事業内容): índice numerado ---------- */
.routes { border-top: 1.5px solid currentColor; }
.route {
  display: grid; grid-template-columns: 4.5rem minmax(0, 5fr) minmax(0, 7fr); gap: 1rem clamp(1.5rem, 3vw, 3rem); align-items: start;
  padding: clamp(1.75rem, 3vw, 2.5rem) 0; border-bottom: 1px solid var(--rule);
}
.route__num { font-family: var(--font-display); font-weight: 700; font-size: var(--step-3); line-height: 1; color: var(--red); font-variant-numeric: tabular-nums; }
.route h3 { margin: 0 0 0.35rem; }
.route__legal { display: block; font-size: 0.85rem; color: var(--ink-soft); line-height: 1.6; margin-bottom: 0.9rem; }
.route__body p { color: var(--ink-soft); }
.route__body > :last-child { margin-bottom: 0; }
.route__body .link-arrow { margin-top: 1.25rem; }
@media (max-width: 900px) {
  .route { grid-template-columns: 3rem 1fr; }
  .route__body { grid-column: 2; }
}

/* ---------- Tabla de perfil corporativo (会社概要) ---------- */
.profile { width: 100%; border-collapse: collapse; border-top: 1.5px solid currentColor; }
.profile th, .profile td { text-align: left; vertical-align: top; padding: 1.05rem 0; border-bottom: 1px solid var(--rule); }
.profile th { width: 11rem; padding-right: 1.5rem; color: var(--ink-soft); font-size: 0.88rem; font-weight: 600; letter-spacing: 0.08em; white-space: nowrap; }
.profile td { font-weight: 500; }
.profile td small { display: block; font-size: 0.85rem; font-weight: 400; color: var(--ink-soft); }
.dark .profile th, .dark .profile td small { color: var(--on-dark-soft); }
.dark .profile th, .dark .profile td { border-color: var(--rule-dark); }
@media (max-width: 600px) {
  .profile, .profile tbody, .profile tr, .profile th, .profile td { display: block; width: 100%; }
  .profile tr { padding: 0.9rem 0; border-bottom: 1px solid var(--rule); }
  .dark .profile tr { border-color: var(--rule-dark); }
  .profile th, .profile td { padding: 0; border: 0; }
  .profile th { margin-bottom: 0.2rem; }
}

/* ---------- Cita de filosofía ---------- */
.creed { margin: 0 0 clamp(2.5rem, 5vw, 3.5rem); padding-left: clamp(1rem, 2vw, 1.5rem); border-left: 3px solid var(--coral); }
.creed__quote { font-family: var(--font-display); font-weight: 600; font-size: var(--step-3); line-height: 1.5; max-width: 24em; margin: 0 0 0.75em; word-break: auto-phrase; }
.creed p:last-child { margin-bottom: 0; color: var(--on-dark-soft); }

/* Párrafo que rompe el ritmo del cuerpo de texto para destacar una idea */
p.contrasta {
  margin: 0 0 1.75rem; padding-left: clamp(1rem, 2vw, 1.5rem); border-left: 3px solid var(--red);
  font-family: var(--font-display); font-weight: 600; font-size: var(--step-2);
  line-height: 1.6; color: var(--ink); word-break: auto-phrase;
}
.firma { margin-top: 2rem; font-weight: 700; }
.firma small { display: block; font-weight: 400; font-size: 0.85rem; color: var(--ink-soft); }

/* ---------- Formularios ---------- */
.form { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem 1.5rem; }
.form .full { grid-column: 1 / -1; }
.form.is-marcado { outline: 2px solid var(--red); outline-offset: 14px; animation: marcar-form 3.2s var(--ease-out) forwards; }
@keyframes marcar-form {
  0% { outline-color: transparent; outline-offset: 28px; }
  14% { outline-color: var(--red); outline-offset: 14px; }
  80% { outline-color: var(--red); outline-offset: 14px; }
  100% { outline-color: transparent; outline-offset: 14px; }
}
@media (prefers-reduced-motion: reduce) {
  /* Sin movimiento: el recuadro aparece y desaparece de golpe, pero dura lo mismo */
  .form.is-marcado { animation-duration: 3.2s !important; animation-timing-function: steps(1, end); }
}
.field { display: grid; gap: 0.4rem; align-content: start; }
.field label { font-size: 0.9rem; font-weight: 600; line-height: 1.5; }
.field .hint { font-size: 0.82rem; color: var(--ink-soft); margin: 0; max-width: none; }
.field input, .field select, .field textarea {
  width: 100%; min-height: 50px; padding: 0.7rem 0.9rem; border: 1.5px solid rgba(56, 55, 76, 0.35); background: #fff; border-radius: var(--radius);
  transition: border-color 0.2s, box-shadow 0.2s;
}
.field textarea { min-height: 160px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--rhodonite); box-shadow: 0 0 0 3px rgba(227, 113, 61, 0.35); }
.badge-req { display: inline-block; margin-left: 0.5em; padding: 0.05em 0.5em; background: var(--red); color: #fff; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.08em; vertical-align: 0.1em; }
.form-msg { border: 1.5px solid var(--ink); background: var(--paper-2); padding: 1rem 1.25rem; font-size: 0.9rem; max-width: none; margin: 0; }
.form-msg b { display: block; margin-bottom: 0.25rem; }
.form-msg--error { border-color: var(--red); background: #fbe4e4; color: #7c1822; }
.form .btn:disabled { opacity: 0.55; cursor: progress; }
.consent { display: grid; grid-template-columns: 22px 1fr; gap: 0.75rem; font-size: 0.88rem; align-items: start; }
.consent input { width: 20px; height: 20px; margin-top: 0.3em; accent-color: var(--red); }
@media (max-width: 700px) { .form { grid-template-columns: 1fr; } }

/* Nota interna: debe retirarse antes de publicar (buscar class="verify") */

/* ---------- Llamado final ---------- */
.close-call { position: relative; overflow: hidden; }
.close-call__grid { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 2rem 4rem; align-items: end; position: relative; }
.close-call h2 { margin: 0; }
.close-call p { color: rgba(255, 255, 255, 0.94); }
.close-call__mark { position: absolute; right: -4%; bottom: -30%; width: min(520px, 55vw); opacity: 0.14; pointer-events: none; }
.burn-field .btn { --bg: var(--rhodonite-950); --fg: #fff; }
.burn-field .btn:hover { --bg: #000; }
@media (max-width: 860px) { .close-call__grid { grid-template-columns: 1fr; } }

/* ---------- Pie de página ---------- */
.site-footer { background: var(--rhodonite-950); color: var(--on-dark-soft); padding: clamp(3.5rem, 6vw, 5rem) 0 2rem; font-size: 0.93rem; }
.footer-grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr auto; gap: 2.5rem; }
.footer-partner { justify-self: end; }
.footer-grid h2 { font-size: 0.8rem; font-family: var(--font-text); letter-spacing: 0.14em; color: var(--on-dark); margin-bottom: 1rem; }
.footer-grid ul { list-style: none; display: grid; gap: 0.55rem; }
.footer-grid a { text-decoration: none; }
.footer-grid a:hover { color: var(--on-dark); text-decoration: underline; text-underline-offset: 3px; }
.footer-brand img { height: 64px; width: auto; margin-bottom: 1.25rem; }
.footer-brand b { color: var(--on-dark); font-weight: 600; display: block; }
.footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; border-top: 1px solid var(--rule-dark); margin-top: 3rem; padding-top: 1.5rem; font-size: 0.85rem; }
.footer-bottom p { margin: 0; }
.footer-bottom { align-items: center; }
.social { display: flex; gap: 0.5rem; }
.social a { width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--rule-dark); color: inherit; }
.social a:hover { background: var(--rhodonite-800); color: var(--on-dark); }
.social svg { width: 18px; height: 18px; }
/* En el encabezado: sin recuadro, pegados al botón de contacto */
.social--nav { gap: 0.15rem; margin-left: -0.75rem; }
.social--nav a { width: 40px; height: 40px; border: 0; color: var(--on-dark); transition: color 0.25s var(--ease-out); }
.social--nav a:hover { background: transparent; color: var(--coral); }
.social--nav svg { width: 20px; height: 20px; }
.ikebana .site-header:not(.is-solid) .social--nav a { color: var(--rhodonite); }
.ikebana .site-header:not(.is-solid) .social--nav a:hover { color: var(--red); }
@media (max-width: 900px) { .social--nav { margin: 1.5rem 0 0 -0.6rem; } .social--nav a { width: 48px; height: 48px; } }
@media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } .footer-brand { grid-column: 1 / -1; } .footer-partner { grid-column: 1 / -1; justify-self: start; } }
@media (max-width: 520px) { .footer-grid { grid-template-columns: 1fr; } }

/* ---------- Movimiento: ignición (un solo momento autoral) ---------- */
.js .ignite .line { overflow: hidden; }
.js .ignite .line > span { display: inline-block; transform: translateY(105%); transition: transform 1.1s var(--ease-out); }
.js .ignite.is-lit .line > span { transform: none; }
.js .ignite.is-lit .line:nth-child(2) > span { transition-delay: 0.12s; }
.js [data-gates] .gates { --progress: 0; }
.js [data-gates].is-in .gates { --progress: 1; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; transition-delay: 0s !important; }
  .js .ignite .line > span { transform: none; }
  .js [data-gates] .gates { --progress: 1; }
}

/* ---------- Bloques adicionales ---------- */

/* ---------- Utilidades ---------- */
.h-md { font-size: var(--step-3); }
.mb-0 { margin-bottom: 0; }
.nb { white-space: nowrap; }
.mt-2 { margin-top: 2rem; }
.mt-3 { margin-top: 3rem; }
.note { font-size: 0.88rem; color: var(--ink-soft); }
.dark .note { color: var(--on-dark-soft); }

/* ==========================================================================
   MUNDO IKEBANA · Avantgard Pioneers (Osaka)
   Yeso pálido como fondo, líneas de pino (Rhodonite), acentos Chinese Red
   y el vacío activo (ma) como material de composición.
   ========================================================================== */
.ikebana { background: var(--plaster); color: var(--rhodonite); }
.ikebana .site-header:not(.is-solid) .nav__list a,
.ikebana .site-header:not(.is-solid) .nav-toggle { color: var(--rhodonite); }
.ikebana .site-header:not(.is-solid) .nav__cta a { color: #fff; }
.ikebana .site-header:not(.is-solid) .brand .logo-light { display: none; }
.ikebana .site-header:not(.is-solid) .brand .logo-dark { display: block; }
/* Con el menú abierto el encabezado es oscuro: vuelve el logotipo claro */
body.ikebana.nav-open .site-header .brand .logo-light { display: block; }
body.ikebana.nav-open .site-header .brand .logo-dark { display: none; }
body.ikebana.nav-open .site-header .nav-toggle { color: var(--on-dark); }

/* Encabezado tokonoma: el video es la pieza central de la alcoba */
.tokonoma {
  position: relative; max-width: 1440px; margin-inline: auto;
  padding: calc(var(--header-h) + clamp(1.5rem, 4vw, 3rem)) var(--gutter) clamp(3rem, 7vw, 6rem);
}
.alcove { display: grid; grid-template-columns: clamp(90px, 10%, 160px) minmax(0, 1fr); column-gap: clamp(1rem, 3vw, 3rem); }
.alcove__side { position: relative; display: flex; flex-direction: column; align-items: center; gap: 1.5rem; padding-top: 0.5rem; }
.alcove__side .tategaki { font-size: clamp(1.6rem, 1rem + 1.8vw, 2.6rem); }
.hanko {
  font-family: var(--font-jp); font-weight: 500; font-size: 1.35rem; line-height: 1;
  width: 2.3rem; height: 2.3rem; display: grid; place-items: center;
  color: #f7efe6; background: var(--iris); border-radius: 3px; transform: rotate(-4deg);
  box-shadow: inset 0 0 0 2px rgba(247, 239, 230, 0.35);
}
.branch { width: 100%; max-width: 120px; height: auto; margin-top: auto; overflow: visible; pointer-events: none; }
.branch__line { fill: none; stroke: var(--pine); stroke-width: 3.2; stroke-linecap: round; }
.branch__line--thin { stroke-width: 1.8; }
.branch__bloom { fill: var(--iris); }
/* Kakejiku tecnológico: silueta de rollo colgante con materiales de misión */
.kakejiku { grid-column: 2; margin: 0; position: relative; padding-top: clamp(26px, 3vw, 40px); filter: drop-shadow(0 26px 30px rgba(28, 27, 38, 0.3)); }
.kakejiku__hang { position: absolute; top: 0; left: 30%; width: 40%; height: clamp(26px, 3vw, 40px); overflow: visible; }
.kakejiku__hang path { fill: none; stroke: var(--rhodonite-400); stroke-width: 1.6; vector-effect: non-scaling-stroke; }
.kakejiku__node {
  position: absolute; top: 0; left: 50%; width: 12px; height: 12px; transform: translate(-50%, -30%) rotate(45deg);
  background: var(--coral); box-shadow: 0 0 0 4px rgba(229, 133, 84, 0.18), 0 0 14px rgba(229, 133, 84, 0.6);
}
/* Montaje: seda Rhodonite con olas seigaiha trazadas como circuito */
.kakejiku__mount {
  position: relative;
  padding: clamp(40px, 5.5vw, 76px) clamp(14px, 2.2vw, 30px) clamp(34px, 4vw, 54px);
  background-color: #2a2939;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='14' viewBox='0 0 28 14'%3E%3Cg fill='none' stroke='%23e58554' stroke-opacity='.13' stroke-width='.7'%3E%3Cpath d='M0 14a14 14 0 0 1 28 0M5 14a9 9 0 0 1 18 0M10 14a4 4 0 0 1 8 0'/%3E%3Cpath d='M-14 7a14 14 0 0 1 28 0M-9 7a9 9 0 0 1 18 0M-4 7a4 4 0 0 1 8 0M14 7a14 14 0 0 1 28 0M19 7a9 9 0 0 1 18 0M24 7a4 4 0 0 1 8 0'/%3E%3C/g%3E%3C/svg%3E"),
    linear-gradient(90deg, rgba(0, 0, 0, 0.25), rgba(255, 255, 255, 0.03) 50%, rgba(0, 0, 0, 0.25));
  box-shadow: inset 0 0 0 1px rgba(241, 236, 228, 0.08);
}
.kakejiku__mount::before { content: ""; position: absolute; left: -4px; right: -4px; top: -5px; height: 8px; border-radius: 2px; background: linear-gradient(180deg, #b9b7c9, #5a5970 55%, #2c2b3b); }
.kakejiku__futai {
  position: absolute; top: 3px; left: 26%; width: clamp(8px, 0.9vw, 12px); height: clamp(30px, 4.6vw, 62px);
  background: repeating-linear-gradient(180deg, var(--coral) 0 3px, transparent 3px 6px);
  opacity: 0.85; box-shadow: 0 0 10px rgba(229, 133, 84, 0.35);
}
.kakejiku__futai--right { left: auto; right: 26%; }
.kakejiku__panel { position: relative; padding: 0; border-top: 3px solid transparent; border-bottom: 3px solid transparent; border-image: var(--burn) 1; }
.kakejiku__panel::before {
  content: ""; position: absolute; inset: -9px; pointer-events: none;
  --c: rgba(241, 236, 228, 0.75); --l: 18px;
  background:
    linear-gradient(var(--c), var(--c)) top left / var(--l) 1.5px no-repeat,
    linear-gradient(var(--c), var(--c)) top left / 1.5px var(--l) no-repeat,
    linear-gradient(var(--c), var(--c)) top right / var(--l) 1.5px no-repeat,
    linear-gradient(var(--c), var(--c)) top right / 1.5px var(--l) no-repeat,
    linear-gradient(var(--c), var(--c)) bottom left / var(--l) 1.5px no-repeat,
    linear-gradient(var(--c), var(--c)) bottom left / 1.5px var(--l) no-repeat,
    linear-gradient(var(--c), var(--c)) bottom right / var(--l) 1.5px no-repeat,
    linear-gradient(var(--c), var(--c)) bottom right / 1.5px var(--l) no-repeat;
}
.kakejiku__sheet { position: relative; margin-bottom: clamp(12px, 1.3vw, 18px); }
.kakejiku__roller { display: block; position: absolute; left: -1px; right: -1px; top: 100%; height: clamp(12px, 1.3vw, 18px); border-radius: 3px; background: linear-gradient(180deg, #c6c4d4 0%, #6d6b85 45%, #2c2b3b 100%); z-index: 1; }
.kakejiku__roller::before, .kakejiku__roller::after {
  content: ""; position: absolute; top: 50%; width: clamp(18px, 2vw, 26px); height: clamp(18px, 2vw, 26px); border-radius: 50%;
  transform: translateY(-50%);
  background: radial-gradient(circle at 50% 50%, #1c1b26 0 22%, var(--red) 24% 58%, var(--rhubarb) 60%);
  box-shadow: 0 0 0 1.5px #c6c4d4, 0 2px 4px rgba(0, 0, 0, 0.35);
}
.kakejiku__roller::before { left: calc(-1 * clamp(14px, 1.6vw, 20px)); }
.kakejiku__roller::after { right: calc(-1 * clamp(14px, 1.6vw, 20px)); }

.alcove__video { display: block; width: 100%; height: auto; aspect-ratio: 864 / 496; object-fit: cover; background: #2b1f21; transition: opacity 1.2s 0.6s var(--ease-out); }
.tokonoma__text {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1.5rem clamp(2rem, 5vw, 5rem); align-items: end;
  margin-top: clamp(2.5rem, 5vw, 4.5rem); padding-left: calc(clamp(90px, 10%, 160px) + clamp(1rem, 3vw, 3rem));
}
.tokonoma__text h1 { font-size: clamp(2.4rem, 1.6rem + 3.8vw, 4.8rem); line-height: 1.08; letter-spacing: -0.028em; margin: 0; }
/* El título es el logotipo del programa, el mismo del sitio del grupo */
.titulo-letras img { display: block; width: min(100%, 22rem); height: auto; }
.tokonoma__text .lead { margin-bottom: 1.5rem; }
.tategaki {
  writing-mode: vertical-rl; font-family: var(--font-jp); font-weight: 500; font-size: clamp(1.4rem, 1rem + 1.4vw, 2.2rem);
  letter-spacing: 0.35em; color: var(--rhodonite); line-height: 1; margin: 0; max-width: none;
}
.tategaki small { font-size: 0.42em; letter-spacing: 0.3em; color: var(--ink-soft); margin-top: 1.5em; display: inline-block; }

/* Movimiento: la rama crece una vez y el video emerge de la penumbra */
.js .branch__line { stroke-dasharray: 700; stroke-dashoffset: 700; animation: grow 2.4s 0.3s var(--ease-out) forwards; }
.js .branch__bloom { opacity: 0; transform-box: fill-box; transform-origin: center; transform: scale(0.4); animation: bloom 0.8s var(--ease-out) forwards; }
.js .branch__bloom:nth-of-type(1) { animation-delay: 1.8s; }
.js .branch__bloom:nth-of-type(2) { animation-delay: 2.1s; }
.js .branch__bloom:nth-of-type(3) { animation-delay: 2.4s; }
@keyframes grow { to { stroke-dashoffset: 0; } }
@keyframes bloom { to { opacity: 1; transform: none; } }

@media (max-width: 900px) {
  .alcove { grid-template-columns: 1fr; }
  .alcove__side { display: none; }
  .kakejiku { grid-column: 1; }
  .tokonoma__text { grid-template-columns: 1fr; padding-left: 0; }
}

/* Despliegue del pergamino al cargar: la hoja se desenrolla con el peso del rodillo */
.kakejiku { --unroll: 2.1s; --unroll-ease: cubic-bezier(0.65, 0, 0.25, 1); transform-origin: 50% 0; }
.kakejiku__mount { clip-path: inset(-14px -14px -14px -14px); transition: clip-path var(--unroll) var(--unroll-ease); }
.kakejiku__roller { transition: top var(--unroll) var(--unroll-ease); }
.js .kakejiku:not(.is-open) .kakejiku__mount { clip-path: inset(-14px -14px 100% -14px); }
.js .kakejiku:not(.is-open) .kakejiku__roller { top: 4px; }
.js .kakejiku:not(.is-open) .alcove__video { opacity: 0; }
.kakejiku.is-open { animation: sway 1.8s var(--unroll) ease-out; }
@keyframes sway { 0% { transform: rotate(0); } 30% { transform: rotate(0.45deg); } 60% { transform: rotate(-0.25deg); } 85% { transform: rotate(0.08deg); } 100% { transform: rotate(0); } }

/* Olas seigaiha muy tenues */
.seigaiha {
  background-color: var(--plaster);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='24' viewBox='0 0 48 24'%3E%3Cg fill='none' stroke='%234b4a5e' stroke-opacity='.08' stroke-width='1'%3E%3Cpath d='M0 24a24 24 0 0 1 48 0M8 24a16 16 0 0 1 32 0M16 24a8 8 0 0 1 16 0'/%3E%3Cpath d='M-24 12a24 24 0 0 1 48 0M-16 12a16 16 0 0 1 32 0M-8 12a8 8 0 0 1 16 0M24 12a24 24 0 0 1 48 0M32 12a16 16 0 0 1 32 0M40 12a8 8 0 0 1 16 0'/%3E%3C/g%3E%3C/svg%3E");
}
.seigaiha--deep { background-color: var(--plaster-2); }

/* Ma: la cita respira en el vacío, con su título en vertical */
.ma__quote { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 1rem; align-items: start; margin-bottom: clamp(3rem, 7vw, 6rem); }
.ma__quote > div { grid-column: 5 / span 7; }
.ma__quote .creed__quote { max-width: 22em; }
.ma__quote > div p:last-child { color: var(--ink-soft); margin: 0; }
.ma__quote .tategaki { grid-column: 3; justify-self: end; color: var(--iris); }
@media (max-width: 760px) { .ma__quote > div { grid-column: 1 / -1; } .ma__quote .tategaki { grid-column: 1; grid-row: 1; justify-self: start; writing-mode: horizontal-tb; font-size: 0.95rem; letter-spacing: 0.3em; } }

/* Estaciones: las fases como crecimiento de la rama */
.seasons { position: relative; list-style: none; }
.season { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 1rem clamp(1rem, 2vw, 2rem); padding-block: clamp(2rem, 4vw, 3.5rem); border-top: 1px solid rgba(58, 42, 44, 0.2); align-items: center; }
.season__when { grid-column: 1 / span 3; }
.season__when .data { color: var(--iris); display: block; margin-bottom: 0.3rem; }
.season__when b { font-family: var(--font-display); font-size: 1.05rem; }
.season__body { grid-column: 4 / span 5; }
.season__body h3 { margin-bottom: 0.4rem; }
.season__body p { color: var(--ink-soft); margin: 0; }
.season__body .status { margin-top: 0.9rem; color: var(--rhodonite); }
.season__img { grid-column: 10 / span 3; }
.season__img img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 50%; }
.season:nth-child(even) .season__img img { border-radius: 0; clip-path: polygon(0 0, 100% 0, 100% 100%, 30% 100%, 0 70%); }
@media (max-width: 860px) {
  .season { grid-template-columns: 1fr 96px; }
  .season__when, .season__body { grid-column: 1; }
  .season__img { grid-column: 2; grid-row: 1 / span 2; }
}

.ikebana .ledger__item { border-top-color: var(--bronze); }
.ikebana .checklist li::before { background: var(--iris); border-radius: 50%; transform: none; }

/* Recuadro de cierre de Pioneers */
.apply-cta {
  position: relative; overflow: hidden; isolation: isolate;
  padding-block: clamp(5rem, 11vw, 9rem);
  background-color: var(--bronze); color: #f3ede4;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='24' viewBox='0 0 48 24'%3E%3Cg fill='none' stroke='%23f3ede4' stroke-opacity='.07' stroke-width='1'%3E%3Cpath d='M0 24a24 24 0 0 1 48 0M8 24a16 16 0 0 1 32 0M16 24a8 8 0 0 1 16 0'/%3E%3Cpath d='M-24 12a24 24 0 0 1 48 0M-16 12a16 16 0 0 1 32 0M-8 12a8 8 0 0 1 16 0M24 12a24 24 0 0 1 48 0M32 12a16 16 0 0 1 32 0M40 12a8 8 0 0 1 16 0'/%3E%3C/g%3E%3C/svg%3E"),
    radial-gradient(ellipse at 50% 120%, rgba(197, 41, 56, 0.45), transparent 60%);
}
.apply-cta::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 5px; background: var(--burn); }
.apply-cta__inner { display: grid; justify-items: center; text-align: center; gap: clamp(1.25rem, 2.5vw, 2rem); }
.apply-cta h2 { font-size: clamp(1.9rem, 1.4rem + 2.6vw, 3.6rem); color: #f7f1e8; margin: 0; }
.apply-cta p { color: #d6cbc4; margin: 0; }
.apply-cta__seal { width: 3rem; height: 3rem; font-size: 1.8rem; }
.apply-cta__btn { min-height: 60px; font-size: 1.05rem; padding-inline: 2rem 2.2rem; }
.apply-cta__btn:hover { --bg: var(--red-deep); }

/* ---------- Teléfono ---------- */
@media (max-width: 600px) {
  /* En columnas estrechas, cortar por frases deja renglones muy desiguales:
     el texto corrido vuelve al corte japonés normal y llena el renglón.
     Los titulares conservan el corte por frases. */
  .lead, .hero__lead, .contrasta { word-break: normal; }

  /* iOS amplía la página al enfocar un campo con letra menor de 16 px */
  .field input, .field select, .field textarea { font-size: 16px; }

  .spec dd { font-size: 1.05rem; }
  .link-arrow { padding-top: 0.7rem; } /* zona de toque más alta sin mover el subrayado */

  .map iframe { aspect-ratio: 1 / 1; }
  .nota-foto .frame img { aspect-ratio: 4 / 3; }
  .apply-cta p, .close-call p { text-wrap: balance; }

  /* Pie: las dos listas de enlaces lado a lado, con zona de toque amplia */
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 2rem 1.5rem; }
  .footer-brand, .footer-partner { grid-column: 1 / -1; }
  .footer-grid ul { gap: 0; }
  .footer-grid li a { display: inline-block; padding: 0.45rem 0; }
  .footer-bottom { margin-top: 2rem; }
}
@media (max-width: 900px) {
  /* Menú desplegado: iconos de redes con recuadro y zona de toque completa */
  .social--nav { gap: 0.5rem; margin: 1.75rem 0 0; }
  .social--nav a { border: 1px solid var(--rule-dark); }
}

/* ---------- Impresión ---------- */
@media print {
  .site-header, .nav-toggle, form { display: none !important; }
  body { background: #fff; color: #000; }
  .dark, .burn-field, .hero, .page-hero, .apply-cta { background: #fff !important; color: #000 !important; }
  .hero__media, .page-hero__media { display: none; }
}

/* ---------- Texto legal (個人情報の取扱い) ---------- */
.legal > * { max-width: 46rem; }
.legal h2 { font-size: var(--step-1); margin: 2.5rem 0 0.75rem; padding-top: 1.25rem; border-top: 1px solid var(--rule); }
.legal p { margin: 0 0 1rem; }
.legal a { text-decoration-color: var(--red); text-underline-offset: 4px; }
.legal__fecha { margin-top: 2.5rem; color: var(--ink-soft); font-size: 0.9rem; }
.consent a { text-decoration-color: var(--red); text-underline-offset: 3px; }
