:root{--color-bg:#fff;--color-surface:#f9fafb;--color-border:#e5e7eb;--color-text:#111827;--color-text-muted:#6b7280;--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-danger:#dc2626;--color-focus:#93c5fd;--radius:12px;--spacing:1rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);min-height:100vh;line-height:1.5}#app{min-height:100vh;padding:calc(var(--spacing) * 2);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.app-title{margin-bottom:var(--spacing);font-size:1.75rem;font-weight:700}.app-subtitle{color:var(--color-text-muted);margin-bottom:calc(var(--spacing) * 2)}.uploader{width:100%;max-width:480px}.drop-zone{border:2px dashed var(--color-border);border-radius:var(--radius);padding:calc(var(--spacing) * 3) var(--spacing);background:var(--color-surface);cursor:pointer;transition:border-color .15s,background-color .15s}.drop-zone:hover,.drop-zone:focus-visible{border-color:var(--color-primary);background:#eff6ff;outline:none}.drop-zone.dragover{border-color:var(--color-primary);background:#dbeafe}.drop-zone__text{color:var(--color-text-muted);margin-bottom:var(--spacing)}.drop-zone__button{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.625rem 1.25rem;font-size:1rem;transition:background-color .15s;display:inline-block}.drop-zone__button:hover{background:var(--color-primary-hover)}.drop-zone__input{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.privacy-note{margin-top:calc(var(--spacing) * 2);color:var(--color-text-muted);font-size:.875rem}.error-message{margin-top:var(--spacing);color:var(--color-danger);min-height:1.25rem;font-size:.875rem}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.options-panel{gap:calc(var(--spacing) * 1.5);flex-direction:column;width:100%;max-width:480px;display:flex}.file-info{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--spacing);text-align:left}.file-info__name{word-break:break-all;font-weight:600}.file-info__meta{color:var(--color-text-muted);margin-top:.25rem;font-size:.875rem}.option-group{border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--spacing);text-align:left}.option-group legend{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);padding:0 .5rem;font-size:.875rem;font-weight:600}.radio-option{cursor:pointer;align-items:baseline;gap:.5rem;padding:.5rem 0;display:flex}.radio-option input[type=radio]{width:1.125rem;height:1.125rem;accent-color:var(--color-primary);flex-shrink:0;margin-top:0}.radio-option__label{font-weight:500}.radio-option__hint{color:var(--color-text-muted);margin-left:auto;font-size:.8125rem}.custom-range{margin-top:.5rem}.custom-range__input{border:1px solid var(--color-border);border-radius:8px;width:100%;padding:.5rem .75rem;font-size:.9375rem;transition:border-color .15s}.custom-range__input:focus{border-color:var(--color-primary);outline:none}.custom-range__error{color:var(--color-danger);min-height:1rem;margin-top:.25rem;font-size:.8125rem}.convert-button{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.75rem 1.5rem;font-size:1.0625rem;font-weight:600;transition:background-color .15s}.convert-button:hover{background:var(--color-primary-hover)}.progress-panel{align-items:center;gap:var(--spacing);flex-direction:column;width:100%;max-width:480px;display:flex}.progress-title{font-size:1.25rem;font-weight:600}.progress-bar{background:var(--color-border);border-radius:999px;width:100%;height:8px;overflow:hidden}.progress-bar__fill{background:var(--color-primary);border-radius:999px;width:0%;height:100%;transition:width .2s}.progress-text{color:var(--color-text-muted);font-size:.9375rem}.cancel-button{color:var(--color-text-muted);border:1px solid var(--color-border);cursor:pointer;background:0 0;border-radius:8px;padding:.5rem 1.25rem;font-size:.9375rem;transition:border-color .15s,color .15s}.cancel-button:hover{border-color:var(--color-danger);color:var(--color-danger)}.result-panel{align-items:center;gap:var(--spacing);flex-direction:column;width:100%;max-width:480px;display:flex}.result-title{color:#16a34a;font-size:1.25rem;font-weight:600}.result-summary{color:var(--color-text-muted);font-size:.9375rem}.download-button{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.75rem 1.5rem;font-size:1.0625rem;font-weight:600;transition:background-color .15s}.download-button:hover{background:var(--color-primary-hover)}.convert-another-button{color:var(--color-text-muted);border:1px solid var(--color-border);cursor:pointer;background:0 0;border-radius:8px;padding:.5rem 1.25rem;font-size:.9375rem;transition:border-color .15s,color .15s}.convert-another-button:hover{border-color:var(--color-primary);color:var(--color-primary)}.password-panel{align-items:center;gap:var(--spacing);flex-direction:column;width:100%;max-width:420px;display:flex}.password-title{font-size:1.25rem;font-weight:600}.password-hint{color:var(--color-text-muted);font-size:.9375rem}.password-filename{word-break:break-all;font-weight:500}.password-form{text-align:left;flex-direction:column;gap:.5rem;width:100%;display:flex}.password-form__label{font-size:.875rem;font-weight:500}.password-form__input{border:1px solid var(--color-border);border-radius:8px;width:100%;padding:.625rem .875rem;font-size:1rem;transition:border-color .15s}.password-form__input:focus{border-color:var(--color-primary);outline:none}.password-form__button{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:8px;margin-top:.5rem;padding:.625rem 1.25rem;font-size:1rem;font-weight:600;transition:background-color .15s}.password-form__button:hover{background:var(--color-primary-hover)}.password-form__cancel{color:var(--color-text-muted);border:1px solid var(--color-border);cursor:pointer;background:0 0;border-radius:8px;padding:.5rem 1.25rem;font-size:.9375rem;transition:border-color .15s,color .15s}.password-form__cancel:hover{border-color:var(--color-danger);color:var(--color-danger)}.page-error-overlay{z-index:1000;padding:var(--spacing);background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.page-error-dialog{background:var(--color-bg);border-radius:var(--radius);padding:calc(var(--spacing) * 1.5);gap:var(--spacing);flex-direction:column;width:100%;max-width:420px;display:flex;box-shadow:0 20px 60px #00000026}.page-error-title{color:var(--color-danger);font-size:1.125rem;font-weight:600}.page-error-message{color:var(--color-text-muted);font-size:.9375rem;line-height:1.5}.page-error-actions{flex-wrap:wrap;gap:.5rem;display:flex}.page-error-btn{cursor:pointer;border:none;border-radius:8px;padding:.5rem 1rem;font-size:.9375rem;transition:background-color .15s,border-color .15s}.page-error-btn--retry{background:var(--color-primary);color:#fff;font-weight:500}.page-error-btn--retry:hover{background:var(--color-primary-hover)}.page-error-btn--skip{color:var(--color-text-muted);border:1px solid var(--color-border);background:0 0}.page-error-btn--skip:hover{border-color:var(--color-text);color:var(--color-text)}.page-error-btn--cancel{color:var(--color-danger);border:1px solid var(--color-border);background:0 0}.page-error-btn--cancel:hover{border-color:var(--color-danger)}.result-skipped{color:#d97706;font-size:.875rem}.quality-warning{color:#92400e;text-align:left;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:.75rem 1rem;font-size:.875rem;line-height:1.5}@media (max-width:640px){:root{--spacing:.875rem}#app{padding:calc(var(--spacing) * 1.5);padding-top:max(calc(var(--spacing) * 1.5), env(safe-area-inset-top));padding-bottom:max(calc(var(--spacing) * 1.5), env(safe-area-inset-bottom));padding-top:max(calc(var(--spacing) * 3), env(safe-area-inset-top));justify-content:flex-start}.app-title{font-size:1.5rem}.app-subtitle{margin-bottom:calc(var(--spacing) * 1.5);font-size:.9375rem}.uploader,.options-panel,.progress-panel,.result-panel,.password-panel{max-width:100%}.drop-zone{padding:calc(var(--spacing) * 2.5) var(--spacing)}.drop-zone__text{font-size:1rem}.drop-zone__button{padding:.75rem 1.5rem;font-size:1.0625rem}.radio-option{flex-wrap:wrap;padding:.625rem 0}.radio-option__hint{width:100%;margin-left:1.625rem;font-size:.8125rem}.radio-option{min-height:44px}.option-group{padding:.75rem}.custom-range__input,.password-form__input{padding:.75rem .875rem;font-size:16px}.convert-button,.download-button,.password-form__button{min-height:48px;padding:.875rem 1.5rem;font-size:1.0625rem}.cancel-button,.convert-another-button,.password-form__cancel{min-height:44px;padding:.625rem 1.25rem;font-size:1rem}.progress-bar{height:10px}.progress-title,.result-title,.password-title{font-size:1.125rem}.page-error-dialog{max-width:calc(100vw - 2rem);padding:var(--spacing)}.page-error-actions{flex-direction:column}.page-error-btn{width:100%;min-height:48px;font-size:1rem}.file-info__name{font-size:.9375rem}.file-info__meta{font-size:.8125rem}}@media (max-width:380px){:root{--spacing:.75rem}.app-title{font-size:1.375rem}.drop-zone{padding:calc(var(--spacing) * 2) var(--spacing)}.radio-option__label{font-size:.9375rem}}@media (max-width:640px) and (orientation:landscape){#app{justify-content:center}}.page-selector-wrap{margin-top:.75rem}.page-selector{flex-direction:column;gap:.5rem;display:flex}.page-selector__toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.page-selector__count{color:var(--color-text);font-size:.875rem;font-weight:600}.page-selector__actions{gap:.5rem;display:flex}.page-selector__btn{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;border-radius:6px;padding:.375rem .75rem;font-size:.8125rem;transition:border-color .15s,color .15s}.page-selector__btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.page-selector__hint{color:var(--color-text-muted);font-size:.8125rem}.page-selector__grid{border:1px solid var(--color-border);background:var(--color-surface);-webkit-overflow-scrolling:touch;border-radius:8px;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:.75rem;max-height:420px;padding:.25rem;display:grid;overflow-y:auto}.thumb-card{border:2px solid var(--color-border);cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;border-radius:8px;transition:border-color .15s,box-shadow .15s;position:relative;overflow:hidden}.thumb-card:hover{border-color:var(--color-primary)}.thumb-card:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.thumb-card--selected{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary);border-width:2px}.thumb-card--dragging{opacity:.6;z-index:10;box-shadow:0 4px 12px #00000026}.thumb-card__checkbox{z-index:2;background:#0000004d;border:2px solid #fff;border-radius:4px;justify-content:center;align-items:center;width:22px;height:22px;transition:background-color .15s;display:flex;position:absolute;top:6px;left:6px}.thumb-card__check{color:#fff;opacity:0;transition:opacity .15s}.thumb-card--selected .thumb-card__checkbox{background:var(--color-primary);border-color:#fff}.thumb-card--selected .thumb-card__check{opacity:1}.thumb-card__order{background:var(--color-primary);color:#fff;z-index:2;border-radius:50%;justify-content:center;align-items:center;min-width:22px;height:22px;padding:0 4px;font-size:.75rem;font-weight:700;display:flex;position:absolute;top:6px;right:6px}.thumb-card__drag-handle{color:#fff;z-index:3;cursor:grab;touch-action:none;opacity:.7;background:#00000080;border-radius:4px;justify-content:center;align-items:center;width:28px;height:18px;transition:opacity .15s;display:flex;position:absolute;bottom:30px;left:50%;transform:translate(-50%)}.thumb-card:hover .thumb-card__drag-handle,.thumb-card--selected .thumb-card__drag-handle{opacity:1}.thumb-card__drag-handle:active{cursor:grabbing}.thumb-card__img-wrap{aspect-ratio:1/1.3;background:#f3f4f6;justify-content:center;align-items:center;width:100%;display:flex;overflow:hidden}.thumb-card__img{object-fit:contain;width:100%;height:100%;display:block}.thumb-card__placeholder{color:var(--color-text-muted);text-align:center;padding:.5rem;font-size:.75rem}.thumb-card__label{text-align:center;border-top:1px solid var(--color-border);background:#fff;padding:.25rem 0;font-size:.75rem;font-weight:500;display:block}@media (max-width:640px){.page-selector__grid{grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:.5rem;max-height:380px}.thumb-card__label{font-size:.6875rem}.thumb-card__checkbox{width:20px;height:20px}.thumb-card__order{min-width:20px;height:20px;font-size:.6875rem}.page-selector__btn{min-height:36px;padding:.5rem .75rem;font-size:.875rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
