/* 潮汐 · 农历日历 —— 样式
   浅色/深色双主题，跟随系统 + 手动覆盖
*/

:root{
  --bg:#f6f4ef; --card:#fff; --ink:#16181d; --ink2:#5c6069; --ink3:#9aa0aa;
  --line:#e6e2d9; --accent:#0f6b5c; --accent-soft:#0f6b5c14;
  --gold:#b8862b; --good:#0f6b5c; --bad:#a33b32;
  --shadow:0 1px 2px rgba(22,24,29,.05),0 8px 24px -12px rgba(22,24,29,.14);
  --r:16px;
}
[data-theme=dark]{
  --bg:#0a1416; --card:#121d20; --ink:#e8eceb; --ink2:#9fb0ae; --ink3:#667574;
  --line:#203235; --accent:#4fd1c5; --accent-soft:#4fd1c51f;
  --gold:#e0b25e; --good:#4fd1c5; --bad:#e08a80;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px -12px rgba(0,0,0,.6);
}

*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{
  background:var(--bg); color:var(--ink);
  font:15px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  padding-bottom:env(safe-area-inset-bottom);
  transition:background .25s,color .25s;
}
h1,h2,h3{font-weight:600;letter-spacing:-.01em}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.muted{color:var(--ink3);font-size:12.5px}
.pad{padding:18px;text-align:center}

