/* ══════════════════════════════════════════════════════════
   app/skin.css — 登录墙 v2 / 天空 / 仪表盘观感皮肤 / 弹出框质感 / 视觉效果 / 一屏布局调优 / 卡面点缀
   由原 assets/app.css 第 1469–1855 行拆出；七个文件按 index.html 里的顺序加载，层叠顺序与原来一致
   ══════════════════════════════════════════════════════════ */
/* ══════════ 登录墙 v2 · 高级分栏重设计 ══════════ */
.auth-wall.checking .auth2-shell{display:none;}
.auth2-shell{
  --a:#ffb7c5;--a2:#ff6b9d;--gold:#e9c789;
  --ink:#f4ebf1;--ink-soft:#c2a7bd;--ink-dim:#7a6274;
  --line:rgba(255,183,197,.14);--line2:rgba(255,183,197,.3);--field:rgba(255,255,255,.05);
  position:relative;z-index:1;
  width:min(880px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;
  display:grid;grid-template-columns:1.05fr 1.15fr;
  background:rgba(20,12,30,.62);
  border:1px solid var(--line2);border-radius:28px;overflow-x:hidden;
  box-shadow:0 40px 100px rgba(0,0,0,.62),0 0 0 1px rgba(255,255,255,.05),inset 0 1px 0 rgba(255,255,255,.07);
  backdrop-filter:blur(32px) saturate(1.3);-webkit-backdrop-filter:blur(32px) saturate(1.3);
}
/* 左品牌墙 */
.auth2-brand{position:relative;overflow:hidden;padding:48px 40px;
  display:flex;flex-direction:column;justify-content:space-between;border-right:1px solid var(--line);
  background:radial-gradient(560px 280px at 18% 0%,rgba(255,107,157,.4),transparent 60%),
            linear-gradient(155deg,rgba(232,80,122,.34),rgba(120,40,90,.28) 90%);}
.auth2-brand::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.12),transparent 32%);pointer-events:none;}
.auth2-btop{position:relative;z-index:2;display:flex;align-items:center;gap:10px;}
.auth2-seal{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:17px;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.35);box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 4px 12px rgba(0,0,0,.25);}
.auth2-kicker{font-size:11px;letter-spacing:3px;color:#fff;opacity:.82;}
.auth2-bmid{position:relative;z-index:2;}
.auth2-wordmark{font-family:"Songti SC","STSong","Noto Serif SC","SimSun",serif;
  font-size:clamp(40px,6vw,56px);line-height:1.04;color:#fff;font-weight:600;letter-spacing:6px;
  text-shadow:0 8px 30px rgba(80,10,40,.5);}
.auth2-en{display:block;font-family:var(--font-body);font-size:12px;letter-spacing:6px;font-weight:400;
  margin-top:14px;color:rgba(255,255,255,.7);text-transform:uppercase;}
.auth2-goldline{height:1px;margin:18px 0;background:linear-gradient(90deg,transparent,var(--gold),transparent);opacity:.7;}
.auth2-verse{font-family:"Songti SC","STSong","Noto Serif SC","SimSun",serif;
  color:rgba(255,255,255,.9);font-size:15px;line-height:2;max-width:15em;}
.auth2-verse .fade{color:rgba(255,255,255,.6);}
.auth2-chips{position:relative;z-index:2;display:flex;gap:8px;flex-wrap:wrap;}
.auth2-chips span{font-size:12px;letter-spacing:2px;color:#fff;padding:6px 13px;border-radius:999px;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.28);}
/* 右表单 */
.auth2-form{padding:44px 40px 34px;display:flex;flex-direction:column;}
.auth2-tabs{display:flex;gap:28px;}
.auth2-tab{position:relative;background:none;border:none;cursor:pointer;font-family:inherit;
  font-size:18px;font-weight:600;color:var(--ink-dim);padding:4px 2px 14px;letter-spacing:2px;transition:color .25s;}
.auth2-tab.active{color:var(--ink);}
.auth2-tab::after{content:'';position:absolute;left:0;bottom:6px;height:3px;width:100%;border-radius:3px;
  background:linear-gradient(90deg,var(--a),var(--a2));transform:scaleX(0);transform-origin:left;
  transition:transform .32s cubic-bezier(.16,1,.3,1);box-shadow:0 2px 10px rgba(255,107,157,.5);}
.auth2-tab.active::after{transform:scaleX(1);}
.auth2-sub{color:var(--ink-soft);font-size:13px;margin:14px 0 24px;letter-spacing:.5px;}
.auth2-field{margin-bottom:20px;}
.auth2-label{display:block;font-size:11px;letter-spacing:2px;color:var(--ink-dim);margin:0 0 6px 2px;text-transform:uppercase;}
.auth2-iw{position:relative;display:flex;align-items:center;}
.auth2-ic{position:absolute;left:4px;font-size:15px;opacity:.55;pointer-events:none;}
.auth2-input{width:100%;background:transparent;border:none;outline:none;
  padding:10px 6px 10px 32px;color:var(--ink);font-size:15px;font-family:inherit;
  border-bottom:1.5px solid var(--line2);transition:border-color .2s;}
.auth2-input::placeholder{color:var(--ink-dim);opacity:.7;}
.auth2-glow{position:absolute;left:0;bottom:0;height:1.5px;width:100%;transform:scaleX(0);transform-origin:left;
  background:linear-gradient(90deg,var(--a),var(--a2));transition:transform .3s cubic-bezier(.16,1,.3,1);pointer-events:none;}
.auth2-input:focus ~ .auth2-glow{transform:scaleX(1);}
/* 密码框被 pwdeye.js 包了一层 .pwd-eye-wrap，就不再是 .auth2-glow 的兄弟节点，
   上面那条选择器选不中。改用 :focus-within 从外层判，任何嵌套层级都成立 */
.auth2-iw:focus-within .auth2-glow{transform:scaleX(1);}
.auth2-iw-btn .auth2-input{padding-right:104px;}
.auth2-codebtn{position:absolute;right:0;font-family:inherit;font-size:12px;letter-spacing:1px;
  color:var(--a);background:none;border:1px solid var(--line2);padding:6px 12px;border-radius:8px;cursor:pointer;transition:all .18s;}
.auth2-codebtn:hover{background:rgba(255,183,197,.12);border-color:var(--a);}
.auth2-codebtn:disabled{opacity:.5;cursor:not-allowed;}
.auth2-submit{position:relative;width:100%;border:none;cursor:pointer;font-family:inherit;margin-top:6px;
  padding:15px;border-radius:14px;color:#2a0a17;font-size:15.5px;font-weight:700;letter-spacing:4px;overflow:hidden;
  background:linear-gradient(120deg,var(--a),var(--a2));
  box-shadow:0 14px 30px -10px rgba(255,107,157,.6),inset 0 1px 0 rgba(255,255,255,.4);transition:transform .16s,box-shadow .2s;}
.auth2-submit::before{content:'';position:absolute;top:0;left:-60%;width:40%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-20deg);transition:left .6s;}
.auth2-submit:hover{transform:translateY(-2px);box-shadow:0 20px 42px -12px rgba(255,107,157,.75),inset 0 1px 0 rgba(255,255,255,.4);}
.auth2-submit:hover::before{left:130%;}
.auth2-submit:disabled{opacity:.6;cursor:not-allowed;transform:none;}
.auth2-rules{margin-top:20px;text-align:center;color:var(--ink-dim);font-size:11.5px;letter-spacing:.5px;line-height:1.7;}
.auth2-forgot{display:block;margin-top:8px;color:var(--a);cursor:pointer;font-weight:600;}
.auth2-forgot:hover{color:var(--a2);}
/* 登录页的语言切换：挂在标签行最右边，和「登录 / 注册」同一行 */
.auth2-lang{display:inline-flex;align-items:center;gap:5px;margin-left:auto;padding:5px 12px;border-radius:999px;
  color:var(--a);cursor:pointer;font-size:.8rem;font-weight:600;opacity:.8;
  border:1px solid transparent;transition:opacity .18s,border-color .18s,background .18s;}
.auth2-lang:hover{opacity:1;border-color:rgba(255,183,197,.3);background:rgba(255,183,197,.08)}
.auth2-lang svg.ico{width:1.05em;height:1.05em}
.auth2-tabs{align-items:center;}
@media (max-width:720px){
  .auth2-shell{grid-template-columns:1fr;width:min(420px,calc(100vw - 24px));}
  .auth2-brand{padding:32px 30px;}
  .auth2-bmid{margin:22px 0;}
  .auth2-verse{display:none;}
  .auth2-form{padding:30px 28px 26px;}
}
@media (prefers-reduced-motion:reduce){.auth2-tab::after,.auth2-glow,.auth2-submit,.auth2-submit::before{transition:none;}}

/* ══════════ 昼夜实时天空 ══════════ */
#sky-layer{position:fixed;inset:0;z-index:-1;pointer-events:none;transition:background 2.5s linear;}
#sky-stars{position:absolute;inset:0;width:100%;height:100%;transition:opacity 2.5s linear;}

/* ══════════ 倒数日卡 ══════════ */
.cd-card .card-title{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.cd-add-toggle{background:rgba(255,183,197,.1);border:1px solid var(--glass-border);color:var(--pink-sakura,#ffb7c5);
  font-size:.74rem;padding:4px 12px;border-radius:20px;cursor:pointer;font-family:inherit;transition:all .18s;}
.cd-add-toggle:hover{background:rgba(255,183,197,.2);border-color:var(--glass-hover);}
.cd-add{max-height:0;overflow:hidden;opacity:0;transition:max-height .28s ease,opacity .2s,margin .28s;margin:0;}
.cd-add.open{max-height:140px;opacity:1;margin:12px 0 4px;}
.cd-list{display:flex;flex-direction:column;gap:9px;margin-top:12px;}

/* ══════════ 倒数日 v2 · 弹窗/日历/沉浸 ══════════ */

.cd-modal{position:fixed;inset:0;z-index:100060;display:none;align-items:center;justify-content:center;
  background:rgba(6,4,16,.8);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);padding:18px;}
.cd-modal.show{display:flex;}
.cd-modal-card{width:min(400px,96vw);max-height:calc(100dvh - 36px);overflow:auto;
  background:radial-gradient(400px 200px at 20% -8%,rgba(255,107,157,.16),transparent 60%),linear-gradient(160deg,rgba(28,17,38,.97),rgba(16,10,26,.98));
  border:1px solid rgba(255,183,197,.28);border-radius:24px;box-shadow:0 30px 80px rgba(0,0,0,.62);}

.cd-stage{position:fixed;inset:0;z-index:100070;display:none;overflow:hidden;}
.cd-stage.show{display:block;animation:cdStageIn .4s ease;}
@keyframes cdStageIn{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.cd-stage.show,.cd-stage-emoji{animation:none;}}

/* ══════════ 仪表盘 · 高级观感皮肤（布局/尺寸不变，纯视觉叠加，全主题安全）══════════ */
#dashboard-root .card{ position:relative;
  box-shadow:0 26px 56px -30px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.06); }
