/* ===== Tokens (cùng bộ màu với app desktop ui/style.css) ===== */
:root{
 color-scheme:dark;
 --bg:#0b1220;--surface:#111c2e;--surface-2:#0c1625;--surface-3:#1a2a40;--surface-hover:#22364f;
 --border:#24364d;--border-strong:#35506d;
 --text:#e6eef9;--text-2:#b4c4d8;--muted:#8fa4bf;
 --primary:#2dd4bf;--primary-hover:#5eead4;--on-primary:#042420;--accent:#5ee6d6;
 --danger:#f87191;--danger-bg:#3f1d29;--danger-border:#7c3550;--danger-text:#ffc2d0;
 --success:#4ade80;--success-bg:#12342a;--warning:#fde68a;--warning-bg:#3a3317;--focus:#5eead4;
 --radius:14px;--radius-md:10px;--radius-sm:8px;
 --mono:Consolas,'Cascadia Mono',ui-monospace,monospace;
 font:16px/1.6 'Segoe UI',system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);min-height:100vh;display:flex;flex-direction:column}
[hidden]{display:none!important}
a{color:var(--accent)}
a:hover{color:var(--primary-hover)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
h1{font-size:28px;line-height:1.25;margin:0 0 8px;font-weight:700}
h2{font-size:19px;margin:0 0 12px;font-weight:650}
p{margin:0 0 12px}
.muted{color:var(--muted)}
.mono{font-family:var(--mono)}

/* ===== Header ===== */
.site-header{background:#0e1726;border-bottom:1px solid var(--border)}
.header-row{max-width:1080px;margin:0 auto;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;font-weight:700;font-size:18px}
.brand:hover{color:var(--text)}
.logo{background:linear-gradient(140deg,#31ded2,#008f9e);color:#081925;font-weight:900;font-size:20px;width:38px;height:38px;border-radius:11px;display:grid;place-items:center}
.nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.nav a,.nav button{display:inline-flex;align-items:center;min-height:44px;padding:8px 14px;border-radius:var(--radius-sm);color:var(--text-2);text-decoration:none;font-weight:600;font-size:15px;background:none;border:0;cursor:pointer;font-family:inherit}
.nav a:hover,.nav button:hover{background:var(--surface-hover);color:var(--text)}
.nav a[aria-current=page]{color:var(--accent);background:var(--surface-3)}
.nav .who{color:var(--muted);font-size:14px;padding:0 6px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ===== Layout ===== */
main.wrap{flex:1;width:100%;max-width:1080px;margin:0 auto;padding:28px 16px 48px;display:flex;flex-direction:column;gap:20px}
main.wrap.narrow{max-width:480px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px}
.site-footer{border-top:1px solid var(--border);color:var(--muted);font-size:14px;text-align:center;padding:18px 16px}
.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.stack{display:flex;flex-direction:column;gap:20px}
.login-card{width:100%;max-width:480px;margin:0 auto}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ===== Hero / tải ===== */
.hero{text-align:center;padding:32px 22px}
.hero h1{font-size:34px}
.lead{font-size:18px;color:var(--text-2);max-width:640px;margin:0 auto 22px}
.download-box{display:flex;flex-direction:column;align-items:center;gap:8px}
.steps{list-style:none;margin:0;padding:0;display:grid;gap:16px}
.steps li{display:flex;gap:14px;align-items:flex-start}
.steps p{margin:4px 0 0;color:var(--text-2)}
.step-no{display:inline-grid;place-items:center;flex:0 0 auto;width:32px;height:32px;border-radius:50%;background:var(--primary);color:var(--on-primary);font-weight:800}

/* ===== Nút ===== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 18px;border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--surface-3);color:var(--text);font:inherit;font-weight:650;cursor:pointer;text-decoration:none}
.btn:hover{background:var(--surface-hover);color:var(--text)}
.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
.btn-primary:hover{background:var(--primary-hover);color:var(--on-primary)}
.btn-danger{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger-text)}
.btn-danger:hover{background:#56263a;color:var(--danger-text)}
.btn-sm{min-height:36px;padding:6px 12px;font-size:14px}
.btn-lg{min-height:56px;padding:14px 28px;font-size:18px}
.btn-block{width:100%}
.btn[aria-disabled=true],.btn:disabled{opacity:.6;cursor:not-allowed}

/* ===== Form ===== */
form{display:flex;flex-direction:column;gap:6px}
label{font-weight:600;font-size:15px;margin-top:8px}
input,select{width:100%;min-height:46px;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font:inherit}
input:focus{border-color:var(--primary)}
form .btn{margin-top:14px}
.msg{min-height:1.5em;margin:10px 0 0;font-weight:600}
.download-box .msg:empty,.card>.msg:empty{display:none}
.msg.error{color:var(--danger-text)}
.msg.ok{color:var(--success)}

/* ===== Key ===== */
.key-list{display:grid;gap:12px}
.key-item{border:1px solid var(--border);background:var(--surface-2);border-radius:var(--radius-md);padding:14px 16px;display:grid;gap:8px}
.key-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.key-code{font-family:var(--mono);font-size:19px;font-weight:700;letter-spacing:.5px;word-break:break-all}
.key-meta{display:flex;gap:16px;flex-wrap:wrap;color:var(--text-2);font-size:14.5px}
.key-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.key-actions input{width:90px;min-height:36px;padding:6px 10px}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;border-radius:999px;padding:3px 12px;border:1px solid}
.chip::before{content:'';width:8px;height:8px;border-radius:50%;background:currentColor}
.chip.ok{color:var(--success);background:var(--success-bg);border-color:#1f6b4d}
.chip.bad{color:var(--danger-text);background:var(--danger-bg);border-color:var(--danger-border)}
.chip.warn{color:var(--warning);background:var(--warning-bg);border-color:#6b5b1f}
.chip.muted{color:var(--muted);background:var(--surface-3);border-color:var(--border)}
.empty{color:var(--text-2);background:var(--surface-2);border:1px dashed var(--border-strong);border-radius:var(--radius-md);padding:16px;margin:0}
.new-key{border:2px solid var(--primary);background:#0f2f2c}

/* ===== Admin ===== */
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.toolbar input{max-width:340px}
.user-list{display:grid;gap:14px}
.user-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;display:grid;gap:12px}
.user-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.user-email{font-weight:700;font-size:17px;word-break:break-all}
.role{font-size:12px;font-weight:700;text-transform:uppercase;color:var(--accent);border:1px solid var(--border-strong);border-radius:6px;padding:1px 8px;margin-left:6px}
.issue-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 12px;align-items:end;border-top:1px solid var(--border);padding-top:12px}
.issue-form label{margin:0;font-size:14px;display:grid;gap:4px}
.issue-form .btn{margin:0}

@media (max-width:560px){
 h1{font-size:24px}
 .hero h1{font-size:28px}
 .card{padding:18px 16px}
 .nav{width:100%}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
