:root{
    --bg:#0b0f14;
    --panel:#101722;
    --panel2:#0f1520;
    --text:#e7edf7;
    --muted:#a9b4c5;
    --line:#223047;
    --accent:#7bdcff;
    --bad:#ff6b6b;
    --good:#4cd97b;
}

*{box-sizing:border-box}
body{
    margin:0;
    background:linear-gradient(180deg,#070a0f, #0b0f14 30%, #070a0f);
    color:var(--text);
    font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei", Arial;
}

.topbar{
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:14px 16px;
    border-bottom:1px solid var(--line);
    background:rgba(10,14,20,.75);
    backdrop-filter: blur(10px);
    position:sticky; top:0; z-index:2;
}

.brand{display:flex; gap:12px; align-items:center}
.logo{
    width:44px;height:44px;border-radius:12px;
    display:grid;place-items:center;
    background: radial-gradient(circle at 30% 30%, #7bdcff, #2a8cff 60%, #0b3d7a);
    color:#001018;
    font-weight:900;
    letter-spacing:.5px;
}
.title{font-size:18px;font-weight:800}
.sub{font-size:12px;color:var(--muted);margin-top:2px}

.toolbar{display:flex; gap:8px; align-items:center; flex-wrap:wrap}
.toolbar button, .toolbar select, .link{
    border:1px solid var(--line);
    background:var(--panel);
    color:var(--text);
    padding:8px 10px;
    border-radius:10px;
    font-size:13px;
}
.toolbar button{cursor:pointer}
.toolbar button:hover{border-color:#35507a}
.toolbar select{cursor:pointer}
.link{text-decoration:none; display:inline-block}

.main{
    display:grid;
    grid-template-columns: 1.25fr .75fr;
    gap:14px;
    padding:14px;
}
@media (max-width: 1024px){
    .main{grid-template-columns:1fr}
}

.panel{
    background:linear-gradient(180deg, rgba(16,23,34,.95), rgba(12,18,28,.9));
    border:1px solid var(--line);
    border-radius:16px;
    padding:12px;
    box-shadow: 0 10px 30px rgba(0,0,0,.35);
}

.panelTitle{
    font-size:13px;
    color:var(--muted);
    margin:2px 0 10px 2px;
    letter-spacing:.3px;
}

.boardWrap{
    border-radius:14px;
    overflow:hidden;
    border:1px solid var(--line);
    background: #0a0f17;
}

#boardCanvas{display:block; width:100%; height:auto}

.status{display:flex; gap:8px; flex-wrap:wrap; margin-top:10px}
.pill{
    border:1px solid var(--line);
    background:var(--panel2);
    padding:6px 10px;
    border-radius:999px;
    font-size:12px;
    color:var(--muted);
}
.pill.good{border-color: rgba(76,217,123,.4); color: #bfffd0}
.pill.bad{border-color: rgba(255,107,107,.4); color: #ffd0d0}

.help{
    color:var(--muted);
    font-size:13px;
    border:1px dashed rgba(123,220,255,.25);
    padding:10px 12px;
    border-radius:14px;
    background: rgba(123,220,255,.06);
}
.help ul{margin:6px 0 0 18px; padding:0}
.help li{margin:4px 0}

.tray{
    display:flex;
    flex-wrap:wrap;
    gap:10px;
    margin-top:12px;
}
.pieceCard{
    border:1px solid var(--line);
    background:rgba(15,21,32,.9);
    border-radius:14px;
    padding:10px;
    cursor:grab;
    user-select:none;
    min-width:140px;
}
.pieceCard:active{cursor:grabbing}
.pieceHead{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.pieceName{font-weight:800;font-size:13px}
.pieceBtns{display:flex; gap:6px}
.pieceBtns button{
    border:1px solid var(--line);
    background:var(--panel);
    color:var(--text);
    padding:6px 8px;
    border-radius:10px;
    font-size:12px;
    cursor:pointer;
}
.pieceBtns button:hover{border-color:#35507a}

.pieceMini{
    width:120px;height:120px;
    border-radius:12px;
    border:1px solid var(--line);
    background:#0a0f17;
}

.jsonBox{margin-top:12px}
#levelJson{
    width:100%;
    min-height:220px;
    resize:vertical;
    padding:10px;
    border-radius:14px;
    border:1px solid var(--line);
    background:#0a0f17;
    color:var(--text);
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
    font-size:12px;
    line-height:1.4;
}
