:root{ --bg:#0a0a10; --bg2:#13131c; --line:#2c2c3c; --fg:#e8e8f0; --dim:#9a9ab0; --red:#e03050; --red2:#ff5c7a; --gold:#ffc63a; --green:#3ddc84; --blue:#4aa8ff; --purple:#a86bff; } *{box-sizing:border-box;margin:0;padding:0} html,body{height:100%} body{ background: radial-gradient(circle at 50% 20%, #1a1a28 0%, #08080d 70%); color:var(--fg); font-family:"Courier New",Consolas,Monaco,monospace; display:flex;align-items:center;justify-content:center; overflow:hidden; } #app{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:8px} #stage{ position:relative; width:min(100%, calc((100vh - 16px) * 800 / 608)); aspect-ratio:800/608; background:#000; border:3px solid var(--line); box-shadow:0 0 0 3px #000, 0 12px 60px rgba(0,0,0,.8); overflow:hidden; } canvas#game{ width:100%;height:100%;display:block; image-rendering:pixelated;image-rendering:crisp-edges; background:#0d0d16; } /* ---------- HUD ---------- */ #hud{position:absolute;inset:0;pointer-events:none;font-size:clamp(9px,1.35vh,14px)} .hud-row{position:absolute;top:8px;left:8px;right:8px;display:flex;gap:6px;flex-wrap:wrap} .hud-box{ background:rgba(0,0,0,.55);border:1px solid rgba(255,255,255,.18); padding:3px 8px;letter-spacing:.5px;color:#fff;text-shadow:0 1px 0 #000; } .hud-box#hud-save.on{color:#d9b3ff;border-color:rgba(176,107,255,.7);box-shadow:0 0 8px rgba(176,107,255,.35)} #boss-bar{position:absolute;top:38px;left:50%;transform:translateX(-50%);width:60%;min-width:220px} .boss-name{text-align:center;font-size:clamp(10px,1.6vh,15px);letter-spacing:3px;color:var(--red2);text-shadow:0 2px 0 #000;margin-bottom:3px} .boss-track{height:12px;background:#22222e;border:2px solid #000;box-shadow:0 0 0 1px #555} .boss-fill{height:100%;width:100%;background:linear-gradient(#ff6b8a,#c01a3a);transition:width .12s linear} #toast{ position:absolute;left:50%;top:34%;transform:translateX(-50%); background:rgba(0,0,0,.72);border:1px solid #fff3;padding:8px 16px; font-size:clamp(11px,2vh,18px);color:#fff;opacity:0;transition:opacity .2s;max-width:80%;text-align:center;line-height:1.5; } #toast.show{opacity:1} /* ---------- Screens ---------- */ .screen{ position:absolute;inset:0;display:flex;flex-direction:column; align-items:center;justify-content:center;gap:2vh;padding:3vh 3vw; background:linear-gradient(#0a0a12ee,#0a0a12f6); backdrop-filter:blur(2px); font-size:clamp(10px,1.6vh,15px); } .screen.hidden{display:none} #hud.hidden,#boss-bar.hidden{display:none} .title-wrap{text-align:center;margin-bottom:1vh} .title-sub{color:var(--dim);letter-spacing:6px;font-size:.75em} .title-main{ font-size:clamp(22px,5.6vh,54px);line-height:1.05;letter-spacing:2px; text-shadow:3px 3px 0 #000, 0 0 24px rgba(224,48,80,.35); } .title-main .red{color:var(--red);text-shadow:3px 3px 0 #000,0 0 20px rgba(224,48,80,.6)} .title-tag{margin-top:1vh;color:var(--gold);letter-spacing:2px;font-size:.9em} .menu{display:flex;flex-direction:column;gap:8px;width:min(340px,80%)} .btn{ background:var(--bg2);color:var(--fg);border:2px solid var(--line); padding:9px 14px;font-family:inherit;font-size:1em;letter-spacing:2px; cursor:pointer;transition:.12s;text-align:center; } .btn:hover{background:var(--red);border-color:var(--red2);color:#fff;transform:translateY(-1px)} .btn:active{transform:translateY(1px)} .btn.big{font-size:1.25em;padding:12px;background:var(--red);border-color:var(--red2)} .btn.big:hover{background:#ff4466} .btn.small{font-size:.8em;padding:6px;color:var(--dim)} .btn.tiny{font-size:.8em;padding:5px 10px} .btn.go{background:var(--green);border-color:#7dffb0;color:#04180d} .foot{position:absolute;bottom:10px;color:#5a5a70;font-size:.72em;text-align:center;width:100%;padding:0 12px} /* ---------- Panels ---------- */ .panel{ background:var(--bg2);border:2px solid var(--line); width:min(760px,96%);max-height:94%;display:flex;flex-direction:column; padding:14px;gap:10px;overflow:hidden; } .panel.narrow{width:min(400px,92%)} .panel-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:6px} .panel h2{font-size:1.3em;letter-spacing:3px} .panel h3{font-size:1em;letter-spacing:2px;color:var(--gold);margin-bottom:5px} .tabs{display:flex;gap:6px;flex-wrap:wrap} .tab{ background:#1b1b26;border:1px solid var(--line);color:var(--dim); padding:4px 12px;cursor:pointer;font-size:.9em;letter-spacing:1px;font-family:inherit; } .tab.on{background:var(--red);border-color:var(--red2);color:#fff} .level-grid{ display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:8px;overflow-y:auto;padding:4px 2px;flex:1;align-content:start; } .lv-card{ background:#1a1a25;border:1px solid var(--line);padding:8px;cursor:pointer; transition:.12s;position:relative;text-align:left; } .lv-card:hover{border-color:var(--red2);background:#24243a;transform:translateY(-2px)} .lv-card .idx{color:#55556a;font-size:.75em} .lv-card .nm{font-size:1.05em;margin:2px 0 5px;letter-spacing:1px} .lv-card .meta{display:flex;gap:5px;align-items:center;flex-wrap:wrap;font-size:.78em;color:var(--dim)} .lv-card .st{margin-top:5px;font-size:.78em;color:var(--dim)} .lv-card.cleared{border-color:#2f6b45} .lv-card .chk{position:absolute;right:7px;top:6px;color:var(--green)} .tag{padding:1px 6px;border:1px solid;font-size:.85em} .t-jump{color:#ff8a5c;border-color:#ff8a5c} .t-endur{color:#4ad0ff;border-color:#4ad0ff} .t-boss{color:#ff5c7a;border-color:#ff5c7a} .t-troll{color:#c08aff;border-color:#c08aff} .t-custom{color:#ffc63a;border-color:#ffc63a} .legend{display:flex;gap:8px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:7px;color:var(--dim);font-size:.85em;align-items:center} .help-body{display:flex;gap:18px;flex-wrap:wrap;overflow-y:auto} .help-col{flex:1;min-width:240px} .help-col ul{list-style:none;line-height:1.75} .help-col li{color:var(--dim);font-size:.92em} .help-col li b{color:var(--fg)} .help-tip{border-top:1px solid var(--line);padding-top:8px;color:var(--gold);font-size:.85em} .clear-title{text-align:center;font-size:2.4em;color:var(--gold);letter-spacing:6px;text-shadow:3px 3px 0 #000} .result-body{display:flex;flex-direction:column;gap:5px} .rline{display:flex;justify-content:space-between;border-bottom:1px dotted var(--line);padding:4px 2px} .rline span{color:var(--dim)} .rbest{color:var(--green);font-size:.85em;text-align:center;margin-top:4px} /* ---------- Editor ---------- */ .editor-wrap{display:flex;gap:10px;flex:1;overflow:hidden} .palette{width:112px;display:flex;flex-direction:column;gap:3px;overflow-y:auto;border-right:1px solid var(--line);padding-right:6px} .pal{ display:flex;align-items:center;gap:5px;background:#1b1b26;border:1px solid var(--line); padding:2px 5px;cursor:pointer;font-size:.75em;color:var(--dim); } .pal:hover{border-color:#888} .pal.on{border-color:var(--gold);color:#fff;background:#2b2b3c} .pal .sw{width:14px;height:14px;border:1px solid #000;flex:none} .pal .ch{font-weight:bold;color:var(--fg);width:12px;text-align:center} .editor-main{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0} .editor-bar{display:flex;gap:5px;align-items:center;flex-wrap:wrap} .editor-bar input,.editor-bar select{ background:#111119;border:1px solid var(--line);color:var(--fg); font-family:inherit;font-size:.85em;padding:4px 6px; } #ed-name{width:110px}#ed-w{width:52px} canvas#ed-canvas{ width:100%;height:auto;background:#0d0d16;border:1px solid var(--line); image-rendering:pixelated;cursor:crosshair;display:block; } .editor-tip{color:var(--dim);font-size:.78em} .editor-side{width:170px;display:flex;flex-direction:column;gap:5px;border-left:1px solid var(--line);padding-left:8px;overflow-y:auto} #my-levels{display:flex;flex-direction:column;gap:4px} .my-lv{background:#1b1b26;border:1px solid var(--line);padding:4px 6px;font-size:.78em;cursor:pointer;display:flex;justify-content:space-between;gap:4px} .my-lv:hover{border-color:var(--gold)} .my-lv.on{border-color:var(--gold);background:#2b2b3c} .my-lv .x{color:var(--red)} #ed-json{flex:1;min-height:80px;background:#111119;border:1px solid var(--line);color:var(--fg);font-family:inherit;font-size:.7em;padding:4px;resize:none} ::-webkit-scrollbar{width:8px;height:8px} ::-webkit-scrollbar-track{background:#111} ::-webkit-scrollbar-thumb{background:#333;} @media (max-width:720px){ .editor-wrap{flex-direction:column;overflow-y:auto} .palette{width:100%;flex-direction:row;flex-wrap:wrap;border-right:none;border-bottom:1px solid var(--line);padding-bottom:6px} .editor-side{width:100%;border-left:none;border-top:1px solid var(--line);padding-top:8px} }