:root{--green:#577B53;--green-d:#3F5C3C;--gold:#D3BC8C;--gold-l:#F3EBDA;--bg:#FAF7F0;--ink:#2B2E29;
  --mute:#6B6F66;--line:#E3DCCB;--warn:#B4553F;--warn-l:#F7E3DD;--ok:#4E7F4A;
  --f:"jf-jinxuan-fresh","PingFang TC","Noto Sans TC","Microsoft JhengHei",sans-serif}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f);font-size:16px;line-height:1.6}
header.app{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;
  background:var(--green);color:#fff;padding:10px 16px}
header.app h1{font-size:19px;margin:0;letter-spacing:.04em}
header.app .r{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
header.app a{color:#fff}
.pill{border:0;border-radius:20px;padding:5px 14px;background:rgba(255,255,255,.18);color:#fff;font:16px var(--f);cursor:pointer}
.pill.on{background:var(--gold);color:var(--ink);font-weight:700}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--gold-l);padding:8px 16px;border-bottom:1px solid var(--line)}
.toolbar .sp{flex:1}
button{font:16px var(--f);border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink);padding:7px 14px;cursor:pointer;transition:transform .06s}
button:active:not(:disabled){transform:scale(.96)}
button:disabled{opacity:.55;cursor:default}
button.pri{background:var(--green);border-color:var(--green);color:#fff}
button.gold{background:var(--gold);border-color:var(--gold)}
button.warn{background:var(--warn);border-color:var(--warn);color:#fff}
main{padding:12px 16px 80px}
.sum{display:flex;flex-wrap:wrap;gap:6px 18px;background:#F6F1E4;border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin-top:10px}
.sum b{font-variant-numeric:tabular-nums}
.err{color:var(--warn)}
.tag{display:inline-block;border-radius:20px;padding:0 8px;font-size:14px;background:var(--gold-l);border:1px solid var(--gold)}
.tag.r{background:var(--warn-l);border-color:#E4B3A6;color:var(--warn)}
.tag.y{background:#FFE9A8;border-color:#E2C15A;color:#6B5310}
.tabulator-row.missing,.tabulator-row.missing .tabulator-cell{background:#FFF6D6}
.tabulator{font-size:16px;border-color:var(--line);max-width:100%}
.tabulator .tabulator-header .tabulator-col{background:#F1ECDF;color:var(--green-d)}
.tabulator-row.st-waiting{color:#9a9a92}
.tabulator-row.st-void,.tabulator-row.st-void .tabulator-cell{text-decoration:line-through;color:#b0b0a8}
.tabulator-row.editing{background:#EAF2E7!important}
/* 表格不設固定高度：讓列下方的錯誤訊息撐開，不被裁掉 */
#grid .tabulator-tableholder{height:auto!important;max-height:none!important}
.tabulator-row .row-msg{position:sticky;left:0;display:block;padding:2px 10px 4px;color:var(--warn);font-size:16px;white-space:normal}
/* 自製對話框 */
.dlg-mask{position:fixed;inset:0;background:rgba(43,46,41,.45);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.dlg{background:#fff;border-radius:12px;max-width:640px;width:100%;max-height:90vh;overflow:auto;box-shadow:0 10px 40px rgba(0,0,0,.25)}
.dlg h2{margin:0;padding:14px 18px;background:var(--green);color:#fff;font-size:18px;border-radius:12px 12px 0 0}
.dlg .body{padding:16px 18px}
.dlg .btns{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line)}
.dlg label{display:block;margin:8px 0 4px}
.dlg input[type=text],.dlg input[type=number],.dlg select,.dlg textarea{width:100%;font:16px var(--f);padding:7px 10px;border:1px solid var(--line);border-radius:8px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:700px){.grid2{grid-template-columns:1fr}}
table.calc{width:100%;border-collapse:collapse}
table.calc td{border:1px solid var(--line);padding:6px 8px}
table.calc td.n{text-align:right;font-variant-numeric:tabular-nums}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.pline{display:flex;gap:6px;align-items:center;margin:6px 0}
.dlg .pline select{flex:1;width:auto;min-width:0}
.dlg .pline input.qty{width:80px;flex:none}
/* 自製月曆 */
.cal{position:absolute;z-index:40;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px;box-shadow:0 6px 20px rgba(0,0,0,.15);color:var(--ink)}
.cal .hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.cal table{border-collapse:collapse}
.cal td{width:36px;height:32px;text-align:center;cursor:pointer;border-radius:6px}
.cal td:hover{background:var(--gold-l)}
.cal td.on{background:var(--green);color:#fff}
.login{max-width:420px;margin:15vh auto;background:#fff;border-radius:12px;padding:32px;text-align:center;box-shadow:0 2px 12px rgba(0,0,0,.08)}
.login a{display:inline-block;margin-top:16px;padding:12px 28px;border-radius:8px;background:var(--green);color:#fff;text-decoration:none}
.tabulator .tabulator-tableholder .tabulator-placeholder{background:#fff}
.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:var(--mute);font-size:16px;font-weight:400;padding:14px}
/* 還沒開診 */
.notopen{background:#fff;border:1px dashed var(--line);border-radius:10px;padding:28px 16px;text-align:center;color:var(--mute)}
.notopen p{margin:0 0 12px;font-size:18px;color:var(--ink)}
/* 表格內的單列按鈕（作廢） */
.tabulator-cell button.rowbtn{padding:2px 10px;font-size:16px;color:var(--warn);border-color:#E4B3A6;background:#fff}
[hidden]{display:none!important}
.sum:empty{display:none}
