:root{--text: #6b6375;--text-h: #08060d;--bg: #fff;--border: #e5e4e7;--code-bg: #f4f3ec;--accent: #aa3bff;--accent-bg: rgba(170, 59, 255, .1);--accent-border: rgba(170, 59, 255, .5);--success: #059669;--error: #dc2626;--sans: system-ui, "Segoe UI", Roboto, sans-serif;--heading: system-ui, "Segoe UI", Roboto, sans-serif;font:18px/145% var(--sans);letter-spacing:.18px;color-scheme:light;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (max-width: 1024px){:root{font-size:16px}}[data-theme=dark]{--text: #9ca3af;--text-h: #f3f4f6;--bg: #16171d;--border: #2e303a;--code-bg: #1f2028;--accent: #c084fc;--accent-bg: rgba(192, 132, 252, .15);--accent-border: rgba(192, 132, 252, .5);--success: #34d399;--error: #f87171;color-scheme:dark}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--text: #9ca3af;--text-h: #f3f4f6;--bg: #16171d;--border: #2e303a;--code-bg: #1f2028;--accent: #c084fc;--accent-bg: rgba(192, 132, 252, .15);--accent-border: rgba(192, 132, 252, .5);--success: #34d399;--error: #f87171;color-scheme:dark}}html{transition:background-color .25s ease,color .25s ease}body{margin:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#root{width:100%;box-sizing:border-box}h1,h2{font-family:var(--heading);font-weight:500;color:var(--text-h)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-height:100vh;transition:background-color .25s ease,color .25s ease}button{font-family:var(--sans)}.app{display:flex;flex-direction:column;min-height:100svh;max-width:860px;margin:0 auto;padding:0 16px}.top-controls{align-self:flex-end;display:flex;align-items:center;gap:16px;padding-top:12px;margin-bottom:8px}.theme-toggle{display:flex;align-items:center;gap:7px;background:none;border:none;cursor:pointer;padding:4px;color:var(--text)}.theme-toggle-icon{transition:opacity .2s;flex-shrink:0}.toggle-track{width:42px;height:23px;background:var(--border);border-radius:999px;position:relative;transition:background .25s ease;flex-shrink:0}[data-theme=dark] .toggle-track{background:var(--accent)}.toggle-thumb{position:absolute;top:3px;left:3px;width:17px;height:17px;background:#fff;border-radius:50%;transition:transform .25s ease;box-shadow:0 1px 4px #00000040}[data-theme=dark] .toggle-thumb{transform:translate(19px)}.header{display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 0 32px}.logo{font-size:2.4rem;font-weight:700;letter-spacing:-.04em;color:var(--accent);line-height:1}.logo span{color:var(--text-h)}.tagline{margin:8px 0 0;font-size:1rem;color:var(--text)}.features{margin-top:10px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px 10px;font-size:.85rem;color:var(--text)}.feature-sep{opacity:.4}.feature{white-space:normal}.nowrap{white-space:nowrap}.main{flex:1;display:flex;flex-direction:column;gap:20px}.upload-zone{border:2px dashed var(--border);border-radius:16px;background:transparent;min-height:220px;max-width:480px;width:100%;margin:0 auto;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .15s,background .15s,scale .15s;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none}.upload-zone:hover,.upload-zone.dragging{border-color:var(--accent);background:var(--accent-bg)}.upload-zone.dragging{scale:1.01}.upload-prompt{text-align:center;color:var(--text);padding:40px}.upload-icon{margin-bottom:10px;color:var(--accent);opacity:.8;transition:color .2s}@keyframes upload-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.upload-zone:hover .upload-icon,.upload-zone.dragging .upload-icon{animation:upload-bounce .7s ease-in-out infinite}.image-tiles{position:relative;line-height:0;border-radius:12px;overflow:hidden;box-shadow:0 4px 24px #00000026;max-width:480px;margin:0 auto}.tile-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.tile-overlay line{stroke:var(--accent);stroke-opacity:.75;stroke-width:2;stroke-dasharray:5 5;fill:none}.tile-overlay .tile-active{fill:var(--accent);stroke:var(--accent);stroke-width:2;animation:tile-pulse 1s ease-in-out infinite}@keyframes tile-pulse{0%,to{fill-opacity:.15}50%{fill-opacity:.4}}.tile-badge{position:absolute;bottom:8px;left:8px;background:#0000008c;color:#fff;font-size:.7rem;font-weight:700;padding:3px 8px;border-radius:4px;pointer-events:none;line-height:1.6}.preview-img{max-width:100%;max-height:420px;object-fit:contain;display:block}.status-box{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:20px 24px;display:flex;flex-direction:column;gap:10px;font-size:.9rem}.status-box.error{border-color:var(--error);color:var(--error)}.hint{color:var(--text);font-size:.8rem}.progress-bar{background:var(--border);border-radius:999px;height:6px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .3s ease}.progress-fill.indeterminate{width:40%;animation:slide 1.4s ease-in-out infinite}@keyframes slide{0%{transform:translate(-100%)}to{transform:translate(350%)}}.spinner{width:22px;height:22px;border:2.5px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.actions{display:flex;gap:12px;flex-wrap:wrap}.btn{padding:10px 22px;border-radius:8px;border:1px solid var(--border);background:var(--code-bg);color:var(--text-h);font-size:.9rem;cursor:pointer;transition:background .15s,border-color .15s}.btn:hover{background:var(--border);border-color:var(--accent)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn-primary:hover{opacity:.9}.btn-success{border-color:var(--success);color:var(--success)}.btn-success:hover{background:var(--accent-bg)}.result-section{display:flex;flex-direction:column;gap:10px}.result-meta-row{display:flex;align-items:center;gap:8px}.result-meta{color:var(--text);font-size:.82rem;flex:1}.icon-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:8px;border:none;background:var(--code-bg);color:var(--text-h);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s}.icon-btn:hover{background:var(--border)}.icon-btn-spin svg{transition:transform .5s ease}.icon-btn-spin:hover svg{transform:rotate(-180deg)}.icon-btn-dl svg{transition:transform .3s ease}.icon-btn-dl:hover svg{transform:translateY(3px)}.compare-slider{position:relative;border-radius:12px;overflow:hidden;box-shadow:0 4px 24px #00000026;line-height:0;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:pan-y}.compare-base{display:block;width:100%;height:auto}.compare-clip{position:absolute;top:0;left:0;height:100%;overflow:hidden}.compare-before{display:block;height:auto;position:absolute;top:0;left:0}.compare-line{position:absolute;top:0;bottom:0;width:2px;background:#fff;transform:translate(-50%);pointer-events:none}.compare-handle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:999px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;gap:2px;color:#000;font-size:1.1rem;font-weight:700;line-height:1;box-shadow:0 2px 8px #00000080;pointer-events:none}.compare-labels{position:absolute;top:12px;left:0;right:0;display:flex;justify-content:space-between;padding:0 14px;pointer-events:none}.compare-label{background:#0000008c;color:#fff;font-size:.75rem;padding:5px 11px;border-radius:10px;transition:opacity .2s;display:flex;flex-direction:column;gap:1px}.cl-title{font-weight:600;line-height:1.4}.cl-meta{opacity:.75;font-size:.7rem;line-height:1.4}.example-section{width:100%;padding:4px 0 8px}.example-toggle{display:inline-flex;align-items:center;gap:6px;background:none;border:none;color:var(--text);font:inherit;font-size:1rem;cursor:pointer;padding:0;margin-left:max(0px,calc((100% - 480px)/2))}.example-toggle:hover{color:var(--text-h)}.example-content{padding-top:14px}.faq{max-width:480px;width:100%;margin:0 auto;padding:4px 0 8px}.faq-summary{display:inline-flex;align-items:center;gap:6px;color:var(--text);font-size:1rem;cursor:pointer;list-style:none}.faq-summary::-webkit-details-marker{display:none}.faq-summary:hover{color:var(--text-h)}.faq-chevron{transition:transform .2s ease}.faq details[open]>.faq-summary .faq-chevron{transform:rotate(90deg)}.faq-list{padding:14px 0 4px}.faq-item+.faq-item{margin-top:14px}.faq-q{margin:0 0 3px;font-size:.9rem;font-weight:600;color:var(--text-h)}.faq-a{margin:0;font-size:.88rem;line-height:1.5;color:var(--text)}.faq-a a{color:var(--accent);text-decoration:none}.faq-a a:hover{text-decoration:underline}.footer{text-align:center;padding:28px 0 24px;color:var(--text);font-size:.85rem}.footer a{color:var(--accent);text-decoration:none}.footer a:hover{text-decoration:underline}.footer .kofi-link{color:var(--text);display:block;margin-top:4px}.footer .kofi-link:hover{color:#ff5e5b}.image-card{position:relative;width:fit-content;max-width:480px;margin:0 auto;border-radius:12px;overflow:hidden}.image-card .image-tiles{max-width:none;margin:0;width:fit-content}.status-control{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#0000009e;border-radius:10px;padding:14px 20px;display:flex;flex-direction:column;align-items:center;gap:10px;line-height:1.4;max-width:calc(100% - 32px);min-width:180px}.status-control .icon-btn{background:#00000073;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff}.status-control .icon-btn:hover{background:#000000b3}.sc-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:center}.sc-progress{display:flex;flex-direction:column;align-items:center;gap:8px;color:#fff;font-size:.9rem;text-align:center;width:100%}.sc-progress-row{display:flex;align-items:center;justify-content:center;gap:12px}.sc-progress .progress-bar{width:100%}.sc-hint{color:#ffffffa6;font-size:.8rem;margin-top:2px;white-space:nowrap}.sc-dims{display:flex;flex-direction:column;align-items:center;gap:2px;color:#ffffffb3;font-size:.78rem}.sc-error{display:flex;flex-direction:column;align-items:center;gap:10px;color:#fff;font-size:.9rem;text-align:center}.spinner-light{border-color:#ffffff40;border-top-color:#fff}.webgpu-info{position:relative;display:inline-flex;align-items:center;vertical-align:middle}.airplane-info{position:relative}.airplane-circle-btn{width:34px;height:34px;border-radius:50%;background:var(--code-bg);border:1px solid var(--border);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text);transition:background .15s,transform .15s;flex-shrink:0}.airplane-circle-btn:hover{background:var(--border);transform:scale(1.07)}.airplane-tooltip{position:absolute;top:calc(100% + 10px);right:0;width:220px;background:#1c1c2e;color:#ddddf0;border-radius:7px;padding:10px 12px;font-size:.75rem;line-height:1.5;z-index:200;box-shadow:0 3px 14px #00000059;display:flex;flex-direction:column;gap:3px}.airplane-tooltip:before{content:"";position:absolute;top:-5px;right:10px;border:5px solid transparent;border-bottom-color:#1c1c2e;border-top:0}.webgpu-status-btn{background:none;border:none;cursor:pointer;padding:0;margin-left:5px;vertical-align:middle;line-height:0;display:inline-flex;align-items:center;transition:opacity .15s;opacity:.85}.webgpu-status-btn:hover{opacity:1}.webgpu-status-ok{color:var(--success)}.webgpu-status-warn{color:#f59e0b}.webgpu-tooltip{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);background:#1c1c2e;color:#ddddf0;border-radius:7px;padding:8px 11px;width:200px;font-size:.75rem;line-height:1.5;z-index:200;box-shadow:0 3px 14px #00000059;display:flex;flex-direction:column;gap:3px;text-align:left;white-space:normal}.webgpu-tooltip:before{content:"";position:absolute;top:-5px;left:50%;transform:translate(-50%);border:5px solid transparent;border-bottom-color:#1c1c2e;border-top:0}.wgt-ok{font-weight:500;color:#34d399}.wgt-no{font-weight:500;color:#f87171}.wgt-sub{display:block;opacity:.6;margin-top:2px}@media (max-width: 900px){.header{padding-bottom:16px}.logo{font-size:2rem}.features{flex-direction:column;gap:4px}.feature{white-space:normal}.feature-sep{display:none}.result-meta-row{flex-wrap:wrap}.result-meta{flex:1 1 100%}.image-card{max-width:100%}.webgpu-tooltip{left:auto;right:-8px;transform:none}.webgpu-tooltip:before{left:auto;right:10px;transform:none}}.backend-badge{display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.05em;padding:1px 7px;border-radius:999px;vertical-align:middle}.backend-badge.webgpu{background:var(--accent-bg);color:var(--accent);border:1px solid var(--accent-border)}.backend-badge.wasm{background:var(--code-bg);color:var(--text);border:1px solid var(--border)}
