:root{color-scheme:dark;font-family:"Cascadia Mono","SFMono-Regular",Consolas,monospace;background:#071019;color:#eef6ff}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 80% 0,#1a3751,#08111c 43%,#04070c)}header{height:58px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid #29425a;background:#09131ee8;letter-spacing:.08em}header strong{font-size:13px;color:#8ee8cf}header span{color:#8199b3;font-size:10px}main{display:grid;grid-template-columns:305px minmax(0,1fr);gap:17px;max-width:1500px;margin:auto;padding:18px}.panel,.preview-grid article,.frames,.grid-result{border:1px solid #293f57;border-radius:14px;background:#101b29d9;box-shadow:0 14px 38px #0005}.panel{padding:17px;height:calc(100vh - 94px);overflow:auto}.panel h1,.workspace h2{margin:0;color:#e8f4ff}.panel h1{font-size:16px}.hint,.status{color:#91a7bf;font-size:10px;line-height:1.65}.upload{display:block;position:relative;margin:11px 0;padding:11px;border:1px dashed #4d759b;border-radius:9px;background:#0c1724;color:#cfe4fa;font-size:11px;cursor:pointer}.upload:hover{border-color:#7de6c8}.upload input{position:absolute;inset:0;width:100%;opacity:0;cursor:pointer}.upload small{display:block;margin-top:5px;color:#7490ad;font-size:9px}.divider{height:1px;margin:16px 0;background:#284057}.panel>label:not(.upload){display:grid;grid-template-columns:1fr auto;gap:7px;align-items:center;padding:8px 0;border-bottom:1px solid #1e3347;color:#c5d6e9;font-size:10px}.panel select,.panel input[type=text],.panel input[type=number],.panel input:not([type]){min-width:134px;height:28px;border:1px solid #405f7d;border-radius:5px;background:#0b1521;color:#eaf4ff;padding:0 7px;font:10px inherit}.panel input[type=range]{grid-column:1/-1;width:100%;accent-color:#68e4bf}.panel output{color:#7ce7ca}.profile-info{margin:9px 0;padding:9px;border:1px solid #304a63;border-radius:8px;background:#0a1420;color:#93abc5;font-size:9px;line-height:1.65}.profile-info b{color:#dbeeff}.micro{min-height:14px;margin:7px 0;color:#88a5c1;font-size:9px;line-height:1.45}.primary,button{border:1px solid #416785;border-radius:7px;background:#17324a;color:#dceeff;font:700 10px inherit;cursor:pointer}.primary{width:100%;height:39px;margin-top:17px;border:0;background:#83e9c7;color:#06231f}.primary:hover{background:#9bf4d7}button:disabled{opacity:.4;cursor:not-allowed}.workspace{min-width:0}.preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.preview-grid article{padding:12px}.workspace h2{font-size:11px;margin-bottom:9px}.workspace h2 span{color:#7de3c7}canvas{display:block;width:100%;aspect-ratio:1;border-radius:8px;background:#060d15;image-rendering:auto}.frames,.grid-result{margin-top:15px;padding:13px}.frames>div:first-child,.grid-result>div:first-child{display:flex;align-items:center;gap:8px}.frames button,.grid-result button{padding:7px 9px}.frame-rail{display:flex;gap:8px;min-height:78px;margin-top:11px;padding:3px;overflow-x:auto}.frame-rail p{align-self:center;margin:auto;color:#6e87a2;font-size:10px}.frame{flex:0 0 62px;width:62px;height:62px;padding:0;border:2px solid #304a65;overflow:hidden;background:#0a121d}.frame.active{border-color:#79e8ca;box-shadow:0 0 0 2px #2d766c}.frame canvas{border-radius:0}.grid-result canvas{width:min(640px,100%);margin:auto}@media(max-width:900px){main{grid-template-columns:1fr}.panel{height:auto}.preview-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){header{padding:0 14px}header span{display:none}main{padding:10px}.preview-grid{grid-template-columns:1fr}.panel{border-radius:10px}}
/* 云端生成记录面板 */
.history{margin-top:15px;padding:13px;border:1px solid #293f57;border-radius:14px;background:#101b29d9;box-shadow:0 14px 38px #0005}
.history>div:first-child{display:flex;align-items:center;gap:8px}
.history h2 span{color:#8199b3;font-size:9px;margin-left:6px}
.history-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:11px;margin-top:11px;min-height:40px}
.task-card{padding:9px;border:1px solid #304a65;border-radius:10px;background:#0c1724}
.task-card img{display:block;width:100%;aspect-ratio:1;border-radius:7px;background:#060d15;cursor:pointer;object-fit:cover}
.task-card div{margin-top:7px}
.task-card p{margin:0;color:#91a7bf;font-size:9px;line-height:1.6}
.task-card button{margin-top:7px;padding:5px 8px;font-size:9px;border-color:#7a4550;background:#2a1a22;color:#ffc9cf}
.task-card button:hover{background:#3a222b}

/* 管理员登录遮罩 */
.login-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#04070ce8;backdrop-filter:blur(4px)}
.login-overlay.hidden{display:none}
.login-card{width:300px;padding:24px 22px;border:1px solid #29425a;border-radius:14px;background:#0b1726f2;box-shadow:0 18px 50px #0008}
.login-card h2{margin:0 0 4px;color:#e8f4ff;font-size:15px;letter-spacing:.04em}
.login-hint{margin:0 0 16px;color:#8199b3;font-size:10px;line-height:1.6}
.login-card label{display:grid;gap:5px;margin-bottom:12px;color:#c5d6e9;font-size:10px}
.login-card input{height:32px;border:1px solid #405f7d;border-radius:6px;background:#0b1521;color:#eaf4ff;padding:0 9px;font:12px inherit}
.login-card input:focus{outline:none;border-color:#7de6c8}
.login-submit{width:100%;height:34px;margin-top:4px;border:1px solid #2f8f76;border-radius:7px;background:#103a30;color:#9bf0d4;font:12px inherit;cursor:pointer;letter-spacing:.3em}
.login-submit:hover{background:#155040}
.login-submit:disabled{opacity:.6;cursor:wait}
.login-error{margin:10px 0 0;color:#ffabab;font-size:10px;min-height:14px}
header button#logoutBtn{height:26px;padding:0 12px;border:1px solid #4a5f7d;border-radius:6px;background:#0b1726;color:#cfe4fa;font:10px inherit;cursor:pointer}
header button#logoutBtn:hover{border-color:#7de6c8}