/* ---------- Hero ---------- */
.hero{
  background:linear-gradient(165deg,var(--accent) 0%,#0c4f45 55%,#0a3a38 100%);
  color:#fff;padding:calc(env(safe-area-inset-top) + 18px) 18px 20px;
}
[data-theme=dark] .hero{background:linear-gradient(165deg,#123033 0%,#0d2124 60%,#0a191b 100%)}
.hero-in{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px}
.brand-l{font-size:24px;font-weight:600;letter-spacing:.06em}
.brand-s{font-size:10px;letter-spacing:.22em;opacity:.55;margin-top:2px}
.theme-pill{display:flex;gap:2px;background:#ffffff1f;border-radius:999px;padding:3px}
.theme-pill button{
  width:32px;height:26px;border-radius:999px;font-size:12px;opacity:.6;color:#fff;
  transition:.2s;
}
.theme-pill button.on{background:#fff;color:var(--accent);opacity:1;font-weight:600}

.hero-main{display:flex;align-items:flex-start;gap:18px}
.date{flex:none}
.d-head{display:flex;align-items:baseline;gap:6px;font-size:13px;opacity:.75}
.d-num-wrap{display:flex;align-items:center;gap:12px}
.d-num{font-size:56px;font-weight:300;line-height:1;letter-spacing:-.03em}
.d-num.pop{animation:pop .34s cubic-bezier(.2,.9,.3,1.2)}
@keyframes pop{0%{transform:scale(.82);opacity:.4}100%{transform:scale(1);opacity:1}}
.d-week{font-size:13px;opacity:.8;margin-top:2px}
.d-moon-info{display:flex;flex-direction:column;font-size:11px;opacity:.7;line-height:1.5;margin-top:4px}
.d-moon-info b{font-size:12.5px;opacity:1;font-weight:600}

.moon{width:58px;height:58px;flex:none}
.moon-dark{fill:#ffffff1c}
.moon-lit{fill:#f4e7c3}
[data-theme=dark] .moon-lit{fill:#e8dfc4}
.moon-rim{fill:none;stroke:#ffffff33;stroke-width:1}

.lunar{flex:1;padding-top:4px;min-width:0}
.l-main{font-size:17px;font-weight:500}
.l-sub{font-size:12px;opacity:.7;margin-top:3px}
.l-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.l-tags span{
  font-size:11px;padding:3px 8px;border-radius:999px;
  background:#ffffff1c;backdrop-filter:blur(4px);
}

.yiji{margin-top:16px;display:flex;flex-direction:column;gap:6px}
.yj{display:flex;align-items:flex-start;gap:9px;font-size:13px;line-height:1.5}
.yj i{
  flex:none;font-style:normal;font-size:11px;width:20px;height:20px;
  display:grid;place-items:center;border-radius:5px;margin-top:1px;font-weight:600;
}
.yj-good i{background:#7fe3c0;color:#08352c}
.yj-bad i{background:#ffb4a8;color:#4d1a15}
.yj-good span{color:#d8fff2}
.yj-bad span{color:#ffdcd5;opacity:.85}

/* ---------- Layout ---------- */
.wrap{max-width:760px;margin:0 auto;padding:16px 14px 40px;display:flex;flex-direction:column;gap:14px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--shadow)}
.card-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.card-h h2{font-size:14px;color:var(--ink2);font-weight:600;letter-spacing:.04em}
.card-acts{display:flex;gap:10px}
.link{font-size:12.5px;color:var(--accent);font-weight:500}
.pill-btn{
  font-size:12px;padding:4px 11px;border-radius:999px;
  border:1px solid var(--line);color:var(--ink2);
}
.pill-btn:hover{border-color:var(--accent);color:var(--accent)}

/* ---------- 天气 ---------- */
.w-row{display:flex;align-items:center;gap:18px}
.w-temp{font-size:42px;font-weight:300;line-height:1;letter-spacing:-.02em}
.w-temp span{font-size:17px;font-weight:400;opacity:.6;margin-left:2px}
.w-meta{min-width:0}
.w-txt{font-size:15px;font-weight:500}
.w-sub{font-size:12px;color:var(--ink3);margin-top:2px}
.sun-row{display:flex;gap:14px;font-size:12px;color:var(--ink3);margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.w-week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:12px}
.d7{text-align:center;padding:8px 2px;border-radius:10px;background:var(--bg);font-size:11px}
.d7-d{color:var(--ink3);font-size:10.5px}
.d7-i{font-size:17px;margin:3px 0}
.d7-t{font-size:10.5px;color:var(--ink3)}
.d7-t b{display:block;color:var(--ink);font-size:13px;font-weight:600}
.d7-p{color:var(--accent);font-size:10px}
.d7-w{color:var(--ink3);font-size:9.5px;margin-top:2px}

/* ---------- 日历 ---------- */
.cal-nav{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.cal-nav>button:first-child,.cal-nav>button:nth-child(3){
  width:30px;height:30px;border-radius:8px;font-size:19px;color:var(--ink2);line-height:1;
}
.cal-nav>button:first-child:hover,.cal-nav>button:nth-child(3):hover{background:var(--bg)}
.cal-title{flex:1;font-size:16px;font-weight:600}
.wk-row,.grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.wk-row{margin-bottom:4px}
.wk-row span{text-align:center;font-size:11px;color:var(--ink3);padding:4px 0}
.wk-row span:first-child,.wk-row span:last-child{color:var(--bad)}

.day{
  position:relative;aspect-ratio:1/1.12;border-radius:10px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  border:1px solid transparent;transition:.15s;
}
.day:hover{background:var(--bg)}
.day.out{opacity:.32}
.day.wk .d-num{color:var(--bad)}
.day .d-num{font-size:15px;font-weight:500;line-height:1.1}
.day .d-lab{font-size:9.5px;color:var(--ink3);line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 2px}
.day .d-lab.f{color:var(--accent);font-weight:600}
.day .d-lab.j{color:var(--gold);font-weight:600}
.day .d-moon{position:absolute;top:3px;right:4px;width:7px;height:7px;border-radius:50%;background:var(--ink3)}
.day.today .d-num{color:var(--accent);font-weight:700}
.day.today{background:var(--accent-soft)}
.day.sel{border-color:var(--accent);background:var(--accent-soft)}
.day.sel .d-num{color:var(--accent);font-weight:700}
.day .d-dot{position:absolute;bottom:3px;left:50%;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--bad)}

/* ---------- 详情 ---------- */
.d-head{margin-bottom:12px}
.d-solar{font-size:16px;font-weight:600}
.d-lunar{font-size:12.5px;color:var(--ink3);margin-top:2px}
.d-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.d-item{background:var(--card);padding:9px 11px;min-width:0}
.d-item span{display:block;font-size:10.5px;color:var(--ink3);letter-spacing:.04em}
.d-item b{font-size:13px;font-weight:500;display:block;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.d-sec{margin-top:14px}
.d-sec h4{font-size:11.5px;color:var(--ink3);font-weight:600;letter-spacing:.08em;margin-bottom:6px}
.d-sec p{font-size:13.5px;line-height:1.65}
.d-sec p.good{color:var(--good)}
.d-sec p.bad{color:var(--bad)}
.shichen{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px}
.shichen span{font-size:11.5px;padding:3px 8px;border-radius:6px;background:var(--bg);color:var(--ink2)}
.shichen span.on{background:var(--accent);color:#fff;font-weight:600}
.pill{display:inline-block;font-size:11.5px;padding:3px 9px;border-radius:999px;background:var(--accent-soft);color:var(--accent);margin:0 6px 6px 0}
.pill.memorial{background:#a33b3218;color:var(--bad)}
.pill.birthday{background:#b8862b1f;color:var(--gold)}

/* ---------- 纪念日 ---------- */
.ev{display:flex;align-items:center;gap:10px;padding:10px;border-radius:11px;background:var(--bg);margin-bottom:6px;cursor:pointer;transition:.15s}
.ev:hover{transform:translateX(2px)}
.ev-tag{font-size:10.5px;padding:2px 7px;border-radius:5px;background:var(--accent);color:#fff;flex:none}
.ev.memorial .ev-tag{background:var(--bad)}
.ev.birthday .ev-tag{background:var(--gold)}
.ev-b{flex:1;min-width:0}
.ev-b b{display:block;font-size:14px;font-weight:500}
.ev-b small{display:block;font-size:11px;color:var(--ink3);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ev-c{font-size:12px;color:var(--ink3);flex:none;font-variant-numeric:tabular-nums}
.ev-c.today{color:var(--accent);font-weight:600}

.foot{text-align:center;font-size:11px;color:var(--ink3);line-height:1.7;padding:6px 10px 20px}

/* ---------- 弹窗 ---------- */
.modal{position:fixed;inset:0;background:#0006;display:grid;place-items:center;padding:16px;z-index:50;backdrop-filter:blur(3px)}
.modal[hidden]{display:none}
.sheet{background:var(--card);border-radius:18px;padding:20px;width:100%;max-width:400px;box-shadow:0 20px 60px -20px #0009;max-height:88vh;overflow:auto}
.sheet h3{font-size:16px;margin-bottom:16px}
.sheet label{display:block;font-size:11.5px;color:var(--ink3);margin-bottom:11px;letter-spacing:.03em}
.sheet input,.sheet select{
  display:block;width:100%;margin-top:4px;padding:10px 12px;font-size:14px;
  border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);
  font-family:inherit;
}
.sheet input:focus,.sheet select:focus{outline:none;border-color:var(--accent)}
.sheet .row,.sheet .row3{display:grid;gap:9px}
.sheet .row{grid-template-columns:1fr 1fr}
.sheet .row3{grid-template-columns:1.4fr 1fr 1fr}
.rowline{display:flex!important;align-items:center;justify-content:space-between}
.rowline input{width:20px;height:20px;margin:0;accent-color:var(--accent)}
.sheet-acts{display:flex;gap:9px;justify-content:flex-end;margin-top:18px}
.btn{padding:9px 18px;border-radius:10px;background:var(--accent);color:#fff;font-size:14px;font-weight:500}
.btn.ghost{background:var(--bg);color:var(--ink2);border:1px solid var(--line)}
#ev-del{margin-right:auto;color:var(--bad);border-color:var(--bad)}
.btn.full{width:100%;margin-bottom:12px}

.city-res{max-height:190px;overflow:auto;margin:-4px 0 10px}
.c-res{display:flex;align-items:center;justify-content:space-between;padding:9px 11px;border-radius:9px;background:var(--bg);margin-bottom:5px;cursor:pointer}
.c-res:hover{background:var(--accent-soft)}
.c-res b{font-size:14px;font-weight:500}
.c-res small{font-size:11px;color:var(--ink3)}

#toast{
  position:fixed;left:50%;bottom:34px;transform:translate(-50%,14px);
  background:var(--ink);color:var(--bg);padding:10px 20px;border-radius:999px;
  font-size:13.5px;opacity:0;pointer-events:none;transition:.22s;z-index:99;max-width:86vw;
}
#toast.on{opacity:1;transform:translate(-50%,0)}
#toast.err{background:var(--bad);color:#fff}

@media (max-width:400px){
  .d-num{font-size:46px}
  .d-grid{grid-template-columns:1fr}
  .w-week{gap:2px}
  .d7{font-size:10px}
}
