/* Givefinity brand stylesheet — extracted from brand-html.ts brandStyles()
   Token source: docs/reference/prototype/app/globals.css (canonical)
   Served as /gf.css via Fastify static from apps/web/public/ */
:root{
--gf-primary-900:#0a3d62;
--gf-primary-700:#135ea3;
--gf-primary-500:#2f72b8;
--gf-accent-teal-700:#0f5c52;
--gf-accent-teal-500:#1a8070;
--gf-neutral-900:#1b1f24;
--gf-neutral-700:#4a5563;
--gf-neutral-600:#718096;
--gf-neutral-500:#8898aa;
--gf-neutral-400:#adb5bd;
--gf-neutral-200:#d8e0e8;
--gf-neutral-100:#edf2f7;
--gf-neutral-50:#f6f9fc;
--gf-success-600:#2e7d32;
--gf-warning-600:#b7791f;
--gf-danger-600:#c53030;
/* Brand manual exact colors */
--gf-brand-teal:#44c3d0;
--gf-brand-teal-50:#ecf9fa;
--gf-brand-teal-100:#d0f0f3;
--gf-brand-teal-200:#a2e1e8;
--gf-brand-midnight:#27203f;
--gf-brand-midnight-50:#eae9eb;
--gf-brand-midnight-100:#c9c7cf;
--gf-brand-purple:#c778b2;
--gf-brand-purple-50:#f8eef6;
--gf-brand-purple-100:#f1ddec;
--gf-brand-yellow:#fbb85b;
--gf-brand-yellow-50:#fff7ec;
--gf-brand-yellow-100:#feedd6;
--gf-brand-red:#f15d5e;
--gf-brand-red-50:#fef1f1;
--gf-brand-red-100:#fbd6d7;
}
.gf-brand-body{
margin:0;
min-height:100vh;
font-family:Montserrat,system-ui,-apple-system,sans-serif;
font-size:15px;
line-height:1.55;
color:var(--gf-neutral-900);
background:#eceef6;
}
.gf-header:not(.gf-vol-dash-header){
background:#fbfdff;
color:var(--gf-primary-900);
padding:0.95rem 1.25rem 0.9rem;
box-shadow:0 8px 28px rgba(10,61,98,.1);
border-bottom:3px solid var(--gf-accent-teal-500);
}
.gf-header-inner{
max-width:1180px;
margin:0 auto;
display:flex;
align-items:center;
justify-content:space-between;
gap:1.1rem;
flex-wrap:wrap;
}
.gf-header.gf-site-header--light.gf-vol-dash-header{
position:sticky;
top:0;
z-index:40;
padding:0;
color:var(--gf-primary-900);
background:rgba(255,255,255,.94);
backdrop-filter:saturate(180%) blur(10px);
border-bottom:3px solid var(--gf-brand-teal);
box-shadow:0 6px 24px rgba(10,61,98,.08);
}
.gf-header.gf-vol-dash-header .gf-header-inner--stacked{
flex-direction:column;
align-items:stretch;
gap:14px;
padding:18px 24px;
max-width:1180px;
margin:0 auto;
}
.gf-header-brand-row{
display:flex;
flex-wrap:wrap;
align-items:center;
justify-content:space-between;
gap:16px 28px;
width:100%;
}
.gf-logo--with-lockup{
display:inline-flex;
align-items:center;
gap:12px;
text-decoration:none;
color:inherit;
border-radius:8px;
}
.gf-logo--with-lockup:focus-visible{outline:2px solid var(--gf-primary-500);outline-offset:3px;}
.gf-brand-mark-img{
display:block;
width:36px;
height:auto;
flex-shrink:0;
}
.gf-brand-wordmark-img{
display:block;
width:170px;
height:auto;
flex-shrink:0;
}
.gf-brand-logo-fullcolor{
width:auto;
height:36px;
max-width:200px;
object-fit:contain;
display:block;
}
.gf-vol-dash-home-link{
display:inline-flex;
align-items:center;
text-decoration:none;
border-radius:6px;
flex-shrink:0;
}
.gf-vol-dash-home-link:focus-visible{outline:2px solid var(--gf-primary-500);outline-offset:3px;}
.gf-vol-dash-header-meta{
margin-left:auto;
display:flex;
align-items:center;
flex-wrap:wrap;
gap:8px;
}
.gf-vol-settings-menu{
position:relative;
}
.gf-vol-settings-trigger{
list-style:none;
width:34px;
height:34px;
border-radius:10px;
border:1px solid rgba(10,61,98,.18);
background:#fff;
display:inline-flex;
align-items:center;
justify-content:center;
font-size:17px;
line-height:1;
cursor:pointer;
color:var(--gf-primary-900);
}
.gf-vol-settings-menu[open] .gf-vol-settings-trigger{
background:#f0f5fb;
border-color:rgba(10,61,98,.28);
}
.gf-vol-settings-trigger::-webkit-details-marker{display:none;}
.gf-vol-settings-pop{
position:absolute;
right:0;
top:calc(100% + 0.35rem);
min-width:10rem;
border:1px solid rgba(10,61,98,.16);
border-radius:10px;
background:#fff;
box-shadow:0 8px 26px rgba(10,61,98,.14);
padding:.35rem;
z-index:50;
display:flex;
flex-direction:column;
gap:.2rem;
}
.gf-vol-settings-pop a{
display:block;
padding:.42rem .55rem;
border-radius:8px;
font-size:.82rem;
font-weight:700;
color:var(--gf-primary-900);
text-decoration:none;
}
.gf-vol-settings-pop a:hover{
background:#eef4fb;
}
.gf-vol-dash-avatar{
width:34px;
height:34px;
border-radius:50%;
background:linear-gradient(135deg,var(--gf-primary-700),var(--gf-accent-teal-500));
color:#fff;
font-size:11px;
font-weight:800;
display:inline-flex;
align-items:center;
justify-content:center;
letter-spacing:.02em;
flex-shrink:0;
}
.gf-vol-dash-avatar-img{
object-fit:cover;
border:1px solid rgba(10,61,98,.16);
background:#fff;
}
.gf-vol-dash-logout{
font-size:11px;
padding:6px 10px;
white-space:nowrap;
}
.gf-header-nav-row{
width:100%;
padding-top:10px;
border-top:1px solid rgba(10,61,98,.12);
display:flex;
justify-content:center;
}
.gf-vol-dash-header-sections{
display:flex;
flex-wrap:wrap;
align-items:center;
justify-content:center;
gap:8px;
width:auto;
min-width:0;
}
.gf-vol-dash-header-sections a{
flex:0 0 auto;
font-size:10px;
font-weight:700;
text-transform:uppercase;
letter-spacing:.06em;
padding:7px 11px;
border-radius:999px;
background:rgba(255,255,255,.95);
border:1px solid rgba(10,61,98,.16);
color:var(--gf-primary-900);
text-decoration:none;
white-space:nowrap;
}
.gf-vol-dash-header-sections a:hover{
border-color:var(--gf-accent-teal-500);
text-decoration:none;
}
.gf-vol-dash-header-sections a[aria-current="page"]{
background:var(--gf-brand-teal);
border-color:var(--gf-brand-teal);
color:#fff;
}
.gf-profile-settings-link{
display:inline-flex;
align-items:center;
gap:.35rem;
}
.gf-vol-dash-session-context{
margin:0;
padding:8px 12px;
font-size:11px;
font-weight:700;
letter-spacing:.02em;
color:var(--gf-primary-900);
background:rgba(19,94,163,.07);
border-radius:10px;
line-height:1.45;
border:1px solid rgba(19,94,163,.14);
}
.gf-brand{
display:inline-flex;
align-items:center;
gap:0.75rem;
text-decoration:none;
color:var(--gf-primary-900);
padding:0.25rem 0.35rem 0.25rem 0;
border-radius:6px;
}
.gf-brand:focus-visible{outline:2px solid var(--gf-primary-500);outline-offset:3px;}
.gf-logo-mark{display:block;flex-shrink:0;width:200px;height:32px;}
.gf-wordmark{
display:block;
font-family:Montserrat,system-ui,sans-serif;
font-weight:800;
font-size:1.35rem;
letter-spacing:0.14em;
color:#0f2a43;
line-height:1;
white-space:nowrap;
}
.gf-main{
max-width:1180px;
margin:0 auto;
padding:1.8rem 1.4rem 3rem;
}
.gf-page-head{
background:linear-gradient(135deg,#ffffff 0%,#f6f9fc 100%);
border:1px solid var(--gf-neutral-200);
border-radius:14px;
padding:1.1rem 1.15rem 0.95rem;
margin:0 0 1rem;
box-shadow:0 2px 10px rgba(39,32,63,.06);
}
.gf-page-head p{margin:0.35rem 0;}
.gf-card{
background:#fff;
border:1px solid var(--gf-neutral-200);
border-radius:14px;
padding:1.15rem 1.2rem;
margin:0 0 1rem;
box-shadow:0 6px 18px rgba(15,42,67,.06);
}
.gf-shell-section-title{
margin:0 0 .2rem;
font-size:1.4rem;
font-weight:700;
color:var(--gf-primary-900);
}
.gf-page-subhead{
margin:0;
font-size:.9rem;
color:#5b677d;
}
.gf-toolbar{
display:flex;
flex-wrap:wrap;
justify-content:space-between;
align-items:center;
gap:.6rem .8rem;
margin:0 0 1rem;
}
.gf-toolbar-actions{
display:flex;
flex-wrap:wrap;
gap:.45rem;
}
.gf-tab-pills{
display:flex;
flex-wrap:wrap;
gap:.45rem;
margin:.25rem 0 1rem;
}
.gf-tab-pill{
display:inline-flex;
align-items:center;
padding:.38rem .78rem;
border-radius:999px;
font-size:.76rem;
font-weight:700;
letter-spacing:.04em;
text-transform:uppercase;
border:1px solid rgba(26,128,112,.22);
background:rgba(26,128,112,.12);
color:#205469;
}
.gf-tab-pill.is-active{
background:var(--gf-brand-teal);
border-color:var(--gf-brand-teal);
color:#fff;
}
.gf-grid{
display:grid;
grid-template-columns:1fr;
gap:0.85rem;
margin:0 0 1rem;
}
.gf-grid-2{
grid-template-columns:repeat(2,minmax(0,1fr));
}
.gf-grid-3{
grid-template-columns:repeat(3,minmax(0,1fr));
}
.gf-metric{
background:#fff;
border:1px solid var(--gf-neutral-200);
border-radius:12px;
padding:0.7rem 0.8rem;
}
.gf-metric-label{
font-size:0.75rem;
font-weight:600;
color:#5e677b;
text-transform:uppercase;
letter-spacing:.06em;
}
.gf-metric-value{
font-size:1.25rem;
font-weight:700;
color:var(--gf-neutral-900);
line-height:1.25;
margin-top:0.2rem;
}
.gf-next-action{
border-left:4px solid #c9a227;
background:linear-gradient(90deg,#fffbeb 0%,#fffdf8 100%);
padding:0.75rem 0.95rem;
border-radius:10px;
margin:0.8rem 0 1rem;
border:1px solid #f0e4c8;
border-left-width:4px;
border-left-color:#c9a227;
box-shadow:0 2px 8px rgba(120,90,20,.06);
}
.gf-next-action strong{color:#5c4510;}
.gf-empty-state{
padding:0.9rem 1rem;
background:#fbfcff;
border:1px dashed var(--gf-neutral-600);
border-radius:10px;
color:#586177;
}
.gf-timeline{
list-style:none;
margin:0;
padding:0;
}
.gf-timeline li{
position:relative;
padding:0 0 0.8rem 1rem;
margin:0 0 0.45rem;
border-left:2px solid #d8deea;
}
.gf-timeline li::before{
content:"";
position:absolute;
left:-0.37rem;
top:0.1rem;
width:0.55rem;
height:0.55rem;
border-radius:50%;
background:var(--gf-accent-teal-700);
border:2px solid #d9f2f5;
}
.gf-timeline li:last-child{margin-bottom:0;padding-bottom:0;border-left-color:transparent;}
.gf-actions{display:flex;flex-wrap:wrap;gap:0.5rem;align-items:center;}
.gf-details{
background:#fcfdff;
border:1px solid #e8ecf4;
border-radius:8px;
padding:0.2rem 0.45rem;
}
.gf-details summary{
cursor:pointer;
font-weight:600;
font-size:0.82rem;
color:#3f4962;
}
.gf-details ul{margin:0.45rem 0 0.2rem;padding-left:1rem;}
.gf-details li{margin:0.22rem 0;}
.gf-main h1{
margin:0 0 0.5rem;
font-size:1.7rem;
font-weight:700;
color:var(--gf-neutral-900);
line-height:1.25;
}
.gf-main h2{
margin:1.5rem 0 0.75rem;
font-size:1.2rem;
font-weight:700;
color:var(--gf-neutral-900);
border-bottom:1px solid var(--gf-neutral-200);
padding-bottom:0.5rem;
}
.gf-card h2{
margin:0 0 0.35rem;
padding:0;
border:0;
font-size:1.08rem;
font-weight:800;
color:var(--gf-primary-900);
letter-spacing:0.01em;
}
.gf-card h2 + .muted{
margin:0 0 0.65rem;
font-size:0.88rem;
color:#5a6578;
}
.gf-main h3{
margin:1rem 0 0.5rem;
font-size:1.05rem;
font-weight:700;
color:var(--gf-neutral-900);
}
.gf-main .row{
display:flex;
flex-wrap:wrap;
gap:0.65rem 1rem;
align-items:center;
margin:0.75rem 0 1rem;
}
.gf-main .muted{color:#616c83;font-size:0.875rem;}
.gf-main label{font-weight:600;font-size:0.875rem;color:var(--gf-neutral-900);}
.gf-main input,.gf-main select,.gf-main textarea{
font:inherit;
padding:0.5rem 0.65rem;
margin:0.2rem 0 0.65rem;
border:1px solid var(--gf-neutral-200);
border-radius:6px;
background:#fff;
color:var(--gf-neutral-900);
width:100%;
max-width:100%;
box-sizing:border-box;
}
.gf-main input:focus,.gf-main select:focus,.gf-main textarea:focus{
outline:2px solid var(--gf-accent-teal-700);
outline-offset:1px;
border-color:var(--gf-accent-teal-700);
}
.gf-main table{
width:100%;
border-collapse:separate;
border-spacing:0;
margin:0.75rem 0 1rem;
background:#fff;
border:1px solid var(--gf-neutral-200);
border-radius:8px;
overflow:hidden;
}
.gf-main th,.gf-main td{
padding:0.55rem 0.65rem;
text-align:left;
border-bottom:1px solid var(--gf-neutral-200);
vertical-align:top;
}
.gf-main tbody tr:nth-child(even) td{background:#fcfcfe;}
.gf-main tbody tr:hover td{background:#f5f8fc;}
.gf-main tr:last-child td{border-bottom:none;}
.gf-main thead th{
background:linear-gradient(180deg,#f7f7fb 0%,#eef0f5 100%);
font-weight:700;
font-size:0.8rem;
text-transform:none;
letter-spacing:.01em;
color:var(--gf-neutral-900);
}
.gf-main tbody th{font-weight:600;background:#fafafa;}
.gf-main pre#status,.gf-main pre#dashStatus{
background:#fff;
border:1px solid var(--gf-neutral-200);
border-radius:6px;
padding:0.65rem 0.75rem;
min-height:1.25rem;
}
.gf-main pre#formStatus,.gf-main pre#error{
background:#fff;
border:1px solid var(--gf-neutral-200);
border-radius:6px;
padding:0.65rem 0.75rem;
min-height:1.25rem;
}
.gf-main pre#error:not(:empty){
color:var(--gf-danger-600);
border-color:#f0c4c5;
background:#fff8f8;
}
.gf-btn{
font:inherit;
font-weight:600;
cursor:pointer;
border-radius:999px;
padding:0.45rem 1rem;
border:1px solid transparent;
margin:0.15rem 0.15rem 0.15rem 0;
transition:background .15s,border-color .15s,color .15s,opacity .15s;
}
.gf-btn:disabled{opacity:.55;cursor:not-allowed;}
.gf-btn:focus-visible{
outline:3px solid rgba(47,114,184,.35);
outline-offset:2px;
}
.gf-btn-primary{
background:var(--gf-brand-teal);
color:#27203f;
border-color:#2db5c3;
}
.gf-btn-primary:hover:not(:disabled){background:#2db5c3;border-color:#2aabb8;}
.gf-btn-primary:active:not(:disabled){filter:brightness(.95);}
.gf-btn-secondary{
background:#fff;
color:var(--gf-neutral-900);
border-color:var(--gf-neutral-200);
}
.gf-btn-secondary:hover:not(:disabled){border-color:var(--gf-neutral-600);}
.gf-btn-secondary:active:not(:disabled){background:#f8f8fa;}
.gf-btn-accent{
background:#c778b2;
color:#fff;
border-color:#b56aa0;
}
.gf-btn-accent:hover:not(:disabled){filter:brightness(1.06);}
.gf-btn-accent:active:not(:disabled){filter:brightness(.95);}
.gf-btn-danger{
background:#fff;
color:var(--gf-danger-600);
border-color:var(--gf-danger-600);
}
.gf-btn-danger:hover:not(:disabled){background:#fff5f5;}
.gf-btn-danger:active:not(:disabled){background:#ffecec;}
.gf-btn-logout{
background:#fff;
color:var(--gf-primary-900);
border:1px solid var(--gf-neutral-200);
}
.gf-btn-logout:hover:not(:disabled){background:#f3f7fc;}
.gf-btn-logout:active:not(:disabled){background:#eaf1f9;}
.gf-user-strip{
display:flex;
align-items:center;
gap:0.65rem;
flex-shrink:0;
}
.gf-header-meta{
color:#4a5563;
font-size:0.8rem;
max-width:min(240px,40vw);
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
.gf-main ul{padding-left:1.15rem;}
.gf-main li{margin:0.35rem 0;}
.gf-main small{color:var(--gf-neutral-600);}
.gf-table-wrap{
overflow-x:auto;
-webkit-overflow-scrolling:touch;
margin:0.75rem 0 1rem;
}
.gf-table-wrap table{
margin:0;
min-width:640px;
}
.gf-num{text-align:right;font-variant-numeric:tabular-nums;}
.gf-truncate{
max-width:16rem;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
display:inline-block;
vertical-align:bottom;
}
.gf-status{
display:inline-block;
padding:0.18rem 0.45rem;
border-radius:999px;
font-size:0.78rem;
font-weight:600;
line-height:1.2;
border:1px solid transparent;
}
.gf-status-pending{background:#fff6e8;border-color:#fbb85b;color:#7a5112;}
.gf-status-approved{background:#ecf6ff;border-color:#2f72b8;color:#0a3d62;}
.gf-status-rejected{background:#fff0f0;border-color:#c53030;color:#7a2425;}
.gf-vol-hero{
background:linear-gradient(125deg,#e8f2ff 0%,#f5f9ff 38%,#ffffff 100%);
border:1px solid #c8daf0;
box-shadow:0 10px 32px rgba(10,61,98,.1);
padding:1.35rem 1.4rem 1.25rem;
}
.gf-vol-hero.gf-card{
background:linear-gradient(125deg,#e8f2ff 0%,#f5f9ff 38%,#ffffff 100%);
}
.gf-vol-section-title{
font-size:2rem;
font-weight:800;
letter-spacing:.03em;
color:var(--gf-primary-900);
margin:.05rem 0 -.2rem;
}
.gf-vol-hero-top{
display:grid;
grid-template-columns:minmax(0,1.3fr) 150px;
gap:.8rem;
align-items:center;
}
.gf-vol-hero-sparkle{margin:0 0 0.15rem;font-size:1.85rem;line-height:1;}
.gf-vol-hero-avatar{
width:150px;
height:150px;
border-radius:999px;
background:radial-gradient(circle at 32% 28%,#ffe8f0 0%,#ffb8d4 32%,#e878a8 62%,#b8568c 100%);
justify-self:end;
box-shadow:0 12px 28px rgba(180,90,130,.35),inset -12px -12px 28px rgba(255,255,255,.35);
position:relative;
}
.gf-vol-hero-avatar::after{
content:"";
position:absolute;
inset:18%;
border-radius:50%;
background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.65),transparent 55%);
opacity:0.9;
}
.gf-vol-hero-avatar-img{
object-fit:cover;
border:1px solid rgba(10,61,98,.12);
}
.gf-progress-row{
display:grid;
grid-template-columns:minmax(120px,1fr) minmax(120px,2fr) auto;
align-items:center;
gap:.55rem;
margin:0 0 .45rem;
}
.gf-progress-label{font-size:.85rem;color:#344b66;font-weight:600;}
.gf-progress-track{
height:10px;
background:#e5edf6;
border-radius:999px;
overflow:hidden;
}
.gf-progress-fill{
display:block;
height:100%;
background:linear-gradient(90deg,#0f5c52,#2f72b8);
}
.gf-progress-value{font-size:.78rem;color:#3f566f;font-weight:700;}
.gf-vol-hero-context{font-weight:600;color:#2f3f59;margin:.2rem 0;}
.gf-vol-progress-card{
border:1px solid var(--gf-neutral-200);
border-radius:12px;
padding:.55rem .7rem;
background:#fff;
margin:.45rem 0;
}
.gf-vol-progress-kicker{
margin:0;
font-size:.72rem;
text-transform:uppercase;
letter-spacing:.05em;
color:#5f6a80;
font-weight:700;
}
.gf-vol-progress-big{
margin:.15rem 0;
font-size:2rem;
font-weight:800;
line-height:1.05;
color:#1e3350;
}
.gf-vol-progress-track{
height:10px;
border-radius:999px;
background:#e4ebf4;
overflow:hidden;
}
.gf-vol-progress-fill{
display:block;
height:100%;
background:linear-gradient(90deg,#1a8070 0%,#2f72b8 100%);
}
.gf-vol-progress-note{margin:.2rem 0 0;font-size:.8rem;color:#395472;font-weight:600;}
.gf-vol-hero h1{
margin:0.1rem 0 0.45rem;
font-size:2rem;
line-height:1.15;
}
.gf-vol-hero-kicker{
margin:0;
font-size:.76rem;
letter-spacing:.08em;
text-transform:uppercase;
font-weight:700;
color:var(--gf-primary-900);
}
.gf-form-section{
border:1px solid var(--gf-neutral-200);
border-radius:12px;
padding:0.65rem 0.78rem;
margin:0 0 0.6rem;
background:#fbfdff;
}
.gf-vol-dashboard{
display:grid;
grid-template-columns:minmax(0,1.55fr) minmax(280px,.9fr);
gap:0.9rem;
align-items:start;
}
.gf-vol-dashboard--stacked{
grid-template-columns:1fr;
}
.gf-vol-mid-grid{
display:grid;
grid-template-columns:minmax(0,1.25fr) minmax(260px,0.95fr);
gap:0.9rem;
align-items:start;
margin:0 0 0.85rem;
}
.gf-activities-toolbar{
display:flex;
flex-wrap:wrap;
gap:0.45rem;
align-items:center;
margin:0 0 0.75rem;
}
.gf-filter-chip,.gf-act-filter{
border:1px solid var(--gf-neutral-200);
background:#fff;
border-radius:999px;
padding:0.28rem 0.65rem;
font-size:0.78rem;
font-weight:600;
color:#3d4a5c;
cursor:pointer;
}
.gf-filter-chip.is-active,.gf-act-filter.is-active{
background:var(--gf-primary-900);
color:#fff;
border-color:var(--gf-primary-900);
}
table.gf-act-table th{
font-size:0.72rem;
text-transform:uppercase;
letter-spacing:0.04em;
color:#5f6a80;
}
table.gf-act-table td{vertical-align:middle;}
.gf-act-actions{white-space:nowrap;}
.gf-act-row-buttons{
display:flex;
flex-wrap:wrap;
gap:0.35rem;
align-items:center;
justify-content:flex-end;
max-width:14rem;
margin-left:auto;
}
tr.gf-act-locked{background:#f8fafc;}
tr[data-vol-status="verified"] td:first-child{
box-shadow:inset 3px 0 0 0 #44c3d0;
}
tr[data-vol-status="in_review"] td:first-child{
box-shadow:inset 3px 0 0 0 #f59e0b;
}
tr[data-vol-status="not_approved"] td:first-child{
box-shadow:inset 3px 0 0 0 #ef4444;
}
tr[data-vol-status="other"] td:first-child{
box-shadow:inset 3px 0 0 0 #94a3b8;
}
.gf-activities-status-legend{font-size:0.82rem;}
.gf-activities-status-legend .gf-legend-verified{color:#15803d;}
.gf-activities-status-legend .gf-legend-in_review{color:#b45309;}
.gf-activities-status-legend .gf-legend-not_approved{color:#b91c1c;}
.gf-activities-status-legend .gf-legend-other{color:#475569;}
.gf-goals-section-title{
margin:1.15rem 0 0.5rem;
font-size:1.05rem;
font-weight:800;
color:var(--gf-primary-900);
}
.gf-goals-section-title:first-of-type{margin-top:0;}
.gf-goal-stat-secondary{
font-size:1.05rem;
font-weight:700;
color:#2a4a6e;
margin:0.15rem 0 0;
}
.gf-goal-create-form{
display:grid;
grid-template-columns:repeat(2,minmax(0,1fr));
gap:0.5rem 0.85rem;
align-items:end;
margin-top:0.45rem;
}
.gf-goal-create-form button{grid-column:1/-1;justify-self:start;}
@media(max-width:560px){
.gf-goal-create-form{grid-template-columns:1fr;}
/* Notification popover: anchor to the viewport, not the bell, so it never
   extends off-screen when the stacked header places the bell on the left. */
.gf-notif-pop{position:fixed;left:.5rem;right:.5rem;top:4.25rem;width:auto;max-height:70vh;overflow-y:auto;}
}
.gf-modal-form-stack{
display:flex;
flex-direction:column;
gap:0.35rem;
}
.gf-modal-section{
margin-bottom:0.15rem;
}
.gf-modal-actions{
margin-top:0.85rem;
padding-top:0.65rem;
border-top:1px solid var(--gf-neutral-200);
gap:0.5rem;
}
.gf-btn-modal-primary{
min-width:11rem;
font-weight:800;
font-size:1.02rem;
padding:0.58rem 1.35rem;
box-shadow:0 4px 14px rgba(10,61,98,.18);
}
.gf-btn-sm{
font-size:0.78rem;
padding:0.28rem 0.55rem;
}
.gf-goals-grid{
display:grid;
grid-template-columns:repeat(auto-fill,minmax(250px,1fr));
gap:0.9rem;
margin:0 0 1rem;
}
.gf-goal-card{
border:1px solid var(--gf-neutral-200);
border-radius:12px;
padding:0.95rem 1rem;
background:linear-gradient(180deg,#fbfdff 0%,#fff 100%);
box-shadow:0 1px 6px rgba(39,32,63,.05);
}
.gf-goal-card h3{margin:0 0 0.35rem;font-size:1rem;color:var(--gf-primary-900);}
.gf-goal-card .gf-goal-meta{margin:0 0 0.5rem;font-size:0.8rem;color:#5a6578;}
.gf-goal-stat{font-size:1.35rem;font-weight:800;color:#1e3350;}
.gf-plan-card{
border:1px solid var(--gf-neutral-200);
border-radius:12px;
padding:1rem 1.05rem;
margin:0 0 0.65rem;
background:#fff;
}
.gf-plan-grid{
display:grid;
grid-template-columns:repeat(2,minmax(0,1fr));
gap:.85rem;
}
.gf-profile-hero{
display:grid;
grid-template-columns:120px minmax(0,1fr);
gap:1rem;
align-items:center;
}
.gf-profile-avatar{
width:108px;
height:108px;
border-radius:999px;
display:flex;
align-items:center;
justify-content:center;
font-size:1.5rem;
font-weight:800;
color:#fff;
background:linear-gradient(135deg,#135ea3,#1a8070);
box-shadow:0 8px 20px rgba(10,61,98,.2);
}
.gf-profile-form-grid{
display:grid;
grid-template-columns:repeat(2,minmax(0,1fr));
gap:.6rem .9rem;
}
.gf-profile-portfolio-list{
display:grid;
grid-template-columns:repeat(2,minmax(0,1fr));
gap:.7rem;
}
.gf-portfolio-item{
border:1px solid var(--gf-neutral-200);
border-radius:10px;
padding:.75rem .8rem;
background:#fff;
}
.gf-portfolio-section{
margin-bottom:1.5rem;
}
.gf-portfolio-section-title{
font-size:1rem;
font-weight:700;
color:var(--gf-primary-700);
margin:0 0 .6rem;
padding-bottom:.3rem;
border-bottom:2px solid var(--gf-primary-100,#dbeafe);
text-transform:uppercase;
letter-spacing:.04em;
}
.gf-portfolio-empty{
color:var(--gf-neutral-400);
font-size:.9rem;
margin:.25rem 0;
}
.gf-artifact-card{
border:1px solid var(--gf-neutral-200);
border-radius:10px;
padding:.75rem .85rem;
background:#fff;
margin-bottom:.55rem;
}
.gf-artifact-card-header{
display:flex;
flex-direction:column;
gap:.1rem;
margin-bottom:.4rem;
}
.gf-artifact-title{
font-size:.98rem;
font-weight:700;
color:var(--gf-neutral-900);
margin:0;
}
.gf-artifact-meta{
font-size:.82rem;
color:var(--gf-neutral-500);
margin:.1rem 0 0;
}
.gf-artifact-body{
margin:.35rem 0;
}
.gf-artifact-pre{
white-space:pre-wrap;
word-break:break-word;
font-family:inherit;
font-size:.9rem;
color:var(--gf-neutral-800);
margin:0;
max-height:5rem;
overflow-y:auto;
}
.gf-artifact-actions{
display:flex;
gap:.4rem;
margin-top:.5rem;
}
.gf-pf-form{
background:#f8fafc;
border:1px solid var(--gf-neutral-200);
border-radius:12px;
padding:1rem 1.1rem;
margin-bottom:1.2rem;
}
.gf-pf-row-2{
display:grid;
grid-template-columns:repeat(2,minmax(0,1fr));
gap:.5rem .8rem;
}
/* My Difference hero */
.gf-md-hero{
display:flex;
align-items:center;
justify-content:space-between;
gap:1.5rem;
flex-wrap:wrap;
margin-bottom:.85rem;
}
.gf-md-hero-identity{
display:flex;
align-items:center;
gap:1rem;
}
.gf-md-avatar-img{
width:68px;
height:68px;
border-radius:999px;
object-fit:cover;
border:3px solid var(--gf-accent-teal-700);
flex-shrink:0;
}
.gf-md-avatar-initials{
width:68px;
height:68px;
border-radius:999px;
background:linear-gradient(135deg,var(--gf-accent-teal-700),var(--gf-primary-700));
color:#fff;
font-weight:800;
font-size:1.5rem;
display:flex;
align-items:center;
justify-content:center;
flex-shrink:0;
letter-spacing:.04em;
}
.gf-md-hero-name{
font-size:1.25rem;
font-weight:800;
color:var(--gf-primary-900);
margin:0 0 .15rem;
}
.gf-md-hero-email{
margin:0;
font-size:.85rem;
}
.gf-md-hero-since{
margin:.1rem 0 0;
font-size:.82rem;
}
.gf-md-hero-stats{
display:flex;
gap:1.5rem;
flex-wrap:wrap;
}
.gf-md-stat{
text-align:center;
}
.gf-md-stat-value{
font-size:1.6rem;
font-weight:800;
color:var(--gf-accent-teal-700);
line-height:1;
}
.gf-md-stat-label{
font-size:.76rem;
color:var(--gf-neutral-500);
margin-top:.2rem;
text-transform:uppercase;
letter-spacing:.04em;
}
/* My Difference sections */
.gf-difference-featured{
border-left:4px solid var(--gf-accent-teal-700);
margin-bottom:.85rem;
}
.gf-difference-section-h{
font-size:1.05rem;
}
.gf-md-add-card{
margin-bottom:.85rem;
}
.gf-md-add-header{
margin-bottom:1rem;
}
.gf-md-sections-card{
margin-bottom:.85rem;
}
/* artifact pin badge */
.gf-artifact-title-row{
display:flex;
align-items:center;
gap:.4rem;
flex-wrap:wrap;
}
.gf-artifact-pin-badge{
font-size:.7rem;
font-weight:700;
color:var(--gf-accent-teal-700);
background:rgba(15,92,82,.08);
border:1px solid rgba(15,92,82,.2);
border-radius:999px;
padding:.15rem .45rem;
letter-spacing:.03em;
white-space:nowrap;
}
.gf-artifact-card--pinned{
border-color:rgba(15,92,82,.35);
background:#f7fdfc;
}
.gf-checkbox-label{
display:flex;
align-items:center;
gap:.4rem;
font-weight:500;
cursor:pointer;
}
/* Settings */
.gf-settings-grid{
display:grid;
grid-template-columns:repeat(2,minmax(0,1fr));
gap:.85rem;
}
.gf-settings-org-list{
list-style:none;
margin:0;
padding:0;
}
.gf-settings-org-item{
padding:.5rem 0;
border-bottom:1px solid var(--gf-neutral-100);
}
.gf-settings-org-item:last-child{
border-bottom:0;
}
.gf-settings-org-name{
font-weight:600;
}
.gf-settings-section{
margin-bottom:1rem;
}
.gf-settings-row{
display:flex;
gap:1rem;
align-items:baseline;
padding:.35rem 0;
border-bottom:1px solid var(--gf-neutral-100);
}
.gf-settings-label{
font-size:.83rem;
color:var(--gf-neutral-500);
text-transform:uppercase;
letter-spacing:.04em;
min-width:80px;
}
.gf-settings-value{
font-weight:500;
}
.gf-settings-subhead{
font-size:.95rem;
font-weight:700;
color:var(--gf-primary-900);
margin:1.25rem 0 .6rem;
padding-top:.85rem;
border-top:1px solid var(--gf-neutral-100);
}
.gf-settings-form{
display:flex;
flex-direction:column;
gap:.55rem;
}
/* AI summary card */
.gf-ai-summary-card{
border:2px solid var(--gf-brand-teal-100);
background:linear-gradient(135deg,var(--gf-brand-teal-50) 0%,#fff 60%);
margin-bottom:.85rem;
position:relative;
}
.gf-ai-summary-card::before{
content:'';
position:absolute;
top:0;left:0;right:0;
height:3px;
background:linear-gradient(90deg,var(--gf-brand-teal),var(--gf-brand-purple));
border-radius:10px 10px 0 0;
}
.gf-ai-summary-header{
display:flex;
align-items:flex-start;
gap:1rem;
margin-bottom:1rem;
}
.gf-ai-summary-icon{
font-size:1.6rem;
line-height:1;
flex-shrink:0;
}
.gf-ai-summary-title{
font-size:1.05rem;
color:var(--gf-brand-midnight);
}
.gf-ai-summary-controls{
display:flex;
align-items:flex-end;
gap:.75rem;
flex-wrap:wrap;
margin-bottom:.5rem;
}
.gf-ai-summary-controls>div{
flex:1;
min-width:180px;
}
.gf-ai-label{
font-size:.83rem;
font-weight:600;
color:var(--gf-neutral-700);
text-transform:uppercase;
letter-spacing:.04em;
display:block;
margin-bottom:.3rem;
}
.gf-ai-summary-select{
width:100%;
border:1px solid var(--gf-brand-teal-200);
border-radius:8px;
padding:.45rem .65rem;
font:inherit;
font-size:.9rem;
background:#fff;
color:var(--gf-brand-midnight);
cursor:pointer;
}
.gf-btn-ai-generate{
background:#c778b2;
color:#fff;
border-color:#b56aa0;
font-weight:700;
letter-spacing:.02em;
white-space:nowrap;
}
.gf-btn-ai-generate:hover:not(:disabled){
background:#b56aa0;
border-color:#9e5a8c;
}
.gf-btn-ai-generate:disabled{
opacity:.55;
}
.gf-ai-summary-result{
margin-top:1rem;
padding-top:1rem;
border-top:1px solid var(--gf-brand-teal-100);
}
.gf-ai-disclaimer{
background:var(--gf-brand-yellow-50);
border:1px solid var(--gf-brand-yellow-100);
border-radius:8px;
padding:.55rem .75rem;
font-size:.85rem;
color:#7a5a1a;
margin-bottom:.75rem;
}
.gf-ai-draft-textarea{
width:100%;
box-sizing:border-box;
border:1px solid var(--gf-brand-teal-200);
border-radius:8px;
padding:.65rem .75rem;
font:inherit;
font-size:.9rem;
line-height:1.6;
resize:vertical;
margin:.4rem 0 .75rem;
background:#fff;
}
.gf-ai-draft-textarea:focus{
outline:2px solid var(--gf-brand-teal);
outline-offset:1px;
border-color:var(--gf-brand-teal);
}
.gf-ai-summary-actions{
display:flex;
align-items:center;
flex-wrap:wrap;
gap:.4rem;
margin-bottom:.75rem;
}
.gf-ai-context-details{
margin-top:.5rem;
}
.gf-ai-context-pre{
background:var(--gf-neutral-50);
border:1px solid var(--gf-neutral-200);
border-radius:8px;
padding:.6rem .75rem;
font-size:.78rem;
color:var(--gf-neutral-700);
white-space:pre-wrap;
word-break:break-word;
overflow-x:auto;
max-height:180px;
overflow-y:auto;
margin:.35rem 0 0;
}
.gf-plan-card h3{margin:0 0 0.25rem;font-size:1.02rem;}
.gf-vol-dashboard-main,.gf-vol-dashboard-side{
display:flex;
flex-direction:column;
gap:0.85rem;
}
.gf-vol-impact-chips{
display:grid;
grid-template-columns:repeat(3,minmax(0,1fr));
gap:0.5rem;
margin:.55rem 0 .3rem;
}
.gf-vol-impact-chip{
border:1px solid var(--gf-neutral-200);
border-radius:10px;
padding:.45rem .5rem;
background:#fff;
display:flex;
flex-direction:column;
gap:.1rem;
}
.gf-vol-impact-chip span{
font-size:.68rem;
text-transform:uppercase;
letter-spacing:.04em;
color:#5f687d;
font-weight:600;
}
.gf-vol-impact-chip strong{
font-size:1.05rem;
color:var(--gf-primary-900);
line-height:1.2;
}
.gf-log-activity-drawer summary{
list-style:none;
cursor:pointer;
display:flex;
justify-content:space-between;
align-items:center;
font-weight:700;
font-size:1.08rem;
margin:0;
}
.gf-log-activity-drawer:not([open]) .gf-log-activity-body{display:none;}
.gf-log-activity-drawer summary::-webkit-details-marker{display:none;}
.gf-log-activity-drawer summary small{
font-weight:600;
font-size:.76rem;
color:#657088;
}
.gf-log-activity-body{
margin-top:.7rem;
}
.gf-log-activity-head{
display:flex;
justify-content:space-between;
align-items:center;
gap:.5rem;
padding-bottom:.45rem;
border-bottom:1px solid var(--gf-neutral-200);
}
.gf-log-activity-head h2{margin:0;font-size:1.15rem;}
.gf-log-activity-head small{color:#657088;font-weight:600;}
.gf-vol-rec-metrics{
display:grid;
grid-template-columns:repeat(2,minmax(0,1fr));
gap:.45rem;
margin:.5rem 0 .75rem;
}
.gf-vol-rec-metrics div{
border:1px solid var(--gf-neutral-200);
border-radius:10px;
padding:.45rem .5rem;
background:#fbfdff;
}
.gf-vol-rec-metrics span{
display:block;
font-size:.72rem;
color:#616b80;
}
.gf-vol-rec-metrics strong{
font-size:1.1rem;
color:var(--gf-primary-900);
}
.gf-btn-text{
display:inline-flex;
align-items:center;
gap:0.35rem;
padding:0;
margin:0.15rem 0 0;
border:0;
background:none;
font:inherit;
font-weight:700;
font-size:0.92rem;
color:var(--gf-primary-500);
text-decoration:underline;
text-underline-offset:0.18em;
cursor:pointer;
}
.gf-btn-text:hover{color:var(--gf-primary-900);}
a.gf-btn-text{color:var(--gf-primary-500);}
a.gf-btn-text:hover{color:var(--gf-primary-900);}
.gf-log-cta-card{
display:flex;
flex-direction:column;
gap:.45rem;
}
.gf-vol-dashboard-next{
margin:0.65rem 0 0.35rem;
}
.gf-vol-dashboard-cta-card{
display:flex;
flex-direction:column;
align-items:center;
text-align:center;
gap:0.55rem;
padding:1.35rem 1.1rem 1.45rem;
border:2px solid #c5daf0;
background:linear-gradient(180deg,#f3f9ff 0%,#fff 55%);
box-shadow:0 8px 28px rgba(10,61,98,.12);
}
.gf-vol-cta-eyebrow{
margin:0;
font-size:0.72rem;
font-weight:800;
letter-spacing:0.12em;
text-transform:uppercase;
}
.gf-vol-cta-title{
margin:0;
font-size:1.38rem;
font-weight:900;
line-height:1.2;
color:var(--gf-primary-900);
}
.gf-vol-cta-copy{
margin:0;
max-width:26rem;
font-size:0.9rem;
line-height:1.45;
}
.gf-vol-dashboard-cta-btn{
min-width:15rem;
font-size:1.06rem;
font-weight:800;
padding:0.72rem 1.65rem;
margin-top:0.15rem;
box-shadow:0 6px 22px rgba(10,61,98,.22);
border:1px solid rgba(10,61,98,.12);
}
.gf-form-section h3{
margin:0 0 0.5rem;
font-size:1rem;
}
.gf-form-grid-2{
display:grid;
grid-template-columns:repeat(2,minmax(0,1fr));
gap:0.45rem 0.75rem;
}
.gf-form-grid-2 > div{
min-width:0;
}
.gf-dense-form input,.gf-dense-form select,.gf-dense-form textarea{
margin:0.15rem 0 0.45rem;
padding:0.42rem 0.56rem;
}
.gf-dense-form .muted{
margin-top:0.1rem;
}
.gf-primary-action-card{
border-color:#c9ddf1;
box-shadow:0 6px 18px rgba(10,61,98,.08);
}
.gf-btn-primary-cta{
font-size:.98rem;
padding:.56rem 1.2rem;
}
.gf-next-action-soft{
border-left-color:#d7e4f2;
background:#f7fbff;
}
.gf-next-action-soft strong{
color:#2e557e;
}
.gf-vol-timeline{
margin-top:.3rem;
}
.gf-vol-timeline .gf-vol-timeline-item{
display:flex;
gap:.55rem;
align-items:flex-start;
}
.gf-vol-timeline .gf-vol-timeline-date{
font-weight:700;
color:#1e3350;
min-width:5.8rem;
}
.gf-vol-timeline .gf-vol-timeline-body{
display:inline-flex;
flex-wrap:wrap;
gap:.35rem;
align-items:center;
}
.gf-vol-timeline .gf-status{
font-size:.7rem;
}
.gf-vol-timeline li::before{
background:var(--gf-brand-teal);
border-color:var(--gf-brand-teal-100);
}
.gf-sr-only{
position:absolute;
width:1px;
height:1px;
padding:0;
margin:-1px;
overflow:hidden;
clip:rect(0,0,0,0);
white-space:nowrap;
border:0;
}
.gf-modal-backdrop{
position:fixed;
inset:0;
z-index:1000;
background:rgba(15,31,50,.48);
display:none;
}
.gf-modal{
position:fixed;
left:50%;
top:50%;
transform:translate(-50%,-50%);
z-index:1001;
width:min(720px,calc(100vw - 1.5rem));
max-height:min(88vh,900px);
overflow:auto;
background:#fff;
border:1px solid var(--gf-neutral-200);
border-radius:14px;
box-shadow:0 22px 56px rgba(10,61,98,.22);
display:none;
padding:0;
}
.gf-modal-head{
display:flex;
align-items:flex-start;
justify-content:space-between;
gap:.75rem;
padding:0.85rem 1rem 0.65rem;
border-bottom:1px solid var(--gf-neutral-200);
background:linear-gradient(180deg,#fbfdff 0%,#fff 100%);
border-radius:14px 14px 0 0;
}
.gf-modal-head h2{
margin:0;
font-size:1.12rem;
color:var(--gf-primary-900);
}
.gf-modal-close{
border:0;
background:transparent;
color:#4a5a72;
font-size:1.45rem;
line-height:1;
padding:0.1rem 0.35rem;
border-radius:8px;
cursor:pointer;
}
.gf-modal-close:hover{background:#eef2f8;}
.gf-modal-body{
padding:0.85rem 1rem 1rem;
}
.gf-recent-details summary{
cursor:pointer;
list-style:none;
font-weight:700;
color:var(--gf-primary-900);
}
.gf-recent-details summary::-webkit-details-marker{display:none;}
.gf-recent-summary{
display:flex;
flex-wrap:wrap;
align-items:center;
gap:.35rem .6rem;
}
.gf-recent-summary-hint{
font-weight:600;
font-size:.82rem;
color:#5f6a80;
}
.gf-recent-details-body{
margin-top:.55rem;
}
.gf-vol-wins-title{
margin:.35rem 0 .45rem;
font-size:1.05rem;
font-weight:800;
color:var(--gf-primary-900);
}
.gf-vol-wins-grid{
display:grid;
grid-template-columns:repeat(3,minmax(0,1fr));
gap:.55rem;
margin:0 0 .65rem;
}
.gf-vol-win-card{
display:flex;
gap:.55rem;
align-items:center;
border:1px solid #dde4ee;
border-radius:999px;
padding:.55rem .85rem;
background:linear-gradient(180deg,#ffffff 0%,#f4f7fb 100%);
box-shadow:0 2px 6px rgba(15,42,67,.05);
}
.gf-vol-win-card > span:first-child{
font-size:1.15rem;
line-height:1.2;
flex-shrink:0;
}
.gf-vol-win-card p{margin:0;font-size:.82rem;color:#2e3a4d;line-height:1.35;}
.gf-vol-win-card strong{color:var(--gf-primary-900);}
/* Skills multi-select */
.gf-skills-select{
width:100%;
min-height:7rem;
font:inherit;
padding:0.3rem 0.45rem;
margin:0.15rem 0 0.45rem;
border:1px solid var(--gf-neutral-200);
border-radius:6px;
background:#fff;
color:var(--gf-neutral-900);
box-sizing:border-box;
}
.gf-skills-select:focus{
outline:2px solid var(--gf-accent-teal-700);
outline-offset:1px;
border-color:var(--gf-accent-teal-700);
}
.gf-modal-head-actions{
display:flex;
align-items:center;
gap:.5rem;
}
.gf-btn-mic{
border:0;
background:transparent;
color:var(--gf-neutral-600);
font-size:1.1rem;
line-height:1;
padding:0.1rem 0.35rem;
border-radius:8px;
cursor:pointer;
}
.gf-btn-mic:hover{background:#eef2f8;color:var(--gf-primary-900);}
@media (max-width:768px){
.gf-main{padding:1rem 0.875rem 2rem;}
.gf-main h1{font-size:1.45rem;}
.gf-main h2{font-size:1.1rem;}
.gf-main .gf-user-strip{width:100%;justify-content:flex-end;}
.gf-vol-dash-brand-row{flex-direction:column;align-items:stretch;}
.gf-vol-dash-header-meta{margin-left:0;justify-content:flex-start;}
.gf-brand-wordmark-img{width:156px;}
.gf-main input,.gf-main select,.gf-main textarea,.gf-main .gf-btn{width:100%;}
.gf-main .row .gf-btn{width:auto;}
.gf-main .gf-btn + .gf-btn{margin-left:0;}
.gf-grid-2,.gf-grid-3{grid-template-columns:1fr;}
.gf-plan-grid{grid-template-columns:1fr;}
.gf-profile-hero{grid-template-columns:1fr;}
.gf-profile-portfolio-list{grid-template-columns:1fr;}
.gf-profile-form-grid{grid-template-columns:1fr;}
.gf-pf-row-2{grid-template-columns:1fr;}
.gf-md-hero{flex-direction:column;align-items:flex-start;}
.gf-md-hero-stats{gap:.85rem;}
.gf-settings-grid{grid-template-columns:1fr;}
.gf-form-grid-2{grid-template-columns:1fr;}
.gf-vol-hero h1{font-size:1.6rem;}
.gf-vol-timeline .gf-vol-timeline-item{flex-direction:column;gap:.2rem;}
.gf-vol-timeline .gf-vol-timeline-date{min-width:0;}
.gf-vol-dashboard{grid-template-columns:1fr;}
.gf-vol-mid-grid{grid-template-columns:1fr;}
.gf-vol-impact-chips{grid-template-columns:1fr;}
.gf-log-activity-drawer summary{flex-direction:column;align-items:flex-start;gap:.2rem;}
.gf-vol-section-title{font-size:1.6rem;}
.gf-vol-hero-top{grid-template-columns:1fr;}
.gf-vol-hero-avatar{justify-self:start;width:96px;height:96px;}
.gf-vol-progress-big{font-size:1.5rem;}
.gf-vol-wins-grid{grid-template-columns:1fr;}
}
/* Visibility toggle badge */
.gf-artifact-visibility-row{
display:flex;
align-items:center;
gap:.5rem;
margin-top:.4rem;
flex-wrap:wrap;
}
.gf-visibility-badge{
font-size:.72rem;
font-weight:600;
border-radius:999px;
padding:.15rem .5rem;
letter-spacing:.03em;
white-space:nowrap;
}
.gf-visibility-badge--public{
background:rgba(15,92,82,.08);
border:1px solid rgba(15,92,82,.25);
color:var(--gf-accent-teal-700);
}
.gf-visibility-badge--private{
background:var(--gf-neutral-100);
border:1px solid var(--gf-neutral-200);
color:var(--gf-neutral-600);
}
.gf-btn-visibility{
font-size:.74rem;
padding:.18rem .55rem;
border-radius:6px;
border:1.5px solid var(--gf-neutral-300,#cbd5e0);
background:#fff;
color:var(--gf-neutral-700);
cursor:pointer;
white-space:nowrap;
line-height:1.4;
font-weight:600;
}
.gf-btn-visibility:hover{background:var(--gf-neutral-50);border-color:var(--gf-neutral-400);}
/* Public profile share controls on My Difference page */
.gf-pub-share-bar{
display:flex;
align-items:center;
gap:.6rem;
flex-wrap:wrap;
padding:.6rem .85rem;
background:var(--gf-brand-teal-50);
border:1px solid var(--gf-brand-teal-100);
border-radius:10px;
margin-bottom:.85rem;
}
.gf-pub-share-bar-text{
font-size:.85rem;
color:var(--gf-neutral-700);
margin:0;
flex:1;
}
/* Public profile page */
.gf-pub-profile{
max-width:760px;
margin:0 auto;
}
.gf-pub-header{
background:linear-gradient(135deg,var(--gf-brand-midnight) 0%,#3d3160 100%);
color:#fff;
border-radius:16px;
padding:2rem 2rem 1.5rem;
margin-bottom:1.25rem;
}
.gf-pub-avatar{
width:72px;
height:72px;
border-radius:999px;
background:linear-gradient(135deg,var(--gf-brand-teal),var(--gf-brand-purple));
color:#fff;
font-weight:800;
font-size:1.6rem;
display:flex;
align-items:center;
justify-content:center;
margin-bottom:1rem;
border:3px solid rgba(255,255,255,.25);
}
.gf-pub-name{
font-size:1.4rem;
font-weight:800;
margin:0 0 .25rem;
}
.gf-pub-since{
font-size:.85rem;
opacity:.75;
margin:0 0 1.25rem;
}
.gf-pub-stats{
display:flex;
gap:2rem;
flex-wrap:wrap;
}
.gf-pub-stat-value{
font-size:1.8rem;
font-weight:800;
line-height:1;
}
.gf-pub-stat-label{
font-size:.75rem;
opacity:.7;
margin-top:.15rem;
text-transform:uppercase;
letter-spacing:.05em;
}
.gf-pub-card{
background:#fff;
border:1px solid var(--gf-neutral-200);
border-radius:14px;
padding:1.1rem 1.2rem;
margin-bottom:1rem;
box-shadow:0 4px 12px rgba(39,32,63,.06);
}
.gf-pub-section-title{
font-size:.8rem;
font-weight:700;
text-transform:uppercase;
letter-spacing:.06em;
color:var(--gf-neutral-500);
margin:0 0 .75rem;
}
.gf-pub-artifact-title{
font-size:.98rem;
font-weight:700;
color:var(--gf-neutral-900);
margin:0 0 .2rem;
}
.gf-pub-artifact-meta{
font-size:.8rem;
color:var(--gf-neutral-500);
margin:0 0 .4rem;
}
.gf-pub-artifact-body{
font-size:.88rem;
color:var(--gf-neutral-700);
margin:0;
white-space:pre-wrap;
word-break:break-word;
}
.gf-pub-artifact + .gf-pub-artifact{
margin-top:.85rem;
padding-top:.85rem;
border-top:1px solid var(--gf-neutral-100);
}
.gf-pub-skills{
display:flex;
flex-wrap:wrap;
gap:.4rem;
}
.gf-pub-skill-chip{
font-size:.78rem;
background:var(--gf-brand-teal-50);
border:1px solid var(--gf-brand-teal-100);
color:var(--gf-accent-teal-700);
border-radius:999px;
padding:.2rem .55rem;
}
.gf-pub-empty{
text-align:center;
padding:3rem 1rem;
color:var(--gf-neutral-500);
}
.gf-pub-footer{
text-align:center;
font-size:.82rem;
color:var(--gf-neutral-400);
margin-top:2rem;
}
/* ── Volunteer dashboard SVG logo lockup ─────────────────────────────── */
.gf-vol-logo-mark{
height:30px;
width:auto;
display:block;
flex-shrink:0;
}
.gf-vol-logo-wordmark{
height:20px;
width:auto;
display:block;
flex-shrink:0;
}
.gf-logo--with-lockup.gf-vol-dash-lockup{
gap:10px;
}

/* ── Login page ──────────────────────────────────────────────────────── */
.gf-login-hero{
text-align:center;
padding:2.5rem 1rem 1.5rem;
}
.gf-login-title{
font-size:1.8rem;
font-weight:800;
color:var(--gf-primary-900);
margin:0 0 .5rem;
}
.gf-login-sub{
font-size:.97rem;
color:var(--gf-neutral-600);
margin:0;
max-width:440px;
margin-inline:auto;
}
.gf-login-card{
max-width:420px;
margin-inline:auto;
}
.gf-login-section-head{
margin:0 0 1rem;
font-size:1rem;
font-weight:700;
color:var(--gf-primary-900);
}
.gf-login-error{
max-width:420px;
margin:0.5rem auto 0;
min-height:1.4em;
color:var(--gf-danger-600);
font-size:.9rem;
text-align:center;
}

/* ── Trust-status chips (reporting page) ─────────────────────────────── */
.gf-trust-chip{
display:inline-block;
font-size:.78rem;
font-weight:600;
border-radius:999px;
padding:.18rem .55rem;
line-height:1.4;
white-space:nowrap;
}
.gf-trust-verified{
background:var(--gf-brand-teal-50);
color:var(--gf-accent-teal-700);
border:1px solid var(--gf-brand-teal-100);
}
.gf-trust-tracked{
background:var(--gf-neutral-100);
color:var(--gf-neutral-700);
border:1px solid var(--gf-neutral-200);
}
.gf-trust-pending{
background:var(--gf-brand-yellow-50);
color:var(--gf-warning-600);
border:1px solid var(--gf-brand-yellow-100);
}

/* ── Reporting metric variants ───────────────────────────────────────── */
.gf-metric--verified .gf-metric-value{
color:var(--gf-accent-teal-700);
}
.gf-metric--muted .gf-metric-value{
color:var(--gf-neutral-600);
}
.gf-metric-hint{
font-size:.75rem;
color:var(--gf-neutral-500);
margin-top:.2rem;
}
.gf-reporting-trust-note{
font-size:.88rem;
color:var(--gf-neutral-700);
border-left:3px solid var(--gf-accent-teal-500);
padding:.75rem 1rem;
}
.gf-reporting-trust-note p{
margin:0;
}
.gf-grid-3{
display:grid;
grid-template-columns:repeat(3,1fr);
gap:1rem;
margin-bottom:1rem;
}

/* --- Org admin navigation --- */
.gf-org-nav{background:#fff;border-bottom:2px solid var(--gf-brand-teal);box-shadow:0 2px 10px rgba(39,32,63,.07);margin-bottom:1.25rem;}
.gf-org-nav-inner{max-width:1180px;margin:0 auto;padding:.55rem 1.4rem;display:flex;align-items:center;gap:.75rem 1.25rem;flex-wrap:wrap;}
.gf-org-nav-name{font-weight:800;font-size:.82rem;letter-spacing:.03em;color:var(--gf-brand-midnight);text-transform:uppercase;flex-shrink:0;white-space:nowrap;}
.gf-org-nav-links{display:flex;flex-wrap:wrap;gap:.25rem;flex:1;}
.gf-org-nav-link{display:inline-flex;align-items:center;padding:.3rem .75rem;border-radius:999px;font-size:.76rem;font-weight:700;letter-spacing:.04em;text-decoration:none;color:var(--gf-neutral-700);border:1px solid transparent;transition:background .12s,color .12s,border-color .12s;}
.gf-org-nav-link:hover{background:var(--gf-brand-teal-50);color:var(--gf-accent-teal-700);border-color:var(--gf-brand-teal-100);}
.gf-org-nav-link.is-active{background:var(--gf-brand-midnight);color:#fff;border-color:var(--gf-brand-midnight);}
.gf-org-nav-user{display:flex;align-items:center;gap:.5rem;flex-shrink:0;margin-left:auto;}
.gf-org-nav-email{font-size:.75rem;color:var(--gf-neutral-600);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* --- Org ops dashboard --- */
.gf-ops-attention{background:#fffbf0;border:1px solid #f5d88c;border-left:4px solid var(--gf-brand-teal);border-radius:10px;padding:.85rem 1rem;margin:0 0 1rem;}
.gf-ops-attention h3{margin:0 0 .5rem;font-size:.95rem;color:var(--gf-brand-midnight);}
.gf-ops-attention-items{display:flex;flex-wrap:wrap;gap:.5rem;}
.gf-ops-attention-item{display:inline-flex;align-items:center;gap:.45rem;padding:.35rem .75rem;border-radius:8px;font-size:.82rem;font-weight:600;background:#fff;border:1px solid #f5d88c;color:#7a5112;text-decoration:none;}
.gf-ops-attention-item.urgent{background:#fff8f0;border-color:#f0a840;color:#6b3a00;}
.gf-ops-attention-count{font-weight:800;font-size:.95rem;}

/* --- Program cards (ops dashboard) --- */
.gf-prog-summary-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;margin-bottom:1rem;}
.gf-prog-summary-card{background:#fff;border:1px solid var(--gf-neutral-200);border-radius:12px;padding:1rem 1.1rem;box-shadow:0 3px 10px rgba(39,32,63,.05);display:flex;flex-direction:column;gap:.4rem;}
.gf-prog-summary-card:hover{box-shadow:0 6px 18px rgba(39,32,63,.09);}
.gf-prog-summary-name{font-weight:700;font-size:.95rem;color:var(--gf-brand-midnight);margin:0;}
.gf-prog-summary-meta{font-size:.8rem;color:var(--gf-neutral-600);}
.gf-prog-summary-actions{margin-top:.25rem;display:flex;gap:.4rem;flex-wrap:wrap;}
.gf-prog-summary-link{font-size:.8rem;font-weight:700;color:var(--gf-accent-teal-700);text-decoration:none;}
.gf-prog-summary-link:hover{text-decoration:underline;}

/* --- Program detail page --- */
.gf-prog-detail-header{display:flex;flex-wrap:wrap;gap:.5rem;align-items:flex-start;justify-content:space-between;margin-bottom:1rem;}
.gf-prog-detail-title{font-size:1.55rem;font-weight:800;color:var(--gf-brand-midnight);margin:0 0 .25rem;}
.gf-prog-detail-meta{font-size:.87rem;color:var(--gf-neutral-600);display:flex;flex-wrap:wrap;gap:.35rem .8rem;align-items:center;margin:.2rem 0;}
.gf-prog-detail-section{margin-top:1.5rem;}
.gf-prog-detail-section h2{margin:0 0 .65rem;font-size:1.08rem;font-weight:800;color:var(--gf-brand-midnight);padding-bottom:.4rem;border-bottom:1px solid var(--gf-neutral-200);}
.gf-prog-target-progress{margin:.75rem 0;}
.gf-prog-target-track{height:10px;background:var(--gf-neutral-200);border-radius:5px;overflow:hidden;margin:.35rem 0;}
.gf-prog-target-fill{height:100%;background:linear-gradient(90deg,var(--gf-brand-teal),var(--gf-brand-midnight));border-radius:5px;transition:width .3s;}
.gf-prog-target-label{font-size:.82rem;color:var(--gf-neutral-600);}
.gf-prog-inactive-banner{background:#f0f9ff;border:1px solid #bae6fd;border-left:4px solid #0284c7;border-radius:6px;padding:.65rem 1rem;font-size:.87rem;color:#075985;margin-bottom:1rem;}
.gf-impact-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.4rem .0rem;}
.gf-impact-list li{padding:.3rem .0rem;font-size:.88rem;color:var(--gf-neutral-700);border-bottom:1px solid var(--gf-neutral-100);width:100%;}
.gf-impact-list li:last-child{border-bottom:none;}

/* --- Trust chip (reporting) --- */
.gf-trust-chip{display:inline-block;padding:.14rem .48rem;border-radius:8px;font-size:.74rem;font-weight:600;}
.gf-trust-verified{background:var(--gf-brand-teal-100);color:var(--gf-accent-teal-700);}
.gf-trust-tracked{background:var(--gf-neutral-100);color:var(--gf-neutral-600);}
.gf-trust-pending{background:#fff6e0;color:#7a5112;}

/* --- Volunteer roster --- */
.gf-vol-roster-table th:first-child{min-width:160px;}
.gf-vol-roster-chip{display:inline-block;background:var(--gf-brand-teal-50);color:var(--gf-accent-teal-700);border-radius:6px;padding:.08rem .35rem;font-size:.74rem;font-weight:600;margin:.1rem .1rem 0 0;}

/* --- Opportunities --- */
.gf-opp-card{background:#fff;border:1px solid var(--gf-neutral-200);border-radius:12px;padding:1rem 1.15rem;box-shadow:0 3px 10px rgba(39,32,63,.05);margin-bottom:.85rem;}
.gf-opp-card-header{display:flex;flex-wrap:wrap;gap:.4rem;align-items:flex-start;justify-content:space-between;margin-bottom:.35rem;}
.gf-opp-title{font-weight:700;font-size:1rem;color:var(--gf-brand-midnight);margin:0;}
.gf-opp-badges{display:flex;gap:.35rem;flex-wrap:wrap;align-items:center;}
.gf-opp-status{display:inline-block;padding:.13rem .48rem;border-radius:999px;font-size:.74rem;font-weight:600;}
.gf-opp-status-open{background:var(--gf-brand-teal-100);color:var(--gf-accent-teal-700);}
.gf-opp-status-draft{background:var(--gf-neutral-100);color:var(--gf-neutral-600);}
.gf-opp-status-closed{background:var(--gf-brand-midnight-50);color:var(--gf-brand-midnight);}
.gf-opp-status-cancelled{background:var(--gf-neutral-100);color:var(--gf-neutral-500);}
.gf-opp-meta{font-size:.82rem;color:var(--gf-neutral-600);margin:.2rem 0;}
.gf-opp-prog-link{font-size:.8rem;color:var(--gf-accent-teal-700);text-decoration:none;font-weight:600;}
.gf-opp-prog-link:hover{text-decoration:underline;}
.gf-opp-interest-count{font-size:.8rem;color:var(--gf-neutral-600);font-weight:600;}
.gf-opp-card-actions{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.6rem;}
.gf-opp-edit-form{margin-top:.85rem;padding-top:.75rem;border-top:1px solid var(--gf-neutral-200);}

/* --- Review queue improvements --- */
.gf-queue-filter-bar{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:.85rem;align-items:center;}
.gf-queue-filter-label{font-size:.82rem;font-weight:600;color:var(--gf-neutral-700);}
.gf-queue-filter-select{font-size:.82rem;border:1px solid var(--gf-neutral-300);border-radius:6px;padding:.28rem .55rem;color:var(--gf-neutral-800);background:#fff;}
.gf-queue-filter-hint{font-size:.78rem;color:var(--gf-neutral-500);}
.gf-queue-filter-btn{background:var(--gf-neutral-100);border:1px solid var(--gf-neutral-200);border-radius:999px;padding:.28rem .7rem;font-size:.78rem;font-weight:600;color:var(--gf-neutral-700);cursor:pointer;}
.gf-queue-filter-btn.is-active{background:var(--gf-brand-midnight);color:#fff;border-color:var(--gf-brand-midnight);}
.gf-queue-stale{background:#fff4e5;border:1px solid #f5c87a;border-radius:6px;padding:.15rem .5rem;font-size:.73rem;font-weight:700;color:#7a4d00;white-space:nowrap;}
.gf-queue-wait-ok{font-size:.73rem;color:var(--gf-neutral-500);}
.gf-queue-sig-badge{font-size:.68rem;font-weight:600;color:#b45309;background:#fef3c7;border-radius:4px;padding:.1rem .35rem;display:inline-block;margin-top:.2rem;}
.gf-queue-trust-note{font-size:.72rem;margin-bottom:.4rem;color:var(--gf-neutral-600);}
.gf-trust-note-approve{color:#166534;font-weight:600;}
.gf-trust-note-external{color:#1d4ed8;font-weight:600;}
.gf-queue-action-group{display:flex;flex-direction:column;gap:.35rem;}
.gf-queue-action-group input{padding:.3rem .5rem;font-size:.8rem;border:1px solid var(--gf-neutral-300);border-radius:6px;width:100%;box-sizing:border-box;}
.gf-queue-btns{display:flex;gap:.35rem;flex-wrap:wrap;}
.gf-grid-4{grid-template-columns:repeat(4,1fr);}
.gf-metric--verified{border-left:3px solid var(--gf-brand-teal);}
.gf-metric--warning{border-left:3px solid #fbb85b;}
.gf-metric--muted{border-left:3px solid var(--gf-neutral-400);}
.gf-metric-hint{font-size:.73rem;color:var(--gf-neutral-500);margin-top:.15rem;}

/* --- Reporting/trust note --- */
.gf-reporting-trust-note{font-size:.88rem;color:var(--gf-neutral-700);border-left:3px solid var(--gf-brand-teal);padding:.75rem 1rem;}
.gf-reporting-trust-note p{margin:0;}

/* --- Program management --- */
.gf-prog-list{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem;}
.gf-prog-card{padding:1.25rem 1.5rem;}
.gf-prog-card-header{margin-bottom:.5rem;}
.gf-prog-card-title-row{display:flex;align-items:flex-start;gap:.75rem;flex-wrap:wrap;margin-bottom:.25rem;}
.gf-prog-name{margin:0;font-size:1.05rem;font-weight:600;color:var(--gf-neutral-900);}
.gf-prog-badges{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;}
.gf-prog-card-meta{font-size:.82rem;color:var(--gf-neutral-600);}
.gf-prog-desc{font-size:.88rem;margin:.25rem 0 .5rem;}
.gf-prog-progress{margin:.5rem 0;}
.gf-prog-progress-wrap{height:6px;background:var(--gf-neutral-200);border-radius:3px;overflow:hidden;margin-bottom:.25rem;}
.gf-prog-progress-bar{height:100%;background:var(--gf-brand-teal);border-radius:3px;transition:width .3s;}
.gf-prog-progress-label{font-size:.8rem;color:var(--gf-neutral-600);margin:0;}
.gf-prog-status{display:inline-block;padding:.15rem .55rem;border-radius:10px;font-size:.75rem;font-weight:600;letter-spacing:.03em;}
.gf-prog-status-active{background:var(--gf-brand-teal-100);color:var(--gf-accent-teal-700);}
.gf-prog-status-draft{background:var(--gf-neutral-100);color:var(--gf-neutral-600);}
.gf-prog-status-completed{background:var(--gf-brand-midnight-50);color:var(--gf-brand-midnight);}
.gf-prog-status-archived{background:var(--gf-neutral-100);color:var(--gf-neutral-500);}
.gf-prog-cat-chip{display:inline-block;padding:.12rem .45rem;border-radius:8px;font-size:.73rem;background:var(--gf-brand-purple-50);color:var(--gf-brand-midnight);font-weight:500;}
.gf-prog-pending-badge{display:inline-block;padding:.12rem .45rem;border-radius:8px;font-size:.73rem;background:#fff3cd;color:#856404;font-weight:500;}
.gf-prog-date-range{font-size:.82rem;}
.gf-prog-card-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.75rem;}
.gf-prog-edit-form{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--gf-neutral-200);}
.gf-input{width:100%;padding:.45rem .65rem;border:1.5px solid var(--gf-neutral-200);border-radius:6px;font-size:.9rem;box-sizing:border-box;background:#fff;color:var(--gf-neutral-900);}
.gf-input:focus{outline:none;border-color:var(--gf-accent-teal-400);}
.gf-form-row{margin-bottom:.75rem;}
.gf-form-row label{display:block;font-size:.83rem;font-weight:500;margin-bottom:.25rem;color:var(--gf-neutral-700);}
.gf-form-row input,.gf-form-row select,.gf-form-row textarea{width:100%;padding:.45rem .65rem;border:1px solid var(--gf-neutral-200);border-radius:5px;font-size:.9rem;box-sizing:border-box;background:#fff;}
.gf-form-row textarea{resize:vertical;}
.gf-form-row--2col{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
.gf-prog-edit-actions{display:flex;gap:.5rem;margin-top:.75rem;}
.gf-prog-edit-status{font-size:.82rem;margin-top:.4rem;}
.gf-prog-create-card{margin-top:1rem;}
.gf-prog-create-form{margin-top:1rem;}
.gf-prog-create-form button[type=submit]{margin-top:.5rem;}
.gf-prog-empty{margin-bottom:1rem;}
.gf-btn-muted{background:var(--gf-neutral-100);color:var(--gf-neutral-700);border:1px solid var(--gf-neutral-200);}
.gf-btn-muted:hover{background:var(--gf-neutral-200);}

@media (max-width:420px){
.gf-header{padding:0.75rem;}
.gf-logo-mark{width:156px;height:25px;}
.gf-wordmark{font-size:1.05rem;letter-spacing:0.1em;}
.gf-brand-wordmark-img{width:142px;}
.gf-header-meta{max-width:58vw;}
.gf-vol-logo-mark{height:24px;}
.gf-vol-logo-wordmark{height:16px;}
.gf-grid-3{grid-template-columns:1fr 1fr;}
.gf-form-row--2col{grid-template-columns:1fr;}
}

/* ── Global context bar ────────────────────────────────────────────────────── */
.gf-ctx-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem 1.25rem;padding:.75rem 1rem;background:var(--gf-neutral-50,#f9f9fb);border:1px solid var(--gf-neutral-200,#e5e7eb);border-radius:8px;margin-bottom:1rem;}
.gf-ctx-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem 1rem;flex:1;}
.gf-ctx-label{display:block;font-size:.78rem;font-weight:600;color:var(--gf-neutral-600,#6b7280);margin-bottom:.2rem;white-space:nowrap;}
.gf-ctx-select{font-size:.85rem;padding:.35rem .6rem;border:1px solid var(--gf-neutral-300,#d1d5db);border-radius:6px;background:#fff;color:var(--gf-neutral-900,#111827);min-width:130px;}
.gf-ctx-select:focus{outline:2px solid var(--gf-brand-400,#6366f1);outline-offset:1px;}
.gf-ctx-toggle-label{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--gf-neutral-700,#374151);cursor:pointer;white-space:nowrap;padding-bottom:.05rem;}
.gf-ctx-toggle-label input[type=checkbox]{accent-color:var(--gf-brand-500,#4f46e5);width:15px;height:15px;}
.gf-ctx-actions{display:flex;align-items:center;gap:.6rem;flex-shrink:0;}
.gf-ctx-active-badge{font-size:.72rem;font-weight:700;padding:.2rem .55rem;border-radius:99px;background:var(--gf-brand-100,#e0e7ff);color:var(--gf-brand-700,#4338ca);letter-spacing:.02em;}
.gf-ctx-apply-btn{font-size:.82rem;padding:.35rem .85rem;}
.gf-ctx-clear-link{font-size:.8rem;color:var(--gf-neutral-500,#9ca3af);text-decoration:underline;white-space:nowrap;}
.gf-ctx-clear-link:hover{color:var(--gf-neutral-700,#374151);}

/* ── Progress block (metrics.ts) ────────────────────────────────────────────── */
.gf-progress-block{margin:.75rem 0;}
.gf-progress-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.3rem;font-size:.85rem;}
.gf-progress-bar{height:10px;border-radius:99px;background:var(--gf-neutral-200,#e5e7eb);overflow:hidden;}
.gf-progress-fill{height:100%;border-radius:99px;background:var(--gf-brand-500,#4f46e5);transition:width .3s ease;}
.gf-progress-hint{font-size:.75rem;color:var(--gf-neutral-500,#9ca3af);margin-top:.25rem;}

/* ── Summary cards (metrics.ts) ─────────────────────────────────────────────── */
.gf-summary-card{padding:1rem 1.25rem;border:1px solid var(--gf-neutral-200,#e5e7eb);border-radius:8px;background:#fff;}
.gf-summary-card--highlight{border-color:var(--gf-brand-300,#a5b4fc);background:var(--gf-brand-50,#eef2ff);}
.gf-summary-card--muted{background:var(--gf-neutral-50,#f9f9fb);color:var(--gf-neutral-600,#6b7280);}
.gf-summary-card-title{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--gf-neutral-500,#9ca3af);margin:0 0 .35rem;}
.gf-summary-card-body{font-size:1.5rem;font-weight:700;color:var(--gf-neutral-900,#111827);line-height:1.2;}
.gf-summary-card-action{margin-top:.6rem;}
.gf-summary-card-action a{font-size:.82rem;}

/* ── Stat blocks (metrics.ts) ───────────────────────────────────────────────── */
.gf-stat-block{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;padding:.75rem 0;}
.gf-stat-block-item{display:flex;flex-direction:column;gap:.15rem;}
.gf-stat-block-value{font-size:1.25rem;font-weight:700;color:var(--gf-neutral-900,#111827);}
.gf-stat-block-label{font-size:.75rem;color:var(--gf-neutral-500,#9ca3af);}

/* ── Timeline (timeline.ts) ─────────────────────────────────────────────────── */
.gf-tl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0;}
.gf-tl-item{display:flex;gap:.75rem;padding:.75rem 0;border-bottom:1px solid var(--gf-neutral-100,#f3f4f6);position:relative;}
.gf-tl-item:last-child{border-bottom:none;}
.gf-tl-icon{font-size:1.1rem;flex-shrink:0;width:1.5rem;text-align:center;margin-top:.05rem;}
.gf-tl-content{flex:1;min-width:0;}
.gf-tl-header{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;flex-wrap:wrap;margin-bottom:.2rem;}
.gf-tl-title{font-weight:600;font-size:.9rem;color:var(--gf-neutral-900,#111827);}
.gf-tl-title-link{font-weight:600;font-size:.9rem;color:var(--gf-brand-700,#4338ca);text-decoration:none;}
.gf-tl-title-link:hover{text-decoration:underline;}
.gf-tl-date{font-size:.75rem;color:var(--gf-neutral-400,#9ca3af);white-space:nowrap;flex-shrink:0;}
.gf-tl-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .6rem;margin-bottom:.2rem;}
.gf-tl-org{font-size:.78rem;color:var(--gf-neutral-500,#9ca3af);}
.gf-tl-hours{font-size:.78rem;font-weight:600;color:var(--gf-neutral-700,#374151);}
.gf-tl-body{font-size:.82rem;color:var(--gf-neutral-600,#6b7280);margin:.2rem 0 0;}
.gf-tl-detail{margin-top:.35rem;}
.gf-tl-detail summary{font-size:.78rem;color:var(--gf-neutral-500,#9ca3af);cursor:pointer;}
.gf-tl-detail-body{font-size:.82rem;color:var(--gf-neutral-600,#6b7280);margin-top:.35rem;padding:.5rem;background:var(--gf-neutral-50,#f9f9fb);border-radius:6px;}
.gf-tl-more{padding:.6rem 0;text-align:center;}
.gf-tl-more a{font-size:.82rem;color:var(--gf-brand-600,#4f46e5);}
/* Type accent colors */
.gf-tl-verification .gf-tl-icon,.gf-tl-milestone .gf-tl-icon,.gf-tl-goal .gf-tl-icon{filter:none;}
.gf-tl--compact .gf-tl-item{padding:.5rem 0;}
.gf-tl--compact .gf-tl-icon{font-size:.9rem;}
.gf-tl--compact .gf-tl-title,.gf-tl--compact .gf-tl-title-link{font-size:.83rem;}

/* ── Badge shelf (badge.ts) ─────────────────────────────────────────────────── */
.gf-badge-shelf{margin-bottom:1rem;}
.gf-badge-shelf--placeholder{opacity:.9;}
.gf-badge-group{margin-bottom:1rem;}
.gf-badge-group:last-child{margin-bottom:0;}
.gf-badge-group-label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--gf-neutral-400,#9ca3af);margin:0 0 .6rem;}
.gf-badge-chips{display:flex;flex-wrap:wrap;gap:.5rem;}
.gf-badge{display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.6rem .8rem;border:1px solid var(--gf-neutral-200,#e5e7eb);border-radius:10px;background:#fff;min-width:90px;max-width:120px;text-align:center;}
.gf-badge--placeholder{opacity:.45;border-style:dashed;}
.gf-badge--milestone{border-color:var(--gf-brand-200,#c7d2fe);}
.gf-badge--leadership{border-color:#fde68a;}
.gf-badge--skill{border-color:#a7f3d0;}
.gf-badge--consistency{border-color:#fed7aa;}
.gf-badge--cert{border-color:#e9d5ff;}
.gf-badge--trust{border-color:#bfdbfe;}
.gf-badge-icon{font-size:1.4rem;line-height:1;}
.gf-badge-label{font-size:.72rem;font-weight:700;color:var(--gf-neutral-800,#1f2937);line-height:1.25;}
.gf-badge-sub{font-size:.65rem;color:var(--gf-neutral-400,#9ca3af);}
.gf-badge-sub--locked{font-style:italic;}

/* ── Grouped list (grouped-list.ts) ─────────────────────────────────────────── */
.gf-grouped-list{margin:0;}
.gf-group-section{border:1px solid var(--gf-neutral-200,#e5e7eb);border-radius:8px;margin-bottom:.6rem;overflow:hidden;}
.gf-group-section[open]{border-color:var(--gf-neutral-300,#d1d5db);}
.gf-group-header{display:flex;align-items:center;gap:.5rem;padding:.65rem .85rem;cursor:pointer;background:var(--gf-neutral-50,#f9f9fb);font-size:.85rem;list-style:none;user-select:none;}
.gf-group-header::-webkit-details-marker{display:none;}
.gf-group-section[open] .gf-group-header{border-bottom:1px solid var(--gf-neutral-200,#e5e7eb);}
.gf-group-label{font-weight:700;color:var(--gf-neutral-800,#1f2937);}
.gf-group-count{font-size:.72rem;font-weight:700;padding:.15rem .45rem;border-radius:99px;background:var(--gf-neutral-200,#e5e7eb);color:var(--gf-neutral-600,#6b7280);}
.gf-group-summary-hint{font-size:.78rem;}
.gf-group-body{padding:.5rem .75rem;}
.gf-grouped-row{display:flex;align-items:center;gap:.75rem;padding:.5rem .25rem;border-bottom:1px solid var(--gf-neutral-100,#f3f4f6);}
.gf-grouped-row:last-child{border-bottom:none;}
.gf-grouped-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem;}
.gf-grouped-row-title{font-size:.88rem;font-weight:600;color:var(--gf-neutral-900,#111827);}
.gf-grouped-row-title-link{font-size:.88rem;font-weight:600;color:var(--gf-brand-700,#4338ca);text-decoration:none;}
.gf-grouped-row-title-link:hover{text-decoration:underline;}
.gf-grouped-row-sub{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;}
.gf-grouped-row-meta{font-size:.75rem;}
.gf-grouped-row-actions{display:flex;gap:.4rem;flex-shrink:0;}
/* goals page uses gf-goals-group-list wrapper to keep card grid inside groups */
.gf-goals-group-list .gf-group-body{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.75rem;padding:.75rem;}

/* ── Dashboard metric summary ───────────────────────────────────────────────── */
.gf-dash-org-picker{display:flex;align-items:center;gap:.4rem;}
.gf-dash-next-step{padding:.65rem 1rem;border-radius:8px;border-left:3px solid var(--gf-neutral-300,#d1d5db);background:var(--gf-neutral-50,#f9f9fb);font-size:.85rem;margin-bottom:1rem;}
.gf-dash-next-step--action{border-left-color:var(--gf-brand-400,#818cf8);background:var(--gf-brand-50,#eef2ff);}
.gf-dash-next-step a{color:var(--gf-brand-700,#4338ca);}

/* ── Reporting narrative & next steps ───────────────────────────────────────── */
.gf-report-narrative{margin-bottom:.5rem;}
.gf-report-narrative-text{margin:0;font-size:.93rem;line-height:1.55;}
.gf-report-next-steps{margin-top:.5rem;}
.gf-report-steps-list{margin:.5rem 0 0;padding-left:1.25rem;font-size:.88rem;line-height:1.6;}
.gf-report-steps-list li{margin-bottom:.35rem;}
.gf-report-steps-list a{color:var(--gf-brand-700,#4338ca);}

/* ── Profile privacy panel ──────────────────────────────────────────────────── */
.gf-profile-privacy-panel{display:flex;align-items:flex-start;gap:.85rem;padding:.85rem 1rem;margin-bottom:1rem;background:var(--gf-neutral-50,#f9f9fb);border:1px solid var(--gf-neutral-200,#e5e7eb);border-radius:8px;font-size:.85rem;}
.gf-profile-privacy-panel-icon{font-size:1.25rem;flex-shrink:0;margin-top:.1rem;}
.gf-profile-privacy-panel-text{flex:1;min-width:0;line-height:1.5;}
.gf-profile-privacy-stats{display:block;margin-top:.35rem;color:var(--gf-neutral-500,#9ca3af);font-size:.78rem;}

/* ── Calendar entries ───────────────────────────────────────────────────────── */
.gf-cal-entry{display:flex;gap:.65rem;align-items:flex-start;padding:.5rem 0;border-bottom:1px solid var(--gf-neutral-100,#f3f4f6);}
.gf-cal-entry:last-child{border-bottom:none;}
.gf-cal-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;margin-top:.35rem;}
.gf-cal-dot--upcoming{background:var(--gf-brand-400,#818cf8);}
.gf-cal-dot--verified{background:#44c3d0;}
.gf-cal-dot--tracked{background:var(--gf-neutral-300,#d1d5db);}
.gf-cal-entry-main{flex:1;min-width:0;}
.gf-cal-entry-date{font-size:.75rem;font-weight:700;color:var(--gf-neutral-500,#9ca3af);text-transform:uppercase;letter-spacing:.04em;}
.gf-cal-entry-title{font-size:.88rem;font-weight:600;color:var(--gf-neutral-900,#111827);margin:.1rem 0;}
.gf-cal-entry-meta{font-size:.75rem;color:var(--gf-neutral-500,#9ca3af);}
.gf-cal-sync-notice{margin-top:1rem;}
.gf-cal-sync-notice h2{margin-top:0;}

/* ── Calendar month grid ──────────────────────────────────────────────────── */
.gf-cal-grid-card{padding:1.15rem 1.25rem;}
.gf-cal-grid-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:.85rem;}
.gf-cal-grid-month-title{margin:0;font-size:1.05rem;font-weight:700;color:var(--gf-brand-midnight);}
.gf-cal-grid-legend{display:flex;align-items:center;gap:.55rem;font-size:.78rem;color:var(--gf-neutral-600);}
.gf-cal-grid-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px;}
.gf-cal-grid-day-name{text-align:center;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--gf-neutral-500);padding:.25rem 0;}
.gf-cal-grid-body{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.gf-cal-grid-cell{position:relative;min-height:2.6rem;border-radius:7px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:.35rem .2rem .2rem;background:var(--gf-neutral-50);cursor:default;transition:background .15s;}
.gf-cal-grid-cell--empty{background:transparent;}
.gf-cal-grid-cell--today{background:var(--gf-brand-teal-50);outline:2px solid var(--gf-brand-teal);outline-offset:-2px;}
.gf-cal-grid-cell--has-activity{background:var(--gf-brand-teal-50);}
.gf-cal-grid-num{font-size:.8rem;font-weight:600;color:var(--gf-neutral-700);line-height:1;}
.gf-cal-grid-cell--today .gf-cal-grid-num{color:var(--gf-brand-teal);font-weight:800;}
.gf-cal-grid-dot{display:block;width:6px;height:6px;border-radius:50%;background:var(--gf-neutral-400);margin-top:.25rem;flex-shrink:0;}
.gf-cal-grid-dot--verified{background:var(--gf-brand-teal);}
/* Sync panel */
.gf-cal-sync-card{margin-top:1rem;}
.gf-cal-sync-header{margin-bottom:.85rem;}
.gf-cal-sync-header h2{margin-top:0;}
.gf-cal-sync-actions{display:flex;flex-wrap:wrap;gap:.65rem;margin-bottom:1rem;}
.gf-cal-sync-steps{background:var(--gf-neutral-50);border:1px solid var(--gf-neutral-200);border-radius:10px;padding:.85rem 1rem;}
.gf-cal-sync-ol{margin:.2rem 0 0 1.1rem;padding:0;}
.gf-cal-sync-ol li{font-size:.88rem;color:var(--gf-neutral-700);margin:.3rem 0;}

/* ── Opportunity cards ──────────────────────────────────────────────────────── */
.gf-opp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-bottom:1rem;}
.gf-opp-card{padding:1.1rem 1.25rem;}
.gf-opp-card-header{margin-bottom:.4rem;}
.gf-opp-title{font-size:1rem;font-weight:700;margin:0 0 .15rem;color:var(--gf-neutral-900,#111827);}
.gf-opp-org{font-size:.78rem;}
.gf-opp-dates{font-size:.78rem;margin:.2rem 0 .5rem;}
.gf-opp-desc{font-size:.85rem;color:var(--gf-neutral-600,#6b7280);margin:.5rem 0;line-height:1.5;}
.gf-opp-footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.75rem;flex-wrap:wrap;}
.gf-opp-spots{font-size:.75rem;}
.gf-opp-future-note{margin-top:1rem;}
.gf-opp-future-note h2{margin-top:0;}

/* ── Phase 2A.3 — Org UX Cohesion ───────────────────────────────────────────── */

/* Org nav — Reporting + Settings links get same treatment as existing links */
/* (no new rules needed; .gf-org-nav-link styles already defined) */

/* ── Org dashboard improvements ─────────────────────────────────────────────── */
.gf-ops-section-title{margin:1.25rem 0 .65rem;font-size:1.05rem;font-weight:800;color:var(--gf-brand-midnight,#0f172a);}
.gf-ops-comms-placeholder{margin-top:0;}
.gf-ops-comms-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin:.75rem 0 .5rem;}
.gf-ops-comms-note{font-size:.78rem;margin:.5rem 0 0;}
.gf-ops-comms-note a{color:var(--gf-brand-700,#4338ca);}

/* ── Volunteer management page ───────────────────────────────────────────────── */
.gf-vol-invite-card,.gf-vol-comms-card{margin-bottom:0;}
.gf-vol-invite-actions,.gf-vol-comms-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin:.65rem 0 .5rem;}
.gf-vol-invite-note,.gf-vol-comms-note{font-size:.78rem;color:var(--gf-neutral-500,#9ca3af);margin:.35rem 0 0;}
.gf-vol-roster-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem;}
.gf-vol-roster-filters{display:flex;gap:.35rem;flex-wrap:wrap;}

/* ── Programs hierarchy banner ───────────────────────────────────────────────── */
.gf-prog-hierarchy-banner{display:flex;align-items:center;gap:.75rem;padding:.85rem 1.1rem;margin-bottom:1rem;background:var(--gf-neutral-50,#f9f9fb);border:1px solid var(--gf-neutral-200,#e5e7eb);border-radius:8px;flex-wrap:wrap;}
.gf-prog-hierarchy-step{display:flex;flex-direction:column;gap:.1rem;}
.gf-prog-hierarchy-step strong{font-size:.88rem;font-weight:700;color:var(--gf-brand-midnight,#0f172a);}
.gf-prog-hierarchy-step span{font-size:.75rem;color:var(--gf-neutral-500,#9ca3af);}
.gf-prog-hierarchy-arrow{font-size:1.2rem;color:var(--gf-neutral-400,#9ca3af);flex-shrink:0;}

/* ── Org settings page ───────────────────────────────────────────────────────── */
.gf-settings-org-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-bottom:0;}
/* .gf-settings-section, .gf-settings-row, .gf-settings-label, .gf-settings-value intentionally
   reuse volunteer settings CSS (defined earlier) — no overrides needed here */
.gf-settings-row:last-child{border-bottom:none;}
.gf-settings-placeholder-note{font-size:.78rem;color:var(--gf-neutral-500,#9ca3af);margin:.65rem 0 0;}
.gf-settings-placeholder-block{display:flex;align-items:flex-start;gap:.65rem;padding:.65rem;background:var(--gf-neutral-50,#f9f9fb);border:1px solid var(--gf-neutral-200,#e5e7eb);border-radius:6px;}
.gf-settings-placeholder-icon{font-size:1.1rem;flex-shrink:0;}
.gf-settings-placeholder-block strong{display:block;font-size:.85rem;margin-bottom:.15rem;}
.gf-settings-placeholder-block .muted{font-size:.78rem;}
.gf-settings-policy-form{max-width:600px;}
.gf-settings-policy-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem 1rem;margin-bottom:.85rem;}
.gf-settings-policy-grid label.gf-settings-field-label{display:block;font-size:.78rem;font-weight:600;margin-bottom:.3rem;color:var(--gf-neutral-600,#6b7280);}
.gf-settings-policy-grid select{width:100%;padding:.45rem .6rem;border:1px solid var(--gf-neutral-300,#d1d5db);border-radius:5px;font-size:.85rem;}
.gf-settings-checks{display:flex;flex-direction:column;gap:.4rem;margin-bottom:.75rem;}
.gf-settings-check{display:flex;align-items:center;gap:.5rem;font-size:.85rem;cursor:pointer;}
.gf-settings-check input[type="checkbox"]{width:15px;height:15px;cursor:pointer;}

/* ── Org reporting page ──────────────────────────────────────────────────────── */
.gf-report-ai-placeholder{margin-bottom:1rem;background:linear-gradient(135deg,var(--gf-brand-50,#eef2ff) 0%,var(--gf-neutral-50,#f9f9fb) 100%);border:1px dashed var(--gf-brand-200,#c7d2fe);}
.gf-report-ai-placeholder h2{margin-top:0;display:flex;align-items:center;gap:.6rem;}
.gf-report-ai-badge{display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.04em;padding:.15rem .5rem;border-radius:999px;background:var(--gf-brand-100,#e0e7ff);color:var(--gf-brand-700,#4338ca);text-transform:uppercase;}

/* ── Phase 2A.5 — Volunteer Identity & Impact Experience ─────────────────── */

/* Impact hero block */
.gf-impact-hero{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:center;justify-content:space-between;padding:1.5rem 1.75rem;background:linear-gradient(135deg,var(--gf-brand-midnight) 0%,#1e3a5f 100%);border-radius:14px;color:#fff;margin-bottom:1rem;}
.gf-impact-hero-left{flex:1 1 200px;min-width:0;}
.gf-impact-hero-right{display:flex;flex-wrap:wrap;gap:1rem 2rem;flex-shrink:0;}
.gf-impact-hero-number{font-size:3rem;font-weight:800;line-height:1;color:#fff;letter-spacing:-.02em;}
.gf-impact-hero-number-label{font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gf-brand-teal);margin:.3rem 0 .55rem;}
.gf-impact-hero-narrative{font-size:.88rem;color:rgba(255,255,255,.7);line-height:1.5;max-width:360px;}
.gf-impact-stat{text-align:center;min-width:50px;}
.gf-impact-stat-value{display:block;font-size:1.75rem;font-weight:800;color:#fff;}
.gf-impact-stat-label{display:block;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:rgba(255,255,255,.55);margin-top:.1rem;}
.gf-impact-stat--teal .gf-impact-stat-value{color:var(--gf-brand-teal);}
.gf-impact-stat--muted .gf-impact-stat-value{color:rgba(255,255,255,.55);}

/* Journey milestone cards */
.gf-journey-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.65rem;margin-bottom:1rem;}
.gf-journey-card{background:#fff;border:1px solid var(--gf-neutral-200);border-radius:12px;padding:.85rem 1rem;position:relative;overflow:hidden;}
.gf-journey-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--gf-neutral-200);}
.gf-journey-card--teal::before{background:var(--gf-brand-teal);}
.gf-journey-card--purple::before{background:var(--gf-brand-purple);}
.gf-journey-card--yellow::before{background:var(--gf-brand-yellow);}
.gf-journey-card--midnight::before{background:var(--gf-brand-midnight);}
.gf-journey-icon{font-size:1.1rem;margin-bottom:.3rem;line-height:1;}
.gf-journey-label{font-size:.65rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--gf-neutral-400);margin-bottom:.2rem;}
.gf-journey-value{font-size:.92rem;font-weight:700;color:var(--gf-neutral-900);line-height:1.3;}
.gf-journey-subvalue{font-size:.72rem;color:var(--gf-neutral-500);margin-top:.1rem;}

/* Activity cadence bar chart */
.gf-cadence-chart{display:flex;align-items:flex-end;gap:3px;height:56px;margin:.65rem 0 .25rem;}
.gf-cadence-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0;}
.gf-cadence-bar-outer{width:100%;flex:1;display:flex;align-items:flex-end;background:var(--gf-neutral-100);border-radius:3px 3px 0 0;overflow:hidden;}
.gf-cadence-bar-fill{width:100%;background:var(--gf-brand-teal);border-radius:3px 3px 0 0;}
.gf-cadence-bar-fill--zero{background:var(--gf-neutral-200);}
.gf-cadence-tick{font-size:.52rem;color:var(--gf-neutral-400);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:center;}
.gf-cadence-note{font-size:.72rem;color:var(--gf-neutral-500);margin:.15rem 0 0;}

/* Category visual distribution */
.gf-cat-dist{display:flex;flex-direction:column;gap:.5rem;margin-top:.35rem;}
.gf-cat-dist-row{display:flex;align-items:center;gap:.6rem;}
.gf-cat-dist-name{font-size:.8rem;font-weight:600;color:var(--gf-neutral-700);min-width:88px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gf-cat-dist-bar-track{flex:1;height:9px;background:var(--gf-neutral-100);border-radius:5px;overflow:hidden;}
.gf-cat-dist-bar-fill{height:100%;background:linear-gradient(90deg,var(--gf-brand-teal),var(--gf-brand-teal-200));border-radius:5px;transition:width .3s;}
.gf-cat-dist-stats{font-size:.74rem;font-weight:600;color:var(--gf-neutral-600);white-space:nowrap;min-width:62px;text-align:right;}

/* Skills cloud */
.gf-skills-cloud{display:flex;flex-wrap:wrap;gap:.4rem;margin:.45rem 0;}
.gf-skill-chip{display:inline-block;padding:.28rem .65rem;border-radius:999px;font-size:.76rem;font-weight:700;background:var(--gf-brand-teal-50);color:var(--gf-accent-teal-700);border:1px solid var(--gf-brand-teal-100);}
.gf-skill-chip--lg{font-size:.82rem;padding:.32rem .78rem;background:var(--gf-brand-teal);color:#fff;border-color:var(--gf-brand-teal);}
.gf-skill-chip--md{font-size:.79rem;padding:.3rem .7rem;}
.gf-skills-source{font-size:.7rem;color:var(--gf-neutral-400);margin:.25rem 0 0;}

/* Verification breakdown bar */
.gf-ver-breakdown{margin:.85rem 0;}
.gf-ver-bar-track{display:flex;height:12px;border-radius:6px;overflow:hidden;background:var(--gf-neutral-100);}
.gf-ver-bar-verified{background:var(--gf-brand-teal);}
.gf-ver-bar-policy{background:var(--gf-brand-purple);opacity:.75;}
.gf-ver-bar-tracked{background:var(--gf-neutral-300);}
.gf-ver-legend{display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;margin-top:.55rem;}
.gf-ver-legend-item{display:flex;align-items:center;gap:.32rem;font-size:.76rem;color:var(--gf-neutral-700);}
.gf-ver-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}
.gf-ver-dot--verified{background:var(--gf-brand-teal);}
.gf-ver-dot--policy{background:var(--gf-brand-purple);opacity:.75;}
.gf-ver-dot--tracked{background:var(--gf-neutral-300);}

/* Goal visual progress */
.gf-goal-progress-track{height:7px;background:var(--gf-neutral-100);border-radius:4px;overflow:hidden;margin:.5rem 0 .3rem;}
.gf-goal-progress-fill{height:100%;background:linear-gradient(90deg,var(--gf-brand-teal),var(--gf-brand-teal-200));border-radius:4px;transition:width .4s;}
.gf-goal-progress-fill--achieved{background:linear-gradient(90deg,#44c3d0,var(--gf-brand-teal));}
.gf-goal-progress-fill--personal{background:linear-gradient(90deg,var(--gf-brand-purple),var(--gf-brand-teal));}
.gf-goal-achieved-banner{font-size:.76rem;font-weight:700;color:#15803d;background:#dcfce7;border:1px solid #bbf7d0;border-radius:6px;padding:.22rem .6rem;display:inline-block;margin-bottom:.4rem;}
.gf-goal-card--achieved{border-color:#bbf7d0 !important;background:linear-gradient(135deg,#f0fdf4 0%,#fff 60%) !important;}
.gf-goal-type-badge{display:inline-block;font-size:.63rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;padding:.1rem .42rem;border-radius:999px;margin-bottom:.3rem;vertical-align:middle;}
.gf-goal-type-badge--personal{background:var(--gf-brand-purple-50);color:#7c3aed;}
.gf-goal-type-badge--program{background:var(--gf-brand-teal-50);color:var(--gf-accent-teal-700);}
.gf-goal-type-badge--assignment{background:var(--gf-brand-yellow-50);color:#92400e;}

/* Executive summary header */
.gf-exec-header{background:linear-gradient(135deg,var(--gf-brand-midnight) 0%,#1e3a5f 100%);color:#fff;border-radius:14px;padding:1.5rem 1.85rem;margin-bottom:1rem;}
.gf-exec-header-title{font-size:1.45rem;font-weight:800;margin:0 0 .3rem;letter-spacing:-.01em;}
.gf-exec-header-meta{font-size:.8rem;color:rgba(255,255,255,.6);margin:0;display:flex;flex-wrap:wrap;gap:.3rem 1.1rem;}
.gf-exec-stats-row{display:flex;flex-wrap:wrap;gap:1rem 2.5rem;margin-top:1.25rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.12);}
.gf-exec-stat{text-align:center;}
.gf-exec-stat-value{display:block;font-size:2.1rem;font-weight:800;color:#fff;line-height:1;}
.gf-exec-stat-label{display:block;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--gf-brand-teal);margin-top:.25rem;}
.gf-exec-stat--dim .gf-exec-stat-value{color:rgba(255,255,255,.55);}
.gf-exec-stat--dim .gf-exec-stat-label{color:rgba(255,255,255,.35);}

/* Impact narrative text */
.gf-impact-narrative{font-size:.93rem;color:var(--gf-neutral-700);line-height:1.6;padding:.85rem 1.1rem;background:var(--gf-brand-teal-50);border-left:4px solid var(--gf-brand-teal);border-radius:0 8px 8px 0;margin:.75rem 0;}

/* Section title with border accent */
.gf-section-title-accented{font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--gf-brand-teal);margin:0 0 .65rem;padding-bottom:.4rem;border-bottom:2px solid var(--gf-brand-teal-100);}

/* ── Opportunity detail (Phase 2B.1) ──────────────────────────────────────── */

/* Hero banner */
.gf-opp-detail-hero{background:linear-gradient(135deg,var(--gf-brand-midnight) 0%,#1e3a5f 100%);color:#fff;border-radius:14px;padding:1.75rem 2rem 1.5rem;margin-bottom:1rem;}
.gf-opp-detail-hero-status{display:inline-block;font-size:.63rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;padding:.18rem .55rem;border-radius:999px;margin-bottom:.7rem;}
.gf-opp-detail-hero-status--open{background:var(--gf-brand-teal);color:var(--gf-brand-midnight);}
.gf-opp-detail-hero-status--draft{background:rgba(255,255,255,.15);color:rgba(255,255,255,.75);}
.gf-opp-detail-hero-status--closed,.gf-opp-detail-hero-status--cancelled{background:var(--gf-brand-red-50);color:var(--gf-brand-red);}
.gf-opp-detail-title{font-size:1.6rem;font-weight:800;margin:0 0 .4rem;letter-spacing:-.015em;line-height:1.2;}
.gf-opp-detail-org{font-size:.87rem;color:rgba(255,255,255,.65);margin:0;}
.gf-opp-detail-meta-row{display:flex;flex-wrap:wrap;gap:.5rem .9rem;margin:.9rem 0 0;padding-top:.9rem;border-top:1px solid rgba(255,255,255,.12);}
.gf-opp-detail-meta-chip{display:flex;align-items:center;gap:.35rem;font-size:.8rem;color:rgba(255,255,255,.8);}
.gf-opp-detail-meta-chip-icon{font-style:normal;font-size:.9rem;}

/* Registration panel */
.gf-opp-register-panel{display:flex;align-items:center;flex-wrap:wrap;gap:.8rem 1.4rem;padding:1rem 1.25rem;border-radius:10px;border:1.5px solid var(--gf-brand-teal-100);background:var(--gf-brand-teal-50);margin-bottom:1rem;}
.gf-opp-register-panel--registered{border-color:#bbf7d0;background:#f0fdf4;}
.gf-opp-register-info{flex:1;min-width:0;}
.gf-opp-register-label{font-size:.8rem;font-weight:700;color:var(--gf-neutral-700);margin:0 0 .15rem;}
.gf-opp-register-label--registered{color:#15803d;}
.gf-opp-register-sub{font-size:.76rem;color:var(--gf-neutral-500);margin:0;}
.gf-opp-capacity-row{display:flex;align-items:center;gap:.65rem;font-size:.78rem;color:var(--gf-neutral-700);}
.gf-opp-capacity-track{flex:1;height:6px;background:var(--gf-neutral-100);border-radius:3px;overflow:hidden;min-width:60px;}
.gf-opp-capacity-fill{height:100%;background:var(--gf-brand-teal);border-radius:3px;}
.gf-opp-capacity-fill--full{background:var(--gf-brand-red);}
.gf-opp-register-btn{white-space:nowrap;padding:.5rem 1.15rem;font-size:.87rem;}
.gf-opp-register-btn--registered{background:#dcfce7;color:#15803d;border:1.5px solid #bbf7d0;}
.gf-opp-register-btn--registered:hover{background:#bbf7d0;}

/* Registered badge on list cards */
.gf-opp-registered-badge{display:inline-block;font-size:.63rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;padding:.12rem .42rem;border-radius:999px;background:#dcfce7;color:#15803d;border:1px solid #bbf7d0;vertical-align:middle;}

/* Card registered highlight */
.gf-opp-card--registered{border-left:3px solid var(--gf-brand-teal) !important;}

/* Participant list (org detail view) */
.gf-opp-participants{display:flex;flex-direction:column;gap:.45rem;margin:.65rem 0 0;}
.gf-opp-participant-row{display:flex;align-items:center;justify-content:space-between;padding:.55rem .75rem;border-radius:8px;background:var(--gf-neutral-50);font-size:.85rem;}
.gf-opp-participant-email{color:var(--gf-neutral-700);font-weight:500;}
.gf-opp-participant-date{color:var(--gf-neutral-500);font-size:.76rem;}

/* Upcoming registered on dashboard */
.gf-dash-upcoming{display:flex;flex-direction:column;gap:.5rem;margin:.55rem 0 0;}
.gf-dash-upcoming-item{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.65rem .85rem;border-radius:9px;border:1px solid var(--gf-neutral-200);background:#fff;}
.gf-dash-upcoming-title{font-weight:600;font-size:.88rem;color:var(--gf-neutral-900);}
.gf-dash-upcoming-meta{font-size:.76rem;color:var(--gf-neutral-500);margin:.1rem 0 0;}
.gf-dash-upcoming-link{font-size:.78rem;white-space:nowrap;color:var(--gf-brand-teal);font-weight:600;text-decoration:none;}
.gf-dash-upcoming-link:hover{text-decoration:underline;}

/* Opportunity grid (list page) */
.gf-opp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem;margin-bottom:1rem;}
.gf-opp-card{background:#fff;border-radius:12px;border:1px solid var(--gf-neutral-200);padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.45rem;transition:box-shadow .15s;}
.gf-opp-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08);}
.gf-opp-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;}
.gf-opp-title{font-size:.97rem;font-weight:700;margin:0;color:var(--gf-neutral-900);}
.gf-opp-org{font-size:.76rem;color:var(--gf-neutral-500);}
.gf-opp-dates{font-size:.78rem;color:var(--gf-neutral-600);margin:0;}
.gf-opp-desc{font-size:.83rem;color:var(--gf-neutral-700);margin:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;}
.gf-opp-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.45rem;margin-top:.2rem;padding-top:.55rem;border-top:1px solid var(--gf-neutral-100);}
.gf-opp-spots{font-size:.76rem;color:var(--gf-neutral-500);}

/* Segment headings on opp list */
.gf-opp-segment-heading{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.09em;color:var(--gf-neutral-500);margin:1.1rem 0 .45rem;padding-bottom:.3rem;border-bottom:1px solid var(--gf-neutral-200);}

/* ── Participation status (Phase 2B.2) ────────────────────────────────────── */

/* Status badge chips */
.gf-part-badge{display:inline-block;font-size:.63rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;padding:.14rem .5rem;border-radius:999px;vertical-align:middle;white-space:nowrap;}
.gf-part-badge--registered{background:var(--gf-brand-teal-50);color:var(--gf-accent-teal-700);border:1px solid var(--gf-brand-teal-100);}
.gf-part-badge--waitlisted{background:var(--gf-brand-yellow-50);color:#92400e;border:1px solid var(--gf-brand-yellow-100);}
.gf-part-badge--attended{background:#dcfce7;color:#15803d;border:1px solid #bbf7d0;}
.gf-part-badge--no_show{background:var(--gf-brand-red-50);color:var(--gf-brand-red);border:1px solid var(--gf-brand-red-100);}
.gf-part-badge--cancelled{background:var(--gf-neutral-100);color:var(--gf-neutral-600);border:1px solid var(--gf-neutral-200);}

/* Participant row with status controls (org detail) */
.gf-opp-participant-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap;padding:.6rem .8rem;border-radius:8px;background:var(--gf-neutral-50);font-size:.85rem;}
.gf-opp-participant-info{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1;}
.gf-opp-participant-email{color:var(--gf-neutral-700);font-weight:500;}
.gf-opp-participant-date{color:var(--gf-neutral-500);font-size:.74rem;}
.gf-opp-participant-controls{display:flex;gap:.35rem;flex-wrap:wrap;align-items:center;}
.gf-part-ctrl-btn{font-size:.72rem;padding:.22rem .6rem;border-radius:6px;border:1px solid var(--gf-neutral-200);background:#fff;cursor:pointer;font-weight:600;transition:background .12s;}
.gf-part-ctrl-btn:hover{background:var(--gf-neutral-100);}
.gf-part-ctrl-btn--active{opacity:.45;cursor:default;}
.gf-part-ctrl-btn--attended{color:#15803d;border-color:#bbf7d0;}
.gf-part-ctrl-btn--attended:hover:not(.gf-part-ctrl-btn--active){background:#dcfce7;}
.gf-part-ctrl-btn--no_show{color:var(--gf-brand-red);border-color:var(--gf-brand-red-100);}
.gf-part-ctrl-btn--no_show:hover:not(.gf-part-ctrl-btn--active){background:var(--gf-brand-red-50);}
.gf-part-ctrl-btn--registered{color:var(--gf-accent-teal-700);border-color:var(--gf-brand-teal-100);}
.gf-part-ctrl-btn--registered:hover:not(.gf-part-ctrl-btn--active){background:var(--gf-brand-teal-50);}
.gf-part-ctrl-btn--cancelled{color:var(--gf-neutral-600);border-color:var(--gf-neutral-200);}

/* Volunteer participation status panel (vol detail) */
.gf-opp-part-status-panel{padding:1rem 1.2rem;border-radius:10px;margin-bottom:1rem;border:1.5px solid var(--gf-neutral-200);background:var(--gf-neutral-50);}
.gf-opp-part-status-panel--attended{border-color:#bbf7d0;background:#f0fdf4;}
.gf-opp-part-status-panel--no_show{border-color:var(--gf-brand-red-100);background:var(--gf-brand-red-50);}
.gf-opp-part-status-panel--waitlisted{border-color:var(--gf-brand-yellow-100);background:var(--gf-brand-yellow-50);}
.gf-opp-part-status-panel--cancelled{border-color:var(--gf-neutral-200);background:var(--gf-neutral-100);}
.gf-opp-part-status-label{font-size:.83rem;font-weight:700;margin:0 0 .2rem;}
.gf-opp-part-status-sub{font-size:.8rem;color:var(--gf-neutral-700);margin:0;}
.gf-opp-part-status-cta{display:inline-block;margin-top:.65rem;font-size:.82rem;font-weight:600;color:var(--gf-brand-teal);text-decoration:none;}
.gf-opp-part-status-cta:hover{text-decoration:underline;}

/* Upcoming dashboard item with status badge */
.gf-dash-upcoming-item{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.65rem .85rem;border-radius:9px;border:1px solid var(--gf-neutral-200);background:#fff;}
.gf-dash-upcoming-item--attended{border-color:#bbf7d0;background:#f0fdf4;}

/* Calendar opportunity dot */
.gf-cal-dot--opportunity{background:var(--gf-brand-purple);border-radius:50%;}
.gf-cal-grid-dot--opportunity{background:var(--gf-brand-purple);}

/* ── Phase 2B.3 — Contribution flow & Impact fields ─────────────────────── */

/* Contribute page card */
.gf-contribute-card{max-width:620px;}
.gf-contribute-title{font-size:1.35rem;font-weight:700;margin:0 0 .2rem;}
.gf-contribute-sub{color:var(--gf-neutral-500);margin:0 0 1.25rem;font-size:.9rem;}
.gf-contribute-form{display:flex;flex-direction:column;gap:.85rem;}
.gf-contribute-section-head{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--gf-neutral-500);margin-top:.35rem;}
.gf-contribute-field{display:flex;flex-direction:column;gap:.2rem;}
.gf-contribute-field-label{font-size:.85rem;font-weight:600;}
.gf-contribute-field input,.gf-contribute-field textarea{width:100%;box-sizing:border-box;}
.gf-contribute-impact-input{}
.gf-contribute-submit{align-self:flex-start;margin-top:.35rem;}

/* Inline CTA link inside status panels */
.gf-opp-part-status-cta-inline{color:#15803d;font-weight:600;text-decoration:none;}
.gf-opp-part-status-cta-inline:hover{text-decoration:underline;}

/* Contribution logged badge */
.gf-contribution-logged-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.82rem;color:#15803d;font-weight:600;padding:.2rem .6rem;border-radius:4px;background:#f0fdf4;border:1px solid #bbf7d0;width:fit-content;}

/* Org opportunity — impact fields section */
.gf-impact-fields-list{display:flex;flex-direction:column;gap:.5rem;}
.gf-impact-field-row{display:flex;align-items:center;gap:.75rem;padding:.5rem .65rem;background:var(--gf-neutral-50,#f9fafb);border:1px solid var(--gf-neutral-200,#e5e7eb);border-radius:6px;}
.gf-impact-field-label{font-weight:600;font-size:.9rem;flex:1;}
.gf-impact-field-type{font-size:.82rem;}

/* Org participant impact response display */
.gf-opp-impact-resp-row{display:flex;flex-wrap:wrap;gap:.4rem .85rem;margin-top:.35rem;}
.gf-opp-impact-resp-item{font-size:.8rem;color:var(--gf-neutral-600,#4b5563);}
.gf-opp-impact-resp-item--reflection{font-style:italic;}
.gf-opp-impact-resp-label{font-weight:600;}
.gf-opp-impact-resp-val{}

/* ── Phase 2B.4 — Evidence, Attestation & Review ────────────────────────── */

/* Attestation row in contribute form */
.gf-contribute-attestation-row{display:flex;align-items:flex-start;gap:.6rem;padding:.75rem;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;}
.gf-contribute-attestation-row input[type="checkbox"]{margin-top:.15rem;flex-shrink:0;width:1rem;height:1rem;}
.gf-contribute-attestation-label{font-size:.84rem;line-height:1.5;color:#15803d;font-weight:500;}

/* Trust indicator chips */
.gf-trust-indicators-row{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.4rem;}
.gf-trust-indicator{display:inline-flex;align-items:center;font-size:.72rem;font-weight:600;padding:.15rem .5rem;border-radius:4px;line-height:1.4;}
.gf-trust-indicator--attested{background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0;}
.gf-trust-indicator--evidence{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;}
.gf-trust-indicator--reflection{background:#fefce8;color:#854d0e;border:1px solid #fde68a;}
.gf-trust-indicator--supervisor{background:#fdf4ff;color:#7e22ce;border:1px solid #e9d5ff;}

/* Review queue — reflection + evidence */
.gf-review-reflection{font-size:.78rem;color:var(--gf-neutral-600,#4b5563);margin-top:.35rem;font-style:italic;line-height:1.45;}
.gf-review-evidence-list{margin-top:.35rem;display:flex;flex-direction:column;gap:.2rem;}
.gf-review-evidence-item{font-size:.78rem;display:flex;align-items:baseline;gap:.3rem;flex-wrap:wrap;}
.gf-review-evidence-title{font-weight:600;color:var(--gf-neutral-700,#374151);}
.gf-review-evidence-link{color:var(--gf-brand-blue,#1d4ed8);text-decoration:none;font-size:.78rem;}
.gf-review-evidence-link:hover{text-decoration:underline;}
.gf-review-evidence-desc{font-size:.75rem;}

/* ── Phase 2A.6 — Volunteer Cohesion & Identity Polish ─────────────────── */

/* Notification bell */
.gf-notif-menu{position:relative;display:inline-block;}
.gf-notif-trigger{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.15rem;padding:.3rem .4rem;border-radius:6px;border:none;background:transparent;line-height:1;}
.gf-notif-trigger::-webkit-details-marker{display:none;}
.gf-notif-trigger:hover{background:rgba(255,255,255,.12);}
.gf-notif-bell{font-size:1.05rem;line-height:1;}
.gf-notif-badge{background:var(--gf-brand-red,#f15d5e);color:#fff;font-size:.6rem;font-weight:700;border-radius:9999px;padding:.05em .38em;min-width:1.1em;text-align:center;line-height:1.45;margin-left:.05rem;}
.gf-notif-pop{position:absolute;right:0;top:calc(100% + .4rem);width:310px;background:#fff;border-radius:10px;box-shadow:0 4px 24px rgba(0,0,0,.14);border:1px solid var(--gf-neutral-200,#e2e8f0);z-index:200;overflow:hidden;}
.gf-notif-header{padding:.55rem .9rem;border-bottom:1px solid var(--gf-neutral-100,#f1f5f9);font-size:.82rem;}
.gf-notif-item{display:flex;align-items:flex-start;gap:.55rem;padding:.6rem .9rem;border-bottom:1px solid var(--gf-neutral-100,#f1f5f9);}
.gf-notif-item:last-child{border-bottom:none;}
.gf-notif-item--unread{background:var(--gf-brand-teal-50,#ecfeff);}
.gf-notif-dot{flex-shrink:0;width:.45rem;height:.45rem;border-radius:50%;background:var(--gf-brand-teal,#44c3d0);margin-top:.35rem;}
.gf-notif-body{flex:1;min-width:0;}
.gf-notif-text{font-size:.8rem;margin:0;line-height:1.45;color:var(--gf-neutral-900,#1b1f24);}
.gf-notif-time{font-size:.72rem;color:var(--gf-neutral-500,#8898aa);margin:.2rem 0 0;}

/* Impact hero — purple variant */
.gf-impact-hero--purple{background:linear-gradient(135deg,var(--gf-brand-midnight,#27203f) 0%,#3b2d5c 60%,#4a3070 100%);color:#fff;border-radius:12px;}
.gf-impact-hero--purple .gf-impact-hero-number{color:#fff;}
.gf-impact-hero--purple .gf-impact-hero-number-label{color:rgba(255,255,255,.75);}
.gf-impact-hero--purple .gf-impact-hero-narrative{color:rgba(255,255,255,.65);}
.gf-impact-hero--purple .gf-impact-stat-label{color:rgba(255,255,255,.65);}
.gf-impact-hero--purple .gf-impact-stat-value{color:#fff;}
.gf-impact-hero--purple .gf-impact-stat--teal .gf-impact-stat-value{color:var(--gf-brand-teal,#44c3d0);}
.gf-impact-hero--purple .gf-impact-stat--muted .gf-impact-stat-value{color:rgba(255,255,255,.55);}

/* Reporting — purple exec header */
.gf-exec-header--purple{background:linear-gradient(135deg,var(--gf-brand-midnight,#27203f) 0%,#3b2d5c 60%,#4a3070 100%);color:#fff;border-radius:12px;}
.gf-exec-header--purple .gf-exec-header-eyebrow{font-size:.73rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--gf-brand-purple,#c778b2);margin-bottom:.25rem;}
.gf-exec-header--purple .gf-exec-header-title{color:#fff;}
.gf-exec-header--purple .gf-exec-header-meta{color:rgba(255,255,255,.65);}
.gf-exec-header--purple .gf-exec-header-meta span+span::before{color:rgba(255,255,255,.35);}
.gf-exec-header--purple .gf-exec-stat-value{color:#fff;}
.gf-exec-header--purple .gf-exec-stat-label{color:rgba(255,255,255,.65);}
.gf-exec-header--purple .gf-exec-stat--dim .gf-exec-stat-value{color:rgba(255,255,255,.5);}

/* AI narrative placeholder */
.gf-ai-narrative-placeholder{background:linear-gradient(135deg,var(--gf-brand-purple-50,#fdf4ff) 0%,var(--gf-brand-teal-50,#ecfeff) 100%);border:1px dashed var(--gf-brand-purple,#c778b2);border-radius:10px;padding:1rem 1.25rem;margin:.65rem 0;}
.gf-ai-narrative-label{font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gf-brand-purple,#c778b2);margin-bottom:.4rem;}
.gf-ai-narrative-text{font-size:.88rem;color:var(--gf-neutral-700,#4a5563);line-height:1.55;margin:0 0 .4rem;}
.gf-ai-narrative-coming{font-size:.75rem;color:var(--gf-neutral-500,#8898aa);margin:0;font-style:italic;}

/* Settings — join org form */
.gf-join-org-form{margin-top:.5rem;}
.gf-join-org-row{display:flex;gap:.5rem;align-items:center;}
.gf-join-org-row input{flex:1;min-width:0;font-family:monospace;letter-spacing:.05em;}
.gf-settings-value--muted{color:var(--gf-neutral-500,#8898aa);font-size:.88rem;}

/* Org invite code */
.gf-invite-code-row{display:flex;gap:.5rem;align-items:center;margin-top:.3rem;}
.gf-invite-code-input{flex:1;min-width:0;font-family:monospace;letter-spacing:.08em;background:var(--gf-neutral-50,#f8fafc);border:1px solid var(--gf-neutral-200,#e2e8f0);border-radius:6px;padding:.4rem .65rem;font-size:.9rem;}
.gf-btn-sm{padding:.3rem .7rem!important;font-size:.8rem!important;}

/* ── Page-level tab navigation (Activities | Goals | Archived) ─────────── */
.gf-page-tab-row{display:flex;align-items:center;gap:.15rem;padding:.35rem .1rem .0rem;border-bottom:2px solid var(--gf-neutral-200,#e2e8f0);margin-bottom:.85rem;}
.gf-page-tab{display:inline-block;padding:.45rem 1rem;font-size:.88rem;font-weight:600;color:var(--gf-neutral-600,#718096);border-radius:6px 6px 0 0;text-decoration:none;transition:color .15s,background .15s;border:1px solid transparent;border-bottom:none;margin-bottom:-2px;}
.gf-page-tab:hover{color:var(--gf-neutral-900,#1b1f24);background:var(--gf-neutral-50,#f8fafc);}
.gf-page-tab.is-active{color:var(--gf-accent-teal-500,#1a8070);background:#fff;border-color:var(--gf-neutral-200,#e2e8f0);border-bottom-color:#fff;}

/* Compact inline filter */
.gf-filter-inline{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;}
.gf-filter-select-sm{font-size:.8rem;padding:.25rem .5rem;border:1px solid var(--gf-neutral-200,#e2e8f0);border-radius:6px;background:#fff;color:var(--gf-neutral-900,#1b1f24);height:2rem;}
.gf-filter-check-sm{font-size:.8rem;display:flex;align-items:center;gap:.3rem;white-space:nowrap;color:var(--gf-neutral-700,#4a5563);}
.gf-filter-clear{font-size:.78rem;color:var(--gf-neutral-500,#8898aa);text-decoration:underline;}
.gf-btn-xs{padding:.22rem .6rem!important;font-size:.78rem!important;min-width:0;}
.gf-toolbar--with-filter .gf-toolbar-actions{flex-wrap:wrap;gap:.5rem;}

/* Profile photo upload */
.gf-photo-upload-area{display:flex;align-items:center;gap:1.25rem;margin-top:.75rem;}
.gf-photo-upload-preview{width:64px;height:64px;border-radius:50%;background:var(--gf-brand-midnight,#27203f);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.gf-photo-upload-initials{color:#fff;font-size:1.3rem;font-weight:700;letter-spacing:.03em;}
.gf-photo-upload-controls{display:flex;flex-direction:column;gap:.2rem;}

/* Org admin nav — avatar instead of email */
.gf-org-nav-avatar{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;background:var(--gf-brand-teal,#44c3d0);color:var(--gf-brand-midnight,#27203f);font-size:.75rem;font-weight:700;letter-spacing:.04em;cursor:default;}
.gf-org-nav-email{display:none;}

/* ── Button system (canonical — overrides earlier partials) ──────────────── */
.gf-btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:.42rem 1rem;font-size:.86rem;font-weight:600;border-radius:8px;border:1.5px solid transparent;cursor:pointer;text-decoration:none;transition:background .15s,color .15s,border-color .15s;line-height:1.3;white-space:nowrap;}
/* Primary = brand teal (#44c3d0), dark text for contrast */
.gf-btn-primary{background:#44c3d0;color:#27203f;border-color:#44c3d0;}
.gf-btn-primary:hover:not(:disabled){background:#2eaab8;border-color:#2eaab8;color:#fff;}
/* CTA = same teal, slightly larger — only use for the one "hero" action per page */
.gf-btn-primary-cta{background:#44c3d0;color:#27203f;border-color:#44c3d0;font-size:.94rem;padding:.52rem 1.25rem;font-weight:700;}
.gf-btn-primary-cta:hover:not(:disabled){background:#2eaab8;border-color:#2eaab8;color:#fff;}
.gf-btn-secondary{background:#fff;color:var(--gf-neutral-700,#4a5563);border-color:var(--gf-neutral-300,#cbd5e0);}
.gf-btn-secondary:hover:not(:disabled){background:var(--gf-neutral-50,#f8fafc);border-color:var(--gf-neutral-400,#a0aec0);}
.gf-btn-danger{background:#fff;color:#c53030;border-color:#c53030;}
.gf-btn-danger:hover:not(:disabled){background:#fff5f5;border-color:#9b2c2c;}
.gf-btn-sm{padding:.28rem .7rem!important;font-size:.8rem!important;}
.gf-btn-xs{padding:.18rem .5rem!important;font-size:.74rem!important;}
.gf-btn-logout{background:transparent;color:var(--gf-neutral-600,#718096);border-color:var(--gf-neutral-300,#cbd5e0);}
.gf-btn-logout:hover{background:var(--gf-neutral-50,#f8fafc);}
.gf-btn:disabled{opacity:.55;cursor:not-allowed;}

/* ── Phase 3 — Holistic UX/UI Redesign ───────────────────────────────────── */

/* Immersive hero — full-bleed purple gradient with ring slot */
.gf-hero-immersive{display:flex;align-items:stretch;gap:0;border-radius:16px;overflow:hidden;background:linear-gradient(135deg,#27203f 0%,#3b2d5c 55%,#1a3a52 100%);color:#fff;margin-bottom:1.1rem;min-height:160px;position:relative;}
.gf-hero-immersive::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 80% 50%,rgba(68,195,208,.18) 0%,transparent 65%);pointer-events:none;}
.gf-hero-left{flex:1 1 0;padding:1.5rem 1.75rem;display:flex;flex-direction:column;justify-content:center;gap:.55rem;z-index:1;}
.gf-hero-eyebrow{font-size:.65rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.5);margin:0;}
.gf-hero-number{font-size:3.5rem;font-weight:900;line-height:.95;letter-spacing:-.03em;color:#fff;margin:0;}
.gf-hero-number-unit{font-size:1.6rem;font-weight:700;opacity:.65;margin-left:.1rem;}
.gf-hero-label{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--gf-brand-teal,#44c3d0);margin:.1rem 0 0;}
.gf-hero-narrative{font-size:.87rem;color:rgba(255,255,255,.6);line-height:1.5;max-width:380px;margin:0;}
.gf-hero-right{flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1.25rem 1.75rem 1.25rem 0;z-index:1;}
.gf-hero-stats-grid{display:flex;gap:1.5rem 2rem;flex-wrap:wrap;align-items:flex-start;}
.gf-hero-stat{display:flex;flex-direction:column;align-items:center;text-align:center;min-width:48px;}
.gf-hero-stat-value{font-size:1.6rem;font-weight:800;color:#fff;line-height:1;}
.gf-hero-stat-value--teal{color:var(--gf-brand-teal,#44c3d0);}
.gf-hero-stat-value--yellow{color:var(--gf-brand-yellow,#fbb85b);}
.gf-hero-stat-label{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:rgba(255,255,255,.5);margin-top:.2rem;white-space:nowrap;}
.gf-hero-ring-wrap{display:flex;flex-direction:column;align-items:center;gap:.35rem;}
.gf-hero-ring-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.45);text-align:center;}
.gf-hero-divider{width:1px;background:rgba(255,255,255,.1);align-self:stretch;margin:0 .25rem;}

/* Achievement milestone shelf */
.gf-milestone-shelf{display:flex;gap:.5rem;flex-wrap:wrap;margin:.2rem 0 .55rem;}
.gf-milestone-badge{display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.55rem .75rem;border-radius:10px;min-width:62px;transition:transform .15s;}
.gf-milestone-badge--achieved{background:linear-gradient(135deg,#27203f,#3b2d5c);border:1px solid rgba(68,195,208,.35);color:#fff;}
.gf-milestone-badge--achieved:hover{transform:translateY(-2px);}
.gf-milestone-badge--next{background:#fff;border:2px dashed var(--gf-brand-teal,#44c3d0);color:var(--gf-neutral-700,#4a5563);animation:gfMilestoneGlow 2s ease-in-out infinite;}
.gf-milestone-badge--locked{background:var(--gf-neutral-50,#f8fafc);border:1px solid var(--gf-neutral-200,#e5e7eb);color:var(--gf-neutral-400,#9ca3af);opacity:.65;}
.gf-milestone-icon{font-size:1.3rem;line-height:1;}
.gf-milestone-label{font-size:.65rem;font-weight:700;text-align:center;line-height:1.2;letter-spacing:.02em;}
.gf-milestone-sub{font-size:.6rem;opacity:.7;text-align:center;}
@keyframes gfMilestoneGlow{0%,100%{box-shadow:0 0 0 0 rgba(68,195,208,.3);}50%{box-shadow:0 0 0 5px rgba(68,195,208,.1);}}

/* SVG chart containers */
.gf-chart-wrap{position:relative;width:100%;}
.gf-chart-svg-fill{display:block;width:100%;height:auto;}
.gf-chart-legend{display:flex;flex-wrap:wrap;gap:.3rem .9rem;margin-top:.55rem;}
.gf-chart-legend-item{display:flex;align-items:center;gap:.3rem;font-size:.75rem;color:var(--gf-neutral-700,#4a5563);}
.gf-chart-legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}

/* Donut chart layout (chart + legend side by side) */
.gf-donut-layout{display:flex;align-items:center;gap:1.1rem;flex-wrap:wrap;}
.gf-donut-svg-wrap{flex-shrink:0;}
.gf-donut-legend{flex:1;min-width:100px;display:flex;flex-direction:column;gap:.35rem;}
.gf-donut-legend-item{display:flex;align-items:center;gap:.45rem;font-size:.8rem;}
.gf-donut-legend-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}
.gf-donut-legend-label{flex:1;color:var(--gf-neutral-700,#4a5563);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gf-donut-legend-pct{font-weight:700;font-size:.76rem;color:var(--gf-neutral-900,#1b1f24);}

/* Goal progress ring card layout */
.gf-goal-ring-card{display:flex;align-items:center;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--gf-neutral-100,#f1f5f9);}
.gf-goal-ring-card:last-child{border-bottom:none;padding-bottom:0;}
.gf-goal-ring-card:first-child{padding-top:0;}
.gf-goal-ring-body{flex:1;min-width:0;}
.gf-goal-ring-title{font-size:.9rem;font-weight:700;color:var(--gf-neutral-900,#1b1f24);margin:0 0 .2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gf-goal-ring-meta{font-size:.76rem;color:var(--gf-neutral-500,#8898aa);}
.gf-goal-ring-progress{font-size:.78rem;font-weight:700;color:var(--gf-accent-teal-700,#0f5c52);}

/* Visual activity card (timeline card upgrade) */
.gf-act-card{background:#fff;border:1px solid var(--gf-neutral-200,#e5e7eb);border-radius:10px;padding:.75rem 1rem;display:flex;align-items:flex-start;gap:.75rem;transition:box-shadow .15s;}
.gf-act-card:hover{box-shadow:0 2px 12px rgba(0,0,0,.07);}
.gf-act-card-accent{width:3px;border-radius:2px;flex-shrink:0;align-self:stretch;min-height:40px;}
.gf-act-card-accent--verified{background:var(--gf-brand-teal,#44c3d0);}
.gf-act-card-accent--pending{background:var(--gf-brand-yellow,#fbb85b);}
.gf-act-card-accent--denied{background:var(--gf-brand-red,#f15d5e);}
.gf-act-card-accent--submitted{background:var(--gf-neutral-300,#d1d5db);}
.gf-act-card-body{flex:1;min-width:0;}
.gf-act-card-title{font-size:.9rem;font-weight:700;color:var(--gf-neutral-900,#1b1f24);margin:0 0 .15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gf-act-card-meta{font-size:.76rem;color:var(--gf-neutral-500,#8898aa);margin:0;}
.gf-act-card-right{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem;flex-shrink:0;}
.gf-act-card-hours{font-size:1.05rem;font-weight:800;color:var(--gf-neutral-900,#1b1f24);line-height:1;}
.gf-act-card-hours-label{font-size:.6rem;text-transform:uppercase;letter-spacing:.06em;color:var(--gf-neutral-400,#9ca3af);}

/* Status pipeline view */
.gf-pipeline-row{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap;margin:.5rem 0;}
.gf-pipeline-stage{display:flex;flex-direction:column;align-items:center;gap:.2rem;flex:1;min-width:56px;}
.gf-pipeline-count{font-size:1.4rem;font-weight:800;color:var(--gf-neutral-900,#1b1f24);}
.gf-pipeline-count--teal{color:var(--gf-brand-teal,#44c3d0);}
.gf-pipeline-count--yellow{color:var(--gf-brand-yellow,#fbb85b);}
.gf-pipeline-count--purple{color:var(--gf-brand-purple,#c778b2);}
.gf-pipeline-count--green{color:#44c3d0;}
.gf-pipeline-label{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--gf-neutral-500,#8898aa);text-align:center;}
.gf-pipeline-arrow{color:var(--gf-neutral-300,#d1d5db);font-size:.8rem;flex-shrink:0;}

/* KPI row (ops dashboard) */
.gf-kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:.65rem;margin-bottom:1rem;}
.gf-kpi-card{background:#fff;border:1px solid var(--gf-neutral-200,#e5e7eb);border-radius:10px;padding:.9rem 1rem;display:flex;flex-direction:column;gap:.15rem;transition:box-shadow .15s;}
.gf-kpi-card:hover{box-shadow:0 2px 10px rgba(0,0,0,.06);}
.gf-kpi-value{font-size:1.8rem;font-weight:900;color:var(--gf-neutral-900,#1b1f24);line-height:1;letter-spacing:-.02em;}
.gf-kpi-label{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--gf-neutral-500,#8898aa);}
.gf-kpi-delta{font-size:.74rem;font-weight:700;margin-top:.1rem;}
.gf-kpi-delta--up{color:#44c3d0;}
.gf-kpi-delta--down{color:var(--gf-brand-red,#f15d5e);}
.gf-kpi-delta--flat{color:var(--gf-neutral-400,#9ca3af);}
.gf-kpi-card--teal{border-top:3px solid var(--gf-brand-teal,#44c3d0);}
.gf-kpi-card--purple{border-top:3px solid var(--gf-brand-purple,#c778b2);}
.gf-kpi-card--yellow{border-top:3px solid var(--gf-brand-yellow,#fbb85b);}
.gf-kpi-card--midnight{border-top:3px solid var(--gf-brand-midnight,#27203f);}

/* Program visual cards (org ops) */
.gf-prog-card{background:#fff;border:1px solid var(--gf-neutral-200,#e5e7eb);border-radius:12px;padding:1rem 1.1rem;display:flex;align-items:center;gap:1rem;transition:box-shadow .15s;}
.gf-prog-card:hover{box-shadow:0 3px 14px rgba(0,0,0,.08);}
.gf-prog-card-ring{flex-shrink:0;}
.gf-prog-card-body{flex:1;min-width:0;}
.gf-prog-card-name{font-size:.95rem;font-weight:700;color:var(--gf-neutral-900,#1b1f24);margin:0 0 .15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gf-prog-card-stats{font-size:.78rem;color:var(--gf-neutral-600,#4b5563);}
.gf-prog-card-progress-label{font-size:.72rem;font-weight:700;color:var(--gf-accent-teal-700,#0f5c52);margin-top:.2rem;}
.gf-prog-card-actions{display:flex;gap:.4rem;flex-shrink:0;}
.gf-prog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem;margin:.5rem 0;}

/* Volunteer engagement funnel */
.gf-funnel{display:flex;flex-direction:column;gap:.45rem;}
.gf-funnel--compact{gap:.3rem;}
.gf-funnel-stage{display:flex;flex-direction:column;gap:.2rem;}
.gf-funnel-bar-wrap{width:100%;background:var(--gf-neutral-100,#f3f4f6);border-radius:4px;height:10px;overflow:hidden;}
.gf-funnel-bar{height:100%;border-radius:4px;transition:width .4s;}
.gf-funnel-meta{display:flex;align-items:center;gap:.4rem;font-size:.78rem;}
.gf-funnel-icon{font-style:normal;line-height:1;}
.gf-funnel-count{font-weight:800;color:var(--gf-neutral-900,#1b1f24);min-width:28px;}
.gf-funnel-label{flex:1;color:var(--gf-neutral-700,#4a5563);}
.gf-funnel-pct{color:var(--gf-neutral-400,#9ca3af);font-weight:600;}

/* Narrative story card (Reporting redesign) */
.gf-story-card{background:linear-gradient(135deg,#fdf4ff 0%,#ecfeff 100%);border:1px solid rgba(199,120,178,.2);border-radius:12px;padding:1.1rem 1.25rem;margin:.5rem 0;}
.gf-story-eyebrow{font-size:.65rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--gf-brand-purple,#c778b2);margin:0 0 .4rem;}
.gf-story-headline{font-size:1.15rem;font-weight:800;color:var(--gf-brand-midnight,#27203f);margin:0 0 .5rem;line-height:1.3;}
.gf-story-body{font-size:.88rem;color:var(--gf-neutral-700,#4a5563);line-height:1.6;margin:0;}

/* Opportunity discovery card (visual upgrade) */
.gf-opp-vis-card{background:#fff;border:1.5px solid var(--gf-neutral-200,#e5e7eb);border-radius:12px;padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.45rem;transition:box-shadow .15s,border-color .15s,transform .12s;}
.gf-opp-vis-card:hover{box-shadow:0 6px 24px rgba(0,0,0,.1);border-color:var(--gf-accent-teal,#44c3d0);transform:translateY(-2px);}
.gf-opp-vis-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;}
.gf-opp-vis-status-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;margin-top:.3rem;}
.gf-opp-vis-status-dot--open{background:#44c3d0;}
.gf-opp-vis-status-dot--waitlisted{background:var(--gf-brand-yellow,#fbb85b);}
.gf-opp-vis-status-dot--closed{background:var(--gf-neutral-400,#9ca3af);}
.gf-opp-vis-title{font-size:.95rem;font-weight:700;color:var(--gf-neutral-900,#1b1f24);margin:0;line-height:1.3;}
.gf-opp-vis-org{font-size:.73rem;color:var(--gf-neutral-500,#8898aa);margin-top:.1rem;}
.gf-opp-cause-tags{display:flex;flex-wrap:wrap;gap:.3rem;}
.gf-opp-cause-tag{display:inline-block;font-size:.66rem;font-weight:700;padding:.12rem .42rem;border-radius:999px;background:rgba(68,195,208,.12);color:var(--gf-accent-teal-700,#0f5c52);border:1px solid rgba(68,195,208,.3);backdrop-filter:blur(4px);}
.gf-opp-cause-tag--purple{background:rgba(124,58,237,.1);color:#7c3aed;border-color:rgba(124,58,237,.25);}
.gf-opp-cause-tag--yellow{background:rgba(251,184,91,.12);color:#92400e;border-color:rgba(251,184,91,.35);}
.gf-opp-participation-bar{height:4px;background:var(--gf-neutral-100,#f3f4f6);border-radius:3px;overflow:hidden;}
.gf-opp-participation-fill{height:100%;border-radius:3px;background:var(--gf-brand-teal,#44c3d0);transition:width .4s;}

/* Profile identity showcase */
.gf-profile-hero{background:linear-gradient(135deg,#27203f 0%,#3b2d5c 100%);border-radius:14px;padding:1.5rem 1.75rem;color:#fff;display:flex;align-items:center;gap:1.25rem;margin-bottom:1rem;}
.gf-profile-avatar-lg{width:72px;height:72px;border-radius:50%;border:3px solid rgba(255,255,255,.25);flex-shrink:0;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.12);font-size:1.6rem;font-weight:800;color:#fff;letter-spacing:.02em;}
.gf-profile-hero-body{flex:1;min-width:0;}
.gf-profile-hero-name{font-size:1.3rem;font-weight:800;margin:0 0 .2rem;letter-spacing:-.01em;}
.gf-profile-hero-meta{font-size:.8rem;color:rgba(255,255,255,.6);margin:0 0 .55rem;}
.gf-profile-hero-badges{display:flex;flex-wrap:wrap;gap:.3rem;}
.gf-profile-hero-badge{display:inline-flex;align-items:center;gap:.25rem;font-size:.67rem;font-weight:700;padding:.15rem .5rem;border-radius:999px;background:rgba(255,255,255,.12);color:rgba(255,255,255,.85);}

/* Empty state — compelling brand-aligned */
.gf-empty-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:2.5rem 1.5rem;gap:.65rem;}
.gf-empty-hero-icon{font-size:2.5rem;line-height:1;opacity:.75;}
.gf-empty-hero-title{font-size:1.05rem;font-weight:700;color:var(--gf-neutral-800,#2d3748);margin:0;}
.gf-empty-hero-body{font-size:.87rem;color:var(--gf-neutral-500,#8898aa);margin:0;max-width:320px;line-height:1.55;}
.gf-empty-hero-cta{margin-top:.35rem;}

/* Ops dashboard — activity pipeline strip */
.gf-ops-pipeline{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:.5rem;margin:.5rem 0;}
.gf-ops-pipe-stage{background:var(--gf-neutral-50,#f8fafc);border:1px solid var(--gf-neutral-200,#e5e7eb);border-radius:8px;padding:.65rem .75rem;text-align:center;}
.gf-ops-pipe-count{font-size:1.5rem;font-weight:800;color:var(--gf-neutral-900,#1b1f24);line-height:1;}
.gf-ops-pipe-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--gf-neutral-500,#8898aa);margin-top:.15rem;}

/* Inline sparkline in KPI card */
.gf-kpi-sparkline{margin-top:.4rem;opacity:.7;}

/* Section label with teal pill accent */
.gf-section-pill{display:inline-flex;align-items:center;gap:.35rem;font-size:.65rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--gf-brand-midnight,#27203f);background:var(--gf-brand-teal-50,#ecfeff);border:1px solid var(--gf-brand-teal-100,#cffafe);padding:.15rem .6rem;border-radius:999px;margin-bottom:.6rem;}

/* Verification composition bar */
.gf-ver-comp{margin:.5rem 0;}
.gf-ver-comp-bar{height:10px;border-radius:5px;overflow:hidden;display:flex;}
.gf-ver-comp-seg{flex-shrink:0;transition:flex .3s;}
.gf-ver-comp-seg--verified{background:var(--gf-brand-teal,#44c3d0);}
.gf-ver-comp-seg--policy{background:var(--gf-brand-purple,#c778b2);}
.gf-ver-comp-seg--tracked{background:var(--gf-neutral-300,#d1d5db);}
.gf-ver-comp-seg--pending{background:var(--gf-brand-yellow,#fbb85b);}
.gf-ver-comp-legend{display:flex;flex-wrap:wrap;gap:.3rem 1rem;margin-top:.4rem;}
.gf-ver-comp-item{display:flex;align-items:center;gap:.3rem;font-size:.74rem;color:var(--gf-neutral-700,#4a5563);}
.gf-ver-comp-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}

/* Ops — volunteer list compact row */
.gf-vol-row{display:flex;align-items:center;gap:.65rem;padding:.55rem .75rem;border-radius:8px;background:#fff;border:1px solid var(--gf-neutral-200,#e5e7eb);}
.gf-vol-row:hover{background:var(--gf-neutral-50,#f8fafc);}
.gf-vol-row-avatar{width:32px;height:32px;border-radius:50%;background:var(--gf-brand-midnight,#27203f);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;flex-shrink:0;}
.gf-vol-row-name{flex:1;font-size:.87rem;font-weight:600;color:var(--gf-neutral-900,#1b1f24);}
.gf-vol-row-meta{font-size:.74rem;color:var(--gf-neutral-500,#8898aa);}
.gf-vol-row-stat{font-size:.84rem;font-weight:700;color:var(--gf-neutral-900,#1b1f24);}
.gf-vol-list{display:flex;flex-direction:column;gap:.4rem;}

/* Print overrides */
/* ── Org admin header (reuses vol-dash-header chrome) ──────────────────────── */
.gf-org-header-name{
font-size:.75rem;
font-weight:800;
letter-spacing:.06em;
text-transform:uppercase;
color:var(--gf-neutral-600);
flex:1;
text-align:center;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
padding:0 .5rem;
}
/* Org admin nav: left-justify sections (not centered like volunteer) */
.gf-header.gf-vol-dash-header .gf-vol-dash-header-sections{
justify-content:flex-start;
}
/* Range select (toolbar) */
.gf-range-select-wrap{display:inline-flex;align-items:center;gap:.45rem;}
.gf-range-select-wrap label{font-size:.74rem;font-weight:700;color:var(--gf-neutral-600);white-space:nowrap;}
.gf-range-select{font-size:.74rem;font-weight:600;padding:.3rem .55rem;border:1.5px solid var(--gf-neutral-200);border-radius:8px;background:#fff;color:var(--gf-neutral-800);cursor:pointer;}

/* ── Print: profile sections appended to report ─────────────────────────── */
.gf-print-profile-section{border-top:1.5px solid var(--gf-neutral-200);margin-top:1.25rem;padding-top:1rem}
.gf-print-section-head{font-size:.9rem;font-weight:800;color:#27203f;letter-spacing:.03em;text-transform:uppercase;margin:0 0 .65rem}
.gf-print-artifact{padding:.5rem 0;border-bottom:1px solid var(--gf-neutral-100)}
.gf-print-artifact:last-child{border-bottom:none}
@media print{.gf-print-profile-section[style*="display:block"],.gf-print-profile-section[style*="display: block"]{display:block!important}}

/* ── Service story editor ────────────────────────────────────────────────── */
.gf-service-story-editor{background:linear-gradient(135deg,#27203f 0%,#3d2d58 100%);border-radius:14px;padding:1.25rem 1.4rem;color:#fff;margin-bottom:1rem}
.gf-service-story-label{font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.55);margin:0 0 .3rem}
.gf-service-story-title{font-size:1.05rem;font-weight:700;color:#fff;margin:0 0 .5rem}
.gf-service-story-desc{font-size:.82rem;color:rgba(255,255,255,.7);margin:0 0 .8rem;line-height:1.55}
.gf-service-story-textarea{width:100%;min-height:110px;padding:.65rem .85rem;border:1.5px solid rgba(255,255,255,.2);border-radius:8px;background:rgba(255,255,255,.09);color:#fff;font-family:Montserrat,system-ui,sans-serif;font-size:.88rem;line-height:1.65;resize:vertical;box-sizing:border-box}
.gf-service-story-textarea::placeholder{color:rgba(255,255,255,.38)}
.gf-service-story-textarea:focus{outline:none;border-color:#44c3d0}
.gf-service-story-actions{display:flex;align-items:center;gap:.65rem;margin-top:.65rem;flex-wrap:wrap}
.gf-service-story-save{padding:.38rem .9rem;border-radius:8px;border:none;background:#44c3d0;color:#fff;font-weight:700;font-size:.82rem;cursor:pointer;transition:opacity .15s}
.gf-service-story-save:hover{opacity:.88}
.gf-service-story-save:disabled{opacity:.55;cursor:not-allowed}
.gf-service-story-status{font-size:.78rem;color:rgba(255,255,255,.7);margin-left:.1rem}
.gf-service-story-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:700;color:#44c3d0;background:rgba(68,195,208,.15);border:1px solid rgba(68,195,208,.35);border-radius:999px;padding:.12rem .5rem;margin-bottom:.5rem}

/* ── Profile readiness widget ─────────────────────────────────────────────── */
.gf-readiness-card{background:#fff;border-radius:12px;border:1.5px solid var(--gf-neutral-200);padding:.9rem 1.1rem}
.gf-readiness-label{font-size:.67rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--gf-neutral-600);margin:0 0 .55rem}
.gf-readiness-list{display:flex;flex-direction:column;gap:.38rem}
.gf-readiness-item{display:flex;align-items:center;gap:.5rem;font-size:.82rem}
.gf-readiness-dot{width:17px;height:17px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.65rem;font-weight:700;line-height:1}
.gf-readiness-dot--done{background:#44c3d0;color:#fff}
.gf-readiness-dot--todo{background:var(--gf-neutral-200);color:var(--gf-neutral-400)}
.gf-readiness-item-text{color:var(--gf-neutral-700)}
.gf-readiness-item a{color:#44c3d0;font-weight:700;margin-left:.2rem;font-size:.75rem}
.gf-readiness-bar-track{height:5px;border-radius:999px;background:var(--gf-neutral-200);margin-top:.65rem;overflow:hidden}
.gf-readiness-bar-fill{height:100%;border-radius:999px;background:#44c3d0;transition:width .4s}
.gf-readiness-pct{font-size:.72rem;font-weight:700;color:#44c3d0;margin-top:.3rem}

/* ── Bebas Neue display numbers (volunteer identity) ─────────────────────── */
.gf-display-num{font-family:'Bebas Neue',Impact,system-ui,sans-serif;letter-spacing:.04em;line-height:1}
.gf-hero-number.gf-display-num{letter-spacing:.02em}

@media print{
.gf-vol-dash-header,.gf-toolbar-actions,.gf-ctx-bar,.gf-recent-details summary,.gf-btn,.gf-shell-meta-bar,.gf-page-tab-row{display:none!important;}
.gf-impact-hero,.gf-exec-header,.gf-hero-immersive{-webkit-print-color-adjust:exact;print-color-adjust:exact;}
.gf-card{page-break-inside:avoid;box-shadow:none;border:1px solid #ddd;}
}

/* ── Org Activity Table ──────────────────────────────────────────────────── */
.gf-act-table{width:100%;border-collapse:collapse;font-size:.82rem}
.gf-act-table th{background:#27203f;color:#fff;padding:.5rem .7rem;text-align:left;font-size:.72rem;font-weight:700;letter-spacing:.04em;white-space:nowrap}
.gf-act-table td{padding:.5rem .7rem;border-bottom:1px solid var(--gf-neutral-100);vertical-align:middle}
.gf-act-table tr:hover td{background:var(--gf-neutral-50)}
.gf-act-table .gf-act-hours{font-weight:700;color:#44c3d0}
.gf-act-table-wrap{overflow-x:auto;border-radius:8px;border:1px solid var(--gf-neutral-200)}

/* ── Volunteer Groups ────────────────────────────────────────────────────── */
.gf-group-card{border:1.5px solid var(--gf-neutral-200);border-radius:10px;padding:.75rem 1rem;display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}
.gf-group-card-name{font-weight:700;font-size:.9rem;color:#27203f}
.gf-group-card-count{font-size:.78rem;color:var(--gf-neutral-500)}
.gf-group-badge{display:inline-block;padding:.1rem .38rem;border-radius:999px;background:#27203f;color:#fff;font-size:.62rem;font-weight:700;margin:.05rem}

/* ── Media Grid ─────────────────────────────────────────────────────────── */
.gf-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}
.gf-media-card{border:1.5px solid var(--gf-neutral-200);border-radius:10px;overflow:hidden;background:#fff}
.gf-media-card-body{padding:.65rem .8rem}
.gf-media-card-title{font-weight:700;font-size:.82rem;color:#27203f;margin-bottom:.25rem}
.gf-media-card-meta{font-size:.72rem;color:var(--gf-neutral-500)}
.gf-media-evidence-link{display:inline-block;padding:.2rem .5rem;background:var(--gf-brand-teal-50,#ecfeff);color:var(--gf-accent-teal-700,#0e7490);border-radius:6px;font-size:.72rem;font-weight:700;text-decoration:none;margin:.15rem .1rem 0 0}

/* ── Activity Filters & Status Tabs ─────────────────────────────────────── */
.gf-act-filters{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.65rem .9rem;background:#f8f8fb;border-radius:10px;border:1.5px solid var(--gf-neutral-200);margin-bottom:.85rem}
.gf-act-filters input,.gf-act-filters select{padding:.3rem .55rem;border:1.5px solid var(--gf-neutral-200);border-radius:6px;font-size:.8rem;background:#fff}
.gf-act-status-tabs{display:flex;gap:.3rem;margin-bottom:.6rem;flex-wrap:wrap}
.gf-act-status-tab{padding:.28rem .7rem;border-radius:999px;border:1.5px solid var(--gf-neutral-200);font-size:.75rem;font-weight:700;background:#fff;color:var(--gf-neutral-600);cursor:pointer;text-decoration:none}
.gf-act-status-tab.is-active{background:#27203f;color:#fff;border-color:#27203f}

/* ── Opportunities — upcoming highlight ──────────────────────────────────── */
.gf-opp-card--upcoming{border-left:3px solid #fbb85b !important;}

/* ── Settings org grid ───────────────────────────────────────────────────── */
.gf-settings-org-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1rem;margin-bottom:1rem}

/* ── Queue table row hover ────────────────────────────────────────────────── */
#queueTable tbody tr:hover{background:rgba(68,195,208,.04)}
#queueTable tbody tr{border-bottom:1px solid var(--gf-neutral-100)}

/* ── Programs — Goal card accent ──────────────────────────────────────────── */
.gf-prog-card--goal{border-left:3px solid #fbb85b !important;}

/* ── Queue filter select ──────────────────────────────────────────────────── */
.gf-queue-filter-select{padding:.3rem .55rem;border:1.5px solid var(--gf-neutral-200);border-radius:6px;font-size:.8rem;background:#fff;cursor:pointer}

/* ── Org login standalone page ────────────────────────────────────────────── */
/* (styles embedded directly in auth-routes HTML; no additional CSS needed) */

/* ── Opportunity shifts ───────────────────────────────────────────────────── */
.gf-shift-row{padding:.75rem 0;border-bottom:1px solid var(--gf-neutral-100)}
.gf-shift-row:last-child{border-bottom:none}
.gf-shift-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;margin-bottom:.25rem}
.gf-shift-name{font-weight:600;font-size:.9rem;margin-right:.5rem}
.gf-shift-time{font-size:.82rem}
.gf-shift-cap-label{font-size:.8rem;color:var(--gf-neutral-600);margin:.35rem 0 .25rem}
.gf-shift-cap-bar-wrap{height:6px;background:var(--gf-neutral-100);border-radius:3px;overflow:hidden;margin-bottom:.4rem}
.gf-shift-cap-bar-fill{height:100%;background:#44c3d0;border-radius:3px;transition:width .3s}
.gf-shift-vol-list{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.4rem}
.gf-shift-vol-chip{font-size:.75rem;background:rgba(68,195,208,.1);color:#1a8070;border-radius:4px;padding:.15rem .45rem;font-weight:500}
.gf-shift-row--mine{background:rgba(68,195,208,.04);border-radius:6px;padding:.75rem .6rem;margin:0 -.6rem}
.gf-shift-cap-bar-fill--full{background:#e53e3e}
.gf-shift-full-badge{font-size:.72rem;background:#fed7d7;color:#c53030;border-radius:4px;padding:.15rem .45rem;font-weight:600;white-space:nowrap}

/* ── Opportunity calendar grid ────────────────────────────────────────────── */
.gf-cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:.85rem}
.gf-cal-month-label{font-weight:700;font-size:1.05rem;color:var(--gf-neutral-900)}
.gf-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.gf-cal-day-header{font-size:.72rem;font-weight:600;color:var(--gf-neutral-500);text-align:center;padding:.3rem 0;background:var(--gf-neutral-50);border-radius:4px}
.gf-cal-cell{min-height:80px;padding:.35rem .4rem;border:1px solid var(--gf-neutral-100);border-radius:4px;background:#fff;display:flex;flex-direction:column;gap:.2rem}
.gf-cal-cell--empty{background:var(--gf-neutral-50);border-color:transparent}
.gf-cal-cell--today{border-color:#44c3d0;background:rgba(68,195,208,.04)}
.gf-cal-cell--has-opps{background:#fafffe}
.gf-cal-day-num{font-size:.75rem;font-weight:600;color:var(--gf-neutral-700);line-height:1}
.gf-cal-cell--today .gf-cal-day-num{color:#44c3d0}
.gf-cal-chips{display:flex;flex-direction:column;gap:.15rem;overflow:hidden}
.gf-cal-opp-chip{font-size:.68rem;font-weight:500;color:#fff;border-radius:3px;padding:.1rem .35rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none;line-height:1.4}
.gf-cal-opp-chip:hover{opacity:.85;text-decoration:none}

/* ── Goal cards (org admin) ──────────────────────────────────────────────── */
.gf-goal-card-admin{background:#fff;border:1.5px solid var(--gf-neutral-100);border-radius:12px;padding:1rem 1.1rem;transition:box-shadow .15s}
.gf-goal-card-admin:hover{box-shadow:0 4px 16px rgba(39,32,63,.08)}
.gf-goal-card-admin--risk{border-color:#fed7d7;background:#fffafa}
.gf-goal-card-admin--done{border-color:rgba(68,195,208,.35);background:rgba(68,195,208,.03)}
.gf-goal-card-admin-header{display:flex;align-items:flex-start;gap:.75rem}
.gf-goal-card-admin-name{font-size:.93rem;font-weight:700;color:var(--gf-neutral-900);display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.gf-goal-card-admin-meta{font-size:.78rem;color:var(--gf-neutral-500);margin-top:.2rem}
.gf-goal-card-admin-pct{font-size:1.4rem;font-weight:800;color:var(--gf-neutral-700);white-space:nowrap;line-height:1}
.gf-goal-card-admin-pct--done{color:#44c3d0}
.gf-goal-card-admin-pct--risk{color:#e53e3e}
.gf-goal-card-admin-stats{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.4rem}
.gf-goal-stat-chip{font-size:.74rem;padding:.18rem .52rem;border-radius:999px;background:var(--gf-neutral-50);border:1px solid var(--gf-neutral-100);color:var(--gf-neutral-700);font-weight:600}
.gf-goal-pending-badge{font-size:.72rem;padding:.18rem .52rem;border-radius:999px;background:#fef3c7;border:1px solid #fde68a;color:#92400e;font-weight:700}
.gf-goal-badge{font-size:.68rem;font-weight:700;padding:.1rem .42rem;border-radius:4px}
.gf-goal-badge--overdue{background:#fed7d7;color:#c53030}
.gf-goal-badge--risk{background:#fef3c7;color:#92400e}
.gf-goal-badge--done{background:rgba(68,195,208,.15);color:#1a8070}
.gf-goal-progress-track{height:6px;border-radius:999px;background:var(--gf-neutral-100);overflow:hidden}
.gf-goal-progress-fill{height:100%;border-radius:999px;transition:width .4s}

/* ── ⌘K navigation search modal ─────────────────────────────────────────── */
.gf-search-trigger{display:flex;align-items:center;gap:.35rem;padding:.28rem .65rem;border-radius:6px;border:1.5px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:#fff;cursor:pointer;font-size:.75rem;font-weight:600;letter-spacing:.04em;transition:background .15s}
.gf-search-trigger:hover{background:rgba(255,255,255,.15)}
.gf-search-trigger-icon{font-family:inherit;font-size:.72rem;opacity:.9}
.gf-search-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:9998;backdrop-filter:blur(2px)}
.gf-search-modal{position:fixed;top:15vh;left:50%;transform:translateX(-50%);width:min(560px,90vw);background:#fff;border-radius:12px;box-shadow:0 24px 64px rgba(0,0,0,.18),0 4px 12px rgba(0,0,0,.1);z-index:9999;overflow:hidden}
.gf-search-input-wrap{display:flex;align-items:center;gap:.65rem;padding:.85rem 1rem;border-bottom:1px solid var(--gf-neutral-100)}
.gf-search-icon{font-size:1rem;flex-shrink:0;opacity:.55}
.gf-search-input{flex:1;border:none;outline:none;font-size:1rem;color:var(--gf-neutral-900);background:transparent}
.gf-search-input::placeholder{color:var(--gf-neutral-400)}
.gf-search-esc{font-size:.68rem;color:var(--gf-neutral-400);background:var(--gf-neutral-100);border-radius:4px;padding:.15rem .4rem;font-family:inherit;flex-shrink:0}
.gf-search-results{list-style:none;margin:0;padding:.4rem 0;max-height:320px;overflow-y:auto}
.gf-search-result-item{display:flex;align-items:center;justify-content:space-between;padding:.6rem 1rem;cursor:pointer;font-size:.9rem;font-weight:500;color:var(--gf-neutral-900);gap:.5rem;transition:background .1s}
.gf-search-result-item:hover,.gf-search-result-item--active{background:rgba(68,195,208,.09);color:#27203f}
.gf-search-result-path{font-size:.75rem;color:var(--gf-neutral-400);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}

/* ── Goal detail page ────────────────────────────────────────────────────── */
.gf-goal-detail-header{display:flex;align-items:flex-start;gap:1rem;padding:1rem 1.1rem;background:#fff;border:1.5px solid var(--gf-neutral-100);border-radius:12px;margin-bottom:.85rem}
.gf-goal-assign-chip{display:inline-flex;align-items:center;padding:.15rem .5rem;border-radius:999px;font-size:.72rem;font-weight:600;background:rgba(251,184,91,.15);color:#b8620e;border:1px solid rgba(251,184,91,.4);white-space:nowrap}
.gf-goal-scope-badge{display:inline-flex;align-items:center;padding:.15rem .5rem;border-radius:999px;font-size:.72rem;font-weight:700;background:var(--gf-brand-midnight-50);color:#27203f;border:1px solid var(--gf-brand-midnight-100)}

/* ── Volunteer goal cards ─────────────────────────────────────────────────── */
.gf-vol-goal-card{background:#fff;border:1.5px solid var(--gf-neutral-100);border-radius:12px;padding:.9rem 1rem;display:flex;align-items:flex-start;gap:.85rem;transition:box-shadow .15s}
.gf-vol-goal-card:hover{box-shadow:0 4px 14px rgba(39,32,63,.07)}
.gf-vol-goal-card--risk{border-color:#fed7d7;background:#fffafa}
.gf-vol-goal-card--done{border-color:rgba(68,195,208,.35);background:rgba(68,195,208,.03)}
.gf-vol-goal-progress{flex-shrink:0}
.gf-vol-goal-meta{flex:1;min-width:0}
.gf-vol-goal-name{font-size:.9rem;font-weight:700;color:#27203f;margin:0 0 .2rem}
.gf-vol-goal-due{font-size:.76rem;color:var(--gf-neutral-500);margin:0 0 .3rem}
.gf-vol-goal-stats{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.35rem}

/* ── Requirement checklist chips ─────────────────────────────────────────── */
.gf-req-banner {
  background: rgba(251,184,91,.08);
  border: 1.5px solid rgba(251,184,91,.3);
  border-radius: 10px;
  padding: .6rem .85rem;
  margin-bottom: .75rem;
  font-size: .82rem;
  color: #8a5a0a;
}
.gf-req-chips {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  margin-top: .4rem;
}
.gf-req-chip {
  display: flex;
  align-items: center;
  gap: .3rem;
  font-size: .78rem;
  font-weight: 600;
  padding: .2rem .55rem;
  border-radius: 6px;
}
.gf-req-chip--needed {
  background: rgba(251,184,91,.18);
  color: #8a5a0a;
  border: 1px solid rgba(251,184,91,.4);
}
.gf-req-chip--done {
  background: rgba(68,195,208,.12);
  color: #1a8070;
  border: 1px solid rgba(68,195,208,.3);
}
.gf-req-icon {
  font-size: .85em;
}

/* ── Shift attendance management ────────────────────────────────────────────── */
.gf-attend-card {
  background: #fff;
  border: 1.5px solid var(--gf-neutral-200);
  border-radius: 12px;
  padding: .85rem 1rem;
  transition: box-shadow .15s;
}
.gf-attend-card:hover { box-shadow: 0 2px 12px rgba(0,0,0,.07); }
.gf-attend-card--attended { border-color: rgba(68,195,208,.4); background: rgba(68,195,208,.03); }
.gf-attend-card--no_show { border-color: rgba(229,62,62,.25); background: rgba(229,62,62,.02); }
.gf-attend-card--checked_in { border-color: rgba(251,184,91,.4); background: rgba(251,184,91,.04); }
.gf-attend-card--excused { border-color: rgba(199,120,178,.3); background: rgba(199,120,178,.03); }

.gf-attend-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: .5rem;
  margin-bottom: .6rem;
}
.gf-attend-email { font-size: .85rem; font-weight: 700; color: var(--gf-neutral-900); }
.gf-attend-sub { font-size: .72rem; color: var(--gf-neutral-500); margin-top: .1rem; }

.gf-attend-badge {
  font-size: .68rem;
  font-weight: 700;
  padding: .2rem .55rem;
  border-radius: 999px;
  white-space: nowrap;
  flex-shrink: 0;
}
.gf-attend-badge--registered { background: var(--gf-neutral-100); color: var(--gf-neutral-600); }
.gf-attend-badge--checked_in { background: rgba(251,184,91,.2); color: #8a5a0a; }
.gf-attend-badge--attended { background: rgba(68,195,208,.15); color: #1a8070; }
.gf-attend-badge--no_show { background: rgba(229,62,62,.12); color: #c53030; }
.gf-attend-badge--excused { background: rgba(199,120,178,.15); color: #7a3d6e; }

.gf-attend-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .3rem;
}
.gf-attend-action-btn {
  font-size: .72rem;
  font-weight: 600;
  padding: .2rem .55rem;
  border-radius: 6px;
  border: 1.5px solid var(--gf-neutral-200);
  background: #fff;
  cursor: pointer;
  transition: background .1s, border-color .1s;
}
.gf-attend-action-btn:hover { background: var(--gf-neutral-50); border-color: var(--gf-neutral-300); }
.gf-attend-action-btn--checkin:hover { background: rgba(251,184,91,.15); border-color: rgba(251,184,91,.4); }
.gf-attend-action-btn--attended:hover { background: rgba(68,195,208,.12); border-color: rgba(68,195,208,.35); }
.gf-attend-action-btn--noshow:hover { background: rgba(229,62,62,.08); border-color: rgba(229,62,62,.3); color: #c53030; }
.gf-attend-action-btn--excused:hover { background: rgba(199,120,178,.1); border-color: rgba(199,120,178,.3); }
.gf-attend-action-btn--reset:hover { background: var(--gf-neutral-100); }
.gf-attend-action-btn:disabled { opacity: .45; cursor: not-allowed; }

.gf-attend-bulk-bar {
  position: sticky;
  top: 0;
  z-index: 20;
  background: linear-gradient(90deg, #27203f, #3d2d58);
  color: #fff;
  border-radius: 10px;
  padding: .6rem 1rem;
  margin-bottom: .85rem;
  display: flex;
  align-items: center;
  gap: .75rem;
  flex-wrap: wrap;
  box-shadow: 0 4px 16px rgba(39,32,63,.25);
}
.gf-attend-bulk-title { font-size: .82rem; font-weight: 700; margin-right: .25rem; }

/* Shift attendance summary chips (in opportunity detail) */
.gf-shift-attend-summary { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .35rem; }
.gf-shift-attend-chip {
  font-size: .67rem; font-weight: 700;
  padding: .1rem .4rem; border-radius: 999px;
}
.gf-shift-attend-chip--attended { background: rgba(68,195,208,.15); color: #1a8070; }
.gf-shift-attend-chip--checkin { background: rgba(251,184,91,.2); color: #8a5a0a; }
.gf-shift-attend-chip--noshow { background: rgba(229,62,62,.1); color: #c53030; }
.gf-shift-vol-chip--attended { background: rgba(68,195,208,.15); color: #1a8070; border-color: rgba(68,195,208,.3); }
.gf-shift-vol-chip--checked { background: rgba(251,184,91,.2); color: #8a5a0a; }
.gf-shift-vol-chip--noshow { background: rgba(229,62,62,.1); color: #c53030; text-decoration: line-through; }
.gf-shift-understaffed { font-size: .67rem; font-weight: 700; color: #8a5a0a; background: rgba(251,184,91,.2); padding: .1rem .4rem; border-radius: 4px; margin-left: .4rem; }

/* ── Opportunity setup flow ───────────────────────────────────────────────── */
.gf-opp-setup-section {
  border: 1.5px solid var(--gf-neutral-200);
}
.gf-opp-setup-section-head {
  display: flex;
  align-items: center;
  gap: .6rem;
  font-size: .9rem;
  font-weight: 800;
  color: var(--gf-neutral-800);
  margin-bottom: .85rem;
  padding-bottom: .65rem;
  border-bottom: 1px solid var(--gf-neutral-100);
  text-transform: uppercase;
  letter-spacing: .04em;
}
.gf-opp-setup-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #44c3d0;
  color: #fff;
  font-size: .75rem;
  font-weight: 800;
  flex-shrink: 0;
}
.gf-shift-build-row {
  display: flex;
  gap: .5rem;
  align-items: flex-end;
  flex-wrap: wrap;
  padding: .65rem .75rem;
  background: rgba(68,195,208,.04);
  border: 1px solid rgba(68,195,208,.2);
  border-radius: 8px;
}

/* ── Opportunity detail: image hero ─────────────────────────────────────── */
.gf-opp-detail-hero--image {
  background-size: cover;
  background-position: center;
  position: relative;
  padding: 0;
  min-height: 220px;
  display: flex;
  align-items: flex-end;
}
.gf-opp-detail-hero-overlay {
  background: linear-gradient(to top, rgba(15,10,30,.88) 0%, rgba(15,10,30,.35) 100%);
  border-radius: 14px;
  width: 100%;
  padding: 1.75rem 2rem 1.5rem;
  color: #fff;
}

/* ── Opportunity enrichment info blocks ─────────────────────────────────── */
.gf-opp-info-grid { display: flex; flex-direction: column; gap: .85rem; }
.gf-opp-info-block { display: flex; gap: .75rem; align-items: flex-start; }
.gf-opp-info-block-icon { font-size: 1.1rem; flex-shrink: 0; margin-top: .05rem; }
.gf-opp-info-block-label { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--gf-neutral-500); margin: 0 0 .12rem; }
.gf-opp-info-block-text { font-size: .87rem; color: var(--gf-neutral-700); margin: 0; line-height: 1.5; white-space: pre-wrap; }

/* ── Shift row enhancements ─────────────────────────────────────────────── */
.gf-shift-row-header { display: flex; align-items: flex-start; justify-content: space-between; gap: .5rem; }
.gf-shift-mine-badge { display: inline-block; margin-left: .5rem; font-size: .73rem; color: #15803d; font-weight: 700; background: #dcfce7; border-radius: 999px; padding: .1rem .45rem; vertical-align: middle; }
.gf-shift-cap-label { font-size: .8rem; color: var(--gf-neutral-600); margin: .35rem 0 .15rem; }

/* ── Volunteer roster ───────────────────────────────────────────────────── */
.gf-shift-roster { display: flex; flex-wrap: wrap; gap: .3rem .4rem; margin: .45rem 0 .3rem; }
.gf-shift-roster-chip { display: inline-block; font-size: .73rem; font-weight: 600; color: var(--gf-neutral-600); background: var(--gf-neutral-50); border: 1px solid var(--gf-neutral-200); border-radius: 999px; padding: .15rem .55rem; }
.gf-shift-roster-chip--me { color: #0f766e; background: rgba(68,195,208,.12); border-color: rgba(68,195,208,.35); }
.gf-shift-roster-count { font-size: .78rem; color: var(--gf-neutral-500); margin: .3rem 0 .15rem; font-style: italic; }

/* ── Consent banner ─────────────────────────────────────────────────────── */
.gf-consent-banner { display: flex; align-items: flex-start; gap: .75rem; background: rgba(245,158,11,.08); border: 1.5px solid rgba(245,158,11,.35); border-radius: 10px; padding: .75rem 1rem; margin-bottom: 1rem; }
.gf-consent-banner-icon { font-size: 1.2rem; flex-shrink: 0; }
.gf-consent-banner-title { font-size: .88rem; font-weight: 700; color: #92400e; margin: 0 0 .15rem; }
.gf-consent-banner-body  { font-size: .8rem; color: #78350f; margin: 0; }
.gf-consent-banner--accepted { background: rgba(68,195,208,.08); border-color: rgba(68,195,208,.3); }
.gf-consent-banner--accepted .gf-consent-banner-title { color: #0f766e; }
.gf-consent-banner--accepted .gf-consent-banner-body  { color: #134e4a; }

/* ── Consent modal ──────────────────────────────────────────────────────── */
.gf-consent-modal-backdrop { position: fixed; inset: 0; background: rgba(15,10,30,.55); z-index: 1200; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.gf-consent-modal { background: #fff; border-radius: 14px; padding: 1.75rem; max-width: 520px; width: 100%; box-shadow: 0 24px 64px rgba(15,10,30,.22); }
.gf-consent-modal-title { font-size: 1.05rem; font-weight: 800; color: var(--gf-brand-midnight); margin: 0 0 .5rem; }
.gf-consent-modal-body  { font-size: .85rem; color: var(--gf-neutral-600); margin: 0 0 1rem; white-space: pre-wrap; max-height: 220px; overflow-y: auto; }
.gf-consent-modal-field { margin-bottom: .75rem; }
.gf-consent-modal-field label { display: block; font-size: .78rem; font-weight: 700; color: var(--gf-neutral-600); margin-bottom: .25rem; }
.gf-consent-modal-field input[type="text"] { width: 100%; box-sizing: border-box; }
.gf-consent-modal-agree { display: flex; align-items: flex-start; gap: .5rem; font-size: .83rem; color: var(--gf-neutral-700); margin-bottom: 1.1rem; cursor: pointer; }
.gf-consent-modal-agree input { margin-top: .2rem; accent-color: #44c3d0; flex-shrink: 0; }
.gf-consent-modal-actions { display: flex; gap: .65rem; align-items: center; }

/* ── Consent status chips (org participant list) ────────────────────────── */
.gf-consent-status-chip { display: inline-flex; align-items: center; gap: .3rem; font-size: .7rem; font-weight: 700; border-radius: 999px; padding: .15rem .55rem; line-height: 1.4; }
.gf-consent-status-chip--accepted  { background: rgba(68,195,208,.13); color: #0f766e; border: 1px solid rgba(68,195,208,.3); }
.gf-consent-status-chip--missing   { background: rgba(239,68,68,.08); color: #b91c1c; border: 1px solid rgba(239,68,68,.25); }
.gf-consent-status-chip--reconsent { background: rgba(245,158,11,.10); color: #92400e; border: 1px solid rgba(245,158,11,.3); }
.gf-consent-status-chip--declined  { background: rgba(239,68,68,.08); color: #b91c1c; border: 1px solid rgba(239,68,68,.25); }

/* ── Consent banner additional variants ─────────────────────────────────── */
.gf-consent-banner--reconsent { background: rgba(245,158,11,.08); border-color: rgba(245,158,11,.35); }
.gf-consent-banner--reconsent .gf-consent-banner-title { color: #92400e; }
.gf-consent-banner--reconsent .gf-consent-banner-body  { color: #78350f; }
.gf-consent-banner--declined  { background: rgba(239,68,68,.07); border-color: rgba(239,68,68,.25); }
.gf-consent-banner--declined .gf-consent-banner-title  { color: #b91c1c; }
.gf-consent-banner--declined .gf-consent-banner-body   { color: #991b1b; }
