@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{font-family:'DM Sans',system-ui,sans-serif;color:#163c32;background:#f5f3e9;font-synthesis:none;--green:#163c32;--muted:#5d6c60;--line:#d5d8c9;--yellow:#efd55a}
*{box-sizing:border-box}
body{margin:0}
button,input,select{font:inherit}
button,a,input,select{-webkit-tap-highlight-color:transparent}
button,a{touch-action:manipulation}
button{cursor:pointer}
button:disabled{cursor:wait;opacity:.6}
a{color:inherit;text-underline-offset:4px}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #b25b26;outline-offset:4px}
[hidden]{display:none!important}
.site-header{min-height:62px;display:flex;align-items:center;justify-content:space-between;padding:16px max(5vw,20px);border-bottom:1px solid var(--line);font-size:14px;gap:16px}
.site-header a{text-decoration:none}
.location{font:600 12px 'Space Grotesk',sans-serif;letter-spacing:.12em}
main{max-width:1280px;margin:auto;padding:0 5vw 60px}
.intro{display:flex;gap:32px;align-items:center;justify-content:space-between;padding:44px 0 35px}
.year{font-size:12px;font-weight:700;letter-spacing:.17em}
.wordmark h1{font:700 clamp(42px,4.6vw,66px)/1.05 'Space Grotesk',sans-serif;letter-spacing:-.065em;margin:9px 0 14px;white-space:nowrap}
.sun{color:#b75828;font-size:.9em;margin:0 9px}
.outline{font-size:.68em;letter-spacing:-.065em}
.wordmark p{font-size:16px;color:var(--muted);margin:0}
.planner{background:#fffef7;border:1px solid #cdd3c3;border-radius:14px;overflow:hidden;box-shadow:0 10px 40px #20302005}
.weekend-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 25px 17px}
.segmented{display:flex;background:#edf0e5;padding:4px;border-radius:9px;gap:3px}
.segmented button{min-height:46px;background:transparent;border:0;border-radius:6px;padding:10px 17px;font-weight:700;font-size:14px;color:var(--green)}
.segmented button span{font-weight:400;opacity:.8;margin-left:9px}
.segmented button[aria-pressed=true]{background:var(--green);color:white;box-shadow:0 2px 5px #12332215}
.time-zone{font-size:12px;color:var(--muted)}
.days{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:0 25px 22px;border-bottom:1px solid var(--line)}
.day-button{display:flex;align-items:center;gap:12px;background:none;border:1px solid var(--line);border-radius:8px;text-align:left;padding:14px 18px;color:var(--green);min-height:70px}
.day-button[aria-pressed=true]{background:var(--yellow);border-color:#ceb942}
.day-number{font:600 32px 'Space Grotesk',sans-serif;letter-spacing:-.04em}
.day-name{font-size:14px;font-weight:700;display:block}
.day-meta{font-size:12px;color:#53604f;display:block;margin-top:3px}
.filters{display:flex;gap:12px;padding:20px 25px 0;align-items:center}
.search{display:flex;align-items:center;gap:10px;background:#f5f5ee;border:1px solid var(--line);border-radius:7px;padding:0 13px;flex:1}
.search span{font-size:25px;line-height:1}
.search input{background:none;border:0;min-width:0;width:100%;height:44px;font-size:14px;color:var(--green);outline-offset:0}
.stage-filter select{min-height:44px;max-width:180px;border:1px solid var(--line);border-radius:7px;background:#fffef7;padding:0 28px 0 12px;color:var(--green);font-size:14px}
.star-filter{min-height:44px;border:1px solid var(--line);border-radius:7px;background:white;color:var(--green);padding:8px 13px;white-space:nowrap;font-size:14px;font-weight:600}
.star-filter[aria-pressed=true]{background:var(--green);color:white;border-color:var(--green)}
.star-filter span{font-size:12px;background:#e8eddf;color:var(--green);border-radius:20px;padding:3px 7px;margin-left:7px}
.schedule-heading{display:flex;justify-content:space-between;align-items:center;padding:23px 25px 20px;gap:15px}
.schedule-heading h2{font:600 24px 'Space Grotesk',sans-serif;margin:0 0 5px;letter-spacing:-.04em}
.schedule-heading p{font-size:13px;margin:0;color:var(--muted)}
.star-hint{font-style:italic}
.column-headings,.set-main{display:grid;grid-template-columns:138px minmax(0,1fr) 170px 44px;gap:15px;align-items:center}
.column-headings{padding:11px 25px;border-block:1px solid var(--line);font-size:10px;letter-spacing:.12em;font-weight:700;color:#5f6f60;background:#f0f2e7}
.set{border-bottom:1px solid #e3e6db;border-left:4px solid transparent}
.set:last-child{border-bottom:0}
.set.is-starred{border-left-color:#b7810e;background:#fffdf0}
.set.is-open{background:#edf1e7;border-left-color:var(--green)}
.set-main{padding:15px 25px 15px 21px;min-height:83px}
.set-time{font-variant-numeric:tabular-nums;font-size:14px;font-weight:600}
.set-time small{display:block;margin-top:4px;color:var(--muted);font-size:12px;font-weight:400}
.artist-toggle{display:flex;align-items:center;gap:12px;border:0;background:none;padding:0;min-width:0;text-align:left;color:var(--green);min-height:44px}
.artist-avatar{height:45px;width:45px;flex:0 0 45px;border-radius:50%;object-fit:cover;background:#dce3ce;display:grid;place-items:center;font:700 18px 'Space Grotesk',sans-serif}
.artist-name{display:block;font-size:17px;font-weight:700;letter-spacing:-.03em;overflow-wrap:anywhere}
.artist-sub{font-size:12px;color:var(--muted);margin-top:4px;display:block}
.chevron{font-size:15px;margin-left:5px;opacity:.65;display:inline-block}
.is-open .chevron{transform:rotate(180deg)}
.stage-tag{font-size:12px;line-height:1.4;color:#284c44;display:inline-flex;align-items:center;gap:7px}
.stage-dot{height:7px;width:7px;flex:0 0 7px;border-radius:50%;background:var(--stage-color)}
.star-button{background:transparent;border:1px solid transparent;border-radius:50%;color:#6c7866;min-height:44px;min-width:44px;font-size:27px;line-height:1}
.star-button:hover{background:#e7eddd}
.star-button[aria-pressed=true]{color:#946709;background:#f7e6a0}
.songs{margin:0 25px 18px 159px;padding:16px 18px;background:#fffef7;border:1px solid #d2dcc5;border-radius:9px}
.songs-header{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted);margin-bottom:10px}
.songs-header strong{font-size:14px;color:var(--green)}
.songs-header a{white-space:nowrap}
.track-list{margin:0;padding:0;list-style:none}
.track{display:flex;align-items:center;gap:12px;border-top:1px solid #edf0e5;padding:10px 0;min-height:57px}
.play{height:44px;width:44px;flex:0 0 44px;border:1px solid #cfd9c6;border-radius:50%;background:#eaf0e2;color:var(--green);font-size:12px}
.play:hover{background:var(--green);color:white}
.track-text{flex:1;min-width:0}
.track-title{font-size:14px;display:block;font-weight:500;text-decoration:none;overflow-wrap:anywhere}
.track-artist{font-size:12px;display:block;color:var(--muted);margin-top:3px}
.track-badge{font-size:11px;border-radius:4px;padding:3px 6px;background:#f0f0e6;color:#66725c;white-space:nowrap}
.track-duration{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.catalog-note{font-size:13px;color:#596550;line-height:1.5;padding:10px 0;list-style:none}
.set-warning{font-size:11px;color:#9e4e16;margin-top:5px;display:block}
.conflict-notice{margin:0 25px 15px;padding:10px 14px;font-size:13px;border-radius:6px;background:#fff0d9;color:#834716;line-height:1.5}
.notice{padding:14px 18px;margin-bottom:18px;background:#ffebce;color:#724016;border-radius:8px;font-size:14px;line-height:1.5}
.loading,.empty{padding:45px 25px;text-align:center;color:var(--muted);line-height:1.7}
.empty strong{display:block;font:600 23px 'Space Grotesk',sans-serif;color:var(--green)}
footer{padding:24px 3px;font-size:12px;color:var(--muted);line-height:1.8;display:flex;flex-wrap:wrap;justify-content:space-between;gap:9px 24px}
footer p{font-size:12px;margin:0;width:100%}
.player{position:fixed;bottom:18px;right:20px;width:min(430px,calc(100vw - 24px));padding:17px;background:var(--green);color:#fff;border:1px solid #63806a;border-radius:12px;box-shadow:0 10px 50px #102a3055;z-index:10}
.player-top{display:flex;justify-content:space-between;gap:12px;margin-bottom:12px}
.player-top strong{display:block;margin-top:5px;font-size:15px;line-height:1.4}
.player-top span:last-child{font-size:12px;color:#d1dfcf;display:block;margin-top:3px}
.eyebrow{font-size:10px;letter-spacing:.15em;color:#d6e1c6}
.player button{background:none;color:white;border:0;min-height:44px;min-width:44px;font-size:25px}
.player audio{width:100%;height:38px}
.player>a{display:inline-block;margin-top:9px;font-size:12px;color:#e7eedb}
.player iframe{border:0;width:100%;height:152px;border-radius:8px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.skip{position:absolute;left:10px;top:-100px;background:white;padding:10px;z-index:20}
.skip:focus{top:10px}
.privacy{max-width:720px;padding-block:40px;line-height:1.7}
.privacy h1{font-family:'Space Grotesk',sans-serif;font-size:36px}
.privacy h2{margin-top:32px}
.privacy li{margin-bottom:10px}

@media(min-width:1450px){main{padding-inline:40px}
}
@media(max-width:1000px){.intro{gap:20px}
.wordmark h1{font-size:48px;white-space:normal}
.outline{display:block;margin-top:5px;font-size:.85em}
.column-headings,.set-main{grid-template-columns:120px minmax(0,1fr) 130px 44px;gap:10px}
.songs{margin-left:141px}
.stage-tag{font-size:11px}
}
@media(max-width:700px){.site-header{padding:14px 18px;font-size:12px;min-height:49px}
.location{display:none}
main{padding:0 14px 55px}
.intro{padding:28px 4px 25px;display:block}
.wordmark h1{font-size:47px;white-space:normal}
.outline{display:inline;font-size:.66em}
.wordmark p{font-size:14px;line-height:1.5}
.planner{border-radius:10px}
.weekend-row{padding:15px 14px;display:block}
.segmented{display:flex;width:100%}
.segmented button{padding:8px 9px;flex:1;font-size:13px}
.segmented button span{font-size:12px;margin-left:5px}
.time-zone{display:block;font-size:11px;margin-top:12px;text-align:right}
.days{padding:0 14px 15px;gap:8px}
.day-button{padding:10px;gap:7px;min-height:69px;display:block}
.day-number{font-size:28px;display:block;margin:0 0 2px}
.day-name{font-size:12px;padding-top:3px}
.day-meta{font-size:10px;margin-top:4px}
.filters{padding:15px 14px 0;flex-wrap:wrap;gap:9px}
.search{flex-basis:100%}
.stage-filter{flex:1}
.stage-filter select{width:100%;max-width:none;font-size:13px}
.star-filter{font-size:13px}
.schedule-heading{padding:22px 15px 16px;align-items:start}
.schedule-heading h2{font-size:21px}
.schedule-heading p{font-size:12px}
.star-hint{display:none}
.column-headings{display:none}
.set-main{display:grid;grid-template-columns:1fr 44px;gap:5px 9px;padding:15px 14px 14px 11px;position:relative}
.set-time{grid-column:1;grid-row:1;font-size:12px;display:flex;gap:7px;align-items:baseline;flex-wrap:wrap}
.set-time small{display:inline;font-size:11px;margin:0}
.artist-toggle{grid-column:1;grid-row:2;min-height:48px;gap:10px}
.artist-avatar{height:37px;width:37px;flex-basis:37px}
.artist-name{font-size:17px}
.artist-sub{font-size:11px}
.star-button{grid-row:1/3;grid-column:2}
.stage-tag{grid-column:1;grid-row:3;font-size:11px;margin-left:47px;padding-top:3px}
.songs{margin:0 13px 16px 11px;padding:13px 11px}
.songs-header{font-size:11px;align-items:start}
.songs-header strong{font-size:13px}
.track{gap:8px}
.track-duration{display:none}
.track-badge{font-size:10px;padding:3px 4px}
.track-title{font-size:13px}
.track-artist{font-size:11px}
.play{height:44px;width:44px;flex-basis:44px}
.conflict-notice{margin-inline:14px;font-size:12px}
footer{padding-inline:4px;font-size:11px}
footer p{font-size:11px}
.player{bottom:10px;right:12px;padding:13px}
.privacy{padding:25px 10px}
.notice{font-size:13px}
.set-warning{font-size:11px}
}
@media(prefers-reduced-motion:no-preference){button,a{transition:background-color .15s ease,color .15s ease}
}
@media(max-width:360px){.wordmark h1{font-size:40px}
.day-number{float:none}
.day-button{text-align:center}
.track-badge{display:none}
}
@media print{.site-header,.intro,.filters,.songs,.player,.star-button,.star-hint{display:none!important}
main{padding:0}
.planner{border:0}
.set-main{break-inside:avoid}
.set{break-inside:avoid}
.days,.weekend-row{padding:8px}
footer{font-size:10px}
}

/* A review sheet first; the prepared PNG can then go straight to native sharing. */
.share-day{display:inline-flex;align-items:center;justify-content:center;gap:8px;flex-shrink:0;min-height:44px;padding:10px 14px;border:1px solid #bac8b7;border-radius:8px;background:#e8eddf;color:var(--green);font-size:13px;font-weight:700}
.share-day:hover{background:#dbe5cf}
.share-dialog{padding:0;border:1px solid #cdd3c3;border-radius:16px;background:#fffef7;color:var(--green);width:min(570px,calc(100vw - 32px));max-height:92vh;max-height:92dvh;overflow:hidden;box-shadow:0 24px 100px #102a3066}
.share-dialog[open]{display:flex;flex-direction:column}
.share-dialog::backdrop{background:#102a30a8;backdrop-filter:blur(3px)}
.share-sheet-heading{display:flex;justify-content:space-between;align-items:start;gap:16px;padding:22px 24px 18px;flex-shrink:0;border-bottom:1px solid var(--line)}
.share-sheet-heading .eyebrow{font-size:10px;font-weight:700;color:#66725c}
.share-sheet-heading h2{font:700 30px 'Space Grotesk',sans-serif;letter-spacing:-.04em;margin:4px 0 5px}
.share-sheet-heading p{font-size:13px;color:var(--muted);margin:0}
.close-share{border:1px solid var(--line);background:none;border-radius:50%;font-size:25px;min-height:44px;min-width:44px;color:var(--green);line-height:1}
.share-preview{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:18px 24px;background:#e8ecdf}
.share-preview canvas{width:100%;height:auto;display:block;box-shadow:0 4px 16px #163c3220}
.share-sheet-footer{padding:15px 24px 20px;flex-shrink:0;border-top:1px solid var(--line);background:#fffef7}
.share-sheet-footer #share-status{margin:0 0 12px;font-size:13px;line-height:1.45}
.share-actions{display:flex;gap:10px;flex-wrap:wrap}
.share-actions button,.share-actions a,.share-empty button{min-height:46px;padding:12px 16px;border:1px solid #b9c7b2;border-radius:8px;font-size:14px;font-weight:700;text-align:center;text-decoration:none;cursor:pointer}
.share-actions button{background:var(--green);color:#fff;flex:1}
.share-actions a{background:#e8eddf;color:var(--green);flex:1}

.share-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:18px;padding:24px 12px}
.share-empty>span{font-size:60px;color:#997310}
.share-empty strong{font:600 23px 'Space Grotesk',sans-serif;max-width:260px}
.share-empty button{background:#fffef7;color:var(--green)}
@media(max-width:700px){.schedule-heading{gap:8px;align-items:center}.share-day{padding:9px 11px;font-size:12px;gap:5px}.share-day svg{width:16px}.schedule-heading h2{font-size:19px}.share-dialog{margin:auto 0 0;width:100%;max-width:none;max-height:94vh;max-height:94dvh;border-radius:18px 18px 0 0;border-bottom:0}.share-sheet-heading{padding:18px 18px 14px}.share-sheet-heading h2{font-size:27px}.share-preview{padding:14px 18px}.share-sheet-footer{padding:14px 18px max(18px,env(safe-area-inset-bottom))}.share-actions{gap:8px}.share-actions button,.share-actions a{font-size:13px;padding:12px 10px}}
@media(max-width:360px){.share-day{font-size:11px;padding:9px}.share-day svg{display:none}.schedule-heading h2{font-size:18px}}
@media print{.share-day,.share-dialog{display:none!important}}

body:has(.share-dialog[open]){overflow:hidden}

.share-styles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;border:0;padding:14px 24px 16px;margin:0;flex-shrink:0;background:#fffef7}
.style-choice{position:relative;cursor:pointer;display:flex;flex-direction:column;gap:6px;text-align:center;font-size:12px;font-weight:600;min-width:0;padding:5px;border:2px solid transparent;border-radius:10px;color:#66725c}
.style-choice:has(input:checked){border-color:var(--green);color:var(--green);background:#e8eddf}
.style-choice:has(input:focus-visible){outline:3px solid #bc7b1d;outline-offset:3px}
.style-choice input{position:absolute;opacity:0;width:1px;height:1px}
.style-swatch{display:flex;align-items:center;justify-content:center;height:62px;border-radius:5px;overflow:hidden;position:relative}
.style-swatch b{position:relative;z-index:1;white-space:nowrap}
.swatch-sunset{background:linear-gradient(115deg,#f4b950,#e98083);color:#4d2037;font:italic 700 24px Georgia,serif}
.swatch-sunset:after{content:"";position:absolute;width:55px;height:55px;right:-8px;bottom:-20px;border:9px solid #b94638;border-radius:50%;box-shadow:0 0 0 9px #ef8060}
.swatch-dark{background:#121818;color:#d3ff70;font:700 16px 'Space Grotesk',sans-serif;letter-spacing:-.06em}
.swatch-dark:after{content:"";position:absolute;width:30px;height:60px;right:5px;border:1px solid #c2a3ff;border-radius:50%;transform:rotate(-35deg)}
.swatch-setlist{background:#f3f0e4;color:#282820;border-left:4px solid #eb754e;font:700 32px 'Space Grotesk',sans-serif}
@media(max-width:700px){.share-styles{padding:9px 18px 12px;gap:6px}.style-choice{font-size:11px;padding:4px;gap:4px}.style-swatch{height:43px}.swatch-sunset{font-size:21px}.swatch-dark{font-size:13px}.swatch-setlist{font-size:27px}.share-sheet-heading{padding-bottom:12px}.share-sheet-footer{padding-top:12px}}
@media(max-height:580px){.style-swatch{height:30px}.share-styles{padding-block:6px}.share-sheet-heading{padding-top:12px;padding-bottom:8px}.share-sheet-heading .eyebrow{display:none}.share-sheet-heading h2{font-size:24px}}

@media(max-width:360px){.swatch-sunset{font-size:18px}.swatch-dark{font-size:12px}}
