/* lp.signed-sound.jp - Design System v2 準拠 / DESIGN.md のトークンに対応
   集中型コンバージョンLP。Created 2026-06-11. */

:root{
  --N:#1C2B6B;   /* navy primary */
  --N2:#2A3C82;  /* navy 明面(ダーク地のカード) */
  --N-D:#141F4D; /* navy 濃(フッター) */
  --R:#CC1100;   /* red 単一スポット */
  --W:#FFFFFF;
  --INK:#16203A;
  --T:#3A4356;
  --MUT:#8089A0;
  --HAIR:#E4E7EE;
  --FILL:#F6F7FA;
  --OK:#1E8E5A;  /* 認証済み */
  --F:'Meiryo','Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif;
  --FN:'Helvetica Neue','Arial',sans-serif;
  --maxw:1120px;
  --pad:clamp(20px,5vw,80px);
  --sec:clamp(56px,9vh,120px);
  --radius:10px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;font-family:var(--F);color:var(--INK);background:var(--W);
  font-feature-settings:'palt' 1;line-height:1.8;-webkit-font-smoothing:antialiased;
}
.num{font-family:var(--FN);font-variant-numeric:tabular-nums}
img{max-width:100%;display:block}
a{color:inherit}

/* ---- layout ---- */
.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--pad)}
section{padding-block:var(--sec)}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--MUT);margin:0 0 14px}
h2{font-size:clamp(22px,2.6vw,34px);font-weight:700;line-height:1.35;margin:0 0 24px;letter-spacing:.005em}
.lead{font-size:clamp(15px,1.1vw,18px);color:var(--T);max-width:64ch;margin:0 0 36px}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4em;
  font-family:inherit;font-weight:700;font-size:clamp(14px,1vw,16px);
  padding:14px 28px;border-radius:8px;border:2px solid transparent;cursor:pointer;
  text-decoration:none;transition:transform .18s ease,background .18s ease,border-color .18s ease;white-space:nowrap}
