:root{--bg: #f7f7f5;--surface: #ffffff;--ink: #131316;--ink-2: #55555e;--ink-3: #9c9ca6;--hairline: #e9e9e4;--hairline-strong: #dcdcd5;--primary: #16161a;--primary-hover: #2c2c33;--accent: #4f46e5;--accent-soft: #eef2ff;--accent-border: #c7d2fe;--success: #16a34a;--success-soft: #f0fdf4;--amber: #f59e0b;--amber-light: #fbbf24;--danger: #dc2626;--danger-soft: #fef2f2;--radius-lg: 18px;--radius-md: 12px;--radius-sm: 8px;--shadow-card: 0 1px 2px rgba(19, 19, 22, .04), 0 8px 32px rgba(19, 19, 22, .06);--shadow-pop: 0 2px 4px rgba(19, 19, 22, .08), 0 12px 40px rgba(19, 19, 22, .12);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased}body{font-family:var(--font-sans);background:radial-gradient(1200px 500px at 50% -10%,#ffffff 0%,transparent 60%),var(--bg);color:var(--ink);min-height:100vh;font-size:15px;line-height:1.5}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{background:#ffffffd1;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--hairline);padding:0 32px;height:68px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:38px;height:38px;border-radius:11px;background:linear-gradient(140deg,#4338ca,#6366f1 55%,#818cf8);color:#fff;font-weight:700;font-size:13px;letter-spacing:.02em;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 1px #ffffff38,0 2px 10px #4f46e552,0 0 0 1.5px #6366f12e}.brand-text{display:flex;flex-direction:column;line-height:1.25}.brand-name{font-size:14.5px;font-weight:650;letter-spacing:-.01em}.brand-sub{font-size:11px;color:var(--ink-3);font-weight:500;letter-spacing:.02em}.stepper,.stepper-segment{display:flex;align-items:center}.step-connector{width:36px;height:1.5px;background:var(--hairline-strong);margin:0 10px;border-radius:1px;transition:background .3s}.step-connector.filled{background:var(--amber)}.step{display:flex;align-items:center;gap:8px;color:var(--ink-3);transition:color .2s;background:none;border:none;padding:4px;margin:-4px 0;border-radius:8px;font-family:inherit;cursor:pointer}.step:disabled{cursor:default}.step:not(:disabled):hover{color:var(--ink);background:#1313160a}.step:not(:disabled):hover .step-bullet{border-color:var(--ink-3)}.step.current{color:var(--ink)}.step.current:disabled,.step.done:disabled{cursor:default}.step.done{color:var(--ink-2)}.step.done:not(:disabled){cursor:pointer}.step-bullet{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--hairline-strong);background:var(--surface);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;transition:all .25s}.step.current .step-bullet{background:linear-gradient(135deg,var(--amber-light) 0%,var(--amber) 100%);border-color:var(--amber);color:#fff;box-shadow:inset 0 1px #ffffff40,0 0 0 4px #f59e0b24,0 2px 8px #f59e0b59}.step.done .step-bullet{background:var(--success);border-color:var(--success);color:#fff}.step-label{font-size:13px;font-weight:550;letter-spacing:-.005em}.app-main{flex:1;padding:40px 24px;max-width:880px;margin:0 auto;width:100%}.app-main.app-main-wide{max-width:1720px;padding:28px 40px}.app-footer{text-align:center;font-size:12px;color:var(--ink-3);padding:24px;letter-spacing:.01em}.step-card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:36px;display:flex;flex-direction:column;gap:24px;animation:rise .4s cubic-bezier(.22,.8,.36,1)}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.step-header{display:flex;flex-direction:column;gap:6px}.step-eyebrow{font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.1em;color:var(--accent)}.step-header h2{font-size:22px;font-weight:650;letter-spacing:-.02em}.step-desc{color:var(--ink-2);font-size:14px}.dropzone{border:1.5px dashed var(--hairline-strong);border-radius:var(--radius-md);padding:36px 24px;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;transition:all .2s;background:#fcfcfa;outline:none}.dropzone:hover,.dropzone:focus-visible{border-color:var(--ink-3);background:#fafaf7}.dropzone.dragging{border-color:var(--accent);background:var(--accent-soft);transform:scale(1.005)}.dz-icon{width:52px;height:52px;border-radius:50%;background:var(--surface);border:1px solid var(--hairline);box-shadow:0 2px 8px #1313160f;display:flex;align-items:center;justify-content:center;color:var(--ink-2);margin-bottom:10px;transition:all .2s}.dropzone.dragging .dz-icon{color:var(--accent);border-color:var(--accent-border)}.dz-title{font-size:15px;font-weight:600;letter-spacing:-.01em}.dz-sub{font-size:13px;color:var(--ink-3)}.dz-file{margin-top:14px;display:inline-flex;align-items:center;gap:7px;background:var(--success-soft);color:var(--success);border:1px solid #bbf7d0;border-radius:100px;padding:5px 14px;font-size:12.5px;font-weight:550}.divider{display:flex;align-items:center;gap:16px;color:var(--ink-3);font-size:12px;font-weight:550;text-transform:uppercase;letter-spacing:.08em}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--hairline)}.jb-modes{display:inline-flex;gap:4px;background:var(--bg);border:1px solid var(--hairline);border-radius:10px;padding:4px;margin-bottom:16px}.jb-modes button{border:none;background:none;padding:7px 16px;border-radius:7px;font-size:13px;font-weight:600;color:var(--ink-2);cursor:pointer}.jb-modes button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #00000014}.jb-hint{font-size:13px;color:var(--ink-2);margin:0 0 12px}.jb-rows,.jb-field{display:flex;flex-direction:column;gap:8px}.jb-row{display:grid;grid-template-columns:1.3fr .9fr 1.6fr 32px;gap:8px;align-items:center}.jb-name,.jb-type,.jb-val{border:1px solid var(--hairline-strong);border-radius:8px;padding:8px 10px;font-size:13px;font-family:inherit;color:var(--ink);background:var(--surface);min-width:0}.jb-name:focus,.jb-type:focus,.jb-val:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.jb-note{font-size:12px;color:var(--ink-3);font-style:italic;align-self:center}.jb-del{justify-self:center}.jb-children{margin-left:18px;padding-left:14px;border-left:2px solid var(--hairline)}.jb-add{align-self:flex-start;border:1px dashed var(--hairline-strong);background:none;border-radius:8px;padding:7px 14px;font-size:12.5px;font-weight:600;color:var(--accent);cursor:pointer}.jb-add:hover{background:var(--accent-soft)}.jb-preview{background:#0f172a;color:#e2e8f0;border-radius:10px;padding:14px 16px;font-family:var(--font-mono);font-size:12px;line-height:1.5;max-height:280px;overflow:auto;margin:0}.json-input{width:100%;min-height:260px;font-family:var(--font-mono);font-size:12.5px;border:1.5px solid var(--hairline);border-radius:var(--radius-md);padding:16px;resize:vertical;outline:none;transition:border-color .15s,box-shadow .15s;color:var(--ink);line-height:1.7;background:#fcfcfa}.json-input:focus{border-color:var(--ink);box-shadow:0 0 0 3px #1313160f;background:var(--surface)}.json-input::placeholder{color:var(--ink-3)}.btn-primary,.btn-secondary,.btn-ghost{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border-radius:10px;font-size:14px;font-weight:550;font-family:var(--font-sans);cursor:pointer;border:none;transition:all .18s;letter-spacing:-.005em}.btn-primary{background:var(--primary);color:#fff;box-shadow:inset 0 1px #ffffff1f,0 2px 8px #1313162e}.btn-primary:hover:not(:disabled){background:var(--primary-hover);transform:translateY(-1px);box-shadow:inset 0 1px #ffffff1f,0 6px 16px #13131638}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{background:var(--surface);color:var(--ink-2);border:1px solid var(--hairline-strong)}.btn-secondary:hover{background:#fafaf7;color:var(--ink)}.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--hairline-strong)}.btn-ghost:hover{border-color:var(--ink-3);background:#fafaf7}.step-actions{display:flex;gap:10px;justify-content:flex-end;align-items:center;padding-top:4px;flex-wrap:wrap}.export-spacer{flex:1}.export-group{display:flex;align-items:center;gap:8px;padding:4px 4px 4px 14px;border:1px solid var(--hairline-strong);border-radius:12px;background:#fcfcfa}.export-label{font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3)}.export-format{border:1px solid var(--hairline-strong);border-radius:8px;padding:7px 10px;font-size:13px;font-family:var(--font-sans);font-weight:550;color:var(--ink);background:var(--surface);outline:none;cursor:pointer;transition:border-color .15s}.export-format:focus{border-color:var(--ink)}.export-format:disabled{opacity:.5;cursor:not-allowed}.export-btn{padding-top:9px;padding-bottom:9px}.export-btn:disabled{opacity:.6;cursor:progress}.spinner{width:13px;height:13px;border:2px solid var(--hairline-strong);border-top-color:var(--ink);border-radius:50%;display:inline-block;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-msg{color:var(--danger);font-size:13px;padding:10px 14px;background:var(--danger-soft);border-radius:var(--radius-sm);border:1px solid #fecaca;font-weight:500}.report-meta{display:flex;gap:32px;flex-wrap:wrap;padding:18px 20px;background:#fcfcfa;border-radius:var(--radius-md);border:1px solid var(--hairline)}.report-meta>label{display:flex;flex-direction:column;gap:7px;font-size:11px;color:var(--ink-3);font-weight:650;text-transform:uppercase;letter-spacing:.08em}.report-meta input[type=text],.report-meta input:not([type]){border:1.5px solid var(--hairline);border-radius:var(--radius-sm);padding:8px 12px;font-size:14px;font-family:var(--font-sans);width:250px;outline:none;color:var(--ink);background:var(--surface);transition:border-color .15s,box-shadow .15s;text-transform:none;letter-spacing:normal;font-weight:450}.report-meta input:focus{border-color:var(--ink);box-shadow:0 0 0 3px #1313160f}.radio-group{display:flex;gap:18px;align-items:center;padding-top:4px}.radio-group label{display:flex;flex-direction:row;align-items:center;gap:7px;font-weight:450;font-size:14px;color:var(--ink);cursor:pointer;text-transform:none;letter-spacing:normal}.radio-group input{accent-color:var(--ink)}.legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px 20px;font-size:12px;color:var(--ink-2);padding:14px 18px;background:var(--accent-soft);border-radius:var(--radius-md);border:1px solid var(--accent-border)}.legend-item{display:flex;flex-direction:column;gap:1px}.legend-term{font-weight:650;color:var(--accent);font-size:12px}.field-list{display:flex;flex-direction:column;max-height:460px;overflow-y:auto;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface)}.field-list::-webkit-scrollbar{width:10px}.field-list::-webkit-scrollbar-thumb{background:var(--hairline-strong);border-radius:100px;border:3px solid var(--surface)}.object-divider{display:flex;align-items:center;gap:9px;padding:10px 16px 8px;background:#fafaf7;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);font-size:13px;position:sticky;top:0;z-index:1}.object-divider:first-child{border-top:none}.object-divider strong{font-weight:600;letter-spacing:-.01em}.obj-path{color:var(--ink-3);font-size:11px;font-family:var(--font-mono);margin-left:auto}.field-row{display:flex;align-items:center;justify-content:space-between;padding:9px 16px;gap:12px;transition:background .12s;border-bottom:1px solid #f4f4f0}.field-row:last-child{border-bottom:none}.field-row:hover{background:#fcfcfa}.field-info{display:flex;align-items:center;gap:9px;min-width:0;flex:1}.field-key{font-size:13px;font-family:var(--font-mono);font-weight:500;white-space:nowrap;letter-spacing:-.01em}.field-sample{color:var(--ink-3);font-size:11px;font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px}.field-controls{display:flex;align-items:center;gap:8px;flex-shrink:0}.label-input{border:1px solid var(--hairline);border-radius:7px;padding:5px 10px;font-size:12.5px;font-family:var(--font-sans);width:132px;outline:none;color:var(--ink);background:var(--surface);transition:border-color .15s}.label-input:focus{border-color:var(--ink)}.placement-group{display:flex;gap:0;border:1px solid var(--hairline-strong);border-radius:8px;overflow:hidden;background:var(--surface)}.placement-btn{padding:5px 12px;font-size:11.5px;font-weight:550;font-family:var(--font-sans);cursor:pointer;border:none;background:transparent;color:var(--ink-2);transition:all .14s;white-space:nowrap;border-right:1px solid var(--hairline)}.placement-btn:last-child{border-right:none}.placement-btn:hover{background:#fafaf7;color:var(--ink)}.placement-btn.active{background:var(--ink);color:#fff}.obj-note{font-size:11px;color:var(--ink-3);font-style:italic}.ds-indicator{font-size:10.5px;background:var(--success-soft);color:var(--success);border:1px solid #bbf7d0;border-radius:100px;padding:3px 9px;font-weight:600;white-space:nowrap}.type-badge{display:inline-flex;align-items:center;padding:2.5px 8px;border-radius:6px;font-size:10px;font-weight:650;letter-spacing:.03em;white-space:nowrap;flex-shrink:0;text-transform:uppercase}.type-badge.t-string{background:#eff6ff;color:#1d4ed8}.type-badge.t-number{background:#f5f3ff;color:#6d28d9}.type-badge.t-boolean{background:#fffbeb;color:#b45309}.type-badge.t-object{background:#f4f4f5;color:#52525b}.type-badge.t-array{background:#ecfdf5;color:#047857}.type-badge.t-image{background:#fdf2f8;color:#be185d}.type-badge.t-null{background:#f4f4f5;color:#a1a1aa}.summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.summary-item{background:#fcfcfa;border:1px solid var(--hairline);border-radius:var(--radius-md);padding:16px 18px;display:flex;flex-direction:column;gap:5px;transition:all .18s}.summary-item:hover{border-color:var(--hairline-strong);box-shadow:0 4px 14px #1313160d}.summary-label{font-size:10.5px;color:var(--ink-3);font-weight:650;text-transform:uppercase;letter-spacing:.09em}.summary-value{font-size:17px;font-weight:650;color:var(--ink);letter-spacing:-.02em}.columns-preview{font-size:13px;color:var(--ink-2);display:flex;flex-direction:column;gap:9px}.columns-preview strong{color:var(--ink);font-weight:600}.column-tags{display:flex;flex-wrap:wrap;gap:7px}.column-tag{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-border);border-radius:100px;padding:4px 13px;font-size:12px;font-family:var(--font-mono);font-weight:500}.view-tabs{display:inline-flex;border:1px solid var(--hairline-strong);border-radius:10px;overflow:hidden;align-self:flex-start;background:var(--surface)}.view-tab{padding:8px 20px;font-size:13px;font-weight:550;font-family:var(--font-sans);border:none;background:transparent;cursor:pointer;color:var(--ink-2);border-right:1px solid var(--hairline);transition:all .14s}.view-tab:last-child{border-right:none}.view-tab:hover{background:#fafaf7;color:var(--ink)}.view-tab.active{background:var(--ink);color:#fff}.report-preview-wrap{background:#e9e9e4;border:1px solid var(--hairline-strong);border-radius:var(--radius-md);padding:28px;display:flex;justify-content:center;overflow-x:auto}.report-paper{background:#fff;width:612px;min-height:792px;flex-shrink:0;padding:28px 26px;box-shadow:0 1px 3px #1313161f,0 16px 48px #1313162e;display:flex;flex-direction:column;font-family:Helvetica Neue,Arial,sans-serif;color:#111}.report-paper.landscape{width:752px;min-height:612px}.rp-top{display:flex;align-items:center;gap:10px;min-height:56px;margin-bottom:10px}.rp-logo{width:120px;height:52px;object-fit:contain;object-position:left center;flex-shrink:0}.rp-logo-placeholder{display:flex;align-items:center;justify-content:center;background:#f4f4f2;border:1px dashed #d4d4ce;color:#a8a8a0;font-size:11px;font-weight:600;letter-spacing:.08em}.rp-logo-spacer{width:120px;flex-shrink:0}.rp-title{flex:1;text-align:center;font-size:17px;font-weight:700}.rp-rule{height:1px;background:#1a1a1a;margin:4px 0 10px}.rp-grid{display:grid;grid-template-columns:1fr 1fr;gap:3px 32px;margin-bottom:18px}.rp-pair{display:flex;gap:6px;font-size:10.5px;line-height:1.5;min-width:0}.rp-label{font-weight:700;white-space:nowrap}.rp-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rp-table{width:100%;border-collapse:collapse;font-size:10px;margin-bottom:18px}.rp-table th{background:#ddd;border:.5px solid #1a1a1a;padding:4px 6px;font-weight:700;text-align:left;overflow-wrap:anywhere}.rp-table td{border:.5px solid #c8c8c8;padding:3.5px 6px;overflow-wrap:anywhere}.rp-table tfoot .rp-table-total{background:#e8e8e8;border:.5px solid #1a1a1a;padding:4px 6px;font-weight:700;font-size:9.5px}.rp-footer{margin-top:auto}.rp-footer .rp-rule{background:#555;margin-bottom:6px}.rp-footer-row{display:flex;justify-content:space-between;font-size:9.5px;color:#524e45}.xml-preview{background:#101014;color:#a3a3b2;font-family:var(--font-mono);font-size:11px;padding:20px;border-radius:var(--radius-md);overflow-x:auto;white-space:pre;max-height:480px;overflow-y:auto;line-height:1.7;border:1px solid #232329}.xml-preview::-webkit-scrollbar{width:10px;height:10px}.xml-preview::-webkit-scrollbar-thumb{background:#2e2e36;border-radius:100px;border:3px solid #101014}.builder{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);display:flex;flex-direction:column;overflow:hidden;animation:rise .4s cubic-bezier(.22,.8,.36,1)}.builder-top{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:22px 28px;border-bottom:1px solid var(--hairline);flex-wrap:wrap}.builder-title{font-size:21px;font-weight:650;letter-spacing:-.02em;margin-top:4px}.builder-meta{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.meta-name{border:1.5px solid var(--hairline);border-radius:var(--radius-sm);padding:9px 13px;font-size:14px;font-family:var(--font-sans);width:240px;outline:none;color:var(--ink);background:var(--surface);transition:border-color .15s,box-shadow .15s}.meta-name:focus{border-color:var(--ink);box-shadow:0 0 0 3px #1313160f}.meta-radio{display:flex;gap:16px}.meta-radio label{display:flex;align-items:center;gap:6px;font-size:13.5px;color:var(--ink-2);cursor:pointer}.meta-radio input{accent-color:var(--ink)}.builder-body{display:grid;grid-template-columns:248px 1fr 320px;min-height:calc(100vh - 250px)}.palette{border-right:1px solid var(--hairline);padding:22px 16px;background:#fcfcfa;overflow-y:auto}.palette-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2)}.palette-hint{font-size:11.5px;color:var(--ink-3);margin:4px 0 14px}.palette-list{display:flex;flex-direction:column;gap:7px}.palette-card{display:flex;align-items:center;gap:11px;padding:10px 11px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;text-align:left;transition:all .15s}.palette-card:hover{border-color:var(--hairline-strong);box-shadow:0 3px 10px #1313160f;transform:translateY(-1px)}.pal-icon{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.palette-card-text{display:flex;flex-direction:column;min-width:0;flex:1}.palette-card-name{font-size:13.5px;font-weight:600;letter-spacing:-.01em}.palette-card-desc{font-size:11px;color:var(--ink-3)}.palette-card-add{font-size:18px;color:var(--ink-3);width:20px;text-align:center;flex-shrink:0}.palette-card:hover .palette-card-add{color:var(--ink)}.canvas{background:#eceae6;padding:32px;overflow-y:auto;display:flex;justify-content:center}.canvas-paper{background:#fff;width:100%;max-width:820px;min-height:600px;padding:34px 38px;border-radius:4px;box-shadow:0 1px 3px #1313161a,0 18px 50px #13131629;display:flex;flex-wrap:wrap;align-content:flex-start;gap:8px;height:fit-content}.canvas-paper.landscape{max-width:1080px}.canvas-empty{color:var(--ink-3);font-size:13.5px;text-align:center;padding:70px 20px;width:100%}.band-zone{flex:0 0 100%;max-width:100%;box-sizing:border-box;border-radius:7px;cursor:pointer}.band-zone-add{border:1.5px dashed var(--hairline-strong);background:transparent;color:var(--ink-3);font-size:12px;font-weight:550;font-family:var(--font-sans);padding:9px;text-align:center;transition:all .14s}.band-zone-add:hover{border-color:var(--ink-3);color:var(--ink);background:#fafaf7}.band-zone:not(.band-zone-add){border:1.5px solid transparent;padding:5px 8px;position:relative;transition:background .12s,border-color .12s,box-shadow .12s}.band-zone:not(.band-zone-add):hover{background:#f7f7f3}.band-zone.selected{border-color:var(--amber);background:#fffaf0;box-shadow:0 0 0 3px #f59e0b1f}.band-zone-tag{font-size:8.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);display:block;margin-bottom:2px}.band-zone-cols{display:flex;justify-content:space-between;gap:10px;font-size:10px;color:#333;padding:2px 0}.band-zone-cols.ruled{border-top:1px solid #1a1a1a;padding-top:4px}.bz-slot{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.bz-center{text-align:center}.bz-right{text-align:right}.rp-band{display:flex;justify-content:space-between;gap:16px;font-size:9.5px;color:#524e45}.rp-band-header{margin-bottom:10px}.rp-band-header.ruled{border-bottom:1px solid #1a1a1a;padding-bottom:5px}.rp-band-footer{margin-top:auto;padding-top:5px}.rp-band-footer.ruled{border-top:1px solid #555}.rp-band-l{flex:1}.rp-band-c{flex:1;text-align:center}.rp-band-r{flex:1;text-align:right}.bk-cell{position:relative;border:1.5px solid transparent;border-radius:8px;padding:8px 10px;cursor:pointer;min-height:34px;transition:background .12s,border-color .12s,box-shadow .12s;flex-grow:1}.bk-cell:hover{background:#f7f7f3}.bk-cell:hover .bk-tools,.bk-cell:hover .bk-handle,.bk-cell:hover .bk-width-tag{opacity:1}.bk-cell.selected{border-color:var(--amber);background:#fffaf0;box-shadow:0 0 0 3px #f59e0b1f}.bk-cell.drag-over{box-shadow:inset 3px 0 0 var(--accent)}.bk-handle{position:absolute;top:6px;left:5px;color:var(--ink-3);cursor:grab;font-size:12px;line-height:1;opacity:0;transition:opacity .12s}.bk-handle:active{cursor:grabbing}.bk-content{min-width:0}.bk-tools{position:absolute;top:4px;right:5px;display:flex;gap:3px;opacity:0;transition:opacity .12s;z-index:2}.bk-tools button{width:20px;height:19px;border:1px solid var(--hairline-strong);background:var(--surface);border-radius:5px;font-size:10px;color:var(--ink-2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s}.bk-tools button:hover{background:#f0f0ec;color:var(--ink)}.bk-tools .bk-del:hover{background:var(--danger-soft);color:var(--danger);border-color:#fecaca}.bk-width-tag{position:absolute;bottom:3px;right:7px;font-size:9px;color:var(--ink-3);font-weight:600;opacity:0;transition:opacity .12s}.bk-heading{line-height:1.25;color:#111;word-break:break-word}.bk-text{line-height:1.4;color:#333;word-break:break-word}.bk-field,.bk-total,.bk-calc{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;color:#222}.bk-field{font-size:11px}.bk-field-label,.bk-total-label{font-weight:700;white-space:nowrap}.bk-field-value{font-family:var(--font-mono);color:var(--accent);font-size:10.5px}.bk-total-value{font-family:var(--font-mono);color:#b45309;font-weight:600;font-size:10.5px}.bk-calc-value code{font-family:var(--font-mono);color:#0f766e;font-size:10px;background:#f0fdfa;padding:1px 5px;border-radius:4px}.bk-unbound{color:var(--ink-3);font-style:italic}.bk-image{display:flex}.bk-image-box{border:1px dashed #c9c9c2;background:#f6f6f2;border-radius:4px;height:50px;width:100%;max-width:170px;display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--ink-3);padding:0 8px;text-align:center}.bk-image-path{font-family:var(--font-mono);font-size:9.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bk-table-src{font-size:10px;color:var(--success);font-family:var(--font-mono);margin-bottom:4px}.bk-table table{width:100%;border-collapse:collapse;font-size:10px}.bk-table th{background:#ddd;border:.5px solid #999;padding:3px 5px;text-align:left;font-weight:700}.bk-table td{border:.5px solid #d4d4ce;padding:3px 5px;font-family:var(--font-mono);color:#555}.bk-table-dim{color:#bbb!important}.bk-divider{padding:6px 0}.bk-divider span{display:block;height:1px;background:#1a1a1a}.bk-spacer{background:repeating-linear-gradient(45deg,#f4f4f0,#f4f4f0 5px,#ecece6 5px,#ecece6 10px);border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--ink-3);min-height:14px}.props-panel{border-left:1px solid var(--hairline);padding:22px 18px;overflow-y:auto;background:#fcfcfa}.props{display:flex;flex-direction:column;gap:15px}.props-head{display:flex;align-items:center;gap:11px;padding-bottom:14px;border-bottom:1px solid var(--hairline)}.props-type{font-size:14.5px;font-weight:650;letter-spacing:-.01em}.props-type-sub{font-size:11.5px;color:var(--ink-3)}.pf{display:flex;flex-direction:column;gap:6px}.pf>label{font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3)}.pf input,.pf select,.pf textarea{border:1.5px solid var(--hairline);border-radius:var(--radius-sm);padding:8px 10px;font-size:13px;font-family:var(--font-sans);outline:none;color:var(--ink);background:var(--surface);width:100%;transition:border-color .15s}.pf textarea{resize:vertical;line-height:1.4}.pf textarea.pf-mono{font-family:var(--font-mono);font-size:12px}.pf input:focus,.pf select:focus,.pf textarea:focus{border-color:var(--ink)}.pf-bound{font-size:11px;color:var(--success)}.pf-bound code,.pf-hint code{font-family:var(--font-mono);font-size:10.5px}.pf-hint{font-size:11px;color:var(--ink-3);line-height:1.45}.pf-row{display:grid;grid-template-columns:1fr 1.2fr;gap:12px}.pf-checks{display:flex;gap:16px}.pf-checks label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2);cursor:pointer}.pf-checks input{accent-color:var(--ink)}.align-btns,.align-mini{display:inline-flex;border:1px solid var(--hairline-strong);border-radius:var(--radius-sm);overflow:hidden}.align-btn,.align-mini button{padding:7px 0;flex:1;min-width:32px;font-size:11px;border:none;background:var(--surface);color:var(--ink-2);cursor:pointer;border-right:1px solid var(--hairline);transition:all .12s}.align-btn:last-child,.align-mini button:last-child{border-right:none}.align-btn.active,.align-mini button.on{background:var(--ink);color:#fff}.align-mini{height:30px}.align-mini button{min-width:26px;padding:0 6px}.width-btns{display:flex;gap:6px}.width-btns button{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 5px 6px;border:1px solid var(--hairline-strong);background:var(--surface);border-radius:var(--radius-sm);cursor:pointer;transition:all .14s}.width-btns .wbar{width:100%;height:6px;border-radius:100px;background:#ecece6;overflow:hidden}.width-btns .wbar i{display:block;height:100%;background:var(--ink-3);border-radius:100px;transition:background .14s}.width-btns .wlabel{font-size:10px;font-weight:600;color:var(--ink-3);font-family:var(--font-mono);letter-spacing:-.02em;transition:color .14s}.width-btns button:hover{border-color:var(--ink-3)}.width-btns button:hover .wbar i{background:var(--ink-2)}.width-btns button.on{background:var(--ink);border-color:var(--ink)}.width-btns button.on .wbar{background:#ffffff38}.width-btns button.on .wbar i{background:#fff}.width-btns button.on .wlabel{color:#fff}.agg-btns{display:flex;flex-wrap:wrap;gap:6px}.agg-btns button{flex:1 1 calc(33.333% - 6px);min-width:72px;padding:8px 6px;font-size:12px;font-weight:550;border:1px solid var(--hairline-strong);background:var(--surface);color:var(--ink-2);border-radius:var(--radius-sm);cursor:pointer;transition:all .12s;font-family:var(--font-sans)}.agg-btns button:hover{border-color:var(--ink-3)}.agg-btns button.on{background:var(--ink);color:#fff;border-color:var(--ink)}.col-picker{display:flex;flex-wrap:wrap;gap:6px}.col-pick{border:1px solid var(--hairline-strong);border-radius:100px;padding:4px 11px;font-size:11.5px;font-family:var(--font-mono);background:var(--surface);color:var(--ink-2);cursor:pointer;transition:all .12s}.col-pick:hover{border-color:var(--ink-3)}.col-pick.on{background:var(--success-soft);color:var(--success);border-color:#bbf7d0}.col-labels{display:flex;flex-direction:column;gap:7px}.col-label-row{display:flex;gap:7px;align-items:center}.col-label-row input{flex:1}.props-delete{margin-top:4px;padding:9px;border:1px solid #fecaca;background:var(--danger-soft);color:var(--danger);border-radius:var(--radius-sm);font-size:13px;font-weight:550;font-family:var(--font-sans);cursor:pointer;transition:all .14s}.props-delete:hover{background:#fee2e2}.props-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;text-align:center;padding:30px 16px}.props-empty-icon{font-size:32px;color:var(--ink-3)}.props-empty p{font-size:13px;color:var(--ink-3);line-height:1.5}.builder-actions{display:flex;gap:10px;justify-content:flex-end;padding:18px 28px;border-top:1px solid var(--hairline)}.ss{position:relative;width:100%}.ss-control{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;border:1.5px solid var(--hairline);border-radius:var(--radius-sm);padding:8px 10px;font-size:13px;font-family:var(--font-sans);background:var(--surface);color:var(--ink);cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s}.ss-control:hover{border-color:var(--hairline-strong)}.ss.open .ss-control{border-color:var(--ink);box-shadow:0 0 0 3px #1313160f}.ss-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.ss-placeholder{color:var(--ink-3)}.ss-caret{color:var(--ink-3);flex-shrink:0;transition:transform .15s}.ss.open .ss-caret{transform:rotate(180deg)}.ss-disabled{opacity:.5;pointer-events:none}.ss-panel{position:fixed;z-index:200;background:var(--surface);border:1px solid var(--hairline-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-pop);overflow:hidden;display:flex;flex-direction:column;animation:confirm-fade .12s ease}.ss-search{display:flex;align-items:center;gap:8px;padding:9px 10px;border-bottom:1px solid var(--hairline);color:var(--ink-3)}.ss-search input{flex:1;width:100%;border:none;outline:none;background:transparent;font-size:13px;font-family:var(--font-sans);color:var(--ink)}.ss-search input::placeholder{color:var(--ink-3)}.ss-list{overflow-y:auto;padding:5px}.ss-list::-webkit-scrollbar{width:9px}.ss-list::-webkit-scrollbar-thumb{background:var(--hairline-strong);border-radius:100px;border:3px solid var(--surface)}.ss-opt{display:block;width:100%;text-align:left;border:none;background:transparent;padding:8px 10px;font-size:12.5px;font-family:var(--font-sans);color:var(--ink);cursor:pointer;border-radius:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .1s}.ss-opt:hover{background:#f4f4f0}.ss-opt.active{background:#ecece6}.ss-opt.selected{background:var(--accent-soft);color:var(--accent);font-weight:550}.ss-opt.selected.active{background:var(--accent-border)}.ss-empty{padding:16px 10px;font-size:12.5px;color:var(--ink-3);text-align:center}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1313166b;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;animation:confirm-fade .14s ease}@keyframes confirm-fade{0%{opacity:0}to{opacity:1}}.confirm-card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);padding:28px 28px 24px;width:392px;max-width:100%;text-align:center;animation:confirm-pop .22s cubic-bezier(.22,.8,.36,1)}@keyframes confirm-pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.confirm-icon{width:48px;height:48px;border-radius:50%;background:var(--danger-soft);color:var(--danger);display:flex;align-items:center;justify-content:center;margin:0 auto 14px;border:1px solid #fecaca}.confirm-card h3{font-size:17px;font-weight:650;letter-spacing:-.01em}.confirm-card p{font-size:13.5px;color:var(--ink-2);margin-top:7px;line-height:1.5}.confirm-card p strong{color:var(--ink);font-weight:600}.confirm-actions{display:flex;gap:10px;justify-content:center;margin-top:22px}.confirm-actions .btn-secondary{padding:10px 20px}.confirm-delete-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:10px;font-size:14px;font-weight:550;font-family:var(--font-sans);cursor:pointer;border:none;color:#fff;background:var(--danger);box-shadow:inset 0 1px #ffffff24,0 2px 8px #dc262647;transition:all .16s}.confirm-delete-btn:hover{background:#b91c1c;transform:translateY(-1px)}.confirm-delete-btn:active{transform:translateY(0)}.rp-flow{display:flex;flex-wrap:wrap;align-content:flex-start;gap:8px 8px}.rp-cell{flex-grow:1;min-width:0}.rp-heading{line-height:1.3;color:#111;word-break:break-word}.rp-paragraph{line-height:1.45;color:#333;word-break:break-word}.rp-total .rp-value{color:#b45309}.rp-calc-token{font-family:var(--font-mono);font-size:10px;color:#0f766e;background:#f0fdfa;padding:1px 6px;border-radius:4px}.rp-img-wrap{display:flex}.rp-img{max-height:64px;object-fit:contain;object-position:left center}.rp-img-ph{height:56px;display:flex;align-items:center;justify-content:center;background:#f4f4f2;border:1px dashed #d4d4ce;color:#a8a8a0;font-size:11px;font-weight:600;letter-spacing:.08em;border-radius:3px}@media (max-width: 1180px){.builder-body{grid-template-columns:220px 1fr 280px}.app-main.app-main-wide{padding:20px 18px}}@media (max-width: 720px){.app-header{padding:0 16px}.step-label{display:none}.step-connector{width:18px}.step-card{padding:22px}.summary-grid{grid-template-columns:1fr 1fr}.brand-sub{display:none}.builder-body{grid-template-columns:1fr}.palette,.props-panel{border:none;border-bottom:1px solid var(--hairline)}}.header-actions{display:flex;align-items:center;gap:10px}.header-save{white-space:nowrap}.loaded-tag{font-size:12px;font-weight:550;color:var(--ink-2);background:#fcfcfa;border:1px solid var(--hairline-strong);border-radius:100px;padding:5px 12px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:#1313166b;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:24px;animation:confirm-fade .14s ease}.lib-modal{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);width:620px;max-width:100%;max-height:80vh;display:flex;flex-direction:column;animation:confirm-pop .22s cubic-bezier(.22,.8,.36,1);overflow:hidden}.lib-header{display:flex;align-items:flex-start;justify-content:space-between;padding:22px 24px 16px;border-bottom:1px solid var(--hairline)}.lib-header h3{font-size:18px;font-weight:650;letter-spacing:-.02em}.lib-header p{font-size:13px;color:var(--ink-3);margin-top:3px}.lib-close{border:none;background:transparent;cursor:pointer;font-size:16px;color:var(--ink-3);width:30px;height:30px;border-radius:8px;transition:all .12s;flex-shrink:0}.lib-close:hover{background:#f4f4f0;color:var(--ink)}.lib-title{font-size:18px;font-weight:650;letter-spacing:-.02em}.lib-sub{font-size:13px;color:var(--ink-3);margin-top:4px;max-width:52ch}.val-modal{width:720px}.val-body{padding:18px 24px 22px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.val-inputs{display:grid;grid-template-columns:1fr 1fr;gap:14px}.val-drop{border:1px solid var(--hairline);border-radius:var(--radius-md);padding:12px;background:#fcfcfa;display:flex;flex-direction:column;gap:9px}.val-drop-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.val-drop-title{font-size:12.5px;font-weight:600;color:var(--ink)}.val-chip{font-size:11px;color:var(--ink-2);background:#eef2ff;border:1px solid #c7d2fe;border-radius:20px;padding:2px 9px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.val-chip-err{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.val-pick{align-self:flex-start;font-size:12.5px;font-weight:550;background:var(--surface);border:1px solid var(--hairline-strong);border-radius:7px;padding:6px 12px;cursor:pointer;color:var(--ink)}.val-pick:hover{background:#f0f0ec}.val-json-row{display:flex;align-items:center;gap:8px}.val-or{font-size:11px;color:var(--ink-3)}.val-json-text{width:100%;min-height:120px;resize:vertical;font-family:ui-monospace,Menlo,monospace;font-size:11.5px;line-height:1.5;border:1px solid var(--hairline-strong);border-radius:8px;padding:8px 10px;color:var(--ink);background:var(--surface)}.val-json-sm{min-height:76px}.val-run{align-self:flex-start;font-size:13.5px;font-weight:600;color:#fff;background:var(--ink);border:none;border-radius:9px;padding:9px 18px;cursor:pointer}.val-run:disabled{opacity:.4;cursor:default}.val-results{display:flex;flex-direction:column;gap:14px}.val-result-banner{font-size:13px;font-weight:550;border-radius:9px;padding:11px 14px;border:1px solid}.val-good{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.val-warn{background:#fffbeb;border-color:#fde68a;color:#b45309}.val-bad{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.val-meta{font-size:12.5px;color:var(--ink-2)}.val-meta code{background:#f4f4f0;border-radius:5px;padding:1px 6px;font-size:11.5px}.val-meta-dim{color:var(--ink-3)}.val-section{display:flex;flex-direction:column;gap:8px}.val-section-title{font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2);display:flex;align-items:center;gap:8px}.val-muted{color:var(--ink-3);font-weight:600}.val-count{font-size:11px;font-weight:600;color:var(--ink-3);background:#f4f4f0;border-radius:20px;padding:1px 8px}.val-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px}.val-item{display:flex;align-items:center;gap:7px;font-size:12.5px;padding:5px 9px;border-radius:7px;border:1px solid var(--hairline);background:var(--surface)}.val-item-mark{font-weight:700;width:14px;text-align:center;flex-shrink:0}.val-item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,Menlo,monospace;font-size:11.5px}.val-item.ok{background:#f0fdf4;border-color:#bbf7d0}.val-item.ok .val-item-mark{color:#16a34a}.val-item.miss{background:#fef2f2;border-color:#fecaca}.val-item.miss .val-item-mark{color:#dc2626}.val-item.ignored{background:#fafafa;color:var(--ink-3)}.val-item.ignored .val-item-mark{color:var(--ink-3)}.val-item-kind{margin-left:auto;font-size:10px;color:var(--ink-3);background:#f4f4f0;border-radius:4px;padding:1px 5px}.up-modal{width:640px}.up-header{padding:22px 24px 18px}.up-header-main{display:flex;gap:14px;align-items:flex-start}.up-header-icon{width:44px;height:44px;flex-shrink:0;border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-border)}.up-body{padding:4px 24px 8px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.up-dropzone{border:1.5px dashed var(--hairline-strong);border-radius:var(--radius-md);padding:30px 24px;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;transition:all .18s ease;background:#fcfcfa;outline:none}.up-dropzone:hover,.up-dropzone:focus-visible{border-color:var(--ink-3);background:#fafaf7}.up-dropzone.dragging{border-color:var(--accent);background:var(--accent-soft);transform:scale(1.004)}.up-dz-icon{width:56px;height:56px;border-radius:50%;background:var(--surface);border:1px solid var(--hairline);box-shadow:0 2px 10px #13131612;display:flex;align-items:center;justify-content:center;color:var(--ink-2);margin-bottom:12px;transition:all .18s ease}.up-dropzone:hover .up-dz-icon{color:var(--ink);transform:translateY(-1px)}.up-dropzone.dragging .up-dz-icon{color:var(--accent);border-color:var(--accent-border)}.up-dz-title{font-size:15px;font-weight:600;letter-spacing:-.01em}.up-dz-ext{color:var(--accent);font-weight:700}.up-dz-sub{font-size:13px;color:var(--ink-3)}.up-list{display:flex;flex-direction:column;gap:9px}.up-item{display:flex;align-items:stretch;gap:12px;padding:12px 14px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface);box-shadow:0 1px 2px #13131608;transition:border-color .15s,box-shadow .15s}.up-item:hover{box-shadow:0 2px 8px #1313160f}.up-status-dot{width:30px;height:30px;flex-shrink:0;border-radius:9px;display:flex;align-items:center;justify-content:center;background:#f4f4f0;color:var(--ink-3);font-weight:700;font-size:13px;margin-top:16px}.up-dot-done{background:var(--success-soft);color:var(--success)}.up-dot-error{background:#fef2f2;color:#dc2626}.up-dot-saving:after{content:"";width:14px;height:14px;border:2px solid var(--hairline-strong);border-top-color:var(--ink);border-radius:50%;animation:spin .6s linear infinite}.up-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.up-name-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}.up-name{width:100%;font-size:14px;font-weight:500;border:1.5px solid var(--hairline-strong);border-radius:8px;padding:8px 11px;color:var(--ink);background:var(--surface);transition:border-color .14s,box-shadow .14s}.up-name:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.up-name:disabled{background:#f6f6f3;border-color:var(--hairline);color:var(--ink-2)}.up-meta-row{display:flex;align-items:center;gap:10px}.up-file{font-size:11.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.up-msg{font-size:11.5px;font-weight:600;flex-shrink:0}.up-msg.ok{color:var(--success)}.up-msg.err{color:#dc2626;white-space:normal}.up-remove{border:none;background:transparent;color:var(--ink-3);cursor:pointer;font-size:14px;width:26px;height:26px;border-radius:7px;flex-shrink:0;align-self:flex-start;margin-top:14px;transition:all .12s}.up-remove:hover{background:#f4f4f0;color:var(--ink)}.up-done{border-color:var(--success-soft);background:#fbfefc}.up-error{border-color:#fecaca;background:#fffbfb}.up-json{border:1px solid var(--hairline);border-radius:11px;background:#fcfcfa;overflow:hidden}.up-json-toggle{width:100%;display:flex;align-items:center;gap:9px;padding:12px 14px;background:transparent;border:none;cursor:pointer;font-size:13px;font-weight:600;color:var(--ink);text-align:left}.up-json-caret{color:var(--ink-3);transition:transform .18s ease;flex-shrink:0}.up-json.open .up-json-caret{transform:rotate(90deg)}.up-json-opt{font-size:11px;font-weight:500;color:var(--ink-3)}.up-json-chip{margin-left:auto;font-size:11px;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-border);border-radius:20px;padding:2px 9px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.up-json-chip.err{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.up-json-body{padding:0 14px 14px;display:flex;flex-direction:column;gap:9px}.up-json-row{display:flex;align-items:center;gap:9px}.up-json-pick{font-size:12.5px;font-weight:550;background:var(--surface);border:1px solid var(--hairline-strong);border-radius:7px;padding:6px 12px;cursor:pointer;color:var(--ink)}.up-json-pick:hover{background:#f0f0ec}.up-json-or{font-size:11px;color:var(--ink-3)}.up-json-text{width:100%;min-height:90px;resize:vertical;font-family:ui-monospace,Menlo,monospace;font-size:11.5px;line-height:1.5;border:1px solid var(--hairline-strong);border-radius:8px;padding:9px 11px;color:var(--ink);background:var(--surface)}.up-json-text:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.up-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;border-top:1px solid var(--hairline);background:#fcfcfaee}.up-footer-info{font-size:12.5px;color:var(--ink-3)}.up-footer-actions{display:flex;align-items:center;gap:10px}.up-btn-ghost{font-size:13.5px;font-weight:550;background:transparent;border:1px solid var(--hairline-strong);border-radius:9px;padding:9px 16px;cursor:pointer;color:var(--ink-2);transition:all .12s}.up-btn-ghost:hover:not(:disabled){background:#f4f4f0;color:var(--ink)}.up-btn-ghost:disabled{opacity:.5;cursor:default}.up-btn-primary{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:#fff;background:var(--ink);border:none;border-radius:9px;padding:10px 18px;cursor:pointer;box-shadow:0 2px 8px #13131629;transition:transform .1s,box-shadow .15s,opacity .15s}.up-btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 14px #13131638}.up-btn-primary:disabled{opacity:.4;cursor:default;box-shadow:none}.up-btn-primary .spinner{width:14px;height:14px;border-width:2px}.up-modal.val-modal{width:720px}.val-modal .up-body{padding-bottom:22px;gap:16px}.val-inputs{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:stretch}.up-dropzone.val-dz{justify-content:center;padding:22px 18px}.up-dropzone.val-dz.loaded{border-style:solid;border-color:var(--accent-border);background:#fbfbff;align-items:stretch}.val-dz-loaded{display:flex;align-items:center;gap:12px;width:100%}.val-dz-badge{width:42px;height:42px;border-radius:11px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-border)}.val-dz-info{min-width:0;text-align:left}.val-dz-fname{font-size:13.5px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.val-dz-hint{font-size:11.5px;color:var(--ink-3);margin-top:1px}.val-json-card{border:1px solid var(--hairline);border-radius:var(--radius-md);background:#fcfcfa;padding:12px;display:flex;flex-direction:column;gap:9px}.val-json-card-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.val-json-card-icon{color:var(--ink-2);display:flex}.val-json-card-title{font-size:12.5px;font-weight:600;color:var(--ink)}.val-json-card .up-json-text{min-height:96px}.val-run-btn{align-self:flex-start}.topnav{display:flex;align-items:center;gap:8px;background:#ffffffdb;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--hairline);padding:0 18px;height:58px;position:sticky;top:0;z-index:20}.topnav-brand{display:flex;align-items:center;gap:10px;margin-right:16px;cursor:pointer}.topnav-mark{width:30px;height:30px;border-radius:9px;color:#fff;font-weight:700;font-size:12px;background:linear-gradient(140deg,#4338ca,#6366f1 60%,#818cf8);display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #4f46e547}.topnav-name{font-size:15px;font-weight:650;letter-spacing:-.01em}.topnav-tabs{display:flex;align-items:center;gap:2px;flex-wrap:wrap}.topnav-search{margin-left:auto;display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border:1px solid var(--hairline);border-radius:9px;background:#f8fafc;color:var(--ink-2);font-size:13px;cursor:pointer;transition:border-color .12s}.topnav-search:hover{border-color:#94a3b8}.topnav-search kbd{font-family:var(--font-mono);font-size:11px;background:#e2e8f0;color:var(--ink-3);padding:1px 5px;border-radius:5px}.gs-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a6b;display:flex;justify-content:center;align-items:flex-start;padding-top:12vh;z-index:60}.gs-card{width:min(640px,92vw);background:#fff;border-radius:14px;box-shadow:0 24px 60px #02061752;overflow:hidden;display:flex;flex-direction:column;max-height:70vh}.gs-input{border:none;border-bottom:1px solid var(--hairline);padding:16px 18px;font-size:16px;outline:none}.gs-results{overflow-y:auto;padding:6px}.gs-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:9px 12px;border:none;background:none;border-radius:8px;cursor:pointer}.gs-row:hover{background:#f1f5f9}.gs-chip{font-size:10px;font-weight:700;padding:2px 8px;border-radius:999px;flex-shrink:0}.gs-chip-report{background:#eef2ff;color:#4338ca}.gs-chip-ensayo{background:#ecfeff;color:#0e7490}.gs-chip-cliente{background:#fef3c7;color:#b45309}.gs-chip-formula{background:#f0fdf4;color:#15803d}.gs-row-title{font-size:14px;font-weight:600;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gs-row-sub{font-size:12px;color:var(--ink-3);margin-left:auto;white-space:nowrap;flex-shrink:0}.gs-empty{padding:22px;text-align:center;color:var(--ink-3);font-size:14px}.gs-foot{padding:8px 14px;border-top:1px solid var(--hairline);font-size:11px;color:var(--ink-3)}.topnav-tab{display:flex;align-items:center;gap:7px;padding:7px 12px;border:none;background:none;border-radius:9px;font-family:inherit;font-size:13.5px;font-weight:500;color:var(--ink-2);cursor:pointer;transition:background .14s,color .14s}.topnav-tab:hover{background:#f4f4f0}.topnav-tab svg{flex-shrink:0}.topnav-tab.t-home svg{color:#6b6b66}.topnav-tab.t-generar svg{color:#534ab7}.topnav-tab.t-validar svg{color:#0f6e56}.topnav-tab.t-subir svg{color:#185fa5}.topnav-tab.t-biblioteca svg{color:#854f0b}.topnav-tab.active.t-home{background:#f1efe8;color:#2c2c2a}.topnav-tab.active.t-generar{background:#eeedfe;color:#3c3489}.topnav-tab.active.t-generar svg{color:#3c3489}.topnav-tab.active.t-validar{background:#e1f5ee;color:#085041}.topnav-tab.active.t-validar svg{color:#085041}.topnav-tab.active.t-subir{background:#e6f1fb;color:#0c447c}.topnav-tab.active.t-subir svg{color:#0c447c}.topnav-tab.active.t-biblioteca{background:#faeeda;color:#633806}.topnav-tab.active.t-biblioteca svg{color:#633806}.workspace{flex:1;display:flex;flex-direction:column;min-height:0}.hub{flex:1;padding:44px 28px 64px}.hub-inner{max-width:1100px;margin:0 auto}.hub-eyebrow{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-weight:600;margin-bottom:9px}.hub-title{font-size:28px;font-weight:680;letter-spacing:-.02em;margin-bottom:7px}.hub-sub{font-size:15px;color:var(--ink-2);margin-bottom:30px}.hub-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:4px 0 26px}.hub-stat{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:14px 16px;background:var(--surface-2, #f8fafc);border:1px solid var(--hairline);border-radius:12px;text-align:left}button.hub-stat{cursor:pointer;transition:border-color .12s,transform .12s}button.hub-stat:hover{border-color:#94a3b8;transform:translateY(-1px)}.hub-stat-num{font-size:26px;font-weight:720;letter-spacing:-.02em;line-height:1.1}.hub-stat-label{font-size:12px;font-weight:600;color:var(--ink-2)}.hub-stat-sub{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:5px;font-size:11px;color:var(--ink-3)}.hub-pill{font-size:10.5px;font-weight:700;padding:1px 8px;border-radius:999px}.hub-pill.signed{background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0}.hub-stat-wide{grid-column:1 / -1}.hub-stat-methods{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.hub-method{font-size:11px;padding:3px 9px;border-radius:999px;background:#eef2ff;color:#4338ca}.hub-method b{font-weight:700}@media (max-width: 720px){.hub-stats{grid-template-columns:1fr 1fr}}.hub-cards{display:grid;grid-template-columns:1fr 1fr;gap:16px}.hub-card{text-align:left;background:var(--surface);border:1px solid var(--hairline);border-top-width:3px;border-radius:16px;padding:20px;cursor:pointer;display:flex;flex-direction:column;box-shadow:0 1px 2px #13131608;transition:transform .12s,box-shadow .16s,border-color .14s}.hub-card:hover{transform:translateY(-3px);box-shadow:0 10px 28px #1313161a}.hub-card-icon{width:46px;height:46px;border-radius:13px;display:flex;align-items:center;justify-content:center;margin-bottom:14px}.hub-card-title{font-size:16.5px;font-weight:600;display:flex;align-items:center;justify-content:space-between;margin-bottom:5px;color:var(--ink)}.hub-card-arrow{color:var(--ink-3);display:flex;transition:transform .14s}.hub-card:hover .hub-card-arrow{transform:translate(3px)}.hub-card-desc{font-size:13.5px;line-height:1.55;color:var(--ink-2)}.hub-card.t-generar{border-top-color:#7f77dd}.hub-card.t-generar:hover{border-color:#afa9ec;border-top-color:#7f77dd}.hub-card.t-generar .hub-card-icon{background:#eeedfe;color:#3c3489}.hub-card.t-validar{border-top-color:#5dcaa5}.hub-card.t-validar:hover{border-color:#9fe1cb;border-top-color:#5dcaa5}.hub-card.t-validar .hub-card-icon{background:#e1f5ee;color:#085041}.hub-card.t-subir{border-top-color:#85b7eb}.hub-card.t-subir:hover{border-color:#b5d4f4;border-top-color:#85b7eb}.hub-card.t-subir .hub-card-icon{background:#e6f1fb;color:#0c447c}.hub-card.t-biblioteca{border-top-color:#ef9f27}.hub-card.t-biblioteca:hover{border-color:#fac775;border-top-color:#ef9f27}.hub-card.t-biblioteca .hub-card-icon{background:#faeeda;color:#633806}.hub-recent{margin-top:32px;padding-top:22px;border-top:1px solid var(--hairline)}.hub-recent-label{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:600;margin-bottom:10px}.hub-recent-row{width:100%;text-align:left;display:flex;align-items:center;gap:11px;padding:11px 12px;border:1px solid transparent;border-radius:11px;background:none;cursor:pointer;font-family:inherit;font-size:14px;color:var(--ink-2);transition:background .12s,border-color .12s}.hub-recent-row:hover{background:var(--surface);border-color:var(--hairline)}.hub-recent-icon{color:var(--accent);display:flex}.hub-recent-name{flex:1;color:var(--ink);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hub-badge{font-size:11.5px;font-weight:600;padding:2px 10px;border-radius:20px}.hub-badge.draft{background:#faeeda;color:#854f0b}.hub-badge.gen{background:#e1f5ee;color:#0f6e56}.generar{flex:1;display:flex;flex-direction:column;min-height:0}.generar-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 28px;border-bottom:1px solid var(--hairline);background:#ffffff8c}.generar-actions{display:flex;align-items:center;gap:10px}.generar-content{flex:1;padding:36px 24px;max-width:880px;margin:0 auto;width:100%}.generar-content.wide{max-width:1720px;padding:24px 40px}.tool-page{flex:1;padding:32px 24px 56px;display:flex;justify-content:center;align-items:flex-start}.lib-modal.embedded{box-shadow:var(--shadow-card);max-height:none;width:760px}.lib-modal.embedded.up-modal{width:720px}.lib-modal.embedded.up-modal.val-modal{width:840px}.lib-modal.embedded .lib-list,.lib-modal.embedded .up-body,.lib-modal.embedded .val-body{max-height:none;overflow:visible}@media (max-width: 720px){.hub-cards{grid-template-columns:1fr}.topnav-name{display:none}}.lib-toolbar{display:flex;flex-direction:column;gap:10px;padding:14px 16px;border-bottom:1px solid var(--hairline);background:#fcfcfa}.lib-search-wrap{display:flex;align-items:center;gap:8px;border:1.5px solid var(--hairline);border-radius:var(--radius-sm);padding:8px 11px;background:var(--surface);transition:border-color .15s}.lib-search-wrap:focus-within{border-color:var(--ink)}.lib-search-wrap svg{color:var(--ink-3);flex-shrink:0}.lib-search{flex:1;border:none;outline:none;background:transparent;font-size:13px;font-family:var(--font-sans);color:var(--ink)}.lib-search::placeholder{color:var(--ink-3)}.lib-status-tabs{display:flex;gap:5px}.lib-sort{border:1px solid var(--hairline-strong);border-radius:9px;padding:7px 10px;font-size:12.5px;font-family:inherit;color:var(--ink);background:var(--surface);cursor:pointer}.lib-sort:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.lib-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 8px;font-size:12px;font-weight:550;font-family:var(--font-sans);border:1px solid var(--hairline-strong);border-radius:8px;background:var(--surface);color:var(--ink-2);cursor:pointer;transition:all .14s}.lib-tab:hover{border-color:var(--ink-3);color:var(--ink)}.lib-tab.active{background:var(--ink);border-color:var(--ink);color:#fff}.lib-tab.active .lib-tab-count{background:#ffffff38;color:#fff}.lib-tab-count{font-size:10.5px;font-weight:700;padding:2px 6px;border-radius:100px;background:var(--bg);color:var(--ink-3);transition:all .14s}.lib-list{overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}.lib-empty{padding:50px 20px;text-align:center;color:var(--ink-3);font-size:13.5px;display:flex;align-items:center;justify-content:center;gap:10px}.lib-item{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--hairline);border-radius:var(--radius-md);padding:13px 16px;transition:all .14s}.lib-item:hover{border-color:var(--hairline-strong);box-shadow:0 3px 12px #1313160d}.lib-item.current{border-color:var(--amber);background:#fffaf0}.lib-item-main{min-width:0;flex:1}.lib-item-top{display:flex;align-items:center;gap:9px}.lib-item-name{font-size:14.5px;font-weight:600;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-item-meta{font-size:11.5px;color:var(--ink-3);margin-top:3px}.lib-badge{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2.5px 8px;border-radius:6px;white-space:nowrap}.lib-badge.draft{background:#fffbeb;color:#b45309}.lib-badge.gen{background:#f0fdf4;color:#16a34a}.lib-version{font-size:11px;font-weight:600;color:var(--ink-3);font-family:var(--font-mono)}.lib-appr{font-size:10.5px;font-weight:700;padding:1px 9px;border-radius:999px;border:1px solid transparent;cursor:pointer}.lib-appr-draft{background:#f1f5f9;color:#475569;border-color:#e2e8f0}.lib-appr-review{background:#fffbeb;color:#b45309;border-color:#fde68a}.lib-appr-approved{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}.lib-appr-signed{background:#f0fdf4;color:#15803d;border-color:#bbf7d0}.appr-stepper{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 12px}.appr-step{font-size:11px;font-weight:600;padding:3px 10px;border-radius:999px;background:#f1f5f9;color:#94a3b8;border:1px solid #e2e8f0}.appr-step.done{background:#ecfdf5;color:#15803d;border-color:#bbf7d0}.appr-step.current{outline:2px solid #34d399;outline-offset:1px}.lib-item-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.lib-load{padding:7px 16px;font-size:13px}.lib-del{border:1px solid var(--hairline-strong);background:var(--surface);width:32px;height:32px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ink-3);transition:all .12s}.lib-del:hover{background:var(--danger-soft);border-color:#fecaca;color:var(--danger)}.lib-json-btns{display:flex;align-items:center;gap:2px;background:var(--bg);border:1px solid var(--hairline-strong);border-radius:8px;padding:2px}.lib-json-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;border:none;background:transparent;cursor:pointer;color:var(--ink-3);transition:all .12s}.lib-json-btn:hover{background:var(--surface);color:var(--accent)}.lib-json-btn.copied{color:var(--success)}.lib-json-btn.loading{opacity:.5;cursor:not-allowed}.lib-json-btn:disabled{cursor:not-allowed}.lib-actions-divider{width:1px;height:20px;background:var(--hairline-strong)}.dialog-cancel{margin-top:12px;border:none;background:transparent;color:var(--ink-3);font-size:13px;font-family:var(--font-sans);cursor:pointer}.dialog-cancel:hover{color:var(--ink);text-decoration:underline}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:120;padding:12px 20px;border-radius:10px;font-size:13.5px;font-weight:550;color:#fff;box-shadow:var(--shadow-pop);animation:toast-in .25s cubic-bezier(.22,.8,.36,1);max-width:90vw}.toast-ok{background:#16a34a}.toast-error{background:var(--danger)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}.col-editor{display:flex;flex-direction:column;gap:9px}.col-edit{border:1px solid var(--hairline);border-radius:var(--radius-sm);padding:8px;background:#fcfcfa;display:flex;flex-direction:column;gap:7px}.col-edit-l1{display:flex;align-items:center;gap:7px}.col-edit-l2{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.col-move{display:flex;flex-direction:column;gap:2px}.col-move button{width:20px;height:14px;border:1px solid var(--hairline-strong);background:var(--surface);border-radius:4px;font-size:7px;color:var(--ink-2);cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}.col-move button:hover:not(:disabled){background:#f0f0ec;color:var(--ink)}.col-move button:disabled{opacity:.35;cursor:default}.col-edit-label{flex:1;min-width:0}.col-bold{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2);cursor:pointer;white-space:nowrap}.col-bold input{accent-color:var(--ink)}.col-edit-width{display:flex;align-items:center;gap:8px;padding-top:7px;border-top:1px dashed var(--hairline)}.col-width-range{flex:1;min-width:0;accent-color:var(--ink);cursor:pointer}.col-width-pct{font-size:11px;color:var(--ink-2);font-weight:600;min-width:34px;text-align:right;font-variant-numeric:tabular-nums}.col-width-auto{font-size:10.5px;color:var(--ink-2);background:var(--surface);border:1px solid var(--hairline-strong);border-radius:5px;padding:2px 7px;cursor:pointer}.col-width-auto:hover{background:#f0f0ec;color:var(--ink)}.col-edit-total{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:7px;border-top:1px dashed var(--hairline)}.col-total-lbl{font-size:11px;color:var(--ink-3);font-weight:600;white-space:nowrap}.col-total-mode{font-size:12px;color:var(--ink);background:var(--surface);border:1px solid var(--hairline-strong);border-radius:6px;padding:4px 8px;cursor:pointer}.col-total-field{flex:1 1 100%;min-width:0}.col-total-fieldsel{width:100%}.color-pick{display:flex;align-items:center;gap:6px}.color-pick-label{font-size:11px;color:var(--ink-3);font-weight:600}.color-swatch{position:relative;width:28px;height:22px;border-radius:6px;border:1px solid var(--hairline-strong);cursor:pointer;padding:0;background:var(--surface);display:flex;align-items:center;justify-content:center;transition:box-shadow .12s,border-color .12s}.color-swatch:hover{border-color:var(--ink-3)}.color-swatch.open{box-shadow:0 0 0 3px #1313161a;border-color:var(--ink)}.color-swatch-empty{color:var(--ink-3);font-size:12px}.color-clear{border:none;background:transparent;color:var(--ink-3);cursor:pointer;font-size:14px;line-height:1;width:16px;height:16px;border-radius:4px}.color-clear:hover{background:var(--danger-soft);color:var(--danger)}.color-pop{position:fixed;z-index:210;width:224px;background:var(--surface);border:1px solid var(--hairline-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-pop);padding:12px;display:flex;flex-direction:column;gap:10px;animation:confirm-fade .12s ease}.color-pop-grid{display:grid;grid-template-columns:repeat(11,1fr);gap:5px}.color-cell{width:100%;aspect-ratio:1;border-radius:5px;cursor:pointer;border:1px solid rgba(19,19,22,.12);padding:0;transition:transform .1s}.color-cell:hover{transform:scale(1.18)}.color-cell.on{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--ink)}.color-pop-custom{display:flex;align-items:center;gap:7px}.color-pop-prev{width:24px;height:24px;border-radius:6px;flex-shrink:0;border:1px solid var(--hairline-strong);background-image:linear-gradient(45deg,#eee 25%,transparent 25%,transparent 75%,#eee 75%),linear-gradient(45deg,#eee 25%,transparent 25%,transparent 75%,#eee 75%);background-size:8px 8px;background-position:0 0,4px 4px}.color-hex{flex:1;min-width:0;border:1.5px solid var(--hairline);border-radius:var(--radius-sm);padding:6px 9px;font-size:12.5px;font-family:var(--font-mono);outline:none;color:var(--ink);background:var(--surface)}.color-hex:focus{border-color:var(--ink)}.color-native{position:relative;width:30px;height:30px;border:1px solid var(--hairline-strong);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink-2);flex-shrink:0;overflow:hidden}.color-native:hover{border-color:var(--ink-3);color:var(--ink)}.color-native input[type=color]{position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;width:140%;height:140%;border:none;padding:0;cursor:pointer;opacity:0}.color-pop-clear{border:1px solid var(--hairline-strong);background:var(--surface);color:var(--ink-2);border-radius:var(--radius-sm);padding:7px;font-size:12.5px;font-weight:550;cursor:pointer;font-family:var(--font-sans);transition:all .12s}.color-pop-clear:hover{background:#fafaf7;color:var(--ink)}.band-layout-pick{display:flex;gap:5px}.band-layout-btn{flex:1;display:flex;align-items:center;justify-content:center;padding:7px 4px;border:1px solid var(--hairline-strong);border-radius:8px;background:var(--surface);color:var(--ink-3);cursor:pointer;transition:all .14s}.band-layout-btn:hover{border-color:var(--ink-3);color:var(--ink)}.band-layout-btn.active{background:var(--ink);border-color:var(--ink);color:#fff}.slot-edit{border:1px solid var(--hairline);border-radius:var(--radius-sm);padding:8px;background:#fcfcfa;display:flex;flex-direction:column;gap:6px}.slot-edit-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.slot-edit-pos{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3)}.seg-mini{display:inline-flex;border:1px solid var(--hairline-strong);border-radius:7px;overflow:hidden}.seg-mini button{padding:3px 7px;font-size:11px;font-weight:550;border:none;background:var(--surface);color:var(--ink-2);cursor:pointer;border-right:1px solid var(--hairline);transition:all .12s;font-family:var(--font-sans)}.seg-mini button:last-child{border-right:none}.seg-mini button.on{background:var(--ink);color:#fff}.slot-row{display:flex;flex-direction:column;gap:5px;border:1px solid var(--hairline);border-radius:6px;padding:6px;background:#fff}.slot-row+.slot-row{margin-top:4px}.slot-row-main{display:flex;align-items:center;gap:5px}.slot-row-val{flex:1;min-width:0}.slot-input-wrap{display:flex;align-items:center;gap:4px}.slot-input-wrap .slot-input{flex:1}.slot-input{width:100%}.slot-menu-wrap{position:relative;flex-shrink:0}.slot-plus-btn{width:28px;height:28px;border-radius:7px;border:1px solid var(--hairline-strong);background:var(--surface);color:var(--ink-2);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .14s;flex-shrink:0}.slot-plus-btn:hover{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent)}.slot-menu{position:absolute;right:0;top:calc(100% + 5px);background:var(--surface);border:1px solid var(--hairline-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-pop);min-width:212px;z-index:50;overflow:hidden;animation:dropIn .13s cubic-bezier(.22,.8,.36,1)}@keyframes dropIn{0%{opacity:0;transform:translateY(-5px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.slot-menu-section{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);padding:10px 12px 6px}.slot-menu-item{display:flex;align-items:center;gap:9px;width:100%;padding:7px 12px;background:none;border:none;text-align:left;font-family:var(--font-sans);font-size:13px;color:var(--ink);cursor:pointer;transition:background .1s}.slot-menu-item:hover{background:#f4f4f0}.slot-menu-code{font-family:var(--font-mono);font-size:10.5px;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-border);border-radius:4px;padding:1px 6px;white-space:nowrap;flex-shrink:0}.slot-menu-divider{height:1px;background:var(--hairline);margin:3px 0}.slot-menu-addrow{color:var(--ink-2);font-weight:550}.slot-menu-addrow:hover{background:var(--accent-soft);color:var(--accent)}.slot-bold{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2);cursor:pointer}.slot-bold input{accent-color:var(--ink)}.bk-chart{display:flex;align-items:center;gap:10px;background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border-radius:6px;padding:10px 12px;min-height:58px}.bk-chart-dual{background:linear-gradient(135deg,#fdf4ff,#fae8ff)}.bk-chart-icon{flex-shrink:0}.bk-chart-info{display:flex;flex-direction:column;gap:3px;min-width:0}.bk-chart-title{font-size:12px;font-weight:600;color:#0c4a6e}.bk-chart-dual .bk-chart-title{color:#701a75}.bk-chart-src{font-size:10px;font-family:var(--font-mono);color:#0369a1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bk-chart-dual .bk-chart-src{color:#86198f}.chart-type-btns{display:flex;gap:6px;flex-wrap:wrap}.chart-type-btns button{flex:1;min-width:60px;padding:7px 5px;font-size:11.5px;font-weight:550;border:1px solid var(--hairline-strong);background:var(--surface);color:var(--ink-2);border-radius:var(--radius-sm);cursor:pointer;transition:all .12s;font-family:var(--font-sans)}.chart-type-btns button:hover{border-color:var(--ink-3)}.chart-type-btns button.on{background:var(--ink);color:#fff;border-color:var(--ink)}.rp-chart{width:100%;display:flex;flex-direction:column;overflow:hidden;border-radius:4px}.rp-chart-dual{gap:2px}.rp-chart-divider{height:1px;background:var(--hairline-strong);flex-shrink:0}.rp-chart-svg{width:100%;height:auto;display:block}.rp-chart-empty{display:flex;align-items:center;justify-content:center;height:100%;font-size:10.5px;color:var(--ink-3);font-style:italic}.btn-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-sm);border:1px solid var(--hairline-strong);background:var(--surface);color:var(--ink-2);cursor:pointer;transition:all .15s;flex-shrink:0}.btn-icon:hover{border-color:var(--ink-3);color:var(--ink);background:#fafaf7}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.header-name{display:flex;align-items:center;gap:7px}.header-name-btn{display:flex;align-items:center;gap:6px;background:none;border:1px solid transparent;border-radius:var(--radius-sm);padding:5px 9px;cursor:pointer;font-family:inherit;transition:all .15s;max-width:240px}.header-name-btn:hover{border-color:var(--hairline-strong);background:#fafaf7}.header-name-text{font-size:13px;font-weight:560;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.header-name-btn svg{color:var(--ink-3);flex-shrink:0}.header-name-input{font-size:13px;font-weight:560;color:var(--ink);border:1px solid var(--accent-border);border-radius:var(--radius-sm);padding:5px 9px;background:#fff;outline:none;width:200px;font-family:inherit;box-shadow:0 0 0 3px #4f46e514}.loaded-badge{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:3px 8px;border-radius:100px;background:var(--success-soft);color:var(--success);border:1px solid #bbf7d0}.slot-row-del{width:22px;height:22px;border-radius:5px;border:1px solid var(--hairline-strong);background:none;color:var(--ink-3);cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .12s}.slot-row-del:hover{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.slot-add-row{font-size:11px;font-weight:600;padding:3px 8px;border:1px dashed var(--hairline-strong);border-radius:6px;background:none;color:var(--ink-3);cursor:pointer;transition:all .12s}.slot-add-row:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.rp-band-row{display:block;line-height:1.4}.valx{flex:1;width:100%;max-width:1760px;margin:0 auto;padding:26px 36px 56px}.valx-head{display:flex;gap:14px;align-items:flex-start;margin-bottom:20px}.valx-head-icon{width:44px;height:44px;flex-shrink:0;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#0f6e56;background:#e1f5ee;border:1px solid #9FE1CB}.valx-title{font-size:19px;font-weight:650;letter-spacing:-.01em}.valx-sub{font-size:13px;color:var(--ink-3);margin-top:4px;max-width:70ch}.valx-inputs{display:grid;grid-template-columns:300px 1fr;gap:14px;margin-bottom:18px}.valx-dz{border:1.5px dashed var(--hairline-strong);border-radius:var(--radius-md);background:#fcfcfa;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:20px;cursor:pointer;transition:all .15s;min-height:132px}.valx-dz:hover{border-color:var(--ink-3);background:#fafaf7}.valx-dz.dragging{border-color:#1d9e75;background:#e1f5ee}.valx-dz.loaded{border-style:solid;border-color:#9fe1cb;background:#fbfffd;align-items:stretch;justify-content:center}.valx-dz-badge{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#0f6e56;background:#e1f5ee;border:1px solid #9FE1CB}.valx-dz-badge.big{width:46px;height:46px;margin-bottom:6px}.valx-dz-loaded{display:flex;align-items:center;gap:11px}.valx-dz-info{display:flex;flex-direction:column;min-width:0}.valx-dz-fname{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.valx-dz-hint{font-size:11px;color:var(--ink-3)}.valx-dz-t{font-size:14px;font-weight:500}.valx-dz-t b{color:#0f6e56}.valx-dz-s{font-size:12px;color:var(--ink-3)}.valx-json{border:1px solid var(--hairline);border-radius:var(--radius-md);background:#fcfcfa;padding:12px;display:flex;flex-direction:column;gap:9px}.valx-json-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.valx-json-ic{color:var(--ink-2);display:flex}.valx-json-t{font-size:13px;font-weight:600}.valx-chip{font-size:11px;color:var(--ink-2);background:#eef2ff;border:1px solid #c7d2fe;border-radius:20px;padding:2px 9px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.valx-chip.err{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.valx-json-pick{margin-left:auto;font-size:12.5px;font-weight:550;background:var(--surface);border:1px solid var(--hairline-strong);border-radius:7px;padding:6px 12px;cursor:pointer;color:var(--ink)}.valx-json-pick:hover{background:#f0f0ec}.valx-json-text{width:100%;min-height:96px;resize:vertical;font-family:var(--font-mono);font-size:11.5px;line-height:1.5;border:1px solid var(--hairline-strong);border-radius:8px;padding:9px 11px;color:var(--ink);background:var(--surface)}.valx-json-text:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.valx-run{grid-column:1 / -1;justify-self:start;font-size:13.5px;font-weight:600;color:#fff;background:#0f6e56;border:none;border-radius:9px;padding:10px 20px;cursor:pointer;box-shadow:0 2px 8px #0f6e5640}.valx-run:disabled{opacity:.4;cursor:default;box-shadow:none}.valx-banner{font-size:13.5px;font-weight:550;border-radius:10px;padding:12px 16px;border:1px solid;margin-bottom:16px}.valx-banner.good{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.valx-banner.warn{background:#fffbeb;border-color:#fde68a;color:#b45309}.valx-banner.bad{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.valx-banner.info{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.valx-subprev{margin-top:14px;border-top:1px dashed var(--hairline-strong);padding-top:12px}.valx-subprev-item{margin-top:10px}.valx-subprev-name{display:block;font-size:11.5px;font-weight:600;color:var(--ink-2);margin-bottom:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.valx-metrics{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:18px}.metric{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-md);padding:13px 16px;display:flex;flex-direction:column;gap:2px}.metric-n{font-size:26px;font-weight:680;letter-spacing:-.02em;line-height:1}.metric-l{font-size:12px;color:var(--ink-3)}.metric-miss .metric-n{color:#dc2626}.metric-info .metric-n{color:#185fa5}.valx-main{display:grid;grid-template-columns:360px 1fr;gap:18px;align-items:start}.valx-preview{position:sticky;top:74px;background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);padding:14px}.valx-preview-head{font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2);margin-bottom:12px}.valx-preview-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;font-size:11px;color:var(--ink-3)}.valx-preview-legend span{display:flex;align-items:center;gap:5px}.lg{width:11px;height:11px;border-radius:3px;display:inline-block}.lg-static{background:#e2e8f0}.lg-field{background:#dbeafe}.lg-component{background:#e9d5ff}.lg-miss{background:#fee2e2;border:1.5px solid #ef4444}.valx-preview-miss-note{display:flex;align-items:center;gap:7px;margin:12px 0 0;padding:8px 10px;font-size:12px;font-weight:550;color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:8px}.wf{display:flex;flex-direction:column;gap:10px;max-height:520px;overflow-y:auto;padding-right:4px}.wf-band-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);margin-bottom:4px}.wf-area{position:relative;background:#fafafa;border:1px solid var(--hairline);border-radius:5px;overflow:hidden}.wf-el{position:absolute;font-size:8px;line-height:1;border-radius:2px;padding:0 2px;display:flex;align-items:center;overflow:hidden}.wf-el-txt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.valx-diff{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.dcol{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden}.dcol-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid var(--hairline)}.dcol-title{font-size:13px;font-weight:600}.dcol-count{font-size:12px;font-weight:600;padding:1px 9px;border-radius:20px;background:#f1f1ec;color:var(--ink-2)}.dcol-ok .dcol-head{background:#f0fdf4}.dcol-ok .dcol-count{background:#dcfce7;color:#15803d}.dcol-miss .dcol-head{background:#fef2f2}.dcol-miss .dcol-count{background:#fee2e2;color:#b91c1c}.dcol-info .dcol-head{background:#f5f7ff}.dcol-info .dcol-count{background:#e0e7ff;color:#3730a3}.dcol-body{display:flex;flex-direction:column;gap:5px;padding:10px;max-height:460px;overflow-y:auto}.dcol-empty{font-size:12.5px;color:var(--ink-3);padding:10px 4px}.fchip{display:flex;align-items:flex-start;gap:8px;padding:6px 9px;border-radius:8px;border:1px solid var(--hairline);background:#fcfcfa}.fchip-mark{font-weight:700;font-size:12px;flex-shrink:0;line-height:1.5}.fchip-body{display:flex;flex-direction:column;min-width:0}.fchip-name{font-family:var(--font-mono);font-size:12px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fchip-meta{font-size:11px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fchip-ok{background:#f0fdf4;border-color:#bbf7d0}.fchip-ok .fchip-mark{color:#16a34a}.fchip-miss{background:#fef2f2;border-color:#fecaca}.fchip-miss .fchip-mark{color:#dc2626}.fchip-info{background:var(--surface)}.fchip-info .fchip-mark{color:var(--ink-3)}.valx-params{margin-top:20px;background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);padding:16px 18px}.valx-params-head{font-size:13px;font-weight:600;margin-bottom:12px}.valx-params-note{display:block;font-size:12px;font-weight:400;color:var(--ink-3);margin-top:3px}.valx-params-note code{font-family:var(--font-mono);background:#f4f4f0;border-radius:4px;padding:0 4px;font-size:11px}.valx-params-grid{display:flex;flex-wrap:wrap;gap:8px}.pchip{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:12px;color:var(--ink);background:#f6f6f3;border:1px solid var(--hairline);border-radius:8px;padding:5px 10px}.pchip em{font-family:var(--font-sans);font-style:normal;font-size:10.5px;color:var(--ink-3)}.pchip.ignored{opacity:.65}@media (max-width: 1180px){.valx-metrics{grid-template-columns:repeat(3,1fr)}.valx-main{grid-template-columns:1fr}.valx-preview{position:static}.valx-diff{grid-template-columns:1fr}}.valx-preview-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.valx-preview-expand{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:550;color:var(--ink-2);background:var(--surface);border:1px solid var(--hairline-strong);border-radius:7px;padding:4px 9px;cursor:pointer;transition:all .12s}.valx-preview-expand:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.valx-preview-canvas{display:block;width:100%;text-align:left;border:1px solid transparent;border-radius:var(--radius-md);padding:6px;margin:0 -6px;background:none;cursor:zoom-in;position:relative;transition:background .12s,border-color .12s}.valx-preview-canvas:hover{background:#fafaf7;border-color:var(--hairline)}.valx-preview-hint{position:absolute;bottom:12px;left:50%;transform:translate(-50%);display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:550;color:#fff;background:#131316c7;border-radius:20px;padding:5px 12px;opacity:0;transition:opacity .14s;pointer-events:none}.valx-preview-canvas:hover .valx-preview-hint{opacity:1}.rpm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#1313168c;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:32px;animation:confirm-fade .14s ease}.rpm-modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);width:min(840px,100%);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;animation:confirm-pop .2s cubic-bezier(.22,.8,.36,1)}.rpm-head{display:flex;align-items:center;gap:12px;padding:15px 20px;border-bottom:1px solid var(--hairline)}.rpm-head-text{display:flex;flex-direction:column;min-width:0;flex:1}.rpm-title{font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rpm-subtitle{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rpm-pos{font-size:12px;color:var(--ink-2);background:#f1f1ec;border-radius:20px;padding:3px 11px;flex-shrink:0}.rpm-close{border:none;background:transparent;font-size:17px;color:var(--ink-3);cursor:pointer;width:32px;height:32px;border-radius:8px;flex-shrink:0}.rpm-close:hover{background:#f4f4f0;color:var(--ink)}.rpm-body{padding:24px;overflow:auto;background:#f1f1ee;display:flex;flex-direction:column;align-items:center;gap:22px}.rpm-subsection{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%}.rpm-sub-label{align-self:center;font-size:13px;font-weight:650;color:var(--ink-2);background:#fff;border:1px solid var(--hairline);border-radius:999px;padding:4px 14px}.rpm-page{background:#fff;box-shadow:0 4px 20px #1313161f;border-radius:6px;padding:18px}.rpm-body .wf{max-height:none;overflow:visible}.rpm-empty{color:var(--ink-3);font-size:14px;padding:40px;text-align:center}.rpm-nav{position:fixed;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;border:1px solid var(--hairline);background:#ffffffeb;color:var(--ink);font-size:26px;line-height:1;cursor:pointer;box-shadow:var(--shadow-card);display:flex;align-items:center;justify-content:center}.rpm-nav:hover{background:#fff}.rpm-prev{left:24px}.rpm-next{right:24px}.wf-big .wf-band-label{font-size:11px;margin-bottom:6px}.wf-big .wf-el{font-size:10px;padding:0 3px}.wf-big .wf-band{margin-bottom:6px}.valx-save{grid-column:1 / -1;display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:#fcfcfa;flex-wrap:wrap}.valx-save-ic{color:var(--ink-2);display:flex;flex-shrink:0}.valx-save-name{flex:1;min-width:220px;font-size:13.5px;border:1.5px solid var(--hairline-strong);border-radius:8px;padding:8px 11px;color:var(--ink);background:var(--surface)}.valx-save-name:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.valx-save-btn{font-size:13px;font-weight:600;color:#fff;background:var(--ink);border:none;border-radius:8px;padding:9px 16px;cursor:pointer;flex-shrink:0}.valx-export-sep{width:1px;align-self:stretch;background:var(--hairline);margin:0 2px}.valx-export-fmt{font-size:13px;font-family:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--hairline-strong);border-radius:8px;padding:8px 10px;cursor:pointer}.valx-export-fmt:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.valx-export-data-toggle{font-size:12.5px;font-weight:600;color:var(--accent);background:none;border:none;cursor:pointer}.valx-export-data{flex-basis:100%;width:100%;min-height:130px;margin-top:4px;font-family:var(--font-mono);font-size:12px;border:1px solid var(--hairline-strong);border-radius:8px;padding:10px 12px;resize:vertical;outline:none}.valx-export-data:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.valx-save-btn:hover:not(:disabled){background:var(--primary-hover)}.valx-save-btn:disabled{opacity:.5;cursor:default}.valx-save-msg{font-size:12.5px;font-weight:550}.valx-save-msg.ok{color:var(--success)}.valx-save-msg.err{color:var(--danger)}.lib-json-btns{gap:4px;padding:2px 6px}.lib-json-tag{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);padding-right:2px}.lib-json-tag.viz{color:#0f6e56}.lib-viz-grp{border-color:#cdeadf;background:#f3fbf8}.lib-viz-grp .lib-json-btn:hover{color:#0f6e56}.lib-viz-badge{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;color:#0f6e56;background:#e1f5ee;border:1px solid #9FE1CB;border-radius:20px;padding:1px 8px}.lib-page{flex:1;width:100%;max-width:1720px;margin:0 auto;padding:28px 36px 56px}.lib-modal.embedded.lib-embedded{width:100%;max-width:none;max-height:none;overflow:visible;background:transparent;border:none;box-shadow:none;border-radius:0}.lib-embedded .lib-header{padding:0 2px 16px;border-bottom:none}.lib-embedded .lib-toolbar{flex-direction:row;align-items:center;gap:14px;background:transparent;padding:14px 0;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}.lib-embedded .lib-search-wrap{flex:1}.lib-embedded .lib-status-tabs{flex:0 0 auto;gap:6px}.lib-embedded .lib-tab{flex:0 0 auto;padding:7px 15px}.lib-embedded .lib-list{padding:18px 0 0;gap:9px;overflow:visible}.lib-embedded .lib-item{padding:14px 18px}.lib-tab.lib-tab-viz.active{background:#0f6e56;border-color:#0f6e56}.lib-item{cursor:pointer}.lib-item:hover{background:#fafaf7}.lib-grp{display:flex;align-items:center;gap:3px;padding:3px 6px 3px 8px;border:1px solid var(--hairline-strong);border-radius:8px;background:var(--bg)}.lib-grp-ic{display:flex;align-items:center;margin-right:3px;color:var(--ink-3)}.lib-grp-ic.data{color:#185fa5}.lib-grp.off{background:#fafafa;border-color:var(--hairline)}.lib-grp.off .lib-grp-ic.data{color:var(--ink-3);opacity:.5}.lib-viz-grp.on{border-color:#cdeadf;background:#f3fbf8}.lib-viz-grp.on .lib-grp-ic.shield{color:#16a34a}.lib-viz-grp.off .lib-grp-ic.shield{color:var(--ink-3);opacity:.55}.lib-viz-grp.on .lib-json-btn:not(:disabled):hover{color:#0f6e56}.lib-json-btn:disabled{opacity:.3;cursor:not-allowed}.lib-json-btn:disabled:hover{background:transparent;color:var(--ink-3)}.lib-load-icon{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--hairline-strong);border-radius:8px;background:var(--surface);color:var(--ink-2);cursor:pointer;transition:all .12s;flex-shrink:0}.lib-load-icon:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.lib-pdf-icon{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--hairline-strong);border-radius:8px;background:var(--surface);color:var(--ink-2);cursor:pointer;transition:all .12s;flex-shrink:0}.lib-pdf-icon:hover:not(:disabled){border-color:#c0392b;color:#c0392b;background:#fdeaea}.lib-pdf-icon:disabled{opacity:.6;cursor:default}.lib-grp-ic.as-btn{border:none;background:none;cursor:pointer;padding:2px;margin-right:1px;border-radius:6px;transition:background .12s}.lib-viz-grp.on .lib-grp-ic.shield.as-btn:hover{background:#cfeede}.lib-grp-ic.as-btn:focus-visible{outline:2px solid #16a34a;outline-offset:1px}.topnav-tab.t-galeria svg{color:#c13b6a}.topnav-tab.active.t-galeria{background:#fbeaf0;color:#72243e}.topnav-tab.active.t-galeria svg{color:#72243e}.hub-card.t-galeria{border-top-color:#ed93b1}.hub-card.t-galeria:hover{border-color:#f4c0d1;border-top-color:#ed93b1}.hub-card.t-galeria .hub-card-icon{background:#fbeaf0;color:#72243e}.hub-inner{max-width:1100px}.topnav-tab.t-configs svg{color:#0e7490}.topnav-tab.active.t-configs{background:#e0f2f7;color:#0a4e5e}.topnav-tab.active.t-configs svg{color:#0a4e5e}.tc{width:100%;max-width:none;margin:0;padding:22px 28px 56px;box-sizing:border-box}.tc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}.tc-title{font-size:21px;font-weight:680;color:var(--ink);margin:0}.tc-sub{font-size:13px;color:var(--ink-3);margin:4px 0 0}.tc-sub code{background:var(--bg);padding:1px 5px;border-radius:4px;font-size:12px}.tc-new-btn{display:inline-flex;align-items:center;gap:7px;border:none;background:var(--accent);color:#fff;font-weight:600;font-size:13px;padding:9px 16px;border-radius:9px;cursor:pointer;white-space:nowrap}.tc-new-btn:hover:not(:disabled){filter:brightness(1.07)}.tc-new-btn:disabled{opacity:.6;cursor:default}.tc-empty{padding:50px;text-align:center;color:var(--ink-3);font-size:14px}.tc-table{border:1px solid var(--hairline);border-radius:12px;overflow:hidden}.tc-row{display:grid;grid-template-columns:2.2fr 1.1fr .9fr .9fr .7fr .7fr 90px;align-items:center;gap:12px;padding:11px 16px;font-size:13px;color:var(--ink-2);border-top:1px solid var(--hairline)}.tc-row:first-child{border-top:none}.tc-row-head{background:var(--bg);font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3)}.ctr-cols{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start}.ctr-col{min-width:0}.ctr-rowh,.ctr-row{grid-template-columns:1.8fr 1fr 84px}.ctr-rel-rowh,.ctr-rel-row{grid-template-columns:1.4fr 1fr 140px}.ctr-rep{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ctr-rep.off{color:var(--ink-3)}.ctr-sub{display:block;font-weight:400;font-size:11px;color:var(--ink-3);margin-top:2px}.tc-icon-btn.on{color:var(--accent)}.rep-pick-card{width:min(640px,94vw)}.rep-pick-bar{display:flex;gap:10px;align-items:center}.rep-pick-bar .fl-search{flex:1;margin-bottom:0}.rep-pick-bar .tc-new-btn{white-space:nowrap}.rep-pick-list{max-height:50vh;overflow:auto}.rep-pick-row{grid-template-columns:1fr auto}.rep-pick-row.current{background:var(--accent-soft)}.rep-pick-cur{color:var(--accent);font-size:12px;font-weight:600}.valx-modal{width:min(1200px,96vw);max-height:92vh;position:relative;overflow-y:auto;padding-top:30px}.valx-modal-close{position:absolute;top:12px;right:14px;z-index:2;background:var(--surface)}@media (max-width: 900px){.ctr-cols{grid-template-columns:1fr}}.ctv-card{background:var(--card, #fff);border-radius:14px;padding:20px 22px;width:min(1100px,95vw);max-height:88vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000040}.ctv-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.ctv-desc{font-size:12.5px;color:var(--ink-2);margin:4px 0 10px}.ctv-meta{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12.5px;color:var(--ink-2);margin-bottom:14px}.ctv-subtitle{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-3);margin:0 0 8px}.ctv-fields-wrap{overflow:auto}.ctv-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px 16px}.ctv-formfield{display:flex;flex-direction:column;gap:5px;min-width:0}.ctv-type{font-style:normal;font-size:10px;font-weight:700;color:var(--ink-3);text-transform:lowercase;background:#f1f5f9;padding:1px 6px;border-radius:4px;margin-left:4px}.tcp-rownum{width:34px;text-align:center;color:var(--ink-3);font-size:12px}.tcp-rowact{width:40px;text-align:center}.tcp-note{display:block;margin-top:5px;font-size:11.5px;line-height:1.4;color:#b45309;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:5px 8px}.tcp-pf{display:inline-block;margin-top:5px;font-size:10px;font-weight:700;padding:1px 8px;border-radius:999px}.tcp-pf-pass{background:#dcfce7;color:#15803d}.tcp-pf-fail{background:#fee2e2;color:#b91c1c}.tcp-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0;padding:10px 14px;border-radius:8px;border:1px solid;font-weight:700}.tcp-summary-pass{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.tcp-summary-fail{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.tcp-summary-verdict{font-size:15px}.tcp-summary-count{font-size:12px;font-weight:600;opacity:.85}.tcp-conv{display:inline-flex;align-items:center;gap:4px;margin-top:5px;margin-left:6px;font-size:11px;color:#475569}.tcp-conv-sel{font-size:11px;padding:1px 3px;border:1px solid #cbd5e1;border-radius:5px;background:#fff}.tcp-conv-val{color:#0f172a}.tcp-data{margin-top:14px}.tcp-data-actions{display:flex;gap:8px;flex-wrap:wrap}.tcp-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.tcp-data-pre{margin-top:10px;max-height:320px}.xmlview-card{width:min(1000px,95vw)}.xmlview-actions{display:flex;align-items:center;gap:10px;margin-bottom:10px}.xmlview-meta{font-size:12px;color:var(--ink-3);margin-left:auto}.xmlview-pre{flex:1;overflow:auto;margin:0;background:#0f172a;color:#e2e8f0;border-radius:10px;padding:14px 16px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:12px;line-height:1.5;white-space:pre;-moz-tab-size:2;tab-size:2}.lib-sub-btn{position:relative}.lib-sub-btn.on{color:var(--accent)}.lib-sub-badge{position:absolute;top:-4px;right:-4px;min-width:15px;height:15px;padding:0 3px;border-radius:8px;background:var(--accent);color:#fff;font-size:9px;font-weight:700;line-height:15px;text-align:center}.sub-card{width:min(720px,94vw)}.attach-card{width:min(640px,94vw)}.attach-actions{display:flex;gap:8px;margin-bottom:10px}.attach-text{width:100%;min-height:220px}.sub-list{max-height:52vh;overflow:auto}.sub-row{grid-template-columns:1fr auto 78px}.sub-size{font-size:12px;color:var(--ink-3)}.tc-th{display:inline-flex;align-items:center;gap:5px;background:none;border:none;padding:0;margin:0;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;cursor:pointer;text-align:left;-webkit-user-select:none;user-select:none}.tc-th:hover{color:var(--ink)}.tc-th.active{color:var(--accent)}.tc-sort{font-size:9px;opacity:.55}.tc-th.active .tc-sort{opacity:1}.tc-cell-title{font-weight:600;color:var(--ink)}.tc-pill{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:20px;padding:0 7px;background:var(--accent-soft);color:var(--accent);border-radius:20px;font-size:11.5px;font-weight:700}.tc-row-actions{display:flex;gap:6px;justify-content:flex-end}.tc-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--hairline-strong);background:var(--surface);color:var(--ink-2);border-radius:7px;cursor:pointer}.tc-icon-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.tc-icon-btn.danger:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.tc-icon-btn:disabled{opacity:.35;cursor:default}.tce-head-actions{display:flex;gap:10px}.tce-section{background:var(--surface);border:1px solid var(--hairline);border-radius:14px;padding:18px 20px;margin-bottom:18px}.tce-section-flat{background:transparent;border:none;padding:0}.tce-section-flat>.tce-section-head{padding:0 2px;margin-bottom:12px}.tce-section-title{font-size:14px;font-weight:650;color:var(--ink);margin:0 0 14px}.tce-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.tce-section-head .tce-section-title{margin:0}.tce-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px 16px}.tce-field{display:flex;flex-direction:column;gap:4px}.tce-field-wide{grid-column:1 / -1}.tce-label{font-size:11.5px;font-weight:600;color:var(--ink-3)}.tce-input{border:1px solid var(--hairline-strong);border-radius:8px;padding:7px 10px;font-size:13px;font-family:inherit;color:var(--ink);background:var(--surface);width:100%}.tce-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.tce-textarea{resize:vertical}.tce-flags{display:flex;flex-wrap:wrap;gap:18px;margin-top:14px;padding-top:14px;border-top:1px solid var(--hairline)}.tce-check{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-2);cursor:pointer}.tce-check input{width:15px;height:15px;accent-color:var(--accent)}.tce-modeswitch{display:inline-flex;border:1px solid var(--hairline-strong);border-radius:8px;overflow:hidden}.tce-modeswitch button{border:none;background:var(--surface);color:var(--ink-2);font-size:12px;font-weight:600;padding:6px 14px;cursor:pointer}.tce-modeswitch button.active{background:var(--accent);color:#fff}.tce-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(540px,1fr));gap:14px;align-items:start}.tce-fields-empty{color:var(--ink-3);font-size:13px;padding:8px 0;grid-column:1 / -1}.tce-addfield{grid-column:1 / -1}.tce-addrow{grid-column:1 / -1;display:flex;gap:8px;flex-wrap:wrap}.tce-addrow .tce-addfield{grid-column:auto;flex:1;min-width:160px}.tce-addfield.alt{background:#f5f3ff;color:#6d28d9;border-color:#ddd6fe}.fc-card{max-width:700px}.fc-card-split{max-width:920px;width:92vw}.fc-split{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:10px}.fc-pane{border:1px solid var(--hairline);border-radius:10px;padding:10px 12px;background:var(--bg);display:flex;flex-direction:column;min-height:0}.fc-mine{background:#f8fafc}.fc-pane-title{font-size:12px;font-weight:700;color:var(--ink-2);margin:0 0 8px}.fc-pane .fc-groups{max-height:50vh}.fc-chip.mine{cursor:default}.fc-chip.mine:hover{border-color:var(--hairline);background:#fff}.fc-chip-x{border:none;background:none;color:var(--ink-3);cursor:pointer;font-size:11px;padding:0 0 0 2px;line-height:1}.fc-chip-x:hover{color:#dc2626}@media (max-width: 720px){.fc-split{grid-template-columns:1fr}}.fc-groups{max-height:52vh;overflow-y:auto;margin-top:8px}.fc-group{margin-bottom:14px}.fc-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:4px}.fc-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--hairline);border-radius:8px;background:#fff;cursor:pointer;font-size:12px;transition:border-color .12s,background .12s}.fc-chip:hover:not(:disabled){border-color:#8b5cf6;background:#faf5ff}.fc-chip b{font-weight:650;color:var(--ink-1)}.fc-chip-method{font-size:10px;color:#0e7490;background:#ecfeff;padding:1px 6px;border-radius:999px;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fc-chip-type{font-size:10px;color:#6d28d9;background:#f5f3ff;padding:1px 6px;border-radius:999px}.fc-chip-count{font-size:10px;color:var(--ink-3)}.fc-chip.dup{opacity:.45;cursor:not-allowed}.tce-fieldrow{border:1px solid var(--hairline);border-radius:11px;padding:12px;background:var(--bg)}.tce-fr-top{display:grid;grid-template-columns:24px 1.1fr 1.1fr 1.4fr auto;gap:9px;align-items:center}.tce-fr-num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;background:var(--surface);border:1px solid var(--hairline-strong);border-radius:6px;font-size:11px;font-weight:700;color:var(--ink-3)}.tce-fr-tools{display:flex;gap:5px}.tce-fr-row2{display:flex;align-items:center;gap:18px;margin-top:9px}.tce-fr-row2 .tce-input{max-width:280px}.tce-fr-extra{margin-top:10px;padding-top:10px;border-top:1px dashed var(--hairline-strong);display:flex;align-items:center;gap:10px}.tce-fr-extra.col{flex-direction:column;align-items:stretch;gap:7px}.tce-fr-extra.two{gap:14px}.tce-extra-label{font-size:11.5px;font-weight:600;color:var(--ink-3);white-space:nowrap}.tce-mini{display:flex;flex-direction:column;gap:3px;flex:1}.tce-mini span{font-size:11px;color:var(--ink-3)}.tce-choice{display:grid;grid-template-columns:1fr 1fr 32px;gap:8px;align-items:center}.tce-mini-add{align-self:flex-start;display:inline-flex;align-items:center;gap:5px;border:1px dashed var(--hairline-strong);background:var(--surface);color:var(--ink-2);font-size:12px;font-weight:550;padding:5px 11px;border-radius:7px;cursor:pointer}.tce-mini-add:hover{border-color:var(--accent);color:var(--accent)}.tce-addfield{align-self:flex-start;display:inline-flex;align-items:center;gap:7px;border:1px dashed var(--accent-border);background:var(--accent-soft);color:var(--accent);font-size:13px;font-weight:600;padding:9px 16px;border-radius:9px;cursor:pointer}.tce-json{display:flex;flex-direction:column;gap:8px}.tce-json-err{font-size:12px;color:var(--danger);background:var(--danger-soft);padding:6px 10px;border-radius:6px}.tce-json-text{width:100%;min-height:360px;border:1px solid var(--hairline-strong);border-radius:10px;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.5;color:var(--ink);resize:vertical}.tce-json-text:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.tc-import-card{background:var(--surface);border-radius:14px;padding:22px;width:min(640px,94vw);box-shadow:0 24px 60px #00000047}.tc-import-title{font-size:16px;font-weight:650;color:var(--ink);margin:0 0 6px}.tc-import-sub{font-size:12.5px;color:var(--ink-3);margin:0 0 14px}.tc-import-sub code{background:var(--bg);padding:1px 5px;border-radius:4px}.tc-import-text{width:100%;min-height:240px;border:1px solid var(--hairline-strong);border-radius:10px;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5;color:var(--ink);resize:vertical;margin-bottom:14px}.tc-import-text:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.topnav-tab.t-formulas svg{color:#7c3aed}.topnav-tab.active.t-formulas{background:#f1eafe;color:#4c1d95}.topnav-tab.active.t-formulas svg{color:#4c1d95}.topnav-tab.t-clientes svg{color:#c2410c}.topnav-tab.active.t-clientes{background:#ffedd5;color:#7c2d12}.topnav-tab.active.t-clientes svg{color:#7c2d12}.fl{width:100%;max-width:1760px;margin:0 auto;padding:24px 36px 60px;box-sizing:border-box}.fl-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:14px}.fl-title{font-size:21px;font-weight:680;color:var(--ink);margin:0}.fl-sub{font-size:13px;color:var(--ink-3);margin:4px 0 0}.fl-head-actions{display:flex;gap:10px;flex-shrink:0}.fl-head-actions .btn-secondary{display:inline-flex;align-items:center;gap:7px}.fl-syncmsg{font-size:12.5px;color:var(--success);background:var(--success-soft);padding:7px 12px;border-radius:8px;margin:0 0 12px}.fl-search{width:100%;border:1px solid var(--hairline-strong);border-radius:10px;padding:9px 13px;font-size:13px;font-family:inherit;color:var(--ink);margin-bottom:16px}.fl-search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.fl-body{display:grid;grid-template-columns:250px 1fr;gap:20px;align-items:start}.fl-methods{display:flex;flex-direction:column;gap:2px;max-height:72vh;overflow-y:auto;border:1px solid var(--hairline);border-radius:12px;padding:6px;position:sticky;top:12px}.fl-method{display:flex;align-items:center;justify-content:space-between;gap:8px;border:none;background:none;text-align:left;font-family:inherit;font-size:12.5px;color:var(--ink-2);padding:8px 10px;border-radius:8px;cursor:pointer}.fl-method:hover{background:var(--bg)}.fl-method.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.fl-method-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fl-method-count{flex-shrink:0;background:var(--bg);color:var(--ink-3);font-size:11px;font-weight:700;padding:1px 7px;border-radius:20px}.fl-method.active .fl-method-count{background:#fff;color:var(--accent)}.fl-empty-side{padding:14px;font-size:12px;color:var(--ink-3);text-align:center}.fl-list{display:flex;flex-direction:column;gap:10px}.fl-list-title{font-size:14px;font-weight:650;color:var(--ink);margin:2px 0 6px}.fl-card{border:1px solid var(--hairline);border-radius:11px;padding:12px 14px;background:var(--surface)}.fl-card-top{display:flex;align-items:center;gap:10px}.fl-card-name{font-size:13.5px;font-weight:600;color:var(--ink);margin-right:auto}.fl-type-badge{font-size:10px;font-weight:700;padding:2px 8px;border-radius:5px;text-transform:lowercase;background:#f1f5f9;color:#475569}.fl-type-badge.t-result{background:#e0e7ff;color:#3730a3}.fl-type-badge.t-dynamicResult{background:#fae8ff;color:#86198f}.fl-type-badge.t-sumResult{background:#dcfce7;color:#166534}.fl-card-tools{display:flex;gap:5px}.fl-formula{display:block;margin-top:9px;background:var(--bg);border:1px solid var(--hairline);border-radius:7px;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--ink);white-space:pre-wrap;word-break:break-word}.fl-meta{margin-top:7px;font-size:12px;color:var(--ink-3)}.fl-meta code{background:var(--bg);padding:1px 5px;border-radius:4px}.fl-editor{background:var(--surface);border-radius:14px;padding:22px;width:min(620px,94vw);box-shadow:0 24px 60px #00000047;display:flex;flex-direction:column;gap:12px}.fl-editor-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.fl-editor .tce-field{gap:4px}.tce-fbtns{display:inline-flex;gap:6px;margin-left:auto;flex-wrap:wrap}.tce-lib-btn{display:inline-flex;align-items:center;gap:5px;margin-left:auto;border:1px solid #C4B5FD;background:#f1eafe;color:#6d28d9;font-size:11.5px;font-weight:600;padding:5px 11px;border-radius:7px;cursor:pointer;font-family:inherit}.tce-lib-btn:hover{background:#e7dcfc}.tce-fbtns .tce-lib-btn{margin-left:0}.tce-lib-btn.create{border-color:#9fe1cb;background:#e1f5ee;color:#0e7a53}.tce-lib-btn.create:hover{background:#d2efe3}.fp-modal{background:var(--surface);border-radius:14px;padding:20px;width:min(880px,95vw);height:min(82vh,760px);box-shadow:0 24px 60px #0000004d;display:flex;flex-direction:column;gap:12px}.fp-head{display:flex;align-items:center;justify-content:space-between}.fp-head .tc-import-title{margin:0}.fp-body{display:grid;grid-template-columns:240px 1fr;gap:16px;flex:1;min-height:0}.fp-methods{max-height:none;position:static}.fp-list{display:flex;flex-direction:column;gap:9px;overflow-y:auto;padding-right:4px}.fp-card{display:block;width:100%;text-align:left;border:1px solid var(--hairline);border-radius:10px;padding:11px 13px;background:var(--surface);cursor:pointer;font-family:inherit;transition:border-color .12s,background .12s}.fp-card:hover{border-color:var(--accent);background:var(--accent-soft)}.fp-mode{display:flex;align-items:center;gap:12px}.fp-mode-hint{font-size:11.5px;color:var(--ink-3)}.tce-linked{display:inline-flex;align-items:center;gap:8px;margin-left:auto}.tce-linked-badge{font-size:11.5px;font-weight:600;color:#6d28d9;background:#f1eafe;border:1px solid #C4B5FD;padding:4px 9px;border-radius:7px}.tce-link-act{border:1px solid var(--hairline-strong);background:var(--surface);color:var(--ink-2);font-size:11.5px;font-weight:550;padding:4px 10px;border-radius:7px;cursor:pointer;font-family:inherit}.tce-link-act:hover{border-color:var(--accent);color:var(--accent)}.tce-linked-note{margin-top:8px;font-size:11.5px;color:#6d28d9;background:#f7f3ff;border:1px solid #E4D9FB;padding:6px 10px;border-radius:7px}.tce-fr-extra .tce-input[readonly]{background:#f6f6f3;color:var(--ink-2);cursor:not-allowed}.htp-empty{font-size:12.5px;color:var(--ink-3);margin:0}.htp-empty code{background:var(--bg);padding:1px 5px;border-radius:4px}.htp-wrap{overflow-x:auto;border:1px solid var(--hairline);border-radius:10px}.htp-table{border-collapse:collapse;width:100%}.htp-table th{background:#ededed;border:1px solid #d7d7d2;padding:8px 12px;font-size:12px;font-weight:600;color:var(--ink);text-align:left;white-space:nowrap}.htp-table td{border:1px solid var(--hairline);padding:7px 10px;min-width:130px}.htp-input{width:100%;min-width:110px;border:1px solid var(--hairline-strong);border-radius:6px;padding:5px 8px;font-size:12.5px;font-family:inherit;color:var(--ink-2);background:var(--surface)}.htp-input.calc{background:#f1eafe;color:#6d28d9;font-style:italic}.htp-input:disabled{cursor:default}.hub-cards{grid-template-columns:repeat(auto-fill,minmax(238px,1fr))}.wf-bare .wf-el-txt{display:none}.wf-bare .wf-band{margin-bottom:2px}.wf-bare .wf-area{background:#fff;border-color:#eee}.gal{flex:1;width:100%;max-width:1720px;margin:0 auto;padding:28px 36px 56px}.gal-head{margin-bottom:20px}.gal-title{font-size:21px;font-weight:650;letter-spacing:-.01em}.gal-sub{font-size:13px;color:var(--ink-3);margin-top:4px;max-width:64ch}.gal-empty{padding:60px 20px;text-align:center;color:var(--ink-3);font-size:14px;display:flex;align-items:center;justify-content:center;gap:10px}.gal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px}.gal-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;transition:box-shadow .16s,border-color .14s;outline:none}.gal-card:hover{box-shadow:0 10px 28px #1313161a;border-color:var(--hairline-strong)}.gal-card:hover .gal-card-name{color:var(--accent)}.gal-card:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.gal-thumb{display:block;width:100%;height:250px;overflow:hidden;border:none;background:#f1f1ee;padding:14px}.gal-page{background:#fff;box-shadow:0 1px 5px #1313161a;border-radius:3px;padding:8px;width:-moz-fit-content;width:fit-content;margin:0 auto}.gal-thumb-empty{height:100%;display:flex;align-items:center;justify-content:center;color:var(--ink-3);font-size:12.5px}.gal-card-foot{padding:11px 13px;border-top:1px solid var(--hairline);display:flex;flex-direction:column;gap:9px}.gal-card-name{display:block;width:100%;color:var(--ink);font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .12s}.gal-card-meta{display:flex;align-items:center;gap:7px}.gal-viz{display:flex;align-items:center;justify-content:center;width:25px;height:25px;border-radius:6px;border:1px solid #9FE1CB;background:#e1f5ee;color:#16a34a;cursor:pointer;flex-shrink:0}.gal-viz:hover{background:#cfeede}.gal-pdf{display:flex;align-items:center;justify-content:center;width:25px;height:25px;border-radius:6px;border:1px solid #f3bcbc;background:#fdeaea;color:#c0392b;cursor:pointer;flex-shrink:0}.gal-pdf:hover{background:#f9d8d8}.gal-load{margin-left:auto;font-size:12px;font-weight:550;background:var(--surface);border:1px solid var(--hairline-strong);border-radius:7px;padding:5px 12px;cursor:pointer;color:var(--ink)}.gal-load:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.wf-el-click{cursor:pointer}.wf-el-click:hover{outline:1.5px solid #2563eb;outline-offset:-1px;z-index:2}.wf-el-sel{outline:2px solid #2563eb;z-index:3;box-shadow:0 0 0 2px #2563eb38}.wf-el-miss{outline:1.5px solid #ef4444;outline-offset:-1px;z-index:2;box-shadow:0 0 0 2px #ef44442e}.wf-el-miss.wf-el-sel{outline:2px solid #dc2626;box-shadow:0 0 0 3px #dc262647}.rpm-detail{display:flex;align-items:center;gap:10px;padding:11px 18px;border-top:1px solid var(--hairline);background:#fcfcfa}.rpm-detail-kind{font-size:11px;font-weight:600;padding:2px 9px;border-radius:20px;background:#e0e7ff;color:#3730a3;flex-shrink:0}.rpm-detail-kind.k-field{background:#dbeafe;color:#1e40af}.rpm-detail-kind.k-static{background:#e2e8f0;color:#334155}.rpm-detail-kind.k-component{background:#e9d5ff;color:#6b21a8}.rpm-detail-kind.k-image{background:#fef3c7;color:#92400e}.rpm-detail-text{flex:1;min-width:0;font-family:var(--font-mono);font-size:12.5px;color:var(--ink);overflow-x:auto;white-space:pre;padding:4px 0}.rpm-detail-close{border:none;background:transparent;color:var(--ink-3);cursor:pointer;font-size:14px;width:26px;height:26px;border-radius:6px;flex-shrink:0}.rpm-detail-close:hover{background:#f0f0ec;color:var(--ink)}.rpm-detail-hint{color:var(--ink-3);font-size:12.5px;justify-content:center}.pdfm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#1313168c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:28px}.pdfm-modal{width:min(960px,96vw);height:min(92vh,1180px);background:var(--surface);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 60px #00000052}.pdfm-head{display:flex;align-items:center;gap:14px;padding:11px 14px 11px 18px;border-bottom:1px solid var(--hairline)}.pdfm-head-text{display:flex;flex-direction:column;min-width:0;margin-right:auto}.pdfm-title{font-size:14px;font-weight:650;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdfm-sub{font-size:11.5px;color:var(--ink-3)}.pdfm-dl-wrap{position:relative}.pdfm-dl{display:inline-flex;align-items:center;gap:6px;border:none;background:var(--accent);color:#fff;font-weight:600;font-size:12.5px;padding:8px 14px;border-radius:8px;cursor:pointer;transition:filter .12s}.pdfm-dl:hover:not(:disabled){filter:brightness(1.08)}.pdfm-dl:disabled{opacity:.7;cursor:default}.pdfm-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10}.pdfm-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:11;min-width:168px;background:var(--surface);border:1px solid var(--hairline);border-radius:10px;box-shadow:0 12px 32px #13131629;padding:5px;display:flex;flex-direction:column}.pdfm-menu-item{display:flex;align-items:center;gap:10px;border:none;background:none;width:100%;text-align:left;font-size:13px;font-weight:550;color:var(--ink);padding:8px 9px;border-radius:7px;cursor:pointer}.pdfm-menu-item:hover{background:var(--bg)}.pdfm-fmt-tag{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:19px;padding:0 5px;border-radius:5px;font-size:9.5px;font-weight:800;letter-spacing:.03em;color:#fff}.pdfm-fmt-tag.fmt-pdf{background:#c0392b}.pdfm-fmt-tag.fmt-docx{background:#2563eb}.pdfm-fmt-tag.fmt-xlsx{background:#16a34a}.pdfm-fmt-tag.fmt-csv{background:#6b7280}.pdfm-dlerror{background:var(--danger-soft);color:var(--danger);font-size:12px;padding:8px 16px;border-bottom:1px solid #f3d4d4}.pdfm-close{border:none;background:var(--bg);color:var(--ink-2);width:32px;height:32px;border-radius:8px;cursor:pointer;font-size:14px;flex-shrink:0}.pdfm-close:hover{background:var(--hairline);color:var(--ink)}.pdfm-body{flex:1;min-height:0;background:#525659;display:flex;align-items:center;justify-content:center}.pdfm-frame{width:100%;height:100%;border:none}.pdfm-state{color:#fff;font-size:13px;display:flex;flex-direction:column;align-items:center;gap:11px;text-align:center;padding:28px;max-width:620px}.pdfm-errcode{display:block;max-width:580px;font-size:11px;color:#ffd9d9;background:#00000047;padding:9px 11px;border-radius:6px;word-break:break-word;font-family:ui-monospace,monospace}.pdfm-hint{font-size:11.5px;color:#d4d4d4;margin:0}.st-shell{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:linear-gradient(160deg,#3b82f6,#2563eb 55%,#1e40af);padding:26px;overflow:auto}.st-app{max-width:1180px;margin:0 auto;background:#fff;border-radius:16px;box-shadow:0 30px 70px #02061766;overflow:hidden;display:flex;flex-direction:column;min-height:calc(100vh - 52px)}.st-topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 22px;border-bottom:1px solid #eef2f7}.st-brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:16px;color:#0f172a}.st-brand-mark{width:28px;height:28px;border-radius:8px;background:linear-gradient(140deg,#1d4ed8,#3b82f6);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}.st-topicons{display:flex;align-items:center;gap:4px}.st-iconbtn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;background:none;border-radius:8px;color:#64748b;cursor:pointer}.st-iconbtn:hover{background:#f1f5f9;color:#0f172a}.st-exit{margin-left:10px;padding:6px 12px;border:1px solid #e2e8f0;background:#f8fafc;border-radius:8px;font-size:12px;color:#475569;cursor:pointer}.st-body{display:flex;flex:1;min-height:0}.st-sidebar{width:86px;flex-shrink:0;background:#16233b;padding:12px 0;display:flex;flex-direction:column;gap:2px}.st-navitem{display:flex;flex-direction:column;align-items:center;gap:5px;padding:11px 4px;border:none;background:none;color:#8aa0bd;font-size:10.5px;cursor:pointer;border-left:3px solid transparent;transition:color .12s,background .12s}.st-navitem:hover{color:#cbd5e1;background:#ffffff0a}.st-navitem.active{color:#fff;background:#3b82f62e;border-left-color:#3b82f6}.st-main{flex:1;min-width:0;padding:22px 26px;overflow:auto;background:#fff}.st-pagehead{display:flex;align-items:center;justify-content:space-between}.st-title{font-size:24px;font-weight:700;color:#0f172a;margin:0}.st-primary{background:#2563eb;color:#fff;border:none;padding:9px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}.st-primary:hover{background:#1d4ed8}.st-tabs{display:flex;gap:22px;border-bottom:1px solid #eef2f7;margin:16px 0 0}.st-tab{border:none;background:none;padding:10px 0;font-size:13px;color:#64748b;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.st-tab.active{color:#2563eb;border-bottom-color:#2563eb;font-weight:600}.st-filterbar{display:flex;align-items:center;gap:8px;margin:16px 0;flex-wrap:wrap}.st-search{display:flex;align-items:center;gap:6px;border:1px solid #e2e8f0;border-radius:8px;padding:6px 10px;color:#94a3b8;min-width:230px}.st-search input{border:none;outline:none;font-size:13px;flex:1;color:#0f172a}.st-pill{font-size:12px;color:#475569;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;padding:6px 11px;cursor:pointer}.st-sortby{margin-left:auto;font-size:12px;color:#2563eb;cursor:pointer}.st-stages{display:flex;align-items:stretch;gap:0;margin:6px 0 18px;overflow-x:auto}.st-stage-wrap{display:flex;align-items:center;flex:1;min-width:0}.st-stage{flex:1;min-width:120px;border:1px solid #e8edf3;border-radius:12px;padding:12px 14px;background:#fff}.st-stage-name{font-size:12px;color:#64748b}.st-stage-num{font-size:24px;font-weight:720;color:#0f172a;line-height:1.2}.st-stage-sub{font-size:11px;color:#94a3b8}.st-stage-signed{border-color:#bbf7d0}.st-stage-approved{border-color:#bfdbfe}.st-stage-review{border-color:#fde68a}.st-chevron{color:#cbd5e1;padding:0 4px;flex-shrink:0}.st-table{border:1px solid #eef2f7;border-radius:12px;overflow:hidden}.st-thead,.st-trow{display:grid;grid-template-columns:2.4fr 1fr .7fr 1.1fr 1.1fr;gap:10px;align-items:center;padding:11px 16px}.st-thead{background:#f8fafc;font-size:11px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.03em}.st-group{border-top:1px solid #f1f5f9}.st-grouphead{display:flex;align-items:center;gap:6px;padding:9px 16px;background:#fbfcfe;font-size:12.5px;font-weight:600;color:#334155}.st-groupcount{color:#94a3b8;font-weight:500}.st-trow{border-top:1px solid #f4f7fa;font-size:13px;color:#334155}.st-trow:hover{background:#f8fafc}.st-c-name{display:flex;align-items:center;gap:8px;color:#1d4ed8;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.st-c-name svg{color:#94a3b8;flex-shrink:0}.st-badge{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:999px}.st-badge.draft{background:#f1f5f9;color:#475569}.st-badge.gen{background:#eff6ff;color:#1d4ed8}.st-appr{font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:999px}.st-appr-draft{background:#f1f5f9;color:#475569}.st-appr-review{background:#fffbeb;color:#b45309}.st-appr-approved{background:#eff6ff;color:#1d4ed8}.st-appr-signed{background:#f0fdf4;color:#15803d}.st-empty{padding:26px;text-align:center;color:#94a3b8;font-size:14px}@media (max-width: 760px){.st-thead,.st-trow{grid-template-columns:2fr 1fr 1fr}.st-c-ver,.st-c-date{display:none}}.runs{display:flex;flex-direction:column;gap:14px}.run-card{border:1px solid var(--hairline);border-radius:12px;overflow:hidden}.run-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 14px;background:#f8fafc;border-bottom:1px solid var(--hairline)}.run-toggle{display:flex;align-items:center;gap:9px;flex:1;min-width:0;border:none;background:none;cursor:pointer;text-align:left;padding:0}.run-caret{color:#94a3b8;font-size:12px;flex-shrink:0}.run-toggle:hover .run-config{color:#2563eb}.run-config{font-weight:650;color:#1e293b;font-size:14px}.run-name{font-weight:500;color:var(--ink-2)}.run-parentid{display:block;font-size:11px;color:var(--ink-3);font-family:var(--font-mono);margin-top:2px}.run-head-right{display:flex;align-items:center;gap:10px}.run-client{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:#4338ca;background:#eef2ff;border:1px solid #e0e7ff;padding:2px 9px;border-radius:999px}.run-meta{font-size:12px;color:var(--ink-3)}.run-spec{border-top:1px solid #f1f5f9}.run-spec:first-of-type{border-top:none}.run-spec-head{display:flex;align-items:center;gap:9px;width:100%;text-align:left;padding:10px 14px;border:none;background:none;cursor:pointer;font-size:13px;font-weight:600;color:#334155}.run-spec-head:hover{background:#f8fafc}.run-spec-caret{color:#94a3b8;width:12px}.run-spec-head.is-parent{color:#4338ca;background:#f5f3ff}.run-spec-count{margin-left:auto;font-size:11px;font-weight:500;color:var(--ink-3)}.run-detail{padding:4px 14px 14px;overflow-x:auto}.ent-actions{display:inline-flex;align-items:center;gap:2px}.ent-act-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:none;border-radius:7px;color:#4338ca;cursor:pointer}.ent-act-btn:hover{background:#eef2ff}.ent-qr-stub{text-align:center;padding:8px 0}.ent-qr-box{width:120px;height:120px;margin:8px auto;border:2px dashed #cbd5e1;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#94a3b8;font-weight:700;letter-spacing:2px}.ent-qr-img{display:block;margin:6px auto 12px;border:1px solid var(--hairline);border-radius:10px}.ent-qr-link{display:flex;gap:8px;align-items:center}.ent-qr-link input{flex:1;font-size:12px}.ea-wrap{overflow-x:auto}.ea-matrix{border-collapse:collapse;min-width:480px}.ea-matrix th,.ea-matrix td{border:1px solid var(--hairline);padding:10px 14px;text-align:center}.ea-matrix thead th{background:#f8fafc;font-size:12px;color:var(--ink-2)}.ea-corner{text-align:left!important}.ea-action{text-align:left!important;font-weight:600;font-size:13px;white-space:nowrap}.ea-action-ic{display:inline-flex;vertical-align:middle;margin-right:8px;color:#4338ca}.ea-cell input{width:17px;height:17px;cursor:pointer}.crumbs{display:flex;align-items:center;gap:8px;padding:13px 26px;border-bottom:1px solid #eef2f7;font-size:13px}.crumb-link{border:none;background:none;color:#64748b;cursor:pointer;padding:0;font-size:13px}.crumb-link:hover{color:#2563eb;text-decoration:underline}.crumb-sep{color:#cbd5e1}.crumb-current{color:#0f172a;font-weight:600}.launcher{padding:28px 28px 48px;max-width:1280px;margin:0 auto;width:100%}.launcher-title{font-size:22px;font-weight:700;color:#0f172a;margin:0}.launcher-sub{color:var(--ink-2);margin:4px 0 18px;font-size:14px}.launcher-search{display:flex;align-items:center;gap:9px;border:1px solid var(--hairline);border-radius:11px;padding:11px 15px;margin-bottom:24px;color:#94a3b8;background:#fff}.launcher-search input{border:none;outline:none;font-size:15px;flex:1;color:#0f172a}.launcher-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:14px}.launcher-tile{display:flex;flex-direction:column;align-items:center;gap:11px;padding:22px 12px;border:1px solid var(--hairline);border-radius:14px;background:#fff;cursor:pointer;transition:border-color .12s,transform .12s,box-shadow .12s}.launcher-tile:hover{border-color:#6366f1;transform:translateY(-2px);box-shadow:0 8px 20px #02061714}.launcher-ic{width:48px;height:48px;border-radius:13px;background:#eef2ff;color:#4338ca;display:flex;align-items:center;justify-content:center}.launcher-ic svg{width:24px;height:24px}.launcher-label{font-size:13px;font-weight:600;color:#1e293b;text-align:center}.app-main{padding:0;display:flex;flex-direction:column}.app-sidebar{overflow-y:auto}.app-shell{background:#fff;padding:0}.app-shell .st-app{max-width:none;width:100%;min-height:100vh;border-radius:0;box-shadow:none}.share{min-height:100vh;background:linear-gradient(170deg,#eef2ff,#f8fafc 40%);display:flex;flex-direction:column}.share-top{display:flex;align-items:center;gap:9px;padding:16px 22px;font-weight:700;font-size:16px;color:#0f172a;background:#fff;border-bottom:1px solid var(--hairline)}.share-body{flex:1;display:flex;justify-content:center;align-items:flex-start;padding:28px 16px}.share-card{width:100%;max-width:520px;background:#fff;border:1px solid var(--hairline);border-radius:16px;box-shadow:0 12px 40px #02061714;padding:24px}.share-card h2{margin:8px 0 14px;font-size:22px;color:#0f172a}.share-chip{display:inline-block;font-size:11px;font-weight:700;color:#4338ca;background:#eef2ff;padding:3px 10px;border-radius:999px}.share-row{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-top:1px solid #f1f5f9;font-size:14px}.share-row span{color:var(--ink-3)}.share-row b{color:#1e293b;text-align:right}.share-foot{text-align:center;padding:16px;font-size:12px;color:var(--ink-3)}.mk-tabs{display:flex;gap:4px;margin-bottom:12px;border-bottom:1px solid var(--hairline)}.mk-tab{border:none;background:none;padding:9px 14px;font-size:13px;color:var(--ink-2);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.mk-tab.active{color:#2563eb;border-bottom-color:#2563eb;font-weight:600}.mk-card{position:relative}.mk-card.is-sold,.mk-card.is-hidden{opacity:.72}.mk-stamp{position:absolute;top:8px;left:8px;z-index:2;font-size:10px;font-weight:800;letter-spacing:.05em;padding:2px 8px;border-radius:6px;color:#fff;transform:rotate(-4deg)}.mk-stamp.sold{background:#16a34a}.mk-stamp.hidden{background:#64748b}.mk-filters{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px}.mk-search{max-width:420px;flex:1;min-width:220px;margin:0}.mk-toggle{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2);cursor:pointer;white-space:nowrap}.mk-sel{width:auto;min-width:130px;font-size:13px;padding:7px 9px}.mk-num{width:92px;font-size:13px;padding:7px 9px}.mk-sender-btn{border:none;background:none;padding:0;cursor:pointer}.mk-sender-btn:hover{text-decoration:underline}.mk-cat{font-size:10px;font-weight:700;color:#6d28d9;background:#f5f3ff;padding:1px 8px;border-radius:999px;text-transform:capitalize}.mk-act.on{color:#d97706;border-color:#fde68a;background:#fffbeb}.mk-alerts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;padding:12px;border:1px solid var(--hairline);border-radius:10px;background:#f8fafc}.mk-alert{display:inline-flex;align-items:center;gap:4px}.mk-alert-name{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--hairline);background:#fff;border-radius:999px;padding:5px 12px;font-size:13px;font-weight:600;color:#334155;cursor:pointer}.mk-alert-name:hover{border-color:#6366f1}.mk-alert-badge{background:#dc2626;color:#fff;font-size:10px;font-weight:700;min-width:18px;height:18px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px}.mk-phone{font-size:11px;font-weight:600;color:#0e7490;background:#ecfeff;border:1px solid #a5f3fc;padding:1px 8px;border-radius:999px;font-family:var(--font-mono)}.mk-price{font-size:11px;font-weight:700;color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0;padding:1px 8px;border-radius:999px}.mk-sys{font-size:10px;font-weight:700;color:#94a3b8;background:#f1f5f9;padding:1px 7px;border-radius:999px}.mk-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}.mk-card{display:flex;gap:12px;border:1px solid var(--hairline);border-radius:12px;padding:12px;background:#fff}.mk-photo{width:96px;height:96px;object-fit:cover;border-radius:10px;flex-shrink:0;background:#f1f5f9;cursor:zoom-in}.mk-nophoto{display:flex;align-items:center;justify-content:center;color:#94a3b8;font-size:11px;cursor:default;border:1px dashed #cbd5e1}.mk-body{min-width:0;display:flex;flex-direction:column;gap:6px}.mk-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline}.mk-date{font-size:11px;color:var(--ink-3);font-family:var(--font-mono)}.mk-age{font-size:10px;font-weight:700;color:#b45309;background:#fffbeb;border:1px solid #fde68a;padding:1px 7px;border-radius:999px}.mk-sender{font-size:12px;font-weight:700;color:#4338ca}.mk-text{font-size:13px;color:#1e293b;line-height:1.4;white-space:pre-wrap;word-break:break-word;max-height:7.5em;overflow:hidden;cursor:pointer}.mk-text.expanded{max-height:none}.mk-empty{color:#94a3b8}.mk-actions{display:flex;gap:8px;margin-top:auto;padding-top:8px}.mk-act{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:4px 10px;border-radius:8px;border:1px solid var(--hairline);background:#fff;color:var(--ink-2);cursor:pointer;text-decoration:none}.mk-act:hover{border-color:#94a3b8}.mk-act.wa{background:#f0fdf4;color:#15803d;border-color:#bbf7d0}.mk-act.wa:hover{background:#dcfce7}.mk-more{display:flex;justify-content:center;margin:18px 0}.mk-zoom{max-width:92vw;max-height:88vh;border-radius:12px;box-shadow:0 20px 60px #00000080}.mk-zoom-close{position:fixed;top:18px;right:18px;z-index:10;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:none;border-radius:50%;background:#ffffff29;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.mk-zoom-close:hover{background:#ffffff4d}.ct-row{grid-template-columns:2fr 1.4fr 60px!important}.ct-nick{font-weight:600;color:#1e293b}.ct-phone{font-family:var(--font-mono);color:#0e7490}.ct-imports{border:1px solid var(--hairline);border-radius:10px;padding:10px 14px;background:#f8fafc}.ct-imports-list{display:flex;flex-direction:column;gap:4px;margin-top:4px}.ct-import{display:flex;justify-content:space-between;gap:12px;font-size:13px;padding:4px 0;border-top:1px solid #eef2f7}.ct-import-grp{font-weight:600;color:#4338ca}.ct-import-meta{color:var(--ink-3);font-size:12px}.md-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.md-card{border:1px solid var(--hairline);border-radius:12px;padding:14px 16px;background:#fff}.md-num{display:block;font-size:26px;font-weight:720;color:#0f172a}.md-lbl{font-size:12px;color:var(--ink-3)}.md-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.md-panel{border:1px solid var(--hairline);border-radius:12px;padding:14px 16px;background:#fff}.md-bar-row{display:flex;align-items:center;gap:10px;margin:6px 0;font-size:13px}.md-bar-lbl{width:120px;flex-shrink:0;color:var(--ink-2);text-transform:capitalize;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-bar{flex:1;height:9px;background:#f1f5f9;border-radius:999px;overflow:hidden}.md-bar-fill{display:block;height:100%;background:linear-gradient(90deg,#4338ca,#6366f1);border-radius:999px}.md-bar-val{width:44px;text-align:right;color:var(--ink-3);font-variant-numeric:tabular-nums}.md-spark{display:flex;align-items:flex-end;gap:3px;height:120px;margin-top:10px}.md-spark-bar{flex:1;min-height:2px;background:#6366f1;border-radius:3px 3px 0 0}@media (max-width: 760px){.md-cards{grid-template-columns:1fr 1fr}.md-grid{grid-template-columns:1fr}}.cse-card{max-width:700px;width:94vw;max-height:88vh;overflow:auto}.cse-published{display:flex;gap:14px;align-items:center;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:10px;padding:12px;margin-bottom:12px}.cse-qr{border:1px solid var(--hairline);border-radius:8px;background:#fff;flex-shrink:0}.cse-link{font-size:13px;color:#15803d;font-weight:600;word-break:break-all}.cse-form{display:flex;flex-direction:column;gap:10px}.cse-cat{border:1px solid var(--hairline);border-radius:10px;padding:10px}.cse-cat-head{display:flex;gap:8px;margin-bottom:6px}.cse-item{display:flex;gap:6px;margin:5px 0}.cse-price{max-width:110px}.cse-mode{display:flex;gap:8px;margin-bottom:12px}.cse-mode-btn{flex:1;padding:10px;border:1px solid var(--hairline);border-radius:10px;background:#fff;cursor:pointer;font-size:13px;font-weight:600;color:var(--ink-2)}.cse-mode-btn.active{border-color:#6366f1;background:#eef2ff;color:#4338ca}.cse-html{border:1px dashed #cbd5e1;border-radius:10px;padding:12px;margin-bottom:12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.cse-html-ok{font-size:13px;font-weight:600;color:#15803d}.he{display:grid;grid-template-columns:168px 1fr;gap:10px;height:460px}.he-palette{overflow-y:auto;border:1px solid var(--hairline);border-radius:10px;padding:6px;background:#f8fafc}.he-grp-head{width:100%;text-align:left;border:none;background:none;font-size:12px;font-weight:700;color:#334155;padding:6px 4px;cursor:pointer}.he-grp-items{display:flex;flex-direction:column;gap:4px;padding:0 0 6px 6px}.he-chip{text-align:left;border:1px solid var(--hairline);background:#fff;border-radius:7px;padding:5px 8px;font-size:12px;color:#475569;cursor:pointer}.he-chip:hover{border-color:#6366f1;background:#eef2ff;color:#4338ca}.he-main{display:grid;grid-template-rows:1fr 1fr;gap:8px;min-width:0}.he-code{width:100%;height:100%;resize:none;font-family:var(--font-mono);font-size:12px;line-height:1.5;border:1px solid var(--hairline);border-radius:10px;padding:10px;box-sizing:border-box}.he-preview{width:100%;height:100%;border:1px solid var(--hairline);border-radius:10px;background:#fff}@media (max-width: 720px){.he{grid-template-columns:1fr;height:auto}.he-main{grid-template-rows:260px 260px}}.img-up{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:4px}.img-up-prev{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--hairline)}.cse-gallery{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}.cse-thumb{position:relative}.cse-thumb img{width:80px;height:80px;object-fit:cover;border-radius:8px;border:1px solid var(--hairline)}.cse-thumb-x{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;border:none;background:#dc2626;color:#fff;cursor:pointer;font-size:11px;line-height:1}.site{--theme: #b91c1c;font-family:system-ui,-apple-system,sans-serif;color:#1e293b;background:#fff;min-height:100vh}.site-hero{background:var(--theme);background-size:cover;background-position:center;color:#fff;padding:64px 20px;text-align:center}.site-hero-in{max-width:760px;margin:0 auto}.site-name{font-size:38px;font-weight:800;margin:0;letter-spacing:-.02em}.site-tagline{font-size:17px;opacity:.92;margin:10px 0 0}.site-cta{display:flex;gap:10px;justify-content:center;margin-top:22px;flex-wrap:wrap}.site-btn{background:#fff;color:var(--theme);font-weight:700;padding:11px 20px;border-radius:999px;text-decoration:none;font-size:15px}.site-btn.ghost{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.7)}.site-sec{max-width:760px;margin:0 auto;padding:34px 20px}.site-h2{font-size:22px;font-weight:700;color:var(--theme);margin:0 0 16px}.site-about{font-size:16px;line-height:1.6;color:#475569}.site-menu-cat{margin-bottom:20px}.site-menu-catname{font-size:16px;font-weight:700;color:#0f172a;border-bottom:2px solid var(--theme);display:inline-block;padding-bottom:3px;margin:0 0 10px}.site-menu-item{display:flex;justify-content:space-between;gap:14px;padding:8px 0;border-bottom:1px dashed #e2e8f0}.site-menu-name{font-weight:600}.site-menu-desc{display:block;font-size:13px;color:#94a3b8}.site-menu-price{font-weight:700;color:var(--theme);white-space:nowrap}.site-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.site-gallery img{width:100%;height:140px;object-fit:cover;border-radius:10px}.site-hours{display:flex;flex-direction:column;gap:4px}.site-hour{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid #f1f5f9}.site-contact{background:#f8fafc;border-radius:14px}.site-addr{font-size:15px}.site-contact-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.site-chip{background:var(--theme);color:#fff;text-decoration:none;padding:8px 16px;border-radius:999px;font-weight:600;font-size:14px}.site-foot{text-align:center;padding:26px;font-size:12px;color:#94a3b8;border-top:1px solid #f1f5f9}@media (max-width: 768px){.app-shell .st-body{flex-direction:column}.app-sidebar{width:100%;flex-direction:row;overflow-x:auto;overflow-y:hidden;gap:0;padding:3px 4px;border-right:none}.app-sidebar .st-navitem{flex-direction:row;gap:7px;padding:9px 13px;border-left:0;border-bottom:3px solid transparent;white-space:nowrap;font-size:12px}.app-sidebar .st-navitem.active{border-left-color:transparent;border-bottom-color:#3b82f6}.st-topbar{padding:8px 12px}.st-iconbtn{width:32px;height:32px}.tc{padding:16px 14px 48px}.hub{padding:24px 16px 48px}.launcher{padding:20px 14px 40px}.crumbs{padding:11px 14px}.tc-head{flex-direction:column;align-items:stretch;gap:12px}.tc-table{overflow-x:auto}.tc-row{min-width:620px}.run-head{flex-wrap:wrap;gap:8px}.run-head-right{flex-wrap:wrap}.tce-fr-extra.two{grid-template-columns:1fr}}@media (max-width: 420px){.st-brand{font-size:0;gap:6px}.st-brand .st-brand-mark{font-size:11px}}
