*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:oklch(97% .008 70);--surface:oklch(99% .004 70);--surface-raised:oklch(100% .002 70);--border:oklch(88% .012 70);--border-subtle:oklch(92% .008 70);--text:oklch(22% .015 70);--text-secondary:oklch(45% .018 70);--text-tertiary:oklch(58% .015 70);--accent:oklch(55% .14 45);--accent-hover:oklch(50% .15 45);--accent-subtle:oklch(92% .03 45);--accent-text:oklch(98% .006 45);--success:oklch(55% .12 155);--success-subtle:oklch(93% .03 155);--danger:oklch(55% .16 25);--danger-subtle:oklch(93% .03 25);--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.25rem;--text-xl:1.5rem;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--radius-sm:4px;--radius:6px;--radius-lg:10px;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1)}body{font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-size:var(--text-base);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-kerning:normal;line-height:1.6}#app{max-width:640px;padding:var(--space-12) var(--space-5);margin:0 auto}.page-header{margin-bottom:var(--space-10);animation:fade-up .5s var(--ease-out) both}.page-title{font-size:var(--text-xl);letter-spacing:-.03em;color:var(--text);font-weight:700;line-height:1.2}.page-subtitle{font-size:var(--text-sm);color:var(--text-tertiary);margin-top:var(--space-1);font-weight:400}.header-row{justify-content:space-between;align-items:flex-start;gap:var(--space-4);display:flex}.lang-toggle{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);flex-shrink:0;gap:2px;padding:2px;display:flex}.lang-btn{font-size:var(--text-xs);padding:var(--space-1) var(--space-2);border-radius:calc(var(--radius) - 2px);color:var(--text-tertiary);cursor:pointer;transition:background .12s var(--ease-out), color .12s var(--ease-out);letter-spacing:.04em;background:0 0;border:none;font-weight:600}.lang-btn:hover{color:var(--text-secondary)}.lang-btn.active{background:var(--surface-raised);color:var(--text);box-shadow:0 1px 2px oklch(20% .01 70/.06)}.section{margin-bottom:var(--space-8)}.section-header{margin-bottom:var(--space-4);justify-content:space-between;align-items:baseline;gap:var(--space-3);display:flex}.section-title{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);font-weight:600}.config-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6);animation:fade-up .4s var(--ease-out) both;animation-delay:80ms}.field-grid{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}@media (width<=480px){.field-grid{grid-template-columns:1fr}}.field{margin-bottom:var(--space-4)}.field:last-child{margin-bottom:0}.field label{font-size:var(--text-xs);color:var(--text-secondary);margin-bottom:var(--space-1);letter-spacing:.01em;font-weight:600;display:block}.field input{width:100%;padding:var(--space-2) var(--space-3);font-family:inherit;font-size:var(--text-sm);color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .15s var(--ease-out), box-shadow .15s var(--ease-out);outline:none;line-height:1.5}.field input::placeholder{color:var(--text-tertiary);opacity:.7}.field input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}.btn-row{gap:var(--space-2);margin-top:var(--space-5);display:flex}button{font-family:inherit;font-size:var(--text-sm);padding:var(--space-2) var(--space-4);border-radius:var(--radius);cursor:pointer;transition:background .12s var(--ease-out), border-color .12s var(--ease-out), color .12s var(--ease-out);border:1px solid #0000;font-weight:600;line-height:1.4}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-primary{background:var(--accent);color:var(--accent-text)}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:active{transform:translateY(1px)}.btn-ghost{color:var(--text-secondary);border-color:var(--border);background:0 0}.btn-ghost:hover{background:var(--surface);color:var(--text)}.btn-danger-ghost{color:var(--danger);border-color:var(--border);background:0 0}.btn-danger-ghost:hover{background:var(--danger-subtle);border-color:var(--danger)}.btn-sm{padding:var(--space-1) var(--space-2);font-size:var(--text-xs);font-weight:500}.btn-inline{color:var(--text-tertiary);padding:var(--space-1) var(--space-2);font-size:var(--text-xs);background:0 0;border:none;font-weight:500}.btn-inline:hover{color:var(--text)}.drop-zone{border:1.5px dashed var(--border);border-radius:var(--radius-lg);padding:var(--space-12) var(--space-6);text-align:center;cursor:pointer;transition:border-color .2s var(--ease-out), background .2s var(--ease-out);background:var(--surface);animation:fade-up .4s var(--ease-out) both;animation-delay:.16s}.drop-zone:hover{border-color:var(--accent);background:var(--accent-subtle)}.drop-zone.drag-over{border-color:var(--accent);background:var(--accent-subtle);border-style:solid}.drop-zone-icon{width:40px;height:40px;margin:0 auto var(--space-3);background:var(--accent-subtle);color:var(--accent);font-size:var(--text-lg);transition:transform .2s var(--ease-out);border-radius:50%;justify-content:center;align-items:center;display:flex}.drop-zone:hover .drop-zone-icon,.drop-zone.drag-over .drop-zone-icon{transform:translateY(-2px)}.drop-zone-label{font-size:var(--text-sm);color:var(--text-secondary)}.drop-zone-label strong{color:var(--accent);font-weight:600}.drop-zone-hint{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:var(--space-1)}.upload-status{margin-top:var(--space-4);animation:fade-up .2s var(--ease-out) both}.progress-track{background:var(--border-subtle);border-radius:2px;height:3px;overflow:hidden}.progress-fill{background:var(--accent);height:100%;transition:width .3s var(--ease-out);border-radius:2px}.status-text{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:var(--space-2)}.status-text.error{color:var(--danger)}.status-text.success{color:var(--success)}.status-text a{color:var(--accent);font-weight:500;text-decoration:none}.status-text a:hover{text-decoration:underline}.upload-list{list-style:none}.upload-item{align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border-subtle);animation:fade-up .3s var(--ease-out) both;display:flex}.upload-item:last-child{border-bottom:none}.upload-file-icon{border-radius:var(--radius);background:var(--bg);border:1px solid var(--border-subtle);width:36px;height:36px;font-size:var(--text-sm);flex-shrink:0;justify-content:center;align-items:center;display:flex}.upload-file-info{flex:1;min-width:0}.upload-file-name{font-size:var(--text-sm);color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.upload-file-meta{font-size:var(--text-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums}.upload-actions{gap:var(--space-1);flex-shrink:0;display:flex}.empty-state{text-align:center;padding:var(--space-10) var(--space-4);color:var(--text-tertiary);font-size:var(--text-sm)}.toast-container{bottom:var(--space-6);right:var(--space-6);z-index:500;position:fixed}.toast{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3) var(--space-5);font-size:var(--text-xs);color:var(--success);animation:toast-in .3s var(--ease-out) both;font-weight:500;box-shadow:0 4px 12px oklch(20% .01 70/.08)}.toast.exit{animation:toast-out .2s var(--ease-out) both}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toast-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-8px)scale(.96)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}}
