/* Sanctum Eros Member Portal 1.0 · v220 — release UI, accessibility, recovery */
:root{
 --se-touch:44px;
 --se-radius:14px;
 --se-radius-lg:18px;
 --se-line:rgba(255,255,255,.095);
 --se-panel:rgba(255,255,255,.028);
 --se-panel-strong:rgba(255,255,255,.045);
 --se-muted:rgba(255,255,255,.68);
 --se-ok:#9be1b5;
 --se-warn:#ffd08a;
 --se-bad:#ffabab;
}
html{scroll-padding-top:78px;-webkit-text-size-adjust:100%}
body{min-width:0}
:where(button,a,input,select,textarea,summary):focus-visible{outline:3px solid rgba(225,190,255,.72)!important;outline-offset:2px!important}
:where(button,a.buttonLike,input,select,textarea){min-height:var(--se-touch)}
:where(input,select,textarea){font-size:max(16px,1rem)}
:where(.sectionnote,.meta,small){overflow-wrap:anywhere}
.empty{min-height:92px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:7px;border:1px dashed var(--se-line);border-radius:var(--se-radius);padding:16px;background:rgba(255,255,255,.018)}
.empty:only-child{margin-block:4px}
.status:empty{display:none}
.badge{line-height:1.15}

/* Shared shell cleanup */
.portalHomeButton{display:inline-flex;align-items:center;justify-content:center;gap:7px}
.memberBrandFooter,.seReleaseFooter{font-size:.73rem;letter-spacing:.035em;opacity:.55;text-align:center;padding:14px 16px calc(14px + env(safe-area-inset-bottom))}
.seReleaseFooter{border-top:1px solid rgba(255,255,255,.06);margin-top:18px}
.seReleaseFooter strong{font-weight:800;color:rgba(255,255,255,.78)}
.seMaintenanceBanner,.seEmergencyBanner{position:sticky;top:0;z-index:200;padding:9px max(14px,env(safe-area-inset-left));text-align:center;font-size:.82rem;font-weight:750;border-bottom:1px solid rgba(255,255,255,.15);backdrop-filter:blur(16px)}
.seMaintenanceBanner{background:rgba(149,92,25,.95)}
.seEmergencyBanner{background:rgba(119,42,45,.96)}

