/* ============================================
   StudyMax — 200 Shades of White
   All-white palette · subtle tonal hierarchy
============================================ */

:root{
  /* — 塾色：群青×瑠璃×紺青 — 老舗予備校 academic blue — */
  --c-void:#0A1A3D;          /* 深紺青 — deepest blue ink */
  --c-shadow:#142B5E;        /* 群青墨 — gunjō ink */
  --c-coal:#1B3F86;          /* 群青 — gunjō (royal blue) */
  --c-iron:#2A55A6;          /* 紺青 — konjō (deep blue) */
  --c-graphite:#456FBE;      /* 露草色 — tsuyukusa */
  --c-stone:#6688CD;         /* 浅紺 — light navy */
  --c-ash:#85A2DB;           /* 薄露草 — light dewberry */
  --c-cement:#A1B9E4;        /* 薄藍 */
  --c-fog:#BFCDED;           /* 霞青 */
  --c-mist:#D5DDF1;          /* 薄霞青 */
  --c-pale:#E2E5EC;          /* 灰青 */
  --c-plaster:#E8EEF5;       /* 雪青 */
  --c-chalk:#F0F4FA;         /* 雪見青 */
  --c-light:#F5F8FC;         /* 浅雪青 */
  --c-bg:#EEF2F8;            /* 鳥の子青 — cool washi bg */

  /* Compatibility aliases */
  --w-snow:var(--c-light);
  --w-paper:var(--c-chalk);
  --w-pampas:var(--c-plaster);
  --w-ivory:var(--c-pale);
  --w-vanilla:var(--c-mist);
  --w-cream:var(--c-fog);
  --w-pearl:var(--c-cement);
  --w-shell:var(--c-pale);
  --w-frost:var(--c-light);
  --w-mist:var(--c-plaster);
  --w-bone:var(--c-pale);
  --w-ice:var(--c-chalk);
  --w-aqua:var(--c-plaster);
  --w-blush:var(--c-light);
  --w-rose:var(--c-chalk);
  --w-petal:var(--c-plaster);
  --w-pink:var(--c-pale);
  --w-sky:var(--c-mist);
  --w-cool-deep:var(--c-fog);
  --w-warm-deep:var(--c-cement);

  /* 境界 — 鉄筋のような線 */
  --w-edge:var(--c-iron);
  --w-edge-warm:var(--c-iron);
  --w-edge-soft:var(--c-stone);
  --w-line:rgba(34,35,42,.20);
  --w-line-soft:rgba(34,35,42,.10);

  /* — テキスト：深い影系のグレー — */
  --ink:var(--c-void);
  --ink-2:var(--c-shadow);
  --ink-3:var(--c-coal);
  --gray:var(--c-graphite);
  --gray-2:var(--c-stone);
  --gray-3:var(--c-cement);

  /* — 塾アクセント：印鑑朱×金茶×黒板緑（警告色を予備校色に転換） — */
  --caution-yellow:#C8A03A;     /* 金茶 — brass gold（金箔・名門） */
  --caution-yellow-deep:#9C7B20;/* 山吹深 — deep gold */
  --classified-red:#B22727;     /* 印鑑朱 — official seal red */
  --classified-red-deep:#7A1818;/* 朱墨深 */
  --rec-red:#C8332A;            /* 朱赤 — vermilion REC */
  --evidence-tan:#D4BC8E;       /* 黄朽葉 — aged paper tan */
  --evidence-paper:#F2E6CC;     /* 鳥の子紙 — washi */
  --evidence-stain:rgba(122,90,40,.10); /* 染み */
  --warden-blue:#1B3F86;        /* 群青 — uniform royal blue */
  --ok-green:#2D7A52;           /* 黒板緑 — chalkboard green */
  --gold-leaf:#C9A14A;          /* 金箔 */

  /* アウトラインなし */
  --w-outline:transparent;
  --w-outline-soft:transparent;
  --w-outline-pink:transparent;

  /* Brand exception — LINE keeps green (brand identity) */
  --green:#FFFFFF;
  --green-deep:#F8F2E0;

  /* Type */
  --font-mincho:'Noto Sans JP','Shippori Mincho B1',sans-serif;
  --font-body:'Noto Sans JP',sans-serif;
  --font-num:'Inter','Noto Sans JP',sans-serif;
  --font-serif-en:'Cormorant Garamond',serif;

  /* Neutral gray shadows */
  --sh-soft:0 1px 2px rgba(0,0,0,.06),0 4px 12px rgba(0,0,0,.06);
  --sh-card:0 1px 2px rgba(0,0,0,.06),0 8px 20px rgba(0,0,0,.10),0 20px 48px rgba(0,0,0,.12);
  --sh-hover:0 2px 4px rgba(0,0,0,.08),0 12px 28px rgba(0,0,0,.14),0 28px 64px rgba(0,0,0,.16);
  --sh-deep:0 2px 6px rgba(0,0,0,.10),0 16px 36px rgba(0,0,0,.16),0 36px 80px rgba(0,0,0,.20);

  /* テキストはアウトラインなし（モノクロは純粋な黒で読める） */
  --text-glow:none;
  --text-glow-strong:none;
  --text-glow-soft:none;

  /* Compatibility (kept for existing classes) */
  --bg:var(--w-snow);
  --w-kraft:var(--w-ice);
  --w-tan:var(--w-blush);
  --w-sand:var(--w-frost);
  --w-parchment:var(--w-cool-deep);
  --w-linen:var(--w-pearl);
  --paper:var(--w-snow);
  --bone:var(--w-bone);
  --copper:var(--ink);
  --copper-light:var(--ink-2);
  --copper-deep:var(--ink);
  --holo-cyan:var(--ink);
  --holo-pink:var(--ink);
  --glass:var(--w-snow);
  --glass-strong:var(--w-snow);
  --glass-soft:var(--w-paper);
  --glass-border:var(--w-line);
  --glass-border-soft:var(--w-line-soft);
  --shadow-glass:var(--sh-card);
  --shadow-glass-lg:var(--sh-deep);
  --shadow-glass-sm:var(--sh-soft);
  --holo-grad:linear-gradient(135deg,var(--ink) 0%,var(--ink-3) 100%);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;background:var(--c-bg)}
body{
  font-family:var(--font-body);
  font-feature-settings:"palt";
  color:var(--ink);
  line-height:1.85;
  background:var(--c-bg);
  overflow-x:hidden;
  padding-bottom:120px;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  font-weight:400;
  position:relative;
  min-height:100vh;
}

/* Concrete grid — formwork lines (型枠の継ぎ目) */
body::before{
  content:'';
  position:fixed;inset:0;
  pointer-events:none;
  z-index:0;
  background-image:
    linear-gradient(rgba(34,35,42,.08) 1px,transparent 1px),
    linear-gradient(90deg,rgba(34,35,42,.08) 1px,transparent 1px),
    radial-gradient(circle at 1px 1px,rgba(34,35,42,.18) 1px,transparent 1.5px);
  background-size:120px 120px,120px 120px,8px 8px;
  background-position:0 0,0 0,0 0;
}

/* Concrete texture — fine grain noise overlay */
body::after{
  content:'';
  position:fixed;inset:0;
  pointer-events:none;
  z-index:1;
  opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 300 300' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='c'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.92' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.13 0 0 0 0 0.13 0 0 0 0 0.16 0 0 0 .35 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23c)'/%3E%3C/svg%3E");
  mix-blend-mode:multiply;
}

.hero-geo{
  position:absolute;
  inset:0;
  pointer-events:none;
  overflow:hidden;
  z-index:1;
}
.hero-geo .geo{position:absolute}

/* Hero prison-themed elements */
.hero-caution-top{
  position:absolute;
  top:0;left:0;right:0;
  z-index:3;
  pointer-events:none;
}
.hero-rec-bar{
  position:absolute;
  top:80px;right:24px;
  display:flex;align-items:center;gap:12px;
  z-index:6;
}
@media(max-width:768px){
  .hero-rec-bar{top:auto;bottom:120px;right:14px;flex-direction:column;align-items:flex-end;gap:6px}
}
.hero-cam{
  position:absolute;
  z-index:5;
  pointer-events:none;
}
.hero-cam-1{top:90px;right:32px;width:90px;height:72px}
.hero-cam-2{top:50%;right:8px;width:72px;height:60px;transform:translateY(-50%)}
.hero-dossier{
  position:absolute;
  top:96px;left:88px;
  z-index:5;
  pointer-events:none;
}
.hero-stamp{
  position:absolute;
  top:30%;left:38%;
  z-index:2;
  pointer-events:none;
  width:140px;height:140px;
  font-size:18px!important;
  border-width:4px!important;
  opacity:.55;
  transform:rotate(-18deg);
}
@media(max-width:768px){
  .hero-cam-1{top:84px;right:14px;width:64px;height:52px}
  .hero-cam-2{top:auto;bottom:18%;right:8px;width:54px;height:44px;transform:none}
  .hero-dossier{top:90px;left:14px}
  .hero-dossier .dossier{padding:6px 10px;font-size:8px;letter-spacing:.10em}
  .hero-rec-bar{top:24px;left:14px;font-size:9px}
  .mugshot-ruler{display:none}
  .hero-stamp{top:50%;left:50%;transform:translate(-50%,-50%) rotate(-18deg);width:160px;height:160px}
}
@media(min-width:980px){
  .mugshot-ruler{padding:140px 0}
}

/* Panopticon — center surveillance composition */
.hero-panopticon{
  position:absolute;
  top:50%;right:-8%;
  transform:translateY(-50%);
  width:min(70vw,800px);
  aspect-ratio:1;
  pointer-events:none;
  z-index:1;
  opacity:.95;
  animation:panSpin 240s linear infinite;
}
.hero-panopticon svg{width:100%;height:100%}
@keyframes panSpin{
  from{transform:translateY(-50%) rotate(0deg)}
  to{transform:translateY(-50%) rotate(360deg)}
}
@media(max-width:768px){
  .hero-panopticon{
    top:auto;bottom:-30%;right:-30%;
    width:120vw;
    transform:none;
    animation:none;
    opacity:.6;
  }
}
@media (prefers-reduced-motion:reduce){
  .hero-panopticon{animation:none}
}
@keyframes wDrift{
  0%{transform:translate(0,0) scale(1)}
  50%{transform:translate(40px,-30px) scale(1.04)}
  100%{transform:translate(-30px,40px) scale(1)}
}

/* Subtle paper texture */
body::after{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:1;
  opacity:.35;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.3'/%3E%3C/svg%3E");
  mix-blend-mode:multiply;
}

img,svg{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
::selection{background:var(--ink);color:var(--w-snow)}

.mincho{font-family:var(--font-mincho)}
.num{font-family:var(--font-num);font-feature-settings:"tnum";letter-spacing:.02em}
.serif-en{font-family:var(--font-serif-en);font-style:italic}

/* ============================================
   Decorative blobs (now subtle white tints)
============================================ */
.blob{position:absolute;border-radius:50%;filter:blur(40px);opacity:.55;pointer-events:none;z-index:1}
.blob-copper{background:var(--w-blush)}
.blob-rose{background:var(--w-rose)}
.blob-sky{background:var(--w-sky)}
.blob-mint{background:var(--w-mint)}
.blob-amber{background:var(--w-vanilla)}
.blob-violet{background:var(--w-lilac)}
.shape{position:absolute;pointer-events:none;z-index:2;opacity:.35}
.shape-ring{border:1px solid var(--w-edge);border-radius:50%}
.shape-square{border:1px solid var(--w-edge-cool);border-radius:6px}
.shape-dot{background:var(--w-edge);border-radius:50%}

@keyframes floatA{0%,100%{transform:translate(0,0)}50%{transform:translate(20px,-30px)}}
@keyframes floatB{0%,100%{transform:translate(0,0)}50%{transform:translate(-30px,20px)}}
@keyframes floatC{0%,100%{transform:translate(0,0) rotate(0)}50%{transform:translate(15px,15px) rotate(8deg)}}
.float-a{animation:floatA 14s ease-in-out infinite}
.float-b{animation:floatB 18s ease-in-out infinite;animation-delay:-3s}
.float-c{animation:floatC 22s ease-in-out infinite;animation-delay:-6s}

/* ============================================
   Prison / Surveillance Utilities
============================================ */
/* Iron bars — vertical jail bars pattern */
.bars-pattern{
  background-image:repeating-linear-gradient(
    90deg,
    var(--c-iron) 0,
    var(--c-iron) 2px,
    transparent 2px,
    transparent 22px
  );
}
.bars-pattern-h{
  background-image:repeating-linear-gradient(
    0deg,
    var(--c-iron) 0,
    var(--c-iron) 2px,
    transparent 2px,
    transparent 22px
  );
}

/* Caution stripes — REAL警告テープ */
.caution-stripes{
  background-image:repeating-linear-gradient(
    -45deg,
    var(--c-void) 0,
    var(--c-void) 14px,
    var(--caution-yellow) 14px,
    var(--caution-yellow) 28px
  );
}
.caution-band{
  height:14px;
  background-image:repeating-linear-gradient(
    -45deg,
    var(--c-void) 0,
    var(--c-void) 14px,
    var(--caution-yellow) 14px,
    var(--caution-yellow) 28px
  );
  position:relative;
}
.caution-band::before,.caution-band::after{
  content:'';
  position:absolute;
  left:0;right:0;
  height:1.5px;
  background:var(--c-void);
}
.caution-band::before{top:0}
.caution-band::after{bottom:0}

/* Stencil text — military / prison stamp typography */
.stencil{
  font-family:var(--font-num);
  font-weight:800;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--c-iron);
}

/* Stamp — official document mark (RED) */
.stamp{
  display:inline-flex;
  align-items:center;justify-content:center;
  padding:6px 16px;
  border:2px solid var(--classified-red);
  font-family:var(--font-num);
  font-weight:800;font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--classified-red);
  background:transparent;
  transform:rotate(-4deg);
  position:relative;
  /* Distressed stamp ink texture */
  text-shadow:.5px 0 0 var(--classified-red-deep),-.5px 0 0 var(--classified-red-deep);
}
.stamp-circle{
  width:96px;height:96px;border-radius:50%;
  border:3px double var(--classified-red);
  display:flex;align-items:center;justify-content:center;
  flex-direction:column;
  font-family:var(--font-mincho);
  font-weight:900;
  color:var(--classified-red);
  transform:rotate(-12deg);
  font-size:13px;
  letter-spacing:.18em;
  text-align:center;
  line-height:1.25;
  /* Stamped ink imperfection */
  filter:contrast(1.1);
  opacity:.85;
}
.stamp-circle::before,.stamp-circle::after{
  content:'';position:absolute;
  width:5px;height:5px;border-radius:50%;
  background:var(--classified-red);
}
.stamp-circle::before{top:6px;left:6px}
.stamp-circle::after{bottom:6px;right:6px}

/* Mug-shot height ruler (vertical ticks) */
.mugshot-ruler{
  position:absolute;
  top:0;bottom:0;left:0;
  width:48px;
  pointer-events:none;
  display:flex;flex-direction:column;
  justify-content:space-between;
  padding:80px 0;
  z-index:2;
}
.mugshot-tick{
  display:flex;align-items:center;gap:8px;
  font-family:var(--font-num);
  font-size:9px;font-weight:700;
  color:var(--c-stone);
  letter-spacing:.08em;
}
.mugshot-tick::before{
  content:'';
  display:block;
  width:14px;height:1px;
  background:var(--c-stone);
}
.mugshot-tick.major::before{width:24px;height:1.5px;background:var(--c-coal)}
.mugshot-tick.major{color:var(--c-coal);font-weight:800}

/* Surveillance camera icon (SVG-style, can be inline) */
.surveillance-cam{
  width:48px;height:48px;
  display:inline-block;
}

/* File / dossier metadata block — aged paper */
.dossier{
  font-family:var(--font-num);
  font-size:10px;font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--c-coal);
  border:1px solid var(--c-coal);
  padding:8px 14px;
  display:inline-flex;
  align-items:center;gap:12px;
  background:var(--evidence-paper);
  position:relative;
}
.dossier::before{
  content:'';position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;
  border:3px solid var(--evidence-paper);
  pointer-events:none;
}
.dossier-num{color:var(--classified-red);font-weight:900}
.dossier-sep{width:1px;height:12px;background:var(--c-stone)}

/* Classified bar — red */
.classified-bar{
  display:inline-block;
  background:var(--classified-red);
  color:#fff;
  padding:4px 12px;
  font-family:var(--font-num);
  font-size:10px;font-weight:800;
  letter-spacing:.20em;
  text-transform:uppercase;
}

/* CCTV viewfinder corner brackets */
.cctv-frame{
  position:relative;
}
.cctv-frame::before,.cctv-frame::after,
.cctv-frame > .cctv-tr,.cctv-frame > .cctv-bl{
  content:'';position:absolute;
  width:24px;height:24px;
  border:2px solid var(--c-void);
  pointer-events:none;
  z-index:5;
}
.cctv-frame::before{top:-2px;left:-2px;border-right:none;border-bottom:none}
.cctv-frame::after{bottom:-2px;right:-2px;border-left:none;border-top:none}
.cctv-frame > .cctv-tr{top:-2px;right:-2px;border-left:none;border-bottom:none}
.cctv-frame > .cctv-bl{bottom:-2px;left:-2px;border-right:none;border-top:none}

/* REC indicator — pulsing red dot */
.rec-indicator{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-num);
  font-size:10px;font-weight:800;
  letter-spacing:.20em;text-transform:uppercase;
  color:var(--rec-red);
}
.rec-indicator::before{
  content:'';
  width:8px;height:8px;border-radius:50%;
  background:var(--rec-red);
  box-shadow:0 0 8px var(--rec-red);
  animation:recPulse 1.5s ease-in-out infinite;
}
@keyframes recPulse{
  0%,100%{opacity:1;transform:scale(1)}
  50%{opacity:.3;transform:scale(.7)}
}

/* Timestamp display (CCTV-style) */
.timestamp{
  font-family:var(--font-num);
  font-size:11px;font-weight:700;
  letter-spacing:.12em;
  color:var(--rec-red);
  text-shadow:0 0 4px rgba(210,58,47,.4);
  background:rgba(0,0,0,.85);
  padding:4px 8px;
  display:inline-block;
}

/* Chain-link fence pattern */
.fence-pattern{
  background-image:
    linear-gradient(45deg,transparent 48%,var(--c-graphite) 49%,var(--c-graphite) 51%,transparent 52%),
    linear-gradient(-45deg,transparent 48%,var(--c-graphite) 49%,var(--c-graphite) 51%,transparent 52%);
  background-size:24px 24px;
  opacity:.35;
}

/* Redacted text block */
.redacted{
  background:var(--c-void);
  color:transparent;
  padding:0 4px;
  user-select:none;
}

