/* ═══════════════════════════════════════════
   資料編輯器樣式
   ═══════════════════════════════════════════ */
body{min-height:100vh}

.ed-topbar{
  position:sticky;top:0;z-index:10;
  display:flex;align-items:center;gap:20px;
  padding:14px 24px;
  background:rgba(11,18,32,.92);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--stroke);
}
.ed-topbar .back{
  font-family:var(--mono);font-size:11px;letter-spacing:.18em;
  color:var(--muted);text-decoration:none;white-space:nowrap;
  transition:color .15s;
}
.ed-topbar .back:hover{color:var(--amber)}
.ed-title{display:flex;flex-direction:column;gap:4px;flex:1}
.ed-title .eyebrow{font-size:10px}
#model-select{
  font-family:var(--sans);font-size:15px;font-weight:600;
  color:var(--text);
  background:var(--panel);
  border:1px solid var(--stroke);
  border-radius:6px;padding:6px 10px;
  max-width:280px;
}
.ed-actions{display:flex;gap:10px}

button.primary,button.ghost{
  font-family:var(--mono);font-size:11px;letter-spacing:.12em;
  border-radius:6px;padding:9px 16px;cursor:pointer;
  transition:all .15s;
}
button.primary{background:var(--amber);color:var(--bg-0);border:1px solid var(--amber);font-weight:700}
button.primary:hover{background:#ffc266}
button.ghost{background:transparent;color:var(--text);border:1px solid var(--stroke)}
button.ghost:hover{border-color:var(--amber);color:var(--amber)}
button.tiny{font-size:10px;padding:5px 10px;letter-spacing:.1em;
  background:transparent;color:var(--muted);border:1px solid var(--stroke);border-radius:5px;cursor:pointer}
button.tiny:hover{color:var(--amber);border-color:var(--amber)}

.ed-note{
  padding:12px 24px;
  font-size:13px;line-height:1.8;color:var(--muted);
  background:var(--amber-soft);
  border-bottom:1px solid var(--stroke);
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
}
.ed-note b{color:var(--text)}
.ed-note code{font-family:var(--mono);color:var(--amber);font-size:12px}

.ed-wrap{display:flex;gap:0;min-height:calc(100vh - 120px)}
.ed-parts{
  width:200px;flex-shrink:0;
  border-right:1px solid var(--stroke);
  padding:16px 0;
}
.ed-parts button{
  display:block;width:100%;text-align:left;
  font-family:var(--sans);font-size:14px;
  color:var(--muted);
  background:transparent;border:none;
  padding:12px 24px;cursor:pointer;
  border-left:2px solid transparent;
  transition:all .15s;
}
.ed-parts button:hover{color:var(--text);background:rgba(255,255,255,.03)}
.ed-parts button.active{
  color:var(--amber);border-left-color:var(--amber);
  background:var(--amber-soft);font-weight:600;
}
.ed-parts button .en{
  display:block;font-family:var(--mono);font-size:10px;letter-spacing:.14em;
  color:var(--muted);margin-top:2px;
}
.ed-parts .dot{
  display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--cyan);margin-left:6px;vertical-align:middle;opacity:.5;
}
.ed-parts-divider{height:1px;background:var(--stroke);margin:8px 24px}

