:root {
    /* 診断計器(スキャナー)としての世界観: 暖色の紙・インク・シグナルの3色を軸に構成する */
    --ink: #18151f;
    --ink-soft: #4a4459;
    --paper: #f6f2ea;
    --card-bg: #fffdf9;
    --signal: #e8542e;
    --signal-soft: #fbe4dc;
    --signal-dark: #c43f1e;
    --line: #e6ded0;
    --good: #2f7a4f;
    --good-soft: #e6f1ea;
    --mid: #c97a2b;
    --mid-soft: #faf0e2;
    --weak: #c1432e;
    --weak-soft: #faeae6;
    --error: #b3261e;
}

* { box-sizing: border-box; }

body {
    margin: 0;
    min-height: 100vh;
    background:
        radial-gradient(900px 480px at 8% -12%, rgba(232, 84, 46, 0.07) 0%, transparent 60%),
        radial-gradient(700px 420px at 105% 0%, rgba(24, 21, 31, 0.05) 0%, transparent 55%),
        var(--paper);
    color: var(--ink);
    font-family: "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Yu Gothic", sans-serif;
    line-height: 1.75;
    -webkit-font-smoothing: antialiased;
}

.container {
    max-width: 640px;
    margin: 0 auto;
    padding: 56px 20px;
}

.card {
    background: var(--card-bg);
    border: 1px solid var(--line);
    border-radius: 14px;
    padding: 40px 36px;
    box-shadow: 0 24px 48px -28px rgba(24, 21, 31, 0.22), 0 2px 6px rgba(24, 21, 31, 0.05);
}

h1 {
    font-family: "Shippori Mincho", "Noto Serif JP", serif;
    font-weight: 600;
    font-size: 27px;
    margin: 0 0 10px;
    letter-spacing: 0.01em;
}
h2 {
    font-family: "Shippori Mincho", "Noto Serif JP", serif;
    font-weight: 600;
    font-size: 17px;
    margin: 28px 0 10px;
    color: var(--ink);
}
p.lead { color: var(--ink-soft); margin-top: 0; }