/* Evidence tag (string-tied paper tag) */
.evidence-tag{
  display:inline-block;
  background:var(--evidence-paper);
  color:var(--c-coal);
  padding:8px 14px 8px 22px;
  font-family:var(--font-num);
  font-size:10px;font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
  border:1px solid var(--c-stone);
  position:relative;
  clip-path:polygon(8px 0,100% 0,100% 100%,8px 100%,0 50%);
}
.evidence-tag::before{
  content:'';position:absolute;
  left:6px;top:50%;transform:translateY(-50%);
  width:5px;height:5px;border-radius:50%;
  background:var(--c-bg);
  border:1px solid var(--c-coal);
}

/* Page-head CCTV strip — REC + timestamp top-right */
.page-head{position:relative;overflow:hidden}
.page-head-rec{
  position:absolute;top:84px;right:24px;
  display:flex;align-items:center;gap:10px;z-index:6;
}
@media(max-width:760px){
  .page-head-rec{top:74px;right:14px;gap:6px}
  .page-head-rec .timestamp{font-size:9px;padding:3px 6px}
  .page-head-rec .rec-indicator{font-size:9px}
}
.page-head-caution{
  position:absolute;left:0;right:0;bottom:0;height:10px;
  background-image:repeating-linear-gradient(
    -45deg,
    var(--c-void) 0,
    var(--c-void) 10px,
    var(--caution-yellow) 10px,
    var(--caution-yellow) 20px
  );
  z-index:5;
}
.page-head-stamp{
  position:absolute;
  top:50%;right:5%;
  transform:translateY(-50%) rotate(-12deg);
  width:140px;height:140px;
  font-size:16px;
  z-index:1;
  opacity:.32;
  pointer-events:none;
}
@media(max-width:760px){
  .page-head-stamp{width:96px;height:96px;font-size:11px;right:auto;left:50%;transform:translate(-50%,-50%) rotate(-15deg);opacity:.18}
}

/* Section incident tag — small REC badge anchored to a card */
.incident-tag{
  position:absolute;top:14px;right:14px;
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-num);font-size:9px;font-weight:800;
  letter-spacing:.16em;
  color:var(--classified-red);
  text-transform:uppercase;
  z-index:2;
}
.incident-tag::before{
  content:'';width:6px;height:6px;border-radius:50%;
  background:var(--classified-red);
  box-shadow:0 0 6px rgba(160,40,40,.45);
}

/* Mugshot frame — wraps founder portrait */
.mugshot-frame{
  position:relative;
  background:var(--c-shadow);
  padding:14px 14px 18px;
  border:2px solid var(--c-void);
  display:inline-block;
  box-shadow:0 12px 32px rgba(0,0,0,.20);
}
.mugshot-frame > svg{
  background:var(--c-iron);
  filter:grayscale(1) contrast(1.1);
  display:block;
}
.mugshot-frame .mugshot-id{
  position:absolute;bottom:-14px;left:50%;transform:translateX(-50%);
  background:var(--c-void);color:#fff;
  font-family:var(--font-num);font-weight:800;font-size:10px;
  letter-spacing:.20em;padding:6px 14px;
  text-align:center;
  white-space:nowrap;
  border:1px solid var(--c-void);
}
.mugshot-frame .mugshot-corner{
  position:absolute;width:14px;height:14px;
  border:2px solid var(--caution-yellow);
}
.mugshot-frame .mugshot-corner.tl{top:-2px;left:-2px;border-right:none;border-bottom:none}
.mugshot-frame .mugshot-corner.tr{top:-2px;right:-2px;border-left:none;border-bottom:none}
.mugshot-frame .mugshot-corner.bl{bottom:-2px;left:-2px;border-right:none;border-top:none}
.mugshot-frame .mugshot-corner.br{bottom:-2px;right:-2px;border-left:none;border-top:none}

/* Fingerprint glyph — absolute placed (SVG inline) */
.fingerprint-mark{
  position:absolute;
  width:64px;height:64px;
  opacity:.30;
  pointer-events:none;
  color:var(--c-coal);
}

/* Section caution-band wrapper used between sections */
.caution-band.section-divider{height:10px;margin:0}

/* Pricing — invoice / dossier header */
.invoice-strip{
  display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:14px;
  padding:14px 18px;
  background:var(--evidence-paper);
  border:1px solid var(--c-coal);
  border-bottom:none;
  font-family:var(--font-num);
  font-size:10px;font-weight:700;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--c-coal);
}
.invoice-strip .invoice-num{color:var(--classified-red);font-weight:900}

/* Application form header (intake protocol) */
.intake-strip{
  display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:10px;
  padding:10px 14px;
  background:var(--c-void);color:#fff;
  font-family:var(--font-num);
  font-size:10px;font-weight:800;
  letter-spacing:.20em;
  text-transform:uppercase;
}
.intake-strip .intake-num{color:var(--caution-yellow)}

/* Protocol number badge for service mech cards */
.protocol-badge{
  position:absolute;top:14px;right:14px;
  background:var(--c-void);color:var(--caution-yellow);
  padding:4px 8px;
  font-family:var(--font-num);
  font-size:9px;font-weight:800;
  letter-spacing:.18em;
  text-transform:uppercase;
  z-index:2;
}

/* ============================================
   ⚠ KINETIC LAYER — surveillance world animations
   スリリングなCCTV演出。世界観を維持しながら "活きた感じ" を作る
============================================ */

/* --- Caution-tape MARQUEE ---------------------------- */
@keyframes cautionScroll{
  0%{background-position:0 0}
  100%{background-position:56px 0}
}
.caution-band{
  animation:cautionScroll 2.4s linear infinite;
  background-size:auto;
}

/* --- CRT scanlines (静止) ---------------------------- */
.cctv-scanlines{
  position:absolute;inset:0;
  pointer-events:none;
  z-index:4;
  background-image:repeating-linear-gradient(
    to bottom,
    rgba(0,0,0,.06) 0,
    rgba(0,0,0,.06) 1px,
    transparent 1px,
    transparent 3px
  );
  mix-blend-mode:multiply;
  opacity:.55;
}

/* --- 横走査ビーム（ゆっくり下降→上昇） -------------- */
.cctv-scan-beam{
  position:absolute;left:0;right:0;height:90px;
  pointer-events:none;
  z-index:4;
  background:linear-gradient(
    to bottom,
    transparent 0,
    rgba(210,58,47,.04) 30%,
    rgba(210,58,47,.10) 50%,
    rgba(210,58,47,.04) 70%,
    transparent 100%
  );
  animation:scanBeam 6.5s ease-in-out infinite;
  mix-blend-mode:screen;
}
@keyframes scanBeam{
  0%{top:-15%;opacity:.0}
  10%{opacity:.85}
  50%{top:88%;opacity:.85}
  60%{opacity:.0}
  100%{top:-15%;opacity:.0}
}

/* --- パノプティコン レーダースイープ ------------- */
.radar-sweep{
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:2;
  background:conic-gradient(
    from 0deg,
    rgba(201,161,74,.0) 0deg,
    rgba(201,161,74,.0) 300deg,
    rgba(201,161,74,.30) 350deg,
    rgba(201,161,74,.55) 358deg,
    rgba(201,161,74,.70) 360deg,
    rgba(201,161,74,.0) 360deg
  );
  border-radius:50%;
  mix-blend-mode:screen;
  animation:radarSpin 5s linear infinite;
  filter:blur(1px);
}
.radar-sweep::after{
  content:'';position:absolute;inset:30%;
  background:radial-gradient(circle,rgba(201,161,74,.18) 0%,transparent 70%);
  border-radius:50%;
  animation:radarPulse 5s linear infinite;
}
@keyframes radarSpin{
  to{transform:rotate(360deg)}
}
@keyframes radarPulse{
  0%,100%{opacity:.3}
  50%{opacity:.6}
}

/* --- 機密スタンプ ブリージング(呼吸) -------------- */
.stamp-circle{
  animation:stampBreath 4s ease-in-out infinite;
}
@keyframes stampBreath{
  0%,100%{transform:rotate(-12deg) scale(1);opacity:.85}
  50%{transform:rotate(-11deg) scale(1.03);opacity:1}
}
.hero-stamp{
  animation:heroStampBreath 3.5s ease-in-out infinite;
}
@keyframes heroStampBreath{
  0%,100%{transform:rotate(-15deg) scale(1);opacity:.85}
  50%{transform:rotate(-13deg) scale(1.04);opacity:1}
}

/* --- スタンプ落下エントランス --------------------- */
@keyframes stampDrop{
  0%{transform:rotate(-30deg) scale(2.8) translateY(-100px);opacity:0}
  60%{transform:rotate(-8deg) scale(1.15) translateY(0);opacity:1}
  80%{transform:rotate(-13deg) scale(.96)}
  100%{transform:rotate(-12deg) scale(1)}
}
.stamp-drop{animation:stampDrop .9s cubic-bezier(.4,1.6,.6,1) both}

