/* 阳台农事 · 成都 —— 三页共用样式（浅绿清新主题） */

:root{
  --bg:#F1F8F3;
  --bg2:#E7F2EA;
  --card:#FFFFFF;
  --card2:#F5FAF7;
  --bd:#DDEBE1;
  --tx:#1D3126;
  --tx2:#5A7A68;
  --tx3:#8CA79A;
  --green:#3D9B62;
  --green2:#6FC08C;
  --greenL:#A8DCBE;
  --greenD:#2C7A4B;
  --greenBg:#E7F5EC;
  --greenBd:#C9E8D6;
  --red:#D9635C;
  --redBg:#FCECEA;
  --amber:#B8822C;
  --amberBg:#FBF3E3;
  --amberBd:#F0E0C0;
  --violet:#8B5FB5;
  --violetBg:#F3EDF9;
  --violetBd:#DDCFEC;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{
  margin:0;background:var(--bg);color:var(--tx);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  font-size:14px;line-height:1.6;padding-bottom:34px;position:relative;
  -webkit-font-smoothing:antialiased;
}
/* 顶部一抹柔绿光晕，清新感的来源 */
body:before{
  content:"";position:fixed;top:-190px;left:50%;transform:translateX(-50%);
  width:640px;height:400px;border-radius:50%;pointer-events:none;z-index:0;
  background:radial-gradient(circle,rgba(124,206,155,.30),rgba(124,206,155,0) 68%);
}
.wrap{max-width:480px;margin:0 auto;padding:16px 14px;position:relative;z-index:1}

header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}
.brand{font-size:17px;font-weight:700;letter-spacing:.3px}
.brand small{font-size:11px;color:var(--tx3);font-weight:400;margin-left:7px;letter-spacing:0}
.date{font-size:12px;color:var(--tx2)}

.card{background:var(--card);border:1px solid var(--bd);border-radius:16px;padding:15px;margin-bottom:11px;
      box-shadow:0 1px 2px rgba(30,70,45,.03),0 6px 18px rgba(30,70,45,.045)}
.lab{font-size:11px;color:var(--green);letter-spacing:1.4px;margin-bottom:10px;font-weight:600}

