:root{--bg: #f6f7f9;--surface: #ffffff;--surface-2: #f0f2f5;--border: #dde1e7;--border-strong: #c3cad4;--text: #1a1f26;--text-dim: #5b6673;--text-faint: #8b96a3;--accent: #0b7285;--accent-hover: #095c6b;--accent-soft: #e0f2f5;--danger: #c92a2a;--danger-soft: #fdeaea;--warn: #b45309;--warn-soft: #fef3e2;--ok: #2b8a3e;--ok-soft: #e6f4ea;--radius: 8px;--radius-sm: 5px;--shadow: 0 1px 3px rgb(0 0 0 / 8%), 0 1px 2px rgb(0 0 0 / 4%);--shadow-lg: 0 10px 30px rgb(0 0 0 / 12%);--sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #14171c;--surface: #1c2027;--surface-2: #242932;--border: #2e343e;--border-strong: #414954;--text: #e6e9ee;--text-dim: #9aa4b1;--text-faint: #6b7683;--accent: #3bb3c8;--accent-hover: #55c7da;--accent-soft: #12313a;--danger: #ff6b6b;--danger-soft: #3a1e1e;--warn: #f0a44a;--warn-soft: #3a2c16;--ok: #51cf66;--ok-soft: #16301c;--shadow: 0 1px 3px rgb(0 0 0 / 40%);--shadow-lg: 0 10px 30px rgb(0 0 0 / 50%)}}*{box-sizing:border-box}body{margin:0;font-family:var(--sans);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:600;line-height:1.25}h1{font-size:17px}h2{font-size:15px}h3{font-size:13px}p{margin:0 0 8px}a{color:var(--accent)}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.topbar{display:flex;align-items:center;gap:14px;padding:0 16px;height:52px;flex:0 0 52px;background:var(--surface);border-bottom:1px solid var(--border)}.topbar .brand{display:flex;align-items:center;gap:9px;font-weight:650;letter-spacing:-.01em}.topbar .brand svg{color:var(--accent)}.topbar .spacer{flex:1}.topbar .job-name{display:flex;align-items:center;gap:5px;min-width:0;max-width:46ch;font-size:13px;color:var(--text-dim);padding:4px 8px;border:1px solid transparent;background:none;border-radius:var(--radius-sm);font-weight:500}.topbar .job-name:hover:not(:disabled){background:var(--surface-2)}.topbar .job-name .nm{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .job-name .pen{opacity:0;color:var(--text-faint);flex:0 0 auto}.topbar .job-name:hover .pen{opacity:1}.topbar .job-rename{width:min(46ch,40vw);font-size:13px;padding:4px 8px;border-radius:var(--radius-sm)}.main{display:flex;flex:1;min-height:0}.sidebar{width:320px;flex:0 0 320px;overflow-y:auto;overflow-x:hidden;background:var(--surface);border-right:1px solid var(--border)}.sidebar.right{border-right:0;border-left:1px solid var(--border);width:290px;flex-basis:290px}.canvas{flex:1;min-width:0;display:flex;flex-direction:column;padding:16px;gap:12px;overflow:auto}.panel{border-bottom:1px solid var(--border)}.panel-head{display:flex;align-items:center;justify-content:flex-start;gap:8px;width:100%;padding:11px 14px;background:none;border:0;cursor:pointer;font:inherit;font-weight:600;font-size:13px;color:var(--text);text-align:left}.panel-head:hover{background:var(--surface-2)}.panel-head .chev{color:var(--text-faint);transition:transform .15s}.panel-head .chev.open{transform:rotate(90deg)}.panel-head .count{margin-left:auto;font-weight:500;font-size:11px;color:var(--text-dim);background:var(--surface-2);padding:1px 7px;border-radius:99px}.panel-body{padding:4px 14px 16px}.field{margin-bottom:13px}.field:last-child{margin-bottom:0}.field>label{display:flex;align-items:baseline;gap:6px;font-size:12px;font-weight:550;color:var(--text-dim);margin-bottom:5px}.field .value{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--text)}.hint{font-size:11px;color:var(--text-faint);margin-top:4px;line-height:1.45}input[type=text],input[type=number],input[type=password],select,textarea{width:100%;padding:7px 9px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;font-size:13px}textarea{resize:vertical;min-height:70px;font-family:var(--mono);font-size:12px;line-height:1.5}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}input[type=color]{width:100%;height:32px;padding:2px;cursor:pointer;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface)}input[type=range]{width:100%;accent-color:var(--accent);cursor:pointer}.row{display:flex;gap:8px}.row>*{flex:1;min-width:0}.check{display:flex;align-items:flex-start;gap:8px;cursor:pointer;font-size:12.5px}.check input{margin:2px 0 0;accent-color:var(--accent);flex:0 0 auto}button{display:inline-flex;align-items:center;justify-content:center;gap:6px;font:inherit;cursor:pointer;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);padding:7px 13px;font-size:13px;font-weight:500;line-height:1.2;transition:background .12s,border-color .12s}button>svg{flex:0 0 auto}button:hover:not(:disabled):not(.hotspot){background:var(--surface-2)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:550}button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) button.primary{color:var(--bg)}}button.ghost{border-color:transparent;background:none;color:var(--text-dim)}button.ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}button.danger{color:var(--danger);border-color:transparent;background:none}button.danger:hover:not(:disabled){background:var(--danger-soft)}button.block{width:100%}button.sm{padding:4px 9px;font-size:12px}.chips{display:flex;flex-wrap:wrap;gap:5px}.chip{display:inline-flex;align-items:center;gap:5px;max-width:100%;padding:2px 5px 2px 8px;border-radius:99px;background:var(--surface-2);border:1px solid var(--border);font-size:11.5px;font-family:var(--mono);color:var(--text)}.chip button{border:0;background:none;padding:0;width:15px;height:15px;border-radius:50%;color:var(--text-faint);font-size:14px;line-height:1;display:grid;place-items:center}.chip button:hover{background:var(--danger-soft);color:var(--danger)}.chip .tx{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.cloud-frame{position:relative;display:inline-block;max-width:100%;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.cloud-frame img{display:block;max-width:100%;height:auto}.cloud-frame.busy img{opacity:.45;filter:saturate(.5)}.hotspots{position:absolute;inset:0}.hotspot{position:absolute;border:0;background:transparent;padding:0;border-radius:3px;cursor:pointer;transition:background .1s,box-shadow .1s}.hotspot:hover{background:#c92a2a1f;box-shadow:inset 0 0 0 1.5px var(--danger)}.hotspot:focus-visible{outline:2px solid var(--accent)}.hotspot.marked{background:#c92a2a38;box-shadow:inset 0 0 0 1.5px var(--danger)}.cloud-overlay{position:absolute;inset:0;display:grid;place-items:center;background:#ffffff8c;backdrop-filter:blur(1px)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .cloud-overlay{background:#14171c99}}.cloud-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cloud-toolbar .spacer{flex:1}.note{display:flex;gap:9px;padding:10px 12px;border-radius:var(--radius);font-size:12.5px;line-height:1.5;border:1px solid transparent}.note.warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 30%,transparent);color:var(--warn)}.note.error{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 30%,transparent);color:var(--danger)}.note.ok{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 30%,transparent);color:var(--ok)}.note.info{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--accent)}.note strong{font-weight:650}.note .body{flex:1;min-width:0;color:var(--text)}.note .body b{color:inherit}.progress-track{height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:99px;transition:width .3s ease}.progress-fill.indeterminate{width:35%!important;animation:slide 1.2s ease-in-out infinite}@keyframes slide{0%{margin-left:-35%}to{margin-left:100%}}.spinner{width:15px;height:15px;flex:0 0 15px;border:2px solid color-mix(in srgb,currentColor 25%,transparent);border-top-color:currentColor;border-radius:50%;animation:spin .7s linear infinite}.spinner.lg{width:26px;height:26px;flex-basis:26px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.stat{padding:8px 10px;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border)}.stat .num{font-size:17px;font-weight:650;font-variant-numeric:tabular-nums;line-height:1.2}.stat .lbl{font-size:10.5px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}table.terms{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}table.terms th:not(:first-child),table.terms td.num{width:62px}table.terms th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);font-weight:600;padding:4px 6px;border-bottom:1px solid var(--border)}table.terms td{padding:3px 6px;border-bottom:1px solid var(--border)}table.terms td.num{text-align:right;font-family:var(--mono);font-size:11px;color:var(--text-dim)}table.terms tr:hover td{background:var(--surface-2)}table.terms .term-cell{display:flex;align-items:center;justify-content:flex-start;gap:7px;width:100%;border:0;background:none;padding:2px 0;font:inherit;color:inherit;text-align:left}table.terms .term-cell:hover:not(:disabled){background:none}table.terms .term-cell .box{flex:0 0 auto;width:14px;height:14px;border-radius:3px;border:1px solid var(--border-strong);background:var(--surface);display:grid;place-items:center;color:#fff}table.terms .term-cell .tx{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}table.terms tr.marked .term-cell .box{background:var(--danger);border-color:var(--danger)}table.terms tr.marked td{background:var(--danger-soft)}table.terms tr.marked .tx{text-decoration:line-through;color:var(--text-dim)}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius);padding:30px 20px;text-align:center;cursor:pointer;background:var(--surface-2);transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.over{border-color:var(--accent);background:var(--accent-soft)}.dropzone svg{color:var(--text-faint);margin-bottom:8px}.dropzone .big{font-weight:600;margin-bottom:3px}.dropzone .small{font-size:12px;color:var(--text-dim)}.login-screen{display:grid;place-items:center;height:100vh;padding:20px}.login-card{width:100%;max-width:330px;padding:26px;background:var(--surface);border:1px solid var(--border);border-radius:11px;box-shadow:var(--shadow-lg)}.login-card .logo{display:flex;align-items:center;gap:9px;margin-bottom:5px;color:var(--accent)}.login-card .logo span{font-size:17px;font-weight:650;color:var(--text)}.login-card .sub{color:var(--text-dim);font-size:12.5px;margin-bottom:18px}.empty{display:grid;place-items:center;flex:1;text-align:center;color:var(--text-dim);padding:30px}.empty .empty-icon{color:var(--text-faint);margin-bottom:12px}.jobs-list{display:flex;flex-direction:column;gap:4px;min-width:0}.job-row{display:flex;align-items:center;min-width:0;gap:4px}.job-item{display:flex;align-items:center;justify-content:flex-start;gap:8px;width:100%;min-width:0;padding:7px 9px;border-radius:var(--radius-sm);border:1px solid transparent;background:none;cursor:pointer;text-align:left}.job-item:hover{background:var(--surface-2)}.job-item.active{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 35%,transparent)}.job-item .info{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;padding-right:10px}.job-item .nm{font-size:12.5px;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.job-item .meta{font-size:11px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dot{width:7px;height:7px;border-radius:50%;flex:0 0 7px}.dot.done{background:var(--ok)}.dot.error{background:var(--danger)}.dot.run{background:var(--accent);animation:pulse 1.3s ease-in-out infinite}.dot.idle{background:var(--text-faint)}@keyframes pulse{50%{opacity:.3}}.palette-row{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.swatch{width:26px;height:26px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);cursor:pointer;padding:0;position:relative}.swatch:hover:after{content:"×";position:absolute;inset:0;display:grid;place-items:center;background:#00000073;color:#fff;border-radius:inherit;font-size:15px}.cmap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:5px}.cmap{display:block;padding:5px 7px;border-radius:var(--radius-sm);cursor:pointer;border:1px solid var(--border);background:var(--surface);text-align:left;font-size:11px;font-weight:500}.cmap:hover{border-color:var(--border-strong)}.cmap.active{border-color:var(--accent);background:var(--accent-soft)}.cmap .bar{height:7px;border-radius:2px;margin-top:4px}.modal-backdrop{position:fixed;inset:0;background:#00000073;display:grid;place-items:center;padding:20px;z-index:50}.modal{background:var(--surface);border-radius:11px;box-shadow:var(--shadow-lg);width:100%;max-width:640px;max-height:82vh;display:flex;flex-direction:column;border:1px solid var(--border)}.modal header{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border)}.modal .content{padding:16px;overflow:auto}.modal footer{display:flex;gap:8px;justify-content:flex-end;padding:12px 16px;border-top:1px solid var(--border)}.url-table{width:100%;border-collapse:collapse;font-size:11.5px}.url-table th{text-align:left;padding:5px 7px;border-bottom:1px solid var(--border);font-size:10.5px;text-transform:uppercase;color:var(--text-faint)}.url-table td{padding:4px 7px;border-bottom:1px solid var(--border)}.url-table .u{font-family:var(--mono);font-size:11px;max-width:380px;overflow-wrap:anywhere}.badge{padding:1px 6px;border-radius:99px;font-size:10px;font-weight:600}.badge.body{background:var(--ok-soft);color:var(--ok)}.badge.slug{background:var(--warn-soft);color:var(--warn)}.badge.empty{background:var(--danger-soft);color:var(--danger)}@media(max-width:1100px){.sidebar.right{display:none}}@media(max-width:820px){.main{flex-direction:column}.sidebar{width:100%;flex-basis:auto;max-height:45vh;border-right:0;border-bottom:1px solid var(--border)}}[data-tip]{position:relative}[data-tip]:after{content:attr(data-tip);position:absolute;z-index:40;top:calc(100% + 6px);left:50%;transform:translate(-50%);width:max-content;max-width:240px;padding:4px 8px;border-radius:var(--radius-sm);background:var(--surface);color:var(--text);border:1px solid var(--border-strong);box-shadow:var(--shadow-lg);font-size:11px;font-weight:500;line-height:1.35;text-align:center;opacity:0;pointer-events:none;transition:opacity .1s ease}[data-tip]:hover:after,[data-tip]:focus-visible:after{opacity:1;transition-delay:.4s}[data-tip][data-tip-align=end]:after{left:auto;right:0;transform:none}.font-picker{position:relative}.font-trigger{width:100%;justify-content:space-between;gap:8px;background:var(--surface);border:1px solid var(--border-strong)}.font-trigger .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:1.35}.font-trigger .chev{color:var(--text-faint);transition:transform .15s}.font-trigger .chev.open{transform:rotate(90deg)}.font-menu{margin-top:6px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.font-filter{width:100%;border:0;border-bottom:1px solid var(--border);border-radius:0;padding:7px 10px;font-size:12px;background:var(--surface-2);color:var(--text)}.font-filter:focus{outline:0;border-bottom-color:var(--accent)}.font-list{max-height:300px;overflow-y:auto;padding:4px}.font-group{padding:7px 8px 3px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint)}.font-option{content-visibility:auto;contain-intrinsic-size:auto 30px;display:block;width:100%;text-align:left;padding:5px 8px;border:1px solid transparent;background:none;border-radius:var(--radius-sm);font-size:15px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.font-option:hover:not(:disabled){background:var(--surface-2)}.font-option.active{background:var(--accent-soft);border-color:var(--accent)}.selection-bar{position:fixed;z-index:45;left:50%;bottom:18px;transform:translate(-50%);width:min(920px,calc(100vw - 36px));display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:11px;background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow-lg)}.selection-bar .count{font-size:12.5px;color:var(--text-dim);white-space:nowrap}.selection-bar .count strong{color:var(--text);font-size:14px}.selection-bar .picked{display:flex;gap:5px;flex-wrap:nowrap;overflow-x:auto;padding:2px;min-width:0;flex:1}.selection-bar .chip{white-space:nowrap}@media(max-width:820px){.selection-bar{left:16px;right:16px;transform:none;width:auto;flex-wrap:wrap}}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-corner{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border:3px solid transparent;background-clip:content-box;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--text-faint);background-clip:content-box}.list-filter{width:100%;margin-bottom:8px;padding:6px 9px;font-size:12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);color:var(--text)}.list-filter:focus{outline:0;border-color:var(--accent)}.word-list{max-height:280px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.word-row{content-visibility:auto;contain-intrinsic-size:auto 26px;display:flex;align-items:center;gap:6px;padding:3px 4px 3px 9px;border-bottom:1px solid var(--border)}.word-row:last-child{border-bottom:0}.word-row .tx{flex:1;min-width:0;font-size:12px;font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.word-row .x{flex:0 0 auto;border:0;background:none;padding:0;width:18px;height:18px;border-radius:3px;line-height:1;color:var(--text-faint);font-size:14px}.word-row:hover{background:var(--surface)}.word-row .x:hover:not(:disabled){background:var(--danger-soft);color:var(--danger)}.dropzone.compact{padding:14px}.dropzone.compact .big{font-size:13px;margin-top:4px}.source-card{border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:10px;background:var(--surface-2)}.source-card .head{display:flex;align-items:center;gap:7px;margin-bottom:9px;min-width:0}.source-card .head .nm{flex:1;min-width:0;font-weight:550;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-card .head .meta{font-size:10.5px;color:var(--text-faint);font-family:var(--mono)}.source-card .field{margin-bottom:8px}.source-card .field:last-child{margin-bottom:0}.source-list{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);overflow:hidden}.source-list .row-item{display:flex;align-items:baseline;gap:7px;padding:5px 9px;border-bottom:1px solid var(--border);min-width:0}.source-list .row-item:last-child{border-bottom:0}.source-list .nm{font-size:12px;font-weight:550;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-list .meta{flex:1;min-width:0;font-size:10.5px;color:var(--text-faint);font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-list .val{font-size:12px;font-family:var(--mono);color:var(--text-dim)}
