:root{--bg: #f7f9fa;--card: #ffffff;--fg: #454545;--ink: #0a0a0a;--muted: #54616c;--muted-2: #667683;--border: #001b2d0d;--line: #e9ebec;--primary: #0f70e6;--primary-hover: #0c5fc4;--primary-fg: #fff;--primary-soft: #0f70e614;--shadow: 0 8px 28px rgba(0, 27, 45, .08);--shadow-btn: 0 6px 16px rgba(15, 112, 230, .28);--radius: 16px;--header-h: 72px;color-scheme:light}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.5 Open Sans,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased}body.mode-upload{background:#fff}.app{display:flex;flex-direction:column;height:100vh;min-height:100vh}button,select,input{font-family:inherit}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;height:var(--header-h);padding:0 24px;background:var(--card);border-bottom:1px solid var(--line);flex:0 0 auto;z-index:20}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);min-width:128px}.brand .wordmark{font-family:Poppins,Open Sans,sans-serif;font-weight:700;font-size:18px;letter-spacing:-.02em}.logo{display:flex}.editor-tabs{display:flex;align-items:stretch;justify-content:center;gap:4px;height:100%}.editor-tabs button{appearance:none;background:transparent;border:0;color:var(--muted);font-size:15px;font-weight:600;padding:0 16px;height:100%;cursor:pointer}.editor-tabs button:hover{color:var(--ink)}.editor-tabs button.active{color:var(--primary)}.top-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:128px}.header-download{display:flex;gap:8px;align-items:center}.badges{display:flex;gap:8px;flex-wrap:wrap}.badge{font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--line);color:var(--muted);background:var(--bg);font-variant-numeric:tabular-nums}.badge.ok{color:#0a8f4d;border-color:#93e3c0;background:#f3fbf7}.badge.warn{color:#b45309;border-color:#feeccb;background:#fff8eb}button{font-size:14px;padding:8px 14px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--fg);cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s}button:hover:not(:disabled){background:#f9fafa}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--primary);color:var(--primary-fg);border-color:transparent;font-weight:700;box-shadow:var(--shadow-btn)}button.primary:hover:not(:disabled){background:var(--primary-hover)}button.pill{border-radius:999px;padding:10px 22px}button.ghost{background:transparent;color:var(--muted);border-color:var(--line);box-shadow:none;font-weight:600}button.ghost:hover:not(:disabled){color:var(--ink);background:var(--bg)}button.compact{padding:8px 12px;font-size:13px}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid color-mix(in srgb,var(--primary) 55%,transparent);outline-offset:2px}.icon-actions{display:flex;gap:8px}.icon-actions button{display:inline-flex;align-items:center;gap:6px}.toolstrip{background:var(--card);border-bottom:1px solid var(--line);padding:10px 24px;flex:0 0 auto;z-index:10}.panel-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.tool-block{display:flex;flex-direction:column;gap:6px}.tool-kicker{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2)}.hint{margin:0;font-size:12px;color:var(--muted);line-height:1.45}.hint.clamp{max-width:300px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.field-pair{display:flex;gap:8px}.field-pair select{width:auto;min-width:130px}.adv-dialog{width:min(460px,calc(100vw - 32px));margin:auto;padding:20px 22px 22px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);color:var(--fg);box-shadow:var(--shadow)}.adv-dialog::backdrop{background:#001b2d59}.adv-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.adv-head h2{margin:0;font-size:17px;font-weight:700;color:var(--ink)}.adv-close{border:0;background:none;padding:4px 8px;border-radius:8px;font-size:15px;color:var(--muted);cursor:pointer}.adv-close:hover{color:var(--ink);background:var(--bg)}.adv-body{display:flex;flex-direction:column;gap:18px}.adv-group{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.adv-group>select,.adv-group .field-pair{width:100%}.adv-group .field-pair select{flex:1;min-width:0}.hint.center{text-align:center}#model-note{max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.field>span{font-weight:600}select,input[type=color]{width:100%;min-width:140px;padding:7px 9px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--fg);font-size:13px}input[type=color]{padding:3px;height:34px;cursor:pointer;width:64px;min-width:64px}.color-field{flex-direction:row;align-items:center;gap:8px}.slider{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.slider.inline{min-width:200px}.slider>span{display:flex;justify-content:space-between;font-weight:600}.slider b{color:var(--ink);font-variant-numeric:tabular-nums}input[type=range]{width:100%;accent-color:var(--primary)}.check{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--muted);cursor:pointer}.check input{accent-color:var(--primary)}.segmented{display:flex;background:var(--bg);border:1px solid var(--line);border-radius:999px;overflow:hidden;padding:3px;gap:2px}.segmented button{flex:1;border:0;border-radius:999px;background:transparent;color:var(--muted);font-size:13px;font-weight:600;padding:6px 12px;box-shadow:none}.segmented button+button{border-left:0}.segmented button.active{background:var(--card);color:var(--primary);box-shadow:0 1px 2px #001b2d14}.swatches{display:flex;gap:8px;align-items:center}.swatch{width:28px;height:28px;padding:0;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #d7dce0}.swatch.active{box-shadow:0 0 0 2px var(--primary)}.checker-swatch{background-image:linear-gradient(45deg,#d7dce0 25%,transparent 25%),linear-gradient(-45deg,#d7dce0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#d7dce0 75%),linear-gradient(-45deg,transparent 75%,#d7dce0 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0;background-color:#fff}.progress{display:flex;flex-direction:column;gap:5px;min-width:180px}.bar{height:5px;border-radius:999px;background:var(--line);overflow:hidden}.bar i{display:block;height:100%;width:0;background:var(--primary);transition:width .2s}.progress-label{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.workspace{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.stage{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;position:relative}.mode-upload .workspace{align-items:center;justify-content:center}.mode-upload .stage{flex:0 0 auto;width:min(448px,calc(100vw - 48px))}.dropzone{position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.mode-upload .dropzone{background:var(--card);border-radius:24px;box-shadow:0 12px 40px #001b2d14;min-height:320px;padding:56px 40px 48px;cursor:pointer}.mode-upload .dropzone:hover{box-shadow:0 16px 48px #001b2d1f}.mode-editor .dropzone{flex:1 1 auto;min-height:0;background:linear-gradient(45deg,#eef1f3 25%,transparent 25%),linear-gradient(-45deg,#eef1f3 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#eef1f3 75%),linear-gradient(-45deg,transparent 75%,#eef1f3 75%),#f8f9f9;background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0}.dropzone.dragover{box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 28%,transparent)}.empty{width:100%}.upload-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px}.btn-upload{display:inline-flex;align-items:center;justify-content:center;width:100%;max-width:280px;height:56px;padding:0 28px;border:0;border-radius:999px;background:var(--primary);color:#fff;font-size:18px;font-weight:700;box-shadow:var(--shadow-btn)}button.btn-upload:hover:not(:disabled){background:var(--primary-hover)}.upload-or{margin:8px 0 0;color:var(--fg);font-size:16px}.upload-types{margin:0;color:var(--muted);font-size:14px}.checker{position:absolute;inset:0;z-index:0;display:none;border-radius:6px;overflow:hidden;background-image:linear-gradient(45deg,#e4e7ea 25%,transparent 25%),linear-gradient(-45deg,#e4e7ea 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#e4e7ea 75%),linear-gradient(-45deg,transparent 75%,#e4e7ea 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;background-color:#fff}.compare{position:absolute;inset:0;z-index:1;display:flex;align-items:center;justify-content:center}.frame{position:relative;border-radius:6px;box-shadow:0 10px 40px #001b2d1f}.compare img{display:block;width:100%;height:100%;object-fit:contain;border-radius:6px;z-index:1;user-select:none;-webkit-user-drag:none}.compare canvas{position:absolute;inset:0;width:100%;height:100%;z-index:2;border-radius:6px;clip-path:inset(0 50% 0 0)}.handle{position:absolute;top:0;bottom:0;left:50%;width:2px;z-index:3;background:var(--primary);cursor:ew-resize;transform:translate(-1px);touch-action:none}.handle span{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:32px;height:32px;border-radius:50%;background:var(--primary);box-shadow:0 2px 10px #0f70e659}.handle span:before,.handle span:after{content:"";position:absolute;top:50%;width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;margin-top:-4px}.handle span:before{left:8px;border-right:5px solid var(--primary-fg)}.handle span:after{right:8px;border-left:5px solid var(--primary-fg)}.busy{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;gap:10px;background:#f7f9fab8;backdrop-filter:blur(2px);font-size:14px;color:var(--muted)}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--primary);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.stage-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 20px 14px;background:var(--bg)}.timings{white-space:pre-line;text-align:right;max-width:46%}.zoom-dock{display:flex;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:0 1px 2px #001b2d0a}.zoom-dock button{border:0;border-radius:0;min-width:36px;background:transparent;font-weight:700}.zoom-dock button+button{border-left:1px solid var(--line)}.drop-overlay{position:fixed;inset:0;z-index:80;background:#0f70e61f;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px)}.drop-overlay-card{background:var(--card);border:2px dashed var(--primary);border-radius:16px;padding:36px 48px;text-align:center;box-shadow:var(--shadow)}.drop-overlay-card p{margin:0 0 6px;font-family:Poppins,Open Sans,sans-serif;font-size:22px;color:var(--ink)}.drop-overlay-card span{color:var(--muted);font-size:14px}.mode-upload .editor-only,.mode-editor .upload-only{display:none!important}.dropzone.brush-on{cursor:none}.dropzone.brush-on .compare{touch-action:none}.dropzone.panning,.dropzone.panning *{cursor:grab!important}.dropzone.panning.is-panning,.dropzone.panning.is-panning *{cursor:grabbing!important}.handle[hidden]{display:none!important}.brush-cursor{position:fixed;z-index:8;border:1.5px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #0000008c;pointer-events:none;transform:translate(-50%,-50%)}.brush-cursor.kind-erase{border-color:#ff6b6b;box-shadow:0 0 0 1px #5a00008c}.brush-cursor.kind-restore{border-color:#3dcc7a;box-shadow:0 0 0 1px #0046188c}.brush-cursor.source-sam:after{content:"";position:absolute;inset:18%;border:1px dashed rgba(255,255,255,.9);border-radius:50%}@media(max-width:860px){.topbar{height:auto;min-height:var(--header-h);padding:10px 14px;flex-wrap:wrap}.editor-tabs{order:3;width:100%;height:44px;justify-content:flex-start;overflow-x:auto}.mode-upload .stage{width:min(100% - 24px,420px)}.stage-footer{flex-wrap:wrap}.timings{max-width:100%;text-align:left}}
