/* 口腔数据中台 · 员工工作台（v3）设计系统：参考 iOS 的分组列表、圆角卡片、半透明侧栏。只做电脑端。 */
:root{
  --bg:#F2F2F7;--card:#FFFFFF;--card-2:#F7F7FA;--ink:#1C1C1E;--ink-2:#3A3A3C;--muted:#8E8E93;--line:#E5E5EA;--line-2:#D1D1D6;
  --blue:#007AFF;--blue-soft:#E8F1FF;--green:#34C759;--green-soft:#E6F8EB;--orange:#FF9500;--orange-soft:#FFF3E0;--red:#FF3B30;--red-soft:#FFEBEA;--purple:#AF52DE;--purple-soft:#F5EAFB;--teal:#30B0C7;
  --side:248px;--side-mini:72px;--radius:14px;--radius-s:10px;--shadow:0 1px 2px rgba(0,0,0,.04),0 6px 24px rgba(0,0,0,.05);
  font:14px/1.5 -apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg);
  -webkit-font-smoothing:antialiased;
}
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;height:100%}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--blue);text-decoration:none}
:focus-visible{outline:3px solid rgba(0,122,255,.35);outline-offset:1px;border-radius:8px}
[hidden]{display:none!important}

/* ---------- 外壳 ---------- */
.shell{display:grid;grid-template-columns:var(--side) 1fr;min-height:100vh;transition:grid-template-columns .2s ease}
.shell.mini{grid-template-columns:var(--side-mini) 1fr}
.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:14px 12px;background:rgba(249,249,251,.86);backdrop-filter:saturate(180%) blur(20px);border-right:1px solid var(--line);overflow:hidden}
.brand{display:flex;align-items:center;gap:10px;padding:6px 8px 18px;white-space:nowrap}
.brand-mark{width:32px;height:32px;border-radius:9px;background:linear-gradient(160deg,#3D9BFF,#0062E0);display:grid;place-items:center;color:#fff;flex:none}
.brand-mark svg{width:18px;height:18px}
.brand b{font-size:16px;letter-spacing:.01em}
.nav{display:flex;flex-direction:column;gap:2px;flex:1}
.nav-group{font-size:12px;color:var(--muted);padding:14px 10px 6px;white-space:nowrap}
.nav a{display:flex;align-items:center;gap:11px;height:38px;padding:0 10px;border-radius:10px;color:var(--ink);white-space:nowrap}
.nav a:hover{background:rgba(0,0,0,.04)}
.nav a.on{background:var(--blue);color:#fff}
.nav a .ico{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;flex:none}
.nav a .ico svg{width:16px;height:16px}
.nav a.on .ico{background:rgba(255,255,255,.2)!important;color:#fff!important}
.nav a .count{margin-left:auto;background:var(--red);color:#fff;font-size:11px;font-weight:600;border-radius:999px;padding:0 7px;line-height:18px}
.nav a.on .count{background:#fff;color:var(--blue)}
.side-foot{border-top:1px solid var(--line);padding-top:10px;display:flex;flex-direction:column;gap:2px}
.me{display:flex;align-items:center;gap:10px;padding:8px 10px;white-space:nowrap}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-weight:600;flex:none;font-size:13px}
.me small{display:block;color:var(--muted);font-size:12px}
.icon-btn{display:flex;align-items:center;gap:11px;height:36px;padding:0 10px;border:0;background:none;border-radius:10px;color:var(--ink-2);white-space:nowrap;width:100%}
.icon-btn:hover{background:rgba(0,0,0,.04)}
.icon-btn svg{width:18px;height:18px;flex:none;margin:0 4px}
.shell.mini .brand b,.shell.mini .nav-group,.shell.mini .nav a span:not(.ico),.shell.mini .nav a .count,.shell.mini .me div,.shell.mini .icon-btn span{display:none}
.shell.mini .nav a,.shell.mini .icon-btn,.shell.mini .me{justify-content:center;padding:0}
.shell.mini .brand{justify-content:center;padding-left:0;padding-right:0}

.main{min-width:0;padding:28px 36px 60px}
.page{max-width:1240px;margin:0 auto}
.head{display:flex;align-items:flex-end;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.head h1{font-size:30px;line-height:1.15;margin:0;letter-spacing:-.02em;font-weight:700}
.head p{margin:6px 0 0;color:var(--muted)}
.head .sp{flex:1}

/* ---------- 基础组件 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 14px;border-radius:9px;border:0;background:var(--card);color:var(--blue);font-weight:500;box-shadow:inset 0 0 0 1px var(--line);white-space:nowrap}
.btn:hover{background:#FAFAFC}
.btn.primary{background:var(--blue);color:#fff;box-shadow:none}
.btn.primary:hover{background:#0A6FE6}
.btn.danger{color:var(--red)}
.btn.ghost{box-shadow:none;background:transparent}
.btn.small{height:28px;padding:0 10px;font-size:13px;border-radius:8px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn svg{width:15px;height:15px}

.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow)}
.card.pad{padding:18px 20px}
.card h2{font-size:17px;margin:0;font-weight:600}
.card-head{display:flex;align-items:center;gap:10px;padding:16px 20px 10px}
.card-head .sp{flex:1}
.card-head small{color:var(--muted)}

.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.stat{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;border:0;text-align:left;display:block;width:100%}
button.stat:hover{box-shadow:var(--shadow),inset 0 0 0 2px var(--blue-soft)}
.stat.on{box-shadow:var(--shadow),inset 0 0 0 2px var(--blue)}
.stat .k{color:var(--muted);font-size:13px;display:flex;align-items:center;gap:6px}
.stat .k i{width:8px;height:8px;border-radius:50%;display:inline-block}
.stat .v{font-size:30px;font-weight:700;letter-spacing:-.02em;margin-top:4px;font-variant-numeric:tabular-nums}
.stat .v small{font-size:14px;color:var(--muted);font-weight:500;margin-left:3px}

.seg{display:inline-flex;background:#E9E9EE;border-radius:9px;padding:2px;gap:2px}
.seg button{border:0;background:transparent;height:28px;padding:0 12px;border-radius:7px;font-size:13px;color:var(--ink-2);white-space:nowrap}
.seg button.on{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.12);color:var(--ink);font-weight:500}

.search{display:flex;align-items:center;gap:8px;background:#E9E9EE;border-radius:10px;height:34px;padding:0 10px;min-width:240px}
.search svg{width:15px;height:15px;color:var(--muted)}
.search input{border:0;background:transparent;outline:none;flex:1;min-width:0}
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:0 20px 12px}
.toolbar .sp{flex:1}
.select{height:34px;border-radius:9px;border:0;background:#E9E9EE;padding:0 10px}

.badge{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:6px;font-size:12px;font-weight:500;background:#EFEFF4;color:var(--ink-2);white-space:nowrap}
.badge.blue{background:var(--blue-soft);color:var(--blue)}.badge.green{background:var(--green-soft);color:#1E8E3E}.badge.orange{background:var(--orange-soft);color:#B76A00}.badge.red{background:var(--red-soft);color:#D70015}.badge.purple{background:var(--purple-soft);color:#8E3AB8}

/* 列表行（iOS 分组列表） */
.rows{border-top:1px solid var(--line)}
.row{display:grid;grid-template-columns:minmax(150px,1.3fr) minmax(130px,1fr) minmax(120px,1fr) minmax(130px,1fr) 110px;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid var(--line);background:none;border-left:0;border-right:0;border-top:0;width:100%;text-align:left;color:inherit}
.row:last-child{border-bottom:0}
button.row:hover{background:#FAFAFC}
.row .t{font-weight:600}
.row .s{color:var(--muted);font-size:12.5px;margin-top:2px}
.row .end{text-align:right}
.rows-head{display:grid;grid-template-columns:inherit;padding:8px 20px;color:var(--muted);font-size:12px}
.empty{padding:48px 20px;text-align:center;color:var(--muted)}
.empty b{display:block;color:var(--ink);font-size:16px;margin-bottom:4px}
.pager{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px 20px;color:var(--muted);font-size:13px}

/* 表格（管理页） */
.table-wrap{overflow-x:auto}
table.t{width:100%;border-collapse:collapse;min-width:720px}
table.t th{font-size:12px;color:var(--muted);font-weight:500;text-align:left;padding:8px 14px;border-bottom:1px solid var(--line)}
table.t td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle}
table.t tr:last-child td{border-bottom:0}
table.t tr.click{cursor:pointer}
table.t tr.click:hover td{background:#FAFAFC}
table.t td.num{font-variant-numeric:tabular-nums}

/* ---------- 右侧详情面板 ---------- */
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.18);z-index:40;opacity:0;transition:opacity .18s}
.scrim.on{opacity:1}
.panel{position:fixed;top:0;right:0;bottom:0;width:min(620px,100vw);background:var(--bg);z-index:41;box-shadow:-10px 0 40px rgba(0,0,0,.12);transform:translateX(100%);transition:transform .22s ease;display:flex;flex-direction:column}
.panel.on{transform:none}
.panel-top{display:flex;align-items:center;gap:10px;padding:14px 18px;background:rgba(249,249,251,.92);backdrop-filter:blur(20px);border-bottom:1px solid var(--line)}
.panel-top .sp{flex:1}
.panel-body{flex:1;overflow:auto;padding:18px}
.who{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.who .avatar{width:48px;height:48px;font-size:18px}
.who h2{font-size:22px;margin:0}
.who .s{color:var(--muted);margin-top:2px}
.kv{display:grid;grid-template-columns:96px 1fr;gap:0;font-size:14px}
.kv div{padding:10px 16px;border-bottom:1px solid var(--line)}
.kv div:nth-child(odd){color:var(--muted)}
.kv div:nth-last-child(-n+2){border-bottom:0}
.section-title{font-size:13px;color:var(--muted);margin:18px 4px 8px;display:flex;align-items:center;gap:8px}
.section-title .sp{flex:1}

/* 时间线 */
.tl{padding:6px 16px}
.tl-item{display:grid;grid-template-columns:28px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.tl-item:last-child{border-bottom:0}
.tl-dot{width:28px;height:28px;border-radius:50%;display:grid;place-items:center}
.tl-dot svg{width:14px;height:14px}
.tl-item .t{font-weight:500}
.tl-item .s{color:var(--muted);font-size:12.5px}
.tl-item .note{margin-top:4px;white-space:pre-wrap;color:var(--ink-2)}

/* 回访输入 */
.composer{padding:16px}
.composer label.l{display:block;font-size:13px;color:var(--muted);margin:12px 0 6px}
.composer label.l:first-child{margin-top:0}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{height:32px;padding:0 13px;border-radius:999px;border:0;background:#EFEFF4;color:var(--ink);font-size:13.5px}
.chip:hover{background:#E5E5EA}
.chip.on{background:var(--blue);color:#fff}
.chip.suggest{box-shadow:inset 0 0 0 2px var(--blue)}
textarea.note{width:100%;min-height:110px;border:0;border-radius:10px;background:#F2F2F7;padding:10px 12px;resize:vertical;outline:none;line-height:1.6}
textarea.note:focus{box-shadow:0 0 0 3px rgba(0,122,255,.2)}
.drop{margin-top:10px;border:1.5px dashed var(--line-2);border-radius:12px;padding:12px 14px;display:flex;align-items:center;gap:12px;color:var(--muted);background:#FBFBFD}
.drop.over{border-color:var(--blue);background:var(--blue-soft);color:var(--blue)}
.drop .ai{width:34px;height:34px;border-radius:10px;background:linear-gradient(140deg,#AF52DE,#5E5CE6);color:#fff;display:grid;place-items:center;flex:none}
.drop .ai svg{width:18px;height:18px}
.drop .txt{flex:1;font-size:13px;line-height:1.5}
.drop .txt b{color:var(--ink);font-weight:500;display:block}
.drop.busy .ai{animation:pulse 1.1s infinite}
@keyframes pulse{50%{opacity:.5}}
.ai-result{margin-top:10px;background:var(--purple-soft);border-radius:12px;padding:10px 14px;font-size:13px;color:#5B2A78}
.ai-result b{color:#3D1B52}
.composer-foot{display:flex;align-items:center;gap:10px;margin-top:14px}
.composer-foot .sp{flex:1}
.next-line{font-size:13px;color:var(--muted)}
.next-line input{height:30px;border-radius:8px;border:0;background:#F2F2F7;padding:0 8px;margin-left:6px}
.lead-pick{display:flex;gap:6px;flex-wrap:wrap}

/* 表单 */
.form{display:grid;gap:14px}
.field{display:grid;gap:6px}
.field>span{font-size:13px;color:var(--muted)}
.field input,.field select,.field textarea{height:38px;border-radius:10px;border:0;background:#F2F2F7;padding:0 12px;outline:none}
.field textarea{height:auto;min-height:90px;padding:10px 12px}
.field input:focus,.field select:focus,.field textarea:focus{box-shadow:0 0 0 3px rgba(0,122,255,.2)}
.field small{color:var(--muted);font-size:12px}

/* 模态 */
dialog.sheet{border:0;padding:0;border-radius:16px;width:min(520px,calc(100vw - 32px));box-shadow:0 20px 60px rgba(0,0,0,.25)}
dialog.sheet::backdrop{background:rgba(0,0,0,.25)}
.sheet-body{padding:20px 22px}
.sheet-body h3{margin:0 0 4px;font-size:18px}
.sheet-body p.muted{margin:0 0 14px;color:var(--muted)}
.sheet-foot{display:flex;justify-content:flex-end;gap:10px;padding:12px 22px 18px}

/* 提示 */
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(20px);background:rgba(28,28,30,.92);color:#fff;padding:10px 18px;border-radius:12px;font-size:14px;opacity:0;transition:.2s;z-index:60;pointer-events:none;max-width:80vw}
.toast.on{opacity:1;transform:translateX(-50%)}
.toast.err{background:rgba(215,0,21,.95)}
.notice{border-radius:12px;padding:10px 14px;font-size:13px;background:var(--orange-soft);color:#8A5300}
.notice.blue{background:var(--blue-soft);color:#0B4FA8}
.muted{color:var(--muted)}
.mono{font-variant-numeric:tabular-nums}

/* 登录 */
.login{min-height:100vh;display:grid;place-items:center;padding:24px}
.login-card{width:min(380px,100%);background:var(--card);border-radius:20px;box-shadow:var(--shadow);padding:30px 28px}
.login-card .brand{padding:0 0 18px}
.login-card h1{font-size:24px;margin:0 0 4px}
.login-card p{margin:0 0 20px;color:var(--muted)}
.login-card .btn{width:100%;height:40px;margin-top:6px}
.err-text{color:var(--red);font-size:13px;min-height:18px}

.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.bar{height:8px;background:#EFEFF4;border-radius:4px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--blue);border-radius:4px}
.legend-row{display:grid;grid-template-columns:110px 1fr 56px;align-items:center;gap:10px;padding:7px 0}
.skeleton{height:14px;border-radius:7px;background:linear-gradient(90deg,#EEE,#F6F6F6,#EEE);background-size:200% 100%;animation:sk 1.2s infinite}
@keyframes sk{to{background-position:-200% 0}}
@media (max-width:1100px){.stats{grid-template-columns:repeat(2,1fr)}.grid3{grid-template-columns:1fr 1fr}.main{padding:22px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* iOS 开关 */
.switch{appearance:none;width:51px;height:31px;border-radius:999px;background:#E9E9EA;position:relative;cursor:pointer;transition:background .2s;flex:none;margin:0}
.switch::after{content:'';position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 4px rgba(0,0,0,.2);transition:transform .2s}
.switch:checked{background:#34C759}
.switch:checked::after{transform:translateX(20px)}

/* 排班表 */
table.roster{min-width:0;border-collapse:separate;border-spacing:0}
table.roster th.day{text-align:center;padding:6px 0;min-width:34px;font-size:11px;line-height:1.3}
table.roster th.we{color:var(--red)}
table.roster td.cell{text-align:center;padding:0;height:34px;min-width:34px;font-size:12px;cursor:pointer;user-select:none;border-left:1px solid #F2F2F7}
table.roster td.cell.on{background:var(--blue-soft);color:var(--blue);font-weight:600}
table.roster td.cell.off{background:#F7F7F9;color:var(--muted)}
table.roster td.cell.none{color:transparent}
table.roster td.cell:hover{box-shadow:inset 0 0 0 2px var(--blue)}

/* =====================================================================
   iOS 27 风格（Liquid Glass 液态玻璃 · 2026 版细化）
   - 半透明玻璃材质：背景模糊 + 饱和度提升 + 边缘高光 + 柔和投影
   - 侧栏、详情面板、弹窗为“悬浮”的玻璃面板，圆角同心
   - 按钮、分段控件、标签为胶囊形；选中态为带色调的玻璃
   - 透明度可调：侧栏底部“玻璃”滑块，从“通透”到“着色”（iOS 27 同款），记在本机
   - 尊重系统“减少透明度 / 增强对比度”设置
   ===================================================================== */
:root{
  --glass-a:.62;                      /* 玻璃不透明度，滑块调节 .38–.92 */
  --glass:rgba(255,255,255,var(--glass-a));
  --glass-strong:rgba(255,255,255,calc(var(--glass-a) + .12));
  --glass-line:rgba(255,255,255,.75);
  --glass-edge:inset 0 0 0 1px rgba(255,255,255,.55),inset 0 1px 0 rgba(255,255,255,.9);
  --glass-shadow:0 1px 1px rgba(16,24,40,.04),0 8px 28px rgba(16,24,40,.08);
  --glass-blur:saturate(180%) blur(28px);
  --radius:22px;--radius-s:14px;
  --blue:#0A84FF;--blue-soft:rgba(10,132,255,.12);
}
body{background:
  radial-gradient(1200px 800px at 8% -10%,#DCE9FF 0%,transparent 60%),
  radial-gradient(900px 700px at 105% 10%,#FCE7F3 0%,transparent 55%),
  radial-gradient(1000px 900px at 60% 120%,#E3F7EC 0%,transparent 60%),
  #EEF1F6;background-attachment:fixed}
.shell{grid-template-columns:calc(var(--side) + 16px) 1fr}
.shell.mini{grid-template-columns:calc(var(--side-mini) + 16px) 1fr}
.side{margin:12px 0 12px 12px;height:calc(100vh - 24px);top:12px;border:0;border-radius:28px;
  background:var(--glass);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);box-shadow:var(--glass-edge),var(--glass-shadow)}
.brand-mark{border-radius:10px;background:linear-gradient(160deg,#5AB0FF,#0A6CFF);box-shadow:inset 0 1px 0 rgba(255,255,255,.55),0 2px 6px rgba(10,108,255,.35)}
.nav a{border-radius:999px;height:40px;transition:background .18s,color .18s}
.nav a:hover{background:rgba(255,255,255,.55)}
.nav a.on{background:var(--blue-soft);color:var(--blue);font-weight:600;box-shadow:inset 0 0 0 1px rgba(10,132,255,.18),inset 0 1px 0 rgba(255,255,255,.7)}
.nav a.on .ico{background:var(--blue)!important;color:#fff!important}
.nav a .ico{border-radius:8px;box-shadow:inset 0 1px 0 rgba(255,255,255,.35)}
.nav a.on .count{background:var(--blue);color:#fff}
.side-foot{border-top:1px solid rgba(60,60,67,.12)}
.icon-btn{border-radius:999px}
.icon-btn:hover{background:rgba(255,255,255,.55)}
.main{padding:24px 32px 60px 20px}
.head h1{font-size:34px;letter-spacing:-.025em}

/* 卡片与统计：玻璃材质 */
.card,.stat{background:var(--glass);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);box-shadow:var(--glass-edge),var(--glass-shadow);border-radius:var(--radius)}
.stat .v{font-size:32px}
button.stat:hover{box-shadow:var(--glass-edge),var(--glass-shadow),0 0 0 2px var(--blue-soft)}
.rows,.row,.kv div,table.t td,table.t th,.tl-item{border-color:rgba(60,60,67,.1)}
button.row:hover,table.t tr.click:hover td{background:rgba(255,255,255,.45)}

/* 胶囊按钮 */
.btn{border-radius:999px;height:36px;padding:0 16px;background:var(--glass-strong);box-shadow:var(--glass-edge),0 1px 2px rgba(16,24,40,.06);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}
.btn:hover{background:rgba(255,255,255,.92)}
.btn.primary{background:linear-gradient(180deg,#2E95FF,#0A7AFF);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 4px 12px rgba(10,122,255,.28)}
.btn.primary:hover{background:linear-gradient(180deg,#3C9CFF,#006FF0)}
.btn.small{height:30px;border-radius:999px;padding:0 12px}
.btn.ghost{background:transparent;box-shadow:none;backdrop-filter:none}

/* 分段控件、搜索、下拉：玻璃胶囊 */
.seg{border-radius:999px;padding:3px;background:rgba(118,118,128,.12);box-shadow:inset 0 0 0 1px rgba(255,255,255,.4)}
.seg button{border-radius:999px;height:30px;padding:0 14px}
.seg button.on{background:rgba(255,255,255,.95);box-shadow:0 1px 4px rgba(0,0,0,.12),inset 0 1px 0 #fff}
.search,.select,.field input,.field select,.field textarea,textarea.note,.next-line input{background:rgba(118,118,128,.1);border-radius:999px}
.field textarea,textarea.note{border-radius:16px}
.search{height:36px}

/* 标签与选择芯片 */
.badge{border-radius:999px;padding:0 9px}
.chip{border-radius:999px;background:rgba(118,118,128,.12)}
.chip:hover{background:rgba(118,118,128,.18)}
.chip.on{background:linear-gradient(180deg,#2E95FF,#0A7AFF);box-shadow:inset 0 1px 0 rgba(255,255,255,.35)}

/* 开关 */
.switch{background:rgba(120,120,128,.24)}
.switch::after{box-shadow:0 3px 8px rgba(0,0,0,.15),0 1px 1px rgba(0,0,0,.08)}

/* 右侧详情：悬浮玻璃面板 */
.scrim{background:rgba(20,24,35,.12)}
.panel{top:12px;right:12px;bottom:12px;border-radius:30px;overflow:hidden;background:rgba(242,244,248,calc(var(--glass-a) + .2));backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);box-shadow:var(--glass-edge),0 24px 60px rgba(16,24,40,.18);transform:translateX(calc(100% + 24px))}
.panel-top{background:transparent;border-bottom:1px solid rgba(60,60,67,.1)}

/* 弹窗与提示 */
dialog.sheet{border-radius:28px;background:rgba(248,249,252,calc(var(--glass-a) + .25));backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);box-shadow:var(--glass-edge),0 30px 80px rgba(16,24,40,.25)}
dialog.sheet::backdrop{background:rgba(20,24,35,.22);backdrop-filter:blur(4px)}
.toast{border-radius:999px;background:rgba(30,32,38,.78);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);box-shadow:0 10px 30px rgba(0,0,0,.2)}
.notice{border-radius:16px}
.drop{border-radius:18px;background:rgba(255,255,255,.35)}
.ai-result{border-radius:16px}
.login-card{border-radius:32px;background:var(--glass);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);box-shadow:var(--glass-edge),var(--glass-shadow)}
table.roster td.cell.on{background:rgba(10,132,255,.12)}

/* 玻璃透明度滑块（侧栏底部） */
.glass-ctl{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:12px;color:var(--muted);white-space:nowrap}
.glass-ctl input{flex:1;accent-color:var(--blue)}
.shell.mini .glass-ctl{display:none}

/* 系统辅助设置：减少透明度 → 不透明着色；增强对比度 → 加深边线 */
@media (prefers-reduced-transparency:reduce){:root{--glass-a:.94}.side,.card,.stat,.btn,.panel,dialog.sheet,.login-card{backdrop-filter:none;-webkit-backdrop-filter:none}}
@media (prefers-contrast:more){:root{--glass-a:.95;--glass-edge:inset 0 0 0 1px rgba(60,60,67,.35)}}
.card{overflow:hidden}
.grid2>*,.grid3>*{min-width:0}