/* ステップトラッカー: 4段階の実際の順序を数字と線で示す(装飾ではなく現在地の提示) */
.steps {
    display: flex;
    align-items: flex-start;
    list-style: none;
    margin: 0 0 32px;
    padding: 0;
}
.step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    flex: 1;
    position: relative;
    text-align: center;
}
.step:not(:last-child)::after {
    content: "";
    position: absolute;
    top: 13px;
    left: calc(50% + 20px);
    width: calc(100% - 40px);
    height: 1px;
    background: var(--line);
}
.step.is-done:not(:last-child)::after { background: var(--ink); }
.step-dot {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: "Roboto Mono", monospace;
    font-size: 12px;
    font-weight: 700;
    background: var(--card-bg);
    border: 1.5px solid var(--line);
    color: var(--ink-soft);
    z-index: 1;
}
.step.is-done .step-dot { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.step.is-active .step-dot { background: var(--signal); border-color: var(--signal); color: #fff; }
.step-label { font-size: 11px; color: var(--ink-soft); }
.step.is-active .step-label { color: var(--ink); font-weight: 700; }

label { display: block; font-weight: 700; margin-bottom: 6px; font-size: 14px; }

input[type=url], input[type=text], input[type=email] {
    width: 100%;
    padding: 13px 16px;
    border: 1px solid var(--line);
    background: var(--paper);
    border-radius: 8px;
    font-size: 15px;
    margin-bottom: 18px;
    color: var(--ink);
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
input[type=url]:focus, input[type=text]:focus, input[type=email]:focus {
    outline: none;
    border-color: var(--signal);
    box-shadow: 0 0 0 3px rgba(232, 84, 46, 0.15);
    background: #ffffff;
}

button.primary {
    display: inline-block;
    background: var(--ink);
    color: var(--paper);
    border: none;
    padding: 14px 30px;
    border-radius: 8px;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: 0.01em;
    cursor: pointer;
    box-shadow: 0 10px 20px -10px rgba(24, 21, 31, 0.45);
    transition: background-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease, opacity 0.15s ease;
}
button.primary:hover { background: var(--signal); transform: translateY(-1px); box-shadow: 0 14px 24px -10px rgba(232, 84, 46, 0.5); }
button.primary:active { transform: translateY(0); }
button.primary:disabled { opacity: 0.6; cursor: default; transform: none; }
button.primary:focus-visible, a.secondary-link:focus-visible { outline: 2px solid var(--signal); outline-offset: 2px; }

a.secondary-link {
    display: inline-block;
    margin-top: 14px;
    color: var(--ink-soft);
    font-size: 14px;
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.15s ease;
}
a.secondary-link:hover { border-color: var(--ink-soft); }

a.cta-button {
    display: block;
    margin: 20px 0;
    padding: 16px 24px;
    background: var(--signal);
    color: #fffdf9;
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 0.01em;
    text-align: center;
    text-decoration: none;
    border-radius: 8px;
    box-shadow: 0 14px 24px -10px rgba(232, 84, 46, 0.5);
    transition: background-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}
a.cta-button:hover { background: var(--signal-dark); transform: translateY(-1px); }
a.cta-button:focus-visible { outline: 2px solid var(--signal-dark); outline-offset: 2px; }

.error-box {
    background: var(--weak-soft);
    border: 1px solid #f0c6bc;
    color: var(--error);
    padding: 12px 16px;
    border-radius: 8px;
    margin-bottom: 16px;
    font-size: 14px;
}

/* AI検索での言及回数: 計器の読み取り値として大きく提示し、下に検出メーターを添える */
.reading { margin: 8px 0 4px; }
.reading-value {
    display: flex;
    align-items: baseline;
    gap: 8px;
}
.reading-num {
    font-family: "Roboto Mono", monospace;
    font-size: 64px;
    font-weight: 700;
    color: var(--signal);
    line-height: 1;
    font-variant-numeric: tabular-nums;
}
.reading-unit { font-size: 16px; font-weight: 700; color: var(--ink-soft); }
.reading-caption { font-size: 13px; color: var(--ink-soft); margin: 8px 0 0; }
.consent-note { font-size: 12px; color: var(--ink-soft); margin: 10px 0 0; }
.consent-note a { color: inherit; text-decoration: underline; }

.keyword-list { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0; padding: 0; list-style: none; }
.keyword-list li {
    background: var(--signal-soft);
    color: var(--signal-dark);
    padding: 5px 14px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 500;
}

.seo-grade {
    display: flex;
    align-items: center;
    gap: 16px;
    margin: 12px 0;
    padding: 16px 18px;
    border-radius: 10px;
    background: var(--paper);
    border: 1px solid var(--line);
}
.seo-grade-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    color: #ffffff;
    font-family: "Roboto Mono", monospace;
    font-size: 26px;
    font-weight: 700;
    flex-shrink: 0;
}
.seo-grade.grade-a .seo-grade-badge { background: var(--good); }
.seo-grade.grade-b .seo-grade-badge { background: var(--mid); }
.seo-grade.grade-c .seo-grade-badge { background: var(--weak); }
.seo-grade-score {
    font-family: "Roboto Mono", monospace;
    font-size: 16px;
    font-weight: 700;
    color: var(--ink);
    font-variant-numeric: tabular-nums;
}

.cta-box {
    margin-top: 28px;
    padding: 24px 22px;
    border-radius: 10px;
    background: var(--signal-soft);
    border: 1px solid #f2c9bb;
    text-align: center;
}
.cta-box strong { font-family: "Shippori Mincho", serif; font-size: 16px; }

/* ハニーポット: 人間には見えないが、bot向けDOM上には存在する */
.hp-field {
    position: absolute;
    left: -9999px;
    top: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

/* ローディングオーバーレイ */
.loading-overlay[hidden] { display: none; }
.loading-overlay {
    position: fixed;
    inset: 0;
    background: rgba(24, 21, 31, 0.6);
    backdrop-filter: blur(2px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 999;
}
.loading-box {
    background: var(--card-bg);
    border-radius: 14px;
    padding: 36px 40px;
    text-align: center;
    box-shadow: 0 20px 45px rgba(0, 0, 0, 0.28);
}
.loading-box p { margin: 4px 0 0; font-weight: 700; }
.loading-box p.loading-sub { margin-top: 6px; font-weight: normal; font-size: 13px; color: var(--ink-soft); }
.spinner {
    width: 36px;
    height: 36px;
    margin: 0 auto;
    border: 4px solid var(--line);
    border-top-color: var(--signal);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
    button.primary, a.secondary-link, a.cta-button { transition: none; }
    .spinner { animation-duration: 1.6s; }
}
