:root{
  --blue:#3f6ad8; --blue-d:#2f54b8; --bg:#f2f5fb; --card:#ffffff;
  --text:#22304a; --muted:#7a8699; --line:#e3e9f4;
  --odd:#eef4ff; --odd-head:#dbe8ff;   /* 单周 */
  --even:#fff4ec; --even-head:#ffe6d5; /* 双周 */
  --green:#2eaf62; --red:#e05555; --amber:#e8912d;
  --radius:14px; --shadow:0 2px 10px rgba(40,60,110,.08);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html,body{height:100%}
body{font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:15px}

/* ---------- 顶栏 ---------- */
#topbar{position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  background:linear-gradient(90deg,var(--blue),#5b8def);color:#fff;padding:8px 14px;box-shadow:var(--shadow)}
#navToggle{background:rgba(255,255,255,.18);border:0;color:#fff;font-size:20px;border-radius:8px;padding:4px 10px;cursor:pointer}
.app-title{font-size:19px;font-weight:700;letter-spacing:1px}
#clockStrip{display:flex;gap:10px;margin-left:auto}
.clock-box{background:rgba(255,255,255,.16);border-radius:10px;padding:4px 12px;text-align:center;min-width:150px}
.clock-box.abroad{background:rgba(255,220,160,.25)}
.clock-label{display:block;font-size:12px;opacity:.9}
.clock-time{display:block;font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:1px}
.clock-date{display:block;font-size:11px;opacity:.85}
.clock-diff{display:block;font-size:11px;color:#ffe9b0}
#globalSearchWrap{position:relative;flex:1 1 260px;min-width:220px}
#globalSearch{width:100%;border:0;border-radius:20px;padding:9px 16px;font-size:14px;outline:none;color:var(--text)}
.search-pop{position:absolute;top:110%;left:0;right:0;background:#fff;color:var(--text);border-radius:12px;
  box-shadow:0 8px 30px rgba(0,0,0,.18);max-height:60vh;overflow:auto;padding:10px;z-index:99}
.search-pop .sr-item{padding:7px 8px;border-bottom:1px solid var(--line);font-size:14px;cursor:pointer}
.search-pop .sr-item:hover{background:var(--odd)}
.search-pop .sr-tag{display:inline-block;background:var(--blue);color:#fff;font-size:11px;border-radius:6px;padding:1px 6px;margin-right:6px}

/* ---------- 侧边栏 ---------- */
#sidebar{position:fixed;left:0;top:0;bottom:0;width:170px;padding:70px 10px 20px;background:#fff;
  box-shadow:var(--shadow);display:flex;flex-direction:column;gap:6px;overflow-y:auto;z-index:50;transition:transform .25s}
.nav-btn{border:0;background:transparent;text-align:left;padding:10px 12px;border-radius:10px;font-size:15px;
  cursor:pointer;color:var(--text);white-space:nowrap}
.nav-btn:hover{background:var(--odd)}
.nav-btn.active{background:var(--blue);color:#fff;font-weight:700}
#main{margin-left:180px;padding:16px 18px 60px;max-width:1400px}
body.nav-closed #sidebar{transform:translateX(-105%)}
body.nav-closed #main{margin-left:0}
@media(max-width:900px){
  #sidebar{transform:translateX(-105%)}
  body.nav-open #sidebar{transform:none}
  #main{margin-left:0;padding:12px 10px 60px}
  #clockStrip{order:3;width:100%;justify-content:center}
  .clock-time{font-size:18px}
}

/* ---------- 通用 ---------- */
.page{display:none}
.page.active{display:block}
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:16px}
h2{font-size:20px;margin-bottom:10px}
h3{font-size:16px;margin-bottom:8px}
.sub-h{margin:14px 0 6px;font-size:14px;color:var(--muted)}
.muted{color:var(--muted);font-size:13px}
button{font-family:inherit}
.small{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 12px;font-size:13px;cursor:pointer;color:var(--text)}
.small:hover{border-color:var(--blue);color:var(--blue)}
.small.primary{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.small.primary:hover{background:var(--blue-d);color:#fff}
.small.danger{border-color:var(--red);color:var(--red)}
.ghost{border:0;background:transparent;font-size:16px;cursor:pointer;color:var(--text);padding:4px 8px}
input,select,textarea{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:14px;font-family:inherit;
  color:var(--text);background:#fff;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--blue)}
textarea{width:100%;resize:vertical}
.add-row{display:flex;gap:8px;margin:8px 0;align-items:center}
.add-row input{flex:1;min-width:0}
.add-row.wrap{flex-wrap:wrap}
.add-row.wrap input{flex:1 1 140px}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:1000px){.two-col{grid-template-columns:1fr}}

.todo-list{list-style:none}
.todo-list li{display:flex;align-items:flex-start;gap:8px;padding:7px 4px;border-bottom:1px dashed var(--line);font-size:14px}
.todo-list li.done .t-text{text-decoration:line-through;color:var(--muted)}
.todo-list .t-text{flex:1;word-break:break-all}
.todo-list .t-del{border:0;background:none;color:var(--red);cursor:pointer;font-size:14px}
.todo-list.compact li{padding:4px;font-size:13px}
.link-list{list-style:none}
.link-list li{padding:8px 4px;border-bottom:1px dashed var(--line);font-size:14px}
.link-list a{color:var(--blue);text-decoration:none;font-weight:600}
.link-list a:hover{text-decoration:underline}
.quick-links{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.quick-links a{background:var(--odd);color:var(--blue);border-radius:16px;padding:5px 14px;font-size:13px;text-decoration:none;font-weight:600}
.quick-links a:hover{background:var(--blue);color:#fff}
.chip-wrap{display:flex;flex-wrap:wrap;gap:8px}
.chip{background:var(--odd);border:1px solid transparent;border-radius:16px;padding:5px 12px;font-size:13px;cursor:pointer}
.chip:hover{border-color:var(--blue);color:var(--blue)}
.chip.active{background:var(--blue);color:#fff;font-weight:700}
.hotline{background:#fdeaea;border-left:4px solid var(--red);border-radius:8px;padding:9px 12px;
  font-size:14px;line-height:1.7;margin-bottom:10px}
.hotline a{color:var(--red);font-weight:800;font-size:16px;text-decoration:none}
.ai-out{white-space:pre-wrap;background:#f8faff;border:1px solid var(--line);border-radius:10px;padding:10px;
  margin-top:8px;font-size:14px;line-height:1.7;min-height:20px;max-height:420px;overflow:auto}
.ai-out:empty{display:none}
.chat-box{background:#f8faff;border:1px solid var(--line);border-radius:10px;padding:10px;height:260px;overflow:auto;margin-bottom:8px}
.chat-box.tall{height:300px}
.chat-msg{margin:6px 0;max-width:85%;padding:8px 12px;border-radius:12px;font-size:14px;line-height:1.6;white-space:pre-wrap}
.chat-msg.me{background:var(--blue);color:#fff;margin-left:auto;border-bottom-right-radius:4px}
.chat-msg.ai{background:#fff;border:1px solid var(--line);border-bottom-left-radius:4px}
.big-num{font-size:22px;font-weight:800;margin:8px 0}

/* ---------- 标签页 ---------- */
.tab-bar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.tab{border:1px solid var(--line);background:#fff;border-radius:20px;padding:7px 16px;font-size:14px;cursor:pointer}
.tab.active{background:var(--blue);color:#fff;border-color:var(--blue);font-weight:700}
.tab-page{display:none}
.tab-page.active{display:block}

/* ---------- 工作台历 ---------- */
.cal-layout{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(280px,1fr);gap:16px}
@media(max-width:1100px){.cal-layout{grid-template-columns:1fr}}
.cal-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.cal-head h2{margin:0}
.week-legend{margin-left:auto;font-size:12px;color:var(--muted)}
.dot{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-1px;margin:0 3px 0 8px}
.dot.odd{background:var(--odd-head)}
.dot.even{background:var(--even-head)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-dow{text-align:center;font-weight:700;font-size:13px;padding:6px 0;background:var(--blue);color:#fff;border-radius:6px}
.cal-cell{min-height:112px;border-radius:8px;padding:5px 6px;cursor:pointer;border:1.5px solid transparent;
  display:flex;flex-direction:column;overflow:hidden;background:#fafbfe}
.cal-cell.odd-week{background:var(--odd)}
.cal-cell.even-week{background:var(--even)}
.cal-cell.other{opacity:.45}
.cal-cell:hover{border-color:var(--blue)}
.cal-cell.today{border-color:var(--red);box-shadow:0 0 0 2px rgba(224,85,85,.25)}
.cal-cell .d-num{font-weight:800;font-size:14px}
.cal-cell.today .d-num{color:var(--red)}
.cal-cell .d-num small{font-weight:400;color:var(--muted);font-size:10px;margin-left:3px}
.cal-cell .d-item{font-size:12px;line-height:1.45;border-radius:4px;padding:1px 4px;margin-top:2px;
  background:rgba(63,106,216,.12);color:#2b4590;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-all}
.cal-cell .d-item.done{text-decoration:line-through;opacity:.55}
.cal-cell .d-more{font-size:11px;color:var(--muted);margin-top:2px}
@media(max-width:700px){.cal-cell{min-height:86px}.cal-cell .d-item{font-size:11px}}
.week-note-box{margin-top:14px}
.cal-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.export-group{display:flex;align-items:center;gap:6px;background:var(--odd);border-radius:10px;padding:5px 10px}
.export-label{font-weight:700;font-size:14px;color:var(--blue-d);white-space:nowrap}

/* ---------- 卡路里 ---------- */
.cam-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:8px 0}
.cam-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:10px;
  padding:10px 16px;font-size:14px;cursor:pointer;font-weight:600;color:var(--text)}
.cam-btn.primary{background:var(--blue);color:#fff;border-color:var(--blue)}
.cam-btn:hover{filter:brightness(1.05)}
#barcodeVideo{width:100%;max-height:280px;border-radius:10px;background:#000;margin:8px 0}
.goal-row{display:flex;align-items:center;gap:8px;font-size:14px}
.kcal-bar-wrap{background:var(--line);border-radius:10px;height:18px;margin:12px 0 6px;overflow:hidden}
.kcal-bar{height:100%;width:0;background:var(--green);border-radius:10px;transition:width .4s}
.kcal-bar.warn{background:var(--amber)}
.kcal-bar.over{background:var(--red)}
.judge{border-radius:10px;padding:10px;font-size:14px;line-height:1.7;margin-top:8px}
.judge.good{background:#e9f9ef;color:#186f3d}
.judge.warn{background:#fff6e6;color:#8a5a12}
.judge.bad{background:#fdeaea;color:#932929}
.mini-chart{display:flex;gap:6px;align-items:flex-end;height:110px;padding-top:8px}
.mini-chart .bar{flex:1;background:var(--blue);border-radius:5px 5px 0 0;position:relative;min-height:3px}
.mini-chart .bar span{position:absolute;bottom:-20px;left:0;right:0;text-align:center;font-size:10px;color:var(--muted)}
.mini-chart .bar b{position:absolute;top:-18px;left:0;right:0;text-align:center;font-size:10px;color:var(--text)}

/* ---------- 体检对比表 ---------- */
#checkupTable{overflow-x:auto;-webkit-overflow-scrolling:touch}
#checkupTable table{width:100%;min-width:520px;border-collapse:collapse;font-size:13px;margin-top:10px}
#checkupTable th,#checkupTable td{border:1px solid var(--line);padding:7px 9px;text-align:center}
#checkupTable th{background:var(--odd)}
#checkupTable td.up{background:#fdeaea;color:var(--red);font-weight:700}
#checkupTable td.down{background:#e9f9ef;color:var(--green);font-weight:700}
#checkupTable td.abnormal{outline:2px solid var(--red);outline-offset:-2px}

/* ---------- 旅行 ---------- */
#travelMap{height:380px;border-radius:12px;margin:10px 0;z-index:1}
.album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-top:12px}
.album-grid .ph{position:relative;border-radius:10px;overflow:hidden;cursor:pointer;aspect-ratio:1;background:var(--line)}
.album-grid .ph img{width:100%;height:100%;object-fit:cover}
.album-grid .ph .ph-cap{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.55);color:#fff;
  font-size:11px;padding:3px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.notice-out{line-height:1.9;font-size:14px}
.notice-out h4{margin:12px 0 4px;color:var(--blue-d)}
#rateTable{overflow-x:auto;-webkit-overflow-scrolling:touch}
#rateTable table{width:100%;min-width:420px;border-collapse:collapse;font-size:13px;margin-top:12px}
#rateTable th,#rateTable td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left}

/* ---------- 同声翻译 ---------- */
.trans-card{max-width:760px}
.trans-duo{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0}
.hold-btn{border:0;border-radius:16px;padding:26px 10px;font-size:18px;font-weight:800;cursor:pointer;
  line-height:1.6;color:#fff;user-select:none;-webkit-user-select:none;touch-action:none}
.hold-btn small{font-weight:400;font-size:12px;opacity:.9}
.hold-btn.zh{background:linear-gradient(135deg,#e05555,#f08a5d)}
.hold-btn.fo{background:linear-gradient(135deg,#3f6ad8,#38b6a5)}
.hold-btn.recording{transform:scale(.97);box-shadow:0 0 0 4px rgba(224,85,85,.35);filter:brightness(1.15)}
@media(max-width:600px){.trans-duo{grid-template-columns:1fr}}

/* ---------- 计算器 ---------- */
.calc-card{max-width:360px}
#calcDisplay{width:100%;font-size:30px;text-align:right;padding:14px;margin-bottom:10px;font-weight:700;border-radius:10px}
.calc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.calc-grid button{font-size:20px;padding:16px 0;border:0;border-radius:10px;background:#f0f3fa;cursor:pointer;font-weight:600}
.calc-grid button:hover{background:#e2e8f5}
.calc-grid .c-op{background:var(--odd-head);color:var(--blue-d)}
.calc-grid .c-fn{background:#ffe9e0;color:#b4502a}
.calc-grid .c-eq{background:var(--blue);color:#fff}

/* ---------- 天气 ---------- */
.big-clocks{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:10px 0 16px}
@media(max-width:700px){.big-clocks{grid-template-columns:1fr}}
.big-clock{border-radius:16px;padding:18px;text-align:center;background:linear-gradient(135deg,#3f6ad8,#5b8def);color:#fff}
.big-clock.abroad{background:linear-gradient(135deg,#e8912d,#f0b35d)}
.bc-label{font-size:15px;font-weight:700;opacity:.95}
.bc-time{font-size:44px;font-weight:900;font-variant-numeric:tabular-nums;letter-spacing:2px;margin:4px 0}
.bc-date{font-size:13px;opacity:.9}
.bc-diff{font-size:13px;background:rgba(255,255,255,.2);display:inline-block;border-radius:10px;padding:2px 10px;margin-top:6px}
.weather-wrap{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:12px}
@media(max-width:700px){.weather-wrap{grid-template-columns:1fr}}
.weather-now{background:var(--odd);border-radius:12px;padding:14px;font-size:15px;line-height:2}
.weather-now .w-temp{font-size:40px;font-weight:900}
.dress-index{background:var(--even);border-radius:12px;padding:14px;font-size:14px;line-height:1.9}
.weather-7{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
@media(max-width:700px){.weather-7{grid-template-columns:repeat(4,1fr)}}
.w-day{background:#f8faff;border:1px solid var(--line);border-radius:10px;padding:8px 4px;text-align:center;font-size:12px;line-height:1.7}
.w-day .w-ico{font-size:22px}
.w-day .w-hi{color:var(--red);font-weight:700}
.w-day .w-lo{color:var(--blue)}

/* ---------- 便签 / 倒计时 ---------- */
.memo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:12px}
.memo-item{background:#fff9d9;border-radius:12px;padding:12px;font-size:14px;line-height:1.7;position:relative;
  box-shadow:var(--shadow);word-break:break-all}
.memo-item:nth-child(2n){background:#e4f4ff}
.memo-item:nth-child(3n){background:#ffe9f0}
.memo-item .m-time{display:block;font-size:11px;color:var(--muted);margin-top:8px}
.memo-item .t-del{position:absolute;top:6px;right:8px;border:0;background:none;cursor:pointer;color:var(--red)}
.cd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin-top:12px}
.cd-item{border-radius:14px;padding:16px;color:#fff;position:relative;background:linear-gradient(135deg,#3f6ad8,#7a5df0)}
.cd-item.near{background:linear-gradient(135deg,#e05555,#f08a5d)}
.cd-item.past{background:linear-gradient(135deg,#9aa4b5,#b8c0cc)}
.cd-item .cd-days{font-size:34px;font-weight:900}
.cd-item .t-del{position:absolute;top:8px;right:10px;border:0;background:none;color:#fff;cursor:pointer}

/* ---------- 付费墙 ---------- */
.paygate{position:fixed;inset:0;z-index:200;background:linear-gradient(135deg,#3f6ad8,#7a5df0);
  display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto}
.paygate[hidden]{display:none}
.paygate-box{background:#fff;border-radius:20px;padding:28px 26px;max-width:440px;width:100%;
  text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.35);max-height:94vh;overflow:auto}
.pg-logo{font-size:46px}
.paygate-box h2{margin:4px 0 6px}
.pg-sub{color:var(--muted);font-size:13px;line-height:1.7;margin-bottom:10px}
.pg-price{font-size:22px;font-weight:900;color:#e8912d;margin:10px 0}
.pg-qrs{display:flex;gap:14px;justify-content:center;margin:10px 0}
.pg-qrs img{width:130px;height:130px;border-radius:10px;border:1px solid var(--line)}
.pg-qrs .pg-qr-label{font-size:12px;color:var(--muted);margin-top:4px}
.pg-notice{font-size:13px;color:var(--text);background:var(--even);border-radius:10px;padding:8px;line-height:1.7}
.pg-contact{font-size:14px;font-weight:700;color:var(--blue-d);margin:8px 0}
.pg-row{display:flex;gap:8px;margin:12px 0 8px}
.pg-row input{flex:1;text-transform:uppercase}
.pg-msg{font-size:13px;min-height:18px;color:var(--red);line-height:1.6}
.pg-msg.ok{color:var(--green)}
#pgTrial{margin-bottom:8px}

/* ---------- 多设备适配微调 ---------- */
/* 平板（竖屏768~1100）：台历右栏下移已由 .cal-layout 断点处理；缩小时钟避免拥挤 */
@media(min-width:701px) and (max-width:1100px){
  .bc-time{font-size:38px}
  .cal-cell{min-height:100px}
}
/* 手机（≤700）：标题、时钟、工具栏收紧，避免溢出 */
@media(max-width:700px){
  h2{font-size:18px}
  .cal-head h2{font-size:17px}
  .week-legend{width:100%;margin-left:0}
  .export-group{flex-wrap:wrap}
  .cal-toolbar{gap:6px}
  .cal-toolbar .small{padding:6px 9px;font-size:12px}
  .bc-time{font-size:32px;letter-spacing:1px}
  .big-clock{padding:12px}
  .modal-box{padding:14px}
  .hold-btn{padding:20px 8px;font-size:16px}
  .calc-card{max-width:100%}
  .album-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}
  #travelMap{height:280px}
  .chat-box{height:220px}
}
/* 小屏手机（≤380）：日历格子再紧凑一点 */
@media(max-width:380px){
  .cal-grid{gap:2px}
  .cal-cell{min-height:78px;padding:3px 4px}
  .cal-cell .d-num small{display:none}
  .clock-box{min-width:120px;padding:3px 8px}
  .clock-time{font-size:16px}
}
/* 超宽屏（≥1600）：内容居中不至于拉太宽 */
@media(min-width:1600px){
  #main{max-width:1500px;margin-left:auto;margin-right:auto;padding-left:200px}
}

/* ---------- 弹窗 ---------- */
.modal{position:fixed;inset:0;background:rgba(20,30,55,.5);z-index:100;display:flex;align-items:center;justify-content:center;padding:14px}
.modal[hidden]{display:none}
.modal-box{background:#fff;border-radius:16px;padding:18px;width:100%;max-width:520px;max-height:88vh;overflow:auto}
.modal-box.photo{max-width:700px}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
#photoBig{width:100%;border-radius:10px;max-height:60vh;object-fit:contain;background:#000}
