:root{--bg:#F5F7FA;--card:#fff;--line:#E3E7ED;--line2:#EEF1F5;--ctl:#D9DEE5;--ink:#1B2430;--ink2:#3A4452;--mute:#5B6573;--brand:#0F766E;--brand-ink:#0B4F4A;--brand-soft:#E6F0EF;--warn-bg:#FFF1D6;--warn:#7A4B00;--err-bg:#FDECE7;--err:#8A2A12;--info-bg:#E8EFFD;--info:#1E3A8A}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;font-size:14px;line-height:1.5}
a{color:var(--brand)}a:hover{color:var(--brand-ink)}
.demo{background:var(--warn-bg);color:var(--warn);text-align:center;font-size:12px;padding:3px 8px}
/* 上方列 */
.top{background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:10px 20px;flex-wrap:wrap}
.top form.search{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.top .logo{height:32px;margin:0 16px}
.top nav{display:flex;gap:4px;flex-wrap:wrap}
.top nav a{padding:8px 12px;border-radius:8px;color:var(--ink2);text-decoration:none;font-size:15px}
.top nav a.on{background:var(--brand-soft);color:var(--brand-ink);font-weight:500}
.top .me{margin-left:auto}
.top .panel-toggle{display:none}
/* 版面 */
.shell{display:flex;min-height:calc(100vh - 61px)}
.side{width:250px;flex:none;background:#fff;border-right:1px solid var(--line);padding:16px 14px}
.side h2{font-size:16px;margin:0 6px 8px}
.scope-now{font-size:12px;padding:8px 10px;border-radius:8px;background:var(--brand-soft);color:var(--brand-ink);margin-bottom:8px}
.scope-now b{display:block;font-size:13px;font-weight:500}
.tree{list-style:none;margin:6px 0 0;padding:0;font-size:14px}
.tree ul{list-style:none;margin:0;padding:0 0 0 14px}
.tree a{display:block;padding:6px 8px;border-radius:6px;color:var(--ink);text-decoration:none}
.tree a:hover{background:var(--bg)}
.tree a.on{background:var(--brand-soft);color:var(--brand-ink);font-weight:500}
.tree details>summary{list-style:none;cursor:pointer}
.tree details>summary::-webkit-details-marker{display:none}
.tree details>summary{display:flex;align-items:center}
.tree .tg{width:18px;flex:none;text-align:center;color:var(--mute);font-size:11px}
.tree .tg::before{content:"▸"}
.tree details[open]>summary .tg::before{content:"▾"}
.tree summary a{flex:1}
.main{flex:1;min-width:0;padding:18px 24px 40px}
h1{font-size:20px;margin:0}
.sub{color:var(--mute);font-size:13px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:14px}
.card h2{font-size:16px;margin:0 0 10px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
/* 表單元件 */
.ctl{height:38px;border:1px solid var(--ctl);border-radius:8px;padding:0 10px;font-size:14px;font-family:inherit;background:#fff;color:var(--ink)}
textarea.ctl{height:auto;padding:8px 10px}
.ctl.wide{width:100%}
label.f{display:block;font-size:13px;color:var(--ink2);font-weight:500;margin-bottom:4px}
.field{margin-bottom:12px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;padding:0 14px;border-radius:8px;border:1px solid var(--ctl);background:#fff;color:var(--ink);font-size:14px;font-family:inherit;cursor:pointer;text-decoration:none;white-space:nowrap}
.btn:hover{border-color:#B8C0CC;color:var(--ink)}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand-ink);color:#fff}
.btn.danger{color:#9B1C1C;border-color:#F0B7AE}
.btn.small{height:32px;padding:0 10px;font-size:13px}
.btn[disabled]{opacity:.45;cursor:not-allowed}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.sr{position:absolute;left:-9999px}
/* 下拉選單(用 details 做,不需要 JavaScript) */
.menu{position:relative;display:inline-block}
.menu>summary{list-style:none}
.menu>summary::-webkit-details-marker{display:none}
.menu .items{position:absolute;z-index:20;top:42px;left:0;min-width:220px;background:#fff;border:1px solid var(--ctl);border-radius:10px;box-shadow:0 8px 24px rgba(27,36,48,.12);padding:6px}
.menu .items a,.menu .items button{display:block;width:100%;text-align:left;padding:9px 12px;border-radius:6px;border:0;background:none;color:var(--ink);font:inherit;text-decoration:none;cursor:pointer}
.menu .items a:hover,.menu .items button:hover{background:var(--bg)}
/* 表格 */
.tablebox{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:auto;max-height:68vh}
table.t{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}
table.t th{position:sticky;top:0;background:#FAFBFC;color:var(--mute);font-weight:500;text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap;z-index:2}
table.t td{padding:8px 10px;border-bottom:1px solid var(--line2);vertical-align:top;white-space:nowrap;max-width:280px;overflow:hidden;text-overflow:ellipsis}
table.t tr:hover td{background:#FAFCFC}
table.t .frozen{position:sticky;left:0;background:#fff;z-index:1}
table.t th.frozen{z-index:3;background:#FAFBFC}
table.t tr.voided td{color:#9AA3AE;text-decoration:line-through}
.pill{display:inline-block;font-size:11px;padding:1px 8px;border-radius:999px;background:var(--line2);color:var(--ink2);white-space:nowrap}
.pill.ok{background:var(--brand-soft);color:var(--brand-ink)}
.pill.warn{background:var(--warn-bg);color:var(--warn)}
.pill.err{background:var(--err-bg);color:var(--err)}
.pill.info{background:var(--info-bg);color:var(--info)}
.note{border-radius:8px;padding:10px 14px;margin-bottom:12px}
.note.ok{background:var(--brand-soft);color:var(--brand-ink)}
.note.err{background:var(--err-bg);color:var(--err)}
.note.warn{background:var(--warn-bg);color:var(--warn)}
.note.info{background:var(--info-bg);color:var(--info)}
.pager{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:10px}
.kv{display:grid;grid-template-columns:90px minmax(0,1fr);row-gap:6px}
.kv div:nth-child(odd){color:var(--mute)}
.home-cards .card{text-align:center}
.home-cards .btn{width:100%;margin-top:8px}
/* 下拉選單補充 */
.menu .items.right{left:auto;right:0}
.menu .items .mh{font-size:11px;color:var(--mute);padding:8px 12px 2px;border-top:1px solid var(--line2);margin-top:4px}
.menu .items .mh:first-child{border-top:0;margin-top:0}
.linkbtn{border:0;background:none;color:var(--brand);font:inherit;cursor:pointer;padding:0;text-decoration:underline}
/* 彈出視窗 */
dialog.modal{border:0;border-radius:14px;padding:0;max-width:calc(100vw - 24px);max-height:calc(100vh - 40px);box-shadow:0 20px 60px rgba(0,0,0,.25);color:var(--ink)}
dialog.modal::backdrop{background:rgba(27,36,48,.38)}
dialog.modal>form{display:flex;flex-direction:column;max-height:inherit}
.mhd{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line)}
.mhd h2{margin:0;font-size:18px}
.mhd .x{margin-left:auto;border:0;background:none;font-size:20px;color:var(--mute);cursor:pointer;text-decoration:none}
.mbd{padding:16px 20px;overflow:auto}
.mft{display:flex;gap:8px;align-items:center;padding:14px 20px;border-top:1px solid var(--line);background:#FAFBFC;flex-wrap:wrap}
dialog.drawer{margin:0 0 0 auto;height:100vh;max-height:100vh;width:440px;border-radius:0}
dialog.drawer>form{height:100%}
dialog.drawer .mbd{flex:1}
/* 可打字搜尋的選單 */
.picker{position:relative}
.picker-list{position:absolute;z-index:30;left:0;right:0;top:42px;max-height:280px;overflow:auto;background:#fff;border:1px solid var(--ctl);border-radius:10px;box-shadow:0 8px 24px rgba(27,36,48,.12);padding:4px}
.picker-list button{display:block;width:100%;text-align:left;border:0;background:none;padding:8px 10px;border-radius:6px;font:inherit;color:var(--ink);cursor:pointer}
.picker-list button:hover,.picker-list button.on{background:var(--brand-soft)}
.picker-msg{display:none}
.picker.bad input{border-color:#C2410C}
.picker.bad+.picker-msg{display:block;color:#C2410C}
/* 篩選 */
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--brand-soft);color:var(--brand-ink);border-radius:999px;padding:4px 10px;font-size:13px}
.chip b{font-weight:500}.chip .x{color:var(--mute);text-decoration:none}
.cond{border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:10px;display:grid;grid-template-columns:28px 170px minmax(0,1fr) 30px;gap:10px;align-items:start}
.cond .num{width:24px;height:24px;border-radius:50%;background:var(--brand);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;margin-top:24px}
.cond .lbl{font-size:12px;color:var(--mute);margin-bottom:6px}
.cond .del{border:0;background:none;color:var(--mute);font-size:17px;cursor:pointer;margin-top:24px}
.vals{display:flex;flex-wrap:wrap;gap:6px;max-height:190px;overflow:auto}
.vals .v{border:1px solid var(--ctl);border-radius:8px;padding:6px 10px;font-size:13px;background:#fff;cursor:pointer;font-family:inherit}
.vals .v.on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink)}
/* 欄位調整 */
.colrows{border:1px solid var(--line);border-radius:10px;max-height:52vh;overflow:auto}
.colrow{display:flex;align-items:center;gap:10px;padding:6px 10px;border-bottom:1px solid var(--line2)}
.colrow:last-child{border-bottom:0}
.colrow .mv{display:flex;gap:4px}.colrow .mv .btn{width:30px;padding:0}
/* 首頁 */
.sec{font-size:15px;font-weight:500;margin:18px 0 10px;display:flex;align-items:center;gap:8px}
.sec:first-of-type{margin-top:6px}
.tag{font-size:11px;background:var(--line2);color:var(--mute);border-radius:6px;padding:1px 6px;font-weight:400}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;font-size:12px}
.cal div{border:1px solid var(--line2);border-radius:6px;min-height:64px;padding:4px 6px}
.cal div.today{border-color:var(--brand);background:var(--brand-soft)}
.cal b{font-weight:500;color:var(--ink2)}
.todo{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.ti{background:#fff;border:1px solid var(--line);border-left:4px solid #D99A00;border-radius:10px;padding:12px 14px;display:flex;align-items:center;gap:12px}
.ti.red{border-left-color:#C2410C}.ti.done{border-left-color:var(--line);opacity:.6}
.ti .n{font-size:24px;font-weight:600;min-width:44px}.ti .d{flex:1;min-width:0}.ti .d b{display:block;font-weight:500}.ti .d span{font-size:12px;color:var(--mute)}
.stat{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.st{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px;color:var(--ink);text-decoration:none}
.st .l{font-size:13px;color:var(--mute)}.st .v{font-size:24px;font-weight:600}.st .s{font-size:12px;color:var(--mute)}
.st.muted{opacity:.6}
/* 分頁籤 */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:14px}
.tabs a{padding:9px 14px;color:var(--ink2);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs a.on{color:var(--brand-ink);border-bottom-color:var(--brand);font-weight:500}
/* 批次更改 */
.flow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:16px}
.step{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff}
.step.on{border-color:var(--brand);background:var(--brand-soft)}
.step .k{width:26px;height:26px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;margin-bottom:6px}
.step b{display:block;font-weight:500;margin-bottom:4px}.step span{font-size:12px;color:var(--mute)}
.sum{display:flex;gap:10px;margin:0 0 12px;flex-wrap:wrap}
.sum div{flex:1;min-width:200px;border-radius:8px;padding:10px 12px;font-size:13px}
.sum .ok{background:var(--brand-soft);color:var(--brand-ink)}.sum .warn{background:var(--warn-bg);color:var(--warn)}.sum .err{background:var(--err-bg);color:var(--err)}
td.old{color:#9AA3AE;text-decoration:line-through}td.new{color:var(--brand-ink);font-weight:500}td.clr{color:#C2410C;font-weight:500}
/* 帳號管理 */
.node{border:1px solid var(--line);border-radius:10px;background:#fff;margin-bottom:8px}
.node .node{margin:0 0 8px}
.nh{display:flex;align-items:center;gap:10px;padding:10px 14px;flex-wrap:wrap;cursor:pointer;list-style:none}
.nh::-webkit-details-marker{display:none}
details.node>.nh::before{content:"▸";color:var(--mute)}
details.node[open]>.nh::before{content:"▾"}
.nh .t{font-weight:500;font-size:15px}.nh .c{color:var(--mute);font-size:13px}
.nh .act{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.lv{font-size:11px;border-radius:6px;padding:1px 7px;background:var(--line2);color:var(--ink2)}
.in1{margin:0 12px 10px 24px}.in2{margin:0 12px 10px 24px}
.scroll{overflow-x:auto}
.users{width:100%;border-collapse:collapse;font-size:13px;margin:2px 0 6px}
.users th{color:var(--mute);font-weight:500;text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.users td{padding:7px 8px;border-bottom:1px solid var(--line2);white-space:nowrap}
.seg{display:flex;border:1px solid var(--ctl);border-radius:8px;overflow:hidden;margin-bottom:6px;flex-wrap:wrap}
.seg label{flex:1;text-align:center;padding:7px 6px;font-size:13px;cursor:pointer;white-space:nowrap}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg label:has(input:checked){background:var(--brand-soft);color:var(--brand-ink);font-weight:500}
.seg.small label{padding:5px 6px}
/* 已選清單 */
.selbar{display:flex;align-items:center;gap:8px;background:var(--brand);color:#fff;border-radius:10px;padding:8px 12px;margin-bottom:10px;flex-wrap:wrap}
.selbar[hidden]{display:none}
.selbar b{font-size:16px}.selbar .sub2{opacity:.85;font-size:13px}
.selbar .btn{height:32px;font-size:13px;padding:0 10px}
.hdrsel{position:relative}
.hdrsel .items{position:absolute;z-index:40;top:28px;left:0;background:#fff;border:1px solid var(--ctl);border-radius:10px;box-shadow:0 8px 24px rgba(27,36,48,.12);padding:6px;min-width:250px}
.hdrsel .items button{display:block;width:100%;text-align:left;border:0;background:none;padding:9px 12px;border-radius:6px;font:inherit;font-size:14px;color:var(--ink);cursor:pointer;font-weight:400}
.hdrsel .items button:hover{background:var(--bg)}
/* 常用篩選清單 */
.savedbox{border:1px solid var(--line);border-radius:10px;margin-bottom:12px;overflow:hidden}
.savedbox>summary{padding:10px 12px;cursor:pointer;font-weight:500;background:#FAFBFC;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.sv{display:flex;align-items:center;gap:10px;padding:8px 12px;border-top:1px solid var(--line2);flex-wrap:wrap}
.sv .svn{flex:1;min-width:160px}.sv .svn b{display:block;font-weight:500}.sv .svn .sub{font-size:12px}
.sv .svc{width:90px;font-size:13px}.sv .sva{font-size:13px}
.sv.foot{background:var(--brand-soft)}
.danger-t{color:#9B1C1C}
/* 行事曆 */
.calbar{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.calt{font-size:16px;min-width:130px;text-align:center}
.seg2{display:flex;border:1px solid var(--ctl);border-radius:8px;overflow:hidden}
.seg2 a{padding:6px 14px;color:var(--ink2);text-decoration:none;font-size:13px}
.seg2 a.on{background:var(--brand-soft);color:var(--brand-ink);font-weight:500}
.legend{margin-left:auto}
.legend i,.dots i{display:inline-block;width:7px;height:7px;border-radius:50%;margin:0 2px 0 6px}
.dots i{margin:0 1px}
i.dr{background:#C2410C}i.dg{background:#9AA3AE}i.db{background:#2563EB}
.mgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.mgrid .h{text-align:center;color:var(--mute);font-size:12px;padding:4px 0}
.mgrid button{background:#fff;border:1px solid var(--line2);border-radius:8px;height:56px;padding:3px 5px;color:var(--ink);font:inherit;display:flex;flex-direction:column;gap:3px;overflow:hidden;cursor:pointer;text-align:left}
.mgrid button:hover{border-color:#B8C0CC}
.mgrid button.o{opacity:.4}.mgrid button.today{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}.mgrid button.sel{background:var(--brand-soft)}
.mgrid .dn{font-size:13px;font-weight:500}
.mgrid .bar{display:block;height:12px;border-radius:3px;font-size:9px;line-height:12px;color:#fff;padding-left:4px}
.mgrid .bar.blue{background:#2563EB}
.calpop{position:absolute;z-index:60;width:280px;background:#fff;border:1px solid var(--ctl);border-radius:12px;box-shadow:0 12px 32px rgba(27,36,48,.18);padding:12px}
.cph{display:flex;align-items:center;margin-bottom:6px}.cph .x{margin-left:auto;border:0;background:none;font-size:16px;color:var(--mute);cursor:pointer}
.cps{font-size:12px;color:var(--mute);margin:8px 0 4px}
.cpi{border-left:3px solid #C2410C;padding:3px 8px;margin-bottom:4px;font-size:13px}.cpi.g{border-left-color:#9AA3AE}.cpi.b{border-left-color:#2563EB}
em.r,em.g,em.b{display:block;font-style:normal;font-size:11px;color:#fff;border-radius:4px;padding:1px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
em.r{background:#C2410C}em.g{background:#9AA3AE}em.b{background:#2563EB}
.wgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.wgrid a{background:#fff;border:1px solid var(--line2);border-radius:8px;padding:6px 0;text-align:center;color:var(--ink2);text-decoration:none;font-size:12px}
.wgrid a b{font-size:16px;color:var(--ink)}.wgrid a.today{border-color:var(--brand)}
.wgrid a.sel{background:var(--brand);color:#fff}.wgrid a.sel b{color:#fff}
.wgrid .dots{display:block;min-height:9px}
.sec2{font-size:14px;font-weight:500;margin:10px 0 6px;display:flex;align-items:center;gap:6px}
.sec2:first-child{margin-top:0}
.evt{display:block;background:#fff;border:1px solid var(--line);border-left:4px solid #C2410C;border-radius:10px;padding:8px 12px;margin-bottom:6px;color:var(--ink);text-decoration:none}
.evt.g{border-left-color:#9AA3AE}.evt.b{border-left-color:#2563EB}
.empty{color:var(--mute);font-size:13px;padding:8px 2px}
.cal a{border:1px solid var(--line2);border-radius:6px;min-height:64px;padding:4px 6px;color:var(--ink);text-decoration:none;display:flex;flex-direction:column;gap:2px}
.cal a.today{border-color:var(--brand);background:var(--brand-soft)}
.cal+.daylist{margin-top:12px;border-top:1px solid var(--line2);padding-top:10px}
/* 手機用的清單 */
.mlist{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.mlist a{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line2);color:var(--ink);text-decoration:none;font-size:15px}
.mlist a:last-child{border-bottom:0}.mlist.big a{padding:18px 16px;font-size:16px}
.show-m{display:none !important}
.cards .cc{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:8px;display:grid;grid-template-columns:28px minmax(0,1fr);gap:0 8px}
.cc.voided{opacity:.5}
.cc .ccb{grid-row:1 / span 2;padding-top:3px}.cc .ccb input{width:18px;height:18px}
.cc .ccm{color:var(--ink);text-decoration:none}
.cc .r1{display:flex;align-items:center;gap:6px}.cc .r1 b{font-size:16px;font-weight:600}.cc .r1 .pill{margin-left:auto}
.cc .r2{font-size:13px;color:var(--mute)}
.cc .r3{grid-column:2;display:flex;align-items:center;gap:8px;margin-top:8px;font-size:14px;flex-wrap:wrap}
.call{margin-left:auto;background:var(--brand);color:#fff !important;border-radius:8px;padding:6px 12px;font-size:13px;text-decoration:none;white-space:nowrap}
.ph2{display:flex;align-items:center;justify-content:space-between;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:6px;font-size:16px;color:var(--ink);text-decoration:none}
@media (max-width:760px){
  body.in{padding-bottom:72px}
  .show-m{display:block !important}
  .row.show-m,.mbar.show-m{display:flex !important}
  .hide-m{display:none !important}
  .top{display:none}
  .mtop{display:flex !important;align-items:center;gap:8px;background:#fff;border-bottom:1px solid var(--line);padding:10px 14px;position:sticky;top:0;z-index:25}
  .mtop b{font-size:17px}
  .scopebtn{margin-left:auto;border:1px solid var(--ctl);background:#fff;border-radius:999px;padding:5px 12px;font:inherit;font-size:13px;color:var(--ink2);max-width:60%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .bnav{display:grid !important;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);padding:6px 0 calc(8px + env(safe-area-inset-bottom));z-index:50}
  .bnav a{text-align:center;font-size:11px;color:var(--mute);text-decoration:none}
  .bnav a i{display:block;font-style:normal;font-size:20px;line-height:26px}
  .bnav a.on{color:var(--brand)}
  .bnav a.plus i{background:var(--brand);color:#fff;border-radius:50%;width:42px;height:42px;line-height:42px;margin:-8px auto 0;font-size:22px}
  .main>.row:first-child h1{display:none}
  .main>.row:first-child .sub{font-size:12px}
  .searchrow{flex-wrap:nowrap}
  .searchrow #lq{flex:1;min-width:0;height:44px;font-size:16px}
  .searchrow .btn{height:44px}
  .toolbar .btn,.toolbar summary.btn{height:36px;font-size:13px;padding:0 10px}
  .selbar .sub2{display:none}
  dialog.modal.full-m{width:100vw !important;max-width:100vw;height:100vh;max-height:100vh;margin:0;border-radius:0}
  dialog.modal.full-m .mbd{flex:1}
  dialog.modal:not(.full-m){width:calc(100vw - 20px) !important}
  .mgrid button{height:46px;padding:2px}
  .mgrid .dn{text-align:center}
  .mgrid .bar{font-size:0;height:6px}
  .calpop{position:fixed;left:0 !important;right:0;bottom:64px;top:auto !important;width:auto;border-radius:16px 16px 0 0;max-height:60vh;overflow:auto}
  .calt{min-width:0;flex:1}
  .legend{margin-left:0;width:100%}
  .cal.hide-m+.daylist{margin-top:0;border-top:0;padding-top:0}
  .todo .ti.more{display:none}.todo.all .ti.more{display:flex}
  body.has-mview .mform{display:none}
  body.has-mview.editing .mform{display:block}
  body.has-mview.editing .mview{display:none !important}
  .mbar{display:flex;position:fixed;left:0;right:0;bottom:64px;background:#fff;border-top:1px solid var(--line);padding:10px 12px;gap:8px;z-index:45}
  .mbar .btn{flex:1;height:46px}
  .mview{padding-bottom:0}
  input.ctl,select.ctl,textarea.ctl{font-size:16px}
}
@media (max-width:900px){
  .todo,.stat{grid-template-columns:1fr 1fr}
  .flow{grid-template-columns:1fr}
  .cond{grid-template-columns:1fr;position:relative}
  .cond .num,.cond .del{margin-top:0}
  .cond .del{position:absolute;right:8px;top:8px}
  .cal{overflow-x:auto;grid-template-columns:repeat(7,90px)}
  dialog.drawer{width:100vw}
  .in1,.in2{margin:0 8px 8px 8px}
  .shell{display:block}
  .side{display:none;width:auto;border-right:0;border-bottom:1px solid var(--line)}
  .side.open{display:block}
  .top .panel-toggle{display:inline-flex}
  .top form.search select{display:none}
  .top .logo{height:26px}
  .top .logo{margin:0 6px}
  .top .me{margin-left:0}
  .main{padding:14px}
  .grid2,.grid3{grid-template-columns:1fr}
  .top form.search .ctl{flex:1;min-width:0}
}
[hidden]{display:none !important}
@media (max-width:760px){
  .todo,.stat{grid-template-columns:1fr}
  .stat{grid-template-columns:1fr 1fr}
  .calbar .seg2 a{padding:6px 10px}
}

/* 本月總結、匯入預覽 */
.sumbar{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:12px}
.sumbar .k{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;text-decoration:none;color:var(--ink)}
.sumbar .k .l{font-size:12px;color:var(--mute)}.sumbar .k .v{font-size:20px;font-weight:600}.sumbar .k .s{font-size:12px;color:var(--mute)}
.sumbar .k.click{border-color:var(--brand)}.sumbar .k.red .v{color:#C2410C}
.daylist-wrap{margin-top:12px;border-top:1px solid var(--line2);padding-top:10px}
.pv{background:#fff;border:1px solid var(--line);border-radius:14px;max-width:1200px}
.pvk{display:flex;gap:10px;flex-wrap:wrap}
.pvk .k{flex:1;min-width:160px;border-radius:10px;padding:10px 14px;font:inherit;font-size:13px;text-align:left;cursor:pointer;border:2px solid transparent;background:var(--bg);color:var(--ink)}
.pvk .k b{display:block;font-size:22px}.pvk .k span{font-size:12px;opacity:.85}
.pvk .k.on{border-color:var(--brand)}
.pvk .okk{background:var(--brand-soft);color:var(--brand-ink)}.pvk .warnk{background:#FFF7D6;color:#7A4B00}.pvk .errk{background:var(--err-bg);color:var(--err)}
.pvbox{border:1px solid var(--line);border-radius:10px;max-height:58vh;overflow:auto}
.pvt{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.pvt th{position:sticky;top:0;background:#FAFBFC;text-align:left;color:var(--mute);font-weight:500;padding:8px;border-bottom:1px solid var(--line);z-index:1}
.pvt td{padding:7px 8px;border-bottom:1px solid var(--line2);white-space:nowrap}
.pvt tr.warn td{background:#FFF7D6}.pvt tr.err td{background:#FDECE7}
.pvt td.bad{box-shadow:inset 0 0 0 2px #D99A00;font-weight:500}.pvt tr.err td.bad{box-shadow:inset 0 0 0 2px #C2410C}
.pvt td.why{white-space:normal;min-width:200px}
@media (max-width:760px){
  .sumbar{grid-template-columns:1fr 1fr}
  .pvbox{max-height:none}
  .pvk .k{min-width:calc(50% - 5px)}
}

/* 電訪 */
.ph-invalid{background:#C2410C !important;color:#fff !important;border-color:#C2410C !important}
.ph-suspect{background:#FFF1C2 !important}
.ph-check{background:#FFF7D6 !important}
span.phv{display:inline-block;border-radius:6px;padding:1px 6px}
.ph2.ph-invalid .pill,.ph2.ph-invalid .sub{background:rgba(255,255,255,.2);color:#fff}
.pill.res-connected{background:var(--brand-soft);color:var(--brand-ink)}
.pill.res-empty,.pill.res-suspended,.pill.res-wrong,.pill.res-connected_wrong,.pill.res-paused{background:var(--err-bg);color:var(--err)}
.pill.res-nonmainland{background:var(--info-bg);color:var(--info)}
.ctext{font-size:13px;color:var(--ink2);margin-top:6px;white-space:pre-wrap;line-height:1.55}
.ctags{margin-top:6px;display:flex;gap:4px;flex-wrap:wrap}
.cgroup{border:1px solid var(--line2);border-radius:10px;padding:10px 12px;margin-bottom:10px}
.cgh{margin-bottom:6px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.cline{padding:6px 0;border-top:1px solid var(--line2)}
.cgh+.cline{border-top:0}
td.wrap{white-space:normal;max-width:420px}
.vals label.v{display:inline-flex;align-items:center;gap:4px}
.exopts label{display:flex;align-items:center;gap:6px;padding:6px 0}
.callfilter .row{gap:8px}
.cards .callc{display:block}

/* 電訪第二版 */
.pickrow{display:flex;align-items:center;gap:8px;padding:10px 4px;border-bottom:1px solid var(--line2);color:var(--ink);text-decoration:none}
.callsum{background:var(--bg);border-radius:8px;padding:8px 12px;margin-bottom:10px;font-size:14px}
.fubox{border:1px solid var(--line);border-left:4px solid #D99A00;border-radius:10px;padding:10px 12px;margin-bottom:10px}
.fubox.due{border-left-color:#C2410C;background:#FFF7F3}.fubox.none{border-left-color:var(--line)}
.fuedit>summary{cursor:pointer;margin-top:4px}
.phstat{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px;margin-bottom:10px}
.phs{border:1px solid var(--line2);border-radius:10px;padding:8px 10px}
.timeline{border-left:2px solid var(--line);margin-left:6px;padding-left:12px}
.tl{position:relative;padding:6px 0}
.tl::before{content:"";position:absolute;left:-18px;top:12px;width:10px;height:10px;border-radius:50%;background:#CBD5E1}
.tl.conn::before{background:var(--brand)}
.tld{font-size:12px;color:var(--mute)}
.chart{display:flex;align-items:flex-end;gap:3px;height:170px;padding-top:10px}
.chart .b{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;position:relative;height:100%;text-decoration:none}
.chart .b i{display:block;width:70%;background:#CBD5E1;border-radius:3px 3px 0 0;margin-bottom:16px}
.chart .b i.c{position:absolute;bottom:0;background:var(--brand)}
.chart .b span{position:absolute;bottom:0;font-size:10px;color:var(--mute)}
.chart .dot{position:absolute;width:7px;height:7px;border-radius:50%;left:calc(50% - 3px)}
.chart .dot.inv{background:#2563EB}.chart .dot.add{background:#EA8A00}
.rr{display:grid;grid-template-columns:130px 1fr 60px 50px;gap:8px;align-items:center;font-size:13px;padding:4px 0;color:var(--ink);text-decoration:none}
.rb{background:var(--line2);border-radius:4px;height:12px}.rb i{display:block;height:12px;border-radius:4px;background:#9AA3AE}
.rb i.res-connected{background:var(--brand)}.rb i.res-empty,.rb i.res-suspended,.rb i.res-wrong,.rb i.res-paused,.rb i.res-connected_wrong{background:#C2410C}.rb i.res-nonmainland{background:#2563EB}
.rn{text-align:right}
tr.muted td{color:var(--mute)}
@media (max-width:760px){ .rr{grid-template-columns:100px 1fr 44px 44px} }

.sumbar.s4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g2s{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:12px}
@media (max-width:760px){ .sumbar.s4{grid-template-columns:1fr 1fr} .g2s{grid-template-columns:1fr} .chart{height:150px} }

.lg{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--mute);margin-right:10px}.lg i{width:10px;height:10px;border-radius:2px;display:inline-block}
.ch2{display:flex;align-items:flex-end;gap:6px;height:200px;padding-top:6px;overflow-x:auto}
.b2{flex:1;min-width:30px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;text-decoration:none;color:var(--ink)}
.b2 .tot{font-size:11px;color:var(--mute)}
.b2 .stk{width:72%;display:flex;flex-direction:column;border-radius:4px 4px 0 0;overflow:hidden}
.b2 .stk i{display:flex;align-items:flex-end;justify-content:center;font-style:normal;font-size:10px;color:#fff}
.b2 .nc{background:#CBD5E1}.b2 .cc{background:var(--brand)}
.b2 .d{font-size:11px;color:var(--mute);margin-top:3px;white-space:nowrap}
.b2 .pair{display:flex;gap:2px;align-items:flex-end;height:140px;width:80%}
.b2 .col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}
.b2 .col em{font-style:normal;font-size:10px;color:var(--mute)}
.b2 .col i{display:block;width:100%;border-radius:3px 3px 0 0}
.b2 .inv{background:#2563EB}.b2 .add{background:#EA8A00}.b2 .na{background:repeating-linear-gradient(45deg,#FED7AA 0 4px,#fff 4px 8px)}

th.rh{font-size:11px;white-space:normal;min-width:44px;max-width:70px;line-height:1.3}
td.z{color:#C3CAD3}
/* 貨幣:負數紅字 */
.neg, input.neg { color: #DC2626 !important; }
td .num, .num { font-variant-numeric: tabular-nums; }
/* 微信狀態 */
.wclist { display: grid; gap: 6px; }
.wci { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 6px 10px; background: var(--bg); border-radius: 8px; }
.pill.wc-invited { background: #FEF3C7; color: #92400E; }
.pill.wc-added { background: #DCFCE7; color: #166534; }
.pill.wc-deleted { background: #F3F4F6; color: #6B7280; text-decoration: line-through; }
.seg3 { display: flex; gap: 0; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; width: max-content; max-width: 100%; }
.seg3 label { display: block; cursor: pointer; }
.seg3 input { position: absolute; opacity: 0; pointer-events: none; }
.seg3 span { display: block; padding: 8px 14px; border-right: 1px solid var(--line); }
.seg3 label:last-child span { border-right: 0; }
.seg3 input:checked + span { background: var(--brand); color: #fff; }
.seg3 input:focus-visible + span { outline: 2px solid #1D4ED8; outline-offset: -2px; }
/* 來訪列表(客戶頁) */
.vrow { display: block; padding: 10px 12px; border: 1px solid var(--line2, #E5E7EB); border-left: 4px solid #9AA3AE; border-radius: 8px; margin-bottom: 8px; color: inherit; text-decoration: none; }
.vrow:hover { background: var(--bg); }
.vrow.st-open { border-left-color: #C2410C; }
.vrow.st-done { border-left-color: #DC2626; }
.vrow .r1 { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.vrow .r2 { margin-top: 3px; font-size: 13px; }
/* 來訪表單 */
.vcust { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 10px 14px; margin-bottom: 12px; color: inherit; text-decoration: none; }
.vcust:hover { border-color: var(--brand); }
.grid2.tight { gap: 0 12px; }
.req { color: #DC2626; }
.items { display: grid; gap: 6px; margin-bottom: 6px; }
.irow { display: flex; gap: 6px; align-items: center; }
.irow .grow { flex: 1; min-width: 0; }
.irow input[type=date] { width: 150px; }
.irow .evsel { width: 220px; }
.irow .tk { width: 74px; }
.ibtn { display: flex; gap: 2px; }
.chipsrow { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.chipbtn { border: 1px solid var(--line); background: var(--bg); border-radius: 999px; padding: 4px 12px; font: inherit; font-size: 13px; cursor: pointer; }
.chipbtn:hover { border-color: var(--brand); color: var(--brand); }
.archbox { display: flex; gap: 12px; align-items: center; padding: 14px 16px; border-radius: 10px; border: 2px solid #DC2626; background: #FEF2F2; cursor: pointer; margin-bottom: 14px; }
.archbox input { width: 24px; height: 24px; accent-color: #6B7280; flex: none; }
.archbox b { display: block; font-size: 17px; color: #B91C1C; }
.archbox.on { border-color: #D1D5DB; background: #F3F4F6; }
.archbox.on b { color: #4B5563; }
.vsave { margin-bottom: 8px; }
@media (max-width: 760px) {
  .irow { flex-wrap: wrap; background: var(--bg); padding: 8px; border-radius: 8px; }
  .irow input[type=date], .irow .evsel { width: 100%; }
  .irow .grow { flex: 1 1 100%; }
  .irow .tk { width: 90px; }
  .ibtn { margin-left: auto; }
  .vsave { position: sticky; bottom: 64px; background: var(--bg); padding: 8px 0; z-index: 5; }
  .vsave .btn.primary { flex: 1; height: 46px; }
}
.sumbar.small { grid-template-columns: repeat(4, minmax(0, 1fr)); }
th.r, td.r { text-align: right; }
.vcard { border-left: 4px solid #9AA3AE; }
.vcard.st-open { border-left-color: #C2410C; }
.vcard.st-done { border-left-color: #DC2626; }
@media (max-width: 760px) { .sumbar.small { grid-template-columns: 1fr 1fr; } }
.cards .vcard{display:block;color:inherit;text-decoration:none}
.cards .vcard .r1{display:flex;justify-content:space-between;gap:8px;align-items:center}
.cards .vcard .r2{font-size:13px;color:var(--mute);margin-top:3px}
.mlbox { max-height: 520px; overflow: auto; border: 1px solid var(--line2); border-radius: 8px; }
.mlbox table.t thead th { position: sticky; top: 0; background: #fff; z-index: 1; }
/* v9 */
th.sortable a { color: inherit; text-decoration: none; display: inline-flex; gap: 2px; white-space: nowrap; }
th.sortable a:hover { color: var(--brand); }
th.sortable.on a { color: var(--brand); }
th.sortable .ar { font-size: 10px; }
.btag { display: inline-block; background: #FCE7F3; color: #9D174D; border-radius: 6px; padding: 1px 8px; font-size: 12px; white-space: nowrap; user-select: none; }
.notebox { display: flex; flex-direction: column; gap: 6px; }
.notebox .btag { align-self: flex-start; font-size: 13px; padding: 3px 10px; }
.selbar2 { display: flex; gap: 8px; align-items: center; background: var(--info-bg); color: var(--info); border-radius: 8px; padding: 6px 12px; margin-bottom: 8px; }
.selbar2[hidden] { display: none !important; }
.vtabs { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; }
.vtabs .tabnote { margin-left: 8px; }
.irow .evses { width: 170px; }
@media (max-width: 760px) { .irow .evses { width: 100%; } .vtabs .tabnote { margin: 4px 0 0; flex-basis: 100%; } }
th.wide{min-width:280px}
.vistree { border: 1px solid var(--line); border-radius: 8px; padding: 6px 10px; margin-top: 6px; max-height: 360px; overflow: auto; }
.vistree details.vt { padding: 2px 0 2px 4px; }
.vistree details.vt details.vt { margin-left: 22px; }
.vistree summary { cursor: pointer; padding: 4px 0; }
.vistree summary input, .vags input { width: 17px; height: 17px; vertical-align: -3px; }
.vags { display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 2px 0 6px 44px; }
.mgal { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px; margin-bottom: 10px; }
.mgal figure { margin: 0; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; background: #fff; }
.mgal img { width: 100%; height: 220px; object-fit: cover; display: block; background: var(--bg); }
.mgal figcaption { padding: 6px 8px; font-size: 13px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.mvid { border: 1px solid var(--line); border-radius: 8px; padding: 8px; margin-bottom: 8px; }
.mvid video { width: 100%; max-height: 420px; background: #000; border-radius: 6px; margin-bottom: 6px; }
.linkbtn { border: 0; background: none; color: var(--err); cursor: pointer; padding: 0; font: inherit; font-size: 13px; text-decoration: underline; }
.irow.ses input[type=time] { width: 130px; }
.irow.ses .swd { min-width: 56px; }
.actc .post { width: 56px; height: 72px; object-fit: cover; border-radius: 6px; float: right; margin-left: 8px; }
.thumb{width:44px;height:56px;object-fit:cover;border-radius:4px;display:block}
.remrow { display: flex; gap: 10px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--line2); flex-wrap: wrap; }
.remrow.late b { color: #C2410C; }
.bdset summary { cursor: pointer; }
tr.bdtoday td { background: #FFF1F2; }
.pill.ok { background: #DCFCE7; color: #166534; text-decoration: none; }
th.sortable:not(.on) .ar::after{content:' ⇅';opacity:.35}
.irow.ev { flex-wrap: wrap; background: var(--bg); padding: 6px; border-radius: 8px; }
.irow.ev .evsel { flex: 1 1 240px; width: auto; }
.irow.ev .evses { flex: 0 1 180px; width: auto; }
.irow.ev .evses[hidden] { display: none; }
.irow.ev .grow { flex: 1 1 200px; }
.tpick{display:inline-flex;align-items:center;gap:2px}.tpick .tsel{width:68px;padding-left:6px;padding-right:2px}
.btn.ghost{background:transparent;color:var(--mute)}
.clbox .exopts input[type=number] { width: 64px; height: 30px; }
.exopts .mh2 { font-weight: 600; margin: 10px 0 2px; font-size: 13px; color: var(--ink2); }
.b2 .ptv{font-size:11px;color:var(--brand);font-weight:600;margin-top:2px}
.dailybox { max-height: 430px; overflow: auto; border: 1px solid var(--line2); border-radius: 8px; margin-top: 8px; }
.dailybox table.t thead th, .dailybox table.t tfoot th { position: sticky; background: #fff; z-index: 1; }
.dailybox table.t thead th { top: 0; }
.dailybox table.t tfoot th { bottom: 0; border-top: 1px solid var(--line); }
.dailybox tr.zero td { color: var(--mute); }
#trChart { margin-top: 6px; }
.listfold { margin-top: 12px; }
.listfold > summary { cursor: pointer; list-style: none; display: flex; gap: 8px; align-items: center; }
.listfold > summary::-webkit-details-marker { display: none; }
.listfold > summary::before { content: '▸'; color: var(--mute); transition: transform .15s; }
.listfold[open] > summary::before { transform: rotate(90deg); }
.listfold .fold-hint { margin-left: auto; }
table.t th.r, table.t td.r, table.users th.r, table.users td.r { text-align: right; }
.dailybox td.wk { color: #C2410C; }
.dailybox a.dlink { color: inherit; text-decoration: none; border-bottom: 1px dashed var(--mute); }
.dailybox a.dlink:hover { color: var(--brand); border-bottom-color: var(--brand); }
.dailybox tr.zero td { color: #9AA3AE; }
.bkgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px 18px; }
.bkgrid > div { display: grid; gap: 2px; }
.bkcode { display: inline-block; background: var(--line2); padding: 4px 8px; border-radius: 6px; word-break: break-all; font-size: 12px; }
details.card > summary { cursor: pointer; }
span.wcv { margin: 1px 0; white-space: nowrap; font-size: 13px; padding: 1px 8px; }
span.wcv.wc-invited { background: #FFF1C2; color: #7A5200; }
span.wcv.wc-added { background: #DCF5E3; color: #166534; }
span.wcv.wc-deleted { background: #EEF0F3; color: #6B7280; text-decoration: line-through; }
span.wcv[data-tip] { cursor: pointer; }
.wcrow { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.wctip { display: inline-block; margin-left: 6px; font-size: 12px; background: var(--ink, #1B2430); color: #fff; border-radius: 6px; padding: 2px 8px; white-space: nowrap; }
table.rank tr.rkrow { cursor: pointer; }
table.rank tr.rkrow:hover td { background: var(--bg); }
table.rank tr.rkrow.open td { background: var(--brand-soft); }
table.rank tr.rktop > td { background: #FAFBFC; padding: 8px 12px 12px; }
a.sortlink { color: inherit; text-decoration: none; }
a.sortlink.on { color: var(--brand-ink); font-weight: 600; }
#tierSet[hidden] { display: none !important; }
/* ---- 手機版調整(v31) ---- */
.nowrap { white-space: nowrap; }
.mebtn { display: none; }
@media (max-width:760px){
  .bnav { grid-template-columns: repeat(6, 1fr) !important; }
  .mebtn { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border: 1px solid var(--ctl); border-radius: 50%; text-decoration: none; color: var(--ink2); font-size: 18px; flex: 0 0 auto; }
  .mebtn.on { color: var(--brand); border-color: var(--brand); }
  .scopebtn { max-width: 52%; }
  .sec { flex-wrap: nowrap; white-space: nowrap; }
  .msearch { display: flex !important; gap: 6px; margin-bottom: 12px; flex-wrap: nowrap; }
  .msearch select { width: 74px; flex: 0 0 74px; height: 44px; }
  .msearch input { flex: 1; min-width: 0; height: 44px; }
  .msearch .btn { height: 44px; }
}
.tree a.pick { display: none; }
@media (max-width:760px){
  .tree summary a { padding: 10px 8px; }
  .tree a.pick { display: inline-block; flex: 0 0 auto; font-size: 12px; padding: 4px 10px; border: 1px solid var(--ctl); border-radius: 999px; color: var(--brand-ink); margin-left: 6px; }
  .tree li > a { padding: 10px 8px; }
}
@media (max-width:760px){
  .calbar.full { display: grid; grid-template-columns: 44px 1fr 44px; grid-template-areas: "seg seg today" "prev title next" "leg leg leg"; gap: 8px; align-items: center; }
  .calbar.full .cseg { grid-area: seg; justify-self: start; }
  .calbar.full .ctoday { grid-area: today; justify-self: end; white-space: nowrap; width: auto; }
  .calbar.full .cprev { grid-area: prev; justify-content: center; }
  .calbar.full .cnext { grid-area: next; justify-content: center; }
  .calbar.full .calt { grid-area: title; white-space: nowrap; font-size: 17px; }
  .calbar.full .legend { grid-area: leg; }
}
@media (max-width:760px){
  .listfold > summary { flex-wrap: nowrap; white-space: nowrap; }
  .listfold > summary .fold-hint { display: none; }
  .lfrow { display: grid !important; grid-template-columns: 1fr 1fr; gap: 8px; }
  .lfrow select.ctl { width: 100%; min-width: 0; height: 42px; font-size: 14px; }
  .lfrow .lfsp { display: none; }
  .lfrow #lfCount { grid-column: 1 / -1; }
  .lfrow #lfCount:empty { display: none; }
  .lfrow > .btn, .lfrow .lfexp .btn { width: 100%; height: 42px; justify-content: center; font-size: 14px; }
  .lfrow .lfexp { margin: 0; }
}
.cc .r1 b.cno, .cards .cno { font-size: 18px; font-weight: 700; letter-spacing: .3px; }
@media (max-width:760px){
  body.in.has-mview { padding-bottom: 136px; }
}
.cc .one { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.cc .halves { display: flex; gap: 10px; min-width: 0; }
.cc .halves > .one { flex: 1 1 0; }
.cc .r1, .cc .r2, .cc .ccm { min-width: 0; }
.g2s > .card, .card { min-width: 0; }
.scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
@media (max-width:760px){
  .tiertabs { flex-direction: column; border-bottom: 0; gap: 6px; }
  .tiertabs a { display: flex; align-items: center; justify-content: space-between; border: 1px solid var(--line); border-radius: 10px; background: #fff; padding: 12px 14px; margin: 0; }
  .tiertabs a.on { border-color: var(--brand); background: var(--brand-soft); border-bottom-width: 1px; }
  #trSeg { display: grid; grid-template-columns: repeat(3, 1fr); width: 100%; margin-top: 6px; }
  #trSeg a { text-align: center; padding: 8px 4px; white-space: nowrap; border-top: 1px solid var(--line2); }
  .rgbar .seg2 { display: grid; grid-template-columns: repeat(4, 1fr); width: 100%; }
  .rgbar .seg2 a { text-align: center; padding: 8px 2px; white-space: nowrap; }
  .card .scroll, .card .tablebox { max-width: 100%; }
}
table.users.ctr th:not(:first-child), table.users.ctr td:not(:first-child) { text-align: center; }
@media (max-width:760px){ .g2s { grid-template-columns: minmax(0, 1fr) !important; } }
input.ctl.bad { border-color: #C2410C; background: #FFF4EF; }
.archbox.roombox { border-color: #F59E0B; background: #FFFBEB; }
.archbox.roombox b { color: #B45309; }
.archbox.roombox.on { border-color: #16A34A; background: #F0FDF4; }
.archbox.roombox.on b { color: #166534; }
.archbox.roombox input { accent-color: #16A34A; }
/* 行事曆取房燈號 */
i.dgn { background: #16A34A; }
.evt.vrow { display: flex; align-items: center; gap: 10px; padding: 8px 10px 8px 12px; }
.evt.vrow .evl { flex: 1; min-width: 0; color: var(--ink); text-decoration: none; }
.evt.vrow .one { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.evt.vrow .halves { display: flex; gap: 10px; min-width: 0; }
.evt.vrow .halves > .one { flex: 1 1 0; min-width: 0; }
.roombtn { flex: 0 0 auto; border: 1px solid #F0B7AE; background: #FFF4EF; color: #B42318; border-radius: 999px; padding: 6px 12px; font: inherit; font-size: 13px; cursor: pointer; white-space: nowrap; }
.room-taken .roombtn { border-color: #A7E3BB; background: #DCF5E3; color: #166534; font-weight: 600; }
.roombtn.ro { cursor: default; }
/* 待處理設定:每一列 = 勾選 + 名稱,下一行是說明或數字 */
.colrow .tsm { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.colrow .tst { display: flex; align-items: center; gap: 8px; font-weight: 500; }
.colrow .tst input { flex: 0 0 auto; }
.colrow .tsn { padding-left: 26px; }
.colrow .tsp { display: flex; align-items: center; gap: 6px; }
.colrow .tsp input { width: 70px; height: 30px; }
@media (max-width:760px){
  .msearch .modebtn { flex: 0 0 52px; height: 44px; padding: 0; justify-content: center; font-size: 13px; }
  .msearch .modebtn.on { border-color: var(--brand); color: var(--brand-ink); background: var(--brand-soft); }
  .msearch select { width: 78px; flex-basis: 78px; padding-right: 22px; }
}
.cc .r1 .btag { margin-left: 4px; }
@media (max-width:760px){
  .bnav a.circ i { width: 42px; height: 42px; line-height: 40px; margin: -8px auto 0; border-radius: 50%; font-size: 20px; box-sizing: border-box; }
  .bnav a.circ.home i { background: #fff; color: var(--brand); border: 2px solid var(--brand); }
  .bnav a.circ.home.on i { background: var(--brand-soft); }
  .bnav a.plus i { background: var(--brand); color: #fff; border: 2px solid var(--brand); }
}
@media (max-width:760px){ .shell { min-height: 0 !important; } }

/* 取房:今天未取房 = 紅,其他日子未取房 = 無顏色,已取房 = 綠 */
.room-later .roombtn { border-color: var(--ctl); background: #fff; color: var(--ink2); }
.rtag { display: inline-block; font-size: 12px; border-radius: 999px; padding: 0 8px; margin-left: 4px; border: 1px solid var(--ctl); color: var(--ink2); background: #fff; }
.rtag.room-waiting { border-color: #F0B7AE; background: #FFF4EF; color: #B42318; }
.rtag.room-taken { border-color: #A7E3BB; background: #DCF5E3; color: #166534; font-weight: 600; }
.bnav a { -webkit-tap-highlight-color: transparent; }
@media (max-width:760px){
  .bnav a.circ { background: none !important; }
  .bnav a.circ:focus, .bnav a.circ:active { outline: none; background: none; }
  .msearch { gap: 5px; }
  .msearch select { width: 62px !important; flex: 0 0 62px !important; font-size: 13px !important; padding: 0 16px 0 8px !important; }
  .msearch .modebtn { flex: 0 0 44px !important; font-size: 12px !important; }
  .msearch input { font-size: 14px !important; padding: 0 8px; }
  .msearch input::placeholder { font-size: 13px; }
  .msearch .btn.primary { padding: 0 12px; font-size: 14px; }
  .lfrow > .btn, .lfrow .lfexp .btn { justify-content: flex-start !important; padding: 0 10px !important; text-align: left; }
  .lfrow > .btn, .lfrow .lfexp, .lfrow .lfexp .btn { height: 42px; width: 100%; margin: 0; }
  .lfrow .lfexp { display: block; }
}
@media (max-width:760px){
  .msearch select { -webkit-appearance: none; appearance: none; width: 58px !important; flex: 0 0 58px !important; padding: 0 16px 0 8px !important;
    background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%236B7280' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 6px center; }
}

/* v39 手機排序按鈕 */
.msort { display: none; }
@media (max-width:760px){
  .msort.show-m { display: inline-flex !important; align-items: center; gap: 4px; border: 1px solid var(--ctl); border-radius: 18px; padding: 0 4px 0 10px; height: 34px; background: #fff; margin: 0 0 8px; font-size: 13px; color: var(--ink); }
  .msort select { border: 0; background: transparent; font-size: 13px; height: 32px; color: var(--ink); max-width: 170px; padding: 0 2px; }
}

/* v39 其他卡號、特別標籤 */
.tagrow { display: flex; flex-wrap: wrap; gap: 6px; }
.tagc { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; line-height: 1; padding: 5px 10px; border-radius: 14px; white-space: nowrap; }
.tagc.pub { background: #E5E7EB; color: #374151; border: 1px solid #E5E7EB; }
.tagc.mine { background: #fff; color: #374151; border: 1px dashed #9CA3AF; }
.tagc small { color: #6B7280; font-size: 11px; }
.tagpick .tagc { cursor: pointer; opacity: .55; }
.tagpick .tagc input { display: none; }
.tagpick .tagc.on { opacity: 1; box-shadow: 0 0 0 2px var(--brand, #0F766E); }
.tagpick .tagc.on::before { content: '✓'; font-weight: 700; color: var(--brand, #0F766E); }
.occ { display: flex; flex-wrap: wrap; gap: 6px; }
.ocv { font-size: 13px; background: #F3F4F6; border-radius: 8px; padding: 4px 8px; }
.ocv b { font-weight: 600; color: #374151; }
td.c, th.c { text-align: center; }
/* v39 行事曆來訪清單:存檔狀態按鈕 */
.lfst .seg { margin: 0; flex-wrap: nowrap; }
.lfst .seg button { border: 0; background: #fff; padding: 0 14px; height: 32px; font-size: 13px; color: var(--ink2); cursor: pointer; font-family: inherit; }
.lfst .seg button + button { border-left: 1px solid var(--ctl); }
.lfst .seg button.on { background: var(--brand); color: #fff; }
#calVT th.sortable a { color: inherit; text-decoration: none; }

/* v39 搜尋列 */
.sdot { flex: 0 0 auto; width: 30px; height: 34px; border: 1px solid var(--ctl); border-radius: 8px; background: #fff; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; }
.sdot i { width: 12px; height: 12px; border-radius: 50%; background: #C4C9D1; display: block; box-shadow: inset 0 0 0 2px rgba(255,255,255,.6); }
.sdot.on i { background: #16A34A; }
.top .search select[name=qf] { max-width: 120px; }
.stoast { position: fixed; left: 50%; bottom: 150px; transform: translateX(-50%); background: rgba(17,24,39,.9); color: #fff; padding: 8px 14px; border-radius: 18px; font-size: 13px; z-index: 300; }
.msearch { position: relative; }
.msearch .spick { flex: 0 0 auto !important; width: auto !important; max-width: 110px; padding: 0 8px !important; font-size: 12px !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: left; background: #fff; }
.msearch .sdot { height: 38px; width: 28px; }
.spop { position: absolute; left: 0; top: 44px; z-index: 60; background: #fff; border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 8px 24px rgba(0,0,0,.12); display: flex; gap: 0; width: min(330px, calc(100vw - 32px)); max-height: 60vh; }
.spop[hidden] { display: none; }
.spc { display: flex; flex-direction: column; overflow: auto; padding: 6px; }
.spc:first-child { flex: 0 0 84px; border-right: 1px solid var(--line2); }
.spc:last-child { flex: 1; }
.sph { font-size: 11px; color: var(--mute); padding: 4px 6px; }
.spc button { border: 0; background: none; text-align: left; padding: 8px 8px; font-size: 14px; border-radius: 8px; font-family: inherit; color: var(--ink); cursor: pointer; }
.spc button.on { background: var(--brand-soft); color: var(--brand-ink); font-weight: 600; }
@media (max-width:760px){
  .msearch .sdot { height: 44px; width: 30px; }
  .msearch .spick { height: 44px; max-width: 104px; }
  .msearch input { padding: 0 10px !important; }
}

/* v40 其他卡號:企業名稱固定寬度,卡號對齊 */
.ocl { display: flex; gap: 8px; white-space: nowrap; line-height: 1.6; }
.ocl b { font-weight: 600; color: #374151; flex: 0 0 56px; }
.ocl span { font-variant-numeric: tabular-nums; }
.occ { display: block; background: #fff; border: 1px solid var(--line); border-radius: 10px; padding: 8px 12px; }

/* 加到手機桌面當 App 用(沒有網址列)時,左上角多一個「上一頁」 */
.appback{display:none;border:0;background:none;font-size:30px;line-height:1;padding:0 6px 4px 0;color:var(--ink,#1f2937);cursor:pointer}
@media (display-mode: standalone){.appback{display:inline-block}}
.appinst .ai-btn{width:100%;height:44px}
.appinst .ai-ios{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;line-height:1.7}
.appinst .ai-share{display:inline-block;border:1px solid var(--line);border-radius:6px;padding:0 5px;margin:0 2px}
/* 首頁行事曆月份旁的來訪統計 */
.calstat{margin-left:auto;font-size:14px;color:var(--muted,#6b7280)}
.calstat b{color:var(--ink,#1f2937);font-weight:600}
.calstat b.ok{color:#0f766e}.calstat b.no{color:#c2410c}
@media (max-width:760px){.calbar{flex-wrap:wrap}.calstat{margin-left:0;width:100%;font-size:13px}}
.calstat a{color:inherit;text-decoration:none;border-radius:6px;padding:2px 4px}.calstat a:hover{background:#eef6f5;text-decoration:underline}
/* 客戶頁來訪、電訪只先顯示幾筆 */
.lim>.more{display:none}
.showall{width:100%;margin-top:8px}
#dlgAllList .allbody{overflow:auto;max-height:calc(100vh - 140px);padding:14px 18px}
@media (max-width:760px){#dlgAllList .allbody{max-height:none;height:calc(100vh - 62px)}}
