/* =========================================================
   緊急セキュリティ診断LP（/lp/php-nodejs-2026）専用
   コーポレートサイトの看板調（site.css）とは独立させ、紺・白の落ち着いた配色にしている。
   セキュリティの相談先として「堅実さ」を優先するため、光彩・色付きの飾り線は使わない。
   外部フォントはCSP（font-src 'self'）で読めないため、OS標準のフォントのみを使う。
   ========================================================= */
:root{
  --ls-navy:#1F4E8C;
  --ls-navy-hover:#163A6B;
  --ls-navy-dk:#13294B;
  --ls-ink:#1A2433;
  --ls-ink-2:#2E3A4B;
  --ls-muted:#556274;
  --ls-foot-tx:#C5CFDD;
  --ls-bg:#FFFFFF;
  --ls-surface:#F6F8FB;
  --ls-surface-2:#EDF1F6;
  --ls-hero-bg:#F6F8FB;
  --ls-grid:#E8EDF4;
  --ls-line:#DDE3EA;
  --ls-line-2:#D5DCE5;
  --ls-line-3:#C3CCD8;
  --ls-php:#4F5B93;
  --ls-node:#3C7A4E;
  --ls-node-bg:#E7F2EA;
  --ls-node-tx:#2F6B3F;
  --ls-warn:#A6461E;
  --ls-warn-bg:#FBEDE6;
  --ls-shadow:0 6px 20px rgba(31, 78, 140, 0.10);
  --ls-body:"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP","Yu Gothic UI","Yu Gothic",Meiryo,system-ui,sans-serif;
  --ls-mono:"SFMono-Regular",ui-monospace,Menlo,Consolas,monospace;
  --ls-max:1120px;
  --ls-gutter:24px;
  --ls-radius:6px;
  color-scheme:light;
}
@media (max-width:599px){ :root{ --ls-gutter:16px; } }

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
@media (prefers-reduced-motion:reduce){ html{ scroll-behavior:auto; } }
body{ margin:0; background:var(--ls-bg); color:var(--ls-ink); font-family:var(--ls-body); font-size:16px; line-height:1.75; }
img{ max-width:100%; display:block; }
h1,h2,h3,p{ margin:0; }
a{ color:var(--ls-navy); }
a:hover{ color:var(--ls-navy-hover); }
:focus-visible{ outline:2.5px solid var(--ls-navy); outline-offset:3px; }
.ls-mono{ font-family:var(--ls-mono); }

.ls-wrap{ max-width:var(--ls-max); margin:0 auto; padding-inline:var(--ls-gutter); }

