:root{--color-primary: #c0112b;--color-primary-hover: #9e0e23;--color-secondary: #3d3d3d;--color-secondary-hover: #1f1f1f;--color-success: #15803d;--color-error: #b91c1c;--color-error-bg: #fef2f2;--color-bg: #f5f5f5;--color-surface: #ffffff;--color-border: #e0e0e0;--color-text: #1a1a1a;--color-text-muted: #6b6b6b;--radius: 4px;--radius-sm: 3px;--shadow: 0 2px 12px rgba(0, 0, 0, .07);--font: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-size-base: 1.125rem}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:100%;-webkit-text-size-adjust:100%}body{font-family:var(--font);font-size:var(--font-size-base);line-height:1.6;background:var(--color-bg);color:var(--color-text);min-height:100dvh}img{display:block;max-width:100%}button{font-family:inherit;cursor:pointer}.page{display:flex;flex-direction:column;align-items:center;gap:2rem;padding:2rem 1rem 4rem;min-height:100dvh}.page__header{text-align:center}.page__footer{color:var(--color-text-muted);font-size:.875rem;text-align:center}.logo{font-size:clamp(2rem,8vw,3.5rem);font-weight:900;letter-spacing:.04em;text-transform:uppercase;color:var(--color-primary);line-height:1}.tagline{margin-top:.5rem;color:var(--color-text-muted);font-size:1.1rem}.card{width:100%;max-width:640px;background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);border-top:3px solid var(--color-primary);padding:2rem 1.5rem;display:flex;flex-direction:column;gap:1.5rem}.btn{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-sm);font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:.75rem 1.5rem;font-size:.95rem;transition:background .15s,opacity .15s;text-align:center}.btn--primary{background:var(--color-primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--secondary{background:var(--color-secondary);color:#fff}.btn--secondary:hover:not(:disabled){background:var(--color-secondary-hover)}.btn--large{width:100%;padding:1.1rem 2rem;font-size:1.25rem;border-radius:var(--radius)}.btn:disabled{opacity:.45;cursor:not-allowed}.dropzone{border:3px dashed var(--color-border);border-radius:var(--radius);padding:2.5rem 1.5rem;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;user-select:none;-webkit-user-select:none}.dropzone:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}.dropzone--active{border-color:var(--color-primary);background:#fff0f2}.dropzone--disabled{opacity:.45;cursor:not-allowed}.dropzone__input{display:none}.dropzone__icon{font-size:3rem;display:block;margin-bottom:.75rem}.dropzone__primary{font-size:1.2rem;font-weight:600;color:var(--color-primary)}.dropzone__secondary{color:var(--color-text-muted);margin-top:.25rem}.dropzone__hint{font-size:.85rem;color:var(--color-text-muted);margin-top:.75rem}.preview-grid{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:.75rem}.preview-card{position:relative;border-radius:var(--radius-sm);overflow:hidden;border:2px solid var(--color-border);background:#f8fafc;aspect-ratio:1}.preview-card--success{border-color:var(--color-success)}.preview-card--error{border-color:var(--color-error)}.preview-card__img{width:100%;height:100%;object-fit:cover}.preview-card__bar{position:absolute;bottom:0;left:0;right:0;height:6px;background:#00000026}.preview-card__fill{height:100%;background:var(--color-primary);transition:width .1s linear}.preview-card__status{position:absolute;bottom:8px;left:4px;right:4px;font-size:.7rem;font-weight:700;text-align:center;background:#ffffffe0;border-radius:4px;padding:2px 4px;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-card--success .preview-card__status{color:var(--color-success)}.preview-card--error .preview-card__status{color:var(--color-error)}.preview-card__remove{position:absolute;top:4px;right:4px;width:26px;height:26px;border-radius:50%;background:#0000008c;color:#fff;border:none;font-size:.8rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s}.preview-card__remove:hover{background:#000c}.user-form{border:1.5px solid var(--color-border);border-radius:var(--radius);padding:1.25rem 1rem;display:flex;flex-direction:column;gap:1rem}.user-form__legend{font-weight:700;font-size:1rem;padding:0 .25rem;color:var(--color-text)}.user-form__field{display:flex;flex-direction:column;gap:.35rem}.user-form__label{font-weight:600;font-size:.95rem}.user-form__input{font-family:var(--font);font-size:1rem;padding:.75rem 1rem;border:2px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);background:var(--color-surface);transition:border-color .15s}.user-form__input:focus{outline:none;border-color:var(--color-primary)}.user-form:disabled .user-form__input{background:#f1f5f9;color:var(--color-text-muted);cursor:not-allowed}.error-list{list-style:none;background:var(--color-error-bg);border-left:4px solid var(--color-error);border-radius:var(--radius-sm);padding:.75rem 1rem;display:flex;flex-direction:column;gap:.35rem}.error-list__item{font-size:.95rem;color:var(--color-error);font-weight:500}.hint{font-size:.9rem;text-align:center;color:var(--color-text-muted)}.hint--error{color:var(--color-error);font-weight:600}.success{display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center;background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:3rem 2rem;width:100%;max-width:480px}.success__icon{font-size:4rem}.success__heading{font-size:2rem;font-weight:900;letter-spacing:.02em;text-transform:uppercase;color:var(--color-success)}.success__body{font-size:1.15rem;font-weight:600}.success__sub{color:var(--color-text-muted)}@media (min-width: 480px){.card{padding:2.5rem 2rem}.preview-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}.admin-page{align-items:stretch;padding:1.5rem}.admin-page__header{display:flex;justify-content:space-between;align-items:center;width:100%;max-width:1200px;margin:0 auto}.admin-page__actions{display:flex;gap:.75rem}.admin-card{max-width:1200px;width:100%;margin:0 auto}.admin-login{max-width:400px;margin:0 auto}.admin-login__form{display:flex;flex-direction:column;gap:1rem}.admin-login__heading{font-size:1.25rem;font-weight:700;color:var(--color-text)}.admin-count{font-size:.875rem;color:var(--color-text-muted);font-weight:600}.admin-table-wrapper{overflow-x:auto;border-radius:var(--radius-sm);border:1px solid var(--color-border)}.admin-table{width:100%;border-collapse:collapse;font-size:.875rem}.admin-table th,.admin-table td{text-align:left;padding:.625rem 1rem;border-bottom:1px solid var(--color-border);white-space:nowrap}.admin-table thead tr{background:var(--color-bg)}.admin-table th{font-weight:600;color:var(--color-text-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table tbody tr:hover{background:#fdf5f6}.admin-table__filename{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-table a{color:var(--color-primary);text-decoration:none}.admin-table a:hover{text-decoration:underline}.admin-table__download-btn{background:none;border:none;padding:0;color:var(--color-primary);cursor:pointer;font:inherit;text-align:left;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.admin-table__download-btn:hover:not(:disabled){text-decoration:underline}.admin-table__download-btn:disabled{opacity:.6;cursor:wait}
