/* 工作日曆。跟 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.addl,.pin.addl,.cal-it.addl .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}

/* 10-23（英文版＋iPad 11 吋樣板第 6 組，中英同步）：月格事項字 10px → 12px（系統事項淨出客戶名，見 calendar.js）；
   換月／今日掣由 27px 升到 40px；星期列同「+N」最細 12px */
.pin{font-size:var(--fs-xs);line-height:1.45;padding:1px var(--sp-1h)}
.pin u{font-size:var(--fs-xs)}
.cal-c{min-height:104px}
.cal-c .more{font-size:var(--fs-xs)}
.cal-wd div{font-size:var(--fs-xs)}
.cal-head .nav .btn{min-height:40px;min-width:40px;padding:0 12px}
@media (max-width:820px){.pin{font-size:var(--fs-xs)}.cal-c{min-height:84px}}

/* ═══ 10-28 手機版（iPhone 直向，以 iPhone Air 420×912 做整齊標準；只喺 html[data-dev="phone"]，iPad／電腦一條都唔中）═══
   對線：框 12／408（頁邊 12）、框入面文字 +16、卡外標題貼 16；撳位 ≥44；字 ≥12；月格唔出字（日子＋色點），撳日子下面列當日事項。 */
html[data-dev="phone"] .cal-head h1{display:none}   /* 頂欄已經寫住「工作日曆」 */
html[data-dev="phone"] .hero{padding:var(--sp-4)}
html[data-dev="phone"] .hero .hrow{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4) 0}
html[data-dev="phone"] .hero .hrow>div{padding:0 0 0 var(--sp-4);border-left:1px solid rgba(255,255,255,.14);min-width:0}
html[data-dev="phone"] .hero .hrow>div:nth-child(odd){padding-left:0;border-left:0}
html[data-dev="phone"] .hero .lead .hval,html[data-dev="phone"] .hero .hval{font-size:var(--fs-2xl)}
html[data-dev="phone"] .hero .hsub{font-size:var(--fs-xs)}
html[data-dev="phone"] .cal-head{gap:var(--sp-2);margin-bottom:var(--sp-3)}
html[data-dev="phone"] .cal-head .nav{width:100%;gap:var(--sp-1)}
html[data-dev="phone"] .cal-head .nav .btn{min-height:44px;min-width:44px;padding:0 var(--sp-3)}
html[data-dev="phone"] .cal-head .nav b{min-width:0;flex:none;font-size:var(--fs-lg);padding:0 var(--sp-1)}
html[data-dev="phone"] .cal-head .nav .sp{margin-left:auto}
html[data-dev="phone"] .cal-head .nav #calToday{order:9}
html[data-dev="phone"] .cal-pbar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);width:100%}
html[data-dev="phone"] .cal-pbar .mseg button{min-width:56px}
html[data-dev="phone"] .cal-pfbtn{min-width:132px;gap:var(--sp-1h)}
html[data-dev="phone"] .cal-pfbtn .n{font-weight:500;font-size:var(--fs-sm);opacity:.85}
html[data-dev="phone"] .cal-head .acts{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--sp-2);width:100%;margin:0}
html[data-dev="phone"] .cal-head .acts .btn{min-height:44px;white-space:normal;line-height:1.25;padding:var(--sp-1) var(--sp-2);font-size:var(--fs-sm)}
/* 月格：日子＋最多三粒色點（色同當日清單 tag 一樣），格高固定（撳揀日子唔郁位） */
html[data-dev="phone"] .cal-grid{border-radius:var(--r-md)}
html[data-dev="phone"] .cal-wd div{padding:var(--sp-1h) 0;font-size:var(--fs-xs)}
html[data-dev="phone"] .cal-c.ph{min-height:0;height:52px;padding:var(--sp-1) 0 0;align-items:center;gap:var(--sp-1);border-right:0;border-bottom:1px solid var(--line2)}
html[data-dev="phone"] .cal-c.ph:hover{background:none}
html[data-dev="phone"] .cal-c.ph.sel{background:none}
html[data-dev="phone"] .cal-c.ph .n{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;font-size:var(--fs-md);font-family:var(--mono);color:var(--ink);font-variant-numeric:tabular-nums}
html[data-dev="phone"] .cal-c.ph.out{background:none;opacity:1}
html[data-dev="phone"] .cal-c.ph.out .n{color:var(--faint)}
html[data-dev="phone"] .cal-c.ph.today .n{color:var(--brand-green-deep);font-weight:700}
html[data-dev="phone"] .cal-c.ph.sel .n{background:var(--ink);color:var(--card);font-weight:700}
html[data-dev="phone"] .cal-c.ph.sel.today .n{background:var(--brand-green-deep);color:#fff}
html[data-dev="phone"] .cal-c.ph .dots{display:flex;gap:3px;height:6px}
html[data-dev="phone"] .cal-c.ph .dots i,html[data-dev="phone"] .cal-fsr .dot{display:block;width:6px;height:6px;border-radius:50%;background:var(--muted)}
html[data-dev="phone"] .cal-c.ph.out .dots{opacity:.45}
/* 色點／篩選點：同 tag 同一個色系（實色版） */
html[data-dev="phone"] :is(.cal-c.ph .dots i,.cal-fsr .dot).crit,html[data-dev="phone"] :is(.cal-c.ph .dots i,.cal-fsr .dot).bad{background:var(--bad)}
html[data-dev="phone"] :is(.cal-c.ph .dots i,.cal-fsr .dot).warn{background:var(--warn)}
html[data-dev="phone"] :is(.cal-c.ph .dots i,.cal-fsr .dot).ok{background:var(--ok)}
html[data-dev="phone"] :is(.cal-c.ph .dots i,.cal-fsr .dot).info{background:var(--info)}
html[data-dev="phone"] :is(.cal-c.ph .dots i,.cal-fsr .dot):is(.team,.meeting){background:var(--brand-gold-deep)}
html[data-dev="phone"] :is(.cal-c.ph .dots i,.cal-fsr .dot).event{background:#0F766E}
html[data-dev="phone"] :is(.cal-c.ph .dots i,.cal-fsr .dot).le{background:#9D174D}
html[data-dev="phone"] :is(.cal-c.ph .dots i,.cal-fsr .dot).addl{background:#5B21B6}
html[data-dev="phone"] :is(.cal-c.ph .dots i,.cal-fsr .dot).pw{background:var(--brand-deeper)}
html[data-dev="phone"] :is(.cal-c.ph .dots i,.cal-fsr .dot).personal{background:var(--muted)}
/* 當日清單：卡外標題（17）＋一張卡，行與行一條線（唔准盒中盒） */
html[data-dev="phone"] .cal-day{margin-top:var(--sp-5)}
html[data-dev="phone"] .cal-day h3{flex-wrap:wrap;row-gap:2px;font-size:calc(17px * var(--fs-scale));padding:0 var(--sp-1);margin-bottom:var(--sp-2)}
html[data-dev="phone"] .cal-day h3 .c{font-size:var(--fs-sm)}
html[data-dev="phone"] .cal-list{gap:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
html[data-dev="phone"] .cal-it{flex-wrap:wrap;gap:var(--sp-1h) var(--sp-2h);border:0;border-top:1px solid var(--line2);border-radius:0;padding:var(--sp-3) var(--sp-4)}
html[data-dev="phone"] .cal-it:first-child{border-top:0}
html[data-dev="phone"] .cal-it .tag,html[data-dev="phone"] .cal-it .fu{font-size:var(--fs-xs)}
html[data-dev="phone"] .cal-it .b{flex:1 1 0}
html[data-dev="phone"] .cal-it .b b{font-size:var(--fs-md)}
html[data-dev="phone"] .cal-it .b s,html[data-dev="phone"] .cal-it .b s i.geo{font-size:var(--fs-xs)}
html[data-dev="phone"] .cal-it .a{width:100%;gap:var(--sp-2)}
html[data-dev="phone"] .cal-it .a .btn{min-height:44px;padding:0 var(--sp-3);font-size:var(--fs-sm)}
html[data-dev="phone"] .cal-it .rsvp button{min-height:44px;padding:0 var(--sp-3);font-size:var(--fs-sm)}
html[data-dev="phone"] .cal-empty{font-size:var(--fs-md)}
/* 篩選底片（.th-sheet 殼；只有手機開得） */
.cal-fs .box{padding:var(--sp-2) var(--sp-3) calc(var(--sp-4) + env(safe-area-inset-bottom,0px));outline:none}
.cal-fs .grab{width:36px;height:5px;border-radius:3px;background:var(--line);margin:0 auto var(--sp-2)}
.cal-fsh{display:flex;align-items:center;justify-content:space-between;padding:0 var(--sp-1);margin-bottom:var(--sp-2)}
.cal-fsh h3{margin:0;font-size:calc(17px * var(--fs-scale))}
.cal-fsdone{min-height:44px;min-width:44px;padding:0 var(--sp-2);border:0;background:none;color:var(--brand-green-deep);font:inherit;font-size:var(--fs-md);font-weight:700;cursor:pointer}
.cal-fsg{margin-bottom:var(--sp-3)}
.cal-fsg .gt{font-size:var(--fs-xs);color:var(--muted);padding:0 var(--sp-1) var(--sp-1)}
.cal-fsg .rows{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.cal-fsr{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:48px;padding:0 var(--sp-4);border:0;border-top:1px solid var(--line2);background:none;font:inherit;font-size:var(--fs-md);color:var(--ink);text-align:left;cursor:pointer}
.cal-fsr:first-child{border-top:0}
.cal-fsr:active{background:var(--card2)}
.cal-fsr span{flex:1;min-width:0}
.cal-fsr em{font-style:normal;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:var(--fs-sm);color:var(--muted);min-width:3ch;text-align:right}
.cal-fsr svg{width:18px;height:18px;flex:none;stroke:var(--brand-green-deep);fill:none;visibility:hidden}
.cal-fsr[aria-pressed="true"] svg{visibility:visible}
.cal-fsr[aria-pressed="false"] span{color:var(--muted)}
.cal-fsr:focus-visible,.cal-fsdone:focus-visible{outline:2px solid var(--accent-ink);outline-offset:-2px}
html[data-dev="phone"] .cal-cells .cal-c.ph:nth-last-child(-n+7){border-bottom:0}
/* 彈窗（新增／編輯／傳訊息／跟進／同步）：框貼頁邊 12，格高 44、字 16（iPhone 細過 16 會自動放大頁面），掣 44 */
html[data-dev="phone"] .cal-mo .box{width:calc(100vw - 24px);max-height:calc(100dvh - 48px);padding:var(--sp-4)}
html[data-dev="phone"] .cal-mo .f2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
html[data-dev="phone"] .cal-mo :is(input:not([type=checkbox]):not([type=radio]),select){min-height:44px;font-size:16px;min-width:0;width:100%}
html[data-dev="phone"] .cal-mo textarea{font-size:16px}
html[data-dev="phone"] .cal-mo label,html[data-dev="phone"] .cal-mo .hint,html[data-dev="phone"] .msg-tip,html[data-dev="phone"] .msg-who .k{font-size:var(--fs-xs)}
html[data-dev="phone"] .cal-mo label.ck{min-height:44px;font-size:var(--fs-md)}
html[data-dev="phone"] .cal-mo label.ck input{width:20px;height:20px}
html[data-dev="phone"] .cal-mo .btn,html[data-dev="phone"] .cal-mo .geo-hit,html[data-dev="phone"] .fu-pick button{min-height:44px}
html[data-dev="phone"] .cal-mo .lnk{min-height:44px;font-size:var(--fs-sm)}
html[data-dev="phone"] .cal-mo .geo-hit span,html[data-dev="phone"] .cal-mo .sy-url code,html[data-dev="phone"] .pic-qr .qt span{font-size:var(--fs-xs)}
html[data-dev="phone"] .pic-r{min-height:44px;font-size:var(--fs-sm)}
html[data-dev="phone"] .pic-r .s,html[data-dev="phone"] .pic-r .btn{font-size:var(--fs-xs)}
html[data-dev="phone"] .pic-r .btn{min-height:44px}

/* ══ 10-30 手機版 v2：工作日曆（淨 html[data-dev="phone"]，iPad／電腦唔郁）══
   頂部四格（今日／本週／本月／未跟進）由 2×2 大卡（約 200px）壓做一行四格（數字＋細字名，約 76px）：
   副行（日期範圍、「本月未標記跟進」）手機唔出 —— 撳日曆見得到；第一屏留位俾月曆同當日事項。 */
html[data-dev="phone"] body[data-page="calendar"] .hero{padding:var(--sp-3) var(--sp-2)}
html[data-dev="phone"] body[data-page="calendar"] .hero .hrow{grid-template-columns:repeat(4,minmax(0,1fr));gap:0}
html[data-dev="phone"] body[data-page="calendar"] .hero .hrow>div,html[data-dev="phone"] body[data-page="calendar"] .hero .hrow>div:nth-child(odd){display:flex;flex-direction:column-reverse;align-items:center;padding:0 var(--sp-1);border-left:1px solid rgba(255,255,255,.14);text-align:center}
html[data-dev="phone"] body[data-page="calendar"] .hero .hrow>div:first-child{border-left:0}
html[data-dev="phone"] body[data-page="calendar"] .hero .hlabel{font-size:12px;line-height:1.3;margin:2px 0 0;white-space:normal}
html[data-dev="phone"] body[data-page="calendar"] .hero .lead .hval,html[data-dev="phone"] body[data-page="calendar"] .hero .hval{font-size:24px;line-height:1.2;margin:0}
html[data-dev="phone"] body[data-page="calendar"] .hero .hsub{display:none}
html[data-dev="phone"] body[data-page="calendar"] .th-top .fresh{display:none}   /* 頂欄已寫「工作日曆」，fresh「日曆」重複 */
