:root{
  --iconWidth:70px;
  --iconRadius:10px;
  --nameColor:#fff;
  --timeColor:#fff;
  --sideBackground:rgba(46,46,46,0.4);
  --colsGap:35px;
  --rowsGap:12px;
  --bgOpacity:0.1;
  --cellHeight:calc(var(--iconWidth) + 25px);
  --uiRadiusS:10px;
  --uiRadiusM:14px;
  --uiRadiusL:20px;
  --uiShadowCard:0 10px 28px rgba(0,0,0,0.2);
  --uiShadowGlass:0 14px 34px rgba(12,16,24,0.32);
  --appEase:cubic-bezier(0.22,1,0.36,1);
  --appDurFast:180ms;
  --appDurMid:320ms;
}
*{margin:0;padding:0;box-sizing:border-box;}
body{
  font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei','Segoe UI',sans-serif;
  height:100vh;overflow:hidden;user-select:none;
}
/* ─── 背景 ─── */
#bg{
  position:fixed;inset:0;z-index:0;
  background:linear-gradient(135deg,#1a1a2e,#16213e,#0f3460);
  background-size:cover;background-position:center;
  transition:filter .4s;
}
#bg-mask{
  position:fixed;inset:0;z-index:1;
  background:rgba(0,0,0,var(--bgOpacity));
  pointer-events:none;transition:background .3s;
}
/* ─── 主容器 ─── */
#app{
  position:relative;z-index:2;height:100vh;
  display:flex;flex-direction:column;align-items:center;
}
/* ─── 时钟 ─── */
#clock-wrap{
  flex-shrink:0;text-align:center;margin-top:46px;margin-bottom:18px;
  color:var(--timeColor);
}
#time-main{
  font-size:80px;font-weight:300;letter-spacing:5px;line-height:1;
  text-shadow:0 2px 8px rgba(0,0,0,0.18);
}
#date-main{
  font-size:15px;margin-top:10px;opacity:.88;letter-spacing:.8px;
  text-shadow:0 1px 4px rgba(0,0,0,0.18);
}
/* ─── 搜索框 ─── */
#search-wrap{
  flex-shrink:0;width:100%;max-width:560px;padding:0 16px;
  margin:0 auto 22px;position:relative;
  z-index:600;
}
#search-box{
  display:flex;align-items:center;height:46px;
  background:rgba(255,255,255,0.62);
  backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(40px);
  border-radius:30px;padding:0 14px;
  box-shadow:0 2px 12px rgba(0,0,0,0.08);
  transition:background .22s var(--appEase),box-shadow .22s var(--appEase);
}
#search-box:focus-within{
  background:rgba(255,255,255,0.82);
  box-shadow:0 4px 20px rgba(0,0,0,0.12);
}
#engine-btn{
  width:30px;height:30px;border:none;background:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;margin-right:8px;border-radius:50%;padding:0;
  transition:background .15s;
}
#engine-btn:hover{background:rgba(0,0,0,0.06);}
#engine-btn img,
#engine-btn svg { width:22px; height:22px; border-radius:3px; object-fit:contain; display:block; }
#engine-btn .eng-fallback{font-size:13px;font-weight:700;color:#333;}
#search-input{
  flex:1;background:none;border:none;outline:none;
  font-size:15px;color:#1c1c1e;min-width:0;
}
#search-input::placeholder{color:rgba(0,0,0,0.38);}
#search-go{
  background:none;border:none;cursor:pointer;
  color:#555;padding:0;
  width:34px;height:34px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;transition:background .15s;
}
#search-go:hover{background:rgba(0,0,0,0.06);}
#search-clear{
  background:none;border:none;cursor:pointer;
  color:#777;padding:0;
  width:28px;height:28px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;transition:background .15s,opacity .15s;
  opacity:0;pointer-events:none;
}
#search-clear:hover{background:rgba(0,0,0,0.06);}
#search-wrap.has-value #search-clear{opacity:1;pointer-events:auto;}
/* 引擎下拉 */
#eng-dropdown{
  position:absolute;top:calc(100% + 6px);left:16px;
  background:rgba(255,255,255,0.88);
  backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(40px);
  border-radius:14px;padding:6px;min-width:168px;
  box-shadow:0 0 0 1px rgba(0,0,0,0.06),0 8px 28px rgba(0,0,0,0.12);
  display:none;z-index:700;
  animation:dropIn .12s ease;
}
@keyframes dropIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
#eng-dropdown.open{display:block;}
.eng-item{
  display:flex;align-items:center;gap:9px;
  padding:8px 11px;border-radius:9px;cursor:pointer;
  color:#1c1c1e;font-size:14px;transition:background .12s;
}
.eng-item:hover,.eng-item.cur{background:rgba(255,255,255,0.7);}
.eng-item img,
.eng-item svg { width:20px; height:20px; border-radius:3px; flex-shrink:0; display:block; }
.eng-sym{
  width:18px;height:18px;border-radius:4px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:700;color:#fff;
}
/* 搜索下拉面板 */
#search-panel{
  position:absolute;top:calc(100% + 6px);left:16px;right:16px;
  background:rgba(255,255,255,0.88);
  backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(40px);
  border-radius:16px;padding:8px;
  box-shadow:0 0 0 1px rgba(0,0,0,0.06),0 8px 28px rgba(0,0,0,0.12);
  display:none;z-index:650;
  max-height:40vh;overflow:auto;
  animation:dropIn .12s ease;
}
#search-panel.open{display:block;}
.sp-sec{padding:8px;}
.sp-title{
  font-size:11px;color:#888;font-weight:600;
  letter-spacing:0.4px;margin-bottom:6px;
}
.sp-list{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.sp-item{
  display:flex;align-items:center;gap:6px;
  padding:8px 10px;border-radius:10px;
  background:rgba(255,255,255,0.72);
  cursor:pointer;font-size:13px;color:#1c1c1e;
  transition:background .12s;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.sp-item:hover{background:rgba(255,255,255,0.96);}
.sp-item .sp-ico{width:14px;height:14px;display:inline-flex;align-items:center;justify-content:center;color:#666;}
.sp-actions{
  display:flex;justify-content:space-between;align-items:center;
  padding:0 8px 6px;
}
.sp-actions .sp-title{margin-bottom:0;}
.sp-clear{
  font-size:12px;color:#999;cursor:pointer;
  padding:2px 6px;border-radius:6px;
}
.sp-clear:hover{background:rgba(0,0,0,0.06);color:#666;}
.sp-tabs{
  display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;
}
.sp-tab{
  font-size:12px;color:#666;padding:4px 8px;border-radius:999px;
  background:rgba(255,255,255,0.65);cursor:pointer;
  border:1px solid rgba(0,0,0,0.04);
}
.sp-tab.on{background:#fff;color:#111;border-color:rgba(0,0,0,0.08);}
.sp-hotlist{display:flex;flex-direction:column;gap:6px;}
.sp-hotlist .sp-item{justify-content:space-between;}
.sp-rank{
  width:18px;height:18px;border-radius:6px;background:#f2f2f7;
  display:flex;align-items:center;justify-content:center;
  font-size:11px;color:#666;flex-shrink:0;
}
.sp-text{flex:1;overflow:hidden;text-overflow:ellipsis;}
.sp-hot{font-size:11px;color:#999;flex-shrink:0;margin-left:8px;}
.sp-empty{font-size:12px;color:#999;padding:6px 8px;}

@media(max-width:480px){
  .sp-list{grid-template-columns:1fr;}
}
/* ─── 图标网格 ─── */
#grid-scroll{
  flex:1;width:100%;overflow-y:auto;overflow-x:hidden;
  scrollbar-width:thin;scrollbar-color:rgba(255,255,255,0.2) transparent;
  display:flex;flex-direction:column;align-items:stretch;
  box-sizing:border-box;
}
#page-top{width:100%;display:flex;flex-direction:column;align-items:stretch;}
#grid-scroll::-webkit-scrollbar{width:4px;}
#grid-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.2);border-radius:4px;}
#grid{
  display:grid;
  grid-template-columns:repeat(16,var(--iconWidth));
  grid-auto-rows:var(--cellHeight);
  grid-auto-flow:dense;
  column-gap:var(--colsGap);row-gap:var(--rowsGap);
  justify-content:flex-start;padding:6px 24px 30px;
  width:100%;
  align-content:start;
}
@media(max-width:1996px){
  #grid{grid-template-columns:repeat(14,var(--iconWidth));}
}
@media(max-width:1479px){
  #grid{grid-template-columns:repeat(12,var(--iconWidth));}
}
@media(max-width:1387px){
  #grid{grid-template-columns:repeat(10,var(--iconWidth));}
}
@media(max-width:1260px){
  #grid{grid-template-columns:repeat(8,var(--iconWidth));}
}
@media(max-width:961px){
  #grid{grid-template-columns:repeat(6,var(--iconWidth));}
}
@media(max-width:640px){
  #grid{grid-template-columns:repeat(4,var(--iconWidth));}
}

/* 自动分页模式（手机/平板） */
#grid-scroll.auto-paging{overflow-y:hidden;}
#grid-scroll.auto-paging #grid,
#grid-scroll.auto-paging #widget-wrap{
  justify-content:flex-start;
  padding-left:16px;
  padding-right:16px;
}
#grid-scroll.auto-paging #grid{grid-auto-flow:row;}
#grid-scroll.auto-paging #widget-wrap{display:none;}
.auto-pager{
  display:flex;
  justify-content:center;
  gap:8px;
  padding:8px 0 16px;
}
.auto-dot{
  width:7px;height:7px;border-radius:50%;
  background:rgba(255,255,255,0.38);
  box-shadow:0 0 0 1px rgba(0,0,0,0.08) inset;
  cursor:pointer;
}
.auto-dot.on{background:#fff;}
/* ─── 图标项 ─── */
.ic{
  display:flex;flex-direction:column;align-items:center;
  cursor:pointer;position:relative;
  width:var(--iconWidth);
}
.ic.w2{
  grid-column:span 2;
  width:calc(var(--iconWidth)*2 + var(--colsGap));
}
.ic.s2x2{
  grid-column:span 2;
  grid-row:span 2;
  width:calc(var(--iconWidth)*2 + var(--colsGap));
}
.ic.s4x2{
  grid-column:span 4;
  grid-row:span 2;
  width:calc(var(--iconWidth)*4 + var(--colsGap)*3);
}
.ic.s2x4{
  grid-column:span 2;
  grid-row:span 4;
  width:calc(var(--iconWidth)*2 + var(--colsGap));
}
.ic.tile{
  align-items:stretch;
  height:100%;
}
.ic.tile .ic-box{
  width:100%;height:100%;
}
.ic.tile .ic-name{
  position:absolute;left:12px;right:12px;bottom:26px;margin:0;
  text-align:left;font-size:13px;font-weight:600;
  color:var(--nameColor);
  text-shadow:0 2px 6px rgba(0,0,0,0.45);
  background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,0.25) 100%);
  padding:6px 8px;border-radius:8px;
  filter:none;
}
.ic.tile .ic-url{
  position:absolute;left:12px;right:12px;bottom:8px;
  font-size:11px;color:rgba(255,255,255,0.85);
  text-shadow:0 2px 6px rgba(0,0,0,0.45);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ic.s4x2 .ic-name,.ic.s4x2 .ic-url{left:calc(var(--iconWidth) * 1.1);}
.ic.s4x2 .ic-bg img,.ic.s4x2 .ic-bg .ic-init{
  position:absolute;left:calc(var(--iconWidth) * 0.25);top:50%;transform:translateY(-50%);
}
.ic.s4x2 .ic-bg img{
  width:calc(var(--iconWidth) * 0.9);
  height:calc(var(--iconWidth) * 0.9);
}
.ic.s2x4 .ic-bg img{
  width:calc(var(--iconWidth) * 0.95);
  height:calc(var(--iconWidth) * 0.95);
}
.ic.tile .ic-bg::before{
  content:'';position:absolute;inset:0;border-radius:inherit;
  background:linear-gradient(180deg,rgba(0,0,0,0) 55%,rgba(0,0,0,0.25) 100%);
  pointer-events:none;z-index:4;
}
.ic-box{
  position:relative;
  width:var(--iconWidth);height:var(--iconWidth);
  border-radius:var(--iconRadius);
  transition:transform var(--appDurFast) var(--appEase);overflow:visible;
}
.ic.w2 .ic-box{width:calc(var(--iconWidth)*2 + var(--colsGap));}
.ic:hover .ic-box{transform:scale(1.06);}
.ic.drag-over .ic-box{
  transform:scale(1.04);
  box-shadow:0 0 0 2px rgba(0,122,255,0.28),0 8px 20px rgba(0,0,0,0.25);
}
/* 图标背景 */
.ic-bg{
  position:absolute;inset:0;border-radius:var(--iconRadius);
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;
  box-shadow:0 4px 14px rgba(0,0,0,0.28), inset 0 1px 0 rgba(255,255,255,0.18);
}
/* iOS 风格顶部高光渐变层 */
.ic-bg::after{
  content:'';position:absolute;inset:0;border-radius:inherit;
  background:linear-gradient(160deg,rgba(255,255,255,0.30) 0%,rgba(255,255,255,0.04) 55%,transparent 100%);
  pointer-events:none;z-index:5;
}
.ic-bg img{
  width:60%;height:60%;object-fit:contain;
  pointer-events:none;
}
.ic-bg .ic-init{
  font-size:calc(var(--iconWidth)*0.38);
  font-weight:700;color:#fff;pointer-events:none;
}
/* 悬停删除按钮 */
.ic-del{
  position:absolute;right:-7px;top:-7px;
  width:17px;height:17px;border-radius:50%;
  background:rgba(200,200,200,0.85);
  display:flex;align-items:center;justify-content:center;
  font-size:11px;color:#333;
  cursor:pointer;z-index:20;
  opacity:0;transition:opacity .15s;
  pointer-events:none;
  box-shadow:0 1px 3px rgba(0,0,0,0.15);
}
.ic:hover .ic-del{opacity:1;pointer-events:all;}
/* 图标名称 */
.ic-name{
  width:calc(var(--iconWidth) + 16px);
  margin-top:6px;font-size:12px;
  text-align:center;color:var(--nameColor);
  filter:drop-shadow(0 2px 3px rgba(0,0,0,0.35));
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  pointer-events:none;
}
.ic.w2 .ic-name{width:calc(var(--iconWidth)*2 + var(--colsGap) + 16px);}
/* 分组文件夹 */
.grp-folder{
  position:absolute;inset:0;border-radius:var(--iconRadius);
  background:rgba(180,180,180,0.22);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border:1px solid rgba(220,220,220,0.28);
  display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;
  gap:5px;padding:9px;overflow:hidden;
}
.grp-mini{
  border-radius:4px;overflow:hidden;background:rgba(255,255,255,0.2);
  display:flex;align-items:center;justify-content:center;
}
.grp-mini img{width:100%;height:100%;object-fit:contain;}
.grp-mini-init{font-size:9px;font-weight:700;color:#fff;}
/* 添加按钮 */
.ic-add-ph{
  position:absolute;inset:0;border-radius:var(--iconRadius);
  background:rgba(255,255,255,0.18);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border:2px dashed rgba(255,255,255,0.42);
  display:flex;align-items:center;justify-content:center;
  font-size:26px;color:rgba(255,255,255,0.65);
  transition:background .15s;
}
.ic:hover .ic-add-ph{background:rgba(255,255,255,0.26);}
/* wapp 标签 (app标识) */
.wapp-badge{
  position:absolute;bottom:0;left:0;
  width:20px;height:20px;z-index:10;
  background:#0084FF;
  border-radius:0 30px 0 var(--iconRadius);
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;
}
.wapp-badge img{width:14px;height:14px;object-fit:contain;}
/* ─── 右键菜单 ─── */
#ctx{
  position:fixed;min-width:150px;z-index:80000;
  border-radius:10px;padding:5px;
  background:rgba(255,255,255,0.62);
  backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(40px);
  box-shadow:0 0 0 1px rgba(0,0,0,0.06),0 8px 28px rgba(0,0,0,0.14);
  display:none;transform-origin:top left;
}
#ctx.open{display:block;animation:ctxPop .15s ease;}
@keyframes ctxPop{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
.ctx-i{
  display:flex;align-items:center;gap:7px;
  padding:0 10px;min-height:34px;
  border-radius:8px;cursor:pointer;
  font-size:13px;color:#1c1c1e;
  transition:background .12s;
}
.ctx-i:hover{background:rgba(255,255,255,0.6);}
.ctx-i.red{color:#ff3b30;}
.ctx-sep{height:1px;background:rgba(0,0,0,0.07);margin:3px 8px;}
/* ─── 分组展开层 ─── */
#grp-overlay{
  position:fixed;inset:0;z-index:400;
  display:none;align-items:center;justify-content:center;
}
#grp-overlay.open{display:flex;}
#grp-mask{
  position:absolute;inset:0;
  background:rgba(0,0,0,0.72);
  backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);
}
#grp-panel{
  position:relative;z-index:1;
  animation:grpIn .18s ease;
}
@keyframes grpIn{from{transform:scale(0.88);opacity:0}to{transform:scale(1);opacity:1}}
#grp-title-input{
  text-align:center;margin-bottom:18px;
}
#grp-title-input input{
  background:transparent;border:none;outline:none;
  color:#fff;font-size:22px;font-weight:500;text-align:center;
  border-bottom:2px solid transparent;padding:4px 10px;
  transition:border-color .2s;width:220px;
}
#grp-title-input input:hover,
#grp-title-input input:focus{border-bottom-color:rgba(255,255,255,0.5);}
#grp-inner{
  overflow-y:auto;max-height:62vh;
  border-radius:20px;
  padding:24px 28px;
  background:rgba(255,255,255,0.22);
  display:grid;
  grid-template-columns:repeat(auto-fill,var(--iconWidth));
  grid-auto-rows:var(--cellHeight);
  grid-auto-flow:dense;
  column-gap:25px;row-gap:8px;
  justify-content:center;
  min-width:calc(var(--iconWidth)*4 + 25px*3 + 56px);
  max-width:calc(var(--iconWidth)*8 + 25px*7 + 56px);
}
@media(max-width:700px){
  #grp-inner{min-width:unset;max-width:calc(100vw - 40px);padding:16px;}
}
/* ─── 设置面板 ─── */
#settings-mask{
  position:fixed;inset:0;z-index:8000000;
  display:none;
}
#settings-mask.open{display:block;animation:smIn .3s ease-in-out forwards;}
#settings-mask.closing{animation:smOut .28s ease-in-out forwards;}
@keyframes smIn{from{background:rgba(0,0,0,0)}to{background:rgba(0,0,0,0.55)}}
@keyframes smOut{from{background:rgba(0,0,0,0.55)}to{background:rgba(0,0,0,0)}}
.settings-win{
  position:absolute;left:60px;bottom:60px;
  width:700px;height:530px;
  border-radius:14px;overflow:hidden;
  display:flex;background:#F8F8F8;
  box-shadow:0 8px 40px rgba(0,0,0,0.28);
  transform-origin:left bottom;
  animation:swIn .2s ease-in-out forwards;
}
@keyframes swIn{from{transform:scale(0)}to{transform:scale(1)}}
@media(max-width:760px){
  .settings-win{left:0;bottom:0;width:100%;border-radius:16px 16px 0 0;}
}
@media(min-height:700px){.settings-win{height:580px;}}
/* 设置左侧菜单 */
.sw-menu{
  width:148px;background:#EAEAEA;
  padding:12px 8px;overflow-y:auto;flex-shrink:0;
}
.sw-menu-title{
  font-size:17px;font-weight:700;color:#1c1c1e;
  padding:6px 10px 14px;
}
.sw-item{
  display:flex;align-items:center;gap:8px;
  padding:8px 10px;border-radius:9px;
  cursor:pointer;transition:background .15s;margin-bottom:2px;
}
.sw-item:hover{background:rgba(255,255,255,0.6);}
.sw-item.active{background:#fff;}
.sw-item-ico{
  width:28px;height:28px;border-radius:7px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;font-size:16px;
}
.sw-item-name{font-size:13px;font-weight:500;color:#333;}
/* 设置右侧内容 */
.sw-body{flex:1;padding:20px 22px;overflow-y:auto;}
.sw-body::-webkit-scrollbar{width:4px;}
.sw-body::-webkit-scrollbar-thumb{background:#ddd;border-radius:4px;}
.sw-panel{display:none;}
.sw-panel.active{display:block;}
.sw-sec{font-size:11px;font-weight:600;color:#999;text-transform:uppercase;letter-spacing:.8px;margin:18px 0 8px;}
.sw-sec:first-child{margin-top:0;}
.sw-card{background:#fff;border-radius:11px;overflow:hidden;margin-bottom:10px;}
/* 设置行 */
.sw-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:11px 14px;border-bottom:1px solid #F2F2F7;
}
.sw-row:last-child{border-bottom:none;}
.sw-row-l{flex:1;}
.sw-row-label{font-size:14px;color:#1c1c1e;}
.sw-row-sub{font-size:12px;color:#aaa;margin-top:1px;}
/* iOS 开关 */
.ios-sw{position:relative;width:44px;height:26px;flex-shrink:0;}
.ios-sw input{opacity:0;width:0;height:0;position:absolute;}
.ios-sl{
  position:absolute;inset:0;background:#D1D1D6;
  border-radius:26px;cursor:pointer;transition:background .25s;
}
.ios-sl::before{
  content:'';position:absolute;left:2px;top:2px;
  width:22px;height:22px;background:#fff;border-radius:50%;
  transition:transform .25s;box-shadow:0 1px 4px rgba(0,0,0,0.22);
}
.ios-sw input:checked + .ios-sl{background:#34C759;}
.ios-sw input:checked + .ios-sl::before{transform:translateX(18px);}
/* 滑块 */
.sw-slider{display:flex;align-items:center;gap:10px;padding:8px 14px 12px;}
input[type=range]{
  flex:1;-webkit-appearance:none;height:4px;
  background:#E5E5EA;border-radius:4px;outline:none;cursor:pointer;
}
input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;width:20px;height:20px;background:#fff;
  border-radius:50%;cursor:pointer;box-shadow:0 1px 5px rgba(0,0,0,0.25);
}
.sw-val{font-size:12px;color:#aaa;min-width:38px;text-align:right;}
/* 设置输入框 */
.sw-input{
  width:100%;border:1px solid #E5E5EA;border-radius:8px;
  padding:9px 12px;font-size:14px;color:#1c1c1e;outline:none;
  background:#fff;font-family:inherit;transition:all .2s;
}
.sw-input:focus{border-color:#007AFF;box-shadow:0 0 0 3px rgba(0,122,255,0.1);}
.sw-input::placeholder{color:#C7C7CC;}
.sw-field{padding:10px 14px;}
.sw-bg-prev{
  width:100%;height:72px;border-radius:8px;border:1px solid #E5E5EA;
  background-size:cover;background-position:center;background-color:#f0f0f0;
  margin-top:8px;display:none;
}
/* 颜色时钟颜色选 */
.sw-color-pick{padding:8px 14px 12px;display:flex;align-items:center;gap:8px;}
.sw-color-full{
  flex:1;height:34px;border-radius:8px;border:1px solid #E5E5EA;
  cursor:pointer;padding:0;
}
/* 搜索引擎列表 */
.eng-row{
  display:flex;align-items:center;gap:9px;
  padding:10px 14px;border-bottom:1px solid #F2F2F7;
}
.eng-row:last-child{border-bottom:none;}
.eng-row img{width:20px;height:20px;border-radius:4px;flex-shrink:0;}
.eng-row-sym{
  width:20px;height:20px;border-radius:4px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:700;color:#fff;
}
.eng-row-name{flex:1;font-size:14px;color:#1c1c1e;}
.eng-row-del{
  background:none;border:none;color:#ff3b30;cursor:pointer;
  font-size:16px;padding:2px 6px;border-radius:4px;transition:background .12s;
}
.eng-row-del:hover{background:#FFF0EE;}
/* 添加搜索引擎表单 */
.add-eng-box{
  margin:10px 0;padding:14px;
  border:1.5px dashed #E5E5EA;border-radius:10px;
}
.add-eng-title{font-size:13px;color:#aaa;margin-bottom:10px;}
/* 数据按钮 */
.data-btns{display:flex;gap:8px;flex-wrap:wrap;padding:12px 14px;}
/* ─── 通用弹窗 ─── */
.modal-bg{
  position:fixed;inset:0;
  background:rgba(0,0,0,0.52);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  z-index:500;display:none;align-items:center;justify-content:center;
}
.modal-bg.open{display:flex;}
.modal{
  background:#fff;border-radius:16px;
  padding:24px;min-width:360px;max-width:92vw;max-height:88vh;
  overflow-y:auto;
  box-shadow:0 20px 60px rgba(0,0,0,0.18);
  animation:modalIn .18s ease;
}
@keyframes modalIn{from{transform:scale(0.94);opacity:0}to{transform:scale(1);opacity:1}}
.modal::-webkit-scrollbar{width:4px;}
.modal::-webkit-scrollbar-thumb{background:#ddd;border-radius:4px;}
.modal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;}
.modal-hd h2{font-size:17px;font-weight:600;color:#1c1c1e;}
.modal-x{
  background:#F2F2F7;border:none;border-radius:50%;width:28px;height:28px;
  cursor:pointer;color:#555;
  display:flex;align-items:center;justify-content:center;
  transition:background .15s;
}
.modal-x:hover{background:#E5E5EA;}
/* SVG 图标通用 */
.icon-svg{display:inline-block;vertical-align:middle;flex-shrink:0;}
.sw-item-ico .icon-svg{width:18px;height:18px;color:#fff;}
/* 图标预览行 */
.ic-prev-row{
  display:flex;align-items:center;gap:14px;
  padding:12px 14px;background:#F2F2F7;
  border-radius:12px;margin-bottom:16px;
}
.ic-prev-box{
  width:56px;height:56px;border-radius:12px;
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;flex-shrink:0;background:#fff;
  box-shadow:0 2px 8px rgba(0,0,0,0.1);
}
.ic-prev-box img{width:34px;height:34px;object-fit:contain;}
.ic-prev-box .prev-init{font-size:20px;font-weight:700;}
.ic-prev-info .prev-name{font-size:15px;font-weight:600;color:#1c1c1e;margin-bottom:6px;}
.fetch-btn{
  background:#E8F0FE;border:none;border-radius:7px;padding:5px 12px;
  color:#1a73e8;cursor:pointer;font-size:13px;transition:background .12s;
}
.fetch-btn:hover{background:#D2E3FC;}
/* 表单 */
.m-row{margin-bottom:14px;}
.m-row label{display:block;font-size:13px;color:#6e6e73;margin-bottom:5px;}
.m-row-inline{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
}
.m-row-inline-l{flex:1;}
.m-row-sub{font-size:12px;color:#aaa;line-height:1.4;}
.m-input{
  width:100%;border:1.5px solid #E5E5EA;border-radius:9px;
  padding:9px 12px;font-size:14px;color:#1c1c1e;
  outline:none;background:#F8F8F8;font-family:inherit;
  transition:all .2s;
}
.m-input:focus{background:#fff;border-color:#007AFF;box-shadow:0 0 0 3px rgba(0,122,255,0.1);}
.m-input::placeholder{color:#C7C7CC;}
.m-select{
  width:100%;border:1.5px solid #E5E5EA;border-radius:9px;
  padding:9px 12px;font-size:14px;color:#1c1c1e;
  outline:none;background:#F8F8F8;font-family:inherit;cursor:pointer;
}
/* 颜色预设 */
.m-colors{display:flex;gap:7px;flex-wrap:wrap;margin-top:7px;align-items:center;}
.m-cdot{
  width:26px;height:26px;border-radius:50%;cursor:pointer;
  border:2.5px solid transparent;transition:transform .12s,border-color .12s;
}
.m-cdot:hover,.m-cdot.on{transform:scale(1.15);border-color:#007AFF;}
input[type=color]{
  width:26px;height:26px;border:2px solid #E5E5EA;
  border-radius:50%;cursor:pointer;padding:0;background:none;
}
/* 尺寸选项 */
.size-opts{display:flex;gap:8px;}
.sz{
  flex:1;padding:9px 8px;border-radius:9px;
  border:1.5px solid #E5E5EA;cursor:pointer;
  text-align:center;font-size:13px;color:#555;
  transition:all .15s;background:#fff;
}
.sz.on{border-color:#007AFF;color:#007AFF;background:#EEF5FF;}
/* Modal footer */
.modal-ft{display:flex;justify-content:flex-end;gap:8px;margin-top:20px;}
.btn{
  padding:9px 22px;border-radius:9px;border:none;
  cursor:pointer;font-size:14px;font-weight:500;
  transition:all .15s;font-family:inherit;
}
.btn-p{background:#007AFF;color:#fff;}
.btn-p:hover{background:#0070E0;}
.btn-s{background:#F2F2F7;color:#1c1c1e;}
.btn-s:hover{background:#E5E5EA;}
.btn-d{background:#FFF0EE;color:#ff3b30;}
.btn-d:hover{background:#FFE0DD;}
/* 回收站 */
.trash-modal{min-width:420px;}
.trash-actions{display:flex;justify-content:flex-end;margin-bottom:10px;}
#trash-list{display:flex;flex-direction:column;gap:8px;}
.trash-item{
  background:#fff;border-radius:12px;padding:12px 14px;
  border:1px solid #F2F2F7;display:flex;align-items:center;gap:10px;
}
.trash-item-title{font-size:14px;color:#1c1c1e;font-weight:600;flex:1;min-width:0;}
.trash-item-sub{font-size:12px;color:#999;white-space:nowrap;}
.trash-item-actions{display:flex;gap:6px;flex-shrink:0;}
.trash-empty{padding:24px;text-align:center;color:#aaa;font-size:13px;}
/* 提示文字 */
.hint{font-size:12px;color:#aaa;margin-top:4px;}
/* 加载分组弹窗 */
#add-grp-box{min-width:320px;}
/* ─── 页面分组侧栏（1:1复刻原版 appPageGroup） ─── */
.appPageGroup{position:absolute;left:0;width:0;z-index:201;}
.appPageGroup.right{left:auto;right:0;}
.floatController{
  position:fixed;width:55px;height:100vh;z-index:201;top:0;
  transition:transform .42s var(--appEase);
  background:var(--sideBackground);
  backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);
  border-right:1px solid rgba(255,255,255,0.08);
  overflow-y:auto;overflow-x:hidden;
  scrollbar-width:none;
  display:flex;flex-direction:column;align-items:center;
  padding:8px 0 16px;
}
.floatController::-webkit-scrollbar{display:none;}
.appPageGroup.right .floatController{border-right:none;border-left:1px solid rgba(255,255,255,0.08);}
/* 隐藏时滑出屏幕 */
.floatController.hidden-left{transform:translateX(-55px);}
.floatController.hidden-right{transform:translateX(55px);}
.floatController.mob-open{transform:translateX(0) !important;}
/* 侧栏折叠按钮 */
.pg-collapse-btn{
  width:36px;height:36px;border-radius:8px;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;color:rgba(255,255,255,0.5);font-size:18px;
  transition:all .18s;flex-shrink:0;margin-bottom:6px;
}
.pg-collapse-btn:hover{background:rgba(255,255,255,0.1);color:#fff;}
/* 折叠后的侧边细条（PC端点击展开） */
.pg-edge-btn{
  position:fixed;top:50%;transform:translateY(-50%);
  width:16px;height:52px;z-index:203;
  background:var(--sideBackground);backdrop-filter:blur(15px);
  border-radius:0 8px 8px 0;
  display:none;align-items:center;justify-content:center;
  cursor:pointer;color:rgba(255,255,255,0.7);font-size:11px;
  border:1px solid rgba(255,255,255,0.1);border-left:none;
  transition:all .25s;
}
.pg-edge-btn:hover{width:20px;color:#fff;}
.pg-edge-btn.right{border-radius:8px 0 0 8px;border-left:1px solid rgba(255,255,255,0.1);border-right:none;right:0;}
/* 移动端显示按钮 */
.pg-mobile-btn{
  display:none;position:fixed;left:0;top:50%;transform:translateY(-50%);
  z-index:202;width:18px;height:52px;
  background:var(--sideBackground);backdrop-filter:blur(15px);
  border-radius:0 8px 8px 0;
  align-items:center;justify-content:center;
  cursor:pointer;color:rgba(255,255,255,0.7);font-size:11px;
  border:1px solid rgba(255,255,255,0.1);border-left:none;
  transition:all .3s;
}
.pg-mobile-btn.right{left:auto;right:0;border-radius:8px 0 0 8px;border-right:none;border-left:1px solid rgba(255,255,255,0.1);}
/* 侧栏项目 */
.pg-item{
  width:100%;padding:7px 0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  cursor:pointer;transition:background .18s;border-radius:8px;
  margin:1px 4px;width:calc(100% - 8px);
  min-height:52px;
}
.pg-item:hover{background:rgba(255,255,255,0.1);}
.pg-item.active{background:rgba(193,197,201,0.13);}
.pg-item-ico{
  width:28px;height:28px;border-radius:8px;
  object-fit:contain;
  display:flex;align-items:center;justify-content:center;
  font-size:20px;line-height:1;flex-shrink:0;
}
.pg-item-ico img{width:28px;height:28px;border-radius:6px;object-fit:contain;}
.pg-item-lbl{
  font-size:10px;color:rgba(255,255,255,0.75);
  margin-top:3px;text-align:center;
  max-width:48px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  transform:scale(0.9);transform-origin:center;
  line-height:1.2;
}
.pg-item.active .pg-item-lbl{color:#fff;}
.pg-add-item{
  width:calc(100% - 8px);margin:2px 4px;
  height:34px;border-radius:8px;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;color:rgba(255,255,255,0.4);font-size:20px;line-height:1;
  border:1.5px dashed rgba(255,255,255,0.22);
  transition:all .18s;margin-top:6px;
}
.pg-add-item:hover{color:#fff;border-color:rgba(255,255,255,0.55);background:rgba(255,255,255,0.08);}
/* 页面滑动容器 */
.linkBoxPage{
  position:fixed;width:100vw;overflow:hidden;
  top:0;left:0;height:100vh;z-index:1;pointer-events:none;
}
.pageGroupItem{
  position:absolute;
  transform:translate3d(0,100vh,0);
  width:100%;height:100%;
  overflow-y:auto;overflow-x:hidden;
  scrollbar-width:none;
  pointer-events:auto;
  transition:transform .36s var(--appEase);
}
.pageGroupItem::-webkit-scrollbar{display:none;}
.pageGroupItem.active{transform:translate3d(0,0,0);}
.pageGroupItem.above{transform:translate3d(0,-100vh,0);}
/* 有侧栏时内容区偏移 */
body.has-sidebar-left .linkBoxPage,
body.has-sidebar-left #grid-scroll{padding-left:55px;}
body.has-sidebar-right .linkBoxPage,
body.has-sidebar-right #grid-scroll{padding-right:55px;}
/* ─── 响应式 - 桌面宽 ─── */
@media(min-width:1200px){
  #app{padding-left:0;}
}
/* ─── 响应式 - 平板 ─── */
@media(max-width:900px){
  #time-main{font-size:64px;}
}
/* ─── 响应式 - 小屏 ─── */
@media(max-width:600px){
  #clock-wrap{margin-top:24px;margin-bottom:12px;}
  #time-main{font-size:50px;letter-spacing:2px;}
  #date-main{font-size:13px;}
  #search-wrap{margin-bottom:14px;max-width:100%;}
  #search-box{height:42px;}
  #grid{padding:6px 0 30px;}
  .floatController{display:none;}
  .floatController.mob-open{display:flex !important;transform:translateX(0) !important;}
  .pg-mobile-btn{display:flex;}
  .pg-edge-btn{display:none !important;}
  body.has-sidebar-left .linkBoxPage,
  body.has-sidebar-left #grid-scroll{padding-left:0;}
  body.has-sidebar-right .linkBoxPage,
  body.has-sidebar-right #grid-scroll{padding-right:0;}
}
/* ─── 响应式 - 极小屏 ─── */
@media(max-width:380px){
  #time-main{font-size:44px;}
}
/* ─── 设置面板移动端：左侧菜单变顶部横向标签 ─── */
@media(max-width:760px){
  .settings-win{
    left:0;bottom:0;width:100%;
    border-radius:16px 16px 0 0;
    flex-direction:column;
    height:80vh;max-height:80vh;
  }
  .sw-menu{
    width:100%;min-height:unset;
    display:flex;flex-direction:row;overflow-x:auto;
    padding:6px 8px 0;gap:0;
    border-bottom:1px solid #E5E5EA;
    scrollbar-width:none;
  }
  .sw-menu::-webkit-scrollbar{display:none;}
  .sw-menu-title{display:none;}
  .sw-item{
    flex-direction:column;padding:6px 10px 8px;
    border-radius:0;flex-shrink:0;gap:2px;
    border-bottom:2.5px solid transparent;
    margin-bottom:0;
  }
  .sw-item.active{background:none;border-bottom-color:#007AFF;}
  .sw-item-ico{width:22px;height:22px;font-size:13px;border-radius:5px;}
  .sw-item-name{font-size:11px;color:#555;}
  .sw-item.active .sw-item-name{color:#007AFF;}
  .sw-body{flex:1;overflow-y:auto;padding:14px 16px;}
}

/* ════════════════════════════════════════
   Sonoma 小组件（备忘录 / 日历）
   ════════════════════════════════════════ */
#widget-wrap{
  display:grid;
  grid-template-columns:repeat(16,var(--iconWidth));
  grid-auto-rows:calc(var(--iconWidth) + (var(--colsGap) - var(--rowsGap)) / 2);
  column-gap:var(--colsGap);
  row-gap:var(--rowsGap);
  padding:0 24px 14px;
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  align-self:stretch;
  justify-content:flex-start;
}
#widget-wrap:empty{display:none;}
.wg-2x2{grid-column:span 2;grid-row:span 2;}
.wg-2x4{grid-column:span 4;grid-row:span 2;}
@media(max-width:1996px){
  #widget-wrap{grid-template-columns:repeat(14,var(--iconWidth));}
}
@media(max-width:1479px){
  #widget-wrap{grid-template-columns:repeat(12,var(--iconWidth));}
}
@media(max-width:1387px){
  #widget-wrap{grid-template-columns:repeat(10,var(--iconWidth));}
}
@media(max-width:1260px){
  #widget-wrap{grid-template-columns:repeat(8,var(--iconWidth));}
}
@media(max-width:961px){
  #widget-wrap{grid-template-columns:repeat(6,var(--iconWidth));}
}
@media(max-width:640px){
  #widget-wrap{grid-template-columns:repeat(4,var(--iconWidth));}
  .wg-2x2{grid-column:span 2;grid-row:span 2;}
  .wg-2x4{grid-column:span 4;grid-row:span 2;}
}
.wg-card{
  position:relative;
  border-radius:var(--uiRadiusM);
  padding:8px 9px 9px;
  height:100%;
  display:flex;
  flex-direction:column;
  background:linear-gradient(165deg,rgba(255,255,255,0.55),rgba(245,246,252,0.34));
  border:1px solid rgba(255,255,255,0.55);
  box-shadow:var(--uiShadowCard);
  backdrop-filter:blur(28px) saturate(180%);
  -webkit-backdrop-filter:blur(28px) saturate(180%);
  color:#1c1c1e;
  cursor:pointer;
  transition:transform var(--appDurFast) var(--appEase), box-shadow var(--appDurFast) var(--appEase), background var(--appDurFast) var(--appEase);
  overflow:hidden;
}
.wg-card:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 28px rgba(0,0,0,0.22);
  background:linear-gradient(165deg,rgba(255,255,255,0.66),rgba(245,246,252,0.38));
}
.wg-card:active{transform:scale(0.98);}
.wg-card.dragging{opacity:.45;transform:scale(.98);}
.wg-card.drag-over{outline:2px solid rgba(0,0,0,0.12);outline-offset:3px;}
.wg-head{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:6px;
}
.wg-title{
  display:flex;align-items:center;gap:6px;
  font-size:11px;font-weight:600;color:rgba(0,0,0,0.7);
}
.wg-sub{font-size:10px;color:rgba(0,0,0,0.45);}
.wg-body{display:flex;flex-direction:column;gap:3px;min-height:40px;}
.wg-body{flex:1;}
.wg-card.wg-2x2:not(.wg-memo):not(.wg-calendar) .wg-body,
.wg-card.wg-2x4:not(.wg-memo):not(.wg-calendar) .wg-body{
  align-items:center;
  text-align:center;
  justify-content:center;
}
.wg-memo .wg-body,
.wg-memo .wg-memo-items{
  align-items:flex-start;
  text-align:left;
}
.wg-card:not(.wg-2x2) .wg-body{min-height:0;}
.wg-card:not(.wg-2x2) .wg-line{font-size:12px;}
.wg-line{
  font-size:12px;line-height:1.4;color:#1c1c1e;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.wg-memo.wg-2x2 .wg-line{
  position:relative;
  padding-left:10px;
}
.wg-memo.wg-2x2 .wg-line::before{
  content:'';
  position:absolute;left:0;top:8px;
  width:4px;height:4px;border-radius:50%;
  background:#FF3B30;
}
.wg-memo::after{
  content:'';position:absolute;inset:0;border-radius:inherit;
  background:repeating-linear-gradient(
    to bottom,
    rgba(0,0,0,0.08) 0,
    rgba(0,0,0,0.08) 1px,
    transparent 1px,
    transparent 22px
  );
  opacity:0.16;pointer-events:none;
}
.wg-memo::after{display:none;}
.wg-memo{
  background:#e5e5e5;
  border:1px solid rgba(255,255,255,0.72);
  box-shadow:0 16px 34px rgba(0,0,0,0.24);
}
.wg-memo .wg-head{
  margin-bottom:8px;
}
.wg-memo-items{
  display:flex;
  flex-direction:column;
  gap:7px;
}
.wg-memo-item{
  height:26px;
  border-radius:9px;
  border:1px solid #dadada;
  background:#efefef;
  display:flex;
  align-items:center;
  gap:8px;
  padding:0 10px;
  font-size:12px;
  color:#556273;
  transition:all .16s ease;
}
.wg-memo-item:hover{background:#f7f7f7;}
.wg-memo-item i{
  width:13px;height:13px;border-radius:50%;
  border:2px solid #a7afba;background:#fff;flex-shrink:0;
}
.wg-memo-item span{
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.wg-memo.wg-2x2 .wg-body{
  gap:6px;
}
.wg-memo.wg-2x2 .wg-line{
  height:26px;
  border-radius:8px;
  border:1px solid #dadada;
  background:#efefef;
  display:flex;
  align-items:center;
  padding:0 9px 0 26px;
  font-size:12px;
  color:#536174;
  position:relative;
}
.wg-memo.wg-2x2 .wg-line::before{
  content:'';
  width:12px;height:12px;border-radius:50%;
  border:2px solid #a7afba;background:#fff;
  position:absolute;left:8px;top:50%;transform:translateY(-50%);
}
.wg-memo-board{
  display:grid;
  grid-template-columns:70px 1fr;
  gap:8px;
  min-height:0;
}
.wg-memo-brand{
  border-radius:12px;
  background:linear-gradient(160deg,#ff8a65,#ff7043 60%,#ff5252);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:4px;
  box-shadow:inset 0 -10px 16px rgba(0,0,0,0.12);
}
.wg-memo-ico svg{width:20px;height:20px;opacity:.95;}
.wg-memo-word{
  display:flex;
  flex-direction:column;
  font-size:13px;
  line-height:1;
  font-weight:700;
  letter-spacing:.2px;
  align-items:center;
}
.wg-memo-tasks{
  display:flex;
  flex-direction:column;
  gap:6px;
  min-width:0;
  overflow:hidden;
}
.wg-task{
  display:flex;
  align-items:flex-start;
  gap:7px;
  min-height:24px;
  border-radius:10px;
  background:rgba(255,255,255,0.62);
  border:1px solid rgba(0,0,0,0.05);
  padding:5px 7px;
}
.wg-task i{
  width:7px;height:7px;border-radius:50%;
  background:#ff6b6b;margin-top:5px;flex-shrink:0;
}
.wg-task span{
  font-size:11px;line-height:1.32;color:#1c1c1e;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.wg-ghost-btn{
  border:none;cursor:pointer;
  background:rgba(0,0,0,0.06);
  color:rgba(0,0,0,0.6);
  border-radius:8px;padding:3px 6px;font-size:10px;
}
.wg-ghost-btn:hover{background:rgba(0,0,0,0.1);}

/* 倒计时卡片 */
.wg-countdown{
  padding:0;
  background:#f3c15a;
  border:1px solid rgba(255,255,255,0.72);
  overflow:hidden;
}
.wg-countdown .cd-head{
  height:36px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  font-weight:700;
  font-size:15px;
  letter-spacing:.2px;
}
.wg-countdown .cd-body{
  margin:8px;
  border-radius:14px;
  background:#ececec;
  border:1px solid #dfdfdf;
  box-shadow:inset 0 -4px 0 rgba(0,0,0,0.04);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:4px;
  flex:1;
  height:auto;
  color:#6c7a8b;
}
.wg-countdown .cd-label{font-size:16px;line-height:1;}
.wg-countdown .cd-num{
  font-size:52px;
  line-height:.95;
  font-weight:800;
  color:#5a3e00;
  font-variant-numeric:tabular-nums;
}
.wg-countdown .cd-unit{font-size:18px;line-height:1;}

/* 时间进度卡片 */
.wg-progress{
  background:#f1f1f1;
  border:1px solid rgba(255,255,255,0.72);
  box-shadow:0 16px 34px rgba(0,0,0,0.22);
}
.wg-progress .pg-list{
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-top:2px;
  flex:1;
  justify-content:center;
}
.wg-progress .pg-row{
  display:grid;
  grid-template-columns:40px 1fr 34px;
  align-items:center;
  gap:8px;
  font-size:12px;
  color:#485467;
}
.wg-progress .pg-row span{font-weight:600;}
.wg-progress .pg-row b{font-weight:700;color:#2f3a4a;text-align:right;}
.wg-progress .pg-bar{
  height:10px;
  border-radius:999px;
  background:#e0e0e0;
  overflow:hidden;
}
.wg-progress .pg-bar i{
  display:block;
  height:100%;
  border-radius:999px;
}

/* 日历卡片 */
.wg-calendar{
  background:#e9e9e9;
  border:1px solid rgba(255,255,255,0.72);
  box-shadow:0 16px 34px rgba(0,0,0,0.24);
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
  font-family:"SF Pro Display","SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}
.wg-card.wg-calendar:hover{background:#e9e9e9;}

.wg-calendar.wg-2x2{
  padding:0;
  display:flex;
  flex-direction:column;
}
.wg-calendar.wg-2x2 .mini-head{
  height:clamp(28px,calc(var(--iconWidth) * 0.52),36px);
  background:transparent;
  color:#252525;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:clamp(11px,calc(var(--iconWidth) * 0.2),14px);
  font-weight:500;
  letter-spacing:0;
  flex-shrink:0;
  font-variant-numeric:tabular-nums;
}
.wg-calendar.wg-2x2 .mini-body{
  flex:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  gap:4px;
  padding:0 8px 8px;
}
.wg-calendar.wg-2x2 .mini-day{
  font-size:clamp(42px,calc(var(--iconWidth) * 0.95),72px);
  line-height:.84;
  font-weight:700;
  color:#050505;
  font-variant-numeric:tabular-nums;
}
.wg-calendar.wg-2x2 .mini-meta{
  font-size:clamp(10px,calc(var(--iconWidth) * 0.17),12px);
  line-height:1.12;
  color:#9ea3ac;
  font-weight:500;
}
.wg-calendar.wg-2x2 .mini-lunar{
  font-size:clamp(11px,calc(var(--iconWidth) * 0.22),14px);
  line-height:1.14;
  color:#1f1f1f;
  letter-spacing:0;
  max-width:100%;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

@media(max-width:1024px){
  .wg-calendar.wg-2x2 .mini-body{
    gap:3px;
    padding:0 6px 7px;
  }
  .wg-calendar.wg-2x2 .mini-day{
    font-size:clamp(38px,calc(var(--iconWidth) * 0.9),56px);
  }
  .wg-calendar.wg-2x2 .mini-meta{
    display:none;
  }
}

@media(max-width:768px){
  .wg-card{text-align:center;}
  .wg-card .wg-body{align-items:center;}
  .wg-memo .wg-body,
  .wg-memo .wg-memo-items{align-items:flex-start;text-align:left;}
}

.wg-calendar.wg-2x4{
  padding:12px 12px 10px;
}
.wg-calendar.wg-2x4 .cal-shell{
  display:grid;
  grid-template-columns:124px 1fr;
  gap:7px;
  height:100%;
}
.wg-calendar.wg-2x4 .cal-left{
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-width:0;
  padding-top:2px;
  align-items:center;
  text-align:center;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}
.wg-calendar.wg-2x4 .cal-month-line{
  font-size:17px;
  line-height:1.12;
  color:#333842;
  font-weight:460;
  letter-spacing:-.005em;
  font-variant-numeric:tabular-nums;
}
.wg-calendar.wg-2x4 .cal-big-day{
  margin-top:6px;
  font-size:92px;
  line-height:.82;
  color:#191d24;
  font-weight:500;
  letter-spacing:-.03em;
  font-variant-numeric:tabular-nums;
}
.wg-calendar.wg-2x4 .cal-meta{
  margin-top:6px;
  font-size:12px;
  line-height:1.2;
  color:#8f96a3;
  font-weight:500;
  white-space:nowrap;
}
.wg-calendar.wg-2x4 .cal-lunar{
  margin-top:4px;
  font-size:12px;
  line-height:1.24;
  color:#252a31;
  font-weight:460;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.wg-calendar.wg-2x4 .cal-right{
  display:flex;
  flex-direction:column;
  min-width:0;
  min-height:0;
  padding-top:1px;
}
.wg-calendar.wg-2x4 .cal-week{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  text-align:center;
  font-size:12px;
  line-height:1.05;
  color:#353940;
  margin-bottom:2px;
  white-space:nowrap;
  font-weight:500;
  letter-spacing:0;
}
.wg-calendar.wg-2x4 .cal-week span:first-child,
.wg-calendar.wg-2x4 .cal-week span:last-child{
  color:#ef5a69;
}
.wg-calendar.wg-2x4 .cal-grid{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  grid-template-rows:repeat(6,minmax(0,1fr));
  gap:0;
  margin-top:0;
  align-content:stretch;
  flex:1;
  min-height:0;
}
.wg-calendar.wg-2x4 .cal-day-cell{
  height:100%;
  min-height:0;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:9px;
  font-size:32px;
  line-height:1;
  color:#343941;
  font-weight:500;
  letter-spacing:0;
  transform:scale(.48);
  transform-origin:center center;
  font-variant-numeric:tabular-nums;
}
.wg-calendar.wg-2x4 .cal-day-cell.dim{
  color:#989ea8;
}
.wg-calendar.wg-2x4 .cal-day-cell.weekend{
  color:#e85c6c;
}
.wg-calendar.wg-2x4 .cal-day-cell.today{
  color:#fff;
  background:#ef5a69;
  font-weight:700;
  border-radius:8px;
  width:min(38px,92%);
  height:min(30px,88%);
  font-size:15px;
  transform:none;
  box-shadow:0 1px 0 rgba(255,255,255,.2) inset;
  justify-self:center;
  align-self:center;
}
@media(max-width:640px){
  .wg-memo-board{grid-template-columns:62px 1fr;gap:6px;}
  .wg-memo-word{font-size:12px;}
  .wg-task{padding:4px 6px;}
  .wg-task span{font-size:10px;}
  .wg-calendar.wg-2x2 .mini-head{font-size:12px;height:28px;}
  .wg-calendar.wg-2x2 .mini-day{font-size:44px;}
  .wg-calendar.wg-2x2 .mini-meta{display:none;}
  .wg-calendar.wg-2x2 .mini-lunar{font-size:11px;}
  .wg-calendar.wg-2x4{padding:9px 9px 8px;}
  .wg-calendar.wg-2x4 .cal-shell{grid-template-columns:96px 1fr;gap:5px;}
  .wg-calendar.wg-2x4 .cal-month-line{font-size:15px;}
  .wg-calendar.wg-2x4 .cal-big-day{font-size:72px;line-height:.84;}
  .wg-calendar.wg-2x4 .cal-meta{display:none;}
  .wg-calendar.wg-2x4 .cal-lunar{font-size:11px;margin-top:4px;}
  .wg-calendar.wg-2x4 .cal-week{font-size:10px;margin-bottom:1px;}
  .wg-calendar.wg-2x4 .cal-day-cell{font-size:24px;transform:scale(.48);}
  .wg-calendar.wg-2x4 .cal-day-cell.today{
    width:min(30px,90%);
    height:min(24px,86%);
    border-radius:6px;
    font-size:12px;
    transform:none;
  }
}

/* 详情弹窗 */
#widget-mask{
  position:fixed;inset:0;z-index:5000;
  background:rgba(0,0,0,0.35);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  display:none;align-items:center;justify-content:center;
  padding:20px;
}
#widget-mask.open{display:flex;}
#widget-panel{
  width:min(560px,92vw);
  background:rgba(255,255,255,0.92);
  border:1px solid rgba(255,255,255,0.65);
  border-radius:24px;
  padding:18px 20px 20px;
  box-shadow:0 20px 60px rgba(0,0,0,0.3);
  color:#1c1c1e;
  max-height:92vh;
  overflow:auto;
}
.wg-modal-actions{
  display:flex;gap:8px;margin-bottom:10px;
}
.wg-chip{
  border:1px solid rgba(0,0,0,0.12);
  background:rgba(0,0,0,0.05);
  color:rgba(0,0,0,0.7);
  border-radius:999px;padding:4px 10px;font-size:12px;cursor:pointer;
}
.wg-chip.on{
  background:rgba(0,0,0,0.12);
  color:#111;
  border-color:rgba(0,0,0,0.2);
}
.wg-modal-hd{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:12px;
}
.wg-modal-title{
  display:flex;align-items:center;gap:8px;
  font-size:16px;font-weight:700;
}
.wg-close{
  border:none;cursor:pointer;
  background:rgba(0,0,0,0.06);
  border-radius:10px;padding:6px 10px;font-size:12px;
}
.wg-modal-body textarea{
  width:100%;min-height:220px;box-sizing:border-box;
  border:1px solid rgba(0,0,0,0.12);
  border-radius:12px;padding:12px;
  font-size:14px;background:rgba(255,255,255,0.7);
  outline:none;resize:vertical;
}
.wg-modal-sub{font-size:12px;color:rgba(0,0,0,0.45);margin-top:8px;}
.wg-modal-ft{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;}
.wg-form{
  display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:8px;align-items:center;
  margin-bottom:12px;
}
@media(max-width:560px){
  .wg-form{grid-template-columns:1fr;}
}
.wg-form input{
  border:1px solid rgba(0,0,0,0.12);
  border-radius:10px;padding:8px 10px;font-size:13px;
  background:rgba(255,255,255,0.8);outline:none;
}
.wg-list{display:flex;flex-direction:column;gap:8px;}
.wg-item{
  display:flex;align-items:center;justify-content:space-between;
  background:rgba(0,0,0,0.04);
  border:1px solid rgba(0,0,0,0.08);
  border-radius:12px;padding:8px 10px;
}
.wg-item-title{font-size:13px;font-weight:600;}
.wg-item-sub{font-size:11px;color:rgba(0,0,0,0.5);}
.wg-empty{font-size:12px;color:rgba(0,0,0,0.45);}

.wg-memo-panel{
  display:grid;grid-template-columns:170px 1fr;gap:12px;
}
@media(max-width:560px){
  .wg-memo-panel{grid-template-columns:1fr;}
}
.wg-memo-list{
  background:rgba(0,0,0,0.04);
  border:1px solid rgba(0,0,0,0.08);
  border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:6px;
  max-height:320px;overflow:auto;
}
.wg-add-note{
  border:none;border-radius:10px;padding:6px 8px;cursor:pointer;
  background:rgba(0,0,0,0.06);font-size:12px;color:#333;
}
.wg-note{
  border-radius:10px;padding:6px 8px;cursor:pointer;
  background:rgba(255,255,255,0.6);border:1px solid rgba(0,0,0,0.06);
}
.wg-note.on{outline:2px solid rgba(0,0,0,0.2);}
.wg-note-title{font-size:12px;font-weight:600;}
.wg-note-sub{font-size:10px;color:rgba(0,0,0,0.45);margin-top:2px;}
.wg-memo-edit textarea{
  width:100%;min-height:180px;box-sizing:border-box;
  border:1px solid rgba(0,0,0,0.12);
  border-radius:12px;padding:12px;font-size:14px;background:rgba(255,255,255,0.7);
  outline:none;resize:vertical;margin-top:8px;
}
.wg-memo-edit input{
  width:100%;border:1px solid rgba(0,0,0,0.12);
  border-radius:10px;padding:8px 10px;font-size:13px;background:rgba(255,255,255,0.8);
  outline:none;
}

/* 日历详情（参考 mtab，移除待办录入流） */
#widget-panel.wg-panel-calendar{
  width:min(1120px,96vw);
  padding:0;
  border-radius:22px;
  background:#ededed;
  border:1px solid rgba(255,255,255,0.75);
  overflow:hidden;
  max-height:92vh;
}
.wg-panel-memo{
  width:min(1120px,96vw);
  padding:0;
  border-radius:22px;
  background:#ededed;
  border:1px solid rgba(255,255,255,0.75);
  overflow:hidden;
  max-height:92vh;
}
.wg-panel-app{
  width:min(1120px,96vw);
  padding:0;
  border-radius:22px;
  background:#ededed;
  border:1px solid rgba(255,255,255,0.75);
  overflow:hidden;
  max-height:92vh;
}
.wg-app-modal{
  display:flex;
  flex-direction:column;
  min-height:min(720px,84vh);
  max-height:92vh;
  overflow:auto;
}
.wg-app-hd{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 14px;
  background:rgba(255,255,255,0.5);
  border-bottom:1px solid rgba(0,0,0,0.06);
}
.wg-app-hd-actions{
  display:flex;
  align-items:center;
  gap:10px;
}
.wg-panel-memo .wg-modal-body{
  padding:14px 16px 16px;
}
.wg-panel-app .wg-modal-body{
  padding:14px 16px 16px;
}
.wg-panel-memo .wg-memo-panel{
  grid-template-columns:260px 1fr;
  min-height:min(720px,84vh);
}
.wg-panel-memo .wg-memo-list{
  max-height:none;
  min-height:0;
  background:#f3f3f3;
}
.wg-panel-memo .wg-memo-edit textarea{
  min-height:400px;
}
.wg-cal-modal{
  display:flex;
  flex-direction:column;
  min-height:min(720px,84vh);
  max-height:92vh;
  overflow:auto;
}
.wg-cal-hd{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 14px;
  background:rgba(255,255,255,0.5);
  border-bottom:1px solid rgba(0,0,0,0.06);
}
.wg-cal-hd-actions{
  display:flex;
  align-items:center;
  gap:10px;
}
.wg-cal-hd .wg-modal-actions{margin-bottom:0;}
.wg-cal-view{
  flex:1;
  min-height:0;
  display:grid;
  grid-template-columns:1fr 320px;
}
.wg-cal-main{
  min-height:0;
  padding:14px;
}
.wg-cal-toolbar{
  display:flex;
  align-items:center;
  gap:6px;
  margin-bottom:8px;
}
.wg-cal-toolbar select{
  height:32px;
  border:1px solid rgba(0,0,0,0.14);
  border-radius:8px;
  background:#f7f7f7;
  color:#333;
  font-size:13px;
  padding:0 9px;
}
.wg-cal-nav{
  width:32px;
  height:32px;
  border-radius:8px;
  border:1px solid rgba(0,0,0,0.14);
  background:#f7f7f7;
  color:#444;
  font-size:18px;
  line-height:1;
  cursor:pointer;
}
.wg-cal-nav:hover{background:#fff;}
.wg-cal-week{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  margin-bottom:6px;
  color:#111;
  font-size:13px;
  font-weight:600;
  text-align:center;
}
.wg-cal-week span:first-child,
.wg-cal-week span:last-child{color:#f04957;}
.wg-cal-grid{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:5px 6px;
}
.wg-cal-cell{
  border:none;
  background:transparent;
  border-radius:12px;
  min-height:70px;
  padding:6px 4px;
  text-align:center;
  cursor:pointer;
  color:#111;
}
.wg-cal-cell:hover{background:rgba(0,0,0,0.04);}
.wg-cal-cell.dim{color:rgba(0,0,0,0.28);}
.wg-cal-cell.weekend .wg-cal-g{color:#e04c5a;}
.wg-cal-cell.today{
  outline:2px solid rgba(64,121,218,0.2);
  outline-offset:-2px;
}
.wg-cal-cell.selected{
  background:#3f76b8;
  color:#fff;
}
.wg-cal-cell.selected .wg-cal-g,
.wg-cal-cell.selected .wg-cal-l{color:#fff;}
.wg-cal-g{
  font-size:28px;
  font-weight:700;
  line-height:1;
  font-variant-numeric:tabular-nums;
}
.wg-cal-l{
  margin-top:2px;
  font-size:11px;
  color:#2f67b2;
}
.wg-cal-side{
  border-left:1px solid rgba(0,0,0,0.08);
  background:#f3f3f3;
  padding:16px 14px;
  display:flex;
  flex-direction:column;
  gap:6px;
}
.wg-cal-side-date{
  font-size:14px;
  font-weight:600;
  line-height:1.35;
  color:#2a2f38;
  font-variant-numeric:tabular-nums;
}
.wg-cal-day-card{
  width:128px;
  height:128px;
  border-radius:18px;
  background:#3f76b8;
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:64px;
  font-weight:700;
  line-height:1;
  font-variant-numeric:tabular-nums;
}
.wg-cal-side-lunar{
  margin-top:3px;
  font-size:15px;
  line-height:1.35;
  color:#1f1f1f;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.wg-cal-side-year,.wg-cal-side-week{
  font-size:12px;
  line-height:1.35;
  color:#717984;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.wg-cal-side-src{
  font-size:11px;
  color:#8c93a0;
}
.wg-cal-side-list{
  margin-top:6px;
  border-top:1px solid rgba(0,0,0,0.08);
}
.wg-cal-side-item{
  display:flex;
  align-items:flex-start;
  gap:8px;
  border-bottom:1px solid rgba(0,0,0,0.08);
  padding:8px 0;
}
.wg-cal-side-item span{
  width:38px;
  min-width:38px;
  height:22px;
  border-radius:7px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  font-size:12px;
  font-weight:600;
}
.wg-cal-side-item:nth-child(1) span{background:#3f76b8;}
.wg-cal-side-item:nth-child(2) span{background:#e55a7f;}
.wg-cal-side-item:nth-child(3) span{background:#7cb84e;}
.wg-cal-side-item:nth-child(4) span{background:#8e99a5;}
.wg-cal-side-item b{
  color:#2d3340;
  font-size:13px;
  font-weight:500;
  line-height:1.45;
  flex:1;
  word-break:break-word;
}
@media(max-width:1080px){
  #widget-panel.wg-panel-calendar{width:min(980px,96vw);}
  .wg-panel-memo{width:min(980px,96vw);}
  .wg-panel-app{width:min(980px,96vw);}
  .wg-cal-view{grid-template-columns:1fr;}
  .wg-cal-side{
    border-left:none;
    border-top:1px solid rgba(0,0,0,0.08);
    display:grid;
    grid-template-columns:128px 1fr;
    column-gap:14px;
    row-gap:8px;
    align-items:start;
  }
  .wg-cal-side-date{grid-column:1 / -1;}
  .wg-cal-day-card{grid-row:2 / span 4;}
  .wg-cal-side-lunar{grid-column:2;}
  .wg-cal-side-year{grid-column:2;}
  .wg-cal-side-week{grid-column:2;}
  .wg-cal-side-src{grid-column:2;}
  .wg-cal-side-list{grid-column:1 / -1;}
}
@media(max-width:640px){
  #widget-panel.wg-panel-calendar{width:96vw;}
  .wg-panel-memo{width:96vw;}
  .wg-panel-app{width:96vw;}
  #widget-mask{padding:12px;}
  .wg-app-hd{
    flex-direction:column;
    align-items:flex-start;
  }
  .wg-app-hd-actions{width:100%;justify-content:space-between;flex-wrap:wrap;}
  .wg-cal-hd{
    flex-direction:column;
    align-items:flex-start;
  }
  .wg-cal-hd-actions{width:100%;justify-content:space-between;flex-wrap:wrap;}
  .wg-cal-main{padding:12px;}
  .wg-cal-week{font-size:12px;}
  .wg-cal-grid{gap:4px;}
  .wg-cal-cell{min-height:56px;border-radius:10px;}
  .wg-cal-g{font-size:22px;}
  .wg-cal-l{font-size:10px;}
  .wg-cal-side{
    padding:12px;
    grid-template-columns:96px 1fr;
  }
  .wg-cal-day-card{
    width:96px;height:96px;font-size:52px;border-radius:14px;
  }
  .wg-cal-side-item span{width:34px;min-width:34px;height:20px;font-size:11px;}
  .wg-cal-side-item b{font-size:12px;}
  .wg-panel-memo .wg-memo-panel{grid-template-columns:1fr;min-height:unset;}
  .wg-panel-memo .wg-memo-edit textarea{min-height:240px;}
}

/* ════════════════════════════════════════
