/* ============================================
   Astraelia - Corporate Site
   "あなたの想いを、伝わる形へ。"
   ============================================ */

:root {
  /* Color */
  --c-white: #ffffff;
  --c-bg: #f7f8fc;
  --c-bg-soft: #f0f3fa;
  --c-ink: #2c3043;
  --c-ink-2: #5b607a;
  --c-ink-mute: #8a8fa8;
  --c-line: #e3e7f1;
  --c-line-soft: #ecf0f8;

  --c-blue: #b8c4dc;        /* blue gray */
  --c-blue-deep: #8a9bbd;
  --c-lav: #c9bfe0;         /* lavender accent */
  --c-lav-deep: #a899c8;

  /* Gradients */
  --g-hero: linear-gradient(135deg, #eef1f9 0%, #e6ecf7 35%, #ddd5ec 100%);
  --g-card: linear-gradient(180deg, rgba(255,255,255,0.85), rgba(255,255,255,0.6));
  --g-cta: linear-gradient(135deg, #a899c8 0%, #8a9bbd 100%);

  /* Type */
  --f-jp: "Noto Sans JP", "Hiragino Sans", system-ui, sans-serif;
  --f-jp-serif: "Noto Serif JP", "Hiragino Mincho ProN", serif;
  --f-en: "Cormorant Garamond", "Times New Roman", serif;

  /* Layout */
  --container: 1180px;
  --radius: 16px;
  --radius-lg: 28px;

  /* Shadow */
  --sh-sm: 0 4px 18px rgba(80, 95, 140, 0.08);
  --sh-md: 0 10px 40px rgba(80, 95, 140, 0.10);
  --sh-lg: 0 24px 70px rgba(80, 95, 140, 0.14);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--f-jp);
  font-weight: 400;
  color: var(--c-ink);
  background: var(--c-white);
  line-height: 1.75;
  letter-spacing: 0.04em;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; transition: opacity .2s, color .2s; }
a:hover { opacity: 0.75; }
button { font-family: inherit; cursor: pointer; border: 0; background: transparent; color: inherit; }
ul { list-style: none; padding: 0; margin: 0; }

/* ===================== HEADER ===================== */
.header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 100;
  background: rgba(255, 255, 255, 0.7);
  backdrop-filter: saturate(180%) blur(18px);
  -webkit-backdrop-filter: saturate(180%) blur(18px);
  border-bottom: 1px solid rgba(227, 231, 241, 0.5);
}
.header__inner {
  max-width: var(--container);
  margin: 0 auto;
  padding: 18px 32px;
  display: flex;
  align-items: center;
  gap: 28px;
}

.brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  line-height: 1;
}
.brand__name {
  font-family: var(--f-en);
  font-size: 22px;
  font-weight: 500;
  letter-spacing: 0.22em;
  color: var(--c-ink);
}
.brand__sub {
  font-family: var(--f-en);
  font-size: 9px;
  letter-spacing: 0.3em;
  color: var(--c-ink-mute);
  margin-top: 4px;
}

.gnav { margin-left: auto; }
.gnav__list {
  display: flex;
  gap: 28px;
}
.gnav__list a {
  font-family: var(--f-en);
  font-size: 13px;
  letter-spacing: 0.18em;
  color: var(--c-ink);
  font-weight: 400;
  position: relative;
}
.gnav__list a::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -6px;
  height: 1px;
  background: var(--c-lav-deep);
  transform: scaleX(0);
  transition: transform .25s;
}
.gnav__list a:hover { opacity: 1; }
.gnav__list a:hover::after { transform: scaleX(1); }

.contact-btn {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 12px 28px;
  border-radius: 999px;
  background: var(--g-cta);
  color: #fff;
  line-height: 1.2;
  box-shadow: 0 8px 22px rgba(168, 153, 200, 0.35);
  transition: transform .2s, box-shadow .2s;
}
.contact-btn:hover {
  opacity: 1;
  transform: translateY(-1px);
  box-shadow: 0 12px 28px rgba(168, 153, 200, 0.45);
}
.contact-btn__en {
  font-family: var(--f-en);
  font-size: 13px;
  letter-spacing: 0.2em;
  font-weight: 500;
}
.contact-btn__ja {
  font-size: 9.5px;
  letter-spacing: 0.15em;
  opacity: 0.92;
  margin-top: 2px;
}

.menu-btn {
  display: none;
  width: 44px;
  height: 44px;
  border-radius: 999px;
  border: 1px solid var(--c-line);
  background: rgba(255,255,255,0.6);
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  margin-left: 8px;
}
.menu-btn span {
  width: 18px;
  height: 1.5px;
  background: var(--c-ink);
  transition: transform .25s, opacity .25s;
}
.menu-btn[aria-expanded="true"] span:nth-child(1){ transform: translateY(6.5px) rotate(45deg); }
.menu-btn[aria-expanded="true"] span:nth-child(2){ opacity: 0; }
.menu-btn[aria-expanded="true"] span:nth-child(3){ transform: translateY(-6.5px) rotate(-45deg); }

.drawer {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100vw;
  height: 100vh;
  height: 100dvh; /* mobile-friendly dynamic viewport */
  background:
    linear-gradient(180deg, rgba(255,255,255,0.985) 0%, rgba(247,249,253,0.985) 100%),
    url("../images/hero-bg.jpg") center / cover no-repeat;
  padding: 90px 24px 60px;
  z-index: 99;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
}
.drawer[hidden] { display: none !important; }
.drawer__list {
  display: grid;
  gap: 0;
  max-width: 420px;
  margin: 0 auto;
}
.drawer__list li { list-style: none; }
.drawer__list a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 22px 8px;
  font-family: var(--f-en);
  font-size: 17px;
  letter-spacing: 0.22em;
  font-weight: 400;
  color: var(--c-ink);
  border-bottom: 1px solid var(--c-line);
}
.drawer__list a::after {
  content: "→";
  font-size: 14px;
  color: var(--c-lav-deep);
  opacity: 0.6;
}
.drawer__list a:hover {
  color: var(--c-lav-deep);
  opacity: 1;
  padding-left: 16px;
  transition: padding .25s, color .25s;
}
.drawer__cta {
  margin-top: 24px;
  background: linear-gradient(135deg, #ccbce0, #b5a6cf) !important;
  color: #fff !important;
  border-radius: 999px !important;
  text-align: center;
  justify-content: center !important;
  padding: 18px 28px !important;
  border-bottom: 0 !important;
  box-shadow: 0 10px 26px rgba(168,153,200,0.32);
}
.drawer__cta::after { content: "" !important; }
.drawer__cta:hover { padding-left: 28px !important; }

/* ===================== HERO ===================== */
.hero {
  position: relative;
  min-height: 100vh;
  padding: 120px 32px 60px;
  overflow: hidden;
  background:
    linear-gradient(100deg,
      rgba(247, 248, 252, 0.85) 0%,
      rgba(238, 241, 249, 0.55) 38%,
      rgba(221, 213, 236, 0.15) 70%,
      rgba(221, 213, 236, 0.05) 100%
    ),
    url("../images/hero-bg.jpg") center right / cover no-repeat,
    var(--g-hero);
  display: flex;
  align-items: center;
}
.hero__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
}
.hero__blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(70px);
  opacity: 0.4;
}
.hero__blob--1 {
  width: 460px; height: 460px;
  background: radial-gradient(closest-side, #d8c8ee 0%, transparent 70%);
  top: -100px; right: -120px;
}
.hero__blob--2 {
  width: 420px; height: 420px;
  background: radial-gradient(closest-side, #c5d3ed 0%, transparent 70%);
  bottom: -120px; left: -100px;
}
.hero__blob--3 {
  width: 280px; height: 280px;
  background: radial-gradient(closest-side, #efe4ff 0%, transparent 70%);
  top: 30%; right: 30%;
  opacity: 0.3;
}
.hero__sparkle {
  position: absolute;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 12px 2px #fff, 0 0 24px 6px rgba(255,255,255,0.5);
  animation: twinkle 4s ease-in-out infinite;
}
.hero__sparkle--1 { top: 22%; left: 14%; animation-delay: 0s; }
.hero__sparkle--2 { top: 64%; left: 8%; width: 4px; height: 4px; animation-delay: 1.2s; }
.hero__sparkle--3 { top: 38%; left: 46%; width: 5px; height: 5px; animation-delay: 2.4s; }
@keyframes twinkle {
  0%, 100% { opacity: 0.3; transform: scale(0.8); }
  50% { opacity: 1; transform: scale(1.2); }
}

.hero__inner {
  position: relative;
  max-width: var(--container);
  width: 100%;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 60px;
}
.hero__copy { max-width: 640px; }
.hero__title {
  font-family: var(--f-jp-serif);
  font-weight: 400;
  font-size: clamp(34px, 5.6vw, 64px);
  line-height: 1.45;
  letter-spacing: 0.06em;
  margin: 0 0 32px;
  color: var(--c-ink);
}
.hero__title-line {
  display: block;
  background: linear-gradient(90deg, #2c3043 0%, #5d5478 60%, #8a9bbd 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  animation: fadeUp 1s ease both;
}
.hero__title-line:nth-child(2) { animation-delay: 0.15s; }
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
.hero__lead {
  font-size: 15px;
  color: var(--c-ink-2);
  line-height: 2;
  margin: 0 0 40px;
  letter-spacing: 0.08em;
  animation: fadeUp 1s 0.35s ease both;
}
.hero__actions {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  animation: fadeUp 1s 0.5s ease both;
}

.hero__badge {
  width: 180px;
  height: 180px;
  border-radius: 50%;
  background: rgba(255,255,255,0.55);
  backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--sh-md);
  animation: float 6s ease-in-out infinite;
}
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}
.hero__badge-text {
  font-family: var(--f-jp-serif);
  font-size: 13px;
  text-align: center;
  line-height: 2;
  color: var(--c-ink);
  letter-spacing: 0.08em;
}

.hero__scroll {
  position: absolute;
  bottom: 30px;
  left: 32px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  z-index: 2;
}
.hero__scroll-text {
  font-family: var(--f-en);
  font-size: 10px;
  letter-spacing: 0.4em;
  color: var(--c-ink-2);
  writing-mode: vertical-rl;
}
.hero__scroll-line {
  width: 1px;
  height: 60px;
  background: var(--c-ink-mute);
  position: relative;
  overflow: hidden;
}
.hero__scroll-line::after {
  content: "";
  position: absolute;
  left: 0; top: -30px;
  width: 1px;
  height: 30px;
  background: linear-gradient(to bottom, transparent, var(--c-ink));
  animation: scrollLine 2s ease-in-out infinite;
}
@keyframes scrollLine {
  0% { top: -30px; }
  100% { top: 60px; }
}

.hero__ghost {
  position: absolute;
  bottom: 4px;
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--f-en);
  font-size: clamp(80px, 16vw, 200px);
  font-weight: 300;
  letter-spacing: 0.18em;
  color: rgba(255, 255, 255, 0.55);
  margin: 0;
  line-height: 1;
  pointer-events: none;
  white-space: nowrap;
}

/* ===================== Buttons ===================== */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 18px 36px;
  border-radius: 999px;
  font-size: 14px;
  letter-spacing: 0.12em;
  transition: transform .2s, box-shadow .2s, opacity .2s;
  cursor: pointer;
  border: 0;
  text-align: center;
  justify-content: center;
}
.btn:hover { opacity: 1; transform: translateY(-1px); }
.btn--primary {
  background: var(--g-cta);
  color: #fff;
  box-shadow: 0 12px 28px rgba(168, 153, 200, 0.35);
}
.btn--primary:hover { box-shadow: 0 16px 36px rgba(168, 153, 200, 0.45); }
.btn--ghost {
  background: rgba(255,255,255,0.7);
  color: var(--c-ink);
  border: 1px solid var(--c-line);
  backdrop-filter: blur(8px);
}
.btn--small { padding: 12px 24px; font-size: 13px; gap: 10px; }
.btn--lg { padding: 22px 56px; font-size: 15px; }
.btn__arrow {
  display: inline-block;
  transition: transform .25s;
}
.btn:hover .btn__arrow { transform: translateX(4px); }
.btn__arrow--left { transition: transform .25s; }
.btn:hover .btn__arrow--left { transform: translateX(-4px); }