#dashboard-root .card::before{ content:''; position:absolute; top:0; left:24px; right:24px; height:1px; pointer-events:none; z-index:2;
  background:linear-gradient(90deg, transparent, rgba(255,183,197,.55) 35%, rgba(233,199,137,.5) 65%, transparent); }
#dashboard-root .card:hover{ box-shadow:0 34px 70px -30px rgba(0,0,0,.7), inset 0 1px 0 rgba(255,255,255,.08); }
/* 主时钟卡：柔粉光晕 + 宋体日期 + 更强辉光 */
#dashboard-root .main-clock-card{ overflow:hidden; }
#dashboard-root .main-clock-card::after{ content:''; position:absolute; inset:0; pointer-events:none; z-index:0;
  background:radial-gradient(620px 300px at 50% -18%, rgba(255,107,157,.16), transparent 62%); }
#dashboard-root .main-clock-card > *{ position:relative; z-index:1; }
#dashboard-root .time-display{ filter:drop-shadow(0 8px 36px rgba(255,107,157,.3)); }
#dashboard-root .date-display{ font-family:"Songti SC","STSong","Noto Serif SC","SimSun",serif; letter-spacing:3px; }
/* 顶栏发丝金线 */
#dashboard-root .header-bar::after{ content:''; position:absolute; top:0; left:26px; right:26px; height:1px; pointer-events:none;
  background:linear-gradient(90deg, transparent, rgba(255,183,197,.5), rgba(233,199,137,.45), transparent); }
