: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;
}
.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 input, .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}
.link{text-decoration:none; display:inline-block}

.main{
    display:grid;
    grid-template-columns: 1fr 1fr;
    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;
}

.row{
    display:flex;
    gap:10px;
    flex-wrap:wrap;
    align-items:center;
}
label{color:var(--muted); font-size:13px}
input[type="number"], input[type="text"]{
    width:72px;
    margin-left:6px;
    padding:6px 8px;
    border-radius:10px;
    border:1px solid var(--line);
    background:var(--panel2);
    color:var(--text);
}
#pieceId{width:64px}

canvas{
    display:block;
    width:100%;
    height:auto;
    border-radius:14px;
    border:1px solid var(--line);
    background:#0a0f17;
}

.hint{margin-top:8px;color:var(--muted);font-size:12px}

textarea{
    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;
}