/* --- ステータスティッカー（hero上部のライブ表示） ---- */
.status-ticker{
  display:flex;align-items:center;gap:14px;
  padding:8px 14px;
  background:rgba(0,0,0,.86);
  color:var(--caution-yellow);
  font-family:var(--font-num);
  font-size:10px;font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
  overflow:hidden;
  border-top:1px solid var(--caution-yellow);
  border-bottom:1px solid var(--caution-yellow);
}
.status-ticker .stk{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.status-ticker .stk b{color:#fff;font-weight:900}
.status-ticker .stk-sep{
  width:6px;height:6px;border-radius:50%;background:var(--caution-yellow);
  flex-shrink:0;opacity:.4;
}
.status-ticker .stk-led{
  width:7px;height:7px;border-radius:50%;
  background:var(--ok-green);box-shadow:0 0 7px var(--ok-green);
  animation:ledPulse 1.6s ease-in-out infinite;
}
.status-ticker .stk-led.warn{background:var(--rec-red);box-shadow:0 0 7px var(--rec-red)}
.status-ticker{
  background:linear-gradient(180deg,#0A1A3D 0%,#1B3F86 100%);
  border-color:var(--gold-leaf);
}
@keyframes ledPulse{
  0%,100%{opacity:.5;transform:scale(.85)}
  50%{opacity:1;transform:scale(1.05)}
}
.status-ticker-track{
  display:flex;gap:14px;
  animation:tickerSlide 35s linear infinite;
  white-space:nowrap;
  flex:1;
  align-items:center;
}
@keyframes tickerSlide{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}

/* --- グリッチテキスト（ヒーロー h1 hover/random） ---- */
.glitch{position:relative;display:inline-block}
.glitch::before,.glitch::after{
  content:attr(data-text);
  position:absolute;top:0;left:0;width:100%;
  pointer-events:none;
  opacity:.0;
}
.glitch::before{color:var(--rec-red);transform:translate(2px,0)}
.glitch::after{color:#48E374;transform:translate(-2px,0)}
.glitch.is-glitching::before,.glitch.is-glitching::after{
  opacity:.7;
  animation:glitchShift .35s steps(2) 1;
}
@keyframes glitchShift{
  0%{clip-path:inset(0 0 80% 0);transform:translate(3px,0)}
  20%{clip-path:inset(60% 0 10% 0);transform:translate(-3px,1px)}
  40%{clip-path:inset(20% 0 60% 0);transform:translate(2px,-1px)}
  60%{clip-path:inset(70% 0 5% 0);transform:translate(-2px,1px)}
  80%{clip-path:inset(10% 0 70% 0);transform:translate(3px,0)}
  100%{clip-path:inset(0 0 100% 0);transform:translate(0,0)}
}

/* --- カウンター ロール演出 ----------------------- */
.counter{display:inline-block}
.counter.is-counting{
  filter:blur(.4px);
  text-shadow:0 0 8px rgba(201,161,74,.5);
}

/* --- メカニズムカード hover REDACTED 解除 (デスクトップ only) -------- */
.mech-card{transition:transform .3s ease,box-shadow .3s ease}
.mech-card:hover{transform:translateY(-4px)}
@media(hover:hover) and (min-width:880px){
  .mech-card .mech-desc{
    position:relative;
  }
  .mech-card .mech-desc::before{
    content:'';
    position:absolute;
    inset:0;
    background:var(--c-void);
    transform-origin:left center;
    transform:scaleX(1);
    transition:transform .55s cubic-bezier(.7,0,.2,1);
    z-index:1;
    pointer-events:none;
  }
  .mech-card:hover .mech-desc::before{
    transform:scaleX(0);
  }
  .mech-card .mech-desc::after{
    content:'機密 ／ CLASSIFIED ／ HOVER ／ DECRYPT';
    position:absolute;left:50%;top:50%;
    transform:translate(-50%,-50%);
    color:var(--caution-yellow);
    font-family:var(--font-num);
    font-size:9px;font-weight:800;letter-spacing:.18em;
    white-space:nowrap;
    z-index:2;
    pointer-events:none;
    opacity:1;
    transition:opacity .25s ease;
  }
  .mech-card:hover .mech-desc::after{opacity:0}
}

/* --- カスタムカーソル（hero ＋ desktop only） ------ */
@media(hover:hover) and (min-width:880px){
  .hero{
    cursor:none;
  }
  .hero a,.hero button{cursor:none}
}
.hero-cursor{
  position:fixed;
  width:36px;height:36px;
  pointer-events:none;
  z-index:9999;
  transform:translate(-50%,-50%);
  mix-blend-mode:difference;
  opacity:0;
  transition:opacity .2s ease;
}
.hero-cursor.is-visible{opacity:1}
.hero-cursor::before,.hero-cursor::after{
  content:'';position:absolute;
  background:#fff;
}
.hero-cursor::before{
  top:50%;left:0;right:0;height:1px;transform:translateY(-50%);
}
.hero-cursor::after{
  left:50%;top:0;bottom:0;width:1px;transform:translateX(-50%);
}
.hero-cursor-circle{
  position:absolute;inset:0;
  border:1px solid #fff;
  border-radius:50%;
}
.hero-cursor-coords{
  position:absolute;
  top:24px;left:24px;
  font-family:var(--font-num);
  font-size:9px;font-weight:800;
  color:#fff;
  letter-spacing:.10em;
  white-space:nowrap;
}

/* --- ライブパルスドット (hero "監視中" 横) -------- */
.live-pulse{
  display:inline-block;
  width:7px;height:7px;border-radius:50%;
  background:var(--rec-red);
  position:relative;
  margin-right:6px;
  box-shadow:0 0 6px var(--rec-red);
}
.live-pulse::after{
  content:'';position:absolute;inset:-3px;border-radius:50%;
  border:1px solid var(--rec-red);
  animation:livePing 1.4s ease-out infinite;
}
@keyframes livePing{
  0%{transform:scale(.5);opacity:.9}
  100%{transform:scale(2.2);opacity:0}
}

/* --- データタイプライター(dossier-num) ------------ */
.typewriter::after{
  content:'_';
  display:inline-block;
  margin-left:1px;
  animation:caretBlink .8s step-end infinite;
  color:var(--classified-red);
}
@keyframes caretBlink{50%{opacity:0}}

/* --- noise overlay全体 (極薄) -------------------- */
.noise-overlay{
  position:fixed;inset:0;pointer-events:none;z-index:9990;
  opacity:.04;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence baseFrequency='.9' numOctaves='2' /></filter><rect width='100%' height='100%' filter='url(%23n)' /></svg>");
  mix-blend-mode:multiply;
}

/* --- インシデントタグの ●点滅 -------------------- */
.incident-tag::before{
  animation:livePing 1.4s ease-out infinite, recPulse 1.4s ease-in-out infinite;
}

/* --- mugshot frame に scanlineオーバーレイ ------- */
.mugshot-frame::after{
  content:'';position:absolute;inset:14px 14px 18px;
  background-image:repeating-linear-gradient(
    to bottom,
    rgba(255,255,255,.04) 0,rgba(255,255,255,.04) 1px,
    transparent 1px,transparent 3px);
  pointer-events:none;
  z-index:1;
}

/* --- ボタン hover で監視ターゲット化 -------------- */
.btn-primary{position:relative;overflow:hidden}
.btn-primary::before{
  content:'';position:absolute;
  inset:0;
  background:linear-gradient(110deg,
    transparent 30%,
    rgba(201,161,74,.25) 50%,
    transparent 70%);
  transform:translateX(-100%);
  transition:transform .8s ease;
  pointer-events:none;
}
.btn-primary:hover::before{transform:translateX(100%)}

/* --- offer-counter — 電子掲示板パルス ------------ */
.offer-counter b{
  display:inline-block;
  animation:counterFlash 1.8s ease-in-out infinite;
}
@keyframes counterFlash{
  0%,90%,100%{color:var(--classified-red);text-shadow:0 0 6px rgba(160,40,40,.4)}
  92%,96%{color:var(--rec-red);text-shadow:0 0 14px var(--rec-red)}
}

/* --- timestamp red dot -------------------------- */
.timestamp::before{
  content:'●';
  margin-right:5px;
  color:var(--rec-red);
  animation:recPulse 1.5s ease-in-out infinite;
}

/* ============================================
   📱 MOBILE READABILITY OPTIMIZATIONS
   ケータイで見やすく — 装飾を抑え、本文を主役に
============================================ */
@media(max-width:760px){
  /* --- 装飾レイヤーを大幅に削減 --- */
  .mugshot-ruler{display:none!important}
  .cctv-scan-beam{display:none}
  .cctv-scanlines{opacity:.18}
  .noise-overlay{opacity:.02}
  .hero-cam-2{display:none}
  .radar-sweep{opacity:.45}

  /* --- アニメーション軽減：グリッチ無効、呼吸ゆるく --- */
  .glitch::before,.glitch::after{display:none}
  .glitch.is-glitching::before,.glitch.is-glitching::after{display:none}
  .stamp-circle{
    animation:stampBreath 6s ease-in-out infinite;
  }

  /* --- ステータスティッカーを読みやすく ---
     スクロール無効化、要素を等間隔で配置 */
  .status-ticker{
    flex-direction:column;
    align-items:stretch;
    gap:0;
    padding:10px 12px;
    font-size:11px;
    line-height:1.5;
  }
  .status-ticker > .stk:first-child{
    margin-bottom:6px;
    padding-bottom:6px;
    border-bottom:1px solid rgba(201,161,74,.3);
    justify-content:flex-start;
  }
  .status-ticker-track{
    animation:none;
    flex-wrap:wrap;
    gap:8px 14px;
    flex:none;
    white-space:normal;
  }
  /* 重複要素は半分だけ見せる（後半を非表示） */
  .status-ticker-track > .stk:nth-child(n+11){display:none}
  .status-ticker-track > .stk-sep:nth-child(n+11){display:none}
  .status-ticker .stk{font-size:10.5px;letter-spacing:.10em}

  /* --- 機密スタンプを本文の邪魔にしない --- */
  .hero-stamp{
    top:auto!important;bottom:8%!important;
    left:auto!important;right:6%!important;
    transform:rotate(-15deg)!important;
    width:110px!important;height:110px!important;
    font-size:13px!important;
    opacity:.18!important;
  }
  .page-head-stamp{opacity:.10!important}

  /* --- Hero 本文を読みやすく --- */
  .hero{padding:96px 20px 56px}
  .hero h1{
    font-size:clamp(40px,11vw,52px);
    line-height:1.16;
    margin-bottom:28px;
    letter-spacing:-.025em;
  }
  /* グリッチを inline-block にせず文字を自然に折り返す */
  .glitch{display:inline}
  .hero-sub{
    font-size:15px;line-height:1.95;
    letter-spacing:.02em;
    background:rgba(232,230,224,.7);
    padding:14px 16px;
    border-radius:8px;
    backdrop-filter:blur(2px);
    position:relative;z-index:3;
  }
  .hero-eyebrow{font-size:11px;padding:8px 14px}

  /* --- CTAボタン・スタッツに余白 --- */
  .hero-cta-group{margin-top:24px;gap:10px}
  .hero-stats{margin-top:36px;gap:14px}
  .hero-stat{padding:28px 16px}
  .hero-stat .v{font-size:30px}
  .hero-stat .l{font-size:11.5px;letter-spacing:.14em}

  /* --- 警告テープのスクロールをゆっくり --- */
  .caution-band{
    animation:cautionScroll 4s linear infinite;
  }

  /* --- mech-card description を確実に表示 --- */
  .mech-card .mech-desc{font-size:14px;line-height:1.85}
  .mech-card .mech-desc::before,.mech-card .mech-desc::after{display:none!important}
  .protocol-badge{font-size:8px;padding:3px 7px;letter-spacing:.14em}

  /* --- インシデント/プロトコル等の「・」装飾サイズ調整 --- */
  .incident-tag{font-size:8.5px;letter-spacing:.10em;top:10px;right:10px}
  .dossier{font-size:9.5px;letter-spacing:.10em;padding:7px 11px;flex-wrap:wrap;gap:8px}
  .dossier-sep{display:none}

  /* --- REC バーをコンパクトに --- */
  .hero-rec-bar{gap:6px}
  .rec-indicator{font-size:9px;letter-spacing:.14em}
  .timestamp{font-size:10px;padding:3px 6px}

  /* --- Page-head 内側の余白とサイズ --- */
  .page-head{padding-top:72px;padding-bottom:48px}
  .page-head h1{font-size:clamp(36px,9vw,52px);line-height:1.18}
  .page-head .lead{font-size:14.5px;line-height:1.85}

  /* --- セクションタイトル可読性 --- */
  .section-title{font-size:clamp(26px,7vw,38px);line-height:1.30}
  .section-lead{font-size:14.5px;line-height:1.90}

  /* --- スタンプ・dossier等の透かしを薄く --- */
  .stamp-circle.offer-stamp{opacity:.55!important}

  /* --- form/intake-strip 折り返し --- */
  .intake-strip,.invoice-strip{
    flex-direction:column;align-items:flex-start;gap:6px;
    font-size:9.5px;padding:10px 12px;
  }

  /* --- 監督官スタンプを founder-text 上から外す --- */
  .founder-text > .stamp-circle{
    top:-8px!important;right:-2px!important;
    width:72px!important;height:72px!important;
    font-size:10px!important;
  }

  /* --- 確認済 / 受理 stamp 位置調整 --- */
  .plan .stamp-circle{
    top:108px!important;right:6px!important;
    width:72px!important;height:72px!important;
    font-size:10px!important;
  }
  #trial .stamp-circle{
    top:48px!important;right:8px!important;
    width:72px!important;height:72px!important;
    font-size:10px!important;
  }
}

/* === タブレット中間 === */
@media(min-width:761px) and (max-width:980px){
  .status-ticker{font-size:11px}
  .hero-sub{
    background:rgba(232,230,224,.55);
    padding:14px 18px;
    border-radius:10px;
  }
}

/* === モーション軽減希望ユーザーへの配慮 === */
@media(prefers-reduced-motion:reduce){
  .caution-band,.cctv-scan-beam,.radar-sweep,
  .stamp-circle,.hero-stamp,.glitch,
  .status-ticker-track,.live-pulse::after,
  .rec-indicator::before,.timestamp::before,
  .offer-counter b{
    animation:none!important;
  }
}

/* ============================================
   Geometric Utilities — Bauhaus / Swiss style
============================================ */
/* Subtle grid background */
.geo-grid-bg{
  background-image:
    linear-gradient(var(--w-line-soft) 1px,transparent 1px),
    linear-gradient(90deg,var(--w-line-soft) 1px,transparent 1px);
  background-size:80px 80px;
}

/* Pure geometric shapes (background decoration) */
.geo{position:absolute;pointer-events:none;z-index:1}
.geo-circle{border:1.5px solid var(--ink);border-radius:50%}
.geo-circle-fill{background:var(--ink);border-radius:50%}
.geo-square{border:1.5px solid var(--ink)}
.geo-square-fill{background:var(--ink)}
.geo-triangle{
  width:0;height:0;
  border-left:50px solid transparent;
  border-right:50px solid transparent;
  border-bottom:87px solid var(--ink);
}
.geo-triangle-outline{
  width:0;height:0;
  border-left:50px solid transparent;
  border-right:50px solid transparent;
  border-bottom:87px solid var(--ink);
  position:relative;
}
.geo-line-h{height:1.5px;background:var(--ink)}
.geo-line-v{width:1.5px;background:var(--ink)}
.geo-line-thick{height:3px;background:var(--ink)}
.geo-cross{
  position:relative;
  width:24px;height:24px;
}
.geo-cross::before,.geo-cross::after{
  content:'';
  position:absolute;
  background:var(--ink);
}
.geo-cross::before{
  top:50%;left:0;right:0;height:1.5px;transform:translateY(-50%);
}
.geo-cross::after{
  left:50%;top:0;bottom:0;width:1.5px;transform:translateX(-50%);
}

/* Number badges in geometric shapes */
.geo-num-circle,.geo-num-square,.geo-num-triangle{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--font-num);
  font-weight:700;font-size:14px;
  flex-shrink:0;
}
.geo-num-circle{
  width:48px;height:48px;
  border:1.5px solid var(--ink);
  border-radius:50%;
  color:var(--ink);
  background:var(--w-snow);
}
.geo-num-square{
  width:48px;height:48px;
  background:var(--ink);
  color:var(--w-snow);
}

/* Card corner marks (Bauhaus-style accent) */
.geo-card{
  position:relative;
}
.geo-card::before,.geo-card::after{
  content:'';
  position:absolute;
  width:12px;height:12px;
  border:1.5px solid var(--ink);
}
.geo-card::before{top:-1px;left:-1px;border-right:none;border-bottom:none}
.geo-card::after{bottom:-1px;right:-1px;border-left:none;border-top:none}

/* ============================================
   Glass / Card — geometric monochrome
============================================ */
/* Monochrome card — white with thin black border */
.glass{
  position:relative;
  background:var(--w-snow);
  border:1px solid var(--ink);
  border-radius:0;
  box-shadow:none;
  transition:transform .3s ease,background .3s ease,color .3s ease;
  z-index:5;
}
.glass:hover{
  transform:translateY(-4px);
  border-color:var(--classified-red);
  border-width:2px;
  margin:-1px;
}
/* Touch device — hoverを発火させない */
@media(hover:none){
  .glass:hover{transform:none;border-color:var(--ink);border-width:1px;margin:0}
}
.glass-strong{background:var(--ink);color:var(--w-snow)}
.glass-soft{background:var(--w-pampas);border-color:var(--w-line-soft)}

/* ============================================
   Containers
============================================ */
.container{max-width:1240px;margin:0 auto;padding:0 24px;position:relative;z-index:5}
.container-narrow{max-width:920px;margin:0 auto;padding:0 24px;position:relative;z-index:5}

/* ============================================
   Buttons — white-on-white with shadow depth
============================================ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  gap:10px;
  padding:18px 32px;
  border-radius:9999px;
  background:var(--w-snow);
  color:var(--ink);
  border:1px solid var(--ink);
  font-weight:700;font-size:13px;
  letter-spacing:.14em;
  text-transform:uppercase;
  font-family:var(--font-num);
  transition:all .25s ease;
}
.btn:hover{background:var(--ink);color:var(--w-snow)}
.btn-primary{
  background:var(--ink);
  color:var(--w-snow);
  border-color:var(--ink);
}
.btn-primary:hover{
  background:var(--w-snow);
  color:var(--ink);
}
.btn-glass{
  background:var(--w-snow);
  color:var(--ink);
  border:1px solid var(--ink);
}
.btn-glass:hover{background:var(--ink);color:var(--w-snow)}
.btn-arrow{font-size:18px;transition:transform .25s;line-height:1}
.btn:hover .btn-arrow{transform:translateX(4px)}

/* ============================================
   Header
============================================ */
.header{position:fixed;top:0;left:0;right:0;z-index:100;padding:14px 16px}
.header-inner{
  max-width:1280px;margin:0 auto;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(20px) saturate(180%);
  -webkit-backdrop-filter:blur(20px) saturate(180%);
  border:1px solid var(--ink);
  border-radius:9999px;
  padding:10px 14px 10px 12px;
  display:flex;align-items:center;justify-content:space-between;
  gap:12px;
  box-shadow:var(--sh-soft);
}
.logo{display:flex;align-items:center;gap:10px;flex-shrink:0}
.logo-mark{
  width:34px;height:34px;
  background:var(--ink);
  border:1px solid var(--ink);
  border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  color:var(--ink);
  font-family:var(--font-serif-en);
  font-size:20px;font-weight:600;
  font-style:italic;
}
.logo-text{
  font-family:var(--font-mincho);
  font-weight:800;font-size:18px;
  color:var(--ink);
  letter-spacing:.02em;
}
.logo-text span{color:var(--gray)}
.logo-img{height:44px;width:auto;display:block}
.footer .logo-img{height:54px}
@media(max-width:640px){.logo-img{height:38px}}

.nav{display:none;align-items:center;gap:4px;margin-left:auto;margin-right:8px}
@media(min-width:980px){.nav{display:flex}}
.nav a{
  font-family:var(--font-mincho);
  font-size:13px;font-weight:700;
  color:var(--ink-3);
  padding:8px 16px;
  border-radius:9999px;
  transition:all .25s;
}
.nav a:hover{color:var(--ink)}
.nav a.is-active{color:var(--w-snow);background:var(--ink)}

.header-cta{
  display:flex;align-items:center;gap:8px;
  padding:9px 16px;
  background:var(--ink);
  color:var(--w-snow);
  border:1px solid var(--ink);
  border-radius:9999px;
  font-size:11px;font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  font-family:var(--font-num);
  transition:all .25s;
  flex-shrink:0;
}
.header-cta:hover{transform:translateY(-1px)}
.header-cta-dot{width:6px;height:6px;border-radius:50%;background:var(--w-snow)}

/* Mobile */
.menu-toggle{
  display:flex;flex-direction:column;justify-content:center;gap:4px;
  width:36px;height:36px;
  background:var(--w-snow);border:1px solid var(--w-line);border-radius:9999px;
  align-items:center;cursor:pointer;flex-shrink:0;
}
@media(min-width:980px){.menu-toggle{display:none}}
.menu-toggle span{display:block;width:14px;height:1.5px;background:var(--w-edge);transition:transform .3s,opacity .3s}
.menu-toggle.is-open span:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
.menu-toggle.is-open span:nth-child(2){opacity:0}
.menu-toggle.is-open span:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}
.mobile-menu{
  position:fixed;top:74px;left:14px;right:14px;z-index:99;
  background:rgba(253,253,251,.92);
  backdrop-filter:blur(28px) saturate(180%);
  -webkit-backdrop-filter:blur(28px) saturate(180%);
  border:1px solid var(--w-line);
  border-radius:24px;padding:24px 20px;
  box-shadow:var(--sh-deep);
  opacity:0;visibility:hidden;transform:translateY(-12px);
  transition:opacity .3s,transform .3s,visibility .3s;
}
.mobile-menu.is-open{opacity:1;visibility:visible;transform:translateY(0)}
@media(min-width:980px){.mobile-menu{display:none}}
.mobile-menu nav{display:flex;flex-direction:column;gap:4px}
.mobile-menu a{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 18px;border-radius:14px;
  font-family:var(--font-mincho);font-size:15px;font-weight:700;
  color:var(--ink-2);transition:all .25s;
}
.mobile-menu a::after{content:'→';font-family:var(--font-num);color:var(--ink);opacity:0;transform:translateX(-6px);transition:opacity .25s,transform .25s}
.mobile-menu a:hover,.mobile-menu a.is-active{background:var(--w-mist);color:var(--ink)}
.mobile-menu a:hover::after,.mobile-menu a.is-active::after{opacity:1;transform:translateX(0)}
.mobile-menu a .num{
  font-family:var(--font-serif-en);font-style:italic;font-size:13px;
  color:var(--ink-3);margin-right:12px;font-weight:600;
}

/* ============================================
   HERO
============================================ */
.hero{
  position:relative;min-height:100vh;
  overflow:hidden;display:flex;align-items:center;
  padding:120px 0 80px;
}
.hero-inner{
  position:relative;width:100%;
  max-width:1240px;margin:0 auto;padding:24px 24px 0 56px;
  z-index:5;display:grid;grid-template-columns:1fr;gap:48px;align-items:center;
}
@media(min-width:980px){.hero-inner{grid-template-columns:1.05fr .95fr;gap:64px;padding:24px 24px 0 80px}}
@media(max-width:768px){.hero-inner{padding:24px;width:100%;min-width:0;flex:1 1 100%;max-width:100%}}
.hero-iso-scene{position:relative;width:100%;max-width:560px;margin:0 auto;z-index:4;aspect-ratio:1}
.hero-iso-scene svg{width:100%;height:auto;overflow:visible}

.hero-eyebrow{
  display:inline-flex;align-items:center;gap:14px;
  margin-bottom:36px;padding:10px 20px;
  background:var(--w-snow);
  border:1.5px solid var(--ink);
  border-radius:0;
  color:var(--ink);
  font-size:11px;font-family:var(--font-num);
  letter-spacing:.18em;text-transform:uppercase;font-weight:700;
}
.hero-eyebrow .dot{
  width:10px;height:10px;border-radius:0;
  background:var(--ink);
  box-shadow:none;
}
.hero h1{
  font-family:var(--font-mincho);font-weight:800;
  font-size:clamp(56px,9vw,108px);
  line-height:1.08;letter-spacing:-.03em;
  color:var(--ink);margin-bottom:36px;
}
.hero h1 .accent{
  color:var(--ink);
  font-style:italic;
  font-family:var(--font-mincho);
  position:relative;
  display:inline-block;
}
.hero h1 .accent::after{
  content:'';position:absolute;
  bottom:.05em;left:0;right:0;
  height:6px;background:var(--ink);
  z-index:-1;
}
.hero-sub{
  font-family:var(--font-mincho);
  font-size:clamp(15px,1.6vw,17px);
  color:var(--ink-2);
  line-height:2.2;max-width:520px;
  margin-bottom:48px;font-weight:600;
  
}
.hero-cta-group{display:flex;flex-direction:column;gap:14px;margin-bottom:48px}
@media(min-width:560px){.hero-cta-group{flex-direction:row;flex-wrap:wrap}}

.hero-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;max-width:560px}
.hero-stat{
  background:var(--w-snow);
  border:1.5px solid var(--ink);
  border-radius:0;
  padding:32px 20px;text-align:center;
  transition:all .25s;position:relative;
}
.hero-stat:hover{transform:translateY(-3px);background:var(--ink);color:var(--w-snow)}
.hero-stat:hover .v,.hero-stat:hover .v sup,.hero-stat:hover .l{color:var(--w-snow)}
/* Bauhaus corner marks */
.hero-stat::before,.hero-stat::after{
  content:'';position:absolute;
  width:8px;height:8px;background:var(--ink);
}
.hero-stat::before{top:-4px;left:-4px}
.hero-stat::after{bottom:-4px;right:-4px}
.hero-stat .v{
  font-family:var(--font-num);font-weight:800;
  font-size:clamp(28px,3.6vw,38px);
  color:var(--ink);line-height:1;letter-spacing:-.03em;margin-bottom:10px;
}
.hero-stat .v sup{font-size:.42em;color:var(--gray);font-weight:700;margin-left:3px;vertical-align:.6em}
.hero-stat .l{font-size:12px;color:var(--gray);font-family:var(--font-num);letter-spacing:.16em;text-transform:uppercase;font-weight:700}

/* ============================================
   Section
============================================ */
section{padding:120px 0;position:relative;overflow:hidden}
@media(max-width:768px){section{padding:80px 0}}

/* Monochrome alternating sections */
.worries{background:var(--c-plaster)}
.mechanisms{background:var(--c-bg)}
.dayflow{background:var(--c-chalk)}
.schedule{background:var(--c-pale)}
.pricing{background:var(--c-plaster)}
.founder{background:var(--c-coal);color:var(--c-light)}
.enroll{background:var(--c-bg)}
.faq{background:var(--c-pale)}
.form-section{background:var(--c-plaster)}
.features{background:var(--c-bg)}

.atmosphere{position:absolute;inset:0;pointer-events:none;z-index:1}

.chapter{
  display:flex;align-items:center;gap:16px;
  margin-bottom:32px;
  font-family:var(--font-num);font-size:11px;
  letter-spacing:.18em;text-transform:uppercase;
  font-weight:700;color:var(--ink);
}
.chapter > span:not([class]){display:none}
.chapter::before{
  content:'';
  width:14px;height:14px;
  background:var(--ink);
  flex-shrink:0;
}
.chapter-num{
  font-family:var(--font-num);font-style:normal;
  font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink);font-weight:700;
  padding:6px 12px;
  border:1.5px solid var(--ink);
  border-radius:0;
}
.chapter-line{flex:1;height:1.5px;background:var(--ink)}
.section-title{
  font-family:var(--font-mincho);font-weight:800;
  font-size:clamp(32px,4.8vw,56px);
  line-height:1.25;letter-spacing:-.02em;
  color:var(--ink);margin-bottom:28px;
  position:relative;
}
.section-title .accent{
  color:var(--ink-3);
  font-style:italic;
  position:relative;
}
.section-lead{
  font-family:var(--font-mincho);
  font-size:clamp(15px,1.5vw,16px);
  color:var(--ink-2);line-height:2.2;
  max-width:580px;font-weight:600;
  
}

