/*
 * OneNav 玻璃桌面（云镜）P0 样式
 * 作用域：body.io-desktop-page，不影响其他页面
 * 修改后请同步 desktop.min.css
 */
/* 根元素深色底：上/下过卷(橡皮筋回弹)露出 html 时不再露白；桌面端顺带关掉过卷链 */
html.io-dt-html{background:#101522;overscroll-behavior-y:none}
body.io-desktop-page{
  --dt-g1:rgba(255,255,255,.14); --dt-g2:rgba(255,255,255,.24);
  --dt-gl:rgba(255,255,255,.28); --dt-gl2:rgba(255,255,255,.38);
  --dt-dark:rgba(22,22,32,.45); --dt-darkl:rgba(255,255,255,.14);
  --dt-radius:18px; --dt-ease:cubic-bezier(.32,.72,0,1);
  --dt-cell:104px; --dt-gap:18px;
  --mono:ui-monospace,"SF Mono",Menlo,monospace;
  /* 字体栈优先 MiSans/HarmonyOS（用户装了即用，未装回退系统） */
  font-family:"MiSans","HarmonyOS Sans SC","HarmonyOS Sans","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
}

/* 桌面页隐藏主题标准头尾与悬浮工具栏（形态取代，其余页面不受影响）
   .tools-right 带 Bootstrap .d-flex(display:flex!important)，故需 !important 压过 */
body.io-desktop-page header.main-header,
body.io-desktop-page footer.main-footer,
body.io-desktop-page #loading_fx{display:none}
body.io-desktop-page .tools-right{display:none !important}

/* 壁纸挂在 body 上（永远铺满视口，覆盖主题白底）；data-wp 驱动切换。
   用高特异性 body.io-desktop-page 压过主题 body / body.container-body 的白色。 */
body.io-desktop-page{margin:0;padding-top:0 !important;overflow-x:hidden;color:#fff;-webkit-font-smoothing:antialiased;
  transition:background .6s ease;
  background:
    radial-gradient(70% 55% at 78% 16%,rgba(255,176,110,.42),transparent 55%),
    radial-gradient(60% 55% at 16% 88%,rgba(122,92,210,.34),transparent 55%),
    radial-gradient(50% 45% at 92% 82%,rgba(74,158,255,.22),transparent 55%),
    radial-gradient(120% 120% at 50% 42%,transparent 40%,rgba(0,0,0,.5) 100%),
    linear-gradient(158deg,#2c2118,#1b1723 52%,#101522) !important;
  background-attachment:fixed !important}
body.io-desktop-page[data-wp="1"],body.io-desktop-search[data-wp="1"]{background:radial-gradient(70% 60% at 20% 15%,rgba(90,180,255,.4),transparent 55%),radial-gradient(65% 60% at 85% 85%,rgba(60,220,180,.32),transparent 55%),radial-gradient(120% 120% at 50% 45%,transparent 42%,rgba(0,0,0,.5)),linear-gradient(160deg,#0e2233,#122a3a 52%,#0b1a2a) !important;background-attachment:fixed !important}
body.io-desktop-page[data-wp="2"],body.io-desktop-search[data-wp="2"]{background:radial-gradient(70% 60% at 80% 20%,rgba(255,120,170,.4),transparent 55%),radial-gradient(60% 55% at 15% 85%,rgba(150,90,255,.36),transparent 55%),radial-gradient(120% 120% at 50% 45%,transparent 42%,rgba(0,0,0,.52)),linear-gradient(160deg,#2a1230,#3a1636 52%,#1a1030) !important;background-attachment:fixed !important}
body.io-desktop-page[data-wp="3"],body.io-desktop-search[data-wp="3"]{background:linear-gradient(160deg,#3a3f47,#22262c 55%,#15181d) !important;background-attachment:fixed !important}
/* 极细颗粒质感，弱化渐变的“塑料感”，更接近照片 */
.io-desktop::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.io-desktop{min-height:100vh;position:relative}
.io-desktop>*{position:relative;z-index:1}

.io-desktop a{color:inherit;text-decoration:none}
.io-desktop button{font-family:inherit;cursor:pointer}
.io-desktop a:focus-visible,.io-desktop button:focus-visible{outline:2px solid rgba(255,255,255,.65);outline-offset:2px}
.io-desktop input:focus-visible{outline:none}

/* ============ 左侧 Dock ============ */
.dt-dock{position:fixed;left:0;top:0;bottom:0;width:64px;z-index:50;display:flex;flex-direction:column;align-items:center;padding:16px 0 14px;gap:2px;overflow-y:auto;overflow-x:hidden;scrollbar-width:none}
.dt-dock::-webkit-scrollbar{display:none}
.dt-avatar{width:34px;height:34px;flex:none;border-radius:50%;background:var(--dt-g2);border:1px solid var(--dt-gl);display:flex;align-items:center;justify-content:center;overflow:hidden;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.dt-avatar svg{width:17px;height:17px}
.dt-avatar img{width:100%;height:100%;border-radius:50%}
.dt-avatar-lbl{flex:none;font-size:10.5px;color:rgba(255,255,255,.7);margin-bottom:12px;text-shadow:0 1px 6px rgba(0,0,0,.4)}
.dt-avatar + .dt-grp{margin-top:12px}
.dt-grp{width:52px;flex:none;border:none;background:none;color:rgba(255,255,255,.66);display:flex;flex-direction:column;align-items:center;gap:4px;
  padding:8px 0;border-radius:13px;font-size:9.5px;font-weight:500;transition:all .22s var(--dt-ease);text-shadow:0 1px 6px rgba(0,0,0,.35)}
.dt-grp-ico{width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:inherit}
.dt-grp-ico svg{width:21px;height:21px}
.dt-grp-name{max-width:56px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 2px}
.dt-grp[draggable="true"]{cursor:grab}
.dt-grp.dt-grp-dragging{opacity:.4;cursor:grabbing}
.dt-grp:hover{background:var(--dt-g1);color:#fff}
.dt-grp.on{background:rgba(255,255,255,.16);color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.dt-grp.on .dt-grp-ico{color:#fff}
.dt-dock-sp{flex:1;min-height:34px}
.dt-tool{width:40px;height:40px;flex:none;border:none;background:none;border-radius:12px;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.65);transition:all .2s}
.dt-tool:hover{background:var(--dt-g2);color:#fff}
.dt-tool svg{width:18px;height:18px}

/* ============ 右上快捷区 ============ */
.dt-fab{position:fixed;right:18px;top:16px;z-index:50;display:flex;gap:8px}
.dt-fab button{width:36px;height:36px;border-radius:50%;border:1px solid rgba(255,255,255,.18);background:rgba(20,20,35,.35);color:rgba(255,255,255,.85);
  display:flex;align-items:center;justify-content:center;transition:all .2s;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.dt-fab button:hover{background:rgba(20,20,35,.55);color:#fff}
.dt-fab button svg{width:16px;height:16px}

/* ============ 主区 ============ */
.dt-main{max-width:calc(var(--dt-cell)*8 + var(--dt-gap)*7 + 40px);margin:0 auto;padding:24px 26px 40px}
#dtClock{text-align:center;margin:2px auto 0;font-weight:200;font-size:clamp(42px,6vw,56px);letter-spacing:-.02em;line-height:1;
  font-variant-numeric:tabular-nums;cursor:pointer;width:-moz-fit-content;width:fit-content;display:block;
  text-shadow:0 3px 30px rgba(0,0,0,.2);transition:transform .3s var(--dt-ease),font-size .42s var(--dt-ease),margin-top .42s var(--dt-ease)}
#dtClock:hover{transform:scale(1.03)}
#dtDate{text-align:center;color:rgba(255,255,255,.66);font-size:13px;font-weight:400;margin:6px 0 12px;text-shadow:0 1px 8px rgba(0,0,0,.35)}
body.dt-hide-clock #dtClock,body.dt-hide-clock #dtDate{display:none}
body.dt-hide-clock .dt-searchbox{margin-top:6vh}
body.dt-hide-search .dt-searchbox{display:none}

/* 搜索 */
.dt-searchbox{max-width:600px;margin:0 auto;position:relative}
.dt-search{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:999px;
  background:rgba(16,16,24,.42);border:.5px solid rgba(255,255,255,.16);box-shadow:0 6px 24px -8px rgba(0,0,0,.5);
  -webkit-backdrop-filter:blur(26px) saturate(1.4);backdrop-filter:blur(26px) saturate(1.4);transition:all .25s var(--dt-ease)}
.dt-search:focus-within{background:rgba(20,20,30,.55);box-shadow:0 8px 28px -8px rgba(0,0,0,.6)}
#dtEngineBtn{flex:none;display:flex;align-items:center;gap:5px;border:none;background:rgba(255,255,255,.08);color:#fff;padding:7px 10px;border-radius:20px;font-size:13.5px;font-weight:600}
#dtEngineBtn:hover{background:rgba(255,255,255,.16)}
#dtEngineBtn .eico{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;background:#4b5bdc;flex:none}
/* 引擎真实图标：img 盖在字母上，白底小内衬；加载失败 onerror 自移除露出字母 */
#dtEngineBtn .eico,#dtEngineMenu .eico{position:relative;overflow:hidden}
#dtEngineBtn .eico img,#dtEngineMenu .eico img{position:absolute;inset:0;width:100%;height:100%;border-radius:50%;object-fit:contain;background:#fff;padding:2px;box-sizing:border-box}
#dtEngineBtn .eico svg,#dtEngineMenu .eico svg{width:62%;height:62%}
#dtEngineBtn .caret{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid rgba(255,255,255,.7)}
.dt-search input{flex:1;background:none;border:none;outline:none;color:#fff;font-size:14.5px;font-family:inherit;min-width:0;padding:9px 4px;box-shadow:none}
.dt-search input:focus-visible{outline:none}
.dt-search input::placeholder{color:rgba(255,255,255,.65)}
#dtGo{flex:none;width:40px;height:40px;border:none;border-radius:50%;background:rgba(255,255,255,.1);color:rgba(255,255,255,.75);display:flex;align-items:center;justify-content:center}
#dtGo:hover{background:rgba(255,255,255,.2);color:#fff}
#dtGo svg{width:18px;height:18px}
#dtEngineMenu{position:absolute;top:calc(100% + 8px);left:0;z-index:80;display:none;min-width:160px;padding:6px;border-radius:14px;
  background:rgba(25,25,50,.85);border:1px solid var(--dt-gl);box-shadow:0 16px 48px rgba(0,0,0,.4);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
#dtEngineMenu.show{display:block}
#dtEngineMenu button{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;padding:8px 12px;font-size:13px;color:rgba(255,255,255,.85);border-radius:9px;text-align:left}
#dtEngineMenu button:hover,#dtEngineMenu button.on{background:var(--dt-g2);color:#fff}
#dtEngineMenu .eico{width:20px;height:20px;border-radius:50%;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;color:#fff;background:#4b5bdc;flex:none}
#dtSuggest{position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:70;display:none;overflow:hidden;border-radius:18px;
  background:rgba(25,25,50,.82);border:1px solid var(--dt-gl);box-shadow:0 20px 60px rgba(0,0,0,.4);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
#dtSuggest.show{display:block}
#dtSuggest .sec{padding:8px 16px 4px;font-size:11px;letter-spacing:.1em;color:rgba(255,255,255,.5)}
/* .row 与 Bootstrap 栅格类撞名：必须清负 margin/换行，否则联想行左右各溢出 10px */
#dtSuggest .row{display:flex;flex-wrap:nowrap;align-items:center;gap:11px;margin:0;padding:9px 16px;cursor:pointer;font-size:13.5px;color:rgba(255,255,255,.85)}
#dtSuggest .row:hover,#dtSuggest .row.sel{background:var(--dt-g2)}
#dtSuggest .row svg{width:15px;height:15px;flex:none;color:rgba(255,255,255,.6)}
#dtSuggest .row img{width:22px;height:22px;border-radius:7px;flex:none}
#dtSuggest .row b{font-weight:600;color:#fff}
#dtSuggest .row .mut{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:rgba(255,255,255,.55);font-size:12px}
#dtSuggest .row .del{margin-left:auto;color:rgba(255,255,255,.5);padding:2px 7px;border-radius:5px}
#dtSuggest .row .del:hover{background:var(--dt-g2);color:#fff}
#dtSuggest .math{font-size:17px;font-weight:600;color:#ffd66b}
.dt-kbd{text-align:center;margin-top:9px;font-size:11px;color:rgba(255,255,255,.45)}
.dt-kbd kbd{font-family:ui-monospace,Menlo,monospace;border:1px solid rgba(255,255,255,.28);border-radius:4px;padding:0 5px;margin:0 1px;background:none;color:inherit;box-shadow:none}

/* ============ 组件区 ============ */
.dt-widgets{display:grid;grid-template-columns:repeat(8,1fr);grid-auto-rows:84px;gap:14px;margin-top:20px;grid-auto-flow:dense}
.dt-widgets:empty{display:none;margin:0}
.dt-w{position:relative;display:flex;flex-direction:column;min-width:0}
.dt-w-2x2{grid-column:span 2;grid-row:span 2}
.dt-w-4x2{grid-column:span 4;grid-row:span 2}
.dt-w-4x1{grid-column:span 4;grid-row:span 1}
/* 统一材质：磨砂白玻璃 + 深色文字（原 mat-dark/mat-light 归一，类名保留兼容）。
   语义强调色令牌：--acc 蓝 / --warn 琥珀 / --violet 紫 / --green 绿 */
/* 深色玻璃磨砂 + 顶部高光（对齐 iTab 原型）；日历/天气等各自覆盖 */
.dt-wcard,.dt-wcard.mat-dark,.dt-wcard.mat-light{flex:1;min-height:0;border-radius:var(--dt-radius);padding:14px 16px;overflow:hidden;display:flex;flex-direction:column;position:relative;
  background:rgba(28,28,36,.42);border:.5px solid rgba(255,255,255,.14);color:#fff;
  -webkit-backdrop-filter:blur(24px) saturate(1.3);backdrop-filter:blur(24px) saturate(1.3);
  box-shadow:0 2px 8px rgba(0,0,0,.2),0 14px 40px -12px rgba(0,0,0,.5);
  transition:transform .18s var(--dt-ease);
  --wt:#fff;--wt2:rgba(255,255,255,.66);--wt3:rgba(255,255,255,.4);--wline:rgba(255,255,255,.1);--wchip:rgba(255,255,255,.1);
  --acc:#4a9eff;--warn:#ffa23a;--violet:#b57cff;--green:#3ddc84}
.dt-wcard::before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.09),transparent 34%);pointer-events:none;z-index:0}
.dt-w:hover .dt-wcard{transform:translateY(-3px)}
.dt-wbody{position:relative;z-index:1;flex:1;min-height:0;font-size:13px;color:var(--wt2);overflow:hidden;display:flex;flex-direction:column}
.dt-wlabel{flex:none;text-align:center;font-size:11.5px;color:rgba(255,255,255,.92);text-shadow:0 1px 8px rgba(0,0,0,.45);margin-top:7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 组件卡内标题栏（名称 + 计数 + 展开按钮） */
.dt-wh{display:flex;align-items:center;gap:7px;margin-bottom:8px;flex:none}
.dt-wh .nm{font-size:12.5px;font-weight:600;color:var(--wt2)}
.dt-wh .ct{font-size:11px;color:var(--wt3)}
.dt-wh .wh-more{margin-left:auto;background:none;border:none;cursor:pointer;color:var(--wt3);padding:2px;display:flex}
.dt-wh .wh-more:hover{color:var(--acc)}
.dt-wh .wh-more svg{width:15px;height:15px}
.dt-wh .wh-ic{color:var(--acc);display:flex;flex:none}
.dt-wh .wh-ic svg{width:15px;height:15px}
/* 组件设置齿轮（hover 显示） */
.dt-eat,.dt-pomo{position:relative}
.dt-wcfg{position:absolute;top:0;right:0;z-index:4;background:none;border:none;cursor:pointer;color:var(--wt3);opacity:0;transition:opacity .16s;padding:2px;display:flex}
.dt-w:hover .dt-wcfg{opacity:.75}
.dt-wcfg:hover{opacity:1;color:var(--wt)}
.dt-wcfg svg{width:15px;height:15px}
/* 日历（白玻璃，深色文字——原型里唯一保持亮色的组件） */
.dt-wcard.wc-cal{padding:0;background:rgba(255,255,255,.94);border:none;color:#1a1a1f;
  --wt:#1a1a1f;--wt2:#5a5a60;--wt3:#8a8a90;--wline:rgba(0,0,0,.06);--wchip:rgba(0,0,0,.05)}
.dt-wcard.wc-cal::before{display:none}
.dt-cal{flex:1;display:flex;flex-direction:column;overflow:hidden}
.dt-cal .mh{flex:none;background:linear-gradient(90deg,#ff6b6b,#ff8e53);color:#fff;text-align:center;font-size:12.5px;font-weight:700;padding:7px 0}
.dt-cal .day{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.dt-cal .day .d{font-size:40px;font-weight:700;color:var(--wt);line-height:1}
.dt-cal .day small{font-size:11px;color:var(--wt3)}
/* 下班倒计时 */
.dt-rest{flex:1;display:flex;flex-direction:column;gap:8px}
.dt-rest-big{font-size:26px;font-weight:700;color:var(--wt);font-variant-numeric:tabular-nums;line-height:1.1}
.dt-rest-big small{display:block;font-size:11.5px;font-weight:500;color:var(--wt3);margin-bottom:2px}
.dt-rest-bar{margin-top:2px}
.dt-rest-bar i{background:linear-gradient(90deg,#5aa0e6,var(--acc))}
.dt-rest .chips{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:auto}
.dt-rest .chip{background:var(--wchip);border:1px solid var(--wline);border-radius:11px;padding:7px 4px;text-align:center}
.dt-rest .chip small{display:block;font-size:10.5px;color:var(--wt3);margin-bottom:2px}
.dt-rest .chip b{font-size:15px;color:var(--wt);font-variant-numeric:tabular-nums}
.dt-rest .chip b em{font-style:normal;font-size:10px;color:var(--wt3);margin-left:1px}
/* 公告 */
.dt-notice{display:flex;align-items:center;gap:10px;flex:1}
.dt-notice svg{flex:none;color:var(--warn);width:16px;height:16px}
.dt-notice a{font-size:12.5px;line-height:1.6;color:var(--wt2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dt-notice a:hover{color:var(--wt)}
/* 热搜 */
.dt-hot-hd{display:flex;align-items:center;gap:6px;margin-bottom:5px;flex:none}
.dt-hot-hd .fl{width:16px;height:16px;color:#e8563f;flex:none}
.dt-hot-hd .nm{font-size:12.5px;font-weight:700;color:#e8563f}
.dt-hot-hd .rt{margin-left:auto;font-size:10.5px;color:var(--wt3)}
.wtabs{display:flex;gap:2px;margin-bottom:5px;flex:none;overflow-x:auto;scrollbar-width:none}
.wtabs::-webkit-scrollbar{display:none}
.wtabs button{background:none;border:none;font-size:11.5px;color:var(--wt3);padding:2px 9px;border-radius:999px;white-space:nowrap;flex:none}
.wtabs button.on{background:var(--wchip);color:var(--wt);font-weight:600}
.wtabs .dt-hot-mng{margin-left:auto;flex:none;color:var(--wt3);font-weight:700;font-size:14px;line-height:1;padding:2px 6px}
.wtabs .dt-hot-mng:hover{color:var(--wt)}
/* 热搜展开大页 */
.dt-modal.hm-modal{padding:0;overflow:hidden;width:720px;max-width:100%}
.hm-tabs{display:flex;gap:2px;padding:16px 18px 12px}
.hm-tabs button{appearance:none;border:0;background:none;font-family:inherit;cursor:pointer;padding:7px 15px;border-radius:9px;font-size:14px;color:rgba(255,255,255,.6);font-weight:500;transition:.16s}
.hm-tabs button:hover{color:#fff}
.hm-tabs button.on{color:#fff;background:var(--dt-g2)}
.hm-body{display:grid;grid-template-columns:224px 1fr;height:460px;border-top:1px solid var(--dt-gl)}
.hm-left{border-right:1px solid var(--dt-gl);padding:12px 10px;overflow-y:auto;display:flex;flex-direction:column;gap:3px}
.hm-board{display:flex;align-items:center;gap:8px;padding:10px 11px;border-radius:10px;cursor:pointer;transition:.16s}
.hm-board:hover{background:var(--dt-g1)}
.hm-board.on{background:var(--dt-g2)}
.hm-nm{flex:1;font-size:14px;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hb-toggle{border:1px solid var(--dt-gl);background:none;color:rgba(255,255,255,.7);font-size:12px;padding:4px 12px;border-radius:999px;cursor:pointer;flex:none;font-family:inherit}
.hb-toggle.hb-rm{background:rgba(255,90,90,.22);border-color:transparent;color:#fff}
.hm-right{overflow-y:auto;padding:6px 8px}
.hm-rankhead{font-size:15px;font-weight:700;color:#fff;padding:12px}
.hm-ritem{display:flex;align-items:center;gap:13px;padding:9px 12px;border-radius:9px;color:rgba(255,255,255,.85);font-size:13.5px}
.hm-ritem:hover{background:var(--dt-g1)}
.hm-ritem .no{width:19px;text-align:center;font-weight:700;color:rgba(255,255,255,.4);flex:none;font-variant-numeric:tabular-nums}
.hm-ritem.top .no{color:#ff7a5c}
.hm-ritem .t{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hm-ritem .h{font-size:12px;color:rgba(255,255,255,.4);flex:none;font-variant-numeric:tabular-nums}
.hm-loading,.hm-empty{color:rgba(255,255,255,.5);font-size:13px;text-align:center;padding:44px 0}
@media (max-width:640px){.hm-body{grid-template-columns:1fr;height:auto}.hm-left{border-right:0;border-bottom:1px solid var(--dt-gl);max-height:180px}}
/* 「添加到桌面」统一弹窗 */
.dt-modal.add-modal{padding:0;overflow:hidden;width:600px;max-width:100%;position:relative}
.add-modal .am-title{margin:0;padding:17px 20px;font-size:16px;font-weight:600;border-bottom:1px solid var(--dt-gl)}
.add-modal .am-wrap{display:grid;grid-template-columns:140px 1fr;min-height:440px}
.add-modal .am-menu{border-right:1px solid var(--dt-gl);padding:12px 10px;display:flex;flex-direction:column;gap:3px;background:rgba(255,255,255,.03)}
.add-modal .am-menu button{appearance:none;border:0;background:none;font-family:inherit;cursor:pointer;text-align:left;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:11px;font-size:13.5px;color:rgba(255,255,255,.7);font-weight:500;transition:.16s}
.add-modal .am-menu button:hover{background:var(--dt-g1);color:#fff}
.add-modal .am-menu button[aria-selected="true"]{background:rgba(74,158,255,.92);color:#fff}
.add-modal .am-menu button svg{width:17px;height:17px;flex:none}
.add-modal .am-pane{padding:16px 18px 20px;max-height:60vh;overflow-y:auto}
.add-modal .am-pane .sub{font-size:12.5px;color:rgba(255,255,255,.5);margin:0 0 13px}
.add-modal .am-search{display:flex;align-items:center;gap:9px;height:38px;padding:0 13px;border-radius:11px;background:var(--dt-g1);border:1px solid var(--dt-gl);margin-bottom:14px}
.add-modal .am-search svg{width:15px;height:15px;color:rgba(255,255,255,.5);flex:none}
.dt-modal.add-modal .am-search input{flex:1;background:none;border:none;border-radius:0;box-shadow:none;padding:0;outline:none;color:#fff;font-family:inherit;font-size:13.5px;min-width:0;width:auto}
.add-modal .am-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.add-modal .am-card{background:rgba(255,255,255,.05);border:.5px solid rgba(255,255,255,.09);border-radius:12px;padding:12px 13px;display:flex;align-items:center;gap:11px}
.add-modal .am-cinfo{flex:1;min-width:0}
.add-modal .am-card .nm{font-size:13.5px;font-weight:600;color:#fff}
.add-modal .am-card .sz{font-size:11px;color:rgba(255,255,255,.45);margin-top:1px}
.add-modal .am-card .am-add{width:28px;height:28px;border:none;border-radius:8px;font-size:19px;font-weight:300;line-height:1;cursor:pointer;background:#4a9eff;color:#fff;flex:none;display:flex;align-items:center;justify-content:center}
.add-modal .am-card .am-add.added{background:rgba(255,255,255,.12);color:rgba(255,255,255,.55);cursor:default;font-size:14px}
.add-modal .am-cats{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:13px}
.add-modal .am-cats span{font-size:12.5px;padding:5px 12px;border-radius:999px;background:var(--dt-g1);color:rgba(255,255,255,.7);cursor:pointer}
.add-modal .am-cats span.on{background:rgba(74,158,255,.92);color:#fff;font-weight:600}
.add-modal .am-navgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.add-modal .am-navrow{display:flex;align-items:center;gap:11px;min-width:0;padding:9px 11px;border-radius:12px;background:var(--dt-g1);border:1px solid var(--dt-gl)}
.add-modal .am-navrow .fav{width:32px;height:32px;border-radius:9px;flex:none;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;color:#fff;background:var(--dt-g2);overflow:hidden}
.add-modal .am-navrow .fav img{width:100%;height:100%;object-fit:cover}
.add-modal .am-navrow .info{flex:1;min-width:0}
.add-modal .am-navrow .n{font-size:13.5px;font-weight:500;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.add-modal .am-navrow .u{font-size:11px;color:rgba(255,255,255,.4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.add-modal .am-navrow .add{width:26px;height:26px;border-radius:8px;flex:none;background:rgba(74,158,255,.9);border:none;color:#fff;font-size:15px;cursor:pointer;line-height:1}
.add-modal .am-navrow .add.done{background:var(--dt-g1);color:rgba(255,255,255,.4)}
.add-modal .am-empty{grid-column:1/-1;text-align:center;color:rgba(255,255,255,.4);font-size:12.5px;padding:30px 0}
.add-modal .am-lb{display:block;font-size:12.5px;color:rgba(255,255,255,.7);margin:12px 0 6px}
.add-modal .am-lb em{font-style:normal;color:#ff8787}
.add-modal .am-in{width:100%;background:var(--dt-g1);border:1px solid var(--dt-gl);border-radius:11px;color:#fff;font-family:inherit;font-size:13.5px;padding:10px 12px;outline:none}
.add-modal .am-in:focus{border-color:var(--dt-gl2)}
.add-modal .am-hint{display:flex;gap:11px;padding:13px 14px;border-radius:12px;background:rgba(91,124,255,.14);margin-bottom:14px}
.add-modal .am-hint svg{width:18px;height:18px;color:#8fa6ff;flex:none;margin-top:1px}
.add-modal .am-hint p{margin:0;font-size:12.5px;color:rgba(255,255,255,.75);line-height:1.65}
.add-modal .am-hint-link{background:rgba(255,162,58,.14)}
.add-modal .am-hint-link svg{color:#ffb057}
/* 自定义/提交/新建 的整宽蓝色主按钮（对齐原型） */
.add-modal .am-fullbtn{width:100%;height:44px;margin-top:14px;border:none;border-radius:11px;background:#4a9eff;color:#fff;font-weight:700;font-size:14px;cursor:pointer;transition:background .16s}
.add-modal .am-fullbtn:hover{background:#3a8eef}
.add-modal .am-login{text-align:center;padding:44px 20px}
.add-modal .am-login p{font-size:13.5px;color:rgba(255,255,255,.6);margin:0 0 16px}
.add-modal .am-loginbtn{display:inline-block;background:#4a9eff;color:#fff;font-size:13.5px;font-weight:600;padding:9px 24px;border-radius:11px;text-decoration:none}
@media (max-width:600px){.add-modal .am-wrap{grid-template-columns:1fr}.add-modal .am-menu{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--dt-gl)}.add-modal .am-menu button{flex:none}.add-modal .am-grid,.add-modal .am-navgrid{grid-template-columns:1fr}}
/* 日历展开大页（浅色黄历，作用域 .cal-modal） */
.dt-modal.cal-modal{--i1:#1c1e26;--i2:#565b68;--i3:#8b91a0;--i4:#b4b9c4;--cl:rgba(20,22,34,.07);--cchip:rgba(20,22,34,.05);--cacc:#3b6ef5;--cred:#e8563f;
  padding:0;overflow:hidden;width:900px;max-width:100%;color:var(--i1);border:1px solid var(--cl);
  background:rgba(249,250,252,.97)}
.cal-modal .cal-seg{display:inline-flex;gap:2px;padding:3px;border-radius:11px;background:var(--cchip);margin:16px auto 0;position:relative;left:50%;transform:translateX(-50%)}
.cal-modal .cal-seg button{appearance:none;border:0;cursor:pointer;font-family:inherit;padding:6px 22px;border-radius:8px;font-size:13.5px;font-weight:500;color:var(--i2);background:transparent}
.cal-modal .cal-seg button.on{background:#fff;color:var(--i1);box-shadow:0 1px 3px rgba(10,14,40,.14)}
.cal-modal .cal-wrap{display:grid;grid-template-columns:1fr 288px;margin-top:14px}
.cal-modal .cal-main{padding:6px 22px 24px;min-width:0}
.cal-modal .cal-tb{display:flex;align-items:center;gap:9px;margin-bottom:12px}
.cal-modal .pill{display:inline-flex;align-items:center;height:32px;padding:0 13px;border-radius:9px;background:var(--cchip);font-size:13px;color:var(--i2)}
.cal-modal .nav{margin-left:auto;display:flex;gap:6px}
.cal-modal .nav button{appearance:none;border:1px solid var(--cl);background:#fff;width:32px;height:32px;border-radius:9px;cursor:pointer;color:var(--i2);display:flex;align-items:center;justify-content:center;transition:.16s}
.cal-modal .nav button:hover{background:rgba(59,110,245,.1);color:var(--cacc);border-color:transparent}
.cal-modal .nav button svg{width:15px;height:15px}
.cal-modal .dow{display:grid;grid-template-columns:repeat(7,1fr)}
.cal-modal .dow span{text-align:center;font-size:12.5px;font-weight:500;color:var(--i2);padding:7px 0}
.cal-modal .dow span.wend{color:var(--cred)}
.cal-modal .grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal-modal .dcell{appearance:none;border:1.5px solid transparent;background:transparent;font-family:inherit;cursor:pointer;border-radius:11px;padding:7px 0 6px;text-align:center;transition:background .16s,border-color .16s}
.cal-modal .dcell:hover{background:var(--cchip)}
.cal-modal .dcell .d{font-size:15px;font-weight:600;line-height:1.1;font-variant-numeric:tabular-nums;color:var(--i1)}
.cal-modal .dcell .l{font-size:10.5px;margin-top:2px;color:var(--i3);white-space:nowrap;overflow:hidden;display:block}
.cal-modal .dcell.dim .d{color:var(--i4);font-weight:500}
.cal-modal .dcell.dim .l{color:var(--i4);opacity:.7}
.cal-modal .dcell.wend .d{color:var(--cred)}
/* 注意：Bootstrap 全局 .mark 有淡黄底(#fcf8e3)，此处必须清掉，否则选中蓝底上出现黄底白字看不清 */
.cal-modal .dcell .l.mark{color:var(--cacc);background:none;padding:0}
.cal-modal .dcell:focus-visible{outline:none;border-color:var(--cacc)}
.cal-modal .dcell.sel{background:var(--cacc);border-color:var(--cacc)}
.cal-modal .dcell.sel .d,.cal-modal .dcell.sel .l{color:#fff;background:none}
.cal-modal .dcell.sel .l{font-weight:600}
.cal-modal .almanac{border-left:1px solid var(--cl);padding:18px 20px 24px;background:rgba(255,255,255,.5);min-width:0;overflow-y:auto;max-height:74vh}
.cal-modal .alm-date{font-size:13.5px;font-weight:600}
.cal-modal .alm-card{margin:14px auto 10px;width:92px;height:92px;border-radius:20px;background:var(--cacc);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 12px 24px -8px rgba(59,110,245,.55);position:relative}
.cal-modal .alm-card::before,.cal-modal .alm-card::after{content:"";position:absolute;top:10px;width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.65)}
.cal-modal .alm-card::before{left:22px}.cal-modal .alm-card::after{right:22px}
.cal-modal .alm-card b{font-size:46px;font-weight:600;font-variant-numeric:tabular-nums}
.cal-modal .alm-sub{text-align:center;line-height:1.85}
.cal-modal .alm-sub .big{font-size:14px;font-weight:500}
.cal-modal .alm-sub .sm{font-size:12px;color:var(--i2)}
.cal-modal .alm-tags{display:flex;flex-direction:column;gap:8px;margin:14px 0;padding:14px 0;border-top:1px solid var(--cl);border-bottom:1px solid var(--cl)}
.cal-modal .alm-tags .row{display:flex;align-items:center;gap:10px;font-size:12.5px}
.cal-modal .tag{font-size:11px;font-weight:600;padding:3px 8px;border-radius:6px;flex:none}
.cal-modal .tag.g{background:rgba(47,158,104,.15);color:#2f9e68}
.cal-modal .tag.p{background:rgba(214,93,177,.15);color:#c052a0}
.cal-modal .tag.b{background:rgba(59,110,245,.12);color:var(--cacc)}
.cal-modal .yiji{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.cal-modal .yiji .line{display:flex;gap:9px;font-size:12px;line-height:1.65}
/* .badge 与 Bootstrap 徽章类撞名：清 padding/line-height */
.cal-modal .yiji .badge{flex:none;width:21px;height:21px;padding:0;line-height:1;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:700;color:#fff;margin-top:1px}
.cal-modal .yiji .yi .badge{background:#2f9e68}
.cal-modal .yiji .ji .badge{background:var(--cred)}
.cal-modal .yiji .txt{color:var(--i2)}
.cal-modal .moon{display:flex;gap:18px;font-size:12px;color:var(--i2);margin-bottom:12px;flex-wrap:wrap}
.cal-modal .moon .k{background:var(--cchip);color:var(--i2);font-weight:600;padding:2px 6px;border-radius:6px;margin-right:5px;font-size:11px}
.cal-modal .pos{display:grid;grid-template-columns:1fr 1fr;gap:7px 14px;font-size:12px;color:var(--i2)}
.cal-modal .pos b{color:var(--i1);font-weight:500}
.cal-modal .tools-body{display:grid;grid-template-columns:1fr 1fr;gap:34px;padding:26px 30px 34px}
.cal-modal .calc h3{margin:0 0 16px;font-size:14px;font-weight:600}
.cal-modal .field{display:flex;align-items:center;gap:14px;margin-bottom:13px}
.cal-modal .field label{font-size:13px;color:var(--i2);width:44px;flex:none}
.dt-modal.cal-modal .field input{flex:1;height:40px;padding:0 12px;border-radius:11px;background:#fff;border:1px solid var(--cl);font-family:inherit;font-size:13.5px;color:var(--i1);font-variant-numeric:tabular-nums;outline:none;color-scheme:light}
.cal-modal .field input:focus{border-color:var(--cacc)}
.cal-modal .tresult{margin-top:16px;font-size:14px;color:var(--i2)}
.cal-modal .tresult b{font-size:20px;color:var(--cacc);font-weight:700;margin:0 4px;font-variant-numeric:tabular-nums}
@media (max-width:720px){.cal-modal .cal-wrap{grid-template-columns:1fr}.cal-modal .almanac{border-left:0;border-top:1px solid var(--cl)}.cal-modal .tools-body{grid-template-columns:1fr;gap:24px}}
.hotlist{margin:0;padding:0;list-style:none;display:grid;gap:0;overflow:hidden}
.hotlist a{display:flex;gap:9px;align-items:baseline;padding:2.5px 4px;border-radius:7px;color:var(--wt2);font-size:12.5px;line-height:1.45}
.hotlist .hh{font-style:normal;font-size:10.5px;color:var(--wt3);flex:none;font-variant-numeric:tabular-nums}
.hotlist a:hover{background:var(--wchip);color:var(--wt)}
.hotlist .no{font-family:var(--mono);font-size:10.5px;color:var(--wt3);width:12px;text-align:center;flex:none}
.hotlist .dt-hot-msg{list-style:none;padding:10px 4px;color:var(--wt3);font-size:12px;text-align:center}
.hotlist li:nth-child(-n+3) .no{color:#ff9f43;font-weight:700}
.hotlist .tt{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 天气（对齐 iTab：按天气类型渐变底 + em 相对排版） */
.dt-wcard.dt-wea-card{font-size:12px;color:#fff;border:none;position:relative;
  --wt:#fff;--wt2:rgba(255,255,255,.92);--wt3:rgba(255,255,255,.7)}
.dt-wea-card .dt-wbody{color:#fff;overflow:visible}
/* 天气动态特效（按天气类型；reduced-motion 关闭） */
.dt-wea-fx{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:0}
/* 晴：核心光晕呼吸 + 大范围暖光 halo 异相位缓漂（双层光更有体积感） */
.dt-wea-sunny .dt-wea-fx::before{content:"";position:absolute;top:-18px;right:-14px;width:86px;height:86px;border-radius:50%;background:radial-gradient(circle,rgba(255,244,196,.95),rgba(255,224,130,0) 70%);animation:weaSun 5s ease-in-out infinite}
.dt-wea-sunny .dt-wea-fx::after{content:"";position:absolute;top:-42px;right:-38px;width:170px;height:170px;border-radius:50%;background:radial-gradient(circle,rgba(255,214,120,.32),transparent 65%);animation:weaSunHalo 9s ease-in-out infinite}
@keyframes weaSun{0%,100%{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}}
@keyframes weaSunHalo{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:.95;transform:scale(1.12) translate(-4px,3px)}}
/* 多云：远近两朵模糊云团不同速横向漂过，端点淡入淡出避免循环跳变 */
.dt-wea-cloudy .dt-wea-fx::before{content:"";position:absolute;top:8px;left:-70px;width:120px;height:44px;border-radius:50px;background:radial-gradient(ellipse at 35% 55%,rgba(255,255,255,.5),transparent 70%),radial-gradient(ellipse at 70% 45%,rgba(255,255,255,.38),transparent 70%);filter:blur(6px);animation:weaCloud 26s linear infinite}
.dt-wea-cloudy .dt-wea-fx::after{content:"";position:absolute;top:52px;left:-90px;width:150px;height:50px;border-radius:60px;background:radial-gradient(ellipse at 50% 50%,rgba(255,255,255,.26),transparent 72%);filter:blur(8px);animation:weaCloud 40s linear -12s infinite}
@keyframes weaCloud{0%{transform:translateX(0);opacity:0}12%{opacity:1}82%{opacity:1}100%{transform:translateX(320px);opacity:0}}
/* 阴：大片压顶云幔缓慢涌动（明暗两团交叠） */
.dt-wea-yin .dt-wea-fx::before{content:"";position:absolute;top:-30px;left:-20%;width:140%;height:84px;background:radial-gradient(ellipse at 30% 60%,rgba(40,50,70,.5),transparent 70%),radial-gradient(ellipse at 72% 40%,rgba(255,255,255,.12),transparent 70%);filter:blur(10px);animation:weaYin 14s ease-in-out infinite alternate}
@keyframes weaYin{from{transform:translateX(-14px)}to{transform:translateX(14px)}}
/* 雾：两条雾带反向缓漂 + 浓淡呼吸 */
.dt-wea-foggy .dt-wea-fx::before{content:"";position:absolute;top:30%;left:-30%;width:160%;height:22px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.42) 30%,rgba(255,255,255,.28) 65%,transparent);filter:blur(6px);animation:weaFog 16s ease-in-out infinite alternate}
.dt-wea-foggy .dt-wea-fx::after{content:"";position:absolute;top:62%;left:-30%;width:160%;height:26px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3) 40%,rgba(255,255,255,.2) 70%,transparent);filter:blur(8px);animation:weaFog 20s ease-in-out -8s infinite alternate-reverse}
@keyframes weaFog{from{transform:translateX(-24px);opacity:.72}to{transform:translateX(24px);opacity:1}}
/* 雨/雷雨：双层雨丝视差——近层长而亮且快，远层细而暗且缓；周期恰为各层贴片高度的整数倍保证无缝 */
.dt-wea-rain .dt-wea-fx,.dt-wea-thunder .dt-wea-fx{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='64'%3E%3Cg stroke='%23fff' stroke-width='1.5' stroke-linecap='round'%3E%3Cline x1='9' y1='4' x2='7.4' y2='16' opacity='.5'/%3E%3Cline x1='27' y1='20' x2='25.6' y2='30' opacity='.3'/%3E%3Cline x1='45' y1='7' x2='43.4' y2='19' opacity='.45'/%3E%3Cline x1='17' y1='40' x2='15.6' y2='50' opacity='.3'/%3E%3Cline x1='37' y1='44' x2='35.4' y2='56' opacity='.5'/%3E%3Cline x1='51' y1='38' x2='49.8' y2='47' opacity='.25'/%3E%3C/g%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='96'%3E%3Cg stroke='%23fff' stroke-width='1' stroke-linecap='round'%3E%3Cline x1='7' y1='10' x2='6' y2='18' opacity='.25'/%3E%3Cline x1='23' y1='34' x2='22' y2='41' opacity='.2'/%3E%3Cline x1='37' y1='16' x2='36' y2='24' opacity='.25'/%3E%3Cline x1='14' y1='62' x2='13' y2='70' opacity='.2'/%3E%3Cline x1='31' y1='80' x2='30' y2='87' opacity='.22'/%3E%3C/g%3E%3C/svg%3E");background-size:56px 64px,44px 96px;animation:weaRain 1.1s linear infinite}
@keyframes weaRain{to{background-position:0 128px,0 96px}}
/* 雪：双层雪片（大小/明暗错落）+ 轻微横向摇摆，摇摆在周期端点归零保证无缝 */
.dt-wea-snow .dt-wea-fx{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='90'%3E%3Cg fill='%23fff'%3E%3Ccircle cx='11' cy='8' r='2.1' opacity='.85'/%3E%3Ccircle cx='42' cy='22' r='1.7' opacity='.6'/%3E%3Ccircle cx='24' cy='44' r='2.3' opacity='.8'/%3E%3Ccircle cx='52' cy='56' r='1.6' opacity='.55'/%3E%3Ccircle cx='8' cy='68' r='1.9' opacity='.7'/%3E%3Ccircle cx='36' cy='82' r='2' opacity='.75'/%3E%3C/g%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='140'%3E%3Cg fill='%23fff'%3E%3Ccircle cx='18' cy='12' r='1.2' opacity='.35'/%3E%3Ccircle cx='58' cy='30' r='1' opacity='.28'/%3E%3Ccircle cx='80' cy='64' r='1.3' opacity='.35'/%3E%3Ccircle cx='36' cy='84' r='1.1' opacity='.3'/%3E%3Ccircle cx='66' cy='108' r='1.2' opacity='.32'/%3E%3Ccircle cx='12' cy='126' r='1' opacity='.25'/%3E%3Ccircle cx='45' cy='52' r='1' opacity='.25'/%3E%3C/g%3E%3C/svg%3E");background-size:60px 90px,90px 140px;animation:weaSnow 5s linear infinite}
@keyframes weaSnow{0%{background-position:0 0,0 0}25%{background-position:5px 45px,-4px 35px}50%{background-position:0 90px,0 70px}75%{background-position:-5px 135px,4px 105px}100%{background-position:0 180px,0 140px}}
/* 雷：偏心冷光双闪 + 余晖衰减（去掉旧版满屏硬白 steps 闪） */
.dt-wea-thunder .dt-wea-fx::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 68% 14%,rgba(226,234,255,.95),rgba(186,202,255,.28) 45%,transparent 75%);opacity:0;animation:weaFlash 7s linear infinite}
@keyframes weaFlash{0%,88.5%,92.6%,100%{opacity:0}89%{opacity:.9}89.6%{opacity:.12}90.4%{opacity:.65}91.4%{opacity:.2}}
@media (prefers-reduced-motion:reduce){.dt-wea-fx,.dt-wea-fx::before,.dt-wea-fx::after{animation:none!important}}
.dt-wcard.dt-wea-sunny{background:linear-gradient(35deg,#154280 30%,#335693,#a8b3d2)}
.dt-wcard.dt-wea-cloudy{background:linear-gradient(35deg,#054989 30%,#72ade0)}
.dt-wcard.dt-wea-yin{background:linear-gradient(35deg,#354564 30%,#4c5f7f,#8b9bb8)}
.dt-wcard.dt-wea-foggy{background:linear-gradient(45deg,#789fb8 20%,#6386a3)}
.dt-wcard.dt-wea-rain{background:linear-gradient(35deg,#2c3e50,#4a6d8c)}
.dt-wcard.dt-wea-snow{background:linear-gradient(35deg,#5c6b82,#9fb0c8)}
.dt-wcard.dt-wea-thunder{background:linear-gradient(35deg,#2c2f4a,#4a4f6b)}
.dt-wea2{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:space-between;height:100%}
.dt-wea2-top{display:flex;align-items:flex-start;justify-content:space-between}
.dt-wea2-l .c{display:flex;align-items:center;gap:2px;font-size:.85em;color:rgba(255,255,255,.85)}
.dt-wea2-l .c .pin{width:1em;height:1em;flex:none}
.dt-wea2-l .t{display:block;font-size:2.2em;font-weight:600;line-height:1.1;margin-top:2px;color:#fff}
.dt-wea2-r{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.dt-wea2-r .wico{width:1.9em;height:1.9em;color:#fff}
.dt-wea2-r .cond{font-size:.85em;color:rgba(255,255,255,.85)}
.dt-wea2-bot{display:flex;justify-content:space-between;gap:8px;font-size:.8em;color:rgba(255,255,255,.8)}
.dt-wea-load{display:flex;align-items:center;justify-content:center;height:100%;font-size:12px;color:rgba(255,255,255,.75)}
.dt-wea2{cursor:pointer}
/* 天气展开大页 */
.dt-modal.wx-modal{padding:0;overflow:hidden;color:#fff;width:460px;border:none;
  background:linear-gradient(160deg,#1a4e8f 0%,#2f6db0 55%,#5a93cf 100%)}
.wx-close{position:absolute;top:14px;right:16px;background:rgba(255,255,255,.18);border:none;color:#fff;width:28px;height:28px;border-radius:50%;cursor:pointer;font-size:13px;z-index:2}
.wx-close:hover{background:rgba(255,255,255,.3)}
.wx-hd{padding:26px 26px 18px;display:flex;justify-content:space-between;align-items:flex-start}
.wx-hd .city{font-size:15px;opacity:.95}
.wx-hd .big{font-size:60px;font-weight:300;line-height:1;margin-top:6px;font-variant-numeric:tabular-nums}
.wx-hd .desc{font-size:13.5px;opacity:.9;margin-top:6px}
.wx-hd .r{text-align:right}
.wx-hd .r .wico{width:56px;height:56px;color:#fff}
.wx-hd .r .hl{font-size:12.5px;opacity:.9;margin-top:8px}
.wx-hd .r .aqi{display:inline-block;margin-top:8px;font-size:12px;background:rgba(255,255,255,.18);border-radius:999px;padding:3px 11px}
.wx-strip{display:flex;gap:8px;padding:0 20px 20px;overflow-x:auto;scrollbar-width:none}
.wx-strip::-webkit-scrollbar{display:none}
.wx-hour{flex:none;width:56px;text-align:center;background:rgba(255,255,255,.12);border-radius:14px;padding:12px 0;font-size:12px}
.wx-hour .h{opacity:.85}
.wx-hour .wico{width:22px;height:22px;margin:8px auto;color:#fff}
.wx-hour .t{font-weight:600;font-variant-numeric:tabular-nums}
.wx-days{background:#f6f7f9;color:#1c1e26;padding:6px 14px 14px}
.wx-day{display:flex;align-items:center;gap:14px;padding:11px 6px;border-bottom:1px solid rgba(20,22,34,.06);font-size:13.5px}
.wx-day:last-child{border-bottom:0}
.wx-day .dn{width:44px;color:#565b68;flex:none}
.wx-day .wico{width:22px;height:22px;color:#3b6ef5;flex:none}
.wx-day .dc{flex:1;color:#565b68;font-size:12.5px}
.wx-day .rg{color:#1c1e26;font-variant-numeric:tabular-nums;flex:none}
.wx-day .rg .mn{color:#b4b9c4}
/* 待办 */
.dt-todo-in{display:flex;gap:7px;margin-bottom:8px;flex:none}
.dt-todo-in input{flex:1;background:var(--wchip);border:1px solid var(--wline);border-radius:9px;color:var(--wt);font-family:inherit;font-size:12.5px;padding:6px 10px;outline:none;min-width:0}
.dt-todo-in button{border:none;border-radius:9px;background:#4b5bdc;color:#fff;font-size:12px;padding:0 13px}
.dt-todo-list{overflow-y:auto;display:grid;gap:2px;align-content:start}
.dt-todo-list label{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:4px 5px;border-radius:7px;cursor:pointer;color:var(--wt2)}
.dt-todo-list label.done span{text-decoration:line-through;opacity:.45}
.dt-todo-list input{accent-color:#4b5bdc}
.dt-todo-list .rm{margin-left:auto;background:none;border:none;color:var(--wt3);font-size:11px;padding:1px 6px;border-radius:5px}
/* 全部待办弹窗 */
.dt-modal .dt-todo-in.wide{display:flex;gap:8px;margin:14px 0}
.dt-modal .dt-todo-in.wide input{flex:1;background:var(--dt-g1);border:1px solid var(--dt-gl);border-radius:10px;color:#fff;font-family:inherit;font-size:14px;padding:10px 12px;outline:none}
.dt-modal .dt-todo-in.wide input:focus{border-color:var(--dt-gl2)}
.dt-modal .dt-todo-in.wide button{border:none;border-radius:10px;background:#4b5bdc;color:#fff;font-size:13.5px;padding:0 18px;cursor:pointer}
.dt-todo-modal-list{display:flex;flex-direction:column;gap:2px;max-height:52vh;overflow-y:auto}
.dt-todo-row{display:flex;align-items:center;gap:11px;padding:10px 8px;border-radius:9px;font-size:14px;color:rgba(255,255,255,.85);cursor:pointer}
.dt-todo-row:hover{background:var(--dt-g1)}
.dt-todo-row input{accent-color:#4b5bdc;width:17px;height:17px;flex:none}
.dt-todo-row span{flex:1}
.dt-todo-row.done span{text-decoration:line-through;opacity:.45}
.dt-todo-row .rm{margin-left:auto;background:none;border:none;color:rgba(255,255,255,.4);cursor:pointer;font-size:13px;padding:2px 8px;border-radius:6px}
.dt-todo-row .rm:hover{color:#ff8787;background:rgba(255,255,255,.08)}
.dt-todo-empty{text-align:center;color:rgba(255,255,255,.5);font-size:13px;padding:26px 0}
/* 番茄钟 */
.dt-pomo{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:14px}
.dt-pomo-ring{width:108px;height:108px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none}
.dt-pomo-ring i{width:90px;height:90px;border-radius:50%;background:rgba(20,20,28,.72);display:flex;flex-direction:column;align-items:center;justify-content:center;font-style:normal}
.dt-pomo-ring .t{font-size:24px;font-weight:700;color:var(--wt);font-variant-numeric:tabular-nums;letter-spacing:.01em}
.dt-pomo-ring .st{font-size:11px;color:var(--wt3);margin-top:2px}
.dt-pomo .btns{display:flex;gap:8px}
.dt-pomo button{border:1px solid var(--wline);border-radius:999px;padding:5px 15px;font-size:12px;background:var(--wchip);color:var(--wt);cursor:pointer}
.dt-pomo button.main{background:var(--acc);color:#fff;border-color:transparent;font-weight:600}
/* 倒数日 */
.dt-cnt{display:flex;flex-direction:column;flex:1;cursor:pointer}
.dt-cnt-mid{margin:auto 0;display:flex;flex-direction:column;gap:1px}
.dt-cnt .l{font-size:12px;color:var(--wt2)}
.dt-cnt .n{font-size:38px;font-weight:700;color:var(--violet);font-variant-numeric:tabular-nums;line-height:1.05}
.dt-cnt .n em{font-style:normal;font-size:14px;margin-left:4px;color:var(--wt3)}
.dt-cnt-foot .d{font-size:11px;color:var(--wt3)}
.dt-mini-bar{height:5px;border-radius:3px;background:var(--wchip);overflow:hidden;margin-top:8px;flex:none}
.dt-mini-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#9b7cff,var(--violet));transition:width .4s var(--dt-ease)}
.wh-ic-v{color:var(--violet) !important}
.sz-4x1 .dt-cnt-mid{flex-direction:row;align-items:baseline;gap:12px}
.sz-4x1 .dt-cnt .n{font-size:28px}
/* 木鱼 */
.dt-muyu{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:10px;cursor:pointer;user-select:none}
.dt-muyu .fish{transition:transform .12s var(--dt-ease);filter:drop-shadow(0 6px 14px rgba(232,147,58,.35));line-height:0}
.dt-muyu .fish svg{width:72px;height:72px}
.dt-muyu:active .fish{transform:scale(.85)}
.dt-muyu .n{font-size:14px;color:var(--wt2);font-variant-numeric:tabular-nums}
.dt-muyu .plus{position:absolute;top:16px;right:18px;font-size:13px;font-weight:600;color:var(--warn);opacity:0;pointer-events:none}
.dt-muyu .plus.pop{animation:muyuPop .8s ease forwards}
@keyframes muyuPop{0%{opacity:0;transform:translateY(2px)}22%{opacity:1;transform:translateY(-8px)}100%{opacity:0;transform:translateY(-24px)}}
@media (prefers-reduced-motion:reduce){.dt-muyu .plus.pop{animation-duration:.4s}}
/* 吃什么 */
.dt-eat{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:5px;cursor:pointer;user-select:none}
.dt-eat-ic{color:var(--green);display:flex;margin-bottom:2px}
.dt-eat-ic svg{width:30px;height:30px}
.dt-eat .dish{font-size:23px;font-weight:700;color:var(--green);transition:transform .15s var(--dt-ease)}
.dt-eat.rolling .dish{transform:scale(.9);opacity:.6}
.dt-eat small{font-size:11px;color:var(--wt3)}
.dt-eat-btn{margin-top:4px;font-size:11.5px;color:var(--green);background:rgba(47,158,104,.13);padding:4px 15px;border-radius:999px}
/* 用户自定义组件（sandbox iframe）：卡片去内边距、iframe 铺满圆角 */
.dt-wcard.wc-custom{padding:0}
.dt-wcard.wc-custom::before{display:none}
.dt-wcard.wc-custom .dt-wbody{overflow:hidden;border-radius:inherit}
.dt-cwframe{display:block;width:100%;height:100%;border:0;border-radius:inherit;background:rgba(255,255,255,.04)}
/* 商店里的自定义组件卡片：名称标签 + 删除按钮 + 新建入口 */
.add-modal .am-card .cwtag{font-style:normal;font-size:10px;font-weight:600;color:#7db8ff;background:rgba(74,158,255,.16);border-radius:5px;padding:1.5px 6px;margin-left:6px;vertical-align:1px}
.add-modal .am-card .am-cwdel{width:24px;height:24px;border:none;border-radius:7px;background:none;color:rgba(255,255,255,.4);font-size:12px;cursor:pointer;flex:none}
.add-modal .am-card .am-cwdel:hover{background:rgba(255,90,90,.18);color:#ff8787}
.add-modal .am-cwnew{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;margin-top:12px;padding:11px 0;border:1px dashed rgba(255,255,255,.22);border-radius:12px;background:none;color:rgba(255,255,255,.65);font-size:13px;font-family:inherit;cursor:pointer;transition:.15s}
.add-modal .am-cwnew:hover{color:#fff;border-color:rgba(255,255,255,.4);background:rgba(255,255,255,.05)}
.add-modal .am-cwnew svg{width:15px;height:15px}
/* 组件移除角标 + 编辑抖动 */
.dt-w .dt-rmv{display:none;position:absolute;top:-7px;left:-7px;z-index:6;width:22px;height:22px;border-radius:50%;
  align-items:center;justify-content:center;background:rgba(20,20,40,.9);border:1px solid var(--dt-gl2);color:#fff;font-size:13px;padding:0;line-height:1}
body.dt-editing .dt-w .dt-rmv,body.dt-editing .dt-cell[data-name] .dt-rmv{display:flex}
body.dt-editing .dt-w,body.dt-editing .dt-cell[data-name]{animation:dtjiggle 1.2s infinite ease-in-out}
body.dt-editing .dt-w:nth-child(2n),body.dt-editing .dt-cell:nth-child(2n){animation-delay:.1s}
@keyframes dtjiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(.6deg)}75%{transform:rotate(-.6deg)}}
body.dt-editing #dtWidgets .dt-w{cursor:move}
#dtWidgets .dt-w.w-dragging{opacity:.4;animation:none}
/* 切换分组：图标/组件交错淡入（reduced-motion 由全局媒体查询关闭；.dt-flow 由 JS 短暂挂载后自动移除，不影响后续局部刷新） */
@keyframes dtflow{from{opacity:0;transform:translateY(12px) scale(.975)}to{opacity:1;transform:translateY(0) scale(1)}}
.dt-grid.dt-flow>.dt-cell{animation:dtflow .44s var(--dt-ease) backwards;animation-delay:calc(var(--i,0)*24ms)}
.dt-widgets.dt-flow>.dt-w{animation:dtflow .5s var(--dt-ease) backwards;animation-delay:calc(var(--i,0)*45ms)}
/* 手机端「展开更多组件」按钮（仅移动端 JS 挂载；桌面不渲染此元素） */
.dt-wmore{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin:12px 0 0;padding:11px 0;
  font-size:12.5px;color:rgba(255,255,255,.9);background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);border-radius:13px;
  -webkit-backdrop-filter:blur(16px) saturate(1.5);backdrop-filter:blur(16px) saturate(1.5);cursor:pointer;font-family:inherit;text-shadow:0 1px 6px rgba(0,0,0,.35)}
.dt-wmore:active{background:rgba(255,255,255,.16)}
.dt-wmore svg{width:14px;height:14px}
body.dt-minimal .dt-wmore{display:none}

/* ============ 分组标题（当前分组名 + 编辑，对齐原型 .grouptitle） ============ */
.dt-grouptitle{display:flex;align-items:center;justify-content:space-between;margin:16px 2px 12px}
.dt-grouptitle .t{font-size:15px;font-weight:700;color:#fff;display:flex;align-items:center;gap:8px;text-shadow:0 1px 8px rgba(0,0,0,.4)}
.dt-grouptitle .t .dot{width:8px;height:8px;border-radius:3px;flex:none;box-shadow:0 0 10px currentColor}
.dt-grouptitle .edit{border:none;font-family:inherit;cursor:pointer;font-size:12px;font-weight:600;color:rgba(255,255,255,.66);display:flex;align-items:center;gap:5px;background:rgba(255,255,255,.08);padding:6px 12px;border-radius:999px;transition:.16s}
.dt-grouptitle .edit:hover{color:#fff;background:rgba(255,255,255,.15)}
.dt-grouptitle .edit svg{width:13px;height:13px}
body.dt-minimal .dt-grouptitle{display:none}

/* ============ 图标网格 ============ */
#dtDesk{margin-top:6px}
.dt-grid{display:none;grid-template-columns:repeat(8,1fr);grid-auto-rows:86px;gap:18px 10px}
.dt-grid.on{display:grid}
.dt-cell{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;cursor:pointer;transition:transform .16s var(--dt-ease),opacity .25s,filter .25s}
.dt-cell:hover{transform:translateY(-3px)}
body.dt-editing .dt-cell:hover{transform:none}
.dt-cell.dim{opacity:.22;filter:saturate(.4)}
.dt-tile{width:58px;height:58px;border-radius:15px;display:flex;align-items:center;justify-content:center;overflow:hidden;
  background:#fff;box-shadow:0 5px 13px -3px rgba(0,0,0,.4),inset 0 1.5px 1px rgba(255,255,255,.4);
  transition:transform .25s var(--dt-ease)}
.dt-cell:active .dt-tile{transform:scale(.93)}
.dt-tile img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}
.dt-tile-letter{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:600;color:#fff;background:#4b5bdc}
.dt-label{flex:none;max-width:100%;text-align:center;font-size:11.5px;color:rgba(255,255,255,.92);text-shadow:0 1px 8px rgba(0,0,0,.45);margin-top:7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 2px}
.dt-cell.dragging{opacity:.35}
/* 图标文件夹 */
.dt-folder-tile{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:3px;padding:6px;background:rgba(255,255,255,.18);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.dt-folder-tile .ff{border-radius:6px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#fff}
.dt-folder-tile .ff img{width:100%;height:100%;object-fit:cover}
.dt-folder-tile .ff b{font-size:11px;font-weight:700;color:#4b5bdc}
.dt-cell.folder-target,.dt-folder.folder-target{transform:scale(1.08)}
.dt-cell.folder-target .dt-tile,.dt-folder.folder-target .dt-tile{outline:2px solid #fff;outline-offset:1px}
.fd-list{display:flex;flex-direction:column;gap:2px;max-height:44vh;overflow-y:auto;margin-top:8px}
.fd-row{display:flex;align-items:center;gap:11px;padding:8px;border-radius:9px}
.fd-row:hover{background:var(--dt-g1)}
.fd-ic{width:30px;height:30px;border-radius:8px;overflow:hidden;flex:none;background:#fff;display:flex;align-items:center;justify-content:center}
.fd-ic img{width:100%;height:100%;object-fit:cover}
.fd-ic b{color:#4b5bdc;font-weight:700;font-size:13px}
.fd-nm{flex:1;font-size:13.5px;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fd-out{background:none;border:1px solid var(--dt-gl);color:rgba(255,255,255,.7);font-size:12px;padding:4px 12px;border-radius:999px;cursor:pointer;flex:none}
.fd-out:hover{color:#ff8787;border-color:transparent;background:rgba(255,90,90,.18)}
.dt-cell .dt-rmv{display:none;position:absolute;top:-6px;left:calc(50% - 33px);z-index:6;width:20px;height:20px;border-radius:50%;
  align-items:center;justify-content:center;background:rgba(20,20,40,.9);border:1px solid var(--dt-gl2);color:#fff;font-size:13px;padding:0;line-height:1}
/* 添加图标格 / 添加分组按钮 */
.dt-tile-add{background:rgba(255,255,255,.16) !important;border:1px dashed rgba(255,255,255,.5);box-shadow:none !important;color:rgba(255,255,255,.85);font-size:26px;font-weight:300;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.dt-add-cell{border:none;background:none;font-family:inherit}
.dt-grp-add .dt-grp-ico{color:rgba(255,255,255,.7)}
.dt-grp.drophl{background:rgba(255,255,255,.3);color:#fff}
.dt-grp.drophl .dt-grp-ico{transform:scale(1.1)}

/* ============ 编辑栏 ============ */
.editbar{position:fixed;top:18px;right:22px;left:auto;bottom:auto;transform:none;z-index:90;display:none;gap:10px;padding:0;border:none;background:none;-webkit-backdrop-filter:none;backdrop-filter:none}
body.dt-editing .editbar{display:flex}
.editbar button{border:none;border-radius:999px;padding:9px 22px;font-size:13px;font-weight:700;background:#4a9eff;color:#fff;box-shadow:0 6px 16px rgba(74,158,255,.5)}
.editbar button:hover{background:#3a8eef}

/* ============ 弹窗 / 商店 / 设置 / 壁纸面板 ============ */
/* 登录弹窗（LightSNS 式） */
.dt-modal.dt-login{width:340px;max-width:92vw;text-align:center;display:flex;flex-direction:column;gap:12px}
.dt-login .lg-brand{width:52px;height:52px;border-radius:14px;margin:2px auto 0}
.dt-login .lg-t{margin:0;font-size:19px}
.dt-login .lg-sub{margin:-6px 0 2px;font-size:12.5px;color:rgba(255,255,255,.55)}
.dt-login .lg-in{width:100%;box-sizing:border-box;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);border-radius:12px;padding:12px 14px;color:#fff;font-size:14px;font-family:inherit;outline:none;transition:all .2s}
.dt-login .lg-in:focus{border-color:rgba(74,158,255,.65);background:rgba(255,255,255,.14)}
.dt-login .lg-in::placeholder{color:rgba(255,255,255,.4)}
.dt-login .lg-agree{display:flex;gap:6px;align-items:center;font-size:12px;color:rgba(255,255,255,.6);text-align:left}
.dt-login .lg-agree a{color:#7ab7ff}
.dt-login .lg-err{margin:0;min-height:16px;font-size:12px;color:#ff8f8f}
.dt-login .lg-btn{width:100%;border:none;border-radius:12px;padding:12px 0;background:#4a9eff;color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:background .2s}
.dt-login .lg-btn:hover{background:#5da9ff}
.dt-login .lg-btn:disabled{opacity:.6;cursor:default}
.dt-login .lg-links{display:flex;justify-content:space-between;font-size:12.5px}
.dt-login .lg-links a{color:rgba(255,255,255,.6)}
.dt-login .lg-links a:hover{color:#fff}
.dt-login .lg-social{display:flex;flex-direction:column;gap:10px;margin-top:2px}
.dt-login .lg-social .sep{display:flex;align-items:center;gap:10px;font-size:11.5px;color:rgba(255,255,255,.4)}
.dt-login .lg-social .sep::before,.dt-login .lg-social .sep::after{content:"";flex:1;height:1px;background:rgba(255,255,255,.12)}
.dt-login .lg-social .row{display:flex;justify-content:center;gap:14px}
.dt-login .lg-social .sbtn{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);color:rgba(255,255,255,.85);transition:all .2s;text-decoration:none}
.dt-login .lg-social .sbtn:hover{background:rgba(255,255,255,.2);color:#fff;transform:translateY(-1px)}
.dt-login .lg-social .sbtn .iconfont{font-size:19px}
#dtMask{position:fixed;inset:0;z-index:130;background:rgba(0,0,10,.5);display:none;align-items:center;justify-content:center;padding:20px;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
#dtMask.show{display:flex;animation:dtMaskIn .26s ease}
#dtMask.show .dt-modal{animation:dtModalIn .34s cubic-bezier(.32,.72,0,1)}
@keyframes dtMaskIn{from{opacity:0}to{opacity:1}}
@keyframes dtModalIn{from{opacity:0;transform:translateY(12px) scale(.955)}to{opacity:1;transform:none}}
.dt-modal{width:420px;max-width:100%;max-height:86vh;overflow-y:auto;border-radius:20px;padding:24px 26px;color:#fff;
  background:rgba(32,32,40,.9);border:.5px solid rgba(255,255,255,.14);box-shadow:0 40px 90px rgba(0,0,0,.6);
  -webkit-backdrop-filter:blur(40px) saturate(1.4);backdrop-filter:blur(40px) saturate(1.4)}
.dt-modal.wide{width:640px}
.dt-modal h3{margin:0 0 6px;font-size:17px;font-weight:600}
.dt-modal .sub{margin:0 0 14px;font-size:12.5px;color:rgba(255,255,255,.6)}
.dt-modal label{display:block;font-size:12.5px;color:rgba(255,255,255,.7);margin:12px 0 5px}
.dt-modal label em{font-style:normal;color:#ff8787}
.dt-modal input[type=text],.dt-modal input[type=date],.dt-modal input[type=number],.dt-modal input[type=time],.dt-modal input:not([type]){width:100%;background:var(--dt-g1);border:1px solid var(--dt-gl);border-radius:11px;color:#fff;font-family:inherit;font-size:13.5px;padding:9px 12px;outline:none;color-scheme:dark}
.dt-modal .dt-ta{width:100%;min-height:150px;background:var(--dt-g1);border:1px solid var(--dt-gl);border-radius:11px;color:#fff;font-family:inherit;font-size:13.5px;padding:10px 12px;outline:none;resize:vertical;line-height:1.7;margin-top:5px}
.dt-modal .dt-ta:focus{border-color:var(--dt-gl2)}
.dt-modal .dt-seg-row{display:flex;gap:6px;margin-top:6px}
.dt-modal .dt-seg-row button{flex:1;background:var(--dt-g1);border:1px solid var(--dt-gl);border-radius:10px;color:rgba(255,255,255,.75);font-family:inherit;font-size:13px;padding:9px 0;cursor:pointer;transition:.16s}
.dt-modal .dt-seg-row button.on{background:#4a9eff;border-color:transparent;color:#fff;font-weight:600}
.dt-modal input:focus{border-color:var(--dt-gl2)}
.dt-modal .dt-err{color:#ff8787;font-size:12px;margin:6px 0 0;display:none}
.dt-modal .dt-btns{display:flex;gap:10px;justify-content:flex-end;margin-top:22px}
.dt-modal .dt-btns button{border-radius:11px;padding:9px 20px;font-size:13px;border:1px solid var(--dt-gl);background:none;color:rgba(255,255,255,.8)}
.dt-modal .dt-btns .ok{background:rgba(255,255,255,.3);color:#fff;font-weight:600}
.dt-modal .dt-btns button[disabled]{opacity:.5}
/* 新建分组弹窗：整宽蓝色创建按钮（对齐原型）+ 图标选择 */
.ng-modal .ng-create{width:100%;height:44px;margin-top:12px;border:none;border-radius:11px;background:#4a9eff;color:#fff;font-weight:700;font-size:14px;cursor:pointer;transition:background .16s}
.ng-modal .ng-create:hover{background:#3a8eef}
.ng-modal .ng-lb{margin:14px 0 8px;font-size:12px;color:rgba(255,255,255,.55)}
.ng-modal .ng-iconrow{display:flex;align-items:center;gap:10px}
.ng-modal .ng-icoprev{width:44px;height:44px;flex:none;border-radius:11px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;color:#fff;font-size:19px}
.ng-modal .ng-icoprev svg{width:20px;height:20px}
.ng-modal .ng-icoprev .ng-auto{font-size:10.5px;color:rgba(255,255,255,.45)}
.ng-modal .ng-pick{border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.07);color:rgba(255,255,255,.85);border-radius:10px;padding:10px 15px;font-size:12.5px;cursor:pointer;font-family:inherit;transition:.15s}
.ng-modal .ng-pick:hover{background:rgba(255,255,255,.14);color:#fff}
.ng-modal .ng-clear{color:rgba(255,255,255,.5)}
/* 图标选择弹窗（Font Awesome 库） */
.dt-modal.ip-modal{width:560px}
.ip-modal .ip-search{display:flex;align-items:center;gap:9px;height:38px;padding:0 13px;border-radius:11px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);margin:2px 0 4px}
.ip-modal .ip-search svg{width:15px;height:15px;color:rgba(255,255,255,.5);flex:none}
.dt-modal.ip-modal .ip-search input{flex:1;background:none;border:none;border-radius:0;box-shadow:none;padding:0;outline:none;color:#fff;font-family:inherit;font-size:13.5px;min-width:0;width:auto}
.ip-modal .ip-body{max-height:52vh;overflow-y:auto;padding:2px 2px 6px}
.ip-modal .ip-sec{font-size:11.5px;font-weight:600;color:rgba(255,255,255,.45);margin:13px 2px 7px}
.ip-modal .ip-sec:first-child{margin-top:4px}
.ip-modal .ip-grid{display:grid;grid-template-columns:repeat(9,1fr);gap:7px}
.ip-modal .ip-grid button{height:40px;border:none;border-radius:10px;background:rgba(255,255,255,.06);color:rgba(255,255,255,.8);font-size:16px;cursor:pointer;transition:.13s}
.ip-modal .ip-grid button:hover{background:#4a9eff;color:#fff}
/* Dock 分组的字体图标（用户自选 FA） */
.dt-grp-ico i{font-size:18px;line-height:1}
/* 设置开关 */
.optrow{display:flex;align-items:center;justify-content:space-between;padding:11px 2px;border-bottom:1px solid var(--dt-gl);font-size:13.5px}
.dt-switch{position:relative;width:40px;height:22px;flex:none}
.dt-switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:2}
.dt-switch i{position:absolute;inset:0;border-radius:999px;background:var(--dt-g2);border:1px solid var(--dt-gl);transition:background .2s}
.dt-switch i::after{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s var(--dt-ease)}
.dt-switch input:checked + i{background:#4b5bdc}
.dt-switch input:checked + i::after{transform:translateX(18px)}
/* 壁纸面板 */
.wpgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:4px}
.wp-thumb{height:64px;border-radius:14px;border:2px solid transparent;padding:0;cursor:pointer}
.wp-thumb.on{border-color:#fff}
.wp-thumb.wp-0{background:radial-gradient(70% 60% at 78% 18%,rgba(255,176,110,.6),transparent 55%),radial-gradient(60% 60% at 16% 85%,rgba(122,92,210,.5),transparent 55%),linear-gradient(158deg,#2c2118,#1b1723 55%,#101522)}
.wp-thumb.wp-1{background:radial-gradient(70% 60% at 20% 18%,rgba(90,180,255,.6),transparent 55%),radial-gradient(60% 60% at 85% 85%,rgba(60,220,180,.5),transparent 55%),linear-gradient(160deg,#0e2233,#122a3a 55%,#0b1a2a)}
.wp-thumb.wp-2{background:radial-gradient(70% 60% at 80% 20%,rgba(255,120,170,.6),transparent 55%),radial-gradient(60% 60% at 15% 85%,rgba(150,90,255,.5),transparent 55%),linear-gradient(160deg,#2a1230,#3a1636 55%,#1a1030)}
.wp-thumb.wp-3{background:linear-gradient(160deg,#3a3f47,#22262c 55%,#15181d)}
.wprow{display:flex;gap:10px;align-items:center;margin-top:14px;flex-wrap:wrap}
.wprow input[type=color]{width:44px;height:34px;border:1px solid var(--dt-gl);border-radius:9px;background:var(--dt-g1);padding:2px;cursor:pointer}
.wprow .mini,.optrow .mini{border:1px solid var(--dt-gl);background:var(--dt-g1);color:rgba(255,255,255,.85);border-radius:9px;padding:8px 14px;font-size:12.5px;cursor:pointer;flex:none}
.wprow .mini:hover,.optrow .mini:hover{background:var(--dt-g2);color:#fff}
.optrow .mini.danger{border-color:rgba(255,99,99,.4);color:#ff8a8a}
.optrow .mini.danger:hover{background:rgba(255,80,80,.16);color:#ff6b6b}
/* 设置面板：左菜单 + 右内容（同「添加到桌面」布局） */
.dt-modal.set-modal.sm2{padding:0;overflow:hidden;width:600px;max-width:100%;position:relative}
.sm2 .am-title{margin:0;padding:17px 20px;font-size:16px;font-weight:600;border-bottom:1px solid var(--dt-gl)}
.sm2 .sm-wrap{display:grid;grid-template-columns:140px 1fr;min-height:380px}
.sm2 .sm-menu{border-right:1px solid var(--dt-gl);padding:12px 10px;display:flex;flex-direction:column;gap:3px;background:rgba(255,255,255,.03)}
.sm2 .sm-menu button{appearance:none;border:0;background:none;font-family:inherit;cursor:pointer;text-align:left;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:11px;font-size:13.5px;color:rgba(255,255,255,.7);font-weight:500;transition:.16s}
.sm2 .sm-menu button:hover{background:var(--dt-g1);color:#fff}
.sm2 .sm-menu button[aria-selected="true"]{background:rgba(74,158,255,.92);color:#fff}
.sm2 .sm-menu button svg{width:17px;height:17px;flex:none}
.sm2 .sm-panes{padding:16px 18px 20px;max-height:62vh;overflow-y:auto;min-width:0}
.sm2 .sm-pane .sub{font-size:12.5px;color:rgba(255,255,255,.55);margin:0 0 13px;line-height:1.7}
@media (max-width:600px){.sm2 .sm-wrap{grid-template-columns:1fr}.sm2 .sm-menu{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--dt-gl)}.sm2 .sm-menu button{flex:none}}
/* 设置面板：iOS 分组卡片（对齐原型 setgroup/setrow） */
.set-modal .setgroup{background:rgba(255,255,255,.05);border-radius:12px;overflow:hidden;margin-bottom:4px}
.set-modal .setgroup+.dt-seth{margin-top:16px}
.set-modal .setrow{display:flex;align-items:center;gap:12px;padding:11px 14px;position:relative;font-size:13.5px;width:100%;color:#fff;text-align:left}
.set-modal .setrow+.setrow::before{content:"";position:absolute;top:0;left:52px;right:0;height:1px;background:rgba(255,255,255,.07)}
.set-modal .setrow .si{width:26px;height:26px;border-radius:7px;flex:none;display:flex;align-items:center;justify-content:center}
.set-modal .setrow .si svg{width:14px;height:14px}
.set-modal .setrow .t{flex:1;min-width:0}
.set-modal .setrow .t small{display:block;font-size:11px;color:rgba(255,255,255,.45);margin-top:2px}
.set-modal .setrow .chev{color:rgba(255,255,255,.35);display:flex;flex:none}
.set-modal .setrow .chev svg{width:14px;height:14px}
.set-modal button.setrow.act{border:none;background:none;font-family:inherit;cursor:pointer;transition:background .14s}
.set-modal button.setrow.act:hover{background:rgba(255,255,255,.06)}
/* 站内确认弹层（替代原生 confirm） */
#dtConfirmOv{position:fixed;inset:0;z-index:220;background:rgba(0,0,10,.45);display:none;align-items:center;justify-content:center;padding:20px;
  -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
#dtConfirmOv.show{display:flex;animation:dtMaskIn .2s ease}
#dtConfirmOv .dtc-box{width:340px;max-width:100%;border-radius:18px;padding:22px 22px 18px;color:#fff;
  background:rgba(32,32,40,.95);border:.5px solid rgba(255,255,255,.14);box-shadow:0 30px 70px rgba(0,0,0,.55);
  -webkit-backdrop-filter:blur(40px) saturate(1.4);backdrop-filter:blur(40px) saturate(1.4);
  animation:dtModalIn .26s cubic-bezier(.32,.72,0,1)}
#dtConfirmOv h4{margin:0 0 8px;font-size:15.5px;font-weight:700}
#dtConfirmOv .dtc-msg{margin:0;font-size:13px;line-height:1.7;color:rgba(255,255,255,.75)}
#dtConfirmOv .dtc-btns{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}
#dtConfirmOv .dtc-btns button{border:none;border-radius:10px;padding:9px 18px;font-size:13px;font-family:inherit;cursor:pointer;font-weight:600}
#dtConfirmOv .dtc-cancel{background:rgba(255,255,255,.1);color:rgba(255,255,255,.85)}
#dtConfirmOv .dtc-cancel:hover{background:rgba(255,255,255,.16)}
#dtConfirmOv .dtc-ok{background:#4a9eff;color:#fff}
#dtConfirmOv .dtc-ok.danger{background:#e5484d}
#dtConfirmOv .dtc-ok:hover{filter:brightness(1.08)}
/* 设置面板分区标题与说明 */
.dt-seth{margin:18px 0 2px;font-size:12px;font-weight:600;letter-spacing:.4px;color:rgba(255,255,255,.5)}
.dt-seth-sub{display:block;margin-top:3px;font-size:11.5px;line-height:1.5;color:rgba(255,255,255,.45);max-width:280px}
/* 组件商店 */
.store-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.store-card{border-radius:16px;padding:14px 15px;background:var(--dt-g1);border:1px solid var(--dt-gl);display:flex;flex-direction:column;gap:6px}
.store-card .nm{font-size:13.5px;font-weight:600}
.store-card .sz{font-family:var(--mono);font-size:10.5px;color:rgba(255,255,255,.5)}
.store-card button{margin-top:4px;border:none;border-radius:9px;padding:7px 0;font-size:12.5px;background:rgba(255,255,255,.28);color:#fff;font-weight:600}
.store-card button.added{background:var(--dt-g1);border:1px solid var(--dt-gl);color:rgba(255,255,255,.55);cursor:default}
.store-card button.hb-rm{background:rgba(255,90,90,.22);color:#fff}

/* ============ 一言 / 版权 ============ */
#dtHito{display:block;text-align:center;margin:42px auto 6px;font-size:12.5px;font-weight:300;color:rgba(255,255,255,.75);
  text-shadow:0 1px 8px rgba(0,0,0,.5);cursor:pointer;white-space:nowrap;max-width:80vw;overflow:hidden;text-overflow:ellipsis;padding:6px 10px}
#dtHito:hover{color:#fff}
body.dt-hito-fixed #dtHito{position:fixed;left:50%;bottom:34px;transform:translateX(-50%);z-index:30;margin:0}
.dt-flinks{max-width:920px;margin:14px auto 0;padding:0 16px;text-align:center;font-size:11px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:3px 14px}
.dt-flinks .t{color:rgba(255,255,255,.28);letter-spacing:1px}
.dt-flinks a{color:rgba(255,255,255,.36);text-decoration:none;transition:color .2s}
.dt-flinks a:hover{color:rgba(255,255,255,.8)}
.dt-flinks .more{color:rgba(74,158,255,.55)}
body.dt-minimal .dt-flinks{display:none}
.dt-copyright{text-align:center;font-size:11px;color:rgba(255,255,255,.45);padding:4px 0 10px}
.dt-copyright a{color:rgba(255,255,255,.55)}
.dt-copyright a:hover{color:#fff}
body.dt-hito-fixed .dt-copyright{position:fixed;left:50%;bottom:10px;transform:translateX(-50%);z-index:30;padding:0;white-space:nowrap}

/* ============ 右键菜单 / Toast ============ */
#dtCtx{position:fixed;z-index:120;min-width:180px;display:none;padding:6px;border-radius:14px;
  background:rgba(25,25,50,.85);border:1px solid var(--dt-gl);box-shadow:0 16px 48px rgba(0,0,0,.4);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
#dtCtx.show{display:block}
#dtCtx button{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;text-align:left;padding:8px 12px;font-size:13px;color:rgba(255,255,255,.85);border-radius:9px}
#dtCtx button:hover{background:var(--dt-g2);color:#fff}
#dtCtx button svg{width:15px;height:15px;flex:none}
#dtToast{position:fixed;left:50%;top:20px;transform:translateX(-50%) translateY(-80px);z-index:150;
  background:rgba(255,255,255,.94);color:#111;padding:10px 22px;border-radius:999px;font-size:13px;
  transition:transform .35s var(--dt-ease);pointer-events:none;white-space:nowrap;box-shadow:0 10px 40px rgba(0,0,0,.3)}
#dtToast.show{transform:translateX(-50%) translateY(0)}

/* ============ 极简模式（平滑：时钟放大上移、侧栏淡出，对齐原型） ============ */
body.dt-minimal .dt-widgets,body.dt-minimal #dtDesk,body.dt-minimal .dt-copyright{display:none}
.dt-dock{transition:opacity .35s var(--dt-ease),transform .35s var(--dt-ease)}
body.dt-minimal .dt-dock{opacity:0;pointer-events:none;transform:translateX(-10px)}
body.dt-minimal #dtClock{margin-top:22vh;font-size:clamp(64px,9vw,110px)}
body.dt-minimal #dtDate{font-size:15px;margin-top:2px}
body.dt-minimal .editbar{display:none}
/* 极简下保留一言，居中显示在搜索下方 */
body.dt-minimal #dtHito{display:block;position:static;transform:none;left:auto;bottom:auto;margin:28px auto 0;color:rgba(255,255,255,.6)}

/* ============ 响应式 ============ */
@media (max-width:1180px){.dt-main{margin-left:72px;margin-right:14px}}
@media (max-width:900px){.dt-widgets,.dt-grid{grid-template-columns:repeat(6,1fr)}}
@media (max-width:640px){
  .dt-widgets,.dt-grid{grid-template-columns:repeat(4,1fr)}
  .dt-w-4x2,.dt-w-4x1{grid-column:span 4}
  .dt-main{padding:16px 14px 120px;margin-left:auto;margin-right:auto}
  .dt-dock{flex-direction:row;width:auto;top:auto;bottom:0;left:0;right:0;padding:8px 10px;align-items:center;
    overflow-x:auto;overflow-y:hidden;
    background:rgba(15,15,30,.5);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
  .dt-dock-sp{flex:0 0 8px}   /* 移动端横向：弹簧缩小，控制按钮紧随分组滚动 */
  .dt-avatar,.dt-avatar-lbl{display:none}
  #dtHito,.dt-copyright{position:static !important;transform:none !important}
}
@media (prefers-reduced-motion:reduce){
  body.io-desktop-page *{transition:none !important;animation:none !important}
}

/* ================================================================
 * 桌面版详情页（body.io-desktop-single）
 * ================================================================ */
body.io-desktop-single{--ds-ink:#1d1f27;--ds-ink2:#565b68;--ds-ink3:#9aa0ad;--ds-paper:#f6f7f9;--ds-card:#fff;--ds-line:#e7e8ec;--ds-accent:#4b5bdc}
/* 隐藏主题头部/悬浮工具，并清掉主题为固定头部预留的 body 顶部间距（否则露黑条） */
body.io-desktop-single header.main-header,
body.io-desktop-single .mobile-header,
body.io-desktop-single .tools-right,
body.io-desktop-single #loading_fx{display:none !important}
body.io-desktop-single{padding-top:0 !important;background:var(--ds-paper) !important}
/* 评论区改亮色，匹配纸面卡片（覆盖主题深色 .card/.card-body 表单外壳） */
body.io-desktop-single .ds-card .card,
body.io-desktop-single .ds-card .card-body,
body.io-desktop-single .ds-card .comment-respond,
body.io-desktop-single .ds-card .comments,
body.io-desktop-single .ds-card .comment-list,
body.io-desktop-single .ds-card .comment-body{background:transparent !important;color:var(--ds-ink);box-shadow:none !important;border:none !important}
body.io-desktop-single .ds-card .comments-title{color:var(--ds-ink)}
body.io-desktop-single .ds-card input,
body.io-desktop-single .ds-card textarea{background:var(--ds-paper) !important;color:var(--ds-ink) !important;border:1px solid var(--ds-line) !important;border-radius:10px !important}
body.io-desktop-single .ds-card input::placeholder,
body.io-desktop-single .ds-card textarea::placeholder{color:var(--ds-ink3) !important}
/* 截图 API 返回异常占位时，灰底不至于太丑 */
body.io-desktop-single .ds-shot-img{background:linear-gradient(135deg,#e9ecf2,#dfe3ea)}
.io-ds{-webkit-font-smoothing:antialiased}
.io-ds .ds-wrap{max-width:1120px;margin:0 auto;padding:0 22px}
/* Hero（玻璃，延续桌面壁纸基调） */
.ds-hero{position:relative;color:#fff;overflow:hidden;
  background:radial-gradient(60% 80% at 15% 10%,#2b5876 0%,transparent 60%),radial-gradient(50% 70% at 85% 15%,#7b2ff7 0%,transparent 55%),radial-gradient(70% 90% at 70% 90%,#0f9b8e 0%,transparent 55%),linear-gradient(160deg,#101c3a 0%,#1e1145 55%,#0c2b33 100%)}
.ds-topbar{display:flex;align-items:center;gap:18px;padding:16px 0;font-size:13px}
.ds-back{display:inline-flex;align-items:center;gap:6px;color:rgba(255,255,255,.85);padding:7px 14px;border-radius:999px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.ds-back:hover{background:rgba(255,255,255,.22);color:#fff}
.ds-back svg{width:16px;height:16px}
.ds-crumb{font-size:12.5px;color:rgba(255,255,255,.6)}
.ds-crumb a{color:rgba(255,255,255,.75)}.ds-crumb a:hover{color:#fff}
.ds-head{display:grid;grid-template-columns:1.15fr .85fr;gap:44px;align-items:center;padding:28px 0 46px}
.ds-idrow{display:flex;align-items:center;gap:16px}
.ds-favicon{width:64px;height:64px;border-radius:17px;background:#fff;flex:none;display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.ds-favicon img{width:44px;height:44px;object-fit:contain}
.ds-info h1{margin:0;font-size:clamp(24px,3.2vw,34px);font-weight:700;color:#fff}
.ds-tagline{margin:5px 0 0;font-size:14px;color:rgba(255,255,255,.78);font-weight:300}
.ds-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.ds-chips .dt-chip,.ds-chips a{font-size:12.5px;padding:5px 13px;border-radius:999px;color:rgba(255,255,255,.85);background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);display:inline-block}
.ds-chips a:hover{background:rgba(255,255,255,.24);color:#fff}
.ds-trust{display:flex;gap:20px;flex-wrap:wrap;margin-top:18px;font-size:12.5px;color:rgba(255,255,255,.65)}
.ds-trust b{color:#fff;font-weight:600;font-variant-numeric:tabular-nums;margin-right:3px}
.ds-cta{margin-top:26px}
.ds-go{display:inline-flex;align-items:center;gap:9px;background:#fff;color:#141625;font-size:15px;font-weight:700;border-radius:999px;padding:13px 30px;box-shadow:0 10px 34px rgba(0,0,0,.35);transition:transform .2s cubic-bezier(.32,.72,0,1)}
.ds-go:hover{transform:translateY(-2px);color:#141625}
.ds-go svg{width:17px;height:17px}
.ds-note{margin:12px 0 0;font-size:11.5px;color:rgba(255,255,255,.45)}
.ds-shot{display:block;border-radius:18px;overflow:hidden;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);box-shadow:0 30px 70px rgba(0,0,0,.45);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.ds-shot-bar{display:flex;align-items:center;gap:6px;padding:10px 14px;background:rgba(255,255,255,.08);border-bottom:1px solid rgba(255,255,255,.12)}
.ds-shot-bar i{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.4)}
.ds-shot-bar i:first-child{background:#ff5f57}.ds-shot-bar i:nth-child(2){background:#febc2e}.ds-shot-bar i:nth-child(3){background:#28c840}
.ds-url{flex:1;margin-left:8px;font-family:var(--mono);font-size:11px;color:rgba(255,255,255,.6);background:rgba(0,0,0,.25);border-radius:7px;padding:4px 12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ds-shot-img{aspect-ratio:456/285;overflow:hidden;background:#0d1117}
.ds-shot-img img{width:100%;height:100%;object-fit:cover;display:block}
.ds-shot:hover .ds-shot-img img{transform:scale(1.02);transition:transform .4s ease}
/* 正文（纸面） */
.ds-body{position:relative;z-index:1;margin-top:-18px;border-radius:22px 22px 0 0;background:var(--ds-paper);padding-top:34px;color:var(--ds-ink)}
.ds-cols{display:grid;grid-template-columns:1fr 316px;gap:26px;align-items:start;padding-bottom:60px}
.ds-main{min-width:0}
.ds-card{background:var(--ds-card);border:1px solid var(--ds-line);border-radius:16px;padding:24px 28px;margin-bottom:20px}
.ds-card h2{margin:0 0 14px;font-size:17px;font-weight:700;color:var(--ds-ink)}
.ds-content{font-size:14.5px;color:var(--ds-ink2);line-height:1.8}
.ds-content img{max-width:100%;height:auto;border-radius:8px}
.ds-content a{color:var(--ds-accent)}
.ds-aside{position:sticky;top:20px}
.ds-acard{background:var(--ds-card);border:1px solid var(--ds-line);border-radius:16px;padding:20px 22px;margin-bottom:16px}
.ds-acard h3{margin:0 0 14px;font-size:14px;font-weight:700;color:var(--ds-ink)}
.ds-meta{display:grid;font-size:13px}
.ds-meta .row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed var(--ds-line)}
.ds-meta .row:last-child{border-bottom:none}
.ds-meta .k{color:var(--ds-ink3);flex:none}
.ds-meta .v{color:var(--ds-ink);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ds-meta .v.mono{font-family:var(--mono);font-size:12px}
.ds-disclaim{font-size:11.5px;color:var(--ds-ink3);line-height:1.8}
@media (max-width:920px){
  .ds-head{grid-template-columns:1fr;gap:26px;padding-bottom:34px}
  .ds-cols{grid-template-columns:1fr}
  .ds-aside{position:static}
}

/* ================================================================
 * 性能兜底：无 backdrop-filter 支持 或 低端设备(.dt-lite) → 玻璃退化为半透明纯色
 * iTab 文档强调：毛玻璃是性能大户，低端机需降级避免翻车
 * ================================================================ */
@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))){
  body.io-desktop-page .dt-search,
  body.io-desktop-page #dtEngineMenu,body.io-desktop-page #dtSuggest,
  body.io-desktop-page #dtCtx,body.io-desktop-page .dt-dock .dt-grp.on,
  body.io-desktop-page .dt-fab button,body.io-desktop-page .dt-avatar,
  body.io-desktop-single .ds-shot{background:rgba(28,28,52,.9) !important}
  body.io-desktop-page .dt-wcard:not(.dt-wea-card):not(.wc-cal){background:rgba(28,28,36,.92) !important}
  body.io-desktop-page .dt-wcard.wc-cal{background:rgba(255,255,255,.97) !important}
  body.io-desktop-page .dt-modal{background:rgba(30,30,58,.98) !important}
}
body.dt-lite .dt-search,body.dt-lite #dtEngineMenu,
body.dt-lite #dtSuggest,body.dt-lite #dtCtx,body.dt-lite .dt-fab button,
body.dt-lite .dt-avatar,body.dt-lite .dt-dock .dt-grp.on{
  -webkit-backdrop-filter:none !important;backdrop-filter:none !important;background:rgba(28,28,52,.88) !important}
body.dt-lite .dt-wcard:not(.dt-wea-card):not(.wc-cal){background:rgba(28,28,36,.92) !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
body.dt-lite .dt-wcard.wc-cal{background:rgba(255,255,255,.97) !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
body.dt-lite .dt-wcard.dt-wea-card{-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
body.dt-lite *{transition-duration:.12s !important}

/* ================================================================
 * 桌面版搜索结果页（body.io-desktop-search）
 * 与玻璃桌面同一暖夜壁纸与玻璃语言；由 search-desktop.php 渲染
 * ================================================================ */
/* 过卷(橡皮筋)露出 html 根时不露白（同桌面 io-dt-html 的处理；:has 渐进增强） */
html:has(body.io-desktop-search){background:#101522}
html:has(body.io-desktop-single){background:#f6f7f9}
body.io-desktop-search header.main-header,
body.io-desktop-search footer.main-footer,
body.io-desktop-search .mobile-header,
body.io-desktop-search #loading_fx{display:none}
body.io-desktop-search .tools-right{display:none !important}
body.io-desktop-search{margin:0;padding-top:0 !important;overflow-x:hidden;color:#fff;-webkit-font-smoothing:antialiased;
  font-family:"MiSans","HarmonyOS Sans SC","HarmonyOS Sans","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  background:
    radial-gradient(70% 55% at 78% 16%,rgba(255,176,110,.42),transparent 55%),
    radial-gradient(60% 55% at 16% 88%,rgba(122,92,210,.34),transparent 55%),
    radial-gradient(50% 45% at 92% 82%,rgba(74,158,255,.22),transparent 55%),
    radial-gradient(120% 120% at 50% 42%,transparent 40%,rgba(0,0,0,.5) 100%),
    linear-gradient(158deg,#2c2118,#1b1723 52%,#101522) !important;
  background-attachment:fixed !important}

.io-dsr{min-height:100vh;position:relative}
.io-dsr::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.dsr-wrap{position:relative;z-index:1;max-width:820px;margin:0 auto;padding:26px 20px 72px}
.io-dsr a{color:inherit;text-decoration:none}
.io-dsr a:focus-visible,.io-dsr button:focus-visible{outline:2px solid rgba(255,255,255,.65);outline-offset:2px}

/* 顶栏返回 */
.dsr-topbar{margin-bottom:20px}
.dsr-back{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:rgba(255,255,255,.78);
  padding:7px 14px 7px 10px;border-radius:99px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:all .22s cubic-bezier(.32,.72,0,1)}
.dsr-back:hover{background:rgba(255,255,255,.2);color:#fff}
.dsr-back svg{width:15px;height:15px}

/* 玻璃搜索框 */
.dsr-form{display:flex;align-items:center;gap:10px;padding:6px 6px 6px 16px;border-radius:99px;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.24);
  -webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 10px 34px rgba(0,0,0,.22);
  transition:all .22s cubic-bezier(.32,.72,0,1)}
.dsr-form:focus-within{background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.38)}
.dsr-ficon{width:17px;height:17px;flex:none;color:rgba(255,255,255,.6)}
.dsr-form input[type=search]{flex:1;min-width:0;background:none;border:none;outline:none;color:#fff;font-size:15.5px;font-family:inherit;padding:9px 0}
.dsr-form input[type=search]::placeholder{color:rgba(255,255,255,.45)}
.dsr-form input[type=search]::-webkit-search-cancel-button{display:none}
.dsr-form button{flex:none;border:none;font-family:inherit;font-size:14px;font-weight:600;color:#1d1f27;
  background:rgba(255,255,255,.92);border-radius:99px;padding:9px 22px;cursor:pointer;transition:all .22s cubic-bezier(.32,.72,0,1)}
.dsr-form button:hover{background:#fff}

/* 标题行 */
.dsr-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:26px 2px 14px}
.dsr-head h1{margin:0;font-size:21px;font-weight:700;letter-spacing:.2px;text-shadow:0 1px 10px rgba(0,0,0,.35)}
.dsr-cnt{font-size:12.5px;color:rgba(255,255,255,.55)}

/* 类型 Tab */
.dsr-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}
.dsr-tab{font-size:13px;color:rgba(255,255,255,.72);padding:6px 15px;border-radius:99px;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:all .22s cubic-bezier(.32,.72,0,1)}
.dsr-tab:hover{background:rgba(255,255,255,.18);color:#fff}
.dsr-tab.on{background:rgba(255,255,255,.92);border-color:transparent;color:#1d1f27;font-weight:600}

/* 结果卡 */
.dsr-list{display:flex;flex-direction:column;gap:12px}
.dsr-card{display:flex;align-items:center;gap:14px;padding:15px 16px;border-radius:18px;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  transition:all .22s cubic-bezier(.32,.72,0,1)}
.dsr-card:hover{background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.3);transform:translateY(-1px);box-shadow:0 12px 32px rgba(0,0,0,.25)}
.dsr-ico{width:46px;height:46px;flex:none;border-radius:12px;overflow:hidden;background:rgba(255,255,255,.16);
  display:flex;align-items:center;justify-content:center}
.dsr-ico img{width:100%;height:100%;object-fit:cover}
.dsr-ico i{font-style:normal;font-size:19px;font-weight:700;color:rgba(255,255,255,.85)}
.dsr-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.dsr-tline{display:flex;align-items:center;gap:8px;min-width:0}
.dsr-tline b{font-size:15.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dsr-tline em{font-style:normal;flex:none;font-size:10.5px;color:rgba(255,255,255,.65);padding:2px 8px;border-radius:99px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.14)}
.dsr-desc{font-size:12.8px;line-height:1.55;color:rgba(255,255,255,.6);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dsr-meta{display:flex;gap:14px;font-size:11.5px;color:rgba(255,255,255,.42)}
.dsr-arrow{width:16px;height:16px;flex:none;color:rgba(255,255,255,.35);transition:all .22s cubic-bezier(.32,.72,0,1)}
.dsr-card:hover .dsr-arrow{color:rgba(255,255,255,.8);transform:translateX(2px)}

/* 空态 */
.dsr-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:72px 20px;text-align:center;
  border-radius:18px;background:rgba(255,255,255,.08);border:1px dashed rgba(255,255,255,.2)}
.dsr-empty svg{width:40px;height:40px;color:rgba(255,255,255,.4);margin-bottom:4px}
.dsr-empty p{margin:0;font-size:15.5px;font-weight:600;color:rgba(255,255,255,.85)}
.dsr-empty span{font-size:12.5px;color:rgba(255,255,255,.5)}

/* WP 分页（压制 Bootstrap .pagination 撞车样式） */
body.io-desktop-search nav.pagination{display:flex;justify-content:center;margin:26px 0 0;border-radius:0;background:none}
body.io-desktop-search .nav-links{display:flex;gap:8px;align-items:center}
body.io-desktop-search .nav-links .page-numbers{min-width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;
  padding:0 10px;border-radius:12px;font-size:13.5px;color:rgba(255,255,255,.75);
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:all .22s cubic-bezier(.32,.72,0,1)}
body.io-desktop-search .nav-links a.page-numbers:hover{background:rgba(255,255,255,.2);color:#fff}
body.io-desktop-search .nav-links .page-numbers.current{background:rgba(255,255,255,.92);border-color:transparent;color:#1d1f27;font-weight:600}
body.io-desktop-search .nav-links .page-numbers.dots{background:none;border:none}
body.io-desktop-search nav.pagination .screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* 移动端 */
@media (max-width:640px){
  .dsr-wrap{padding:18px 14px 56px}
  .dsr-head h1{font-size:18px}
  .dsr-card{padding:13px 13px}
  .dsr-ico{width:42px;height:42px}
  .dsr-desc{-webkit-line-clamp:2}
}

/* ================================================================
 * 轮播广告组件（站长预设；商店隐藏，编辑态可移除）
 * ================================================================ */
.dt-w[data-w="ads"] .wads-tag{font-size:10px;font-weight:600;color:var(--wt3,rgba(255,255,255,.55));border:1px solid rgba(255,255,255,.25);border-radius:5px;padding:1px 5px;letter-spacing:1px}
.dt-w[data-w="ads"] .wads-put{margin-left:auto;font-size:11px;color:var(--wt3,rgba(255,255,255,.6));text-decoration:none}
.dt-w[data-w="ads"] .wads-put:hover{color:var(--wt,#fff)}
.wads-list{display:flex;flex-direction:column;gap:6px;transition:opacity .22s ease}
.dt-w.s4x2[data-w="ads"] .wads-list{flex-direction:row;flex-wrap:wrap}
.dt-w.s4x2[data-w="ads"] .wads-it{width:calc(25% - 5px)}
.wads-fade{opacity:0}
.wads-it{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:10px;background:rgba(255,255,255,.08);text-decoration:none;color:var(--wt,#fff);transition:background .2s;min-width:0}
.wads-it:hover{background:rgba(255,255,255,.16)}
.wads-ico{position:relative;width:22px;height:22px;flex:none;border-radius:6px;overflow:hidden;background:rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center}
.wads-ico i{font-style:normal;font-size:11px;font-weight:700;color:var(--wt2,rgba(255,255,255,.85))}
.wads-ico img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.wads-nm{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wads-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:calc(100% - 30px);text-align:center}
.wads-empty p{margin:0;font-size:13.5px;font-weight:600;color:var(--wt,#fff)}
.wads-empty span{font-size:11px;color:var(--wt3,rgba(255,255,255,.5))}
.wads-empty .wads-cta{margin-top:6px;font-size:12px;color:#fff;background:var(--acc,#4a9eff);border-radius:99px;padding:6px 16px;text-decoration:none}

/* 投放弹窗（桌面原生下单） */
.dt-modal.dt-adbuy{width:360px;max-width:92vw;display:flex;flex-direction:column;gap:10px;text-align:left}
.dt-adbuy h3{margin:0;font-size:17px}
.dt-adbuy .adb-sub{margin:-4px 0 2px;font-size:12px;color:rgba(255,255,255,.55)}
.dt-adbuy .adb-in{width:100%;box-sizing:border-box;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);border-radius:11px;padding:10px 12px;color:#fff;font-size:13.5px;font-family:inherit;outline:none;transition:border .2s}
.dt-adbuy .adb-in:focus{border-color:rgba(74,158,255,.65)}
.dt-adbuy .adb-in::placeholder{color:rgba(255,255,255,.4)}
.dt-adbuy .adb-lbl{font-size:12px;color:rgba(255,255,255,.6);margin-top:2px;display:flex;justify-content:space-between}
.dt-adbuy .adb-lbl em{font-style:normal;color:rgba(255,255,255,.4)}
.dt-adbuy .adb-pks{display:flex;flex-wrap:wrap;gap:8px}
.dt-adbuy .adb-pk{display:flex;align-items:center;gap:6px;padding:7px 12px;border-radius:10px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);font-size:12.5px;cursor:pointer}
.dt-adbuy .adb-pk:has(input:checked){border-color:rgba(74,158,255,.7);background:rgba(74,158,255,.16)}
.dt-adbuy .adb-pk input[type=radio]{accent-color:#4a9eff;margin:0}
.dt-adbuy .adb-pk b{color:#8fc3ff;font-weight:600}
.dt-adbuy .adb-pk i{font-style:normal;font-size:12px;color:rgba(255,255,255,.6)}
.dt-adbuy .adb-pk-c input[type=number]{width:56px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);border-radius:7px;color:#fff;padding:3px 6px;font-size:12px;outline:none}
.dt-adbuy .adb-pms{display:flex;gap:8px}
.dt-adbuy .adb-pm{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px 0;border-radius:10px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);font-size:13px;cursor:pointer}
.dt-adbuy .adb-pm:has(input:checked){border-color:rgba(74,158,255,.7);background:rgba(74,158,255,.16)}
.dt-adbuy .adb-pm input{accent-color:#4a9eff;margin:0}
.dt-adbuy .adb-err{margin:0;min-height:15px;font-size:12px;color:#ff8f8f}
.dt-adbuy .adb-go{width:100%;border:none;border-radius:11px;padding:11px 0;background:#4a9eff;color:#fff;font-size:14.5px;font-weight:600;cursor:pointer}
.dt-adbuy .adb-go:hover{background:#5da9ff}
.dt-adbuy .adb-go:disabled{opacity:.6;cursor:default}
.dt-adbuy .adb-qr{display:flex;justify-content:center;padding:6px 0}
.dt-adbuy .adb-qr img{width:180px;height:180px;border-radius:12px;background:#fff;padding:8px;box-sizing:content-box}
.wads-put{border:none;background:none;font-family:inherit;cursor:pointer}
.wads-cta{border:none;font-family:inherit;cursor:pointer}

.dt-adbuy .adb-nopm{font-size:12px;color:rgba(255,180,120,.85);padding:8px 0}

.wads-banner{position:relative;display:block;height:100%;min-height:84px;border-radius:12px;overflow:hidden;background:rgba(255,255,255,.08)}
.wads-banner img{width:100%;height:100%;object-fit:cover;display:block}
.wads-banner span{position:absolute;left:0;right:0;bottom:0;padding:14px 10px 6px;font-size:12px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.55));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wads-list:has(.wads-banner){display:block}
.dt-adbuy .adb-types .adb-pm{padding:7px 0;font-size:12.5px}

/* 文字画布广告 + 轮播圆点 + 配色板 */
.wads-canvas{position:relative;display:flex;align-items:center;justify-content:center;height:100%;min-height:84px;border-radius:12px;overflow:hidden;text-decoration:none;transition:transform .2s}
.wads-canvas:hover{transform:scale(1.015)}
.wads-canvas span{font-size:16px;font-weight:700;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.3);padding:0 14px;text-align:center;letter-spacing:.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.wads-c-blue{background:linear-gradient(135deg,#4a9eff,#2b5bd8)}
.wads-c-violet{background:linear-gradient(135deg,#8a7bff,#5b3fd6)}
.wads-c-ember{background:linear-gradient(135deg,#ff9a5a,#e2543e)}
.wads-c-teal{background:linear-gradient(135deg,#2bd6a8,#0e8f83)}
.wads-c-graphite{background:linear-gradient(135deg,#5a6372,#2c313a)}
.wads-c-rainbow{background:linear-gradient(115deg,#ff5f6d,#ffc35a,#38e07a,#38b6ff,#8a5bff,#ff5f6d);background-size:400% 400%;animation:wadsRainbow 9s ease infinite}
@keyframes wadsRainbow{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@media (prefers-reduced-motion:reduce){.wads-c-rainbow{animation:none}}
.wads-dots{display:flex;justify-content:center;gap:6px;padding-top:8px}
.wads-dot{width:6px;height:6px;border-radius:50%;border:none;padding:0;background:rgba(255,255,255,.3);cursor:pointer;transition:all .25s}
.wads-dot.on{background:#fff;width:16px;border-radius:4px}
.wads-dot:hover{background:rgba(255,255,255,.7)}
.dt-w[data-w="ads"] .wads-list{height:calc(100% - 44px)}
/* 弹窗配色板 */
.dt-adbuy .adb-colors{display:flex;align-items:center;gap:9px}
.dt-adbuy .adb-cw{position:relative;cursor:pointer}
.dt-adbuy .adb-cw input{position:absolute;opacity:0}
.dt-adbuy .adb-cw i{display:block;width:24px;height:24px;border-radius:50%;border:2px solid transparent;transition:all .2s}
.dt-adbuy .adb-cw:has(input:checked) i{border-color:#fff;transform:scale(1.12)}
.dt-adbuy .adb-cw-blue i{background:linear-gradient(135deg,#4a9eff,#2b5bd8)}
.dt-adbuy .adb-cw-violet i{background:linear-gradient(135deg,#8a7bff,#5b3fd6)}
.dt-adbuy .adb-cw-ember i{background:linear-gradient(135deg,#ff9a5a,#e2543e)}
.dt-adbuy .adb-cw-teal i{background:linear-gradient(135deg,#2bd6a8,#0e8f83)}
.dt-adbuy .adb-cw-graphite i{background:linear-gradient(135deg,#5a6372,#2c313a)}
.dt-adbuy .adb-cw-rainbow i{background:conic-gradient(#ff5f6d,#ffc35a,#38e07a,#38b6ff,#8a5bff,#ff5f6d)}
.dt-adbuy .adb-colors em{font-style:normal;font-size:11.5px;color:rgba(255,255,255,.45);margin-left:auto}

/* 投放弹窗：图片直传选择器与预览 */
.dt-adbuy .adb-file{display:flex;align-items:center;justify-content:center;padding:14px 12px;border:1.5px dashed rgba(255,255,255,.28);border-radius:11px;cursor:pointer;transition:border .2s}
.dt-adbuy .adb-file:hover{border-color:rgba(74,158,255,.7)}
.dt-adbuy .adb-file input[type=file]{display:none}
.dt-adbuy .adb-file span{font-size:12.5px;color:rgba(255,255,255,.6)}
.dt-adbuy .adb-prev{width:100%;max-height:96px;object-fit:cover;border-radius:11px}