/* 时区卡：内高光 + 更精致悬停 */
#dashboard-root .tz-card{ box-shadow:inset 0 1px 0 rgba(255,255,255,.05); }
#dashboard-root .tz-card:hover{ box-shadow:0 14px 32px -16px rgba(255,107,157,.32), inset 0 1px 0 rgba(255,255,255,.07); }

/* ══════════ 弹出框 · 高级质感（发丝金线用 ::after 避开移动端拖动手柄，全主题安全）══════════ */
.cal-panel, .calc-panel, .note-panel, .sakura-confirm-box, .chat-paste-box{
  position:relative;
  box-shadow:0 30px 72px -28px rgba(0,0,0,.72), 0 0 0 1px rgba(255,183,197,.09), inset 0 1px 0 rgba(255,255,255,.06);
}
.nav-more-dropdown, .custom-select-options{
  box-shadow:0 28px 64px -26px rgba(0,0,0,.72), 0 0 0 1px rgba(255,183,197,.08), inset 0 1px 0 rgba(255,255,255,.05);
}
.cal-panel::after, .calc-panel::after, .note-panel::after,
.sakura-confirm-box::after, .chat-paste-box::after,
.nav-more-dropdown::after{
  content:''; position:absolute; top:0; left:22px; right:22px; height:1px; pointer-events:none; z-index:5;
  background:linear-gradient(90deg, transparent, rgba(255,183,197,.55) 35%, rgba(233,199,137,.5) 65%, transparent);
}

/* ══════════ ✨ 视觉炸点 ══════════ */
/* 1&5 卡片高光跟手层 */
.card-sheen{ position:absolute; inset:0; border-radius:inherit; pointer-events:none; opacity:0; transition:opacity .3s; z-index:3; mix-blend-mode:screen; }
#dashboard-root .card.tiltable{ will-change:transform; }

/* 2 翻牌时钟 */
#lbl-main-time.flap-src-hidden{ display:none; }
.flap-clock{ display:flex; align-items:center; justify-content:center; gap:.01em; margin-bottom:20px;
  font-family:var(--font-display); font-size:clamp(3rem,9vw,7.5rem); font-weight:300; line-height:1; letter-spacing:-2px; }
