/* Member portal: uses the public site's shared brand tokens from shared.css. */
.portal-shell { max-width: 1180px; margin: 0 auto; padding: 48px 28px 80px; }
.portal-hero { background: var(--dark-blue); color: #fff; border-radius: 30px; padding: clamp(28px, 5vw, 56px); margin-bottom: 30px; position: relative; overflow: hidden; }
.portal-hero::after { content: ''; position: absolute; width: 180px; height: 180px; border-radius: 50%; right: -45px; top: -70px; background: var(--yellow); opacity: .95; }
.portal-hero h1 { font-size: clamp(2rem,5vw,3.4rem); margin: 8px 0; max-width: 760px; position:relative; z-index:1; }
.portal-hero p { max-width: 670px; color: rgba(255,255,255,.88); line-height: 1.7; position:relative; z-index:1; }
.portal-kicker { color: var(--yellow); font-weight: 900; letter-spacing: .1em; text-transform: uppercase; font-size: .8rem; }
.portal-grid { display:grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.portal-grid--two { grid-template-columns: repeat(2, 1fr); }
.portal-card { background: var(--white); border: 1px solid rgba(41,171,226,.22); border-radius: 24px; padding: 26px; box-shadow: 0 12px 28px rgba(23,50,77,.08); }
.portal-card h2, .portal-card h3 { color: var(--dark-blue); margin-bottom: 10px; }
.portal-card p, .portal-card li { color: var(--muted); line-height: 1.6; }
.portal-card ul { list-style: disc; padding-left: 20px; }
.portal-card a:not(.btn-pill-green):not(.btn-pill-red):not(.btn-pill-yellow) { color: var(--dark-blue); font-weight: 900; }
.portal-icon { width: 46px; height: 46px; display:grid; place-items:center; border-radius: 15px; background:var(--sky-soft); font-size:1.4rem; margin-bottom:18px; }
.portal-card:nth-child(2n) .portal-icon { background:var(--green-soft); }
.portal-card:nth-child(3n) .portal-icon { background:var(--cream); }
.portal-status { display:inline-block; padding:6px 12px; background:var(--green-soft); color:#367b16; border-radius:999px; font-size:.82rem; font-weight:900; }
.portal-layout { display:grid; grid-template-columns: 230px 1fr; gap:28px; }
.portal-side { height:fit-content; padding:14px; position:sticky; top:105px; }
.portal-side a { display:block; padding:11px 13px; border-radius:12px; font-weight:800; color:var(--ink); }
.portal-side a:hover,.portal-side a.active { color:var(--dark-blue); background:var(--sky-soft); }
.portal-form-wrap { max-width: 550px; margin: 58px auto; }
.portal-form { display:grid; gap:16px; }
.portal-form label { display:grid; gap:7px; color:var(--ink); font-weight:800; }
.portal-form input,.portal-form textarea,.portal-form select { width:100%; border:2px solid rgba(23,50,77,.16); border-radius:13px; padding:13px; font:inherit; color:var(--ink); background:#fff; }
.portal-form textarea { min-height:120px; resize:vertical; }
.portal-form input:focus,.portal-form textarea:focus { outline:3px solid rgba(41,171,226,.22); border-color:var(--blue); }
.portal-message { min-height:1.4em; color:var(--dark-blue); font-weight:700; }
.portal-message.error { color:var(--red); }
.portal-note { font-size:.88rem; color:var(--muted); line-height:1.55; }
.profile-summary { display:flex; gap:20px; align-items:center; }
.profile-avatar { width:76px;height:76px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff;font-size:1.7rem;font-weight:900; }
.empty-state { border:2px dashed rgba(23,50,77,.18); border-radius:18px; padding:20px; color:var(--muted); background:var(--bg-grey); }
.member-access-link { color:var(--dark-blue) !important; font-weight:900; }
.member-access-link::after { background:var(--green) !important; }
@media(max-width:850px){.portal-grid{grid-template-columns:repeat(2,1fr)}.portal-layout{grid-template-columns:1fr}.portal-side{position:static;display:flex;gap:4px;flex-wrap:wrap}.portal-side a{padding:8px 10px}}
@media(max-width:560px){.portal-shell{padding:30px 18px 60px}.portal-grid,.portal-grid--two{grid-template-columns:1fr}.portal-card{padding:21px}.portal-hero{border-radius:23px}.profile-summary{align-items:flex-start}}
/* Passport, membership card, and operations */
.portal-stat{font-size:2.25rem;font-weight:900;color:var(--dark-blue);display:block}.passport-banner{background:linear-gradient(135deg,var(--dark-blue),#156b9c);color:white}.passport-banner p,.passport-banner h2{color:white}.passport-list{display:grid;gap:10px;padding:0;list-style:none}.passport-list li{padding:12px;background:var(--bg-grey);border-radius:12px}.passport-list small,.badge-chip small{display:block;color:var(--muted)}.badge-chip{display:flex;gap:12px;align-items:center;padding:12px;background:var(--cream);border-radius:14px}.badge-chip>span{font-size:2rem}.member-card{max-width:760px;margin:auto;background:linear-gradient(145deg,var(--dark-blue),#105c86);color:#fff;border-radius:28px;padding:34px;display:grid;grid-template-columns:1fr 230px;gap:25px;box-shadow:0 18px 45px rgba(23,50,77,.2);position:relative;overflow:hidden}.member-card h1,.member-card h2,.member-card p{color:#fff}.member-card .card-logo{width:130px;background:white;border-radius:14px;padding:8px}.member-card .card-number{font-size:1.65rem;font-weight:900;letter-spacing:.08em}.member-card [data-qr]{background:#fff;padding:5px;width:230px;height:230px}.member-card .portal-status{text-transform:uppercase}.portal-actions{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}.portal-table-wrap{overflow:auto}.portal-table{width:100%;border-collapse:collapse}.portal-table th,.portal-table td{text-align:left;padding:12px;border-bottom:1px solid #dce5eb;white-space:nowrap}.portal-table th{color:var(--dark-blue);font-size:.8rem;text-transform:uppercase}.portal-toolbar{display:flex;gap:12px;margin-bottom:20px}.portal-toolbar input,.portal-toolbar select{flex:1;border:2px solid #dce5eb;border-radius:12px;padding:12px}.status-inactive,.status-expired{background:#ffe3df;color:#a7261c}.verification-mark{font-weight:900;padding:14px;border-radius:12px}.verification-mark.active{background:var(--green-soft);color:#367b16}.verification-mark.inactive{background:#ffe3df;color:#a7261c}.verification-card{max-width:560px;margin:70px auto}.verification-card dl{display:grid;grid-template-columns:1fr 2fr;gap:14px}.verification-card dt{color:var(--muted)}.verification-card dd{font-weight:900}.scanner-shell{max-width:600px;margin:auto}.scanner-button{width:100%;font-size:1.15rem;padding:18px}.scan-result{margin-top:20px;text-align:center}.badge-card>b{font-size:2.7rem}.admin-nav{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}.admin-nav a{padding:9px 13px;background:white;border-radius:10px;font-weight:800;color:var(--dark-blue)}
@media(max-width:650px){.member-card{grid-template-columns:1fr;padding:24px}.member-card [data-qr]{width:210px;height:210px}.portal-toolbar{flex-direction:column}.portal-table th,.portal-table td{padding:10px 8px}.admin-nav{overflow:auto;flex-wrap:nowrap}.admin-nav a{white-space:nowrap}}
@media print{body>*:not(.portal-shell){display:none!important}.portal-shell{padding:0}.member-card{box-shadow:none;print-color-adjust:exact;-webkit-print-color-adjust:exact}.no-print{display:none!important}}

/* Passport interpretation of the editorial poster brand. */
.portal-hero {
  background: var(--poster-yellow);
  color: var(--poster-ink);
  border: var(--poster-rule);
  border-radius: 14px;
  box-shadow: var(--poster-shadow);
}
.portal-hero::after {
  width: 112px;
  height: 112px;
  right: 26px;
  top: 24px;
  border-radius: 0;
  opacity: 1;
  background: linear-gradient(90deg,transparent 0 18%,var(--poster-green) 18% 48%,transparent 48%),linear-gradient(0deg,var(--poster-red) 0 29%,transparent 29% 58%,var(--poster-blue) 58% 86%,transparent 86%);
}
.portal-hero h1,.portal-hero p,.portal-kicker { color: var(--poster-ink); }
.portal-card { border: var(--poster-rule); border-radius: 12px; box-shadow: var(--poster-shadow); }
.portal-card:nth-child(4n+1) { border-top: 12px solid var(--poster-red); }
.portal-card:nth-child(4n+2) { border-top: 12px solid var(--poster-green); }
.portal-card:nth-child(4n+3) { border-top: 12px solid var(--poster-blue); }
.portal-card:nth-child(4n) { border-top: 12px solid var(--poster-yellow); }
.portal-form input,.portal-form textarea,.portal-form select,.portal-toolbar input,.portal-toolbar select { border: var(--poster-rule); border-radius: 7px; background: var(--poster-paper); }
.portal-status { border: 2px solid currentColor; border-radius: 6px; text-transform: uppercase; letter-spacing: .04em; }
.passport-banner { background: var(--poster-yellow); }
.member-card { background: var(--poster-paper); color: var(--poster-ink); border: 3px solid var(--poster-ink); border-radius: 14px; box-shadow: 10px 10px 0 var(--poster-yellow); }
.member-card::before { content:"";position:absolute;inset:0 0 auto;height:16px;background:linear-gradient(90deg,var(--poster-red) 0 25%,var(--poster-yellow) 25% 50%,var(--poster-blue) 50% 75%,var(--poster-green) 75%); }
.member-card h1,.member-card h2,.member-card p { color: var(--poster-ink); }
.member-card .card-logo { border: 2px solid var(--poster-ink); }
.member-card [data-qr] { border: 3px solid var(--poster-ink); }
.admin-nav a { border: 2px solid var(--poster-ink); border-radius: 6px; box-shadow: 3px 3px 0 var(--poster-yellow); }
.brand-blocks { width:68px;height:14px;background:var(--poster-red);box-shadow:20px 14px 0 var(--poster-blue),48px 0 0 var(--poster-green);margin:0 0 34px auto; }
.membership-access .portal-form-wrap { max-width: 610px; }
.membership-join { display:flex;justify-content:space-between;gap:16px;align-items:center;margin:22px 0 14px;padding:18px;background:var(--poster-yellow);border:var(--poster-rule);box-shadow:4px 4px 0 var(--poster-ink); }
.membership-join span { font-weight:900; }
@media(max-width:650px){.portal-hero::after{width:58px;height:70px;right:12px}.membership-join{align-items:flex-start;flex-direction:column}}

/* Community, learning, onboarding, and accessible operation states. */
.portal-stack{display:grid;gap:18px}.portal-heading{margin:36px 0 16px}.portal-stats{grid-template-columns:repeat(4,1fr);margin-bottom:24px}.portal-stats .portal-card{min-height:150px}.admin-launchers{margin-top:24px}.skeleton{display:block;padding:30px;color:var(--muted)}button:disabled{cursor:not-allowed;filter:grayscale(1);opacity:.55}.tour-backdrop{position:fixed;inset:0;background:rgba(16,16,16,.68);z-index:2000;display:grid;place-items:center;padding:18px}.tour-modal{width:min(520px,100%);background:var(--poster-paper,#fff);border:3px solid #101010;border-radius:14px;box-shadow:10px 10px 0 var(--yellow);padding:clamp(24px,5vw,42px)}.tour-modal h2{font-size:clamp(1.8rem,5vw,2.6rem);margin:12px 0}.tour-modal>p{line-height:1.7}.portal-message:empty{display:none}.portal-message:not(:empty){padding:12px 16px;background:var(--sky-soft);border-left:5px solid var(--blue);border-radius:7px;margin-bottom:18px}.portal-message.error{background:var(--red-soft);border-left-color:var(--red)}:where(a,button,input,select,textarea):focus-visible{outline:4px solid #101010;outline-offset:3px}.portal-card code{white-space:pre-wrap;overflow-wrap:anywhere}.loading{pointer-events:none;opacity:.65}
@media(max-width:900px){.portal-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.portal-stats{grid-template-columns:1fr}.tour-modal{box-shadow:6px 6px 0 var(--yellow)}.portal-actions>*{width:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.portal-card details{margin-top:14px;border-top:2px solid rgba(16,16,16,.15);padding-top:12px}.portal-card summary{cursor:pointer;padding:6px}.lesson-card{margin:10px 0;padding:16px;background:var(--bg-grey);border-radius:10px}.lesson-card p{white-space:pre-wrap}.resource-link{display:block;margin-top:8px}.portal-card details summary:focus-visible{outline:4px solid var(--yellow);outline-offset:3px}
/* Shared workspace utilities: mobile-friendly language, feedback, and notifications. */
.workspace-tool{border:2px solid var(--poster-ink,#101010);background:#fff;border-radius:6px;padding:8px 10px;font:inherit;font-weight:800;margin-left:6px;position:relative}.workspace-tool [data-notification-count]{position:absolute;top:-9px;right:-8px;min-width:20px;padding:2px 5px;border-radius:999px;background:var(--red);color:#fff;font-size:.7rem}.dialog-close{float:right;border:0;background:transparent;font-size:2rem;line-height:1;cursor:pointer}.notification-list{display:grid;gap:10px;max-height:55vh;overflow:auto}.notification{border:2px solid rgba(16,16,16,.2);padding:12px;border-radius:8px}.notification.unread{border-left:8px solid var(--blue);background:var(--sky-soft)}.notification h3,.notification p{margin:0 0 6px}.notification small{display:block;color:var(--muted)}
@media(max-width:650px){.navbar .nav-links{gap:6px;flex-wrap:wrap}.workspace-tool{margin-left:0;padding:7px 8px}.tour-modal{max-height:90vh;overflow:auto}}
/* Completed authenticated workspace workflows. */
.checkbox-label{display:flex!important;align-items:center;gap:9px}.checkbox-label input[type=checkbox]{width:18px;height:18px;flex:0 0 18px;margin:0}.scanner-controls{display:flex;gap:10px;flex-wrap:wrap}.manual-checkin{margin-top:18px;padding-top:18px;border-top:2px solid rgba(16,16,16,.15)}#reader{margin-top:18px;max-width:100%;overflow:hidden}.compact-list{display:grid;gap:10px}.compact-preview{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border-bottom:2px solid rgba(16,16,16,.12);padding:12px 0}.compact-preview p{margin:4px 0}.compact-preview small{display:block;color:var(--muted)}.compact-preview .portal-actions{margin:0}.admin-nav a[aria-current=page]{background:var(--poster-yellow);box-shadow:3px 3px 0 var(--poster-ink)}.tour-target{position:relative;z-index:2002!important;outline:6px solid var(--poster-yellow)!important;outline-offset:5px;background:#fff!important}.guided-tour{background:rgba(16,16,16,.52);align-items:end;pointer-events:none}.guided-tour .tour-modal{pointer-events:auto;margin-bottom:20px}
@media(max-width:650px){.portal-shell{width:100%;overflow:hidden}.admin-nav{margin-inline:-18px;padding:4px 18px;scroll-snap-type:x proximity}.admin-nav a{min-height:44px;display:grid;place-items:center;scroll-snap-align:start}.portal-form input,.portal-form select,.portal-form textarea{font-size:16px}.portal-table-wrap{margin-inline:-8px}.scanner-controls>*{width:100%}.compact-preview{grid-template-columns:1fr}.compact-preview .portal-actions button{flex:1;min-height:44px}.notification-list{max-height:62vh}.guided-tour .tour-modal{margin:0}}
