
    @import url('https://fonts.googleapis.com/css2?family=Noto+Sans:wght@300;400;500;600;700&display=swap');

    :root {
        --bg: #e0e5ec;
        --shadow-dark: #a3b1c6;
        --shadow-light: #ffffff;
        --text: #2d3440;
        --text-muted: #566573;
        --text-dim: #7a8696;
        --accent: #4a7fbd;
        --danger: #c44d53;
        --success: #4a8f5f;
    }

    body {
        font-family: 'Noto Sans', sans-serif;
        background: var(--bg);
        color: var(--text);
        min-height: 100vh;
    }

    .layout {
        max-width: 720px;
        margin: 0 auto;
        padding: 32px 20px 64px;
    }

    /* Focus visible */
    *:focus-visible {
        outline: 2px solid var(--accent);
        outline-offset: 3px;
    }

    /* Neumorphic surfaces — soft pillow effect
       Low offset + high blur = surface "grows" from the page
       instead of casting a visible shadow */
    .neu {
        background: var(--bg);
        border-radius: 20px;
        box-shadow:
            8px 8px 28px rgba(163, 177, 198, 0.7),
            -8px -8px 28px rgba(255, 255, 255, 0.9);
    }

    .neu-inset {
        background: var(--bg);
        border-radius: 20px;
        box-shadow:
            inset 6px 6px 16px rgba(163, 177, 198, 0.5),
            inset -6px -6px 16px rgba(255, 255, 255, 0.7);
    }

    /* Hero */
    .hero {
        text-align: center;
        padding: 56px 0 48px;
    }

    .hero-badge {
        display: inline-block;
        font-size: 0.7rem;
        font-weight: 500;
        letter-spacing: 0.06em;
        padding: 6px 16px;
        border-radius: 20px;
        background: var(--bg);
        box-shadow:
            4px 4px 12px rgba(163, 177, 198, 0.6),
            -4px -4px 12px rgba(255, 255, 255, 0.8);
        color: var(--text-muted);
        margin-bottom: 20px;
    }

    .hero-title {
        font-size: 3.5rem;
        font-weight: 300;
        letter-spacing: 4px;
        color: var(--text);
    }

    .hero-tagline {
        font-size: 1rem;
        color: var(--text-muted);
        margin-top: 16px;
        line-height: 1.6;
        font-weight: 300;
    }

    /* Intro card */
    .intro-card {
        padding: 0;
        margin-bottom: 48px;
    }

    .intro-text {
        font-size: 0.92rem;
        line-height: 1.8;
        font-weight: 300;
        color: var(--text-muted);
    }

    .intro-text strong {
        font-weight: 600;
        color: var(--text);
    }

    /* Divider */
    .divider {
        margin: 48px 0;
        height: 1px;
        background: linear-gradient(90deg, transparent, var(--shadow-dark), transparent);
    }

    /* Section — generous vertical rhythm */
    .section {
        margin-bottom: 56px;
    }

    .section-label {
        font-size: 0.7rem;
        font-weight: 600;
        color: var(--accent);
        letter-spacing: 0.1em;
        text-transform: uppercase;
        margin-bottom: 4px;
    }

    .section-title {
        font-size: 1.5rem;
        font-weight: 600;
        margin-bottom: 12px;
        color: var(--text);
    }

    .section-desc {
        font-size: 0.88rem;
        line-height: 1.8;
        color: var(--text-muted);
        font-weight: 300;
        margin-bottom: 20px;
    }

    .section-desc code {
        font-family: 'SF Mono', 'Fira Code', monospace;
        font-size: 0.82em;
        background: var(--bg);
        padding: 2px 8px;
        border-radius: 6px;
        box-shadow:
            inset 2px 2px 5px rgba(163, 177, 198, 0.45),
            inset -2px -2px 5px rgba(255, 255, 255, 0.65);
    }

    /* Demo grid — generous gaps so shadows never overlap */
    .demo-row {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 28px;
    }

    .demo-row-3 {
        display: grid;
        grid-template-columns: 1fr 1fr 1fr;
        gap: 24px;
    }

    .demo-panel {
        padding: 32px 24px;
        text-align: center;
        background: var(--bg);
        border-radius: 16px;
    }

    .demo-panel.raised {
        box-shadow:
            6px 6px 20px rgba(163, 177, 198, 0.65),
            -6px -6px 20px rgba(255, 255, 255, 0.85);
    }

    .demo-panel.pressed {
        box-shadow:
            inset 5px 5px 12px rgba(163, 177, 198, 0.5),
            inset -5px -5px 12px rgba(255, 255, 255, 0.7);
    }

    .demo-panel.flat {
        box-shadow: none;
        border: 1px dashed var(--shadow-dark);
    }

    .demo-panel.interactive {
        cursor: pointer;
        transition: box-shadow 0.2s;
    }

    .demo-panel-value {
        font-size: 1.5rem;
        font-weight: 300;
        margin-bottom: 8px;
        color: var(--text);
    }

    .demo-panel-label {
        font-size: 0.8rem;
        font-weight: 600;
        color: var(--text);
    }

    .demo-panel-sub {
        font-size: 0.7rem;
        color: var(--text-muted);
        margin-top: 4px;
    }

    /* Shadow property display */
    .shadow-viz {
        display: flex;
        gap: 20px;
        align-items: center;
        justify-content: center;
        margin-top: 16px;
    }

    .shadow-chip {
        display: flex;
        align-items: center;
        gap: 8px;
        font-size: 0.75rem;
        color: var(--text-muted);
    }

    .shadow-dot {
        width: 12px;
        height: 12px;
        border-radius: 50%;
    }

    .shadow-dot.dark {
        background: var(--shadow-dark);
        box-shadow: 2px 2px 4px var(--shadow-dark);
    }

    .shadow-dot.light {
        background: var(--shadow-light);
        box-shadow: -2px -2px 4px rgba(255, 255, 255, 0.5);
    }

    /* Toggle */
    .toggle-row {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 20px;
        margin-top: 20px;
    }

    .neu-toggle {
        width: 60px;
        height: 32px;
        border-radius: 16px;
        background: var(--bg);
        box-shadow:
            inset 3px 3px 8px rgba(163, 177, 198, 0.5),
            inset -3px -3px 8px rgba(255, 255, 255, 0.7);
        position: relative;
        cursor: pointer;
        transition: all 0.3s;
        border: none;
    }

    .neu-toggle::after {
        content: '';
        position: absolute;
        top: 4px;
        left: 4px;
        width: 24px;
        height: 24px;
        border-radius: 50%;
        background: var(--bg);
        box-shadow:
            3px 3px 10px rgba(163, 177, 198, 0.5),
            -3px -3px 10px rgba(255, 255, 255, 0.8);
        transition: all 0.3s;
    }

    .neu-toggle.on {
        background: var(--accent);
        box-shadow:
            inset 3px 3px 6px rgba(0, 0, 0, 0.2),
            inset -3px -3px 6px rgba(255, 255, 255, 0.15);
    }

    .neu-toggle.on::after {
        transform: translateX(28px);
        background: #fff;
        box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.15);
    }

    .toggle-label {
        font-size: 0.82rem;
        font-weight: 500;
        color: var(--text-muted);
    }

    /* Plain toggle — bad example, no color indicator */
    .neu-toggle-plain {
        width: 60px;
        height: 32px;
        border-radius: 16px;
        background: var(--bg);
        box-shadow:
            inset 3px 3px 8px rgba(163, 177, 198, 0.5),
            inset -3px -3px 8px rgba(255, 255, 255, 0.7);
        position: relative;
        display: inline-block;
    }

    .neu-toggle-plain::after {
        content: '';
        position: absolute;
        top: 4px;
        left: 4px;
        width: 24px;
        height: 24px;
        border-radius: 50%;
        background: var(--bg);
        box-shadow:
            3px 3px 10px rgba(163, 177, 198, 0.5),
            -3px -3px 10px rgba(255, 255, 255, 0.8);
    }

    .neu-toggle-plain.on::after {
        left: auto;
        right: 4px;
    }

    /* Buttons */
    .neu-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        padding: 14px 28px;
        border-radius: 12px;
        background: var(--bg);
        border: none;
        cursor: pointer;
        font-size: 0.85rem;
        font-weight: 500;
        color: var(--text-muted);
        font-family: 'Noto Sans', sans-serif;
        box-shadow:
            5px 5px 16px rgba(163, 177, 198, 0.6),
            -5px -5px 16px rgba(255, 255, 255, 0.85);
        transition: all 0.15s;
    }

    .neu-btn:hover {
        color: var(--text);
        box-shadow:
            3px 3px 10px rgba(163, 177, 198, 0.5),
            -3px -3px 10px rgba(255, 255, 255, 0.75);
    }

    .neu-btn:active {
        box-shadow:
            inset 4px 4px 10px rgba(163, 177, 198, 0.5),
            inset -4px -4px 10px rgba(255, 255, 255, 0.7);
    }

    .neu-btn.primary {
        background: var(--accent);
        color: #fff;
        box-shadow:
            5px 5px 16px rgba(163, 177, 198, 0.6),
            -5px -5px 16px rgba(255, 255, 255, 0.85);
    }

    .neu-btn.primary:hover {
        background: #3e6fa8;
    }

    .neu-btn.primary:active {
        box-shadow:
            inset 4px 4px 10px rgba(0, 0, 0, 0.2),
            inset -4px -4px 10px rgba(255, 255, 255, 0.1);
    }

    /* Bad button — intentionally low contrast for comparison */
    .neu-btn-bad {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        padding: 14px 28px;
        border-radius: 12px;
        background: var(--bg);
        border: none;
        font-size: 0.85rem;
        font-weight: 500;
        color: #9aa5b4;
        font-family: 'Noto Sans', sans-serif;
        box-shadow:
            5px 5px 16px rgba(163, 177, 198, 0.6),
            -5px -5px 16px rgba(255, 255, 255, 0.85);
    }

    /* Comparison grid — extra gap for shadow breathing room */
    .fix-grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 28px;
        margin-bottom: 28px;
    }

    .fix-side {
        padding: 32px 24px;
        border-radius: 16px;
        text-align: center;
        background: var(--bg);
    }

    .fix-side.before {
        box-shadow:
            inset 5px 5px 14px rgba(163, 177, 198, 0.45),
            inset -5px -5px 14px rgba(255, 255, 255, 0.65);
    }

    .fix-side.after {
        box-shadow:
            8px 8px 24px rgba(163, 177, 198, 0.6),
            -8px -8px 24px rgba(255, 255, 255, 0.85);
    }

    .fix-label {
        font-size: 0.7rem;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.1em;
        margin-bottom: 20px;
    }

    .fix-side.before .fix-label { color: var(--danger); }
    .fix-side.after .fix-label { color: var(--success); }

    .fix-note {
        font-size: 0.75rem;
        color: var(--text-muted);
        margin-top: 16px;
        font-weight: 300;
        line-height: 1.5;
    }

    .fix-btns {
        display: flex;
        gap: 20px;
        justify-content: center;
    }

    .fix-toggles {
        display: flex;
        gap: 24px;
        justify-content: center;
        align-items: center;
    }

    .fix-toggle-pair {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 6px;
    }

    .fix-toggle-state {
        font-size: 0.65rem;
        color: var(--text-dim);
        font-weight: 500;
    }

    .fix-subtitle {
        font-size: 0.92rem;
        font-weight: 600;
        color: var(--text);
        margin-bottom: 16px;
    }

    .fix-subtitle.top-gap {
        margin-top: 32px;
    }

    /* Palette demo */
    .palette-demo {
        display: flex;
        gap: 12px;
        justify-content: center;
        align-items: flex-end;
        margin-bottom: 20px;
    }

    .palette-swatch {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 8px;
    }

    .swatch-box {
        width: 56px;
        height: 56px;
        border-radius: 12px;
    }

    .swatch-label {
        font-size: 0.65rem;
        color: var(--text-muted);
        font-family: 'SF Mono', 'Fira Code', monospace;
    }

    /* Code block */
    .code-block {
        background: #2d3748;
        border-radius: 12px;
        padding: 16px 20px;
        font-family: 'SF Mono', 'Fira Code', monospace;
        font-size: 0.72rem;
        line-height: 1.8;
        color: rgba(255, 255, 255, 0.7);
        overflow-x: auto;
        margin-top: 16px;
    }

    .code-block .kw { color: #c792ea; }
    .code-block .val { color: #c3e88d; }
    .code-block .cmt { color: rgba(255, 255, 255, 0.3); }

    /* Input demo */
    .input-demo {
        display: flex;
        flex-direction: column;
        gap: 8px;
        max-width: 320px;
        margin: 0 auto;
    }

    .neu-input-label {
        font-size: 0.78rem;
        font-weight: 600;
        color: var(--text);
    }

    .neu-input {
        padding: 14px 18px;
        border-radius: 14px;
        border: none;
        background: var(--bg);
        box-shadow:
            inset 3px 3px 8px rgba(163, 177, 198, 0.5),
            inset -3px -3px 8px rgba(255, 255, 255, 0.7);
        font-family: 'Noto Sans', sans-serif;
        font-size: 0.88rem;
        color: var(--text);
        transition: box-shadow 0.2s;
    }

    .neu-input::placeholder {
        color: var(--text-dim);
    }

    .neu-input:focus {
        outline: none;
        box-shadow:
            inset 3px 3px 8px rgba(163, 177, 198, 0.5),
            inset -3px -3px 8px rgba(255, 255, 255, 0.7),
            0 0 0 2px var(--accent);
    }

    /* Mini player */
    .mini-player {
        padding: 40px 36px;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 24px;
    }

    .mini-album {
        width: 128px;
        height: 128px;
        border-radius: 50%;
        background: var(--bg);
        box-shadow:
            8px 8px 28px rgba(163, 177, 198, 0.65),
            -8px -8px 28px rgba(255, 255, 255, 0.9);
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .mini-album-inner {
        width: 104px;
        height: 104px;
        border-radius: 50%;
        background: var(--bg);
        box-shadow:
            inset 5px 5px 14px rgba(163, 177, 198, 0.5),
            inset -5px -5px 14px rgba(255, 255, 255, 0.7);
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .mini-album-core {
        width: 20px;
        height: 20px;
        border-radius: 50%;
        background: var(--bg);
        box-shadow:
            2px 2px 8px rgba(163, 177, 198, 0.5),
            -2px -2px 8px rgba(255, 255, 255, 0.8);
    }

    .mini-controls {
        display: flex;
        align-items: center;
        gap: 28px;
    }

    .mini-btn {
        width: 44px;
        height: 44px;
        border-radius: 50%;
        background: var(--bg);
        border: none;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        box-shadow:
            4px 4px 14px rgba(163, 177, 198, 0.6),
            -4px -4px 14px rgba(255, 255, 255, 0.85);
        transition: all 0.15s;
    }

    .mini-btn:active {
        box-shadow:
            inset 3px 3px 8px rgba(163, 177, 198, 0.5),
            inset -3px -3px 8px rgba(255, 255, 255, 0.7);
    }

    .mini-btn svg {
        width: 14px;
        height: 14px;
        fill: var(--text-muted);
    }

    .mini-btn-play {
        width: 56px;
        height: 56px;
        background: var(--accent);
        box-shadow:
            6px 6px 20px rgba(163, 177, 198, 0.6),
            -6px -6px 20px rgba(255, 255, 255, 0.85);
    }

    .mini-btn-play svg {
        width: 18px;
        height: 18px;
        fill: #fff;
    }

    .mini-btn-play:active {
        box-shadow:
            inset 4px 4px 8px rgba(0, 0, 0, 0.2),
            inset -4px -4px 8px rgba(255, 255, 255, 0.1);
    }

    .mini-progress {
        width: 100%;
        height: 6px;
        border-radius: 3px;
        background: var(--bg);
        box-shadow:
            inset 2px 2px 6px rgba(163, 177, 198, 0.5),
            inset -2px -2px 6px rgba(255, 255, 255, 0.7);
        position: relative;
    }

    .mini-progress-fill {
        width: 35%;
        height: 100%;
        border-radius: 3px;
        background: var(--accent);
        opacity: 0.6;
        position: relative;
    }

    .mini-progress-handle {
        position: absolute;
        right: -8px;
        top: 50%;
        transform: translateY(-50%);
        width: 16px;
        height: 16px;
        border-radius: 50%;
        background: var(--accent);
        box-shadow:
            2px 2px 8px rgba(163, 177, 198, 0.5),
            -2px -2px 8px rgba(255, 255, 255, 0.8);
    }

    .mini-info {
        text-align: center;
    }

    .mini-title {
        font-size: 0.92rem;
        font-weight: 600;
        color: var(--text);
    }

    .mini-artist {
        font-size: 0.78rem;
        color: var(--text-muted);
        margin-top: 2px;
    }

    /* Rules list */
    .rules-card {
        padding: 0;
    }

    .rules-list {
        list-style: none;
        padding: 0;
        margin: 0;
    }

    .rules-list li {
        font-size: 0.85rem;
        padding: 8px 0;
        border-bottom: 1px solid rgba(163, 177, 198, 0.3);
        display: flex;
        align-items: center;
        gap: 10px;
        font-weight: 300;
        color: var(--text-muted);
    }

    .rules-list li:last-child {
        border-bottom: none;
    }

    .rules-list .x {
        color: var(--danger);
        font-weight: 700;
        font-size: 0.9rem;
        flex-shrink: 0;
    }

    .rules-list .o {
        color: var(--success);
        font-weight: 700;
        font-size: 0.9rem;
        flex-shrink: 0;
    }

    /* Manifesto */
    .manifesto {
        text-align: center;
        margin-top: 56px;
    }

    .manifesto-text {
        font-size: 1.3rem;
        font-weight: 300;
        line-height: 1.7;
        color: var(--text);
    }

    .manifesto-sub {
        font-size: 0.8rem;
        color: var(--text-dim);
        margin-top: 12px;
        line-height: 1.6;
        font-weight: 300;
    }

    @media screen and (max-width: 600px) {
        .hero-title {
            font-size: 2.5rem;
        }

        .demo-row,
        .demo-row-3,
        .fix-grid {
            grid-template-columns: 1fr;
        }

        .intro-card,
        .rules-card {
            padding: 24px;
        }

        .mini-player {
            padding: 28px 20px;
        }

        .shadow-viz {
            flex-direction: column;
            gap: 8px;
        }

        .mini-controls {
            gap: 16px;
        }

        .fix-btns {
            flex-direction: column;
            align-items: center;
        }
    }