/* ============================================
   Page Header
============================================ */
.page-head{position:relative;padding:140px 0 60px;overflow:hidden;background:var(--w-tan)}
.page-head-inner{max-width:1240px;margin:0 auto;padding:0 24px;position:relative;z-index:5;text-align:center}
.page-head .breadcrumb{
  display:flex;align-items:center;justify-content:center;gap:10px;
  margin-bottom:24px;font-family:var(--font-num);font-size:11px;
  color:var(--gray);letter-spacing:.14em;text-transform:uppercase;font-weight:700;
  
}
.page-head .breadcrumb a{color:var(--gray);transition:color .25s}
.page-head .breadcrumb a:hover{color:var(--ink)}
.page-head .breadcrumb .sep{opacity:.4}
.page-head .breadcrumb .current{color:var(--ink)}
.page-head h1{
  font-family:var(--font-mincho);font-weight:800;
  font-size:clamp(36px,6vw,72px);line-height:1.2;letter-spacing:-.02em;
  color:var(--ink);margin-bottom:18px;
  
}
.page-head h1 .accent{color:var(--ink-3);font-style:italic}
.page-head .lead{
  font-family:var(--font-mincho);font-size:clamp(14px,1.4vw,16px);
  color:var(--ink-3);line-height:2;max-width:560px;margin:0 auto;font-weight:500;
  
}

/* ============================================
   Features (home cards)
============================================ */
.features-grid{display:grid;grid-template-columns:1fr;gap:20px;margin-top:48px}
@media(min-width:768px){.features-grid{grid-template-columns:1fr 1fr}}
.feature-card{display:flex;flex-direction:column;padding:40px 32px;text-decoration:none;color:inherit;transition:transform .35s,background .35s,color .35s;cursor:pointer;position:relative}
.feature-card:hover{transform:translateY(-6px);background:var(--ink);color:var(--w-snow)}
.feature-card:hover .feat-num,.feature-card:hover .feat-eyebrow,.feature-card:hover h3,.feature-card:hover p,.feature-card:hover .feat-cta{color:var(--w-snow)}
/* Geometric corner accents */
.feature-card::before,.feature-card::after{
  content:'';position:absolute;
  width:14px;height:14px;border:1.5px solid var(--ink);
  transition:border-color .35s;
}
.feature-card::before{top:-1px;left:-1px;border-right:none;border-bottom:none}
.feature-card::after{bottom:-1px;right:-1px;border-left:none;border-top:none}
.feature-card:hover::before,.feature-card:hover::after{border-color:var(--w-snow)}
.feature-card .feat-num{
  font-family:var(--font-serif-en);font-style:italic;
  font-size:40px;color:var(--ink);
  line-height:1;margin-bottom:18px;font-weight:500;
  
}
.feature-card .feat-eyebrow{
  font-family:var(--font-num);font-size:11px;
  color:var(--gray);letter-spacing:.16em;
  text-transform:uppercase;font-weight:800;margin-bottom:10px;
  
}
.feature-card h3{
  font-family:var(--font-mincho);font-weight:800;font-size:26px;
  color:var(--ink);margin-bottom:12px;letter-spacing:.02em;
  
}
.feature-card p{
  font-family:var(--font-mincho);font-size:14.5px;
  color:var(--ink-3);line-height:1.9;
  margin-bottom:20px;font-weight:500;flex:1;
  
}
.feature-card .feat-cta{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--font-num);font-size:12px;font-weight:800;
  color:var(--ink);letter-spacing:.12em;text-transform:uppercase;
  
}

/* ============================================
   Worries
============================================ */
.worries-list{margin-top:56px;display:grid;grid-template-columns:1fr;gap:18px}
@media(min-width:768px){.worries-list{grid-template-columns:1fr 1fr;gap:20px}}
.worry-item{display:flex;align-items:flex-start;gap:20px;padding:28px 30px;transition:all .35s ease}
.worry-item:hover{transform:translateY(-3px)}
.worry-num{
  flex-shrink:0;width:44px;height:44px;
  background:var(--w-shell);
  border:1px solid var(--w-edge);
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:var(--ink);
  font-family:var(--font-serif-en);font-style:italic;font-size:18px;font-weight:600;
  
  box-shadow:var(--sh-soft);
}
.worry-text{
  font-family:var(--font-mincho);font-size:15.5px;line-height:1.85;
  color:var(--ink);font-weight:700;flex:1;
  
}
.worry-text::before{content:'「';color:var(--gray);font-weight:700}
.worry-text::after{content:'」';color:var(--gray);font-weight:700}

/* ============================================
   Mechanisms
============================================ */
.mech-grid{margin-top:64px;display:grid;grid-template-columns:1fr;gap:24px}
@media(min-width:600px){.mech-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1100px){.mech-grid{grid-template-columns:repeat(3,1fr)}}
.mech-card{padding:44px 32px 36px;transition:transform .4s,box-shadow .4s}
.mech-card:hover{transform:translateY(-6px)}
.mech-icon{
  width:56px;height:56px;
  background:var(--w-shell);
  border:1px solid var(--w-edge);
  border-radius:16px;
  display:flex;align-items:center;justify-content:center;
  color:var(--ink);margin-bottom:24px;
  box-shadow:var(--sh-soft);
}
.mech-icon svg{width:24px;height:24px}
.mech-num{
  font-family:var(--font-serif-en);font-style:italic;font-size:16px;
  color:var(--ink);font-weight:600;margin-bottom:14px;
  letter-spacing:.04em;display:flex;align-items:baseline;gap:6px;
  
}
.mech-num small{font-family:var(--font-num);font-size:10px;color:var(--gray);letter-spacing:.1em;font-style:normal;font-weight:700}
.mech-title{font-family:var(--font-mincho);font-weight:700;font-size:20px;color:var(--ink);margin-bottom:12px;line-height:1.5;letter-spacing:.02em}
.mech-desc{font-family:var(--font-body);font-size:13.5px;color:var(--ink-3);line-height:1.9;font-weight:500}

