:root{color-scheme:light;--ink:#304f5c;--muted:#66828a;--line:#c7e0d9;--green:#367766;--danger:#a74443}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Roboto,Arial,"Microsoft YaHei",sans-serif;color:var(--ink)}
body{min-height:100vh;min-height:100dvh;background:linear-gradient(90deg,#fff8eb,#e8f5f2)}
[hidden]{display:none!important}
button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}
button:disabled{cursor:wait;opacity:.6}a{color:var(--green);text-underline-offset:4px}button:focus-visible,a:focus-visible{outline:3px solid #7bae9e;outline-offset:4px}
.login-shell{display:grid;place-items:center;min-height:100vh;min-height:100dvh;padding:32px 20px}
.login-card{width:min(100%,460px);background:#ffffffed;border:2px solid var(--line);border-radius:34px;padding:36px;box-shadow:0 8px 18px #314a491c;text-align:center}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.12em;color:var(--green);margin:0 0 12px}
h1{margin:0;font-size:32px;letter-spacing:-.025em}h2{margin:0;font-size:24px}.subtitle{color:var(--muted);line-height:1.7;margin:12px 0 24px}
.mascots{display:flex;justify-content:center;gap:8px;margin:22px 0 24px}.mascots img{height:64px;width:64px;object-fit:contain}
form{text-align:left}.field{display:block;margin:0 0 18px;font-size:14px;font-weight:700}.field input,.field select,.search-field{display:block;width:100%;margin-top:8px;border:1px solid var(--line);border-radius:14px;background:#fafdfb;padding:13px 14px;color:var(--ink);outline:none}
input:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 3px #36776614}.password-wrap{position:relative}.password-wrap input{padding-right:65px}.password-toggle{position:absolute;right:10px;top:8px;height:42px;border:0;background:none;color:var(--muted);font-size:13px}
.primary,.secondary,.danger{border-radius:14px;padding:12px 20px;font-weight:700;border:1px solid transparent}.primary{background:var(--green);color:#fff}.primary:hover{background:#2d6556}.secondary{background:#fff;border-color:var(--line);color:var(--ink)}.danger{color:var(--danger);background:#fff2f1;border-color:#efd6d2}.wide{width:100%}
.hint{font-size:12px;line-height:1.7;color:var(--muted);margin:18px 0 0}.error{color:var(--danger);font-size:14px;line-height:1.6;min-height:23px;margin:0 0 12px}.success{color:var(--green)}.login-footer{margin-top:22px;font-size:13px}
.admin-shell{max-width:1240px;margin:auto;padding:32px 28px 48px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:32px}.brand{display:flex;align-items:center;gap:12px}.brand img{width:48px;height:48px}.brand strong{display:block;font-size:20px}.brand small{display:block;margin-top:4px;color:var(--muted)}.top-actions{display:flex;align-items:center;gap:16px;font-size:14px}
.page-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.page-title p{margin:8px 0 0;color:var(--muted);font-size:14px;line-height:1.7}.page-title>.primary{flex-shrink:0;white-space:nowrap}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:24px}.stat,.panel{background:#ffffffeb;border:1px solid var(--line);border-radius:24px;box-shadow:0 4px 12px #314a4909}.stat{padding:22px 24px}.stat span{display:block;font-size:14px;color:var(--muted)}.stat strong{display:block;font-size:34px;margin-top:8px}.stat:nth-child(2) strong{color:var(--green)}.stat:nth-child(3) strong{color:#b47f49}
.panel{padding:24px}.filters{display:flex;gap:12px;align-items:center;margin-bottom:20px}.filters input{margin:0;flex:1}.filters select{border:1px solid var(--line);background:#fafdfb;border-radius:14px;padding:13px;color:var(--ink)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:14px}th{text-align:left;font-size:12px;color:var(--muted);font-weight:500;padding:12px 14px;border-bottom:1px solid var(--line)}td{padding:19px 14px;border-bottom:1px solid #e9f0ed}td:first-child strong{display:block}td:first-child small{display:block;color:var(--muted);margin-top:5px}.badge{display:inline-flex;align-items:center;gap:6px;border-radius:30px;font-size:12px;padding:5px 10px;background:#ebf5ee;color:var(--green)}.badge::before{content:'';width:6px;height:6px;background:currentColor;border-radius:50%}.badge.disabled{color:#98642c;background:#fcf2e4}.row-actions{display:flex;gap:6px}.row-actions button{border:0;background:none;color:var(--green);padding:6px;font-size:13px}.row-actions button[data-action=delete]{color:var(--danger)}.empty{text-align:center;white-space:normal;color:var(--muted);padding:50px 16px}.pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:20px;font-size:13px;color:var(--muted)}.pagination div{display:flex;gap:8px}.pagination button{padding:8px 14px;border-radius:10px}
dialog{border:1px solid var(--line);border-radius:26px;padding:28px;max-width:460px;width:calc(100% - 32px);color:var(--ink);box-shadow:0 20px 60px #304f5c30}dialog::backdrop{background:#243e4c66;backdrop-filter:blur(3px)}dialog h2{font-size:22px;margin-bottom:8px}dialog .subtitle{font-size:13px;margin:0 0 22px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}
@media(max-width:640px){.login-card{padding:28px 24px;border-radius:26px}h1{font-size:28px}.mascots img{width:54px;height:54px}.admin-shell{padding:20px 16px}.topbar{align-items:flex-start}.brand strong{font-size:16px}.top-actions{gap:8px}.top-actions span{display:none}.page-title{align-items:flex-start}.page-title h1{font-size:25px}.stats{gap:8px}.stat{padding:16px 12px;border-radius:18px}.stat strong{font-size:28px}.stat span{font-size:12px}.panel{padding:14px;border-radius:20px}.filters{flex-wrap:wrap}.filters input{flex-basis:100%}.filters select{flex:1}.row-actions{gap:2px}}
@media(max-height:520px) and (orientation:landscape){.login-shell{padding:16px}.login-card{width:600px;padding:20px 28px}.login-card .mascots{display:none}.login-card .subtitle{margin:8px 0 14px}.login-card .field{margin-bottom:10px}.login-card .hint{margin-top:10px}.login-footer{margin-top:12px}}
