/* Sanctum Eros Portal v218 — visual cleanup and responsive operations polish */
:root{--v216-touch:44px}
html,body{max-width:100%;overflow-x:hidden}
button,a.buttonLike,input,select,textarea{max-width:100%}
input,select,textarea{font-size:16px}
.portalHomeButton{white-space:nowrap}
.v216Health{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:rgba(255,255,255,.025)}
.v216Health>div:first-child{display:grid;gap:2px}.v216Health small{opacity:.68}.v216HealthChips{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.healthChip{font-size:.74rem;font-weight:800;letter-spacing:.035em;border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:6px 9px}.healthChip.ok{border-color:rgba(114,210,153,.45)}.healthChip.bad{border-color:rgba(255,122,122,.55)}
.commandHeroActions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.commandTestNotice{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:10px 12px;margin:10px 0;border:1px dashed rgba(255,197,104,.35);border-radius:12px;background:rgba(255,197,104,.045)}.testBadge{font-weight:900;letter-spacing:.08em}.testRecord{outline:1px dashed rgba(255,197,104,.25);outline-offset:-1px}
.commandAttendees{margin-top:16px}.commandAttendeeList{display:grid;gap:8px}.commandAttendeeRow{display:grid;grid-template-columns:minmax(160px,1.2fr) minmax(240px,2fr) auto;align-items:center;gap:12px;padding:11px 12px;border:1px solid rgba(255,255,255,.085);border-radius:12px;background:rgba(255,255,255,.02)}.commandAttendeeIdentity{min-width:0}.commandAttendeeIdentity>div{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.commandAttendeeIdentity small{display:block;opacity:.68;margin-top:3px}.commandAttendeeStatus{display:flex;gap:6px;flex-wrap:wrap}.commandAttendeeStatus span{font-size:.74rem;padding:5px 7px;border:1px solid rgba(255,255,255,.09);border-radius:999px;white-space:nowrap}.commandAttendeeStatus .ok{border-color:rgba(114,210,153,.35)}.commandAttendeeStatus .warn{border-color:rgba(255,190,95,.38)}.commandAttendeeActions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}.miniBtn{min-height:34px!important;padding:6px 9px!important;font-size:.76rem!important}
.eventCompList,.eventCompHistory{display:grid;gap:8px}.eventCompList article,.eventCompHistoryRow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.07)}.eventCompList article>div,.eventCompHistoryRow>div{display:grid;gap:3px}.eventCompList small,.eventCompHistoryRow small{opacity:.6}.auditDetail{margin-top:7px;padding:7px 9px;border-radius:8px;background:rgba(255,255,255,.03);font-size:.78rem;opacity:.8}.v216LoadFailure{display:grid;gap:10px}.status.error{color:#ffb1b1}
/* Member Portal: keep the four-area structure, improve density and hierarchy. */
body[data-page="member"] .memberHeader{padding-top:calc(18px + env(safe-area-inset-top));padding-bottom:18px}
body[data-page="member"] .memberHeader h1{margin-bottom:4px}body[data-page="member"] .memberHeader .memberHeaderActions{gap:8px}
body[data-page="member"] .memberQuickNav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;position:sticky;top:0;z-index:12;padding:8px max(8px,env(safe-area-inset-left)) 8px max(8px,env(safe-area-inset-right));backdrop-filter:blur(16px)}
body[data-page="member"] .memberQuickNav .memberTab{min-width:0;min-height:var(--v216-touch);padding:9px 6px;font-size:clamp(.72rem,2.9vw,.9rem);line-height:1.12;overflow-wrap:normal;word-break:normal;hyphens:none;white-space:normal}
body[data-page="member"] .memberPane{padding-bottom:calc(28px + env(safe-area-inset-bottom))}body[data-page="member"] .memberrow{border-radius:13px}body[data-page="member"] .memberSectionHead{gap:10px}.memberPastEvents{margin-top:22px}.memberPastEvent .rowactions{margin-top:9px}.eventReviewClosed{opacity:.88}
/* Admin organization and stage-aware command center. */
body[data-page="admin"] #adminTabs .consolidatedHidden{display:none!important}.adminMobileNavigator{gap:8px}.commandEventHero,.commandFlow,.commandAttendees,.commandColumns>div,.commandCloseout{border-radius:14px}.commandMetrics{grid-template-columns:repeat(6,minmax(0,1fr))}.commandMetrics>div{min-width:0}.commandEventHero[data-event-stage="live"]{position:sticky;top:0}
#eventBatchStatus{min-height:1.2em}.eventBatchActions .rowactions{align-items:center}.eventCompHistory{max-height:300px;overflow:auto;padding-right:3px}
/* Dedicated Staff/door surfaces: scan/search and outcome first, admin chrome second. */
.scannerPage{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));padding-bottom:calc(24px + env(safe-area-inset-bottom))}.scannerPage .admissionHero.compact{padding-bottom:12px}.scannerPage .scannerPanel{display:grid;gap:14px}.scannerPage .manualDoorCode,.scannerPage .scanResult,.scannerPage .cameraScanner,.scannerPage .doorSearchPanel{border-radius:14px}.scannerPage button,.scannerPage input,.scannerPage select,body[data-page="staff"] button,body[data-page="staff"] input,body[data-page="staff"] select{min-height:var(--v216-touch)}
.doorSearchResults{display:grid;gap:7px}.doorSearchRow{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:10px;border:1px solid rgba(255,255,255,.09);border-radius:11px}.doorSearchRow small{display:block;opacity:.67}.doorSearchMeta{display:flex;gap:5px;flex-wrap:wrap;margin-top:4px}.doorSearchMeta span{font-size:.72rem;border:1px solid rgba(255,255,255,.1);border-radius:999px;padding:4px 6px}
@media(max-width:900px){.commandMetrics{grid-template-columns:repeat(3,minmax(0,1fr))}.commandAttendeeRow{grid-template-columns:1fr}.commandAttendeeActions{justify-content:flex-start}.v216Health{align-items:flex-start;flex-direction:column}.v216HealthChips{justify-content:flex-start}}
@media(max-width:600px){
 body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
 .commandMetrics{grid-template-columns:repeat(2,minmax(0,1fr))}.commandHeroActions{justify-content:flex-start}.commandEventHero{align-items:flex-start;flex-direction:column}.commandEventHero .primary,.commandEventHero .ghost,.commandEventHero .buttonLike{width:100%;text-align:center}.commandFlowSteps{grid-template-columns:repeat(2,minmax(0,1fr))}.commandColumns{grid-template-columns:1fr!important}.commandAttendeeStatus span{white-space:normal}
 body[data-page="admin"] .two{grid-template-columns:1fr!important}body[data-page="admin"] .toolbar{align-items:stretch}body[data-page="admin"] .toolbar>button,body[data-page="admin"] .toolbar>a.buttonLike{width:100%}.adminMobileNavigator{grid-template-columns:1fr 1fr}
 body[data-page="member"] .memberHeaderActions{display:grid;grid-template-columns:1fr 1fr}body[data-page="member"] .memberHeaderActions>*{width:100%;min-width:0;text-align:center}.memberPastEvent .rowtop,.memberCurrentRsvp .rowtop{align-items:flex-start}
 .doorSearchRow{grid-template-columns:1fr}.doorSearchRow button{width:100%}
}
@media(max-width:360px){body[data-page="member"] .memberQuickNav{grid-template-columns:1fr 1fr}body[data-page="member"] .memberQuickNav .memberTab{font-size:.82rem}.adminMobileNavigator{grid-template-columns:1fr}.commandMetrics{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important}}
/* v216 mobile hardening: long attendee names/codes must never widen the door workspace. */
.doorSearchRow>div{min-width:0}
.doorSearchRow strong,.doorSearchRow small{overflow-wrap:anywhere;word-break:break-word}
.doorSearchMeta{min-width:0;max-width:100%}
.doorSearchMeta span{max-width:100%;overflow-wrap:anywhere;white-space:normal}
.scannerPage select,.scannerPage input{max-width:100%;min-width:0}
@media(max-width:600px){.commandAttendeeActions .miniBtn{min-height:40px!important}}
/* Keep Portal Home visible on the mobile owner workspace and avoid cramped header actions. */
@media(max-width:600px){
 body[data-page="admin"] .seAdminCompactHeader{align-items:stretch!important;flex-direction:column!important}
 body[data-page="admin"] .seAdminHeaderActions{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;width:100%!important}
 body[data-page="admin"] .seAdminHeaderActions .portalHomeButton{display:inline-flex!important;align-items:center!important;justify-content:center!important;white-space:normal!important;min-height:44px!important;text-align:center!important}
 body[data-page="admin"] .seAdminHeaderActions button{min-height:44px!important}
 .commandAttendeeActions .miniBtn{min-height:44px!important}
}
@media(max-width:360px){
 body[data-page="member"] #memberDashboardView .memberQuickNav,
 body[data-page="member"] .memberQuickNav{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 body[data-page="member"] .memberQuickNav .memberTab{font-size:.84rem!important;min-height:44px!important}
 body[data-page="member"] .portalHomeButton{white-space:normal!important}
}
@media(max-width:600px){
 body[data-page="admin"] #eventCommandTab button,
 body[data-page="admin"] #eventCommandTab a.buttonLike{min-height:44px!important}
}
/* v218 Staff companion approvals: keep the decision inside the assigned-team row. */
.commandStaffList{display:grid;gap:9px}.commandStaffRow{display:grid;grid-template-columns:minmax(150px,1.1fr) auto minmax(220px,2fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid rgba(255,255,255,.09);border-radius:13px;background:rgba(255,255,255,.02)}.commandStaffRow.needsAttention{border-color:rgba(255,190,95,.38);background:rgba(255,190,95,.035)}.commandStaffRow>div:first-child{min-width:0}.commandStaffRow>div:first-child small{display:block;opacity:.66;margin-top:3px}.commandStaffMeta{display:grid;gap:5px;min-width:0}.commandStaffMeta>span{overflow-wrap:anywhere}.commandStaffCompanionActions{margin-top:4px;justify-content:flex-start}
@media(max-width:900px){.commandStaffRow{grid-template-columns:1fr auto}.commandStaffMeta{grid-column:1/-1}.commandStaffRow>.badge:last-child{justify-self:end}}
@media(max-width:600px){.commandStaffRow{grid-template-columns:1fr}.commandStaffRow>.roleBadge,.commandStaffRow>.badge:last-child{justify-self:start}.commandStaffCompanionActions{display:grid;grid-template-columns:1fr}.commandStaffCompanionActions button{width:100%;min-height:44px!important}}
/* v218 mobile member polish: keep four destinations, but present them as a clean 2×2 grid on phones. */
@media(max-width:520px){
 body[data-page="member"] #memberDashboardView .memberQuickNav,
 body[data-page="member"] .memberQuickNav{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}
 body[data-page="member"] .memberQuickNav .memberTab{min-height:44px!important;font-size:.86rem!important;padding:8px 6px!important;overflow-wrap:normal!important;word-break:normal!important}
}
