/* ============================================================
   Mirrors — base brand stylesheet
   Sage green × cream. Quiet, warm, refined.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Cormorant:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap');

:root {
  /* Brand colours (locked) */
  --green-top:    #728e83;
  --green-bottom: #4f6c61;
  --cream:        #f3eee4;
  --accent-deep:  #3f574d;

  /* Derived, harmonious tones */
  --cream-dim:    #e7e0d2;          /* hairlines on cream */
  --cream-soft:   oklch(0.93 0.012 95);
  --green-line:   oklch(0.62 0.02 165 / 0.28); /* hairline on green */
  --ink:          #2c3b34;          /* text on cream */
  --ink-soft:     #5d6c64;          /* secondary text on cream */
  --cream-70:     rgba(243, 238, 228, 0.72);
  --cream-50:     rgba(243, 238, 228, 0.52);

  --grad-sage: linear-gradient(180deg, var(--green-top) 0%, var(--green-bottom) 100%);

  --serif: 'Cormorant', Georgia, 'Times New Roman', serif;
  --sans:  'Zen Kaku Gothic New', -apple-system, 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;

  --maxw: 1100px;
  --gutter: clamp(22px, 5vw, 64px);
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  font-family: var(--sans);
  color: var(--cream);
  background: var(--green-bottom);
  font-weight: 400;
  line-height: 1.95;
  letter-spacing: 0.02em;
  word-break: auto-phrase; /* 日本語を文節で折り返す（中途半端な行末を防ぐ） */
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
.nowrap-line { white-space: nowrap; } /* この一文は途中で折り返さない */

/* ---- shared rhythm helpers ---- */
.wrap { max-width: var(--maxw); margin: 0 auto; padding-inline: var(--gutter); }
.wrap-wide { max-width: 1320px; margin: 0 auto; padding-inline: var(--gutter); }

.eyebrow {
  font-family: var(--serif);
  font-style: italic;
  font-weight: 500;
  font-size: clamp(15px, 1.4vw, 18px);
  letter-spacing: 0.04em;
  opacity: 0.85;
}

/* English serif wordmark */
.wordmark {
  font-family: var(--serif);
  font-weight: 500;
  letter-spacing: 0.07em;
  font-size: 23px;
  line-height: 1;
}

/* brand name "Mirrors" inside running text — same serif face as the logo.
   Cormorant has a low x-height, so at body weight it reads thin and small next to
   the gothic Japanese text; bold + a touch larger balances it. */
.brandword {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 1.22em;
  letter-spacing: 0.04em;
}

/* ============================================================
   Header
   ============================================================ */
.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px var(--gutter);
  backdrop-filter: blur(10px);
}
.site-header.on-green { color: var(--cream); }

/* brand lockup — quietly says "this is Mirrors" on every page */
.brand { display: inline-flex; flex-direction: column; gap: 3px; line-height: 1; }
.brand .wordmark { font-size: 23px; }
.brand .brand-sub {
  font-family: ui-monospace, 'SFMono-Regular', Menlo, monospace;
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.6;
  font-weight: 400;
}

.site-header .nav {
  display: flex;
  gap: clamp(18px, 2.4vw, 36px);
  align-items: center;
  font-size: 14.5px;
  letter-spacing: 0.06em;
}
.site-header .nav a {
  position: relative;
  padding-bottom: 3px;
  opacity: 0.82;
  transition: opacity 0.3s ease;
}
.site-header .nav a::after {
  content: '';
  position: absolute;
  left: 0; bottom: 0;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.35s cubic-bezier(.2,.7,.2,1);
}
.site-header .nav a:hover { opacity: 1; }
.site-header .nav a:hover::after { transform: scaleX(1); }
.site-header .nav a[aria-current="page"] { opacity: 1; }
.site-header .nav a[aria-current="page"]::after { transform: scaleX(1); opacity: 0.5; }

/* mobile nav */
.nav-toggle { display: none; }

