
:root{--bg:#f5f7f8;--card:#fff;--ink:#24323a;--muted:#66757e;--line:#dbe3e7;--accent:#3f6d6a;--soft:#eaf2f1;--warn:#9a6b25;--warnbg:#fff6df;--ok:#356d50}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,"Noto Sans TC",sans-serif;background:var(--bg);color:var(--ink)}header{background:#fff;border-bottom:1px solid var(--line);padding:18px 24px;position:sticky;top:0;z-index:5}.brand{max-width:1180px;margin:auto;display:flex;justify-content:space-between;align-items:center}.brand b{font-size:20px}.pill{font-size:12px;padding:6px 10px;border-radius:999px;background:var(--soft);color:var(--accent)}.home-link{display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:var(--accent);font-weight:700;font-size:14px;padding:8px 11px;border:1px solid var(--line);border-radius:10px;background:#fff}.home-link:hover{background:var(--soft)}main{max-width:1180px;margin:24px auto;padding:0 18px}.grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:0 4px 16px #20333b0a}.hero{padding:26px}.hero h1{margin:0 0 8px;font-size:28px}.muted{color:var(--muted)}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:18px}.kpi{background:#fafcfc;border:1px solid var(--line);padding:14px;border-radius:12px}.kpi strong{display:block;font-size:24px;margin-top:4px}.section-title{font-size:17px;font-weight:750;margin:0 0 14px}.progress{height:10px;background:#edf1f2;border-radius:10px;overflow:hidden}.progress i{display:block;height:100%;width:71%;background:var(--accent)}.task{display:flex;gap:10px;padding:11px 0;border-bottom:1px solid #eef2f3}.task:last-child{border:0}.task input{width:18px;height:18px}.doc{display:flex;justify-content:space-between;align-items:center;padding:11px 0;border-bottom:1px solid #eef2f3}.status{font-size:12px;border-radius:999px;padding:5px 9px;background:#edf6ef;color:var(--ok)}.status.wait{background:var(--warnbg);color:var(--warn)}button{border:0;border-radius:10px;padding:11px 15px;font-weight:700;cursor:pointer}.primary{background:var(--accent);color:white}.secondary{background:#eef3f3;color:var(--ink)}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.form{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:5px}.field input,.field select,.field textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:9px;background:#fff;font:inherit}.field textarea{min-height:82px;resize:vertical}.checkgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;padding:9px;border:1px solid var(--line);border-radius:9px;background:#fafcfc}.checkgrid label{font-size:13px;color:var(--ink);display:flex;gap:6px;align-items:center}.checkgrid input{width:auto}.mini{font-size:12px}.table{width:100%;border-collapse:collapse;margin-top:10px}.table th,.table td{padding:9px;border-bottom:1px solid #eef2f3;text-align:left;font-size:13px}.danger{background:#fff0f0;color:#8a3434}.archive{background:#f3f3f3;color:#59636a}.safety{border-left:4px solid var(--accent)}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.full{grid-column:1/-1}.notice{background:var(--warnbg);border:1px solid #eed8a7;padding:12px;border-radius:10px;font-size:13px;margin:14px 0}.login{max-width:520px;margin:70px auto}.hidden{display:none}.steps{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0}.step{font-size:12px;padding:6px 9px;border-radius:999px;background:#edf1f2}.step.on{background:var(--soft);color:var(--accent);font-weight:700}.footer{font-size:12px;color:var(--muted);text-align:center;margin:28px 0}@media(max-width:800px){.grid,.form,.kpis{grid-template-columns:1fr}.kpis{grid-template-columns:1fr 1fr}.checkgrid{grid-template-columns:1fr 1fr}}
.print-sheet{font-family:"Noto Sans TC",sans-serif;color:#111}.print-sheet h2{text-align:center}.print-sheet table{width:100%;border-collapse:collapse;margin:10px 0}.print-sheet th,.print-sheet td{border:1px solid #333;padding:7px;font-size:13px;vertical-align:top}.print-sheet .sign{height:55px}.print-note{font-size:12px;color:#555}@media print{body>*{display:none!important}#printArea{display:block!important;position:absolute;left:0;top:0;width:100%;background:white;padding:8mm}#printArea *{visibility:visible}.no-print{display:none!important}}


/* Pilot 1.0 — four-workspace layout */
.workspace-nav{
  display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 0 14px;
}
.workspace-nav a{
  text-decoration:none;color:var(--ink);background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:13px 14px;display:grid;grid-template-columns:30px 1fr;
  column-gap:8px;align-items:center;box-shadow:0 3px 12px #20333b08;
}
.workspace-nav a>span{
  width:30px;height:30px;border-radius:50%;display:grid;place-items:center;
  background:#eef3f3;color:var(--accent);font-weight:800;grid-row:1/3;
}
.workspace-nav a b{font-size:14px}
.workspace-nav a small{color:var(--muted);font-size:11px;margin-top:2px}
.workspace-nav a:hover{background:#fafcfc;border-color:#b9cecc}
body[data-page="case"] .workspace-nav [data-nav="case"],
body[data-page="cluster"] .workspace-nav [data-nav="cluster"],
body[data-page="tracking"] .workspace-nav [data-nav="tracking"],
body[data-page="dashboard"] .workspace-nav [data-nav="dashboard"]{
  border-color:var(--accent);background:var(--soft)
}
body[data-page] .workspace-nav a[aria-current="page"]{border-color:var(--accent);background:var(--soft)}
.page-intro{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:18px;padding:18px 20px}
.page-intro h1{margin:2px 0 5px;font-size:23px}
.eyebrow{font-size:12px;color:var(--accent);font-weight:800;letter-spacing:.06em}
.flow-hint{font-size:12px;background:#fafcfc;border:1px solid var(--line);border-radius:999px;padding:8px 12px;white-space:nowrap}
.page-hidden{display:none!important}

/* Keep each workspace focused: same data model, different task surface */
body[data-page="case"] #overviewGrid,
body[data-page="case"] #trackingCard,
body[data-page="case"] #feedbackCard,
body[data-page="case"] #scopeCard{display:none}

body[data-page="cluster"] #overviewGrid,
body[data-page="cluster"] #peopleCard,
body[data-page="cluster"] #trackingCard,
body[data-page="cluster"] #feedbackCard,
body[data-page="cluster"] #scopeCard,
body[data-page="cluster"] #safetyCard{display:none}

body[data-page="tracking"] #eventCard,
body[data-page="tracking"] #peopleCard,
body[data-page="tracking"] #documentCard,
body[data-page="tracking"] #feedbackCard,
body[data-page="tracking"] #scopeCard{display:none}
body[data-page="tracking"] #overviewGrid{display:block}
body[data-page="tracking"] #overviewCard{display:block}

body[data-page="dashboard"] #eventCard,
body[data-page="dashboard"] #peopleCard,
body[data-page="dashboard"] #trackingCard,
body[data-page="dashboard"] #feedbackCard,
body[data-page="dashboard"] #scopeCard{display:none}
body[data-page="dashboard"] #overviewGrid{grid-template-columns:.8fr 1.2fr}

@media(max-width:900px){
  .workspace-nav{grid-template-columns:1fr 1fr}
  .page-intro{align-items:flex-start;flex-direction:column}
}
@media(max-width:560px){
  .workspace-nav{grid-template-columns:1fr}
  .workspace-nav a{padding:11px 12px}
}


/* ===== Pilot 1.0.1 — true one-page-one-task isolation ===== */
/* Shared navigation + page intro remain visible; generic workbench cards do not repeat. */
body[data-page] #heroCard,
body[data-page] #safetyCard,
body[data-page] #feedbackCard,
body[data-page] #scopeCard{
  display:none !important;
}

/* 1｜個案通報：only event + person/contact entry */
body[data-page="case"] #overviewGrid,
body[data-page="case"] #trackingCard{
  display:none !important;
}
body[data-page="case"] #eventCard,
body[data-page="case"] #peopleCard{
  display:block !important;
}

/* 2｜疑似群聚／全院資料：only the hospital/group event form */
body[data-page="cluster"] #overviewGrid,
body[data-page="cluster"] #peopleCard,
body[data-page="cluster"] #trackingCard{
  display:none !important;
}
body[data-page="cluster"] #eventCard{
  display:block !important;
}

