ss *,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg:#f7f7f8;--color-surface:#fff;--color-border:#e2e2e5;--color-border-hover:#c0c0c5;--color-text:#1a1a2e;--color-text-secondary:#6b6b80;--color-accent:#4f46e5;--color-accent-hover:#4338ca;--color-accent-light:#eef2ff;--color-success:#16a34a;--color-error:#dc2626;--color-progress-bg:#e2e2e5;--radius:12px;--radius-sm:8px;--shadow:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-lg:0 10px 40px #0000001f;--transition:.2s ease;--max-width:1120px}html{-webkit-font-smoothing:antialiased;font-size:16px}body{background:var(--color-bg);color:var(--color-text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:1.6}.page-container{max-width:var(--max-width);margin:0 auto;padding:0 24px 80px}.header{text-align:center;padding:32px 0 8px}.header__title{color:var(--color-text);letter-spacing:-.02em;font-size:1.75rem;font-weight:700}.header__subtitle{color:var(--color-text-secondary);margin-top:4px;font-size:1rem;font-weight:400}.upload-section{margin-top:32px}.upload-zone{border:2px dashed var(--color-border);border-radius:var(--radius);background:var(--color-surface);text-align:center;cursor:pointer;transition:border-color var(--transition), background var(--transition);padding:48px 24px;position:relative}.upload-zone:hover{border-color:var(--color-border-hover)}.upload-zone--active{border-color:var(--color-accent);background:var(--color-accent-light)}.upload-zone--has-file{border-style:solid;border-color:var(--color-accent)}.upload-zone__input{display:none}.upload-zone__icon{margin-bottom:12px;font-size:3rem;display:block}.upload-zone__text{color:var(--color-text-secondary);font-size:1rem}.upload-zone__text span{color:var(--color-accent);font-weight:500}.upload-zone__hint{color:var(--color-text-secondary);opacity:.7;margin-top:8px;font-size:.85rem}.upload-preview{flex-wrap:wrap;justify-content:center;align-items:center;gap:20px;display:flex}.upload-preview__image-wrapper{border-radius:var(--radius-sm);width:120px;height:120px;box-shadow:var(--shadow);flex-shrink:0;overflow:hidden}.upload-preview__image{object-fit:cover;width:100%;height:100%;display:block}.upload-preview__info{text-align:left}.upload-preview__name{color:var(--color-text);word-break:break-all;font-size:.95rem;font-weight:500}.upload-preview__size{color:var(--color-text-secondary);margin-top:2px;font-size:.85rem}.upload-preview__change{color:var(--color-accent);cursor:pointer;background:0 0;border:none;margin-top:8px;padding:0;font-family:inherit;font-size:.85rem}.upload-preview__change:hover{text-decoration:underline}.generate-button{color:#fff;background:var(--color-accent);border-radius:var(--radius-sm);cursor:pointer;width:100%;max-width:320px;transition:background var(--transition), transform var(--transition);border:none;margin:24px auto 0;padding:14px 32px;font-family:inherit;font-size:1rem;font-weight:600;display:block}.generate-button:hover:not(:disabled){background:var(--color-accent-hover);transform:translateY(-1px)}.generate-button:disabled{opacity:.5;cursor:not-allowed}.progress-section{margin-top:40px}.progress{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}.progress__label{color:var(--color-text);margin-bottom:12px;font-size:.95rem;font-weight:500}.progress__bar-wrapper{background:var(--color-progress-bg);border-radius:4px;height:8px;overflow:hidden}.progress__bar{background:var(--color-accent);border-radius:4px;min-width:0;height:100%;transition:width .4s}.progress__detail{color:var(--color-text-secondary);margin-top:8px;font-size:.85rem}.gallery-section{margin-top:40px}.gallery__title{color:var(--color-text);margin-bottom:20px;font-size:1.25rem;font-weight:600}.gallery__grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;display:grid}.gallery-card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);transition:transform var(--transition), box-shadow var(--transition);cursor:pointer;overflow:hidden}.gallery-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.gallery-card__image-wrapper{background:var(--color-bg);width:100%;padding-top:100%;position:relative;overflow:hidden}.gallery-card__image{object-fit:cover;width:100%;height:100%;display:block;position:absolute;top:0;left:0}.gallery-card__placeholder{width:100%;height:100%;color:var(--color-border);justify-content:center;align-items:center;font-size:2rem;display:flex;position:absolute;top:0;left:0}.gallery-card__label{color:var(--color-text);text-align:center;padding:12px 16px;font-size:.9rem;font-weight:500}.gallery-card--reference{border:2px solid var(--color-accent)}.modal-overlay{z-index:1000;background:#000c;justify-content:center;align-items:center;padding:24px;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.modal{max-width:90vw;max-height:90vh;position:relative}.modal__image{border-radius:var(--radius);max-width:100%;max-height:85vh;box-shadow:var(--shadow-lg);display:block}.modal__title{color:#fff;text-align:center;margin-top:12px;font-size:1rem;font-weight:500}.modal__close{background:var(--color-surface);cursor:pointer;width:40px;height:40px;box-shadow:var(--shadow);transition:transform var(--transition);border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.25rem;display:flex;position:absolute;top:-16px;right:-16px}.modal__close:hover{transform:scale(1.1)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width:768px){.header__title{font-size:1.35rem}.upload-zone{padding:32px 16px}.gallery__grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.gallery-card__label{padding:8px 12px;font-size:.85rem}}@media (max-width:480px){.page-container{padding:0 16px 60px}.gallery__grid{grid-template-columns:1fr 1fr;gap:10px}.upload-preview{text-align:center;flex-direction:column}.upload-preview__info{text-align:center}}
