:root{--ink:#17212b;--muted:#607080;--line:#dce4e8;--bg:#f5f7f8;--card:#fff;--teal:#087c78;--teal2:#dff4f2;--navy:#173b57;--red:#b23b3b;--amber:#a86700;--green:#24734c}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;line-height:1.5}a{color:var(--teal);text-decoration:none}a:hover{text-decoration:underline}.topbar{background:var(--navy);color:white;padding:0 28px;height:64px;display:flex;align-items:center;justify-content:space-between}.brand{font-weight:750;letter-spacing:.2px}.topbar a{color:white}.top-actions{display:flex;gap:18px;align-items:center}.container{max-width:1440px;margin:0 auto;padding:28px}.notice{background:#fff8dc;border:1px solid #efd88c;padding:10px 14px;border-radius:8px;margin-bottom:18px;color:#725a00}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:20px}.page-head h1{margin:0;font-size:27px}.sub{color:var(--muted);margin:5px 0 0}.button,button{border:0;border-radius:8px;background:var(--teal);color:#fff;padding:10px 15px;font-weight:700;cursor:pointer;font-size:16px}.button.secondary,button.secondary{background:white;color:var(--ink);border:1px solid var(--line)}.button.danger{background:var(--red)}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:17px;box-shadow:0 1px 2px #1020300a}.metric{font-size:29px;font-weight:800;color:var(--navy)}.metric-label{color:var(--muted);font-size:16px}.filters{display:grid;grid-template-columns:2fr repeat(4,1fr) auto;gap:10px;background:white;padding:15px;border:1px solid var(--line);border-radius:12px;margin-bottom:16px}input,select,textarea{width:100%;border:1px solid #bdc9cf;border-radius:7px;padding:9px 10px;background:white;color:var(--ink);font:inherit}textarea{min-height:112px;resize:vertical}label{display:block;font-weight:700;font-size:16px;margin-bottom:5px}.table-wrap{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:auto}table{border-collapse:collapse;width:100%;font-size:16px}th{text-align:left;background:#edf3f5;color:#304754;padding:11px 10px;white-space:nowrap;border-bottom:1px solid var(--line)}td{padding:11px 10px;border-bottom:1px solid #e9eef0;vertical-align:top}tr:hover td{background:#f8fbfb}.pill{display:inline-block;padding:3px 8px;border-radius:999px;background:#e9eef2;color:#40515d;font-size:16px;font-weight:700;white-space:nowrap}.pill.open{background:#dff3e7;color:var(--green)}.pill.pause{background:#ffebcf;color:var(--amber)}.pill.prepare{background:#e7ebff;color:#3f50a0}.layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:18px}.panel{background:white;border:1px solid var(--line);border-radius:12px;padding:20px;margin-bottom:16px}.panel h2{margin:0 0 15px;font-size:18px}.detail-grid,.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px 22px}.wide{grid-column:1/-1}.value{white-space:pre-wrap}.value-label{font-size:16px;color:var(--muted);font-weight:700;margin-bottom:3px}.audit{border-left:3px solid var(--teal2);padding:7px 0 7px 12px;margin:8px 0;font-size:16px}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#173b57,#087c78)}.login-card{width:min(430px,100%);background:white;border-radius:16px;padding:30px;box-shadow:0 20px 60px #10203045}.login-card h1{margin:0 0 6px}.login-card form{display:grid;gap:14px;margin-top:22px}.error{background:#fde8e8;color:#8d2424;padding:10px;border-radius:7px}.footer{color:var(--muted);font-size:16px;text-align:center;padding:22px}.empty{padding:38px;text-align:center;color:var(--muted)}@media(max-width:900px){.cards{grid-template-columns:1fr 1fr}.filters{grid-template-columns:1fr 1fr}.layout{grid-template-columns:1fr}.detail-grid,.form-grid{grid-template-columns:1fr}.wide{grid-column:auto}.container{padding:18px}.topbar{padding:0 18px}}@media(max-width:560px){.cards,.filters{grid-template-columns:1fr}.top-actions span{display:none}}

/* v4.7: separate text labels from controls; visible secondary actions. */
.trial-form label > input:not([type=checkbox]):not([type=radio]),
.trial-form label > textarea { margin-top: 12px; }
.button.secondary, button.secondary { background: #d9eee2; color: #164e3d; border-color: #8dbda5; }
.button.secondary:hover, button.secondary:hover { background: #c1e1cf; }
.button.secondary:focus-visible, button.secondary:focus-visible { outline: 3px solid #16745c; outline-offset: 3px; }
