/* QueueBD V4: consumer-native dark ticket + touch-first host console */
:root{--v4-night:#07120f;--v4-forest:#0c231b;--v4-lime:#d8f68c;--v4-glass:rgba(255,255,255,.075);--v4-line:rgba(255,255,255,.14)}
body.v4-dark{background:#07120f}
body.v4-dark .topbar{background:#091a14;border-bottom:1px solid #234135;color:#f1f8ef}
body.v4-dark .brand,body.v4-dark .nav-link,body.v4-dark .user-pill{color:#e8f4e9}
body.v4-dark .lang-toggle{background:#142b21;color:#dff3de;border-color:#2b4937}
body.v4-dark .footer{background:#081a12;color:#b3c8b8;border-color:#284234}
.v4-customer{position:relative;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 80% 10%,rgba(73,118,76,.2),transparent 42%),radial-gradient(circle at 6% 92%,rgba(103,149,94,.15),transparent 50%),#08160f;color:#edf8e9}
.v4-customer:before{content:"";position:absolute;inset:0;z-index:-1;opacity:.13;background-image:linear-gradient(#e2f5d8 1px,transparent 1px),linear-gradient(90deg,#e2f5d8 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(transparent 3%,black 42%,transparent 100%)}
.v4-customer .qx-breadcrumb,.v4-customer .qx-breadcrumb a{color:#9dc9ab}
.v4-customer .qx-breadcrumb span{color:#7d947f}
.v4-customer .qx-join-intro .qx-eyebrow,.v4-customer .qx-ticket-panel .qx-eyebrow{color:#bbefaa;font-size:11px;letter-spacing:2px}
.v4-customer .qx-join-intro h1{color:#fff;font-size:clamp(36px,5vw,70px);letter-spacing:-2.8px;line-height:1.05}
.v4-customer .qx-location{color:#afc7b7}
.v4-customer .qx-queue-open{background:rgba(164,248,146,.12);color:#c9f3ac;border:1px solid rgba(176,245,155,.22);backdrop-filter:blur(18px)}
.v4-customer .qx-intro-copy{color:#b5d0bd;font-size:16px}
.v4-customer .qx-wait-stats>div{background:var(--v4-glass);border:1px solid var(--v4-line);backdrop-filter:blur(18px)}
.v4-customer .qx-wait-stats span,.v4-customer .qx-wait-stats small{color:#a2bba9}
.v4-customer .qx-wait-stats strong{color:#e8fac3}
.v4-customer .qx-estimate-note{color:#a8bdac}
.v4-customer .qx-join-panel{background:rgba(17,39,29,.76);border:1px solid rgba(211,253,194,.16);backdrop-filter:blur(28px);box-shadow:0 30px 80px #0004, inset 0 1px #ffffff13}
.v4-customer .qx-form-header h2{color:#f2f9ed;font-size:35px;letter-spacing:-1.5px}
.v4-customer .qx-form-header p{color:#a4c3ab}
.v4-customer .qx-step-label{color:#c9f0b1;background:#244835}
.v4-customer .qx-join-form>label:not(.qx-consent){color:#cadfd1;font-size:12px}
.v4-customer .qx-join-form>input:not([type=hidden]){background:rgba(10,24,19,.75);border:1px solid #42624a;color:#fff;border-radius:14px;min-height:62px;font-size:15px}
.v4-customer .qx-join-form>input:not([type=hidden])::placeholder{color:#9fbaaa}
.v4-customer .qx-input-hint{color:#9ab7a3}
.v4-customer .qx-consent,.v4-customer .qx-consent span{color:#b5cbb8}
.v4-customer .qx-consent a{color:#dbffac}
.v4-customer .qx-existing{background:#1a392a;border-color:#456c4b;color:#d3e7d4}
.v4-customer .qx-existing a{color:#d9f6a1}
.v4-customer .qx-form-foot{color:#b2c8ad}
.v4-customer .qx-closed{background:#34291e;color:#ecdac0;border-color:#6e5334}
.v4-customer .qx-join-submit{background:var(--v4-lime);color:#163725;border-color:transparent;box-shadow:0 13px 32px #9dcf6b27;font-size:16px;min-height:62px;letter-spacing:-.2px}
.v4-customer .qx-join-submit:hover{background:#e8ffa7;color:#173221}
.v4-pax-control{display:grid;grid-template-columns:70px 1fr 70px;align-items:stretch;gap:12px;margin-bottom:22px}
.v4-pax-control button{display:grid;place-items:center;min-height:72px;background:#1c3b2a;border:1px solid #416345;border-radius:15px;color:#e8f8c6;font-size:35px;font-weight:500;touch-action:manipulation}
.v4-pax-control button:hover{background:#2b5039}
.v4-pax-control>div{display:flex;align-items:center;justify-content:center;gap:10px;background:#0b2119;border:1px solid #3d6146;border-radius:15px;color:white}
.v4-pax-control strong{font-size:36px;font-weight:800;line-height:1}
.v4-pax-control span{color:#a8c5b1;font-size:12px}
.v4-customer .qx-ticket-shell{max-width:680px}
.v4-customer .qx-ticket-header{color:#bad0bb}
.v4-customer .qx-ticket-header a{color:#c9f3a7}
.v4-customer .qx-ticket-panel{background:rgba(18,37,28,.8);border:1px solid var(--v4-line);box-shadow:0 30px 90px #0006;backdrop-filter:blur(25px);border-radius:25px;padding:30px}
.v4-customer .qx-ticket-panel h1{font-size:26px;color:#f6fbf5}
.v4-customer .qx-ticket-live{background:#203e2c;border:1px solid #355840;color:#d8f6bd}
.v4-ticket-hero{position:relative;isolation:isolate;min-height:315px!important;background:radial-gradient(circle at 50% 56%,#275744,#10271f 66%,#0a1d16 100%)!important;border:1px solid rgba(207,250,169,.28);box-shadow:inset 0 2px 16px rgba(255,255,255,.035),0 14px 43px #0005;overflow:hidden}
.v4-ticket-hero:before,.v4-ticket-hero:after{content:"";position:absolute;inset:20px 19%;border-radius:50%;border:1px solid rgba(208,246,166,.15);z-index:-1;transform:scale(.95)}
.v4-ticket-hero:after{inset:45px 25%;border-color:rgba(214,251,171,.22)}
.v4-ticket-hero>span{color:#d5e7c9;letter-spacing:2.7px}
.v4-ticket-hero>strong{font-size:clamp(74px,13vw,126px)!important;letter-spacing:-5px!important;line-height:1.15!important;text-shadow:0 0 46px rgba(205,248,160,.27)}
.v4-ticket-hero .qx-ticket-hero-status{background:#d8f68c;color:#143924;border-radius:99px;font-size:13px;padding:10px 20px}
.v4-ticket-hero.qx-ticket-called{background:radial-gradient(circle,#856c2f,#302616 77%)!important;border-color:#d5b56a}
.v4-ticket-hero.qx-ticket-called .qx-ticket-hero-status{background:#ffd36f;color:#403014}
@keyframes v4-ring-pulse{0%{transform:scale(.85);opacity:.55}75%,100%{transform:scale(1.22);opacity:0}}
.v4-pulsing:before{animation:v4-ring-pulse 3.1s ease-out infinite}
.v4-pulsing:after{animation:v4-ring-pulse 3.1s ease-out 1.1s infinite}
.v4-customer .qx-ticket-metrics>div{background:rgba(255,255,255,.065);border:1px solid var(--v4-line)}
.v4-customer .qx-ticket-metrics strong{color:#e1f7b2}
.v4-customer .qx-ticket-metrics span{color:#b9cdbd}
.v4-customer .qx-ticket-note{color:#b4cbba;border-color:#45614b}
.v4-customer .qx-ticket-note>span{color:#c1e6a7}
.v4-customer .qx-soft-action{background:#213e2c;color:#e2f2dc;border:1px solid #385b43}
.v4-customer .qx-leave{background:#412a2a;border-color:#85524a;color:#ffd2c9}
.v4-customer .qx-callout{background:#293b25;border-color:#587b44}
.v4-customer .qx-callout strong{color:#e3f6d2}
.v4-customer .qx-callout p{color:#c0d2b8}
.v4-customer .qx-completed{background:#28372f}
.v4-customer .qx-ticket-toolbar{gap:8px;flex-wrap:wrap}
.v4-customer .qx-ticket-toolbar>button{flex:1;white-space:nowrap;min-height:46px}
.v4-customer .qx-ticket-disclaimer{color:#a4bea6}
/* One-hand host mode: high-contrast single-tap cards + two-tap action sheet */
.qx-workspace{background:#f1f4f1}
.qx-party-list{gap:12px}
.v4-party-card{width:100%;text-align:left;min-height:105px;cursor:pointer;touch-action:manipulation;display:grid!important;grid-template-columns:88px minmax(0,1fr) auto!important;gap:14px!important;border:1px solid #dce5de!important;border-left:5px solid #a2b3a9!important;border-radius:16px!important;box-shadow:0 4px 12px #18332608;background:#fff!important;padding:17px 18px!important}
.v4-party-card:active{transform:scale(.995)}
.v4-party-card:hover{border-color:#89ae91!important;box-shadow:0 12px 25px #1e503116}
.v4-party-called{background:#fff9e9!important;border-color:#ead9a8!important;border-left-color:#dfac32!important}
.v4-party-card .qx-party-code{font-size:25px;font-weight:900;color:#173d31}
.v4-party-card .qx-party-person strong{font-size:17px;color:#1a3d2b}
.v4-party-card .qx-party-person span{font-size:12px;color:#6c8575}
.v4-card-right{display:flex;align-items:center;gap:14px}
.v4-state{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.65px;border-radius:9px;padding:9px 12px}
.v4-gray{background:#edf1ee;color:#5d7465}.v4-amber{background:#ffe5a6;color:#81581c}
.v4-card-chevron{font-size:30px;color:#749781;font-weight:500}
.v4-party-filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}
.v4-party-filters button{min-height:52px;padding:10px 17px;border:1px solid #dce6dd;border-radius:12px;background:#fff;color:#466854;font-size:13px;font-weight:850;touch-action:manipulation}
.v4-party-filters button.active{background:#194937;color:#fff;border-color:#194937;box-shadow:0 9px 20px #143d2e24}
.v4-sheet{position:fixed;inset:0;z-index:9999;display:flex;align-items:flex-end;justify-content:center;font-family:Inter,system-ui,sans-serif}
.v4-sheet-backdrop{position:absolute;inset:0;background:rgba(7,20,13,.67);backdrop-filter:blur(9px)}
.v4-sheet-panel{position:relative;width:min(560px,100%);padding:19px 23px 24px;background:#f9fcf8;border-radius:28px 28px 0 0;box-shadow:0 -20px 90px #0004;max-height:92vh;overflow:auto}
.v4-sheet-grip{width:55px;height:5px;border-radius:100px;margin:0 auto 24px;background:#d7e1d8}
.v4-sheet-heading{display:flex;justify-content:space-between;gap:15px;align-items:flex-start;padding-bottom:18px;border-bottom:1px solid #e3ebe4}
.v4-sheet-eyebrow{font-size:11px;font-weight:850;letter-spacing:1.3px;color:#8b9f8b}
.v4-sheet-heading h2{font-size:29px;line-height:1.2;color:#173c2c;letter-spacing:-.8px;margin:8px 0}
.v4-sheet-heading p{color:#788d7c;font-size:13px;margin:0}
.v4-sheet-close{border:1px solid #dde8df;background:#fff;border-radius:13px;font-size:25px;min-width:50px;min-height:50px;color:#45694b}
.v4-sheet-options{display:grid;gap:11px;padding-top:19px}
.v4-sheet-primary,.v4-sheet-secondary{min-height:63px;touch-action:manipulation;font-weight:850;font-size:16px;border:1px solid #d8e5da;border-radius:14px;background:#fff;color:#345441}
.v4-sheet-primary{background:#21593f;color:white;border:0}
.v4-sheet-primary.v4-amber-action{background:#edc05a;color:#453418}
.v4-sheet-primary.v4-green-action{background:#1f6a4a;color:white}
.v4-sheet-secondary.v4-danger-action{background:#fff8f6;color:#ba5954;border-color:#f1dcda}
.v4-sheet-disclaimer{font-size:11px;color:#8d9e91;line-height:1.6;margin:15px 4px 0}
/* Walk-in number pad: only party size entered numerically; name still required */
.v4-keypad-title{font-size:12px;font-weight:800;color:#42634c}
.v4-keypad-screen{display:flex;align-items:baseline;justify-content:center;gap:13px;padding:13px;border-radius:13px;background:#f1f6ee;border:1px solid #e0e9de;color:#1b5739}
.v4-keypad-screen strong{font-size:45px;line-height:1.25}.v4-keypad-screen span{font-size:12px;color:#6f8a73}
.v4-keypad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.v4-keypad button{min-height:56px;border:1px solid #dfe7de;border-radius:12px;font-size:21px;font-weight:700;background:#fff;color:#23523c;touch-action:manipulation}
.v4-keypad button:active{background:#d8edc6}
.qx-history-board .qx-party-row{background:#e3f2e4}
@media(max-width:700px){.v4-customer .qx-join-panel,.v4-customer .qx-ticket-panel{padding:24px 18px}.v4-pax-control{grid-template-columns:66px 1fr 66px}.v4-ticket-hero{min-height:275px!important}.v4-party-card{min-height:95px!important;grid-template-columns:65px minmax(0,1fr) auto!important;padding:13px!important;gap:8px!important}.v4-card-right{gap:7px}.v4-state{padding:8px;font-size:10px}.v4-party-card .qx-party-code{font-size:19px}.v4-party-card .qx-party-person strong{font-size:14px}.v4-party-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.v4-party-filters button{font-size:11px;padding:8px 1px;min-height:51px}.v4-sheet-panel{padding-bottom:max(24px,env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){.v4-pulsing:before,.v4-pulsing:after{animation:none}}