/* ===================== SECTIONS ===================== */
.section {
  padding: 120px 32px;
  position: relative;
}
.section--soft {
  background: linear-gradient(180deg, #f7f8fc 0%, #f0f3fa 100%);
}
.section__inner {
  max-width: var(--container);
  margin: 0 auto;
}
.section__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin-bottom: 60px;
  gap: 24px;
  flex-wrap: wrap;
}
.section__title {
  font-family: var(--f-en);
  font-size: clamp(34px, 4.5vw, 48px);
  font-weight: 400;
  letter-spacing: 0.14em;
  margin: 0;
  color: var(--c-ink);
}
.section__sub {
  font-family: var(--f-jp-serif);
  font-size: 13px;
  letter-spacing: 0.2em;
  color: var(--c-ink-mute);
  margin: 8px 0 0;
}
.view-more {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  font-family: var(--f-en);
  font-size: 13px;
  letter-spacing: 0.22em;
  color: var(--c-ink-2);
  padding-bottom: 4px;
  border-bottom: 1px solid var(--c-ink-mute);
}
.view-more:hover { opacity: 1; color: var(--c-lav-deep); border-color: var(--c-lav-deep); }

/* ===================== SITE TYPES (Guide) ===================== */
.site-types-section {
  position: relative;
  background:
    linear-gradient(135deg, rgba(247,248,252,0.78) 0%, rgba(238,241,249,0.72) 50%, rgba(221,213,236,0.55) 100%),
    url("../images/hero-bg.jpg") center / cover no-repeat;
}
.site-types-section::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 320px; height: 320px;
  background: radial-gradient(closest-side, #b8a8d0 0%, transparent 70%);
  border-radius: 50%;
  filter: blur(20px);
  opacity: 0.35;
  pointer-events: none;
}

.site-types__head {
  text-align: center;
  margin-bottom: 28px;
  position: relative;
  z-index: 1;
}
.site-types__title-en {
  font-family: var(--f-en);
  font-size: clamp(44px, 6vw, 68px);
  font-weight: 400;
  letter-spacing: 0.14em;
  margin: 0;
  color: var(--c-ink);
  line-height: 1.1;
}
.site-types__title-ja {
  font-family: var(--f-jp-serif);
  font-size: clamp(15px, 2vw, 19px);
  letter-spacing: 0.08em;
  color: var(--c-ink);
  margin: 18px 0 0;
  font-weight: 400;
}
.site-types__deco {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 24px auto 0;
  max-width: 240px;
}
.site-types__deco::before,
.site-types__deco::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--c-ink-mute);
  opacity: 0.4;
}
.site-types__deco-icon {
  margin: 0 16px;
  font-size: 14px;
  color: var(--c-lav-deep);
}

.site-types__intro {
  text-align: center;
  max-width: 720px;
  margin: 36px auto 60px;
  font-size: 14.5px;
  line-height: 2;
  color: var(--c-ink-2);
  position: relative;
  z-index: 1;
}

.site-types {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-bottom: 50px;
  position: relative;
  z-index: 1;
}

.type-card {
  background: rgba(255,255,255,0.92);
  backdrop-filter: blur(14px);
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,0.95);
  box-shadow: 0 14px 40px rgba(120, 130, 160, 0.12);
  padding: 50px 28px 30px;
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 18px;
  transition: transform .3s, box-shadow .3s;
}
.type-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 20px 50px rgba(120, 130, 160, 0.18);
}

