:root{--primary:#4f46e5;--secondary:#6366f1;--bg:#f8fafc;--card:#fff;--text:#172033;--muted:#64748b;--success:#22c55e;--danger:#dc2626;--border:#e2e8f0;--shadow:0 12px 35px rgba(15,23,42,.08)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif}a{color:var(--primary);text-decoration:none}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{min-height:72px;padding:12px max(20px,calc((100% - 1180px)/2));background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:11px;color:var(--text)}.brand>span{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-weight:800}.brand div{display:flex;flex-direction:column;line-height:1.2}.brand small,.muted{color:var(--muted)}nav{display:flex;align-items:center;gap:22px}nav form{margin:0}.link-button{border:0;background:none;color:var(--primary);font:inherit;cursor:pointer;padding:0}.content{width:min(1180px,calc(100% - 40px));margin:0 auto;flex:1;padding:44px 0}footer{text-align:center;color:var(--muted);padding:24px}.card{background:var(--card);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow)}h1,h2,p{margin-top:0}h1{font-size:clamp(1.8rem,4vw,2.5rem);line-height:1.15;margin-bottom:10px}h2{font-size:1.15rem}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;font-weight:800;color:var(--primary);margin-bottom:8px}.page-head{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:30px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.stat{padding:24px;display:flex;flex-direction:column}.stat span,.stat small{color:var(--muted)}.stat strong{font-size:2.4rem;margin:8px 0}.welcome{display:flex;align-items:center;gap:18px;padding:26px;margin-top:22px}.welcome p{margin:0;color:var(--muted)}.icon{width:46px;height:46px;display:grid;place-items:center;border-radius:50%;background:#dcfce7;color:#15803d;font-size:1.4rem;font-weight:800;flex:0 0 auto}.auth-wrap{min-height:calc(100vh - 220px);display:grid;place-items:center}.auth-card,.form-card,.install-card{width:min(100%,460px);padding:32px}.form-card{width:min(100%,680px)}form{display:grid;gap:18px}fieldset{border:1px solid var(--border);border-radius:12px;padding:18px;display:grid;gap:14px}legend{font-weight:700;padding:0 6px}label{font-weight:650;display:grid;gap:7px}input,select{width:100%;border:1px solid #cbd5e1;border-radius:10px;background:#fff;color:var(--text);padding:12px 13px;font:inherit}input:focus,select:focus{outline:3px solid rgba(79,70,229,.15);border-color:var(--primary)}.button{display:inline-flex;justify-content:center;align-items:center;border:0;border-radius:10px;background:var(--primary);color:#fff;padding:12px 18px;font:inherit;font-weight:750;cursor:pointer}.button.secondary{background:#eef2ff;color:#4338ca}.alert{padding:12px 14px;border-radius:10px;margin-bottom:18px}.alert.error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.alert.success{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.installer{padding:40px 20px;background:linear-gradient(145deg,#eef2ff,#f8fafc 45%)}.install-card{margin:auto;background:#fff;border-radius:20px;box-shadow:var(--shadow);width:min(100%,720px)}.install-card>.brand{margin-bottom:28px}.requirements{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.badge{padding:6px 10px;border-radius:999px;font-size:.78rem}.badge.ok{background:#dcfce7;color:#166534}.badge.bad{background:#fee2e2;color:#991b1b}.grid{display:grid;grid-template-columns:2fr 1fr;gap:14px}code{font-family:ui-monospace,monospace}@media(max-width:760px){.topbar{align-items:flex-start;flex-direction:column}.topbar nav{width:100%;justify-content:space-between;gap:10px}.content{padding:28px 0}.page-head{align-items:flex-start;flex-direction:column}.stats{grid-template-columns:1fr}.grid{grid-template-columns:1fr}.auth-card,.install-card{padding:23px}.welcome{align-items:flex-start}}
