:root{--bg:#0e1319;--panel:#171e27;--panel2:#1f2833;--line:#2c3744;--tx:#e8edf3;--mu:#8b98a8;--ac:#4aa3ff;--ok:#3ecf8e;--warn:#f5a524;--bad:#ff5d5d;
--s05:#f59e0b;--s07:#eab308;--s12:#22c55e;--s17:#06b6d4;--s20:#a78bfa;--s23:#f472b6}
*{box-sizing:border-box}[hidden]{display:none!important}
html,body{margin:0;background:var(--bg);color:var(--tx);font:15px/1.5 -apple-system,"Noto Sans TC","PingFang TC",sans-serif}
.muted{color:var(--mu)}.err{color:var(--bad);margin-top:8px;min-height:1.4em}
button{font:inherit;border:0;border-radius:8px;padding:8px 14px;background:var(--ac);color:#06121f;font-weight:600;cursor:pointer}
button.ghost{background:var(--panel2);color:var(--tx);border:1px solid var(--line)}
button.danger{background:var(--bad);color:#fff}
button:disabled{opacity:.5}
input,select,textarea{font:inherit;background:var(--panel2);color:var(--tx);border:1px solid var(--line);border-radius:8px;padding:8px 10px;width:100%}
label{display:block;margin:10px 0 4px;color:var(--mu);font-size:13px}
/* 登入 */
#login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
#loginForm{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:28px;width:100%;max-width:340px;text-align:center}
#loginForm input{margin:10px 0;text-align:center;font-size:20px;letter-spacing:2px}
#loginForm button{width:100%;padding:11px}
.lg-logo{font-size:44px}h1{margin:4px 0 0;font-size:22px}
/* 頂欄 */
header{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;padding:8px 14px;background:rgba(14,19,25,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{font-size:16px}
nav{display:flex;gap:4px;flex:1;overflow-x:auto}
nav button{background:transparent;color:var(--mu);padding:6px 12px}
nav button.on{background:var(--panel2);color:var(--tx)}
#who{font-size:12px}
main{padding:12px 14px 80px;max-width:1500px;margin:0 auto}
/* 工具列 */
.bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.bar input[type=search]{width:150px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{padding:4px 12px;border-radius:99px;background:var(--panel2);border:1px solid var(--line);color:var(--mu);font-size:13px;cursor:pointer;font-weight:500}
.chip.on{background:var(--ac);color:#06121f;border-color:var(--ac)}
.banner{background:#3a2c10;border:1px solid #6b4d12;color:#ffd58a;border-radius:10px;padding:8px 12px;margin-bottom:12px;font-size:13px}
/* 看板 */
.rowlabel{color:var(--mu);font-size:12px;margin:14px 0 6px;letter-spacing:1px}
.zones{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.zones.two{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.zone{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px;min-height:96px;transition:.12s}
.zone.over{border-color:var(--ac);background:#14222f}
.zone h3{margin:0 0 8px;font-size:14px;display:flex;justify-content:space-between;align-items:center}
.zone h3 span{background:var(--panel2);border-radius:99px;padding:0 9px;font-size:12px;color:var(--mu)}
.zone.z-APRON{border-color:#2d5a85}.zone.z-LOG{border-color:#2b6b4d}
.cards{display:flex;flex-wrap:wrap;gap:8px}
.card{background:var(--panel2);border:1px solid var(--line);border-left:5px solid var(--line);border-radius:10px;padding:7px 10px;min-width:118px;cursor:pointer;user-select:none;position:relative}
.card.drag{opacity:.4}
.card.edit{cursor:grab}
.card .pl{font:600 15px/1.2 ui-monospace,Menlo,monospace}
.card .sub{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px;font-size:11px;color:var(--mu)}
.card.late{border-color:var(--bad);box-shadow:0 0 0 1px var(--bad) inset;background:#2a1a1d}
.tag{border-radius:5px;padding:0 6px;background:#0c1117;border:1px solid var(--line)}
.tag.sh{color:#06121f;border:0;font-weight:700}
.tag.sh.pre{background:transparent!important;border:1px dashed currentColor;font-weight:600}
.tag.loan{color:var(--warn);border-color:#6b4d12}.tag.bad{color:var(--bad);border-color:#6b2a2a}
.s05{border-left-color:var(--s05)}.s07{border-left-color:var(--s07)}.s12{border-left-color:var(--s12)}.s17{border-left-color:var(--s17)}.s20{border-left-color:var(--s20)}.s23{border-left-color:var(--s23)}
.tag.sh.s05{background:var(--s05)}.tag.sh.s07{background:var(--s07)}.tag.sh.s12{background:var(--s12)}.tag.sh.s17{background:var(--s17)}.tag.sh.s20{background:var(--s20)}.tag.sh.s23{background:var(--s23)}
.tag.pre.s05{color:var(--s05)}.tag.pre.s07{color:var(--s07)}.tag.pre.s12{color:var(--s12)}.tag.pre.s17{color:var(--s17)}.tag.pre.s20{color:var(--s20)}.tag.pre.s23{color:var(--s23)}
.empty{color:#566273;font-size:12px}
/* 狀態頁 */
.tiles{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));margin-bottom:14px}
.tile{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px}
.tile b{font-size:28px;display:block;line-height:1.1}.tile small{color:var(--mu)}
.tile.ok b{color:var(--ok)}.tile.bad b{color:var(--bad)}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:top}
th{color:var(--mu);font-weight:500;font-size:12px}
td.pl{font:600 14px ui-monospace,Menlo,monospace;white-space:nowrap}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:14px}
.panel h3{margin:0 0 8px;font-size:15px}
.scroll{overflow-x:auto}
/* 對話框 */
dialog{background:var(--panel);color:var(--tx);border:1px solid var(--line);border-radius:16px;padding:18px;width:min(460px,94vw);max-height:90vh;overflow:auto}
dialog::backdrop{background:rgba(0,0,0,.6)}
dialog h2{margin:0 0 6px;font-size:18px}
.row{display:flex;gap:8px;margin-top:16px;justify-content:flex-end}
.chk{display:flex;align-items:center;gap:8px;margin:8px 0;color:var(--tx);font-size:14px}.chk input{width:auto}
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#0c1117;border:1px solid var(--line);padding:10px 16px;border-radius:10px;z-index:60;max-width:90vw}
@media(max-width:640px){.hm{display:none}main{padding:10px 10px 80px}.card{min-width:calc(50% - 4px);flex:1}.zone{padding:8px}}
.card.soon{border-color:var(--warn);box-shadow:0 0 0 1px var(--warn) inset;background:#2a2412}
.tag.zn{color:var(--tx);background:#243040}
.tile.warn b{color:var(--warn)}
