:root{font-family:'Segoe UI',Arial,sans-serif;color:#172b4d;background:#f3f6fa;font-size:16px;line-height:1.5}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0}button,input,select{font:inherit}button{background:#254edb;color:white;border:0;border-radius:8px;padding:13px 22px;cursor:pointer;font-weight:650}button:hover{background:#1939af}button:disabled{opacity:.45;cursor:not-allowed}button.quiet{background:transparent;color:#254edb;padding:8px 12px}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ffb859;outline-offset:3px}header{display:flex;align-items:center;gap:24px;padding:22px 4vw;background:white;border-bottom:1px solid #dce4ee}.brand{display:flex;align-items:center;gap:13px;font-size:24px;font-weight:800;color:#254edb}.brand>span{font-size:23px;color:#172b4d}.brand small{font-size:14px;font-weight:400;padding-left:12px;color:#62728a}.server{margin-left:auto;font-size:14px}.server span{display:block;color:#62728a;font-size:12px}main{max-width:1400px;margin:0 auto;padding:45px 32px 60px}.intro{display:flex;justify-content:space-between;gap:40px;align-items:center;margin-bottom:40px}h1{font-family:'Trebuchet MS','Segoe UI',sans-serif;font-size:45px;line-height:1.1;letter-spacing:-1.5px;margin:12px 0 18px}p{color:#62728a;max-width:70ch}.kicker{font-size:15px;margin:0;color:#254edb}.intro aside{max-width:280px;padding:18px 22px;border-left:4px solid #ffb859;background:#fff9ee;font-size:14px}.intro aside p{margin-bottom:0}.sectionTitle{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.sectionTitle span{font-size:13px;color:#62728a}h2{font-size:21px;margin:0 0 12px;letter-spacing:-.3px}.sectionTitle h2{margin:0}.models{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:12px}.model{padding:0;background:transparent;color:#172b4d;text-align:left;border:2px solid transparent;border-radius:10px;overflow:hidden;font-weight:400;position:relative}.model:hover{background:#e6edfc}.model.selected{border-color:#254edb;background:#e6edfc}.model img{width:100%;aspect-ratio:0.7;object-fit:cover;object-position:top;display:block;background:#dce4ee}.model .caption{display:block;padding:10px 8px}.model strong{font-size:13px;display:block;white-space:nowrap}.model small{font-size:11px;color:#62728a;display:block;margin-top:3px}.model:disabled{opacity:.75}.configuration{margin-top:35px;display:grid;grid-template-columns:1fr 1fr;gap:48px;background:white;padding:30px;border-radius:12px;border:1px solid #dce4ee}.configuration>div+div{border-left:1px solid #dce4ee;padding-left:40px}label{display:block;font-size:14px;font-weight:600;margin:16px 0 0}input,select{width:100%;padding:12px;border:1px solid #bac7d8;border-radius:6px;background:white;color:#172b4d;margin-top:7px}input::placeholder{color:#8390a4}.fields{display:grid;grid-template-columns:1fr 1fr;gap:15px}.hint{font-size:13px;line-height:1.6;margin-top:20px}.launch{display:flex;justify-content:space-between;align-items:center;gap:25px;padding:25px 0}.launch p{font-size:13px;margin:5px 0 0;max-width:70ch}.launch button{flex-shrink:0}.history{margin-top:32px;border-top:1px solid #dce4ee;padding-top:30px}.empty{padding:30px 0;color:#62728a}.job{background:white;border:1px solid #dce4ee;padding:20px 24px;border-radius:8px;margin-bottom:12px}.job h3{margin:0;font-size:18px}.job .stage{color:#254edb;margin:8px 0}.job.failed .stage,.error{color:#b42332}.job.complete{border-left:4px solid #16826a}.job p{margin:7px 0;font-size:14px}.job a{color:#254edb;margin-right:20px}.job details{margin:16px 0}.job pre{white-space:pre-wrap;background:#f3f6fa;padding:15px;font:14px 'Segoe UI',sans-serif}.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(110deg,#e8eefb 0 40%,#f3f6fa 40%)}.login form{background:white;padding:45px;max-width:500px;width:calc(100% - 32px);border:1px solid #dce4ee;border-radius:16px}.login h1{font-size:36px}.login button{width:100%;margin-top:20px}#loginError{color:#b42332;font-size:14px}footer{padding:24px 4vw;font-size:13px;border-top:1px solid #dce4ee;color:#62728a}@media(max-width:1100px){.models{grid-template-columns:repeat(4,1fr)}.model img{aspect-ratio:.85}.intro aside{max-width:250px}}@media(max-width:700px){main{padding:28px 18px}.intro{display:block}.intro aside{max-width:none;margin-top:25px}h1{font-size:37px}.models{grid-template-columns:repeat(2,1fr)}.configuration{grid-template-columns:1fr;gap:24px;padding:22px}.configuration>div+div{border:0;padding:20px 0 0;border-top:1px solid #dce4ee}.launch{display:block}.launch button{width:100%;margin-top:20px}.sectionTitle span{display:none}.brand small{display:none}.server{font-size:12px}.fields{grid-template-columns:1fr}header{gap:10px;padding:16px}.model img{aspect-ratio:.85}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.identity{margin-top:24px;padding:30px;background:white;border:1px solid #dce4ee;border-radius:12px}.mediaGuide{margin:24px 0;padding:18px 22px;background:#edf2fc;border-left:4px solid #254edb}.mediaGuide p{font-size:14px;margin:8px 0}.mediaGroup{border-top:1px solid #dce4ee;padding:18px 0}.mediaGroup>summary{font-size:18px;font-weight:650;cursor:pointer;padding:6px 0}.mediaGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:18px}.mediaSlot{min-width:0}.mediaSlot h3{font-size:15px;margin:0 0 10px}.mediaPreview{height:160px;background:repeating-conic-gradient(#edf0f4 0% 25%,#fff 0% 50%) 50%/18px 18px;border:1px solid #dce4ee;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:6px}.mediaPreview img{max-width:100%;max-height:100%;object-fit:contain}.mediaPreview span{font-size:13px;color:#62728a;background:white;padding:8px}.mediaSlot .hint{font-size:12px;margin:8px 0;overflow-wrap:anywhere}.mediaSlot input[type=file]{font-size:12px;padding:8px}.mediaSlot .toggle{display:flex;align-items:center;gap:8px;margin:8px 0}.toggle input{width:18px;height:18px;margin:0}.mediaSlot .quiet{padding:4px 0;font-size:12px}.mediaGroup>summary:focus-visible{outline:3px solid #ffb859;outline-offset:3px}@media(max-width:1000px){.mediaGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.identity{padding:22px}.mediaGrid{grid-template-columns:1fr}.mediaPreview{height:190px}}
.themePreview{margin:22px 0 0;border:1px solid #dce4ee;border-radius:8px;overflow:hidden}.themePreview figcaption{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;background:#f3f6fa;font-size:14px}.themePreview a{color:#254edb;font-size:12px;white-space:nowrap}.themePreviewFrame{min-height:180px;display:grid;place-items:center;padding:10px;background:#e9edf3}.themePreview img{display:block;width:100%;max-height:430px;object-fit:contain;object-position:top}.themePreviewFrame p{font-size:14px;padding:15px;text-align:center}.themePreviewFrame p:empty{display:none}@media(max-width:700px){.themePreview img{max-height:450px}.themePreview figcaption{flex-wrap:wrap}}
.aiSettings{margin:20px 0;padding:20px;border:1px solid #dbe3ef;border-radius:12px;background:#f6f8ff}.aiSettings p{max-width:900px}.aiSettings input{max-width:600px}.aiCreator{margin-top:16px;border-top:1px solid #dbe3ef;padding-top:12px}.aiCreator summary{cursor:pointer;font-weight:600}.aiCreator textarea{box-sizing:border-box;width:100%;padding:10px;border:1px solid #bccce2;border-radius:8px;font:inherit;margin:8px 0}.aiCreator img{width:100%;height:auto;border-radius:8px;margin:8px 0}.aiCreator button{margin:6px 0}.aiCreator .toggle{margin:10px 0}

#artBrief{display:block;box-sizing:border-box;width:100%;max-width:900px;padding:12px;margin-top:8px;border:1px solid #bccce2;border-radius:8px;font:inherit}

/* Recovery uploads stay open while installation cards refresh. */
dialog {width:min(640px,90vw);max-height:85vh;overflow:auto;border:1px solid #d7e1ed;border-radius:14px;padding:24px;color:#173555;background:#fff}
dialog::backdrop {background:rgb(15 28 48 / 55%)}
dialog form {display:grid;gap:16px}
dialog label {display:grid;gap:8px}
dialog input[type=file] {max-width:100%;padding:10px;border:1px solid #d7e1ed;border-radius:8px}
.job button {margin:6px 8px 6px 0}