/* ============================================================
   Buttons
   ============================================================ */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--sans);
  font-size: 15px;
  letter-spacing: 0.05em;
  padding: 14px 28px;
  border-radius: 999px;
  border: 1px solid transparent;
  cursor: pointer;
  transition: transform .35s cubic-bezier(.2,.7,.2,1), background .35s ease, color .35s ease, border-color .35s ease;
  white-space: nowrap;
}
.btn .arrow { transition: transform .35s cubic-bezier(.2,.7,.2,1); }
.btn:hover .arrow { transform: translateX(4px); }

.btn-cream { background: var(--cream); color: var(--accent-deep); }
.btn-cream:hover { transform: translateY(-2px); }

.btn-ghost-cream { border-color: var(--cream-50); color: var(--cream); }
.btn-ghost-cream:hover { border-color: var(--cream); background: rgba(243,238,228,0.08); }

.btn-deep { background: var(--accent-deep); color: var(--cream); }
.btn-deep:hover { transform: translateY(-2px); }

.btn-ghost-deep { border-color: rgba(63,87,77,0.4); color: var(--accent-deep); }
.btn-ghost-deep:hover { border-color: var(--accent-deep); background: rgba(63,87,77,0.05); }

/* ============================================================
   Image placeholder (no real assets yet)
   ============================================================ */
.ph {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border-radius: 4px;
}
.ph::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(
    -45deg,
    transparent 0, transparent 9px,
    var(--ph-stripe, rgba(243,238,228,0.10)) 9px, var(--ph-stripe, rgba(243,238,228,0.10)) 10px
  );
}
.ph .ph-label {
  position: relative;
  font-family: ui-monospace, 'SFMono-Regular', Menlo, monospace;
  font-size: 11.5px;
  letter-spacing: 0.08em;
  text-transform: lowercase;
  padding: 6px 12px;
  border: 1px solid var(--ph-border, var(--cream-50));
  border-radius: 999px;
  color: var(--ph-fg, var(--cream-70));
  background: var(--ph-chip, rgba(79,108,97,0.25));
}

/* ============================================================
   Footer
   ============================================================ */
.site-footer {
  background: var(--accent-deep);
  color: var(--cream-70);
  padding: 64px var(--gutter) 40px;
}
.site-footer .foot-inner {
  max-width: var(--maxw);
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  gap: 40px 60px;
  justify-content: space-between;
  align-items: flex-start;
}
.site-footer .wordmark { color: var(--cream); font-size: 26px; }
.site-footer .foot-meta { font-size: 14px; line-height: 2.1; }
.site-footer .foot-nav { display: flex; flex-direction: column; gap: 8px; font-size: 14px; }
.site-footer .foot-nav a { opacity: 0.8; transition: opacity .3s; }
.site-footer .foot-nav a:hover { opacity: 1; }
.site-footer .foot-bottom {
  max-width: var(--maxw);
  margin: 48px auto 0;
  padding-top: 22px;
  border-top: 1px solid rgba(243,238,228,0.14);
  font-size: 12.5px;
  letter-spacing: 0.06em;
  opacity: 0.6;
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
}

/* ============================================================
   Reveal-on-scroll (subtle)
   ============================================================ */
/* ============================================================
   Reveal-on-scroll (subtle, frozen-timeline safe)
   - default (and reduced-motion): content fully visible
   - .pre-anim (set before paint) hides until .in animates it in
   - .reveal-static (set if the animation timeline is frozen) forces visible
   ============================================================ */
@media (prefers-reduced-motion: no-preference) {
  .pre-anim .reveal { opacity: 0; }
  .reveal.in { animation: mirrorsReveal 1.05s cubic-bezier(.2,.7,.2,1) both; }
  @keyframes mirrorsReveal {
    from { opacity: 0; transform: translateY(18px); }
    to   { opacity: 1; transform: none; }
  }
}
.reveal-static .reveal,
.reveal-static .reveal.in {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
}

/* ============================================================
   Shared inner-page components (Products / About / Contact / Privacy)
   ============================================================ */

