*{box-sizing:border-box}
body{font-family:-apple-system,Segoe UI,Roboto,sans-serif;margin:0;background:#f4f6fb;color:#222;line-height:1.5}
a{color:#1a56db}
header.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background:#1f2937;color:#fff}
.brand{display:flex;align-items:center;gap:8px;font-weight:600;font-size:1.1em}
.brand .logo{font-size:1.4em}
main{max-width:980px;margin:24px auto;padding:0 16px}
footer{text-align:center;padding:24px;color:#666;font-size:.85em}
.hero{text-align:center;padding:36px 16px}
.hero h1{font-size:2em;margin-bottom:8px}
.hero .lead{color:#555;margin-bottom:24px}
.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-top:24px}
.card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:16px}
.card h3{margin:0 0 6px;font-size:1em}
.card p{margin:0;color:#555;font-size:.9em}
.warn{color:#a30}
.upload-section,.files-section,.device-link{background:#fff;padding:18px 22px;border-radius:8px;margin-bottom:18px;border:1px solid #e5e7eb}
form label{display:block;margin:10px 0;font-size:.9em;color:#444}
form label input[type=text],form label input[type=file]{display:block;width:100%;padding:8px;margin-top:4px;border:1px solid #d1d5db;border-radius:6px;font-size:.95em}
button{background:#1a56db;color:#fff;border:0;border-radius:6px;padding:9px 18px;font-size:.95em;cursor:pointer;margin-top:6px}
button:hover{background:#1d4ed8}
button.secondary{background:#6b7280}
button.danger{background:#dc2626}
table{width:100%;border-collapse:collapse;margin-top:10px}
th,td{padding:8px;text-align:left;border-bottom:1px solid #eee;font-size:.92em;vertical-align:top}
th{background:#f9fafb;color:#374151}
.hint{color:#666;font-size:.85em;margin-top:8px}
dialog{border:0;border-radius:10px;padding:20px;max-width:520px;width:95%;box-shadow:0 18px 40px rgba(0,0,0,.2)}
dialog h3{margin-top:0}
dialog .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.checkbox{display:flex;align-items:center;gap:6px}
#upload-status{margin-left:10px;font-size:.9em}
.status-ok{color:#059669}.status-err{color:#dc2626}
.tag{display:inline-block;background:#eef2ff;color:#3730a3;padding:2px 8px;border-radius:99px;font-size:.78em;margin-right:4px}
.tag.revoked{background:#fee2e2;color:#991b1b}
