@import"https://fonts.googleapis.com/css2?family=Noto+Sans+Thai:wght@400;500;700;800&family=Inter:wght@400;500;600;700;800&display=swap";:root{--bg: #06102a;--bg-soft: #0b1735;--card: #1b2a45;--card-head: #1fbf8f;--line: #38557d;--line-soft: #4f6a8f;--text: #eaf2ff;--muted: #9db0cc;--green: #22d3a5;--green-dark: #1ab58d;--danger: #f9707e;--warning: #f0c030;--info: #3a6fd4}[data-theme=light]{--bg: #f0f4ff;--bg-soft: #e8ecff;--card: #ffffff;--card-head: #17a47a;--line: #c0cce0;--line-soft: #d0dce8;--text: #1a2035;--muted: #6b7fa0;--green: #17be8f;--green-dark: #0f8f67}*{box-sizing:border-box}body{margin:0;font-family:Inter,Noto Sans Thai,Segoe UI,sans-serif;color:var(--text);background:radial-gradient(circle at 25% -10%,rgba(35,190,145,.25),transparent 36%),radial-gradient(circle at 90% 0,rgba(39,124,255,.2),transparent 32%),linear-gradient(180deg,#071739,#050e26 55%,#050c22);min-height:100vh}[data-theme=light] body{background:radial-gradient(circle at 25% -10%,rgba(35,190,145,.15),transparent 36%),radial-gradient(circle at 90% 0,rgba(39,124,255,.1),transparent 32%),linear-gradient(180deg,#e8ecff,#dde5ff 55%,#d8e0ff)}.app-shell{width:min(1680px,100vw);margin:0 auto;padding-bottom:28px}.app-topbar{background:linear-gradient(135deg,#0f8f67,#0a6f4f);border-bottom:1px solid rgba(255,255,255,.1);padding:14px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}[data-theme=light] .app-topbar{background:linear-gradient(135deg,#17be8f,#0f8f67)}.brand{display:flex;align-items:center;gap:14px}.brand-icon{font-size:36px}.brand h1{margin:0;font-size:clamp(30px,2.4vw,50px);letter-spacing:-.02em;font-weight:800}.brand-badge{background:#ffce30;color:#202020;padding:8px 16px;border-radius:999px;font-weight:800;font-size:30px}.mode-switches,.desktop-actions{display:flex;gap:10px;flex-wrap:wrap}.mode{border:0;border-radius:12px;padding:11px 18px;font-size:30px;font-weight:700;background:#ffffff1f;color:#d7f8ec;cursor:pointer}.mode.active{background:#18c997;color:#f7fffd}.mode.utility{background:#08142c73;border:1px solid rgba(192,229,255,.3);font-size:24px;padding:10px 14px}[data-theme=light] .mode{color:#1a2035;background:#00000014}[data-theme=light] .mode.active{background:#17be8f;color:#fff}.auth-area{display:flex;align-items:center;gap:8px}.auth-logged-in{display:flex;align-items:center;gap:10px}.auth-email{font-size:22px;font-weight:700;color:#d7f8ec}[data-theme=light] .auth-email{color:#1a2035}.login-btn{font-size:28px;padding:10px 18px}.toast-container{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:10px;max-width:420px}.toast{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:12px;font-size:22px;font-weight:700;animation:toastIn .3s ease;box-shadow:0 4px 20px #0006}@keyframes toastIn{0%{transform:translate(120%);opacity:0}to{transform:translate(0);opacity:1}}.toast-info{background:#1b3a6e;border:1px solid #3a6fd4;color:#c8d8ff}.toast-success{background:#0f4a30;border:1px solid #1ad6a5;color:#a8f0dc}.toast-error{background:#4a1b22;border:1px solid #e98791;color:#ffd5db}.toast-warning{background:#3a2f0a;border:1px solid #f0c030;color:#ffe89a}.toast-icon{font-size:26px;flex-shrink:0}.toast-msg{flex:1;font-size:20px}.toast-close{background:none;border:none;color:inherit;font-size:18px;cursor:pointer;padding:2px 6px;opacity:.7;flex-shrink:0}.toast-close:hover{opacity:1}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;z-index:9998;display:flex;align-items:center;justify-content:center;padding:20px}.modal-box{background:var(--card);border:2px solid var(--green);border-radius:20px;padding:32px;width:min(520px,100%);position:relative;display:flex;flex-direction:column;gap:16px}[data-theme=light] .modal-box{background:#fff}.modal-box h2{margin:0;font-size:40px;text-align:center;color:var(--green)}.modal-box form{display:flex;flex-direction:column;gap:14px}.modal-box label{font-size:24px;color:var(--muted);display:flex;flex-direction:column;gap:6px}.modal-box input{font-size:28px;padding:12px}.modal-error{background:#4a1b22;border:1px solid #e98791;border-radius:10px;padding:10px;color:#ffd5db;font-size:20px;text-align:center}.modal-dev-code{background:#2a3a0a;border:1px solid #8fc030;border-radius:10px;padding:10px;color:#d8f080;font-size:18px;text-align:center;font-family:monospace}.modal-close{position:absolute;top:12px;right:14px;background:none;border:none;font-size:24px;cursor:pointer;color:var(--muted)}.modal-close:hover{color:var(--text)}.shortcuts-box{max-width:480px}.shortcuts-list{display:flex;flex-direction:column;gap:12px}.shortcut-row{display:flex;align-items:center;gap:16px;font-size:24px}kbd{background:var(--bg-soft);border:1px solid var(--line);border-radius:8px;padding:6px 14px;font-size:20px;font-family:monospace;color:var(--text);min-width:160px;text-align:center}.upload-progress-bar{margin:12px 24px 0;border-radius:12px;overflow:hidden;background:var(--bg-soft);border:1px solid var(--info);position:relative;height:36px}.upload-progress-fill{height:100%;background:linear-gradient(90deg,#1fa5ff,#20d9a5);border-radius:12px;transition:width .4s ease;display:flex;align-items:center;justify-content:center;min-width:60px}.upload-progress-fill span{font-size:18px;font-weight:800;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.5)}.upload-progress-label{position:absolute;top:50%;right:14px;transform:translateY(-50%);font-size:18px;font-weight:700;color:var(--muted)}.auto-preview-banner{margin:12px 24px 0;border-radius:14px;overflow:hidden;background:linear-gradient(135deg,#0f4a30,#17be8f);border:2px solid #1ad6a5;padding:16px 20px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;animation:toastIn .4s ease}.auto-preview-banner span{font-size:28px;font-weight:800;color:#a8f0dc}.auto-preview-banner .btn{font-size:28px;padding:12px 20px}.main-drop-zone{margin:16px 24px;border:3px dashed var(--green);border-radius:24px;padding:44px 22px;text-align:center;background:linear-gradient(125deg,#082a3a,#0a1f47);cursor:pointer;transition:all .2s ease}[data-theme=light] .main-drop-zone{background:linear-gradient(125deg,#e8f8f0,#d0f0e0);border-color:var(--green-dark)}.main-drop-zone.dragover,.main-drop-zone:hover{border-color:#33e8b8;box-shadow:0 0 0 4px #22d3a53d}.main-drop-icon{font-size:76px}.main-drop-zone h2{margin:8px 0;font-size:clamp(34px,2.2vw,48px)}.main-drop-zone p{margin:0;color:var(--muted);font-size:26px}.bucket-grid{margin:0 24px;display:grid;gap:18px;grid-template-columns:repeat(2,minmax(0,1fr))}.bucket-card{border:2px solid var(--green);border-radius:24px;overflow:hidden;background:var(--card)}.bucket-head{background:linear-gradient(135deg,#17a47a,#16bf90);padding:22px 24px;display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.bucket-head-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.bucket-head h3{margin:0;font-size:36px;font-weight:800}.bucket-head p{margin:8px 0 0;font-size:25px;color:#eefffaf2}.bucket-badge{background:#ffffff29;border:1px solid rgba(255,255,255,.25);border-radius:999px;padding:10px 15px;font-size:26px;font-weight:800;white-space:nowrap}.bucket-clear-btn{background:#f9707e4d;border:1px solid #f9707e;border-radius:999px;padding:6px 12px;font-size:20px;cursor:pointer;color:#ffd5db;font-weight:800;transition:all .2s}.bucket-clear-btn:hover{background:#f9707e;color:#fff}.bucket-drop{margin:22px;border:3px dashed var(--line);border-radius:20px;padding:36px 20px;text-align:center;background:#1a2a46b8;transition:all .2s ease}[data-theme=light] .bucket-drop{background:#1a2a4614}.bucket-drop.dragover,.bucket-drop:hover{border-color:var(--green);background:#163f468c}.bucket-drop span{display:block;font-size:58px}.bucket-drop p{margin:10px 0 12px;font-size:35px;color:#b5c8e4;font-weight:700}.bucket-drop input{width:100%;border:1px solid #55759f;border-radius:12px;padding:10px;background:#223757;color:#e2efff;font-size:22px}.bucket-drop input::file-selector-button{border:1px solid var(--green);border-radius:10px;padding:8px 13px;margin-right:10px;background:var(--green-dark);color:#edfff9;cursor:pointer}.picker-count-inline{margin-top:10px;font-size:20px;font-weight:700;color:var(--muted);text-align:left}.bucket-thumbnails{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.bucket-thumb{width:52px;height:52px;border-radius:8px;background:#1b3050;border:1px solid #4d6890;display:flex;align-items:center;justify-content:center;font-size:22px}.status-card .bucket-head{background:linear-gradient(135deg,#364867,#425776)}.queue-stats-grid{margin:16px 20px 0;display:grid;gap:8px;grid-template-columns:repeat(4,minmax(0,1fr))}.queue-stats-grid div{border:1px solid var(--line);border-radius:12px;padding:12px 8px;text-align:center;background:var(--bg-soft)}.queue-stats-grid strong{display:block;font-size:33px;line-height:1.1}.queue-stats-grid span{color:var(--muted);font-size:20px}.queue-filter-row{margin:10px 20px 0}.queue-filter-input{width:100%;border:1px solid var(--line);border-radius:10px;padding:8px 12px;background:var(--bg-soft);color:var(--text);font-size:22px}.quick-actions{margin:14px 20px 22px;display:flex;flex-wrap:wrap;gap:8px}.settings-panel,.action-panel,.status-strip,.result-grid,.logs-card{margin-left:24px;margin-right:24px}.settings-panel{margin-top:20px;border-radius:18px;border:1px solid var(--line);background:var(--card);padding:16px}[data-theme=light] .settings-panel{background:#fff}.settings-panel-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:14px}.settings-panel-header h2{margin:0;font-size:45px}.settings-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.preset-buttons{display:flex;gap:6px}.settings-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}label{display:flex;flex-direction:column;gap:6px;font-size:26px;color:var(--muted)}input,select{border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--bg-soft);color:var(--text);font-size:34px}[data-theme=light] input,[data-theme=light] select{background:#f0f4ff}.slider-field{border:1px solid var(--line-soft);border-radius:12px;padding:10px;background:var(--bg-soft);display:flex;flex-direction:column;gap:8px}.slider-head{display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--muted);font-size:22px;font-weight:700}.slider-live-value{color:var(--green);font-weight:800;font-size:24px}.slider-control{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:10px;border:0;border-radius:999px;padding:0;background:linear-gradient(90deg,#1fa5ff,#20d9a5);cursor:pointer}.slider-control::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;margin-top:-5px;border-radius:50%;border:2px solid #d5f6ed;background:var(--green-dark);box-shadow:0 0 0 3px #14e8a63d}.slider-control::-moz-range-thumb{width:20px;height:20px;border-radius:50%;border:2px solid #d5f6ed;background:var(--green-dark)}.slider-number{font-size:26px;padding:8px 10px}.check-wrap{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--bg-soft)}.check-wrap input{width:26px;height:26px}.product-selector{margin-top:14px;border:2px solid var(--green);border-radius:14px;padding:14px;background:#0f4a3a}.product-selector label{font-size:26px;display:flex;flex-direction:row;align-items:center;gap:14px;flex-wrap:wrap}.product-selector select{font-size:28px;min-width:280px}.action-panel{margin-top:18px;display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.btn{border:1px solid transparent;border-radius:12px;padding:10px 14px;font-size:29px;font-weight:800;cursor:pointer}.btn.large{min-width:320px;padding:15px 22px;font-size:40px}.btn.small{font-size:22px;padding:8px 12px}.btn.primary{background:var(--green);color:#f8fffd;border-color:#2bd2a4}.btn.ghost{background:var(--card);color:var(--text);border-color:var(--line)}.btn.danger{background:#4a1b22;color:#ffd5db;border-color:#f9707e}.btn.tiny{font-size:18px;padding:7px 10px}.btn:disabled{opacity:.55;cursor:not-allowed}.status-strip{margin-top:14px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.status-pill{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--card);font-size:24px;font-weight:700;text-align:center}.status-pill.error{border-color:#f07b87;background:#4f2433}[data-theme=light] .status-pill{background:#fff}.render-progress-wrap{display:flex;flex-direction:column;gap:6px}.render-progress-bar{height:8px;border-radius:999px;background:var(--bg-soft);overflow:hidden}.render-progress-fill{height:100%;background:linear-gradient(90deg,#1fa5ff,#20d9a5);border-radius:999px;transition:width .4s ease}.result-grid{margin-top:16px;display:grid;grid-template-columns:1.1fr 1fr;gap:14px}.result-card{border:1px solid var(--line);border-radius:16px;background:var(--card);padding:14px}.result-card h3{margin:0;font-size:32px}[data-theme=light] .result-card{background:#fff}.preview-grid{margin-top:10px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.preview-grid h4{margin:0 0 6px;font-size:20px;color:var(--muted)}.preview-box{border:1px solid var(--line);border-radius:12px;min-height:280px;max-height:420px;overflow:auto;background:#050b17;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:20px;font-weight:700}.preview-box img{width:100%;height:auto;display:block}.outputs{margin-top:12px}.outputs strong{font-size:24px}.outputs a{display:block;margin-top:6px;color:#98ddff;text-decoration:none;font-size:19px}.outputs a:hover{text-decoration:underline}.muted{color:var(--muted);font-size:17px}.queue-list{margin-top:10px;display:grid;gap:8px;max-height:650px;overflow:auto}.queue-empty{border:1px dashed var(--line);border-radius:10px;padding:12px;color:var(--muted);text-align:center}.queue-item{border:1px solid var(--line);border-radius:11px;background:var(--card);padding:8px;display:grid;grid-template-columns:28px 1fr auto;gap:8px;align-items:center;transition:background .2s}.queue-item.uploading{border-color:var(--green);background:#163f468c}.queue-item.error,.queue-item.failed_reselect{border-color:#e98791;background:#4d25348c}.queue-item.drag-source{opacity:.5;border-style:dashed}.queue-drag-handle{font-size:18px;cursor:grab;color:var(--muted);text-align:center;padding:4px}.queue-drag-handle:hover{color:var(--text)}.queue-title{font-size:18px;font-weight:700;word-break:break-word}.queue-meta{margin-top:4px;color:var(--muted);font-size:15px}.queue-error{margin-top:4px;font-size:14px;color:#ffd5db}.queue-actions{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.logs-card{margin-top:14px;border:1px solid var(--line);border-radius:16px;background:var(--card);padding:14px}.logs-card h3{margin:0;font-size:24px}.logs{margin-top:10px;border:1px solid var(--line-soft);border-radius:10px;background:#071226;padding:10px;height:260px;overflow:auto;white-space:pre-wrap;font-family:Consolas,Cascadia Code,monospace;font-size:13px}.shortcuts-bar{margin:14px 24px 0;border-radius:12px;border:1px solid var(--line);background:var(--card);padding:10px 16px;display:flex;flex-wrap:wrap;gap:20px;justify-content:center;font-size:18px;font-weight:700;color:var(--muted)}[data-theme=light] .shortcuts-bar{background:#fff}@media (max-width: 1300px){.bucket-grid,.result-grid,.settings-grid,.status-strip,.preview-grid{grid-template-columns:1fr}.app-topbar{padding:14px}.main-drop-zone,.bucket-grid,.settings-panel,.action-panel,.status-strip,.result-grid,.logs-card,.upload-progress-bar,.auto-preview-banner,.shortcuts-bar{margin-left:12px;margin-right:12px}.settings-panel-header{flex-direction:column;align-items:flex-start}.toast-container{top:10px;right:10px;left:10px}.toast{font-size:18px}}@media (max-width: 600px){.brand h1{font-size:22px}.brand-badge{font-size:20px;padding:4px 10px}.mode{font-size:20px;padding:8px 12px}.login-btn{font-size:20px}.auth-email{font-size:16px}.bucket-head h3,.bucket-drop p{font-size:26px}.settings-panel h2{font-size:30px}.action-panel .btn.large{min-width:200px;font-size:30px}.toast{font-size:16px}.shortcuts-bar{font-size:14px;gap:12px}.auto-preview-banner{flex-direction:column}.auto-preview-banner span{font-size:22px}.auto-preview-banner .btn{width:100%}}
