:root{color:#172026;background:#f6f7f2;font-family:Inter,Segoe UI,PingFang SC,Microsoft YaHei,Arial,sans-serif}*{box-sizing:border-box}body{margin:0}.app-shell{min-height:100vh;padding:40px 24px}.workspace{margin:0 auto;max-width:1120px;width:100%}.eyebrow{color:#5f6f52;font-size:14px;font-weight:700;letter-spacing:0;margin:0 0 12px;text-transform:uppercase}h1{font-size:40px;line-height:1.15;margin:0 0 16px}.summary{color:#52615d;font-size:18px;line-height:1.7;margin:0;max-width:720px}.workflow-grid{border-top:1px solid #d8ded5;display:grid;gap:28px;grid-template-columns:minmax(0,1fr) minmax(320px,420px);margin-top:36px;padding-top:28px}.upload-panel,.options-panel{display:grid;gap:20px;min-width:0}.upload-copy h2{font-size:24px;line-height:1.25;margin:0 0 8px}.upload-copy p,.status-text,.error-text,.preview-block figcaption{color:#52615d;font-size:15px;line-height:1.6;margin:0}.upload-dropzone{align-items:center;background:#fff;border:1px dashed #8aa095;border-radius:8px;cursor:pointer;display:grid;gap:6px;min-height:132px;padding:24px;transition:border-color .16s ease,box-shadow .16s ease}.upload-dropzone:hover{border-color:#2e6f5c;box-shadow:0 8px 24px #2e6f5c1f}.upload-dropzone input{height:1px;opacity:0;pointer-events:none;position:absolute;width:1px}.upload-title{color:#18342b;font-size:18px;font-weight:700}.upload-hint{color:#65746f;font-size:14px}.error-text{color:#a33131}.preview-block{display:grid;gap:10px;margin:0}.preview-block img{aspect-ratio:4 / 3;background:#e7ece4;border:1px solid #d8ded5;border-radius:8px;max-width:360px;object-fit:contain;width:100%}.field-label{color:#263832;display:grid;font-size:14px;font-weight:700;gap:8px}.field-label select,.field-label textarea{background:#fff;border:1px solid #c8d0ca;border-radius:8px;color:#172026;font:inherit;min-height:42px;padding:8px 10px;width:100%}.generate-button{background:#2e6f5c;border:0;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:700;min-height:44px;padding:10px 16px}.generate-button:disabled{background:#aab7b1;cursor:not-allowed}@media(max-width:800px){.workflow-grid{grid-template-columns:1fr}}@media(max-width:640px){.app-shell{padding:28px 16px}h1{font-size:32px}.summary{font-size:16px}}.result-panel{border-top:1px solid #d8ded5;display:grid;gap:24px;margin-top:36px;padding-top:28px}.result-header{align-items:center;display:flex;gap:16px;justify-content:space-between}.result-header h2{font-size:24px;line-height:1.25;margin:0 0 8px}.secondary-button{background:#fff;border:1px solid #8aa095;border-radius:8px;color:#18342b;cursor:pointer;font-size:15px;font-weight:700;min-height:40px;padding:8px 14px}.progress-block{background:#fff;border:1px solid #d8ded5;border-radius:8px;min-height:96px;padding:24px}.result-grid{display:grid;gap:18px;grid-template-columns:repeat(4,minmax(0,1fr))}.result-card{display:grid;gap:8px;margin:0;min-width:0}.result-card img{aspect-ratio:1 / 1;background:#e7ece4;border:1px solid #d8ded5;border-radius:8px;object-fit:cover;width:100%}.result-card figcaption{color:#52615d;font-size:14px;line-height:1.4}@media(max-width:900px){.result-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.result-header{align-items:stretch;flex-direction:column}.result-grid{grid-template-columns:1fr}}.result-preview-button{background:transparent;border:0;cursor:zoom-in;display:block;padding:0;width:100%}.result-card figcaption{align-items:center;display:flex;gap:8px;justify-content:space-between}.result-card a,.preview-dialog-content a{color:#2e6f5c;font-size:14px;font-weight:700;text-decoration:none}.result-list{display:grid;gap:10px;list-style:none;margin:0;padding:0}.result-list-item{align-items:center;background:#fbfcfa;border:1px solid #d8ded5;border-radius:8px;display:grid;gap:14px;grid-template-columns:88px minmax(0,1fr) auto;min-height:104px;padding:10px}.result-list-thumb{height:88px}.result-list-thumb img{aspect-ratio:1 / 1;background:#e7ece4;border:1px solid #d8ded5;border-radius:8px;height:88px;object-fit:cover;width:88px}.result-list-copy{display:grid;gap:4px;min-width:0}.result-list-copy strong{color:#172026;font-size:15px;line-height:1.3}.result-list-copy span{color:#52615d;font-size:13px;line-height:1.4}.result-list-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.result-list-actions a{color:#2e6f5c;font-size:14px;font-weight:700;text-decoration:none}@media(max-width:640px){.result-list-item{align-items:start;grid-template-columns:72px minmax(0,1fr)}.result-list-thumb,.result-list-thumb img{height:72px;width:72px}.result-list-actions{grid-column:1 / -1;justify-content:flex-start}}.preview-dialog{align-items:center;background:#172026b8;display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:20}.preview-dialog-content{background:#fff;border-radius:8px;display:grid;gap:14px;max-height:calc(100vh - 48px);max-width:920px;padding:16px;width:min(920px,100%)}.preview-dialog-content img{background:#e7ece4;border-radius:8px;max-height:calc(100vh - 160px);object-fit:contain;width:100%}.preview-close{justify-self:end}.auth-bar{align-items:center;display:flex;justify-content:flex-end;margin-bottom:24px}.auth-status,.login-panel{align-items:end;display:flex;flex-wrap:wrap;gap:12px}.auth-status{color:#263832;font-size:14px;font-weight:700}.field-label input,.field-label textarea{background:#fff;border:1px solid #c8d0ca;border-radius:8px;color:#172026;font:inherit;min-height:42px;padding:8px 10px;width:100%}.copy-fields{display:grid;gap:14px}.copy-fields h3{font-size:16px;margin:0}.field-label textarea{min-height:96px;resize:vertical}.login-panel .field-label{min-width:180px}.app-alert{background:#fff8f8;border:1px solid #e2b7b7;border-radius:8px;padding:10px 12px}.admin-toolbar{align-items:end;display:flex;gap:12px}.admin-toolbar .field-label{min-width:min(320px,100%)}.admin-user-list{display:grid;gap:12px}.admin-user-row{align-items:center;background:#fff;border:1px solid #d8ded5;border-radius:8px;display:grid;gap:14px;grid-template-columns:minmax(220px,1fr) minmax(220px,320px) minmax(320px,1.4fr);padding:16px}.admin-amount-field{min-width:0}.admin-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}@media(max-width:900px){.admin-toolbar,.admin-user-row{align-items:stretch;display:grid;grid-template-columns:1fr}.admin-actions{justify-content:flex-start}}.admin-detail-panel{border-top:1px solid #d8ded5;display:grid;gap:16px;padding-top:18px}.admin-detail-panel h3{font-size:20px;line-height:1.3;margin:0}.ratio-checklist,.ratio-result-groups{display:grid;gap:12px}.ratio-checklist{grid-template-columns:repeat(auto-fit,minmax(92px,1fr))}.ratio-option{align-items:center;background:#fff;border:1px solid #c8d0ca;border-radius:8px;color:#263832;display:flex;font-size:14px;font-weight:700;gap:8px;min-height:42px;padding:8px 10px}.ratio-option input{height:16px;width:16px}.ratio-result-group{display:grid;gap:12px}.ratio-result-group h3{color:#172026;font-size:18px;line-height:1.3;margin:0}.batch-panel,.batch-status{border-top:1px solid #d8ded5;display:grid;gap:14px;padding-top:18px}.batch-result-strip{display:flex;flex-wrap:wrap;gap:8px}.batch-result-strip img{aspect-ratio:1 / 1;border:1px solid #d8ded5;border-radius:8px;object-fit:cover;width:72px}body{background:linear-gradient(180deg,#f7f8f2,#eef3f4)}.upload-panel,.options-panel{background:#ffffffd1;border:1px solid #dfe5df;border-radius:8px;box-shadow:0 14px 36px #25363014;padding:22px}.upload-dropzone{background:#fbfdfb;border-color:#7f9b92}.preview-block{background:#fff;border:1px solid #d8ded5;border-radius:8px;max-width:392px;padding:14px}.preview-block img{max-width:100%}.batch-panel,.batch-status{background:#f8fbfa;border:1px solid #d8ded5;border-radius:8px;padding:18px}.admin-user-row{grid-template-columns:minmax(220px,1fr) minmax(220px,320px) minmax(320px,1.4fr)}.admin-user-controls{display:grid;gap:10px}.admin-expiration-field,.admin-amount-field{min-width:0}.secondary-button{transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease}.secondary-button:hover{background:#f3f8f5;border-color:#2e6f5c;box-shadow:0 6px 18px #2e6f5c1a}.danger-button{border-color:#d76d6d;color:#a83232}.danger-button:hover{background:#fff4f4}:root{color:#18222a;background:#f4f5f0;--surface: #ffffff;--surface-soft: #f7f8f4;--ink: #18222a;--muted: #5c6870;--line: #d8ded8;--brand: #236b5b;--brand-strong: #174f43;--accent: #b85f40;--accent-soft: #fff0e8;--blue-soft: #edf4f7;--shadow-soft: 0 18px 44px rgba(24, 34, 42, .09)}body{background:linear-gradient(180deg,#f5f6f1,#edf3f2 48%,#f7f4ef)}.app-shell{padding:28px 24px 48px}.workspace{max-width:1180px}.workspace-hero{background:linear-gradient(135deg,#fff,#f6faf8 54%,#fff6ef);border:1px solid #dde5df;border-radius:8px;box-shadow:var(--shadow-soft);display:grid;gap:22px;overflow:hidden;padding:22px}.hero-topline{align-items:center;display:flex;justify-content:space-between}.workspace-hero .eyebrow{color:var(--accent);font-size:13px;letter-spacing:0;margin:0}.workspace-hero .auth-bar{background:#ffffffb3;border:1px solid rgba(216,222,216,.9);border-radius:8px;margin:0;padding:12px}.hero-content{align-items:end;display:grid;gap:20px;grid-template-columns:minmax(0,1fr) auto}.hero-copy{display:grid;gap:10px}.hero-copy h1{color:var(--ink);font-size:38px;line-height:1.12;margin:0}.hero-copy .summary{color:var(--muted);font-size:16px;line-height:1.7;max-width:720px}.workspace-badges{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.workspace-badges span{background:var(--surface);border:1px solid #d7dfdc;border-radius:8px;color:#27423b;font-size:13px;font-weight:800;line-height:1;min-height:34px;padding:10px 12px;white-space:nowrap}.workspace-badges span:first-child{background:var(--blue-soft);border-color:#c8dce4;color:#24566a}.workspace-badges span:nth-child(2){background:#edf8f1;border-color:#cce2d4;color:var(--brand-strong)}.workspace-badges span:nth-child(3){background:var(--accent-soft);border-color:#efd0c2;color:#8b432d}.workflow-grid,.result-panel{border-top:0;margin-top:28px;padding-top:0}.upload-panel,.options-panel,.result-panel{background:#ffffffe6;border:1px solid #dfe5df;border-radius:8px;box-shadow:0 14px 34px #18222a12;padding:22px}.upload-copy h2,.result-header h2{color:var(--ink)}.upload-copy p,.status-text,.preview-block figcaption,.result-list-copy span{color:var(--muted)}.upload-dropzone{background:linear-gradient(180deg,#fff,#f8fbf9);border-color:#8ea69d}.upload-dropzone:hover{border-color:var(--brand);box-shadow:0 10px 24px #236b5b21}.field-label select,.field-label input,.field-label textarea{border-color:#cbd5d0;box-shadow:inset 0 1px #18222a08}.field-label select:focus,.field-label input:focus,.field-label textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px #236b5b24;outline:none}.generate-button{background:linear-gradient(135deg,var(--brand) 0%,#1b5f73 100%);box-shadow:0 12px 24px #236b5b33;transition:transform .16s ease,box-shadow .16s ease,opacity .16s ease}.generate-button:not(:disabled):hover{box-shadow:0 16px 30px #236b5b3d;transform:translateY(-1px)}.generate-button:disabled{background:#aeb9b5;box-shadow:none}.secondary-button{background:#fff;border-color:#b9c8c1;color:#1f4038}.result-list-item,.admin-user-row,.progress-block,.preview-block,.batch-panel,.batch-status,.ratio-option{background:var(--surface);border-color:var(--line);box-shadow:0 8px 22px #18222a0d}.result-list-item:hover,.admin-user-row:hover{border-color:#b9c8c1}.app-alert{border-color:#e6b8ad}@media(max-width:900px){.hero-content{align-items:start;grid-template-columns:1fr}.workspace-badges{justify-content:flex-start}}@media(max-width:640px){.app-shell{padding:18px 14px 32px}.workspace-hero,.upload-panel,.options-panel,.result-panel{padding:16px}.hero-copy h1{font-size:30px}.workspace-hero .auth-bar,.auth-status,.login-panel{align-items:stretch;display:grid;grid-template-columns:1fr}.login-panel .field-label{min-width:0}}
