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

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

:root{
  --primary:#F59E0B;--secondary:#FBBF24;--accent:#EF4444;
  --bg:#1A1400;--surface:#261F07;--surface2:#30280D;
  --text:#FFFBEB;--text-dim:#B5A06A;--border:#3D3215;
  --success:#22C55E;--info:#38BDF8;--radius:12px;
  --font:'Inter',system-ui,sans-serif;
}

html{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.6}
body{min-height:100vh;display:flex;flex-direction:column}

.header{padding:1.25rem 2rem;display:flex;align-items:center;gap:.75rem;border-bottom:1px solid var(--border);background:linear-gradient(135deg,rgba(245,158,11,.06),rgba(239,68,68,.04))}
.header h1{font-size:1.15rem;font-weight:800;background:linear-gradient(135deg,var(--primary),var(--secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.header p{font-size:.8rem;color:var(--text-dim)}

.main{flex:1;max-width:1000px;width:100%;margin:0 auto;padding:1.5rem}

.input-section{margin-bottom:1.5rem}
.input-section label{display:block;font-size:.75rem;font-weight:600;color:var(--text-dim);margin-bottom:.35rem;text-transform:uppercase;letter-spacing:.04em}
.input-section textarea{width:100%;min-height:180px;padding:1rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);font-family:'Courier New',monospace;font-size:.82rem;line-height:1.6;resize:vertical;outline:none;tab-size:2;transition:border-color .2s}
.input-section textarea:focus{border-color:var(--primary)}
.input-actions{display:flex;gap:.5rem;margin-top:.75rem;flex-wrap:wrap}

.btn{padding:.5rem 1rem;border-radius:var(--radius);font-size:.82rem;font-weight:600;cursor:pointer;border:none;transition:all .2s;display:inline-flex;align-items:center;gap:.4rem;font-family:var(--font)}
.btn-primary{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#1A1400}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(245,158,11,.25)}
.btn-ghost{background:transparent;color:var(--text-dim);border:1px solid var(--border)}
.btn-ghost:hover{background:var(--surface2);color:var(--text)}
.btn-sm{padding:.35rem .7rem;font-size:.75rem}

/* Results */
.results{display:none}.results.show{display:block;animation:fadeIn .3s}

.summary-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem;margin-bottom:1.5rem}
.summary-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;text-align:center}
.summary-card .num{font-size:1.5rem;font-weight:800}
.summary-card .label{font-size:.72rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}
.num-pass{color:var(--success)}
.num-fail{color:var(--accent)}
.num-warn{color:var(--primary)}
.num-info{color:var(--info)}

.section{margin-bottom:2rem}
.section h3{font-size:.88rem;font-weight:700;margin-bottom:.75rem;display:flex;align-items:center;gap:.5rem}

/* Palette display */
.palette{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}
.palette-name{font-size:.82rem;font-weight:700;margin-bottom:.25rem}
.swatch-row{display:flex;gap:2px;flex-wrap:wrap}
.swatch{width:44px;height:44px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:.6rem;font-weight:700;cursor:default;position:relative;transition:transform .15s}
.swatch:hover{transform:scale(1.2);z-index:2}
.swatch-label{font-size:.55rem;opacity:.7}

/* Issue cards */
.issue{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.85rem 1rem;margin-bottom:.5rem;border-left:4px solid var(--border);animation:fadeIn .2s}
.issue.violation{border-left-color:var(--accent)}
.issue.warning{border-left-color:var(--primary)}
.issue.info{border-left-color:var(--info)}
.issue-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem;flex-wrap:wrap}
.issue-badge{padding:.15rem .45rem;border-radius:5px;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.badge-violation{background:rgba(239,68,68,.15);color:var(--accent)}
.badge-warning{background:rgba(245,158,11,.15);color:var(--primary)}
.badge-info{background:rgba(56,189,248,.15);color:var(--info)}
.issue-title{font-size:.85rem;font-weight:600}
.issue-desc{font-size:.8rem;color:var(--text-dim)}
.issue-fix{font-size:.78rem;color:var(--success);margin-top:.3rem}

/* Matrix */
.matrix-wrap{overflow-x:auto;margin-bottom:1rem}
table.matrix{border-collapse:collapse;font-size:.7rem}
table.matrix th,table.matrix td{padding:.35rem .45rem;border:1px solid var(--border);text-align:center;white-space:nowrap}
table.matrix th{background:var(--surface);font-weight:600;color:var(--text-dim)}
table.matrix td{font-weight:600;font-variant-numeric:tabular-nums}
td.pass{background:rgba(34,197,94,.1);color:var(--success)}
td.fail{background:rgba(239,68,68,.1);color:var(--accent)}

.toast{position:fixed;bottom:2rem;right:2rem;background:var(--surface);border:1px solid var(--primary);color:var(--primary);padding:.65rem 1.1rem;border-radius:var(--radius);font-size:.82rem;font-weight:500;z-index:200;transform:translateY(100px);opacity:0;transition:all .3s}
.toast.show{transform:translateY(0);opacity:1}

@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:768px){.header{padding:1rem;flex-wrap:wrap}.main{padding:1rem}.summary-cards{grid-template-columns:repeat(2,1fr)}.swatch{width:34px;height:34px}}