/* 3｜感控隔離區追蹤：only daily tracking */
body[data-page="tracking"] #overviewGrid,
body[data-page="tracking"] #eventCard,
body[data-page="tracking"] #peopleCard,
body[data-page="tracking"] #documentCard{
  display:none !important;
}
body[data-page="tracking"] #trackingCard{
  display:block !important;
}

/* 4｜儀表板／表單輸出：only summary + output */
body[data-page="dashboard"] #eventCard,
body[data-page="dashboard"] #peopleCard,
body[data-page="dashboard"] #trackingCard{
  display:none !important;
}
body[data-page="dashboard"] #overviewGrid{
  display:grid !important;
  grid-template-columns:minmax(280px,.8fr) minmax(420px,1.2fr);
}
body[data-page="dashboard"] #overviewCard,
body[data-page="dashboard"] #documentCard{
  display:block !important;
}

/* Stronger page identity */
body[data-page] #pageIntro{
  border-left:4px solid var(--accent);
}
body[data-page="cluster"] #pageIntro .flow-hint,
body[data-page="tracking"] #pageIntro .flow-hint,
body[data-page="dashboard"] #pageIntro .flow-hint{
  background:#fff;
}

@media(max-width:900px){
  body[data-page="dashboard"] #overviewGrid{
    grid-template-columns:1fr;
  }
}


