/* Signal & Tide: the invitation, room assembly, and sound welcome. */
.harbor-setup{display:grid;grid-template-columns:minmax(470px,1fr) minmax(400px,1fr);gap:5vw;align-items:center;min-height:calc(100svh - 180px)}
.harbor-setup .welcome{padding:30px 0;max-width:800px}
.harbor-setup .welcome h1{font-size:clamp(60px,5.8vw,112px);letter-spacing:-.065em;line-height:.97;margin:22px 0 30px}
.harbor-setup .welcome h1 em{font-style:normal;color:#35d4ed}
.harbor-setup .intro{max-width:620px;font-size:clamp(20px,1.5vw,28px);line-height:1.5;color:#c5dce5}
.harbor-setup .eyebrow{font-size:12px;letter-spacing:2.6px}
.setup-invitation{display:flex;flex-wrap:wrap;gap:12px 20px;margin:28px 0 0;font-size:10px;letter-spacing:1.1px;color:#8aafbf}
.harbor-setup #create{display:grid;grid-template-columns:1.15fr .8fr;gap:18px;margin:28px 0 20px;padding:24px;border:1px solid #426376;border-radius:12px;background:#092737e8;box-shadow:0 15px 45px #00141d40}
.harbor-setup #create label{font-size:12px;letter-spacing:.5px;color:#b7d2df;gap:10px}
.harbor-setup #create select{width:100%;min-width:0;min-height:52px;background:#102f40;border-color:#3b6073;border-radius:5px;font-size:17px}
.harbor-setup #create button{grid-column:1/-1;min-height:58px;border:1px solid #6de8f5;border-radius:6px;background:#35d4ed;color:#052435;font-size:21px;font-weight:700;box-shadow:0 4px 22px #35d4ed20}
.harbor-setup #create button:hover{background:#85edf7}
.harbor-setup .muted{max-width:540px;font-size:14px;color:#8daebf;line-height:1.7}
.harbor-setup .welcome-art{position:relative;inset:auto;display:block;width:100%;max-width:none;align-self:stretch;min-height:540px;padding:0}
.harbor-setup .harbor-welcome{height:calc(100% - 120px);min-height:460px;padding:38px;border:1px solid #497d8b;border-radius:90px 12px 12px 12px;box-shadow:0 35px 100px #000b10a0;background-position:56% center}
.harbor-setup .harbor-welcome:before{background:linear-gradient(180deg,#06223530 35%,#061c2ce8),linear-gradient(90deg,#071d2b70,transparent)}
.harbor-setup .harbor-caption{margin-top:auto;padding-top:180px}
.harbor-setup .harbor-caption strong{font-size:clamp(25px,2.2vw,42px);max-width:450px;line-height:1.15}
.harbor-setup .moored-fleet{margin-top:28px;gap:36px}
.harbor-setup .moored-fleet .crew-vessel{width:85px;height:85px}
.harbor-setup .moored-fleet>div{font-size:12px;color:#d9edf4}
.harbor-setup .harbormaster{padding:22px 12px;gap:20px}
.harbor-setup .harbormaster>span:last-child{font-size:17px;letter-spacing:.4px}
.harbor-setup .harbormaster small{font-size:13px;letter-spacing:1.5px;text-transform:uppercase}
.harbor-lobby{max-width:1920px;margin:0 auto}
.harbor-lobby .lobby-masthead{display:flex;justify-content:space-between;align-items:center;gap:30px}
.harbor-lobby .lobby-masthead .eyebrow{margin:2px 0 12px;font-size:12px;letter-spacing:2px}
.harbor-lobby h1{margin:0;font-size:clamp(42px,4.2vw,76px);letter-spacing:-.045em;line-height:1.05}
.lobby-beacon{display:flex;align-items:center;gap:12px;color:#a6c6d4;font-size:11px;letter-spacing:1.7px;white-space:nowrap}
.lobby-beacon>span{width:9px;height:9px;background:#35d4ed;border-radius:50%;box-shadow:0 0 16px #35d4ed80}
.harbor-lobby>.intro{font-size:clamp(18px,1.3vw,24px);max-width:none;color:#9ebdcb;margin:18px 0 24px;line-height:1.5}
.harbor-lobby .lobby-harbor{grid-template-columns:1fr 1.04fr;gap:24px;margin:0 0 24px}
.harbor-lobby .join{display:flex;gap:30px;align-items:center;max-width:none;padding:30px;background:linear-gradient(120deg,#113849,#0b293b);border:1px solid #477181;border-radius:12px;box-shadow:0 15px 40px #00141e30}
.harbor-lobby .join .qr{flex:0 0 auto;width:clamp(170px,12vw,230px);height:clamp(170px,12vw,230px);padding:12px;background:white;border-radius:8px;box-shadow:0 0 0 5px #74c3d51c}
.harbor-lobby .join .qr svg{display:block;width:100%;height:100%}
.harbor-lobby .join .eyebrow{font-size:9px;letter-spacing:1.6px;color:#8db4c5;margin:0 0 9px}
.harbor-lobby .join h2{font-size:clamp(25px,2.2vw,40px);letter-spacing:-1px;margin:0 0 14px}
.harbor-lobby .room-code{display:block;font-size:clamp(52px,4.3vw,82px);letter-spacing:.12em;line-height:1;color:#35d4ed}
.harbor-lobby .join p{margin:14px 0 8px;font-size:15px}
.harbor-lobby .join a{color:#d2e9f0;text-decoration-color:#416a7b;text-underline-offset:4px;overflow-wrap:anywhere}
.harbor-lobby .join small{display:block;font-size:12px;color:#8fb2c3;line-height:1.65}
.harbor-lobby .join .notice{font-size:11px;color:#ffb38b;max-width:290px}
.harbor-lobby .lobby-guide-scene{border:1px solid #3c6678;border-radius:12px;overflow:hidden;min-height:280px;background:#0d3445}
.harbor-lobby .lobby-guide-scene .harbor-welcome{height:100%;min-height:280px;border:0;border-radius:0;background-position:50% 52%}
.harbor-lobby .lobby-guide-scene .harbor-welcome:before{background:linear-gradient(90deg,#082b3aed,#082b3a88),linear-gradient(0deg,#09283a99,transparent)}
.harbor-lobby .lobby-guide-scene .phase-guide{inset:0;border-radius:0;background:transparent;padding:30px;gap:24px;min-height:100%}
.harbor-lobby .lobby-guide-scene .phase-guide p{font-size:clamp(20px,1.6vw,29px);line-height:1.42}
.harbor-lobby .lobby-guide-scene .phase-speaker{font-size:20px;color:#eff8fb}
.harbor-lobby .lobby-guide-scene .phase-speaker small{color:#35d4ed;font-size:10px;letter-spacing:2px;margin-top:5px}
.lobby-guide-heading{position:absolute;left:32px;bottom:32px;display:grid;gap:10px}
.lobby-guide-heading>span{font-size:10px;letter-spacing:1.8px;color:#35d4ed}
.lobby-guide-heading>strong{font-size:38px;letter-spacing:-1px}
.lobby-guide-heading>small{font-size:14px;color:#bdd5df}
.lobby-guide-scene:has(.phase-guide) .lobby-guide-heading{display:none}
.harbor-lobby .crew-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(225px,1fr));gap:18px;margin:0}
.harbor-lobby .crew{padding:18px 22px;border:1px solid #335c70;border-top:3px solid #6799ae;border-radius:8px;background:linear-gradient(150deg,#102f41e8,#082738d9)}
.harbor-lobby .crew:has([data-boat="coral"]){border-top-color:#ff8a48}
.harbor-lobby .crew:has([data-boat="tern"]){border-top-color:#35d4ed}
.harbor-lobby .crew:has([data-boat="amber"]){border-top-color:#e8bf62}
.harbor-lobby .crew h2{margin:0 0 5px;font-size:clamp(23px,1.9vw,34px);gap:13px}
.harbor-lobby .crew-name .crew-vessel{width:60px;height:60px}
.harbor-lobby .crew-name>span:last-child{display:block}
.harbor-lobby .crew-name small{display:block;margin-top:4px;font-size:9px;letter-spacing:2px;color:#789eb2}
.harbor-lobby .crew-manifest{font-size:11px;color:#bad3de;margin:0 0 12px;line-height:1.6}
.harbor-lobby .crew-manifest>span{color:#779eaf}
.harbor-lobby .seat{padding:9px 0;border-color:#2c4f62;font-size:13px;gap:12px}
.harbor-lobby .seat>span{color:#91b2c3}
.harbor-lobby .seat strong{color:#e8f5f9;font-size:13px;font-weight:500;text-align:right;overflow-wrap:anywhere}
.lobby-footnote{display:flex;justify-content:space-between;gap:24px;margin-top:18px;align-items:center}
.harbor-lobby .facilitator-notice{font-size:13px;color:#b3d0dc;margin:0}
.harbor-lobby .privacy-note{font-size:12px;color:#6f98ae;padding:0;border:0;background:none;margin:0}
#start-sound{background:radial-gradient(ellipse at 50% 40%,#153e50ad,#031621e8)!important;backdrop-filter:blur(9px)}
#start-sound>div{width:min(610px,calc(100vw - 40px));padding:46px 52px 26px;border:1px solid #487887;border-top:3px solid #35d4ed;border-radius:16px;background:linear-gradient(145deg,#123a4df5,#081f30fb);box-shadow:0 35px 130px #000a;text-align:left!important}
#start-sound>div:before{content:'Welcome to Flowport.';display:block;font-size:42px;font-weight:700;letter-spacing:-1.5px;line-height:1.08;margin-bottom:30px;color:#f3f8fa}
#start-sound-btn{display:block;width:100%;padding:19px 28px!important;background:#35d4ed!important;color:#062535!important;border:1px solid #89eff8!important;border-radius:7px!important;font-size:26px!important;font-weight:700;box-shadow:0 8px 25px #35d4ed20}
#start-sound-btn:hover{background:#8cedf6!important}
#start-sound>div>p{text-align:center;margin:24px 0 5px}
#no-sound-btn{color:#a9c9d8!important;font-size:15px!important;text-underline-offset:5px;padding:8px!important;min-height:40px!important}
#start-sound-btn:focus-visible,#no-sound-btn:focus-visible{outline:3px solid #ff8a48;outline-offset:6px}
@media(min-width:1100px) and (max-height:850px){.harbor-setup{min-height:calc(100svh - 150px);gap:4vw}.harbor-setup .welcome{padding:14px 0}.harbor-setup .welcome h1{font-size:68px;margin:18px 0}.harbor-setup .intro{font-size:19px}.harbor-setup .welcome-art{min-height:460px}.harbor-setup .harbor-welcome{min-height:370px}.harbor-setup #create{padding:18px;margin:18px 0 12px;gap:12px}.harbor-setup #create select{min-height:44px;padding:10px}.harbor-setup #create button{min-height:48px}.setup-invitation{margin-top:18px;font-size:9px;gap:12px}.harbor-lobby h1{font-size:49px}.harbor-lobby>.intro{font-size:17px;margin:12px 0 18px}.harbor-lobby .lobby-harbor{gap:18px;margin-bottom:18px}.harbor-lobby .join{padding:22px;gap:22px}.harbor-lobby .join .qr{width:160px;height:160px}.harbor-lobby .join h2{font-size:27px;margin-bottom:10px}.harbor-lobby .room-code{font-size:55px}.harbor-lobby .lobby-guide-scene,.harbor-lobby .lobby-guide-scene .harbor-welcome{min-height:235px}.harbor-lobby .lobby-guide-scene .phase-guide{padding:22px;gap:20px}.harbor-lobby .lobby-guide-scene .phase-guide p{font-size:20px}.harbor-lobby .crew{padding:12px 18px}.harbor-lobby .crew-name .crew-vessel{width:44px;height:44px}.harbor-lobby .crew h2{font-size:25px}.harbor-lobby .crew-manifest{font-size:10px;margin-bottom:8px}.harbor-lobby .seat{padding:6px 0;font-size:12px}.harbor-lobby .seat strong{font-size:12px}.lobby-footnote{margin-top:14px}.lobby-beacon{font-size:9px}}
@media(max-width:1099px){.harbor-setup{grid-template-columns:1fr;gap:20px}.harbor-setup .welcome{max-width:none}.harbor-setup .welcome-art{min-height:350px}.harbor-setup .harbor-welcome{height:350px;min-height:350px}.harbor-setup .harbor-caption{padding-top:80px}.harbor-lobby .lobby-harbor{grid-template-columns:1fr}.harbor-lobby .lobby-guide-scene,.harbor-lobby .lobby-guide-scene .harbor-welcome{min-height:240px}.lobby-beacon{display:none}.harbor-lobby .crew-grid{grid-template-columns:repeat(auto-fit,minmax(235px,1fr))}.lobby-footnote{align-items:start;flex-direction:column;gap:10px}}
@media(max-width:600px){.harbor-setup .welcome h1{font-size:59px}.harbor-setup .intro{font-size:19px}.harbor-setup #create{padding:18px;gap:14px}.harbor-setup #create select{font-size:15px;padding:12px}.setup-invitation{font-size:9px;gap:10px}.harbor-setup .welcome-art{min-height:300px}.harbor-setup .harbor-welcome{height:300px;min-height:300px;padding:26px;border-top-left-radius:55px}.harbor-setup .harbor-caption{padding-top:30px}.harbor-setup .moored-fleet{gap:26px;margin-top:15px}.harbor-setup .moored-fleet .crew-vessel{width:60px;height:60px}.harbor-lobby .join{padding:20px;gap:18px;flex-direction:column;align-items:start}.harbor-lobby .join .qr{width:190px;height:190px;align-self:center}.harbor-lobby .join h2{font-size:30px}.harbor-lobby .room-code{font-size:60px}.harbor-lobby .join small{display:block}.harbor-lobby .crew-grid{grid-template-columns:1fr}.harbor-lobby .lobby-guide-scene .phase-guide{padding:18px;gap:16px}.harbor-lobby .lobby-guide-scene .phase-guide p{font-size:18px}.harbor-lobby .lobby-guide-scene .phase-speaker{font-size:17px}#start-sound>div{padding:32px 26px 22px}#start-sound>div:before{font-size:35px}#start-sound-btn{font-size:22px!important}}

.recovery-control{display:block;margin:0 4vw 24px;padding:12px 20px;min-height:48px;border:1px solid #7798a7;border-radius:7px;background:#103246;color:#d7edf5;font-size:15px}.recovery-control[hidden]{display:none}

/* A district just picked: stations are assigned, so the join panel becomes a short note (no QR). */
.district-welcome-card p{font-size:clamp(17px,1.3vw,22px)}.district-welcome-card small{font-size:clamp(13px,1vw,17px)}.district-welcome-card small b{color:var(--cyan);letter-spacing:2px}

/* The saved game is gone (server restart): one large centred message, its button always on screen at 1080p. */
.room-gone{min-height:calc(100svh - 230px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;padding:20px 0}
.room-gone h1{font-size:clamp(40px,4.2vw,76px);letter-spacing:-1.5px;line-height:1.08;max-width:22ch;margin:6px 0 10px}
.room-gone .intro{font-size:clamp(18px,1.5vw,26px);max-width:46ch;color:#cfe3ea;margin:0 0 22px}
.room-gone-button{font-size:clamp(18px,1.4vw,24px);padding:16px 34px;min-height:60px}

/* wrkshp.live tag: a placeholder; the art team swaps in the graphic mark via --wrkshp-mark. */
.wrkshp-tag{display:inline-block;margin:.25rem 0;font-size:.75rem;letter-spacing:.06em;opacity:.7;background:var(--wrkshp-mark,none) no-repeat left center;}