/* ============================================
   Day flow
============================================ */
/* ============================================
   Hero eyebrow ribbon + trust row
============================================ */
.hero-eyebrow{
  display:inline-flex;align-items:center;gap:14px;
  padding:18px 32px 18px 24px;
  background:linear-gradient(135deg, var(--classified-red) 0%, #D63131 50%, var(--classified-red) 100%);
  color:#fff;
  border-radius:9999px;
  margin-bottom:32px;
  position:relative;overflow:hidden;
  box-shadow:
    0 16px 40px -8px rgba(178,39,39,.6),
    0 0 0 5px rgba(178,39,39,.08);
  animation:
    heroEyebrowIn 1s cubic-bezier(.34,1.56,.64,1) .15s both,
    heroEyebrowBreathe 2.4s ease-in-out 1.4s infinite;
}
@keyframes heroEyebrowIn{
  0%{opacity:0;transform:translateY(-22px) scale(.55)}
  55%{opacity:1;transform:translateY(0) scale(1.12)}
  75%{transform:scale(.96)}
  100%{transform:scale(1)}
}
@keyframes heroEyebrowBreathe{
  0%,100%{box-shadow:0 14px 32px -8px rgba(178,39,39,.55),0 0 0 4px rgba(178,39,39,.08)}
  50%{box-shadow:0 18px 44px -6px rgba(178,39,39,.7),0 0 0 9px rgba(178,39,39,.04)}
}
/* Sheen sweep over the ribbon */
.hero-eyebrow::before{
  content:'';position:absolute;
  top:0;bottom:0;left:-40%;width:40%;
  background:linear-gradient(105deg, transparent 20%, rgba(255,255,255,.42) 50%, transparent 80%);
  animation:heroEyebrowSheen 3.6s ease-in-out 2s infinite;
  pointer-events:none;
}
@keyframes heroEyebrowSheen{
  0%{left:-40%}
  25%,100%{left:140%}
}
.hero-eyebrow-dot{
  width:13px;height:13px;border-radius:50%;
  background:#fff;flex-shrink:0;
  box-shadow:0 0 0 4px rgba(255,255,255,.35),0 0 14px rgba(255,255,255,.6);
  animation:heroEyebrowDot 1.4s ease-in-out infinite;
  position:relative;z-index:1;
}
@keyframes heroEyebrowDot{0%,100%{box-shadow:0 0 0 4px rgba(255,255,255,.35),0 0 14px rgba(255,255,255,.6)}50%{box-shadow:0 0 0 11px rgba(255,255,255,0),0 0 22px rgba(255,255,255,.4)}}
.hero-eyebrow-text{
  font-family:var(--font-body);
  font-size:18px;font-weight:800;
  letter-spacing:.04em;
  position:relative;z-index:1;
  line-height:1;
}
.hero-eyebrow-text b{
  color:#FFE3A6;font-weight:900;font-size:21px;
  letter-spacing:.02em;
  text-shadow:0 0 16px rgba(255,227,166,.55);
}

.hero-trust{
  display:flex;align-items:center;flex-wrap:wrap;
  gap:10px 14px;
  margin:22px 0 4px;
  font-family:var(--font-body);
  font-size:11px;font-weight:600;color:var(--gray);
  letter-spacing:.04em;
}
.hero-trust b{color:var(--classified-red);font-weight:900;margin-right:4px}
.hero-trust-sep{color:var(--gray-3);opacity:.55}

@media(max-width:640px){
  .hero-eyebrow{padding:15px 22px 15px 18px;margin-bottom:26px;gap:11px}
  .hero-eyebrow-dot{width:11px;height:11px}
  .hero-eyebrow-text{font-size:15px}
  .hero-eyebrow-text b{font-size:18px}
  .hero-trust{font-size:10.5px;gap:8px;justify-content:flex-start}
}

/* ============================================
   Phone mock (HERO LINE report)
============================================ */
.phone-mock-wrap{margin:56px auto 16px;text-align:center;perspective:1400px;max-width:320px}
.phone-mock-caption{
  font-family:var(--font-mincho);font-size:12px;font-weight:700;
  color:var(--gray);letter-spacing:.08em;
  margin:0 0 18px;
}
/* HERO main-visual variant ─ bigger, more dominant */
.phone-mock-hero{
  margin:64px auto 24px;
  max-width:480px;
  padding:32px 16px 24px;
  position:relative;
  isolation:isolate;
}
.phone-mock-hero::before{
  content:'';
  position:absolute;
  inset:0;
  background:
    radial-gradient(ellipse at 50% 30%, rgba(10,26,61,.07) 0%, transparent 60%);
  z-index:-1;
  pointer-events:none;
}
.phone-mock-tag{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 12px 6px 8px;
  background:var(--ink);color:var(--w-snow);
  border-radius:9999px;
  font-family:var(--font-num);font-size:10px;font-weight:800;
  letter-spacing:.18em;text-transform:uppercase;
  margin-bottom:16px;
}
.phone-mock-tag-dot{
  width:6px;height:6px;border-radius:50%;
  background:#06C755;
  box-shadow:0 0 0 3px rgba(6,199,85,.25);
  animation:pmDotPulse 1.6s ease-in-out infinite;
}
@keyframes pmDotPulse{0%,100%{box-shadow:0 0 0 3px rgba(6,199,85,.25)}50%{box-shadow:0 0 0 6px rgba(6,199,85,.05)}}
.phone-mock-title{
  font-family:var(--font-mincho);
  font-size:26px;font-weight:800;line-height:1.5;
  color:var(--ink);
  margin:0 0 12px;letter-spacing:.02em;
}
.phone-mock-title .em{
  color:var(--classified-red);
  font-style:italic;
}
.phone-mock-hero .phone-mock-caption{
  font-size:13px;color:var(--ink-3);font-weight:600;
  margin-bottom:28px;
}
.phone-stage{
  position:relative;
  display:inline-block;
  isolation:isolate;
  animation:phoneFloat 5.5s ease-in-out infinite;
}
@keyframes phoneFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.phone-glow{
  position:absolute;
  inset:-30px -50px;
  background:
    radial-gradient(ellipse at 50% 50%, rgba(6,199,85,.18) 0%, transparent 60%),
    radial-gradient(ellipse at 50% 50%, rgba(178,39,39,.10) 0%, transparent 70%);
  filter:blur(20px);
  z-index:-1;
  animation:phoneGlow 4s ease-in-out infinite;
}
@keyframes phoneGlow{0%,100%{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}
.phone-badge{
  position:absolute;
  top:-14px;left:-12px;
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 14px 8px 10px;
  background:#fff;
  border:1.5px solid var(--ink);
  border-radius:9999px;
  font-family:var(--font-num);font-size:11px;font-weight:800;
  color:var(--ink);letter-spacing:.06em;
  box-shadow:0 6px 18px -4px rgba(10,26,61,.25);
  z-index:5;
  transform:rotate(-6deg);
  animation:phoneBadgeIn .6s ease-out 1.2s both;
}
@keyframes phoneBadgeIn{from{opacity:0;transform:rotate(-6deg) scale(.5) translateY(20px)}to{opacity:1;transform:rotate(-6deg) scale(1) translateY(0)}}
.phone-badge-dot{
  width:7px;height:7px;border-radius:50%;
  background:var(--classified-red);
  box-shadow:0 0 0 3px rgba(178,39,39,.2);
  animation:pmDotPulse 1.6s ease-in-out infinite;
}
@media(max-width:640px){
  .phone-badge{top:-10px;left:0;font-size:10px;padding:6px 12px 6px 8px}
  .phone-glow{inset:-20px -30px}
}

.phone-mock-hero .phone-frame{
  width:320px;
  border-radius:48px;
  padding:16px 12px;
}
.phone-mock-hero .phone-notch{width:104px;height:24px;top:20px}
.phone-mock-hero .phone-screen{padding:54px 12px 18px;border-radius:34px;min-height:430px}
.phone-mock-hero .line-card-title{font-size:14px}
.phone-mock-hero .line-checks li{font-size:12px;padding:6px 0 6px 24px}
.phone-mock-hero .line-progress-value{font-size:22px}
.phone-mock-hero .line-comment p{font-size:11.5px}

@media(max-width:640px){
  .phone-mock-hero{max-width:100%;padding:24px 0 16px;margin-top:48px}
  .phone-mock-title{font-size:21px;line-height:1.55}
  .phone-mock-hero .phone-mock-caption{font-size:12px;margin-bottom:22px}
  .phone-mock-hero .phone-frame{width:280px;border-radius:42px;padding:14px 10px}
  .phone-mock-hero .phone-notch{width:90px;height:21px;top:18px}
  .phone-mock-hero .phone-screen{padding:46px 10px 14px;border-radius:30px;min-height:380px}
  .phone-mock-hero .line-card-title{font-size:13px}
  .phone-mock-hero .line-checks li{font-size:11.5px}
  .phone-mock-hero .line-progress-value{font-size:20px}
}

.phone-frame{
  position:relative;
  width:280px;margin:0 auto;
  background:#0A0A0E;
  border-radius:42px;
  padding:14px 10px;
  box-shadow:
    0 30px 70px -20px rgba(10,26,61,.45),
    0 6px 18px rgba(0,0,0,.18),
    inset 0 0 0 2px #2a2a35;
  transform:rotate(-2.5deg) translateZ(0);
  transition:transform .4s ease;
}
.phone-frame:hover{transform:rotate(0deg) translateY(-4px)}
.phone-notch{
  position:absolute;
  top:18px;left:50%;
  transform:translateX(-50%);
  width:90px;height:22px;
  background:#000;
  border-radius:14px;
  z-index:3;
}
.phone-screen{
  background:#EAEDF1;
  border-radius:30px;
  padding:48px 10px 16px;
  font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic UI",sans-serif;
  text-align:left;
  min-height:380px;
}
.line-bar{
  display:flex;align-items:center;gap:8px;
  background:#06C755;color:#fff;
  padding:8px 10px;border-radius:8px 8px 0 0;
  margin:0 2px;
}
.line-bar-icon{
  width:24px;height:24px;border-radius:6px;
  background:#fff;color:#06C755;
  display:flex;align-items:center;justify-content:center;
  font-weight:900;font-size:14px;font-family:Inter,sans-serif;
  font-style:italic;
}
.line-bar-meta{display:flex;flex-direction:column;line-height:1.1;flex:1}
.line-bar-name{font-size:11px;font-weight:700;letter-spacing:.02em}
.line-bar-time{font-size:9px;opacity:.85;margin-top:2px}
.line-card{
  background:#fff;
  margin:0 2px;
  padding:12px 12px 14px;
  border-radius:0 0 10px 10px;
  color:#222;
  box-shadow:0 1px 2px rgba(0,0,0,.05);
}
.line-card-head{margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid #f0f0f0}
.line-card-title{font-size:13px;font-weight:700;color:#0A1A3D;margin-bottom:3px;letter-spacing:.01em}
.line-card-sub{font-size:10px;color:#888;letter-spacing:.02em}
.line-checks{list-style:none;padding:0;margin:0 0 10px}
.line-checks li{
  position:relative;
  padding:5px 0 5px 22px;
  font-size:11px;color:#333;line-height:1.4;
  border-bottom:1px dashed #f4f4f4;
}
.line-checks li:last-child{border-bottom:0}
.line-checks li::before{
  content:'✓';
  position:absolute;left:4px;top:5px;
  width:14px;height:14px;
  background:#06C755;color:#fff;
  border-radius:50%;
  font-size:9px;font-weight:900;
  display:flex;align-items:center;justify-content:center;
  line-height:1;
}
.line-checks b{color:#0A1A3D;font-weight:700}
.line-progress{margin:10px 0;padding:8px 4px}
.line-progress-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}
.line-progress-label{font-size:10px;color:#666;font-weight:600}
.line-progress-value{font-family:Inter,sans-serif;font-size:18px;font-weight:800;color:#06C755;letter-spacing:-.02em}
.line-progress-value small{font-size:11px;font-weight:700;margin-left:1px}
.line-progress-bar{height:6px;background:#eef0f2;border-radius:3px;overflow:hidden}
.line-progress-bar span{display:block;height:100%;background:linear-gradient(90deg,#06C755,#2ED573);border-radius:3px;animation:pmockBar 1.6s ease-out 0.4s both}
@keyframes pmockBar{from{width:0!important}}
.line-comment{
  margin-top:8px;padding:8px 10px;
  background:#FFF8E1;
  border-left:3px solid #FFC107;
  border-radius:4px;
}
.line-comment-label{font-size:9px;font-weight:700;color:#A1860D;letter-spacing:.06em;margin-bottom:3px}
.line-comment p{margin:0;font-size:10.5px;color:#333;line-height:1.5}

@media(max-width:640px){
  .phone-mock-wrap{margin-top:40px;max-width:280px}
  .phone-frame{width:240px;padding:12px 8px;border-radius:36px}
  .phone-notch{width:78px;height:19px;top:16px;border-radius:12px}
  .phone-screen{padding:42px 8px 14px;border-radius:26px;min-height:340px}
}

.dayflow-persona{margin:48px auto 48px;max-width:640px;text-align:center;padding:32px 28px}
.dayflow-persona.glass:hover{transform:none;border-color:var(--ink);border-width:1px;margin:0}

/* ============================================
   Promise (about page)
============================================ */
.promise{padding:120px 0;position:relative}
.promise-list{display:flex;flex-direction:column;gap:28px;max-width:780px;margin:0 auto}
.promise-item{padding:48px 44px;position:relative}
.promise-item.glass:hover{transform:none;border-color:var(--classified-red);border-width:1px;margin:0}
.promise-num{font-family:var(--font-num);font-size:13px;font-weight:800;color:var(--classified-red);letter-spacing:.22em;margin-bottom:18px}
.promise-title{font-family:var(--font-mincho);font-size:26px;font-weight:800;line-height:1.55;color:var(--ink);margin:0 0 22px;letter-spacing:.02em}
.promise-text{font-family:var(--font-mincho);font-size:15px;line-height:2;color:var(--ink-3);font-weight:500;margin:0}
@media(max-width:640px){
  .promise{padding:80px 0}
  .promise-item{padding:34px 24px}
  .promise-title{font-size:21px;margin-bottom:18px}
  .promise-text{font-size:14px;line-height:1.95}
  .promise-num{font-size:12px;margin-bottom:14px}
}
.dayflow-persona .name{font-family:var(--font-serif-en);font-style:italic;font-size:13px;color:var(--gray);margin-bottom:12px;letter-spacing:.04em}
.dayflow-persona .quote{font-family:var(--font-mincho);font-size:16px;line-height:2;color:var(--ink);font-weight:600}
.dayflow-persona .quote b{color:var(--ink);font-weight:700;border-bottom:1.5px solid var(--w-edge)}
.timeline{max-width:780px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.timeline-item{display:grid;grid-template-columns:90px 1fr;gap:36px;align-items:center;padding:22px 26px;transition:all .3s}
@media(max-width:560px){.timeline-item{grid-template-columns:72px 1fr;gap:24px;padding:18px 20px}}
.timeline-item:hover{transform:translateX(4px)}
.timeline-time-badge{width:90px;text-align:center}
@media(max-width:560px){.timeline-time-badge{width:72px}}
.timeline-time{
  display:inline-block;font-family:var(--font-num);font-weight:700;font-size:18px;
  color:var(--ink);letter-spacing:-.02em;
  padding:9px 16px;border:1px solid var(--w-edge);border-radius:12px;
  background:var(--w-shell);
  
}
.timeline-content .timeline-title{font-family:var(--font-mincho);font-weight:700;font-size:17px;color:var(--ink);margin-bottom:4px;line-height:1.5;letter-spacing:.02em}
.timeline-content .timeline-desc{font-size:13.5px;color:var(--ink-3);line-height:1.85;font-weight:500}
.timeline-item.highlight{background:var(--w-bone);border-color:var(--w-edge)}

/* ============================================
   Schedule
============================================ */
.schedule-grid{display:grid;grid-template-columns:1fr;gap:28px;max-width:980px;margin:56px auto 0}
@media(min-width:768px){.schedule-grid{grid-template-columns:1fr 1fr}}
.schedule-card{padding:0;overflow:hidden}
.schedule-head{
  padding:28px 24px;
  background:var(--w-bone);
  border-bottom:1px solid var(--w-line);
  display:flex;flex-direction:column;gap:8px;position:relative;
}
.schedule-card.weekend .schedule-head{background:var(--w-pearl)}
.schedule-head .label{font-family:var(--font-num);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gray);font-weight:800}
.schedule-head .day{font-family:var(--font-mincho);font-weight:800;font-size:38px;color:var(--ink);letter-spacing:-.01em;line-height:1;margin-bottom:10px}
.schedule-head .meta{font-family:var(--font-num);font-size:13px;color:var(--ink-3);display:flex;align-items:baseline;gap:8px}
.schedule-head .meta b{font-weight:800;font-size:20px;color:var(--ink)}
.schedule-list{padding:14px 24px 22px}
.schedule-row{display:grid;grid-template-columns:auto 1fr auto;padding:10px 0;align-items:center;gap:14px;border-bottom:1px dashed var(--w-line)}
.schedule-row:last-child{border-bottom:none}
.schedule-row .period{
  width:36px;height:36px;
  background:var(--w-shell);border:1px solid var(--w-edge);border-radius:8px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-num);font-size:11px;font-weight:800;color:var(--ink);
  
}
.schedule-row .hours{font-family:var(--font-num);font-size:14.5px;color:var(--ink);font-weight:600;letter-spacing:.02em}
.schedule-row .tag{
  font-family:var(--font-serif-en);font-style:italic;font-size:12px;
  color:var(--ink);
  padding:3px 12px;border:1px solid var(--w-edge);border-radius:9999px;
  background:var(--w-shell);font-weight:700;
  
}
.schedule-note{text-align:center;color:var(--ink-3);font-family:var(--font-mincho);font-size:14px;line-height:2;margin-top:40px;font-weight:600}
.schedule-note b{color:var(--ink);font-weight:700;font-style:italic}

/* ============================================
   Pricing
============================================ */
.plan{margin:56px auto 0;max-width:760px}
.plan-card{overflow:hidden}
.plan-head{
  padding:32px 32px 24px;background:var(--w-shell);
  border-bottom:1px solid var(--w-edge);
  display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap;
}
.plan-name{display:flex;flex-direction:column;gap:6px}
.plan-eyebrow{font-family:var(--font-num);font-size:11px;color:var(--gray);letter-spacing:.18em;text-transform:uppercase;font-weight:800}
.plan-title{font-family:var(--font-mincho);font-weight:800;font-size:26px;color:var(--ink);letter-spacing:.02em}
.plan-tag{
  flex-shrink:0;font-family:var(--font-serif-en);font-style:italic;font-size:14px;
  color:var(--ink);
  padding:7px 16px;background:var(--w-shell);border:1px solid var(--w-edge);border-radius:9999px;white-space:nowrap;font-weight:700;
  
  box-shadow:var(--sh-soft);
}
.plan-body{padding:8px 32px}
.plan-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:24px 0;flex-wrap:wrap;border-bottom:1px dashed var(--w-line)}
.plan-row:last-child{border-bottom:none}
.plan-row-label{display:flex;align-items:center;gap:18px}
.plan-row-num{
  width:44px;height:44px;
  background:var(--w-shell);border:1px solid var(--w-edge);border-radius:12px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-serif-en);font-style:italic;font-size:20px;color:var(--ink);font-weight:600;flex-shrink:0;
  
  box-shadow:var(--sh-soft);
}
.plan-row-name{font-family:var(--font-mincho);font-weight:700;font-size:17px;color:var(--ink);margin-bottom:2px;letter-spacing:.02em}
.plan-row-sub{font-size:12px;color:var(--gray);line-height:1.6;font-weight:500}
.plan-row-price{display:flex;align-items:baseline;gap:6px;margin-left:auto}
.plan-price-amount{font-family:var(--font-num);font-weight:700;font-size:36px;color:var(--ink);letter-spacing:-.03em;line-height:1}
.plan-price-unit{font-size:12px;color:var(--gray);font-family:var(--font-num);letter-spacing:.04em;font-weight:600}
.plan-features{background:var(--w-bone);padding:24px 32px 28px;border-top:1px solid var(--w-edge)}
.plan-features-label{font-family:var(--font-num);font-size:11px;color:var(--gray);letter-spacing:.18em;text-transform:uppercase;font-weight:800;margin-bottom:14px}
.plan-features ul{list-style:none;display:grid;grid-template-columns:1fr;gap:10px}
@media(min-width:600px){.plan-features ul{grid-template-columns:1fr 1fr;gap:10px 24px}}
.plan-features li{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.7;color:var(--ink);font-weight:500}
.plan-features li svg{flex-shrink:0;width:16px;height:16px;color:var(--ink);margin-top:4px;filter:drop-shadow(0 1px 1px rgba(60,45,15,.4))}
.plan-note{text-align:center;margin-top:24px;font-size:11px;color:var(--gray);line-height:1.9;font-family:var(--font-num);letter-spacing:.04em}
@media(max-width:640px){
  .plan-head{padding:28px 24px;flex-direction:column;align-items:flex-start}
  .plan-body{padding:8px 24px}
  .plan-row{flex-direction:column;align-items:flex-start;gap:14px;padding:22px 0}
  .plan-row-price{margin-left:0}
  .plan-price-amount{font-size:26px}
  .plan-features{padding:24px}
}

/* ============================================
   Limited Offer
============================================ */
.offer{padding:64px 0;position:relative;background:var(--w-cream)}
.offer-stamp{
  position:absolute;
  top:18px;right:18px;
  z-index:5;
  width:80px;height:80px;
  font-size:11px;
  background:transparent;
}
.offer-card{
  max-width:760px;margin:0 auto;padding:56px 36px;
  background:var(--w-bone);
  border:1px solid var(--w-edge);border-radius:32px;
  text-align:center;color:var(--ink);
  box-shadow:var(--sh-deep);
  position:relative;overflow:hidden;
}
@media(max-width:640px){.offer-card{margin:0 16px;padding:48px 24px}}
.offer-tag{
  display:inline-block;background:var(--w-paper);
  color:var(--ink);padding:8px 18px;border-radius:9999px;
  font-family:var(--font-num);font-size:11px;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;margin-bottom:24px;
  border:1px solid var(--w-line);
  text-shadow:0 1px 2px var(--w-edge);
}
.offer h2{font-family:var(--font-mincho);font-weight:800;font-size:clamp(24px,3.4vw,40px);line-height:1.5;letter-spacing:-.01em;margin-bottom:18px;color:var(--ink)}
.offer h2 .em{font-style:italic;color:var(--classified-red)}
.offer-card p{font-family:var(--font-mincho);font-size:14px;color:var(--w-pearl);margin-bottom:28px;line-height:2}
.offer-counter{
  display:inline-flex;align-items:center;gap:12px;
  background:var(--w-paper);color:var(--ink);
  padding:14px 24px;border-radius:9999px;
  font-family:var(--font-num);font-size:11px;
  letter-spacing:.16em;text-transform:uppercase;font-weight:700;
  border:1px solid var(--w-line);
  text-shadow:0 1px 1px var(--w-edge);
}
.offer-counter b{font-family:var(--font-serif-en);font-style:italic;font-size:22px;font-weight:600;color:var(--ink);letter-spacing:0;text-transform:none;text-shadow:0 1px 2px var(--w-edge)}

/* ============================================
   Founder
============================================ */
.founder-inner{max-width:1180px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:1fr;gap:48px;align-items:center;position:relative;z-index:5}
@media(min-width:900px){.founder-inner{grid-template-columns:.8fr 1.2fr;gap:96px}}
.founder-portrait{
  max-width:340px;margin:0 auto;
  aspect-ratio:4/5;
  background:var(--w-shell);
  border:1px solid var(--w-edge);border-radius:24px;
  position:relative;overflow:hidden;
  box-shadow:var(--sh-deep);
}
.founder-portrait::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.5) 0%,transparent 50%),radial-gradient(circle at 70% 80%,rgba(0,0,0,.05) 0%,transparent 50%)}
.founder-portrait svg{position:absolute;bottom:-10%;left:50%;transform:translateX(-50%);width:80%;height:80%;color:var(--gray-3);opacity:.6;z-index:1}
.founder-portrait-tag{position:absolute;bottom:20px;left:20px;right:20px;display:flex;justify-content:space-between;align-items:flex-end;color:var(--ink);font-family:var(--font-num);font-size:10px;letter-spacing:.14em;text-transform:uppercase;z-index:2;font-weight:800}
.founder-portrait-tag .nm{font-family:var(--font-mincho);font-style:italic;font-size:18px;text-transform:none;letter-spacing:0;font-weight:700;color:var(--ink)}
.founder-text .quote{font-family:var(--font-mincho);font-style:italic;font-size:clamp(22px,3vw,30px);line-height:1.7;color:var(--ink);margin-bottom:32px;font-weight:700;letter-spacing:.02em}
.founder-text .quote::before{content:'"';font-family:var(--font-serif-en);font-size:1.4em;color:var(--gray);margin-right:.1em;vertical-align:-.2em;opacity:.7}
.founder-text p{font-family:var(--font-mincho);font-size:14.5px;color:var(--ink-3);line-height:2.2;margin-bottom:18px;font-weight:500}
.founder-text p b{color:var(--ink);font-weight:700;border-bottom:1.5px solid var(--w-snow)}
.founder-sign{margin-top:32px;padding-top:28px;border-top:1px solid var(--w-line);display:flex;align-items:center;justify-content:space-between}
.founder-sign .role{font-family:var(--font-num);font-size:10px;color:var(--gray);letter-spacing:.18em;text-transform:uppercase;margin-bottom:6px;font-weight:800}
.founder-sign .nm{font-family:var(--font-mincho);font-weight:800;font-size:20px;color:var(--ink);letter-spacing:.04em}
.founder-sign .seal{width:54px;height:54px;background:var(--w-snow);border:1px solid var(--w-edge);border-radius:50%;color:var(--ink);display:flex;align-items:center;justify-content:center;font-family:var(--font-mincho);font-weight:700;font-size:20px;text-shadow:0 1px 2px var(--w-edge)}

/* ============================================
   Enrollment
============================================ */
.enroll-list{margin-top:56px;max-width:780px;margin-left:auto;margin-right:auto;display:flex;flex-direction:column;gap:14px}
.enroll-step{display:grid;grid-template-columns:64px 1fr;gap:20px;padding:22px 26px;align-items:center;transition:all .35s}
@media(min-width:768px){.enroll-step{grid-template-columns:64px 1fr 110px;gap:28px}}
.enroll-step:hover{transform:translateX(4px)}
.enroll-num{
  width:60px;height:60px;
  background:var(--w-shell);border:1px solid var(--w-edge);border-radius:16px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-serif-en);font-style:italic;font-size:26px;color:var(--ink);font-weight:600;
  
  box-shadow:var(--sh-soft);
}
.enroll-content{display:flex;flex-direction:column;gap:4px}
.enroll-title{font-family:var(--font-mincho);font-weight:700;font-size:17px;color:var(--ink);line-height:1.5;letter-spacing:.02em}
.enroll-desc{font-size:13px;color:var(--ink-3);line-height:1.85;font-weight:500}
.enroll-time{
  font-family:var(--font-num);font-size:11px;font-weight:800;
  color:var(--ink);letter-spacing:.1em;text-transform:uppercase;
  padding:9px 16px;border:1px solid var(--w-edge);border-radius:9999px;
  background:var(--w-shell);white-space:nowrap;text-align:center;
  
}
@media(max-width:768px){.enroll-time{grid-column:2;justify-self:start}}
.enroll-cta{text-align:center;margin-top:56px}

/* ============================================
   FAQ
============================================ */
.faq-list{max-width:820px;margin:56px auto 0;display:flex;flex-direction:column;gap:14px}
.faq-item{overflow:hidden;transition:box-shadow .3s}
.faq-q{padding:24px 28px;font-family:var(--font-mincho);font-weight:700;font-size:16px;color:var(--ink);cursor:pointer;display:flex;align-items:center;gap:18px;list-style:none;transition:color .3s}
.faq-q:hover{color:var(--ink-3)}
.faq-q::-webkit-details-marker{display:none}
.faq-q-num{
  flex-shrink:0;width:38px;height:38px;
  background:var(--w-shell);border:1px solid var(--w-edge);border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  color:var(--ink);font-family:var(--font-serif-en);font-style:italic;font-size:18px;font-weight:600;
  
  box-shadow:var(--sh-soft);
}
.faq-q-text{flex:1;line-height:1.6;letter-spacing:.02em}
.faq-q-toggle{
  flex-shrink:0;width:32px;height:32px;
  background:var(--w-shell);border:1px solid var(--w-edge);border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:var(--ink);font-size:20px;font-weight:300;
  transition:transform .35s;line-height:1;
  
}
.faq-item[open] .faq-q-toggle{transform:rotate(135deg)}
.faq-a{padding:0 26px 24px 84px;color:var(--ink-3);font-size:14px;line-height:2;font-family:var(--font-mincho);font-weight:500}

/* ============================================
   Form
============================================ */
.form-card{max-width:560px;margin:56px auto 0;padding:40px 32px}
.form-card.glass:hover{transform:none;border-color:var(--classified-red);border-width:1px;margin:56px auto 0}
.form-card h3{font-family:var(--font-mincho);font-size:24px;font-weight:800;text-align:center;color:var(--ink);margin-bottom:6px;letter-spacing:.02em}
.form-card > p{text-align:center;color:var(--gray);font-size:12px;margin-bottom:32px;font-family:var(--font-num);letter-spacing:.08em;font-weight:700}
.form-row{margin-bottom:20px}
.form-row label{display:flex;align-items:center;gap:10px;font-family:var(--font-num);font-weight:800;font-size:11px;color:var(--ink);margin-bottom:8px;letter-spacing:.08em;text-transform:uppercase}
.form-row label .req{font-family:var(--font-serif-en);font-style:italic;font-size:13px;color:var(--gray);text-transform:none;letter-spacing:0;font-weight:600}
.form-row input,.form-row select{
  width:100%;padding:16px 20px;
  border:1px solid var(--w-edge);border-radius:12px;
  font-size:15px;font-family:var(--font-mincho);color:var(--ink);
  background:var(--w-shell);transition:all .25s;
  
}
.form-row input:focus,.form-row select:focus{outline:none;border-color:var(--w-edge-cool);box-shadow:0 0 0 3px var(--w-line)}
.form-row input::placeholder{color:var(--gray);opacity:.7}
.form-submit{
  width:100%;background:var(--w-bone);color:var(--ink);
  padding:20px;border:1px solid var(--w-edge);border-radius:9999px;
  font-size:13px;font-weight:800;cursor:pointer;margin-top:14px;
  font-family:var(--font-num);letter-spacing:.16em;text-transform:uppercase;
  display:flex;align-items:center;justify-content:center;gap:10px;
  box-shadow:var(--sh-card),inset 0 1px 0 var(--w-shell);
  
  transition:all .3s;
}
.form-submit:hover{transform:translateY(-2px);box-shadow:var(--sh-hover);background:var(--w-linen)}
.form-or{text-align:center;color:var(--gray);font-size:11px;margin:28px 0;position:relative;font-family:var(--font-num);letter-spacing:.18em;text-transform:uppercase;font-weight:800}
.form-or::before,.form-or::after{content:'';position:absolute;top:50%;width:42%;height:1px;background:var(--w-edge)}
.form-or::before{left:0}
.form-or::after{right:0}
.form-line{
  width:100%;background:var(--w-bone);color:var(--ink);
  padding:18px;border:1px solid var(--w-edge);border-radius:9999px;
  font-family:var(--font-num);font-size:13px;font-weight:800;
  letter-spacing:.14em;text-transform:uppercase;
  display:flex;align-items:center;justify-content:center;gap:10px;
  transition:all .3s;
  box-shadow:var(--sh-card);
  
}
.form-line:hover{transform:translateY(-2px)}

/* ============================================
   Page nav
============================================ */
.page-nav{padding:80px 0 100px;position:relative;background:var(--w-paper)}
.page-nav-grid{display:grid;grid-template-columns:1fr;gap:14px;max-width:880px;margin:0 auto}
@media(min-width:600px){.page-nav-grid{grid-template-columns:1fr 1fr}}
.page-nav-card{display:flex;align-items:center;gap:18px;padding:20px 24px;text-decoration:none;color:inherit;transition:all .35s}
.page-nav-card:hover{transform:translateX(4px)}
.page-nav-card .pn-num{font-family:var(--font-serif-en);font-style:italic;font-size:26px;color:var(--ink);flex-shrink:0;font-weight:600}
.page-nav-card .pn-content{flex:1}
.page-nav-card .pn-label{font-family:var(--font-num);font-size:10px;color:var(--gray);letter-spacing:.18em;text-transform:uppercase;font-weight:800;margin-bottom:4px}
.page-nav-card .pn-title{font-family:var(--font-mincho);font-weight:700;font-size:17px;color:var(--ink);letter-spacing:.02em}
.page-nav-card .pn-arrow{font-family:var(--font-num);color:var(--ink);font-size:20px;font-weight:700;transition:transform .25s}
.page-nav-card:hover .pn-arrow{transform:translateX(4px)}

/* ============================================
   Footer
============================================ */
.footer{
  background:var(--w-parchment);
  color:var(--ink);
  padding:64px 0 32px;
  position:relative;overflow:hidden;
  border-top:1px solid var(--w-edge);
}
.footer-inner{max-width:1240px;margin:0 auto;padding:0 24px;position:relative;z-index:1}
.footer-top{display:grid;grid-template-columns:1fr;gap:40px;padding-bottom:40px;border-bottom:1px solid var(--w-line)}
@media(min-width:768px){.footer-top{grid-template-columns:1.5fr 1fr 1fr;gap:64px}}
.footer .logo-text{color:var(--ink)}
.footer-brand p{font-family:var(--font-mincho);font-size:13.5px;line-height:2;color:var(--ink-3);margin-top:18px;max-width:340px}
.footer-domain{margin-top:16px;font-size:13px;color:var(--ink);font-family:var(--font-num);letter-spacing:.04em;font-weight:800}
.footer-col h4{font-family:var(--font-num);font-size:11px;color:var(--ink);margin-bottom:18px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
.footer-col ul{list-style:none;display:flex;flex-direction:column;gap:12px}
.footer-col a{font-family:var(--font-mincho);font-size:13.5px;color:var(--ink-3);transition:color .3s;font-weight:500}
.footer-col a:hover{color:var(--ink)}
.footer-bottom{padding-top:28px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;font-family:var(--font-num);font-size:11px;color:var(--gray);letter-spacing:.06em;font-weight:600}

/* ============================================
   Sticky bottom bar
============================================ */
.sticky-bar{
  position:fixed;bottom:14px;left:14px;right:14px;z-index:99;
  display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:8px;
  background:rgba(252,252,252,.90);
  backdrop-filter:blur(24px) saturate(180%);
  -webkit-backdrop-filter:blur(24px) saturate(180%);
  border:1px solid rgba(0,0,0,.08);border-radius:9999px;
  box-shadow:var(--sh-deep);
}
@media(min-width:768px){.sticky-bar{max-width:480px;left:auto;right:24px;bottom:24px}}
.sticky-btn{
  display:flex;align-items:center;justify-content:center;gap:8px;
  padding:14px 16px;border-radius:9999px;
  font-family:var(--font-num);font-weight:700;font-size:11px;
  letter-spacing:.1em;text-transform:uppercase;
  transition:transform .25s;color:#FFFFFF;
  border:1px solid rgba(255,255,255,.30);
}
.sticky-btn:hover{transform:translateY(-1px)}
.sticky-btn-line{background:var(--w-pearl);color:var(--ink);border-color:var(--w-edge);box-shadow:var(--sh-soft);font-weight:800}
.sticky-btn-trial{background:var(--w-bone);color:var(--ink);border-color:var(--w-edge);box-shadow:var(--sh-card);font-weight:800}

/* ============================================
   Reveal
============================================ */
.reveal{opacity:0;transform:translateY(28px);transition:opacity 1s ease,transform 1s cubic-bezier(.25,.8,.25,1)}
.reveal.is-visible{opacity:1;transform:translateY(0)}
.reveal-stagger > *{opacity:0;transform:translateY(20px);transition:opacity .8s ease,transform .8s cubic-bezier(.25,.8,.25,1)}
.reveal-stagger.is-visible > *{opacity:1;transform:translateY(0)}
.reveal-stagger.is-visible > *:nth-child(1){transition-delay:0s}
.reveal-stagger.is-visible > *:nth-child(2){transition-delay:.08s}
.reveal-stagger.is-visible > *:nth-child(3){transition-delay:.16s}
.reveal-stagger.is-visible > *:nth-child(4){transition-delay:.24s}
.reveal-stagger.is-visible > *:nth-child(5){transition-delay:.32s}
.reveal-stagger.is-visible > *:nth-child(6){transition-delay:.4s}
.reveal-stagger.is-visible > *:nth-child(7){transition-delay:.48s}
.reveal-stagger.is-visible > *:nth-child(8){transition-delay:.56s}
@media (prefers-reduced-motion:reduce){
  .reveal,.reveal-stagger > *{opacity:1;transform:none;transition:none}
  .float-a,.float-b,.float-c,body::before{animation:none}
}

/* ============================================
   📱 FINAL MOBILE OVERRIDES — wins source order
   ケータイ可読性の最終調整（他より後置で確実に効かせる）
============================================ */
@media(max-width:760px){
  /* Hero タイポ */
  .hero{padding:88px 18px 56px}
  .hero h1{
    font-size:clamp(38px,10.5vw,50px);
    line-height:1.18;
    margin-bottom:24px;
    letter-spacing:-.025em;
  }
  .glitch{display:inline}
  .hero h1 .accent::after{height:4px}

  .hero-eyebrow{font-size:11px;padding:8px 14px;margin-bottom:18px}

  .hero-sub{
    font-size:15px;line-height:1.95;
    background:rgba(232,230,224,.78);
    padding:14px 16px;border-radius:8px;
    margin-bottom:30px;
    max-width:none;
    position:relative;z-index:3;
  }
  .hero-cta-group{margin-top:6px;gap:10px;flex-direction:column;align-items:stretch}
  .hero-cta-group .btn{width:100%;justify-content:center}
  .hero-stats{margin-top:36px;gap:14px}
  .hero-stat{padding:28px 16px}
  .hero-stat .v{font-size:30px}
  .hero-stat .l{font-size:11.5px;letter-spacing:.14em}

  /* Page-head */
  .page-head{padding-top:156px;padding-bottom:48px;position:relative}
  .page-head-rec{
    top:96px!important;left:14px!important;right:14px!important;
    background:rgba(0,0,0,.88);
    padding:8px 12px;
    border:1px solid var(--caution-yellow);
    display:flex;justify-content:space-between;align-items:center;
    border-radius:0;
    z-index:50;
  }
  .page-head h1{font-size:clamp(34px,9vw,46px);line-height:1.20}
  .page-head .lead{font-size:14.5px;line-height:1.85}

  /* セクション */
  .section-title{font-size:clamp(24px,7vw,34px);line-height:1.32}
  .section-lead{font-size:14.5px;line-height:1.90}

  /* 装飾レイヤー */
  .mugshot-ruler{display:none!important}
  .cctv-scan-beam{display:none!important}
  .cctv-scanlines{opacity:.18}
  .noise-overlay{opacity:.02}
  .hero-cam-2{display:none}
  .radar-sweep{opacity:.45}

  /* スタンプを本文と分離 */
  .hero-stamp{
    top:auto!important;bottom:6%!important;
    left:auto!important;right:5%!important;
    transform:rotate(-15deg)!important;
    width:108px!important;height:108px!important;
    font-size:13px!important;
    opacity:.18!important;
  }
  .page-head-stamp{opacity:.12!important}
  .stamp-circle.offer-stamp{opacity:.7!important;width:78px!important;height:78px!important;font-size:11px!important}

  /* グリッチ無効、呼吸ゆるく */
  .glitch::before,.glitch::after{display:none!important}
  .stamp-circle{animation:stampBreath 6s ease-in-out infinite}

  /* ステータスティッカー：縦並びで読みやすく */
  .status-ticker{
    flex-direction:column;
    align-items:stretch;
    gap:0;padding:12px 14px;
    font-size:11px;line-height:1.5;
    width:100%;
  }
  .hero-eyebrow{display:inline-flex;align-self:flex-start}
  .status-ticker > .stk:first-child{
    margin-bottom:8px;padding-bottom:8px;
    border-bottom:1px solid rgba(201,161,74,.30);
    justify-content:flex-start;
  }
  .status-ticker-track{
    animation:none!important;
    flex-wrap:wrap;
    gap:8px 14px;
    flex:none;white-space:normal;
    transform:none!important;
  }
  .status-ticker-track > .stk:nth-child(n+11){display:none}
  .status-ticker-track > .stk-sep:nth-child(n+11){display:none}
  .status-ticker .stk{font-size:10.5px;letter-spacing:.10em}

  /* 警告テープ ゆっくり */
  .caution-band{animation:cautionScroll 4s linear infinite}

  /* mech-card description を確実に表示（hover REDACTEDをモバイル無効化） */
  .mech-card .mech-desc{font-size:14px;line-height:1.85}
  .mech-card .mech-desc::before,.mech-card .mech-desc::after{display:none!important}
  .protocol-badge{font-size:8px;padding:3px 7px;letter-spacing:.14em}

  /* インシデント・ドシエ調整 */
  .incident-tag{font-size:8.5px;letter-spacing:.10em;top:10px;right:10px}
  .dossier{font-size:9.5px;letter-spacing:.10em;padding:7px 11px;flex-wrap:wrap;gap:8px}
  .dossier-sep{display:none}

  .hero-rec-bar{gap:6px}
  .rec-indicator{font-size:9px;letter-spacing:.14em}
  .timestamp{font-size:10px;padding:3px 6px}

  /* form/intake/invoice strip 折り返し */
  .intake-strip,.invoice-strip{
    flex-direction:column;align-items:flex-start;gap:6px;
    font-size:9.5px;padding:10px 12px;
  }

  /* 監督官 / 認可スタンプ位置調整 */
  .founder-text > .stamp-circle{
    top:-8px!important;right:-2px!important;
    width:72px!important;height:72px!important;
    font-size:10px!important;
  }
  .plan .stamp-circle{
    top:108px!important;right:6px!important;
    width:72px!important;height:72px!important;
    font-size:10px!important;
  }
  #trial .stamp-circle{
    top:48px!important;right:8px!important;
    width:72px!important;height:72px!important;
    font-size:10px!important;
  }

  /* mugshot frame サイズ */
  .mugshot-frame > svg{width:160px;height:192px}
  .mugshot-frame .mugshot-id{font-size:9px;padding:5px 12px}
}

@media(prefers-reduced-motion:reduce){
  .caution-band,.cctv-scan-beam,.radar-sweep,
  .stamp-circle,.hero-stamp,.glitch,
  .status-ticker-track,.live-pulse::after,
  .rec-indicator::before,.timestamp::before,
  .offer-counter b{
    animation:none!important;
  }
}

/* ============================================
   📚 個別指導塾型レイアウト用 — 新セクション
============================================ */

/* --- News / お知らせ --- */
.news-section{padding:80px 0;background:var(--c-light);position:relative}
.news-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:36px;flex-wrap:wrap;gap:14px}
.news-head h2{
  font-family:var(--font-mincho);font-weight:800;
  font-size:clamp(26px,3.2vw,38px);
  color:var(--c-void);margin:0;
}
.news-head .news-en{
  font-family:var(--font-num);font-size:11px;font-weight:700;
  letter-spacing:.24em;color:var(--c-coal);
  display:block;margin-top:6px;
}
.news-head .news-more{
  font-family:var(--font-num);font-size:12px;font-weight:700;
  color:var(--c-coal);text-decoration:none;
  border-bottom:1.5px solid var(--c-coal);padding-bottom:2px;
  letter-spacing:.10em;
}
.news-list{display:flex;flex-direction:column;gap:0;border-top:1px solid var(--c-mist)}
.news-item{
  display:grid;
  grid-template-columns:120px 90px 1fr;
  gap:24px;align-items:center;
  padding:18px 8px;
  border-bottom:1px solid var(--c-mist);
  text-decoration:none;color:inherit;
  transition:background .2s ease;
}
.news-item:hover{background:var(--c-chalk)}
.news-date{
  font-family:var(--font-num);font-size:13px;font-weight:700;
  color:var(--c-graphite);letter-spacing:.05em;
}
.news-cat{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--font-num);font-size:10px;font-weight:800;
  letter-spacing:.14em;text-transform:uppercase;
  padding:5px 10px;
  border:1.5px solid var(--c-coal);color:var(--c-coal);
  width:fit-content;
}
.news-cat.is-info{background:var(--c-coal);color:#fff;border-color:var(--c-coal)}
.news-cat.is-camp{background:var(--classified-red);color:#fff;border-color:var(--classified-red)}
.news-cat.is-event{background:var(--c-bg);color:var(--c-coal)}
.news-title{
  font-family:var(--font-mincho);font-weight:600;
  font-size:15px;line-height:1.6;color:var(--c-void);
}
@media(max-width:760px){
  .news-section{padding:56px 0}
  .news-item{
    grid-template-columns:80px 1fr;gap:10px 14px;
    padding:16px 6px;
  }
  .news-cat{grid-column:2;margin-top:-4px}
  .news-title{grid-column:1/-1;font-size:14px}
}

/* --- 3つの特徴 / 選ばれる理由 --- */
.reasons{padding:96px 0;background:var(--c-bg);position:relative;overflow:hidden}
.reasons-grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:24px;
}
@media(max-width:880px){.reasons-grid{grid-template-columns:1fr;gap:18px}}
.reason-card{
  background:#fff;
  border:1.5px solid var(--c-coal);
  padding:36px 28px;position:relative;
  display:flex;flex-direction:column;gap:16px;
}
.reason-card .reason-num{
  position:absolute;top:-22px;left:24px;
  background:var(--c-coal);color:var(--c-light);
  font-family:var(--font-num);font-weight:800;
  font-size:14px;letter-spacing:.18em;
  padding:7px 14px;
}
.reason-card .reason-icon{
  width:64px;height:64px;
  display:flex;align-items:center;justify-content:center;
  border:1.5px solid var(--c-coal);
  border-radius:50%;
  color:var(--c-coal);
  margin-top:8px;
}
.reason-card .reason-icon svg{width:32px;height:32px}
.reason-card h3{
  font-family:var(--font-mincho);font-weight:800;
  font-size:22px;line-height:1.45;
  color:var(--c-void);margin:0;
}
.reason-card h3 .em{color:var(--classified-red);font-style:italic}
.reason-card p{
  font-family:var(--font-mincho);
  font-size:14.5px;line-height:1.95;
  color:var(--c-shadow);margin:0;
}
.reason-card .reason-tag{
  margin-top:auto;padding-top:14px;border-top:1px dashed var(--c-mist);
  font-family:var(--font-num);font-size:10.5px;font-weight:700;
  letter-spacing:.18em;color:var(--c-graphite);text-transform:uppercase;
}

/* --- 学年別コース --- */
.courses{padding:96px 0;background:var(--c-light);position:relative}
.courses-head{text-align:center;margin-bottom:48px}
.courses-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:20px;
}
@media(max-width:880px){.courses-grid{grid-template-columns:1fr;gap:18px}}
.course-card{
  position:relative;
  background:#fff;
  border:1.5px solid var(--c-coal);
  padding:32px 28px 28px;
  text-decoration:none;color:inherit;
  display:flex;flex-direction:column;gap:14px;
  transition:transform .25s ease,box-shadow .25s ease;
}
.course-card:hover{transform:translateY(-3px);box-shadow:var(--sh-card)}
.course-card .course-grade-en{
  font-family:var(--font-num);font-weight:800;
  font-size:11px;letter-spacing:.24em;
  color:var(--c-coal);text-transform:uppercase;
}
.course-card .course-grade-jp{
  font-family:var(--font-mincho);font-weight:800;
  font-size:32px;color:var(--c-void);line-height:1.1;
}
.course-card .course-grade-jp .ruby{
  display:block;font-size:11px;color:var(--c-graphite);
  letter-spacing:.20em;font-weight:700;margin-top:4px;
  font-family:var(--font-num);text-transform:uppercase;
}
.course-card .course-divider{
  height:1px;background:var(--c-mist);margin:6px 0 4px;
}
.course-card .course-bullets{
  list-style:none;padding:0;margin:0;
  display:flex;flex-direction:column;gap:10px;
}
.course-card .course-bullets li{
  display:flex;gap:10px;align-items:flex-start;
  font-family:var(--font-mincho);font-size:14.5px;
  color:var(--c-shadow);line-height:1.65;
}
.course-card .course-bullets li::before{
  content:'';flex-shrink:0;
  width:6px;height:6px;border-radius:50%;
  background:var(--classified-red);
  margin-top:8px;
}
.course-card .course-cta{
  margin-top:auto;padding-top:16px;
  display:flex;align-items:center;justify-content:space-between;
  font-family:var(--font-num);font-weight:800;
  font-size:11px;letter-spacing:.18em;
  color:var(--c-coal);text-transform:uppercase;
  border-top:1px solid var(--c-mist);
}

/* --- 合格実績 --- */
.results{padding:96px 0;background:var(--c-bg);position:relative}
.results-head{text-align:center;margin-bottom:48px}
.results-stats{
  display:grid;grid-template-columns:repeat(4,1fr);gap:0;
  border-top:2px solid var(--c-coal);
  border-bottom:2px solid var(--c-coal);
  margin-bottom:48px;
}
@media(max-width:760px){.results-stats{grid-template-columns:repeat(2,1fr)}}
.results-stats .stat{
  padding:28px 18px;text-align:center;
  border-right:1px solid var(--c-mist);
  display:flex;flex-direction:column;gap:8px;
}
@media(max-width:760px){
  .results-stats .stat:nth-child(2n){border-right:none}
  .results-stats .stat:nth-child(-n+2){border-bottom:1px solid var(--c-mist)}
}
.results-stats .stat:last-child{border-right:none}
.results-stats .stat-label{
  font-family:var(--font-num);font-size:10.5px;font-weight:800;
  color:var(--c-graphite);letter-spacing:.20em;text-transform:uppercase;
}
.results-stats .stat-num{
  font-family:var(--font-num);font-weight:900;
  font-size:clamp(34px,4.5vw,52px);color:var(--c-void);
  line-height:1;letter-spacing:-.02em;
}
.results-stats .stat-num sup{font-size:.45em;font-weight:700;margin-left:3px;color:var(--c-graphite)}
.results-stats .stat-sub{
  font-family:var(--font-mincho);font-size:12px;
  color:var(--c-coal);
}
.results-list{
  background:#fff;border:1.5px solid var(--c-coal);
  padding:32px 28px;
}
.results-list h3{
  font-family:var(--font-mincho);font-weight:800;font-size:16px;
  color:var(--c-coal);margin:0 0 18px;
  padding-bottom:10px;border-bottom:1px solid var(--c-mist);
  letter-spacing:.05em;
}
.results-list h3 + h3{margin-top:28px}
.results-list .schools{
  display:flex;flex-wrap:wrap;gap:8px 14px;
}
.results-list .schools span{
  font-family:var(--font-mincho);font-size:14px;
  color:var(--c-shadow);
}
.results-list .schools span::after{content:'／';color:var(--c-fog);margin-left:14px}
.results-list .schools span:last-child::after{display:none}

/* --- 保護者・生徒の声 --- */
.voices{padding:96px 0;background:var(--c-light);position:relative}
.voices-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:24px;
}
@media(max-width:880px){.voices-grid{grid-template-columns:1fr;gap:18px}}
.voice-card{
  background:#fff;border:1.5px solid var(--c-coal);
  padding:28px 26px;
  position:relative;
  display:flex;flex-direction:column;gap:16px;
}
.voice-card::before{
  content:'"';position:absolute;
  top:8px;right:18px;
  font-family:'Cormorant Garamond',serif;
  font-size:90px;font-weight:600;
  color:var(--classified-red);
  line-height:1;opacity:.18;
}
.voice-card .voice-meta{
  display:flex;align-items:center;gap:12px;
}
.voice-card .voice-avatar{
  width:48px;height:48px;border-radius:50%;
  background:var(--c-cement);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mincho);font-weight:800;
  color:#fff;font-size:18px;
}
.voice-card .voice-name{
  font-family:var(--font-mincho);font-weight:700;
  font-size:14px;color:var(--c-void);
}
.voice-card .voice-attr{
  font-family:var(--font-num);font-size:10.5px;
  color:var(--c-graphite);letter-spacing:.10em;margin-top:2px;
}
.voice-card .voice-quote{
  font-family:var(--font-mincho);font-size:15px;line-height:1.95;
  color:var(--c-shadow);margin:0;
}
.voice-card .voice-quote b{color:var(--classified-red);font-weight:700}
.voice-card .voice-tag{
  font-family:var(--font-num);font-size:10px;font-weight:800;
  letter-spacing:.14em;text-transform:uppercase;
  color:var(--c-coal);
  border-top:1px dashed var(--c-mist);padding-top:12px;
}

/* --- FAQ home (compact) --- */
.faq-home{padding:96px 0;background:var(--c-bg);position:relative}
.faq-home-list{
  max-width:900px;margin:0 auto;
  border-top:1px solid var(--c-coal);
}
.faq-home-item{
  border-bottom:1px solid var(--c-coal);
}
.faq-home-q{
  display:flex;align-items:center;gap:14px;
  padding:20px 8px;cursor:pointer;
  font-family:var(--font-mincho);font-weight:700;
  font-size:15px;color:var(--c-void);
  list-style:none;
}
.faq-home-q::-webkit-details-marker{display:none}
.faq-home-q .q-num{
  font-family:var(--font-num);font-weight:900;
  font-size:18px;color:var(--classified-red);
  letter-spacing:.05em;
  width:38px;flex-shrink:0;
}
.faq-home-q .q-text{flex:1}
.faq-home-q .q-toggle{
  font-family:var(--font-num);font-weight:300;
  font-size:24px;color:var(--c-coal);
  transition:transform .3s ease;
  flex-shrink:0;
}
.faq-home-item[open] .q-toggle{transform:rotate(45deg)}
.faq-home-a{
  padding:0 8px 24px 56px;
  font-family:var(--font-mincho);font-size:14.5px;line-height:1.95;
  color:var(--c-shadow);
}

/* --- 体験CTA section (large) --- */
.trial-cta{
  padding:96px 0;
  background:linear-gradient(135deg,var(--c-coal) 0%,var(--c-void) 100%);
  color:#fff;position:relative;overflow:hidden;
}
.trial-cta::before{
  content:'';position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
  background-size:48px 48px;pointer-events:none;
}
.trial-cta-inner{
  max-width:900px;margin:0 auto;padding:0 24px;
  text-align:center;position:relative;z-index:2;
}
.trial-cta-eyebrow{
  font-family:var(--font-num);font-size:11px;font-weight:800;
  letter-spacing:.30em;color:var(--gold-leaf);
  text-transform:uppercase;margin-bottom:18px;
}
.trial-cta h2{
  font-family:var(--font-mincho);font-weight:800;
  font-size:clamp(30px,4.5vw,52px);
  line-height:1.32;margin:0 0 24px;color:#fff;
}
.trial-cta h2 .em{color:var(--gold-leaf);font-style:italic}
.trial-cta p{
  font-family:var(--font-mincho);font-size:15.5px;line-height:1.95;
  color:rgba(255,255,255,.88);
  max-width:560px;margin:0 auto 36px;
}
.trial-cta-actions{
  display:flex;gap:14px;justify-content:center;flex-wrap:wrap;
}
.trial-btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:18px 32px;
  font-family:var(--font-mincho);font-weight:700;font-size:15px;
  text-decoration:none;
  border:1.5px solid transparent;
  transition:all .25s ease;
  letter-spacing:.05em;
}
.trial-btn.is-primary{
  background:var(--classified-red);color:#fff;
  border-color:var(--classified-red);
}
.trial-btn.is-primary:hover{
  background:#7A1818;border-color:#7A1818;
}
.trial-btn.is-line{
  background:#06C755;color:#fff;border-color:#06C755;
}
.trial-btn.is-line:hover{background:#04A748;border-color:#04A748}
.trial-btn.is-ghost{
  background:transparent;color:#fff;border-color:rgba(255,255,255,.4);
}
.trial-btn.is-ghost:hover{border-color:#fff;background:rgba(255,255,255,.05)}
.trial-cta-note{
  margin-top:24px;
  font-family:var(--font-num);font-size:11px;font-weight:600;
  letter-spacing:.18em;color:rgba(255,255,255,.55);
  text-transform:uppercase;
}

/* --- Section common heading --- */
.sec-eyebrow{
  font-family:var(--font-num);font-size:11px;font-weight:800;
  letter-spacing:.30em;color:var(--c-coal);
  text-transform:uppercase;margin-bottom:14px;
  display:inline-flex;align-items:center;gap:10px;
}
.sec-eyebrow::before{
  content:'';display:inline-block;
  width:24px;height:1.5px;background:var(--classified-red);
}
.sec-h2{
  font-family:var(--font-mincho);font-weight:800;
  font-size:clamp(28px,4vw,44px);
  color:var(--c-void);line-height:1.32;margin:0 0 18px;
}
.sec-h2 .em{color:var(--classified-red);font-style:italic}
.sec-lead{
  font-family:var(--font-mincho);font-size:15px;line-height:1.95;
  color:var(--c-shadow);max-width:640px;margin:0 auto;
}

/* ============================================
   ✨ READABLE TYPOGRAPHY — 可読性アップグレード
   本文を一回り大きく、行間ゆったり、コントラスト強化
============================================ */

/* --- 本文サイズ底上げ --- */
.sec-lead,
.section-lead,
.reasons-lead{
  font-size:clamp(15.5px,1.7vw,17px);
  line-height:2.05;
  color:var(--c-shadow);
  font-weight:500;
  letter-spacing:.025em;
}

.hero-sub{
  font-size:clamp(15.5px,1.7vw,17.5px);
  line-height:2.10;
  color:var(--c-void);
  font-weight:600;
  letter-spacing:.02em;
}

/* リード文 page-head */
.page-head .lead{
  font-size:clamp(15.5px,1.7vw,17px);
  line-height:2.10;
  color:var(--c-shadow);
  font-weight:500;
}

/* --- カード本文 --- */
.reason-card p,
.course-card .course-bullets li,
.voice-card .voice-quote,
.faq-home-a,
.news-title,
.feature-card p{
  font-size:15.5px;
  line-height:2.05;
  color:var(--c-shadow);
  font-weight:500;
  letter-spacing:.02em;
}

.reason-card p{font-size:15px;line-height:2.05}
.voice-card .voice-quote{font-size:15.5px;line-height:2.05}
.faq-home-a{font-size:15px;line-height:2.05}
.news-title{font-size:15.5px;line-height:1.75;font-weight:600}

/* --- カード見出し強化 --- */
.reason-card h3{
  font-size:23px;
  line-height:1.55;
  letter-spacing:.01em;
}
.course-card .course-grade-jp{
  font-size:30px;
  line-height:1.2;
  letter-spacing:.02em;
}
.faq-home-q{
  font-size:16px;
  line-height:1.65;
  padding:22px 8px;
  letter-spacing:.02em;
}
.faq-home-q .q-num{
  font-size:19px;
}

/* --- セクションH2強化（contrast & weight） --- */
.sec-h2{
  font-size:clamp(30px,4.2vw,46px);
  line-height:1.40;
  letter-spacing:.005em;
  color:var(--c-void);
}

/* --- 見出し→本文の余白 --- */
.sec-h2 + .sec-lead,
.sec-h2 + p{margin-top:18px}

/* --- News date／cat 文字を読みやすく --- */
.news-date{font-size:14px;letter-spacing:.06em}
.news-cat{font-size:11px;padding:6px 12px;letter-spacing:.16em}

/* --- 数値ダッシュボード ラベル拡大 --- */
.results-stats .stat-label{
  font-size:12px;letter-spacing:.20em;
  color:var(--c-coal);font-weight:800;
}
.results-stats .stat-sub{
  font-size:13px;color:var(--c-graphite);font-weight:600;
}

/* --- 学校名リスト --- */
.results-list .schools span{
  font-size:15px;
  color:var(--c-void);
  font-weight:600;
  letter-spacing:.02em;
}
.results-list h3{font-size:16px;color:var(--c-coal);letter-spacing:.06em}

/* --- 体験CTA本文 --- */
.trial-cta p{
  font-size:16.5px;
  line-height:2.05;
  color:rgba(255,255,255,.95);
  font-weight:500;
}
.trial-cta-eyebrow{font-size:12px;letter-spacing:.30em}

/* --- voices: 名前と属性 --- */
.voice-card .voice-name{font-size:15px;font-weight:700}
.voice-card .voice-attr{font-size:11.5px;letter-spacing:.10em}
.voice-card .voice-tag{font-size:11px;letter-spacing:.14em;padding-top:14px}

/* --- 1日の流れ timeline 本文 --- */
.timeline-title{font-size:16px;font-weight:700;letter-spacing:.02em}
.timeline-desc{font-size:14.5px;line-height:1.95;font-weight:500;color:var(--c-shadow)}

/* --- pricing plan 本文 --- */
.plan-row-name{font-size:17px;font-weight:700;letter-spacing:.02em}
.plan-row-sub{font-size:13.5px;color:var(--c-graphite);font-weight:500}
.plan-features ul li{font-size:15px;line-height:1.85;font-weight:500}

/* --- FAQ items text --- */
.faq-q-text{font-size:15.5px;font-weight:700;letter-spacing:.02em}

/* --- worry items --- */
.worry-text{font-size:15.5px;line-height:1.95;font-weight:600;letter-spacing:.02em}

/* --- founder text --- */
.founder-text p{
  font-size:15.5px;line-height:2.05;
  color:var(--c-void);font-weight:500;letter-spacing:.02em;
}
.founder-text .quote{
  font-size:clamp(22px,3vw,30px);
  line-height:1.65;font-weight:700;
  letter-spacing:.02em;
}

/* ============================================
   📱 ケータイ可読性 さらに強化
============================================ */
@media(max-width:760px){
  /* セクション内側のpadding確保 */
  .news-section,.reasons,.courses,.results,.voices,.faq-home{
    padding:64px 0;
  }
  .trial-cta{padding:72px 0}

  /* 本文 さらに大きく */
  .sec-lead,.section-lead,.reasons-lead,
  .page-head .lead{
    font-size:15.5px;line-height:2.05;
    padding:0 4px;
  }
  .hero-sub{
    font-size:16px;line-height:2.05;
    background:rgba(255,255,255,.78);
    padding:16px 18px;border-radius:10px;
    margin-bottom:32px;
    color:var(--c-void);
    font-weight:600;
  }

  /* 見出しサイズ */
  .sec-h2{
    font-size:clamp(26px,7.2vw,34px);
    line-height:1.40;
  }
  .reasons-grid,.courses-grid,.voices-grid{gap:24px}

  /* カード本文 */
  .reason-card p,
  .course-card .course-bullets li,
  .voice-card .voice-quote,
  .faq-home-a,
  .news-title{font-size:15px;line-height:2.0}

  /* カード見出し */
  .reason-card h3{font-size:21px;line-height:1.50}
  .course-card .course-grade-jp{font-size:28px}
  .faq-home-q{font-size:15px;padding:20px 6px;gap:12px}
  .faq-home-q .q-num{font-size:17px;width:34px}

  /* News */
  .news-date{font-size:13px}
  .news-cat{font-size:10.5px;padding:5px 10px}
  .news-title{font-size:14.5px;line-height:1.85}

  /* Results */
  .results-stats .stat{padding:24px 12px}
  .results-stats .stat-label{font-size:10.5px;letter-spacing:.14em}
  .results-stats .stat-num{font-size:36px}
  .results-stats .stat-sub{font-size:12px}
  .results-list{padding:24px 20px}
  .results-list h3{font-size:14.5px}
  .results-list .schools span{font-size:14px}

  /* Trial CTA */
  .trial-cta h2{font-size:clamp(26px,7.5vw,32px);line-height:1.45}
  .trial-cta p{font-size:15px;line-height:2.0}
  .trial-btn{font-size:14.5px;padding:16px 24px;width:100%;justify-content:center}
  .trial-cta-actions{flex-direction:column;align-items:stretch}

  /* Voices */
  .voice-card{padding:24px 22px}
  .voice-card .voice-quote{font-size:15px}

  /* Timeline */
  .timeline-title{font-size:15px}
  .timeline-desc{font-size:14px;line-height:1.85}
}


/* ============================================
   ✨ HERO TOP READABILITY 強化
============================================ */

/* Hero h1 をもっと濃く・存在感UP */
.hero h1{
  color:var(--c-void);
  text-shadow:
    0 1px 0 rgba(255,255,255,.4),
    0 0 1px rgba(0,0,0,.05);
  font-weight:900;
}

/* dossier - 色濃く・コントラスト強化 */
.dossier{
  background:#FFF6DC;
  color:var(--c-void);
  border:2px solid var(--c-void);
  font-weight:800;
  box-shadow:0 2px 0 rgba(0,0,0,.10);
}
.dossier-num{
  color:var(--classified-red);
  font-weight:900;
}

/* Hero-tagline - 視認性UP（朱赤の枠＋少しbackground） */
.hero-tagline{
  background:#fff;
  border:2px solid var(--classified-red);
  color:var(--classified-red);
  font-weight:900;
  box-shadow:0 2px 0 rgba(160,40,40,.20);
  font-size:12px;
  padding:9px 16px;
  letter-spacing:.20em;
}

@media(max-width:760px){
  .hero h1{
    text-shadow:
      0 1px 0 rgba(255,255,255,.55),
      0 0 2px rgba(255,255,255,.35);
  }
  .dossier{
    background:#FFF6DC;
    border-width:2px;
    font-size:11px;
    padding:8px 12px;
    letter-spacing:.10em;
    color:var(--c-void);
    font-weight:800;
  }
  .hero-tagline{
    font-size:11.5px;
    padding:8px 14px;
    letter-spacing:.16em;
    margin-bottom:20px;
  }
  .hero-dossier{
    position:absolute!important;
    top:84px!important;left:14px!important;right:14px!important;
    z-index:6;
  }
  .hero-dossier .dossier{
    font-size:11px;padding:8px 12px;letter-spacing:.10em;
    width:100%;justify-content:center;
  }
  /* Heroの最上部余白を増やしてdossierと衝突させない */
  .hero{padding-top:152px!important}
}



/* ============================================
   ✏️ MARKER — 重要箇所に黄色マーカー
============================================ */
.marker{
  background:linear-gradient(transparent 62%, #FFE066 62%, #FFE066 92%, transparent 92%);
  padding:0 .12em;
}
.marker-strong{
  background:linear-gradient(transparent 55%, #FFD93D 55%, #FFD93D 95%, transparent 95%);
  padding:0 .14em;
  font-weight:800;
}
/* 白背景／暗い背景でもマーカーが映えるよう、文字色は元のまま */
.trial-cta .marker,
.trial-cta .marker-strong{
  color:#fff;
}

/* ============================================
   😟 お悩みセクション — 中学生の保護者様の悩み
============================================ */
.worries-home{
  padding:96px 0;
  background:linear-gradient(180deg, var(--c-light) 0%, #FFF8E0 100%);
  position:relative;
}
.worries-home::before{
  content:'';position:absolute;inset:0;
  background-image:radial-gradient(rgba(160,40,40,.05) 1px, transparent 1px);
  background-size:14px 14px;
  pointer-events:none;
}
.worries-home .container{position:relative;z-index:2}
.worries-target-tag{
  display:inline-flex;align-items:center;gap:8px;
  background:var(--classified-red);color:#fff;
  padding:8px 18px;
  font-family:var(--font-mincho);font-weight:800;font-size:13px;
  letter-spacing:.10em;
  margin-bottom:18px;
}
.worries-target-tag::before{
  content:'!';
  display:inline-flex;align-items:center;justify-content:center;
  width:18px;height:18px;border-radius:50%;
  background:#fff;color:var(--classified-red);
  font-family:var(--font-num);font-weight:900;font-size:11px;
}
.worry-grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:16px;
  max-width:880px;margin:0 auto;
}
@media(max-width:760px){.worry-grid{grid-template-columns:1fr;gap:14px}}
.worry-card{
  background:#fff;
  border:2px solid var(--c-coal);
  border-left-width:6px;
  border-left-color:var(--classified-red);
  padding:24px 22px;
  display:flex;align-items:flex-start;gap:16px;
  position:relative;
}
.worry-card .worry-icon{
  width:44px;height:44px;flex-shrink:0;
  background:var(--c-bg);border:1.5px solid var(--c-coal);
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mincho);font-weight:900;
  font-size:20px;color:var(--classified-red);
  line-height:1;
}
.worry-card p{
  margin:0;flex:1;
  font-family:var(--font-mincho);font-size:16px;
  line-height:1.85;font-weight:600;
  color:var(--c-void);
  letter-spacing:.02em;
}
.worry-card p .marker{font-weight:800}

.worries-conclusion{
  text-align:center;margin-top:48px;
  padding:32px 24px;
  background:#fff;
  border:2px solid var(--c-coal);
  max-width:720px;margin-left:auto;margin-right:auto;
  margin-top:48px;
  position:relative;
}
.worries-conclusion::before{
  content:'';position:absolute;
  top:-12px;left:50%;transform:translateX(-50%);
  width:0;height:0;
  border-left:18px solid transparent;
  border-right:18px solid transparent;
  border-bottom:14px solid var(--c-coal);
}
.worries-conclusion::after{
  content:'';position:absolute;
  top:-9px;left:50%;transform:translateX(-50%);
  width:0;height:0;
  border-left:16px solid transparent;
  border-right:16px solid transparent;
  border-bottom:12px solid #fff;
}
.worries-conclusion p{
  margin:0;
  font-family:var(--font-mincho);
  font-size:clamp(20px,2.6vw,26px);
  line-height:1.6;font-weight:800;
  color:var(--c-void);letter-spacing:.02em;
}
.worries-conclusion p strong{
  color:var(--classified-red);
  font-weight:900;
  background:linear-gradient(transparent 60%, #FFE066 60%, #FFE066 92%, transparent 92%);
  padding:0 .15em;
}
.worries-conclusion p .arrow{
  display:block;
  margin-top:14px;
  font-family:var(--font-num);font-weight:800;font-size:13px;
  color:var(--c-graphite);
  letter-spacing:.18em;
}
@media(max-width:760px){
  .worries-home{padding:64px 0}
  .worry-card{padding:20px 18px}
  .worry-card p{font-size:14.5px;line-height:1.85}
  .worries-conclusion p{font-size:18px;line-height:1.7}
}

/* ============================================
   📊 比較表 — 他塾との比較
============================================ */
.comparison{
  padding:96px 0;
  background:var(--c-light);
  position:relative;
}
.comparison-head{text-align:center;margin-bottom:48px}
.comparison-table-wrapper{
  max-width:980px;margin:0 auto;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  border:2px solid var(--c-coal);
  background:#fff;
}
.comparison-table{
  width:100%;
  min-width:680px;
  border-collapse:collapse;
  font-family:var(--font-mincho);
}
.comparison-table th,
.comparison-table td{
  padding:18px 14px;
  text-align:center;
  border:1px solid var(--c-mist);
  font-weight:600;
  font-size:14.5px;
  color:var(--c-shadow);
  vertical-align:middle;
  letter-spacing:.02em;
}
.comparison-table thead th{
  background:var(--c-bg);
  color:var(--c-void);
  font-weight:800;
  font-size:14px;
  letter-spacing:.04em;
  padding:20px 12px;
  border-bottom:2px solid var(--c-coal);
}
.comparison-table thead th.is-ours{
  background:var(--classified-red);
  color:#fff;
  font-weight:900;
  font-size:15px;
  position:relative;
}
.comparison-table thead th.is-ours::before{
  content:'★';
  display:block;
  font-size:14px;
  color:var(--gold-leaf);
  margin-bottom:4px;
  letter-spacing:0;
}
.comparison-table tbody th{
  background:#FFF8E0;
  color:var(--c-void);
  font-weight:800;
  text-align:left;
  padding:18px 16px;
  font-size:14px;
  white-space:nowrap;
  border-right:2px solid var(--c-coal);
}
.comparison-table tbody td.is-ours{
  background:#FFF6DC;
  color:var(--c-void);
  font-weight:800;
  border-left:2px solid var(--classified-red);
  border-right:2px solid var(--classified-red);
  position:relative;
}
.comparison-table tbody tr:last-child td.is-ours,
.comparison-table tbody tr:last-child th.is-ours{
  border-bottom:2px solid var(--classified-red);
}
.comparison-mark{
  display:inline-block;
  font-family:var(--font-num);font-weight:900;
  font-size:22px;line-height:1;
}
.comparison-mark.ok{color:#2D7A52}
.comparison-mark.so{color:var(--gold-leaf)}
.comparison-mark.no{color:var(--c-cement)}
.comparison-cell-text{font-size:13px;display:block;margin-top:4px;color:var(--c-graphite);font-weight:500;letter-spacing:.02em}
.comparison-table tbody td.is-ours .comparison-cell-text{color:var(--classified-red);font-weight:700}

/* Note below table */
.comparison-note{
  margin-top:18px;
  font-family:var(--font-mincho);
  font-size:13px;color:var(--c-graphite);
  text-align:center;
  letter-spacing:.02em;
}
.comparison-legend{
  display:flex;gap:18px;justify-content:center;flex-wrap:wrap;
  margin-top:18px;
  font-family:var(--font-num);font-size:11px;
  color:var(--c-graphite);letter-spacing:.16em;
}
.comparison-legend span{
  display:inline-flex;align-items:center;gap:6px;
}
.comparison-legend .comparison-mark{font-size:15px}

/* Mobile: hint scrollable */
.comparison-scroll-hint{
  display:none;
  text-align:center;font-size:11px;
  color:var(--c-graphite);
  font-family:var(--font-num);letter-spacing:.16em;
  margin-bottom:14px;
}
@media(max-width:760px){
  .comparison{padding:64px 0}
  .comparison-scroll-hint{display:block}
  .comparison-table{font-size:13.5px}
  .comparison-table th,.comparison-table td{padding:14px 10px;font-size:13.5px}
  .comparison-table tbody th{font-size:12.5px;padding:14px 12px;white-space:normal}
  .comparison-cell-text{font-size:11.5px}
  .comparison-mark{font-size:19px}
}

/* ============================================
   ✨ PREMIUM POLISH — エレガントな演出レイヤー
============================================ */

/* --- マーカーが左から右へ「引かれる」アニメ --- */
.marker{
  background-image:linear-gradient(transparent 62%, #FFE066 62%, #FFE066 92%, transparent 92%);
  background-size:0% 100%;
  background-repeat:no-repeat;
  background-position:left center;
  transition:background-size 1s cubic-bezier(.7,0,.2,1);
}
.reveal.is-visible .marker,
.reveal-stagger.is-visible .marker,
.is-visible .marker{
  background-size:100% 100%;
}
/* ステージで遅らせて順番に発火 */
.reveal-stagger.is-visible > *:nth-child(1) .marker{transition-delay:.20s}
.reveal-stagger.is-visible > *:nth-child(2) .marker{transition-delay:.30s}
.reveal-stagger.is-visible > *:nth-child(3) .marker{transition-delay:.40s}
.reveal-stagger.is-visible > *:nth-child(4) .marker{transition-delay:.50s}

/* --- セクションeyebrow の朱赤線が左から伸びる --- */
.sec-eyebrow::before{
  width:0;
  transition:width .9s cubic-bezier(.7,0,.2,1) .15s;
}
.reveal.is-visible .sec-eyebrow::before,
.is-visible .sec-eyebrow::before{
  width:24px;
}

/* --- セクション h2: 微細にスライドアップ --- */
.sec-h2{
  transition:transform .9s cubic-bezier(.22,1,.36,1) .15s, opacity .9s ease .15s;
  opacity:0;
  transform:translateY(20px);
}
.reveal.is-visible .sec-h2,
.is-visible .sec-h2{
  opacity:1;
  transform:translateY(0);
}

/* --- カードhover：浮き＋深い影 (desktop only) --- */
@media(hover:hover) and (min-width:880px){
  .reason-card,
  .worry-card,
  .course-card,
  .voice-card,
  .news-item,
  .feature-card{
    transition:transform .4s cubic-bezier(.22,1,.36,1),
               box-shadow .4s cubic-bezier(.22,1,.36,1),
               border-color .3s ease;
  }
  .reason-card:hover,
  .worry-card:hover,
  .voice-card:hover,
  .feature-card:hover{
    transform:translateY(-6px);
    box-shadow:
      0 18px 40px rgba(10,26,61,.12),
      0 4px 12px rgba(10,26,61,.08);
  }
  .news-item:hover{
    transform:translateX(6px);
    background:linear-gradient(90deg, #FFF8E0 0%, transparent 100%);
  }
}

/* --- Reason card のアイコンがhoverで rotateを伴う --- */
.reason-card .reason-icon{
  transition:transform .5s cubic-bezier(.34,1.56,.64,1), border-color .3s ease, color .3s ease;
}
@media(hover:hover){
  .reason-card:hover .reason-icon{
    transform:rotate(-8deg) scale(1.08);
    border-color:var(--classified-red);
    color:var(--classified-red);
  }
}

/* --- 悩みカード：左ボーダーが膨らむhover --- */
@media(hover:hover){
  .worry-card{
    transition:border-left-width .25s ease, transform .35s cubic-bezier(.22,1,.36,1), box-shadow .35s ease;
  }
  .worry-card:hover{
    border-left-width:10px;
    transform:translateX(3px);
    box-shadow:0 12px 28px rgba(160,40,40,.10);
  }
}

/* --- 比較表 行hover：黄色く優しくハイライト --- */
.comparison-table tbody tr{
  transition:background .25s ease;
}
@media(hover:hover){
  .comparison-table tbody tr:hover{
    background:rgba(255,224,102,.18);
  }
  .comparison-table tbody tr:hover td.is-ours{
    background:#FFE066;
  }
}

/* --- Trial CTA ボタン：継続的なシャイン --- */
.trial-btn.is-primary{position:relative;overflow:hidden}
.trial-btn.is-primary::after{
  content:'';position:absolute;
  top:0;bottom:0;left:-100%;width:60%;
  background:linear-gradient(110deg,
    transparent 30%,
    rgba(255,255,255,.30) 50%,
    transparent 70%);
  pointer-events:none;
  animation:btnShine 3.5s ease-in-out infinite;
}
@keyframes btnShine{
  0%{left:-100%}
  60%{left:120%}
  100%{left:120%}
}

/* --- 体験CTA：背景がゆっくり呼吸する --- */
.trial-cta::after{
  content:'';position:absolute;
  inset:0;
  background:radial-gradient(circle at 50% 50%,
    rgba(201,161,74,.15) 0%,
    transparent 60%);
  animation:ctaBreath 6s ease-in-out infinite;
  pointer-events:none;
  z-index:1;
}
@keyframes ctaBreath{
  0%,100%{opacity:.4;transform:scale(.95)}
  50%{opacity:.7;transform:scale(1.05)}
}

/* --- カウントアップ：完了時に少し弾む --- */
.counter{display:inline-block;transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.counter.is-counting{
  filter:blur(.3px);
}
.counter:not(.is-counting){
  animation:counterPop .6s cubic-bezier(.34,1.56,.64,1) forwards;
}
@keyframes counterPop{
  0%{transform:scale(1)}
  40%{transform:scale(1.08)}
  100%{transform:scale(1)}
}

/* --- Hero stat カード：縁取りがゆっくり光る --- */
.hero-stat{
  position:relative;
  overflow:hidden;
}
.hero-stat::before,.hero-stat::after{
  z-index:2;
}
.hero-stat::before{
  background:var(--classified-red);
  transition:transform .4s ease;
}
@media(hover:hover){
  .hero-stat:hover::before,
  .hero-stat:hover::after{
    transform:scale(1.4);
  }
}

/* --- お悩みセクション 結論ボックス：呼吸＋下矢印バウンス --- */
.worries-conclusion{
  animation:fadeUp .8s cubic-bezier(.22,1,.36,1) both;
}
@keyframes fadeUp{
  from{opacity:0;transform:translateY(20px)}
  to{opacity:1;transform:translateY(0)}
}
.worries-conclusion p .arrow{
  animation:arrowBounce 1.6s ease-in-out infinite;
  display:block;
}
@keyframes arrowBounce{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(6px)}
}

/* --- Reveal を上品に：フェード＋8pxだけスライド --- */
.reveal{
  opacity:0;
  transform:translateY(16px);
  transition:opacity .8s cubic-bezier(.22,1,.36,1),
             transform .8s cubic-bezier(.22,1,.36,1);
}
.reveal.is-visible{
  opacity:1;
  transform:translateY(0);
}

/* Stagger - 段階的フェード */
.reveal-stagger > *{
  opacity:0;
  transform:translateY(20px);
  transition:opacity .7s cubic-bezier(.22,1,.36,1),
             transform .7s cubic-bezier(.22,1,.36,1);
}
.reveal-stagger.is-visible > *:nth-child(1){transition-delay:.05s}
.reveal-stagger.is-visible > *:nth-child(2){transition-delay:.15s}
.reveal-stagger.is-visible > *:nth-child(3){transition-delay:.25s}
.reveal-stagger.is-visible > *:nth-child(4){transition-delay:.35s}
.reveal-stagger.is-visible > *:nth-child(5){transition-delay:.45s}
.reveal-stagger.is-visible > *:nth-child(6){transition-delay:.55s}
.reveal-stagger.is-visible > *{
  opacity:1;
  transform:translateY(0);
}

/* --- スムーススクロール --- */
html{scroll-behavior:smooth;scroll-padding-top:90px}

/* --- リンク・ボタンの focus-visible 装飾 --- */
.btn:focus-visible,
.trial-btn:focus-visible,
.course-card:focus-visible,
.news-item:focus-visible{
  outline:2px solid var(--classified-red);
  outline-offset:3px;
}

/* --- セクションタイトルの "em" 部分が少し光る --- */
.sec-h2 .em,
.reason-card h3 .em{
  position:relative;
  display:inline-block;
}
.sec-h2 .em::after{
  content:'';position:absolute;
  left:0;right:0;bottom:-2px;
  height:3px;
  background:linear-gradient(90deg, transparent, var(--classified-red), transparent);
  opacity:0;
  transform:scaleX(0);
  transform-origin:center;
  transition:opacity .6s ease .5s, transform .8s cubic-bezier(.7,0,.2,1) .5s;
}
.reveal.is-visible .sec-h2 .em::after,
.is-visible .sec-h2 .em::after{
  opacity:.8;
  transform:scaleX(.7);
}

/* --- News item dateが朱で点滅 (新着のキャンペーンのみ) --- */
.news-item:first-child .news-date{
  position:relative;
}
.news-item:first-child .news-date::after{
  content:'NEW';
  position:absolute;top:-22px;left:0;
  font-family:var(--font-num);font-weight:900;font-size:9px;
  color:#fff;background:var(--classified-red);
  padding:3px 7px;letter-spacing:.14em;
  animation:newPulse 1.6s ease-in-out infinite;
  box-shadow:0 2px 4px rgba(160,40,40,.25);
}
.news-item:first-child{padding-top:32px}
@keyframes newPulse{
  0%,100%{transform:scale(1);opacity:1}
  50%{transform:scale(1.10);opacity:.85}
}

/* --- prefers-reduced-motion: すべて停止 --- */
@media(prefers-reduced-motion:reduce){
  .marker,.sec-eyebrow::before,.sec-h2,
  .reveal,.reveal-stagger > *,
  .trial-btn.is-primary::after,
  .trial-cta::after,
  .counter:not(.is-counting),
  .worries-conclusion,
  .worries-conclusion p .arrow,
  .news-item:first-child .news-date::after{
    animation:none!important;
    transition:none!important;
  }
  .reveal,.reveal-stagger > *{opacity:1!important;transform:none!important}
  .marker{background-size:100% 100%!important}
  .sec-eyebrow::before{width:24px!important}
  .sec-h2{opacity:1!important;transform:none!important}
}


/* ============================================
   📜 LEGAL PAGES — 利用規約・特商法・プライバシー
============================================ */
.legal-page{
  padding:140px 0 80px;
  background:var(--c-bg);
  position:relative;
  min-height:calc(100vh - 200px);
}
.legal-container{
  max-width:880px;margin:0 auto;
  padding:0 24px;position:relative;z-index:5;
}
.legal-header{
  margin-bottom:48px;
  padding-bottom:28px;
  border-bottom:2px solid var(--c-coal);
}
.legal-breadcrumb{
  font-family:var(--font-num);font-size:11.5px;font-weight:700;
  letter-spacing:.16em;color:var(--c-graphite);
  margin-bottom:14px;
  text-transform:uppercase;
}
.legal-breadcrumb a{
  color:var(--c-graphite);
  text-decoration:none;
}
.legal-breadcrumb a:hover{color:var(--classified-red)}
.legal-breadcrumb .sep{margin:0 8px;color:var(--c-fog)}
.legal-title{
  font-family:var(--font-mincho);font-weight:800;
  font-size:clamp(28px,4vw,40px);
  color:var(--c-void);line-height:1.32;
  margin:0 0 14px;
  letter-spacing:.02em;
}
.legal-meta{
  font-family:var(--font-num);font-size:12px;
  color:var(--c-graphite);
  letter-spacing:.10em;
}

.legal-body{
  background:#fff;
  padding:48px 40px;
  border:1.5px solid var(--c-coal);
  font-family:var(--font-mincho);
  font-size:15.5px;line-height:2.05;
  color:var(--c-shadow);
  font-weight:500;
  letter-spacing:.02em;
}
.legal-body h2{
  font-family:var(--font-mincho);font-weight:800;
  font-size:20px;line-height:1.5;
  color:var(--c-void);
  margin:48px 0 18px;
  padding-bottom:10px;
  border-bottom:1px solid var(--c-mist);
  letter-spacing:.02em;
}
.legal-body h2:first-child{margin-top:0}
.legal-body h3{
  font-family:var(--font-mincho);font-weight:700;
  font-size:17px;line-height:1.6;
  color:var(--c-void);
  margin:32px 0 12px;
}
.legal-body p{
  margin:0 0 16px;
  font-size:15.5px;line-height:2.05;
}
.legal-body ul, .legal-body ol{
  margin:0 0 18px;padding-left:24px;
}
.legal-body li{
  margin-bottom:8px;
  font-size:15.5px;line-height:1.95;
}
.legal-body strong{color:var(--c-void);font-weight:700}
.legal-body a{
  color:var(--classified-red);
  text-decoration:underline;
  text-underline-offset:3px;
}
.legal-body table{
  width:100%;
  border-collapse:collapse;
  margin:18px 0;
  font-size:14.5px;
}
.legal-body table th,
.legal-body table td{
  padding:14px 16px;
  border:1px solid var(--c-mist);
  text-align:left;
  vertical-align:top;
  line-height:1.85;
}
.legal-body table th{
  background:#FFF8E0;
  font-weight:700;color:var(--c-void);
  width:32%;
  white-space:nowrap;
}

.legal-placeholder{
  background:#FFF8E0;
  border:2px dashed var(--classified-red);
  padding:24px;
  margin:24px 0;
  font-family:var(--font-num);font-size:13px;
  color:var(--classified-red);font-weight:700;
  letter-spacing:.05em;
  text-align:center;
}
.legal-placeholder b{display:block;font-size:11px;letter-spacing:.16em;margin-bottom:6px}

/* Mobile */
@media(max-width:760px){
  .legal-page{padding:96px 0 56px}
  .legal-body{padding:28px 22px;font-size:15px}
  .legal-body h2{font-size:18px}
  .legal-body h3{font-size:16px}
  .legal-body table{font-size:13.5px}
  .legal-body table th,.legal-body table td{padding:10px 12px}
  .legal-body table th{width:auto;white-space:normal}
}