/* page hero — calmer than the Top hero */
.page-hero {
  padding: clamp(120px, 18vh, 200px) var(--gutter) clamp(56px, 8vw, 96px);
  max-width: var(--maxw);
  margin: 0 auto;
}
.page-hero .eyebrow { display: block; margin-bottom: 24px; }
.page-hero h1 {
  font-family: var(--sans);
  font-weight: 500;
  font-size: clamp(32px, 5vw, 60px);
  line-height: 1.4;
  letter-spacing: 0.01em;
  margin: 0 0 28px;
  text-wrap: balance;
}
.page-hero .lead {
  max-width: 32em;
  font-size: clamp(15.5px, 1.5vw, 18px);
  line-height: 2.1;
  color: var(--cream-70);
  margin: 0;
  text-wrap: pretty;
}

/* generic section rhythm */
.section { padding: clamp(64px, 9vw, 120px) 0; }
.section.on-cream { background: var(--cream); color: var(--ink); }
.section.on-deep { background: var(--accent-deep); color: var(--cream-70); }
.section .section-head { max-width: 40em; margin: 0 0 clamp(40px, 5vw, 64px); }
.section .section-head.center { margin-inline: auto; text-align: center; }
.section .section-head .eyebrow { display: block; margin-bottom: 14px; }
.section.on-cream .section-head .eyebrow { color: var(--accent-deep); }
.section .section-head h2 {
  font-family: var(--sans);
  font-weight: 500;
  font-size: clamp(24px, 3.2vw, 40px);
  line-height: 1.5;
  margin: 0 0 16px;
  letter-spacing: 0.01em;
}
.section .section-head p { font-size: 16px; line-height: 2.05; margin: 0; max-width: 32em; }
.section.on-cream .section-head p { color: var(--ink-soft); }
.section .section-head.center p { margin-inline: auto; }
.section .section-head p { color: var(--cream-70); }

.serif-name { font-family: var(--serif); font-style: italic; font-weight: 500; }

/* badge already defined per-page on Top; promote a shared one */
.badge-i {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 12.5px; letter-spacing: 0.08em; padding: 6px 14px; border-radius: 999px;
  background: rgba(63,87,77,0.10); color: var(--accent-deep); border: 1px solid rgba(63,87,77,0.18);
}
.badge-i.on-green { background: rgba(243,238,228,0.10); color: var(--cream); border-color: var(--cream-50); }
.badge-i .dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }

/* feature triplet */
.feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--green-line); border-block: 1px solid var(--green-line); }
.on-cream .feature-grid { background: var(--cream-dim); border-color: var(--cream-dim); }
.feature-grid .feat { background: var(--cream); padding: clamp(30px, 3.4vw, 46px) clamp(22px, 2.4vw, 34px); }
.on-cream .feature-grid .feat { background: var(--cream); }
.feature-grid .feat .num { font-family: var(--serif); font-style: italic; font-size: 20px; color: #9aa79f; }
.feature-grid .feat h3 { font-weight: 500; font-size: 18px; margin: 16px 0 10px; color: var(--accent-deep); letter-spacing: 0.02em; }
.feature-grid .feat p { color: var(--ink-soft); font-size: 14.5px; line-height: 1.95; margin: 0; }

/* definition list — studio info */
.def-list { display: grid; grid-template-columns: 180px minmax(0,1fr); gap: 0; margin: 0; }
.def-list > div { display: contents; }
.def-list dt, .def-list dd { padding: 20px 0; border-top: 1px solid var(--cream-dim); margin: 0; }
.def-list dt { font-size: 13px; letter-spacing: 0.08em; color: var(--ink-soft); text-transform: uppercase; font-family: ui-monospace, Menlo, monospace; }
.def-list dd { font-size: 16px; color: var(--ink); }
.def-list dd a { color: var(--accent-deep); border-bottom: 1px solid rgba(63,87,77,0.3); }

/* tag list (contact topics) */
.tag-list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--green-line); border-block: 1px solid var(--green-line); }
.tag-list li { background: transparent; padding: 26px clamp(8px, 1.5vw, 20px); display: flex; align-items: baseline; gap: 16px; font-size: 17px; font-weight: 500; letter-spacing: 0.02em; }
.tag-list li .n { font-family: var(--serif); font-style: italic; font-size: 17px; color: var(--cream-50); }