/* Member Portal: preserve the four destinations, remove visual noise. */
body[data-page="member"] .memberShell{max-width:1060px;margin-inline:auto}
body[data-page="member"] .memberHeader{padding:calc(18px + env(safe-area-inset-top)) clamp(14px,3vw,26px) 15px!important}
body[data-page="member"] .memberHeader h1{font-size:clamp(1.55rem,5vw,2.2rem);line-height:1.05;margin:4px 0 4px!important}
body[data-page="member"] .memberHeader .memberHeaderActions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
body[data-page="member"] .memberHeader .memberHeaderActions>*{min-height:40px}
body[data-page="member"] .memberQuickNav{position:sticky!important;top:0!important;z-index:40!important;display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:7px!important;padding:8px max(10px,env(safe-area-inset-left))!important;background:rgba(14,10,19,.9)!important;border-block:1px solid rgba(255,255,255,.055);backdrop-filter:blur(18px)}
body[data-page="member"] .memberQuickNav .memberTab{min-width:0!important;min-height:44px!important;padding:9px 7px!important;border-radius:11px!important;line-height:1.12!important;font-size:clamp(.78rem,2.5vw,.9rem)!important;white-space:normal!important;word-break:normal!important;overflow-wrap:normal!important;hyphens:none!important}
body[data-page="member"] .memberQuickNav .memberTab.active{box-shadow:inset 0 0 0 1px rgba(255,255,255,.16),0 6px 22px rgba(0,0,0,.18)}
body[data-page="member"] .memberPane{padding:18px clamp(12px,3vw,24px) calc(30px + env(safe-area-inset-bottom))!important}
body[data-page="member"] .memberPaneIntro{margin-bottom:14px!important}
body[data-page="member"] .memberPaneIntro h3{font-size:clamp(1.25rem,4vw,1.65rem);line-height:1.15;margin-block:4px 5px}
body[data-page="member"] :where(.memberrow,.memberCurrentRsvp,.memberPastEvent,.memberEventCard,.memberCourseCard,.memberAccountCard){border-radius:var(--se-radius)!important;border-color:var(--se-line)!important;background:var(--se-panel)!important}
body[data-page="member"] :where(.memberrow,.memberCurrentRsvp,.memberPastEvent){padding:13px!important;margin-bottom:9px!important}
body[data-page="member"] .rowactions{gap:7px;align-items:center;flex-wrap:wrap}
body[data-page="member"] .rowactions :where(button,.buttonLike){min-height:40px}
body[data-page="member"] .statusbar{gap:6px;flex-wrap:wrap}
body[data-page="member"] .memberPastEvents{margin-top:18px!important}
body[data-page="member"] .memberPastEvent :where(h3,strong),body[data-page="member"] .memberCurrentRsvp :where(h3,strong){overflow-wrap:anywhere}
body[data-page="member"] .memberWelcome,body[data-page="member"] .memberHero{padding:clamp(14px,3vw,21px)!important;border-radius:var(--se-radius-lg)!important}
body[data-page="member"] dialog form,body[data-page="member"] dialog .memberShell{max-height:min(88dvh,900px);overflow:auto;overscroll-behavior:contain}
body[data-page="member"] dialog label{display:grid;gap:6px}
body[data-page="member"] .eventReviewClosed{opacity:.86}
body[data-page="member"] [data-se-event-state]{border-left:3px solid rgba(255,255,255,.12)}
body[data-page="member"] [data-se-event-state="review"]{border-left-color:var(--se-warn)}
body[data-page="member"] [data-se-event-state="confirmed"]{border-left-color:var(--se-ok)}

