.portal-page { background:#fff9f5; }
.portal-shell { max-width:1120px; margin:auto; padding:clamp(2.5rem,6vw,5rem) 1.25rem 6rem; }
.portal-intro { max-width:720px; margin:0 auto 2rem; text-align:center; }
.portal-kicker { color:#a84568; font-size:.78rem; font-weight:800; letter-spacing:.18em; }
.portal-intro h1 { font-size:clamp(2.3rem,5vw,4rem); line-height:1.1; margin:.45rem 0 1rem; color:#2b2731; }
.portal-intro p { font-size:1.07rem; line-height:1.7; }
.portal-card { max-width:510px; margin:auto; padding:clamp(1.5rem,4vw,2.5rem); background:#fff; border:1px solid #efdfdf; border-radius:24px; box-shadow:0 25px 70px #4d233015; }
.portal-switch { display:flex; gap:.35rem; padding:.35rem; margin-bottom:2rem; background:#fff2f2; border-radius:999px; }
.portal-switch button { flex:1; border:0; border-radius:999px; background:transparent; padding:.85rem; font:inherit; font-weight:700; color:#865765; cursor:pointer; }
.portal-switch button[aria-selected="true"] { background:#fff; color:#983d5d; box-shadow:0 4px 15px #5c2c361a; }
.portal-card h2,.portal-dashboard h2 { color:#2b2731; margin:.2rem 0 .6rem; }
.portal-card p { line-height:1.6; }
.portal-card form { display:grid; gap:1rem; margin-top:1.5rem; }
.portal-card label { display:grid; gap:.45rem; font-size:.89rem; font-weight:700; color:#4b3e47; }
.portal-card input { width:100%; min-height:48px; padding:.75rem .9rem; border:1px solid #d9c7ce; border-radius:11px; background:#fffdfd; font:inherit; }
.portal-card input:focus { outline:2px solid #b74b6f; outline-offset:1px; }
.portal-button { min-height:49px; border:0; border-radius:11px; background:#a53d60; color:white; font:inherit; font-weight:800; cursor:pointer; }
.portal-button:hover { background:#842d4b; }
.portal-feedback { border-radius:12px; padding:.9rem 1rem; background:#edf8ef; color:#285c38; }
.portal-feedback.is-error { background:#fff0f1; color:#9b2947; }
.portal-welcome { padding:2rem; border-radius:24px; background:linear-gradient(120deg,#fff,#f9e9ef); border:1px solid #efdde4; }
.portal-welcome h2 { font-size:clamp(2rem,4vw,3rem); }
.portal-member-tabs { display:flex; gap:.6rem; margin:1.6rem 0 0; border-bottom:1px solid #e8d6dd; }
.portal-member-tabs button { display:inline-flex; align-items:center; gap:.6rem; min-height:50px; padding:.8rem 1.2rem; border:0; border-bottom:3px solid transparent; background:transparent; color:#715b65; font:inherit; font-weight:800; cursor:pointer; }
.portal-member-tabs button[aria-selected="true"] { border-bottom-color:#a53d60; color:#8f3657; }
.portal-member-tabs button:focus-visible { outline:2px solid #a53d60; outline-offset:-3px; }
.portal-member-tabs span { padding:.2rem .45rem; border-radius:999px; background:#f4e9ef; color:#8f3657; font-size:.66rem; text-transform:uppercase; letter-spacing:.06em; }
.portal-member-panel { min-height:260px; padding:clamp(1.5rem,3vw,2.4rem); border:1px solid #eddce3; border-top:0; border-radius:0 0 24px 24px; background:#fff; }
.portal-member-panel[hidden] { display:none; }
.portal-member-panel:focus-visible { outline:2px solid #a53d60; outline-offset:3px; }
.portal-newsletter { border-top:1px solid #eadde1; padding:1rem 0; }
.portal-newsletter time { font-size:.8rem; color:#9f4965; font-weight:700; }
.portal-newsletter h4 { margin:.3rem 0; }
.portal-newsletter p { white-space:pre-wrap; line-height:1.65; }
.portal-newsletter-latest { margin-top:1.5rem; padding:1.5rem; border:1px solid #e9d6dd; border-radius:18px; background:linear-gradient(140deg,#fffaf8,#fff3f7); }
.portal-newsletter-latest time { display:block; margin:.6rem 0 0; }
.portal-newsletter-latest h4 { font-size:clamp(1.4rem,2.5vw,1.9rem); color:#2b2731; }
.portal-latest-label { display:inline-block; padding:.3rem .65rem; border-radius:999px; background:#a53d60; color:#fff; font-size:.7rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.portal-newsletter-history { margin-top:2.2rem; }
.portal-newsletter-history h4 { color:#2b2731; font-size:1.3rem; }
.portal-newsletter-past { border-top:1px solid #eadde1; }
.portal-newsletter-past:last-child { border-bottom:1px solid #eadde1; }
.portal-newsletter-past summary { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem 1.4rem; padding:1rem .3rem; color:#342d33; cursor:pointer; }
.portal-newsletter-past summary time { min-width:100px; color:#9f4965; font-size:.83rem; font-weight:700; }
.portal-newsletter-past p { margin:.1rem .3rem 1.3rem; white-space:pre-wrap; line-height:1.65; }
.portal-empty { padding:1rem; border-radius:12px; background:#fff5f5; }
.portal-resource-list { display:grid; gap:.6rem; margin-top:1.5rem; }
.portal-resource-list span { display:flex; justify-content:space-between; gap:1rem; border:1px solid #eadde1; border-radius:10px; padding:.85rem 1rem; font-weight:700; }
.portal-resource-list small { color:#9f4965; font-weight:600; }
.portal-resource-note { font-size:.88rem; }
.portal-footer { display:flex; justify-content:space-between; gap:1rem; max-width:1120px; margin:auto; padding:0 1.25rem 2rem; color:#775f68; }
.portal-footer a { color:#8b3653; }
@media(max-width:720px) { .portal-footer { flex-direction:column; align-items:flex-start; } .portal-member-tabs { gap:0; } .portal-member-tabs button { flex:1; justify-content:center; padding:.7rem .45rem; font-size:.84rem; } .portal-member-tabs span { display:none; } }

.portal-section-heading { display:flex; justify-content:space-between; align-items:start; gap:1rem; }
.portal-section-heading h3 { font-size:clamp(1.8rem,3vw,2.5rem); margin:.25rem 0 .5rem; color:#2b2731; }
.portal-section-heading > strong { display:inline-block; flex-shrink:0; padding:.65rem 1rem; border-radius:999px; background:#fff0f3; color:#8f3657; font-size:.88rem; }
.portal-tier-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; margin:2rem 0 1rem; }
.portal-tier-card { display:flex; flex-direction:column; min-width:0; padding:1.35rem; border:1px solid #ecdde3; border-top:5px solid #e47183; border-radius:16px; background:#fffafa; }
.portal-tier-card > span { color:#9a4e67; font-size:.72rem; font-weight:800; letter-spacing:.12em; }
.portal-tier-card h4 { margin:.65rem 0 .3rem; font-size:1.55rem; color:#2b2731; }
.portal-tier-card p { line-height:1.55; }
.portal-tier-card ul { padding-left:1.15rem; margin:.4rem 0 1.4rem; line-height:1.7; }
.portal-tier-card > strong { margin-top:auto; padding:.72rem; border-radius:10px; background:#f2e9ed; color:#8d4b62; font-size:.86rem; text-align:center; }
.portal-tier-star { border-top-color:#13b5a8; background:#f7fdfc; }
.portal-tier-legend { border-top-color:#8864bc; background:#fcf9ff; }
.portal-tier-note { margin:1rem 0 0; font-size:.88rem; line-height:1.6; }
.portal-free-tag { display:inline-block; padding:.2rem .55rem; border-radius:999px; background:#e9f7ef; color:#23754b; font-size:.7rem; vertical-align:middle; }
.portal-resource { margin:1rem 0; padding:1rem; border:1px solid #eadde1; border-radius:12px; background:#fff; }
.portal-resource.is-locked { background:#fff9fa; }
.portal-resource > span { font-size:.76rem; font-weight:800; color:#9a4e67; }
.portal-resource h4 { margin:.3rem 0; color:#2b2731; }
.portal-resource p { white-space:pre-wrap; line-height:1.55; margin:.35rem 0; }
.portal-resource-section { margin-top:2rem; padding-top:1.5rem; border-top:1px solid #eadde1; }
.portal-resource-section h3 { margin:0 0 .4rem; color:#2b2731; font-size:1.5rem; }
.portal-resource-section > p { line-height:1.6; }
.portal-library-tabs { display:flex; gap:.55rem; flex-wrap:wrap; margin:1.4rem 0 0; padding:.4rem; border:1px solid #eadde1; border-radius:15px; background:#fff4f7; }
.portal-library-tabs button { flex:1; min-width:110px; padding:.8rem 1rem; border:0; border-radius:11px; background:transparent; color:#745763; font:inherit; font-weight:800; cursor:pointer; }
.portal-library-tabs button[aria-selected="true"] { background:#fff; color:#873450; box-shadow:0 3px 12px #5c2c3617; }
.portal-library-tabs button:focus-visible { outline:2px solid #a53d60; outline-offset:2px; }
.portal-resource-category { margin-top:1.4rem; padding:1.35rem; border:1px solid #eadde1; border-radius:16px; background:linear-gradient(145deg,#fffdfd,#fff9fb); }
.portal-resource-category[hidden] { display:none; }
.portal-resource-category h4 { margin:0 0 .3rem; color:#2b2731; font-size:1.35rem; }
.portal-resource-category h5 { margin:1.2rem 0 .45rem; color:#8f3657; font-size:.95rem; }
.portal-resource-category > p { margin:.25rem 0 .8rem; color:#715b65; line-height:1.5; }
.portal-resource-category .portal-resource { margin:.7rem 0; }
.portal-resource-category .portal-resource h5 { margin:.35rem 0; color:#2b2731; font-size:1.12rem; }
.portal-resource-upcoming { padding:.8rem 1rem; border:1px dashed #e4cfd8; border-radius:10px; color:#715b65; background:#fff; }
.portal-resource-download { display:inline-flex; margin-top:.45rem; padding:.7rem .95rem; border-radius:9px; color:#fff; background:#a53d60; font-weight:800; text-decoration:none; }
.portal-resource-download[hidden] { display:none; }
.portal-resource-download:hover { background:#842d4b; }
.portal-resource-download:focus-visible { outline:2px solid #a53d60; outline-offset:3px; }
.portal-resource-actions { display:flex; flex-wrap:wrap; align-items:center; gap:.6rem; margin-top:.55rem; }
.portal-resource-actions .portal-resource-download { margin-top:0; }
.portal-resource-view { display:inline-flex; padding:.68rem .95rem; border:1px solid #a53d60; border-radius:9px; color:#873450; font-weight:800; text-decoration:none; }
.portal-resource-view:hover { background:#fff0f4; }
.portal-resource-view:focus-visible { outline:2px solid #a53d60; outline-offset:3px; }
.portal-music-heading { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.6rem 1rem; margin-top:1.5rem; }
.portal-music-heading h5 { margin:0; }
.portal-bundle-download { margin-top:0; }
.portal-music-collection { margin-top:.7rem; padding:.9rem 1rem; border:1px solid #eadde1; border-radius:12px; background:#fff; }
.portal-music-collection summary { color:#873450; font-weight:800; cursor:pointer; }
.portal-music-collection[open] summary { margin-bottom:1rem; }
.portal-music-collection summary:focus-visible { outline:2px solid #a53d60; outline-offset:3px; }
.portal-membership-lock { margin-top:1.5rem; line-height:1.6; }
.portal-track-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.7rem; margin-top:.8rem; }
.portal-track-list .portal-resource { min-width:0; margin:0; }
.portal-audio-track audio { display:block; width:100%; margin:.6rem 0 .1rem; }
.portal-audio-track .portal-resource-download { padding:.5rem .7rem; font-size:.83rem; }
@media(max-width:900px) { .portal-tier-grid { grid-template-columns:1fr; } .portal-section-heading { flex-direction:column; } }
@media(max-width:650px) { .portal-track-list { grid-template-columns:1fr; } }

.portal-dashboard { scroll-margin-top:90px; }
