/* 工作日曆。跟 token，唔用 emoji。 */
.cal-err{padding:var(--sp-5);text-align:center;color:var(--bad)}
/* 舊版匯入提示（唔係錯誤，係「行緊慢路」嘅告示） */
.cal-note{padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-3);font-size:var(--fs-sm);color:var(--muted);border-left:3px solid var(--warn)}
.cal-head{display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap;margin-bottom:var(--sp-3)}
.cal-head h1{font-size:var(--fs-2xl)}
.cal-head .nav{display:flex;align-items:center;gap:var(--sp-2)}
.cal-head .nav b{font-family:var(--mono);font-size:var(--fs-md);min-width:112px;text-align:center}
.cal-head .nav .btn{padding:5px 11px}
.cal-head .acts{margin-left:auto;display:flex;gap:var(--sp-2);flex-wrap:wrap}
.cal-head .sp{width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--brand-green-deep);border-radius:50%;opacity:0}
.cal-head .sp.on{opacity:1;animation:spin .8s linear infinite}

.cal-filt{display:flex;flex-wrap:wrap;gap:var(--sp-3h);margin-bottom:var(--sp-3)}
.cal-filt .g{display:flex;align-items:center;gap:var(--sp-1h);flex-wrap:wrap}
.cal-filt .g>b{font-size:var(--fs-2xs);color:var(--muted);font-weight:400}
.cal-filt .chip{border:1px solid var(--line);background:var(--card);border-radius:var(--r-pill);padding:3px var(--sp-2h);font-size:var(--fs-2xs);cursor:pointer;opacity:.45;display:inline-flex;align-items:center;gap:var(--sp-1h)}
.cal-filt .chip.on{opacity:1}
.cal-filt .chip i{font-style:normal;font-family:var(--mono);font-size:var(--fs-3xs);opacity:.7}
.chip.crit,.pin.crit,.cal-it.crit .tag{background:var(--bad);color:#fff;border-color:var(--bad)}
.chip.bad,.pin.bad,.cal-it.bad .tag{background:var(--bad-soft);color:var(--bad);border-color:var(--bad-soft)}
.chip.warn,.pin.warn,.cal-it.warn .tag{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-soft)}
.chip.ok,.pin.ok,.cal-it.ok .tag{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-soft)}
.chip.info,.pin.info,.cal-it.info .tag{background:var(--info-soft);color:var(--info);border-color:var(--info-soft)}
.chip.team,.pin.team,.cal-it.team .tag{background:var(--accent-soft);color:var(--accent-ink);border-color:var(--accent-soft)}
/* 團隊事項逐種類型一隻色（同事 09-03：會議／活動要分得開；Love Encore／Additional／Pioneer 各一隻） */
.chip.meeting,.pin.meeting,.cal-it.meeting .tag{background:var(--accent-soft);color:var(--accent-ink);border-color:var(--accent-soft)}
.chip.event,.pin.event,.cal-it.event .tag{background:rgba(13,148,136,.14);color:#0F766E;border-color:rgba(13,148,136,.14)}
.chip.le,.pin.le,.cal-it.le .tag{background:rgba(190,24,93,.12);color:#9D174D;border-color:rgba(190,24,93,.12)}
.chip.ad,.pin.ad,.cal-it.ad .tag{background:rgba(109,40,217,.12);color:#5B21B6;border-color:rgba(109,40,217,.12)}
.chip.pw,.pin.pw,.cal-it.pw .tag{background:rgba(15,46,31,.12);color:var(--brand-deeper);border-color:rgba(15,46,31,.12)}
.pin u{text-decoration:none;font-family:var(--mono);font-size:var(--fs-3xs);opacity:.8}
.chip.personal,.pin.personal,.cal-it.personal .tag{background:var(--neutral-soft);color:var(--ink2);border-color:var(--neutral-soft)}

.cal-grid{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow);overflow:hidden}
.cal-wd{display:grid;grid-template-columns:repeat(7,1fr);background:var(--card2);border-bottom:1px solid var(--line)}
.cal-wd div{padding:var(--sp-1h) 0;text-align:center;font-size:var(--fs-2xs);font-weight:700;color:var(--ink2)}
.cal-cells{display:grid;grid-template-columns:repeat(7,1fr)}
.cal-c{min-height:96px;border-right:1px solid var(--line2);border-bottom:1px solid var(--line2);padding:var(--sp-1h) var(--sp-1h);cursor:pointer;display:flex;flex-direction:column;gap:2px;overflow:hidden}
.cal-c:nth-child(7n){border-right:0}
.cal-c:hover{background:var(--card2)}
.cal-c.out{background:var(--bg2);opacity:.55}
.cal-c.sel{background:var(--accent-soft)}
.cal-c.today .n{color:var(--brand-green-deep);font-weight:700}
.cal-c .n{font-family:var(--mono);font-size:var(--fs-xs);color:var(--ink2);display:flex;align-items:center;gap:var(--sp-1h)}
.cal-c .n .td{font-family:var(--sans);font-size:var(--fs-3xs);background:var(--brand-green-deep);color:#fff;border-radius:var(--r-xs);padding:0 var(--sp-1)}
.pin{font-size:var(--fs-3xs);line-height:1.5;padding:1px var(--sp-1h);border-radius:var(--r-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid transparent}
.cal-c .more{font-size:var(--fs-3xs);color:var(--muted)}

.cal-day{margin-top:var(--sp-4)}
.cal-day h3{font-size:var(--fs-md);display:flex;align-items:baseline;gap:var(--sp-2h);margin-bottom:var(--sp-2h)}
.cal-day h3 .c{font-size:var(--fs-xs);font-weight:400;color:var(--muted)}
.cal-list{display:flex;flex-direction:column;gap:var(--sp-2)}
.cal-it{display:flex;align-items:flex-start;gap:var(--sp-3);background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-2h) var(--sp-3h)}
.cal-it .tag{flex:none;font-size:var(--fs-2xs);font-weight:700;padding:2px var(--sp-2);border-radius:var(--r-pill);white-space:nowrap;border:1px solid transparent}
.cal-it .b{flex:1;min-width:0}
.cal-it .b b{font-size:var(--fs-sm)}
.cal-it .b s{display:block;text-decoration:none;font-size:var(--fs-2xs);color:var(--muted);margin-top:2px;line-height:1.6}
.cal-it .a{flex:none;display:flex;align-items:center;gap:var(--sp-1h);flex-wrap:wrap}
.cal-it .a .btn{padding:4px 9px;font-size:var(--fs-2xs)}
.cal-it .a .btn.danger{color:var(--bad)}
.cal-it .rsvp{display:inline-flex;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden}
/* ⚠️ RSVP 掣內距 4px 9px 保留寫死值：按鈕內距係元件規格（2026-09-02 統一），
   要同上面 .cal-it .a .btn 一模一樣；9px snap 落 --sp-2h（10px）會同隔籬個掣高低唔一，
   仲會推闊成條列。同 shell.css .seg button 同一個裁決。 */
.cal-it .rsvp button{border:0;background:var(--card);padding:4px 9px;font-size:var(--fs-2xs);cursor:pointer;color:var(--ink2);border-right:1px solid var(--line)}
.cal-it .rsvp button:last-child{border-right:0}
.cal-it .rsvp button.on{background:var(--brand-green-deep);color:#fff}
.cal-empty{padding:var(--sp-5);text-align:center;color:var(--muted);font-size:var(--fs-sm);background:var(--card);border:1px dashed var(--line);border-radius:var(--r-md)}

/* modal */
.cal-mo{position:fixed;inset:0;z-index:50;display:none}
.cal-mo.on{display:block}
.cal-mo .scrim{position:absolute;inset:0;background:rgba(20,33,27,.4)}
.cal-mo .box{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(560px,94vw);max-height:88vh;overflow:auto;background:var(--bg);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:var(--sp-5) var(--sp-5)}
.cal-mo h3{font-size:var(--fs-lg);margin-bottom:var(--sp-3h)}
.cal-mo .f{display:flex;flex-direction:column;gap:var(--sp-1h);margin-bottom:var(--sp-3)}
.cal-mo .f2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}
.cal-mo label{font-size:var(--fs-xs);color:var(--muted)}
.cal-mo input,.cal-mo select,.cal-mo textarea{border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 10px;font-size:var(--fs-sm);font-family:var(--sans);background:var(--card)}
.cal-mo textarea{min-height:64px;resize:vertical}
.cal-mo label.ck{display:flex;align-items:center;gap:var(--sp-1h);font-size:var(--fs-sm);color:var(--ink2);cursor:pointer;padding:3px 0}
.cal-mo label.ck input{width:15px;height:15px;accent-color:var(--brand-green-deep)}
.cal-mo .ppl{max-height:180px;overflow:auto;border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-2h);margin-top:var(--sp-1)}
.cal-mo .hint{font-size:var(--fs-2xs);color:var(--muted);line-height:1.6}
.cal-mo .mact{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-4)}

/* 簽到主持台 */
.pic-h{display:flex;flex-direction:column;gap:2px;padding-bottom:var(--sp-2h);border-bottom:1px solid var(--line2)}
.pic-h span{font-size:var(--fs-xs);color:var(--muted)}
.pic-open{padding:var(--sp-4) 0;text-align:center}
.pic-open p{font-size:var(--fs-xs);color:var(--muted);line-height:1.8;margin:0 0 var(--sp-3)}
.pic-qr{padding:var(--sp-3h) 0;text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--sp-2h)}
.pic-qr #qrBox{width:min(280px,60vw)}
.pic-qr #qrBox svg{width:100%;height:auto;display:block}
.pic-qr .qt{font-size:var(--fs-xs);color:var(--muted);line-height:1.8}
.pic-qr .qt span{font-family:var(--mono);font-size:var(--fs-2xs)}
.pic-cnt{font-size:var(--fs-xs);color:var(--ink2);padding:var(--sp-2h) 0;border-top:1px solid var(--line2);border-bottom:1px solid var(--line2)}
.pic-cnt b{font-family:var(--mono);color:var(--brand-green-deep)}
.pic-list{max-height:260px;overflow:auto;margin-top:var(--sp-2)}
.pic-r{display:flex;align-items:center;gap:var(--sp-2h);padding:var(--sp-1h) 0;border-bottom:1px solid var(--line2);font-size:var(--fs-xs)}
.pic-r:last-child{border-bottom:0}
.pic-r.in b{color:var(--ok)}
.pic-r .s{margin-left:auto;font-size:var(--fs-2xs);color:var(--muted);white-space:nowrap}
.pic-r .btn{flex:none;padding:3px 8px;font-size:var(--fs-2xs)}
@media (max-width:820px){
  .cal-c{min-height:70px}
  .pin{font-size:var(--fs-3xs)}
  .cal-head .acts{margin-left:0;width:100%}
  .cal-it{flex-wrap:wrap}
  .cal-it .a{width:100%}
}

