Files
kidgo/css/style.css
T
2026-10-20 22:21:26 +08:00

181 lines
8.5 KiB
CSS

: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}
}