:root{color-scheme:light;--ink:#17324d;--muted:#66788a;--accent:#5a52d5;--line:#dce5ed;--bg:#f4f7fb;--danger:#b42318}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif}.site-header{display:flex;align-items:center;justify-content:space-between;padding:1rem max(1rem,calc((100vw - 960px)/2));background:#fff;border-bottom:1px solid var(--line)}.brand{font-size:1.2rem;font-weight:800;text-decoration:none;color:var(--ink)}nav{display:flex;gap:1rem}a{color:var(--accent)}.page-shell{width:min(960px,calc(100% - 2rem));margin:2rem auto;min-height:70vh}.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:1.5rem;box-shadow:0 8px 24px #17324d0d}.narrow{max-width:520px;margin:auto}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem}form{display:grid;gap:1rem}label{display:grid;gap:.35rem;font-weight:650}input{width:100%;padding:.7rem .8rem;border:1px solid #aab8c5;border-radius:8px;font:inherit}button,.button{display:inline-block;border:0;border-radius:8px;padding:.7rem 1rem;background:var(--accent);color:#fff;font:inherit;font-weight:700;text-decoration:none;cursor:pointer}.button{margin:.25rem .5rem .25rem 0}.secondary{background:#e9e7ff;color:#3730a3}.danger{background:var(--danger)}.logout{margin-top:1.5rem}.banner{margin:0 0 1rem;padding:.8rem 1rem;border-radius:8px}.banner--success{background:#dcfae6;color:#075d38}.banner--error{background:#fee4e2;color:#8a1c13}.field-error{color:var(--danger);font-size:.9rem}.muted,small,.empty{color:var(--muted)}.qr-card{text-align:center}.qr-card img{display:block;width:clamp(180px,56vw,240px);max-width:100%;margin:1rem auto}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{padding:.75rem;text-align:left;border-bottom:1px solid var(--line)}.pager{justify-content:center;margin-top:1rem}.placeholder-notice{border:2px solid #f79009;background:#fffaeb;padding:1rem;font-weight:700}footer{display:flex;justify-content:center;gap:1rem;padding:2rem}@media(max-width:600px){.site-header{align-items:flex-start;gap:.75rem}.site-header nav{flex-wrap:wrap}.page-shell{margin:1rem auto}.card{padding:1rem}}
