/* Coastal Rhythm: approved podcast colours and homepage section bands.
   The game has its own template and does not load these rules. */
:root{--bg:#f3f6f5;--ink:#293e49;--muted:#9d452e;--accent:#a7482c;--panel:#e0eaec;--line:#c3d1d4;--soft:#e9efef;--highlight:#426575;--band:#e0e9ec;--form-bg:#f9fbfa;--portrait-bg:#f8f5ed;--gutter:clamp(22px,5vw,72px)}
body[data-theme=signal] #site{max-width:1440px;padding:0 var(--gutter);overflow:visible}
.site-nav::after{display:none}
.preview-banner{color:#466775;border-bottom:0}
body[data-theme=signal] .home-layout{display:block;padding-top:0;padding-bottom:0;position:relative;isolation:isolate}
.home-hero{display:grid;grid-template-columns:1.1fr .9fr;gap:70px;align-items:center;padding:34px 0 68px}
.home-hero>*{min-width:0}
.home-hero .signal-intro{padding-top:0}
body[data-theme=signal] .home-hero .signal-intro h1{margin-top:0;font-weight:600}
body[data-theme=signal] .home-feature{margin:0;padding:30px;border-radius:4px;align-self:center;border:1px solid #bacdd3;box-shadow:7px 7px 0 #e8eeef}
body[data-theme=signal] .home-about,body[data-theme=signal] .home-layout .signal-index,body[data-theme=signal] .home-newsletter,body[data-theme=signal] .home-contact{position:relative;padding:58px 0;border:0;margin:0;overflow:visible}
.home-about::before,.home-play-teaser::before,.home-contact-invitation::before{content:'';position:absolute;inset:0 calc(-1 * var(--gutter));z-index:-1;background:var(--band)}
body[data-theme=signal] .home-about .hosts{margin-top:30px;gap:70px}
.home-about .host{display:grid;grid-template-columns:90px minmax(0,1fr);align-items:start;gap:18px;padding-left:22px;border-left:2px solid #abbfc8}
.home-about .host-copy{min-width:0}
.home-about .host-copy:only-child{grid-column:1/-1}
.home-about .host-avatar{width:90px;padding-top:12px;border:1px solid #c3d1d4;border-radius:30px 30px 6px 6px;background:var(--portrait-bg);overflow:hidden}
.home-about .host .host-portrait{display:block;width:100%;height:auto;aspect-ratio:18/23;object-fit:contain;border:0;border-radius:0;background:transparent}
.home-about .host h3{margin:0 0 10px}
.home-about .host-avatar h3{margin:0 0 6px;padding:0 4px;font-size:18px;line-height:1.3;text-align:center}
body[data-theme=signal] .home-layout .signal-index .episode-row{padding:23px 0;min-height:99px}
body[data-theme=signal] .home-newsletter{padding-top:49px;padding-bottom:49px}
body[data-theme=signal] .home-contact{gap:70px}
.home-contact input,.home-contact select,.home-contact textarea{background:var(--form-bg)}
@media(max-width:1000px){
 body[data-theme=signal] .home-about .hosts{grid-template-columns:1fr;gap:32px}
}
@media(max-width:760px){
 .home-about .host{grid-template-columns:70px minmax(0,1fr);gap:12px;padding-left:12px}
 .home-about .host-avatar{width:70px;padding-top:10px;border-radius:24px 24px 5px 5px}
 .home-about .host-avatar h3{margin-bottom:4px;font-size:16px}
 .home-hero{grid-template-columns:1fr;gap:30px;padding:28px 0 44px}
 body[data-theme=signal] .home-about,body[data-theme=signal] .home-layout .signal-index,body[data-theme=signal] .home-newsletter,body[data-theme=signal] .home-contact{padding:38px 0}
 body[data-theme=signal] .home-about .hosts{grid-template-columns:1fr;gap:28px}
 body[data-theme=signal] .home-contact{gap:25px}
}

/* Show-level listening choices stay distinct from individual episode links. */
.listen-platforms{display:flex;align-items:flex-start;flex-wrap:wrap;gap:8px 28px;padding:20px 0 24px;margin-bottom:8px;border-top:1px solid var(--line)}
.listen-primary{display:flex;flex-wrap:wrap;gap:12px 24px;min-width:0}
.listen-choice{display:inline-flex;align-items:center;gap:10px;min-height:52px;max-width:100%;color:var(--ink)}
.listen-icon{display:grid;place-items:center;width:44px;height:44px;flex-shrink:0;border:1px solid var(--line);border-radius:50%;background:var(--portrait-bg)}
.listen-icon img{display:block;width:24px;height:24px;object-fit:contain}
.listen-label{min-width:0}.listen-label strong{display:block;color:var(--accent);font:500 15px/1.4 var(--body)}.listen-label small{display:block;font:12px/1.5 var(--body);color:var(--highlight);margin-top:2px}
.episode-page .platforms>a,.episode-page .platforms>span{color:var(--accent)}
.listen-choice[href]:hover .listen-icon{border-color:var(--highlight);background:var(--soft)}.listen-choice[href]:hover strong{text-decoration:underline;text-underline-offset:4px}
.listen-more{flex-basis:100%;min-width:0;margin-left:0}.listen-more summary{width:max-content;max-width:100%;min-height:44px;padding:12px 4px;cursor:pointer;font:14px/1.5 var(--body);text-decoration:underline;text-underline-offset:4px;color:var(--highlight)}
.listen-extra{display:flex;flex-wrap:wrap;gap:16px 28px;padding-top:14px}.listen-extra .listen-choice{flex-direction:column;gap:7px;text-align:center;min-width:90px}
.listen-choice[href]:focus-visible,.listen-more summary:focus-visible{outline:3px solid var(--highlight);outline-offset:4px;border-radius:4px}
@media(max-width:760px){
 .listen-primary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:12px}
 .listen-extra{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
 .listen-extra .listen-choice{min-width:0}.listen-extra .listen-label strong{font-size:14px}
}

/* Episode destinations are siblings of the show-notes link, never nested. */
body[data-theme=signal] .home-layout .signal-index .episode-row{gap:24px}
.episode-main-link{display:flex;align-items:center;gap:25px;flex:1;min-width:0;min-height:60px}
.episode-platforms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:300px;flex-shrink:0}
.episode-platforms .listen-choice{flex-direction:column;gap:5px;text-align:center;min-width:0;min-height:44px}
.episode-platforms .listen-icon{width:34px;height:34px}.episode-platforms .listen-icon img{width:20px;height:20px}
.episode-platforms .listen-label strong{font-size:12px}.episode-platforms .listen-label small{font-size:11px}
.episode-row:hover .row-text strong{text-decoration:none}.episode-main-link:hover .row-text strong{text-decoration:underline;text-underline-offset:5px}
body[data-theme=signal] .home-layout .signal-index .episode-row:hover{padding-left:0;padding-right:0;background:transparent}
.episode-main-link:focus-visible{outline:3px solid var(--highlight);outline-offset:5px}
/* The show footer is shared by podcast pages; the standalone game is unchanged. */
.site-footer{display:grid;grid-template-columns:minmax(0,.85fr) minmax(150px,.6fr) minmax(0,1.25fr);gap:36px;align-items:start;max-width:1440px;margin:0 auto;padding:44px var(--gutter) 40px;background:var(--bg);color:var(--ink);border-top:0}
.footer-brand,.footer-listen{min-width:0}.footer-wordmark{display:inline-flex;align-items:center;gap:12px;font:600 23px/1.1 var(--display);letter-spacing:-.6px;min-height:44px}.footer-wordmark img{display:block;width:66px;height:44px;object-fit:contain}
.footer-brand p{font:15px/1.6 var(--body);margin:15px 0 12px;max-width:260px}.footer-status{font:12px/1.5 var(--body);color:var(--highlight)}
.footer-nav{display:grid;grid-template-columns:repeat(2,max-content);gap:0 18px;align-content:start;font:14px/1.5 var(--body)}.footer-nav a{display:flex;align-items:center;min-height:44px}.footer-nav a:hover{text-decoration:underline;text-underline-offset:4px}
.footer-listen h2{font:500 18px/1.4 var(--display);margin:0 0 12px}.footer-listen .listen-platforms{padding:0;margin:0;border:0}.footer-listen .listen-choice{min-height:48px}.footer-listen .listen-primary{gap:12px 20px}
@media(max-width:1000px){.site-footer{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.footer-listen{grid-column:1/-1}}
@media(max-width:760px){
 body[data-theme=signal] .home-layout .signal-index .episode-row{display:block}
 .episode-main-link{gap:14px}.episode-platforms{width:100%;max-width:360px;margin-top:20px}
 .site-footer{grid-template-columns:minmax(0,1fr);gap:28px;padding-top:34px;padding-bottom:32px}.footer-listen{grid-column:auto}.footer-brand p{max-width:320px}
}

/* Brief, contained detours. Fixed art boxes preserve the layout before/during play. */
.play-stage{position:relative;overflow:hidden}.play-stage canvas{position:absolute;inset:0;display:block;width:100%;height:100%;pointer-events:none}.play-stage canvas[hidden]{display:none}
.play-scene.is-playing .play-fallback,.play-scene.is-playing .play-cone{visibility:hidden}
.play-trigger[hidden]{display:none}
.play-trigger,.play-game-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;font:14px/1.4 var(--body)}
.play-trigger{position:absolute;inset:0;width:100%;min-height:44px;padding:0;border:0;color:var(--ink);background:transparent;cursor:pointer}.play-trigger[aria-disabled=true]{cursor:default}
.play-game-link{color:var(--accent);text-decoration:underline;text-underline-offset:4px}.play-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 20px}
.host-identity{width:90px;min-width:0}
.host-game-link{width:100%;font-size:11px;text-align:center}
.home-play-teaser{display:block;position:relative;padding:42px 0 38px;border:0}
.home-play-teaser h2{font:500 27px/1.25 var(--display);letter-spacing:-.7px;max-width:none;margin-bottom:24px}
.play-scene--jump .play-stage{height:180px;width:100%;max-width:480px;margin:0 auto}
.play-scene--jump .play-fallback{position:absolute;left:17%;bottom:7px;height:145px;width:auto;object-fit:contain}
.play-scene.has-preview .play-fallback{visibility:hidden}
.play-preview-label{position:absolute;left:12px;top:2px;z-index:1;font:12px/1.4 var(--body);color:var(--highlight);pointer-events:none}
.play-hint{position:absolute;right:8px;bottom:8px;padding:4px 8px;border-radius:10px;background:var(--portrait-bg);font:11px/1.4 var(--body)}
.play-corner{position:fixed;right:max(14px,env(safe-area-inset-right));bottom:max(var(--play-bottom,14px),env(safe-area-inset-bottom));z-index:25;display:flex;align-items:center;background:var(--ink);color:var(--portrait-bg);border:1px solid var(--highlight);border-radius:10px;box-shadow:0 5px 16px #293e4926;max-width:calc(100vw - 28px)}
.play-corner[hidden]{display:none}.play-corner>a{display:flex;gap:10px;align-items:center;padding:6px 12px;min-height:54px;font:500 15px/1.4 var(--body)}.play-corner img{width:35px;height:45px;object-fit:contain}.play-corner button{width:44px;min-height:54px;color:var(--portrait-bg);font:22px var(--body);text-align:center;border-left:1px solid #627782}.play-corner-short{display:none}
.play-corner a:focus-visible,.play-corner button:focus-visible{outline:3px solid #f8f5ed;outline-offset:-4px}.play-trigger:focus-visible,.play-game-link:focus-visible{outline:3px solid var(--highlight);outline-offset:3px}
@media(max-width:760px){.host-identity{width:70px}.home-play-teaser{grid-template-columns:minmax(0,1fr);gap:10px}.home-play-teaser h2{font-size:24px}.play-corner-long{display:none}.play-corner-short{display:inline}.play-corner>a{padding:4px 10px;gap:6px;min-height:48px}.play-corner img{width:27px;height:35px}.play-corner button{min-height:48px}.play-scene--jump .play-stage{height:160px}}
@media(prefers-reduced-motion:reduce){.play-scene.is-playing canvas{display:none!important}}


.home-feature .episode-platforms{width:100%;max-width:330px;margin-top:24px}
.home-contact-invitation{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:28px;padding:42px 0}
.home-contact-invitation h2{font:500 30px/1.2 var(--display);letter-spacing:-.8px;margin:0 0 12px}
.home-contact-invitation p{margin:0;max-width:600px}
.contact-page{padding:35px 0 65px}.contact-page .home-contact{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:start;padding:42px 0;gap:60px}
.contact-page h1{font:500 48px/1.1 var(--display);letter-spacing:-1.5px;margin:0 0 24px}
@media(max-width:760px){.home-contact-invitation{grid-template-columns:minmax(0,1fr);gap:20px;padding:38px 0}.home-contact-invitation .newsletter-link{justify-self:start}.contact-page .home-contact{grid-template-columns:minmax(0,1fr);gap:28px;padding:28px 0}.contact-page h1{font-size:38px}}
@media(hover:hover) and (pointer:fine){.play-hint{font-size:0}.play-hint::after{content:'Click to run';font-size:11px}}
.play-stage>.play-trigger:focus-visible{outline-offset:-4px}
@media(max-width:760px){.play-hint::after{content:none}.play-hint{font-size:11px}}


/* Playable warm-up: fixed scene/status slots avoid moving the page during play. */
.game-teaser{min-width:0;width:100%;margin-inline:auto;position:relative}.teaser-intro{font:16px/1.5 var(--body);margin:0 0 14px}.teaser-stage{position:relative;aspect-ratio:12/5;overflow:hidden;border:1px solid #a6bdc8;border-radius:8px;background:#e0e9ec}.teaser-stage canvas{display:block;width:100%;height:100%;cursor:pointer;touch-action:manipulation}.teaser-stage canvas[hidden]{display:none}.teaser-stage canvas:focus-visible{outline:3px solid #426575;outline-offset:-4px}.teaser-fallback{height:100%;display:flex;align-items:center;justify-content:center;gap:18px;padding:12px;color:#426575;font:600 16px/1.4 var(--body)}.teaser-fallback[hidden]{display:none}.teaser-fallback img{height:90%;width:auto;object-fit:contain}.teaser-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.teaser-finish{font:600 17px/1.35 var(--body);min-height:1.5em;margin:12px 0 8px}.teaser-finish[hidden]{display:block;visibility:hidden}.teaser-actions{display:flex;gap:8px 16px;flex-wrap:wrap;align-items:center;min-height:52px;align-content:start}.teaser-actions button{min-height:44px;padding:10px 16px;border-radius:5px;background:#a7482c;color:#f8f5ed;border:1px solid #a7482c;font:600 15px/1.4 var(--body);cursor:pointer}.teaser-actions .teaser-secondary{background:transparent;color:#293e49;border-color:#426575}.teaser-actions button[hidden]{display:none}.teaser-actions button:focus-visible{outline:3px solid #426575;outline-offset:3px}.teaser-actions .play-game-link{font-size:15px;min-height:44px}.game-teaser[data-teaser-state=done] .play-game-link{font-weight:700}
@media(max-width:760px){.teaser-stage{aspect-ratio:4/3}.teaser-fallback{font-size:14px;gap:10px}.teaser-actions{min-height:104px}.teaser-finish{min-height:2.7em}}

/* Static exports of the actual renderer preserve the scene before Play. */
.teaser-fallback{position:absolute;inset:0;padding:0}
.teaser-fallback picture,.teaser-fallback img{display:block;width:100%;height:100%}
.teaser-fallback img{object-fit:cover}
/* Dave's entrance moves only his artwork; the name and biography stay put. */
@media(prefers-reduced-motion:no-preference){
 .host-motion [data-host-entrance]:not(.host-ready) .play-stage{transform:translateX(calc(-100vw - 100%))}
 .host-motion [data-host-entrance]:not(.host-ready) .host-speech{visibility:hidden}
}
.home-about [data-host-entrance] .host-avatar,.home-about [data-host-entrance] .play-stage{overflow:visible}
[data-host-entrance].is-entering .play-stage{transform:translateX(var(--host-x,0px));will-change:transform}
[data-host-entrance]{position:relative}
.host-speech{position:absolute;top:53px;left:-35px;width:70px;margin:0;padding:6px 4px;border:1px solid #426575;border-radius:10px;background:#f8f5ed;color:#293e49;font:600 11px/1.25 var(--body);text-align:center}
.host-speech::before{content:'';position:absolute;top:50%;right:-5px;width:8px;height:8px;background:#f8f5ed;border-top:1px solid #426575;border-right:1px solid #426575;transform:translateY(-50%) rotate(45deg)}
[data-host-entrance].entrance-pending .host-speech{visibility:hidden}
@media(prefers-reduced-motion:reduce){[data-host-entrance].is-entering .play-stage{transform:none}}

[data-host-entrance].is-arrived .host-speech{animation:host-speech-pop .2s ease-out}
@keyframes host-speech-pop{from{opacity:0;transform:translateY(3px) scale(.95)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){[data-host-entrance].is-arrived .host-speech{animation:none}}

/* The homepage hosts the shared full game without sharing its input or CSS scope. */
.home-full-game{width:100%;min-width:0}.home-full-game iframe{display:block;width:100%;height:1000px;border:0;border-radius:12px;background:transparent}.game-standalone-link{font:14px/1.5 var(--body);margin:12px 0 0}.game-standalone-link a{color:var(--muted,#426575)}#pod-to-5k{scroll-margin-top:20px}

/* Editorial invitations: useful copy and small native coastal illustrations. */
.home-game-heading{display:flex;align-items:center;justify-content:space-between;gap:18px 32px;flex-wrap:wrap;margin-bottom:24px}
.home-play-teaser .home-game-heading h2{flex:1 1 540px;margin:0}
a.game-standalone-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;margin:0;padding:10px 15px;border:1px solid var(--highlight);border-radius:3px;color:var(--highlight);font:14px/1.3 var(--body);white-space:nowrap}
a.game-standalone-link:hover{background:var(--soft)}
body[data-theme=signal] .home-invitation{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(220px,.85fr);align-items:center;gap:60px;padding:50px 0;min-height:350px}
.home-invitation>*{min-width:0}.home-invitation h2{font:500 30px/1.2 var(--display);letter-spacing:-.8px;margin:0 0 14px}
.home-invitation .invitation-copy>p{margin:0;max-width:580px;line-height:1.6}
.invitation-details{list-style:none;padding:0;margin:18px 0 23px;display:grid;gap:7px;font-size:15px;line-height:1.45}
.invitation-details li{position:relative;padding-left:17px}.invitation-details li::before{content:'';position:absolute;left:0;top:.6em;width:6px;height:2px;background:var(--accent)}
.invitation-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px}.invitation-status{font:12px/1.5 var(--mono);color:var(--highlight)}
.invitation-art{display:flex;align-items:center;justify-content:center}.invitation-illustration{display:block;width:min(340px,100%);height:auto}
body[data-theme=signal] .home-contact-invitation.home-invitation{grid-template-columns:minmax(0,1.35fr) minmax(220px,.85fr)}
.home-contact-invitation .invitation-copy{grid-column:2;grid-row:1}.home-contact-invitation .invitation-art{grid-column:1;grid-row:1}
@media(max-width:760px){body[data-theme=signal] .home-invitation{grid-template-columns:minmax(0,1fr);gap:20px;padding:38px 0;min-height:0}.home-contact-invitation .invitation-copy,.home-contact-invitation .invitation-art{grid-column:auto;grid-row:auto}.invitation-illustration{width:min(250px,100%)}.invitation-details{margin:16px 0 20px}.home-game-heading{gap:12px;margin-bottom:18px}.home-play-teaser .home-game-heading h2{flex-basis:100%}}

/* Mirrored artwork edges share the same content gutters. */
.home-newsletter .invitation-art{justify-content:flex-end}.home-contact-invitation .invitation-art{justify-content:flex-start}
@media(max-width:760px){.host-speech{top:43px}body[data-theme=signal] .home-contact-invitation.home-invitation{grid-template-columns:minmax(0,1fr)}.home-invitation .invitation-art{justify-content:center}}
/* Original platform SVGs remain intact; their alpha silhouettes carry the site palette. */
@supports ((mask-image:url("")) or (-webkit-mask-image:url(""))){
 .listen-icon::before{content:'';grid-area:1/1;width:var(--platform-size,24px);height:var(--platform-size,24px);background:var(--highlight);-webkit-mask:var(--platform-icon) center/contain no-repeat;mask:var(--platform-icon) center/contain no-repeat}
 .listen-icon img{grid-area:1/1;visibility:hidden}.episode-platforms .listen-icon{--platform-size:20px}
 .listen-choice[href]:hover .listen-icon::before{background:var(--accent)}
}

/* Explicit mobile game focus fills the page without rotating or changing camera physics. */
.home-full-game[data-game-focused="true"]{position:fixed;inset:0;z-index:1000;width:100%;height:100dvh;background:#293e49}
.home-full-game[data-game-focused="true"] iframe{width:100%;height:100%;border-radius:0}
