@import url('https://fonts.googleapis.com/css2?family=PT+Sans:wght@400;700&family=Permanent+Marker&display=swap');
:root{font-family:'PT Sans',system-ui,sans-serif;font-size:18px;line-height:1.5;color:#515151;background:#fff;font-synthesis:none;--green:#4141a5;--muted:#626262;--line:#e3e3eb;--soft:#f2f2fa;--ink:#313131}
*{box-sizing:border-box}
body{margin:0}
button,input,select{font:inherit}
button,a,input{touch-action:manipulation}
button{cursor:pointer}
button:disabled{cursor:default;opacity:.58}
a{color:var(--green)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #c89129;outline-offset:3px}
button{transition:background .16s,transform .16s}
button:active:not(:disabled){transform:translateY(1px)}
.site-header{background:linear-gradient(315deg,#081e77,#4141a5);color:#fff}
.header-inner{max-width:1200px;margin:auto;padding:16px 32px;display:flex;justify-content:space-between;align-items:center;gap:20px}
.brand{display:flex;align-items:center;text-decoration:none;color:#fff;font-family:'Permanent Marker',cursive;font-size:36px;font-weight:400;line-height:1.2}
.header-actions{display:flex;align-items:center;gap:16px}
.text-button{border:0;background:none;color:var(--muted);font-size:18px;padding:8px 0}
.text-button:hover{color:var(--green)}
.header-actions .text-button{color:#fff;min-height:44px}
.header-actions .text-button:hover{text-decoration:underline;text-underline-offset:5px}
.divider{height:24px;width:1px;background:#ffffff40}
main{max-width:1200px;padding:0 32px;margin:auto;min-height:75vh}
.event-nav{display:flex;gap:8px;padding:20px 0;overflow:auto;border-bottom:1px solid var(--line);scrollbar-width:thin}
.event-tab{white-space:nowrap;background:none;border:1px solid transparent;color:#61657b;padding:10px 16px;border-radius:4px;font-weight:400;font-size:18px;display:flex;align-items:center;gap:10px;transition:none}
.event-tab:active:not(:disabled){transform:none}
.event-tab[aria-current=true]{background:var(--green);color:white}
.event-tab:hover:not([aria-current=true]){background:#eeedf7}
.event-icon{font-size:20px;line-height:1}
.event-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:28px 0 24px}
.eyebrow{text-transform:uppercase;letter-spacing:1.7px;font-size:14px;font-weight:700;color:var(--green);margin:0 0 9px}
h1,h2,h3,p{margin-top:0}
h1,h2,h3{color:var(--ink);font-family:'PT Sans',system-ui,sans-serif}
h1{font-size:36px;line-height:1.25;letter-spacing:-.5px;font-weight:700;margin-bottom:12px}
h2{font-size:26px;line-height:1.25;letter-spacing:-.3px}
h3{font-size:21px;line-height:1.3;letter-spacing:0}
p{line-height:1.5}
.lead{color:#515151;font-size:18px;max-width:650px;margin:0}
.season{border:1px solid var(--line);border-radius:24px;padding:9px 13px;font-size:16px;color:var(--muted);white-space:nowrap;margin-top:18px}
.layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:28px;align-items:start}
.event-sidebar{position:sticky;top:24px}
.about-card{background:white;border:1px solid var(--line);border-radius:6px;border-top:4px solid var(--green);padding:20px}
.sidebar-icon{background:var(--soft);border-radius:10px;width:44px;height:44px;display:grid;place-items:center;font-size:22px;margin-bottom:14px}
.about-card h2{font-size:23px;margin-bottom:14px}
.about-card p{color:var(--muted);font-size:17px;margin-bottom:16px}
.detail-line{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:17px;margin-top:10px;line-height:1.5}
.detail-line svg{display:block;flex:none}
.sidebar-separator{border:0;border-top:1px solid var(--line);margin:18px 0}
.meter-label{display:flex;justify-content:space-between;gap:8px;font-size:16px;margin-bottom:9px}
.meter-label b{color:var(--green);font-weight:600}
.meter{height:6px;background:#eeeef5;border-radius:5px;overflow:hidden}
.meter>span{display:block;height:100%;background:var(--green);border-radius:5px}
.thanks-note{padding:18px 4px;color:var(--muted);font-size:17px;line-height:1.5}
.schedule-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px;flex-wrap:wrap}
.schedule-toolbar h2{margin:0}
.date-count{color:var(--muted);font-size:18px;font-weight:400;margin-left:7px}
.toggle-label{display:flex;align-items:center;gap:8px;font-size:18px;color:var(--muted);cursor:pointer}
.toggle-label input{accent-color:var(--green);width:16px;height:16px}
.day-card{border:1px solid var(--line);background:#fff;border-radius:6px;overflow:hidden;margin-bottom:22px}
.day-header{display:flex;justify-content:space-between;align-items:center;gap:14px;background:var(--soft);padding:15px 22px;border-bottom:1px solid var(--line)}
.date-label{display:flex;align-items:center;gap:9px;min-width:0}
.date-label h3{margin:0;font-size:18px;line-height:1.4}
.date-availability{font-size:16px;color:var(--green);white-space:nowrap}
.shift{padding:22px;border-bottom:1px solid #eeeef5;display:grid;grid-template-columns:minmax(0,1fr) 132px;gap:20px}
.shift:last-child{border-bottom:0}
.shift h3{margin:0 0 7px}
.time{color:var(--muted);display:flex;align-items:center;gap:6px;font-size:17px;margin-bottom:8px}
.description{font-size:17px;color:var(--muted);margin:0 0 12px;line-height:1.5}
.volunteers{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.person{display:flex;align-items:center;gap:6px;background:#f2f2fa;border-radius:5px;padding:4px 4px 4px 10px;font-size:16px;color:#51517b}
.person .avatar{display:grid;place-items:center;background:#e1e0f4;border-radius:50%;width:24px;height:24px;font-size:14px;font-weight:600}
.person button{display:grid;place-items:center;min-width:32px;min-height:32px;padding:0;border:0;background:none;color:#626262;font-size:24px;line-height:1}
.person button:hover{background:#e7e7f2;border-radius:3px;color:#892f27}
.be-first{font-size:16px;color:var(--muted)}
.shift-action{display:flex;flex-direction:column;justify-content:center;gap:10px;align-items:stretch;text-align:center}
.availability{font-size:16px;color:var(--green)}
.availability.full{color:var(--muted)}
.primary,.secondary,.danger{min-height:44px;border:1px solid var(--green);padding:8px 16px;border-radius:4px;font-size:18px;font-weight:700;background:var(--green);color:#fff}
.primary:hover{background:#081e77}
.secondary{background:white;color:var(--green);border-color:#c5c5e6}
.secondary:hover{background:var(--soft)}
.danger{background:#a53b32;border-color:#a53b32}
.muted-button{background:#f5f5f7;color:#666;border-color:var(--line)}
.signup-label{display:flex;gap:8px;align-items:center;justify-content:center}
.schedule-foot{font-size:16px;color:var(--muted);text-align:center;margin:24px 0}
.single-date{display:flex;gap:9px;align-items:center;color:var(--green);margin-top:16px;font-size:18px}
footer{max-width:1200px;margin:46px auto 0;padding:24px 32px 32px;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:14px;border-top:1px solid var(--line)}
.footer-brand{color:#686a81}
.footer-credit{display:flex;align-items:center;gap:7px}
.heart{display:block;flex:none;color:var(--green)}
.demo-banner{background:#fff5d8;color:#756024;padding:10px 16px;border:1px solid #eadeb6;border-radius:6px;margin-top:20px;font-size:16px}
.empty,.loading{padding:50px 26px;text-align:center;color:var(--muted);background:white;border:1px solid var(--line);border-radius:10px}
.loading{margin-top:30px}
.empty h3{color:var(--ink)}
dialog{width:min(520px,calc(100% - 32px));border:0;border-radius:8px;padding:28px;box-shadow:0 25px 100px #081e7733;color:var(--ink)}
dialog::backdrop{background:#081e775c;backdrop-filter:blur(3px)}
.close-modal{position:absolute;right:12px;top:9px;background:none;border:0;color:var(--muted);font-size:30px;padding:5px 10px}
dialog h2{margin:8px 20px 12px 0;font-size:30px}
dialog p{font-size:18px;color:var(--muted)}
.modal-context{padding:13px 15px;background:var(--soft);border-radius:7px;margin:18px 0;font-size:18px;line-height:1.7}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
label.field{display:block;font-size:18px;font-weight:500;margin:15px 0}
label.field input{display:block;width:100%;border:1px solid #abb0b2;background:#fff;border-radius:4px;margin-top:7px;padding:12px;color:var(--ink);min-width:0}
label.field small{font-size:14px;font-weight:400;display:block;color:var(--muted);line-height:1.5;margin-top:6px}
.form-grid .field{margin-bottom:0}
.check{display:flex;gap:9px;align-items:flex-start;font-size:16px;color:var(--muted);line-height:1.5;margin:18px 0}
.check input{accent-color:var(--green);margin-top:3px}
.wide{width:100%}
.form-error{color:#a53b32;font-size:18px;line-height:1.5;margin:12px 0}
.privacy-note{font-size:14px!important;text-align:center;margin:15px 0 0}
.modal-links{display:flex;justify-content:center;margin-top:15px}
.success-icon{width:48px;height:48px;border-radius:50%;background:var(--soft);color:var(--green);font-size:26px;display:grid;place-items:center;margin-bottom:20px}
#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,25px);opacity:0;pointer-events:none;background:#081e77;color:white;border-radius:10px;padding:14px 22px;box-shadow:0 8px 30px #1233;transition:.2s;z-index:100;max-width:calc(100% - 32px);font-size:18px}
#toast.show{opacity:1;transform:translate(-50%,0)}
.admin-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:30px 0 20px}
.admin-bar h1{font-size:36px;margin:0}
.admin-tabs{display:flex;gap:10px;margin:20px 0}
.admin-tabs button[aria-selected=true]{background:var(--green);color:#fff}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}
table{border-collapse:collapse;width:100%;font-size:18px;text-align:left}
th{background:var(--soft);color:var(--muted);font-weight:500}
th,td{padding:15px 17px;border-bottom:1px solid var(--line);vertical-align:top;white-space:nowrap}
td small{display:block;color:var(--muted);font-size:14px;margin-top:5px}
.badge{font-size:14px;padding:4px 8px;background:var(--soft);border-radius:5px;color:var(--green)}
.badge.cancelled{background:#f6eee9;color:#8a5340}
.admin-note{background:white;border:1px solid var(--line);padding:24px;border-radius:12px;max-width:750px}
.admin-note p{color:var(--muted);font-size:18px}
.admin-note li{margin:12px 0;line-height:1.6}
.admin-stat{color:var(--muted);font-size:18px}
.error-panel{text-align:center;padding:50px 20px}
.inline-error{color:#a53b32;font-size:18px;padding:12px 0}
.sheet-link{display:inline-block;text-decoration:none}
.admin-empty{padding:24px;color:var(--muted)}
[hidden]{display:none!important}
svg{vertical-align:middle}
.time svg,.date-label svg,.single-date svg{display:block;flex:none}

@media(max-width:1000px){
 .layout{grid-template-columns:1fr;gap:24px}
 .event-sidebar{display:none}
 .event-heading{margin:30px 0}
 .season{display:none}
}
@media(max-width:600px){
 :root{font-size:18px}
 main{padding:0 20px}
 .header-inner{padding:14px 20px;flex-wrap:wrap;gap:6px}
 .brand{font-size:30px}
 .header-actions{width:100%;justify-content:space-between;gap:16px}
 .header-actions .text-button{font-size:16px;padding:0;min-height:32px}
 .header-actions .divider{display:none}
 .event-nav{padding:14px 0;gap:6px}
 .event-tab{font-size:17px;padding:9px 12px;gap:8px}
 .event-icon{font-size:20px}
 .event-heading{margin:24px 0}
 .eyebrow{font-size:12px;letter-spacing:1px}
 h1{font-size:30px}
 h2{font-size:24px}
 .lead{font-size:18px}
 .schedule-toolbar{gap:12px;margin-bottom:18px}
 .toggle-label{font-size:16px;min-height:32px}
 .day-header{padding:14px 18px;align-items:flex-start;flex-wrap:wrap;gap:8px}
 .date-label{gap:6px 10px}
 .date-label h3{font-size:18px}
 .date-availability{font-size:16px}
 .shift{padding:18px;grid-template-columns:1fr;gap:14px}
 .shift h3{font-size:20px}
 .time{font-size:16px}
 .description{font-size:17px}
 .shift-action{flex-direction:row;align-items:center;justify-content:space-between;gap:12px;text-align:left}
 .shift-action button{min-width:132px;font-size:18px}
 .availability{font-size:16px}
 .person button{min-width:44px;min-height:44px}
 .person{padding-top:0;padding-bottom:0;font-size:16px}
 .schedule-foot{font-size:15px}
 footer{padding:22px 20px;flex-direction:column;gap:10px;margin-top:32px;font-size:14px}
 dialog{padding:28px 22px;max-height:calc(100dvh - 32px);overflow:auto}
 dialog h2{font-size:28px}
 dialog p,.modal-context,label.field{font-size:18px}
 .form-grid{grid-template-columns:1fr;gap:0}
 .check{font-size:16px}
 .privacy-note{font-size:14px!important}
 #toast{font-size:16px;width:max-content;padding:14px 18px}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}
}

/* Loading never replaces a visible schedule or changes its opacity. */
.event-nav{position:relative}
.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}
