:root{font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:#17233d;background:#f4f8ff;line-height:1.55;--blue:#1677ff;--deep:#0d5bd7;--line:#dce8f8;--soft:#eef6ff;--muted:#71809b}*{box-sizing:border-box}body{margin:0;background:linear-gradient(135deg,#f8fbff 0,#edf5ff 100%);min-height:100vh}a{color:var(--blue);text-decoration:none}button,input,select,textarea{font:inherit}.drawer-toggle{display:none}.sidebar{position:fixed;inset:0 auto 0 0;width:252px;padding:24px 16px;background:linear-gradient(180deg,#0869e8,#0d4fbd);color:#fff;z-index:20;box-shadow:8px 0 30px #0d5bd724}.brand{display:flex;align-items:center;gap:12px;padding:4px 10px 24px;font-size:18px;font-weight:700}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#ffffff24}.side-caption{padding:10px 12px 6px;font-size:12px;color:#bcd8ff}.side-nav{display:grid;gap:6px}.side-nav a{display:flex;gap:11px;align-items:center;padding:11px 13px;color:#dcecff;border-radius:10px}.side-nav a:hover,.side-nav a.active{background:#ffffff1f;color:#fff}.side-bottom{position:absolute;left:16px;right:16px;bottom:22px}.app-main{margin-left:252px;min-height:100vh}.topbar{height:72px;padding:0 30px;display:flex;align-items:center;border-bottom:1px solid var(--line);background:#ffffffd9;backdrop-filter:blur(14px);position:sticky;top:0;z-index:10}.topbar h1{font-size:20px;margin:0}.topbar .spacer{flex:1}.identity{font-size:14px;color:var(--muted)}.content{max-width:1240px;margin:auto;padding:28px 30px 50px}.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;margin:0 0 20px;box-shadow:0 8px 28px #2468b50b}.card h2,.card h1{margin:0 0 18px}.page-intro{display:flex;align-items:flex-end;gap:18px;margin-bottom:22px}.page-intro h2{margin:0;font-size:25px}.page-intro p{margin:4px 0 0;color:var(--muted)}.page-intro .spacer{flex:1}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}.stat{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px}.stat b{display:block;font-size:28px;color:var(--deep)}.stat span{color:var(--muted);font-size:14px}label{display:block;font-size:14px;color:#42506a}input,select,textarea{width:100%;margin:6px 0 14px;padding:11px 12px;border:1px solid #cbd9ed;border-radius:10px;background:#fff;color:#17233d;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px #1677ff18}textarea{min-height:100px;resize:vertical}button,.btn{display:inline-block;border:0;border-radius:10px;padding:10px 16px;background:var(--blue);color:#fff;cursor:pointer;font-weight:600}.btn:hover,button:hover{background:var(--deep)}.btn.secondary{background:var(--soft);color:var(--deep)}.danger{background:#ef4444!important}.muted{color:var(--muted)}.ok,.error{padding:12px 15px;border-radius:10px;margin:0 0 18px}.ok{background:#eaf9f0;color:#167545}.error{background:#fff0f0;color:#c43d3d}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:680px}th,td{text-align:left;padding:13px 12px;border-bottom:1px solid #edf1f7;vertical-align:middle}th{font-size:13px;color:#6d7b93;background:#f8fbff}tr:last-child td{border-bottom:0}.inline{display:inline-flex;gap:6px;flex-wrap:wrap}.inline input{display:none}.inline button{padding:7px 11px;font-size:13px}.badge{display:inline-block;padding:4px 9px;border-radius:20px;background:#e8f3ff;color:#0869e8;font-size:12px}.badge.off{background:#f1f3f6;color:#7b8494}.empty{text-align:center;padding:35px;color:var(--muted)}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:min(430px,100%);background:#fff;border:1px solid var(--line);border-radius:20px;padding:34px;box-shadow:0 20px 60px #1d63b51c}.auth-card h1{margin:0 0 8px}.auth-links{display:flex;justify-content:space-between;margin-top:18px}.landing{max-width:820px;text-align:center}.landing h1{font-size:38px}.overlay{display:none}@media(max-width:820px){.sidebar{transform:translateX(-105%);transition:.25s}.drawer-toggle:checked~.sidebar{transform:none}.overlay{display:block;position:fixed;inset:0;background:#10274b66;z-index:15;opacity:0;pointer-events:none;transition:.25s}.drawer-toggle:checked~.overlay{opacity:1;pointer-events:auto}.app-main{margin-left:0}.topbar{height:62px;padding:0 16px}.menu-btn{display:grid;place-items:center;width:38px;height:38px;margin-right:10px;border-radius:10px;background:var(--soft);color:var(--deep);font-size:20px;cursor:pointer}.identity{display:none}.content{padding:20px 14px 35px}.page-intro{align-items:flex-start;flex-wrap:wrap}.page-intro .spacer{display:none}.stats{grid-template-columns:1fr}.card{padding:17px;border-radius:14px}.grid{grid-template-columns:1fr}table{min-width:620px}.auth-card{padding:25px}.landing h1{font-size:29px}}@media(min-width:821px){.menu-btn{display:none}}
/* Xiangyang-inspired soft creator UI */
:root{--primary:#ff6b8b;--primary-dark:#e5526f;--primary-soft:#fff0f3;--blue:#ff6b8b;--deep:#e5526f;--soft:#fff0f3;--bg:#f8fafc;--card:#fff;--text:#1e293b;--muted:#64748b;--border:#e2e8f0}
body{background:linear-gradient(145deg,#f8fafc,#eef2f7);color:var(--text);-webkit-font-smoothing:antialiased}
.sidebar{background:rgba(255,255,255,.94);border-right:1px solid var(--border);box-shadow:8px 0 30px rgba(15,23,42,.035)}
.brand{color:#1e293b}.side-bottom{color:#64748b}.theme-toggle,.logout-link{color:#64748b!important}
.brand-mark{background:linear-gradient(145deg,#ff85a0,#ff5e82)!important;box-shadow:0 8px 18px rgba(255,107,139,.25)!important}
.side-caption{color:#94a3b8}.side-nav a{border-radius:12px;color:#64748b}.side-nav a:hover{background:#fff5f7;color:var(--primary)}.side-nav a.active{background:var(--primary-soft);color:var(--primary);box-shadow:none}
.topbar{background:rgba(255,255,255,.82);backdrop-filter:blur(16px);border-bottom:1px solid rgba(226,232,240,.85)}
.content{max-width:1440px}.card,.stat{background:var(--card);border:1px solid rgba(15,23,42,.045);border-radius:16px;box-shadow:0 4px 24px rgba(15,23,42,.055)}
.card:hover{box-shadow:0 8px 30px rgba(15,23,42,.075)}
button,.btn{background:var(--primary);border-radius:12px;box-shadow:0 5px 14px rgba(255,107,139,.18)}button:hover,.btn:hover{background:var(--primary-dark);transform:translateY(-1px)}
button.secondary,.btn.secondary{background:#fff;color:var(--primary);border:1px solid #ffc3d0;box-shadow:none}button.danger,.btn.danger{background:#ef4444}
input,select,textarea{border:1.5px solid var(--border);border-radius:12px;background:#fff}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(255,107,139,.13)}
.badge{border-radius:999px;background:#ecfdf5;color:#10b981}.badge.off{background:#f1f5f9;color:#94a3b8}
table{border-radius:14px;overflow:hidden}thead{background:#f8fafc}th{color:#64748b}td,th{border-color:#eef2f7}
.auth-shell{background:linear-gradient(145deg,#f8fafc,#e2e8f0)}.auth-card{border:1px solid rgba(255,255,255,.8);border-radius:22px;box-shadow:0 22px 60px rgba(15,23,42,.10)}
.generated-email{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;margin:6px 0 14px;padding:11px 12px;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc;color:#64748b}.generated-email small{flex:none;padding:2px 8px;border-radius:999px;background:#fff0f3;color:#e5526f}.user-menu{position:relative}.user-menu summary{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none}.user-menu summary::-webkit-details-marker{display:none}.identity-avatar{width:42px;height:42px;border-radius:50%;object-fit:cover;background:#eef2f7;border:2px solid #fff;box-shadow:0 3px 12px #0f172a1c}.identity-fallback{display:grid;place-items:center;background:#ff6b8b;color:#fff}.user-menu nav{position:absolute;right:0;top:52px;display:grid;min-width:124px;padding:8px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 12px 30px #0f172a1f;z-index:30}.user-menu nav a{padding:9px 11px;border-radius:8px;color:#334155;white-space:nowrap}.user-menu nav a:hover{background:#fff0f3;color:#e5526f}.profile-card{max-width:760px}.profile-card button{width:100%}@media(max-width:820px){.user-menu .identity{display:none}}
