*{box-sizing:border-box}body{margin:0;min-height:100vh;background:#f4f7fb;color:#111827;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",Arial,sans-serif}.hidden{display:none!important}.mobile-app{width:min(100%,520px);margin:0 auto;padding:14px 12px 32px}.generator-card,.recent-card{background:#fff;border:1px solid #e8edf5;border-radius:18px;box-shadow:0 8px 28px rgba(15,23,42,.06);padding:14px;margin-bottom:14px}.mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.mode-btn{height:44px;border:1px solid #dbe5f2;border-radius:14px;background:#f8fafc;color:#667085;font-size:15px;font-weight:700}.mode-btn.active{background:#2563eb;color:#fff;border-color:#2563eb;box-shadow:0 8px 18px rgba(37,99,235,.22)}.field-block{margin:15px 0}.field-block label,.field-title-row label{display:block;margin-bottom:8px;font-size:14px;font-weight:800;color:#1f2937}.field-title-row{display:flex;align-items:center;justify-content:space-between}.field-title-row span{font-weight:800;color:#2563eb}.control-select,input[type=text],textarea{width:100%;border:1px solid #dce5ef;border-radius:13px;background:#fff;padding:13px 12px;font-size:15px;outline:none;color:#111827}.control-select:focus,textarea:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12)}textarea{resize:vertical;line-height:1.55}.seg-tabs{display:inline-grid;grid-template-columns:1fr 1fr;gap:4px;background:#eef3f9;border-radius:12px;padding:4px;margin-bottom:12px}.seg-tabs button{border:0;border-radius:9px;padding:8px 16px;background:transparent;color:#667085;font-weight:700}.seg-tabs button.active{background:#fff;color:#2563eb;box-shadow:0 2px 8px rgba(15,23,42,.08)}.ratio-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.ratio-card{height:64px;border:1px solid #dce5ef;border-radius:14px;background:#fff;text-align:left;padding:10px 12px;color:#111827}.ratio-card strong{display:block;font-size:15px;margin-bottom:5px}.ratio-card span{font-size:13px;color:#6b7280}.ratio-card.active{border:2px solid #2563eb;background:#f7fbff;box-shadow:0 8px 18px rgba(37,99,235,.12)}.count-field input[type=range]{width:100%;accent-color:#2563eb}.upload-drop{display:flex!important;min-height:150px;align-items:center;justify-content:center;flex-direction:column;border:1.5px dashed #bfd0e4;border-radius:16px;background:#f8fbff;color:#667085;gap:5px;text-align:center}.upload-drop .upload-icon{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#e8f0ff;color:#2563eb;font-size:24px}.upload-drop strong{color:#1f2937}.upload-drop em{font-style:normal}.upload-drop small{font-size:12px;color:#9ca3af}.outline-btn{width:100%;height:42px;margin-top:10px;border:1px solid #2563eb;background:#fff;color:#2563eb;border-radius:12px;font-weight:800}.preview-strip{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.preview-strip img{width:64px;height:64px;object-fit:cover;border-radius:12px;border:1px solid #dce5ef}.prompt-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.prompt-tags button{border:1px solid #e3e9f2;background:#f8fafc;color:#344054;border-radius:999px;padding:7px 10px;font-size:12px;text-align:left}.generate-btn{width:100%;height:48px;border:0;border-radius:14px;background:#2563eb;color:#fff;font-size:16px;font-weight:900;box-shadow:0 12px 24px rgba(37,99,235,.25)}.generate-btn:disabled{opacity:.65}.message{margin-top:12px;border-radius:13px;padding:11px 12px;background:#fff1f2;color:#be123c;font-size:13px;line-height:1.5}.message.ok{background:#eff6ff;color:#1d4ed8}.recent-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.recent-head h2{font-size:18px;margin:0 0 4px}.recent-head p{font-size:13px;color:#8a95a5;margin:0}.refresh-btn{border:1px solid #dce5ef;background:#fff;border-radius:999px;padding:7px 12px;color:#667085}.recent-empty{min-height:210px;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#98a2b3;border:1px dashed #e1e7ef;border-radius:16px;margin-top:14px;background:#fbfdff}.empty-icon{font-size:42px;line-height:1;margin-bottom:8px;color:#c5cfdd}.recent-empty strong{color:#667085;margin-bottom:4px}.image-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:14px}.image-grid img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:14px}.compact-records{margin-top:12px}.mini-record{position:relative;border:1px solid #edf1f7;border-radius:13px;padding:10px 78px 10px 10px;margin-top:8px;background:#fff}.mini-record strong{font-size:13px}.mini-record p{margin:4px 0 0;color:#6b7280;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:12px;border-radius:999px;padding:4px 8px;background:#eef2f7;color:#667085}.status.success{background:#dcfce7;color:#15803d}.status.failed{background:#fee2e2;color:#b91c1c}.status.pending,.status.processing{background:#dbeafe;color:#1d4ed8}.admin-body{background:#f4f7fb}.admin-top{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:#fff;border-bottom:1px solid #e5e7eb}.admin-top a{color:#2563eb;text-decoration:none;margin-left:10px}.admin-main{max-width:1100px;margin:20px auto;padding:0 14px}.admin-card{background:#fff;border-radius:16px;padding:16px;margin-bottom:14px;border:1px solid #e5e7eb}.topline{display:flex;justify-content:space-between;gap:12px;align-items:center}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}td,th{border-bottom:1px solid #eef2f7;padding:10px;text-align:left;font-size:13px}.primary-btn,button{cursor:pointer}.record-thumb{width:54px;height:54px;border-radius:10px;object-fit:cover}.small-link{color:#2563eb;text-decoration:none}.danger-btn{background:#ef4444;color:#fff;border:0;border-radius:8px;padding:6px 10px}/* UI v1.0.3: ratio shape cards + clickable resolution tab */
.ratio-card{display:flex;align-items:center;gap:11px;height:58px;padding:9px 10px;background:#fff}.shape-box{display:inline-block;border:2px solid #cbd5e1;border-radius:5px;background:linear-gradient(180deg,#f8fafc,#eef2ff);flex:0 0 auto}.ratio-card.active .shape-box{border-color:#2563eb;background:#dbeafe}.ratio-text{display:flex;flex-direction:column;gap:3px}.ratio-text strong{font-size:14px;margin:0}.ratio-text em{font-style:normal;font-size:12px;color:#7b8794}.resolution-mode{grid-template-columns:1fr}.resolution-mode .ratio-card{height:54px}.seg-tabs button{cursor:pointer}.control-select{appearance:auto}.field-block:first-of-type .control-select{font-weight:700;color:#111827}
/* UI v1.0.6: choose 1K/2K/4K, then ratio */
.quality-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:8px}.quality-tabs button{height:38px;border:1px solid #dce5ef;border-radius:12px;background:#f8fafc;color:#475569;font-weight:900}.quality-tabs button.active{background:#2563eb;border-color:#2563eb;color:#fff;box-shadow:0 8px 18px rgba(37,99,235,.18)}.size-hint{font-size:12px;color:#94a3b8;margin:0 0 12px}.ratio-card .ratio-text em{line-height:1.35}
/* user auth / floating nav v1.0.7 */
.float-nav{position:sticky;top:0;z-index:50;width:min(100%,520px);margin:0 auto;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:rgba(244,247,251,.88);backdrop-filter:blur(14px);border-bottom:1px solid rgba(226,232,240,.8)}.float-brand{font-weight:900;color:#111827;text-decoration:none}.float-nav nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.float-nav a,.float-nav span{font-size:13px;color:#475569;text-decoration:none}.float-nav a{background:#fff;border:1px solid #e2e8f0;border-radius:999px;padding:7px 10px}.float-nav a.primary{background:#2563eb;border-color:#2563eb;color:#fff}.with-nav{padding-top:10px}.muted{color:#64748b;font-size:13px;line-height:1.6}.auth-main{max-width:440px}.admin-top{position:sticky;top:0;z-index:50;gap:12px;box-shadow:0 8px 24px rgba(15,23,42,.06)}.admin-top .brand{text-decoration:none;font-weight:900;color:#111827}.admin-top nav{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.admin-top nav a,.admin-top .nav-user{margin-left:0;background:#f8fafc;border:1px solid #e2e8f0;border-radius:999px;padding:7px 10px;font-size:13px;text-decoration:none}.admin-top .nav-user{color:#2563eb;background:#eff6ff}.ghost-btn{height:42px;border:1px solid #dbe5ef;border-radius:12px;color:#334155;text-decoration:none;background:#fff;display:inline-flex;align-items:center;padding:0 13px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.form-grid .full{grid-column:1/-1}.form-grid label,.login-box label{display:block;font-weight:800;margin:8px 0 7px;color:#334155}.form-grid input,.form-grid select,.form-grid textarea,.login-box input{width:100%;border:1px solid #dbe5ef;border-radius:12px;padding:11px;background:#fff}.save-btn,.primary-btn{height:42px;border:0;border-radius:12px;background:#2563eb;color:#fff;font-weight:900;padding:0 18px;margin-top:12px}.admin-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.metric{background:linear-gradient(135deg,#eff6ff,#f8fafc);border:1px solid #dbeafe;border-radius:16px;padding:16px}.metric span{display:block;color:#64748b;font-size:13px;margin-bottom:8px}.metric strong{font-size:26px;color:#1d4ed8}@media(max-width:760px){.admin-top{align-items:flex-start;flex-direction:column}.admin-main{margin:12px auto;padding:0 10px}.admin-grid{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.table-wrap table,.table-wrap thead,.table-wrap tbody,.table-wrap tr,.table-wrap th,.table-wrap td{display:block}.table-wrap thead{display:none}.table-wrap tr{border:1px solid #edf1f7;border-radius:14px;margin:10px 0;padding:8px;background:#fff}.table-wrap td{border:0;padding:7px 4px}.inline-actions{display:flex;gap:8px;flex-wrap:wrap}}
/* admin v1.0.8 total/user backend polish */
.admin-body{background:linear-gradient(180deg,#eef5ff 0,#f7f9fc 260px,#f4f7fb 100%)}.admin-glass{background:rgba(255,255,255,.88);backdrop-filter:blur(16px);border-bottom:1px solid rgba(226,232,240,.85)}.admin-shell{max-width:1180px}.hero-card{display:flex;align-items:center;justify-content:space-between;gap:16px;background:linear-gradient(135deg,#ffffff,#eef6ff);border:1px solid #dbeafe}.hero-card h1{margin:0 0 6px;font-size:24px}.admin-cta{display:inline-flex;align-items:center;text-decoration:none}.role-pill{display:inline-flex;border-radius:999px;padding:4px 9px;font-weight:800;font-size:12px;background:#eef2ff;color:#3730a3}.role-pill.admin{background:#dcfce7;color:#15803d}.save-btn.mini{height:32px;margin:0;padding:0 10px}.admin-card{border:1px solid rgba(226,232,240,.95);box-shadow:0 10px 30px rgba(15,23,42,.06)}.table-wrap table{min-width:720px}.table-wrap th{font-size:12px;color:#64748b;text-transform:uppercase;letter-spacing:.02em}.table-wrap td{vertical-align:middle}.admin-top nav a:hover,.float-nav a:hover{transform:translateY(-1px);box-shadow:0 6px 14px rgba(15,23,42,.08)}.admin-top nav a,.float-nav a{transition:.18s ease}.message{border:1px solid rgba(244,63,94,.18)}@media(max-width:760px){.hero-card{align-items:flex-start;flex-direction:column}.hero-card h1{font-size:21px}.table-wrap table{min-width:0}.admin-top nav{width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}.admin-top nav a,.admin-top .nav-user{white-space:nowrap}.table-wrap td:before{content:attr(data-label);display:block;font-size:11px;color:#94a3b8;margin-bottom:2px}}
/* v1.0.9 tidy config UI */
.clean-form{margin-top:10px}.button-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}.config-list{display:flex;flex-direction:column;gap:10px}.config-list h2{margin-bottom:2px}.config-item{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid #e6edf6;border-radius:16px;background:#fff;padding:14px}.config-item strong{display:block;font-size:15px;margin:4px 0}.config-item p{margin:0 0 6px;color:#475569;word-break:break-all}.owner-chip{display:inline-flex;border-radius:999px;background:#eef2ff;color:#3730a3;padding:3px 8px;font-size:12px;font-weight:800}.item-actions{display:flex;gap:8px;align-items:center;flex:0 0 auto}.item-actions form{margin:0}.admin-top nav a[href$="groups.php"],.admin-top nav a[href$="models.php"]{display:none}.message.ok{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}.config-item .danger-btn,.item-actions .small-link{height:34px;display:inline-flex;align-items:center;border-radius:10px}.item-actions .small-link{padding:0 11px;background:#eff6ff;text-decoration:none;font-weight:800}@media(max-width:760px){.config-item{align-items:stretch;flex-direction:column}.item-actions{justify-content:flex-start}.button-row .save-btn,.button-row .ghost-btn{width:100%;justify-content:center}.clean-form .form-grid{gap:10px}}
.image-grid a{position:relative;display:block}
.image-meta{position:absolute;left:8px;bottom:8px;padding:4px 7px;border-radius:999px;background:rgba(15,23,42,.72);color:#fff;font-size:11px;font-weight:700}
.app-shell{padding-bottom:92px}
.app-shell-main{width:min(100%,680px);padding:18px 14px 120px}
.hero-panel{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;background:linear-gradient(135deg,#ffffff,#eaf2ff);border:1px solid #dbeafe;border-radius:22px;padding:18px 16px;margin:0 auto 14px;box-shadow:0 10px 30px rgba(15,23,42,.06)}
.hero-kicker{margin:0 0 6px;font-size:12px;font-weight:900;letter-spacing:.08em;color:#2563eb;text-transform:uppercase}
.hero-panel h1{margin:0 0 8px;font-size:28px;line-height:1.05}
.app-page{display:none}
.app-page.active{display:block}
.inline-link-btn{border:0;background:transparent;color:#2563eb;font-weight:800;padding:0}
.bottom-nav{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);width:min(calc(100% - 24px),680px);display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:10px;background:rgba(255,255,255,.92);backdrop-filter:blur(16px);border:1px solid rgba(226,232,240,.9);border-radius:20px;box-shadow:0 16px 32px rgba(15,23,42,.12);z-index:60}
.bottom-nav-btn{height:46px;border:1px solid #dbe5f2;border-radius:14px;background:#f8fafc;color:#64748b;font-size:15px;font-weight:800}
.bottom-nav-btn.active{background:#2563eb;border-color:#2563eb;color:#fff;box-shadow:0 10px 22px rgba(37,99,235,.24)}
.config-modal{position:fixed;inset:0;z-index:100}
.config-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.48)}
.config-sheet{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(calc(100% - 24px),560px);background:#fff;border-radius:24px;border:1px solid #e5edf7;box-shadow:0 24px 60px rgba(15,23,42,.24);padding:18px}
.config-sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.config-sheet-head h2{margin:0;font-size:24px}
.icon-btn{width:40px;height:40px;border:1px solid #dbe5ef;border-radius:12px;background:#fff;color:#334155;font-size:24px;line-height:1}
.config-form{display:grid;gap:10px}
.config-form input,.config-form textarea{width:100%;border:1px solid #dce5ef;border-radius:14px;background:#fff;padding:13px 12px;font-size:15px;color:#111827}
@media (max-width:760px){.hero-panel{flex-direction:column}.hero-panel h1{font-size:24px}.config-sheet{top:auto;bottom:12px;transform:translateX(-50%)}}
.param-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:start}
.field-mini-label{display:block;margin-bottom:8px;font-size:12px;font-weight:800;color:#64748b}
.param-grid>div{min-width:0}
.param-grid .control-select,.param-grid input{width:100%;min-width:0}
.param-grid .control-select,.param-grid input{height:52px;border:1px solid #dce5ef;border-radius:13px;background:#fff;padding:0 12px;font-size:15px;color:#111827}
.param-grid #compressionInput{text-align:center;font-size:15px}
.param-grid #compressionInput::placeholder{text-align:center;font-size:15px}
@media(max-width:760px){.param-grid{gap:8px}.param-grid .control-select,.param-grid input{height:48px;padding:0 10px;font-size:14px}.param-grid #compressionInput{font-size:14px}.param-grid #compressionInput::placeholder{font-size:14px}}
.ratio-grid .ratio-card{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;column-gap:8px;min-height:42px;height:auto;padding:4px 10px;overflow:hidden}
.ratio-grid .shape-box{display:block;justify-self:center;align-self:center;margin:0}
.ratio-grid .ratio-text{display:grid;grid-template-columns:78px minmax(0,1fr);align-items:end;column-gap:6px;justify-self:stretch;min-width:0;width:100%;overflow:hidden}
.ratio-grid .ratio-main{display:grid;grid-template-rows:auto auto;row-gap:2px;justify-items:center;min-width:0;width:78px;transform:translateX(-18px)}
.ratio-grid .ratio-title{display:block;margin:0;text-align:center;white-space:nowrap;line-height:1;font-size:14px;font-weight:700}
.ratio-grid .ratio-value{display:block;text-align:center;white-space:nowrap;line-height:1.05}
.ratio-grid .ratio-size{display:block;min-width:0;max-width:100%;text-align:right;white-space:nowrap;overflow:visible;text-overflow:clip;font-variant-numeric:tabular-nums;line-height:1.05;align-self:end;font-size:11px;letter-spacing:-.02em;transform:translateX(-30px)}
@media(max-width:760px){.ratio-grid .ratio-card{grid-template-columns:40px minmax(0,1fr);column-gap:8px;min-height:40px;padding:3px 8px}.ratio-grid .ratio-text{grid-template-columns:72px minmax(0,1fr);column-gap:6px;width:100%}.ratio-grid .ratio-main{width:72px;transform:translateX(-18px)}.ratio-grid .ratio-title{font-size:14px}.ratio-grid .ratio-value{font-size:12px}.ratio-grid .ratio-size{font-size:10px;transform:translateX(-30px)}}
@media(max-width:760px){.ratio-grid .ratio-card{grid-template-columns:40px minmax(0,1fr);column-gap:10px;min-height:40px;padding:3px 10px}.ratio-grid .ratio-title{font-size:14px}.ratio-grid .ratio-value,.ratio-grid .ratio-size{font-size:12px}.ratio-grid .ratio-bottom{column-gap:8px}}
/* force mobile layout on all screen sizes */
.mobile-app{width:min(100%,520px)!important;margin:0 auto!important;padding:14px 12px 32px!important;display:block!important}
.app-shell-main{width:min(100%,680px)!important;padding:18px 14px 120px!important}
.generator-card,.recent-card{margin-bottom:14px!important}
.float-nav{width:min(100%,520px)!important}
