*{box-sizing:border-box}
body{font-family:'Hiragino Sans','Hiragino Kaku Gothic ProN',sans-serif;margin:0;background:#f4f6f8;color:#1a2330}
header{background:#1F2430;color:#fff;padding:14px 20px;display:flex;align-items:baseline;gap:12px}
header h1{margin:0;font-size:20px}
header .sub{opacity:.7;font-size:12px}
.card{background:#fff;border-radius:12px;box-shadow:0 1px 4px rgba(0,0,0,.08);padding:20px;margin:16px auto;max-width:960px}
h2{margin-top:0;font-size:17px}
h3{font-size:15px}
label{display:block;font-size:12px;color:#556;margin:10px 0 4px}
input,select,textarea{width:100%;padding:9px 10px;border:1px solid #ccd3da;border-radius:8px;font-size:14px;font-family:inherit}
button,.button{cursor:pointer;border:1px solid #ccd3da;background:#fff;border-radius:8px;padding:9px 16px;font-size:14px;margin-top:10px;display:inline-block;text-decoration:none;color:#1a2330;font-family:inherit}
button.primary,.button.primary{background:#004898;border-color:#004898;color:#fff;font-weight:600}
button.ghost{border:none;background:none;font-size:12px;color:#004898;padding:2px 6px}
.hidden{display:none}
.err{color:#c0392b;font-size:13px}
.note{color:#667;font-size:12px}
.axis{color:#556;font-size:13px;margin:8px 0}
.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.chk{display:flex;align-items:center;gap:6px;font-size:13px;color:#334;margin-top:8px}
.chk input{width:auto}
.tabs{display:flex;gap:6px;margin-top:14px}
.tab{margin:0;border-radius:8px 8px 0 0;border-bottom:none;background:#eef1f4;font-size:13px}
.tab.active{background:#fff;font-weight:600;border-color:#004898}
table{border-collapse:collapse;width:100%;font-size:12px;margin-top:8px}
td,th{border:1px solid #dde3e9;padding:6px;text-align:left;vertical-align:top}
th{background:#f0f3f6}
#swatch{width:28px;height:28px;border-radius:6px;border:1px solid #ccd3da;display:inline-block}
.joblink{display:flex;justify-content:space-between;padding:9px 6px;border-bottom:1px solid #eef1f4;cursor:pointer;font-size:14px;gap:8px;flex-wrap:wrap}
.joblink:hover{background:#f7f9fb}
.chip{font-size:11px;border-radius:20px;padding:2px 10px;background:#eef1f4;white-space:nowrap}
.chip.run{background:#fff3d6;color:#8a6d1a}
.chip.done{background:#e0f2e9;color:#1b6b43}
.chip.err{background:#fde8e6;color:#c0392b}
.chip.ready{background:#e3edf8;color:#004898}
#gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.gitem{border:1px solid #dde3e9;border-radius:10px;overflow:hidden;background:#fafbfc}
.gitem img{width:100%;display:block}
.gitem .meta{padding:8px 10px;font-size:12px}
.gitem .issues{color:#c0392b}
.gitem .regen{display:flex;gap:6px;padding:0 10px 10px}
.gitem .regen input{font-size:12px;padding:6px}
.gitem .regen button{margin:0;font-size:12px;padding:6px 10px;white-space:nowrap}
pre{background:#0f1420;color:#cde3ff;padding:12px;border-radius:8px;font-size:11px;overflow-x:auto;max-height:300px}
#jobStatus{font-size:14px;margin:6px 0}
.spinner{display:inline-block;width:14px;height:14px;border:2px solid #c5d4e8;border-top-color:#004898;border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px;margin-right:6px}
@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:600px){.card{margin:10px;padding:14px}}

.gdlist{border:1px solid #dde3e9;border-radius:8px;max-height:260px;overflow-y:auto;margin-top:6px}
.gditem{padding:8px 12px;border-bottom:1px solid #eef1f4;cursor:pointer;font-size:13px;display:flex;justify-content:space-between;gap:8px}
.gditem:hover{background:#f0f5fb}
.gditem.sel{background:#e3edf8;font-weight:600}
.gditem .sz{color:#889;font-size:11px;white-space:nowrap}
.chip.stop{background:#e8e8ec;color:#556}
.jactions{display:flex;align-items:center;gap:6px}
.jdel{margin:0;padding:2px 8px;font-size:14px}
.jdel:hover{color:#c0392b}
#cancelBtn{border-color:#c0392b;color:#c0392b}
.gitem img{cursor:zoom-in}
#lightbox{position:fixed;inset:0;background:rgba(10,14,22,.88);display:flex;align-items:center;justify-content:center;z-index:100;cursor:zoom-out;padding:12px}
#lightbox.hidden{display:none}
#lightbox img{max-width:97vw;max-height:96vh;border-radius:6px;box-shadow:0 4px 30px rgba(0,0,0,.5)}
