:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;color:#153441;background:#f5f8f9;font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.48;cursor:not-allowed}.svg-symbols{position:absolute;width:0;height:0;overflow:hidden}.icon{height:19px;width:19px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.hide{display:none!important}
.site-header{background:#103c4e;color:#fff}.header-inner{max-width:1100px;margin:auto;min-height:91px;padding:15px 22px;display:flex;align-items:center;gap:13px}.brand-mark{height:46px;width:46px;border:1px solid #8aabb7;border-radius:13px;display:grid;place-items:center;font-size:18px;font-weight:900;letter-spacing:-1px;position:relative}.brand-mark span{position:absolute;right:-5px;top:-7px;color:#f9d34b;font-size:18px}.brand-copy{display:flex;flex-direction:column;gap:4px}.brand-copy strong{font-size:19px;letter-spacing:-.3px}.brand-copy small{font-size:11px;color:#d1e1e7}.main-nav{display:flex;gap:8px;margin-left:auto}.nav-button{color:#d3e8ed;background:transparent;border:1px solid transparent;border-radius:8px;padding:10px 14px;white-space:nowrap}.nav-button:hover,.nav-button.selected{color:#fff;background:#ffffff1c}.page{max-width:1050px;margin:auto;padding:27px 22px 40px}.page-intro{margin:9px 0 28px}.page-intro.compact{margin-top:20px}.eyebrow{font-size:11px;font-weight:850;letter-spacing:1.7px;color:#2d8294;margin-bottom:8px}h1,h2,h3,h4,p{margin-top:0}h1{font-size:clamp(27px,3.3vw,36px);line-height:1.15;letter-spacing:-1px;margin-bottom:9px}h2{font-size:22px;letter-spacing:-.4px}h3{font-size:17px}.page-intro p{color:#5c7480;max-width:660px;margin:0;line-height:1.6}.surface{background:#fff;border:1px solid #dce6e9;border-radius:15px;padding:22px;box-shadow:0 3px 12px #13374709}.loading{color:#66818a}.notice{border-radius:10px;padding:13px 16px;margin:0 0 20px;background:#e6f4ed;color:#225d3c;border:1px solid #b8e4c9}.notice.error{background:#fff0f0;color:#8e2727;border-color:#f2c7c7}.event-block{margin-bottom:29px}.event-head{margin:0 0 15px;display:flex;justify-content:space-between;gap:12px;align-items:flex-end}.event-head h2{font-size:24px;margin-bottom:4px}.event-head p{font-size:14px;color:#667d87;margin:0}.date-stack{display:grid;gap:11px}.night{background:#fff;border:1px solid #dde7e9;border-radius:14px;overflow:hidden;box-shadow:0 2px 10px #123d4808}.night-heading{display:flex;align-items:center;gap:16px;width:100%;padding:16px 19px;text-align:left;border:0;background:#fff;color:#163947}.night-heading:hover{background:#fbfcfc}.night-stripe{width:7px;min-width:7px;align-self:stretch;border-radius:6px;background:var(--night)}.night-label{display:flex;flex-direction:column;gap:5px;flex:1}.night-label strong{font-size:17px}.night-label span{color:#68808b;font-size:13px}.night-count{font-size:12px;font-weight:750;white-space:nowrap;color:#456473;background:#f0f5f6;padding:7px 10px;border-radius:100px}.night-heading>.icon{transition:transform .2s}.night.open .night-heading>.icon{transform:rotate(180deg)}.night-jobs{padding:0 18px 17px 42px;display:none}.night.open .night-jobs{display:block}.job{padding:15px 0;display:flex;gap:13px;align-items:flex-start;border-top:1px solid #edf1f2}.job-symbol{width:41px;height:41px;display:grid;place-items:center;background:var(--light);color:#245c68;border-radius:11px;flex-shrink:0}.job-copy{flex:1;min-width:0}.job-title{font-weight:800;margin:0 0 4px}.job-meta{display:flex;flex-wrap:wrap;align-items:center;gap:9px;color:#6e848c;font-size:12px}.availability{border-radius:99px;background:#e9f5ee;color:#267142;font-size:12px;font-weight:750;padding:4px 9px}.availability.full{background:#f5e9e8;color:#a44738}.job-description{color:#566f79;font-size:13px;line-height:1.5;margin:9px 0 0}.job-action{border:1px solid #d2e0e4;background:#fff;border-radius:9px;padding:9px 13px;color:#155469;font-weight:750;white-space:nowrap}.job-action:hover{border-color:#5798a9;background:#edf8f9}.job-action:disabled{color:#809198;background:#f6f7f7}.day-thumbnail{width:100px;height:52px;object-fit:cover;border-radius:6px;display:none}.night-kicker{font-weight:800;color:var(--night);font-size:11px;text-transform:uppercase;letter-spacing:.5px}.night.open .day-thumbnail{display:block}
.primary,.subtle,.text-button,.back-link{border:0;border-radius:9px;display:inline-flex;gap:9px;align-items:center;justify-content:center;padding:11px 17px;font-weight:750}.primary{background:#13657b;color:#fff}.primary:hover{background:#0c5063}.subtle{background:#fff;border:1px solid #c8dbe1;color:#235a6e}.subtle:hover{background:#edf6f8}.text-button,.back-link{background:none;color:#28728a}.back-link{padding-left:0}.small{padding:8px 11px;font-size:13px}.wide{width:100%}.form-surface{max-width:700px}.form-surface label,.editor label,.surface label{display:block;font-weight:700;font-size:13px;color:#274d59;margin-bottom:14px}input,select,textarea{display:block;width:100%;border-radius:9px;border:1px solid #bfd0d6;padding:11px 12px;margin-top:7px;background:#fff;color:#153441;outline-offset:2px}textarea{resize:vertical;min-height:88px;line-height:1.5}input:focus,select:focus,textarea:focus{outline:2px solid #83c6d4;border-color:#4e91a3}.check-label{display:flex!important;align-items:center;gap:9px}.check-label input{width:17px;height:17px;margin:0}.optional{font-weight:400;color:#80959e}.helper{color:#6e8790;font-size:12px;margin:13px 0 0}.inline-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.stack{display:grid;gap:12px}.signup-card{padding:20px}.signup-card .inline-actions{margin-top:15px}.signup-card h3{margin:0 0 4px}.signup-card p{color:#657d85;margin:0}.danger{background:#b64a49;color:white;border:0;border-radius:9px;padding:10px 14px}.admin-top{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:19px}.admin-identity{color:#607e88;font-size:12px}.login-panel{padding:16px 21px}.login-panel p{color:#69808a;font-size:13px}.admin-controls{display:flex;gap:13px;align-items:flex-end}.event-picker{flex:1;margin-bottom:0!important}.draft-chip{font-size:12px;font-weight:750;color:#875d2b;background:#fff1df;padding:7px 10px;border-radius:100px;white-space:nowrap}.draft-chip.live{color:#2a7547;background:#e6f4ea}.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0 22px}.metric{border:1px solid #dce6e9;border-radius:13px;background:white;padding:17px}.metric b{display:block;font-size:26px;line-height:1.2}.metric span{display:block;color:#6b818b;font-size:12px;margin-top:5px}.admin-tabs{display:flex;gap:9px;border-bottom:1px solid #dce7e9;margin:0 0 20px}.admin-tabs button{padding:12px 15px;color:#53717d;background:none;border:0;border-bottom:3px solid transparent;font-weight:750}.admin-tabs button.active{color:#125b70;border-bottom-color:#16748c}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:15px}.section-heading h2{margin-bottom:5px}.section-heading p{font-size:13px;color:#6e8188;margin-bottom:0}.job-manage{padding:0;overflow:hidden}.job-manage-header{padding:17px 20px;display:flex;align-items:center;gap:14px}.job-manage-header .job-symbol{margin-right:0}.job-manage-header strong{display:block;font-size:16px}.job-manage-header small{display:block;color:#6a828c;margin-top:4px}.job-manage-header .subtle{margin-left:auto}.shift-list{border-top:1px solid #e8edef;padding:0 20px}.shift-row{display:flex;align-items:center;gap:10px;border-bottom:1px solid #edf1f2;padding:12px 0}.shift-row:last-child{border-bottom:0}.shift-row .shift-description{min-width:0;flex:1}.shift-row b{font-size:13px}.shift-row p{font-size:12px;color:#70858d;margin:4px 0 0}.shift-row .subtle{padding:7px 10px;font-size:12px}.shift-row .availability{margin:0 4px}.editor{margin-top:20px;border-color:#a6cbd5;box-shadow:0 8px 30px #19445712}.editor>h2{margin-bottom:6px}.editor .editor-hint{font-size:13px;color:#68818a;margin-bottom:18px}.edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.editor-actions{display:flex;gap:10px;margin-top:12px}.roster-row{display:grid;grid-template-columns:1fr auto;gap:12px;border-top:1px solid #edf1f2;padding:14px 0}.roster-row strong{display:block}.roster-row small{display:block;color:#71868f;margin-top:3px}.roster-row p{font-size:12px;margin:5px 0 0}.roster-row button{font-size:12px;padding:8px 10px}.empty{padding:20px 0;color:#78909a}.night-color-dot{height:9px;width:9px;border-radius:99px;background:var(--night);display:inline-block;margin-right:5px}footer{display:flex;justify-content:center;align-items:center;gap:8px;color:#8799a2;font-size:11px;margin:35px 0 10px}footer button{border:0;background:none;color:#64808a;font-size:11px;text-decoration:underline}.row{display:flex;gap:8px;flex-wrap:wrap}.hidden-file{display:none}
@media(max-width:720px){.header-inner{padding:14px 15px;flex-wrap:wrap}.brand-copy small{max-width:240px}.main-nav{width:100%;justify-content:space-around}.nav-button{flex:1}.page{padding:23px 15px}.night-heading{padding:14px 12px;gap:10px}.night-jobs{padding:0 14px 10px 18px}.night-count{font-size:11px}.day-thumbnail{display:none!important}.job{gap:9px}.job-symbol{width:34px;height:34px}.job-action{padding:9px}.job-description{font-size:12px}.night-label strong{font-size:15px}.admin-top{display:block}.admin-identity{margin-top:9px}.metrics{gap:6px}.metric{padding:13px}.metric b{font-size:21px}.admin-controls{flex-wrap:wrap}.admin-tabs{overflow:auto}.section-heading{flex-wrap:wrap}.shift-row{flex-wrap:wrap}.shift-row .shift-description{flex-basis:60%}.roster-row{display:block}.roster-row .inline-actions{margin-top:8px}.edit-grid{grid-template-columns:1fr}}

/* v0.4: graphic day-tabs grouped by weekend */
.weekend-block{margin:25px 0 30px}.weekend-title{font-size:15px;letter-spacing:1.4px;color:#365e6b;margin:0 0 13px;font-weight:900}.date-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.date-tab{background:#fff;border:2px solid #dce6e9;border-radius:12px;overflow:hidden;padding:0;text-align:left;color:#173b4b;box-shadow:0 3px 10px #0d344712;transition:border-color .15s,transform .15s}.date-tab:hover{border-color:var(--night);transform:translateY(-2px)}.date-tab.chosen{border-color:var(--night);box-shadow:0 0 0 2px var(--night),0 5px 20px #203c4420}.date-art{display:block;width:100%;aspect-ratio:16/9;background:#070509;overflow:hidden}.date-art img{width:100%;height:100%;object-fit:cover;display:block}.date-fallback{display:grid;place-items:center;height:100%;font-size:18px;font-weight:900;color:white;background:linear-gradient(130deg,#153a48,var(--night))}.date-info{display:flex;gap:6px;justify-content:space-between;align-items:center;padding:11px 12px;border-top:5px solid var(--night)}.date-info strong{font-size:12px}.date-info>span{font-size:11px;color:#5d7781;white-space:nowrap}.choose-date-hint{color:#728895;font-size:13px;margin:10px 3px 0}.selected-night{margin:12px 0 0;border:1px solid var(--night);border-top:8px solid var(--night);background:color-mix(in srgb,var(--night) 10%,white);border-radius:12px;padding:17px 22px}.selected-night-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.selected-night-top h3{margin:0 0 7px}.selected-night-top .eyebrow{color:#31515b}.night-jobs-v4{background:#fff;border:1px solid #e0e8e9;border-radius:9px;padding:0 17px}.night-jobs-v4 .job:first-child{border-top:0}.job-symbol{width:53px;height:53px}.job-symbol .icon{width:30px;height:30px}.attendance-questions{border:1px solid #c9dfe1;background:#f3f9f9;border-radius:12px;padding:19px;margin:6px 0 19px}.attendance-questions legend{font-weight:850;padding:0 5px;color:#15485b}.attendance-questions .event-time{margin:2px 0 17px;font-size:14px;line-height:1.55}.attendance-questions .commitment{padding:11px 4px;margin:0;line-height:1.5;font-size:14px}.attendance-questions .check-label input{width:20px;height:20px;flex:none}.attendance-questions #celebrationPeople{margin:8px 0 10px 28px;max-width:240px}
@media(max-width:760px){.date-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.date-info{display:block}.date-info>span{display:block;margin-top:4px}.selected-night{padding:12px}.night-jobs-v4{padding:0 11px}.job-symbol{width:45px;height:45px}.job-symbol .icon{width:26px;height:26px}}
@media(max-width:390px){.date-info strong{font-size:11px}.date-art{aspect-ratio:16/10}}

/* v0.5 CCA brand palette, compact adaptive header and accessible event chooser */
:root{color:#353638;background:#f7f7f6;--brand-charcoal:#555557;--brand-gold:#f8ac17}
.site-header{background:#555557;color:white;border-bottom:4px solid var(--brand-gold)}
.header-inner{min-height:76px;max-width:1100px;padding:8px 22px;gap:12px}
.brand-icon-link{display:flex;align-items:center;flex:none;border-radius:8px}
.brand-icon{width:40px;height:57px;object-fit:contain;display:block}
.brand-copy{gap:2px;min-width:0}
.brand-copy strong{font-size:clamp(15px,2vw,19px);line-height:1.2;letter-spacing:-.3px}
.brand-copy small{font-size:11px;color:#ededed}
.nav-button{color:#fff}
.nav-button.selected,.nav-button:hover{background:#f8ac17;color:#242424}
.eyebrow{color:#a56700}
.primary{background:#555557;color:#fff}
.primary:hover{background:#383839}
.subtle{border-color:#d0cbc0;color:#4c4c4c}
.subtle:hover{background:#fff7e4;border-color:#f8ac17}
.job-action{color:#5b481d;border-color:#c9c7be}
.job-action:hover{border-color:#f8ac17;background:#fff8e7}
.back-link,.text-button{color:#7f5900}
.admin-tabs button.active{color:#595959;border-bottom-color:var(--brand-gold)}
input:focus,select:focus,textarea:focus{outline-color:#f6c360;border-color:#f6b72d}
.job-symbol{color:#555557;background:#f9f1df}
.job-symbol .icon{width:36px;height:36px;stroke-width:1.8}
.page-intro{margin:10px 0 22px}
.event-chooser h2{margin-bottom:15px}
.event-choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.event-choice{display:flex;flex-direction:column;gap:7px;background:white;border:1px solid #d9d9d9;border-left:6px solid var(--brand-gold);border-radius:12px;padding:23px;text-align:left;color:#333}
.event-choice:hover,.event-choice:focus-visible{border-color:#e3a32a;background:#fff9ed}
.event-choice strong{font-size:19px}
.event-choice span{font-size:13px;color:#776239}
.weekend-title{color:#585858}
@media(max-width:720px){.header-inner{padding:8px 15px;flex-wrap:wrap;gap:6px 10px}.brand-icon{width:34px;height:48px}.brand-copy{flex:1}.brand-copy strong{font-size:15px}.main-nav{margin-top:3px}.job-symbol .icon{width:29px;height:29px}}

/* v0.6: regular nights aligned in consistent three-column rows at every width. */
.lightfest-schedule .weekend-block{margin:19px 0 22px}
.lightfest-schedule .date-tabs{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.lightfest-schedule .special-block{margin:8px 0 18px}
.lightfest-schedule .special-block .date-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.lightfest-schedule .date-row{width:100%;min-width:0}
.lightfest-schedule .special-divider{height:1px;background:#d7d7d7;margin:15px 0}
.lightfest-schedule .special-block .special-divider:first-child{margin-top:0}
.lightfest-schedule .date-tab{min-width:0}
.lightfest-schedule .date-info{display:flex;flex-wrap:wrap;gap:3px 10px;align-items:baseline;justify-content:space-between}
.lightfest-schedule .date-art{aspect-ratio:16/9}
.lightfest-schedule .date-art img{object-fit:cover}
.lightfest-schedule .choose-date-hint{display:none}
/* Original CCA Serve alternate mark, recreated as a transparency-safe SVG for dark header. */
.site-header{background:#414143;border-bottom-color:#f6ae15}
.brand-icon{width:38px;height:52px;object-fit:contain}
/* Orange/gold actionable buttons: bold white text and darkened orange for contrast. */
.primary,.nav-button.selected,.nav-button:hover{background:#a85f00;color:#fff;font-weight:800}
.primary:hover{background:#874d00;color:#fff}
.nav-button.selected:hover{background:#874d00}
@media(max-width:760px){
 .lightfest-schedule .date-tabs{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
 .lightfest-schedule .special-block .date-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .lightfest-schedule .date-info{padding:7px 6px;border-top-width:4px;display:block}
 .lightfest-schedule .date-info strong{display:block;font-size:clamp(9px,2.2vw,12px)}
 .lightfest-schedule .date-info>span{display:block;font-size:clamp(9px,2vw,11px);margin-top:3px;white-space:normal}
 .lightfest-schedule .date-art{aspect-ratio:16/9}
 .lightfest-schedule .weekend-title{font-size:13px;margin-bottom:9px}
 .lightfest-schedule .special-divider{margin:11px 0}
}
@media(max-width:390px){.lightfest-schedule .date-tabs{gap:5px}.lightfest-schedule .special-block .date-tabs{gap:6px}.lightfest-schedule .date-art{aspect-ratio:16/9}}

/* v0.6.1: visual weight parity for special nights and restore original CCA gold. */
:root{--brand-gold:#f8ac17}
/* The user explicitly wants the existing orange/gold, NOT brown. */
.primary,.nav-button.selected,.nav-button:hover{background:var(--brand-gold);color:#fff;font-weight:800;text-shadow:0 1px 2px rgba(82,47,0,.62)}
.primary:hover,.nav-button.selected:hover{background:#ee9f08;color:#fff}
.primary:focus-visible,.nav-button:focus-visible{outline:3px solid #fff;outline-offset:2px}
/* Equal widths and exactly equal card heights, even on phones. */
.lightfest-schedule .special-block .date-tabs{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;gap:12px}
.lightfest-schedule .special-block .date-tab{width:100%;height:100%;display:flex;flex-direction:column;min-width:0;align-self:stretch}
.lightfest-schedule .special-block .date-art{width:100%;flex:none;aspect-ratio:16/9;overflow:hidden}
.lightfest-schedule .special-block .date-art img{width:100%;height:100%;object-fit:cover}
.lightfest-schedule .special-block .date-info{flex:1;min-height:39px}
@media(max-width:760px){.lightfest-schedule .special-block .date-tabs{gap:8px}.lightfest-schedule .special-block .date-info{min-height:48px}}


/* v0.6.2 — Each special-night card is exactly the SAME WIDTH as a regular
   Friday/Saturday/Sunday card, not half of the page. Center the two cards
   without leaving an entire empty third column on only one side.
   One --lightfest-gap controls both rows at every viewport width. */
.lightfest-schedule { --lightfest-gap: 12px; }
.lightfest-schedule .date-tabs { gap: var(--lightfest-gap); }
.lightfest-schedule .special-block .date-tabs {
  display: flex;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: stretch;
  gap: var(--lightfest-gap);
}
.lightfest-schedule .special-block .date-tab {
  box-sizing: border-box;
  flex: 0 0 calc((100% - 2 * var(--lightfest-gap)) / 3);
  width: calc((100% - 2 * var(--lightfest-gap)) / 3);
  max-width: calc((100% - 2 * var(--lightfest-gap)) / 3);
  min-width: 0;
}
@media (max-width: 760px) {
  .lightfest-schedule { --lightfest-gap: 6px; }
}
@media (max-width: 390px) {
  .lightfest-schedule { --lightfest-gap: 5px; }
}

/* v0.6.3: distinct Kids Night / Thursday pair; preserve the exact same
   card width as the Friday-Saturday-Sunday grids at every viewport. */
.lightfest-schedule .special-block { margin-top: 24px; margin-bottom: 28px; }
.lightfest-schedule .special-block .special-divider { margin: 18px 0; background: #c7c7c7; }
.lightfest-schedule .special-block .date-tabs {
  position:relative;
  --special-gap: clamp(20px,3vw,36px);
  gap: var(--special-gap);
}
.lightfest-schedule .special-block .date-tabs::after {
  content:"";position:absolute;left:50%;top:50%;height:2px;
  width:calc(var(--special-gap) - 8px);background:#b7b7b7;
  transform:translate(-50%,-50%);pointer-events:none;border-radius:2px;
}
/* Both buttons stay one grid-column wide, centered. The separator occupies
   the unused middle-column space without changing the cards' width. */
.intro-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.intro-top h1{margin-bottom:0}
.countdown-panel{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.countdown-chip{display:flex;gap:9px;align-items:center;border:1px solid #e5dfd5;background:#fff;
  border-radius:10px;padding:7px 10px;white-space:nowrap;min-width:0}
.countdown-value{font-size:24px;font-weight:850;line-height:1.1;color:#504a43;font-variant-numeric:tabular-nums}
.countdown-meta{display:flex;flex-direction:column;gap:2px}
.countdown-meta strong{font-size:11px;color:#444;font-weight:750}
.countdown-meta small{font-size:10px;color:#777}
.page-intro .intro-top+p{margin-top:9px}
@media(max-width:700px){
  .intro-top{align-items:flex-start;gap:10px}
  .countdown-panel{width:100%;justify-content:flex-start}
  .countdown-chip{padding:6px 9px}
  .countdown-value{font-size:20px}
  .lightfest-schedule .special-block{margin-top:17px;margin-bottom:19px}
  .lightfest-schedule .special-block .special-divider{margin:13px 0}
  .lightfest-schedule .special-block .date-tabs{--special-gap: 15px}
}
@media(max-width:360px){.countdown-chip{flex:1;white-space:normal}}

/* v0.6.4 — Special nights are still precisely one regular card wide.
   Center the pair with extra space, dividing the gap VERTICALLY. */
.lightfest-schedule .special-block { margin-top: 29px; margin-bottom: 33px; }
.lightfest-schedule .special-block .special-divider { margin: 0; display:none; }
.lightfest-schedule .special-block .date-tabs { --special-gap:clamp(32px,5vw,70px); }
.lightfest-schedule .special-block .date-tabs::after {
  left:50%; top:13%; width:2px; height:74%;
  border-radius:2px; background:#c9c2b5;transform:translateX(-50%);
}
/* Two compact, branded countdowns: number + Days; purpose/date grouped separately. */
.countdown-panel { gap:10px; }
.countdown-chip { border-radius:11px; gap:12px; padding:10px 12px;white-space:normal;min-height:72px; }
.countdown-chip.training { background:#fff6dc;border:1px solid #eec95e; }
.countdown-chip.lightfest { background:#e8f8f9;border:1px solid #9ddde1; }
.countdown-quantity { display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:46px;line-height:1; }
.countdown-value { font-size:30px;font-weight:850;color:#3f3f40;line-height:1.05; }
.countdown-quantity small {font-size:11px;line-height:1.2;font-weight:750;letter-spacing:.03em;color:#68635d;}
.countdown-meta {gap:4px;max-width:194px;}
.countdown-meta strong { font-size:12px;line-height:1.3;color:#3d3d3d;font-weight:800; }
.countdown-meta small {font-size:11px;line-height:1.35;color:#595959;}
@media(max-width:700px){
  .lightfest-schedule .special-block { margin-top:22px;margin-bottom:25px; }
  .lightfest-schedule .special-block .date-tabs {--special-gap:clamp(17px,4vw,32px);}
  .countdown-panel {width:100%;justify-content:flex-start;}
  .countdown-chip {flex:1 1 190px;padding:9px 10px;}
  .countdown-value {font-size:27px;}
}

/* v0.7.0 – ample space for the independent night cards without altering
   their calculated one-third width; separator centered between them. */
.lightfest-schedule .special-block{margin-top:40px;margin-bottom:42px}
.lightfest-schedule .special-block .date-tabs{--special-gap:clamp(42px,7vw,100px)}
.lightfest-schedule .special-block .date-tabs::after{
  left:50%;top:50%;width:2px;height:58%;background:#b9c2c8;
  transform:translate(-50%,-50%);border-radius:2px
}
.countdown-chip.need{background:#f6f3e8;border-color:#dbc679}
.age-picker,.youth-policy{border:1px solid #d7e0e5;border-radius:11px;padding:12px 15px;margin:12px 0;background:#fbfcfd}
.age-picker legend,.youth-policy legend{font-weight:800;padding:0 5px}
.age-picker .check-label,.youth-policy .check-label{margin:8px 0;display:flex;align-items:flex-start;gap:8px}
.guardian-panel{border-left:4px solid #f3b325;padding:12px 16px;background:#fffcf4;border-radius:6px;margin:12px 0}
.guardian-panel label{margin:10px 0}
@media(max-width:760px){
 .lightfest-schedule .special-block{margin-top:29px;margin-bottom:31px}
 .lightfest-schedule .special-block .date-tabs{--special-gap:clamp(20px,5vw,45px)}
}


/* v0.7.1 — keep the invitation together; separate small right-side statistics.
   Overrides legacy .intro-top and countdown rules without touching shift cards. */
.page-intro.intro-summary{
 display:grid;grid-template-columns:minmax(225px, 1fr) minmax(0, 1.65fr);
 align-items:center;gap:clamp(16px,2.5vw,30px);margin:13px 0 26px;
}
.intro-summary .intro-copy{min-width:0;display:flex;flex-direction:column;justify-content:center;gap:9px}
.intro-summary .intro-copy h1{margin:0;font-size:clamp(27px,3.2vw,36px);line-height:1.14}
.intro-summary .intro-copy p{margin:0;color:#65707b;font-size:14px;line-height:1.45;max-width:360px}
.intro-summary .countdown-panel{display:flex;flex-wrap:nowrap;align-items:stretch;justify-content:flex-end;gap:8px;min-width:0;width:100%}
.intro-summary .countdown-panel.hide{display:none}
.intro-summary .countdown-chip{
 flex:1 1 0;min-width:0;min-height:94px;max-width:none;
 display:flex;flex-direction:column;justify-content:center;align-items:center;
 text-align:center;gap:5px;padding:11px 8px;border-radius:11px;white-space:normal;
}
.intro-summary .countdown-quantity{display:flex;flex-direction:column;align-items:center;min-width:0;gap:0}
.intro-summary .countdown-value{font-size:clamp(24px,2.7vw,33px);line-height:1;color:#3f3f40}
.intro-summary .countdown-quantity small{font-size:10px;text-transform:uppercase;letter-spacing:.07em;font-weight:800}
.intro-summary .countdown-meta{display:flex;flex-direction:column;gap:3px;max-width:100%;min-width:0}
.intro-summary .countdown-meta strong{font-size:11px;line-height:1.18;font-weight:800}
.intro-summary .countdown-meta small{font-size:10px;line-height:1.25}
.intro-summary .countdown-chip.need{background:#414143;border-color:#414143}
.intro-summary .countdown-chip.need .countdown-value{color:#ffb81c}
.intro-summary .countdown-chip.need .countdown-meta strong{color:#ffb81c}
.intro-summary .countdown-chip.need .countdown-meta small{color:#f5f0e7}
@media(max-width:880px){
 .page-intro.intro-summary{grid-template-columns:1fr;gap:14px}
 .intro-summary .intro-copy p{max-width:100%}
 .intro-summary .countdown-panel{justify-content:flex-start}
 .intro-summary .countdown-chip{min-height:80px}
}
@media(max-width:420px){
 .intro-summary .countdown-panel{gap:5px}
 .intro-summary .countdown-chip{padding:9px 4px}
 .intro-summary .countdown-meta strong{font-size:10px}
 .intro-summary .countdown-meta small{font-size:9px}
 .intro-summary .countdown-value{font-size:25px}
}

/* v0.8.0: family and coordinator planning */
.family-child{padding:16px;border:1px solid #d7d7d7;border-radius:10px;margin:12px 0;background:#fff;display:grid;gap:10px}
.family-child .check-label{margin:0}.family-edit{margin-top:16px}.family-edit .family-child{background:#f9fafb}
#teamEditor form,#dateEditor{display:grid;gap:14px}#notificationForm .check-label{display:flex;align-items:center;gap:12px}
@media(max-width:640px){.family-child{padding:12px}.admin-tabs{overflow-x:auto;white-space:nowrap}}

.family-child-signup{margin-left:clamp(12px,3vw,36px);border-left:4px solid #f8ac17}

/* v0.9.0: consistent signed-in navigation, accessible approvals, roster flags. */
#adminLogin.hide,#linkForm.hide,#signOut.hide{display:none!important}
.approval-help{display:inline-flex;color:#755000;font-weight:700;border-bottom:1px dotted #a37b23;cursor:help}
.staff-password{display:flex;flex-wrap:wrap;align-items:end;gap:8px;margin-top:12px}
.staff-password label{min-width:160px;flex:1}.staff-password input{width:100%}
.admin-tabs [data-admin-tab="roster"]{white-space:nowrap}
.roster-row small{display:block;line-height:1.5}
@media(max-width:650px){.staff-password{display:block}.staff-password button{margin-top:10px}}

/* v0.9 final readability */
.intro-summary .countdown-chip.need .countdown-meta strong{color:#ffffff}

/* v1.0 — compact staff actions and saved-person interfaces */
.admin-controls{flex-wrap:wrap;gap:10px}.admin-controls #newEventTop,.admin-controls #copyEventTop{white-space:nowrap}
.saved-lookup{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:6px 0 14px}.saved-lookup select{max-width:320px}
.profiles-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin-top:14px}.profile-mini{display:flex;flex-direction:column;padding:12px;border:1px solid #d5dee2;border-radius:9px;gap:5px}.profile-mini small{color:#565f62}
.future-notify{margin:15px 0}.main-nav #headerLogout{border:1px solid rgba(255,255,255,.35);background:transparent;color:white;font-weight:700}.main-nav #headerLogout:hover{background:rgba(255,255,255,.16)}
@media(max-width:650px){.admin-controls{display:flex;gap:7px}.admin-controls .event-picker{flex-basis:100%}.main-nav #headerLogout{font-size:12px;padding:5px}.saved-lookup select{max-width:100%}}

/* v1.1 release: event dialogs, accessible warnings, and opt-in public teammates */
.event-modal{border:0;border-radius:16px;width:min(92vw,530px);max-height:85vh;overflow:auto;padding:0;box-shadow:0 14px 60px #1116;background:#fff;color:#262626}
.event-modal::backdrop{background:rgba(0,0,0,.56)}.event-modal .modal-body{padding:25px}.event-modal .modal-x{float:right;border:0;background:transparent;font-size:30px;cursor:pointer}.event-modal h2{margin-top:2px}.event-modal form{display:grid;gap:15px}.event-modal .primary{font-weight:700}.role-friendly{margin-top:6px;font-size:.88rem;color:#3c5556}.public-teammates{font-size:.85rem;color:#37535a;margin:5px 0 0}.roster-row p{margin:5px 0}.night-jobs-v4 .job .public-teammates{font-weight:600}

.modal-actions{display:flex;justify-content:flex-end;gap:12px;flex-wrap:wrap}.modal-actions button{font-weight:700}.event-modal .modal-body p{line-height:1.5}

.role-friendly-inline{font-size:.88em;font-weight:750;color:#2f5553;white-space:normal}
#duplicateDialog{z-index:1200}
#savedPersonPicker{margin-bottom:10px}

/* v1.3: names belong immediately beside the availability indicator, not beneath the summary. */
.job-meta .public-teammates{margin:0;font-size:12px;font-weight:600;color:#456273;display:inline;line-height:1.45;min-width:0;overflow-wrap:anywhere}
.youth-policy-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px 18px}
.youth-policy-grid .check-label{padding:8px 10px;border:1px solid #dce6e9;border-radius:9px;background:white;margin:0;cursor:pointer}
.youth-policy-grid .check-label strong{display:block;color:#213e48;font-size:14px}
.youth-policy-grid .check-label small{display:block;font-size:11px;color:#5d7680;font-weight:400;line-height:1.4}
#duplicateDialog{position:fixed;z-index:9999;max-width:min(94vw,540px);margin:auto;border:1px solid #d4e0e4;border-radius:15px;box-shadow:0 25px 65px #0005}
#duplicateDialog::backdrop{background:#17282eb8}

/* v1.3.1: compact right-aligned roster attendance status */
.roster-row{grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:24px}
.roster-right{display:flex;flex-direction:column;align-items:flex-end;gap:13px;min-width:245px}
.attendance-tags{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.attendance-tag{display:inline-flex;align-items:center;gap:7px;padding:5px 10px 5px 6px;border-radius:999px;border:1px solid transparent;white-space:nowrap;font-size:12px;font-weight:800;line-height:1.2}
.attendance-tag.attending{background:#e9f5ed;color:#215f3c;border-color:#bce0c8}
.attendance-tag.not-attending{background:#fff0ed;color:#954438;border-color:#eec9c2}
.attendance-tag-icon{display:grid;place-items:center;width:29px;height:29px;border-radius:50%;background:currentColor;color:inherit;font-size:22px;font-weight:900;line-height:1}
.attendance-tag-icon::first-letter{color:inherit}
.attendance-tag.attending .attendance-tag-icon{background:#246c43;color:white}
.attendance-tag.not-attending .attendance-tag-icon{background:#a04439;color:white}
.roster-right .inline-actions{justify-content:flex-end;max-width:335px}
@media(max-width:720px){.roster-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.roster-right{min-width:0}.attendance-tags{flex-direction:column;align-items:stretch}.attendance-tag{justify-content:flex-start}.roster-right .inline-actions{margin-top:0;justify-content:flex-end}.roster-right .inline-actions button{padding:6px 8px}}
@media(max-width:520px){.roster-row{grid-template-columns:minmax(0,1fr)}.roster-right{align-items:flex-start;gap:9px}.attendance-tags{flex-direction:row;justify-content:flex-start}.roster-right .inline-actions{justify-content:flex-start}}

/* v1.4: central links grid */
.link-hub{padding:16px}.links-scroll{width:100%;overflow:auto;max-height:75vh;border:1px solid #dce7e9;border-radius:10px}.links-table{border-collapse:separate;border-spacing:0;min-width:1450px;width:max-content;font-size:13px}.links-table th,.links-table td{border-bottom:1px solid #e1e8ec;border-right:1px solid #e7ecee;padding:10px;vertical-align:top;background:#fff}.links-table thead th{position:sticky;top:0;background:#eaf2f4;z-index:2;text-align:left;white-space:nowrap}.links-table tbody th{position:sticky;left:0;min-width:175px;max-width:220px;z-index:1;background:#f6fafb;text-align:left}.links-table th small{display:block;color:#64777d;font-weight:normal;margin-top:4px}.links-table td input{width:200px;max-width:200px;box-sizing:border-box;font-size:12px;padding:8px;margin:0 0 5px}.links-table td input.video-label{font-size:11px;background:#fafcfc}.links-table .links-feedback{display:block;max-width:145px;white-space:normal;margin-top:6px;font-size:11px;color:#315e62}.links-table tbody tr:nth-child(even) td{background:#fbfdfd}

/* v1.4.1: visible link management and named resource anchors */
.links-table .named-video-link{display:block;font-size:12px;font-weight:750;color:#13657b;margin-bottom:8px;max-width:205px;white-space:normal;text-decoration:underline;text-underline-offset:2px}.links-table .named-video-link[aria-disabled="true"]{color:#8299a0;text-decoration:none;pointer-events:none}.links-table td input.video-label{background:#f0f8fa;font-weight:650}.admin-tabs{flex-wrap:wrap}.admin-tabs [data-admin-tab="links"]{color:#125b70;font-weight:850}

/* v1.4.2: intentionally simple two-field links editor; no matrix */
.links-job-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:14px;margin-top:14px}
.links-job{border:1px solid #dce6e9;border-radius:12px;padding:16px;background:#fff;min-width:0}
.links-job-heading,.links-job-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.links-job-heading{margin-bottom:14px}.links-job-heading h3{margin:0;font-size:16px}.links-job-heading small,.links-job-count{font-size:12px;color:#65777c}
.links-entries{display:flex;flex-direction:column;gap:10px}.links-entry{border:1px solid #e0e9eb;border-radius:8px;padding:10px;background:#f9fcfd}
.link-entry-inputs{display:flex;flex-direction:column;gap:7px}.link-entry-inputs label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:650;color:#495e66}
.link-entry-inputs input{min-width:0;width:100%;box-sizing:border-box;padding:9px;font-size:13px;margin:0}
.links-entry-actions{display:flex;justify-content:flex-end;align-items:center;gap:9px;margin-top:5px;font-size:12px}
.links-job-footer{margin-top:12px}.links-feedback{font-size:12px;color:#315e62;flex:1}

/* v1.4.4 roster categories */
.roster-view-controls{display:flex;align-items:end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}.roster-view-controls label{min-width:175px}.roster-view-controls select{margin:4px 0 0}.roster-view-controls #rosterCounts{font-size:13px;color:#66757d;font-weight:650;margin-bottom:8px}.roster-inactive{opacity:.62}.roster-inactive .attendance-tag.inactive{background:#eef0f2;border-color:#d7dce0;color:#6b747e}.roster-inactive .attendance-tag.inactive .attendance-tag-icon{background:#78818a;color:white}.roster-inactive .roster-right .danger{opacity:1}
