:root {
  color-scheme: light;
  /* Official FLOW Spectrum mint is the primary brand colour. */
  --mint: #a3d2c5;
  --mint-deep: #337366;
  --mint-ink: #326e61;
  --mint-soft: #edf9f4;
  /* Warm peach and pastel pink are supporting accents only. */
  --peach: #f9d6af;
  --peach-soft: #fff6e9;
  --rose: #f7afb2;
  --rose-deep: #dd8e9c;
  --rose-ink: #9c5665;
  --rose-soft: #fff1f1;
  --ink: #313a3c;
  --subtle: #68716f;
  --paper: #fcfefc;
  --surface: #ffffff;
  --border: #dcebe5;
  --shadow: 0 14px 42px rgba(51, 111, 94, .075);
  --radius: 19px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: linear-gradient(180deg,#eff9f5 0%,#fcfefc 55%,#f4faf7 100%); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
button, a { -webkit-tap-highlight-color: transparent; }
button { font: inherit; cursor: pointer; }
button:focus-visible, a:focus-visible { outline: 3px solid #468c7e; outline-offset: 3px; }
.skip-link { position: absolute; top: -80px; left: 12px; z-index: 50; background: white; padding: 10px 16px; border-radius: 10px; color: var(--ink); }
.skip-link:focus { top: 12px; }
.page-shell { min-height: 100vh; overflow: hidden; }
.masthead { height: 215px; position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; background: var(--mint); isolation: isolate; }
.masthead:before { content:""; position:absolute; inset:0; background: radial-gradient(ellipse at 17% 78%,rgba(255,255,242,.32),transparent 30%),radial-gradient(ellipse at 86% 10%,rgba(255,241,222,.22),transparent 33%); pointer-events:none; }
.masthead:after { display:none; content:""; position:absolute; z-index:-1; left:-2%; width:104%; height:40px; bottom:-18px; background:var(--mint); border-radius:50% 50% 0 0 / 100% 100% 0 0; }
.masthead-frame { position:absolute; inset: 4px 3% auto; width:94%; height:205px; fill:none; stroke:rgba(64,127,112,.25); stroke-width:7; pointer-events:none; }
.masthead-sparkles { position:absolute; inset:0; pointer-events:none; }
.masthead-sparkles i { position:absolute; width:5px; height:5px; border-radius:50%; background:rgba(255,250,231,.8); }
.masthead-sparkles i:nth-child(1){left:17%;top:32%}.masthead-sparkles i:nth-child(2){left:73%;top:39%}.masthead-sparkles i:nth-child(3){left:27%;top:80%}.masthead-sparkles i:nth-child(4){left:88%;top:70%}.masthead-sparkles i:nth-child(5){left:56%;top:18%}.masthead-sparkles i:nth-child(6){left:9%;top:67%}
.official-logo { display:block; width:205px; height:auto; object-fit:contain; position:relative; z-index:1; margin-top:-12px; }
.masthead-location { z-index:1; position:relative; font-size:10px; font-weight:700; letter-spacing:.26em; color:#fff; opacity:.95; margin-top:12px; text-align:center; padding-left:4px; }
.main-content { position:relative; z-index:2; max-width:1120px; margin:-11px auto 0; padding:0 18px 0; }
.intro-panel { margin:0 auto 27px; padding:28px 12px 0; text-align:center; }
.eyebrow { display:flex; align-items:center; justify-content:center; gap:12px; color:var(--mint-ink); font-size:10px; font-weight:800; letter-spacing:.22em; }
.eyebrow-line { width:19px; height:1px; background:#95cdbd; }
h1, h2, h3, p { margin-top:0; }
h1, .day-title, .section-title { font-family: Georgia, "Times New Roman", serif; font-weight:500; }
h1 { font-size:clamp(32px,5vw,48px); line-height:1.13; letter-spacing:-.035em; margin:13px auto 10px; max-width:780px; }
h1 em { color:var(--mint-ink); font-weight:400; font-style:italic; }
.intro-subtitle { color:var(--subtle); font-size:13.8px; line-height:1.6; max-width:520px; margin:0 auto; }
.language-row { display:flex; justify-content:center; align-items:center; flex-wrap:wrap; gap:7px; margin:23px auto 0; }
.language-button { display:inline-flex; gap:7px; align-items:center; justify-content:center; border:1px solid #dceae3; background:#fff; padding:10px 13px; border-radius:12px; min-width:67px; min-height:43px; box-shadow:0 2px 5px rgba(65,117,100,.035); color:#5c6162; font-size:12.5px; font-weight:700; transition:background .18s,border-color .18s,color .18s; }
.language-button .flag { font-size:20px; line-height:1; }
.language-button:hover { border-color:#9ecfbe; }
.language-button.is-active { background:#d9efe6; border-color:#8dc8b5; color:#2b695a; box-shadow:0 0 0 1px rgba(111,184,157,.15); }
.schedule-shell { background:#fff; border:1px solid var(--border); border-radius:24px; padding:19px 18px 21px; box-shadow:var(--shadow); }
.toolbar { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:17px 12px; padding:0 1px 15px; }
.date-context { display:flex; align-items:center; min-width:0; gap:11px; }
.date-sun { display:flex; align-items:center; justify-content:center; flex:0 0 46px; height:46px; background:var(--peach-soft); border-radius:15px; color:#cb9a66; }
.date-sun svg { width:23px; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; }
.date-caption { font-size:9px; letter-spacing:.12em; color:#978b82; font-weight:800; }
.current-date { font-size:15px; font-weight:700; margin-top:4px; white-space:nowrap; }
.toolbar-actions { display:flex; align-items:center; flex-wrap:wrap; gap:7px; }
.action-button { display:inline-flex; align-items:center; justify-content:center; gap:7px; min-height:41px; padding:9px 11px; border:1px solid #dcebe3; background:#fff; border-radius:12px; color:#515856; font-size:12px; font-weight:700; white-space:nowrap; }
.action-button svg { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.action-button:hover { background:#f0f9f5; }
.today-button { background:#f2f9f5; color:#417e70; border-color:#d1e8df; }
.switch-button.is-active { background:#d9efe6; border-color:#9acdbb; color:#306e60; }
.weekday-nav { border-top:1px solid #e6f0ea; border-bottom:1px solid #e6f0ea; padding:14px 0; }
.day-tabs { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:7px; }
.day-tab { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; min-height:65px; border:1px solid #e2ece6; border-radius:13px; background:#fdfffd; color:#6b7e75; font-size:11px; font-weight:800; letter-spacing:.09em; transition:background .15s,border-color .15s; }
.day-tab .day-bullet { background:#c8dbd1; width:4px; height:4px; border-radius:50%; }
.day-tab.is-today .day-bullet { width:6px; height:6px; background:#72baa7; }
.day-tab.is-active { background:#b6ddce; border-color:#80bda9; color:#245e50; box-shadow:inset 0 0 0 1px #d0eae0; }
.day-tab.is-active .day-bullet { background:#3c846f; }
.day-tab:hover:not(.is-active) { background:#edf8f3; }
.program-heading { display:flex; justify-content:space-between; align-items:flex-end; gap:12px; padding:22px 1px 12px; }
.heading-eyebrow { font-size:10px; letter-spacing:.13em; color:#548d7b; font-weight:800; text-transform:uppercase; }
.day-title { font-size:30px; line-height:1.1; margin:5px 0 0; letter-spacing:-.02em; }
.heading-day-today { color:#5b9c8a; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.08em; border-radius:16px; background:#edf8f3; padding:7px 11px; }
.program-content { display:flex; flex-direction:column; gap:16px; }
.day-block { display:flex; flex-direction:column; gap:14px; }
.day-block + .day-block { margin-top:14px; padding-top:22px; border-top:1px solid #e2efe8; }
.week-day-heading { display:flex; align-items:center; justify-content:space-between; margin:2px 3px -1px; }
.week-day-heading h2 { font-family:Georgia,serif; font-size:28px; font-weight:500; margin:0; }
.period { border-radius:18px; overflow:hidden; border:1px solid #e0ece5; background:#fff; }
.period-morning { --period-color:#d39f70; --period-bg:#fff5e9; --period-edge:#f1dbbf; }
.period-afternoon { --period-color:#377e6c; --period-bg:#e7f6ee; --period-edge:#cbe7dc; }
.period-evening { --period-color:#286b5d; --period-bg:#daefe5; --period-edge:#a9d9c7; border-color:#9dd0bb; }
.period-head { display:flex; align-items:center; gap:13px; background:var(--period-bg); padding:17px 18px; border-bottom:1px solid var(--period-edge); }
.period-icon { width:43px; height:43px; background:rgba(255,255,255,.72); color:var(--period-color); border-radius:13px; flex:0 0 43px; display:flex; justify-content:center; align-items:center; }
.period-icon svg { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.section-title { margin:0; font-size:23px; line-height:1.1; }
.section-subtitle { font-size:11.5px; color:#7b7b75; margin:5px 0 0; }
.period-body { padding:14px; }
.area-grid { display:grid; grid-template-columns:1fr; gap:12px; }
.area-card { background:#fff; border-radius:13px; border:1px solid #e3eee7; overflow:hidden; min-width:0; }
.area-title { display:flex; align-items:center; gap:7px; background:#f7fbf8; border-bottom:1px solid #e3eee7; color:#557668; padding:11px 13px; font-size:11.5px; font-weight:800; letter-spacing:.015em; }
.area-title svg { width:17px; height:17px; stroke:#8eb9ae; fill:none; stroke-width:1.7; stroke-linecap:round; }
.activity-list { margin:0; padding:0; list-style:none; }
.activity-row { display:flex; align-items:center; gap:11px; min-width:0; padding:12px 13px; }
.activity-row + .activity-row { border-top:1px solid #e9f2ec; }
.activity-time { flex:0 0 53px; min-width:53px; color:#397968; font-size:14px; letter-spacing:-.018em; font-weight:800; font-variant-numeric:tabular-nums; }
.period-morning .activity-time { color:#9e795b; }
.period-afternoon .activity-time { color:#518f7d; }
.activity-info { min-width:0; flex:1; }
.activity-name { font-size:13px; font-weight:700; line-height:1.35; color:#3d4140; overflow-wrap:anywhere; }
.activity-location { display:flex; align-items:center; gap:4px; font-size:10.5px; color:#98928c; margin-top:3px; line-height:1.3; }
.activity-location svg { width:12px; height:12px; stroke:currentColor; fill:none; stroke-width:1.8; flex:0 0 12px; }
.empty { color:#98928c; font-size:12px; padding:14px; }
.evening-list { display:grid; grid-template-columns:1fr; gap:10px; }
.show-card { position:relative; display:flex; align-items:center; min-width:0; gap:13px; padding:17px 15px; background:linear-gradient(117deg,#f0faf5,#fcfffb); border:1px solid #badfce; border-radius:14px; overflow:hidden; }
.show-card:before { content:""; width:3px; height:100%; position:absolute; left:0; top:0; background:linear-gradient(#5eaa94,#9ed2bd); }
.show-icon { background:#d7eee3; width:40px; height:40px; flex:0 0 40px; display:flex; align-items:center; justify-content:center; border-radius:12px; color:#367b68; }
.show-icon svg { width:20px; height:20px; stroke:currentColor; stroke-width:1.7; fill:none; stroke-linecap:round; stroke-linejoin:round; }
.show-details { flex:1; min-width:0; }
.show-name { font-family:Georgia,serif; font-size:19px; line-height:1.23; font-weight:500; margin:0; overflow-wrap:anywhere; }
.show-location { display:flex; align-items:center; gap:5px; color:#6b8b7a; font-size:11px; margin-top:8px; }
.show-location svg { width:14px; height:14px; stroke:currentColor; fill:none; stroke-width:1.7; flex:0 0 14px; }
.show-time { flex:0 0 auto; background:#c6e6d8; color:#286b5b; border-radius:11px; padding:10px 10px; font-size:15px; line-height:1; font-weight:800; letter-spacing:-.01em; font-variant-numeric:tabular-nums; }
.rotation-note { margin-top:8px; font-size:10.5px; line-height:1.5; color:#48796a; }
.bottom-tools { display:flex; flex-direction:column; align-items:center; gap:7px; padding:17px 14px 19px; }
.kids-link { display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:11px 17px; margin-bottom:6px; background:#edfaf4; color:#427e70; border:1px solid #cce8dc; text-decoration:none; border-radius:12px; font-size:13px; font-weight:700; }
.kids-link[hidden] { display:none; }
.kids-link svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linejoin:round; stroke-linecap:round; }
.disclaimer { display:flex; align-items:center; justify-content:center; gap:7px; margin:0; color:#8e8884; font-size:11.5px; text-align:center; }
.disclaimer svg { width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:1.7; flex:0 0 15px; }
.footer { position:relative; background:#edfaf6; color:#648b80; text-align:center; padding:26px 18px 26px; font-size:10.5px; font-weight:700; letter-spacing:.045em; }
.footer:before { content:""; position:absolute; height:35px; left:-2%; width:104%; top:-17px; background:#edfaf6; border-radius:50% 50% 0 0 / 100% 100% 0 0; z-index:-1; }
.footer p { margin:0; }
.footer-line { width:33px; height:1px; background:#9bc8bb; margin:0 auto 12px; }
.footer-flourish { font-size:15px; color:#b7ddce; margin-top:9px; }
.loading { text-align:center; padding:40px 0; color:#8e8884; }

@media (min-width:650px) {
 .masthead { height:225px; }
 .official-logo { width:230px; }
 .intro-panel { padding-top:29px; margin-bottom:32px; }
 .intro-subtitle { font-size:14.5px; }
 .language-button { min-width:76px; }
 .schedule-shell { padding:25px 28px 28px; }
 .day-tab { min-height:66px; font-size:12px; }
 .area-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
 .period-body { padding:17px; }
 .section-title { font-size:24px; }
 .evening-list:has(.show-card:nth-child(2)) { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (min-width:900px) {
 .masthead { height:238px; }
 .main-content { padding:0 28px; }
 .schedule-shell { padding:28px 32px 32px; }
 .period-body { padding:17px; }
 .activity-row { padding:13px 16px; }
 .program-content { gap:18px; }
 .area-card { background:var(--paper); }
}
@media (max-width:470px) {
 .masthead { height:188px; }
 .official-logo { width:184px; margin-top:-5px; }
 .masthead-frame { height:183px; }
 .main-content { padding:0 12px; }
 .intro-panel { padding:23px 5px 0; margin-bottom:22px; }
 .eyebrow { font-size:9px; gap:8px; }
 .eyebrow-line { width:13px; }
 h1 { font-size:34px; }
 .intro-subtitle { padding:0 5px; font-size:12.5px; }
 .language-row { margin-top:18px; gap:6px; }
 .language-button { min-width:65px; padding:9px 10px; }
 .schedule-shell { padding:15px 11px 15px; border-radius:19px; }
 .toolbar { padding:0 2px 12px; gap:13px 7px; }
 .date-sun { flex-basis:42px; height:42px; }
 .current-date { font-size:14px; }
 .toolbar-actions { width:100%; display:grid; grid-template-columns:1fr 1.15fr .88fr; gap:6px; }
 .action-button { font-size:11px; padding:8px 6px; min-height:42px; gap:5px; }
 .action-button svg { width:15px; height:15px; }
 .weekday-nav { padding:11px 0; }
 .day-tabs { gap:4px; }
 .day-tab { min-height:53px; border-radius:9px; font-size:10px; letter-spacing:0; gap:5px; }
 .day-title { font-size:27px; }
 .program-heading { padding-top:20px; }
 .period-head { padding:13px 12px; gap:10px; }
 .period-icon { width:40px; height:40px; flex-basis:40px; }
 .section-title { font-size:21px; }
 .section-subtitle { font-size:10.6px; }
 .period-body { padding:9px; }
 .area-grid { gap:9px; }
 .activity-row { padding:11px 12px; }
 .show-card { gap:9px; padding:15px 11px; }
 .show-icon { flex-basis:33px; height:33px; width:33px; }
 .show-name { font-size:17px; }
 .show-time { font-size:13px; padding:9px 8px; }
}
@media (max-width:355px) {
 .language-button { min-width:60px; }
 .day-tab { font-size:9px; }
 .action-button { font-size:10px; }
 .show-icon { display:none; }
 .section-title { font-size:19px; }
 h1 { font-size:31px; }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*:before,*:after { animation-duration:.01ms!important; transition-duration:.01ms!important; } }
@media print {
 @page { size:A4 portrait; margin:12mm; }
 :root { --ink:#1e1e1e; }
 html,body { background:white!important; color:#111!important; print-color-adjust:exact; -webkit-print-color-adjust:exact; }
 .masthead { height:107px; background:#a3d2c5!important; }
 .official-logo { width:130px; margin-top:-6px; }
 .masthead-location { font-size:7px; }
 .masthead-frame,.masthead-sparkles,.masthead:after,.intro-subtitle,.eyebrow,.language-row,.toolbar-actions,.weekday-nav,.bottom-tools,.footer-flourish,.skip-link { display:none!important; }
 .main-content { max-width:none; margin:0; padding:0; }
 .intro-panel { margin:0 0 8px; padding:13px 0 0; }
 h1 { font-size:25px; margin:0; }
 .schedule-shell { box-shadow:none; border:0; padding:0; }
 .toolbar { padding:2px 0 6px; }
 .date-sun { width:30px; height:30px; flex-basis:30px; }
 .date-sun svg { width:17px; }
 .date-caption { font-size:7px; }
 .current-date { font-size:11px; }
 .program-heading { padding:10px 0 6px; }
 .day-title { font-size:19px; }
 .day-block { gap:8px; }
 .day-block + .day-block { break-before:page; padding-top:10px; margin-top:0; }
 .week-day-heading { margin:0; }
 .week-day-heading h2 { font-size:21px; }
 .period { break-inside:avoid; }
 .period-head { padding:8px 10px; }
 .period-icon { height:26px; width:26px; flex-basis:26px; }
 .period-icon svg { width:18px; height:18px; }
 .section-title { font-size:17px; }
 .section-subtitle { display:none; }
 .period-body { padding:7px; }
 .area-grid { grid-template-columns:1fr 1fr; gap:8px; }
 .area-title { padding:6px 8px; font-size:9px; }
 .activity-row { padding:5px 8px; gap:7px; }
 .activity-time { font-size:10px; flex-basis:43px; min-width:43px; }
 .activity-name { font-size:10px; }
 .activity-location { font-size:8px; margin-top:1px; }
 .show-card { padding:8px; }
 .show-icon { display:none; }
 .show-name { font-size:13px; }
 .show-location,.rotation-note { font-size:9px; margin-top:3px; }
 .show-time { font-size:11px; padding:8px; }
 .footer { padding:10px; font-size:8px; background:#fff!important; }
 .footer:before { display:none; }
 .footer-line { margin-bottom:5px; }
}
