*{box-sizing:border-box}body.pos-page{margin:0;background:#07080b;color:#fff;font-family:"DM Sans",Arial,sans-serif;min-height:100vh}.pos-bg{position:fixed;inset:0;z-index:-2;background:radial-gradient(circle at 15% 10%,rgba(210,255,64,.15),transparent 32%),radial-gradient(circle at 90% 30%,rgba(94,78,255,.18),transparent 35%),linear-gradient(145deg,#050609,#11141b)}.pos-shell{width:min(1480px,100%);margin:auto;padding:24px}.pos-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.pos-brand{display:flex;align-items:center;gap:14px}.pos-logo{width:118px;filter:invert(1)}.pos-kicker{font-size:11px;letter-spacing:.16em;color:#cfff3f;font-weight:800}.pos-title{margin:2px 0 0;font:800 clamp(22px,3vw,36px)/1.05 Manrope,Arial}.pos-actions{display:flex;gap:9px;flex-wrap:wrap}.pos-btn{border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);color:#fff;border-radius:14px;padding:11px 15px;font-weight:800;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px}.pos-btn:hover{background:rgba(255,255,255,.1)}.pos-btn.primary{background:#cfff3f;color:#090b0d;border-color:#cfff3f}.pos-btn.danger{background:#ff4f5e;color:#fff;border-color:#ff4f5e}.pos-btn:disabled{opacity:.45;cursor:not-allowed}.glass{background:rgba(18,21,28,.82);border:1px solid rgba(255,255,255,.11);box-shadow:0 18px 70px rgba(0,0,0,.35);backdrop-filter:blur(18px);border-radius:22px}.pos-session{display:flex;justify-content:space-between;gap:16px;padding:14px 17px;margin-bottom:18px;color:#c8cbd2;font-size:13px}.pos-session strong{color:#fff}.pos-layout{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:18px}.pos-products{padding:18px;min-height:70vh}.pos-toolbar{display:flex;gap:10px;justify-content:space-between;margin-bottom:16px}.pos-search{flex:1;border:1px solid rgba(255,255,255,.13);background:#0d1015;color:#fff;border-radius:14px;padding:13px 14px;font:inherit}.category-tabs{display:flex;gap:8px;overflow:auto;margin-bottom:16px;padding-bottom:3px}.category-tab{white-space:nowrap;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#c8cbd2;padding:9px 12px;border-radius:999px;font-weight:700;cursor:pointer}.category-tab.active{background:#fff;color:#090b0d}.product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:12px}.product-card{border:1px solid rgba(255,255,255,.11);background:linear-gradient(150deg,rgba(255,255,255,.07),rgba(255,255,255,.025));border-radius:18px;padding:15px;cursor:pointer;min-height:142px;display:flex;flex-direction:column;transition:.18s ease}.product-card:hover{transform:translateY(-2px);border-color:rgba(207,255,63,.5)}.product-icon{width:43px;height:43px;border-radius:13px;background:rgba(207,255,63,.12);display:grid;place-items:center;font-size:22px;margin-bottom:14px}.product-card h3{margin:0 0 5px;font-size:15px}.product-meta{color:#8f94a0;font-size:12px}.product-price{margin-top:auto;font:800 18px Manrope;color:#cfff3f}.pos-cart{padding:18px;position:sticky;top:18px;height:calc(100vh - 36px);display:flex;flex-direction:column}.cart-head{display:flex;justify-content:space-between;align-items:center}.cart-head h2{margin:0;font-size:22px}.cart-items{overflow:auto;flex:1;margin:15px 0}.empty-state{text-align:center;color:#777e8c;padding:50px 14px}.cart-row{display:grid;grid-template-columns:1fr auto;gap:8px;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.08)}.cart-row h4{margin:0 0 5px;font-size:14px}.cart-row small{color:#8f94a0}.qty-control{display:flex;align-items:center;gap:8px}.qty-control button{width:28px;height:28px;border-radius:9px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.05);color:#fff;cursor:pointer}.cart-summary{border-top:1px solid rgba(255,255,255,.12);padding-top:13px}.summary-row{display:flex;justify-content:space-between;margin:8px 0;color:#b8bdc7}.summary-row.total{font:800 22px Manrope;color:#fff;margin:15px 0}.customer-box{display:grid;grid-template-columns:1fr auto;gap:8px;margin:12px 0}.customer-box input{min-width:0;border:1px solid rgba(255,255,255,.13);background:#0d1015;color:#fff;border-radius:12px;padding:11px}.balance-pill{padding:9px 11px;border-radius:12px;background:rgba(207,255,63,.12);color:#cfff3f;font-weight:800;font-size:12px}.pay-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pay-grid .pos-btn{padding:13px 8px}.pos-modal{position:fixed;inset:0;background:rgba(0,0,0,.76);display:none;place-items:center;padding:18px;z-index:99}.pos-modal.open{display:grid}.modal-card{width:min(520px,100%);padding:24px}.modal-card h2{margin-top:0}.field{display:grid;gap:6px;margin:12px 0}.field label{font-size:12px;color:#aab0bb;font-weight:700}.field input,.field select{border:1px solid rgba(255,255,255,.13);background:#0d1015;color:#fff;border-radius:12px;padding:12px;font:inherit}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.toast{position:fixed;right:18px;bottom:18px;z-index:120;background:#fff;color:#0a0b0d;padding:13px 17px;border-radius:14px;font-weight:800;box-shadow:0 14px 40px #0008;transform:translateY(130%);transition:.25s}.toast.show{transform:translateY(0)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#cfff3f;margin-right:6px}.admin-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.metric{padding:18px}.metric span{color:#959ba7;font-size:12px}.metric strong{display:block;font:800 27px Manrope;margin-top:7px}.admin-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}.admin-card{padding:19px}.admin-card h2{margin-top:0}.table-wrap{overflow:auto}.pos-table{width:100%;border-collapse:collapse;min-width:620px}.pos-table th,.pos-table td{text-align:left;padding:11px;border-bottom:1px solid rgba(255,255,255,.08);font-size:13px}.pos-table th{color:#8f94a0;font-size:11px;text-transform:uppercase}.badge{display:inline-flex;padding:5px 8px;border-radius:999px;background:rgba(255,255,255,.08);font-size:11px;font-weight:800}.badge.success{background:rgba(207,255,63,.13);color:#cfff3f}.inline-form{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:8px;margin-bottom:14px}.inline-form input,.inline-form select{border:1px solid rgba(255,255,255,.13);background:#0d1015;color:#fff;border-radius:12px;padding:10px;min-width:0}.scanner-box{padding:20px;text-align:center}.scan-input{width:100%;max-width:560px;border:1px solid rgba(255,255,255,.14);background:#0d1015;color:#fff;border-radius:15px;padding:15px;font-size:16px}.scan-result{margin:16px auto 0;max-width:560px;padding:18px;border-radius:16px;background:rgba(255,255,255,.05);min-height:70px}.scan-result.success{border:1px solid rgba(207,255,63,.45)}.scan-result.error{border:1px solid rgba(255,79,94,.5)}@media(max-width:980px){.pos-layout{grid-template-columns:1fr}.pos-cart{position:relative;top:auto;height:auto;min-height:500px}.admin-grid{grid-template-columns:1fr 1fr}.admin-columns{grid-template-columns:1fr}}@media(max-width:620px){.pos-shell{padding:12px}.pos-topbar{align-items:flex-start}.pos-logo{width:90px}.pos-actions .pos-btn{padding:9px 10px;font-size:12px}.pos-session{display:block}.product-grid{grid-template-columns:1fr 1fr}.pos-products,.pos-cart{padding:13px;border-radius:18px}.admin-grid{grid-template-columns:1fr 1fr}.inline-form{grid-template-columns:1fr}.pay-grid{grid-template-columns:1fr}.admin-columns{grid-template-columns:1fr}}
/* Sprint 2.1 multi-venue polish */
.venue-switch{display:flex;flex-direction:column;gap:6px;min-width:220px}.venue-switch span,.venue-context small{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#89909c;font-weight:800}.venue-switch select{width:100%;background:#0e1117;color:#fff;border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:11px 36px 11px 13px;font:inherit}.venue-context{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:15px 18px;margin-bottom:14px}.venue-context>div{display:flex;flex-direction:column;gap:5px}.venue-context strong{font-size:15px}.muted-copy{color:#959ba7;margin-top:-6px}.venue-form{grid-template-columns:1.2fr .8fr .7fr 1.4fr auto!important}.admin-card+.admin-grid{margin-top:18px}@media(max-width:1050px){.pos-topbar{align-items:flex-start;flex-wrap:wrap}.venue-switch{order:3;width:100%}.venue-form{grid-template-columns:1fr 1fr!important}}@media(max-width:680px){.venue-context{align-items:flex-start;flex-direction:column}.venue-form{grid-template-columns:1fr!important}}

/* Sprint 2.2 usability, staff earnings and mobile polish */
.section-step,.modal-step{font-size:10px;letter-spacing:.16em;color:#cfff3f;font-weight:800}.pos-toolbar h2{margin:3px 0 0}.session-person{display:flex;align-items:center;gap:10px}.session-person>div{display:grid;gap:2px}.session-person small,.shift-kpis small{font-size:9px;letter-spacing:.13em;color:#858b96}.session-person span:not(.status-dot){color:#9da3af;font-size:12px}.shift-kpis{display:flex;align-items:center;gap:20px}.shift-kpis>div{display:grid;gap:3px}.shift-kpis strong{font-size:14px}.pos-guide{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 14px}.pos-guide span{padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.08);font-size:12px;color:#aeb3bd;text-align:center}.tip-panel{border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.035);border-radius:15px;padding:12px;margin:12px 0}.tip-head{display:flex;justify-content:space-between;margin-bottom:9px}.tip-presets{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.tip-presets button{border:1px solid rgba(255,255,255,.12);background:#12151b;color:#fff;border-radius:10px;padding:9px 4px;font-weight:700;cursor:pointer}.tip-presets button:hover{border-color:#cfff3f}.tip-panel input{width:100%;margin-top:8px;border:1px solid rgba(255,255,255,.13);background:#0d1015;color:#fff;border-radius:11px;padding:10px}.tap-hint{font-size:10px;color:#8d93a0;margin-top:6px}.empty-state.friendly{display:grid;gap:7px}.empty-state.friendly strong{color:#fff}.modal-copy{color:#9da3af;line-height:1.55}.wide{width:100%}.report-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}.report-grid>div{padding:16px;border-radius:15px;background:rgba(255,255,255,.05);display:grid;gap:7px}.report-grid span{font-size:11px;color:#979da8}.report-grid strong{font:800 22px Manrope}.card-title-row{display:flex;justify-content:space-between;gap:15px}.staff-performance-table strong{color:#fff}
@media(max-width:760px){.pos-shell{padding:10px}.pos-topbar{display:grid;grid-template-columns:1fr}.pos-brand{justify-content:space-between}.venue-switch{order:initial;min-width:0}.pos-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.pos-actions .pos-btn{width:100%}.venue-context{gap:12px}.pos-session{display:grid;gap:14px}.shift-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.shift-kpis>div{background:rgba(255,255,255,.04);padding:10px;border-radius:11px}.shift-kpis .pos-btn{grid-column:1/-1}.pos-guide{grid-template-columns:1fr 1fr}.pos-layout{gap:10px}.pos-products{min-height:auto}.pos-toolbar{display:grid}.product-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.product-card{min-height:130px;padding:12px}.pos-cart{min-height:0}.tip-presets{grid-template-columns:1fr 1fr}.modal-card{padding:18px}.report-grid{grid-template-columns:1fr 1fr}.admin-grid{grid-template-columns:1fr 1fr}.pos-table{min-width:760px}}
@media(max-width:390px){.product-grid{grid-template-columns:1fr 1fr}.product-card h3{font-size:13px}.shift-kpis{grid-template-columns:1fr 1fr}.shift-kpis .pos-btn{grid-column:1/-1}.report-grid{grid-template-columns:1fr}}

/* Sprint 2.3 secure login and usability */
body.pos-locked .pos-shell{filter:blur(8px);pointer-events:none;user-select:none;opacity:.35}.venue-locked{min-width:190px}.venue-locked strong{display:block;margin-top:4px}.login-help{margin:13px 0 0;text-align:center;color:#8f94a0;font-size:12px;line-height:1.45}.row-actions{display:flex;gap:7px;flex-wrap:wrap}.pos-btn.danger.subtle{background:rgba(255,79,94,.1);color:#ff8e98;border-color:rgba(255,79,94,.35)}.management-tip{padding:14px 17px;margin:0 0 18px;color:#c8cbd2}.management-tip strong{color:#cfff3f}.setup-card .venue-form{margin-top:18px}
@media(max-width:760px){.pos-shell{padding:12px}.pos-topbar{align-items:flex-start}.pos-brand{width:100%}.pos-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.venue-locked{width:100%;padding:10px 12px;border:1px solid rgba(255,255,255,.1);border-radius:13px}.pos-guide{overflow-x:auto;white-space:nowrap}.modal-card{width:calc(100% - 24px);max-height:calc(100vh - 24px);overflow:auto;padding:22px 18px}.modal-card select,.modal-card input{font-size:16px}.admin-card{padding:16px}.inline-form,.venue-form{grid-template-columns:1fr!important}.row-actions .pos-btn{flex:1}.table-wrap{margin-left:-4px;margin-right:-4px}}

/* Sprint 2.4 account-linked pass UX */
.pass-issue-guide{display:flex;flex-direction:column;gap:4px;padding:14px 16px;margin:12px 0;border:1px solid rgba(204,255,51,.22);border-radius:14px;background:rgba(204,255,51,.06)}
.pass-issue-guide strong{color:#d1ff45}.pass-issue-guide span,.pass-form-note{font-size:.85rem;color:#aeb4c2}.pass-form-note.form-error{color:#ff8f8f}.pass-link-form{grid-template-columns:minmax(190px,1.3fr) minmax(150px,1fr) minmax(150px,.9fr) minmax(130px,.8fr) auto}
@media(max-width:760px){.pass-link-form{display:grid!important;grid-template-columns:1fr!important}.pass-link-form input,.pass-link-form button{width:100%;min-width:0}.pass-issue-guide{margin-top:10px}.pass-issue-guide span{line-height:1.5}}

/* Sprint 2.5 organizer account gate and private staff login */
.auth-card{width:min(560px,100%)}
.auth-mode-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:5px;margin:18px 0;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:#0b0e13}
.auth-mode-tabs button{border:0;border-radius:10px;padding:11px 10px;background:transparent;color:#9da4b0;font-weight:800;cursor:pointer}
.auth-mode-tabs button.active{background:#cfff3f;color:#090b0d}
.auth-message{min-height:20px;margin:12px 0 0;color:#aeb4c2;font-size:13px;text-align:center}
.auth-message.error{color:#ff9099}
.account-create-link{display:block;margin-top:12px;text-align:center;color:#cfff3f;font-weight:800;text-decoration:none}
.owner-setup{margin-top:18px;padding-top:18px;border-top:1px solid rgba(255,255,255,.1)}
.owner-session{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-radius:13px;background:rgba(255,255,255,.04);margin-bottom:12px}
.owner-session div{display:grid;gap:3px}.owner-session small{font-size:9px;letter-spacing:.14em;color:#89909d}.owner-session strong{font-size:13px}
.claim-venue-box{margin-top:14px;padding:14px;border:1px solid rgba(207,255,63,.2);background:rgba(207,255,63,.05);border-radius:15px}
.claim-venue-box>strong{color:#cfff3f}.claim-venue-box p{color:#9ca3af;font-size:12px;line-height:1.5}
@media(max-width:620px){.auth-mode-tabs{grid-template-columns:1fr}.owner-session{align-items:flex-start}.owner-session .pos-btn{padding:9px 11px}}


/* Sprint 2.8 POS login usability polish */
html,body.pos-page{min-height:100%;overflow-x:hidden}
.pos-modal{overflow-y:auto;overscroll-behavior:contain;align-items:flex-start;padding:clamp(12px,3vh,28px)}
.pos-modal.open{display:flex;justify-content:center}
.pos-modal>.modal-card{margin:auto;max-height:none}
.auth-card{width:min(680px,100%);padding:clamp(18px,2.5vw,28px)}
.login-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.login-heading h2{margin:4px 0 5px;font-size:clamp(25px,3vw,34px)}
.login-heading .modal-copy{margin:0;color:#aeb4c2}
.secure-badge{flex:0 0 auto;border:1px solid rgba(207,255,63,.25);background:rgba(207,255,63,.08);color:#cfff3f;border-radius:999px;padding:7px 10px;font-size:9px;letter-spacing:.14em;font-weight:900}
.auth-card form{margin:0}
.auth-card .field{margin:10px 0}
.auth-card .field input,.auth-card .field select{min-height:48px}
.auth-card .wide{width:100%;min-height:48px}
.auth-mode-tabs{margin:14px 0}
.auth-mode-tabs button{min-height:44px}
.owner-setup{margin-top:12px;padding-top:12px}
.owner-session{margin-bottom:9px}
.owner-session .pos-btn{white-space:nowrap}
.auth-card.has-owner-session .login-heading .modal-copy{display:none}
.auth-card.has-owner-session .auth-mode-tabs,
.auth-card.has-owner-session #ownerLoginPanel,
.auth-card.has-owner-session #staffLoginPanel,
.auth-card.has-owner-session #posAuthMessage:empty{display:none!important}
.auth-card.has-owner-session .login-heading h2{font-size:24px}
.auth-card.has-owner-session .login-heading h2::after{content:" — organizer verified";color:#cfff3f;font-size:14px;font-family:"DM Sans",Arial,sans-serif}
.auth-card.has-owner-session .owner-setup{border-top:0;padding-top:4px}
.auth-card.has-owner-session #ownerVenueArea{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px}
.auth-card.has-owner-session #ownerVenueArea .field{margin:0}
.auth-card.has-owner-session #continueOwnerButton{width:auto;min-width:220px}
.login-help{margin-top:9px}
.account-create-link{margin-top:8px}
@media(min-width:720px){
  #ownerLoginForm{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;align-items:end}
  #ownerLoginForm .field{margin:0}
  #ownerLoginForm .wide{grid-column:1/-1}
  #directStaffForm{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;align-items:end}
  #directStaffForm .field{margin:0}
  #directStaffForm .wide{grid-column:1/-1}
}
@media(max-width:719px){
  .pos-modal{padding:10px}
  .pos-modal>.modal-card{margin:0 auto;width:100%;border-radius:18px}
  .auth-card{padding:18px 15px calc(18px + env(safe-area-inset-bottom))}
  .login-heading{gap:10px}
  .secure-badge{padding:6px 8px}
  .auth-mode-tabs{grid-template-columns:1fr 1fr;position:sticky;top:-1px;z-index:3;background:#0b0e13}
  .auth-mode-tabs button{font-size:12px;padding:9px 6px}
  .auth-card.has-owner-session #ownerVenueArea{grid-template-columns:1fr}
  .auth-card.has-owner-session #continueOwnerButton{width:100%;min-width:0}
  .owner-session{align-items:center}
  .owner-session strong{word-break:break-word}
}
@media(max-height:720px){
  .pos-modal{padding:8px 12px}
  .auth-card{padding:16px 20px}
  .login-heading h2{font-size:25px}
  .auth-mode-tabs{margin:10px 0}
  .auth-card .field{margin:7px 0}
  .auth-card .field input,.auth-card .field select,.auth-card .wide{min-height:43px;padding-top:9px;padding-bottom:9px}
  .login-help,.account-create-link{font-size:11px;margin-top:6px}
}


/* Sprint 2.9 role-based management and staff recovery */
.management-access-pill{display:grid;gap:3px;padding:9px 12px;border:1px solid rgba(207,255,63,.2);background:rgba(207,255,63,.06);border-radius:13px;min-width:150px}
.management-access-pill small{font-size:9px;letter-spacing:.14em;color:#8f96a2}.management-access-pill strong{font-size:12px;color:#cfff3f}
.management-gate-card{width:min(520px,100%)}

.manager-only-wallet{position:relative}.manager-only-wallet .badge{white-space:nowrap}
.staff-control-grid{display:flex;flex-wrap:wrap;gap:6px}.staff-control-grid .pos-btn{padding:8px 10px;font-size:11px}
.staff-archived-row{opacity:.58}.staff-archived-row td{text-decoration:none}
.role-chip{display:inline-flex;padding:5px 8px;border-radius:999px;background:rgba(255,255,255,.07);font-size:10px;font-weight:900;text-transform:capitalize}
.role-manager,.role-admin,.role-owner{background:rgba(207,255,63,.14);color:#cfff3f}.role-cashier,.role-bartender{background:rgba(81,145,255,.14);color:#8ab8ff}
.credential-state{letter-spacing:.13em}.limited-manager-view .venue-form{display:none!important}
@media(max-width:900px){.management-access-pill{order:2}.staff-control-grid{min-width:230px}}
@media(max-width:760px){.management-access-pill{width:100%}.management-gate-card{margin:auto!important}.staff-control-grid{display:grid;grid-template-columns:1fr 1fr;min-width:220px}.staff-control-grid .pos-btn{width:100%}}


/* Sprint 2.10 security hotfix:
   Never render manager pages before authorization completes. */
.management-page:not(.management-unlocked) .pos-shell {
  visibility: hidden;
}

.management-page:not(.management-unlocked) #managementGate {
  visibility: visible;
}

.workspace-page:not(.workspace-authorized):not(.staff-center-page) .workspace-shell {
  visibility: hidden;
}

/* The Staff Control Center has its own JavaScript role guard and must remain visible. */
.staff-center-page .workspace-shell {
  visibility: visible;
}


/* Venue edit management fix */
.venue-edit-card{width:min(560px,calc(100vw - 28px));}
.venue-edit-card form{display:grid;gap:14px;}
@media(max-width:640px){.venue-edit-card{max-height:calc(100dvh - 24px);overflow:auto;padding:22px 18px;}.venue-edit-card .modal-actions{display:grid;grid-template-columns:1fr;}.venue-edit-card .modal-actions .pos-btn{width:100%;}}
