.harbour-foreman{color:var(--world-ink)}.harbour-foreman.arcade-opponent-readout[data-variant=scene]{--arcade-readout-top:56px;top:56px;bottom:auto}.harbour-foreman.arcade-opponent-readout:not([data-variant=scene]){grid-template-columns:var(--opponent-portrait) minmax(0,1fr);pointer-events:auto;grid-template-areas:"portrait speech""portrait replies";align-items:center;gap:16px 24px;width:min(100%,640px);display:grid;position:relative;inset:auto}.harbour-foreman:not([data-variant=scene])>.arcade-portrait{grid-area:portrait;align-self:start}.harbour-foreman:not([data-variant=scene])>.arcade-character-bubble{grid-area:speech;width:auto;position:static}.harbour-foreman-replies{pointer-events:auto;flex-wrap:wrap;grid-area:replies;gap:10px;display:flex}@media (max-width:700px){.harbour-foreman.arcade-opponent-readout[data-variant=scene]{--arcade-readout-top:48px;top:48px}.harbour-foreman.arcade-opponent-readout:not([data-variant=scene]){--opponent-portrait:84px;grid-template-areas:"portrait speech""replies replies";gap:14px}.harbour-foreman-replies>.tower-button{flex:1}}.harbour-foreman.arcade-opponent-readout[data-variant=goodbye]{grid-template-areas:"portrait speech";align-items:center}.harbour-foreman[data-variant=goodbye]>.arcade-portrait{align-self:center}.harbour-finished .harbour-foreman.arcade-opponent-readout[data-variant=goodbye]{--opponent-portrait:64px;text-align:left;gap:14px;margin:0 0 20px}.harbour-finished .harbour-foreman[data-variant=goodbye]>.arcade-character-bubble{box-shadow:none;padding:10px 12px}.harbour-finished .harbour-foreman[data-variant=goodbye] .arcade-character-bubble p{font-size:22px}@media (max-width:620px){.harbour-finished .harbour-foreman.arcade-opponent-readout[data-variant=goodbye]{--opponent-portrait:56px;gap:12px}.harbour-finished .harbour-foreman[data-variant=goodbye] .arcade-character-bubble p{font-size:20px}}.uprising-app.harbour-app{--world-ink:#eef4fa;--world-muted:#bfd0dd;--hud-surface:#142c42b3;--hud-border:#afc8dc38;--hud-button:#233e55;background-color:#142c42;background-image:var(--region-night-shift,url(/harbour/night-harbour-v1.webp));height:100dvh;min-height:0;color:var(--world-ink);background-position:bottom;background-repeat:no-repeat;background-size:cover}.harbour-app>.arcade-navigation{background:linear-gradient(#142c42bb,#0000);flex:none;position:relative;inset:auto}.harbour-app .game-logo{color:var(--world-ink)}.harbour-job-board{flex-direction:column;flex:1;justify-content:safe center;align-items:center;width:min(680px,100%);min-height:0;margin:0 auto;padding:16px 28px 32px;display:flex;position:relative;overflow:auto}.harbour-job-board>*{flex-shrink:0}.harbour-back{color:#d5e4ec;background:0 0;border:0;align-items:center;gap:7px;padding:8px 0;font:400 15px/1.3 Text,sans-serif;display:inline-flex}.harbour-job-board>.harbour-back{align-self:flex-start}.harbour-board-heading{text-align:center;margin:12px 0 0}.harbour-board-heading>span{color:var(--world-muted);font-variant-numeric:tabular-nums;font-size:13px}.harbour-board-heading>span strong{font-weight:600}.harbour-board-heading h1{letter-spacing:.03em;margin:8px 0 10px;font:600 clamp(40px,6vw,58px)/1 Display,sans-serif}.harbour-board-heading p{color:#cbdde7;margin:0;font-size:17px}.harbour-board-ship{object-fit:contain;filter:drop-shadow(0 15px 12px #06132580);width:min(500px,95%);height:clamp(100px,17vh,150px);margin:20px 0}.harbour-workspace{flex:1;min-height:0;position:relative;overflow:hidden}.harbour-scene{touch-action:none;outline:none;position:absolute;inset:0}.harbour-scene canvas{width:100%;height:100%;display:block;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000,#000 60px);mask-image:linear-gradient(#0000,#000 60px)}.harbour-job-heading{pointer-events:none;color:#cbdde7;justify-content:space-between;align-items:center;gap:15px;font-size:14px;display:flex;position:absolute;inset:4px 28px auto}.harbour-job-heading button{pointer-events:auto}.harbour-job-heading[data-mode=speed]{justify-content:flex-end}.harbour-message{text-align:center;pointer-events:none;color:#e0eaf0;text-shadow:0 1px 5px #0b2034;justify-content:center;align-items:center;gap:8px;min-height:24px;font-size:15px;display:flex;position:absolute;top:50px;left:16px;right:16px}.harbour-controls{z-index:2;left:50%;bottom:max(18px,env(safe-area-inset-bottom));background:var(--hud-surface);width:min(560px,100% - 40px);color:var(--world-ink);border:1px solid var(--hud-border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:8px;min-height:125px;padding:12px 16px;position:absolute;transform:translate(-50%);box-shadow:0 4px 18px #102a3826}.harbour-manifest-line{font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;font-size:16px;display:flex}.harbour-manifest-line strong{font-weight:600}.harbour-manifest-line>span{color:var(--world-muted);white-space:nowrap}.harbour-manifest-line b{color:var(--world-ink);font-weight:600}.harbour-inputs{grid-template-columns:minmax(0,1fr) 140px 200px;align-items:center;gap:12px;display:grid}.harbour-next{height:58px;color:var(--world-muted);flex-direction:column;justify-content:center;align-items:center;gap:1px;font-size:13px;display:flex}.harbour-next-loads{justify-content:center;align-items:center;gap:8px;display:flex}.harbour-next .mini-shape{flex:none;width:43px;height:36px}.harbour-next-empty{place-items:center;height:32px;font-size:22px;display:grid}.uprising-app.harbour-app .harbour-controls .rotate-button{background:var(--hud-button);color:var(--world-ink);border-color:var(--hud-border);-webkit-backdrop-filter:none;backdrop-filter:none;gap:8px;width:100%;min-height:54px;font-size:18px}.harbour-controls .drop-button{min-height:54px;font-size:18px}.harbour-controls .drop-button:disabled{opacity:1}.harbour-finished{--world-ink:#183847;--world-muted:#4c6978;--hud-surface:#fff9;--hud-border:#d1dee2;z-index:4;text-align:center;color:#183847;background:#f4f7f3;border:1px solid #b9cbd4;border-radius:8px;width:min(500px,100% - 36px);max-height:calc(100% - 24px);padding:22px 26px;position:absolute;top:50%;left:50%;overflow:auto;transform:translate(-50%,-50%);box-shadow:0 10px 45px #08192444}.harbour-finished-heading{justify-content:center;align-items:center;gap:10px;margin-bottom:18px;display:flex}.harbour-finished h2{letter-spacing:.025em;margin:0;font:600 42px/1 Display,sans-serif}.harbour-finished>p{color:#4c6978;margin:7px 0;font-size:16px}.harbour-finished .harbour-finished-count{color:#183847;margin-top:16px;font-weight:600}.harbour-finished-actions,.harbour-exit-actions{gap:12px;margin-top:22px;display:flex}.harbour-finished-actions>*{flex:1}.harbour-app .harbour-finished .outline-button{color:#183847;background:0 0;border-color:#bdcdd4}@media (max-width:620px){.harbour-job-board{padding:12px 18px 22px}.harbour-board-heading{margin-top:16px}.harbour-board-heading p{font-size:15px}.harbour-board-ship{height:clamp(85px,16vh,160px);margin:18px 0 8px}.harbour-job-heading{font-size:12px;inset:0 15px auto}.harbour-message{font-size:13px;top:42px}.harbour-controls{width:calc(100% - 24px);bottom:max(12px,env(safe-area-inset-bottom));min-height:115px;padding:10px 12px}.harbour-manifest-line{gap:8px;margin-bottom:8px;font-size:14px}.harbour-inputs{grid-template-columns:minmax(0,1fr) 94px 108px;gap:9px}.harbour-next-loads{gap:4px}.harbour-next .mini-shape{width:36px;height:30px}.harbour-controls .drop-button,.uprising-app.harbour-app .harbour-controls .rotate-button{padding:10px 8px;font-size:15px}.harbour-finished{padding:20px 19px}.harbour-finished h2{font-size:34px}.harbour-finished>p{font-size:15px}.harbour-finished-actions{flex-direction:column;gap:8px}}@media (max-height:550px) and (min-width:620px){.harbour-controls{min-height:105px;padding-top:6px;padding-bottom:7px}.harbour-job-heading{top:0}.harbour-message{top:28px}.harbour-finished{padding:14px 20px}.harbour-finished h2{font-size:34px}.harbour-finished-heading{margin-bottom:12px}.harbour-finished-actions{margin-top:12px}.harbour-finished>p{font-size:14px}}.harbour-shift-start{flex-direction:column;align-items:center;gap:14px;width:min(360px,100%);display:flex}.harbour-shift-start p{color:#bfd0dd;font-variant-numeric:tabular-nums;margin:8px 0}.harbour-shift-start .play-button{width:100%;min-height:56px}.harbour-replies{flex-wrap:wrap;gap:10px;width:100%;margin:0;display:flex}.harbour-replies>button{white-space:nowrap;flex:1;min-height:48px}.harbour-replies .outline-button{color:var(--world-ink);border-color:var(--hud-border);background:var(--hud-surface)}.harbour-shift-checkpoint{color:var(--world-muted);justify-content:center;align-items:center;gap:22px;margin-top:12px;font-size:12px;display:flex}@media (max-width:620px){.harbour-replies{flex-direction:column;width:100%}.harbour-replies>button{width:100%}.harbour-shift-checkpoint{flex-direction:column;gap:4px}.harbour-job-heading{gap:8px}}.harbour-job-board .harbour-foreman[data-variant=welcome]{--opponent-portrait:104px;align-items:start;gap:12px 18px}.harbour-job-board .harbour-foreman-replies{display:block}.harbour-job-board .harbour-shift-checkpoint{justify-content:space-between;gap:10px}.harbour-shift-checkpoint .harbour-back{text-underline-offset:3px;font-size:12px;text-decoration:underline}.harbour-speed-hud{border:1px solid var(--hud-border);background:var(--hud-surface);pointer-events:none;font-variant-numeric:tabular-nums;border-radius:6px;width:190px;padding:12px 14px;position:absolute;top:10px;left:28px}.harbour-timer{flex-direction:column;align-items:flex-start;display:flex}.harbour-timer strong{color:var(--world-ink);font:600 48px/1 Display,sans-serif}.harbour-timer>span{color:var(--world-muted);margin-top:4px;font-size:11px}.harbour-splits{border-top:1px solid var(--hud-border);margin:10px 0 0;padding:8px 0 0;list-style:none}.harbour-splits li{color:var(--world-muted);justify-content:space-between;align-items:baseline;gap:8px;padding:4px 0;font-size:13px;line-height:1.3;display:flex}.harbour-splits strong{font-weight:500}.harbour-splits [data-state=current]{color:var(--world-ink);font-weight:600}.harbour-splits [data-state=current] strong{font-weight:600}.harbour-splits [data-state=upcoming]{opacity:.6}.harbour-speed-result>span{color:#4c6978;font-size:13px;display:block}.harbour-final-time{font-variant-numeric:tabular-nums;margin-top:5px;font:600 54px/1.2 Display,sans-serif;display:block}.harbour-result-best{color:#4c6978;margin:8px 0 18px;font-size:13px}.harbour-result-best p{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:4px 8px;margin:0;display:flex}.harbour-result-best strong{color:#183847;font-variant-numeric:tabular-nums}.harbour-speed-result ol{border-top:1px solid #d1dee2;margin:0;padding:0;font-size:13px;list-style:none}.harbour-speed-result li{font-variant-numeric:tabular-nums;border-bottom:1px solid #d1dee2;align-items:center;gap:10px;padding:8px 0;display:flex}.harbour-speed-result li>span{text-align:left;flex:1}.harbour-speed-result li small{text-align:right;color:#4c6978;min-width:66px}.harbour-speed-result li strong{font-weight:600}@media (max-width:620px){.harbour-speed-hud{width:150px;padding:10px;top:8px;left:15px}.harbour-timer strong{font-size:40px}.harbour-splits li{padding:3px 0;font-size:12px}.harbour-job-board .harbour-foreman[data-variant=welcome]{--opponent-portrait:72px;gap:12px}.harbour-final-time{font-size:44px}}@media (max-width:700px){.harbour-speed-hud~.harbour-foreman[data-variant=scene] .arcade-character-bubble{width:min(224px,100vw - 192px)}}.harbour-finished .harbour-result-rank{color:#183847;text-underline-offset:3px;font-variant-numeric:tabular-nums;width:auto;padding:6px 0 0;font-size:13px;text-decoration:underline;display:inline-block}.harbour-save-error{z-index:20;color:#183847;text-align:center;background:#f4f7f3;border:1px solid #bdcdd4;border-radius:6px;width:max-content;max-width:calc(100% - 32px);padding:12px 16px;font-size:14px;position:absolute;top:78px;left:50%;transform:translate(-50%);box-shadow:0 5px 20px #08192444}.harbour-save-error button{text-underline-offset:3px;margin-left:10px;font-weight:600;text-decoration:underline}@media (max-width:385px){.harbour-inputs{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.harbour-next{flex-direction:row;grid-column:1/-1;gap:12px;height:36px}}@media (max-width:620px){.harbour-controls{border:0;border-top:1px solid var(--hud-border);-webkit-backdrop-filter:none;backdrop-filter:none;width:100%;box-shadow:none;padding:10px max(12px,env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));background:#142d44;border-radius:0;bottom:0;left:0;transform:none}}
