[hidden]{display:none!important}
:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#173342;background:#f5f7f8;font-synthesis:none}*{box-sizing:border-box}body{margin:0}.masthead{background:#112d3a;color:white;padding:22px max(24px,calc((100vw - 1500px)/2));display:flex;align-items:center;gap:30px}.brand{font-size:14px;font-weight:800;letter-spacing:.17em;line-height:1.4;min-width:180px}.brand span{display:block;font-size:11px;letter-spacing:.35em;color:#abc2cb}.heading{flex:1}.heading small{text-transform:uppercase;letter-spacing:.16em;font-size:11px;color:#b7d1d7}.heading h1{margin:4px 0 0;font-size:clamp(23px,2.3vw,34px);letter-spacing:-.035em}.pdf-link{color:#112d3a;background:#e7f3ee;padding:10px 15px;border-radius:9px;text-decoration:none;font-weight:700;white-space:nowrap}main{max-width:1560px;padding:24px 30px 48px;margin:auto}.trial{border:1px solid #e3d4a8;background:#fff8e8;color:#745520;padding:11px 15px;border-radius:9px;font-size:13px;font-weight:700}.intro{display:flex;justify-content:space-between;align-items:end;gap:20px;margin:28px 0 22px}.eyebrow{color:#557580;font-size:12px;text-transform:uppercase;letter-spacing:.13em;font-weight:800}.intro h2{font-size:clamp(24px,2.5vw,34px);margin:4px 0}.intro p{margin:0;color:#657f89}.controls{display:flex;align-items:end;gap:14px}.segmented{display:flex;border:1px solid #cedce0;background:white;border-radius:10px;padding:4px}.segmented button{border:0;background:transparent;padding:9px 17px;border-radius:7px;color:#42606b;font-weight:700;cursor:pointer}.segmented button.active{background:#196c65;color:white}.controls label{font-size:12px;color:#4b6974;font-weight:700;display:flex;flex-direction:column;gap:5px}select{min-width:190px;border:1px solid #c9d8dd;background:white;padding:10px;border-radius:8px;color:#173342;font-size:14px}.day-tabs{display:none;gap:7px;overflow:auto;margin-bottom:20px;padding-bottom:4px}.day-tabs button{min-width:82px;border:1px solid #ccdade;background:white;border-radius:8px;padding:9px 10px;text-transform:capitalize;cursor:pointer;font-weight:700;color:#34535e}.day-tabs button.active{background:#112d3a;color:white}.section-title{display:flex;align-items:center;gap:12px;margin:23px 0 12px}.section-title h3{font-size:22px;margin:0}.section-title span{font-size:12px;color:#63808b}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px}.day-card{background:white;border:1px solid #dbe5e7;border-radius:13px;overflow:hidden;min-width:0}.day-head{padding:12px 13px;background:#eaf0f1;border-bottom:1px solid #dbe5e7;font-weight:800}.day-head small{display:block;color:#6c8790;font-weight:600}.venue-group{padding:11px 9px 12px;border-top:1px solid #e8eff0}.venue-head{font-size:12px;font-weight:800;padding:0 5px 7px}.venue-head.white-star{color:#9d263b}.venue-head.secret-fountain{color:#08766f}.venue-head.nova{color:#a12372}.venue-head.marina-district{color:#a96205}.item{position:relative;background:#f8faf9;border:1px solid #e1e7e7;border-left:4px solid var(--venue-color);border-radius:7px;margin:5px 0;padding:8px 8px 8px 9px;overflow:hidden}.item.sport{background:#f4f7f8;border-left-style:double;border-left-width:6px}.item.cancelled{opacity:.64;text-decoration:line-through}.item .time{font-size:11px;letter-spacing:.02em;color:#536f78;font-weight:800}.item .name{font-weight:800;line-height:1.18;overflow-wrap:anywhere;font-size:13px}.item .detail{font-size:11px;line-height:1.25;color:#506b75;margin-top:2px;overflow-wrap:anywhere}.item .badge{display:inline-block;font-size:10px;font-weight:800;text-decoration:none;margin-top:5px;color:#8e293c}.item .badge.done{color:#287052}.item.sport .detail:before{content:'●  ';color:#8c9eab}.empty{font-size:12px;color:#8ea0a4;padding:2px 5px}.day-timeline{overflow-x:auto;background:white;border:1px solid #dbe5e7;border-radius:13px}.timeline-inner{min-width:730px;display:grid;grid-template-columns:64px repeat(4,minmax(0,1fr))}.timeline-head{grid-column:1/-1;display:grid;grid-template-columns:64px repeat(4,minmax(0,1fr));border-bottom:1px solid #dbe5e7;background:#eaf0f1;position:sticky;top:0;z-index:3}.timeline-head span{padding:12px 9px;font-weight:800;font-size:13px;border-left:1px solid #dbe5e7}.timeline-head span:first-child{border:0}.timeline-head .white-star{color:#9d263b}.timeline-head .secret-fountain{color:#08766f}.timeline-head .nova{color:#a12372}.timeline-head .marina-district{color:#a96205}.hours{position:relative;background:white;border-right:1px solid #dbe5e7}.hours span{position:absolute;right:9px;transform:translateY(-50%);font-size:11px;color:#708892;font-weight:700}.track{position:relative;border-right:1px solid #e3eaeb;background:repeating-linear-gradient(to bottom,#fff 0,#fff 73px,#dde8ea 74px,#fff 75px)}.track.alt{background:repeating-linear-gradient(to bottom,#fbfcfc 0,#fbfcfc 73px,#dde8ea 74px,#fbfcfc 75px)}.slot{position:absolute;left:5px;right:5px;border:1px solid #dbe3e4;border-left:5px solid var(--venue-color);border-radius:7px;background:#fff;overflow:hidden;padding:5px 7px;z-index:1;box-shadow:0 1px 3px #10313a12}.slot.sport{background:#f3f7f8;border-left-style:double;border-left-width:7px}.slot.cancelled{opacity:.68}.slot .time{font-size:10px;font-weight:800;color:#546d75}.slot .name{font-weight:800;font-size:12px;line-height:1.15;overflow-wrap:anywhere}.slot .detail{font-size:10px;color:#4c6771}.slot.short .detail{display:none}.slot.short{padding:3px 5px}.slot.short .name{font-size:10px}.changes{margin-top:30px;background:white;border:1px solid #dbe5e7;border-radius:13px;padding:18px 20px}.changes h2{font-size:18px;margin:0 0 11px}.changes p{color:#617e88;margin:0}.change{padding:10px 0;border-top:1px solid #ebeff0}.change:first-child{border-top:0}.change strong{display:block}.change span{color:#55717a;font-size:13px}footer{text-align:center;padding:25px;color:#7b949b;font-size:12px}@media(max-width:1000px){.week-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:680px){.masthead{padding:18px;gap:12px;flex-wrap:wrap}.brand{min-width:0;width:100%;font-size:12px}.brand span{display:inline;margin-left:6px}.heading h1{font-size:23px}.pdf-link{font-size:12px;padding:8px 9px}main{padding:15px 12px 35px}.intro{align-items:start;flex-direction:column;margin:22px 0 15px}.controls{width:100%;justify-content:space-between}.controls label{flex:1}select{min-width:0;width:100%}.week-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.day-card{border-radius:10px}.day-head{font-size:13px;padding:9px}.venue-group{padding:7px 5px}.item .name{font-size:12px}.timeline-inner{min-width:680px}}@media(max-width:380px){.week-grid{grid-template-columns:1fr}}