/* ---------- 月历 ---------- */
.mnav{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.mnav .mb{width:34px;height:34px;border-radius:10px;background:var(--greenBg);border:1px solid var(--greenBd);
          display:flex;align-items:center;justify-content:center;color:var(--green);cursor:pointer;font-size:15px}
.mnav .mb:active{background:var(--greenL);color:#fff}
.mnav .mt{font-size:15px;font-weight:700}
.mnav .mt em{font-style:normal;font-size:11px;color:var(--tx3);margin-left:7px;font-weight:400}
.mnav .mn{font-size:11px;color:var(--green);padding:4px 10px;border-radius:20px;
          background:var(--greenBg);border:1px solid var(--greenBd);cursor:pointer}

.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal .hd{font-size:10px;color:var(--tx3);text-align:center;padding:3px 0}
.cd{aspect-ratio:1/1;border-radius:9px;background:var(--card2);border:1px solid transparent;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    font-size:12.5px;color:var(--tx2);cursor:pointer;user-select:none;transition:.14s}
.cd.empty{background:transparent;cursor:default}
.cd.has{background:#E4F2EA;color:var(--tx);font-weight:500}
.cd.today{border-color:var(--green);color:var(--greenD);font-weight:700;background:#fff}
.cd.sel{background:var(--greenL);border-color:var(--green);color:var(--greenD);font-weight:700}
.cd .dots{display:flex;gap:2px;height:4px;margin-top:2px}
.cd .dt{width:4px;height:4px;border-radius:50%}
.dt-fert{background:var(--green)} .dt-pest{background:var(--red)} .dt-task{background:var(--amber)}

.legend{display:flex;gap:14px;margin-top:11px;padding-top:10px;border-top:1px solid var(--bd)}
.legend span{font-size:10.5px;color:var(--tx3);display:flex;align-items:center;gap:5px}
.legend i{width:6px;height:6px;border-radius:50%;display:inline-block}
.mtheme{font-size:11.5px;color:var(--tx3);margin-top:10px;padding-top:9px;border-top:1px solid var(--bd);line-height:1.65}
.mtheme b{color:var(--green);font-weight:600}

/* ---------- 当日农事 ---------- */
.dayh{font-size:13px;font-weight:600;margin-bottom:2px}
.dayh em{font-style:normal;font-size:11px;color:var(--tx3);margin-left:7px;font-weight:400}
.ev{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--bd)}
.ev:last-child{border-bottom:none;padding-bottom:0}
.evbody{flex:1;min-width:0}
.evhead{display:flex;align-items:center;gap:7px;margin-bottom:3px;flex-wrap:wrap}
.evt{font-size:13.5px;font-weight:500}
.tag{font-size:10px;padding:2px 7px;border-radius:20px;font-weight:500;letter-spacing:.5px;white-space:nowrap}
.g-fert{background:var(--greenBg);color:var(--greenD)}
.g-pest{background:var(--redBg);color:var(--red)}
.g-task{background:var(--amberBg);color:var(--amber)}
.evwho{margin-left:auto;font-size:10.5px;color:var(--tx3);white-space:nowrap;text-align:right}
.wholink{color:var(--green);text-decoration:none;border-bottom:1px dashed var(--greenL)}
.evd{font-size:12px;color:var(--tx2);line-height:1.6}

/* 勾选框（右上角） */
.evck{flex:0 0 22px;width:22px;height:22px;border-radius:7px;background:var(--card2);
      border:1.5px solid var(--greenL);position:relative;cursor:pointer;margin-top:1px;
      transition:background .16s,border-color .16s,transform .1s}
.evck:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:0}  /* 扩大触摸热区，不挡左侧品种链接 */
.evck:active{transform:scale(.9)}
.evck:after{content:"";position:absolute;left:6px;top:2.5px;width:5px;height:9.5px;
            border:2px solid #fff;border-top:0;border-left:0;border-radius:1px;
            transform:rotate(43deg) scale(.5);opacity:0;transition:.16s}
.ev.done .evck{background:var(--green);border-color:var(--green)}
.ev.done .evck:after{opacity:1;transform:rotate(43deg) scale(1)}
.ev.done .evt{text-decoration:line-through;color:var(--tx3);font-weight:400}
.ev.done .evd{color:var(--tx3);opacity:.7}
.ev.done .evwho{opacity:.65}
.cktag{font-size:10px;color:var(--greenD);background:var(--greenBg);border:1px solid var(--greenBd);
       padding:1px 6px;border-radius:20px;font-weight:500;white-space:nowrap}

.empty-note{font-size:12px;color:var(--tx3);text-align:center;padding:14px 0}
.empty-inline{font-size:11.5px;color:var(--tx3);line-height:1.6;padding:2px 0 4px}
.empty-inline a{color:var(--green);text-decoration:none;font-weight:600}

.dot{width:6px;height:6px;border-radius:50%;margin-top:8px;flex:0 0 6px}
.d-green{background:var(--green)} .d-red{background:var(--red)} .d-amber{background:var(--amber)}

.warn{border-color:var(--amberBd);background:#FFFCF5}
.warn .mtitle{color:var(--amber)}
.mtitle{font-size:14.5px;font-weight:600;margin-bottom:5px}
.mtitle + .mdet{margin-bottom:9px}
.mtitle:last-child,.mdet:last-child{margin-bottom:0}
.mdet{font-size:12.5px;color:var(--tx2);line-height:1.65}

/* ---------- 植物 ---------- */
.mp{padding:9px 0;border-bottom:1px solid var(--bd)}
.mp:last-child{border-bottom:none}
.mphead{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.mpname{font-size:13px;font-weight:600}
.mpname.off{color:var(--tx3);font-weight:400;text-decoration:line-through}
.st{font-size:10px;padding:1.5px 7px;border-radius:20px;margin-left:auto;white-space:nowrap}
.st-good{background:var(--greenBg);color:var(--greenD)}
.st-watch{background:var(--amberBg);color:var(--amber)}
.st-alert{background:var(--redBg);color:var(--red)}
.mp ul,.pbody ul{margin:0;padding:0;list-style:none}
.mp li,.pbody li{font-size:12px;color:var(--tx2);padding:2px 0 2px 13px;position:relative;line-height:1.55}
.mp li:before,.pbody li:before{content:"";position:absolute;left:0;top:9px;width:4px;height:4px;
                               border-radius:50%;background:var(--greenL)}
.mp li b,.pbody li b{color:var(--tx);font-weight:600}
.mp li a{color:var(--tx2);text-decoration:none}
.mp li a .d{color:var(--green);font-weight:600}
.mp li a:active{color:var(--green)}

.plant{display:flex;gap:11px;align-items:flex-start;padding:12px 0;cursor:pointer}
.plant + .plant{border-top:1px solid var(--bd)}
.pthumb{width:52px;height:52px;border-radius:12px;flex:0 0 52px;object-fit:cover;background:var(--card2);
        border:1px solid var(--bd)}
.phead{display:flex;align-items:center;gap:7px}
.pname{font-size:14px;font-weight:600}
.pmeta{font-size:11.5px;color:var(--tx3);margin-top:3px}
.parrow{font-size:9px;color:var(--green);margin-left:7px;transition:transform .15s;flex:0 0 auto}
.plant.open .parrow{transform:rotate(90deg)}
.pbody{display:none;margin-top:3px}
.plant.open .pbody{display:block}
.sub{font-size:10.5px;color:var(--green);letter-spacing:1px;margin:11px 0 5px;font-weight:600}
.pspec{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}
.sp{font-size:10.5px;padding:3px 8px;border-radius:7px;background:var(--card2);color:var(--tx2);border:1px solid var(--bd)}
.sp.hi{color:var(--greenD);border-color:var(--greenBd);background:var(--greenBg)}
.riskbox{font-size:11.5px;color:#8E6520;margin-top:9px;line-height:1.6;
         background:#FFFCF5;border:1px solid var(--amberBd);border-radius:10px;padding:9px 11px}

/* 光照需求参考 */
.lit{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--bd)}
.lit:last-child{border-bottom:none}
.litn{font-size:13px;flex:0 0 96px;font-weight:500}
.litbar{flex:1;height:7px;border-radius:4px;background:var(--bg2);overflow:hidden}
.litbar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#8ED3AA,var(--green))}
.litv{font-size:11px;color:var(--tx2);flex:0 0 auto;text-align:right;min-width:64px}

/* ---------- 资料库 ---------- */
.basis{font-size:11.5px;color:var(--greenD);background:var(--greenBg);border:1px solid var(--greenBd);
       border-radius:10px;padding:9px 11px;line-height:1.65;margin-bottom:13px}
.tabs{display:flex;gap:6px;margin-bottom:14px}
.tab{flex:1;text-align:center;padding:9px;font-size:12.5px;border-radius:10px;
     background:var(--card2);color:var(--tx2);border:1px solid var(--bd);cursor:pointer;transition:.16s}
.tab.on{background:var(--green);color:#fff;border-color:var(--green);font-weight:600}
.lib{padding:11px 0;border-bottom:1px solid var(--bd)}
.lib:last-child{border-bottom:none}
.lname{font-size:13.5px;font-weight:600}
.lsub{font-size:11px;color:var(--tx3);margin-left:6px;font-weight:400}
.llib{font-size:12px;color:var(--tx2);margin-top:5px;line-height:1.6}
.llib b{color:var(--green);font-weight:600}
.lwarn{font-size:11.5px;color:#8E6520;margin-top:4px}
.redline{font-size:12px;color:#8E6520;padding:4px 0 4px 15px;position:relative}
.redline:before{content:"";position:absolute;left:0;top:11px;width:5px;height:5px;
                border-radius:50%;background:var(--amber)}

/* ---------- 天气实况条（日历页顶部，只摆事实） ---------- */
.wx{display:flex;gap:9px;align-items:flex-start;background:var(--greenBg);border:1px solid var(--greenBd);
    border-radius:13px;padding:9px 12px;margin-bottom:11px}
.wx .wxi{font-size:16px;line-height:1.35;flex:0 0 auto}
.wx .wxbody{flex:1;min-width:0}
.wx .wxline{font-size:12.5px;color:var(--greenD);line-height:1.5}
.wx .wxline b{font-weight:600;margin-right:2px}
.wx .wxline2{font-size:11.5px;color:var(--tx2);margin-top:2px;line-height:1.5}
.wx .wxtip{font-size:11.5px;color:#8E6520;background:#FFFCF5;border:1px solid var(--amberBd);
           border-radius:8px;padding:5px 9px;margin-top:6px;line-height:1.55}

/* ---------- 顶部导航 ---------- */
.nav{position:sticky;top:0;z-index:30;padding:9px 14px;
     background:rgba(255,255,255,.86);
     -webkit-backdrop-filter:saturate(1.5) blur(14px);backdrop-filter:saturate(1.5) blur(14px);
     border-bottom:1px solid var(--bd)}
.navwrap{max-width:452px;margin:0 auto;display:flex;gap:4px;padding:4px;
         background:var(--greenBg);border:1px solid var(--greenBd);border-radius:13px}
.navwrap a{flex:1;text-align:center;padding:8px 4px;border-radius:10px;font-size:12.5px;
           color:var(--tx2);text-decoration:none;white-space:nowrap;transition:.16s}
.navwrap a.on{background:#fff;color:var(--green);font-weight:600;box-shadow:0 1px 3px rgba(44,122,75,.15)}

/* ---------- 待处理（逾期 / 治疗中） ---------- */
.late{border-color:var(--amberBd);background:#FFFCF5}
.late .lab{color:var(--amber)}
.morelate{font-size:11px;color:var(--tx3);margin-top:9px;padding-top:9px;border-top:1px dashed var(--bd)}
.labrow{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.labrow .lab{margin-bottom:0}
.labrow .op{font-size:11px;padding:3px 10px}
.latebrief{font-size:12px;color:var(--tx2);line-height:1.6}
.lblock{padding:11px 0;border-bottom:1px solid var(--bd)}
.lblock:first-of-type{padding-top:2px}
.lblock:last-child{border-bottom:none;padding-bottom:0}
.cureblock{background:var(--violetBg);border:1px solid var(--violetBd);border-radius:12px;
           padding:11px;margin-bottom:9px}
.lateh{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:4px}
.latet{font-size:13.5px;font-weight:600}
.lated{margin-left:auto;font-size:11px;color:var(--amber);font-weight:600;white-space:nowrap}
.cureblock .lated{color:var(--violet)}
.latedet{font-size:11.5px;color:var(--tx3);line-height:1.6;margin-bottom:6px}
.adadv{font-size:11.5px;line-height:1.6;border-radius:9px;padding:7px 10px;margin-bottom:8px}
.adadv b{font-weight:600}
.a-must{background:#FCECEA;color:#A33B35}
.a-warn{background:var(--amberBg);color:#8E6520}
.a-ok{background:var(--greenBg);color:var(--greenD)}
.a-skip{background:var(--bg2);color:var(--tx2)}
.ops{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.op{font-family:inherit;font-size:11.5px;line-height:1.4;padding:5px 11px;border-radius:9px;
    border:1px solid var(--greenBd);background:var(--greenBg);color:var(--greenD);
    cursor:pointer;text-decoration:none;white-space:nowrap}
.op:active{background:var(--greenL);color:#fff}
.opq{background:var(--card2);border-color:var(--bd);color:var(--tx3)}
.op.danger{background:var(--redBg);border-color:#F1CFCC;color:var(--red);font-weight:600}
/* 还没拍过照的盆：占位块，同尺寸同圆角，摆上去版面不会塌 */
.pthumb-empty{display:flex;align-items:center;justify-content:center;border:1px dashed var(--bd);
  color:var(--tx3);font-size:9px;line-height:1.15;text-align:center;letter-spacing:1px;font-weight:500}

/* ---------- 事项三态与操作 ---------- */
.tag.g-cure{background:var(--violetBg);color:var(--violet)}
.dt-cure{background:var(--violet)}
.sktag{font-size:10px;color:var(--tx3);background:var(--bg2);border:1px solid var(--bd);
       padding:1px 6px;border-radius:20px;white-space:nowrap}
.ltag{font-size:10px;color:#A33B35;background:#FCECEA;border:1px solid #F3D3D0;
      padding:1px 6px;border-radius:20px;white-space:nowrap}
.evops{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:7px}
.evops .op{font-size:11px;padding:3px 9px}
.evops .opq{background:transparent;border:none;color:var(--tx3);padding:3px 0;cursor:default}
.ev.skip .evt{color:var(--tx3);text-decoration:line-through}
.ev.skip .evck{background:var(--bg2);border-color:var(--bd)}
.ev.cureev{background:var(--violetBg);border-radius:12px;padding:10px 11px;
           border-bottom:none;margin:7px 0}
.ev.cureev .evd{color:#6A5580}

/* ---------- 记录页 ---------- */
.frow{margin-bottom:11px}
.frow label{display:block;font-size:11px;color:var(--green);letter-spacing:1px;
            font-weight:600;margin-bottom:6px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{font-size:12px;padding:5px 12px;border-radius:9px;background:var(--card2);
      border:1px solid var(--bd);color:var(--tx2);cursor:pointer;transition:.14s;white-space:nowrap}
.chip.on{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}
.fin{width:100%;padding:10px 12px;border-radius:11px;border:1px solid var(--bd);
     background:var(--card2);font-size:12.5px;color:var(--tx);font-family:inherit;margin-bottom:11px}
.fin:focus{outline:none;border-color:var(--greenL);background:#fff}
.fbtn{width:100%;padding:12px;border-radius:12px;border:none;background:var(--green);
      color:#fff;font-size:13.5px;font-weight:600;cursor:pointer;font-family:inherit}
.fbtn:active{background:var(--greenD)}
.fmsg{font-size:11.5px;color:var(--greenD);background:var(--greenBg);border:1px solid var(--greenBd);
      border-radius:10px;padding:9px 11px;margin-top:10px;line-height:1.6}
.fmsg:empty{display:none}
.logitem{padding:12px 0;border-bottom:1px solid var(--bd)}
.logitem:last-child{border-bottom:none;padding-bottom:0}
.logh{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.logt{font-size:13.5px;font-weight:600}
.logmeta{font-size:11.5px;color:var(--tx3);margin-top:4px}
.fu{display:flex;gap:9px;align-items:flex-start;padding:7px 0;border-bottom:1px dashed var(--bd)}
.fu:last-of-type{border-bottom:none}
.fuck{flex:0 0 18px;width:18px;height:18px;border-radius:6px;background:var(--card2);
      border:1.5px solid var(--greenL);position:relative;cursor:pointer;margin-top:2px}
.fuck:after{content:"";position:absolute;left:4.5px;top:1.5px;width:4.5px;height:8.5px;
            border:2px solid #fff;border-top:0;border-left:0;border-radius:1px;
            transform:rotate(43deg) scale(.5);opacity:0;transition:.16s}
.fu.done .fuck{background:var(--green);border-color:var(--green)}
.fu.done .fuck:after{opacity:1;transform:rotate(43deg) scale(1)}
.fut{font-size:12.5px;font-weight:500}
.fu.done .fut{color:var(--tx3);text-decoration:line-through}
.fuw{font-size:11.5px;color:var(--tx2);line-height:1.6;margin-top:2px}
.fu.done .fuw{color:var(--tx3)}

.foot{font-size:11px;color:var(--tx3);text-align:center;margin-top:18px;line-height:1.7}
.foot a{color:var(--green);text-decoration:none}

/* ================= 观察页：拍一张 ================= */
.shotprev{margin-top:12px;border-top:1px solid var(--bd);padding-top:12px}
.shotprev img{width:100%;max-height:320px;object-fit:contain;border-radius:12px;
              background:var(--card2);border:1px solid var(--bd);display:block;cursor:zoom-in}
.shotmeta{font-size:11.5px;color:var(--tx2);margin-top:8px}
.shotops{display:flex;gap:6px;margin-top:9px;flex-wrap:wrap}
.fbtn:disabled{opacity:.45;cursor:default}
.fgo{font-size:11.5px;color:var(--tx3);margin-top:11px;padding-top:10px;
     border-top:1px solid var(--bd);line-height:1.6}
.fgo a{color:var(--green);text-decoration:none}

/* ================= 诊断面板 ================= */
.diagcard{border-color:var(--greenBd);background:linear-gradient(180deg,#F7FCF9,#fff 62%)}
.dgnote{font-size:11.5px;color:var(--tx3);line-height:1.65;margin-bottom:12px}
.diagstep{padding:11px 0;border-bottom:1px solid var(--bd)}
.diagstep:last-of-type{border-bottom:none}
.dgl{font-size:11px;color:var(--green);letter-spacing:1px;font-weight:600;margin-bottom:8px}
.dgl .dgopt{color:var(--tx3);font-weight:400;letter-spacing:0;margin-left:6px}
.dghint{font-size:11px;color:var(--tx3);margin-top:7px;min-height:15px}

.dgresult{margin-top:6px}
.dgrhead{font-size:11px;color:var(--green);letter-spacing:1.4px;font-weight:600;margin:14px 0 9px}
.dgc{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:11px 12px;margin-bottom:9px}
.dgc.top{border-color:var(--greenBd);box-shadow:0 2px 10px rgba(44,122,75,.09)}
.dgch{display:flex;align-items:center;gap:8px;margin-bottom:7px;flex-wrap:wrap}
.dgcn{font-size:14px;font-weight:700}
.conf{font-size:10px;padding:2px 8px;border-radius:20px;white-space:nowrap;margin-left:auto}
.conf.c-hi{background:var(--greenBg);color:var(--greenD)}
.conf.c-mid{background:var(--amberBg);color:var(--amber)}
.conf.c-lo{background:var(--bg2);color:var(--tx3)}
.dgr{font-size:12px;color:var(--tx2);line-height:1.62;padding:2px 0}
.dgr b{color:var(--tx);font-weight:600;margin-right:5px}

.dgexc{background:var(--amberBg);border:1px solid var(--amberBd);border-radius:12px;
       padding:11px 12px;margin:10px 0}
.dgexc b{font-size:11px;color:var(--amber);letter-spacing:1px;display:block;margin-bottom:6px}
.dgexc ul{margin:0;padding:0;list-style:none}
.dgexc li{font-size:12px;color:#7A5A1E;line-height:1.6;padding:3px 0 3px 13px;position:relative}
.dgexc li:before{content:"";position:absolute;left:0;top:10px;width:5px;height:5px;
                 border-radius:50%;background:var(--amber)}
.dgsp{background:var(--greenBg);border:1px solid var(--greenBd);border-radius:12px;
      padding:10px 12px;font-size:12px;color:var(--greenD);line-height:1.6;margin-bottom:10px}
.dgsp b{margin-right:5px}
.dgsave{border-top:1px solid var(--bd);margin-top:13px;padding-top:12px}

/* ================= 通往照片的入口 ================= */
.pgo{margin-top:5px}
.pgo .op{display:inline-block}

/* 记录里关联的照片 */
.logphotos{display:flex;gap:7px;margin-top:9px;flex-wrap:wrap}

/* ================= 相册（观察页） =================
   同一批照片，三档归类共用这一套。每一档是「组头 + 两列方格」。
   两列而不是三列：每格下面要挂「看看 / 删除」，三列在手机上按钮就挤到一起了。 */
.ghd{display:flex;align-items:baseline;gap:8px;margin:15px 0 9px;padding-bottom:6px;
     border-bottom:1px solid var(--bd)}
.ghd:first-child{margin-top:2px}
.ghn{font-size:12px;font-weight:600;color:var(--greenD)}
.ghc{font-size:10.5px;color:var(--tx3);margin-left:auto}
.gal{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.gcell{position:relative;min-width:0}
.gthumb{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:12px;
        background:var(--card2);border:1px solid var(--bd);cursor:zoom-in}
.gtags{position:absolute;top:6px;left:6px;right:6px;display:flex;gap:4px;flex-wrap:wrap;pointer-events:none}
.gtag{font-size:10px;padding:2px 7px;border-radius:20px;background:rgba(255,255,255,.93);
      color:var(--greenD);font-weight:600;box-shadow:0 1px 4px rgba(29,49,38,.16)}
.gtag.gt-bloom{background:rgba(242,146,178,.95);color:#7A2145}
.gtag.gt-diag{background:rgba(139,95,181,.95);color:#fff}
.gmeta{font-size:11px;color:var(--tx3);margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gmeta b{color:var(--tx2);font-weight:600}
.gops{display:flex;gap:6px;margin-top:6px}
.gops .op{font-size:10.5px;padding:3px 9px}
.logphotos img{width:60px;height:60px;object-fit:cover;border-radius:10px;
               background:var(--card2);border:1px solid var(--bd);cursor:zoom-in}

/* ================= 轻提示 ================= */
.toastbox{position:fixed;left:50%;bottom:74px;transform:translate(-50%,14px);
          max-width:86vw;padding:10px 15px;border-radius:12px;font-size:12.5px;line-height:1.5;
          background:rgba(29,49,38,.93);color:#fff;z-index:90;opacity:0;pointer-events:none;
          transition:opacity .2s,transform .2s;text-align:center}
.toastbox.show{opacity:1;transform:translate(-50%,0)}
.toastbox.t-warn{background:rgba(150,96,20,.95)}
.toastbox.t-ok{background:rgba(44,122,75,.95)}

/* ================= 连接状态条 ================= */
.connbar{position:fixed;left:0;right:0;bottom:0;z-index:80;display:none;
         align-items:center;gap:10px;padding:9px 14px;font-size:12px;line-height:1.45;
         padding-bottom:calc(9px + env(safe-area-inset-bottom))}
.connbar.show{display:flex}
.connbar.c-bad{background:var(--redBg);border-top:1px solid #F3D3D0;color:#A33B35}
.connbar.c-warn{background:var(--amberBg);border-top:1px solid var(--amberBd);color:#8E6520}
.connbar .ct{flex:1;min-width:0}
.connbar .cb{border:1px solid currentColor;border-radius:8px;padding:3px 11px;font-weight:600;
             cursor:pointer;white-space:nowrap;opacity:.85}
.syncbadge{position:fixed;right:12px;bottom:74px;z-index:80;display:none;
           background:var(--amber);color:#fff;font-size:11px;padding:5px 11px;border-radius:20px}
.syncbadge.show{display:block}

/* ================= 大图查看 ================= */
.lb{position:fixed;inset:0;z-index:100;display:none;flex-direction:column;
    background:rgba(12,18,15,.96);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.lb.show{display:flex}
.lbtop{display:flex;align-items:center;justify-content:space-between;gap:12px;
       padding:calc(10px + env(safe-area-inset-top)) 16px 10px;flex:0 0 auto}
.lbcnt{font-size:12px;color:rgba(255,255,255,.72)}
.lbx{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;
     background:rgba(255,255,255,.13);color:#fff;font-size:14px;cursor:pointer}
.lbstage{flex:1;min-height:0;position:relative;display:flex;align-items:center;justify-content:center}
.lbimg{max-width:100%;max-height:100%;object-fit:contain;display:block}
.lbprev,.lbnext{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:64px;
                display:flex;align-items:center;justify-content:center;cursor:pointer;
                color:#fff;font-size:26px;background:rgba(255,255,255,.09);border-radius:12px;
                user-select:none;-webkit-user-select:none}
.lbprev{left:8px} .lbnext{right:8px}
.lbcap{flex:0 0 auto;padding:12px 18px calc(16px + env(safe-area-inset-bottom));
       color:rgba(255,255,255,.82);font-size:12.5px;text-align:center;line-height:1.6}