/* ---------- ボタン ---------- */
.ls-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  min-height:48px; padding:12px 24px; border-radius:4px;
  font-weight:700; text-decoration:none; text-align:center; line-height:1.4;
  transition:background-color .15s ease, color .15s ease;
}
.ls-btn--solid{ background:var(--ls-navy); color:#FFFFFF; border:1.5px solid var(--ls-navy); }
.ls-btn--solid:hover{ background:var(--ls-navy-hover); border-color:var(--ls-navy-hover); color:#FFFFFF; }
.ls-btn--outline{ background:transparent; color:var(--ls-navy); border:1.5px solid var(--ls-navy); }
.ls-btn--outline:hover{ background:var(--ls-surface-2); }
.ls-btn--lg{ min-height:52px; padding:14px 28px; font-size:17px; }
.ls-btn--block{ display:flex; width:100%; }

/* ---------- ヘッダー ---------- */
.ls-head{ background:var(--ls-bg); border-bottom:1px solid var(--ls-line); }
.ls-head__in{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; padding-block:14px; }
.ls-head__brand img{ height:32px; width:auto; }
.ls-head__nav{ display:flex; flex-wrap:wrap; align-items:center; gap:20px; font-size:14px; }
.ls-head__nav a:not(.ls-btn){ color:var(--ls-muted); text-decoration:none; }
.ls-head__nav a:not(.ls-btn):hover{ color:var(--ls-ink); }
.ls-head__nav .ls-btn{ min-height:44px; padding:10px 18px; }
@media (max-width:719px){ .ls-head__nav a:not(.ls-btn){ display:none; } }
@media (max-width:399px){ .ls-head__brand img{ height:26px; } .ls-head__nav .ls-btn{ padding:8px 12px; font-size:13px; } }

/* ---------- ヒーロー ---------- */
.ls-hero{
  border-bottom:1px solid var(--ls-line);
  background-color:var(--ls-hero-bg);
  background-image:linear-gradient(var(--ls-grid) 1px, transparent 1px), linear-gradient(90deg, var(--ls-grid) 1px, transparent 1px);
  background-size:40px 40px;
}
.ls-hero__in{ display:flex; flex-wrap:wrap; gap:48px; align-items:center; padding-block:80px 88px; }
.ls-hero__main{ flex:999 1 520px; min-width:0; display:flex; flex-direction:column; gap:22px; }
.ls-eyebrow{ font-family:var(--ls-mono); font-size:13px; color:var(--ls-navy); letter-spacing:.06em; }
.ls-hero h1{ font-size:clamp(30px, 4.4vw, 44px); line-height:1.35; font-weight:900; letter-spacing:.01em; word-break:auto-phrase; }
.ls-hero h1 em{ font-style:normal; color:var(--ls-navy); }
.ls-hero__lead{ font-size:17px; color:var(--ls-muted); max-width:580px; }
.ls-hero__cta{ display:flex; flex-wrap:wrap; gap:12px; margin-top:6px; }
.ls-hero__note{ font-size:13px; color:var(--ls-muted); }
@media (max-width:599px){ .ls-hero__in{ padding-block:56px 64px; } .ls-hero__cta .ls-btn{ width:100%; } }

.ls-check{ flex:1 1 340px; min-width:0; background:var(--ls-bg); border:1px solid var(--ls-line-2); border-radius:8px; overflow:hidden; }
.ls-check__bar{ display:flex; align-items:center; gap:8px; padding:12px 16px; border-bottom:1px solid var(--ls-line-2); background:var(--ls-surface-2); }
.ls-check__dot{ width:10px; height:10px; border-radius:50%; background:var(--ls-line-3); }
.ls-check__name{ font-family:var(--ls-mono); font-size:12px; color:var(--ls-muted); margin-left:8px; }
.ls-check__body{ padding:22px 20px; font-size:15px; display:flex; flex-direction:column; gap:12px; }
.ls-check__prompt{ font-family:var(--ls-mono); color:var(--ls-muted); }
.ls-check__row{ display:flex; gap:10px; }
.ls-check__row b{ font-family:var(--ls-mono); font-weight:500; color:var(--ls-navy); flex:none; }
.ls-check__foot{ border-top:1px dashed var(--ls-line-2); padding-top:12px; color:var(--ls-navy); font-weight:700; }

/* ---------- セクション共通 ---------- */
.ls-sec{ padding-block:88px 40px; display:flex; flex-direction:column; gap:32px; }
.ls-sec--tight{ padding-block:40px; gap:24px; }
.ls-sec__h{ display:flex; flex-direction:column; gap:8px; }
.ls-sec__n{ font-family:var(--ls-mono); font-size:13px; color:var(--ls-navy); letter-spacing:.1em; }
.ls-sec h2{ font-size:clamp(24px, 3.2vw, 32px); line-height:1.4; font-weight:900; }
.ls-sec--tight h2{ font-size:clamp(22px, 2.6vw, 26px); }
.ls-card{ background:var(--ls-surface); border:1px solid var(--ls-line); border-radius:var(--ls-radius); padding:28px; display:flex; flex-direction:column; gap:12px; }
@media (max-width:599px){ .ls-sec{ padding-block:64px 32px; } .ls-card{ padding:22px; } }
.ls-grid{ display:grid; gap:20px; }
.ls-grid--3{ grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); }
.ls-small{ font-size:13px; color:var(--ls-muted); }

/* 何が起きたか */
.ls-vuln__h{ display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; }
.ls-vuln__name{ font-weight:900; font-size:22px; }
.ls-vuln__name--php{ color:var(--ls-php); }
.ls-vuln__name--node{ color:var(--ls-node); }
.ls-badge{ font-family:var(--ls-mono); font-size:12px; font-weight:700; padding:4px 10px; border-radius:3px; }
.ls-badge--warn{ background:var(--ls-warn-bg); color:var(--ls-warn); }
.ls-badge--node{ background:var(--ls-node-bg); color:var(--ls-node-tx); }
.ls-vuln p{ color:var(--ls-muted); flex-grow:1; }
.ls-vuln__act{ font-size:14px; font-weight:700; color:var(--ls-ink-2); border-top:1px solid var(--ls-line); padding-top:12px; }
.ls-vuln__act span{ color:var(--ls-muted); font-weight:500; }

/* 要確認リスト・修正版の表 */
.ls-split{ display:flex; flex-wrap:wrap; gap:24px; }
.ls-split > .ls-card{ flex:1 1 420px; min-width:0; padding:32px; gap:16px; }
@media (max-width:599px){ .ls-split > .ls-card{ padding:22px; } }
.ls-split h3{ font-size:22px; font-weight:900; }
.ls-ticks{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:12px; color:var(--ls-ink-2); }
.ls-ticks li{ display:flex; gap:10px; align-items:flex-start; }
.ls-ticks svg{ flex:none; margin-top:4px; }
.ls-tick{ color:var(--ls-navy); }
.ls-tick--php{ color:var(--ls-php); }
.ls-tick--node{ color:var(--ls-node); }
.ls-table-wrap{ overflow-x:auto; }
.ls-table{ width:100%; border-collapse:collapse; font-size:15px; min-width:320px; }
.ls-table th{ text-align:left; padding:10px 8px; border-bottom:1px solid var(--ls-line-3); color:var(--ls-muted); font-weight:500; font-size:13px; }
.ls-table td{ padding:12px 8px; border-bottom:1px solid var(--ls-line); }
.ls-table tr:last-child td{ border-bottom:none; }
.ls-table td:first-child{ font-weight:700; white-space:nowrap; }
.ls-table .is-php{ color:var(--ls-php); }
.ls-table .is-node{ color:var(--ls-node); }
.ls-table .is-warn{ color:var(--ls-warn); font-weight:700; }

/* プラン */
.ls-plans{ display:grid; grid-template-columns:repeat(auto-fit, minmax(290px, 1fr)); gap:20px; align-items:stretch; }
.ls-plan{ background:var(--ls-surface); border:1px solid var(--ls-line); border-radius:var(--ls-radius); padding:32px; display:flex; flex-direction:column; gap:16px; }
.ls-plan--featured{ background:var(--ls-bg); border:2px solid var(--ls-navy); box-shadow:var(--ls-shadow); }
@media (max-width:599px){ .ls-plan{ padding:22px; } }
.ls-plan__top{ display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; }
.ls-plan__step{ font-family:var(--ls-mono); font-size:12px; color:var(--ls-muted); }
.ls-plan--featured .ls-plan__step{ color:var(--ls-navy); }
.ls-plan__tag{ background:var(--ls-navy); color:#FFFFFF; font-size:12px; font-weight:700; padding:3px 10px; border-radius:3px; }
.ls-plan h3{ font-size:24px; font-weight:900; }
.ls-price{ display:flex; flex-direction:column; gap:2px; }
.ls-price__v{ font-size:32px; font-weight:900; line-height:1.3; }
.ls-price__v small{ font-size:15px; font-weight:500; color:var(--ls-muted); margin-left:.5em; }
.ls-price__sub{ font-size:13px; color:var(--ls-muted); }
.ls-plan__list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; color:var(--ls-muted); flex-grow:1; }
.ls-plan--featured .ls-plan__list{ color:var(--ls-ink-2); flex-grow:0; }
.ls-plan__list li::before{ content:"・"; }
.ls-plan__extra{ background:var(--ls-surface); border:1px solid var(--ls-line); border-radius:4px; padding:14px 16px; display:flex; flex-direction:column; gap:6px; font-size:14px; flex-grow:1; }
.ls-plan__extra b{ color:var(--ls-ink-2); }
.ls-plan__extra-row{ display:flex; justify-content:space-between; gap:12px; color:var(--ls-muted); }
.ls-plan__extra-row strong{ color:var(--ls-ink); white-space:nowrap; }
.ls-plan__extra small{ font-size:12px; color:var(--ls-muted); }

/* 流れ */
.ls-flow{ display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:16px; list-style:none; margin:0; padding:0; }
.ls-flow li{ border-top:1px solid var(--ls-line); padding-top:16px; display:flex; flex-direction:column; gap:6px; }
.ls-flow__n{ font-family:var(--ls-mono); color:var(--ls-navy); font-size:13px; }
.ls-flow__t{ font-weight:700; font-size:18px; }
.ls-flow__d{ color:var(--ls-muted); font-size:15px; }

/* FAQ */
.ls-faq{ display:flex; flex-direction:column; gap:12px; }
.ls-faq .ls-card{ padding:24px; gap:8px; }
.ls-faq__q{ font-weight:700; font-size:17px; }
.ls-faq__q b{ font-family:var(--ls-mono); color:var(--ls-navy); margin-right:.4em; }
.ls-faq__a{ color:var(--ls-muted); }

/* 申込 */
.ls-apply{ padding-block:88px 104px; }
.ls-apply__box{ background:var(--ls-surface); border:1px solid var(--ls-line-2); border-radius:8px; padding:40px 32px; display:flex; flex-wrap:wrap; gap:40px; align-items:center; }
@media (max-width:599px){ .ls-apply{ padding-block:64px 72px; } .ls-apply__box{ padding:28px 20px; gap:28px; } }
.ls-apply__text{ flex:999 1 420px; min-width:0; display:flex; flex-direction:column; gap:14px; }
.ls-apply__text h2{ font-size:clamp(24px, 3vw, 30px); line-height:1.4; font-weight:900; }
.ls-apply__text p{ color:var(--ls-muted); }
.ls-apply__safe{ display:flex; gap:10px; align-items:center; font-size:13px; color:var(--ls-muted); }
.ls-lock{ flex:none; color:var(--ls-navy); }
.ls-apply__act{ flex:1 1 300px; min-width:0; display:flex; flex-direction:column; gap:14px; }
.ls-apply__tel{ display:flex; flex-direction:column; gap:2px; padding-top:14px; border-top:1px solid var(--ls-line); }
.ls-apply__tel a{ font-family:var(--ls-mono); font-size:22px; font-weight:700; text-decoration:none; }

/* フッター */
.ls-foot{ background:var(--ls-navy-dk); color:var(--ls-foot-tx); font-size:13px; }
.ls-foot__in{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:16px; padding-block:32px; }
.ls-foot__co{ display:flex; flex-direction:column; gap:4px; }
.ls-foot__co b{ color:#FFFFFF; font-size:14px; }
.ls-foot__links{ display:flex; flex-wrap:wrap; gap:8px 20px; align-items:flex-start; }
.ls-foot a{ color:var(--ls-foot-tx); }
.ls-foot a:hover{ color:#FFFFFF; }