.flap-clock .fdig{ display:inline-block; min-width:.62em; text-align:center; backface-visibility:hidden;
  background:linear-gradient(180deg,#fff 30%,#ffe4e9 100%); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
  filter:drop-shadow(0 8px 30px rgba(255,105,180,.28)); }
.flap-clock .flap-colon{ padding:0 .03em; opacity:.85;
  background:linear-gradient(180deg,#fff,#ffe4e9); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
.flap-clock .fdig.flip{ animation:fdFlip .3s cubic-bezier(.4,0,.3,1); }
@keyframes fdFlip{ 0%{transform:perspective(240px) rotateX(0)} 49%{transform:perspective(240px) rotateX(-90deg)} 51%{transform:perspective(240px) rotateX(90deg)} 100%{transform:perspective(240px) rotateX(0)} }
body.theme-light .flap-clock .fdig, body.theme-light .flap-clock .flap-colon{ background:linear-gradient(180deg,#2d0f38 20%,#c0305a 100%); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
@media(max-width:768px){ .flap-clock{ font-size:clamp(2.8rem,14vw,4.6rem); letter-spacing:-1px; } }

/* 3 光标樱花轨迹 */
#cursor-fx{ position:fixed; inset:0; pointer-events:none; z-index:9990; }

/* 4 开场序列 */
@keyframes introUp{ from{opacity:0; transform:translateY(16px)} to{opacity:1; transform:none} }
.app-shell.intro .left-col>*, .app-shell.intro .right-col>*, .app-shell.intro .header-bar{ opacity:0; animation:introUp .6s cubic-bezier(.16,1,.3,1) both; }

@media (prefers-reduced-motion:reduce){
  .flap-clock .fdig.flip{ animation:none; }
  .app-shell.intro .left-col>*, .app-shell.intro .right-col>*, .app-shell.intro .header-bar{ opacity:1; animation:none; }
}

/* ══════════ 🌙 月相 / 🌅 日出日落（时光进度卡底部）══════════ */
.life-extra{ margin-top:14px; padding-top:12px; border-top:1px solid var(--glass-border); display:flex; flex-direction:column; gap:7px; }

/* ══════════ 🖥 桌面「一屏紧凑」布局：收紧高度，整站不需下滚 ══════════ */
@media (min-width:901px){
  .app-shell{ padding:14px 18px; gap:12px; }
  .header-bar{ height:54px; }
  .main-grid{ gap:14px; }
  .left-col{ gap:14px; }
  .right-col{ gap:12px; }
  .card{ padding:18px 20px; }
  .card-title{ margin-bottom:12px; }
  /* 主时钟卡收紧 */
  .main-clock-card{ padding:20px 24px 16px; }
  .city-name{ font-size:clamp(1.15rem,2.2vw,1.6rem); }
  .gmt-badge{ font-size:.7rem; padding:3px 12px; }
  .time-display, .flap-clock{ font-size:clamp(2.6rem,6.2vw,5rem); margin-bottom:12px; margin-top:6px; }
  .date-display{ margin-bottom:10px; font-size:clamp(.85rem,1.6vw,1rem); }
  .sub-row{ gap:8px; }
  .greeting-badge,.astro-badge{ font-size:.74rem; padding:4px 12px; }
  /* 时区格收紧 */
  .timezone-grid{ gap:9px; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); }
  .tz-card{ padding:10px 12px; gap:3px; }
  .tz-time{ font-size:1.15rem; }
  .tz-name{ font-size:.8rem; }
  /* 番茄钟收紧 */
  .pomo-ring{ width:118px; height:118px; }
  .pomo-ring-wrap{ margin-bottom:6px; }
  .pomo-display{ font-size:1.55rem; }
  .pomo-controls{ margin-top:6px; }
  .btn-pomo{ padding:8px 16px; font-size:.78rem; }
  /* 一言 + 秒表收紧 */
  .wisdom-text{ font-size:.88rem; line-height:1.7; }
  .sw-display{ font-size:1.7rem; margin-bottom:10px; }
  .sw-laps{ max-height:52px; overflow-y:auto; }
  /* 时光进度(翻面背) + 日月行收紧 */
  .flip-back .life-bars{ gap:10px; }
  .life-extra{ margin-top:10px; padding-top:9px; gap:5px; }
  /* 倒数日列表限高（内部滚，不撑破一屏） */
  .cd-list{ max-height:170px; overflow-y:auto; scrollbar-width:thin; }
}
/* 屏幕较矮时进一步收紧 */
@media (min-width:901px) and (max-height:860px){
  .app-shell{ padding:10px 18px; gap:10px; }
  .left-col{ gap:10px; }
  .time-display, .flap-clock{ font-size:clamp(2.2rem,5vw,3.6rem); margin-bottom:8px; }
  .main-clock-card{ padding:16px 22px 12px; }
  .card{ padding:14px 18px; }
  .card-title{ margin-bottom:9px; }
  .tz-card{ padding:8px 10px; }
  .tz-time{ font-size:1.05rem; }
  .pomo-ring{ width:100px; height:100px; }
  .pomo-display{ font-size:1.3rem; }
  .wisdom-text{ font-size:.82rem; line-height:1.6; }
  .sw-display{ font-size:1.45rem; }
  .flip-back .life-bars{ gap:7px; }
  .cd-list{ max-height:120px; }
}

/* 更矮屏幕(≤740px 高，如 1366x768 带任务栏)：极致收紧 */
@media (min-width:901px) and (max-height:740px){
  .app-shell{ padding:6px 16px; gap:6px; }
  .header-bar{ height:42px; }
  .left-col{ gap:6px; }
  .right-col{ gap:6px; }
  .card{ padding:10px 16px; }
  .card-title{ margin-bottom:6px; font-size:.72rem; }
  .main-clock-card{ padding:8px 20px 6px; }
  .city-name{ font-size:1.05rem; }
  .gmt-badge{ font-size:.62rem; padding:2px 10px; }
  .time-display, .flap-clock{ font-size:clamp(1.9rem,4.2vw,2.8rem); margin:4px 0 6px; }
  .date-display{ margin-bottom:6px; font-size:.8rem; }
  .greeting-badge,.astro-badge{ font-size:.66rem; padding:3px 10px; }
  .timezone-grid{ gap:7px; grid-template-columns:repeat(auto-fill,minmax(128px,1fr)); }
  .tz-card{ padding:6px 9px; gap:2px; }
  .tz-time{ font-size:.95rem; }
  .tz-name{ font-size:.72rem; }
  .tz-offset{ font-size:.6rem; }
  .pomo-ring{ width:80px; height:80px; }
  .pomo-display{ font-size:1.1rem; }
  .pomo-mode{ font-size:.58rem; }
  .btn-pomo{ padding:6px 13px; font-size:.7rem; }
  .pomo-presets,.pomo-custom,.pomo-controls{ margin-top:5px; }
  .wisdom-text{ font-size:.76rem; line-height:1.55; }
  .sw-display{ font-size:1.25rem; margin-bottom:6px; }
  .sw-laps{ max-height:32px; }
  .flip-back .life-bars{ gap:5px; }
  .life-extra{ margin-top:7px; padding-top:6px; gap:3px; }
  .cd-list{ max-height:88px; }
}

/* ══════════ 🌅 日月信息 · 胶囊版（挪入全球同步时区面）══════════ */
.life-extra{ margin-top:12px; padding-top:0; border-top:none; display:grid; grid-template-columns:repeat(4,1fr); gap:9px; }
@media (max-width:600px){ .life-extra{ grid-template-columns:repeat(2,1fr); } }

/* ══════════ ⏳ 时光进度卡收紧（主时钟不动）══════════ */
.flip-back .life-bars{ gap:11px; }
.life-row{ padding:8px 12px; border-radius:12px; }
.life-row-head{ margin-bottom:5px; font-size:.78rem; }
.life-track{ height:9px; }
@media (min-width:901px) and (max-height:860px){ .flip-back .life-bars{ gap:8px; } .life-row{ padding:6px 11px; } }
@media (min-width:901px) and (max-height:740px){ .flip-back .life-bars{ gap:5px; } .life-row{ padding:5px 10px; } .life-track{ height:7px; } }

/* ══════════ 填满一屏：把富余高度交给主内容并拉伸卡片（修复顶部大空档）══════════ */
.app-shell{ grid-template-rows:auto auto auto 1fr; }   /* header / 公告 / 节日条 / 主内容 */
@media (min-width:901px){
  .main-grid{ align-items:stretch; }
  /* 左栏：主时钟吃掉富余高度，内容垂直居中；翻面卡保持自然高度 */
  .left-col .main-clock-card{ flex:1; display:flex; flex-direction:column; justify-content:center; }
  /* 右栏：番茄钟与一言卡弹性拉伸，秒表卡自然高度 */
  .right-col{ position:static; }
  .right-col .pomo-card{ flex:1.2; display:flex; flex-direction:column; justify-content:center; }
  .right-col .wisdom-card{ flex:1; display:flex; flex-direction:column; justify-content:center; }
}

/* app-shell 改用 flex 纵向布局：主内容吃掉全部富余高度（不依赖子元素个数，更稳） */
.app-shell{ display:flex; flex-direction:column; }
.app-shell > .main-grid{ flex:1 1 auto; }

/* ══════════ 一屏填充 · 二次调优（钟更大 / 番茄钟均衡 / 一言回归自然高度）══════════ */
@media (min-width:901px){
  /* ① 主时钟卡拉高后，字号放大回来，撑起气场 */
  .time-display, .flap-clock{ font-size:clamp(3.2rem,7vw,6.4rem); margin:10px 0 16px; }
  .city-name{ font-size:clamp(1.3rem,2.4vw,1.9rem); }
  .date-display{ font-size:clamp(.95rem,1.8vw,1.15rem); margin-bottom:12px; }
  /* ② 番茄钟：内容均匀分布，不再两头挤 */
  .right-col .pomo-card{ flex:1.05; justify-content:space-evenly; }
  .right-col .pomo-card .pomo-ring-wrap{ margin-bottom:0; }
  /* ③ 一言卡：恢复自然高度（内容少就别撑大） */
  .right-col .wisdom-card{ flex:0 0 auto; display:block; }
  /* 富余高度交给秒表⇄倒数日翻卡（列表区可长，撑起来不空） */
  .right-col .flip-card{ flex:1; display:flex; flex-direction:column; }
  .right-col .flip-card .flip-inner{ flex:1; }
  .right-col .flip-card .flip-face{ height:100%; }
  .right-col .sw-laps{ max-height:none; flex:1; }
  .right-col .flip-front.card{ display:flex; flex-direction:column; }
  .right-col .cd-list{ max-height:none; flex:1; }
}
@media (min-width:901px) and (max-height:860px){
  .time-display, .flap-clock{ font-size:clamp(2.8rem,6.2vw,5rem); margin:8px 0 12px; }
}
@media (min-width:901px) and (max-height:740px){
  .time-display, .flap-clock{ font-size:clamp(2.3rem,5.2vw,3.8rem); margin:5px 0 8px; }
}

/* ══════════ 三处细修：番茄环居中 / 秒表居中 / 时区两行填满 ══════════ */
/* ① 番茄钟：改缩外框，SVG 恢复 100%，中心文字永远在圆心 */
@media (min-width:901px){
  .pomo-ring{ width:100%; height:100%; }
  .pomo-ring-wrap{ width:132px; height:132px; }
}
@media (min-width:901px) and (max-height:860px){ .pomo-ring-wrap{ width:112px; height:112px; } }
@media (min-width:901px) and (max-height:740px){ .pomo-ring-wrap{ width:92px; height:92px; } }

/* ② 秒表：内容块在卡片正中（标题留顶部） */
@media (min-width:901px){
  .right-col .flip-front .sw-display{ margin-top:auto; }
  .right-col .sw-laps{ flex:0 0 auto; margin-bottom:auto; }
}

/* ③ 时区：固定 6 列 ×2 行，行拉伸填满整卡 */
@media (min-width:901px){
  #tz-flip .flip-front{ display:flex; flex-direction:column; }
  .timezone-grid{ flex:1; grid-template-columns:repeat(6,1fr); grid-auto-rows:1fr; align-items:stretch; }
  .tz-card{ justify-content:center; padding:14px 16px; gap:5px; }
  .tz-time{ font-size:1.45rem; }
  .tz-name{ font-size:.88rem; }
  .tz-offset{ font-size:.7rem; }
}
@media (min-width:901px) and (max-height:740px){
  .tz-card{ padding:8px 12px; gap:3px; }
  .tz-time{ font-size:1.1rem; }
  .tz-name{ font-size:.76rem; }
}

/* 星座徽章美术：星空渐变 + 柔光 */
.astro-badge{ background:linear-gradient(135deg,rgba(56,189,248,.14),rgba(167,139,250,.16));
  border:1px solid rgba(167,139,250,.35); color:#cdbafd;
  box-shadow:0 0 14px rgba(167,139,250,.15), inset 0 1px 0 rgba(255,255,255,.08); }
body.theme-light .astro-badge{ background:linear-gradient(135deg,rgba(56,120,248,.1),rgba(140,100,240,.12)); color:#6d28d9; border-color:rgba(140,100,240,.35); }

/* ══════════ 🌸 卡面点缀：水印 / 流光描边 / 标题短线 / 空态插画 ══════════ */
/* ③ 右下角樱枝水印（内联 SVG 线稿，极淡） */
#dashboard-root .card{
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><defs><path id='pt' d='M0 -2.6C3.4 -4.4 4.6 -9.6 1.7 -13L0 -11.6L-1.7 -13C-4.6 -9.6 -3.4 -4.4 0 -2.6Z'/><radialGradient id='g1' cx='0' cy='0' r='14' gradientUnits='userSpaceOnUse'><stop offset='0' stop-color='%23fff6f9'/><stop offset='.55' stop-color='%23ffd9e6'/><stop offset='1' stop-color='%23ffadc6'/></radialGradient><radialGradient id='g2' cx='0' cy='0' r='14' gradientUnits='userSpaceOnUse'><stop offset='0' stop-color='%23ffffff'/><stop offset='.7' stop-color='%23fff0f5'/><stop offset='1' stop-color='%23ffd6e2'/></radialGradient><g id='pe'><use href='%23pt'/><use href='%23pt' transform='rotate(72)'/><use href='%23pt' transform='rotate(144)'/><use href='%23pt' transform='rotate(216)'/><use href='%23pt' transform='rotate(288)'/></g><path id='sm' d='M0 -1.5L0 -5.2' stroke='%23e0a83f' stroke-width='.9' stroke-linecap='round'/><g id='F1'><use href='%23pe' fill='url(%23g1)' stroke='%23e893ad' stroke-opacity='.55' stroke-width='.6'/><use href='%23sm'/><use href='%23sm' transform='rotate(60)'/><use href='%23sm' transform='rotate(120)'/><use href='%23sm' transform='rotate(180)'/><use href='%23sm' transform='rotate(240)'/><use href='%23sm' transform='rotate(300)'/><circle r='1.5' fill='%23eabb4d'/></g><g id='F2'><use href='%23pe' fill='url(%23g2)' stroke='%23eba7bb' stroke-opacity='.5' stroke-width='.6'/><use href='%23sm' transform='rotate(30)'/><use href='%23sm' transform='rotate(90)'/><use href='%23sm' transform='rotate(150)'/><use href='%23sm' transform='rotate(210)'/><use href='%23sm' transform='rotate(270)'/><use href='%23sm' transform='rotate(330)'/><circle r='1.5' fill='%23eabb4d'/></g><g id='bud'><circle r='3.1' fill='url(%23g1)' stroke='%23d98aa4' stroke-opacity='.5' stroke-width='.6'/><path d='M-2.2 1.8C-3.6 3.4 -4 5.4 -3.4 7.4' fill='none' stroke='%23875a63' stroke-width='1'/><path d='M2.2 1.8C3.6 3.4 4 5.4 3.4 7.4' fill='none' stroke='%23875a63' stroke-width='1'/></g></defs><g opacity='.5'><g opacity='.3'><use href='%23F1' transform='translate(150 178) scale(1.5)'/><use href='%23F2' transform='translate(192 150) scale(1.4)'/><use href='%23F1' transform='translate(122 150) scale(1.6)'/></g><g fill='none' stroke='%23875a63' stroke-width='3' stroke-linecap='round'><path d='M202 122C184 128 170 140 158 156'/><path d='M202 176C188 172 176 164 166 152'/><path d='M170 146C164 140 160 134 158 126'/><path d='M158 156C150 166 144 176 142 188'/><path d='M188 168C192 178 192 188 188 198'/></g><use href='%23F1' transform='translate(158 156) rotate(-12)'/><use href='%23F2' transform='translate(178 136) rotate(24) scale(.92)'/><use href='%23F1' transform='translate(188 168) rotate(60) scale(.85)'/><use href='%23F2' transform='translate(150 182) rotate(-40) scale(.8)'/><use href='%23F1' transform='translate(190 108) rotate(10) scale(.7)'/><use href='%23F2' transform='translate(172 192) rotate(96) scale(.9)'/><use href='%23F1' transform='translate(196 92) rotate(-30) scale(.6)'/><use href='%23F2' transform='translate(142 142) rotate(150) scale(.72)'/><use href='%23bud' transform='translate(160 122) rotate(-30)'/><use href='%23bud' transform='translate(140 168) rotate(20) scale(.85)'/><use href='%23bud' transform='translate(178 114) rotate(40) scale(.9)'/><use href='%23bud' transform='translate(126 184) rotate(-25) scale(.8)'/><use href='%23pt' transform='translate(112 118) rotate(130) scale(1.1)' fill='url(%23g1)' opacity='.85'/><use href='%23pt' transform='translate(84 84) rotate(210) scale(.9)' fill='url(%23g2)' opacity='.7'/><use href='%23pt' transform='translate(120 56) rotate(300) scale(.7)' fill='url(%23g1)' opacity='.55'/><use href='%23pt' transform='translate(60 130) rotate(30) scale(.7)' fill='url(%23g1)' opacity='.5'/><use href='%23pt' transform='translate(96 142) rotate(60) scale(.8)' fill='url(%23g1)' opacity='.6'/><use href='%23pt' transform='translate(140 78) rotate(250) scale(.65)' fill='url(%23g2)' opacity='.55'/><use href='%23pt' transform='translate(72 108) rotate(320) scale(.6)' fill='url(%23g1)' opacity='.45'/><use href='%23pt' transform='translate(104 36) rotate(180) scale(.55)' fill='url(%23g2)' opacity='.4'/></g></svg>"),
  url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><defs><path id='pt' d='M0 -2.6C3.4 -4.4 4.6 -9.6 1.7 -13L0 -11.6L-1.7 -13C-4.6 -9.6 -3.4 -4.4 0 -2.6Z'/><radialGradient id='g1' cx='0' cy='0' r='14' gradientUnits='userSpaceOnUse'><stop offset='0' stop-color='%23fff6f9'/><stop offset='.55' stop-color='%23ffd9e6'/><stop offset='1' stop-color='%23ffadc6'/></radialGradient><radialGradient id='g2' cx='0' cy='0' r='14' gradientUnits='userSpaceOnUse'><stop offset='0' stop-color='%23ffffff'/><stop offset='.7' stop-color='%23fff0f5'/><stop offset='1' stop-color='%23ffd6e2'/></radialGradient><g id='pe'><use href='%23pt'/><use href='%23pt' transform='rotate(72)'/><use href='%23pt' transform='rotate(144)'/><use href='%23pt' transform='rotate(216)'/><use href='%23pt' transform='rotate(288)'/></g><path id='sm' d='M0 -1.5L0 -5.2' stroke='%23e0a83f' stroke-width='.9' stroke-linecap='round'/><g id='F1'><use href='%23pe' fill='url(%23g1)' stroke='%23e893ad' stroke-opacity='.55' stroke-width='.6'/><use href='%23sm'/><use href='%23sm' transform='rotate(60)'/><use href='%23sm' transform='rotate(120)'/><use href='%23sm' transform='rotate(180)'/><use href='%23sm' transform='rotate(240)'/><use href='%23sm' transform='rotate(300)'/><circle r='1.5' fill='%23eabb4d'/></g><g id='F2'><use href='%23pe' fill='url(%23g2)' stroke='%23eba7bb' stroke-opacity='.5' stroke-width='.6'/><use href='%23sm' transform='rotate(30)'/><use href='%23sm' transform='rotate(90)'/><use href='%23sm' transform='rotate(150)'/><use href='%23sm' transform='rotate(210)'/><use href='%23sm' transform='rotate(270)'/><use href='%23sm' transform='rotate(330)'/><circle r='1.5' fill='%23eabb4d'/></g><g id='bud'><circle r='3.1' fill='url(%23g1)' stroke='%23d98aa4' stroke-opacity='.5' stroke-width='.6'/><path d='M-2.2 1.8C-3.6 3.4 -4 5.4 -3.4 7.4' fill='none' stroke='%23875a63' stroke-width='1'/><path d='M2.2 1.8C3.6 3.4 4 5.4 3.4 7.4' fill='none' stroke='%23875a63' stroke-width='1'/></g></defs><g opacity='.45'><g opacity='.3'><use href='%23F2' transform='translate(18 30) scale(1.4)'/></g><g fill='none' stroke='%23875a63' stroke-width='3' stroke-linecap='round'><path d='M-2 58C16 54 32 44 44 30'/><path d='M-2 22C10 26 22 24 34 16'/><path d='M30 40C36 48 38 56 36 66'/></g><use href='%23F1' transform='translate(44 30) rotate(15)'/><use href='%23F2' transform='translate(22 48) rotate(-20) scale(.85)'/><use href='%23F1' transform='translate(58 14) rotate(40) scale(.68)'/><use href='%23F2' transform='translate(12 12) rotate(10) scale(.8)'/><use href='%23bud' transform='translate(52 52) rotate(30) scale(.85)'/><use href='%23bud' transform='translate(8 66) rotate(-20) scale(.75)'/><use href='%23pt' transform='translate(78 66) rotate(140) scale(.8)' fill='url(%23g1)' opacity='.7'/><use href='%23pt' transform='translate(96 96) rotate(220) scale(.65)' fill='url(%23g2)' opacity='.55'/><use href='%23pt' transform='translate(60 104) rotate(30) scale(.55)' fill='url(%23g1)' opacity='.45'/></g></svg>");
  background-repeat:no-repeat; background-position:right -26px bottom -26px, left -20px top -20px; background-size:230px, 145px;
}
/* ④ 悬停流光描边（conic 渐变沿边框流转一圈） */
@property --fa{ syntax:'<angle>'; initial-value:0deg; inherits:false; }
.card-flow{ position:absolute; inset:-1.5px; border-radius:inherit; pointer-events:none; opacity:0; transition:opacity .3s; z-index:2;
  padding:2.5px;
  background:conic-gradient(from var(--fa), transparent 0 55%, rgba(255,150,180,.7) 66%, #ffc2d4 76%, #fff3c4 86%, rgba(255,183,197,.6) 93%, transparent 99%);
  will-change:opacity; transform:translateZ(0); contain:paint;   /* 独立合成层 + 限制重绘范围，防残影 */
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite:exclude; }
#dashboard-root .card:hover > .card-flow, .header-bar:hover > .card-flow{ opacity:1; animation:flowSpin 2.6s linear infinite; }
@keyframes flowSpin{ to{ --fa:360deg; } }
@media (prefers-reduced-motion:reduce){ #dashboard-root .card:hover > .card-flow, .header-bar:hover > .card-flow{ animation:none; } }
/* ⑥ 空态樱枝插画（倒数日 / 秒表计次） */
.cd-empty::before, .sw-laps:empty::before{ content:''; display:block; margin:2px auto 8px; width:58px; height:58px;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120'><defs><path id='pt' d='M0 -2.6C3.4 -4.4 4.6 -9.6 1.7 -13L0 -11.6L-1.7 -13C-4.6 -9.6 -3.4 -4.4 0 -2.6Z'/><radialGradient id='g1' cx='0' cy='0' r='14' gradientUnits='userSpaceOnUse'><stop offset='0' stop-color='%23fff6f9'/><stop offset='.55' stop-color='%23ffd9e6'/><stop offset='1' stop-color='%23ffadc6'/></radialGradient><radialGradient id='g2' cx='0' cy='0' r='14' gradientUnits='userSpaceOnUse'><stop offset='0' stop-color='%23ffffff'/><stop offset='.7' stop-color='%23fff0f5'/><stop offset='1' stop-color='%23ffd6e2'/></radialGradient><g id='pe'><use href='%23pt'/><use href='%23pt' transform='rotate(72)'/><use href='%23pt' transform='rotate(144)'/><use href='%23pt' transform='rotate(216)'/><use href='%23pt' transform='rotate(288)'/></g><path id='sm' d='M0 -1.5L0 -5.2' stroke='%23e0a83f' stroke-width='.9' stroke-linecap='round'/><g id='F1'><use href='%23pe' fill='url(%23g1)' stroke='%23e893ad' stroke-opacity='.55' stroke-width='.6'/><use href='%23sm'/><use href='%23sm' transform='rotate(60)'/><use href='%23sm' transform='rotate(120)'/><use href='%23sm' transform='rotate(180)'/><use href='%23sm' transform='rotate(240)'/><use href='%23sm' transform='rotate(300)'/><circle r='1.5' fill='%23eabb4d'/></g><g id='F2'><use href='%23pe' fill='url(%23g2)' stroke='%23eba7bb' stroke-opacity='.5' stroke-width='.6'/><use href='%23sm' transform='rotate(30)'/><use href='%23sm' transform='rotate(90)'/><use href='%23sm' transform='rotate(150)'/><use href='%23sm' transform='rotate(210)'/><use href='%23sm' transform='rotate(270)'/><use href='%23sm' transform='rotate(330)'/><circle r='1.5' fill='%23eabb4d'/></g></defs><g opacity='.92'><path d='M14 108C36 96 54 76 66 58' fill='none' stroke='%23875a63' stroke-width='2.6' stroke-linecap='round'/><use href='%23F1' transform='translate(66 56) rotate(-10)'/><use href='%23F2' transform='translate(44 82) rotate(28) scale(.85)'/><use href='%23F1' transform='translate(88 34) rotate(50) scale(.7)'/><use href='%23pt' transform='translate(30 44) rotate(140) scale(.8)' fill='url(%23g1)' opacity='.8'/><use href='%23pt' transform='translate(94 84) rotate(240) scale(.7)' fill='url(%23g2)' opacity='.65'/></g></svg>") center/contain no-repeat; opacity:.75; }
.sw-laps:empty{ display:flex; align-items:center; justify-content:center; }
.sw-laps:empty::before{ margin:0; width:44px; height:44px; opacity:.3; }

/* 修复：主时钟卡的 > * 规则会把流光/高光层压扁成普通块（底部两条线的元凶），强制还原为覆盖层 */
#dashboard-root .main-clock-card > .card-flow{ position:absolute; inset:-1.5px; z-index:2; }
#dashboard-root .main-clock-card > .card-sheen{ position:absolute; inset:0; z-index:3; }