.spec-ed-intro{
  font-size:13px;line-height:1.8;color:var(--muted);
  margin-bottom:20px;padding:12px 16px;
  background:var(--amber-soft);border-radius:8px;
}
.spec-cat-edit{
  margin-bottom:18px;padding:16px;
  background:var(--panel);border:1px solid var(--stroke);border-radius:10px;
}
.spec-cat-head{display:flex;gap:10px;margin-bottom:10px}
.spec-cat-head .cat-name{
  flex:1;
  font-family:var(--mono);font-size:12px;letter-spacing:.14em;
  color:var(--amber);
  background:#0e1729;border:1px solid var(--stroke);border-radius:6px;
  padding:8px 12px;
}
:root[data-theme="light"] .spec-cat-head .cat-name{background:#eef2f7}
.spec-cat-head .cat-name:focus{outline:none;border-color:var(--amber)}
.cat-del{flex-shrink:0}
.cat-rows{
  width:100%;
  font-family:var(--sans);font-size:13px;line-height:1.7;
  color:var(--text);background:#0e1729;
  border:1px solid var(--stroke);border-radius:6px;padding:10px 12px;resize:vertical;
}
:root[data-theme="light"] .cat-rows{background:#eef2f7}
.cat-rows:focus{outline:none;border-color:var(--amber)}

.ed-form{flex:1;padding:32px 40px;max-width:720px}
.ed-empty{color:var(--muted);font-size:15px;padding:60px 0;text-align:center}

.fld{margin-bottom:24px}
.fld label{
  display:block;
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;
  color:var(--amber);margin-bottom:8px;
}
.fld .hint-inline{
  font-family:var(--sans);letter-spacing:0;
  color:var(--muted);font-size:11px;margin-left:8px;
}
.fld input[type=text],.fld textarea{
  width:100%;
  font-family:var(--sans);font-size:14px;line-height:1.7;
  color:var(--text);
  background:var(--panel);
  border:1px solid var(--stroke);
  border-radius:8px;padding:11px 14px;
  resize:vertical;
}
.fld input:focus,.fld textarea:focus{outline:none;border-color:var(--amber)}

.img-list{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}
.img-row{
  display:flex;gap:12px;align-items:flex-start;
  padding:10px;
  background:var(--panel);border:1px solid var(--stroke);border-radius:8px;
}
.img-row img{width:80px;height:56px;object-fit:cover;border-radius:5px;flex-shrink:0;background:#0e1729}
.img-row .img-fields{flex:1;display:flex;flex-direction:column;gap:6px}
.img-row input{
  width:100%;font-family:var(--sans);font-size:12px;
  color:var(--text);background:#0e1729;
  border:1px solid var(--stroke);border-radius:5px;padding:6px 9px;
}
.img-row .src-label{font-family:var(--mono);font-size:9px;letter-spacing:.1em;color:var(--muted)}
.img-row .del{
  background:transparent;border:1px solid var(--stroke);color:var(--muted);
  border-radius:5px;width:28px;height:28px;cursor:pointer;flex-shrink:0;
}
.img-row .del:hover{color:#ff7850;border-color:#ff7850}
.img-add{display:flex;gap:10px}
.img-hint{margin-top:8px;font-size:11px;line-height:1.7;color:var(--muted)}

.toast{
  position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);
  background:var(--amber);color:var(--bg-0);
  font-family:var(--mono);font-size:12px;letter-spacing:.08em;font-weight:700;
  padding:12px 24px;border-radius:8px;
  opacity:0;pointer-events:none;transition:all .3s;
  z-index:100;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ── 密碼鎖定畫面 ── */
.auth-gate{
  position:fixed;inset:0;z-index:200;
  display:flex;align-items:center;justify-content:center;
  padding:24px;
  background:radial-gradient(1000px 600px at 60% 30%,#16233a 0%,transparent 60%),
             linear-gradient(180deg,var(--bg-1),var(--bg-0));
}
.auth-box{
  width:min(420px,100%);
  background:var(--panel);
  border:1px solid var(--stroke);
  border-radius:14px;
  padding:32px 30px;
  backdrop-filter:blur(14px);
}
.auth-box .eyebrow{font-size:10px;margin-bottom:12px}
.auth-box h2{font-size:20px;font-weight:700;letter-spacing:.02em;margin-bottom:10px;line-height:1.4}
.auth-desc{font-size:13px;line-height:1.8;color:var(--muted);margin-bottom:20px}
.auth-box input{
  width:100%;
  font-family:var(--sans);font-size:15px;
  color:var(--text);background:#0e1729;
  border:1px solid var(--stroke);border-radius:8px;
  padding:12px 14px;margin-bottom:10px;
}
.auth-box input:focus{outline:none;border-color:var(--amber)}
.auth-err{color:#ff7850;font-size:13px;min-height:20px;margin:2px 0 8px}
.auth-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px}
.auth-cancel{
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;
  color:var(--muted);text-decoration:none;transition:color .15s;
}
.auth-cancel:hover{color:var(--amber)}
#auth-submit{
  font-family:var(--mono);font-size:12px;letter-spacing:.12em;font-weight:700;
  background:var(--amber);color:var(--bg-0);
  border:none;border-radius:8px;padding:11px 22px;cursor:pointer;
  transition:background .15s;
}
#auth-submit:hover{background:#ffc266}

/* ── GitHub 設定對話框 ── */
#btn-github.configured{color:var(--cyan);border-color:rgba(111,211,239,.4)}
#btn-github.configured::after{content:" ●";color:var(--cyan);font-size:8px;vertical-align:middle}

.gh-modal{
  position:fixed;inset:0;z-index:150;
  display:flex;align-items:center;justify-content:center;
  padding:24px;
  background:rgba(6,10,18,.72);
  backdrop-filter:blur(4px);
}
.gh-box{
  width:min(500px,100%);max-height:90vh;overflow-y:auto;
  background:var(--panel);
  border:1px solid var(--stroke);
  border-radius:14px;
  padding:28px 28px 24px;
  backdrop-filter:blur(14px);
}
.gh-box .eyebrow{font-size:10px;margin-bottom:10px}
.gh-box h2{font-size:19px;font-weight:700;margin-bottom:10px}
.gh-desc{font-size:13px;line-height:1.8;color:var(--muted);margin-bottom:20px}
.gh-fld{margin-bottom:16px}
.gh-fld.two{display:flex;gap:12px}
.gh-fld.two > div{flex:1}
.gh-fld label{
  display:block;
  font-family:var(--mono);font-size:11px;letter-spacing:.1em;
  color:var(--amber);margin-bottom:6px;
}
.gh-help{color:var(--cyan);text-decoration:none;font-family:var(--sans);
  letter-spacing:0;font-size:11px;margin-left:8px}
.gh-help:hover{text-decoration:underline}
.gh-fld input{
  width:100%;
  font-family:var(--sans);font-size:14px;
  color:var(--text);background:#0e1729;
  border:1px solid var(--stroke);border-radius:7px;padding:10px 12px;
}
.gh-fld input:focus{outline:none;border-color:var(--amber)}
.gh-token-hint{margin-top:7px;font-size:11px;line-height:1.7;color:var(--muted)}
.gh-token-hint b{color:var(--text)}
.gh-status{min-height:20px;font-size:13px;margin:6px 0 12px}
.gh-status.ok{color:#6fd3ef}
.gh-status.err{color:#ff7850}
.gh-actions{display:flex;align-items:center;gap:10px}

@media (max-width:720px){
  .ed-wrap{flex-direction:column}
  .ed-parts{width:100%;border-right:none;border-bottom:1px solid var(--stroke);
    display:flex;overflow-x:auto;padding:8px}
  .ed-parts button{white-space:nowrap;border-left:none;border-bottom:2px solid transparent;padding:10px 14px}
  .ed-parts button.active{border-left:none;border-bottom-color:var(--amber)}
  .ed-parts button .en{display:none}
  .ed-form{padding:24px 20px}
  .ed-topbar{flex-wrap:wrap;gap:12px}
  .gh-fld.two{flex-direction:column;gap:16px}
}
