:root{
  --bg:#070b18; --bg2:#0b1226; --panel:rgba(20,28,54,.72); --panel2:rgba(28,38,70,.55);
  --line:rgba(124,155,255,.16); --line2:rgba(124,155,255,.28);
  --txt:#eaf0ff; --txt2:#aab4e0; --txt3:#7c87b8;
  --indigo:#7c9bff; --violet:#a78bfa; --teal:#5eead4; --gold:#fbbf24; --rose:#fca5a5;
  --grad:linear-gradient(120deg,#7c9bff,#a78bfa 55%,#5eead4);
  --shadow:0 18px 50px rgba(0,0,0,.45);
  --foot-bg:transparent;
  --brand-mark:url('/assets/logo-mark-light.png');
}
[data-theme="light"]{
  --bg:#f4f6fb; --bg2:#ffffff; --panel:rgba(255,255,255,.88); --panel2:rgba(255,255,255,.62);
  --line:rgba(99,102,241,.14); --line2:rgba(99,102,241,.3);
  --txt:#1b2233; --txt2:#4a5470; --txt3:#7a839c;
  --shadow:0 18px 46px rgba(30,40,80,.10);
  --foot-bg:rgba(255,255,255,.5);
  --brand-mark:url('/assets/logo-mark.png');
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;background:var(--bg);color:var(--txt);font-family:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}
body{background:
  radial-gradient(1100px 600px at 12% -8%,rgba(124,155,255,.18),transparent 60%),
  radial-gradient(900px 520px at 100% 0%,rgba(167,139,250,.16),transparent 55%),
  radial-gradient(800px 600px at 50% 120%,rgba(94,234,212,.12),transparent 60%),var(--bg);min-height:100vh}
#app{max-width:1080px;margin:0 auto;padding:0 14px;display:flex;flex-direction:column;min-height:100vh}
.brand-bar{display:flex;align-items:center;justify-content:space-between;padding:18px 4px 12px;position:sticky;top:0;z-index:20;backdrop-filter:blur(8px);
  background:linear-gradient(180deg,rgba(7,11,24,.92),rgba(7,11,24,0))}
.brand-left{display:flex;align-items:center;gap:12px}
.logo-mark{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-weight:800;font-size:20px;color:#fff;overflow:hidden;background:var(--brand-mark) center/contain no-repeat;box-shadow:none}
.logo-mark img{width:100%;height:100%;object-fit:contain;border-radius:inherit;display:block}
.logo-mark.has-logo{background-image:none}
.brand-txt b{font-size:18px;letter-spacing:.06em}
.brand-txt small{display:block;color:var(--txt3);font-size:11px;letter-spacing:.12em;margin-top:2px}
.brand-txt b,.brand-txt small{white-space:nowrap}
.brand-right a{color:var(--txt2);font-size:13px;text-decoration:none;border:1px solid var(--line);padding:7px 14px;border-radius:999px;transition:.2s}
.brand-right a:hover{color:#fff;border-color:var(--line2);background:var(--panel2)}
.brand-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
@media(max-width:768px){.brand-bar{gap:8px}.brand-right{width:100%;justify-content:flex-start;margin-top:8px;gap:8px}}
.brand-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
@media(max-width:768px){.brand-bar{gap:8px}.brand-right{width:100%;justify-content:flex-start;margin-top:8px;gap:8px}}
#view{flex:1;padding:8px 0 20px}
.app-foot{text-align:center;color:var(--txt3);font-size:12px;padding:18px 10px 26px;letter-spacing:.04em;line-height:1.7;word-break:break-word;overflow-wrap:anywhere}
.app-foot a{color:var(--indigo);text-decoration:underline;text-underline-offset:2px;font-weight:600}
.app-foot a:hover{color:var(--violet)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);backdrop-filter:blur(14px);padding:26px}
.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.btn{cursor:pointer;border:none;border-radius:14px;padding:13px 22px;font-size:15px;font-weight:700;color:#fff;background:var(--grad);
  box-shadow:0 12px 30px rgba(124,155,255,.35);transition:.18s;letter-spacing:.04em}
.btn:hover{transform:translateY(-2px);box-shadow:0 16px 38px rgba(124,155,255,.5)}
.btn:active{transform:translateY(0)}
.btn.ghost{background:var(--panel2);border:1px solid var(--line2);color:var(--txt);box-shadow:none}
.btn.ghost:hover{background:rgba(40,52,92,.8)}
.btn.sm{padding:9px 14px;font-size:13px;border-radius:11px}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.center{display:flex;align-items:center;justify-content:center;min-height:62vh}
.auth-card{width:min(420px,92vw)}
.auth-tabs{display:flex;gap:8px;margin-bottom:18px;background:var(--panel2);padding:5px;border-radius:14px;border:1px solid var(--line)}
.auth-tabs button{flex:1;border:none;background:transparent;color:var(--txt2);font-size:14px;font-weight:600;padding:10px;border-radius:10px;cursor:pointer;transition:.18s}
.auth-tabs button.active{background:var(--grad);color:#fff;box-shadow:0 8px 18px rgba(124,155,255,.4)}
.field{margin-bottom:15px}
.field label{display:block;font-size:13px;color:var(--txt2);margin-bottom:7px;letter-spacing:.03em}
.field input{width:100%;padding:13px 14px;border-radius:13px;border:1px solid var(--line);background:var(--bg2);color:var(--txt);font-size:15px;outline:none;transition:.18s}
.field input:focus{border-color:var(--line2);box-shadow:0 0 0 3px rgba(124,155,255,.16)}
.field .hint{font-size:12px;color:var(--txt3);margin-top:6px}
.msg{font-size:13px;padding:10px 13px;border-radius:11px;margin:4px 0 14px;display:none}
.msg.err{display:block;background:rgba(252,165,165,.12);border:1px solid rgba(252,165,165,.3);color:var(--rose)}
.msg.ok{display:block;background:rgba(94,234,212,.12);border:1px solid rgba(94,234,212,.3);color:var(--teal)}
.welcome{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.welcome h2{margin:0;font-size:22px}
.welcome .sub{color:var(--txt3);font-size:13px;margin-top:4px}
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:6px 0 20px}
.stat{background:var(--panel2);border:1px solid var(--line);border-radius:16px;padding:16px}
.stat b{display:block;font-size:26px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat span{font-size:12px;color:var(--txt3)}
.list{display:flex;flex-direction:column;gap:12px}
.item{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--panel2);border:1px solid var(--line);border-radius:16px;padding:15px 17px}
.item .meta b{font-size:15px}
.item .meta div{font-size:12px;color:var(--txt3);margin-top:4px}
.level-tag{font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;background:rgba(124,155,255,.16);color:var(--indigo);border:1px solid var(--line2)}
.empty{text-align:center;color:var(--txt3);padding:40px 10px;font-size:14px}
.empty .btn{margin-top:14px}
/* Phase 2：量表中心（通用模块入口） */
.mod-center{margin:18px 0}
.mod-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:6px}
.mod-card{display:flex;align-items:center;gap:8px;padding:14px 16px;border-radius:14px;background:var(--bg2);border:1px solid var(--line2);color:var(--txt);font-weight:700;font-size:14px;transition:all .15s ease}
.mod-card:hover{border-color:var(--indigo);transform:translateY(-2px);box-shadow:0 8px 22px rgba(124,155,255,.18)}
@media(max-width:640px){.stat-row{grid-template-columns:repeat(3,1fr);gap:8px}.stat{padding:12px}.stat b{font-size:21px}}

/* 需求 3：资料自助编辑弹窗 */
.modal-mask{position:fixed;inset:0;background:rgba(4,7,16,.7);display:flex;align-items:center;justify-content:center;z-index:90;backdrop-filter:blur(4px);padding:14px}
.modal{background:#101736;border:1px solid var(--line2);border-radius:18px;padding:22px;width:min(560px,94vw);max-height:88vh;overflow:auto;box-shadow:var(--shadow)}
[data-theme="light"] .modal{background:#ffffff}
.modal h3{margin:0 0 14px;font-size:18px}
.modal .mini{font-size:12.5px}
.meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0 14px}
.meta-grid .field{margin-bottom:12px}
.field select{width:100%;padding:13px 14px;border-radius:13px;border:1px solid var(--line);background:var(--bg2);color:var(--txt);font-size:15px;outline:none;transition:.18s}
.field select:focus{border-color:var(--line2);box-shadow:0 0 0 3px rgba(124,155,255,.16)}
.section-title{font-size:15px;font-weight:700;color:var(--txt2);letter-spacing:.04em;margin:0 0 10px}
@media(max-width:640px){.modal{padding:16px;border-radius:14px}.meta-grid{grid-template-columns:1fr}}

/* ===== 需求 1 / 2：测评次数权限卡片 · 需求 3：共享评估资料卡片 ===== */
.uq-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.uq-head .sub{margin-top:4px}
.uq-big{display:flex;align-items:baseline;gap:4px}
.uq-big b{font-size:30px;font-weight:800;color:var(--teal);letter-spacing:.02em;line-height:1}
.uq-big span{font-size:13px;color:var(--txt3)}
.uq-list{display:flex;flex-direction:column;gap:8px}
.uq-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 13px;border-radius:12px;
  background:var(--panel2);border:1px solid var(--line);font-size:13px;color:var(--txt2)}
.uq-row .uq-num{font-weight:700;color:var(--teal)}
.uq-row .uq-num.off{color:var(--txt3);font-weight:600}
.uq-tip{margin-top:10px;padding:10px 13px;border-radius:12px;border:1px solid rgba(248,113,113,.35);
  background:rgba(248,113,113,.12);color:var(--rose);font-size:12.5px;line-height:1.7}
@media(max-width:640px){.uq-head{flex-direction:column;align-items:flex-start;gap:8px}.uq-big b{font-size:26px}}