/* 跟進狀態 + 訊息 */
.cal-it .fu{flex:none;align-self:center;font-size:var(--fs-3xs);font-weight:700;padding:2px var(--sp-2);border-radius:var(--r-pill);white-space:nowrap}
.cal-it .fu.done{background:var(--ok-soft);color:var(--ok)}
.cal-it .fu.later{background:var(--warn-soft);color:var(--warn)}
.cal-it .fu.na{background:var(--neutral-soft);color:var(--muted)}
.msg-who{font-size:var(--fs-sm);margin:0 0 var(--sp-3);display:flex;align-items:baseline;gap:var(--sp-2);flex-wrap:wrap}
.msg-who .k{font-size:var(--fs-2xs);color:var(--muted)}
.msg-tip{font-size:var(--fs-2xs);color:var(--muted);line-height:1.8;background:var(--card2);border-radius:var(--r-sm);padding:var(--sp-2h) var(--sp-2h);margin:var(--sp-2h) 0 0}
.msg-tip code{font-family:var(--mono);font-size:var(--fs-3xs);background:var(--neutral-soft);border-radius:var(--r-xs);padding:0 var(--sp-1)}
.cal-mo textarea#msgTxt,.cal-mo textarea#tplTxt{font-size:var(--fs-sm);line-height:1.7;min-height:150px}
.fu-pick{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-3h);flex-wrap:wrap}
/* ⚠️ 跟進掣 10px 一樣保留寫死值：雖然 --sp-2h 啱啱好係 10px（換咗零變化），
   但同批其餘按鈕內距全部留寫死，兩套寫法會引返同一個問題。 */