/* Admin: one hierarchy, command center is the event workspace. */
body[data-page="admin"] .admin{max-width:1240px;margin-inline:auto}
body[data-page="admin"] .seAdminCompactHeader{padding:12px 0 10px;border-bottom:1px solid rgba(255,255,255,.07);margin-bottom:10px}
body[data-page="admin"] .adminHealthWrap{margin:8px 0 12px}
body[data-page="admin"] .adminGroups{display:flex;gap:6px;flex-wrap:wrap;margin-block:10px}
body[data-page="admin"] .adminGroup{min-height:40px;border-radius:11px}
body[data-page="admin"] #adminTabs{gap:6px;margin-bottom:14px}
body[data-page="admin"] #adminTabs .tab{min-height:40px;border-radius:10px;padding:8px 11px}
body[data-page="admin"] .tabpane{animation:none!important}
body[data-page="admin"] .adminHomeGrid{gap:10px!important}
body[data-page="admin"] .adminHomeCard{padding:14px!important;border-radius:var(--se-radius)!important;min-height:118px!important}
body[data-page="admin"] .adminHomeCard span{line-height:1.35}
body[data-page="admin"] .v211TestAccountPanel{margin-top:14px!important;padding:14px!important;border-radius:var(--se-radius)!important}
body[data-page="admin"] .commandCenterHead{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:12px}
body[data-page="admin"] .commandCenterControls{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
body[data-page="admin"] .commandCenterControls label{min-width:min(360px,70vw)}
body[data-page="admin"] .commandEventHero{padding:15px!important;border-radius:var(--se-radius-lg)!important;background:linear-gradient(145deg,rgba(255,255,255,.04),rgba(255,255,255,.018))!important}
body[data-page="admin"] .commandMetrics{gap:7px!important;margin-block:9px!important}
body[data-page="admin"] .commandMetrics>div{padding:11px!important;border-radius:12px!important;background:var(--se-panel)!important}
body[data-page="admin"] .commandMetrics strong{font-size:clamp(1.05rem,3vw,1.35rem)}
body[data-page="admin"] :where(.commandFlow,.commandAttendees,.commandColumns>div,.commandCloseout,.eventCompPanel,.eventBatchPanel){border-radius:var(--se-radius)!important;padding:14px!important;margin-top:10px!important}
body[data-page="admin"] .commandAttendeeRow{grid-template-columns:minmax(160px,1.05fr) minmax(280px,2fr) auto!important;padding:10px 11px!important}
body[data-page="admin"] .commandAttendeeStatus{align-content:center}
body[data-page="admin"] .commandAttendeeActions{align-items:center}
body[data-page="admin"] .commandException{padding:11px!important;border-radius:12px!important}
body[data-page="admin"] .commandStaffRow{padding:11px!important}
body[data-page="admin"] details>summary{cursor:pointer}
body[data-page="admin"] .adminMobileNavigator{position:sticky;top:0;z-index:55;padding:8px;background:rgba(14,10,19,.92);border:1px solid rgba(255,255,255,.065);border-radius:12px;backdrop-filter:blur(18px)}
body[data-page="admin"] .adminMobileNavigator label{min-width:0}
body[data-page="admin"] .adminMobileNavigator select{width:100%;min-width:0}

/* Release & Recovery */
.releaseWorkspaceHead,.releaseCardHead{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.releaseWorkspaceHead{margin:4px 0 12px}
.releaseVersionBadge{display:inline-flex;align-items:center;white-space:nowrap;border:1px solid rgba(194,148,230,.35);border-radius:999px;padding:7px 10px;font-size:.75rem;font-weight:850;letter-spacing:.04em;background:rgba(194,148,230,.07)}
.releaseHealthGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0}
.releaseHealthTile{min-width:0;padding:12px;border:1px solid var(--se-line);border-radius:12px;background:var(--se-panel)}
.releaseHealthTile strong,.releaseHealthTile span{display:block}.releaseHealthTile strong{font-size:.78rem;letter-spacing:.045em;text-transform:uppercase}.releaseHealthTile span{font-size:1rem;margin-top:4px}.releaseHealthTile small{display:block;margin-top:4px;color:var(--se-muted)}
.releaseHealthTile.ok{border-color:rgba(89,200,135,.34)}.releaseHealthTile.warn{border-color:rgba(255,190,95,.42)}.releaseHealthTile.bad{border-color:rgba(255,107,107,.46)}
.releaseSkeleton{grid-column:1/-1;min-height:82px;display:grid;place-items:center;border:1px dashed var(--se-line);border-radius:12px;color:var(--se-muted)}
.releaseCard{padding:14px;margin-top:10px;border:1px solid var(--se-line);border-radius:var(--se-radius);background:var(--se-panel)}
.releaseCard h3{margin:3px 0 4px}.releaseControlGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.releaseToggle{display:flex!important;align-items:center!important;justify-content:space-between;gap:14px;padding:12px;border:1px solid var(--se-line);border-radius:12px;background:rgba(255,255,255,.018)}
.releaseToggle>span{display:grid;gap:3px}.releaseToggle small{color:var(--se-muted);line-height:1.3}.releaseToggle input[type="checkbox"]{width:24px;height:24px;min-height:24px;flex:0 0 24px;accent-color:#b688d5}
.releaseActionRow{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;margin-top:10px}.releaseActionRow label{min-width:min(360px,100%);flex:1}.releaseActionButtons button{min-width:180px}.releaseSnapshotList{display:grid;gap:7px;margin-top:10px}.releaseSnapshotRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px;border:1px solid var(--se-line);border-radius:11px}.releaseSnapshotRow small{display:block;color:var(--se-muted);margin-top:3px}.releaseResults{margin-top:10px}.releaseResultGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.releaseResultGrid>div{padding:10px;border:1px solid var(--se-line);border-radius:10px}.releaseIssueList{display:grid;gap:6px;margin-top:10px}.releaseIssue{padding:9px 10px;border-left:3px solid var(--se-warn);background:rgba(255,255,255,.018);border-radius:8px;overflow-wrap:anywhere}

/* Staff: task focused and visually related to the member/admin surfaces. */
body[data-page="staff"] .staffShell{max-width:1040px;margin-inline:auto}
body[data-page="staff"] :where(.staffCard,.staffPanel,.staffEventCard){border-radius:var(--se-radius)!important;border-color:var(--se-line)!important;background:var(--se-panel)!important}
body[data-page="staff"] .staffNav{gap:7px}
body[data-page="staff"] button,body[data-page="staff"] .buttonLike{min-height:44px}

/* Door scanner: event-night first. */
.scannerPage{max-width:850px;margin-inline:auto!important}
.scannerPage .admissionHero.compact{padding-top:calc(12px + env(safe-area-inset-top))!important}
.scannerPage .scannerPanel{gap:11px!important}
.scannerPage :where(.manualDoorCode,.cameraScanner,.doorSearchPanel,.scanResult){border-radius:var(--se-radius)!important}
.scannerPage #scanResult{min-height:98px}
.seScannerState{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 11px;border:1px solid var(--se-line);border-radius:11px;background:var(--se-panel)}
.seScannerState[data-state="cached"]{border-color:rgba(255,190,95,.42)}
.seScannerState[data-state="live"]{border-color:rgba(89,200,135,.34)}
.seOfflineRosterNotice{padding:9px 10px;border:1px solid rgba(255,190,95,.4);border-radius:10px;background:rgba(255,190,95,.045);font-size:.82rem}
.seEmergencyQueue{margin-top:10px;padding:10px;border:1px solid rgba(255,190,95,.35);border-radius:11px;background:rgba(255,190,95,.035)}

/* Destructive actions should never visually compete with routine primary actions. */
button.danger{border-color:rgba(255,110,110,.46)!important}
button.danger:not(:hover){background:rgba(145,45,45,.12)!important}

/* Tablet and mobile */
@media(max-width:900px){
 .releaseHealthGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.releaseResultGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
 body[data-page="admin"] .commandAttendeeRow{grid-template-columns:1fr!important}
 body[data-page="admin"] .commandAttendeeActions{justify-content:flex-start!important}
}
@media(max-width:640px){
 body[data-page="member"] .memberHeader .memberHeaderActions{display:grid!important;grid-template-columns:1fr 1fr;width:100%}
 body[data-page="member"] .memberHeader .memberHeaderActions>*{width:100%;min-width:0}
 body[data-page="member"] .memberQuickNav{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 body[data-page="member"] .memberPane{padding-inline:10px!important}
 body[data-page="member"] .rowactions{display:grid;grid-template-columns:1fr}
 body[data-page="member"] .rowactions>*{width:100%;min-width:0;text-align:center}
 body[data-page="admin"] .commandCenterHead{align-items:stretch;flex-direction:column}
 body[data-page="admin"] .commandCenterControls{display:grid;grid-template-columns:1fr}
 body[data-page="admin"] .commandCenterControls label{min-width:0}
 body[data-page="admin"] .commandCenterControls>*{width:100%}
 body[data-page="admin"] .commandMetrics{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 body[data-page="admin"] .commandFlowSteps{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 body[data-page="admin"] .commandEventHero{position:static!important}
 body[data-page="admin"] .eventCompControls{grid-template-columns:1fr!important}
 body[data-page="admin"] .eventCompControls>*{width:100%!important;min-width:0!important}
 .releaseWorkspaceHead,.releaseCardHead{flex-direction:column}.releaseVersionBadge{white-space:normal}
 .releaseControlGrid,.releaseHealthGrid,.releaseResultGrid{grid-template-columns:1fr}
 .releaseActionRow,.releaseActionButtons{display:grid;grid-template-columns:1fr}.releaseActionRow>*{width:100%!important;min-width:0!important}.releaseActionButtons button{min-width:0}
 .releaseSnapshotRow{grid-template-columns:1fr}.releaseSnapshotRow button{width:100%}
 .scannerPage{padding-inline:max(10px,env(safe-area-inset-left))!important}
}
@media(max-width:360px){
 body[data-page="admin"] .adminMobileNavigator{grid-template-columns:1fr!important}
 body[data-page="admin"] .commandMetrics{grid-template-columns:1fr 1fr!important}
 body[data-page="member"] .memberHeader .memberHeaderActions{grid-template-columns:1fr}
}

/* Large text / accessibility mode: prefer reflow over clipping. */
@media(max-width:760px){
 html{font-size:100%}
 :where(.badge,.healthChip,.roleBadge){white-space:normal!important}
 :where(.commandAttendeeRow,.commandStaffRow,.doorSearchRow,.releaseSnapshotRow){overflow:visible!important}
}
@media(prefers-contrast:more){
 :root{--se-line:rgba(255,255,255,.25);--se-muted:rgba(255,255,255,.82)}
 :where(button,input,select,textarea,.memberTab){border-width:2px!important}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
/* Legacy event-day shortcut container is retained only for backward compatibility; Command Center is authoritative. */
#adminQuickActions{display:none!important}

/* Final 1.0 micro-polish: explicit icon spacing and readable metric labels. */
body[data-page="member"] .memberQuickNav .memberTab::before{margin-right:.42em;display:inline-block}
.releaseResultGrid>div{display:grid;gap:3px;align-content:start}
.releaseResultGrid>div strong{font-size:1.05rem;line-height:1.1}
.releaseResultGrid>div span{font-size:.78rem;color:var(--se-muted);line-height:1.2}

/* v220.1 — non-account Guest Access stays inside the event workflow instead of creating another Portal destination. */
body[data-page="member"] .memberGuestAccessPanel{margin:16px 0;padding:18px;border:1px solid rgba(196,136,158,.34);border-radius:18px;background:rgba(83,51,64,.12)}
body[data-page="member"] .memberGuestAccessPanel>.primary{margin-top:8px}
body[data-page="member"] .guestLinkSheet label{display:grid;gap:8px;margin:14px 0}
body[data-page="member"] .guestLinkSheet input{width:100%}
body[data-page="admin"] .commandGuestAccess{margin:18px 0;padding:18px;border:1px solid rgba(196,136,158,.28);border-radius:18px;background:rgba(62,42,51,.1)}
body[data-page="admin"] .commandGuestAccessCounts{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
body[data-page="admin"] .commandGuestAccessCounts span{padding:7px 10px;border:1px solid rgba(255,255,255,.12);border-radius:999px;font-size:.8rem;color:var(--muted,#bdb4b9)}
body[data-page="admin"] .commandGuestAccessList{display:grid;gap:10px;margin-top:12px}
body[data-page="admin"] .commandGuestAccessRow{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:13px 14px;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:rgba(0,0,0,.15)}
body[data-page="admin"] .commandGuestAccessRow>div{display:grid;gap:3px;min-width:0}
body[data-page="admin"] .commandGuestAccessRow small{color:var(--muted,#bdb4b9);overflow-wrap:anywhere}
.guestAccessReviewDialog .guestReviewSheet{width:min(720px,calc(100vw - 34px))}
.guestAccessReviewDialog .guestReviewImage{display:block;width:100%;max-height:52vh;object-fit:contain;background:#080808;border:1px solid rgba(255,255,255,.12);border-radius:14px;margin:12px 0}
.guestAccessReviewDialog .guestReviewImageState{padding:26px 14px;text-align:center;border:1px dashed rgba(255,255,255,.15);border-radius:14px;margin:12px 0;color:var(--muted,#bdb4b9)}
@media(max-width:720px){body[data-page="admin"] .commandGuestAccessRow{grid-template-columns:1fr}body[data-page="admin"] .commandGuestAccessCounts{justify-content:flex-start}.guestAccessReviewDialog .guestReviewSheet{width:min(100%,calc(100vw - 22px))}}

/* v220 database cutover status */
.migrationProgress{height:10px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.08);margin:.75rem 0}.migrationProgress>span{display:block;height:100%;background:currentColor;opacity:.78;transition:width .2s ease}.releaseHealthTile small{overflow-wrap:anywhere}
