:root{--ink:#eff9ef;--gold:#f4d48d;--cyan:#90e6db;--muted:#b3c9ce;--rose:#f39bc6;--line:#9cd6d33b;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font:14px/1.45 system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:#0c263a;color:var(--ink)}body{background:radial-gradient(ellipse at 50% -15%,#3e7184,#0b2438 85%)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:1px solid #a9d9d24d;background:linear-gradient(#2d6574,#204859);border-radius:15px;min-height:48px;padding:11px 20px;box-shadow:0 4px 0 #081d2f70;transition:transform .1s,filter .1s;touch-action:manipulation}button:hover{filter:brightness(1.12)}button:active{transform:translateY(3px);box-shadow:none}button:disabled{opacity:.45;cursor:default;filter:none}button:focus-visible,a:focus-visible{outline:3px solid #fff1b0;outline-offset:4px}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:Georgia,serif;font-weight:normal}h1{font-size:clamp(36px,4.8vw,60px);line-height:1.04;letter-spacing:-1.8px}h2{font-size:30px;line-height:1.15}h3{font-size:23px}.eyebrow{font-size:10px;font-weight:800;letter-spacing:2.5px;text-transform:uppercase;color:var(--cyan);margin-bottom:10px}.muted{color:var(--muted)}#shell{max-width:1380px;min-height:100dvh;margin:auto;display:flex;flex-direction:column}#top{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 28px;position:relative;z-index:2;background:#102d40cc;border-bottom:1px solid #aadad021}.logo{display:flex;align-items:center;gap:12px;font:700 14px Georgia,serif;letter-spacing:1.4px}.logo b{color:var(--gold)}.logo small{display:block;font:8px system-ui;letter-spacing:5px;color:#c4d8d8;margin-top:4px}.crest{width:43px;height:43px;display:grid;place-items:center;background:#1b485b;border:1px solid #d2bb80;border-radius:50%;color:var(--gold);font:29px Georgia}.top-tools{display:flex;align-items:center;gap:12px}.currency{display:flex;align-items:center;gap:12px;min-width:100px;border:1px solid #a4c3b83d;border-radius:25px;background:#0a2137;padding:8px 18px;font-size:18px}.currency i{color:var(--gold);font-style:normal}.round{border-radius:50%;padding:0;width:43px;min-height:43px;font-size:21px}#main{flex:1;padding:26px 30px 20px}#dock{position:sticky;bottom:0;display:flex;justify-content:center;gap:12px;padding:13px 20px max(13px,env(safe-area-inset-bottom));background:#102d40f0;border-top:1px solid #9fdcd032;backdrop-filter:blur(18px);z-index:4}#dock button{min-width:155px;display:flex;gap:12px;align-items:center;justify-content:center;background:transparent;border-color:transparent;box-shadow:none;color:#9fc5cc;padding:10px 18px;font-size:12px;font-weight:750}#dock button span{font-size:24px;color:#92c4c9;line-height:1}#dock button.active{background:linear-gradient(#497c86,#2b586a);border:1px solid #a9d4c45e;color:#fff5d9;box-shadow:inset 0 1px #dffce31f,0 4px 0 #071c2d4d}#dock button.active span{color:var(--gold)}.world-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.world-head h2{margin:0;font-size:25px}.chapter-mark{color:var(--gold);font-size:11px;letter-spacing:1px}.harbor{position:relative;border:1px solid #a3d6ce3d;border-radius:23px;overflow:hidden;min-height:350px;background:#2b6175;box-shadow:0 20px 65px #04172635}.harbor canvas{display:block;width:100%;height:350px;object-fit:cover;object-position:center}.harbor:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#122f4af0 0%,#153c4f99 27%,transparent 66%);pointer-events:none}.harbor-copy{position:absolute;top:30px;left:34px;max-width:335px;z-index:1}.harbor-copy h1{margin-bottom:15px}.harbor-copy p{font-size:12px;line-height:1.8;color:#c8dfde;max-width:295px}.harbor-copy em{font-style:normal;color:var(--gold)}.badge{display:inline-flex;gap:8px;align-items:center;border:1px solid #a0dacc66;border-radius:20px;padding:4px 12px;font-size:9px;letter-spacing:1.3px;color:#daf5e5;background:#16445a99}.ship-tag{position:absolute;right:32px;bottom:24px;z-index:1;font-size:10px;letter-spacing:2px;color:#e6ddbf}.ship-tag small{display:block;font-size:9px;color:#bbd5d9;letter-spacing:.7px}.course-panel{position:relative;display:grid;grid-template-columns:1fr auto;align-items:center;gap:25px;border:1px solid #91c6bc4d;border-radius:20px;padding:23px 27px;background:linear-gradient(135deg,#245367,#183c53);margin:18px 0;box-shadow:0 7px 0 #071e3133}.course-panel h2{font-size:28px;margin:4px 0 10px}.course-panel p{font-size:12px;color:var(--muted);margin:0}.challenge-row{display:flex;align-items:center;gap:12px;margin-top:16px}.challenge-chip{font-size:11px;color:#bad2d3}.sigil{display:inline-grid;place-items:center;color:#728f9e;font-size:24px;line-height:1;filter:drop-shadow(0 2px 1px #061c2d)}.sigil.rose{color:#f39bc6}.sigil.violet{color:#c2a3ff}.sigil.azure{color:#9cf2dd}.sigil.empty{opacity:.35}.challenge-set{display:flex;gap:8px}.course-actions{text-align:right;min-width:240px}.gold{background:linear-gradient(#f4dba0,#d8b776);border-color:#fff0bc;color:#253746;font-weight:900;box-shadow:0 5px 0 #987747,0 8px 25px #08263f88;border-radius:28px;padding:14px 29px;letter-spacing:.4px}.big{font-size:17px;min-width:220px}.course-actions small{display:block;font-size:10px;color:#bad2d8;margin-top:13px}.course-tabs{display:flex;gap:8px;margin:0 0 12px}.course-tabs button{font-size:10px;min-height:38px;border-radius:20px;padding:8px 16px}.course-tabs .selected{border-color:#d7b983;background:#477487}.below-row{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:16px}.companion-pill{display:flex;align-items:center;gap:13px;text-align:left;background:#173b51;padding:7px 20px 7px 9px;border-radius:50px;min-width:260px}.toy{width:62px;height:62px;background-image:url(assets/allies.png);background-size:200% 100%;background-position:left;flex-shrink:0}.toy.nerissa{background-position:right}.toy.bloop{background-image:url(assets/game-sprites.png);background-size:300% 100%;background-position:left}.companion-pill b{font-size:12px}.companion-pill small{display:block;font-size:10px;color:var(--muted)}.run-facts{display:flex;gap:22px;font-size:11px;color:#b6d4d7}.run-facts b{color:var(--gold)}.mode-hero{position:relative;display:grid;grid-template-columns:1fr .7fr;align-items:center;gap:30px;min-height:330px;padding:32px;border:1px solid var(--line);border-radius:24px;overflow:hidden;background:radial-gradient(ellipse at 90% 15%,#716ca688,#23556a 55%,#173d55)}.mode-hero h1{margin-bottom:20px}.mode-hero p{max-width:480px;color:#c1d7d9;line-height:1.8}.mode-hero .toy{width:220px;height:230px;justify-self:center;filter:drop-shadow(0 20px 15px #081b2d99)}.mode-hero .gold{margin-top:10px}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px}.info-card{background:#153a50;border:1px solid var(--line);border-radius:18px;padding:22px}.info-card h3{font-size:21px;color:var(--gold);margin-bottom:10px}.info-card p{font-size:12px;line-height:1.8;color:var(--muted);margin:0}.info-card .metric{font-size:30px;color:#e0f1de}.crew-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.crew-card{position:relative;overflow:hidden;padding:0;text-align:center;background:#1d475d;border-radius:20px;box-shadow:0 7px 0 #0b2638}.crew-card .portrait{height:155px;position:relative;overflow:hidden;background:#254c61}.crew-card .portrait img{width:100%;height:100%;object-fit:cover;object-position:center 30%;opacity:.7}.crew-card .portrait:after{content:'';position:absolute;inset:35% 0 0;background:linear-gradient(transparent,#1d475d)}.crew-card .toy{position:relative;width:110px;height:110px;margin:-75px auto 0;z-index:1}.crew-card h3{margin:8px 0;font-size:25px}.crew-card p{font-size:11px;color:var(--muted);margin:0;padding:0 15px;min-height:38px}.crew-card small{display:block;color:var(--gold);padding:15px;font-size:11px}.crew-card.selected{border:2px solid var(--gold)}.shop-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:22px}.shop-item{background:#173b52;border:1px solid var(--line);border-radius:18px;padding:20px;text-align:center}.shop-item .decor-icon{font-size:37px;line-height:1.4;color:var(--gold)}.shop-item h3{font-size:18px;margin:10px 0}.shop-item p{font-size:11px;color:var(--muted);min-height:40px}.shop-item button{font-size:11px;padding:9px 15px;width:100%}.section-title{display:flex;align-items:center;justify-content:space-between;margin:28px 0 18px}.section-title h2{margin:0}.section-title span{font-size:11px;color:var(--muted)}.subtle-note{font-size:10px;color:#93b3bf;text-align:center;margin:20px 0 0}.toast{color:var(--gold)}[hidden]{display:none!important}#game{position:fixed;inset:0;z-index:10;background:#081c30;display:grid;place-items:center;overflow:hidden;touch-action:none}#game-wrap{width:min(100vw,177.7778dvh);height:min(100dvh,56.25vw);position:relative;overflow:hidden;border-radius:3px;box-shadow:0 0 100px #0007}#world{width:100%;height:100%;display:block;touch-action:none;outline:none}.hud{position:absolute;inset:0 0 auto;height:75px;display:flex;justify-content:space-between;align-items:start;padding:12px 15px;gap:10px;background:linear-gradient(#0d385399,transparent);pointer-events:none;text-shadow:0 2px 4px #173148}.hud-left{display:flex;gap:10px;align-items:center}.hud-btn{pointer-events:auto;width:44px;height:44px;min-height:44px;padding:0;border-radius:50%;background:#163f59c9;border:2px solid #d2ede19c;box-shadow:0 3px 0 #07213750;font-size:22px;position:relative}.hud-btn small{position:absolute;right:-4px;bottom:-3px;background:#bcd6cb;color:#1d3e53;border-radius:15px;font-size:10px;line-height:20px;width:20px;text-shadow:none}.hud-coins{font-size:22px;color:var(--gold);font-weight:800;white-space:nowrap}.hud-center{text-align:center;padding-top:3px}.hud-center>span{font-size:9px;letter-spacing:2px;font-weight:800}.hud-center>div{display:flex;gap:9px;justify-content:center;margin-top:9px}.hud-center .sigil{font-size:22px}.hud-right{display:flex;align-items:center;gap:18px;font-size:20px;font-weight:800;padding:7px;color:#fff1c7}#mode-mark{font-size:10px;color:#b6f2ec;letter-spacing:1px}#rush{position:absolute;left:20px;top:76px;width:125px;height:6px;border-radius:5px;background:#163d5577;overflow:visible}#rush i{display:block;width:0;height:100%;background:var(--gold);border-radius:5px}#rush span{font-size:7px;letter-spacing:1px;color:#c2ebe1;position:absolute;top:9px;left:0}#run-message{position:absolute;left:50%;top:104px;transform:translateX(-50%);max-width:80%;border-radius:24px;background:#15374dd9;border:1px solid #b3dcce66;text-align:center;padding:11px 24px;font-size:13px;color:#ffecba;opacity:0;transition:opacity .15s;pointer-events:none}#run-message.show{opacity:1}#run-hint{position:absolute;bottom:20px;left:22px;font-size:11px;color:#c3f2e6;text-shadow:0 2px 4px #002a45;max-width:60%;pointer-events:none}.lower-hud{position:absolute;bottom:20px;right:20px;display:flex;gap:15px;align-items:center}#jump{border-radius:50%;width:78px;height:78px;min-height:0;padding:0;background:#ecd299e8;color:#254355;font-size:13px;font-weight:900;border:3px solid #fff0c999;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:0 5px 0 #866d45aa}#jump small{display:block;font-size:7px;font-weight:600}#combo{font-size:14px;font-weight:800;color:#ffecb4;text-shadow:0 2px 5px #17344c}#course-progress{position:absolute;inset:auto 0 0;height:3px;background:#75b5b233}#course-progress i{display:block;height:100%;width:0;background:#d9cd92}dialog{width:540px;max-width:94vw;max-height:92dvh;overflow:auto;border-radius:25px;background:linear-gradient(#285c72,#153a54);border:2px solid #9dbfae;box-shadow:0 20px 100px #0009;color:var(--ink);padding:28px;text-align:center}dialog::backdrop{background:#04172bbd;backdrop-filter:blur(8px)}dialog h2{font-size:33px;color:var(--gold);margin:10px 0 15px}dialog p{font-size:12px;line-height:1.8;color:#c7dcdd}dialog .actions{display:flex;flex-direction:column;align-items:stretch;gap:12px;margin-top:23px}dialog .actions button{font-weight:750}dialog .score-line{display:flex;justify-content:space-between;border-bottom:1px solid #a1ccbf2d;padding:11px 0;font-size:13px;color:#d3e7e2}dialog .score-line b{color:var(--gold)}dialog .challenge-set{justify-content:center;margin:20px}dialog .toy{width:140px;height:140px;margin:0 auto}.result-banner{letter-spacing:3px;font-size:11px;font-weight:900;color:#a0f5dd}.settings-row{display:flex;justify-content:space-between;align-items:center;gap:10px;text-align:left;margin:16px 0}.settings-row span{font-size:12px}.settings-row button{min-width:120px;font-size:11px}.controls-list{text-align:left;font-size:12px;line-height:2;color:#c7e0df}.mini-row{display:flex;gap:6px;justify-content:center;margin:20px 0}.mini-dot{width:22px;height:22px;display:grid;place-items:center;border:1px solid #c8e2cf66;border-radius:50%;font-size:10px;color:#98b8c5}.mini-dot.done{color:#1e4158;background:#f0d38f;border-color:#f4dda8}#notice{position:fixed;left:50%;bottom:100px;transform:translateX(-50%);z-index:30;background:#f0d49b;color:#244056;padding:14px 23px;border-radius:25px;font-weight:750;font-size:12px;box-shadow:0 5px 25px #03142788}body.in-run{overflow:hidden}@media(max-width:1000px){#main{padding:20px}.harbor-copy{max-width:300px;left:25px}.harbor-copy h1{font-size:47px}.course-panel{padding:19px 22px}.harbor{min-height:310px}.harbor canvas{height:310px}.run-facts{gap:12px;font-size:10px}.mode-hero{min-height:300px}.mode-hero h1{font-size:46px}.shop-grid{grid-template-columns:repeat(2,1fr)}}@media(max-height:650px) and (orientation:landscape){#top{padding:10px 23px}#main{padding:15px 22px}.harbor{min-height:235px}.harbor canvas{height:235px}.harbor-copy{top:19px}.harbor-copy h1{font-size:38px;margin-bottom:10px}.harbor-copy p{font-size:11px;max-width:250px}.harbor-copy .badge{display:none}.course-panel{padding:14px 22px;margin:14px 0}.course-panel h2{font-size:25px}.course-tabs{margin-bottom:8px}.challenge-row{margin-top:10px}#dock{padding:9px 15px}.below-row{margin-top:10px}.world-head{margin-bottom:10px}.companion-pill .toy{width:45px;height:45px}}@media(max-width:700px){#top{padding:12px 15px}.logo{font-size:11px;letter-spacing:.5px}.logo small{font-size:7px;letter-spacing:3px}.crest{width:34px;height:34px;font-size:24px}.top-tools{gap:7px}.currency{min-width:65px;padding:7px 11px;font-size:14px}.round{width:36px;min-height:36px}.course-panel{grid-template-columns:1fr;gap:18px}.course-actions{text-align:left}.course-actions small{display:inline-block;margin-left:10px}.course-panel p{font-size:11px}.below-row{align-items:start}.run-facts{display:block}.run-facts span{display:block;margin-bottom:7px}.companion-pill{min-width:210px}.harbor-copy h1{font-size:39px}.harbor-copy{left:21px;max-width:265px}.harbor-copy p{max-width:220px;font-size:11px}.harbor:after{background:linear-gradient(90deg,#12334ced,#163e5188 40%,transparent)}.harbor canvas{object-position:60% center}.ship-tag{right:16px;bottom:14px;font-size:9px}#dock{gap:2px;padding-left:5px;padding-right:5px}#dock button{min-width:0;flex:1;flex-direction:column;gap:4px;font-size:9px;padding:8px 6px}.detail-grid{grid-template-columns:1fr}.mode-hero{grid-template-columns:1fr;padding:25px}.mode-hero .toy{position:absolute;right:15px;top:60px;width:150px;height:150px;opacity:.3;pointer-events:none}.mode-hero>div{position:relative;z-index:1}.mode-hero h1{font-size:42px}.crew-grid{gap:9px}.crew-card .portrait{height:110px}.crew-card .toy{width:80px;height:80px;margin-top:-50px}.crew-card h3{font-size:18px}.crew-card p{font-size:9px;min-height:55px;padding:0 8px}.crew-card small{font-size:9px;padding:10px 5px}.shop-item{padding:15px}.section-title span{display:none}.hud{padding:8px 10px;gap:6px}.hud-btn{width:33px;height:33px;min-height:33px;font-size:17px}.hud-left{gap:7px}.hud-coins{font-size:16px}.hud-center>span{font-size:7px;letter-spacing:1px}.hud-center>div{gap:6px;margin-top:6px}.hud-center .sigil{font-size:17px}.hud-right{font-size:15px;gap:8px;padding:3px}#mode-mark{display:none}#rush{top:56px;left:12px;width:80px}#run-message{top:75px;font-size:10px;padding:8px 15px}#jump{width:59px;height:59px;font-size:11px}#jump small{font-size:6px}.lower-hud{bottom:12px;right:12px}#run-hint{font-size:8px;bottom:12px;left:12px}#combo{font-size:10px}}@media(prefers-reduced-motion:reduce){button{transition:none}}

/* Keep the harbor headline and ship inside the card at every viewport. */
.harbor-copy{width:350px;max-width:calc(100% - 44px)}.harbor-copy h1{font-size:clamp(32px,3.5vw,44px);line-height:1.04;letter-spacing:-1px}.harbor canvas{object-fit:fill}.harbor-copy p{line-height:1.6}.harbor-copy .badge{margin-bottom:10px}
@media(max-width:700px){.harbor-copy{width:265px}.harbor-copy h1{font-size:34px}.ship-tag{display:none}}
@media(max-height:650px) and (orientation:landscape){.harbor-copy{top:16px;width:330px}.harbor-copy h1{font-size:32px;margin-bottom:8px}.harbor-copy p{font-size:10px;max-width:290px}}
