:root{--bg: #f3f6f5;--surface: #ffffff;--surface-2: #e9efed;--ink: #142421;--ink-2: #44534f;--ink-3: #6f7d79;--line: #d5dfdc;--accent: #0f6e66;--accent-ink: #ffffff;--accent-soft: #dcefeb;--rail: #0e2a27;--rail-ink: #d7e7e3;--rail-muted: #a9c7c1;--rail-label: #9dbdb7;--rail-active: #1c4a44;--rail-card: #173a36;--rail-mark: #3fc2b1;--rail-mark-ink: #062320;--chip-ink: #0e2a27;--chip-supervisor: #bfe9e1;--chip-admin: #f5d58c;--critical: #c23333;--critical-soft: #fbe9e8;--warning: #b97a00;--warning-soft: #fdf3dc;--good: #1d7f3a;--good-soft: #e3f3e7;--bar: #2a78d6;--bar-critical: #c23333;--bar-track: #e4ebf3;--focus: #2a78d6;--font-ui: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;--font-num: "Noto Sans TC", system-ui, -apple-system, "Segoe UI", sans-serif;--fs-xs: .82rem;--fs-sm: .92rem;--fs-md: 1rem;--fs-lg: 1.2rem;--fs-xl: 1.55rem;--fs-hero: 3rem;--radius: 10px;--shadow: 0 1px 2px rgba(14, 42, 39, .06), 0 4px 16px rgba(14, 42, 39, .05);font-family:var(--font-ui);font-size:17px;line-height:1.6;color:var(--ink)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0d1614;--surface: #15211f;--surface-2: #1d2b28;--ink: #e7efed;--ink-2: #b6c5c1;--ink-3: #8a9a96;--line: #2a3a37;--accent: #3fb3a6;--accent-ink: #062320;--accent-soft: #163f3a;--rail: #08110f;--rail-ink: #d7e7e3;--rail-muted: #a9c7c1;--rail-active: #17332f;--rail-card: #12302c;--critical: #ef6b6b;--critical-soft: #3a1c1c;--warning: #f0b43a;--warning-soft: #3a2f14;--good: #4cc46e;--good-soft: #17321f;--bar: #3987e5;--bar-critical: #d64545;--bar-track: #22303f;--focus: #6da7ec;--shadow: none;color-scheme:dark}}:root[data-theme=dark]{--bg: #0d1614;--surface: #15211f;--surface-2: #1d2b28;--ink: #e7efed;--ink-2: #b6c5c1;--ink-3: #8a9a96;--line: #2a3a37;--accent: #3fb3a6;--accent-ink: #062320;--accent-soft: #163f3a;--rail: #08110f;--rail-ink: #d7e7e3;--rail-muted: #a9c7c1;--rail-active: #17332f;--rail-card: #12302c;--critical: #ef6b6b;--critical-soft: #3a1c1c;--warning: #f0b43a;--warning-soft: #3a2f14;--good: #4cc46e;--good-soft: #17321f;--bar: #3987e5;--bar-critical: #d64545;--bar-track: #22303f;--focus: #6da7ec;--shadow: none;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}a{color:var(--accent)}h1,h2,h3,h4{text-wrap:balance;line-height:1.3;margin:0}h2{font-size:var(--fs-xl);font-weight:700;letter-spacing:.01em}h3{font-size:var(--fs-lg);font-weight:700}p{margin:0}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.banner{background:var(--warning-soft);color:var(--ink);text-align:center;font-size:var(--fs-sm);padding-block:6px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}.layout{display:flex;min-height:100vh}.nav{width:248px;flex-shrink:0;background:var(--rail);color:var(--rail-ink);display:flex;flex-direction:column;gap:4px;padding:20px 12px}.brand{display:flex;align-items:center;gap:10px;padding:4px 10px 16px}.brand-mark{width:40px;height:40px;border-radius:12px;background:var(--rail-mark);color:var(--rail-mark-ink);display:grid;place-items:center;font-weight:800;font-size:1.25rem}.brand-name{font-size:var(--fs-lg);font-weight:800;letter-spacing:.04em}.brand-sub{font-size:var(--fs-xs);color:var(--rail-muted);letter-spacing:.08em}.who{margin:0 6px 12px;padding:14px;border-radius:var(--radius);background:var(--rail-card);border:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:8px}.who-name{font-weight:700;color:#fff;font-size:var(--fs-lg);line-height:1.3}.who-meta{font-size:var(--fs-sm);color:var(--rail-ink);display:flex;gap:8px;align-items:center;flex-wrap:wrap}.role-chip{font-size:var(--fs-sm);padding:2px 10px;border-radius:999px;font-weight:800;background:var(--chip-supervisor);color:var(--chip-ink);letter-spacing:.02em}.role-chip.admin{background:var(--chip-admin)}.nav-section{font-size:var(--fs-xs);color:var(--rail-label);letter-spacing:.12em;padding:14px 12px 4px;font-weight:600}.nav a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:8px;color:var(--rail-ink);text-decoration:none;font-size:var(--fs-md)}.nav a:hover{background:var(--rail-active)}.nav a.active{background:var(--rail-active);color:#fff;font-weight:700;box-shadow:inset 3px 0 0 var(--accent)}.nav a svg{flex-shrink:0;opacity:.9}.nav .spacer{flex:1}.main{flex:1;min-width:0;display:flex;flex-direction:column;gap:20px;padding-block:28px;padding-left:max(16px,2.2vw,env(safe-area-inset-left,0px));padding-right:max(16px,2.2vw,env(safe-area-inset-right,0px));max-width:1240px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}.page-head .sub{color:var(--ink-3);font-size:var(--fs-sm);margin-top:4px}@media (max-width: 860px){.layout{flex-direction:column}.nav{width:100%;flex-direction:row;flex-wrap:wrap;padding:10px;gap:4px}.brand{padding:4px 8px}.who,.nav-section,.nav .spacer{display:none}.nav a{padding:8px 10px;font-size:var(--fs-sm)}.main{padding-block:18px}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}.card>h3{display:flex;align-items:center;gap:8px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.muted{color:var(--ink-3);font-size:var(--fs-sm)}.tag{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:var(--fs-sm);font-weight:600;background:var(--surface-2);color:var(--ink-2);white-space:nowrap}.tag:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;opacity:.7}.tag.danger{background:var(--critical-soft);color:var(--critical)}.tag.danger:before{content:"!";width:auto;height:auto;background:none;opacity:1;font-weight:900}.tag.ok{background:var(--good-soft);color:var(--good)}.tag.warn{background:var(--warning-soft);color:var(--warning)}button,.btn{font:inherit;font-size:var(--fs-md);padding:10px 18px;min-height:44px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .15s,border-color .15s}button:hover,.btn:hover{border-color:var(--accent)}button.primary,.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:700}button.primary:hover,.btn.primary:hover{filter:brightness(1.08)}button.danger{background:var(--critical);color:#fff;border-color:var(--critical);font-weight:700}button:disabled{opacity:.45;cursor:not-allowed}input,textarea,select{font:inherit;font-size:var(--fs-md);padding:10px 12px;min-height:44px;width:100%;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink)}input:focus,textarea:focus,select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}label{display:flex;flex-direction:column;gap:6px;font-size:var(--fs-sm);color:var(--ink-2);margin:0}label.row{flex-direction:row;align-items:center;color:var(--ink);font-size:var(--fs-md)}fieldset{min-width:0}.error,.warn,.notice{padding:12px 16px;border-radius:8px;font-size:var(--fs-md);display:flex;gap:10px;align-items:flex-start}.error{background:var(--critical-soft);color:var(--critical);border:1px solid var(--critical)}.error:before{content:"⚠";font-weight:900}.warn{background:var(--warning-soft);color:var(--ink);border:1px solid var(--warning)}.notice{background:var(--accent-soft);color:var(--ink)}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse;font-size:var(--fs-md)}th,td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:middle}th{font-size:var(--fs-sm);color:var(--ink-3);font-weight:600;background:var(--surface-2);letter-spacing:.04em}tbody tr:hover td{background:var(--surface-2)}tbody tr:last-child td{border-bottom:0}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tr.alert td{background:var(--critical-soft)}tr.alert td:first-child,tr.sev-emergency td:first-child{box-shadow:inset 4px 0 0 var(--critical)}.kpis{display:grid;grid-template-columns:1.3fr repeat(4,1fr);gap:16px}@media (max-width: 980px){.kpis{grid-template-columns:repeat(2,1fr)}}@media (max-width: 480px){.kpis{grid-template-columns:1fr}}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;display:flex;flex-direction:column;gap:4px;box-shadow:var(--shadow);min-width:0}.tile-label{font-size:var(--fs-sm);color:var(--ink-3);letter-spacing:.04em}.tile-value{font-family:var(--font-num);font-size:2.2rem;font-weight:800;line-height:1.15;color:var(--ink)}.tile-note{font-size:var(--fs-sm);color:var(--ink-2)}.tile.hero{background:var(--rail);border-color:var(--rail);color:var(--rail-ink)}.tile.hero .tile-label{color:var(--rail-muted)}.tile.hero .tile-value{font-size:var(--fs-hero);color:#fff}.tile.hero .tile-note{color:var(--rail-ink)}.tile.hero.attention{box-shadow:inset 0 -4px 0 var(--critical),var(--shadow)}.tile-link{color:var(--rail-ink);font-size:var(--fs-sm);font-weight:700}.split{display:grid;grid-template-columns:1.3fr 1fr;gap:16px}@media (max-width: 980px){.split{grid-template-columns:1fr}}.meter{display:flex;flex-direction:column;gap:8px}.meter-track{position:relative;height:14px;border-radius:7px;background:var(--bar-track);overflow:visible}.meter-fill{position:absolute;inset:0 auto 0 0;border-radius:7px;background:var(--bar)}.meter-fill.warn{background:var(--warning)}.meter-fill.bad{background:var(--bar-critical)}.meter-mark{position:absolute;top:-5px;bottom:-5px;width:2px;background:var(--ink-2)}.meter-legend{display:flex;justify-content:space-between;font-size:var(--fs-sm);color:var(--ink-3);font-variant-numeric:tabular-nums}.bars{display:flex;flex-direction:column;gap:12px}.bar-row{display:grid;grid-template-columns:8.5em 1fr 3em;align-items:center;gap:12px;position:relative}.bar-label{font-size:var(--fs-md);color:var(--ink-2)}.bar-track{height:22px;background:var(--bar-track);border-radius:0 4px 4px 0;position:relative}.bar-fill{height:100%;background:var(--bar);border-radius:0 4px 4px 0;min-width:2px}.bar-row.critical .bar-fill{background:var(--bar-critical)}.bar-value{font-variant-numeric:tabular-nums;font-weight:700;text-align:right}.bar-row:hover .bar-track{outline:2px solid var(--line)}.bar-tip{position:absolute;left:9em;top:-34px;background:var(--ink);color:var(--surface);font-size:var(--fs-sm);padding:4px 10px;border-radius:6px;pointer-events:none;white-space:nowrap;display:none;z-index:2}.bar-row:hover .bar-tip,.bar-row:focus-within .bar-tip{display:block}.chat{background:#7494c0;border-radius:var(--radius);padding:16px;height:62vh;overflow-y:auto;display:flex;flex-direction:column;gap:10px}.bubble{max-width:80%;padding:10px 14px;border-radius:16px;white-space:pre-wrap;color:#111;font-size:var(--fs-md)}.bubble.me{align-self:flex-end;background:#a8e37a}.bubble.bot{align-self:flex-start;background:#fff}.bubble .btns{display:flex;flex-direction:column;gap:6px;margin-top:10px}.bubble .btns button,.bubble .btns a{font-size:var(--fs-sm);padding:8px;min-height:40px;background:#fff;color:#0f6e66;border:1px solid #c9d6d3}.auth{min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:1fr 1fr}.auth-side{background:var(--rail);color:var(--rail-ink);display:flex;flex-direction:column;justify-content:center;gap:24px;padding-block:48px;padding-left:max(16px,4vw,env(safe-area-inset-left,0px));padding-right:max(16px,4vw)}.auth-side h1{font-size:2.4rem;color:#fff;letter-spacing:.04em}.auth-main{display:grid;place-items:center;padding-block:32px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}.auth-main form{width:min(420px,100%)}@media (max-width: 860px){.auth{grid-template-columns:1fr;grid-template-rows:auto 1fr}.auth-side{padding-block:20px;gap:14px;justify-content:flex-start}.auth-side h1{font-size:1.6rem}.auth-main{place-items:start center;padding-block:24px}}@media (max-width: 520px){.auth{background:var(--surface)}.auth-side{background:none;align-items:center;gap:0;padding:max(clamp(32px,12vh,96px),env(safe-area-inset-top,0px)) 24px 0}.auth-side .brand{flex-direction:column;gap:12px}.auth-side .brand-mark{width:72px;height:72px;font-size:2rem;border-radius:20px}.auth-side .brand-name{color:var(--ink);font-size:1.6rem;text-align:center}.auth-side .brand-sub,.auth-side h1,.auth-main .card>h2{display:none}.auth-main{padding:36px 24px max(32px,env(safe-area-inset-bottom,0px))}.auth-main .card{background:none;border:0;box-shadow:none;padding:0;gap:18px}.auth-main .card>button:not(.primary){border:0;background:none;min-height:40px;color:var(--accent);font-size:var(--fs-sm)}}.liff{max-width:600px;margin:0 auto;display:flex;flex-direction:column;gap:16px;font-size:1.1rem;padding-block:20px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