.btn:focus-visible{outline:3px solid var(--N);outline-offset:3px}
.btn-primary{background:var(--N);color:var(--W);border-color:var(--N)}
.btn-primary:hover{background:#16245c;transform:translateY(-1px)}
.btn-ghost{background:transparent;color:var(--N);border-color:var(--HAIR)}
.btn-ghost:hover{border-color:var(--N)}
/* ダーク面用 */
.on-dark .btn-primary{background:var(--W);color:var(--N);border-color:var(--W)}
.on-dark .btn-primary:hover{background:#e9ecf6}
.on-dark .btn-ghost{color:var(--W);border-color:rgba(255,255,255,.45)}
.on-dark .btn-ghost:hover{border-color:var(--W)}
.on-dark .btn:focus-visible{outline-color:var(--W)}

/* ---- dark sections ---- */
.dark{background:var(--N);color:var(--W)}
.dark h2{color:var(--W)}
.dark .eyebrow{color:rgba(255,255,255,.6)}
.dark .lead{color:rgba(255,255,255,.82)}

/* ---- #0 header ---- */
.hdr{position:sticky;top:0;z-index:50;backdrop-filter:saturate(180%) blur(8px);
  background:rgba(255,255,255,.86);border-bottom:1px solid var(--HAIR)}
.hdr .wrap{display:flex;align-items:center;justify-content:space-between;height:64px}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.1em;color:var(--N);text-decoration:none}
.brand .mark{width:26px;height:26px;border-radius:50%;background:var(--N);display:inline-block;
  position:relative;flex:0 0 auto}
.brand .mark::after{content:"";position:absolute;inset:7px;border-radius:50%;border:2px solid var(--W)}
.hdr .btn{padding:9px 18px}
.menu-toggle{display:none}

/* ---- #1 hero ---- */
.hero{position:relative;background:
  linear-gradient(180deg,#fff 0%,#fff 38%,var(--FILL) 100%);overflow:hidden}
.hero .wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center;
  padding-block:clamp(48px,8vh,96px)}
.hero h1{font-size:clamp(30px,4.4vw,58px);font-weight:700;line-height:1.28;margin:8px 0 18px;
  letter-spacing:.01em;border-left:5px solid var(--R);padding-left:22px} /* 赤=単一スポット */
.hero .sub{font-size:clamp(16px,1.5vw,22px);color:var(--T);margin:0 0 8px;font-weight:700}
.hero .note{font-size:clamp(14px,1.05vw,16px);color:var(--T);margin:0 0 28px;max-width:46ch}
.cta-row{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px}
.trust-bullets{display:flex;flex-wrap:wrap;gap:10px 22px;list-style:none;padding:0;margin:0;
  font-size:14px;color:var(--T)}
.trust-bullets li{display:flex;align-items:center;gap:7px}
.trust-bullets li::before{content:"✓";color:var(--OK);font-weight:700}
.hero-visual{aspect-ratio:3/2;border-radius:14px;overflow:hidden;background:
  radial-gradient(120% 120% at 70% 20%,#2c3d86 0%,var(--N) 60%,#11193f 100%);
  display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.5);
  font-size:13px;box-shadow:0 18px 50px -20px rgba(28,43,107,.5)}
.hero-visual img{width:100%;height:100%;object-fit:cover;display:block}
.hero-visual .ph{text-align:center;padding:20px}
.hero-visual .ring{width:84px;height:84px;border-radius:50%;border:3px solid rgba(255,255,255,.55);
  margin:0 auto 14px;position:relative}
.hero-visual .ring::after{content:"";position:absolute;inset:14px;border-radius:50%;border:2px solid rgba(255,255,255,.35)}

/* ---- cards (#2 / #5 / #6) ---- */
.cards{display:grid;gap:20px}
.cards.c3{grid-template-columns:repeat(3,1fr)}
.cards.c2{grid-template-columns:repeat(2,1fr)}
.card{background:var(--FILL);border:1px solid var(--HAIR);border-radius:var(--radius);
  padding:26px;transition:transform .18s ease,border-color .18s ease}
.card:hover{transform:translateY(-2px);border-color:#cfd4e2}
.card h3{font-size:clamp(16px,1.4vw,20px);font-weight:700;margin:14px 0 8px;color:var(--INK)}
.card p{font-size:15px;color:var(--T);margin:0}
.card .ico{width:30px;height:30px;color:var(--N)}
.dark .card{background:var(--N2);border-color:rgba(255,255,255,.14)}
.dark .card h3{color:#fff}
.dark .card p{color:rgba(255,255,255,.8)}
.dark .card .ico{color:#fff}

/* ---- #3 solution + boundary note ---- */
.solution .wrap{display:grid;grid-template-columns:1.2fr .8fr;gap:48px;align-items:center}
.concept{aspect-ratio:5/4;border-radius:14px;overflow:hidden;background:var(--FILL);border:1px solid var(--HAIR);
  display:flex;align-items:center;justify-content:center;color:var(--MUT);font-size:13px}
.concept img{width:100%;height:100%;object-fit:cover;display:block}
.boundary{margin-top:28px;border:1px solid var(--HAIR);border-left:4px solid var(--N);
  background:#fff;border-radius:8px;padding:18px 22px;font-size:15px;color:var(--T)}
.boundary b{color:var(--INK)}

/* ---- #4 steps ---- */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;counter-reset:step}
.step{background:#fff;border:1px solid var(--HAIR);border-radius:var(--radius);padding:26px;position:relative}
.step .n{font-family:var(--FN);font-size:34px;font-weight:700;color:var(--N);line-height:1}
.step h3{font-size:18px;margin:10px 0 8px}
.step p{font-size:14px;color:var(--T);margin:0}
.steps .arrow{display:none}

/* ---- #1 hero segment line (?seg=) ---- */
.seg-line{font-size:clamp(14px,1.15vw,17px);font-weight:700;color:var(--N);margin:0 0 12px;
  padding-left:22px;border-left:5px solid var(--R)}

/* ---- #5b segment use-case cards ---- */
.seg-k{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--N);
  background:#eef0f8;border-radius:999px;padding:4px 12px;margin-bottom:12px}
.seg-card.seg-on{border-color:var(--N);box-shadow:0 0 0 2px var(--N) inset}
.seg-card.seg-on .seg-k{background:var(--N);color:#fff}

/* ---- #5 trust-mark states ---- */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:28px}
.states{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:8px 0 28px}
.state{border-radius:10px;padding:16px 18px;border:1px solid var(--HAIR);background:#fff;font-size:14px}
.state .tag{font-weight:700;display:flex;align-items:center;gap:8px;margin-bottom:4px}
.state.ok .tag{color:var(--OK)}
.state.bad .tag{color:var(--R)}
.state.none .tag{color:var(--MUT)}
.state small{color:var(--T)}
.center-cta{text-align:center}

/* ---- #6 trust / faq ---- */
.proof{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:36px}
.proof .item{padding:22px;border:1px solid var(--HAIR);border-radius:var(--radius);background:#fff}
.proof h3{font-size:16px;margin:0 0 8px}
.proof p{font-size:14px;color:var(--T);margin:0}
.flag{display:inline-block;font-size:11px;font-weight:700;color:var(--R);border:1px solid var(--R);
  border-radius:4px;padding:1px 6px;margin-left:6px;vertical-align:middle}
details{border-bottom:1px solid var(--HAIR);padding:6px 0}
summary{cursor:pointer;font-weight:700;padding:14px 4px;list-style:none;font-size:15px;
  display:flex;justify-content:space-between;align-items:center;gap:12px}
summary::-webkit-details-marker{display:none}
summary::after{content:"＋";color:var(--N);font-weight:700;flex:0 0 auto}
details[open] summary::after{content:"－"}
details p{margin:0 4px 16px;color:var(--T);font-size:14px}

/* ---- #7 form ---- */
.form-sec .wrap{max-width:780px}
.form-sec h2{text-align:center}
.form-sec .lead{text-align:center;margin-inline:auto}
form{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:8px}
.field{display:flex;flex-direction:column;gap:6px}
.field.full{grid-column:1/-1}
label{font-size:13px;font-weight:700;color:#fff}
label .req{color:#ffd2cc;margin-left:4px;font-size:11px}
input,select,textarea{font-family:inherit;font-size:15px;padding:12px 14px;border-radius:8px;
  border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.97);color:var(--INK)}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #fff;outline-offset:1px}
textarea{min-height:96px;resize:vertical}
.consent{grid-column:1/-1;display:flex;gap:10px;align-items:flex-start;font-size:13px;color:rgba(255,255,255,.9)}
.consent input{width:18px;height:18px;flex:0 0 auto;margin-top:2px}
.consent a{color:#fff;text-decoration:underline}
.form-sec .submit{grid-column:1/-1;justify-self:center;margin-top:8px}
/* honeypot: 視覚・支援技術から隠す（display:noneは一部ボットに検知されるため位置で隠す） */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
/* インラインエラー */
.err-msg{font-size:12px;color:#ffd2cc;font-weight:700}
input.invalid,select.invalid{outline:2px solid #ff8a7a;outline-offset:1px}
.form-status{grid-column:1/-1;text-align:center;font-size:14px;font-weight:700;margin:4px 0 0;
  padding:12px 16px;border-radius:8px}
.form-status.pending{background:rgba(255,255,255,.14);color:#fff}
.form-status.ok{background:rgba(30,142,90,.9);color:#fff}
.form-status.err{background:rgba(204,17,0,.9);color:#fff}

/* ---- #8 footer ---- */
.foot{background:var(--N-D);color:rgba(255,255,255,.72);padding-block:48px;font-size:13px}
.foot .wrap{display:flex;flex-wrap:wrap;gap:24px;justify-content:space-between;align-items:center}
.foot a{color:rgba(255,255,255,.82);text-decoration:none;margin-right:18px}
.foot a:hover{text-decoration:underline}
.foot .brand{color:#fff}

/* ---- legal / info pages ---- */
.legal{max-width:760px;padding-top:48px;padding-bottom:80px}
.legal h1{font-size:clamp(24px,3vw,32px);margin:8px 0 24px}
.legal h2{font-size:clamp(16px,1.6vw,20px);margin:32px 0 8px}
.legal p{color:var(--T);margin:0 0 12px}
.legal-flag{background:#FFF3F1;border:1px solid #f3c4bd;color:#8a2417;border-radius:8px;
  padding:12px 16px;font-size:13px;font-weight:700;margin-bottom:24px}
.legal-table{width:100%;border-collapse:collapse;margin:8px 0 16px}
.legal-table th,.legal-table td{text-align:left;vertical-align:top;padding:12px 14px;border-bottom:1px solid var(--HAIR);font-size:14px}
.legal-table th{width:34%;color:var(--INK);font-weight:700;background:var(--FILL)}
.legal-table td{color:var(--T)}
.legal-back{margin-top:32px}
.legal-back a{color:var(--N);font-weight:700;text-decoration:none}

/* ---- sticky mobile CTA ---- */
.sticky-cta{display:none}

/* ---- scroll reveal ---- */
.reveal{opacity:0;transform:translateY(10px);transition:opacity .5s ease,transform .5s ease}
.reveal.in{opacity:1;transform:none}

/* ---- responsive ---- */
@media (max-width:960px){
  .hero .wrap,.solution .wrap{grid-template-columns:1fr}
  .hero-visual{order:-1}
  .cards.c3,.steps,.proof,.states{grid-template-columns:1fr}
  .cards.c2,.duo{grid-template-columns:1fr}
  form{grid-template-columns:1fr}
}
@media (max-width:640px){
  .hdr .btn{display:none}
  .menu-toggle{display:inline-flex;background:none;border:0;font-size:24px;color:var(--N);cursor:pointer;padding:4px}
  .hero h1{padding-left:16px}
  .sticky-cta{display:block;position:fixed;left:0;right:0;bottom:0;z-index:60;
    padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.95);
    border-top:1px solid var(--HAIR);backdrop-filter:blur(6px)}
  .sticky-cta .btn{width:100%}
  body{padding-bottom:72px}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none;transition:none}
  .btn,.card{transition:none}
}
