.portal-hero{background:linear-gradient(125deg,var(--forest-2),var(--forest));color:#fff;padding:80px 0 68px}.portal-hero .wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:58px;align-items:center}.portal-hero h1{font-size:clamp(52px,7vw,88px);line-height:.94;margin:12px 0 20px}.portal-hero p{font-size:18px;color:rgba(255,255,255,.78);max-width:680px}.portal-badge{border:1px solid rgba(255,255,255,.17);border-radius:24px;padding:28px;background:rgba(255,255,255,.06)}.portal-badge strong{font:30px Georgia,serif;display:block;margin:8px 0}.portal-shell{display:grid;grid-template-columns:.78fr 1.22fr;gap:24px;align-items:start}.portal-side,.portal-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:28px}.portal-side{position:sticky;top:140px}.portal-side h3,.portal-card h2{font-size:31px;margin:0 0 12px}.portal-side p,.portal-card p{color:var(--muted)}.portal-nav{display:grid;gap:8px;margin-top:22px}.portal-nav button{border:1px solid var(--line);background:var(--paper);text-align:left;border-radius:12px;padding:13px 15px;font:inherit;cursor:pointer}.portal-nav button.is-active{background:var(--forest);color:#fff;border-color:var(--forest)}.portal-panel[hidden]{display:none}.portal-form{display:grid;grid-template-columns:1fr 1fr;gap:15px}.portal-form label{display:grid;gap:7px;font-size:13px;font-weight:700}.portal-form label.full,.portal-form .full{grid-column:1/-1}.portal-form input,.portal-form select,.portal-form textarea{width:100%;padding:14px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit}.portal-form textarea{min-height:110px;resize:vertical}.portal-form fieldset{grid-column:1/-1;border:1px solid var(--line);border-radius:16px;padding:18px}.portal-form legend{padding:0 8px;font-weight:700}.choice-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.choice{display:flex!important;grid-template-columns:auto 1fr!important;align-items:flex-start;gap:9px!important;padding:11px;border:1px solid var(--line);border-radius:10px;font-weight:400!important}.choice input{width:auto;margin-top:4px}.portal-actions{grid-column:1/-1;display:flex;gap:10px;flex-wrap:wrap;margin-top:5px}.portal-note{font-size:12px;color:var(--muted);grid-column:1/-1}.portal-alert{border-radius:14px;padding:14px 16px;margin:0 0 18px;background:var(--mint);color:var(--forest-2);font-size:14px}.portal-alert.error{background:#f7e4df;color:#6b3028}.dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:22px 0}.dashboard-stat{border:1px solid var(--line);border-radius:16px;padding:20px;background:var(--paper)}.dashboard-stat strong{display:block;font:30px Georgia,serif}.dashboard-stat span{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.portal-links{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.portal-link{padding:20px;border-radius:16px;background:var(--forest);color:#fff;text-decoration:none}.portal-link strong{font:24px Georgia,serif;display:block}.portal-link span{font-size:13px;color:rgba(255,255,255,.72)}.schedule-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.schedule-card{display:flex!important;grid-template-columns:auto 1fr!important;gap:9px!important;border:1px solid var(--line);border-radius:12px;padding:13px;font-weight:400!important;background:var(--paper)}.schedule-card input{width:auto;margin-top:4px}.schedule-card strong{display:block}.schedule-card small{display:block;color:var(--muted)}.volunteer-roles{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.vol-role{padding:22px;border:1px solid var(--line);border-radius:18px;background:#fff}.vol-role h3{font-size:26px;margin:8px 0}.vol-role p{font-size:14px;color:var(--muted)}
@media(max-width:900px){.portal-hero .wrap,.portal-shell{grid-template-columns:1fr}.portal-side{position:static}.schedule-grid,.volunteer-roles,.dashboard-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.portal-form,.choice-grid,.schedule-grid,.volunteer-roles,.dashboard-grid,.portal-links{grid-template-columns:1fr}.portal-form label.full,.portal-form .full{grid-column:auto}.portal-hero{padding:58px 0}.portal-card,.portal-side{padding:21px}}
@media print{.topbar,.footer,.portal-hero,.portal-side,.portal-actions .btn:not([type="submit"]){display:none!important}.section{padding:0!important}.portal-shell{display:block}.portal-card{border:0;padding:0}.portal-form input,.portal-form select,.portal-form textarea{border:1px solid #888}.portal-note{font-size:10px}}