/* big mailto */
.mail-block { text-align: center; padding: clamp(20px, 3vw, 40px) 0; }
.mail-block .mail-label { font-family: ui-monospace, Menlo, monospace; font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--cream-50); margin-bottom: 22px; }
.mail-block .mail-link {
  display: inline-block;
  font-family: var(--serif);
  font-size: clamp(24px, 4.6vw, 42px);
  letter-spacing: 0.01em;
  white-space: nowrap;
  color: var(--cream);
  border-bottom: 1px solid var(--cream-50);
  padding-bottom: 6px;
  transition: border-color .3s, opacity .3s;
}
.mail-block .mail-link:hover { border-color: var(--cream); }
.copy-btn {
  margin-top: 26px;
  display: inline-flex; align-items: center; gap: 9px;
  font-family: ui-monospace, Menlo, monospace; font-size: 12px; letter-spacing: 0.08em;
  background: transparent; color: var(--cream-70); border: 1px solid var(--cream-50);
  border-radius: 999px; padding: 9px 18px; cursor: pointer; transition: border-color .3s, color .3s;
}
.copy-btn:hover { border-color: var(--cream); color: var(--cream); }

/* privacy outline */
.policy-list { display: grid; gap: 0; border-top: 1px solid var(--cream-dim); }
.policy-item { border-bottom: 1px solid var(--cream-dim); padding: clamp(26px, 3vw, 38px) 0; display: grid; grid-template-columns: 64px minmax(0,1fr); gap: clamp(16px, 3vw, 40px); align-items: start; }
.policy-item .p-num { font-family: var(--serif); font-style: italic; font-size: 26px; color: #9aa79f; }
.policy-item h3 { font-weight: 500; font-size: 19px; margin: 4px 0 12px; color: var(--accent-deep); letter-spacing: 0.02em; }
.policy-item .placeholder {
  font-size: 14px; line-height: 1.95; color: var(--ink-soft);
  border: 1px dashed var(--cream-dim); border-radius: 6px; padding: 16px 18px; background: rgba(63,87,77,0.025);
  font-family: ui-monospace, Menlo, monospace; letter-spacing: 0.02em;
}

/* prose for short bodies */
.prose p { font-size: 16.5px; line-height: 2.05; margin: 0 0 22px; max-width: 34em; }
.prose.on-green p { color: var(--cream-70); }
.prose.on-cream p { color: var(--ink-soft); }

/* simple two-column block (text + placeholder) */
.split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(36px, 6vw, 88px); align-items: center; }
.split .ph { aspect-ratio: 4 / 5; background: linear-gradient(160deg, #6f8a7f, #51695f); --ph-stripe: rgba(243,238,228,0.12); }

/* "more from Mirrors" footer-ish nav between pages */
.next-links { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--green-line); border-block: 1px solid var(--green-line); }
.next-links a { padding: clamp(30px, 4vw, 48px) clamp(20px, 2.4vw, 34px); display: flex; flex-direction: column; gap: 8px; transition: background .3s; }
.next-links a:hover { background: rgba(243,238,228,0.05); }
.next-links a .nl-label { font-family: ui-monospace, Menlo, monospace; font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--cream-50); }
.next-links a .nl-title { font-size: 19px; font-weight: 500; display: flex; align-items: center; gap: 10px; }
.next-links a .nl-title .arrow { transition: transform .35s cubic-bezier(.2,.7,.2,1); }
.next-links a:hover .nl-title .arrow { transform: translateX(4px); }

@media (max-width: 820px) {
  .feature-grid, .tag-list, .next-links { grid-template-columns: 1fr; }
  .def-list { grid-template-columns: 1fr; }
  .def-list dt { padding-bottom: 4px; border-top: 1px solid var(--cream-dim); }
  .def-list dd { padding-top: 4px; border-top: none; }
  .split { grid-template-columns: 1fr; }
  .split .ph { order: -1; aspect-ratio: 16/11; }
  .policy-item { grid-template-columns: 1fr; gap: 6px; }
}

/* ============================================================
   Mobile
   ============================================================ */
@media (max-width: 720px) {
  .site-header { padding: 16px var(--gutter); }
  .site-header .nav { gap: 16px; font-size: 13px; }
  body { line-height: 1.85; }
}
