@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(./ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(./ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(./ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-display:swap;src:url(./ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(./ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(./ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(./ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2)format("woff2")}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--jn-bg:#0f1216;--jn-panel:#171b21;--jn-panel-alt:#13171d;--jn-border:#232a32;--jn-border-soft:#1f262e;--jn-input-bg:#0f1216;--jn-input-border:#606a77;--jn-text:#e7eaee;--jn-text-mid:#c4cad1;--jn-text-dim:#8a929c;--jn-text-faint:#7f8893;--jn-text-muted:#7a838e;--jn-accent:#e8830f;--jn-accent-hover:#f5953a;--jn-accent-text:#e8830f;--jn-accent-ink:#1a1206;--jn-green:#3fb27f;--jn-red:#e5675b;--jn-blue:#3b82f6;--jn-amber:#e0a92b;--jn-btn-bg:#1d232b;--jn-btn-border:#262d35;--jn-ghost-border:#3a434d;--jn-divider:#1b212880;--jn-hover:#ffffff09;--jn-menu-bg:#161b22;--jn-menu-border:#2c343d;--jn-info:#8aa6c0;--jn-route-violet:#9d7bd8;--jn-route-teal:#2fa7a0;--jn-route-pink:#d06ca8;--jn-backdrop:#0406099e}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--jn-bg:#f3f4f6;--jn-panel:#fff;--jn-panel-alt:#f7f8fa;--jn-border:#dfe3e8;--jn-border-soft:#e7ebef;--jn-input-bg:#fbfcfd;--jn-input-border:#85909c;--jn-text:#1c2229;--jn-text-mid:#3d454f;--jn-text-dim:#5d6570;--jn-text-faint:#656e79;--jn-text-muted:#697380;--jn-accent:#c86f06;--jn-accent-hover:#b26305;--jn-accent-text:#a85d04;--jn-accent-ink:#1a1206;--jn-green:#158054;--jn-red:#c93f32;--jn-blue:#2563eb;--jn-amber:#886609;--jn-btn-bg:#e9edf1;--jn-btn-border:#d5dbe2;--jn-ghost-border:#c3cad2;--jn-divider:#dfe3e880;--jn-hover:#0000000a;--jn-menu-bg:#fff;--jn-menu-border:#dfe3e8;--jn-info:#46688c;--jn-route-violet:#7a56b8;--jn-route-teal:#1f847e;--jn-route-pink:#b34d89;--jn-backdrop:#14181e73}*{box-sizing:border-box}html.theme-fade *,html.theme-fade :before,html.theme-fade :after{transition:background-color .3s,color .3s,border-color .3s,filter .3s}@media (prefers-reduced-motion:reduce){html.theme-fade *,html.theme-fade :before,html.theme-fade :after{transition:none}.jn-spin{animation:none!important}}body{background:var(--jn-bg);color:var(--jn-text);margin:0;font-family:IBM Plex Sans,system-ui,sans-serif}@keyframes spin{to{transform:rotate(360deg)}}input[type=time]::-webkit-calendar-picker-indicator{filter:invert(.7);cursor:pointer}:root[data-theme=light] input[type=time]::-webkit-calendar-picker-indicator{filter:none}input::placeholder{color:var(--jn-text-muted)}input:focus{border-color:var(--jn-accent);outline:none}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--jn-accent);outline-offset:2px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}button{font-family:IBM Plex Sans,system-ui,sans-serif}.jn-header-wordmark{filter:brightness(0)invert()}:root[data-theme=light] .jn-header-wordmark{filter:brightness(0)}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--jn-input-border);border-radius:6px}::-webkit-scrollbar-track{background:0 0}.jn-shell{padding:22px 22px 30px}.jn-header{border-bottom:1px solid var(--jn-border-soft);align-items:center;gap:14px;margin-bottom:18px;display:flex}.jn-header-brand{align-items:center;gap:14px;margin-right:auto;display:flex}.jn-header-status{align-items:center;gap:14px;display:flex}.jn-header-actions{align-items:stretch;gap:14px;display:flex}.jn-header-icon{width:58px;height:58px}.jn-header-wordmark{width:163px;height:38px}.jn-log-head,.jn-log-row{grid-template-columns:100px 96px 1fr;display:grid}.jn-log-list{max-height:414px;overflow-y:auto}.jn-settings{padding-bottom:28px}@media (width<=900px){.jn-shell{padding:14px 14px 24px}.jn-header{flex-wrap:wrap;row-gap:10px;padding-bottom:4px}.jn-header-actions{order:2}.jn-header-status{flex-basis:100%;order:3}.jn-header-icon{width:44px;height:44px}.jn-header-wordmark{width:120px;height:28px}.jn-log-head{display:none}.jn-log-row{grid-template-columns:84px 1fr;row-gap:4px}.jn-log-row>:nth-child(3){grid-column:1/-1}}.jn-home{flex-direction:column;gap:16px;display:flex}.grid-top{grid-template-columns:minmax(0,1fr) 360px;align-items:stretch;gap:16px;display:grid}.grid-bottom{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:stretch;gap:16px;display:grid}.rail{flex-direction:column;gap:16px;min-width:0;display:flex}.panel.elastic{flex-direction:column;flex:1;min-height:0;display:flex}.gcell{min-width:0;position:relative}.gcell .panel{flex-direction:column;display:flex;position:absolute;inset:0}.gcell .glist{flex:1;min-height:0;max-height:none}@media (width<=1200px){.grid-top,.grid-bottom{grid-template-columns:1fr}.gcell .panel{position:static}.gcell .glist{max-height:360px}}.panel{background:var(--jn-panel);border:1px solid var(--jn-border);border-radius:12px;overflow:hidden}.panel-hd{border-bottom:1px solid var(--jn-border-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.panel-hd h2{letter-spacing:.02em;margin:0;font-size:16px;font-weight:700}.panel-hd .count{color:var(--jn-text-muted);font-weight:400}.panel-bd{padding:16px}.panel-empty{text-align:center;color:var(--jn-text-dim);padding:26px 16px;font-size:13.5px}.mono{font-family:IBM Plex Mono,ui-monospace,monospace}.diagram-scroll{overflow-x:auto}.diagram{grid-template-columns:235px 235px;justify-content:space-between;gap:40px;min-width:620px;padding:8px 84px 8px 8px;display:grid;position:relative}.wires{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.wires path{fill:none;stroke-width:2px;transition:opacity .15s,stroke-width .15s}.wires .dim{opacity:.18}.wires path.hl{stroke-width:3px}@keyframes wireflow{to{stroke-dashoffset:-24px}}.wires path.running{stroke-dasharray:7 5;animation:.9s linear infinite wireflow}@media (prefers-reduced-motion:reduce){.wires path.running,.dot.pulse,.runbar:after{animation:none}}.dcol{z-index:1;flex-direction:column;gap:16px;display:flex;position:relative}.dcol-label{letter-spacing:.8px;text-transform:uppercase;color:var(--jn-text-muted);font-size:11px;font-weight:600}.device{background:var(--jn-panel-alt);border:1px solid var(--jn-border);border-radius:10px;padding:10px 13px;transition:opacity .15s,border-color .15s}.device.dim{opacity:.35}.device.hl{border-color:var(--jn-ghost-border)}.device-top{align-items:center;gap:8px;display:flex}.device-ico{color:var(--jn-text-dim);flex:none;display:inline-flex}.device-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.device-host{color:var(--jn-text-dim);margin-top:2px;font-size:12.5px}.device-state{align-items:center;gap:6px;margin-top:6px;font-size:12.5px;display:flex}.dev-actions{gap:6px;margin-top:9px;display:flex}.dev-actions .btn{padding:3px 10px;font-size:12.5px}.dot{border-radius:50%;flex:none;width:7px;height:7px}.dot.on{background:var(--jn-green)}.dot.off{background:var(--jn-text-muted)}@keyframes pulseDot{0%,to{opacity:1}50%{opacity:.35}}.dot.pulse{animation:1.4s infinite pulseDot}.state-on{color:var(--jn-green)}.state-off{color:var(--jn-text-faint)}.pwr{border:1px solid var(--jn-input-border);width:24px;height:24px;color:var(--jn-text-dim);cursor:pointer;background:0 0;border-radius:7px;flex:none;justify-content:center;align-items:center;padding:0;font-size:13.5px;line-height:1;display:inline-flex}.pwr:hover:not(:disabled){border-color:var(--jn-accent);color:var(--jn-accent)}.pwr:disabled{opacity:.4;cursor:not-allowed}.dbar{background:var(--jn-input-bg);border-radius:999px;height:8px;margin-top:8px;overflow:hidden}.dbar>div{background:linear-gradient(90deg, var(--jn-accent), var(--jn-accent-hover));border-radius:999px;height:100%}.dbar-lab{color:var(--jn-text-faint);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:4px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;display:flex}.route-list{flex-direction:column;gap:10px;display:flex}.route-card{background:var(--jn-panel-alt);border:1px solid var(--jn-border);cursor:default;border-radius:10px;grid-template-columns:minmax(210px,1.3fr) minmax(170px,1fr) minmax(150px,.8fr) auto;align-items:center;gap:8px 18px;padding:12px 15px;display:grid}.route-card:hover{background:var(--jn-hover);border-color:var(--jn-ghost-border)}.route-card.off{opacity:.55}.route-name-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.route-dot{border-radius:50%;flex:none;width:9px;height:9px}.route-name{font-weight:600}.badge{letter-spacing:.5px;text-transform:uppercase;color:var(--jn-text-dim);border:1px solid var(--jn-input-border);border-radius:5px;padding:1px 6px;font-size:11px;font-weight:600}.badge.sync{color:var(--jn-amber);border-color:var(--jn-amber)}.badge.ext{color:var(--jn-route-violet);border-color:var(--jn-route-violet)}.badge.verify{color:var(--jn-route-teal);border-color:var(--jn-route-teal)}.route-path{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.chip-s{background:var(--jn-input-bg);border:1px solid var(--jn-input-border);color:var(--jn-text-mid);border-radius:6px;padding:1px 7px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px}.arrow{color:var(--jn-text-muted)}.route-mid{color:var(--jn-text-dim);font-size:12.5px}.route-mid .cron{color:var(--jn-text-mid);font-size:12.5px}.route-mid div+div{margin-top:3px}.route-status{min-width:0}.route-right{justify-self:end;align-items:center;gap:14px;display:flex}@media (width<=640px){.route-card{grid-template-columns:1fr}.route-right{justify-self:start}}.uplist{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.uprow{border-bottom:1px solid var(--jn-divider);flex:1 0 auto;align-items:center;gap:10px;padding:9px 16px;font-size:13.5px;display:flex}.uprow:last-child{border-bottom:none}.uprow .rdot{border-radius:50%;flex:none;width:8px;height:8px}.uprow .rname{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.uprow .uwhen{color:var(--jn-text-dim);font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px}.uprow.now .uwhen{color:var(--jn-accent-text);font-weight:600}.btn{background:var(--jn-btn-bg);border:1px solid var(--jn-btn-border);color:var(--jn-text-mid);cursor:pointer;white-space:nowrap;border-radius:8px;padding:8px 14px;font-family:inherit;font-size:13.5px}.btn:hover{border-color:var(--jn-ghost-border);color:var(--jn-text)}.btn-accent{background:var(--jn-accent);border-color:var(--jn-accent);color:var(--jn-accent-ink);font-weight:600}.btn-accent:hover{background:var(--jn-accent-hover);border-color:var(--jn-accent-hover);color:var(--jn-accent-ink)}.btn-outline-danger{color:var(--jn-red);border-color:color-mix(in srgb, var(--jn-red) 45%, transparent)}.btn-outline-danger:hover{color:var(--jn-red);border-color:var(--jn-red)}.btn-danger-solid{background:var(--jn-red);border-color:var(--jn-red);color:var(--jn-accent-ink);font-weight:600}:root[data-theme=light] .btn-danger-solid{color:#fff}.btn-danger-solid:hover{background:color-mix(in srgb, var(--jn-red) 85%, black);border-color:var(--jn-red);color:#fff}.btn:disabled{opacity:.5;cursor:not-allowed}.fchips{flex-wrap:wrap;gap:6px;display:flex}.fchip{border:1px solid var(--jn-input-border);color:var(--jn-text-dim);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:3px 11px;font-family:inherit;font-size:12.5px;display:inline-flex}.fchip .rdot{border-radius:50%;width:7px;height:7px}.fchip.on{border-color:var(--jn-accent);color:var(--jn-text);background:color-mix(in srgb, var(--jn-accent) 9%, transparent)}.table-scroll{height:418px;overflow:auto}.table-scroll.uncapped{height:auto;min-height:418px}.htable{border-collapse:collapse;width:100%;font-size:13.5px}.htable th{text-align:left;letter-spacing:.08em;text-transform:uppercase;color:var(--jn-text-faint);border-bottom:1px solid var(--jn-border-soft);background:var(--jn-panel);box-shadow:inset 0 -1px 0 var(--jn-border-soft);padding:4px 16px 8px;font-size:11px;font-weight:600;position:sticky;top:0}.htable td{border-bottom:1px solid var(--jn-divider);vertical-align:middle;padding:8px 16px}.htable tr:last-child td{border-bottom:none}.htable .rdot{vertical-align:0;border-radius:50%;width:8px;height:8px;margin-right:7px;display:inline-block}.htable .when,.htable .dur{color:var(--jn-text-dim);font-variant-numeric:tabular-nums;white-space:nowrap;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px}.kind{color:var(--jn-text-faint);font-size:11px}.res{white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:12.5px;font-weight:500;display:inline-flex}.hrow.x{cursor:pointer}.hrow.x:hover td{background:var(--jn-hover)}.xbtn{cursor:pointer;width:14px;color:var(--jn-text-faint);background:0 0;border:none;margin-right:4px;padding:0;font-size:11px;transition:transform .15s;display:inline-block}.hrow.open .xbtn{transform:rotate(90deg)}.drow td{background:var(--jn-panel-alt);border-bottom:1px solid var(--jn-divider);padding:12px 16px 14px 46px}.steps{flex-direction:column;gap:3px;margin-bottom:10px;display:flex}.step{color:var(--jn-text-dim);align-items:baseline;gap:8px;font-size:12.5px;display:flex}.step .sname{color:var(--jn-text-mid);min-width:130px;font-family:IBM Plex Mono,ui-monospace,monospace}.step .sdur{font-variant-numeric:tabular-nums;color:var(--jn-text-faint)}.step .sdetail{color:var(--jn-text-faint);overflow-wrap:anywhere;min-width:0}.tasklog{color:var(--jn-text-mid);white-space:pre;margin:0;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px;line-height:1.75;overflow-x:auto}.tasklog .tl-err{color:var(--jn-red)}.tasklog.tl-err{white-space:pre-wrap;overflow-wrap:anywhere;overflow-x:visible}.tasklog .tl-warn{color:var(--jn-amber)}.tasklog-empty{color:var(--jn-text-muted);font-size:12.5px}.runbar{background:var(--jn-input-bg);border-radius:2px;height:3px;margin-bottom:12px;position:relative;overflow:hidden}.runbar:after{content:"";background:var(--jn-accent);border-radius:2px;width:33%;animation:1.6s ease-in-out infinite alternate slide;position:absolute;inset:0}@keyframes slide{0%{left:0}to{left:67%}}.drow-actions{justify-content:flex-start;gap:8px;margin-bottom:10px;display:flex}.glist{max-height:360px;overflow-y:auto}.grow{border-bottom:1px solid var(--jn-divider);align-items:center;gap:9px;padding:7px 16px;display:flex}.grow:last-child{border-bottom:none}.gdiv{letter-spacing:.6px;text-transform:uppercase;color:var(--jn-text-muted);background:var(--jn-panel-alt);z-index:1;padding:7px 16px 5px;font-size:11px;font-weight:600;position:sticky;top:0}.gtype{border-radius:5px;flex:none;justify-content:center;align-items:center;width:26px;padding:2px 0;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;font-weight:600;display:inline-flex}.gtype.vm{color:var(--jn-blue);background:color-mix(in srgb, var(--jn-blue) 14%, transparent)}.gtype.ct{color:var(--jn-green);background:color-mix(in srgb, var(--jn-green) 14%, transparent)}.gid{color:var(--jn-text-faint);flex:none;width:34px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px}.gname{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13.5px;font-weight:500;overflow:hidden}.gwhen{color:var(--jn-text-dim);font-variant-numeric:tabular-nums;flex:none;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px}.gwhen.gnever{color:var(--jn-amber);font-weight:600}.nwarn{color:var(--jn-amber);white-space:nowrap;margin-right:auto;font-size:12.5px;font-weight:600}.pbschip{border:1px solid var(--jn-input-border);color:var(--jn-text-dim);border-radius:5px;flex:none;padding:0 5px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px}.pbschip.two{border-color:var(--jn-amber);color:var(--jn-amber)}.gerr{color:var(--jn-red);font-size:12.5px}.gsearch{background:var(--jn-input-bg);border:1px solid var(--jn-input-border);color:var(--jn-text);border-radius:8px;width:150px;padding:5px 10px;font-family:inherit;font-size:12.5px}.gsearch:focus{border-color:var(--jn-accent);outline:none}.gsearch:focus-visible{outline:2px solid var(--jn-accent);outline-offset:2px}.gsearch::placeholder{color:var(--jn-text-muted)}.modal-layer{z-index:50;display:none;position:fixed;inset:0}.modal-layer.open{display:block}.modal-backdrop{background:var(--jn-backdrop);position:absolute;inset:0}.modal-scroll{justify-content:center;align-items:flex-start;padding:14vh 16px 6vh;display:flex;position:absolute;inset:0;overflow-y:auto}.modal{background:var(--jn-panel);border:1px solid var(--jn-border);border-radius:12px;width:100%;max-width:420px;position:relative;box-shadow:0 18px 60px #00000073}.modal.modal-lg{max-width:700px}.modal-lg-scroll{padding-top:6vh}.modal-hd{border-bottom:1px solid var(--jn-border-soft);justify-content:space-between;align-items:center;padding:13px 16px;display:flex}.modal-hd h2{margin:0;font-size:13.5px;font-weight:700}.modal-x{color:var(--jn-text-dim);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:16px;line-height:1}.modal-x:hover{color:var(--jn-text);background:var(--jn-hover)}.modal-bd{flex-direction:column;gap:14px;padding:16px;display:flex}.modal-bd .lab{color:var(--jn-text-mid);margin-bottom:6px;font-size:12.5px;font-weight:600;display:block}.modal-note{color:var(--jn-text-dim);margin:0;font-size:12.5px;line-height:1.5}.modal-foot{border-top:1px solid var(--jn-border-soft);justify-content:flex-end;gap:10px;padding:13px 16px;display:flex}.foot-left{margin-right:auto}.tglrow{color:var(--jn-text-mid);cursor:pointer;align-items:center;gap:10px;font-size:13.5px;display:flex}.modal input[type=text],.modal input[type=password],.modal input[type=number],.modal input[type=time]{background:var(--jn-input-bg);border:1px solid var(--jn-input-border);color:var(--jn-text);border-radius:8px;width:100%;padding:7px 10px;font-family:inherit;font-size:13.5px}.modal input[type=time]{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:16px;font-weight:500}.modal input:focus,.modal select:focus{border-color:var(--jn-accent);outline:none}.modal input::placeholder{color:var(--jn-text-muted)}.modal select{background:var(--jn-input-bg);border:1px solid var(--jn-input-border);color:var(--jn-text);border-radius:8px;width:100%;padding:7px 10px;font-family:inherit;font-size:13.5px}.rm-bd{flex-direction:column;gap:18px;padding:18px;display:flex}.frow{grid-template-columns:1fr 1fr;gap:18px 26px;display:grid}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field label,.field .lab{color:var(--jn-text-mid);font-size:12.5px;font-weight:600}.field .help{color:var(--jn-text-faint);font-size:12.5px}.field .err{color:var(--jn-red);font-size:12.5px}.form-banner{background:color-mix(in srgb, var(--jn-red) 10%, transparent);border:1px solid color-mix(in srgb, var(--jn-red) 40%, transparent);color:var(--jn-red);border-radius:8px;padding:10px 12px;font-size:12.5px;line-height:1.5}.form-warn{color:var(--jn-amber);font-size:12.5px;line-height:1.5}.swatches{align-items:center;gap:10px;height:35px;display:flex}.swatch{cursor:pointer;border:none;border-radius:50%;flex:none;width:24px;height:24px;position:relative}.swatch.sel{box-shadow:0 0 0 2px var(--jn-panel), 0 0 0 4px var(--jn-text-mid)}.swatch.sel:after{content:"✓";color:#000000a6;justify-content:center;align-items:center;font-size:12.5px;font-weight:700;display:flex;position:absolute;inset:0}.swatch.custom{background:conic-gradient(#e5675b,#e0a92b,#3fb27f,#3b82f6,#9d7bd8,#e5675b);display:inline-flex;overflow:hidden}.swatch.custom input{opacity:0;cursor:pointer;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--jn-input-bg);border:1px solid var(--jn-input-border);color:var(--jn-text-mid);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;align-items:center;gap:7px;padding:6px 11px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:13.5px;display:inline-flex}.chip .k{letter-spacing:.5px;color:var(--jn-text-muted);text-transform:uppercase;font-family:IBM Plex Sans,system-ui,sans-serif;font-size:11px;font-weight:600}.chip:hover{border-color:var(--jn-ghost-border)}.chip.on{border-color:var(--jn-accent);color:var(--jn-text);background:color-mix(in srgb, var(--jn-accent) 9%, transparent)}.chip.on .k{color:var(--jn-accent-text)}.chip[aria-disabled=true]{opacity:.35;cursor:not-allowed}.preview-strip{background:var(--jn-input-bg);border:1px dashed var(--jn-input-border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;padding:11px 14px;display:flex}.preview-lab{letter-spacing:.6px;text-transform:uppercase;color:var(--jn-text-muted);margin-right:2px;font-size:11px;font-weight:600}.preview-note{color:var(--jn-text-faint);font-size:12.5px}.preview-err{color:var(--jn-red);font-size:12.5px}.sched-row{flex-wrap:wrap;align-items:flex-end;gap:22px;display:flex}.days{grid-template-columns:repeat(7,46px);gap:7px;display:grid}.day-btn{text-align:center;color:var(--jn-text-faint);border:1px solid var(--jn-input-border);letter-spacing:.04em;cursor:pointer;background:0 0;border-radius:7px;padding:8px 0;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px;font-weight:600}.day-btn.on{background:var(--jn-accent);color:var(--jn-accent-ink);border-color:var(--jn-accent)}.seg{background:var(--jn-input-bg);border:1px solid var(--jn-input-border);border-radius:8px;gap:3px;max-width:300px;padding:3px;display:flex}.seg.seg-wide{max-width:380px}.seg-btn{text-align:center;color:var(--jn-text-dim);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:1;padding:7px 4px;font-family:inherit;font-size:12.5px;font-weight:600}.seg-btn.on{background:var(--jn-accent);color:var(--jn-accent-ink)}.guest-list{border:1px solid var(--jn-border-soft);border-radius:8px;max-height:240px;overflow-y:auto}.guest-group{letter-spacing:.6px;text-transform:uppercase;color:var(--jn-text-muted);background:var(--jn-panel-alt);padding:7px 14px 5px;font-size:11px;font-weight:600;position:sticky;top:0}.guest-row{border-bottom:1px solid var(--jn-divider);align-items:center;gap:10px;padding:7px 14px;display:flex}.guest-row:last-child{border-bottom:none}.guest-row.off .gname{color:var(--jn-text-muted)}.guest-row.excluded .gname{text-decoration:line-through}.guest-row.gone .gname,.guest-row.gone .gid{color:var(--jn-text-faint);font-style:italic}.guest-row.gone .gtype{color:var(--jn-text-faint);background:var(--jn-panel-alt)}.guest-empty{text-align:center;color:var(--jn-text-muted);padding:16px;font-size:12.5px}.retention-row{flex-wrap:wrap;gap:14px;display:flex}.retention-row .r{flex-direction:column;gap:4px;width:92px;display:flex}.retention-row .r span{color:var(--jn-text-faint);font-size:12.5px}.retention-row input{font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,ui-monospace,monospace}.radio-row{color:var(--jn-text-mid);flex-wrap:wrap;gap:16px;font-size:13.5px;display:flex}.radio-row label{cursor:pointer;align-items:center;gap:6px;font-weight:400;display:inline-flex}details.adv{border-top:1px solid var(--jn-border-soft)}details.adv summary{cursor:pointer;color:var(--jn-text-mid);align-items:center;gap:7px;padding:12px 0 2px;font-size:12.5px;font-weight:600;list-style:none;display:flex}details.adv summary::-webkit-details-marker{display:none}details.adv summary:before{content:"▸";color:var(--jn-text-faint);font-size:11px;transition:transform .15s}details.adv[open] summary:before{transform:rotate(90deg)}.adv-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px 22px;padding:12px 0 2px;display:grid}.adv-toggles{flex-direction:column;gap:10px;padding-top:12px;display:flex}@media (width<=640px){.frow{grid-template-columns:1fr}.days{grid-template-columns:repeat(7,1fr)}.route-right,.grow{flex-wrap:wrap}.gname{min-width:120px}.htable thead{display:none}.htable,.htable tbody{display:block}.htable tr.hrow{border-bottom:1px solid var(--jn-divider);grid-template-columns:1fr auto;row-gap:2px;padding:8px 16px;display:grid}.htable .hrow td{border-bottom:none;padding:0;display:block}.htable .hrow td:first-child{grid-area:1/1}.htable .hrow td:nth-child(5){grid-area:1/2;justify-self:end}.htable .hrow td.kind{grid-area:2/1/auto/-1}.htable .hrow td.when{grid-area:3/1}.htable .hrow td.dur{grid-area:3/2;justify-self:end}.htable tr.drow{display:block}.htable .drow td{padding:10px 12px;display:block}.diagram{grid-template-columns:1fr;gap:20px;min-width:0;padding:8px}.wires{display:none}.pwr{position:relative}.pwr:after{content:"";position:absolute;inset:-10px}.fchip{align-items:center;min-height:44px;padding:6px 14px;display:inline-flex}.fchips{gap:8px}.route-right .btn,.dev-actions .btn,.drow-actions .btn{padding:11px 16px}}.fchip:focus-visible,.xbtn:focus-visible,.pwr:focus-visible,.chip:focus-visible,.swatch:focus-within,.day-btn:focus-visible,.seg-btn:focus-visible,.modal-x:focus-visible,.modal select:focus-visible,.modal input:focus-visible,.btn:focus-visible{outline:2px solid var(--jn-accent);outline-offset:2px}.page-title{margin:6px 0 14px;font-size:19px;font-weight:700}.tabs{border-bottom:1px solid var(--jn-border);flex-wrap:nowrap;gap:6px;margin-bottom:20px;display:flex;overflow-x:auto}.tab{color:var(--jn-text-dim);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:9px 14px 11px;font-family:inherit;font-size:13.5px;font-weight:600}.tab:hover{color:var(--jn-text)}.tab.on{color:var(--jn-accent-text);border-bottom-color:var(--jn-accent)}.tab:focus-visible{outline:2px solid var(--jn-accent);outline-offset:-2px}.jn-settings .panel{margin-bottom:18px}.jn-settings .panel:last-child{margin-bottom:0}.panel-hint{color:var(--jn-text-faint);font-size:12.5px}.help{color:var(--jn-text-faint);font-size:12.5px;line-height:1.5}.panel-actions{align-items:center;gap:8px;display:flex}.stack{flex-direction:column;gap:16px;display:flex}.stack.tight{gap:12px}.btn-sm{padding:5px 10px;font-size:12.5px}.btn-danger-ghost{color:var(--jn-red)}.btn-danger-ghost:hover{color:var(--jn-red);border-color:color-mix(in srgb, var(--jn-red) 50%, transparent)}.dev-grid{grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:12px;display:grid}.dev-card{background:var(--jn-panel-alt);border:1px solid var(--jn-border);border-radius:10px;padding:13px 15px}.dev-top{align-items:center;gap:8px;display:flex}.dev-ico{color:var(--jn-text-dim);flex:none;display:inline-flex}.dev-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.dev-badge{letter-spacing:.5px;text-transform:uppercase;color:var(--jn-text-dim);border:1px solid var(--jn-input-border);white-space:nowrap;border-radius:5px;flex:none;padding:1px 6px;font-size:11px;font-weight:600}.dev-host{color:var(--jn-text-dim);word-break:break-all;margin-top:3px;font-size:12.5px}.dev-meta{color:var(--jn-text-faint);margin-top:5px;font-size:12.5px}.dev-state{align-items:center;gap:6px;margin:8px 0 11px;font-size:12.5px;display:flex}.dev-actions{border-top:1px solid var(--jn-divider);gap:8px;padding-top:11px;display:flex}.spacer{flex:1}.chan{border:1px solid var(--jn-border);background:var(--jn-panel-alt);border-radius:10px}.chan-hd{cursor:pointer;align-items:center;gap:11px;padding:12px 15px;display:flex}.chan-hd.static{cursor:default}.chan-name{flex:1;font-weight:600}.chan-hint{color:var(--jn-text-faint);font-size:12.5px}.chan-fields{border-top:1px solid var(--jn-divider);padding:14px 15px}.url-row{align-items:center;gap:8px;display:flex}.url-row>input{flex:1}.save-row{border-top:1px solid var(--jn-divider);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;padding-top:14px;display:flex}.save-row .help{color:var(--jn-text-faint);font-size:12.5px}.save-row.bare{border-top:none;padding-top:0}.ok-note{color:var(--jn-green);font-size:12.5px}.err-note{color:var(--jn-red);font-size:12.5px}.yaml{background:var(--jn-input-bg);border:1px solid var(--jn-input-border);color:var(--jn-text-mid);white-space:pre;border-radius:8px;margin:0;padding:12px 14px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px;line-height:1.7;overflow-x:auto}.seg-inline{display:inline-flex}.seg-inline .seg-btn{flex:none;padding:6px 14px}.frow3{grid-template-columns:1fr 1fr 1fr;gap:16px 24px;display:grid}.span2{grid-column:span 2}.in-mono{font-family:IBM Plex Mono,ui-monospace,monospace}.msec{letter-spacing:.7px;text-transform:uppercase;color:var(--jn-text-muted);border-bottom:1px solid var(--jn-border-soft);padding-bottom:5px;font-size:11px;font-weight:600}.jn-settings input[type=text],.jn-settings input[type=password],.jn-settings input[type=number],.jn-settings input:not([type]),.jn-settings select,.jn-settings textarea{background:var(--jn-input-bg);border:1px solid var(--jn-input-border);color:var(--jn-text);border-radius:8px;width:100%;padding:7px 10px;font-family:inherit;font-size:13.5px}.jn-settings input.in-mono,.jn-settings select.in-mono{font-family:IBM Plex Mono,ui-monospace,monospace}.jn-settings textarea{resize:vertical;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px;line-height:1.6}.jn-settings input:focus,.jn-settings select:focus,.jn-settings textarea:focus{border-color:var(--jn-accent);outline:none}.jn-settings input:focus-visible,.jn-settings select:focus-visible,.jn-settings textarea:focus-visible{outline:2px solid var(--jn-accent);outline-offset:2px}.jn-settings input::placeholder,.jn-settings textarea::placeholder{color:var(--jn-text-muted)}.jn-settings input[readonly]{color:var(--jn-text-mid)}@media (width>=641px){.jn-settings .frow{grid-template-columns:repeat(2,minmax(0,420px))}.jn-settings .frow3{grid-template-columns:repeat(3,minmax(0,300px))}}@media (width<=640px){.frow,.frow3{grid-template-columns:1fr}.span2{grid-column:auto}}.wsteps{align-items:center;gap:0;padding:14px 18px 0;display:flex}.wstep{align-items:center;gap:7px;display:flex}.wstep .sn{border:1px solid var(--jn-input-border);width:22px;height:22px;color:var(--jn-text-faint);border-radius:50%;flex:none;justify-content:center;align-items:center;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px;font-weight:700;display:inline-flex}.wstep .sl{color:var(--jn-text-faint);white-space:nowrap;font-size:12.5px;font-weight:600}.wstep.cur .sn{background:var(--jn-accent);border-color:var(--jn-accent);color:var(--jn-accent-ink)}.wstep.cur .sl{color:var(--jn-text)}.wstep.done .sn{border-color:var(--jn-green);color:var(--jn-green)}.wstep.done .sl{color:var(--jn-text-dim)}.wstep-line{background:var(--jn-border);flex:1;min-width:14px;height:1px;margin:0 10px}@media (width<=560px){.wstep .sl{display:none}}.warn{background:color-mix(in srgb, var(--jn-amber) 10%, transparent);border:1px solid color-mix(in srgb, var(--jn-amber) 45%, transparent);color:var(--jn-text-mid);border-radius:8px;align-items:flex-start;gap:9px;padding:10px 13px;font-size:12.5px;line-height:1.5;display:flex}.warn .wi{color:var(--jn-amber);flex:none}.okline{color:var(--jn-green);align-items:center;gap:8px;font-size:13.5px;display:flex}.okline .mono{color:var(--jn-text-dim);font-size:12.5px}.detected{background:var(--jn-panel-alt);border:1px solid var(--jn-border);border-radius:10px;flex-direction:column;gap:5px;padding:12px 14px;font-size:13.5px;display:flex}.detected .t{font-weight:600}.detected .m{color:var(--jn-text-faint);font-size:12.5px}.found{background:var(--jn-panel-alt);border:1px solid var(--jn-border);border-radius:10px;align-items:center;gap:12px;padding:12px 14px;display:flex}.found+.found{margin-top:8px}.found .fi{flex:1;min-width:0}.found .t{font-size:13.5px;font-weight:600}.found .t .mono{color:var(--jn-text-faint);font-size:12.5px;font-weight:400}.found .m{color:var(--jn-text-faint);margin-top:2px;font-size:12.5px}.found .linked{color:var(--jn-green);white-space:nowrap;font-size:12.5px;font-weight:600}.keyblock{background:var(--jn-input-bg);border:1px solid var(--jn-input-border);color:var(--jn-text-mid);white-space:pre;border-radius:8px;padding:10px 12px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px;overflow-x:auto}.testline{align-items:flex-start;gap:9px;padding:4px 0;font-size:13.5px;line-height:1.5;display:flex}.testline .ok{color:var(--jn-green);flex:none}.testline .bad{color:var(--jn-red);flex:none}.inline-row{gap:8px;display:flex}.inline-row input{flex:1;min-width:0}
