/* CHS operational screens: original mobile hierarchy with the approved festival palette. */
.ops-page { width:100%; min-width:0; padding-bottom:88px; }
.ops-page .heading h1 { white-space:pre-line; font-size:25px; line-height:1.45; letter-spacing:-1px; }
.ops-page .heading .muted { white-space:pre-line; font-size:13px; line-height:1.7; }
.ops-page h3 { font-size:15px; line-height:1.5; }
.ops-page .card { padding:18px; background:#fff; border:1px solid var(--border); }
.ops-page>.button { width:100%; }
.ops-centered { text-align:center; padding:16px 0 8px; }
.ops-hero { display:grid; place-items:center; width:68px; height:68px; margin:0 auto 20px; border-radius:50%; background:#fff0de; color:#d84c0b; }
.ops-hero .icon { font-size:32px; }
.ops-hero-check { background:#fff5ce; color:#946e00; }
.ops-login { display:flex; flex-direction:column; min-height:calc(100dvh - 164px); padding-bottom:0; }
.ops-login-guide h3 { margin-bottom:16px; }
.ops-guide-row { display:flex; align-items:flex-start; gap:10px; margin:14px 0; }
.ops-guide-row>span { display:grid; place-items:center; flex-shrink:0; width:23px; height:23px; border-radius:50%; background:#fff0de; color:#a73d09; font-size:12px; font-weight:700; }
.ops-guide-row>p { font-size:13px; margin:0; line-height:1.8; }
.ops-event-note { background:#eef8fc; color:#23458f; }
.ops-event-note p { margin:5px 0 0; }
.ops-login-bottom { margin-top:auto; padding-top:24px; text-align:center; }
.ops-login-bottom>.button { font-size:12px; }
.ops-role-code { text-align:center; margin:24px 0; }
.ops-role-code>b { display:block; font:700 26px/1.5 ui-monospace,monospace; letter-spacing:5px; color:#23458f; overflow-wrap:anywhere; }
.ops-row { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.ops-row>h3 { flex:1; margin:0; min-width:0; }
.ops-row>.badge { flex:none; white-space:nowrap; }
.ops-data-row { padding:11px 0; font-size:12px; border-bottom:1px solid #edf0f2; }
.ops-data-row:last-child { border-bottom:0; padding-bottom:0; }
.ops-data-row p { margin:0; font-size:12px; }
.ops-data-row>b { font-size:12px; text-align:right; }
.ops-statuses { display:flex; gap:6px; margin:12px 0; }
.ops-event-summary .small { margin-top:6px; }
.ops-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin:20px 0; }
.ops-metric { padding:14px 7px; background:#fff; border:1px solid var(--border); border-radius:12px; text-align:center; }
.ops-metric>p { font-size:11px; margin:0 0 8px; }
.ops-metric>b { font-size:22px; line-height:1.25; overflow-wrap:anywhere; color:#23458f; }
.ops-connection .small { margin-top:12px; }
.ops-details { margin:20px 0; font-size:13px; }
.ops-details summary { cursor:pointer; color:#536179; padding:12px 0; }
.ops-desk-links { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:12px 0; }
.ops-desk-links>.button { font-size:12px; padding:12px 6px; }
.ops-actions { position:fixed; bottom:0; left:50%; transform:translateX(-50%); width:min(430px,100%); box-sizing:border-box; padding:12px 20px max(14px,env(safe-area-inset-bottom)); z-index:20; background:#fbfcf8; border-top:1px solid #edf0ec; display:flex; flex-direction:column; gap:8px; }
.ops-actions>.button { width:100%; margin:0; min-height:46px; }
.ops-actions>.button.text { min-height:26px; padding:0; font-size:12px; color:#617083; }
.ops-actions>.small { text-align:center; font-size:10px; line-height:1.55; margin:0; }
.ops-ticket-code { margin:24px 0; text-align:center; }
.ops-ticket-code>b { display:block; font:700 30px/1.5 ui-monospace,monospace; letter-spacing:5px; padding:14px 12px; background:#fff; border:1px solid var(--border); border-radius:12px; overflow-wrap:anywhere; }
.ops-countdown { color:#a73d09; font-weight:700; font-size:13px; }
.ops-scan-guide>.button { width:100%; margin:14px 0 0; }
.ops-support-options .ops-choice { display:flex; align-items:center; gap:10px; width:100%; padding:14px 10px; margin-top:10px; border:1px solid var(--border); background:#fff; border-radius:10px; text-align:left; font:inherit; font-size:13px; cursor:pointer; }
.ops-support-options .ops-choice[aria-pressed=true] { background:#fff0de; border-color:#e6a078; color:#a73d09; }
.ops-choice-mark { font-size:18px; }
.ops-choice:focus-visible { outline:3px solid #2674c7; outline-offset:3px; }
@media(max-width:350px) { .ops-page .heading h1{font-size:23px} .ops-metrics{gap:6px}.ops-data-row{gap:8px}.ops-ticket-code>b{font-size:25px;letter-spacing:3px} }

.ops-login-bottom{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(430px,100%);box-sizing:border-box;background:#fbfcf8;padding:14px 20px max(14px,env(safe-area-inset-bottom));z-index:20;border-top:1px solid #edf0ec}.ops-login{padding-bottom:160px;min-height:0}.ops-login-bottom .login-actions{gap:10px}.ops-login-bottom>.button.text{min-height:26px;padding:0;margin-top:10px}

/* Avoid a transformed ancestor so nested dialogs remain fixed to the viewport. */
.ops-actions,.ops-login-bottom{left:0;right:0;margin-left:auto;margin-right:auto;transform:none}
