@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Libre+Caslon+Display&display=swap');
:root{--blue:#1c4e80;--ink:#203c59;--muted:#6c7f91;--line:#dfe7f0;--paper:#f4f8fc;--accent:#5894c7;--soft:#e9f2fb}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:14px}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #3685cc;outline-offset:3px}.draft-bar{background:var(--blue);color:#eff6ff;text-align:center;font-size:9px;font-weight:600;letter-spacing:1.5px;padding:9px 16px}.draft-bar span{font-size:10px;letter-spacing:.2px;font-weight:400;opacity:.8;margin-left:18px}.site-header{max-width:1180px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:32px 40px;border-bottom:1px solid var(--line)}.identity{display:flex;align-items:center;gap:15px;color:var(--blue);text-decoration:none}.church-mark{font-size:42px;font-weight:400;border-right:1px solid #d1deeb;padding-right:17px}.church-name{font-family:Georgia,serif;font-size:10px;line-height:1.3;letter-spacing:1px}.church-name strong{font-size:18px;font-weight:400;letter-spacing:.4px}.ward-label{font-weight:600;font-size:13px;text-align:right}.ward-label span{display:block;font-size:11px;color:var(--muted);font-weight:400;margin-top:5px}main{max-width:1100px;margin:54px auto 45px;display:grid;grid-template-columns:1fr 1.04fr;gap:70px;align-items:start;padding:0 28px}.welcome{padding:22px 0 0}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:650;display:flex;align-items:center;gap:9px}.eyebrow>span{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent)}h1{font-family:'Libre Caslon Display',Georgia,serif;font-weight:400;font-size:69px;line-height:1.02;letter-spacing:-1.8px;margin:26px 0 22px}h1 em{font-weight:400;color:#477fad}.intro{max-width:332px;color:#647a8e;font-size:14px;line-height:1.85}.season{display:flex;align-items:center;gap:13px;margin-top:32px;font-size:12px;font-weight:550}.season svg{width:36px;height:36px;padding:8px;border:1px solid #d9e5f0;border-radius:9px}.season span{display:block;color:var(--muted);font-size:10px;font-weight:400;margin-top:5px}.landscape{margin-top:25px;overflow:hidden;border-radius:100px 100px 10px 10px}.landscape svg{display:block;width:100%;height:auto}.welcome-note{font-family:Georgia,serif;font-style:italic;font-size:14px;text-align:center;color:#69819a;margin-top:22px}.welcome-note span{font-family:'DM Sans',sans-serif;font-size:8px;letter-spacing:1.6px;font-style:normal;display:block;margin-top:12px}.booking-card{background:#fff;border:1px solid #dce6f0;border-radius:18px;padding:30px;box-shadow:0 10px 35px #173c6408}.card-heading{display:flex;justify-content:space-between;gap:10px;align-items:center;padding-bottom:25px;border-bottom:1px solid var(--line)}.card-heading .eyebrow{color:#6986a0;font-size:8px;letter-spacing:1.5px}h2{font-family:'Libre Caslon Display',Georgia,serif;font-weight:400;font-size:30px;letter-spacing:-.5px;margin:8px 0 0}.duration{border:1px solid #dfe7f0;border-radius:20px;padding:6px 10px;font-size:10px;white-space:nowrap;color:#607991}.form-section{margin-top:23px}.section-heading{display:flex;align-items:center;gap:9px;margin-bottom:19px}.number{width:22px;height:22px;border-radius:50%;background:var(--soft);color:#4978a2;font-size:10px;display:grid;place-items:center}h3{font-size:13px;font-weight:600;margin:0}label{display:block;font-size:11px;font-weight:550;margin-bottom:8px}input,select,textarea{width:100%;border:1px solid #d8e3ee;border-radius:7px;background:#fff;padding:12px 11px;color:var(--ink);font-size:12px;min-height:43px}input::placeholder,textarea::placeholder{color:#8b9cae}select{padding-right:25px}.details-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:17px}.calendar{border:1px solid var(--line);padding:12px 14px 10px;border-radius:9px}.month-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.month-nav h4{font-size:12px;margin:0;font-weight:600}.icon-button{border:0;background:transparent;color:var(--blue);font-size:23px;width:32px;height:32px;border-radius:7px;line-height:1}.icon-button:hover{background:var(--soft)}.icon-button:disabled{color:#c5d1df;cursor:default}.calendar-week,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center;gap:4px}.calendar-week{font-size:9px;color:#7a91a5;margin:0 0 7px}.calendar-days button{height:32px;border:0;background:#e9f2fc;border-radius:6px;color:#285f91;font-size:11px;font-weight:550}.calendar-days button:hover:enabled{background:#d6e8f9}.calendar-days button:disabled{background:transparent;color:#aebdcd;font-weight:400;cursor:default}.calendar-days button.selected{background:var(--blue);color:white}.calendar-legend{border-top:1px solid #edf2f8;margin-top:10px;padding-top:10px;color:#74899d;font-size:8px;display:flex;align-items:center;gap:5px}.calendar-legend span,.calendar-legend i{width:7px;height:7px;border-radius:2px;background:#deecfb}.calendar-legend i{background:var(--blue);margin-left:10px}.time-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:19px 0 10px}.time-heading label{margin:0}.time-heading>span{font-size:9px;color:var(--muted)}.time-slots{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.time-slots button{padding:11px 2px;background:#fff;border:1px solid #d8e3ee;border-radius:7px;color:#406b93;font-size:10px}.time-slots button.selected{background:var(--soft);border-color:#377cb8;color:var(--blue);font-weight:600}.time-slots p{grid-column:1/-1;font-size:11px;color:var(--muted);margin:3px 0}.timezone{font-size:9px;color:#778b9e;margin:10px 0 0}.primary-button{background:var(--blue);color:#fff;border:0;border-radius:8px;padding:15px 17px;width:100%;font-size:12px;font-weight:500;display:flex;align-items:center;justify-content:space-between}.primary-button:hover{background:#163f6a}.primary-button span{font-size:17px;font-weight:400}.form-message{font-size:11px;line-height:1.6;color:#9a4b2d;margin:14px 0;min-height:0}.form-message:empty{margin-top:21px;margin-bottom:0}.privacy-note{font-size:9px;color:#778b9e;display:flex;align-items:center;justify-content:center;gap:5px;margin:13px 0 0}.privacy-note svg{width:12px;height:12px}footer{max-width:1100px;margin:0 auto;padding:22px 28px 32px;border-top:1px solid var(--line);display:flex;justify-content:space-between;color:#7d8fa2;font-size:10px}footer i{font-style:normal;margin:0 7px}footer button{border:0;background:none;font-size:10px;color:#52769a;padding:0}footer button span{margin-left:7px}dialog{width:min(550px,calc(100% - 24px));max-height:90dvh;padding:27px;border:1px solid var(--line);border-radius:17px;color:var(--ink);box-shadow:0 20px 100px #173c6433}dialog::backdrop{background:#153756c0;backdrop-filter:blur(5px)}.admin-header{display:flex;justify-content:space-between;align-items:center}.admin-header .eyebrow{font-size:8px;color:var(--muted)}.admin-note{font-size:12px;line-height:1.7;background:var(--soft);padding:12px;border-radius:8px;margin:20px 0}.help{font-size:10px;line-height:1.7;color:var(--muted);margin:7px 0 17px}#admin-form h3{margin-top:24px}#admin-form>label{margin-top:20px}.weekly-row{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;gap:10px;margin:12px 0}.weekly-row label{display:flex;align-items:center;gap:6px;margin:0}.weekly-row input[type=checkbox]{min-height:0;width:auto;accent-color:var(--blue)}.weekly-row input[type=time]{padding:9px 5px;font-size:11px}.bookings-title{margin:25px 0 10px}.booking-record{padding:12px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:10px;font-size:11px;line-height:1.7}.booking-record button{border:1px solid var(--line);border-radius:5px;background:white;color:#985141;font-size:10px;align-self:center;padding:8px}.booking-record small{display:block;color:var(--muted)}.success-icon{width:54px;height:54px;border-radius:50%;background:var(--soft);display:grid;place-items:center;font-size:25px;margin:30px auto 16px}#confirmation{text-align:center}#confirmation h3{font-family:'Libre Caslon Display',Georgia,serif;font-size:32px;font-weight:400}#confirmation p{font-size:12px;color:var(--muted);line-height:1.8}#confirmation .confirmation-details{text-align:left;background:var(--paper);padding:20px;margin:25px 0;border-radius:8px;font-size:13px;line-height:2}#confirmation .confirmation-details span{display:block;color:var(--muted);font-size:11px}.reset-button{border:0;background:none;color:var(--blue);text-decoration:underline;padding:15px;font-size:11px}[hidden]{display:none!important}
@media(min-width:1400px){main{margin-top:70px;gap:90px}}@media(max-width:800px){.site-header{padding:24px}.ward-label{font-size:11px}main{gap:28px;padding:0 22px}h1{font-size:56px}.booking-card{padding:22px}.details-grid{grid-template-columns:1fr}.time-slots{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.draft-bar{font-size:8px;padding:8px}.draft-bar span{font-size:8px;margin-left:9px;letter-spacing:0}.site-header{padding:20px}.church-mark{font-size:33px;padding-right:11px}.identity{gap:10px}.church-name{font-size:8px}.church-name strong{font-size:14px}.ward-label{font-size:10px;max-width:110px}.ward-label span{font-size:9px}main{display:block;margin:28px auto 28px;padding:0 18px;max-width:460px}.welcome{position:relative;padding:0}.welcome .eyebrow{font-size:8px;letter-spacing:1.6px}h1{font-size:49px;margin:18px 0 14px;line-height:1.04;letter-spacing:-1px}h1 br:nth-of-type(2){display:none}h1 em{display:block}.intro{font-size:12px;line-height:1.8;max-width:310px;margin-bottom:0}.season{margin:20px 0 26px;font-size:11px;gap:10px}.season span{font-size:9px}.season svg{width:32px;height:32px}.landscape,.welcome-note{display:none}.booking-card{padding:23px 20px;border-radius:14px;box-shadow:0 8px 24px #173c6408}h2{font-size:28px}.card-heading{padding-bottom:21px}.details-grid{grid-template-columns:1fr;gap:17px}.form-section{margin-top:22px}.calendar-days button{height:36px}.time-slots{grid-template-columns:repeat(2,1fr)}.time-slots button{font-size:11px;padding:12px}.calendar-legend{font-size:9px}.time-heading>span{font-size:9px}.privacy-note{font-size:9px}.primary-button{padding:16px}.timezone{font-size:9px}footer{margin:0 20px;padding:20px 0 26px;font-size:9px;gap:10px}footer>span{max-width:210px;line-height:1.7}footer button{font-size:10px;white-space:nowrap}dialog{padding:22px}.weekly-row{grid-template-columns:1fr 1fr 1fr;gap:7px}}
/* Admin sign-in and date-specific availability. */
#admin-login-form{margin-top:26px}#admin-login-form h3{font-size:18px}#admin-login-form label{margin-top:18px}.session-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:22px 0 0;font-size:11px;color:var(--muted)}.secondary-button{background:white;color:var(--blue);border:1px solid #cbddeb;border-radius:7px;font-size:11px;padding:10px 13px;min-height:38px}.secondary-button:hover{background:var(--soft)}.override-section{background:#f3f8fe;border:1px solid var(--line);border-radius:10px;padding:16px;margin:24px 0}.override-section h3{margin-top:0!important}.override-section>label{margin-top:15px}.override-section .secondary-button{margin-top:14px}.override-record{padding:13px 0;border-top:1px solid var(--line);font-size:11px;line-height:1.7}.override-record small{display:block;color:var(--muted)}.override-actions{display:flex;gap:12px;margin-top:5px}.override-actions button{font-size:10px;color:var(--blue);background:none;border:0;padding:5px 0;text-decoration:underline}button:disabled{opacity:.5;cursor:wait}#override-hours{grid-template-columns:1fr 1fr}

.calendar-days button.today {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  border: 0;
  box-shadow: none;
}
.calendar-days button.today:not(.selected),
.calendar-days button.today:disabled {
  background: #fff;
  color: #50677e;
  font-weight: 550;
  opacity: 1;
}
.calendar-days .today-label {
  font-size: 11px;
  line-height: 1.2;
  font-weight: 700;
}
.calendar-days button.selected,
.calendar-days button.selected:hover:enabled,
.calendar-days button.today.selected,
.calendar-days button.today.selected:disabled {
  position: relative;
  background: #123d70;
  color: white;
  font-weight: 750;
  box-shadow: inset 0 0 0 2px #123d70, 0 0 0 2px #70b5f2;
  opacity: 1;
}
.calendar-days button.selected { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0; }
.date-selected-check { position: absolute; top: 3px; right: 4px; font-size: 12px; line-height: 1; font-weight: 750; }
.time-heading > .has-selection { display: block; flex-basis: 100%; color: #123d70; font-weight: 700; padding: 10px 12px; background: #e5f0fc; border-left: 4px solid #123d70; border-radius: 4px; }
.time-slots button.selected,
.time-slots button.selected:hover { background: #123d70; color: white; border-color: #123d70; font-weight: 700; box-shadow: 0 0 0 2px #70b5f2; }
.time-slots button.selected::before { content: '✓ '; }
.email-section { border-top: 1px solid var(--line); margin-top: 32px; padding-top: 26px; }
.email-section label { margin-top: 18px; }
.toggle-label { display: flex; align-items: flex-start; gap: 12px; }
.toggle-label input[type=checkbox] { width: 26px; height: 26px; min-height: 26px; flex-shrink: 0; accent-color: var(--blue); }
.smtp-details { margin-top: 22px; border: 1px solid var(--line); border-radius: 8px; padding: 14px; }
.smtp-details summary { cursor: pointer; font-size: 1rem; font-weight: 600; min-height: 44px; }
.email-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 16px; }
.email-actions button { flex: 1 1 180px; }
.mobile-headline { display: none; }

/* Larger reading sizes and comfortable controls for older members. */
:root { --muted: #50677e; }
html { font-size: 18px; }
body { font-size: 1rem; line-height: 1.6; }
main { max-width: 1200px; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: 48px; }
.welcome, .booking-card, .details-grid > div { min-width: 0; }
.intro { font-size: 1rem; color: var(--muted); max-width: 380px; }
h1 { line-height: 1.1; }
h2 { font-size: 2rem; line-height: 1.2; }
h3, #admin-login-form h3 { font-size: 1.15rem; line-height: 1.4; }
.eyebrow, .card-heading .eyebrow, .admin-header .eyebrow { font-size: .78rem; color: var(--muted); letter-spacing: 1px; }
.draft-bar, .draft-bar span { font-size: .78rem; line-height: 1.5; letter-spacing: .5px; }
.church-name { font-size: .78rem; }
.church-name strong { font-size: 1.2rem; }
.ward-label { font-size: .95rem; }
.ward-label span { font-size: .83rem; }
.season { font-size: 1rem; align-items: flex-start; }
.season span, .welcome-note, .duration { font-size: .89rem; }
.season svg { width: 44px; height: 44px; flex-shrink: 0; }
.welcome-note span { font-size: .78rem; }
.duration { padding: 7px 10px; }
.card-heading { align-items: flex-start; flex-wrap: wrap; }
.section-heading { gap: 12px; margin-bottom: 20px; }
.number { width: 30px; height: 30px; font-size: .89rem; flex-shrink: 0; }
label { font-size: 1rem; line-height: 1.5; margin-bottom: 9px; }
input, select, textarea { font-size: 1rem; min-height: 54px; line-height: 1.5; padding: 13px 12px; border-color: #9aafc4; }
input::placeholder, textarea::placeholder { color: #60768d; opacity: 1; }
.details-grid { grid-template-columns: 1fr; gap: 20px; }
.month-nav h4 { font-size: 1.1rem; line-height: 1.5; }
.icon-button { min-width: 44px; width: 44px; min-height: 44px; height: 44px; font-size: 30px; }
.calendar { padding: 14px 10px; }
.calendar-week { font-size: .89rem; color: var(--muted); }
.calendar-days { gap: 5px; }
.calendar-days button { font-size: 1rem; height: auto; min-height: 48px; padding: 7px 0; }
.calendar-days button:disabled { color: #718195; opacity: 1; cursor: default; }
.calendar-legend { font-size: .78rem; color: var(--muted); gap: 7px; flex-wrap: wrap; }
.calendar-legend span, .calendar-legend i { width: 12px; height: 12px; }
.time-heading { flex-wrap: wrap; align-items: baseline; gap: 6px 12px; }
.time-heading > span { font-size: .89rem; }
.time-slots { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.time-slots button { font-size: 1rem; min-height: 54px; padding: 13px 6px; border-color: #9aafc4; }
.time-slots p, .timezone, .privacy-note, .form-message, .help, .admin-note { font-size: .89rem; line-height: 1.7; }
.timezone, .privacy-note { color: var(--muted); }
.privacy-note { align-items: flex-start; text-align: left; }
.privacy-note svg { width: 20px; height: 20px; flex-shrink: 0; margin-top: 3px; }
.primary-button { font-size: 1.05rem; line-height: 1.5; min-height: 58px; gap: 12px; padding: 16px; }
.primary-button span { font-size: 24px; }
.secondary-button, .booking-record button, .reset-button, .override-actions button { font-size: .95rem; min-height: 48px; line-height: 1.5; padding: 11px 12px; }
.session-bar, .booking-record, .booking-record small, .override-record, .override-record small { font-size: .89rem; overflow-wrap: anywhere; }
.session-bar, .booking-record { flex-wrap: wrap; }
.weekly-row { grid-template-columns: 1fr 1fr; gap: 12px; padding: 12px 0; }
.weekly-row label { grid-column: 1 / -1; }
.weekly-row input[type=checkbox] { width: 24px; height: 24px; margin-right: 8px; }
.weekly-row input[type=time] { font-size: 1rem; padding: 11px 8px; }
.override-actions { flex-wrap: wrap; gap: 8px; }
dialog { width: min(660px, calc(100% - 24px)); }
#confirmation p, #confirmation .confirmation-details { font-size: 1rem; }
#confirmation .confirmation-details span { font-size: .95rem; }
footer { max-width: 1200px; font-size: .89rem; align-items: center; gap: 18px; flex-wrap: wrap; }
footer button { font-size: 1rem; min-height: 48px; padding: 10px 0; }
@media (max-width: 980px) {
  main { display: block; max-width: 620px; }
  .welcome { margin-bottom: 30px; }
  h1 { font-size: 56px; }
  h1 br:nth-of-type(2) { display: none; }
  h1 em { display: block; }
  .landscape, .welcome-note { display: none; }
}
@media (max-width: 600px) {
  .site-header { flex-wrap: wrap; gap: 16px; padding: 20px; }
  .church-name { font-size: .72rem; }
  .church-name strong { font-size: 1.1rem; }
  .ward-label { max-width: none; text-align: left; font-size: .95rem; }
  .ward-label span { font-size: .83rem; }
  .draft-bar span { display: block; margin: 3px 0 0; }
  main { padding: 0 14px; }
  .welcome .eyebrow { font-size: .78rem; }
  h1 { font-size: 46px; letter-spacing: -.5px; }
  h2 { font-size: 1.8rem; }
  .intro { font-size: 1rem; max-width: none; }
  .season { font-size: .95rem; }
  .season span { font-size: .89rem; }
  .booking-card { padding: 24px 16px; }
  .calendar { padding: 12px 5px; }
  .calendar-days { gap: 3px; }
  .month-nav { flex-wrap: wrap; gap: 5px; }
  .time-slots button { font-size: 1rem; }
  .calendar-legend { font-size: .78rem; }
  .time-heading > span, .timezone, .privacy-note { font-size: .89rem; }
  footer { font-size: .89rem; }
  footer > span { max-width: none; }
  dialog { padding: 22px 16px; }
  .admin-header { align-items: flex-start; gap: 8px; }
  .admin-header h2 { font-size: 1.65rem; }
  .override-section { padding: 14px 10px; }
  #override-hours { grid-template-columns: 1fr; }
  .hero-title { margin: 20px 0 16px; font-family: 'DM Sans', sans-serif; font-size: clamp(18px, 5.5vw, 28px); font-weight: 700; line-height: 1.6; letter-spacing: -.4px; }
  .hero-title .full-headline { display: none; }
  .hero-title .mobile-headline { display: inline; white-space: nowrap; color: #163f6a; background: linear-gradient(transparent 62%, #cee4fa 62%); padding-bottom: 3px; }
}