.fu-pick button{flex:1;min-width:96px;border:1px solid var(--line);background:var(--card);border-radius:var(--r-sm);padding:10px;font-size:var(--fs-sm);cursor:pointer}
.fu-pick button:hover{border-color:var(--brand-green-deep)}
.fu-pick button.on{background:var(--brand-green-deep);color:#fff;border-color:var(--brand-green-deep)}

/* ── 2026-09-07：地址搜尋定會場座標 ＋ 定期活動 ── */
.cal-mo .geo-row{display:flex;gap:var(--sp-2)}
.cal-mo .geo-row input{flex:1;min-width:0}
.cal-mo .geo-row .btn{white-space:nowrap}
.cal-mo .geo-list{display:flex;flex-direction:column;gap:var(--sp-1)}
.cal-mo .geo-hit{text-align:left;border:1px solid var(--line);background:var(--card);border-radius:var(--r-sm);padding:var(--sp-1h) var(--sp-2h);font-size:var(--fs-sm);font-family:inherit;color:var(--ink);cursor:pointer;display:flex;justify-content:space-between;gap:var(--sp-2);align-items:baseline}
.cal-mo .geo-hit:hover{border-color:var(--brand-green-deep);background:var(--ok-soft)}
.cal-mo .geo-hit span{font-family:var(--mono);font-size:var(--fs-3xs);color:var(--muted);white-space:nowrap}
.cal-mo .geo-cur{font-size:var(--fs-xs);color:var(--ok);margin-top:2px}
.cal-mo .geo-cur .hint{color:var(--muted)}
.cal-mo .lnk{background:none;border:0;padding:0;color:var(--info);cursor:pointer;font-size:var(--fs-2xs);text-decoration:underline}
.cal-it .b s i.geo{font-style:normal;font-size:var(--fs-3xs);background:var(--ok-soft);color:var(--ok);border-radius:var(--r-pill);padding:1px var(--sp-1h)}

/* ── 同步到我的日曆（ICS 訂閱彈窗）── */
.cal-mo .sy-p{font-size:var(--fs-sm);color:var(--ink2);line-height:1.7;margin-bottom:var(--sp-3)}
.cal-mo .sy-g{margin-bottom:var(--sp-3h)}
.cal-mo .sy-gt{font-size:var(--fs-xs);font-weight:600;color:var(--ink);margin-bottom:var(--sp-1)}
.cal-mo .sy-g .hint{margin-bottom:var(--sp-1h)}
.cal-mo .sy-g .cal-filt{display:flex;flex-wrap:wrap;gap:var(--sp-1h)}
.cal-mo .sy-url{border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--sp-2h);margin-bottom:var(--sp-3h);background:var(--card)}
.cal-mo .sy-url code{display:block;font-family:var(--mono);font-size:var(--fs-2xs);line-height:1.6;word-break:break-all;margin:var(--sp-2) 0;color:var(--ink)}
.cal-mo .sy-url .mact{justify-content:flex-start;margin-top:0}