/* ===== Pilot 1.0.2 management dashboard ===== */
.management-dashboard{display:grid;gap:14px;margin:0 0 18px}
.dash-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 20px}
.dash-section-head h2{margin:2px 0 5px;font-size:21px}
.dash-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.dash-kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;min-height:102px;display:flex;flex-direction:column;justify-content:center}
.dash-kpi span{font-size:12px;color:var(--muted)}
.dash-kpi strong{font-size:28px;line-height:1.15;margin:5px 0;color:var(--ink)}
.dash-kpi small{font-size:11px;color:var(--muted)}
.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.dash-panel{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px 18px}
.dash-panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:13px}
.dash-bars{display:grid;gap:10px}
.dash-bar-row{display:grid;grid-template-columns:90px 1fr 86px;gap:10px;align-items:center}
.dash-bar-label{font-weight:700;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-bar-track{height:12px;background:#edf2f2;border-radius:999px;overflow:hidden}
.dash-bar-fill{height:100%;background:var(--accent);border-radius:999px}
.dash-bar-value{font-size:12px;text-align:right;color:var(--muted)}
.epi-mini{display:flex;align-items:flex-end;gap:8px;min-height:170px;padding:15px 4px 0;border-bottom:1px solid var(--line)}
.epi-col{flex:1;min-width:30px;text-align:center;display:flex;flex-direction:column;justify-content:flex-end;height:155px}
.epi-num{font-size:11px;font-weight:800;margin-bottom:4px}
.epi-bar{width:100%;max-width:42px;margin:0 auto;background:var(--accent);border-radius:6px 6px 0 0;min-height:3px}
.epi-date{font-size:10px;color:var(--muted);margin-top:5px;white-space:nowrap}
.clinical-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.clinical-item{padding:11px;border:1px solid var(--line);border-radius:12px;background:#fafcfc}
.clinical-item span{display:block;font-size:11px;color:var(--muted)}
.clinical-item b{font-size:21px;display:block;margin-top:4px}
.dash-alerts{display:grid;gap:8px}
.dash-alert{border:1px solid var(--line);border-radius:11px;padding:10px 12px;font-size:12px;background:#fafcfc}
.dash-alert.warn{background:#fff8e7;border-color:#ead39a}
.dash-alert.danger{background:#fff0ef;border-color:#e4b1ac}
.dash-alert.ok{background:#eff8f3;border-color:#b9d9c7}
.table-wrap{overflow-x:auto}
.dash-table{width:100%;border-collapse:collapse;font-size:12px}
.dash-table th,.dash-table td{padding:10px 8px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
.dash-table th{color:var(--muted);font-weight:700;background:#fafcfc}
@media(max-width:1100px){.dash-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.dash-grid{grid-template-columns:1fr}.dash-kpis{grid-template-columns:1fr 1fr}.clinical-grid{grid-template-columns:1fr 1fr}}

/* ===== Pilot 1.0.3 authorization gate ===== */
.auth-note{
  margin-top:14px;
  padding-top:12px;
  border-top:1px solid var(--line);
  line-height:1.65;
}
.logout-btn{
  margin-left:8px;
  white-space:nowrap;
}


/* ===== Pilot 1.0.4 true physical page separation ===== */
body[data-page="case"] #overviewGrid,
body[data-page="case"] #daily,
body[data-page="cluster"] #overviewGrid,
body[data-page="cluster"] #people,
body[data-page="cluster"] #daily,
body[data-page="tracking"] #newEvent,
body[data-page="tracking"] #people,
body[data-page="tracking"] #overviewGrid,
body[data-page="dashboard"] #newEvent,
body[data-page="dashboard"] #people,
body[data-page="dashboard"] #daily{
  display:none !important;
}

/* ===== Pilot 1.0.5 shared login screen ===== */
.auth-shell{
  min-height:calc(100vh - 70px);
  display:grid;
  place-items:center;
  padding:34px 18px;
  background:linear-gradient(180deg,#f4f8f8 0%,#eef4f4 100%);
}
.auth-card{
  width:min(440px,100%);
  background:#fff;
  border:1px solid var(--line);
  border-radius:18px;
  padding:26px;
  box-shadow:0 12px 36px #20333b14;
}
.auth-brand{font-size:13px;font-weight:800;color:var(--accent);margin-bottom:10px}
.auth-card h1{margin:0 0 8px;font-size:26px}
.auth-fields{display:grid;gap:13px;margin:20px 0 14px}
.auth-fields label{display:grid;gap:6px;font-size:12px;color:var(--muted)}
.auth-fields input{
  width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;
  padding:11px 12px;font-size:15px;background:#fff;color:var(--ink)
}
.auth-fields input:focus{outline:2px solid #bfd8d5;outline-offset:1px}
.auth-login-btn{width:100%;padding:11px 16px;font-size:15px}
.auth-error{
  margin-top:12px;padding:10px 12px;border-radius:10px;
  background:#fff0ef;border:1px solid #e4b1ac;color:#8a332c;font-size:12px;
}
.auth-security-note{
  margin-top:16px;padding:12px 13px;border-radius:12px;
  background:#fff8e7;border:1px solid #ead39a;font-size:12px;line-height:1.65;
}

/* Phase 19: preserve Pilot gate title appearance while keeping one semantic h1 per page. */
.auth-card .auth-title{margin:0 0 8px;font-size:26px}
