:root{font-family:-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Noto Sans KR,sans-serif;color:#e9e9f6;background:#101629;font-synthesis:none;--coral:#f09476;--ink:#e9e9f6;--board:#182138;--piece-unit:16px}*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:radial-gradient(ellipse at 90% 0%,#303251 0%,transparent 42%),radial-gradient(circle at 15% 65%,#192e3e 0%,transparent 42%),#101629}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.45;background-image:radial-gradient(#91a3c2 .7px,transparent .7px);background-size:49px 67px;background-position:12px 34px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:0}button:focus-visible,a:focus-visible{outline:3px solid #f3c68a;outline-offset:3px}a{color:inherit;text-decoration:none}#app{max-width:454px;margin:0 auto;position:relative;padding:12px 20px max(12px,env(safe-area-inset-bottom))}.topbar{height:30px;display:flex;align-items:center;justify-content:space-between}.back{font-size:26px;display:flex;gap:7px;align-items:center}.back span{font-size:12px;font-weight:850;color:#d3d1e6}.back b{font-size:8px;letter-spacing:1.5px;font-weight:500;color:#858fae;margin-left:5px}.tools{display:flex;gap:7px}.icon{position:relative;border:1px solid #404862;width:34px;height:34px;border-radius:50%;background:#1b2135;color:#d4d1ed;font-size:17px}.mute-slash{position:absolute;top:7px;left:16px;width:1px;height:19px;transform:rotate(35deg);background:#d4d1ed}.title{display:flex;justify-content:space-between;align-items:center;margin:16px 0 13px}.eyebrow{font-size:8px;letter-spacing:1.6px;font-weight:750;color:#8f9fc3;margin:0 0 5px}h1{font-size:34px;letter-spacing:-1.8px;margin:0;line-height:1.1;font-weight:900}h1 span{color:var(--coral)}h1 i{font-style:normal;font-size:23px;color:#e2b459;vertical-align:top;margin-left:8px}.orbit-mark{display:flex;align-items:center;gap:7px;color:#9299b4;font-size:9px}.orbit-mark i{display:block;width:24px;height:24px;border:1px solid #626c8b;border-radius:50%;position:relative}.orbit-mark i:before{content:"";position:absolute;width:34px;height:9px;border:1px solid #626c8b;border-radius:50%;left:-6px;top:6px;transform:rotate(-35deg)}.scorebar{display:flex;border:1px solid #3d465c;background:#202b40d9;border-radius:13px;padding:12px 16px;gap:18px;align-items:center;box-shadow:inset 0 1px #69759129}.scorebar>div{display:flex;flex-direction:column;gap:4px;flex:1}.scorebar .best,.scorebar .line-stat{border-left:1px solid #3a435a;padding-left:16px}.label{font-size:9px;color:#97a5bf;font-weight:650}.scorebar strong{font-size:28px;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-1px}.scorebar .best strong,.scorebar .line-stat strong{font-size:21px;color:#b1bcd5}.record-track{display:flex;justify-content:space-between;position:relative;font-size:9px;color:#8f9cb8;padding:10px 1px 7px}.record-track #record-left{color:#cfb39c}.progress{position:absolute;bottom:0;left:0;right:0;height:2px;background:#2b364d;border-radius:3px;overflow:hidden}.progress i{display:block;height:100%;background:linear-gradient(90deg,#859fd5,#efad83);transition:width .3s}.statusline{height:30px;display:flex;justify-content:space-between;align-items:center;gap:5px;font-size:10px;color:#a4adc5;font-weight:600}#combo{color:#efba8d;white-space:nowrap;font-size:9px}.ship{width:min(100%,calc(100svh - 392px));min-width:238px;max-width:390px;margin:0 auto;position:relative;padding-top:11px}.bridge{height:21px;position:absolute;left:27%;right:27%;top:0;background:linear-gradient(#63748d,#35465e);border:1px solid #8495ac;clip-path:polygon(12% 0,88% 0,100% 100%,0 100%);display:flex;align-items:flex-start;justify-content:center;gap:4px;padding-top:4px;z-index:1}.bridge span{width:13px;height:5px;background:#99d4df;box-shadow:0 0 7px #8bf2ff55;border-radius:1px}.bridge b{font-size:6px;letter-spacing:1px;margin-left:5px;color:#dceaf0}.hull{border:1px solid #5a6e8a;border-radius:18px 18px 24px 24px;padding:0 8px;background:linear-gradient(90deg,#3f5368 0,#1c2a41 4%,#202d42,#1c2a41 96%,#3f5368);box-shadow:0 5px #080e1d,0 15px 35px #05091666;position:relative}.hull:before,.hull:after{content:"";position:absolute;top:20%;height:58%;width:4px;background:repeating-linear-gradient(#677990 0 6px,#243b50 6px 11px);border:1px solid #6e8098;border-radius:2px}.hull:before{left:-5px}.hull:after{right:-5px}.hull-label{display:flex;justify-content:space-between;align-items:center;height:17px;font:6px ui-monospace,monospace;letter-spacing:.7px;color:#9eafc1}.board-wrap{position:relative}.board{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);gap:4px;aspect-ratio:1;padding:5px;background:#101829;border:1px solid #62788a;border-radius:5px;touch-action:manipulation;-webkit-user-select:none;user-select:none;box-shadow:inset 0 0 12px #0006}.cell{border-radius:3px;min-width:0;min-height:0;background:linear-gradient(135deg,#25354b,#1c2a40);border:1px solid #3d4b5d;position:relative;padding:0;transition:background .1s}.cell:before{content:"";position:absolute;width:2px;height:2px;top:3px;left:3px;background:#687d93;border-radius:50%;opacity:.4}.cell.filled,.cargo-cell,.departing{border:0;box-shadow:inset 0 2px #ffffff42,inset 0 -3px #00000025;position:relative}.cell.filled:after,.cargo-cell:after,.departing:after{content:"";position:absolute;inset:18% 13%;border-radius:1px;background:repeating-linear-gradient(0deg,transparent 0 3px,#ffffff27 3px 4px);border:1px solid #ffffff35}.c1{background:#a69bd6!important}.c2{background:#e99375!important}.c3{background:#82bcae!important}.c4{background:#dbb774!important}.c5{background:#7ba5cd!important}.c6{background:#c88eac!important}.ghost{background:#aab7d1!important;border:2px solid #f0f6ff!important;opacity:.8;box-shadow:0 0 6px #b9d2ee66}.invalid{background:#b54f5a!important;opacity:.7;border-color:#ff9c9c}.will-clear{filter:brightness(1.4);box-shadow:inset 0 0 0 2px #ffedc6,0 0 6px #f9c77855!important}.cell:disabled{cursor:default}.cell:focus-visible{z-index:2;outline-offset:0}.engine-row{display:flex;justify-content:space-around;align-items:center;height:16px;font:6px ui-monospace,monospace;color:#7b8ca7;letter-spacing:1px}.engine-row i{position:relative;width:25px;height:6px;border:1px solid #546c83;border-radius:0 0 4px 4px;background:#182f43;box-shadow:inset 0 -2px #72a4c188}.engine-row i:after{content:"";position:absolute;left:4px;right:4px;top:6px;height:8px;background:linear-gradient(#88dae999,transparent);clip-path:polygon(0 0,100% 0,75% 100%,25% 100%)}.launching .engine-row i:after{height:28px;background:linear-gradient(#e2fcff,#78d7fb88,transparent);filter:drop-shadow(0 0 5px #57caff)}.tray-wrap{margin-top:17px;background:#1c263ac9;padding:10px 10px 8px;border-radius:13px;border:1px solid #3b485e}.tray-title{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#b9c4d9;font-weight:750}.tray-title b{font-weight:500;font-size:8px;color:#8594b0;margin-left:5px}.tray-title small{font-size:8px;font-weight:450;color:#8f9cb5}.tray{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px;touch-action:none}.piece{height:97px;background:#253149;border:2px solid #33415c;border-radius:9px;position:relative;display:flex;align-items:center;justify-content:center;padding:5px 3px 16px;touch-action:none;-webkit-user-select:none;user-select:none;transition:background .15s,border-color .15s}.piece.selected{border-color:#e3bd94;background:#364052;box-shadow:0 2px #101329,inset 0 0 20px #c58c6030}.piece.no-fit .mini{opacity:.3}.piece.no-fit .piece-label{color:#bf8f92}.piece.used{color:#57647d;background:#1a263a;border:1px dashed #43516a}.loaded{font-size:18px}.loaded small{display:block;font-size:8px;margin-top:4px;color:#65748c}.mini,.lift-grid{display:grid;grid-template-columns:repeat(var(--w),var(--piece-unit));grid-template-rows:repeat(var(--h),var(--piece-unit));gap:2px;pointer-events:none}.cargo-cell{border-radius:2px;width:var(--piece-unit);height:var(--piece-unit)}.piece-label{position:absolute;bottom:4px;left:0;right:0;font-size:8px;color:#c9b99f}.control-hint{font-size:9px;text-align:center;color:#8997b1;margin:8px 0 0}.dragging .selected{opacity:.35}#lift{position:fixed;pointer-events:none;z-index:80;opacity:0;transform:translateZ(0);filter:drop-shadow(0 12px 12px #0008)}#lift.visible{opacity:.94}#lift.bad{filter:drop-shadow(0 8px 10px #0008) saturate(.7)}#lift .lift-grid{grid-template-columns:repeat(var(--w),var(--unit));grid-template-rows:repeat(var(--h),var(--unit));gap:var(--gap)}#lift .cargo-cell{width:var(--unit);height:var(--unit);outline:1px solid #fff8}footer{display:flex;justify-content:space-between;align-items:center;margin-top:8px;font-size:8px;color:#8090ab;height:30px}.text-button{background:transparent;color:#a5b0c5;font-size:10px;padding:9px 0;text-decoration:underline;text-underline-offset:3px}.tutorial{position:absolute;left:8px;right:8px;bottom:8px;border:1px solid #a3bdd377;background:#172335eb;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);padding:9px 30px 9px 10px;border-radius:8px;pointer-events:none;box-shadow:0 4px 12px #0005}.tutorial b{font-size:11px;color:#e8d4b5;display:block;margin-bottom:4px}.tutorial span{font-size:9px;color:#bbc7d7}.tutorial button{position:absolute;right:0;top:0;bottom:0;width:30px;background:transparent;color:#bec7d4;pointer-events:auto;font-size:20px}#effects{position:absolute;inset:0;pointer-events:none;z-index:3;overflow:visible}.departing{position:absolute;border-radius:3px;animation:depart .58s var(--delay) both}.celebration{pointer-events:none;position:absolute;left:-30px;right:-30px;top:30%;text-align:center;opacity:0;z-index:4;filter:drop-shadow(0 3px 4px #192239)}.celebration strong{font-size:25px;color:#fff9e8;display:block;font-weight:900}.celebration span{font-size:33px;font-weight:900;color:#ffe0a4}.celebration.pop{animation:score-pop 1s both}.end{position:absolute;inset:0;background:#101a2ceb;border-radius:5px;display:grid;place-items:center;z-index:5;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.hidden{display:none!important}.end-card{text-align:center;color:#fff7f0;width:90%}.end-icon{font-size:26px;color:#eac68b}.end-card p{font-size:12px;margin:5px 0}.end-card h2{font-size:46px;letter-spacing:-2px;margin:7px 0}.end-card h2 small{font-size:15px;letter-spacing:0;margin-left:4px}.end-card p.end-detail{font-size:9px;color:#b9c2d5;margin-bottom:14px}.primary{display:block;width:100%;background:#9facd4;color:#20273c;padding:12px;border-radius:10px;font-weight:800;font-size:13px;box-shadow:0 3px #7886af}.end-card .primary{width:85%;margin:0 auto;background:#eead82;box-shadow:0 3px #b57555}.end-card a{display:block;font-size:10px;color:#aebbd1;margin-top:15px}#toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%,15px);background:#d8e4efef;color:#19253b;padding:10px 16px;border-radius:25px;font-size:12px;white-space:nowrap;opacity:0;transition:.2s;z-index:90;pointer-events:none}#toast.visible{opacity:1;transform:translate(-50%)}dialog{width:min(90%,360px);max-height:88dvh;border:1px solid #617991;background:#17263b;border-radius:19px;padding:24px;color:#dce4ee;box-shadow:0 20px 100px #0009}dialog::backdrop{background:#080e22bb;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}dialog h2{font-size:24px;letter-spacing:-1px;margin:8px 0 17px}dialog p,dialog li{font-size:12px;line-height:1.8;color:#acbad0}dialog ol{padding-left:19px}dialog li{margin:9px 0}.dialog-kicker{font-size:9px;letter-spacing:1px;font-weight:800;color:#d4b68f}.keyboard-tip{font-size:10px!important;line-height:1.6!important}.coral{background:#ecab82;box-shadow:0 3px #ad795d;margin:14px 0}dialog .primary{margin-top:17px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.land{animation:land .22s ease-out}.shake{animation:shake .22s}@keyframes land{0%{transform:scale(.6)}70%{transform:scale(1.07)}to{transform:scale(1)}}@keyframes depart{0%,22%{opacity:1;transform:scale(1);filter:brightness(1.5)}55%{opacity:1;filter:brightness(1.8)}to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.25)}}@keyframes score-pop{0%{opacity:0;transform:translateY(10px) scale(.7)}18%{opacity:1;transform:translateY(0) scale(1.05)}55%{opacity:1;transform:scale(1)}to{opacity:0;transform:translateY(-30px)}}@keyframes shake{20%,60%{transform:translate(-3px)}40%,80%{transform:translate(3px)}}@media(max-height:740px)and (orientation:portrait){#app{padding:7px 12px 6px;--piece-unit:12px}.topbar{height:25px}.icon{width:29px;height:29px;font-size:15px}.title{margin:9px 0}h1{font-size:29px}.eyebrow{font-size:7px;margin-bottom:3px}.scorebar{padding:9px 12px}.scorebar strong{font-size:23px}.scorebar .best strong,.scorebar .line-stat strong{font-size:18px}.label{font-size:8px}.record-track{padding-top:7px;font-size:8px}.statusline{height:25px;font-size:9px}#combo{font-size:8px}.ship{width:min(100%,calc(100svh - 320px));min-width:210px}.tray-wrap{margin-top:12px;padding:8px 8px 6px}.piece{height:79px}.tray-title{font-size:9px}.tray-title small{font-size:7px}.control-hint{font-size:8px;margin-top:6px}footer{height:23px;margin-top:4px}.tutorial{padding:7px 28px 7px 8px}.tutorial b{font-size:10px}.tutorial span{font-size:8px}.end-card h2{font-size:38px}.end-card p{font-size:10px}.end-card .primary{padding:10px}.end-icon{font-size:19px}.end-card p.end-detail{margin-bottom:10px;font-size:8px}.end-card a{margin-top:11px}}@media(max-height:600px)and (orientation:portrait){#app{padding:5px 11px 4px;--piece-unit:10px}.topbar{height:24px}.icon{width:29px;height:29px}.back{font-size:24px}.back span{font-size:11px}.title{margin:6px 0 7px}.eyebrow{display:none}h1{font-size:27px}.orbit-mark{font-size:8px}.scorebar{padding:7px 12px;border-radius:10px}.scorebar strong{font-size:21px}.scorebar .best strong,.scorebar .line-stat strong{font-size:17px}.scorebar>div{gap:3px}.record-track{padding-top:6px;padding-bottom:6px}.statusline{height:24px;font-size:8px}.ship{width:min(100%,calc(100svh - 325px));min-width:200px;padding-top:8px}.bridge{height:17px;padding-top:3px}.bridge span{width:9px;height:4px}.hull{padding:0 6px;border-radius:13px 13px 18px 18px}.hull-label{height:13px;font-size:5px}.board{padding:4px;gap:3px}.engine-row{height:12px;font-size:5px}.tray-wrap{margin-top:10px;padding:7px 7px 5px}.tray{margin-top:6px;gap:7px}.piece{height:70px;padding-bottom:14px;border-radius:7px}.piece-label{font-size:7px;bottom:3px}.tray-title{font-size:8px}.tray-title small{font-size:6.5px}.control-hint{margin-top:5px;font-size:7px}footer{height:22px;font-size:7px}.text-button{font-size:9px}.tutorial{bottom:6px;left:6px;right:6px}.tutorial b{font-size:9px}.tutorial span{font-size:7px}.celebration strong{font-size:21px}.celebration span{font-size:28px}}@media(orientation:landscape)and (max-height:600px){#app{max-width:800px;display:grid;grid-template-columns:1fr 300px;gap:0 20px;padding:10px 20px}.topbar,.title,.scorebar,.record-track,.statusline,.tray-wrap,footer{grid-column:1}.ship{grid-column:2;grid-row:1/9;width:min(100%,calc(100svh - 40px));min-width:240px;align-self:center}.title{margin:10px 0}.title h1{font-size:28px}.piece{height:88px}.tray-wrap{margin-top:5px}.orbit-mark{display:none}.statusline{font-size:9px}}@media(min-height:950px){#app{padding-top:24px}.ship{width:100%}.title{margin:21px 0 18px}.tray-wrap{margin-top:21px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}.departing{display:none}}@media(max-height:600px)and (orientation:portrait){.control-hint{display:none}footer{height:20px;margin-top:2px}}@media(orientation:landscape)and (max-height:350px){#app{height:100svh;max-width:800px;padding:6px 12px;grid-template-columns:minmax(0,1fr) minmax(0,268px);grid-template-rows:24px 32px 44px 21px 22px minmax(84px,1fr) 22px;column-gap:12px;--piece-unit:10px}.topbar{height:24px}.back{font-size:24px}.back span{font-size:10px}.back b{font-size:7px}.icon{width:28px;height:28px;font-size:14px}.tools{gap:5px}.title{margin:3px 0}.title h1{font-size:25px}.eyebrow{display:none}.scorebar{padding:6px 10px;border-radius:10px;gap:10px}.scorebar>div{gap:3px}.scorebar strong{font-size:20px}.scorebar .best,.scorebar .line-stat{padding-left:9px}.scorebar .best strong,.scorebar .line-stat strong{font-size:16px}.label{font-size:7px}.record-track{font-size:7px;padding-top:5px;padding-bottom:5px}.statusline{height:22px;font-size:8px}#combo{font-size:7px}.ship{grid-row:1/8;min-width:0;width:min(100%,calc(100svh - 62px));align-self:center}.tray-wrap{align-self:start;margin-top:3px;padding:7px 7px 6px}.tray-title{font-size:8px}.tray-title b{font-size:7px}.tray-title small{font-size:6px}.tray{margin-top:6px;gap:6px}.piece{height:70px;padding-bottom:13px}.piece-label{font-size:7px}.control-hint{display:none}footer{height:22px;margin-top:0;font-size:7px}.text-button{font-size:9px;padding:6px 0}.tutorial{padding:7px 28px 7px 8px}.tutorial b{font-size:10px}.tutorial span{font-size:8px}.celebration strong{font-size:21px}.celebration span{font-size:28px}.end-card h2{font-size:36px}.end-card .primary{padding:10px}.end-card p.end-detail{font-size:8px}.end-card a{margin-top:10px}}.statusline .tutorial{position:relative;left:auto;right:auto;bottom:auto;flex:1;min-width:0;border:0;border-left:2px solid #d8bd8d;background:#273548;padding:4px 28px 4px 8px;border-radius:3px;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;line-height:1.35;pointer-events:auto}.statusline .tutorial span{font-size:inherit;color:#e5d9be}.statusline .tutorial button{width:28px;font-size:18px}.mini,.lift-grid{position:relative}.origin-mark{position:absolute;top:-4px;left:-4px;width:7px;height:7px;border-left:2px solid #fff4d4;border-top:2px solid #fff4d4;box-shadow:-1px -1px #172033;pointer-events:none}.result-links{display:flex;align-items:center;justify-content:center;gap:15px;margin-top:5px}.result-links button,.end-card .result-links a{background:none;color:#ccd6e9;font:inherit;font-size:9px;min-height:32px;margin:0;padding:8px 0;text-decoration:underline;text-underline-offset:3px}.return-result{background:#334158;color:#f0d7ab;border:1px solid #627084;border-radius:5px;font-size:8px;white-space:nowrap;min-height:28px;padding:4px 6px}.statusline:has(.return-result:not(.hidden)) #coach{font-size:8px;line-height:1.3;min-width:0}.piece:disabled{cursor:default}.piece.no-fit .piece-label{color:#e0aab3}.tray-title small{line-height:1.3;text-align:right;max-width:70%}
