:root{--bg:#f6f8fb;--card:#fff;--fg:#0f172a;--muted:#475569;--line:#e2e8f0;--pri:#2563eb;--pri-fg:#fff;--ok:#166534;--ok-bg:#dcfce7;--ko:#991b1b;--ko-bg:#fee2e2;--wa:#854d0e;--wa-bg:#fef9c3}
@media (prefers-color-scheme:dark){:root{--bg:#0b1220;--card:#131c2e;--fg:#e5e7eb;--muted:#9ca3af;--line:#26334d;--pri:#60a5fa;--pri-fg:#0b1220;--ok:#86efac;--ok-bg:#14532d;--ko:#fca5a5;--ko-bg:#7f1d1d;--wa:#fde68a;--wa-bg:#713f12}}
*{box-sizing:border-box}
body{margin:0;font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--fg)}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--card);padding:8px;z-index:9}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.hero{text-align:center;padding:2rem 1rem 1rem}
.hero h1{margin:0;font-size:clamp(1.6rem,5vw,2.4rem)}.hero h1 span{color:var(--pri)}
.hero p{margin:.5rem auto 1rem;max-width:36rem;color:var(--muted)}
main{max-width:56rem;margin:0 auto;padding:0 1rem 2rem}
.steps{display:flex;gap:.5rem;list-style:none;padding:0;margin:1rem 0;counter-reset:s}
.steps li{flex:1;text-align:center;font-size:.85rem;padding:.5rem .25rem;border-bottom:3px solid var(--line);color:var(--muted)}
.steps li.active{border-color:var(--pri);color:var(--fg);font-weight:600}.steps li.done{border-color:var(--ok)}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:1.25rem;margin-bottom:1rem}
.card h2{margin:0 0 1rem;font-size:1.2rem}
.drop{display:flex;flex-direction:column;align-items:center;gap:.25rem;border:2px dashed var(--line);border-radius:12px;padding:2.5rem 1rem;text-align:center;cursor:pointer;color:var(--muted)}
.drop:hover,.drop:focus,.drop.over{border-color:var(--pri);outline:none;background:color-mix(in srgb,var(--pri) 8%,transparent)}
.drop input{position:absolute;opacity:0;width:1px;height:1px}
.drop strong{color:var(--fg)}
.check{display:block;margin:.5rem 0;cursor:pointer}.check small{color:var(--muted)}
.muted{color:var(--muted);margin:.5rem 0}
.row{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0}
.btn,select{font:inherit;padding:.6rem 1rem;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--fg);cursor:pointer;min-height:44px}
.btn.primary{background:var(--pri);color:var(--pri-fg);border-color:var(--pri);font-weight:600}
.btn.ghost{background:transparent}
.btn:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--pri);outline-offset:2px}
progress{width:100%;height:14px;accent-color:var(--pri)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:.5rem;margin:1rem 0}
.stat{border:1px solid var(--line);border-radius:8px;padding:.5rem;text-align:center}
.stat b{display:block;font-size:1.4rem}.stat span{font-size:.8rem;color:var(--muted)}
.stat.ok b{color:var(--ok)}.stat.ko b{color:var(--ko)}.stat.wa b{color:var(--wa)}
.table-wrap{max-height:420px;overflow:auto;border:1px solid var(--line);border-radius:8px}
table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--line);word-break:break-word}
thead th{position:sticky;top:0;background:var(--card)}
tbody tr:nth-child(even){background:color-mix(in srgb,var(--line) 35%,transparent)}
.badge{display:inline-block;padding:.1rem .6rem;border-radius:99px;font-size:.8rem;font-weight:600}
.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.ko{background:var(--ko-bg);color:var(--ko)}.badge.wa{background:var(--wa-bg);color:var(--wa)}
.alert{background:var(--ko-bg);color:var(--ko);padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem}
footer{text-align:center;color:var(--muted);font-size:.8rem;padding:1rem}
[hidden]{display:none!important}
@media (max-width:520px){.steps li{font-size:.7rem}.btn{flex:1 1 100%}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

.card.narrow{max-width:26rem;margin:1rem auto;text-align:center}
.card.narrow form{display:flex;flex-direction:column;gap:.75rem;text-align:left}
.card.narrow .btn{width:100%}
label input[type=email],label input[type=password]{display:block;width:100%;margin-top:.25rem;padding:.6rem;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--fg);font:inherit}
.row.center{justify-content:center;align-items:center;margin:.5rem 0 0}
#userbar{color:var(--muted);font-size:.9rem}