.type-card__badge {
  position: absolute;
  top: 22px;
  left: 50%;
  transform: translateX(-50%);
  padding: 6px 22px;
  border-radius: 999px;
  background: linear-gradient(135deg, #ccbce0 0%, #b5a6cf 100%);
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.2em;
  color: #fff;
  white-space: nowrap;
}

.type-card__title {
  font-family: var(--f-jp-serif);
  font-size: 22px;
  text-align: center;
  margin: 14px 0 0;
  color: var(--c-ink);
  letter-spacing: 0.06em;
  font-weight: 500;
}

.type-card__analogy {
  text-align: center;
  font-size: 12.5px;
  line-height: 2;
  color: var(--c-ink-2);
  margin: 0;
  letter-spacing: 0.04em;
}
.type-card__analogy strong {
  color: var(--c-ink);
  font-weight: 500;
}

/* Mockup visual */
.type-card__mockup {
  position: relative;
  aspect-ratio: 4/2.7;
  border-radius: 14px;
  background: linear-gradient(135deg, #e8edf6 0%, #d8c8ee 100%);
  overflow: hidden;
  padding: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.4);
}
.type-card__mockup--1 { background: linear-gradient(135deg, #d5e0f2 0%, #b9c8e2 100%); }
.type-card__mockup--2 { background: linear-gradient(135deg, #efe3eb 0%, #d8c8ee 100%); }
.type-card__mockup--3 { background: linear-gradient(135deg, #ece3f0 0%, #c9bfe0 100%); }

.mockup-pc {
  width: 78%;
  aspect-ratio: 16/10;
  background: #fff;
  border-radius: 6px 6px 2px 2px;
  position: relative;
  box-shadow: 0 10px 24px rgba(0,0,0,0.18);
  padding: 4px;
  overflow: hidden;
}
.mockup-pc::before {
  content: "";
  position: absolute;
  top: 2px; left: 50%;
  transform: translateX(-50%);
  width: 22%;
  height: 3px;
  background: rgba(0,0,0,0.08);
  border-radius: 4px;
  z-index: 1;
}
.mockup-pc__img {
  width: 100%;
  height: 100%;
  border-radius: 2px;
  background-size: cover;
  background-position: center top;
}

.mockup-sp {
  position: absolute;
  bottom: 16px;
  right: 20px;
  width: 22%;
  aspect-ratio: 9/18;
  background: #fff;
  border-radius: 10px;
  box-shadow: 0 10px 22px rgba(0,0,0,0.22);
  padding: 3px;
  overflow: hidden;
}
.mockup-sp__img {
  width: 100%;
  height: 100%;
  border-radius: 7px;
  background-size: cover;
  background-position: center top;
}

/* "こんな方におすすめ" divider */
.type-card__divider {
  display: flex;
  align-items: center;
  text-align: center;
  font-size: 11.5px;
  letter-spacing: 0.1em;
  color: var(--c-ink-mute);
  margin: 6px 0 0;
}
.type-card__divider::before,
.type-card__divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--c-line);
}
.type-card__divider::before { margin-right: 14px; }
.type-card__divider::after  { margin-left: 14px; }

/* Check list */
.type-card__list {
  display: grid;
  gap: 12px;
  margin: 0;
  padding: 0;
}
.type-card__list li {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--c-ink);
  line-height: 1.5;
}
.type-card__list li::before {
  content: "";
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='2,6.5 5,9 10,3.5'/></svg>") center/10px no-repeat,
    linear-gradient(135deg, #ccbce0 0%, #b5a6cf 100%);
  flex-shrink: 0;
}

/* Facts (PAGES / PRICE) */
.type-card__facts {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: auto;
  padding-top: 16px;
}
.fact {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 14px;
  border-radius: 12px;
  border: 1px solid var(--c-line-soft);
  background: rgba(255,255,255,0.5);
}
.fact__icon {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: linear-gradient(135deg, #f5f1fa, #eef0fa);
  color: var(--c-lav-deep);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.fact__body { display: flex; flex-direction: column; line-height: 1.2; }
.fact__label {
  font-family: var(--f-en);
  font-size: 9.5px;
  letter-spacing: 0.18em;
  color: var(--c-ink-mute);
  margin-bottom: 4px;
}
.fact__value {
  font-family: var(--f-jp-serif);
  font-size: 12.5px;
  color: var(--c-ink);
  letter-spacing: 0.02em;
}

/* "もっと詳しく" link */
.type-card__more {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 4px;
  padding: 10px 0;
  font-size: 12px;
  color: var(--c-lav-deep);
  letter-spacing: 0.06em;
  border-top: 1px dashed var(--c-line);
  transition: color .2s;
}
.type-card__more:hover { color: var(--c-ink); opacity: 1; }
.type-card__more::after {
  content: "→";
  transition: transform .25s;
}
.type-card__more:hover::after { transform: translateX(4px); }

/* Bottom callout */
.site-types__callout {
  display: flex;
  align-items: center;
  gap: 28px;
  padding: 26px 36px;
  border-radius: var(--radius-lg);
  background: rgba(255,255,255,0.92);
  border: 1px solid rgba(255,255,255,0.95);
  box-shadow: var(--sh-sm);
  position: relative;
  z-index: 1;
}
.site-types__callout-icon {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: linear-gradient(135deg, #ccbce0 0%, #b5a6cf 100%);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.site-types__callout-text {
  flex: 1;
  font-size: 14px;
  line-height: 1.9;
  color: var(--c-ink);
  letter-spacing: 0.04em;
}
.site-types__callout-text strong { color: var(--c-ink); font-weight: 500; }

/* === Service "what is" intro link === */
.what-is__more {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 12px;
  font-size: 12px;
  color: var(--c-lav-deep);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.what-is__more:hover { color: var(--c-ink); opacity: 1; }

/* === Simulator choice description === */
.choice__hint {
  display: block;
  font-size: 11px;
  line-height: 1.7;
  color: var(--c-ink-mute);
  margin-top: 6px;
  letter-spacing: 0;
}

/* === Service "what is" intro block === */
.what-is {
  padding: 22px 26px;
  border-radius: 14px;
  background: linear-gradient(135deg, #f5f1fa, #eef0fa);
  margin-bottom: 22px;
  display: flex;
  gap: 16px;
  align-items: flex-start;
}
.what-is__label {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.16em;
  color: var(--c-lav-deep);
  white-space: nowrap;
  margin-top: 3px;
}
.what-is__text {
  font-family: var(--f-jp-serif);
  font-size: 13.5px;
  line-height: 1.95;
  color: var(--c-ink);
  margin: 0;
}
.what-is__text strong { color: var(--c-lav-deep); font-weight: 500; }

/* ===================== SERVICE ===================== */
.services {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}
.service-card {
  padding: 36px 28px;
  border-radius: var(--radius-lg);
  background: var(--g-card);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.8);
  box-shadow: var(--sh-sm);
  transition: transform .3s, box-shadow .3s;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.service-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--sh-md);
}
.service-card__icon {
  width: 54px;
  height: 54px;
  border-radius: 50%;
  background: linear-gradient(135deg, #eef0fa, #f3edfa);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--c-lav-deep);
}
.service-card__head { display: flex; flex-direction: column; gap: 4px; }
.service-card__title-en {
  font-family: var(--f-en);
  font-size: 18px;
  font-weight: 500;
  letter-spacing: 0.08em;
  margin: 0;
  color: var(--c-ink);
}
.service-card__title-ja {
  font-family: var(--f-jp-serif);
  font-size: 13px;
  letter-spacing: 0.1em;
  color: var(--c-ink-2);
  margin: 0;
}
.service-card__text {
  font-size: 13.5px;
  line-height: 1.95;
  color: var(--c-ink-2);
  margin: 0;
}

/* ===================== WORKS ===================== */
.works {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}
.work-card {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.work-card__visual {
  position: relative;
  aspect-ratio: 4/3;
  border-radius: 18px;
  background: linear-gradient(135deg, #e6ecf7 0%, #d8e0ee 100%);
  overflow: hidden;
  padding: 22px 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--sh-sm);
  transition: transform .3s;
}
.work-card:hover .work-card__visual { transform: translateY(-4px); }
.work-card__visual--1 { background: linear-gradient(135deg, #e9d6f0 0%, #e7d9ea 100%); }
.work-card__visual--2 { background: linear-gradient(135deg, #c8d3e8 0%, #aeb9d3 100%); }
.work-card__visual--3 { background: linear-gradient(135deg, #f0e4dd 0%, #e6d5cc 100%); }
.work-card__visual--4 { background: linear-gradient(135deg, #4d4a55 0%, #6b6471 100%); }

/* Photo variant — hides device mockups, shows full bleed image */
.work-card__visual--photo {
  padding: 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  position: relative;
}
.work-card__visual--photo > * { display: none; }
.work-card__visual--photo::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 60%, rgba(0,0,0,0.08));
  pointer-events: none;
}

.device--desktop {
  width: 78%;
  aspect-ratio: 16/10;
  background: #fff;
  border-radius: 6px 6px 2px 2px;
  position: relative;
  box-shadow: 0 8px 22px rgba(0,0,0,0.12);
  padding: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.device--desktop::before {
  content: "";
  position: absolute;
  top: 4px; left: 50%;
  transform: translateX(-50%);
  width: 22%;
  height: 4px;
  background: rgba(0,0,0,0.06);
  border-radius: 4px;
}
.device--desktop span {
  width: 100%;
  height: 100%;
  border-radius: 2px;
  background:
    linear-gradient(120deg, rgba(255,255,255,0.5), rgba(255,255,255,0)),
    linear-gradient(180deg, #f5f0fa, #e8e0f0);
  display: block;
}
.work-card__visual--2 .device--desktop span { background: linear-gradient(180deg, #f0f4fc, #d8e0ee); }
.work-card__visual--3 .device--desktop span { background: linear-gradient(180deg, #faf2eb, #e8d8cc); }
.work-card__visual--4 .device--desktop span { background: linear-gradient(180deg, #2c2a32, #4a4751); }

.device--phone {
  position: absolute;
  bottom: 18px;
  right: 22px;
  width: 22%;
  aspect-ratio: 9/19;
  background: #fff;
  border-radius: 10px;
  box-shadow: 0 10px 22px rgba(0,0,0,0.18);
  padding: 4px;
}
.device--phone span {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 7px;
  background: linear-gradient(180deg, #f5f0fa, #d8d0e8);
}
.work-card__visual--2 .device--phone span { background: linear-gradient(180deg, #e0e8f5, #b9c5de); }
.work-card__visual--3 .device--phone span { background: linear-gradient(180deg, #f8ede0, #d9c6b5); }
.work-card__visual--4 .device--phone span { background: linear-gradient(180deg, #3a3742, #5a5663); }

.work-card__body {
  padding: 18px 4px 4px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.work-card__cat {
  display: inline-block;
  align-self: flex-start;
  padding: 4px 12px;
  border-radius: 4px;
  background: rgba(168, 153, 200, 0.12);
  font-size: 11px;
  color: var(--c-lav-deep);
  letter-spacing: 0.08em;
}
.work-card__title {
  font-family: var(--f-jp-serif);
  font-size: 16px;
  margin: 4px 0 0;
  color: var(--c-ink);
  letter-spacing: 0.06em;
  font-weight: 500;
}
.work-card__client {
  font-size: 12.5px;
  color: var(--c-ink-2);
  margin: 0;
  letter-spacing: 0.04em;
}
.work-card__more {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 10px;
  padding: 10px 18px;
  border-radius: 999px;
  background: linear-gradient(135deg, #f5f1fa, #eef0fa);
  font-size: 12px;
  color: var(--c-lav-deep);
  letter-spacing: 0.08em;
  transition: background .2s, gap .2s;
}
.work-card:hover .work-card__more {
  background: linear-gradient(135deg, #ece4f3, #e2deef);
  gap: 10px;
}

/* Legacy support — kept for backward compatibility */
.work-card__name {
  font-family: var(--f-jp-serif);
  font-size: 15px;
  margin: 0 0 10px;
  color: var(--c-ink);
  letter-spacing: 0.06em;
}
.work-card__tags { display: flex; flex-wrap: wrap; gap: 6px; }
.tag {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 999px;
  border: 1px solid var(--c-line);
  background: #fff;
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--c-ink-2);
}

/* === Pill-style filter (used on WORKS and BLOG pages) === */
.pill-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  margin: 0 0 50px;
}
.pill-filter button {
  padding: 12px 26px;
  border-radius: 999px;
  background: rgba(255,255,255,0.7);
  border: 1px solid var(--c-line);
  font-family: var(--f-jp-serif);
  font-size: 13px;
  color: var(--c-ink-2);
  letter-spacing: 0.08em;
  transition: all .2s;
}
.pill-filter button:hover { border-color: var(--c-lav); color: var(--c-ink); background: #fff; }
.pill-filter button.is-active {
  background: linear-gradient(135deg, #ccbce0, #b5a6cf);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 8px 22px rgba(168,153,200,0.32);
}

/* === Sidebar CTA card (lavender) === */
.cta-card {
  padding: 32px 26px;
  border-radius: 16px;
  background: linear-gradient(135deg, #ddd5ec 0%, #ccbce0 100%);
  text-align: center;
  color: var(--c-ink);
}
.cta-card__title {
  font-family: var(--f-jp-serif);
  font-size: 15px;
  margin: 0 0 12px;
  letter-spacing: 0.06em;
  line-height: 1.6;
  color: var(--c-ink);
}
.cta-card__text {
  font-size: 11.5px;
  line-height: 1.85;
  margin: 0 0 18px;
  color: var(--c-ink-2);
}
.cta-card .btn {
  display: inline-flex;
  padding: 12px 24px;
  font-size: 12px;
  background: #fff;
  color: var(--c-lav-deep);
  box-shadow: 0 6px 18px rgba(80,95,140,0.12);
}
.cta-card .btn:hover {
  background: var(--c-white);
  transform: translateY(-2px);
}

/* === "もっと見る" pill button === */
.load-more {
  display: block;
  width: fit-content;
  margin: 50px auto 0;
  padding: 18px 56px;
  border-radius: 999px;
  background: rgba(255,255,255,0.85);
  border: 1px solid var(--c-line);
  font-family: var(--f-jp-serif);
  font-size: 13px;
  color: var(--c-ink);
  letter-spacing: 0.1em;
  cursor: pointer;
  transition: all .25s;
}
.load-more:hover {
  background: linear-gradient(135deg, #ccbce0, #b5a6cf);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 10px 26px rgba(168,153,200,0.3);
}
.load-more__icon {
  display: inline-block;
  margin-left: 10px;
  transition: transform .25s;
}
.load-more:hover .load-more__icon { transform: translateY(3px); }

/* ===================== BLOG ===================== */
.blog {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}
.blog-card {
  display: flex;
  flex-direction: column;
  gap: 16px;
  transition: transform .3s;
}
.blog-card:hover { transform: translateY(-4px); opacity: 1; }
.blog-card__thumb {
  aspect-ratio: 4/3;
  border-radius: 14px;
  box-shadow: var(--sh-sm);
  position: relative;
  overflow: hidden;
}
.blog-card__thumb::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,0.4), rgba(255,255,255,0));
}
.blog-card__thumb--1 { background: linear-gradient(135deg, #f0e4f0, #d8c4e2 80%, #b8a8d0); }
.blog-card__thumb--2 { background: linear-gradient(135deg, #f3ece2, #e4d8c5 80%, #c8b8a0); }
.blog-card__thumb--3 { background: linear-gradient(135deg, #e8edf5, #c8d2e5 80%, #a8b4cc); }
.blog-card__thumb--4 { background: linear-gradient(135deg, #ece6d9, #d4cbb8 80%, #b0a890); }
.blog-card__body { display: flex; flex-direction: column; gap: 8px; padding: 0 2px; }
.blog-card__cat {
  display: inline-block;
  align-self: flex-start;
  padding: 3px 10px;
  border-radius: 4px;
  background: rgba(168, 153, 200, 0.12);
  font-size: 11px;
  color: var(--c-lav-deep);
  letter-spacing: 0.08em;
}
.blog-card__title {
  font-family: var(--f-jp-serif);
  font-size: 14.5px;
  line-height: 1.7;
  margin: 0;
  color: var(--c-ink);
  letter-spacing: 0.04em;
}
.blog-card__date {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.15em;
  color: var(--c-ink-mute);
}

/* ===================== CTA ROW (SIM + CONTACT) ===================== */
.cta-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  align-items: stretch;
}

/* Simulator */
.simulator,
.contact-cta {
  background: rgba(255,255,255,0.85);
  backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,0.9);
  border-radius: var(--radius-lg);
  padding: 40px;
  box-shadow: var(--sh-md);
  display: flex;
  flex-direction: column;
}

.simulator__head { text-align: center; margin-bottom: 16px; }
.simulator__title {
  font-family: var(--f-jp-serif);
  font-size: 22px;
  margin: 0 0 8px;
  letter-spacing: 0.08em;
  color: var(--c-ink);
}
.simulator__sub {
  font-size: 12px;
  color: var(--c-ink-2);
  margin: 0;
}
.simulator__steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  margin: 24px 0 28px;
  position: relative;
}
.simulator__steps::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 12%;
  right: 12%;
  height: 1px;
  background: var(--c-line);
  z-index: 0;
}
.simulator__step {
  position: relative;
  z-index: 1;
  text-align: center;
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--c-ink-mute);
  padding-top: 22px;
}
.simulator__step::before {
  content: "";
  position: absolute;
  top: 0; left: 50%;
  transform: translateX(-50%);
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: #fff;
  border: 1.5px solid var(--c-line);
  transition: background .25s, border-color .25s;
}
.simulator__step.is-active::before,
.simulator__step.is-done::before {
  background: var(--c-lav-deep);
  border-color: var(--c-lav-deep);
  box-shadow: 0 0 0 4px rgba(168, 153, 200, 0.18);
}
.simulator__step.is-active { color: var(--c-ink); font-weight: 500; }

.simulator__panel { display: none; }
.simulator__panel.is-active { display: block; animation: fadeIn .3s ease; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }

.simulator__q {
  font-family: var(--f-jp-serif);
  font-size: 13px;
  text-align: center;
  margin: 0 0 18px;
  color: var(--c-ink);
  letter-spacing: 0.08em;
}

.choices {
  display: grid;
  gap: 12px;
  margin-bottom: 24px;
}
.choices--3 { grid-template-columns: repeat(3, 1fr); }
.choices--opts { grid-template-columns: repeat(2, 1fr); }
.choice {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 20px 12px;
  border-radius: 14px;
  background: #fff;
  border: 1.5px solid var(--c-line);
  transition: all .25s;
  text-align: center;
  position: relative;
}
.choice:hover {
  border-color: var(--c-lav);
  transform: translateY(-2px);
}
.choice.is-selected {
  border-color: var(--c-lav-deep);
  background: linear-gradient(180deg, #fff, #f5f1fa);
  box-shadow: 0 8px 18px rgba(168,153,200,0.2);
}
.choice.is-selected::after {
  content: "✓";
  position: absolute;
  top: 8px; right: 10px;
  width: 18px; height: 18px;
  border-radius: 50%;
  background: var(--c-lav-deep);
  color: #fff;
  font-size: 11px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.choice__ic {
  width: 40px; height: 40px;
  border-radius: 10px;
  background: linear-gradient(135deg, #f0eef8, #ebe5f5);
  display: flex; align-items: center; justify-content: center;
  color: var(--c-lav-deep);
  margin-bottom: 2px;
}
.choice__name {
  font-family: var(--f-jp-serif);
  font-size: 12.5px;
  color: var(--c-ink);
  letter-spacing: 0.04em;
}
.choice__price {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.06em;
  color: var(--c-ink-mute);
}
.choice--opt {
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  padding: 14px 18px;
  text-align: left;
  gap: 12px;
}
.choice--opt > span:first-child {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
}
.choice--opt .choice__hint { margin-top: 0; }

.simulator__nav {
  display: flex;
  justify-content: center;
  margin-top: auto;
  padding-top: 8px;
}
.simulator__nav--split { justify-content: space-between; }

.result {
  text-align: center;
  padding: 16px 0 8px;
}
.result__label {
  font-size: 12px;
  color: var(--c-ink-mute);
  margin: 0 0 6px;
  letter-spacing: 0.1em;
}
.result__price {
  font-family: var(--f-en);
  font-size: 44px;
  margin: 0 0 18px;
  color: var(--c-lav-deep);
  letter-spacing: 0.04em;
}
.result__unit {
  font-size: 16px;
  margin-left: 6px;
  color: var(--c-ink-2);
}
.result__list {
  text-align: left;
  background: #f7f8fc;
  border-radius: 12px;
  padding: 16px 22px;
  margin: 0 auto 16px;
  max-width: 360px;
  font-size: 12.5px;
  color: var(--c-ink-2);
}
.result__list li {
  display: flex;
  justify-content: space-between;
  padding: 6px 0;
  border-bottom: 1px dashed var(--c-line);
}
.result__list li:last-child { border-bottom: 0; }
.result__note {
  font-size: 11px;
  color: var(--c-ink-mute);
  margin: 0 0 18px;
  line-height: 1.7;
}

/* Contact CTA */
.contact-cta {
  align-items: center;
  text-align: center;
  justify-content: center;
  gap: 18px;
  position: relative;
  overflow: hidden;
}
.contact-cta::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><circle cx='30' cy='180' r='40' fill='%23d8c8ee' opacity='0.18'/><circle cx='180' cy='30' r='50' fill='%23c5d3ed' opacity='0.18'/></svg>") no-repeat center/cover;
  pointer-events: none;
}
.contact-cta > * { position: relative; z-index: 1; }
.contact-cta__title {
  font-family: var(--f-jp-serif);
  font-size: 26px;
  margin: 0;
  letter-spacing: 0.08em;
  color: var(--c-ink);
}
.contact-cta__text {
  font-size: 13.5px;
  color: var(--c-ink-2);
  line-height: 2;
  margin: 0;
}
.contact-cta__points {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  justify-content: center;
  margin: 4px 0 4px;
}
.contact-cta__points li {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border-radius: 999px;
  background: #fff;
  border: 1px solid var(--c-line);
  font-size: 12px;
  color: var(--c-ink-2);
}
.contact-cta__points li svg { color: var(--c-lav-deep); }

/* ===================== FOOTER ===================== */
.footer {
  background: linear-gradient(180deg, #f0f3fa 0%, #e8edf6 100%);
  padding: 60px 32px 24px;
  margin-top: 0;
  position: relative;
}
.footer__inner {
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 40px;
  padding-bottom: 32px;
  border-bottom: 1px solid var(--c-line);
}
.footer__brand { display: flex; flex-direction: column; line-height: 1; }
.footer__brand-name {
  font-family: var(--f-en);
  font-size: 20px;
  letter-spacing: 0.22em;
  color: var(--c-ink);
  font-weight: 500;
}
.footer__brand-sub {
  font-family: var(--f-en);
  font-size: 9px;
  letter-spacing: 0.3em;
  color: var(--c-ink-mute);
  margin-top: 4px;
}
.footer__nav ul {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 24px;
}
.footer__nav a {
  font-family: var(--f-en);
  font-size: 12px;
  letter-spacing: 0.18em;
  color: var(--c-ink-2);
}
.footer__right { display: flex; align-items: center; gap: 24px; }
.footer__contact {
  display: inline-flex;
  align-items: center;
  padding: 12px 28px;
  border-radius: 999px;
  background: #fff;
  border: 1px solid var(--c-line);
  font-family: var(--f-en);
  font-size: 12px;
  letter-spacing: 0.2em;
  color: var(--c-ink);
}
.footer__sns { display: flex; gap: 14px; }
.footer__sns a {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--c-ink-2);
  border: 1px solid var(--c-line);
}
.footer__sns a:hover { color: var(--c-lav-deep); border-color: var(--c-lav); opacity: 1; }

.footer__bottom {
  max-width: var(--container);
  margin: 0 auto;
  padding-top: 20px;
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  font-size: 11px;
  color: var(--c-ink-mute);
  letter-spacing: 0.08em;
}
.footer__tag {
  font-family: var(--f-jp-serif);
  margin: 0;
}
.footer__copy {
  font-family: var(--f-en);
  letter-spacing: 0.12em;
  margin: 0;
}

/* ===================== RESPONSIVE ===================== */
@media (max-width: 1080px) {
  .services, .works, .blog { grid-template-columns: repeat(2, 1fr); }
  .cta-row { grid-template-columns: 1fr; }
  .site-types { grid-template-columns: 1fr; max-width: 560px; margin: 0 auto 50px; }
  .site-types__callout { flex-direction: column; text-align: center; padding: 30px 24px; }
}

@media (max-width: 860px) {
  .header__inner { padding: 14px 20px; gap: 12px; }
  .gnav, .contact-btn { display: none; }
  .menu-btn { display: flex; margin-left: auto; }

  .hero { padding: 100px 20px 60px; min-height: auto; }
  .hero__inner { grid-template-columns: 1fr; gap: 28px; }
  .hero__badge {
    width: 130px; height: 130px;
    margin: 0 auto;
  }
  .hero__badge-text { font-size: 11px; }
  .hero__scroll { display: none; }
  .hero__ghost { font-size: 70px; bottom: 8px; }

  .section { padding: 80px 20px; }
  .section__head { flex-direction: column; align-items: flex-start; gap: 16px; }

  .simulator, .contact-cta { padding: 28px 22px; }
  .choices--3 { grid-template-columns: 1fr; }
  .choices--opts { grid-template-columns: 1fr; }
  .simulator__steps { gap: 6px; }
  .simulator__step { font-size: 9.5px; letter-spacing: 0.12em; }
  .result__price { font-size: 36px; }

  .footer__inner {
    grid-template-columns: 1fr;
    text-align: center;
    gap: 22px;
  }
  .footer__nav ul { justify-content: center; }
  .footer__right { justify-content: center; }
  .footer__bottom { flex-direction: column; align-items: center; text-align: center; }
}

@media (max-width: 480px) {
  .services, .works, .blog { grid-template-columns: 1fr; }
  .hero__actions { flex-direction: column; }
  .hero__actions .btn { width: 100%; }
}

/* ============================================
   SUB-PAGE STYLES
   ============================================ */

/* Page hero */
.page-hero {
  position: relative;
  padding: 160px 32px 80px;
  background: var(--g-hero);
  overflow: hidden;
  text-align: center;
}
.page-hero__inner {
  position: relative;
  z-index: 2;
  max-width: var(--container);
  margin: 0 auto;
}
.page-hero__bg {
  position: absolute; inset: 0; pointer-events: none; overflow: hidden;
}
.page-hero__bg::before, .page-hero__bg::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  filter: blur(70px);
  opacity: 0.55;
}
.page-hero__bg::before {
  width: 420px; height: 420px;
  background: radial-gradient(closest-side, #d8c8ee 0%, transparent 70%);
  top: -120px; right: -100px;
}
.page-hero__bg::after {
  width: 360px; height: 360px;
  background: radial-gradient(closest-side, #c5d3ed 0%, transparent 70%);
  bottom: -120px; left: -80px;
}
.breadcrumb {
  display: flex;
  justify-content: center;
  gap: 10px;
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.2em;
  color: var(--c-ink-mute);
  margin: 0 0 20px;
}
.breadcrumb a:hover { color: var(--c-lav-deep); opacity: 1; }
.breadcrumb__sep { opacity: 0.5; }
.page-hero__title {
  font-family: var(--f-en);
  font-size: clamp(40px, 6vw, 64px);
  font-weight: 400;
  letter-spacing: 0.16em;
  margin: 0 0 10px;
  color: var(--c-ink);
}
.page-hero__sub {
  font-family: var(--f-jp-serif);
  font-size: 13px;
  letter-spacing: 0.2em;
  color: var(--c-ink-2);
  margin: 0;
}

/* Generic block layouts */
.block {
  padding: 100px 32px;
}
.block__inner {
  max-width: var(--container);
  margin: 0 auto;
}
.block__title-row { text-align: center; margin-bottom: 56px; }
.block__title {
  font-family: var(--f-en);
  font-size: clamp(28px, 3.5vw, 38px);
  font-weight: 400;
  letter-spacing: 0.14em;
  margin: 0 0 8px;
  color: var(--c-ink);
}
.block__sub {
  font-family: var(--f-jp-serif);
  font-size: 13px;
  letter-spacing: 0.18em;
  color: var(--c-ink-mute);
  margin: 0;
}

/* Lead paragraph */
.lead {
  font-family: var(--f-jp-serif);
  font-size: 18px;
  line-height: 2.1;
  color: var(--c-ink);
  text-align: center;
  max-width: 720px;
  margin: 0 auto 40px;
  letter-spacing: 0.06em;
}

/* About: message card */
.message-card {
  background: var(--g-card);
  backdrop-filter: blur(10px);
  border-radius: var(--radius-lg);
  border: 1px solid rgba(255,255,255,0.85);
  box-shadow: var(--sh-md);
  padding: 60px;
  max-width: 880px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 50px;
  align-items: start;
}
.message-card__photo {
  width: 200px; height: 200px;
  border-radius: 50%;
  background: linear-gradient(135deg, #e8d8ee 0%, #c5d3ed 100%);
  position: relative;
  overflow: hidden;
  box-shadow: var(--sh-md);
  flex-shrink: 0;
}
.message-card__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
}
.message-card__text { font-size: 14.5px; line-height: 2; color: var(--c-ink-2); }
.message-card__text p { margin: 0 0 16px; }
.message-card__sign {
  margin-top: 16px;
  font-family: var(--f-jp-serif);
  font-size: 14px;
  color: var(--c-ink);
}
.message-card__sign small {
  display: block;
  font-size: 11px;
  color: var(--c-ink-mute);
  letter-spacing: 0.1em;
  margin-top: 4px;
}

/* Philosophy / Mission cards */
.values {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
  max-width: 880px;
  margin: 0 auto;
}
.value-card {
  padding: 40px 32px;
  border-radius: var(--radius-lg);
  background: rgba(255,255,255,0.85);
  border: 1px solid rgba(255,255,255,0.85);
  box-shadow: var(--sh-sm);
}
.value-card__num {
  font-family: var(--f-en);
  font-size: 14px;
  letter-spacing: 0.2em;
  color: var(--c-lav-deep);
  margin: 0 0 14px;
}
.value-card__title {
  font-family: var(--f-jp-serif);
  font-size: 22px;
  letter-spacing: 0.08em;
  margin: 0 0 16px;
  color: var(--c-ink);
}
.value-card__text {
  font-size: 13.5px;
  line-height: 2;
  color: var(--c-ink-2);
  margin: 0;
}

/* Service detail */
.service-block {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  align-items: center;
  padding: 80px 0;
  border-bottom: 1px solid var(--c-line-soft);
}
.service-block:last-child { border-bottom: 0; }
.service-block--reverse { direction: rtl; }
.service-block--reverse > * { direction: ltr; }
.service-block__visual {
  aspect-ratio: 4/3;
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, #e8edf6 0%, #d8c8ee 100%);
  position: relative;
  overflow: hidden;
  box-shadow: var(--sh-md);
  display: flex;
  align-items: center;
  justify-content: center;
}
.service-block__visual--2 { background: linear-gradient(135deg, #ece4f3 0%, #c5d3ed 100%); }
.service-block__visual--3 { background: linear-gradient(135deg, #f0e4dd 0%, #d8c8ee 100%); }
.service-block__visual--4 { background: linear-gradient(135deg, #d8e0ee 0%, #b8c4dc 100%); }
.service-block__visual svg { color: rgba(255,255,255,0.9); }
.service-block__num {
  font-family: var(--f-en);
  font-size: 12px;
  letter-spacing: 0.3em;
  color: var(--c-lav-deep);
  margin: 0 0 14px;
}
.service-block__title-en {
  font-family: var(--f-en);
  font-size: 32px;
  letter-spacing: 0.1em;
  margin: 0 0 6px;
  color: var(--c-ink);
}
.service-block__title-ja {
  font-family: var(--f-jp-serif);
  font-size: 16px;
  letter-spacing: 0.1em;
  color: var(--c-ink-2);
  margin: 0 0 20px;
}
.service-block__text {
  font-size: 14px;
  line-height: 2;
  color: var(--c-ink-2);
  margin: 0 0 24px;
}
.service-block__features {
  display: grid;
  gap: 10px;
}
.service-block__features li {
  position: relative;
  padding-left: 22px;
  font-size: 13.5px;
  color: var(--c-ink-2);
  line-height: 1.9;
}
.service-block__features li::before {
  content: "";
  position: absolute;
  left: 0; top: 11px;
  width: 12px; height: 1.5px;
  background: var(--c-lav-deep);
}
.service-block__price {
  margin-top: 20px;
  padding: 14px 22px;
  display: inline-flex;
  flex-direction: column;
  background: linear-gradient(135deg, #f5f1fa, #eef0fa);
  border-radius: 12px;
}
.service-block__price-label {
  font-size: 11px;
  letter-spacing: 0.15em;
  color: var(--c-ink-mute);
}
.service-block__price-value {
  font-family: var(--f-en);
  font-size: 22px;
  color: var(--c-lav-deep);
  letter-spacing: 0.04em;
}

/* ============================================
   FLOW — Timeline layout (matches FLOW page reference)
   ============================================ */
.flow-timeline {
  max-width: 1080px;
  margin: 0 auto;
  position: relative;
}
.flow-step {
  display: grid;
  grid-template-columns: 60px 80px 1fr 280px;
  gap: 24px;
  align-items: center;
  padding: 22px 0;
  position: relative;
}
/* Vertical timeline line between step number and icon */
.flow-step::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 100px;
  width: 1px;
  background: var(--c-line);
  z-index: 0;
}
.flow-step:first-child::before { top: 50%; }
.flow-step:last-child::before  { bottom: 50%; }

.flow-step__num {
  font-family: var(--f-en);
  font-size: 24px;
  color: var(--c-ink-mute);
  letter-spacing: 0.06em;
  text-align: center;
  z-index: 1;
}
.flow-step__icon {
  width: 80px;
  height: 80px;
  border-radius: 50%;
  background: linear-gradient(135deg, #ffffff, #f5f1fa);
  border: 1px solid rgba(168, 153, 200, 0.25);
  box-shadow: 0 8px 22px rgba(168, 153, 200, 0.18);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--c-lav-deep);
  z-index: 2;
  position: relative;
}
.flow-step__body {
  background: rgba(255, 255, 255, 0.92);
  border-radius: 16px;
  padding: 26px 30px;
  border: 1px solid rgba(255, 255, 255, 0.95);
  box-shadow: 0 8px 28px rgba(120, 130, 160, 0.1);
  z-index: 1;
}
.flow-step__title {
  font-family: var(--f-jp-serif);
  font-size: 17px;
  letter-spacing: 0.08em;
  margin: 0 0 10px;
  color: var(--c-ink);
  font-weight: 500;
}
.flow-step__text {
  font-size: 13px;
  line-height: 1.95;
  color: var(--c-ink-2);
  margin: 0;
  letter-spacing: 0.04em;
}
.flow-step__photo {
  aspect-ratio: 4/2.3;
  border-radius: 16px;
  background-size: cover;
  background-position: center;
  box-shadow: 0 8px 22px rgba(120, 130, 160, 0.15);
}

/* Legacy flow used on service.html#flow — kept for backward compat */
.flow {
  max-width: 760px;
  margin: 0 auto;
  display: grid;
  gap: 20px;
}
.flow__item {
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: 28px;
  align-items: flex-start;
  padding: 28px 32px;
  background: rgba(255,255,255,0.85);
  border: 1px solid var(--c-line-soft);
  border-radius: var(--radius);
  position: relative;
}
.flow__item:not(:last-child)::after {
  content: "";
  position: absolute;
  bottom: -14px;
  left: 76px;
  width: 1px;
  height: 14px;
  background: var(--c-line);
}
.flow__num {
  font-family: var(--f-en);
  font-size: 34px;
  color: var(--c-lav-deep);
  letter-spacing: 0.04em;
  line-height: 1;
}
.flow__title {
  font-family: var(--f-jp-serif);
  font-size: 16px;
  letter-spacing: 0.08em;
  margin: 0 0 8px;
  color: var(--c-ink);
}
.flow__text {
  font-size: 13px;
  line-height: 1.9;
  color: var(--c-ink-2);
  margin: 0;
}

/* Works list page */
.works-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  margin-bottom: 50px;
}
.works-filter button {
  padding: 10px 22px;
  border-radius: 999px;
  background: #fff;
  border: 1px solid var(--c-line);
  font-size: 12px;
  color: var(--c-ink-2);
  letter-spacing: 0.08em;
  transition: all .2s;
}
.works-filter button:hover { border-color: var(--c-lav); color: var(--c-ink); }
.works-filter button.is-active {
  background: var(--g-cta);
  color: #fff;
  border-color: transparent;
}
.works--grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
}

/* Blog list */
.blog--list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
}

/* FAQ */
.faq {
  max-width: 820px;
  margin: 0 auto;
  display: grid;
  gap: 12px;
}
.faq__item {
  background: rgba(255,255,255,0.85);
  border: 1px solid var(--c-line-soft);
  border-radius: var(--radius);
  overflow: hidden;
}
.faq__q {
  display: flex;
  align-items: center;
  gap: 18px;
  width: 100%;
  padding: 22px 28px;
  text-align: left;
  font-family: var(--f-jp-serif);
  font-size: 14.5px;
  letter-spacing: 0.05em;
  color: var(--c-ink);
  transition: background .2s;
}
.faq__q:hover { background: rgba(168,153,200,0.05); }
.faq__q-mark {
  font-family: var(--f-en);
  font-size: 18px;
  color: var(--c-lav-deep);
  letter-spacing: 0;
  width: 24px;
  flex-shrink: 0;
}
.faq__q-text { flex: 1; }
.faq__q-toggle {
  width: 28px; height: 28px;
  border-radius: 50%;
  border: 1px solid var(--c-line);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  flex-shrink: 0;
  transition: transform .25s, background .25s;
}
.faq__q-toggle::before,
.faq__q-toggle::after {
  content: "";
  position: absolute;
  background: var(--c-ink-2);
  transition: opacity .25s;
}
.faq__q-toggle::before { width: 10px; height: 1.5px; }
.faq__q-toggle::after  { width: 1.5px; height: 10px; }
.faq__item.is-open .faq__q-toggle {
  background: var(--c-lav-deep);
  border-color: var(--c-lav-deep);
  transform: rotate(180deg);
}
.faq__item.is-open .faq__q-toggle::before { background: #fff; }
.faq__item.is-open .faq__q-toggle::after  { opacity: 0; }
.faq__a {
  max-height: 0;
  overflow: hidden;
  transition: max-height .35s ease;
}
.faq__item.is-open .faq__a { max-height: 600px; }
.faq__a-inner {
  display: flex;
  gap: 18px;
  padding: 0 28px 26px;
  font-size: 13.5px;
  color: var(--c-ink-2);
  line-height: 2;
}
.faq__a-mark {
  font-family: var(--f-en);
  font-size: 18px;
  color: var(--c-lav-deep);
  width: 24px;
  flex-shrink: 0;
}

/* Contact form */
.form {
  max-width: 720px;
  margin: 0 auto;
  background: rgba(255,255,255,0.85);
  border-radius: var(--radius-lg);
  padding: 50px 56px;
  border: 1px solid rgba(255,255,255,0.85);
  box-shadow: var(--sh-md);
}
.form__row {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 28px;
  padding: 24px 0;
  border-bottom: 1px solid var(--c-line-soft);
  align-items: flex-start;
}
.form__row:first-child { padding-top: 0; }
.form__row:last-of-type { border-bottom: 0; padding-bottom: 28px; }
.form__label {
  font-family: var(--f-jp-serif);
  font-size: 13px;
  letter-spacing: 0.08em;
  color: var(--c-ink);
  display: flex;
  align-items: center;
  gap: 8px;
  padding-top: 10px;
}
.form__required {
  font-size: 10px;
  padding: 2px 8px;
  border-radius: 4px;
  background: var(--c-lav-deep);
  color: #fff;
  letter-spacing: 0.08em;
}
.form__optional {
  font-size: 10px;
  padding: 2px 8px;
  border-radius: 4px;
  background: #eee;
  color: var(--c-ink-mute);
  letter-spacing: 0.08em;
}
.form input[type="text"],
.form input[type="email"],
.form input[type="tel"],
.form textarea,
.form select {
  width: 100%;
  padding: 12px 16px;
  border: 1px solid var(--c-line);
  border-radius: 10px;
  background: #fff;
  font-family: inherit;
  font-size: 14px;
  color: var(--c-ink);
  transition: border-color .2s, box-shadow .2s;
}
.form input:focus, .form textarea:focus, .form select:focus {
  outline: none;
  border-color: var(--c-lav-deep);
  box-shadow: 0 0 0 4px rgba(168,153,200,0.15);
}
.form textarea { min-height: 140px; resize: vertical; }
.form__checks {
  display: grid;
  gap: 10px;
  padding-top: 6px;
}
.form__checks label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13.5px;
  color: var(--c-ink-2);
  cursor: pointer;
}
.form__checks input { accent-color: var(--c-lav-deep); }
.form__submit {
  text-align: center;
  margin-top: 36px;
}
.form__privacy {
  text-align: center;
  font-size: 12px;
  color: var(--c-ink-mute);
  margin: 14px 0 0;
}
.form__privacy a { color: var(--c-lav-deep); text-decoration: underline; }

/* Company table */
.info-table {
  max-width: 760px;
  margin: 0 auto;
  border-top: 1px solid var(--c-line);
}
.info-table dl {
  display: grid;
  grid-template-columns: 200px 1fr;
  border-bottom: 1px solid var(--c-line);
  margin: 0;
}
.info-table dt {
  padding: 24px 16px;
  font-family: var(--f-jp-serif);
  font-size: 13px;
  color: var(--c-ink);
  letter-spacing: 0.08em;
  background: rgba(248, 249, 253, 0.5);
}
.info-table dd {
  padding: 24px 28px;
  font-size: 14px;
  color: var(--c-ink-2);
  line-height: 1.9;
  margin: 0;
}

/* Page CTA */
.page-cta {
  padding: 100px 32px;
  background: linear-gradient(135deg, #eef1f9 0%, #ddd5ec 100%);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.page-cta__inner {
  max-width: 720px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
}
.page-cta__title {
  font-family: var(--f-jp-serif);
  font-size: clamp(24px, 3.6vw, 34px);
  letter-spacing: 0.08em;
  margin: 0 0 18px;
  color: var(--c-ink);
}
.page-cta__text {
  font-size: 14px;
  color: var(--c-ink-2);
  line-height: 2;
  margin: 0 0 32px;
}

/* ============================================
   DECORATIVE TITLE (centered with ✦)
   ============================================ */
.deco-title {
  text-align: center;
  margin: 0 auto 60px;
  position: relative;
}
.deco-title__main {
  font-family: var(--f-jp-serif);
  font-size: clamp(22px, 3vw, 28px);
  letter-spacing: 0.12em;
  margin: 0;
  color: var(--c-ink);
  font-weight: 500;
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 24px;
}
.deco-title__main::before,
.deco-title__main::after {
  content: "";
  width: 80px;
  height: 1px;
  background: var(--c-ink-mute);
  opacity: 0.4;
}
.deco-title__main-icon {
  display: inline-block;
  margin: 0 -16px;
  color: var(--c-lav-deep);
  font-size: 12px;
}
.deco-title__script {
  font-family: "Cormorant Garamond", "Brush Script MT", cursive;
  font-style: italic;
  font-size: clamp(26px, 3.4vw, 36px);
  font-weight: 300;
  color: var(--c-lav-deep);
  margin: 6px 0 0;
  letter-spacing: 0.04em;
  opacity: 0.7;
}

/* ============================================
   PAGE HERO with side image
   ============================================ */
.page-hero--photo {
  padding: 140px 32px 70px;
  position: relative;
  overflow: hidden;
  background:
    linear-gradient(100deg, rgba(247,248,252,0.95) 0%, rgba(238,241,249,0.65) 45%, rgba(221,213,236,0.15) 100%),
    url("../images/hero-bg.jpg") center right / cover no-repeat;
}
.page-hero--photo .page-hero__bg { display: none; }

/* ============================================
   2-COLUMN LAYOUT (Content + Sidebar)
   ============================================ */
.with-sidebar {
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: 50px;
  align-items: start;
}
.with-sidebar--left {
  grid-template-columns: 240px 1fr;
}

/* ============================================
   SIDEBAR (search / categories / ranking / newsletter)
   ============================================ */
.sidebar { display: grid; gap: 28px; position: sticky; top: 100px; }

.sidebar-search {
  position: relative;
}
.sidebar-search input {
  width: 100%;
  padding: 14px 44px 14px 18px;
  border: 1px solid var(--c-line);
  border-radius: 999px;
  background: #fff;
  font-family: inherit;
  font-size: 13px;
  color: var(--c-ink);
}
.sidebar-search input:focus {
  outline: none;
  border-color: var(--c-lav-deep);
  box-shadow: 0 0 0 4px rgba(168,153,200,0.15);
}
.sidebar-search button {
  position: absolute;
  right: 6px; top: 50%;
  transform: translateY(-50%);
  width: 32px; height: 32px;
  border-radius: 50%;
  background: linear-gradient(135deg, #ccbce0, #b5a6cf);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
}

.sidebar-block {
  background: rgba(255,255,255,0.85);
  border-radius: 16px;
  padding: 24px 22px;
  border: 1px solid var(--c-line-soft);
}
.sidebar-block__title {
  font-family: var(--f-jp-serif);
  font-size: 14px;
  letter-spacing: 0.08em;
  color: var(--c-ink);
  margin: 0 0 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--c-line);
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 8px;
}
.sidebar-block__title-icon {
  color: var(--c-lav-deep);
  font-size: 14px;
}

.sidebar-list { display: grid; gap: 2px; }
.sidebar-list a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 4px;
  font-size: 13px;
  color: var(--c-ink-2);
  border-bottom: 1px solid var(--c-line-soft);
}
.sidebar-list a:hover { color: var(--c-lav-deep); opacity: 1; padding-left: 8px; transition: padding .2s, color .2s; }
.sidebar-list a:last-child { border-bottom: 0; }
.sidebar-list a::after { content: "›"; color: var(--c-ink-mute); font-size: 16px; }

/* Ranking */
.ranking { display: grid; gap: 14px; margin: 0; padding: 0; }
.ranking li { display: grid; grid-template-columns: 28px 60px 1fr; gap: 10px; align-items: center; }
.ranking__num {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: linear-gradient(135deg, #e8d8ee, #c8bce0);
  font-family: var(--f-en);
  font-size: 13px;
  color: #fff;
  font-weight: 500;
}
.ranking li:nth-child(1) .ranking__num { background: linear-gradient(135deg, #ddc77a, #b59c4f); }
.ranking li:nth-child(2) .ranking__num { background: linear-gradient(135deg, #cdd0d8, #9da3b0); }
.ranking li:nth-child(3) .ranking__num { background: linear-gradient(135deg, #d6b89b, #aa8a6e); }
.ranking__thumb {
  width: 60px;
  height: 50px;
  border-radius: 8px;
  background-size: cover;
  background-position: center;
}
.ranking__thumb--1 { background: linear-gradient(135deg, #f0e4f0, #d8c4e2); }
.ranking__thumb--2 { background: linear-gradient(135deg, #f3ece2, #e4d8c5); }
.ranking__thumb--3 { background: linear-gradient(135deg, #e8edf5, #c8d2e5); }
.ranking__thumb--4 { background: linear-gradient(135deg, #ece6d9, #d4cbb8); }
.ranking__thumb--5 { background: linear-gradient(135deg, #efe4ff, #d8c8ee); }
.ranking__body { min-width: 0; }
.ranking__title {
  font-family: var(--f-jp-serif);
  font-size: 12px;
  line-height: 1.55;
  color: var(--c-ink);
  margin: 0 0 4px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.ranking__date {
  font-family: var(--f-en);
  font-size: 10px;
  letter-spacing: 0.12em;
  color: var(--c-ink-mute);
}
.ranking a:hover .ranking__title { color: var(--c-lav-deep); }

/* Newsletter card */
.newsletter-card {
  padding: 26px 22px;
  border-radius: 16px;
  background: linear-gradient(135deg, #ccbce0 0%, #b5a6cf 100%);
  text-align: center;
  color: #fff;
}
.newsletter-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(255,255,255,0.25);
  margin-bottom: 10px;
}
.newsletter-card__title {
  font-family: var(--f-jp-serif);
  font-size: 14px;
  margin: 0 0 6px;
  letter-spacing: 0.08em;
}
.newsletter-card__text {
  font-size: 11px;
  line-height: 1.7;
  margin: 0 0 16px;
  opacity: 0.95;
}
.newsletter-card input {
  width: 100%;
  padding: 11px 14px;
  border: 0;
  border-radius: 999px;
  font-family: inherit;
  font-size: 12.5px;
  margin-bottom: 8px;
  text-align: center;
}
.newsletter-card button {
  width: 100%;
  padding: 11px;
  border-radius: 999px;
  background: rgba(255,255,255,0.95);
  color: var(--c-lav-deep);
  font-family: var(--f-jp-serif);
  font-size: 13px;
  letter-spacing: 0.08em;
  font-weight: 500;
}
.newsletter-card button:hover { background: #fff; }

/* ============================================
   FAQ — Sidebar category filter
   ============================================ */
.faq-cat-list {
  display: grid;
  gap: 8px;
}
.faq-cat-list button {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 16px 20px;
  border-radius: 12px;
  background: rgba(255,255,255,0.7);
  border: 1px solid var(--c-line-soft);
  font-family: var(--f-jp-serif);
  font-size: 13px;
  color: var(--c-ink);
  text-align: left;
  letter-spacing: 0.06em;
  transition: all .2s;
}
.faq-cat-list button:hover {
  border-color: var(--c-lav);
  background: #fff;
}
.faq-cat-list button.is-active {
  background: linear-gradient(135deg, #f5f1fa, #eef0fa);
  border-color: var(--c-lav);
  box-shadow: 0 4px 14px rgba(168,153,200,0.18);
  color: var(--c-ink);
}
.faq-cat-list__icon {
  width: 28px; height: 28px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, #f5f1fa, #eef0fa);
  color: var(--c-lav-deep);
  flex-shrink: 0;
}
.faq-cat-list button.is-active .faq-cat-list__icon {
  background: linear-gradient(135deg, #ccbce0, #b5a6cf);
  color: #fff;
}

/* ============================================
   CONTACT CALLOUT (Contact us card)
   ============================================ */
.contact-callout {
  margin: 80px 0 0;
  padding: 50px 56px;
  border-radius: var(--radius-lg);
  background:
    linear-gradient(135deg, rgba(247,248,252,0.92) 0%, rgba(238,241,249,0.78) 50%, rgba(221,213,236,0.4) 100%),
    url("../images/hero-bg.jpg") center right / cover no-repeat;
  position: relative;
  display: grid;
  grid-template-columns: 1fr 360px;
  gap: 40px;
  align-items: center;
}
.contact-callout__left {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.contact-callout__script {
  font-family: "Cormorant Garamond", cursive;
  font-style: italic;
  font-size: 22px;
  color: var(--c-lav-deep);
  font-weight: 400;
  margin: 0;
  letter-spacing: 0.04em;
}
.contact-callout__title {
  font-family: var(--f-jp-serif);
  font-size: clamp(22px, 2.6vw, 26px);
  margin: 0;
  letter-spacing: 0.08em;
  color: var(--c-ink);
  font-weight: 500;
}
.contact-callout__text {
  font-size: 13.5px;
  color: var(--c-ink-2);
  line-height: 1.95;
  margin: 4px 0 0;
}
.contact-callout__icons {
  display: flex;
  gap: 22px;
  margin-top: 16px;
}
.contact-callout__icon {
  text-align: center;
  flex: 1;
}
.contact-callout__icon-circle {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(255,255,255,0.7);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--c-lav-deep);
  margin-bottom: 8px;
}
.contact-callout__icon-label {
  display: block;
  font-family: var(--f-jp-serif);
  font-size: 12px;
  color: var(--c-lav-deep);
  margin-bottom: 4px;
  letter-spacing: 0.06em;
}
.contact-callout__icon-text {
  display: block;
  font-size: 10.5px;
  color: var(--c-ink-2);
  line-height: 1.6;
}
.contact-callout__right {
  display: grid;
  gap: 12px;
}
.contact-callout__btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 18px 28px;
  border-radius: 999px;
  font-family: var(--f-jp-serif);
  font-size: 14px;
  letter-spacing: 0.08em;
  transition: transform .2s, box-shadow .2s;
}
.contact-callout__btn--primary {
  background: linear-gradient(135deg, #ccbce0, #b5a6cf);
  color: #fff;
  box-shadow: 0 10px 26px rgba(168,153,200,0.32);
}
.contact-callout__btn--primary:hover { opacity: 1; transform: translateY(-2px); }
.contact-callout__btn--line {
  background: #fff;
  color: var(--c-ink);
  border: 1px solid var(--c-line);
}
.contact-callout__btn--line:hover { opacity: 1; border-color: var(--c-lav); color: var(--c-lav-deep); }

/* ============================================
   POST CTA (inline article CTA card)
   ============================================ */
.post-cta {
  margin: 40px 0;
  padding: 30px 36px;
  border-radius: var(--radius);
  background: linear-gradient(135deg, #f5f1fa, #eef0fa);
  text-align: center;
}
.post-cta__title {
  font-family: var(--f-jp-serif);
  font-size: 15px;
  margin: 0 0 18px;
  color: var(--c-ink);
  letter-spacing: 0.06em;
}
.post-cta .btn { padding: 14px 36px; }

/* ============================================
   POINT BOX (used in article)
   ============================================ */
.article .point-box {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  padding: 22px 26px;
  border-radius: 14px;
  background: linear-gradient(135deg, #f5f1fa, #eef0fa);
  border: 0;
  margin: 24px 0;
}
.article .point-box__icon {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: linear-gradient(135deg, #ccbce0, #b5a6cf);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.article .point-box__body { flex: 1; }
.article .point-box__label {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.2em;
  color: var(--c-lav-deep);
  margin: 0 0 6px;
}
.article .point-box__text {
  font-family: var(--f-jp-serif);
  font-size: 14px;
  color: var(--c-ink);
  margin: 0;
  line-height: 1.85;
  letter-spacing: 0.04em;
}

/* ============================================
   PREV/NEXT NAV with thumbnails
   ============================================ */
.detail-nav-rich {
  max-width: 880px;
  margin: 60px auto 0;
  padding: 0 32px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.detail-nav-rich a {
  display: grid;
  grid-template-columns: 90px 1fr;
  gap: 16px;
  align-items: center;
  padding: 14px 18px;
  border: 1px solid var(--c-line);
  border-radius: 14px;
  background: rgba(255,255,255,0.85);
  transition: border-color .2s, transform .2s;
}
.detail-nav-rich a:hover {
  border-color: var(--c-lav);
  opacity: 1;
  transform: translateY(-2px);
}
.detail-nav-rich a.detail-nav-rich__next {
  grid-template-columns: 1fr 90px;
  text-align: right;
}
.detail-nav-rich__thumb {
  width: 90px;
  height: 60px;
  border-radius: 8px;
  background: linear-gradient(135deg, #f0e4f0, #d8c4e2);
  background-size: cover;
  background-position: center;
}
.detail-nav-rich__label {
  font-family: var(--f-en);
  font-size: 10px;
  letter-spacing: 0.2em;
  color: var(--c-lav-deep);
  margin: 0 0 6px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.detail-nav-rich__next .detail-nav-rich__label { justify-content: flex-end; }
.detail-nav-rich__title {
  font-family: var(--f-jp-serif);
  font-size: 13px;
  line-height: 1.6;
  color: var(--c-ink);
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ============================================
   WORKS DETAIL
   ============================================ */
.detail-hero {
  position: relative;
  margin: 0 auto;
  max-width: 1080px;
  padding: 40px 32px 0;
}
.detail-hero__visual {
  aspect-ratio: 16/9;
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, #e9d6f0 0%, #e7d9ea 100%);
  position: relative;
  overflow: hidden;
  box-shadow: var(--sh-lg);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px;
}
.detail-hero__visual .device--desktop {
  width: 60%;
}
.detail-hero__visual .device--phone {
  width: 14%;
  right: 8%;
  bottom: 8%;
}

.detail-meta {
  max-width: 880px;
  margin: 0 auto;
  padding: 70px 32px 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  border-bottom: 1px solid var(--c-line);
  padding-bottom: 40px;
}
.detail-meta__item { display: flex; flex-direction: column; gap: 6px; }
.detail-meta__label {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.2em;
  color: var(--c-ink-mute);
}
.detail-meta__value {
  font-family: var(--f-jp-serif);
  font-size: 14px;
  color: var(--c-ink);
  letter-spacing: 0.04em;
}

.detail-content {
  max-width: 760px;
  margin: 0 auto;
  padding: 70px 32px 30px;
}
.detail-section {
  margin-bottom: 56px;
}
.detail-section__head {
  display: flex;
  align-items: baseline;
  gap: 16px;
  margin: 0 0 22px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--c-line-soft);
}
.detail-section__num {
  font-family: var(--f-en);
  font-size: 14px;
  letter-spacing: 0.2em;
  color: var(--c-lav-deep);
}
.detail-section__title {
  font-family: var(--f-jp-serif);
  font-size: 20px;
  letter-spacing: 0.08em;
  margin: 0;
  color: var(--c-ink);
}
.detail-text {
  font-size: 14.5px;
  line-height: 2.1;
  color: var(--c-ink-2);
  margin: 0 0 14px;
}
.detail-list {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
}
.detail-list li {
  position: relative;
  padding-left: 22px;
  font-size: 14px;
  line-height: 2;
  color: var(--c-ink-2);
}
.detail-list li::before {
  content: "";
  position: absolute;
  left: 0; top: 13px;
  width: 12px; height: 1.5px;
  background: var(--c-lav-deep);
}
.tech-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 6px;
}
.tech-tags span {
  padding: 6px 14px;
  border-radius: 999px;
  background: linear-gradient(135deg, #f5f1fa, #eef0fa);
  font-family: var(--f-en);
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--c-ink-2);
}

/* Related works */
.related {
  max-width: 1080px;
  margin: 0 auto;
  padding: 80px 32px 0;
  border-top: 1px solid var(--c-line);
}
.related__head { text-align: center; margin-bottom: 36px; }
.related__title {
  font-family: var(--f-en);
  font-size: 22px;
  letter-spacing: 0.14em;
  margin: 0;
  color: var(--c-ink);
}
.related__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}

/* Pagination (prev/next) */
.detail-nav {
  max-width: 880px;
  margin: 60px auto 0;
  padding: 0 32px;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 16px;
  align-items: center;
}
.detail-nav a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 22px;
  border: 1px solid var(--c-line);
  border-radius: 999px;
  background: #fff;
  font-family: var(--f-en);
  font-size: 12px;
  letter-spacing: 0.14em;
  color: var(--c-ink-2);
}
.detail-nav a:hover { border-color: var(--c-lav); color: var(--c-lav-deep); opacity: 1; }
.detail-nav .detail-nav__next { justify-self: end; }
.detail-nav .detail-nav__back {
  background: var(--g-cta);
  color: #fff;
  border-color: transparent;
}
.detail-nav .detail-nav__back:hover { color: #fff; }

/* ============================================
   BLOG DETAIL
   ============================================ */
.article-header {
  max-width: 760px;
  margin: 0 auto;
  padding: 30px 32px 0;
  text-align: center;
}
.article-header__meta {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 16px;
  margin-bottom: 18px;
  flex-wrap: wrap;
}
.article-header__cat {
  padding: 4px 14px;
  border-radius: 4px;
  background: rgba(168, 153, 200, 0.12);
  font-size: 11px;
  color: var(--c-lav-deep);
  letter-spacing: 0.1em;
}
.article-header__date {
  font-family: var(--f-en);
  font-size: 12px;
  letter-spacing: 0.15em;
  color: var(--c-ink-mute);
}
.article-header__title {
  font-family: var(--f-jp-serif);
  font-size: clamp(22px, 3.4vw, 30px);
  line-height: 1.7;
  letter-spacing: 0.06em;
  margin: 0 0 22px;
  color: var(--c-ink);
}
.article-header__author {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 12px;
  color: var(--c-ink-mute);
}
.article-header__avatar {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: linear-gradient(135deg, #e8d8ee 0%, #c5d3ed 100%);
}

.article-hero {
  max-width: 1080px;
  margin: 40px auto 0;
  padding: 0 32px;
}
.article-hero__visual {
  aspect-ratio: 16/9;
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, #f0e4f0, #d8c4e2 80%, #b8a8d0);
  box-shadow: var(--sh-md);
  position: relative;
  overflow: hidden;
}
.article-hero__visual::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,0.35), rgba(255,255,255,0));
}

/* TOC */
.toc {
  max-width: 760px;
  margin: 60px auto 0;
  padding: 28px 32px;
  background: rgba(255,255,255,0.85);
  border: 1px solid var(--c-line-soft);
  border-radius: var(--radius);
}
.toc__title {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--f-en);
  font-size: 14px;
  letter-spacing: 0.14em;
  color: var(--c-ink);
  margin: 0 0 14px;
}
.toc__title::before {
  content: "";
  width: 14px; height: 1.5px;
  background: var(--c-lav-deep);
}
.toc ol {
  margin: 0;
  padding-left: 22px;
  counter-reset: toc;
  list-style: none;
}
.toc li {
  counter-increment: toc;
  padding: 6px 0;
  font-size: 13.5px;
  color: var(--c-ink-2);
  position: relative;
}
.toc li::before {
  content: counter(toc, decimal-leading-zero);
  position: absolute;
  left: -28px;
  top: 6px;
  font-family: var(--f-en);
  font-size: 11px;
  color: var(--c-lav-deep);
  letter-spacing: 0.1em;
}
.toc a:hover { color: var(--c-lav-deep); opacity: 1; }

/* Article body */
.article {
  max-width: 760px;
  margin: 0 auto;
  padding: 50px 32px 30px;
}
.article > * + * { margin-top: 24px; }
.article h2 {
  font-family: var(--f-jp-serif);
  font-size: 22px;
  line-height: 1.6;
  letter-spacing: 0.06em;
  color: var(--c-ink);
  margin: 56px 0 20px;
  padding: 14px 22px;
  background: linear-gradient(135deg, #f5f1fa, #eef0fa);
  border-left: 4px solid var(--c-lav-deep);
  border-radius: 6px;
}
.article h3 {
  font-family: var(--f-jp-serif);
  font-size: 17px;
  line-height: 1.7;
  letter-spacing: 0.06em;
  color: var(--c-ink);
  margin: 36px 0 16px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--c-line);
}
.article p {
  font-size: 14.5px;
  line-height: 2.1;
  color: var(--c-ink-2);
  letter-spacing: 0.04em;
  margin: 0 0 18px;
}
.article p strong { color: var(--c-ink); font-weight: 700; }
.article ul, .article ol {
  padding-left: 0;
  margin: 0 0 18px;
}
.article ul li, .article ol li {
  position: relative;
  padding: 6px 0 6px 24px;
  font-size: 14.5px;
  line-height: 1.9;
  color: var(--c-ink-2);
}
.article ul li::before {
  content: "";
  position: absolute;
  left: 4px; top: 16px;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--c-lav);
}
.article ol { counter-reset: art; }
.article ol li {
  counter-increment: art;
}
.article ol li::before {
  content: counter(art) ".";
  position: absolute;
  left: 0; top: 6px;
  font-family: var(--f-en);
  color: var(--c-lav-deep);
}
.article blockquote {
  margin: 28px 0;
  padding: 22px 28px;
  border-left: 3px solid var(--c-lav);
  background: rgba(168, 153, 200, 0.06);
  border-radius: 0 8px 8px 0;
  font-family: var(--f-jp-serif);
  font-size: 14.5px;
  line-height: 1.95;
  color: var(--c-ink);
}
.article blockquote p:last-child { margin-bottom: 0; }
.article a { color: var(--c-lav-deep); text-decoration: underline; }
.article hr {
  border: 0;
  border-top: 1px dashed var(--c-line);
  margin: 40px 0;
}

/* Share */
.share {
  max-width: 760px;
  margin: 40px auto 0;
  padding: 30px 32px;
  text-align: center;
  border-top: 1px solid var(--c-line);
  border-bottom: 1px solid var(--c-line);
}
.share__label {
  font-family: var(--f-en);
  font-size: 11px;
  letter-spacing: 0.2em;
  color: var(--c-ink-mute);
  margin: 0 0 14px;
}
.share__list {
  display: flex;
  justify-content: center;
  gap: 14px;
}
.share__list a {
  width: 40px; height: 40px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid var(--c-line);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--c-ink-2);
}
.share__list a:hover { color: var(--c-lav-deep); border-color: var(--c-lav); opacity: 1; }

/* Responsive sub-page */
@media (max-width: 1080px) {
  .works--grid, .blog--list { grid-template-columns: repeat(2, 1fr); }
  .related__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 860px) {
  .page-hero { padding: 130px 20px 60px; }
  .block { padding: 70px 20px; }

  .message-card {
    grid-template-columns: 1fr;
    padding: 40px 28px;
    gap: 30px;
    text-align: center;
  }
  .message-card__photo { margin: 0 auto; }

  .values { grid-template-columns: 1fr; }
  .service-block, .service-block--reverse {
    grid-template-columns: 1fr;
    direction: ltr;
    padding: 50px 0;
    gap: 30px;
  }

  .form { padding: 32px 22px; }
  .form__row { grid-template-columns: 1fr; gap: 10px; padding: 20px 0; }
  .form__label { padding-top: 0; }
  .info-table dl { grid-template-columns: 1fr; }
  .info-table dt { background: rgba(248,249,253,0.85); padding: 16px; }
  .info-table dd { padding: 16px; border-top: 1px solid var(--c-line-soft); }

  .works--grid, .blog--list { grid-template-columns: 1fr; }

  .detail-meta { grid-template-columns: repeat(2, 1fr); padding: 40px 20px 30px; }
  .related__grid { grid-template-columns: 1fr; }
  .detail-nav { grid-template-columns: 1fr; }
  .detail-nav .detail-nav__next { justify-self: stretch; }
  .article h2 { font-size: 19px; padding: 12px 16px; }
  .article h3 { font-size: 16px; }

  .with-sidebar,
  .with-sidebar--left { grid-template-columns: 1fr; gap: 40px; }
  .sidebar { position: static; }

  .deco-title__main::before,
  .deco-title__main::after { width: 40px; }

  .contact-callout {
    grid-template-columns: 1fr;
    padding: 32px 24px;
    gap: 24px;
    background-position: bottom right;
  }
  .contact-callout__icons { justify-content: space-around; }

  .detail-nav-rich { grid-template-columns: 1fr; }

  .post-cta { padding: 22px 20px; }

  /* Flow timeline — vertical stack on mobile */
  .flow-step {
    grid-template-columns: 1fr;
    gap: 12px;
    padding: 22px 0;
    text-align: center;
  }
  .flow-step::before { display: none; }
  .flow-step__num {
    font-size: 18px;
    text-align: center;
  }
  .flow-step__icon {
    width: 60px;
    height: 60px;
    margin: 0 auto;
  }
  .flow-step__body { text-align: left; }
  .flow-step__photo { aspect-ratio: 16/9; }
}