.empty-state{background:white;border:1px solid #dbe5e7;border-radius:13px;padding:24px;margin:20px 0}
.empty-state h3{margin:0 0 8px}
.empty-state p{color:#55717a;max-width:65ch}
.empty-state button{border:0;border-radius:8px;background:#196c65;color:white;font-weight:700;padding:11px 15px;cursor:pointer}

/* Departmental reading pass: day status, weekly rows and read-only activity card. */
.week-list{display:flex;flex-direction:column;gap:15px}
.week-day{background:#fff;border:1px solid #dbe5e7;border-radius:13px;overflow:hidden}
.week-day-head{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#eaf0f1;border-bottom:1px solid #dbe5e7;padding:11px 15px}
.week-day-head>div{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.week-day-date{font-size:16px;font-weight:800}
.week-day-count{font-size:12px;color:#647f88;font-weight:700}
.week-day-head button{border:1px solid #bfd1d5;border-radius:7px;background:white;color:#1d5d62;font-size:12px;font-weight:800;padding:7px 10px;cursor:pointer;white-space:nowrap}
.week-venues{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.week-venue{padding:11px 12px 14px;min-width:0;border-right:1px solid #e6edef}
.week-venue:last-child{border-right:0}
.week-venue .venue-head{margin:0 0 7px;padding:0;font-size:13px}
button.item,button.slot{font:inherit;color:inherit;text-align:left;cursor:pointer}
button.item{display:block;width:100%}
button.item:hover,button.slot:hover{outline:2px solid var(--venue-color);outline-offset:1px}
button.item:focus-visible,button.slot:focus-visible,.week-day-head button:focus-visible,.day-tabs button:focus-visible{outline:3px solid #195f7a;outline-offset:2px}
.item .time,.item .name,.item .detail,.slot .time,.slot .name,.slot .detail{display:block}
.item.done,.slot.done{background:#f3f7f5;border-color:#d7e4dc}
.item.done{border-left-color:#6c9381}
.slot.done{border-left-color:#6c9381}
.item.cancelled,.slot.cancelled{opacity:1;background:#fff3f2;border-color:#dc9d9d}
.item.cancelled{border-left-color:#b94242}
.slot.cancelled{border-left-color:#b94242}
.cancelled .time,.cancelled .name{text-decoration:line-through;text-decoration-color:#a73a3a;text-decoration-thickness:1.5px}
.item-badges,.slot-badges,.detail-badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}
.badge{display:inline-block;padding:3px 6px;border-radius:4px;font-size:10px;font-weight:800;line-height:1.15;text-decoration:none;background:#edf2f3;color:#3f5c66}
.badge-done{background:#dfece5;color:#27684b}
.badge-cancelled{background:#f8dedc;color:#962f2f}
.badge-pending{background:#fff0cf;color:#705319}
.badge-change{background:#e8edf4;color:#455c81}
.slot .badge{font-size:9px;padding:2px 4px}
.slot.short .slot-badges{display:none}
.day-summary{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin:0 0 12px}
.day-summary>span{border:1px solid #dce6e8;border-radius:7px;background:#fff;color:#4e6872;font-size:12px;padding:7px 9px}
.day-summary strong{font-size:14px;color:#173342}
.day-summary .day-next{margin-left:auto;border-color:#bad7d3;background:#eef8f4;color:#145c55;font-weight:800}
.now-rule{position:absolute;left:0;right:0;border-top:2px solid #e08035;z-index:3;pointer-events:none}
.now-marker{position:absolute;left:0;transform:translateY(-50%);z-index:4;background:#bd5a20;border-radius:0 4px 4px 0;color:white;font-size:10px;font-weight:800;padding:3px 4px;white-space:nowrap;pointer-events:none}
.empty-day{background:white;border:1px solid #dbe5e7;border-radius:10px;padding:16px}
.activity-dialog{width:min(520px,calc(100vw - 28px));max-height:calc(100vh - 32px);border:1px solid #cddce0;border-radius:14px;box-shadow:0 20px 60px #112d3a45;padding:0;color:#173342}
.activity-dialog::backdrop{background:#102d39a6}
.detail-toolbar{display:flex;justify-content:flex-end;padding:12px 15px;border-bottom:1px solid #e5ecee}
.detail-toolbar button{border:1px solid #c9d8dc;border-radius:7px;background:white;color:#274c58;font-weight:800;padding:7px 11px;cursor:pointer}
#activity-detail{padding:19px 23px 24px}
.detail-kind{font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:#56737d}
#activity-detail h2{margin:8px 0 3px;font-size:clamp(22px,4vw,29px);line-height:1.12}
.detail-format{margin:0 0 12px;color:#506c76}
.detail-list{margin:21px 0 0;border-top:1px solid #e5ecee}
.detail-list>div{display:flex;gap:12px;justify-content:space-between;border-bottom:1px solid #e5ecee;padding:10px 0}
.detail-list dt{font-size:12px;font-weight:800;color:#617b84}
.detail-list dd{margin:0;text-align:right;font-size:14px;font-weight:700}
.detail-previous{margin-top:18px;border-left:3px solid #728bb2;background:#f4f6fa;padding:11px 13px}
.detail-previous h3{font-size:12px;margin:0 0 5px}
.detail-previous p,.detail-source{font-size:12px;color:#526d76;margin:0}
.detail-source{margin-top:20px}
@media(max-width:1000px){.week-venues{grid-template-columns:repeat(2,minmax(0,1fr))}.week-venue:nth-child(2){border-right:0}.week-venue:nth-child(n+3){border-top:1px solid #e6edef}}
@media(max-width:680px){.week-venues{grid-template-columns:1fr}.week-venue,.week-venue:nth-child(2){border-right:0;border-top:1px solid #e6edef}.week-venue:first-child{border-top:0}.week-day-head{padding:10px 12px}.day-summary .day-next{margin-left:0;flex-basis:100%}.section-title{flex-wrap:wrap}}

.week-day-head{cursor:pointer;list-style:none}
.week-day-head::-webkit-details-marker{display:none}
.week-day-head::after{content:"⌄";font-size:20px;color:#47717c;margin-left:auto;line-height:1}
.week-day[open]>.week-day-head::after{transform:rotate(180deg)}
.week-actions{border-top:1px solid #e6edef;padding:10px 13px;text-align:right}
.week-actions button{border:1px solid #bfd1d5;border-radius:7px;background:white;color:#1d5d62;font-size:12px;font-weight:800;padding:7px 10px;cursor:pointer}
.week-actions button:focus-visible,.week-day-head:focus-visible{outline:3px solid #195f7a;outline-offset:-3px}
.hours .now-marker{left:0;right:auto;width:59px;text-align:center;transform:translateY(-50%);font-size:10px}
.slot .name,.item .name{overflow-wrap:break-word;word-break:normal;hyphens:none}
.slot .name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}
.slot .detail{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;overflow-wrap:break-word}
.compact-time,.compact-kind,.compact-signal{display:none}

/* Public operational signals come only from the frozen joint edition. */
.planned-time{color:#7b8990!important;font-weight:600!important}
.planned-time s{text-decoration-color:#a65237;text-decoration-thickness:1.4px}
.actual-time{color:#9a4d1d!important;font-weight:900!important}
.badge-delay{background:#fbe8d6;color:#874916}
.badge-featured{background:#e3edf7;color:#234f7e}
.slot .actual-time,.item .actual-time{margin-top:1px}
.slot.short .badge-delay,.slot.short .badge-featured{display:none}
.slot.short.delayed .slot-badges{display:flex}
.slot.short.delayed .badge-delay{display:inline-block}
.slot.short.delayed .badge-done{display:none}

/* On phones, the daily schedule reads down the page. A wide nested scroller
   traps touch gestures and hides half the venues on narrow screens. */
.mobile-agenda,.mobile-hint{display:none}
@media(max-width:680px){
  .day-timeline,.desktop-hint{display:none}
  .mobile-agenda,.mobile-hint{display:block}
  .mobile-agenda{background:#fff;border:1px solid #dbe5e7;border-radius:12px;padding:4px 12px 14px}
  .agenda-hour{position:sticky;top:0;z-index:2;margin:16px -12px 8px;padding:8px 12px;background:#eaf0f1;border-top:1px solid #dbe5e7;border-bottom:1px solid #dbe5e7;font-size:14px;letter-spacing:.04em;color:#45636e}
  .agenda-hour:first-child{margin-top:-4px;border-top:0}
  .agenda-item{display:block;width:100%;margin:8px 0;text-align:left;border:1px solid #d9e4e6;border-left:5px solid var(--venue-color);border-radius:9px;background:#fff;color:#173342;padding:10px 12px;box-shadow:0 1px 3px #10313a12;touch-action:pan-y}
  .agenda-item.sport{background:#f2f6f8;border-left-width:7px;border-left-style:double}
  .agenda-item.cancelled,.agenda-item.withdrawn{background:#f7f3f3;color:#775e62}
  .agenda-item.done{background:#f4f8f5}
  .agenda-item:focus-visible{outline:3px solid #195f7a;outline-offset:2px}
  .agenda-meta{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:5px}
  .agenda-venue{font-size:12px;font-weight:900;color:var(--venue-color)}
  .agenda-time{font-size:13px;font-weight:800;color:#435f69;text-align:right}
  .agenda-time .planned-time,.agenda-time .actual-time{display:block}
  .agenda-name{display:block;font-size:17px;font-weight:850;line-height:1.2;overflow-wrap:break-word}
  .agenda-detail{display:block;font-size:13px;color:#59717a;margin-top:2px;overflow-wrap:break-word}
  .agenda-badges{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
  .agenda-badges:empty{display:none}
  .agenda-duration{display:block;height:4px;margin-top:9px;border-radius:4px;background:#e8eef0}
  .agenda-duration span{display:block;height:100%;border-radius:4px;background:var(--venue-color);opacity:.65}
}

/* The phone keeps a simultaneous four-venue overview without a nested
   horizontal scroller; the full-width reading cards remain one tap away. */
.mobile-day-switch{display:none}
@media(max-width:680px){
  .controls .segmented{display:none}
  .controls label{width:100%}
  .mobile-day-switch{display:flex;width:max-content;max-width:100%;gap:3px;margin:0 0 12px;padding:3px;border:1px solid #cbdade;border-radius:9px;background:#fff}
  .mobile-day-switch button{border:0;border-radius:6px;background:transparent;color:#486873;font-size:13px;font-weight:800;padding:8px 13px;cursor:pointer}
  .mobile-day-switch button.active{background:#196c65;color:#fff}
  .mobile-day-switch button:focus-visible{outline:3px solid #195f7a;outline-offset:2px}
  .mobile-agenda{display:none}
  .day-timeline{display:block;overflow:visible;touch-action:pan-y}
  .timeline-inner{min-width:0;width:100%;grid-template-columns:38px repeat(var(--mobile-cols),minmax(0,1fr))!important}
  .timeline-head{grid-template-columns:38px repeat(var(--mobile-cols),minmax(0,1fr))!important}
  .timeline-head span{min-width:0;padding:8px 2px;font-size:10px;line-height:1.15;text-align:center;overflow-wrap:anywhere}
  .hours span{right:2px;font-size:9px}
  .hours .now-marker{width:35px;font-size:8px;padding:2px 0}
  .slot{padding:3px 2px;border-left-width:3px;border-radius:4px;box-shadow:none;touch-action:pan-y}
  .slot.sport{border-left-width:4px}
  .slot .name,.slot.short .name{font-size:10px;line-height:1.08;overflow-wrap:anywhere;-webkit-line-clamp:2}
  .slot.long .name{-webkit-line-clamp:4}
  .slot.overlap .name{font-size:9px;-webkit-line-clamp:2}
  .slot .time,.slot .detail,.slot .slot-badges{display:none!important}
  .slot .compact-time{display:block;font-size:8px;font-weight:800;line-height:1.12;color:#536d76;white-space:nowrap;letter-spacing:-.025em}
  .slot .compact-kind{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:9px;line-height:1.1;color:#536d76;overflow-wrap:anywhere;margin-top:2px}
  .slot .compact-signal{display:block;width:max-content;max-width:100%;font-size:8px;font-weight:800;line-height:1.1;color:#346b58;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}
  .slot.cancelled .compact-signal{color:#a63737}
  .slot.delayed .compact-signal{color:#96511d}
  .slot.sport .compact-kind{color:#415f70}
  .slot.short .compact-kind,.slot.short .compact-signal,.slot.overlap .compact-kind,.slot.overlap .compact-signal{display:none}
  .slot.tiny .compact-time{display:none}
  .slot.tiny .name{-webkit-line-clamp:1}
  .day-timeline.single-venue .slot{padding:5px 7px}
  .day-timeline.single-venue .slot .name{font-size:14px}
  .day-timeline.single-venue .slot .compact-time{font-size:11px}
  .day-timeline.single-venue .slot .compact-kind{font-size:12px}
  body.mobile-reading .day-timeline{display:none}
  body.mobile-reading .mobile-agenda{display:block}
}
