/* QStore console */
[hidden]{display:none!important}
body.console main{display:grid; grid-template-columns:280px 1fr; gap:24px;
  width:var(--shell); margin:0 auto; padding:24px 0 80px; align-items:start}
.gate{position:fixed; inset:0; display:grid; place-items:center; z-index:60;
  background:color-mix(in srgb,var(--bg) 88%,transparent); backdrop-filter:blur(8px)}
.gate-card{background:var(--panel); border:1px solid var(--line); border-radius:var(--radius);
  padding:30px; width:min(420px,92vw); box-shadow:var(--shadow)}
.gate-card h2{font-size:24px; margin-bottom:6px}
.gate-card p{color:var(--text-dim); margin:0 0 18px}
.gate-card input{width:100%; height:46px; border-radius:12px; padding:0 14px; margin-bottom:12px;
  background:var(--panel-2); border:1px solid var(--line); color:var(--text); outline:none}
.gate-card .btn{width:100%}
.err{color:#e0705a; font-size:13px; margin-top:10px; min-height:18px}

.side{position:sticky; top:88px; background:var(--panel); border:1px solid var(--line);
  border-radius:var(--radius); padding:16px}
.side-head{display:flex; justify-content:space-between; align-items:center; margin-bottom:10px;
  font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:.12em; color:var(--text-dim)}
.applist{display:flex; flex-direction:column; gap:4px; max-height:52vh; overflow:auto}
.appitem{display:flex; align-items:center; gap:10px; padding:8px; border-radius:12px; cursor:pointer;
  border:1px solid transparent}
.appitem:hover{background:var(--panel-2)} .appitem.on{background:var(--panel-2); border-color:var(--line-strong)}
.appitem b{font-size:14px} .appitem span{font-size:11px; color:var(--text-dim); display:block}

.editor{background:var(--panel); border:1px solid var(--line); border-radius:var(--radius);
  padding:24px; min-height:60vh}
.editor .empty{padding:80px 0}
.ed-head{display:flex; align-items:center; gap:16px; margin-bottom:20px}
.ed-head .appicon{width:64px; height:64px}
.ed-head h2{font-size:26px}
.ed-head .grow{flex:1}
.tabs{display:flex; gap:6px; margin-bottom:18px; border-bottom:1px solid var(--line)}
.tabs button{padding:10px 14px; font-weight:600; color:var(--text-dim); border-bottom:2px solid transparent}
.tabs button.on{color:var(--text); border-color:var(--accent)}
.field{margin-bottom:16px}
.field label{display:block; font-size:12.5px; font-weight:600; color:var(--text-dim);
  text-transform:uppercase; letter-spacing:.08em; margin-bottom:6px}
.field input,.field textarea,.field select{width:100%; border-radius:12px; padding:11px 13px;
  background:var(--panel-2); border:1px solid var(--line); color:var(--text); outline:none;
  font-family:var(--font-ui); font-size:14px}
.field textarea{min-height:90px; resize:vertical}
.field .hint{font-size:12px; color:var(--text-dim); margin-top:5px}
.two{display:grid; grid-template-columns:1fr 1fr; gap:14px}
.jsonarea{font-family:"JetBrains Mono",monospace; font-size:12.5px; min-height:340px; white-space:pre}
.bar{display:flex; gap:10px; margin-top:20px; align-items:center}
.bar .grow{flex:1}
.ok{color:var(--pos); font-size:13px} .toast{color:var(--text-dim); font-size:13px}
.upload{border:1.5px dashed var(--line-strong); border-radius:16px; padding:22px; text-align:center;
  background:var(--panel-2)}
.upload input[type=file]{display:none}
.upfile{font-size:13px; color:var(--text-dim); margin-top:10px}
.modal{position:fixed; inset:0; display:grid; place-items:center; z-index:70;
  background:rgba(0,0,0,.5); backdrop-filter:blur(6px)}
.modal-card{background:var(--panel); border:1px solid var(--line); border-radius:var(--radius);
  padding:26px; width:min(560px,94vw); box-shadow:var(--shadow); max-height:86vh; overflow:auto}
@media (max-width:820px){ body.console main{grid-template-columns:1fr} .side{position:static} }
