:root{font-family:system-ui,-apple-system,'Noto Sans TC','Microsoft JhengHei',sans-serif;color:#182235;background:#f5f6fa;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,a{font:inherit}a{color:#345ee8;text-decoration:none}a:hover{text-decoration:underline}
.wrap{width:min(94%,750px);margin:32px auto 80px}.top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.brand{font-size:19px;font-weight:850;letter-spacing:.02em}.top a{font-size:14px}.card{border:1px solid #e4e7ef;background:#fff;box-shadow:0 8px 30px #222b450a;border-radius:20px;padding:26px;margin:16px 0}
.hero{text-align:center;padding:40px 25px}.eyebrow{font-size:13px;color:#64748b;font-weight:700;letter-spacing:.12em;margin:0 0 6px}.title{font-size:30px;line-height:1.3;margin:8px 0 14px}.lead{color:#5a6478;line-height:1.8}.number{font-size:clamp(65px,15vw,110px);font-weight:900;line-height:1.28;letter-spacing:-.045em;color:#254de4;margin:5px 0}.soft{color:#64748b}.sub{font-size:14px;color:#64748b;line-height:1.8}.big{font-size:24px;font-weight:800}.row{display:flex;align-items:center;justify-content:space-between;gap:12px}.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.stat{background:#f2f5ff;padding:15px;border-radius:12px}.stat .label{font-size:13px;color:#58657e}.stat .value{font-size:25px;font-weight:800;margin-top:5px}
.btn{border:0;background:#315fe8;color:#fff;cursor:pointer;min-height:49px;border-radius:13px;padding:12px 19px;font-weight:800;text-align:center;display:inline-flex;justify-content:center;align-items:center;gap:8px}.btn:hover{filter:brightness(.95);text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.full{width:100%}.btn.muted{background:#eef2ff;color:#2944a9}.btn.light{background:#eff2f7;color:#263347}.btn.danger{background:#fff1f2;color:#aa2840}.btn.line{background:#06c755;color:white}.btn.large{min-height:58px;font-size:19px}.actions{display:flex;gap:10px;flex-wrap:wrap}.actions .btn{flex:1}.pill{font-weight:800;display:inline-block;border-radius:99px;padding:7px 13px;font-size:13px;background:#e7f5ed;color:#13744a}.pill.closed{background:#fbe8e8;color:#9b2d3e}.pill.waiting{background:#fff3d4;color:#84550b}.pill.called{background:#dcfce7;color:#166534}.notice{background:#fff9ea;border:1px solid #ffe6a9;border-radius:12px;padding:14px;line-height:1.7;color:#70500b;font-size:14px}.notice.ok{background:#edfbf0;border-color:#b5e9bd;color:#17622e}.notice.error{background:#fff0f0;border-color:#ffc5c5;color:#9a1c1c}.hide{display:none!important}.divider{height:1px;background:#e9edf4;margin:21px 0}input{display:block;padding:14px 15px;border:1px solid #cdd5e4;border-radius:12px;width:100%;outline:0}input:focus{border-color:#315fe8;box-shadow:0 0 0 3px #315fe81a}label{display:block;font-size:14px;font-weight:750;margin-bottom:8px}.spacer{height:12px}.tableWrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}td,th{text-align:left;padding:11px 8px;border-bottom:1px solid #edf0f5}th{color:#5b6679}td:last-child,th:last-child{text-align:right}.message{font-size:14px;color:#5e6a80;min-height:22px}.message.error{color:#c62828}.sectionTitle{font-size:21px;font-weight:850;margin:0 0 14px}.tiny{font-size:12px;color:#7c8496}.qrSheet{text-align:center}.qrSheet img{display:block;margin:18px auto;width:min(100%,370px);height:auto}.qrTitle{font-size:34px;font-weight:900}.printOnly{display:none}
@media(max-width:520px){.wrap{margin:15px auto 45px}.card{padding:20px 17px;border-radius:16px}.hero{padding:35px 20px}.title{font-size:24px}.actions{flex-direction:column}.stats{gap:10px}.brand{font-size:16px}}@media print{body{background:white}.noPrint{display:none!important}.printOnly{display:block}.wrap{max-width:750px;margin:0 auto}.card{box-shadow:none;border:none}.qrTitle{font-size:44px}.qrSheet img{width:390px}}

.adminTitle{margin-top:18px}
/* 叫號的頁面內警示；尊重使用者減少動畫的偏好 */
[hidden]{display:none!important}
.nearNotice{margin-top:14px;font-weight:750}
.calledNotice{margin-top:14px;background:#e4f9ec;color:#135b30;border:2px solid #42be72;font-weight:900;font-size:21px;line-height:1.6}
.isCalled{border-color:#42be72;box-shadow:0 0 0 2px #42be7233}
.connectionWarning{color:#b45309!important;font-weight:750}
@media(prefers-reduced-motion: no-preference){.isCalled .number{animation:calledPulse 1.5s ease-in-out infinite}@keyframes calledPulse{50%{opacity:.6}}}
/* v2 GitHub Pages + Supabase 補充 */
.qrCanvas{display:flex;justify-content:center;align-items:center;margin:20px auto;min-height:320px}
.qrCanvas canvas,.qrCanvas img{max-width:100%;height:auto}
@media print{.qrCanvas{min-height:0}.qrCanvas img,.qrCanvas canvas{width:320px!important;height:320px!important}}

/* v2.3.4: Light management theme with accessible blue selected navigation. */
body.managementLight{background:#f5f7fb;color:#1c2940}
.managementLight .wrap{width:min(94%,820px)}
.managementLight .top{padding:3px 2px}
.managementLight .top .brand{color:#1e355c}
.managementLight .card{background:#fff;border:1px solid #e1e7f0;box-shadow:0 10px 28px rgba(32,55,95,.065)}
.managementLight .stat{background:#eef4ff}
.managementLight .stat .value{color:#234aaf}
.managementLight input{background:#fff;color:#1c2940}
.managementLight .manageNav{margin:18px 0 22px;padding:22px 24px;background:#fff;border:1px solid #e0e7f2;box-shadow:0 8px 24px rgba(24,50,95,.055);border-radius:18px;color:#20304b}
.managementLight .manageNavLabel{margin:0 0 16px;color:#66768e;font-size:13px;font-weight:800;letter-spacing:.07em}
.managementLight .manageNavButtons{display:flex;flex-wrap:wrap;gap:12px}
.managementLight .manageNavButton{display:inline-flex;justify-content:center;align-items:center;min-height:58px;min-width:172px;padding:13px 22px;background:#f2f5fb;border:1px solid #dce4f0;border-radius:10px;color:#33445f;font-size:16px;font-weight:700;line-height:1.4;text-align:center;text-decoration:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}
.managementLight .manageNavButton:hover{background:#e6eefb;border-color:#b3c7e7;color:#1a3e7d;text-decoration:none}
.managementLight .manageNavButton:focus-visible{outline:3px solid #315fe8;outline-offset:3px}
.managementLight .manageNavButton.isActive,.managementLight .manageNavButton[aria-current="page"]{background:#315fe8;border-color:#315fe8;color:#fff;font-weight:850;box-shadow:0 3px 9px rgba(49,95,232,.18);cursor:default}
.managementLight .manageNavButton.isActive:hover{background:#274fc7;border-color:#274fc7;color:#fff}
.managementLight .manageNavButton.isActive:focus-visible{outline:3px solid #183c99;outline-offset:3px}
@media(max-width:520px){.managementLight .manageNav{padding:18px 14px;border-radius:15px}.managementLight .manageNavButtons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.managementLight .manageNavButton{min-width:0;min-height:66px;padding:10px 7px;font-size:13px}}
@media(prefers-reduced-motion:reduce){.managementLight .manageNavButton{transition:none}}
@media print{body.managementLight{background:#fff}.managementLight .manageNav{box-shadow:none}}

/* v2.3.5: Accessible blue buttons for management page header actions. */
.managementLight .top .topActionButton{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;min-height:44px;padding:10px 17px;background:#315fe8;border:1px solid #315fe8;border-radius:11px;color:#fff;font-size:14px;font-weight:800;line-height:1.4;text-decoration:none;box-shadow:0 3px 9px rgba(49,95,232,.13);transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}
.managementLight .top .topActionButton:hover{background:#274fc7;border-color:#274fc7;color:#fff;text-decoration:none;box-shadow:0 4px 12px rgba(49,95,232,.2)}
.managementLight .top .topActionButton:focus-visible{outline:3px solid #183c99;outline-offset:3px}
.managementLight .top .topActionButton:active{background:#1e41a9}
@media(max-width:520px){.managementLight .top{flex-wrap:wrap;row-gap:10px}.managementLight .top .topActionButton{margin-left:auto;font-size:13px;min-height:42px;padding:9px 13px}}
@media(prefers-reduced-motion:reduce){.managementLight .top .topActionButton{transition:none}}
@media print{.managementLight .top .topActionButton{display:none}}
