        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Inter', sans-serif;
            background: #ffffff;
            color: #0f172a;
            min-height: 100vh;
            -webkit-font-smoothing: antialiased;
        }

        .container {
            max-width: 72rem;
            margin: 0 auto;
        }

        @keyframes spin {
            to { transform: rotate(360deg); }
        }

        @keyframes pulse {
            0%, 100% { opacity: 1; }
            50% { opacity: .5; }
        }

        /* ── Processing spinner (dual-tone ring) ── */
        .psa-spinner-card{background:#fff;border:1.5px solid #e0e7ff;border-radius:1.5rem;padding:2.5rem 2rem;text-align:center;max-width:26rem;margin:0 auto}
        .psa-ring-wrap{position:relative;width:72px;height:72px;margin:0 auto 1.25rem}
        .psa-ring{position:absolute;inset:0;border-radius:50%;border:4px solid #f1f5f9;border-top-color:#3b82f6;border-right-color:#8b5cf6;animation:spin 1s linear infinite}
        .psa-ring-ic{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}

        /* ── Error state ── */
        .psa-error-card{background:#fff;border:1.5px solid #fecaca;border-radius:1.5rem;padding:2.25rem 2rem;text-align:center;max-width:30rem;margin:0 auto}

        /* ── Dashboard ── */
        .psa-dash-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
        .psa-stat{background:#fff;border:1px solid #e8ecf0;border-radius:1rem;padding:1.125rem 1.25rem;transition:border-color .2s,box-shadow .2s}
        .psa-stat:hover{border-color:#c7d2fe;box-shadow:0 4px 14px rgba(99,102,241,.09)}
        .psa-stat-label{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;margin-bottom:.4rem}
        .psa-stat-val{font-size:1.375rem;font-weight:800;color:#0f172a;letter-spacing:-.02em}
        .psa-stat-sub{font-size:.75rem;color:#64748b;margin-top:.2rem}
        @media(max-width:860px){.psa-dash-grid{grid-template-columns:repeat(2,1fr)}}

        .psa-panel{background:#fff;border:1px solid #e8ecf0;border-radius:1.25rem;padding:1.75rem}
        .psa-panel-title{font-size:1rem;font-weight:800;color:#0f172a;margin-bottom:.25rem}
        .psa-panel-sub{font-size:.8125rem;color:#64748b;margin-bottom:1.25rem}

        .psa-legend{display:flex;flex-wrap:wrap;gap:.5rem 1.125rem;margin-top:1rem}
        .psa-legend-item{display:flex;align-items:center;gap:.4rem;font-size:.78rem;color:#334155;font-weight:600}
        .psa-legend-sw{width:10px;height:10px;border-radius:3px;flex-shrink:0}

        .psa-bar-row{display:flex;align-items:center;gap:.75rem;margin-bottom:.7rem}
        .psa-bar-label{width:6.5rem;flex-shrink:0;font-size:.78rem;font-weight:600;color:#334155}
        .psa-bar-track{flex:1;height:1.25rem;background:#f1f5f9;border-radius:.4rem;overflow:hidden;position:relative}
        .psa-bar-fill{height:100%;border-radius:.4rem;transition:width .6s ease}
        .psa-bar-val{width:3.75rem;flex-shrink:0;text-align:right;font-size:.78rem;font-weight:700;color:#0f172a}

        .psa-heatmap-wrap{position:relative}
        #psaHeatmapCanvas{width:100%;height:auto;border-radius:.75rem;cursor:crosshair;display:block}
        .psa-tooltip{position:absolute;pointer-events:none;background:#0f172a;color:#fff;font-size:.72rem;font-weight:600;padding:.4rem .65rem;border-radius:.5rem;transform:translate(-50%,-115%);white-space:nowrap;opacity:0;transition:opacity .1s;z-index:5}
        .psa-tooltip.show{opacity:1}

        .psa-toggle-btn{background:#f1f5f9;border:1px solid #e2e8f0;color:#334155;font-size:.78rem;font-weight:700;padding:.45rem .9rem;border-radius:.6rem;cursor:pointer;transition:background .2s}
        .psa-toggle-btn:hover{background:#e2e8f0}

        .psa-table{width:100%;border-collapse:collapse;font-size:.8125rem}
        .psa-table th{background:#f8fafc;color:#334155;padding:.6rem .8rem;text-align:left;font-weight:700;border-bottom:1px solid #e2e8f0}
        .psa-table td{padding:.55rem .8rem;border-bottom:1px solid #eef2f7;color:#334155}
        .psa-table tr:hover td{background:#fafafe}

        .psa-page-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}
        @media(max-width:700px){.psa-page-grid{grid-template-columns:1fr}}
        .psa-page-card{background:#fff;border:1px solid #e8ecf0;border-radius:1rem;padding:1.125rem 1.25rem;display:flex;gap:1rem;align-items:flex-start}
        .psa-page-thumb{width:44px;height:58px;flex-shrink:0;border-radius:.4rem;border:1px solid #e2e8f0;background:#f8fafc;overflow:hidden;display:flex;align-items:center;justify-content:center}
        .psa-page-thumb img{width:100%;height:100%;object-fit:cover}
        .psa-page-tags{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.5rem}
        .psa-tag{font-size:.68rem;font-weight:700;padding:.2rem .5rem;border-radius:9999px;background:#eef2ff;color:#4338ca}

        .psa-score-ring{position:relative;width:9.5rem;height:9.5rem;margin:0 auto}
        .psa-score-val{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}

        .psa-banner{border-radius:1rem;padding:1rem 1.25rem;font-size:.85rem;line-height:1.6;margin-bottom:1.5rem;display:flex;gap:.75rem;align-items:flex-start}
        .psa-banner-warn{background:#fffbeb;border:1px solid #fde68a;color:#92400e}
        .psa-banner-info{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af}

        .psa-rec-item{display:flex;gap:.85rem;padding:.9rem 0;border-bottom:1px solid #eef2f7}
        .psa-rec-item:last-child{border-bottom:none}
        .psa-rec-badge{width:1.75rem;height:1.75rem;border-radius:.5rem;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:800}

        .psa-hidden{display:none}
