:root{--bg:#f6f4ef;--card:#fff;--ink:#1f2a33;--muted:#5d6b76;--line:#d9d4c8;--accent:#1d6f5f;--accent-ink:#fff;--warn:#b45309;--bad:#b3261e;--good:#1d6f5f;--soft:#e7f1ee}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#14191d;--card:#1d252b;--ink:#eef1f3;--muted:#a3b0ba;--line:#33414b;--accent:#47b39d;--accent-ink:#06211b;--warn:#f0a35a;--bad:#ff8a80;--good:#6fd4bd;--soft:#1f3a35}}
*{box-sizing:border-box}
html{font-size:16px}html.big{font-size:21px}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;line-height:1.6;padding:0 16px 48px}
.wrap{max-width:760px;margin:0 auto}.wrap.wide{max-width:1200px}
header.top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 0 8px;flex-wrap:wrap}
h1{font-size:1.35rem;margin:0}h2{font-size:1.15rem;margin:0 0 8px}h3{font-size:1rem;margin:12px 0 6px}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;margin:12px 0}
.card.soft{background:var(--soft)}
.muted{color:var(--muted);font-size:.9rem}
button,.btn,select,input,textarea{font:inherit;color:inherit}
button,.btn{min-height:48px;padding:10px 16px;border-radius:12px;border:1px solid var(--line);background:var(--card);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}
button.primary,.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:700}
button.danger{color:var(--bad);border-color:var(--bad)}
button.big-btn{min-height:76px;font-size:1.3rem;width:100%}
button:disabled{opacity:.5;cursor:default}
button.sm{min-height:40px;padding:6px 12px;font-size:.9rem}
input,select,textarea{width:100%;min-height:48px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
textarea{min-height:96px}
label{display:block;margin:10px 0 4px;font-weight:600}
label.inline{display:flex;gap:8px;align-items:center;font-weight:400}label.inline input{width:auto;min-height:0}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.row>*{flex:1 1 auto}.row>.fit{flex:0 0 auto}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.85rem;font-weight:700;border:1px solid var(--line)}
.b-ok{background:var(--soft);color:var(--good);border-color:var(--good)}.b-near_full{color:var(--warn);border-color:var(--warn)}
.b-full,.b-closed,.b-paused{color:var(--bad);border-color:var(--bad)}.b-unknown{color:var(--muted)}
.msg{padding:10px 12px;border-radius:10px;margin:8px 0;background:var(--soft)}.msg.err{background:transparent;border:1px solid var(--bad);color:var(--bad)}
.lot{border-top:1px solid var(--line);padding:12px 0}.lot:first-child{border-top:0}
.lot .nm{font-weight:700}
.lot.off .nm{color:var(--muted)}
.btn.disabled,button.disabled{background:#d1d5db;color:#6b7280;border-color:#d1d5db;cursor:not-allowed;pointer-events:none}
.alt{background:var(--soft);border-radius:10px;padding:8px 10px}
select.need{border:2px solid var(--bad)}
table{width:100%;border-collapse:collapse;font-size:.92rem}th,td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.scroll{overflow-x:auto}
.tabs{display:flex;gap:6px;overflow-x:auto;padding:4px 0 8px}.tabs button{flex:0 0 auto}.tabs button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.hidden{display:none!important}
#map{height:420px;border-radius:14px;border:1px solid var(--line)}
.legend span{display:inline-flex;align-items:center;gap:4px;margin-right:10px;font-size:.85rem}.legend i{width:12px;height:12px;border-radius:50%;display:inline-block}
.consent{border:2px solid var(--accent);font-size:1.05rem}
.stat{display:flex;gap:8px;flex-wrap:wrap}.stat div{flex:1 1 90px;background:var(--soft);border-radius:12px;padding:8px 10px;text-align:center}.stat b{display:block;font-size:1.4rem}
/* 手機：表格保持可讀寬度，超出時在 .scroll 容器內左右捲動（避免一行只剩一個字） */
@media (max-width:600px){.scroll table{min-width:520px}.scroll td,.scroll th{word-break:keep-all;overflow-wrap:anywhere}}

.grid2 > * { min-width: 0; }
input[type=date] { min-width: 0; width: 100%; max-width: 100%; box-sizing: border-box; }

/* 求助分級與長按送出 */
.kindbox{border:1px solid var(--line);border-radius:14px;padding:8px 10px 10px;margin:0 0 8px}
.kindbox legend{font-weight:700;padding:0 6px}
label.kind{display:flex;align-items:center;gap:10px;margin:8px 0;padding:12px;border:2px solid var(--line);border-radius:12px;cursor:pointer;font-weight:400;min-height:64px}
label.kind input{width:1.4rem;height:1.4rem;min-height:0;flex:0 0 auto}
label.kind span{display:flex;flex-direction:column}label.kind b{font-size:1.15rem}label.kind small{color:var(--muted);font-size:.9rem}
label.kind.k-urgent{border-color:#b3261e}
label.kind:has(input:checked){background:var(--soft);outline:3px solid var(--accent)}
label.kind.k-urgent:has(input:checked){outline-color:#b3261e}
.holdbox{margin:12px 0 8px}
button.hold{position:relative;gap:12px;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none}
button.hold .ring{width:2.4rem;height:2.4rem;flex:0 0 auto;transform:rotate(-90deg)}
.ring-bg{fill:none;stroke:rgba(255,255,255,.35);stroke-width:5}
.ring-fg{fill:none;stroke:#fff;stroke-width:5;stroke-linecap:round;stroke-dashoffset:119.4}
.badge.b-urgent{background:#b3261e;color:#fff;border-color:#b3261e}
tr.urgent td,.lot.urgent{background:rgba(179,38,30,.08)}
.lot.urgent{border-left:4px solid #b3261e;padding-left:8px}
.lot-age{font-size:.85rem}

/* 工作人員頁：任務置頂、緊急橫幅、收合區 */
body.stf #vMain{display:flex;flex-direction:column}
body.stf #vMain>*{order:5}
body.stf #vMain.has-task #taskCard{order:1}
body.stf #vMain.has-task #dutyCard{order:2}
body.stf #vMain #dutyCard{order:1}
body.stf #vMain.has-task #dutyCard{order:2}
.urg-bar{display:block;position:sticky;top:0;z-index:5;margin:8px 0;padding:14px;border-radius:12px;background:#b3261e;color:#fff;font-weight:800;font-size:1.1rem;text-align:center;text-decoration:none}
.urg-bar.amber{background:var(--warn)}.urg-bar.hidden{display:none}
.duty-h{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.duty-h h2{margin:0}
.pill{display:inline-block;padding:4px 12px;border-radius:999px;font-size:.9rem;font-weight:700;border:1px solid var(--line)}
.pill.p-ok{background:var(--soft);color:var(--good);border-color:var(--good)}.pill.p-busy{color:var(--warn);border-color:var(--warn)}.pill.p-break{color:var(--muted)}.pill.p-off{color:var(--bad);border-color:var(--bad)}
.tasks{border:2px solid var(--accent)}
.lot.tk .tk-where{font-size:1.1rem;margin:6px 0}
.lot.tk .tk-act button{min-height:64px;font-size:1.2rem}
details.fold{padding:0}details.fold>summary{padding:14px;font-weight:700;font-size:1.05rem;cursor:pointer;list-style:none;min-height:48px;display:flex;align-items:center;justify-content:space-between}
details.fold>summary::-webkit-details-marker{display:none}details.fold>summary::after{content:"＋";color:var(--muted)}details.fold[open]>summary::after{content:"－"}
details.fold>*:not(summary){margin-left:14px;margin-right:14px}details.fold>*:last-child{margin-bottom:14px}
details.fold.hidden{display:none}
body.stf #vMain.hidden{display:none}
