*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Manrope,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.block{display:block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-screen{height:100vh}.flex-shrink{flex-shrink:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.border{border-width:1px}.bg-\[var\(--bg\)\]{background-color:var(--bg)}.text-center{text-align:center}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{--bg: #f7f7f8;--bg2: #ffffff;--bg3: #f0f0f3;--bg4: #e4e4e8;--acc: #4f46e5;--acc2: #4338ca;--acc-soft: #eef2ff;--acc-glow: rgba(79, 70, 229, .06);--acc-border: rgba(79, 70, 229, .2);--ok: #10b981;--ok-bg: #ecfdf5;--ok-b: #a7f3d0;--err: #ef4444;--err-bg: #fef2f2;--err-b: #fecaca;--warn: #f59e0b;--warn-bg: #fffbeb;--warn-b: #fde68a;--purple: #8b5cf6;--purple-bg: #f5f3ff;--purple-b: #ddd6fe;--t: #111827;--t2: #4b5563;--t3: #9ca3af;--t4: #d1d5db;--b: #e5e7eb;--b-hover: #d1d5db;--r: 14px;--rs: 10px;--sidebar: 260px;--preview: 360px;--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 3px rgba(0, 0, 0, .03);--shadow-md: 0 2px 4px rgba(0, 0, 0, .03), 0 4px 12px rgba(0, 0, 0, .05);--shadow-lg: 0 4px 8px rgba(0, 0, 0, .04), 0 8px 24px rgba(0, 0, 0, .06);--shadow-focus: 0 0 0 3px var(--acc-glow), 0 0 0 1px var(--acc-border);--ease: cubic-bezier(.4, 0, .2, 1);--dur: .15s;--dur-md: .25s}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Manrope,system-ui,sans-serif;font-size:13px;color:var(--t);background:var(--bg);overflow:hidden;height:100vh;-webkit-font-smoothing:antialiased;line-height:1.5}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--t4);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--t3)}[v-cloak]{display:none!important}code{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--acc);background:var(--acc-glow);padding:1px 6px;border-radius:4px}input,select,textarea{font-family:inherit}.app-shell{display:flex;height:100vh;overflow:hidden}.sidebar{width:var(--sidebar);background:var(--bg2);border-right:1px solid var(--b);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}.workspace{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.preview-panel{width:var(--preview);background:var(--bg2);border-left:1px solid var(--b);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;transition:width .25s,opacity .2s}.preview-panel.collapsed{width:0;opacity:0;border:none;overflow:hidden}.sb-brand{padding:18px 20px;border-bottom:1px solid var(--b);display:flex;align-items:center;gap:12px}.sb-logo{width:34px;height:34px;background:linear-gradient(135deg,var(--acc),var(--purple));border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:15px;font-weight:800;flex-shrink:0;box-shadow:0 2px 8px #4f46e533}.sb-title{font-size:14px;font-weight:800;color:var(--t);letter-spacing:-.3px}.sb-ver{font-size:9px;color:var(--t3);font-family:JetBrains Mono,monospace}.sb-profile{padding:12px 14px;border-bottom:1px solid var(--b)}.sb-prof-input{width:100%;padding:7px 10px;border:1.5px solid var(--b);border-radius:8px;font-size:12px;font-weight:600;background:var(--bg3);color:var(--t);outline:none;transition:all var(--dur) var(--ease)}.sb-prof-input:focus{border-color:var(--acc);background:#fff;box-shadow:var(--shadow-focus)}.sb-prof-input::-moz-placeholder{color:var(--t3)}.sb-prof-input::placeholder{color:var(--t3)}.sb-prof-actions{display:flex;gap:4px;margin-top:8px}.sb-nav{flex:1;overflow-y:auto;padding:8px}.sb-nav-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--rs);cursor:pointer;transition:all var(--dur) var(--ease);margin-bottom:2px;position:relative}.sb-nav-item:hover{background:var(--bg3)}.sb-nav-item.active{background:var(--acc-soft)}.sb-nav-item.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:20px;background:var(--acc);border-radius:0 3px 3px 0}.sb-nav-item.active .sb-nav-label{color:var(--acc);font-weight:700}.sb-nav-icon{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0;color:var(--t2)}.sb-nav-item.active .sb-nav-icon{color:var(--acc)}.sb-nav-label{font-size:12px;font-weight:600;color:var(--t2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sb-nav-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;transition:all var(--dur) var(--ease)}.sb-nav-dot.ok{background:var(--ok)}.sb-nav-dot.warn{background:var(--warn);animation:pulse-dot 2s ease infinite}.sb-nav-dot.err{background:var(--err)}.sb-nav-dot.empty{background:var(--t4)}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.sb-profiles-list{flex-shrink:0;border-top:1px solid var(--b);max-height:200px;overflow-y:auto}.sb-pi{display:flex;align-items:center;gap:8px;padding:9px 14px;cursor:pointer;border-bottom:1px solid var(--bg3);font-size:11px;transition:all var(--dur) var(--ease)}.sb-pi:hover{background:var(--bg3)}.sb-pi .name{flex:1;font-weight:700;color:var(--t);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sb-pi .meta{font-size:9px;color:var(--t3);white-space:nowrap}.sb-pi .del{cursor:pointer;color:var(--err);opacity:.3;font-size:12px;padding:2px 4px;border-radius:4px;transition:all var(--dur) var(--ease)}.sb-pi .del:hover{opacity:1;background:var(--err-bg)}.ws-header{display:flex;align-items:center;justify-content:space-between;padding:14px 28px;border-bottom:1px solid var(--b);background:var(--bg2);flex-shrink:0;position:relative}.ws-title{font-size:17px;font-weight:800;color:var(--t);letter-spacing:-.3px;display:flex;align-items:center;gap:10px}.ws-title-icon{font-size:20px;display:inline-flex;align-items:center;color:var(--acc)}.ws-step-num{font-size:10px;font-weight:700;color:var(--acc);background:var(--acc-soft);padding:3px 9px;border-radius:6px;letter-spacing:.3px;font-family:JetBrains Mono,monospace}.ws-actions{display:flex;gap:6px;align-items:center}.ws-body{flex:1;overflow-y:auto;padding:20px 28px 100px}.loading-bar{position:absolute;bottom:-2px;left:0;right:0;height:2px;background:var(--bg3);z-index:10;overflow:hidden}.loading-bar:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,var(--acc),var(--purple));animation:loadSlide 1.2s var(--ease) infinite;transform-origin:left}@keyframes loadSlide{0%{transform:translate(-100%)}to{transform:translate(100%)}}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:none;border-radius:8px;font-family:inherit;font-size:11px;font-weight:700;cursor:pointer;transition:all var(--dur) var(--ease);white-space:nowrap;line-height:1;letter-spacing:-.01em}.btn:active{transform:scale(.97)}.btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.btn-primary{background:var(--acc);color:#fff;box-shadow:0 1px 2px #4f46e533}.btn-primary:hover{background:var(--acc2);box-shadow:0 2px 8px #4f46e540;transform:translateY(-.5px)}.btn-secondary{background:var(--bg3);color:var(--t2);border:1px solid var(--b)}.btn-secondary:hover{background:var(--bg4);color:var(--t);border-color:var(--b-hover)}.btn-danger{background:transparent;color:var(--err);font-size:10px}.btn-danger:hover{background:var(--err-bg)}.btn-ghost{background:transparent;color:var(--t2)}.btn-ghost:hover{background:var(--bg3)}.btn-sm{padding:5px 10px;font-size:10px}.btn-lg{padding:12px 24px;font-size:14px;font-weight:800;border-radius:var(--rs)}.btn-icon{padding:6px;width:28px;height:28px;justify-content:center;border-radius:6px}.gen-btn{width:100%;padding:16px;background:linear-gradient(135deg,var(--acc),var(--purple));color:#fff;border:none;border-radius:12px;font-size:15px;font-weight:800;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 4px 16px #4f46e540;transition:all var(--dur-md) var(--ease);letter-spacing:-.02em}.gen-btn:hover{box-shadow:0 6px 28px #4f46e559;transform:translateY(-2px)}.gen-btn:active{transform:translateY(0)}.gen-btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}.field-label{display:block;font-size:10px;font-weight:700;color:var(--t2);margin:10px 0 4px;letter-spacing:.4px;text-transform:uppercase}.field-label:first-child{margin-top:0}.field-hint{font-size:10px;color:var(--t3);margin-top:3px;line-height:1.5}.form-input{width:100%;padding:9px 12px;border:1.5px solid var(--b);border-radius:var(--rs);font-size:13px;background:var(--bg2);color:var(--t);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);outline:none}.form-input:hover{border-color:var(--b-hover)}.form-input:focus{border-color:var(--acc);box-shadow:var(--shadow-focus)}.form-input::-moz-placeholder{color:var(--t3)}.form-input::placeholder{color:var(--t3)}.form-select{width:100%;padding:9px 30px 9px 12px;border:1.5px solid var(--b);border-radius:var(--rs);font-size:13px;background:var(--bg2);color:var(--t);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);outline:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer}.form-select:hover{border-color:var(--b-hover)}.form-select:focus{border-color:var(--acc);box-shadow:var(--shadow-focus)}.card{background:var(--bg2);border:1px solid var(--b);border-radius:var(--r);padding:18px;margin-bottom:12px;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.card:hover{border-color:var(--b-hover);box-shadow:var(--shadow)}.card-title{font-size:13px;font-weight:700;color:var(--t);margin-bottom:8px;display:flex;align-items:center;gap:6px}.card.primary{border-color:var(--acc-border);background:linear-gradient(135deg,var(--acc-soft),var(--bg2))}.sub-header{display:flex;align-items:center;justify-content:space-between;margin:18px 0 8px}.sub-header:first-child{margin-top:0}.sub-title{font-size:12px;font-weight:700;color:var(--t2);display:flex;align-items:center;gap:6px}.sub-count{font-weight:500;color:var(--t3)}.toggle-group{display:flex;gap:8px}.toggle-opt{flex:1;padding:14px;border:2px solid var(--b);border-radius:12px;cursor:pointer;text-align:center;transition:all var(--dur) var(--ease);background:var(--bg2)}.toggle-opt:hover{border-color:var(--b-hover);transform:translateY(-1px);box-shadow:var(--shadow)}.toggle-opt.sel{border-color:var(--acc);background:var(--acc-soft);box-shadow:0 0 0 3px var(--acc-glow)}.toggle-opt .t-icon{font-size:24px;margin-bottom:4px}.toggle-opt .t-name{font-size:12px;font-weight:700;color:var(--t)}.toggle-opt .t-desc{font-size:9px;color:var(--t3);margin-top:2px}.toggle-opt.sel .t-name{color:var(--acc)}.mode-grid{display:flex;gap:6px}.mode-opt{flex:1;padding:12px 8px;border:2px solid transparent;border-radius:var(--rs);cursor:pointer;text-align:center;transition:all var(--dur) var(--ease);background:var(--bg3)}.mode-opt:hover{background:var(--bg4);transform:translateY(-1px);box-shadow:var(--shadow)}.mode-opt.sel{border-color:var(--acc);background:var(--acc-soft);box-shadow:0 0 0 3px var(--acc-glow)}.mode-opt .m-name{font-size:11px;font-weight:700;color:var(--t2)}.mode-opt .m-desc{font-size:9px;color:var(--t3);margin-top:2px}.mode-opt.sel .m-name{color:var(--acc)}.ds-card{border:1.5px solid var(--b);border-radius:var(--rs);padding:14px 16px;margin-bottom:8px;background:var(--bg2);transition:all var(--dur) var(--ease);position:relative;border-left:4px solid var(--b)}.ds-card:hover{border-color:var(--b-hover);box-shadow:var(--shadow)}.ds-card.primary{border-color:var(--acc-border);border-left-color:var(--acc);background:linear-gradient(135deg,var(--acc-soft),transparent)}.map-row{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-bottom:4px;border:1.5px solid var(--b);border-radius:var(--rs);background:var(--bg2);transition:all var(--dur) var(--ease)}.map-row:hover{border-color:var(--b-hover);box-shadow:var(--shadow)}.map-row.mapped{background:linear-gradient(90deg,var(--acc-soft),transparent 70%);border-color:var(--acc-border)}.map-ph{background:var(--bg3);color:var(--acc);padding:4px 10px;border-radius:8px;font-size:11px;font-weight:700;font-family:JetBrains Mono,monospace;white-space:nowrap;flex-shrink:0;border:1px solid var(--b);transition:all var(--dur) var(--ease)}.map-row.mapped .map-ph{background:var(--acc);color:#fff;border-color:var(--acc);box-shadow:0 1px 4px #4f46e540}.map-arrow{color:var(--t4);flex-shrink:0;font-size:14px;font-weight:700;transition:color var(--dur) var(--ease)}.map-row.mapped .map-arrow{color:var(--acc)}.map-progress{height:4px;background:var(--bg3);border-radius:2px;margin-bottom:4px;overflow:hidden}.map-progress-bar{height:100%;background:linear-gradient(90deg,var(--acc),var(--purple));border-radius:2px;transition:width .3s var(--ease)}.filter-row{display:flex;gap:4px;align-items:center;padding:6px 10px;margin-bottom:4px;border:1.5px solid var(--b);border-radius:20px;background:var(--bg2);transition:all var(--dur) var(--ease)}.filter-row:hover{border-color:var(--acc-border)}.filter-row select,.filter-row input{min-width:0;padding:4px 6px;font-size:12px;border:none;background:transparent;outline:none}.filter-row select{color:var(--acc);font-weight:600;cursor:pointer}.xlsx-col{border:1.5px solid var(--b);border-radius:var(--rs);padding:12px 14px;margin-bottom:6px;background:var(--bg2);position:relative;transition:all var(--dur) var(--ease);border-left:4px solid var(--b)}.xlsx-col:hover{border-color:var(--b-hover);box-shadow:var(--shadow)}.xlsx-col.xc-rownum{border-left-color:var(--acc)}.xlsx-col.xc-formula{border-left-color:var(--purple)}.xlsx-col.xc-data{border-left-color:#3b82f6}.xlsx-col.xc-empty{border-left-color:var(--t3)}.xc-letter{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;border-radius:8px;font-size:11px;font-weight:800;font-family:JetBrains Mono,monospace;color:#fff;box-shadow:0 1px 3px #00000026}.xc-letter.l-data{background:#3b82f6}.xc-letter.l-formula{background:var(--purple)}.xc-letter.l-rownum{background:var(--acc)}.xc-letter.l-empty{background:var(--t3)}.xc-grip{cursor:grab;font-size:16px;color:var(--t4);padding:4px 6px;flex-shrink:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all var(--dur) var(--ease);line-height:1;border-radius:4px}.xc-grip:hover{color:var(--t2);background:var(--bg3)}.xc-grip:active{cursor:grabbing;color:var(--acc)}.xlsx-col.dragging{opacity:.25;border-style:dashed;transform:scale(.98)}.xlsx-col.drag-over{border-color:var(--acc);background:var(--acc-soft);box-shadow:inset 0 -3px 0 0 var(--acc)}.xc-actions{position:absolute;top:8px;right:8px;display:flex;gap:2px}.xc-actions span{cursor:pointer;font-size:11px;padding:3px 5px;border-radius:4px;opacity:.35;transition:all var(--dur) var(--ease);-webkit-user-select:none;-moz-user-select:none;user-select:none}.xc-actions span:hover{opacity:1;background:var(--bg3)}.mgr-card{border:1.5px solid var(--warn-b);border-radius:var(--rs);padding:16px;margin-bottom:10px;background:linear-gradient(135deg,var(--warn-bg),transparent);transition:all var(--dur) var(--ease)}.mgr-card:hover{box-shadow:var(--shadow)}.mgr-num{width:28px;height:28px;border-radius:8px;background:var(--warn);color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;flex-shrink:0}.tbl-card{border:1.5px solid var(--b);border-radius:var(--rs);padding:14px;margin-bottom:8px;background:var(--bg3);transition:all var(--dur) var(--ease)}.tbl-card:hover{border-color:var(--b-hover)}.browser{border:1px solid var(--b);border-radius:var(--rs);max-height:200px;overflow-y:auto;background:var(--bg3)}.browser-path{padding:6px 12px;font-size:9px;color:var(--t2);border-bottom:1px solid var(--b);font-weight:700}.browser-item{padding:8px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:11px;color:var(--t2);transition:all .08s var(--ease);border-radius:6px;margin:2px 4px}.browser-item:hover{background:var(--acc-soft);color:var(--acc)}.help-box{padding:12px 16px;border-radius:var(--rs);font-size:11px;line-height:1.6;margin-bottom:12px;display:flex;gap:10px;align-items:flex-start}.help-box .hi{font-size:14px;flex-shrink:0;line-height:1.3}.help-box.info{background:#eef2ff;border:1px solid rgba(79,70,229,.15);color:#3730a3}.help-box.tip{background:var(--ok-bg);border:1px solid var(--ok-b);color:#065f46}.help-box.warn{background:var(--warn-bg);border:1px solid var(--warn-b);color:#854d0e}.pill{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:20px;font-size:10px;font-weight:700;white-space:nowrap}.pill-ok{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-b)}.pill-warn{background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-b)}.pill-err{background:var(--err-bg);color:var(--err);border:1px solid var(--err-b)}.pill-empty{background:var(--bg3);color:var(--t3);border:1px solid var(--b)}.pv-header{padding:12px 18px;border-bottom:1px solid var(--b);font-size:12px;font-weight:700;color:var(--t);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;background:var(--bg2)}.pv-body{flex:1;overflow-y:auto;padding:14px 16px}.pv-section{margin-bottom:18px}.pv-section-title{font-size:10px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px;display:flex;align-items:center;gap:6px;padding:6px 0 4px;position:sticky;top:0;background:var(--bg2);z-index:1}.pv-table{width:100%;border-collapse:separate;border-spacing:0;font-size:10px;border-radius:6px;overflow:hidden;border:1px solid var(--b)}.pv-table th{padding:5px 8px;background:var(--bg3);font-weight:700;color:var(--t2);border-bottom:1px solid var(--b);text-align:left;position:sticky;top:0;font-size:9px}.pv-table td{padding:4px 8px;border-bottom:1px solid var(--bg3);color:var(--t2);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pv-table tr:hover td{background:var(--acc-glow)}.pv-stat{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;border-radius:var(--rs);background:var(--bg3);margin-bottom:4px;font-size:11px;transition:background var(--dur) var(--ease)}.pv-stat:hover{background:var(--bg4)}.pv-stat-label{color:var(--t3);font-weight:600}.pv-stat-value{font-weight:700;color:var(--t)}.pv-filename{padding:10px 12px;background:var(--bg3);border:1px solid var(--b);border-radius:8px;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--acc);font-weight:600;word-break:break-all}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#f7f7f8eb;z-index:9999;display:flex;justify-content:center;align-items:center;flex-direction:column;gap:16px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.ov-spinner{width:40px;height:40px;border:3px solid var(--b);border-top-color:var(--acc);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.ov-text{font-size:13px;font-weight:600;color:var(--t2)}.ov-dots:after{content:"";animation:dots 1.4s steps(4,end) infinite}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.toast{position:fixed;top:16px;right:16px;z-index:10001;padding:12px 18px 12px 14px;border-radius:12px;font-size:12px;font-weight:600;color:#fff;box-shadow:var(--shadow-lg);animation:toast-in .3s var(--ease);max-width:380px;word-break:break-word;display:flex;align-items:center;gap:8px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.toast.success{background:#10b981f2}.toast.error{background:#ef4444f2}.toast.hide{animation:toast-out .25s var(--ease) forwards}@keyframes toast-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translate(20px)}}.result-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--b);border-radius:var(--rs);margin-bottom:6px;background:var(--bg2);transition:all var(--dur) var(--ease)}.result-item:hover{border-color:var(--acc-border);box-shadow:var(--shadow)}.result-icon{width:36px;height:36px;border-radius:var(--rs);background:var(--acc-soft);display:flex;align-items:center;justify-content:center;color:var(--acc);font-size:16px;flex-shrink:0}.result-item a{color:var(--acc);text-decoration:none;font-size:12px;font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-item a:hover{text-decoration:underline}.status-box{padding:12px 16px;border-radius:var(--rs);margin-bottom:12px;font-size:13px;font-weight:600;display:flex;align-items:center;gap:8px}.status-box.ok{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-b)}.status-box.er{background:var(--err-bg);color:var(--err);border:1px solid var(--err-b)}.cp{position:relative;display:inline-flex;flex:1;min-width:0}.cp-chip{display:flex;align-items:center;gap:4px;padding:5px 10px;border:1.5px solid var(--b);border-radius:var(--rs);font-size:12px;background:var(--bg2);color:var(--t);cursor:pointer;min-height:32px;width:100%;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cp-chip:hover{border-color:var(--b-hover)}.cp-chip.open{border-color:var(--acc);box-shadow:var(--shadow-focus)}.cp-chip.has-val{color:var(--acc);font-weight:600;background:var(--acc-soft);border-color:var(--acc-border)}.cp-chip .cp-ph{color:var(--t3);font-weight:400}.cp-chip .cp-x{margin-left:auto;font-size:10px;color:var(--t3);flex-shrink:0;padding:2px;border-radius:4px;transition:all var(--dur) var(--ease)}.cp-chip .cp-x:hover{color:var(--err);background:var(--err-bg)}.cp-chip .cp-caret{margin-left:auto;font-size:8px;color:var(--t3);flex-shrink:0;transition:transform var(--dur) var(--ease)}.cp-chip.open .cp-caret{transform:rotate(180deg)}.cp-dd{position:absolute;top:calc(100% + 4px);left:0;right:0;min-width:180px;max-height:220px;background:var(--bg2);border:1.5px solid var(--b);border-radius:var(--rs);box-shadow:var(--shadow-lg);z-index:90;display:flex;flex-direction:column;overflow:hidden;animation:cpIn .12s var(--ease)}@keyframes cpIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.cp-search{padding:8px 10px;border:none;border-bottom:1px solid var(--b);font-size:12px;background:var(--bg);color:var(--t);outline:none}.cp-search::-moz-placeholder{color:var(--t3)}.cp-search::placeholder{color:var(--t3)}.cp-list{overflow-y:auto;flex:1;padding:4px}.cp-item{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:6px;font-size:12px;color:var(--t);cursor:pointer;transition:background var(--dur) var(--ease)}.cp-item:hover{background:var(--acc-soft)}.cp-item.active{background:var(--acc-soft);color:var(--acc);font-weight:600}.cp-item .cp-letter{font-size:10px;color:var(--t3);font-weight:700;min-width:22px;font-family:JetBrains Mono,monospace}.cp-sm .cp-chip{padding:3px 8px;font-size:11px;min-height:28px}.sec-t{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg3);border:1px solid var(--b);border-radius:var(--rs);cursor:pointer;transition:all var(--dur) var(--ease);margin-bottom:2px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.sec-t:hover{background:var(--bg4)}.sec-t .st-title{font-size:12px;font-weight:700;color:var(--t2);display:flex;align-items:center;gap:6px}.sec-t .st-badge{font-size:9px;font-weight:600;padding:2px 8px;border-radius:10px;background:var(--acc-soft);color:var(--acc)}.sec-t .st-chev{font-size:10px;color:var(--t3);transition:transform .2s var(--ease)}.sec-t.open .st-chev{transform:rotate(180deg)}.sec-t.open{border-radius:var(--rs) var(--rs) 0 0;margin-bottom:0}.sec-b{border:1px solid var(--b);border-top:none;border-radius:0 0 var(--rs) var(--rs);padding:16px;margin-bottom:12px;background:var(--bg2)}.summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.summary-stat{padding:12px 14px;border-radius:var(--rs);background:var(--bg3)}.summary-stat .stat-value{font-size:18px;font-weight:800;color:var(--t)}.summary-stat .stat-label{font-size:10px;color:var(--t3);font-weight:600;text-transform:uppercase;letter-spacing:.3px;margin-top:2px}.ph-bar{display:flex;flex-wrap:wrap;gap:4px;padding:10px 12px;background:var(--bg3);border:1px solid var(--b);border-radius:var(--rs);margin:8px 0}.ph-chip{padding:4px 10px;background:var(--bg2);border:1px solid var(--b);border-radius:6px;font-size:10px;font-family:JetBrains Mono,monospace;cursor:pointer;transition:all var(--dur) var(--ease);color:var(--acc);font-weight:600;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.ph-chip:hover{background:var(--acc-soft);border-color:var(--acc);transform:translateY(-1px);box-shadow:var(--shadow)}.ph-label{font-size:9px;font-weight:700;color:var(--t3);padding:3px 4px;text-transform:uppercase;letter-spacing:.3px;flex-shrink:0}.tpl-display{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:var(--rs);border:2px solid var(--acc-border);background:linear-gradient(135deg,var(--acc-soft),transparent);margin-bottom:14px;animation:fadeIn .2s var(--ease)}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.remove-btn{cursor:pointer;color:var(--err);font-size:12px;padding:2px 4px;flex-shrink:0;opacity:.3;transition:all var(--dur) var(--ease);background:none;border:none;border-radius:4px}.remove-btn:hover{opacity:1;background:var(--err-bg)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000040;z-index:500;display:flex;align-items:flex-start;justify-content:center;padding-top:40px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.dialog-box{background:var(--bg2);border:1px solid var(--b);border-radius:var(--r);max-width:480px;width:100%;max-height:calc(100vh - 80px);display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}.cascade-flow{display:flex;flex-direction:column;gap:0;padding:14px 16px;background:var(--warn-bg);border:1px solid var(--warn-b);border-radius:var(--rs);margin-top:12px}.cascade-node{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#fff;border:1.5px solid var(--warn-b);border-radius:var(--rs);font-size:12px;font-weight:700;color:#854d0e}.cascade-arrow{width:2px;height:20px;background:var(--warn);margin-left:24px;position:relative}.cascade-arrow:after{content:"";position:absolute;bottom:-3px;left:-3px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--warn)}.step-fade-enter-active{animation:stepIn .2s var(--ease)}.step-fade-leave-active{animation:stepOut .12s var(--ease)}@keyframes stepIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes stepOut{to{opacity:0;transform:translateY(-6px)}}.mgr-hdr{padding:24px 32px 20px;border-bottom:1px solid var(--b);background:var(--bg2)}.mgr-hdr h1{font-size:18px;font-weight:800;letter-spacing:-.4px}.mgr-hdr p{font-size:12px;color:var(--t2);margin-top:2px}.mgr-ctn{max-width:760px;margin:0 auto;padding:20px 28px 48px}.mgr-steps{display:flex;gap:1px;margin-bottom:22px;background:var(--b);border-radius:8px;overflow:hidden;border:1px solid var(--b)}.mgr-stp{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;padding:10px 14px;background:var(--bg2);cursor:pointer;transition:.15s;font-size:11px;font-weight:700;color:var(--t3)}.mgr-stp:hover{color:var(--t2);background:var(--bg3)}.mgr-stp.active{color:var(--t);background:var(--bg3);font-weight:800}.mgr-stp.done{color:var(--ok)}.mgr-stp.disabled{pointer-events:none;opacity:.3}.mgr-sn{width:20px;height:20px;background:var(--b);color:var(--bg2);border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:9px;flex-shrink:0;transition:.15s}.mgr-stp.active .mgr-sn{background:var(--t)}.mgr-stp.done .mgr-sn{background:var(--ok)}.pgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pcard{padding:14px 16px;border:1.5px solid var(--b);border-radius:8px;cursor:pointer;transition:.12s;position:relative}.pcard:hover{border-color:var(--b-hover);background:var(--bg3)}.pcard.sel{border-color:var(--t);background:var(--bg3)}.pcheck{position:absolute;top:12px;right:12px;width:18px;height:18px;border:1.5px solid var(--b);border-radius:50%;transition:.12s;display:flex;align-items:center;justify-content:center;font-size:9px;color:transparent}.pcard.sel .pcheck{border-color:var(--t);background:var(--t);color:#fff}.cblist{max-height:170px;overflow-y:auto;border:1.5px solid var(--b);border-radius:8px;padding:3px}.cblist label{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:5px;font-size:11px;font-weight:500;cursor:pointer;transition:.1s}.cblist label:hover{background:var(--bg3)}.cblist input[type=checkbox]{width:15px;height:15px;accent-color:var(--t);cursor:pointer;flex-shrink:0}.chip{padding:2px 9px;background:var(--bg3);color:var(--t);border:1px solid var(--b);border-radius:14px;font-size:10px;font-weight:700}.rcard{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--bg2);border:1px solid var(--b);border-radius:8px;margin-bottom:8px;transition:.12s}.rcard:hover{border-color:var(--b-hover);box-shadow:0 2px 8px #0000000a}.rico{width:38px;height:38px;background:var(--bg3);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}.log-box{margin-top:10px;padding:12px;background:#18181b;color:#d4d4d8;border-radius:8px;font-family:JetBrains Mono,monospace;font-size:10px;line-height:1.7;max-height:260px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.pv-mgr{margin-top:14px;border:1.5px solid #bfdbfe;border-radius:8px;overflow:hidden;background:var(--bg2);animation:fadeIn .2s ease}.pv-bar{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;background:#eff6ff;border-bottom:1px solid #bfdbfe;flex-wrap:wrap;gap:6px}.pv-bar-t{font-size:11px;font-weight:700;color:#1e40af;display:flex;align-items:center;gap:6px}.pv-bar-c{font-size:10px;color:#3b82f6;font-weight:600}.pv-bar-mode{font-size:9px;color:#6366f1;background:#eef2ff;padding:2px 8px;border-radius:10px;font-weight:700}.pv-scroll{overflow-x:auto;max-height:480px;overflow-y:auto}.pv-mgr table{width:100%;border-collapse:collapse;font-size:11px}.pv-mgr th{padding:6px 10px;background:#f8fafc;font-weight:700;color:var(--t2);border-bottom:1.5px solid var(--b);text-align:left;position:sticky;top:0;font-size:9px;letter-spacing:.4px;text-transform:uppercase;white-space:nowrap;z-index:1}.pv-mgr td{padding:5px 10px;border-bottom:1px solid #f5f5f5;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pv-mgr tr:hover td{background:#eff6ff}.pv-mgr .rn{color:var(--t3);font-weight:600;text-align:center;width:32px}.pv-foot{padding:7px 14px;text-align:center;font-size:10px;color:var(--t3);background:#f8fafc;border-top:1px solid var(--b)}.ef-active{border-color:var(--ok)!important;background:var(--ok-bg)!important}.xlsx-title{display:flex;gap:3px;align-items:center;padding:6px 8px;margin-bottom:3px;border:1px solid var(--b);border-radius:6px;background:var(--bg3)}.colref{padding:2px 7px;background:var(--bg2);border:1px solid var(--b);border-radius:4px;font-size:9px;font-family:JetBrains Mono,monospace;cursor:pointer;transition:.1s;color:var(--acc);font-weight:600}.colref:hover{background:var(--acc-soft);border-color:var(--acc)}
