@font-face{font-family:CloudPixel;src:url(./assets/cartridge-pixel.ttf) format("truetype");font-display:swap}
:root{color-scheme:dark;--deep:#241b3c;--panel:#302547;--edge:#816883;--gold:#ffdaa5;--cream:#fff0da;--muted:#e1c6dd;--pixel:CloudPixel,"Courier New",monospace;--mono:"Courier New",monospace}
*{box-sizing:border-box}
html{background:var(--deep)}
body{margin:0;min-height:100dvh;background:radial-gradient(ellipse at 76% 2%,#62405b,#382848 38%,#241b3c 82%);color:var(--cream);font:14px/1.35 var(--mono)}
button,a{-webkit-tap-highlight-color:transparent}
a{color:inherit;text-decoration:none}
button{min-width:44px;min-height:44px;border:1px solid #856c8a;border-radius:0;padding:5px 8px;background:#4b3554;color:var(--cream);font:700 13px/1.15 var(--mono);touch-action:manipulation;cursor:pointer}
button:disabled{color:#c7aabd;background:#392e4d;border-color:#6a5676;cursor:default}
button:not(:disabled):active{background:#694765}
button:focus-visible,a:focus-visible{outline:2px solid #a6dfdb;outline-offset:-3px}
button.primary{background:var(--gold);color:#33273e;border-color:#ffe9bc;box-shadow:inset 0 -4px #c18e83}
button.primary:active{background:#ffbfa4}
button small{display:block;margin-top:3px;font:11px var(--mono)}
h1,h2,h3,p{margin:0}
h1,h2,h3{font:400 18px/1.12 var(--pixel)}
p{color:var(--muted)}
img{display:block;image-rendering:pixelated}
.wrap{width:min(100%,1060px);margin:auto;padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}
.site{display:flex;align-items:center;justify-content:space-between;gap:8px}
.site a{display:flex;gap:8px;align-items:center;min-height:44px;font:14px var(--pixel)}
.site img{border:1px solid var(--edge)}
.site p{display:none;font-size:12px}
.foot{padding:8px 0;font:9px var(--pixel);color:var(--muted)}
#cabinet{margin-top:5px;border:1px solid var(--edge);background:var(--panel);box-shadow:0 0 0 2px #221932,0 14px 36px #140f2a8f}
.bar{display:flex;min-height:44px;justify-content:space-between;align-items:center;padding-left:9px;background:#4f3756;border-bottom:1px solid var(--edge);font:11px var(--pixel);color:var(--gold)}
.bar button{padding:0;border-width:0 0 0 1px;background:#47314e}
.bar svg{fill:none;stroke:currentColor;stroke-width:2;width:20px;height:20px;vertical-align:middle}
#screen{outline:0;min-height:0}
.tools{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--edge);background:#3c2d4e}
.tools button{border-width:0 1px 0 0;background:#3c2d4e}
.tools button:last-child{border-right:0}
.tools button[aria-pressed=false]{color:#ffb4a8}
.cover{position:relative;isolation:isolate;min-height:165px;aspect-ratio:1.57;overflow:hidden;background:#362747}
.cover img,.cover canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;image-rendering:pixelated}
.cover::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#221a3d74,transparent 78%),linear-gradient(0deg,#261a3bd9,transparent 58%);pointer-events:none}
.title-copy{position:absolute;left:11px;bottom:12px;z-index:1}
.title-copy h1{font-size:clamp(26px,9.4vw,64px);color:#ffe6a8;text-shadow:3px 3px #a35b77,5px 4px #34214e}
.title-copy p{color:#fff0d3;font-weight:700;margin-top:6px;font-size:12px}
.menu{display:grid;gap:5px;padding:7px;background:#3b2b4c;border-top:1px solid var(--edge)}
.menu>.primary{min-height:49px}
.row{display:flex;gap:5px;flex-wrap:wrap}
.row button{flex:1}
.panel,.sailing{display:grid;gap:7px;padding:7px}
.flight,.helm,.result-text{display:grid;gap:5px;min-width:0;align-content:start}
#flight{width:100%;height:auto;aspect-ratio:384/180;display:block;image-rendering:pixelated;background:#3d3250;border:1px solid var(--edge)}
.gauges{display:grid;grid-template-columns:.65fr 1.45fr .78fr .8fr;gap:3px}
.gauges div{display:grid;min-width:0;text-align:center;border:1px solid #6c597f;background:#3d3150;padding:4px 1px}
.gauges span{color:#e7cbe3;font-size:10px;line-height:1.05}
.gauges strong{color:#ffdaa5;font-size:12px;white-space:nowrap}
.steering,.trims{display:grid;gap:4px}
.steering{grid-template-columns:repeat(2,minmax(0,1fr))}
.trims{grid-template-columns:repeat(3,minmax(0,1fr))}
.steer{touch-action:none;user-select:none;min-height:53px;background:#594061}
.steer[data-held]{background:#6c6483;border-color:#b7e2e4}
.trim[aria-pressed=true]{background:#556679;border-color:#add5d7;box-shadow:inset 0 -3px #8caebf}
.status{font-size:11px;min-height:15px}
.strain{display:grid;grid-template-columns:auto 1fr;gap:6px;align-items:center;font-size:11px;color:var(--muted)}
meter{width:100%;height:14px}
.routes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.route{padding:4px;min-width:0;text-align:left}
.route img{width:100%;height:56px;object-fit:cover;margin-bottom:4px}
.route:disabled img{filter:saturate(.4) brightness(.68)}
.log{display:grid;gap:4px}
.log-row{text-align:left}
.arrival{width:100%;height:clamp(102px,28vw,180px);object-fit:cover;border:1px solid var(--edge)}
.result-text h2,.result-text strong{color:var(--gold)}
dialog{color:var(--cream);background:#453453;border:1px solid #a7829e;padding:11px;width:min(480px,calc(100vw - 24px));max-height:calc(100dvh - 22px);overflow:auto}
dialog::backdrop{background:#160e2aca}
dialog h2,dialog p{margin-bottom:8px}
body.lock{overflow:hidden}
#cabinet.expanded,#cabinet:fullscreen{position:fixed;inset:0;width:100%;height:100dvh;margin:0;z-index:10;display:grid;grid-template-rows:auto minmax(0,1fr) auto;padding:env(safe-area-inset-top) max(2px,env(safe-area-inset-right)) env(safe-area-inset-bottom) env(safe-area-inset-left);border:0}
.expanded #screen,#cabinet:fullscreen #screen{overflow:auto;overscroll-behavior:contain}
.expanded .cover{min-height:0;max-height:calc(100dvh - 239px)}
@media(min-width:550px){
  .site p{display:block}
  .title-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(172px,1fr)}
  .menu{align-content:center;border-top:0;border-left:1px solid var(--edge);padding:12px}
  .title-copy{left:15px;bottom:13px}
  .sailing{grid-template-columns:minmax(0,1.8fr) minmax(0,1fr);gap:8px}
  .result{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}
  .arrival{height:100%;min-height:125px}
}
@media(min-width:780px){.wrap{padding-top:16px}.title-copy p{font-size:15px}.sailing,.panel{padding:12px}.helm{gap:8px}.steer{min-height:64px}}
@media(orientation:landscape) and (max-height:445px){
  .site{display:none}
  .wrap{padding-top:max(4px,env(safe-area-inset-top))}
  #cabinet{margin:0;height:calc(100dvh - max(4px,env(safe-area-inset-top)) - max(8px,env(safe-area-inset-bottom)));display:grid;grid-template-rows:auto minmax(0,1fr) auto}
  #screen{overflow:auto;overscroll-behavior:contain}
  .title-layout{min-height:100%}
  .cover,.expanded .cover{min-height:0;max-height:none;aspect-ratio:auto}
  .title-copy h1{font-size:clamp(30px,7vw,54px)}
  .menu,.sailing,.panel{padding:5px}
  #flight{max-height:calc(100dvh - 153px)}
  .steer{min-height:52px}
}

.helm,.helm button{touch-action:none}
