:root{--bg: #0f172a;--card: #1e293b;--card-2: #334155;--text: #f1f5f9;--muted: #94a3b8;--accent: #e6060f;--accent-2: #3b82f6;--ok: #22c55e;--danger: #ef4444;--warn: #f59e0b;--radius: 14px}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.app{max-width:640px;margin:0 auto;padding:16px 16px 96px}h1,h2,h3{margin:0 0 12px}.card{background:var(--card);border-radius:var(--radius);padding:16px;margin-bottom:14px}.label{display:block;font-size:13px;color:var(--muted);margin:12px 0 6px}input,select,textarea{width:100%;padding:12px 14px;border-radius:10px;border:1px solid var(--card-2);background:#0b1220;color:var(--text);font-size:16px}button{cursor:pointer;border:none;border-radius:12px;padding:14px 18px;font-size:16px;font-weight:600;color:#fff;background:var(--accent);width:100%}button.secondary{background:var(--card-2)}button.blue{background:var(--accent-2)}button.danger{background:var(--danger)}button:disabled{opacity:.5}.row{display:flex;gap:10px}.row>*{flex:1}.muted{color:var(--muted);font-size:13px}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.badge.active{background:#22c55e26;color:var(--ok)}.badge.pending{background:#f59e0b26;color:var(--warn)}.badge.expired{background:#94a3b826;color:var(--muted)}.badge.void{background:#ef444426;color:var(--danger)}.list-item{border-bottom:1px solid var(--card-2);padding:12px 0}.list-item:last-child{border-bottom:none}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.stat{background:var(--card);border-radius:var(--radius);padding:14px}.stat .num{font-size:26px;font-weight:700}.stat .lbl{color:var(--muted);font-size:13px}.tabbar{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--card);border-top:1px solid var(--card-2)}.tabbar a{flex:1;text-align:center;padding:12px 4px;color:var(--muted);text-decoration:none;font-size:12px}.tabbar a.active{color:var(--accent)}.tabbar .icon{font-size:20px;display:block}.toast{position:fixed;left:50%;bottom:80px;transform:translate(-50%);background:var(--card-2);padding:12px 18px;border-radius:12px;font-size:14px;z-index:50}.toast.ok{background:var(--ok)}.toast.err{background:var(--danger)}#reader{border-radius:var(--radius);overflow:hidden}.center{text-align:center;padding:40px 16px}
