
:root{--navy:#06358f;--navy-dark:#00245f;--gold:#f7c600;--cream:#fffdf3;--ink:#15233d;--muted:#59677d;--line:#d6e0f0;--white:#fff;--shadow:0 18px 45px rgba(0,45,120,.14);--radius:22px}
*{box-sizing:border-box}body{margin:0;font-family:'DM Sans',sans-serif;color:var(--ink);background:#f6f9ff;line-height:1.55}h1,h2,h3{font-family:'Fraunces',serif;color:var(--navy-dark);line-height:1.08;margin:0}.portal-shell{min-height:100vh}.portal-header{background:#fff;border-bottom:4px solid var(--gold)}.portal-header-inner{width:min(calc(100% - 36px),1080px);margin:auto;min-height:92px;display:flex;align-items:center;justify-content:space-between;gap:1.5rem}.portal-brand{display:flex;align-items:center;gap:1rem}.portal-brand img{width:260px;max-width:52vw;height:66px;object-fit:contain;object-position:left center}.portal-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.18em;font-weight:800;color:var(--navy)}.portal-link,.portal-logout{border:0;background:none;color:var(--navy);font-weight:700;text-decoration:none;cursor:pointer;font:inherit}.portal-main{width:min(calc(100% - 36px),920px);margin:0 auto;padding:4rem 0 6rem}.portal-kicker{text-transform:uppercase;letter-spacing:.18em;font-size:.75rem;font-weight:800;color:#755b00;margin:0 0 .7rem}.portal-main h1{font-size:clamp(2.8rem,6vw,4.8rem);letter-spacing:-.04em}.portal-intro{font-size:1.1rem;color:var(--muted);max-width:720px;margin:.9rem 0 2.2rem}.local-banner{background:#fff3b0;border:1px solid #e3c34b;border-radius:14px;padding:.85rem 1rem;margin-bottom:1.5rem;color:#5f4b00;font-weight:650}.portal-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:2.25rem}.portal-card h2{font-size:2rem;margin-bottom:.35rem}.portal-card>.muted{color:var(--muted);margin:0 0 1.8rem}.event-form{display:grid;gap:1.35rem}.event-form label{display:grid;gap:.45rem;font-weight:750}.event-form input[type=text],.event-form input[type=date],.event-form textarea{width:100%;border:1px solid #cbd7eb;border-radius:12px;padding:.9rem 1rem;font:inherit;background:#fff;color:var(--ink)}.event-form textarea{resize:vertical;min-height:150px}.field-help{font-size:.8rem;color:var(--muted);font-weight:500}.photo-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-top:.35rem}.photo-heading h3{font-size:1.25rem}.photo-heading span{font-size:.8rem;color:var(--muted)}.photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.photo-slot{position:relative;border:2px dashed #b9c8df;border-radius:16px;min-height:180px;background:#f9fbff;overflow:hidden;cursor:pointer;display:grid;place-items:center;text-align:center;padding:1rem;color:var(--muted);font-weight:700}.photo-slot:hover{border-color:var(--navy);background:#f1f6ff}.photo-slot input{position:absolute;inset:0;opacity:0;cursor:pointer}.photo-slot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.photo-slot.has-image .photo-prompt{position:absolute;left:.6rem;right:.6rem;bottom:.6rem;background:rgba(0,36,95,.88);color:#fff;padding:.45rem .6rem;border-radius:9px;font-size:.75rem}.photo-slot .photo-prompt{z-index:2}.portal-actions{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:.5rem}.portal-submit{border:0;border-radius:999px;background:var(--gold);color:var(--navy-dark);font-weight:800;font:inherit;padding:.9rem 1.5rem;cursor:pointer;min-width:190px}.portal-submit:disabled{opacity:.55;cursor:wait}.submit-status{font-size:.9rem;color:var(--muted)}.submit-status.success{color:#176b32;font-weight:750}.submit-status.error{color:#9e1c1c;font-weight:750}.login-wrap{width:min(calc(100% - 36px),520px);margin:0 auto;padding:5rem 0}.login-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:2.5rem;text-align:center}.login-logo{display:block;width:min(330px,90%);height:auto;margin:0 auto 1.5rem}.login-card h1{font-size:3rem}.login-card p{color:var(--muted)}.login-button{width:100%;border:0;border-radius:999px;background:var(--gold);padding:.95rem 1.2rem;font:inherit;font-weight:800;color:var(--navy-dark);cursor:pointer;margin-top:.7rem}.login-secondary{display:block;margin-top:1.2rem;color:var(--navy);font-weight:700}.login-note{margin-top:1.4rem;padding:1rem;border-radius:12px;background:var(--cream);font-size:.85rem}.user-pill{display:flex;align-items:center;gap:.75rem;font-size:.82rem;color:var(--muted)}
@media(max-width:700px){.portal-header-inner{min-height:78px}.portal-brand img{width:210px;height:56px}.portal-label{display:none}.portal-main{padding:2.5rem 0 4rem}.portal-card{padding:1.4rem}.photo-grid{grid-template-columns:1fr}.photo-slot{min-height:210px}.portal-main h1{font-size:3rem}.login-wrap{padding:2.5rem 0}.login-card{padding:1.6rem}.login-card h1{font-size:2.5rem}}


/* News publishing workflow */
.portal-flow{margin-top:1.4rem;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:1.4rem 1.6rem;display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:1rem;align-items:center;box-shadow:0 10px 28px rgba(0,45,120,.06)}
.portal-flow>div{display:grid;grid-template-columns:34px 1fr;column-gap:.7rem;align-items:center}.portal-flow>div span{grid-row:1/3;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--gold);color:var(--navy-dark);font-weight:800}.portal-flow strong{color:var(--navy-dark)}.portal-flow small{color:var(--muted);line-height:1.3}.portal-flow>b{color:#9aa9bd;font-size:1.25rem}
@media(max-width:700px){.portal-flow{grid-template-columns:1fr}.portal-flow>b{transform:rotate(90deg);justify-self:center}}


/* Review queue */
.optional-label{font-size:.72rem;color:var(--muted);font-weight:600;margin-left:.25rem}
.admin-main{width:min(calc(100% - 36px),1080px)}
.queue-tabs{display:flex;gap:.55rem;flex-wrap:wrap;margin:1.4rem 0}.queue-tab{border:1px solid var(--line);background:#fff;border-radius:999px;padding:.65rem 1rem;font:inherit;font-weight:750;color:var(--navy);cursor:pointer}.queue-tab.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.review-queue{display:grid;gap:1.4rem;margin-top:1rem}.review-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:1.7rem}.review-meta{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-bottom:1.2rem;color:var(--muted)}.status-chip{display:inline-block;border-radius:999px;padding:.35rem .65rem;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;background:#fff3b0;color:#665000}.status-chip.published{background:#dff5e5;color:#176b32}.status-chip.rejected{background:#fde2e2;color:#8e1c1c}.review-fields{display:grid;gap:1rem}.review-fields label{display:grid;gap:.4rem;font-weight:750}.review-fields input,.review-fields textarea{width:100%;border:1px solid #cbd7eb;border-radius:12px;padding:.8rem .9rem;font:inherit}.review-fields textarea{min-height:150px;resize:vertical}.review-row{display:grid;grid-template-columns:.65fr 1.35fr;gap:1rem}.review-photos{display:grid;grid-template-columns:repeat(4,1fr);gap:.7rem;margin:1rem 0}.review-photos img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:12px}.review-actions{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;margin-top:1rem}.secondary-action{background:#fff;border:1px solid var(--line)}.reject-action{background:#fff0f0;color:#8e1c1c;border:1px solid #f3c1c1}.card-status{margin-left:auto}.local-banner a{color:inherit;font-weight:800}.admin-link{margin-right:.25rem}
@media(max-width:700px){.review-meta{align-items:flex-start;flex-direction:column}.review-row{grid-template-columns:1fr}.review-photos{grid-template-columns:1fr 1fr}.card-status{width:100%;margin-left:0}}

/* ===== TRUSTEE PORTAL: NEWS / SIGNATURE PROJECTS ===== */
.portal-tabs{display:flex;gap:.7rem;flex-wrap:wrap;margin:0 0 1.5rem}.portal-tab{border:1px solid #cbd7eb;border-radius:999px;background:#fff;color:var(--navy);padding:.75rem 1.15rem;font:inherit;font-weight:800;cursor:pointer}.portal-tab.active{background:var(--navy);border-color:var(--navy);color:#fff}.portal-tab:hover{border-color:var(--navy)}[data-portal-panel][hidden]{display:none!important}.project-editor-card{margin-top:0}.project-editor-grid{display:grid;gap:1.25rem;margin-top:1.2rem}.signature-project-form{display:grid;gap:1rem;border:1px solid #d7e2f5;border-top:5px solid var(--gold);border-radius:18px;padding:1.35rem;background:#fbfdff}.signature-project-heading{display:flex;align-items:center;gap:.9rem}.signature-project-heading h3{margin:0;font-size:1.45rem}.signature-project-heading small{display:block;color:var(--muted);font-weight:750;text-transform:uppercase;letter-spacing:.12em;font-size:.66rem;margin-bottom:.15rem}.project-seal{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;background:var(--gold);color:var(--navy-dark);font-weight:900}.signature-project-form label{display:grid;gap:.4rem;font-weight:750}.signature-project-form input[type=text],.signature-project-form textarea{width:100%;border:1px solid #cbd7eb;border-radius:12px;padding:.85rem 1rem;font:inherit;background:#fff;color:var(--ink)}.signature-project-form textarea{resize:vertical;min-height:112px}.project-visibility{display:flex!important;grid-template-columns:auto 1fr;align-items:center;gap:.65rem!important;font-weight:650!important;color:var(--muted)}.project-visibility input{width:18px;height:18px;accent-color:var(--navy)}.project-save-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.project-save-row .portal-submit{min-width:180px}.project-editor-note{margin:1.25rem 0 0;color:var(--muted);font-size:.86rem;border-left:3px solid var(--gold);padding-left:.85rem}.portal-logout:disabled{opacity:.55;cursor:wait}
@media(max-width:700px){.portal-tabs{display:grid;grid-template-columns:1fr 1fr}.portal-tab{padding:.7rem .8rem}.project-save-row .portal-submit{width:100%}}

/* ===== LOGIN RECOVERY FLOW ===== */
.recovery-form{display:grid;gap:1rem;margin-top:1.25rem;text-align:left}.recovery-form label{display:grid;gap:.45rem;font-weight:750}.recovery-form input{width:100%;border:1px solid #cbd7eb;border-radius:12px;padding:.9rem 1rem;font:inherit;background:#fff;color:var(--ink)}.login-flow-message{margin:1rem 0 0;padding:.8rem 1rem;border-radius:12px;background:#eef4ff;color:var(--navy-dark);font-weight:700}.login-flow-message.success{background:#edf8f0;color:#176b32}
