    :root {
    --bg: #0a0a0f;
    --surface: #12121a;
    --surface2: #181822;
    --border: #1e1e2e;
    --accent: #00e5ff;
    --accent2: #7c3aed;
    --success: #00ff9d;
    --error: #ff3b6b;
    --warn: #ffb400;
    --text: #e2e8f0;
    --muted: #64748b;
  }

.icon-wrap {
    width: 72px;
    height: 72px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 1.25rem;
    position: relative;
}
  .icon-wrap.blue   { background: rgba(0,229,255,0.1); border: 1px solid rgba(0,229,255,0.3); }
  .icon-wrap.green  { background: rgba(0,255,157,0.1); border: 1px solid rgba(0,255,157,0.3); }
  .icon-wrap.red    { background: rgba(255,59,107,0.1); border: 1px solid rgba(255,59,107,0.3); }
  .icon-wrap.yellow { background: rgba(255,180,0,0.1); border: 1px solid rgba(255,180,0,0.3); }
  .icon-wrap svg { width: 32px; height: 32px; }

  .pulse-ring {
    position: absolute; inset: -6px; border-radius: 50%;
    border: 1px solid var(--accent);
    animation: pulse 2s ease-in-out infinite; opacity: 0;
  }
  @keyframes pulse { 0% { transform: scale(1); opacity: 0.6; } 100% { transform: scale(1.4); opacity: 0; } }

  .spinner {
    width: 16px; height: 16px;
    border: 2px solid rgba(0,229,255,0.2);
    border-top-color: var(--accent);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
    display: inline-block;
    flex-shrink: 0;
  }

  @keyframes spin { to { transform: rotate(360deg); } }

    * {
        box-sizing: border-box;
    }

    body {
        margin: 0;
        font-family: -apple-system, BlinkMacSystemFont, "Noto Sans JP",
                     "Yu Gothic", "Hiragino Kaku Gothic ProN", sans-serif;
        color: #222;
        background: #f5f8fb;
        line-height: 1.8;
    }

    header {
        background: linear-gradient(135deg, #172554, #2563eb);
        color: #fff;
        text-align: center;
        padding: 70px 20px 80px;
    }

    header .logo {
        font-size: 52px;
        font-weight: 800;
        letter-spacing: 2px;
    }

    header h1 {
        margin: 10px 0 15px;
        font-size: clamp(26px, 5vw, 44px);
    }

    header p {
        max-width: 760px;
        margin: auto;
        font-size: 18px;
        opacity: .95;
    }

    .hero-buttons {
        margin-top: 30px;
    }

    .btn {
        display: inline-block;
        padding: 14px 28px;
        border-radius: 999px;
        text-decoration: none;
        font-weight: bold;
        margin: 5px;
    }

    .btn-primary {
        background: #fff;
        color: #1d4ed8;
    }

    .btn-outline {
        border: 1px solid rgba(255,255,255,.7);
        color: #fff;
    }

    main {
        max-width: 1100px;
        margin: auto;
        padding: 50px 18px;
    }

    section {
        margin-bottom: 55px;
    }

    .section-title {
        text-align: center;
        margin-bottom: 30px;
    }

    .section-title h2 {
        font-size: 30px;
        margin-bottom: 5px;
    }

    .section-title p {
        color: #667085;
    }

    .card-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
        gap: 20px;
    }

    .card {
        background: #fff;
        border-radius: 18px;
        padding: 25px;
        box-shadow: 0 8px 25px rgba(20, 40, 80, .08);
    }

    .icon {
        font-size: 38px;
    }

    .card h3 {
        margin: 8px 0;
        font-size: 20px;
    }

    .step {
        display: grid;
        grid-template-columns: 70px 1fr;
        gap: 20px;
        background: #fff;
        padding: 25px;
        border-radius: 18px;
        margin-bottom: 18px;
        box-shadow: 0 5px 20px rgba(20, 40, 80, .06);
    }

    .step-number {
        width: 58px;
        height: 58px;
        display: flex;
        align-items: center;
        justify-content: center;
        background: #2563eb;
        color: #fff;
        border-radius: 50%;
        font-size: 22px;
        font-weight: bold;
    }

    .highlight {
        background: #eaf2ff;
        border-left: 5px solid #2563eb;
        padding: 20px;
        border-radius: 10px;
        margin: 20px 0;
    }

    .warning {
        background: #fff8e6;
        border-left: 5px solid #f59e0b;
        padding: 20px;
        border-radius: 10px;
    }

    .score {
        display: inline-block;
        background: #dcfce7;
        color: #166534;
        padding: 5px 12px;
        border-radius: 999px;
        font-weight: bold;
    }

    .cta {
        background: linear-gradient(135deg, #172554, #2563eb);
        color: #fff;
        text-align: center;
        padding: 55px 20px;
        border-radius: 25px;
    }

    footer {
        text-align: center;
        background: #111827;
        color: #aaa;
        padding: 30px 20px;
        font-size: 14px;
    }

    @media (max-width: 600px) {
        header {
            padding: 50px 18px 60px;
        }

        header .logo {
            font-size: 42px;
        }

        .step {
            grid-template-columns: 1fr;
        }

        .step-number {
            margin-bottom: -5px;
        }
    }
