/* Live queue: practitioner console (inside the app layout), TV display and the patient's phone page. */
:root{--q-accent:var(--primary,#0d9488);--q-ink:#111827;--q-mute:#6b7280;--q-card:#fff;--q-line:#e5e7eb}
.q-body{margin:0;font:16px/1.45 system-ui,"Segoe UI","Noto Sans",sans-serif;background:#f3f5f7;color:var(--q-ink);min-height:100vh}
.q-hp{position:absolute;left:-9999px;opacity:0;height:0}
.q-btn{display:block;width:100%;border:0;border-radius:14px;background:var(--q-accent);color:#fff;font:600 1.05rem system-ui;padding:14px;cursor:pointer;margin-top:12px}
.q-btn.q-ghost{background:transparent;color:var(--q-mute);border:1px solid var(--q-line)}
.q-error{background:#fef2f2;color:#b91c1c;border-radius:10px;padding:10px 12px}

/* patient page */
.me-wrap{max-width:460px;margin:0 auto;padding:22px 14px}
.me-card{background:var(--q-card);border-radius:22px;padding:22px;text-align:center;box-shadow:0 10px 34px rgba(0,0,0,.08);transition:background .4s,box-shadow .4s}
.me-card label{display:block;text-align:left;margin-top:12px;font-weight:600}
.me-card input[type=text],.me-card input[type=tel]{width:100%;box-sizing:border-box;padding:12px;border:1px solid var(--q-line);border-radius:12px;font:inherit;margin-top:4px}
.me-label{margin:0;color:var(--q-mute);font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}
.me-token{font:800 4.6rem/1.05 system-ui;letter-spacing:.02em;color:var(--q-accent)}
.me-sub,.me-note{color:var(--q-mute)}.me-note{font-size:.85rem}
.me-big{font-size:1.5rem;font-weight:700;margin:.6rem 0 .3rem}
.me-called{background:var(--q-accent);color:#fff;box-shadow:0 0 0 0 rgba(13,148,136,.6);animation:q-ring 1.4s ease-out infinite}
.me-called .me-token,.me-called .me-label,.me-called .me-sub{color:#fff}
.me-pulse{animation:q-pulse 1s ease-in-out infinite}
.me-done,.me-cancelled{opacity:.85}
@keyframes q-pulse{50%{transform:scale(1.06)}}
@keyframes q-ring{0%{box-shadow:0 0 0 0 rgba(13,148,136,.55)}100%{box-shadow:0 0 0 28px rgba(13,148,136,0)}}
@keyframes q-pop{0%{transform:scale(.92);opacity:0}60%{transform:scale(1.05)}100%{transform:none;opacity:1}}

/* TV display: tokens only */
.q-tv{background:#0b1220;color:#fff;overflow:hidden}
.q-tv main{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto;padding:3vh 4vw;position:relative}
.tv-head h1{margin:0;font-size:clamp(1.6rem,3.2vw,3rem)}.tv-head p{margin:0;color:var(--text-muted);font-size:clamp(1rem,1.8vw,1.6rem)}
#tv-board{display:grid;align-content:center;gap:4vh}
.tv-banner{background:#f59e0b;color:var(--text-primary);border-radius:14px;padding:1vh 2vw;font-size:clamp(1.2rem,2.4vw,2.2rem);font-weight:700;text-align:center}
.tv-label{margin:0;color:var(--text-muted);text-transform:uppercase;letter-spacing:.14em;font-size:clamp(.9rem,1.6vw,1.5rem)}
.tv-token{font:800 clamp(6rem,20vw,18rem)/1 system-ui;letter-spacing:.03em;color:#34d399}
.tv-now.is-fresh .tv-token{animation:q-pop .7s cubic-bezier(.2,.8,.2,1)}
.tv-idle{font-size:clamp(2rem,6vw,6rem);font-weight:700;color:var(--text-muted);padding:4vh 0}
.tv-go{margin:0;font-size:clamp(1.4rem,3vw,3rem);color:#fbbf24;animation:q-pulse 1.2s ease-in-out infinite}
.tv-chips{display:flex;gap:1.4vw;flex-wrap:wrap;margin-top:1vh}
.tv-chip{background:#1f2937;border-radius:16px;padding:.5vh 1.6vw;font:700 clamp(2rem,5vw,5rem)/1.2 system-ui}
.tv-chip.is-fresh{animation:q-pop .6s ease-out}
.tv-none{color:var(--text-muted);font-size:clamp(1.2rem,2.4vw,2.4rem)}
.tv-foot{display:flex;justify-content:space-between;color:var(--text-muted);font-size:clamp(1rem,2vw,2rem)}
.tv-join{position:absolute;right:4vw;top:3vh;text-align:center;color:var(--text-muted);font-size:clamp(.8rem,1.3vw,1.2rem)}
.tv-qr{background:var(--bg-white);padding:.8vw;border-radius:14px;width:clamp(110px,14vw,220px)}.tv-qr svg{width:100%;height:auto;display:block}

/* practitioner console */
.qb-links{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px}
.qb-settings{display:grid;gap:8px;padding:10px;border:1px solid var(--q-line);border-radius:12px;margin-top:8px;background:var(--bg-white)}
.qb-error{background:#fef2f2;color:#b91c1c;border-radius:10px;padding:10px 12px;margin-bottom:10px}
.qb-bar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;align-items:center;margin-bottom:12px}
.qb-stats{display:flex;flex-wrap:wrap;gap:6px 18px;color:var(--q-mute)}.qb-stats b{color:var(--q-ink)}
.qb-trio{display:grid;grid-template-columns:1fr 1.5fr 1fr;gap:14px;align-items:stretch}
.qb-card{background:var(--bg-white);border:1px solid var(--q-line);border-radius:18px;padding:16px;text-align:center;transition:transform .35s,box-shadow .35s}
.qb-cur{border:2px solid var(--q-accent);box-shadow:0 10px 30px rgba(13,148,136,.15)}
.qb-prev,.qb-next{opacity:.92}
.qb-label{margin:0 0 4px;color:var(--q-mute);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}
.qb-token{font:800 2.2rem/1.1 system-ui;color:var(--q-accent)}.qb-token.big{font-size:4rem}.qb-token.sm{font-size:1.2rem;min-width:4.2rem;text-align:left}
.qb-name{font-size:1.15rem;font-weight:600;margin:.2rem 0}
.qb-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:10px}
.qb-callnext{font-size:1.15rem;padding:12px 22px}
.is-fresh{animation:q-pop .5s ease-out}
.qb-list{margin-top:16px;background:var(--bg-white);border:1px solid var(--q-line);border-radius:16px;padding:6px 14px}
.qb-list h3{margin:8px 0;font-size:1rem}
.qb-row{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;padding:8px 0;border-top:1px solid var(--q-line)}
.qb-row.is-priority{background:linear-gradient(90deg,#fff7ed,transparent)}
.qb-who{flex:1;min-width:140px}.qb-urgent{color:#c2410c}
.qb-row-actions{display:flex;gap:6px;flex-wrap:wrap}
.qb-add{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:16px;padding:12px;background:var(--bg-white);border:1px dashed var(--q-line);border-radius:14px}
.qb-add input[type=text],.qb-add input[type=tel]{padding:8px;border:1px solid var(--q-line);border-radius:10px}
@media (max-width:820px){.qb-trio{grid-template-columns:1fr}.qb-cur{order:-1}.me-token{font-size:4rem}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
