[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-switch{display:block;margin:-8px 0 18px;padding:10px 14px;border:1px solid #b9d3d0;border-radius:9px;background:#eaf5f1;color:#14594f;font:inherit;font-weight:800;cursor:pointer}
.week-switch:hover{background:#d9eee7}
.week-switch:focus-visible{outline:3px solid #195f7a;outline-offset:2px}
.week-list{display:flex;flex-direction:column;gap:15px}
.optional-card{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;min-width:0;min-height:56px;padding:8px 10px;background:#f5f7f8;border:1px solid #cbd7db;border-left:4px solid #91a8b1;border-radius:8px;color:#27434d;text-align:left;cursor:pointer;overflow:hidden}
.optional-card:hover,.optional-card:focus-visible{outline:2px solid #5e8490;outline-offset:1px}
.optional-card strong{font-size:13px;line-height:1.2;overflow-wrap:anywhere}
.optional-time{font-size:10px;font-weight:800;letter-spacing:.02em;color:#3f6470}
.optional-caption{font-size:11px;line-height:1.2;color:#55717b}
.optional-note{font-size:10px;font-weight:700;color:#5d7780}
.optional-marker{position:absolute;right:4px;z-index:2;min-height:30px;padding:4px 6px;border:1px solid #afc2c9;border-radius:7px;background:#f2f5f6;color:#365968;font-size:11px;font-weight:800;box-shadow:0 1px 4px #102d3933;cursor:pointer;white-space:nowrap}
.optional-marker .marker-count{font-size:12px}
.optional-marker .marker-type{margin-left:3px;font-size:10px}
.optional-marker:focus-visible{outline:2px solid #3d7181;outline-offset:2px}
.agenda-optional{margin:8px 0;touch-action:pan-y}
.agenda-optional .agenda-venue{display:block;color:#a96205;font-weight:800;font-size:12px;margin-bottom:4px}
.option-choice{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;margin:7px 0;padding:10px 12px;border:1px solid #d8e2e4;border-left:4px solid #a0b4bb;border-radius:8px;background:#f6f8f8;color:#173342;text-align:left;cursor:pointer}
.option-choice.principal{border-left-color:#b82d45;background:#fff9f9}
.option-choice span,.option-choice small{font-size:12px;color:#58717a}
.option-choice strong{font-size:15px}
.option-choice:focus-visible,.option-back:focus-visible{outline:2px solid #195f7a;outline-offset:2px}
.option-context{font-size:13px;color:#58717a}
.option-back{border:0;background:transparent;color:#196c65;font-weight:800;padding:0 0 12px;cursor:pointer}
#activity-detail h3{font-size:14px;margin:18px 0 8px}
.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}
.badge-shared{background:#e8f1f3;color:#245769}
.shared-compact{display:none}
.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){
  .optional-marker{right:2px;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:48px;max-width:calc(100% - 4px);min-height:36px;padding:2px 3px;line-height:1.05}
  .optional-marker .marker-time{display:none}
  .optional-marker .marker-count{font-size:13px}
  .optional-marker .marker-type{margin:0;font-size:9px}
  .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{border-radius:11px 11px 0 0;overflow:hidden}
  .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 span:first-child{transform:translateY(2px)}
  .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.sport .shared-compact{display:block;position:absolute;right:3px;top:3px;border-radius:3px;background:#e3eef1;color:#245769;font-size:10px;font-weight:900;line-height:1;padding:2px 3px}
  .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}
  .day-timeline.single-venue .slot .time{display:block!important;font-size:11px}
  .day-timeline.single-venue .slot .detail{display:block!important;font-size:11px;line-height:1.2}
  .day-timeline.single-venue .slot .slot-badges{display:flex!important;font-size:10px}
  .day-timeline.single-venue .slot .compact-time,.day-timeline.single-venue .slot .compact-kind,.day-timeline.single-venue .slot .compact-signal,.day-timeline.single-venue .slot .shared-compact{display:none}
  .day-timeline.single-venue .slot.short .detail,.day-timeline.single-venue .slot.overlap .detail{display:block!important}
  .day-timeline.single-venue .slot.tiny .detail,.day-timeline.single-venue .slot.tiny .slot-badges{display:none!important}
  body.mobile-reading .day-timeline{display:none}
  body.mobile-reading .mobile-agenda{display:block}
}

/* The approved SportsScheduler artwork sits behind public sports text only. */
.sport-watermark{isolation:isolate}
.show-watermark{isolation:isolate}
.item.sport-watermark,.agenda-item.sport-watermark,.optional-card.sport-watermark,.option-choice.sport-watermark{position:relative}
.item.show-watermark,.agenda-item.show-watermark{position:relative}
.sport-watermark::before{content:"";position:absolute;inset:5% 2% 5% 38%;background-image:var(--sport-watermark);background-position:center right;background-repeat:no-repeat;background-size:contain;opacity:.10;pointer-events:none;z-index:0}
.show-watermark::before{content:"";position:absolute;inset:5% 2% 5% 38%;background-image:var(--show-watermark);background-position:var(--show-watermark-position,center right);background-repeat:no-repeat;background-size:var(--show-watermark-size,contain);opacity:.09;pointer-events:none;z-index:0}
.sport-watermark > *{position:relative;z-index:1}
.show-watermark > *{position:relative;z-index:1}
.sport-watermark.cancelled::before,.sport-watermark.withdrawn::before{display:none}
.show-watermark.cancelled::before,.show-watermark.withdrawn::before{display:none}
.slot.short.sport-watermark::before,.slot.tiny.sport-watermark::before{opacity:.06}
.slot.short.show-watermark::before,.slot.tiny.show-watermark::before{opacity:.05}
.agenda-item.sport-watermark::before,.option-choice.sport-watermark::before{inset:7% 3% 7% 50%}
.agenda-item.show-watermark::before{inset:7% 3% 7% 50%}
@media(max-width:680px){
  .slot.sport-watermark::before{inset:8% 1% 8% 15%;opacity:.07}
  .slot.show-watermark::before{inset:8% 1% 8% 15%;opacity:.06}
  .day-timeline.single-venue .slot.sport-watermark::before{inset:5% 3% 5% 48%;opacity:.10}
  .day-timeline.single-venue .slot.show-watermark::before{inset:5% 3% 5% 48%;opacity:.09}
  .agenda-item.sport-watermark::before{opacity:.09}
  .agenda-item.show-watermark::before{opacity:.08}
}

/* Identidad de Marina Resort: activos locales, sin peticiones a terceros. */
@font-face{font-family:"DM Sans";font-style:normal;font-weight:400 800;font-display:swap;src:url('assets/brand/dm-sans-latin.woff2') format('woff2')}
:root{font-family:"DM Sans",ui-sans-serif,system-ui,sans-serif}
.masthead{min-height:172px;position:relative;gap:20px;padding:23px max(24px,calc((100vw - 1500px)/2));background:linear-gradient(90deg,#102d3af5 0%,#102d3ae0 34%,#102d3ab5 62%,#102d3aa6 100%),url('assets/brand/espacios-objetos.png') center 48%/cover no-repeat}
.brand{width:78px;min-width:78px;height:76px;display:flex;align-items:center;justify-content:center}
.brand img{display:block;max-width:100%;max-height:100%;object-fit:contain;filter:brightness(0) invert(1) drop-shadow(0 2px 8px #071d2baa)}
.heading{min-width:0;text-shadow:0 2px 8px #071d2baa}
.heading h1{line-height:1.08}
.pdf-link{margin-left:auto;box-shadow:0 2px 12px #071d2b50}

/* A quiet venue tint separates planned shows from the neutral sports cards.
   Completed and cancelled states retain their stronger operational colours. */
.item.show.planned,.slot.show.planned,.agenda-item.show.planned{
  background:color-mix(in srgb,var(--venue-color) 6%,#fff);
  border-color:color-mix(in srgb,var(--venue-color) 17%,#dbe3e4);
  border-left-color:var(--venue-color);
}
@media(max-width:680px){
  .masthead{min-height:122px;display:grid;grid-template-columns:60px minmax(0,1fr);gap:4px 12px;align-items:center;padding:13px 14px;background-position:55% center}
  .brand{grid-row:1/3;width:60px;min-width:60px;height:60px}
  .heading{grid-column:2;grid-row:1}
  .heading small{font-size:9px;letter-spacing:.1em}
  .heading h1{font-size:clamp(17px,4.6vw,23px);line-height:1.07}
  .pdf-link{grid-column:2;grid-row:2;justify-self:start;margin:0;font-size:11px;padding:6px 10px}
}

/* The same two daily readings are available on desktop. The weekly grid is
   deliberately absent from the public interface. */
@media(min-width:681px){
  .mobile-day-switch{display:flex;width:max-content;gap:3px;margin:0 0 14px;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:14px;font-weight:800;padding:9px 16px;cursor:pointer}
  .mobile-day-switch button.active{background:#196c65;color:#fff}
  .mobile-day-switch button:focus-visible{outline:3px solid #195f7a;outline-offset:2px}
  body.mobile-reading .day-timeline{display:none}
  body.mobile-reading .mobile-agenda{display:block;max-width:960px;margin:0 auto;background:#fff;border:1px solid #dbe5e7;border-radius:12px;padding:8px 18px 20px}
  .agenda-hour{position:sticky;top:0;z-index:2;margin:18px -18px 10px;padding:9px 18px;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:-8px;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 14px;box-shadow:0 1px 3px #10313a12;cursor:pointer}
  .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-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}
}

/* A compact card still centers its artwork inside the space left for it. */
@media(max-width:680px){
  .slot.show-watermark::before{inset:8% 1% 8% 36%}
  .day-timeline.single-venue .slot.show-watermark::before{inset:5% 3% 5% 48%}
}

/* The change log scans from the old activity to the current one. */
.change-card{padding:15px 0;border-top:1px solid #e4ecee}
.change-card:first-child{border-top:0;padding-top:3px}
.change-heading{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin-bottom:10px}
.change-heading h3{margin:0;font-size:15px;line-height:1.25;color:#173342}
.change-kind{display:inline-block;padding:4px 9px;border-radius:6px;background:#eaf0f1;color:#3b5d68;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}
.change-comparison{display:grid;grid-template-columns:1fr 1.15fr;gap:10px}
.change-before,.change-after{display:flex;flex-direction:column;gap:4px;min-width:0;padding:12px 14px;border:1px solid #dce6e8;border-radius:9px;background:#f8fafb}
.change-after{border-color:#a4d4c9;border-left:4px solid #168274;background:#ecf7f3}
.change-label{font-size:11px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:#607a83}
.change-after .change-label{color:#116f62}
.change-activity{font-size:15px;line-height:1.25;color:#203a46;overflow-wrap:anywhere}
.change-after .change-activity{font-size:18px;color:#124d47}
.change-meta,.change-state{display:block;color:#526e78;font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.change-before .change-activity{color:#667b83}
.change-before p,.change-after p{margin:0;overflow-wrap:anywhere}
@media(max-width:680px){.change-comparison{grid-template-columns:1fr}.change-after{margin-top:0}}

/* Changes are a separate notification window, not the last section of a day. */
.notice-button{border:1px solid #b9d8d5;border-radius:9px;background:#e7f3ee;color:#123c3b;padding:10px 13px;font:inherit;font-weight:800;white-space:nowrap;cursor:pointer}
.notice-button span{display:inline-grid;place-items:center;min-width:22px;height:22px;margin-left:5px;padding:0 5px;border-radius:12px;background:#166f65;color:#fff;font-size:12px}
.notice-button:hover,.notice-button:focus-visible{background:#d4ece5;outline-color:#127568}
.changes-dialog{width:min(820px,calc(100vw - 28px));max-height:min(82vh,850px);padding:22px;border:1px solid #c7dadd;border-radius:16px;box-shadow:0 24px 65px #102d3a4a;color:#173342;background:#fff}
.changes-dialog::backdrop{background:#0e2830a8}
.changes-toolbar{display:flex;align-items:start;justify-content:space-between;gap:15px;border-bottom:1px solid #dce7e9;padding-bottom:12px}
.changes-toolbar h2{font-size:24px;margin:3px 0 0}
.changes-toolbar button{border:1px solid #cedde0;border-radius:8px;background:#fff;color:#274754;padding:8px 11px;font:inherit;font-weight:750;cursor:pointer}
.changes-intro{margin:12px 0;color:#607a83;font-size:13px}
.change-card{display:block;width:100%;padding:15px 0;text-align:left;background:#fff;color:inherit;border:0;border-top:1px solid #e4ecee;font:inherit;cursor:pointer}
.change-card:hover .change-after,.change-card:focus-visible .change-after{border-color:#168274;background:#dff3ec}
.change-card:focus-visible{outline:2px solid #168274;outline-offset:2px}
.change-heading-title{font-size:15px;line-height:1.25;color:#173342}
.change-open{display:block;margin-top:8px;color:#126c62;font-size:12px;font-weight:800}
.change-subject{display:block;margin:-2px 0 9px;color:#173342;font-size:16px;line-height:1.25}
.change-time{font-size:17px;line-height:1.25;color:#173342}
.change-after .change-time{color:#124d47}
.change-delay{display:inline-block;align-self:flex-start;padding:2px 7px;border-radius:5px;background:#c9e9df;color:#145c50;font-size:12px;font-weight:800}
/* Notifications reuse the schedule card language: venue edge, quiet tint,
   show artwork, time, artist, format and the same public badges. */
.change-comparison{grid-template-columns:1fr 1fr;align-items:stretch}
.change-before,.change-after{padding:0;border:0;background:transparent;gap:7px}
.change-after{border:0;background:transparent}
.change-snapshot{display:flex;position:relative;isolation:isolate;flex-direction:column;gap:3px;min-height:130px;width:100%;padding:13px 15px;border:1px solid #dbe3e4;border-left:6px solid var(--venue-color);border-radius:8px;background:#fff;box-shadow:0 1px 3px #10313a12;overflow:hidden;text-align:left}
.change-snapshot.show.planned{background:color-mix(in srgb,var(--venue-color) 6%,#fff);border-color:color-mix(in srgb,var(--venue-color) 17%,#dbe3e4);border-left-color:var(--venue-color)}
.change-snapshot.done{background:#f3f7f5;border-color:#d7e4dc;border-left-color:#6c9381}
.change-snapshot.cancelled,.change-snapshot.no-activity{background:#fff3f2;border-color:#dc9d9d;border-left-color:#b94242}
.change-snapshot .time{display:block;font-size:13px;font-weight:800;color:#536f78}
.change-snapshot .name{display:block;font-size:19px;font-weight:850;line-height:1.15;color:#173342;overflow-wrap:anywhere}
.change-snapshot .detail{display:block;font-size:13px;line-height:1.25;color:#506b75;overflow-wrap:anywhere}
.change-snapshot .slot-badges{display:flex;flex-wrap:wrap;gap:5px;margin-top:auto;padding-top:6px}
.change-snapshot .badge{font-size:10px}
.change-before .change-label{color:#819097}
.change-before .change-snapshot{filter:grayscale(1);opacity:.66;box-shadow:none}
.change-after .change-snapshot{outline:2px solid color-mix(in srgb,var(--venue-color) 45%,#fff);outline-offset:-2px}
.change-card:hover .change-after,.change-card:focus-visible .change-after{background:transparent;border:0}
.change-card:hover .change-snapshot,.change-card:focus-visible .change-snapshot{box-shadow:0 3px 12px #10313a28}
.change-snapshot.show-watermark::before,.change-snapshot.sport-watermark::before{inset:7% 2% 7% 48%;opacity:.09}
@media(max-width:680px){.change-snapshot{min-height:114px}.change-snapshot .name{font-size:17px}.change-snapshot.show-watermark::before,.change-snapshot.sport-watermark::before{inset:8% 3% 8% 48%}}
.change-location{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;margin:-2px 0 14px;padding:9px 13px;border:1px solid #96cfc3;border-left:5px solid #168274;border-radius:9px;background:#eaf7f2;color:#17473e;font-size:13px}
.change-location span{color:#365d57}
.slot.change-focus,.agenda-item.change-focus{outline:3px solid #0c7565;outline-offset:2px;box-shadow:0 0 0 6px #b9e7da,0 3px 10px #10313a38;z-index:5}
@media(max-width:680px){.notice-button{order:2;font-size:12px;padding:8px 9px}.changes-dialog{padding:15px;max-height:88vh}.changes-toolbar h2{font-size:21px}}

/* A large mic works in tall passes; shorter cards need more of the image in
   frame so its visual centre does not disappear above the card. */
.agenda-item.show-watermark[style*="live_music"]::before,
.slot.short.show-watermark[style*="live_music"]::before,
.slot.overlap.show-watermark[style*="live_music"]::before{background-size:auto 125%;background-position:center center}
@media(max-width:680px){
  .slot.show-watermark[style*="live_music"]::before{background-size:auto 125%;background-position:center center}
}
