/*! RouteCraft © 2026. All rights reserved. Copying, redistribution or reuse of this code is not permitted. */
:root{--ink:#18283e;--muted:#8792a2;--line:#e4e9ef;--teal:#007f78;--mint:#5bd5bd;--navy:#111c2b;--bg:#f5f7fa}*{box-sizing:border-box}body{margin:0;color:var(--ink);font:calc(13px*var(--fs)) var(--ui-font);background:var(--bg-f7f9fb)}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--focus);outline-offset:2px}button{border:0;background:none;color:inherit}header{height:72px;background:var(--navy);color:var(--fg-d7e0ec);display:flex;align-items:center;padding:0 28px;gap:52px}.brand{color:var(--fg-ffffff);display:flex;align-items:center;text-decoration:none;font-size:calc(23px*var(--fs));font-weight:700;letter-spacing:-.9px}.brand>span:not(.brandmark){font-weight:400;color:var(--fg-a7b6c9)}.brandmark{width:33px;height:33px;border:1px solid var(--bd-4ac8b7);border-radius:9px;margin-right:11px;text-align:center;line-height:30px;color:var(--mint);font-size:calc(27px*var(--fs))}.brand small{font-size:calc(9px*var(--fs));letter-spacing:1.8px;margin-left:11px;border:1px solid var(--bd-3a4c60);padding:4px 6px;border-radius:4px;color:var(--fg-9daec3)}nav{height:100%;display:flex;gap:24px}.nav{color:var(--fg-94a6bd);height:100%;position:relative;padding:0;font-weight:600}.nav.active{color:var(--fg-ffffff)}.nav.active:after{content:'';position:absolute;bottom:0;left:0;right:0;background:var(--mint);height:3px}.count{background:var(--bg-2b3a4d);font-size:calc(10px*var(--fs));padding:2px 5px;margin-left:5px;border-radius:4px}.header-right{display:flex;align-items:center;gap:16px;margin-left:auto}.local{font-size:calc(11px*var(--fs));color:var(--fg-98aabc)}.local i,footer i{display:inline-block;width:6px;height:6px;background:var(--bg-5ec5a5);border-radius:50%;margin-right:5px}.btn{border-radius:7px;padding:10px 14px;font-weight:600;display:inline-flex;align-items:center;gap:7px;justify-content:center}.btn.primary{color:var(--fk-102f2a);background:var(--bg-6cdbc1)}.btn.primary:hover{background:var(--bg-8fe7d3)}.btn.subtle{border:1px solid var(--bd-38485c);color:var(--fg-ccdae8)}.btn.outline{border:1px solid var(--bd-dce3e9);background:var(--bg-ffffff)}.btn.dark{background:var(--accent);color:var(--on-accent)}.btn.dark:hover{filter:brightness(1.08)}.btn.full{width:100%}.projectbar{height:66px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 25px;background:var(--bg-ffffff)}.projectbar>div{display:flex;gap:13px;align-items:center}.breadcrumb{font-size:calc(9px*var(--fs));letter-spacing:1.1px;color:var(--fg-96a1af)}.projectbar strong{font-size:calc(14px*var(--fs));font-weight:600}.badge{font-size:calc(8px*var(--fs));font-weight:700;letter-spacing:.8px;padding:5px 7px;border-radius:4px;background:var(--bg-e8f3f0);color:var(--fg-478879)}.projectactions{font-size:calc(11px*var(--fs))}.projectactions #saveStatus{color:var(--fg-96a0ad)}.textbtn{color:var(--fg-536378);font-size:calc(11px*var(--fs));padding:7px}.textbtn:hover{color:var(--teal)}main{display:grid;grid-template-columns:224px minmax(350px,1fr) 292px;height:calc(100vh - 170px);min-height:650px}.palette{border-right:1px solid var(--line);background:var(--bg-ffffff);position:relative;display:flex;flex-direction:column;padding:24px 17px 0}.sectionhead{display:flex;align-items:center;justify-content:space-between}h2{font-size:calc(14px*var(--fs));margin:0;font-weight:650}.tiny{font-size:calc(8px*var(--fs));color:var(--fg-97a1af);letter-spacing:.8px}.muted{color:var(--muted)}.small{font-size:calc(11px*var(--fs));line-height:1.6}.palette>p{margin:8px 0 18px}.segmented{display:flex;border:1px solid var(--bd-e8ebef);background:var(--bg-f5f7f9);border-radius:6px;padding:3px;margin-bottom:22px}.segmented button{flex:1;padding:6px 0;font-size:calc(10px*var(--fs));color:var(--fg-758397);border-radius:4px}.segmented button.selected{background:var(--bg-ffffff);color:var(--fg-223951);box-shadow:0 1px 3px var(--sh-142d41-0_071);font-weight:650}.group-label{font-size:calc(9px*var(--fs));letter-spacing:1.2px;font-weight:700;color:var(--fg-8b96a6);margin:0 0 10px 2px}.device-card{display:flex;align-items:center;text-align:left;width:100%;padding:13px 9px;margin-bottom:8px;border:1px solid var(--bd-e7ebef);border-radius:8px;gap:11px;background:var(--bg-ffffff);transition:.18s}.device-card:hover{border-color:var(--bd-4aa99e);background:var(--bg-f6fcfa);transform:translateY(-1px)}.device-card .mini-icon{width:35px;height:33px;color:var(--fg-4a7094);display:grid;place-items:center}.device-card.huawei .mini-icon{color:var(--fg-a16b69)}.device-card svg{width:31px;height:29px}.device-card strong{font-size:calc(11px*var(--fs));display:block;font-weight:600}.device-card small{display:block;font-size:calc(9px*var(--fs));color:var(--fg-95a0ad);margin-top:5px}.device-card .add{color:var(--fg-a3adba);margin-left:auto;font-size:calc(18px*var(--fs))}.palette-note{margin:auto 2px 22px;padding-top:27px;color:var(--fg-7a889a)}.palette-note>span{display:block;font-size:calc(25px*var(--fs));color:var(--fg-90ada9);margin-bottom:11px}.palette-note strong{display:block;font-size:calc(11px*var(--fs));color:var(--fg-566c7d)}.palette-note p{font-size:calc(10px*var(--fs));line-height:1.8}.library-footer{font-size:calc(10px*var(--fs));color:var(--fg-8290a1);border-top:1px solid var(--line);padding:15px 0;display:flex;justify-content:space-between;gap:7px}.workarea{display:flex;flex-direction:column;min-width:0;overflow:hidden}.canvas-toolbar{height:51px;flex-shrink:0;background:var(--bg-ffffff);border-bottom:1px solid var(--line);padding:0 20px;display:flex;align-items:center;justify-content:space-between}.tools{display:flex;align-items:center;gap:6px}.tool{height:31px;padding:0 10px;font-size:calc(16px*var(--fs));border-radius:5px;color:var(--fg-748398)}.tool span{font-size:calc(10px*var(--fs));margin-left:5px}.tool.selected{background:var(--bg-e8f4f0);color:var(--fg-007d70)}.divider{height:18px;width:1px;background:var(--line);margin:0 4px}.canvas-meta{display:flex;align-items:center;gap:7px;color:var(--fg-93a0b1);font-size:calc(9px*var(--fs))}.status-dot{width:2px;height:2px;border-radius:50%;background:var(--bg-a4afbd)}#canvas{position:relative;flex:1;min-height:310px;background-color:var(--bg-f6f8fb);background-image:radial-gradient(var(--bg-cdd7e2) .8px,transparent .8px);background-size:20px 20px;overflow:hidden}.canvas-label{position:absolute;left:22px;top:20px;font-size:calc(8px*var(--fs));letter-spacing:1.3px;color:var(--fg-93a0b0);pointer-events:none;z-index:2;display:flex;align-items:center;gap:7px}.live-dot{width:5px;height:5px;border-radius:50%;background:var(--bg-7da49b)}#stage{position:absolute;width:1000px;height:600px;transform-origin:0 0}#wires,#nodes{position:absolute;inset:0;width:100%;height:100%}#nodes{pointer-events:none}.node{pointer-events:auto;position:absolute;width:110px;height:105px;text-align:center;user-select:none;touch-action:none;cursor:grab}.node:active{cursor:grabbing}.node .device-icon{height:56px;width:68px;border-radius:13px;background:var(--bg-ffffff);border:1px solid var(--bd-dbe4ed);margin:0 auto 8px;box-shadow:0 5px 12px var(--sh-263d50-0_063);position:relative;display:grid;place-items:center;color:var(--fg-426c91)}.node.huawei .device-icon{color:var(--fg-9c6f64)}.node.pc .device-icon{color:var(--fg-63798b)}.device-icon svg{width:38px;height:34px}.node.selected .device-icon{box-shadow:0 0 0 4px var(--sh-6bc8b6-0_110),0 3px 10px var(--sh-365b59-0_063);border:1.7px solid var(--bd-199c8d);background:var(--bg-fbfffd)}.node.connecting .device-icon{outline:3px solid var(--bd-e5b655)}.node .node-name{font-size:calc(12px*var(--fs));font-weight:700;color:var(--fg-3c526b)}.node .node-model{font-size:calc(9px*var(--fs));color:var(--fg-6f7f92);letter-spacing:.4px;margin-top:4px}.node .node-ip{font:calc(10.5px*var(--fs)) var(--mono-font);color:var(--fg-5d6f84);margin-top:7px}.device-icon .node-led{position:absolute;right:7px;bottom:7px;width:5px;height:5px;background:var(--bg-36b596);border-radius:50%;box-shadow:0 0 0 2px var(--sh-ebfbf5)}.wire{stroke:var(--bg-76b9ac);stroke-width:2;fill:none;cursor:pointer}.wire.down{stroke:var(--bg-c1cbd7);stroke-dasharray:7 5}.wire-hit{stroke:transparent;stroke-width:18;fill:none;cursor:pointer}.wire.active{stroke:var(--bg-00a789);stroke-width:4;stroke-dasharray:9 6;animation:traffic .6s linear infinite}@keyframes traffic{to{stroke-dashoffset:-30}}.port-label{font-size:calc(10px*var(--fs));font-weight:600;fill:var(--fg-4d6075);paint-order:stroke;stroke:var(--bg-f6f8fb);stroke-width:4;stroke-linejoin:round;pointer-events:none}.canvas-hint{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);padding:8px 13px;background:var(--bg-ffffff-0_851);border:1px solid var(--bd-e7ecf2);border-radius:6px;font-size:calc(9px*var(--fs));color:var(--fg-8a99ac);white-space:nowrap;pointer-events:none}.canvas-hint span{margin:0 7px;color:var(--fg-b3becc)}.legend{position:absolute;bottom:19px;right:18px;font-size:calc(8px*var(--fs));color:var(--fg-92a0b1);display:flex;gap:9px}.legend i{display:inline-block;width:5px;height:5px;border-radius:50%;margin-right:4px}.green{background:var(--bg-59ad9b)}.gray{background:var(--bg-bac4d1)}.terminal{height:275px;flex-shrink:0;background:var(--bg-111c2b);color:var(--fg-afbdd0);display:flex;flex-direction:column}.terminal-head{display:flex;align-items:center;justify-content:space-between;background:var(--bg-192537);height:44px;flex-shrink:0;padding:0 14px;border-bottom:1px solid var(--bd-2d3b4e)}.terminal-tabs{display:flex;gap:20px;height:100%}.terminal-tabs button{color:var(--fg-7f92ab);font-size:calc(10px*var(--fs));padding:0 1px}.terminal-tabs button.active{color:var(--fg-dce8f3);border-bottom:2px solid var(--bd-5bd5bd)}.terminal-tabs button span{background:var(--bg-27364a);border-radius:3px;padding:2px 5px;margin-left:5px;font-size:calc(9px*var(--fs))}.terminal-status{font-size:calc(7px*var(--fs));letter-spacing:1px;color:var(--fg-7890a9)}.iconbtn{font-size:calc(15px*var(--fs));padding:7px 9px;color:var(--fg-8392a6);border-radius:5px}.iconbtn:hover{background:var(--bg-8899aa-0_102)}#terminalOutput{flex:1;overflow:auto;font:var(--cfs)/1.7 var(--mono-font);padding:13px 19px 3px;white-space:pre-wrap;overflow-wrap:anywhere}.output-line{margin:0;white-space:pre-wrap;word-break:break-word}.command-line{color:var(--fg-d9e8ef)}.output-welcome{color:var(--fg-6f879d)}.success{color:var(--fg-67d2b5)}.failure{color:var(--fg-f0b18d)}#cliForm{display:flex;align-items:center;gap:7px;padding:6px 18px;font:var(--cfs) var(--mono-font)}#prompt{color:var(--fg-6cdbc1);white-space:nowrap}#cliInput{background:none;border:0;outline:none;color:var(--fg-deebf3);width:100%;font:inherit;padding:3px 0}#cliInput::placeholder{color:var(--fg-52647a)}.enter-hint{color:var(--fg-4e657a)}.terminal-foot{display:flex;justify-content:space-between;font-size:calc(8px*var(--fs));color:var(--fg-51667f);padding:9px 18px 11px}.terminal-foot b{font-weight:400;color:var(--fg-8a9db1)}.inspector{border-left:1px solid var(--line);background:var(--bg-ffffff);overflow:auto}.inspector-tabs{display:flex;height:51px;align-items:stretch;border-bottom:1px solid var(--line);padding:0 20px;gap:26px}.inspector-tabs button{font-size:calc(11px*var(--fs));color:var(--fg-8a96a6);padding:0}.inspector-tabs .active{color:var(--teal);border-bottom:2px solid var(--teal)}#inspectorContent{padding:23px 20px}.device-title{display:flex;align-items:center;gap:12px;margin-bottom:23px}.device-title .devbadge{background:var(--bg-eef3f8);border-radius:9px;padding:8px;color:var(--fg-4a7799);width:43px;height:43px}.devbadge svg{width:26px;height:26px}.device-title h2{font-size:calc(18px*var(--fs))}.device-title small{display:block;color:var(--fg-96a1af);font-size:calc(9px*var(--fs));margin-top:5px}.status-pill{margin-left:auto;border-radius:12px;padding:4px 7px;color:var(--fg-418e7d);background:var(--bg-eaf6f0);font-size:calc(8px*var(--fs))}.label{display:block;font-size:calc(9px*var(--fs));letter-spacing:.9px;color:var(--fg-8391a3);font-weight:650;margin:21px 0 10px}.input,select{width:100%;padding:9px 10px;border:1px solid var(--bd-dce3eb);border-radius:5px;background:var(--bg-ffffff);color:var(--fg-425670);font-size:calc(11px*var(--fs))}.input::placeholder{color:var(--fg-a0adbc)}.field{margin-bottom:12px}.field>label{display:block;font-size:calc(10px*var(--fs));color:var(--fg-7c8b9d);margin-bottom:6px}.row{display:flex;gap:9px}.row>*{flex:1;min-width:0}.port-list{display:flex;flex-direction:column;gap:4px}.port-row{display:flex;align-items:center;gap:7px;padding:10px 8px;border-radius:5px;font:calc(9px*var(--fs)) var(--mono-font);text-align:left;width:100%}.port-row:hover,.port-row.chosen{background:var(--bg-eff6f5)}.port-row i{width:5px;height:5px;border-radius:50%;background:var(--bg-bac5d2)}.port-row i.up{background:var(--bg-45ae91)}.port-row .port-ip{margin-left:auto;color:var(--fg-95a2b0);font-size:calc(8px*var(--fs))}.port-editor{background:var(--bg-f7f9fb);border:1px solid var(--bd-e4eaf0);border-radius:7px;padding:13px;margin-top:12px}.port-editor .field{margin-bottom:10px}.checklabel{display:flex;align-items:center;gap:5px;color:var(--fg-7b8b9e);font-size:calc(10px*var(--fs));margin-bottom:12px}.checklabel input{accent-color:var(--bg-008979)}.subsection{border-top:1px solid var(--line);margin-top:22px;padding-top:1px}.ping-row{display:flex;gap:6px}.ping-row input{min-width:0}.ping-row button{white-space:nowrap;padding:9px 12px}.ping-result{font-size:calc(10px*var(--fs));line-height:1.7;margin-top:10px;border-radius:5px;padding:9px;background:var(--bg-f4f7fa);color:var(--fg-6c8094)}.danger{color:var(--fg-b27972)}.remove-device{margin-top:23px;font-size:calc(9px*var(--fs));padding:5px 0}.lab-card{border:1px solid var(--bd-e0e6ee);border-radius:9px;padding:18px;margin:12px 0;background:var(--bg-ffffff)}.lab-card h3{font-size:calc(16px*var(--fs));margin:7px 0 9px}.lab-card p{color:var(--fg-8090a4);font-size:calc(12px*var(--fs));line-height:1.7}.lab-level{font-size:calc(9px*var(--fs));letter-spacing:1px;color:var(--fg-0c9586)}.lab-card button{margin-top:10px}.objective{display:flex;gap:10px;padding:12px 0;border-bottom:1px solid var(--bd-edf0f4);font-size:calc(11px*var(--fs));line-height:1.6;color:var(--fg-6c7f95)}.objective .check{width:17px;height:17px;flex-shrink:0;border:1px solid var(--bd-d3dce7);border-radius:50%;color:var(--fg-8ba398);display:grid;place-items:center;font-size:calc(10px*var(--fs))}.objective.done .check{background:var(--bg-dff4eb);border-color:var(--bd-c2e6d8);color:var(--fg-148c68)}.labintro{font-size:calc(11px*var(--fs));line-height:1.8;color:var(--fg-8090a3)}.progressbar{height:4px;border-radius:5px;background:var(--bg-edf1f5);margin-top:18px;overflow:hidden}.progressbar span{display:block;height:100%;background:var(--bg-43b59c)}.micro{font-size:calc(9px*var(--fs));color:var(--fg-99a4b1)}.tips{font-size:calc(10px*var(--fs));line-height:1.9;color:var(--fg-7d8da1);background:var(--bg-f7f9fb);padding:12px;border-radius:6px;margin-top:16px}.tips code{font-size:calc(9px*var(--fs));color:var(--fg-4e817b);word-break:break-word}footer{height:32px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 23px;font-size:calc(8px*var(--fs));color:var(--fg-92a0b1);background:var(--bg-ffffff)}footer b{font-weight:400;margin-left:8px;color:var(--fg-b3bbc5)}dialog{width:min(760px,94vw);max-height:87vh;border:1px solid var(--bd-d6dfe9);border-radius:12px;padding:0;box-shadow:0 24px 80px var(--sh-001e49-0_200);color:var(--ink)}dialog::backdrop{background:var(--bg-0b1d3a-0_400);backdrop-filter:blur(3px)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--line)}.modal-header h2{font-size:calc(18px*var(--fs))}#modalBody{padding:20px 24px;overflow:auto}.modal-cols{display:grid;grid-template-columns:1fr 1fr;gap:22px}.codeblock{background:var(--bg-121e2e);color:var(--fg-b3c9dd);padding:18px;border-radius:8px;font:calc(11px*var(--fs))/1.7 var(--mono-font);white-space:pre-wrap}.scope{font-size:calc(12px*var(--fs));line-height:1.8;color:var(--fg-718299)}.scope strong{color:var(--fg-38536b)}#toast{position:fixed;bottom:49px;left:50%;transform:translateX(-50%);background:var(--bg-1c3f43);color:var(--fg-ffffff);border-radius:7px;padding:12px 19px;font-size:calc(12px*var(--fs));z-index:99;box-shadow:0 6px 20px var(--sh-102c33-0_133);display:none}.form-error{color:var(--fg-b75746);font-size:calc(11px*var(--fs));margin-top:10px}.empty{color:var(--fg-94a3b4);line-height:1.8;font-size:calc(12px*var(--fs))}.lab-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.lab-grid .lab-card{margin:0}.notes-table{width:100%;font-size:calc(11px*var(--fs));border-collapse:collapse}.notes-table th,.notes-table td{border-bottom:1px solid var(--bd-e3e9ef);padding:10px 8px;text-align:left}.notes-table th{color:var(--fg-76899c)}a{color:var(--fg-087e73)}@media(min-width:1600px){main{grid-template-columns:250px minmax(500px,1fr) 320px}.terminal{height:320px}}@media(max-width:1150px){header{gap:28px;padding:0 18px}.local{display:none}main{grid-template-columns:190px minmax(300px,1fr) 258px}.palette{padding:20px 12px 0}#inspectorContent{padding:20px 15px}.legend{display:none}.badge{display:none}.projectbar{padding:0 18px}.breadcrumb{display:none}.terminal-status{display:none}}@media(max-width:850px){header{height:62px;gap:22px}.brand{font-size:calc(20px*var(--fs))}.brand small{display:none}.header-right{gap:5px}.btn.subtle span{display:none}.header-right .btn{font-size:calc(10px*var(--fs));padding:8px 10px}nav{gap:15px}.nav{font-size:calc(11px*var(--fs))}.projectbar{height:55px}.projectbar strong{font-size:calc(12px*var(--fs))}.projectactions #saveStatus{display:none}main{height:auto;min-height:0;grid-template-columns:154px minmax(300px,1fr)}.palette{grid-row:1/3}.inspector{grid-column:2;border-top:1px solid var(--line);max-height:440px}.workarea{height:660px}.palette-note{display:none}.library-footer{margin-top:auto}.tiny{display:none}.device-card{gap:5px;padding:10px 5px}.device-card strong{font-size:calc(10px*var(--fs))}.device-card small{font-size:calc(8px*var(--fs))}.device-card .mini-icon{width:27px}.device-card .add{display:none}h2{font-size:calc(12px*var(--fs))}.canvas-hint{font-size:calc(8px*var(--fs));padding:7px;bottom:15px}.canvas-meta{display:none}footer>span:nth-child(2){display:none}.lab-grid{grid-template-columns:1fr}.lab-card{padding:14px}.lab-card h3{font-size:calc(14px*var(--fs))}.terminal-tabs{gap:12px}}@media(max-width:520px){header{gap:10px;padding:0 10px}.brand{font-size:calc(17px*var(--fs))}.brandmark{width:26px;height:27px;font-size:calc(22px*var(--fs));line-height:24px;margin-right:6px}.header-right .btn.subtle{display:none}nav{gap:10px}.nav{font-size:calc(10px*var(--fs))}.count{display:none}.projectbar{padding:0 10px}.projectbar strong{font-size:calc(11px*var(--fs))}.projectbar>div{gap:4px}main{grid-template-columns:1fr}.palette{grid-row:auto;grid-column:1;padding:12px 12px 5px;display:block;border-bottom:1px solid var(--line)}.palette>p,.segmented,.group-label,.library-footer{display:none}.sectionhead{margin-bottom:10px}#devices{display:flex;gap:6px;overflow:auto}.device-card{min-width:115px;margin:0 0 6px;padding:8px 5px}.inspector{grid-column:1}.workarea{height:660px}.modal-cols{grid-template-columns:1fr}.canvas-hint{white-space:normal;width:80%;text-align:center}.terminal-tabs button{font-size:calc(9px*var(--fs))}.projectactions{gap:1px!important}.textbtn{padding:6px 4px;font-size:calc(10px*var(--fs))}footer{padding:0 12px}.terminal-foot{font-size:calc(7px*var(--fs))}}.device-card{cursor:grab;user-select:none;touch-action:none}.device-card:active{cursor:grabbing}.device-card.xr .mini-icon,.node.xr .device-icon{color:var(--fg-7765aa)}.drag-ghost{position:fixed;z-index:1000;display:flex;align-items:center;gap:10px;padding:12px;background:var(--bg-ffffff);box-shadow:0 8px 35px var(--sh-143948-0_251);border:2px solid var(--bd-009c8a);border-radius:10px;pointer-events:none;color:var(--fg-234050);width:190px}.drag-ghost svg{width:35px;height:30px}.drag-ghost small{display:block;font-size:calc(10px*var(--fs))}.drop-ready{box-shadow:inset 0 0 0 3px var(--sh-009c8a)}#nodes{z-index:2}.node svg,.device-card svg{pointer-events:none}.palette{overflow-y:auto}.palette-note{margin-bottom:10px;padding-top:16px}.device-card{padding:10px 8px}.terminal{height:300px}.console-expanded .terminal{height:calc(100% - 90px)}.console-expanded #canvas{min-height:40px;flex:1}.console-expanded .canvas-hint{display:none}.batch-input{min-height:300px;font:calc(12px*var(--fs))/1.8 var(--mono-font);resize:vertical;margin-bottom:16px}.btn:disabled{opacity:.55;cursor:not-allowed}.academy{width:min(1100px,96vw);height:88vh}.academy #modalBody{padding:0 24px 24px}.academy-head{display:flex;justify-content:space-between;gap:25px;padding:22px 0 14px;align-items:center}.academy-head p{max-width:750px;line-height:1.8;color:var(--fg-738398);margin-bottom:0}.reading-count{font-size:calc(24px*var(--fs));color:var(--fg-008477);white-space:nowrap}.reading-count small{display:block;font-size:calc(10px*var(--fs));text-align:right;color:var(--fg-8996a4);margin-top:4px}.academy-filters{display:flex;gap:12px;margin-bottom:18px}.academy-filters input{flex:1}.academy-filters select{width:210px}.academy-grid{display:grid;grid-template-columns:240px minmax(0,1fr);gap:28px;min-height:400px}.chapter-list{border-right:1px solid var(--bd-e1e8ee);padding-right:15px;max-height:55vh;overflow:auto}.chapter-list button{display:block;width:100%;text-align:left;padding:12px 10px;line-height:1.5;border-radius:7px;font-size:calc(12px*var(--fs))}.chapter-list button span{display:block;font-size:calc(9px*var(--fs));color:var(--fg-8998a7);margin-bottom:3px;letter-spacing:.4px}.chapter-list button.active{background:var(--bg-e7f3ef);color:var(--fg-007c70);font-weight:600}.chapter{font-size:calc(13px*var(--fs));line-height:1.85;max-height:55vh;overflow:auto;padding-right:12px;color:var(--fg-53677c)}.chapter h2{font-size:calc(26px*var(--fs));color:var(--fg-1a3349);line-height:1.3;margin:14px 0}.chapter h3{font-size:calc(15px*var(--fs));color:var(--fg-233f54);margin:25px 0 9px}.chapter-lead{font-size:calc(15px*var(--fs));line-height:1.7;color:var(--fg-688092)}.chapter p{margin:10px 0}.chapter li{margin:7px 0}.chapter code{font-family:var(--mono-font);color:var(--fg-14746c);background:var(--bg-eaf4f0);border-radius:3px;padding:1px 4px;font-size:calc(12px*var(--fs))}.chapter pre{font-size:calc(12px*var(--fs))}.coverage{font-size:calc(10px*var(--fs));padding:5px 8px;border-radius:5px;background:var(--bg-eef1f5);color:var(--fg-6d7f92)}.coverage.modeled{background:var(--bg-e5f4ec);color:var(--fg-12815e)}.coverage.mixed{background:var(--bg-fff0d3);color:var(--fg-976714)}.coverage.reference{background:var(--bg-eef0f9);color:var(--fg-6a6d95)}.chapter-bottom{display:flex;gap:10px;margin:26px 0 10px}.chapter table{width:100%;border-collapse:collapse;font-size:calc(11px*var(--fs))}.chapter td,.chapter th{text-align:left;border-bottom:1px solid var(--bd-e1e8ee);padding:9px;vertical-align:top}.chapter th{color:var(--fg-263f53)}.chapter .callout{border-left:3px solid var(--bd-e4b668);background:var(--bg-fff8ed);padding:12px 16px;margin:18px 0}.lab-grid{grid-template-columns:repeat(2,1fr)}.scope{color:var(--fg-5e738b)}.muted,.small{color:var(--fg-6d8095)}@media(max-width:850px){.academy-grid{grid-template-columns:170px minmax(0,1fr);gap:14px}.academy #modalBody{padding:0 14px 15px}.chapter h2{font-size:calc(21px*var(--fs))}.academy-filters select{width:150px}}@media(max-width:520px){.academy-grid{grid-template-columns:1fr}.chapter-list{max-height:140px;border-right:0;border-bottom:1px solid var(--bd-e1e8ee)}.chapter{max-height:none}.academy-filters{flex-direction:column}.academy-filters select{width:100%}.lab-grid{grid-template-columns:1fr}.chapter-bottom{flex-wrap:wrap}.reading-count{display:none}#devices{overflow-x:auto}.device-card{flex-shrink:0}.terminal{height:300px}}.wire-note{font-size:calc(9.5px*var(--fs));fill:var(--fg-b87453);font-weight:600;paint-order:stroke;stroke:var(--bg-f6f8fb);stroke-width:4;stroke-linejoin:round;cursor:pointer}.blk-dot{fill:var(--fg-e0a33a);stroke:var(--bg-ffffff);stroke-width:2}.lab-tracks{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 6px}.lab-tracks button{border:1px solid var(--bd-d7dfe8);background:var(--bg-ffffff);border-radius:14px;padding:5px 11px;font-size:calc(11px*var(--fs));cursor:pointer;color:var(--fg-4a5b6e)}.lab-tracks button.selected{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:650}.lab-card .lab-meta{font-size:calc(10.5px*var(--fs));color:var(--fg-8597ab);margin-top:6px}:root{--bd-009c8a:#009c8a;--bd-199c8d:#199c8d;--bd-2d3b4e:#2d3b4e;--bd-38485c:#38485c;--bd-3a4c60:#3a4c60;--bd-4aa99e:#4aa99e;--bd-4ac8b7:#4ac8b7;--bd-5bd5bd:#5bd5bd;--bd-c2e6d8:#c2e6d8;--bd-d3dce7:#d3dce7;--bd-d6dfe9:#d6dfe9;--bd-d7dfe8:#d7dfe8;--bd-dbe4ed:#dbe4ed;--bd-dce3e9:#dce3e9;--bd-dce3eb:#dce3eb;--bd-e0e6ee:#e0e6ee;--bd-e1e8ee:#e1e8ee;--bd-e3e9ef:#e3e9ef;--bd-e4b668:#e4b668;--bd-e4eaf0:#e4eaf0;--bd-e5b655:#e5b655;--bd-e7ebef:#e7ebef;--bd-e7ecf2:#e7ecf2;--bd-e8ebef:#e8ebef;--bd-edf0f4:#edf0f4;--bg-008979:#008979;--bg-00a789:#00a789;--bg-0b1d3a-0_400:rgba(11,29,58,0.400);--bg-111c2b:#111c2b;--bg-121e2e:#121e2e;--bg-192537:#192537;--bg-1c3f43:#1c3f43;--bg-27364a:#27364a;--bg-2b3a4d:#2b3a4d;--bg-36b596:#36b596;--bg-43b59c:#43b59c;--bg-45ae91:#45ae91;--bg-59ad9b:#59ad9b;--bg-5ec5a5:#5ec5a5;--bg-6cdbc1:#6cdbc1;--bg-76b9ac:#76b9ac;--bg-7da49b:#7da49b;--bg-8899aa-0_102:rgba(136,153,170,0.102);--bg-8fe7d3:#8fe7d3;--bg-a4afbd:#a4afbd;--bg-bac4d1:#bac4d1;--bg-bac5d2:#bac5d2;--bg-c1cbd7:#c1cbd7;--bg-cdd7e2:#cdd7e2;--bg-dff4eb:#dff4eb;--bg-e5f4ec:#e5f4ec;--bg-e7f3ef:#e7f3ef;--bg-e8f3f0:#e8f3f0;--bg-e8f4f0:#e8f4f0;--bg-eaf4f0:#eaf4f0;--bg-eaf6f0:#eaf6f0;--bg-edf1f5:#edf1f5;--bg-eef0f9:#eef0f9;--bg-eef1f5:#eef1f5;--bg-eef3f8:#eef3f8;--bg-eff6f5:#eff6f5;--bg-f4f7fa:#f4f7fa;--bg-f5f7f9:#f5f7f9;--bg-f6f8fb:#f6f8fb;--bg-f6fcfa:#f6fcfa;--bg-f7f9fb:#f7f9fb;--bg-fbfffd:#fbfffd;--bg-fff0d3:#fff0d3;--bg-fff8ed:#fff8ed;--bg-ffffff:#ffffff;--bg-ffffff-0_851:rgba(255,255,255,0.851);--fg-007c70:#00776b;--fg-007d70:#00786b;--fg-008477:#007a6e;--fg-087e73:#08796f;--fg-0c9586:#0a796d;--fg-12815e:#117857;--fg-14746c:#14746c;--fg-148c68:#117a5b;--fg-1a3349:#1a3349;--fg-223951:#223951;--fg-233f54:#233f54;--fg-234050:#234050;--fg-263f53:#263f53;--fg-38536b:#38536b;--fg-3c526b:#3c526b;--fg-418e7d:#367667;--fg-425670:#425670;--fg-426c91:#426c91;--fg-478879:#3d7467;--fg-4a5b6e:#4a5b6e;--fg-4a7094:#4a7094;--fg-4a7799:#456f8f;--fg-4d6075:#4d6075;--fg-4e657a:#4e657a;--fg-4e817b:#46746f;--fg-51667f:#51667f;--fg-52647a:#52647a;--fg-536378:#536378;--fg-53677c:#53677c;--fg-566c7d:#566c7d;--fg-5d6f84:#5b6c81;--fg-5e738b:#5a6e85;--fg-63798b:#5b6f7f;--fg-67d2b5:#237861;--fg-688092:#596e7d;--fg-6a6d95:#66698f;--fg-6c7f95:#5d6d81;--fg-6c8094:#5d6e7f;--fg-6cdbc1:#1d7762;--fg-6d7f92:#5e6d7e;--fg-6d8095:#5e6e81;--fg-6f7f92:#5f6d7e;--fg-6f879d:#586d81;--fg-718299:#5e6e83;--fg-738398:#5e6c7f;--fg-748398:#5f6c80;--fg-758397:#5f6c7f;--fg-76899c:#5b6d7e;--fg-7765aa:#715ea6;--fg-7890a9:#576f88;--fg-7a889a:#5f6c7d;--fg-7b8b9e:#5d6c7f;--fg-7c8b9d:#5e6c7e;--fg-7d8da1:#5c6c80;--fg-7f92ab:#5a6e89;--fg-8090a3:#5c6c7f;--fg-8090a4:#5c6c81;--fg-8290a1:#5e6c7d;--fg-8391a3:#5f6d80;--fg-8392a6:#5c6c80;--fg-8597ab:#5b6e84;--fg-8996a4:#606d7c;--fg-8998a7:#5d6d7c;--fg-8a96a6:#606d7e;--fg-8a99ac:#5d6d83;--fg-8a9db1:#576c83;--fg-8b96a6:#616d7e;--fg-8ba398:#587065;--fg-90ada9:#53706c;--fg-92a0b1:#5c6d81;--fg-93a0b0:#5d6d80;--fg-93a0b1:#5d6d81;--fg-94a3b4:#5b6d82;--fg-94a6bd:#566d8b;--fg-95a0ad:#606d7c;--fg-95a2b0:#5d6c7d;--fg-96a0ad:#616d7c;--fg-96a1af:#606e7f;--fg-976714:#8e6113;--fg-97a1af:#616e7f;--fg-98aabc:#566d84;--fg-99a4b1:#5e6c7b;--fg-9c6f64:#8a6258;--fg-9daec3:#556d8b;--fg-a0adbc:#5b6d81;--fg-a16b69:#945f5d;--fg-a3adba:#5f6d7f;--fg-a7b6c9:#566d8c;--fg-afbdd0:#536c8e;--fg-b27972:#995b53;--fg-b3bbc5:#616e7e;--fg-b3becc:#5a6e87;--fg-b3c9dd:#436e96;--fg-b75746:#ac5242;--fg-b87453:#995c3f;--fg-ccdae8:#456f99;--fg-d7e0ec:#4b6e9d;--fg-d9e8ef:#3a708a;--fg-dce8f3:#386fa2;--fg-deebf3:#deebf3;--fg-e0a33a:#8e6216;--fg-f0b18d:#ae4e17;--fg-ffffff:#ffffff;--fk-102f2a:#102f2a;--bg:#f5f7fa;--ink:#18283e;--line:#e4e9ef;--mint:#5bd5bd;--muted:#606c7c;--navy:#111c2b;--teal:#007a73;--sh-001e49-0_200:rgba(0,30,73,0.200);--sh-009c8a:#009c8a;--sh-102c33-0_133:rgba(16,44,51,0.133);--sh-142d41-0_071:rgba(20,45,65,0.071);--sh-143948-0_251:rgba(20,57,72,0.251);--sh-263d50-0_063:rgba(38,61,80,0.063);--sh-365b59-0_063:rgba(54,91,89,0.063);--sh-6bc8b6-0_110:rgba(107,200,182,0.110);--sh-ebfbf5:#ebfbf5;--accent:#007f78;--on-accent:#ffffff;--accent-ink:#007f78;--focus:#007f78}:root[data-theme="dark"]{--bd-009c8a:#009c8a;--bd-199c8d:#199c8d;--bd-2d3b4e:#3b4651;--bd-38485c:#455360;--bd-3a4c60:#485663;--bd-4aa99e:#4aa99e;--bd-4ac8b7:#4ac8b7;--bd-5bd5bd:#5bd5bd;--bd-c2e6d8:#317259;--bd-d3dce7:#2f3944;--bd-d6dfe9:#2e3843;--bd-d7dfe8:#2e3843;--bd-dbe4ed:#2d3642;--bd-dce3e9:#2d3742;--bd-dce3eb:#2d3642;--bd-e0e6ee:#2c3540;--bd-e1e8ee:#2c3540;--bd-e3e9ef:#2b3440;--bd-e4b668:#e4b668;--bd-e4eaf0:#2b343f;--bd-e5b655:#e5b655;--bd-e7ebef:#2b343f;--bd-e7ecf2:#2a333e;--bd-e8ebef:#2b343f;--bd-edf0f4:#2a333e;--bg-008979:#008979;--bg-00a789:#00a789;--bg-0b1d3a-0_400:rgba(19,23,26,0.400);--bg-111c2b:#0b0f14;--bg-121e2e:#111417;--bg-192537:#181c20;--bg-1c3f43:#1c3f43;--bg-27364a:#252d34;--bg-2b3a4d:#283038;--bg-36b596:#36b596;--bg-43b59c:#43b59c;--bg-45ae91:#45ae91;--bg-59ad9b:#59ad9b;--bg-5ec5a5:#5ec5a5;--bg-6cdbc1:#6cdbc1;--bg-76b9ac:#76b9ac;--bg-7da49b:#7da49b;--bg-8899aa-0_102:rgba(136,153,170,0.102);--bg-8fe7d3:#8fe7d3;--bg-a4afbd:#a4afbd;--bg-bac4d1:#313a46;--bg-bac5d2:#303a46;--bg-c1cbd7:#2d3742;--bg-cdd7e2:#28303b;--bg-dff4eb:#1f262f;--bg-e5f4ec:#1d242d;--bg-e7f3ef:#1d242d;--bg-e8f3f0:#1d242d;--bg-e8f4f0:#1d242d;--bg-eaf4f0:#1d242d;--bg-eaf6f0:#1d242d;--bg-edf1f5:#0f141a;--bg-eef0f9:#1d242d;--bg-eef1f5:#0f141a;--bg-eef3f8:#1d242d;--bg-eff6f5:#0f141a;--bg-f4f7fa:#1d242d;--bg-f5f7f9:#1d242d;--bg-f6f8fb:#161c23;--bg-f6fcfa:#161c23;--bg-f7f9fb:#161c23;--bg-fbfffd:#161c23;--bg-fff0d3:#372e1d;--bg-fff8ed:#1d242d;--bg-ffffff:#161c23;--bg-ffffff-0_851:rgba(22,28,35,0.851);--fg-007c70:#c3f6f2;--fg-007d70:#c3f6f1;--fg-008477:#bff6f1;--fg-087e73:#bff6f1;--fg-0c9586:#b2f4ed;--fg-12815e:#b8f5e2;--fg-14746c:#bff4f0;--fg-148c68:#b2f4e0;--fg-1a3349:#e6edf3;--fg-223951:#e6edf3;--fg-233f54:#e6edf3;--fg-234050:#e6edf3;--fg-263f53:#e6edf3;--fg-38536b:#e6edf3;--fg-3c526b:#e6edf3;--fg-418e7d:#b1dbd2;--fg-425670:#e6edf3;--fg-426c91:#afc6db;--fg-478879:#b4d8d0;--fg-4a5b6e:#c3ccd6;--fg-4a7094:#aec2d6;--fg-4a7799:#abc4d6;--fg-4d6075:#c3ccd6;--fg-4e657a:#c3ccd6;--fg-4e817b:#b8d4d1;--fg-51667f:#c3ccd6;--fg-52647a:#c3ccd6;--fg-536378:#c3ccd6;--fg-53677c:#c3ccd6;--fg-566c7d:#c3ccd6;--fg-5d6f84:#c3ccd6;--fg-5e738b:#c3ccd6;--fg-63798b:#c3ccd6;--fg-67d2b5:#7ad8be;--fg-688092:#c3ccd6;--fg-6a6d95:#c3ccd6;--fg-6c7f95:#c3ccd6;--fg-6c8094:#c3ccd6;--fg-6cdbc1:#74ddc4;--fg-6d7f92:#c3ccd6;--fg-6d8095:#c3ccd6;--fg-6f7f92:#c3ccd6;--fg-6f879d:#c3ccd6;--fg-718299:#c3ccd6;--fg-738398:#c3ccd6;--fg-748398:#c3ccd6;--fg-758397:#c3ccd6;--fg-76899c:#c3ccd6;--fg-7765aa:#aa9fca;--fg-7890a9:#9aa7b6;--fg-7a889a:#c3ccd6;--fg-7b8b9e:#9aa7b6;--fg-7c8b9d:#9aa7b6;--fg-7d8da1:#9aa7b6;--fg-7f92ab:#9aa7b6;--fg-8090a3:#9aa7b6;--fg-8090a4:#9aa7b6;--fg-8290a1:#9aa7b6;--fg-8391a3:#9aa7b6;--fg-8392a6:#9aa7b6;--fg-8597ab:#9aa7b6;--fg-8996a4:#9aa7b6;--fg-8998a7:#9aa7b6;--fg-8a96a6:#9aa7b6;--fg-8a99ac:#9aa7b6;--fg-8a9db1:#9aa7b6;--fg-8b96a6:#9aa7b6;--fg-8ba398:#a2b6ad;--fg-90ada9:#9bb5b2;--fg-92a0b1:#9aa7b6;--fg-93a0b0:#9aa7b6;--fg-93a0b1:#9aa7b6;--fg-94a3b4:#9aa7b6;--fg-94a6bd:#9aa7b6;--fg-95a0ad:#9aa7b6;--fg-95a2b0:#9aa7b6;--fg-96a0ad:#9aa7b6;--fg-96a1af:#9aa7b6;--fg-976714:#f3d9ad;--fg-97a1af:#9aa7b6;--fg-98aabc:#9aa7b6;--fg-99a4b1:#9aa7b6;--fg-9c6f64:#c8afa9;--fg-9daec3:#9aa7b6;--fg-a0adbc:#9aa7b6;--fg-a16b69:#c7a6a5;--fg-a3adba:#9aa7b6;--fg-a7b6c9:#9aa7b6;--fg-afbdd0:#9aa7b6;--fg-b27972:#c69c97;--fg-b3bbc5:#9aa7b6;--fg-b3becc:#9aa7b6;--fg-b3c9dd:#9aa7b6;--fg-b75746:#d9a49a;--fg-b87453:#d4ab97;--fg-ccdae8:#9aa7b6;--fg-d7e0ec:#9aa7b6;--fg-d9e8ef:#9aa7b6;--fg-dce8f3:#9aa7b6;--fg-deebf3:#9aa7b6;--fg-e0a33a:#eac079;--fg-f0b18d:#e99767;--fg-ffffff:#f4f7fa;--fk-102f2a:#102f2a;--bg:#161c23;--ink:#e6edf3;--line:#2b343f;--mint:#5bd5bd;--muted:#9aa7b6;--navy:#0b0f14;--teal:#c2f6f3;--sh-001e49-0_200:rgba(0,0,0,0.200);--sh-009c8a:rgba(0,0,0,0.45);--sh-102c33-0_133:rgba(0,0,0,0.133);--sh-142d41-0_071:rgba(0,0,0,0.071);--sh-143948-0_251:rgba(0,0,0,0.251);--sh-263d50-0_063:rgba(0,0,0,0.063);--sh-365b59-0_063:rgba(0,0,0,0.063);--sh-6bc8b6-0_110:rgba(0,0,0,0.110);--sh-ebfbf5:rgba(0,0,0,0.45);--accent:#5bd5bd;--on-accent:#062420;--accent-ink:#6fdcc6;--focus:#6fdcc6;color-scheme:dark}:root[data-theme="midnight"]{--bd-009c8a:#009c8a;--bd-199c8d:#199c8d;--bd-2d3b4e:#29406c;--bd-38485c:#304a7e;--bd-3a4c60:#314d82;--bd-4aa99e:#4aa99e;--bd-4ac8b7:#4ac8b7;--bd-5bd5bd:#5bd5bd;--bd-c2e6d8:#317259;--bd-d3dce7:#293756;--bd-d6dfe9:#283655;--bd-d7dfe8:#283655;--bd-dbe4ed:#273552;--bd-dce3e9:#273553;--bd-dce3eb:#273552;--bd-e0e6ee:#263350;--bd-e1e8ee:#263350;--bd-e3e9ef:#25334f;--bd-e4b668:#e4b668;--bd-e4eaf0:#25324f;--bd-e5b655:#e5b655;--bd-e7ebef:#25324e;--bd-e7ecf2:#24314d;--bd-e8ebef:#24324e;--bd-edf0f4:#24314d;--bg-008979:#008979;--bg-00a789:#00a789;--bg-0b1d3a-0_400:rgba(15,23,39,0.400);--bg-111c2b:#070d19;--bg-121e2e:#0d1524;--bg-192537:#121c2f;--bg-1c3f43:#1c3f43;--bg-27364a:#1b2a47;--bg-2b3a4d:#1d2d4c;--bg-36b596:#36b596;--bg-43b59c:#43b59c;--bg-45ae91:#45ae91;--bg-59ad9b:#59ad9b;--bg-5ec5a5:#5ec5a5;--bg-6cdbc1:#6cdbc1;--bg-76b9ac:#76b9ac;--bg-7da49b:#7da49b;--bg-8899aa-0_102:rgba(136,153,170,0.102);--bg-8fe7d3:#8fe7d3;--bg-a4afbd:#a4afbd;--bg-bac4d1:#2a3a5b;--bg-bac5d2:#29395a;--bg-c1cbd7:#263656;--bg-cdd7e2:#212f4c;--bg-dff4eb:#18243e;--bg-e5f4ec:#16223c;--bg-e7f3ef:#16223b;--bg-e8f3f0:#16223b;--bg-e8f4f0:#16223b;--bg-eaf4f0:#16223b;--bg-eaf6f0:#16223b;--bg-edf1f5:#0a1120;--bg-eef0f9:#16223b;--bg-eef1f5:#0a1120;--bg-eef3f8:#16223b;--bg-eff6f5:#0a1120;--bg-f4f7fa:#16223b;--bg-f5f7f9:#16223b;--bg-f6f8fb:#101a2e;--bg-f6fcfa:#101a2e;--bg-f7f9fb:#101a2e;--bg-fbfffd:#101a2e;--bg-fff0d3:#3f331c;--bg-fff8ed:#16223b;--bg-ffffff:#101a2e;--bg-ffffff-0_851:rgba(16,26,46,0.851);--fg-007c70:#c3f6f2;--fg-007d70:#c3f6f1;--fg-008477:#bff6f1;--fg-087e73:#bff6f1;--fg-0c9586:#b2f4ed;--fg-12815e:#b8f5e2;--fg-14746c:#bff4f0;--fg-148c68:#b2f4e0;--fg-1a3349:#e4e9f2;--fg-223951:#e4e9f2;--fg-233f54:#e4e9f2;--fg-234050:#e4e9f2;--fg-263f53:#e4e9f2;--fg-38536b:#e4e9f2;--fg-3c526b:#e4e9f2;--fg-418e7d:#b1dbd2;--fg-425670:#e4e9f2;--fg-426c91:#afc6db;--fg-478879:#b4d8d0;--fg-4a5b6e:#bfcadb;--fg-4a7094:#aec2d6;--fg-4a7799:#abc4d6;--fg-4d6075:#bfcadb;--fg-4e657a:#bfcadb;--fg-4e817b:#b8d4d1;--fg-51667f:#bfcadb;--fg-52647a:#bfcadb;--fg-536378:#bfcadb;--fg-53677c:#bfcadb;--fg-566c7d:#bfcadb;--fg-5d6f84:#bfcadb;--fg-5e738b:#bfcadb;--fg-63798b:#bfcadb;--fg-67d2b5:#7ad8be;--fg-688092:#bfcadb;--fg-6a6d95:#bfcadb;--fg-6c7f95:#bfcadb;--fg-6c8094:#bfcadb;--fg-6cdbc1:#74ddc4;--fg-6d7f92:#bfcadb;--fg-6d8095:#bfcadb;--fg-6f7f92:#bfcadb;--fg-6f879d:#bfcadb;--fg-718299:#bfcadb;--fg-738398:#bfcadb;--fg-748398:#bfcadb;--fg-758397:#bfcadb;--fg-76899c:#bfcadb;--fg-7765aa:#aa9fca;--fg-7890a9:#96a5bd;--fg-7a889a:#bfcadb;--fg-7b8b9e:#96a5bd;--fg-7c8b9d:#96a5bd;--fg-7d8da1:#96a5bd;--fg-7f92ab:#96a5bd;--fg-8090a3:#96a5bd;--fg-8090a4:#96a5bd;--fg-8290a1:#96a5bd;--fg-8391a3:#96a5bd;--fg-8392a6:#96a5bd;--fg-8597ab:#96a5bd;--fg-8996a4:#96a5bd;--fg-8998a7:#96a5bd;--fg-8a96a6:#96a5bd;--fg-8a99ac:#96a5bd;--fg-8a9db1:#96a5bd;--fg-8b96a6:#96a5bd;--fg-8ba398:#a2b6ad;--fg-90ada9:#9bb5b2;--fg-92a0b1:#96a5bd;--fg-93a0b0:#96a5bd;--fg-93a0b1:#96a5bd;--fg-94a3b4:#96a5bd;--fg-94a6bd:#96a5bd;--fg-95a0ad:#96a5bd;--fg-95a2b0:#96a5bd;--fg-96a0ad:#96a5bd;--fg-96a1af:#96a5bd;--fg-976714:#f3d9ad;--fg-97a1af:#96a5bd;--fg-98aabc:#96a5bd;--fg-99a4b1:#96a5bd;--fg-9c6f64:#c8afa9;--fg-9daec3:#96a5bd;--fg-a0adbc:#96a5bd;--fg-a16b69:#c7a6a5;--fg-a3adba:#96a5bd;--fg-a7b6c9:#96a5bd;--fg-afbdd0:#96a5bd;--fg-b27972:#c69c97;--fg-b3bbc5:#96a5bd;--fg-b3becc:#96a5bd;--fg-b3c9dd:#96a5bd;--fg-b75746:#d9a49a;--fg-b87453:#d4ab97;--fg-ccdae8:#96a5bd;--fg-d7e0ec:#96a5bd;--fg-d9e8ef:#96a5bd;--fg-dce8f3:#96a5bd;--fg-deebf3:#96a5bd;--fg-e0a33a:#eac079;--fg-f0b18d:#e99767;--fg-ffffff:#f2f5fb;--fk-102f2a:#102f2a;--bg:#101a2e;--ink:#e4e9f2;--line:#25324f;--mint:#5bd5bd;--muted:#96a5bd;--navy:#070d19;--teal:#c2f6f3;--sh-001e49-0_200:rgba(0,0,0,0.200);--sh-009c8a:rgba(0,0,0,0.45);--sh-102c33-0_133:rgba(0,0,0,0.133);--sh-142d41-0_071:rgba(0,0,0,0.071);--sh-143948-0_251:rgba(0,0,0,0.251);--sh-263d50-0_063:rgba(0,0,0,0.063);--sh-365b59-0_063:rgba(0,0,0,0.063);--sh-6bc8b6-0_110:rgba(0,0,0,0.110);--sh-ebfbf5:rgba(0,0,0,0.45);--accent:#63d9c5;--on-accent:#05201c;--accent-ink:#78e0cd;--focus:#78e0cd;color-scheme:dark}:root[data-theme="contrast"]{--bd-009c8a:#009c8a;--bd-199c8d:#199c8d;--bd-2d3b4e:#2d3b4e;--bd-38485c:#38485c;--bd-3a4c60:#3a4c60;--bd-4aa99e:#4aa99e;--bd-4ac8b7:#4ac8b7;--bd-5bd5bd:#5bd5bd;--bd-c2e6d8:#43a37d;--bd-d3dce7:#516f95;--bd-d6dfe9:#507195;--bd-d7dfe8:#547192;--bd-dbe4ed:#4c7399;--bd-dce3e9:#59758d;--bd-dce3eb:#537192;--bd-e0e6ee:#516e94;--bd-e1e8ee:#537592;--bd-e3e9ef:#537392;--bd-e4b668:#c38723;--bd-e4eaf0:#527394;--bd-e5b655:#c7901e;--bd-e7ebef:#5c738a;--bd-e7ecf2:#517095;--bd-e8ebef:#5e7087;--bd-edf0f4:#576f8e;--bg-008979:#008979;--bg-00a789:#00a789;--bg-0b1d3a-0_400:rgba(11,29,58,0.400);--bg-111c2b:#111c2b;--bg-121e2e:#121e2e;--bg-192537:#192537;--bg-1c3f43:#1c3f43;--bg-27364a:#27364a;--bg-2b3a4d:#2b3a4d;--bg-36b596:#36b596;--bg-43b59c:#43b59c;--bg-45ae91:#45ae91;--bg-59ad9b:#59ad9b;--bg-5ec5a5:#5ec5a5;--bg-6cdbc1:#6cdbc1;--bg-76b9ac:#76b9ac;--bg-7da49b:#7da49b;--bg-8899aa-0_102:rgba(136,153,170,0.102);--bg-8fe7d3:#8fe7d3;--bg-a4afbd:#a4afbd;--bg-bac4d1:#bac4d1;--bg-bac5d2:#bac5d2;--bg-c1cbd7:#c1cbd7;--bg-cdd7e2:#cdd7e2;--bg-dff4eb:#dff4eb;--bg-e5f4ec:#e5f4ec;--bg-e7f3ef:#e7f3ef;--bg-e8f3f0:#e8f3f0;--bg-e8f4f0:#e8f4f0;--bg-eaf4f0:#eaf4f0;--bg-eaf6f0:#eaf6f0;--bg-edf1f5:#edf1f5;--bg-eef0f9:#eef0f9;--bg-eef1f5:#eef1f5;--bg-eef3f8:#eef3f8;--bg-eff6f5:#eff6f5;--bg-f4f7fa:#f4f7fa;--bg-f5f7f9:#f5f7f9;--bg-f6f8fb:#f6f8fb;--bg-f6fcfa:#f6fcfa;--bg-f7f9fb:#f7f9fb;--bg-fbfffd:#fbfffd;--bg-fff0d3:#fff0d3;--bg-fff8ed:#fff8ed;--bg-ffffff:#ffffff;--bg-ffffff-0_851:rgba(255,255,255,0.851);--fg-007c70:#00443e;--fg-007d70:#00453e;--fg-008477:#004941;--fg-087e73:#04453f;--fg-0c9586:#07524a;--fg-12815e:#0a4734;--fg-14746c:#0b403b;--fg-148c68:#0b4d39;--fg-1a3349:#0e1c28;--fg-223951:#131f2d;--fg-233f54:#13232e;--fg-234050:#13232c;--fg-263f53:#15232e;--fg-38536b:#1f2e3b;--fg-3c526b:#212d3b;--fg-418e7d:#244e45;--fg-425670:#242f3e;--fg-426c91:#243b50;--fg-478879:#274b43;--fg-4a5b6e:#29323d;--fg-4a7094:#293e51;--fg-4a7799:#294154;--fg-4d6075:#2a3540;--fg-4e657a:#2b3843;--fg-4e817b:#2b4744;--fg-51667f:#2d3846;--fg-52647a:#2d3743;--fg-536378:#2e3642;--fg-53677c:#2e3944;--fg-566c7d:#2f3b45;--fg-5d6f84:#333d49;--fg-5e738b:#343f4c;--fg-63798b:#36434c;--fg-67d2b5:#1a5847;--fg-688092:#394650;--fg-6a6d95:#3a3c52;--fg-6c7f95:#3b4652;--fg-6c8094:#3b4651;--fg-6cdbc1:#155747;--fg-6d7f92:#3c4650;--fg-6d8095:#3c4652;--fg-6f7f92:#3d4650;--fg-6f879d:#3c4a58;--fg-718299:#3d4755;--fg-738398:#3e4855;--fg-748398:#3f4855;--fg-758397:#3f4854;--fg-76899c:#3f4b57;--fg-7765aa:#403560;--fg-7890a9:#3f5164;--fg-7a889a:#424b56;--fg-7b8b9e:#45505e;--fg-7c8b9d:#46505d;--fg-7d8da1:#45505f;--fg-7f92ab:#415063;--fg-8090a3:#45505f;--fg-8090a4:#44505f;--fg-8290a1:#46505d;--fg-8391a3:#46505e;--fg-8392a6:#44505f;--fg-8597ab:#435061;--fg-8996a4:#454f59;--fg-8998a7:#444f5a;--fg-8a96a6:#47505d;--fg-8a99ac:#44505f;--fg-8a9db1:#415162;--fg-8b96a6:#47505c;--fg-8ba398:#41534b;--fg-90ada9:#3d524f;--fg-92a0b1:#44505f;--fg-93a0b0:#45505e;--fg-93a0b1:#45505f;--fg-94a3b4:#435060;--fg-94a6bd:#3e5065;--fg-95a0ad:#47505c;--fg-95a2b0:#444f5a;--fg-96a0ad:#48505b;--fg-96a1af:#47505d;--fg-976714:#53390b;--fg-97a1af:#47505c;--fg-98aabc:#405163;--fg-99a4b1:#47505c;--fg-9c6f64:#563d37;--fg-9daec3:#3e5065;--fg-a0adbc:#445060;--fg-a16b69:#5a3a38;--fg-a3adba:#46505d;--fg-a7b6c9:#3e5065;--fg-afbdd0:#3e516a;--fg-b27972:#71433e;--fg-b3bbc5:#47505c;--fg-b3becc:#425062;--fg-b3c9dd:#32526f;--fg-b75746:#653027;--fg-b87453:#683f2b;--fg-ccdae8:#32506f;--fg-d7e0ec:#375174;--fg-d9e8ef:#2b5366;--fg-dce8f3:#285075;--fg-deebf3:#deebf3;--fg-e0a33a:#674710;--fg-f0b18d:#813a11;--fg-ffffff:#ffffff;--fk-102f2a:#102f2a;--bg:#f5f7fa;--ink:#0d1622;--line:#557090;--mint:#5bd5bd;--muted:#47505c;--navy:#111c2b;--teal:#004642;--sh-001e49-0_200:rgba(0,0,0,0.200);--sh-009c8a:rgba(0,0,0,0.5);--sh-102c33-0_133:rgba(0,0,0,0.133);--sh-142d41-0_071:rgba(0,0,0,0.071);--sh-143948-0_251:rgba(0,0,0,0.251);--sh-263d50-0_063:rgba(0,0,0,0.063);--sh-365b59-0_063:rgba(0,0,0,0.063);--sh-6bc8b6-0_110:rgba(0,0,0,0.110);--sh-ebfbf5:rgba(0,0,0,0.5);--accent:#004642;--on-accent:#ffffff;--accent-ink:#004642;--focus:#004642}:root:not([data-theme]) :is(header,.count,.terminal,.terminal-head,.terminal-tabs button span,.codeblock,#toast,.preview-console){--fg-007c70:#00b9a7;--fg-007d70:#00baa7;--fg-008477:#00b7a5;--fg-087e73:#0cb8a8;--fg-0c9586:#0fb6a4;--fg-12815e:#1abb88;--fg-14746c:#1fb5a9;--fg-148c68:#1ab989;--fg-1a3349:#79a7cf;--fg-223951:#83a6cb;--fg-233f54:#7ba7c8;--fg-234050:#77a8c3;--fg-263f53:#80a6c5;--fg-38536b:#8aa7c2;--fg-3c526b:#8fa6c0;--fg-418e7d:#56b19d;--fg-425670:#92a5bf;--fg-426c91:#82a6c6;--fg-478879:#67b09f;--fg-4a5b6e:#95a5b7;--fg-4a7094:#86a5c3;--fg-4a7799:#82a6c2;--fg-4d6075:#93a5b8;--fg-4e657a:#90a5b8;--fg-4e817b:#75aca5;--fg-51667f:#91a3b9;--fg-52647a:#94a4b7;--fg-536378:#95a3b6;--fg-53677c:#93a4b7;--fg-566c7d:#93a6b5;--fg-5d6f84:#97a5b5;--fg-5e738b:#94a4b6;--fg-63798b:#93a4b2;--fg-67d2b5:#67d2b5;--fg-688092:#94a5b3;--fg-6a6d95:#a0a2bb;--fg-6c7f95:#95a3b3;--fg-6c8094:#95a4b2;--fg-6cdbc1:#6cdbc1;--fg-6d7f92:#99a5b3;--fg-6d8095:#96a4b3;--fg-6f7f92:#98a3b1;--fg-6f879d:#93a5b6;--fg-718299:#98a4b5;--fg-738398:#99a5b4;--fg-748398:#9aa5b4;--fg-758397:#9ba5b3;--fg-76899c:#97a5b4;--fg-7765aa:#a89dc9;--fg-7890a9:#91a4b9;--fg-7a889a:#9aa5b2;--fg-7b8b9e:#98a5b4;--fg-7c8b9d:#99a5b3;--fg-7d8da1:#98a4b4;--fg-7f92ab:#95a4b9;--fg-8090a3:#98a5b4;--fg-8090a4:#98a5b5;--fg-8290a1:#99a5b3;--fg-8391a3:#97a3b2;--fg-8392a6:#98a4b5;--fg-8597ab:#94a4b5;--fg-8996a4:#97a3af;--fg-8998a7:#98a5b2;--fg-8a96a6:#98a3b1;--fg-8a99ac:#96a3b4;--fg-8a9db1:#93a5b7;--fg-8b96a6:#99a3b1;--fg-8ba398:#91a89d;--fg-90ada9:#90ada9;--fg-92a0b1:#98a5b5;--fg-93a0b0:#99a5b4;--fg-93a0b1:#99a5b5;--fg-94a3b4:#97a6b6;--fg-94a6bd:#94a6bd;--fg-95a0ad:#9ba5b1;--fg-95a2b0:#98a5b2;--fg-96a0ad:#99a3af;--fg-96a1af:#99a4b1;--fg-976714:#db951d;--fg-97a1af:#9aa4b1;--fg-98aabc:#98aabc;--fg-99a4b1:#99a4b1;--fg-9c6f64:#bc9d96;--fg-9daec3:#9daec3;--fg-a0adbc:#a0adbc;--fg-a16b69:#be9998;--fg-a3adba:#a3adba;--fg-a7b6c9:#a7b6c9;--fg-afbdd0:#afbdd0;--fg-b27972:#c49893;--fg-b3bbc5:#b3bbc5;--fg-b3becc:#b3becc;--fg-b3c9dd:#b3c9dd;--fg-b75746:#d19388;--fg-b87453:#ca977e;--fg-ccdae8:#ccdae8;--fg-d7e0ec:#d7e0ec;--fg-d9e8ef:#d9e8ef;--fg-dce8f3:#dce8f3;--fg-deebf3:#deebf3;--fg-e0a33a:#e0a33a;--fg-f0b18d:#f0b18d;--fg-ffffff:#ffffff;--ink:#85a5d0;--muted:#9ba4b2;--teal:#00b7ad}:root[data-theme="dark"] :is(header,.count,.terminal,.terminal-head,.terminal-tabs button span,.codeblock,#toast,.preview-console){--fg-007c70:#00aa99;--fg-007d70:#00ab99;--fg-008477:#00ad9c;--fg-087e73:#0ba99a;--fg-0c9586:#0ead9b;--fg-12815e:#18ae7f;--fg-14746c:#1da89d;--fg-148c68:#18ab7f;--fg-1a3349:#669bc9;--fg-223951:#719ac4;--fg-233f54:#6d9dc2;--fg-234050:#659dbc;--fg-263f53:#729dbe;--fg-38536b:#799bb9;--fg-3c526b:#7f99b7;--fg-418e7d:#4ca693;--fg-425670:#8298b5;--fg-426c91:#749cc0;--fg-478879:#57a694;--fg-4a5b6e:#8598ad;--fg-4a7094:#799bbc;--fg-4a7799:#749dbc;--fg-4d6075:#8498ae;--fg-4e657a:#839bb0;--fg-4e817b:#65a29b;--fg-51667f:#8599b1;--fg-52647a:#889aaf;--fg-536378:#8999ad;--fg-53677c:#879aae;--fg-566c7d:#849aab;--fg-5d6f84:#8898ab;--fg-5e738b:#8799ae;--fg-63798b:#879aa9;--fg-67d2b5:#67d2b5;--fg-688092:#8599a8;--fg-6a6d95:#9496b3;--fg-6c7f95:#8a99aa;--fg-6c8094:#8a9aa9;--fg-6cdbc1:#6cdbc1;--fg-6d7f92:#8a99a8;--fg-6d8095:#8b9aaa;--fg-6f7f92:#8c99a8;--fg-6f879d:#8499ab;--fg-718299:#8c9aac;--fg-738398:#8b98a9;--fg-748398:#8b98a9;--fg-758397:#8c98a9;--fg-76899c:#8898a9;--fg-7765aa:#9d90c2;--fg-7890a9:#849ab1;--fg-7a889a:#8b98a7;--fg-7b8b9e:#8a98a9;--fg-7c8b9d:#8b98a8;--fg-7d8da1:#8997aa;--fg-7f92ab:#889ab1;--fg-8090a3:#8998a9;--fg-8090a4:#8998aa;--fg-8290a1:#8b98a8;--fg-8391a3:#8c99aa;--fg-8392a6:#8997aa;--fg-8597ab:#889aad;--fg-8996a4:#8c99a6;--fg-8998a7:#8998a7;--fg-8a96a6:#8d99a8;--fg-8a99ac:#8a99ac;--fg-8a9db1:#8a9db1;--fg-8b96a6:#8e99a8;--fg-8ba398:#8ba398;--fg-90ada9:#90ada9;--fg-92a0b1:#92a0b1;--fg-93a0b0:#93a0b0;--fg-93a0b1:#93a0b1;--fg-94a3b4:#94a3b4;--fg-94a6bd:#94a6bd;--fg-95a0ad:#95a0ad;--fg-95a2b0:#95a2b0;--fg-96a0ad:#96a0ad;--fg-96a1af:#96a1af;--fg-976714:#cd8c1b;--fg-97a1af:#97a1af;--fg-98aabc:#98aabc;--fg-99a4b1:#99a4b1;--fg-9c6f64:#b28f86;--fg-9daec3:#9daec3;--fg-a0adbc:#a0adbc;--fg-a16b69:#b78d8b;--fg-a3adba:#a3adba;--fg-a7b6c9:#a7b6c9;--fg-afbdd0:#afbdd0;--fg-b27972:#bd8c86;--fg-b3bbc5:#b3bbc5;--fg-b3becc:#b3becc;--fg-b3c9dd:#b3c9dd;--fg-b75746:#cc8579;--fg-b87453:#c2886c;--fg-ccdae8:#ccdae8;--fg-d7e0ec:#d7e0ec;--fg-d9e8ef:#d9e8ef;--fg-dce8f3:#dce8f3;--fg-deebf3:#deebf3;--fg-e0a33a:#e0a33a;--fg-f0b18d:#f0b18d;--fg-ffffff:#ffffff;--ink:#769aca;--muted:#8d97a6;--teal:#00a89f}:root[data-theme="midnight"] :is(header,.count,.terminal,.terminal-head,.terminal-tabs button span,.codeblock,#toast,.preview-console){--fg-007c70:#00aa99;--fg-007d70:#00ab99;--fg-008477:#00a897;--fg-087e73:#0ba99a;--fg-0c9586:#0ea897;--fg-12815e:#18a97b;--fg-14746c:#1da89d;--fg-148c68:#18ab7f;--fg-1a3349:#669bc9;--fg-223951:#719ac4;--fg-233f54:#699bc1;--fg-234050:#659dbc;--fg-263f53:#6f9abd;--fg-38536b:#7698b7;--fg-3c526b:#7b97b5;--fg-418e7d:#4ba38f;--fg-425670:#8298b5;--fg-426c91:#719abe;--fg-478879:#55a391;--fg-4a5b6e:#8598ad;--fg-4a7094:#7599ba;--fg-4a7799:#709aba;--fg-4d6075:#8498ae;--fg-4e657a:#8098ae;--fg-4e817b:#62a099;--fg-51667f:#8296af;--fg-52647a:#8597ad;--fg-536378:#8696ab;--fg-53677c:#8497ac;--fg-566c7d:#8197a8;--fg-5d6f84:#8898ab;--fg-5e738b:#8497ac;--fg-63798b:#8497a7;--fg-67d2b5:#67d2b5;--fg-688092:#8297a6;--fg-6a6d95:#9193b1;--fg-6c7f95:#8796a8;--fg-6c8094:#8797a7;--fg-6cdbc1:#6cdbc1;--fg-6d7f92:#8796a6;--fg-6d8095:#8897a8;--fg-6f7f92:#8996a6;--fg-6f879d:#8499ab;--fg-718299:#8997aa;--fg-738398:#8895a7;--fg-748398:#8995a7;--fg-758397:#8995a6;--fg-76899c:#8596a7;--fg-7765aa:#9a8cc0;--fg-7890a9:#8198af;--fg-7a889a:#8895a5;--fg-7b8b9e:#8795a7;--fg-7c8b9d:#8895a6;--fg-7d8da1:#8997aa;--fg-7f92ab:#8597af;--fg-8090a3:#8998a9;--fg-8090a4:#8998aa;--fg-8290a1:#8895a5;--fg-8391a3:#8996a7;--fg-8392a6:#8997aa;--fg-8597ab:#8597ab;--fg-8996a4:#8996a4;--fg-8998a7:#8998a7;--fg-8a96a6:#8a96a6;--fg-8a99ac:#8a99ac;--fg-8a9db1:#8a9db1;--fg-8b96a6:#8b96a6;--fg-8ba398:#8ba398;--fg-90ada9:#90ada9;--fg-92a0b1:#92a0b1;--fg-93a0b0:#93a0b0;--fg-93a0b1:#93a0b1;--fg-94a3b4:#94a3b4;--fg-94a6bd:#94a6bd;--fg-95a0ad:#95a0ad;--fg-95a2b0:#95a2b0;--fg-96a0ad:#96a0ad;--fg-96a1af:#96a1af;--fg-976714:#c9891b;--fg-97a1af:#97a1af;--fg-98aabc:#98aabc;--fg-99a4b1:#99a4b1;--fg-9c6f64:#b08c83;--fg-9daec3:#9daec3;--fg-a0adbc:#a0adbc;--fg-a16b69:#b58a88;--fg-a3adba:#a3adba;--fg-a7b6c9:#a7b6c9;--fg-afbdd0:#afbdd0;--fg-b27972:#bb8982;--fg-b3bbc5:#b3bbc5;--fg-b3becc:#b3becc;--fg-b3c9dd:#b3c9dd;--fg-b75746:#ca8275;--fg-b87453:#c2886c;--fg-ccdae8:#ccdae8;--fg-d7e0ec:#d7e0ec;--fg-d9e8ef:#d9e8ef;--fg-dce8f3:#dce8f3;--fg-deebf3:#deebf3;--fg-e0a33a:#e0a33a;--fg-f0b18d:#f0b18d;--fg-ffffff:#ffffff;--ink:#7397c9;--muted:#8d97a6;--teal:#00a89f}:root[data-theme="contrast"] :is(header,.count,.terminal,.terminal-head,.terminal-tabs button span,.codeblock,#toast,.preview-console){--fg-007c70:#00e2cc;--fg-007d70:#00e3cb;--fg-008477:#00e5ce;--fg-087e73:#0ee3cf;--fg-0c9586:#12e5ce;--fg-12815e:#35e3ac;--fg-14746c:#47dfd3;--fg-148c68:#38e3af;--fg-1a3349:#b5cfe5;--fg-223951:#b9cde2;--fg-233f54:#b5cde0;--fg-234050:#b3cede;--fg-263f53:#b8cddf;--fg-38536b:#bccddc;--fg-3c526b:#c0cddc;--fg-418e7d:#a3d5ca;--fg-425670:#c2cddb;--fg-426c91:#bacee0;--fg-478879:#aad3c9;--fg-4a5b6e:#c2ccd6;--fg-4a7094:#bdcede;--fg-4a7799:#b9cddd;--fg-4d6075:#c2ccd7;--fg-4e657a:#c1cdd8;--fg-4e817b:#b1d0cc;--fg-51667f:#c0cad7;--fg-52647a:#c2cbd6;--fg-536378:#c2cad5;--fg-53677c:#c1cbd5;--fg-566c7d:#c1ccd4;--fg-5d6f84:#c4ccd5;--fg-5e738b:#c1cbd5;--fg-63798b:#c2ccd4;--fg-67d2b5:#83dac2;--fg-688092:#c1cbd2;--fg-6a6d95:#c9cad9;--fg-6c7f95:#c5ccd5;--fg-6c8094:#c5cdd4;--fg-6cdbc1:#70dcc3;--fg-6d7f92:#c5ccd3;--fg-6d8095:#c3cbd3;--fg-6f7f92:#c6ccd4;--fg-6f879d:#c1cbd5;--fg-718299:#c4cbd5;--fg-738398:#c5ccd5;--fg-748398:#c6ccd5;--fg-758397:#c6ccd4;--fg-76899c:#c3cbd4;--fg-7765aa:#cec8e0;--fg-7890a9:#c0cbd7;--fg-7a889a:#c5cbd3;--fg-7b8b9e:#c4ccd4;--fg-7c8b9d:#c5ccd4;--fg-7d8da1:#c4cbd4;--fg-7f92ab:#c3ccd7;--fg-8090a3:#c4cbd4;--fg-8090a4:#c4ccd5;--fg-8290a1:#c5cbd3;--fg-8391a3:#c3cad3;--fg-8392a6:#c4cbd5;--fg-8597ab:#c1cad5;--fg-8996a4:#c5ccd3;--fg-8998a7:#c3cbd3;--fg-8a96a6:#c4cad2;--fg-8a99ac:#c3cad4;--fg-8a9db1:#c1cbd6;--fg-8b96a6:#c5cad2;--fg-8ba398:#c1cec8;--fg-90ada9:#bccecb;--fg-92a0b1:#c5ccd5;--fg-93a0b0:#c5ccd5;--fg-93a0b1:#c5ccd5;--fg-94a3b4:#c4ccd6;--fg-94a6bd:#c0cbd8;--fg-95a0ad:#c6ccd3;--fg-95a2b0:#c4cbd3;--fg-96a0ad:#c7ccd3;--fg-96a1af:#c4cad2;--fg-976714:#edc37a;--fg-97a1af:#c5cbd2;--fg-98aabc:#c0cbd6;--fg-99a4b1:#c4cbd2;--fg-9c6f64:#d8c6c1;--fg-9daec3:#c0cbd8;--fg-a0adbc:#c4ccd5;--fg-a16b69:#dac5c4;--fg-a3adba:#c6ccd4;--fg-a7b6c9:#c0cbd9;--fg-afbdd0:#c2cddb;--fg-b27972:#ddc4c1;--fg-b3bbc5:#c4cbd2;--fg-b3becc:#c2cbd6;--fg-b3c9dd:#bacee0;--fg-b75746:#e5c1bb;--fg-b87453:#e2c6b8;--fg-ccdae8:#ccdae8;--fg-d7e0ec:#d7e0ec;--fg-d9e8ef:#d9e8ef;--fg-dce8f3:#dce8f3;--fg-deebf3:#deebf3;--fg-e0a33a:#ebc481;--fg-f0b18d:#f3c0a4;--fg-ffffff:#ffffff;--ink:#bccee5;--muted:#c6cbd3;--teal:#00e5d8}:root{--ui-font:"Segoe UI",Arial,sans-serif;--mono-font:"SFMono-Regular",Consolas,monospace;--fs:1;--cfs:11px;--ok:#108c70;--bad:#b87453}:root[data-theme="dark"],:root[data-theme="midnight"]{--ok:#4fd1b0;--bad:#f0a07a}:root[data-theme="contrast"]{--ok:#00664f;--bad:#9a3a12}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:9px;margin:8px 0 18px}.theme-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:10px;border:1px solid var(--bd-e0e6ee);border-radius:9px;background:var(--bg-ffffff);text-align:left;color:var(--ink)}.theme-card small{color:var(--fg-8597ab);font-size:calc(10px*var(--fs));line-height:1.4}.theme-card.chosen{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.theme-swatch{display:flex;width:100%;height:26px;border-radius:6px;overflow:hidden;border:1px solid var(--bd-d7dfe8);margin-bottom:4px}.theme-swatch i{flex:1}.appearance-row{margin-bottom:4px}.appearance-row .field label span{float:right;color:var(--fg-8597ab)}.appearance-row input[type=range]{width:100%;accent-color:var(--accent)}.appearance-preview{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:8px 0 10px}.preview-ui{border:1px solid var(--bd-e0e6ee);border-radius:8px;padding:12px;background:var(--bg-f6f8fb);font-family:var(--ui-font);font-size:calc(13px*var(--fs));color:var(--ink)}.preview-ui p{margin:6px 0 0;color:var(--fg-8597ab)}.preview-console{margin:0;border-radius:8px;padding:12px;background:var(--bg-121e2e);color:var(--fg-b3c9dd);font:var(--cfs)/1.6 var(--mono-font);white-space:pre-wrap}@media (max-width:640px){.appearance-preview{grid-template-columns:1fr}}@media (max-width:520px){.header-right .btn.subtle.appearance-btn{display:inline-flex;padding:8px 9px}}:root{--tfs:1}.port-label{font-size:calc(10px*var(--tfs)*var(--zs,1))}.wire-note{font-size:calc(9.5px*var(--tfs)*var(--zs,1))}.node-ip{font-size:calc(10.5px*var(--tfs)*min(var(--zs,1),1.45))}.node-model{font-size:calc(9px*var(--tfs)*min(var(--zs,1),1.45))}.node-name{font-size:calc(12px*var(--tfs)*min(var(--zs,1),1.45))}.terminal.floating{position:fixed;z-index:60;resize:both;overflow:hidden;min-width:320px;min-height:190px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);border-radius:10px;border:1px solid #2d3b4e;box-shadow:0 18px 48px rgba(0,0,0,.45)}.terminal.floating .terminal-head{cursor:move;user-select:none;touch-action:none}.terminal.floating .terminal-head button{cursor:pointer}.terminal.floating #expandConsole{display:none}.terminal.floating .terminal-foot{padding-right:22px}.terminal.dragging{opacity:.92;transition:none}#detachConsole.on{color:#5bd5bd}@media(max-width:520px){.terminal.floating{min-width:0}}.legal-link{font:inherit;color:inherit;text-decoration:underline;text-underline-offset:2px;padding:0;cursor:pointer}.legal-link:hover{color:var(--accent-ink)}.legal-note{margin-top:16px;line-height:1.6}.xp-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 16px;border-bottom:1px solid var(--line);padding-bottom:10px}.xp-tabs button{border:1px solid var(--bd-d7dfe8);border-radius:14px;padding:6px 12px;font-size:calc(11px*var(--fs));color:var(--fg-4a5b6e);background:var(--bg-ffffff)}.xp-tabs button.on{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:650}.xp-topo{width:100%;max-height:430px;display:block;background:var(--bg-f6f8fb);border:1px solid var(--line);border-radius:10px;margin:6px 0 8px}.xp-link{stroke:var(--bd-d3dce7);stroke-width:2.5}.xp-link.hot{stroke:var(--accent);stroke-width:4}.xp-port{font:calc(10px*var(--fs)) var(--mono-font);fill:var(--fg-718299)}.xp-node rect{fill:var(--bg-ffffff);stroke:var(--bd-d3dce7)}.xp-node{color:var(--fg-4a7094)}.xp-node.huawei{color:var(--fg-a16b69)}.xp-node.xr{color:var(--fg-7765aa)}.xp-name{font:600 calc(12px*var(--fs)) var(--ui-font);fill:var(--ink)}.xp-ip{font:calc(10px*var(--fs)) var(--mono-font);fill:var(--fg-718299)}.xp-packet{fill:var(--accent);stroke:var(--on-accent);stroke-width:2}.xp-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--accent);margin-right:5px;vertical-align:-1px}.xp-concept{border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin:0 0 16px;background:var(--bg-ffffff)}.xp-concept h3{margin:0 0 6px;font-size:calc(15px*var(--fs))}.xp-how{margin:6px 0 12px 18px;padding:0;font-size:calc(12px*var(--fs));line-height:1.7;color:var(--fg-38536b)}.xp-diagram{border-top:1px solid var(--line);padding-top:12px}.xp-ctl{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}.xp-ctl .btn{padding:7px 11px}.xp-ctl .btn:disabled{opacity:.45;cursor:default}.xp-count{font-size:calc(11px*var(--fs));color:var(--fg-718299);margin:0 4px}.xp-strip{position:relative;height:58px;margin:4px 34px 8px}.xp-wire{position:absolute;left:0;right:0;top:15px;height:2px;background:var(--bd-d3dce7)}.xp-hopnode{position:absolute;top:2px;transform:translateX(-50%);z-index:1;white-space:nowrap;font-size:calc(11px*var(--fs));font-weight:600;padding:5px 9px;border-radius:12px;border:1px solid var(--bd-d3dce7);background:var(--bg-ffffff);color:var(--ink)}.xp-hopnode.on{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.xp-pkt{position:absolute;top:34px;transform:translateX(-50%);transition:left .7s ease;font-size:calc(17px*var(--fs));line-height:1;color:var(--fg-007d70)}.xp-at{font-weight:650;font-size:calc(12px*var(--fs));margin:0 0 8px;color:var(--ink)}.xp-fields{display:flex;flex-wrap:wrap;gap:6px}.xp-field{border:1px solid var(--bd-d3dce7);border-radius:7px;padding:6px 9px;min-width:84px;background:var(--bg-f6f8fb);display:flex;flex-direction:column;gap:2px}.xp-field .k{font-size:calc(9px*var(--fs));letter-spacing:.6px;text-transform:uppercase;color:var(--fg-718299)}.xp-field .v{font:calc(12px*var(--fs)) var(--mono-font);color:var(--ink)}.xp-field em{font-style:normal;font-size:calc(9px*var(--fs));font-weight:700;letter-spacing:.5px;text-transform:uppercase}.xp-field.new{border:2px solid var(--accent);background:var(--bg-e8f4f0)}.xp-field.new em{color:var(--fg-007d70)}.xp-field.chg{border:2px solid var(--bd-e4b668);background:var(--bg-fff8ed)}.xp-field.chg em{color:var(--fg-976714)}.xp-field.del{border:2px dashed var(--bd-d3dce7)}.xp-field.del .v{text-decoration:line-through}.xp-field.del em{color:var(--fg-b75746)}.xp-note{font-size:calc(12px*var(--fs));line-height:1.7;color:var(--fg-38536b);margin:10px 0 0}.xp-seqsvg{width:100%;display:block}.xp-seqname{font:600 calc(11px*var(--fs)) var(--ui-font);fill:var(--ink)}.xp-life{stroke:var(--bd-d3dce7);stroke-dasharray:4 4}.xp-msg{stroke:var(--fg-718299);stroke-width:1.6}.xp-msg.hot{stroke:var(--accent);stroke-width:2.6}.xp-arrowhead{fill:var(--fg-718299)}.xp-arrowhead.hot{fill:var(--accent)}.xp-msgtext{font:calc(10.5px*var(--fs)) var(--ui-font);fill:var(--fg-38536b)}.xp-msgtext.hot{fill:var(--ink);font-weight:700}.xp-table{width:100%;border-collapse:collapse;font-size:calc(11.5px*var(--fs))}.xp-table th,.xp-table td{border-bottom:1px solid var(--line);padding:8px;text-align:left;color:var(--ink)}.xp-table th{color:var(--fg-718299);font-weight:650}.xp-table tr.hl td{background:var(--bg-e8f4f0);font-weight:600}.xp-blockname{margin:18px 0 6px;font-size:calc(13px*var(--fs))}.xp-cmds{width:100%;border-collapse:collapse;margin-bottom:8px;font-size:calc(11.5px*var(--fs))}.xp-cmds td{border-bottom:1px solid var(--line);padding:6px 8px;vertical-align:top;color:var(--fg-38536b);line-height:1.5}.xp-cmds td:first-child{width:44%;white-space:nowrap}.xp-cmds code{font:calc(11.5px*var(--fs)) var(--mono-font);color:var(--ink);white-space:pre-wrap;word-break:break-word}@media (max-width:640px){.xp-cmds td:first-child{white-space:normal;width:auto}.xp-cmds tr{display:flex;flex-direction:column}.xp-cmds td{border:0;padding:3px 4px}.xp-cmds tr{border-bottom:1px solid var(--line);padding:4px 0}.xp-strip{margin:4px 26px 8px}}.device-card.arista .mini-icon,.node.arista .device-icon{color:var(--fg-14746c)}.device-card.nokia .mini-icon,.node.nokia .device-icon{color:var(--fg-426c91)}.device-card.srlinux .mini-icon,.node.srlinux .device-icon{color:var(--fg-4a7799)}.device-card.ale .mini-icon,.node.ale .device-icon{color:var(--fg-7765aa)}.xp-port,.xp-name,.xp-ip{paint-order:stroke;stroke:var(--bg-f6f8fb);stroke-width:8px;stroke-linejoin:round}.md-note{font-size:calc(11px*var(--fs));line-height:1.6;color:var(--fg-38536b);margin:0}.md-note code{font:calc(10.5px*var(--fs)) var(--mono-font);color:var(--ink)}.device-title .remove-device{margin:0 0 0 6px;padding:5px 8px;font-size:calc(10px*var(--fs));font-weight:600;border:1px solid currentColor;border-radius:6px;white-space:nowrap}main.hide-library>.palette,main.hide-inspector>.inspector{display:none}main.hide-library{grid-template-columns:minmax(0,1fr) 292px}main.hide-inspector{grid-template-columns:224px minmax(0,1fr)}main.hide-library.hide-inspector{grid-template-columns:minmax(0,1fr)}@media(min-width:1600px){main.hide-library{grid-template-columns:minmax(0,1fr) 320px}main.hide-inspector{grid-template-columns:250px minmax(0,1fr)}}@media(max-width:1150px){main.hide-library{grid-template-columns:minmax(0,1fr) 258px}main.hide-inspector{grid-template-columns:190px minmax(0,1fr)}}@media(max-width:850px){#panelToggle{display:none}main.hide-inspector>.inspector{display:block}main.hide-inspector{grid-template-columns:154px minmax(300px,1fr)}main.hide-library,main.hide-library.hide-inspector{grid-template-columns:minmax(0,1fr)}main.hide-library>.inspector{grid-column:1}}@media(max-width:520px){main.hide-library,main.hide-inspector,main.hide-library.hide-inspector{grid-template-columns:1fr}}#wires{overflow:visible}.swatch-row{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin:4px 0 4px}.colour-swatch{width:28px;height:28px;border-radius:50%;background:var(--sw);border:2px solid var(--bg-ffffff);box-shadow:0 0 0 1px var(--line);padding:0}.colour-swatch.chosen{box-shadow:0 0 0 2px var(--ink)}.colour-custom{display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 4px;border:1px solid var(--line);border-radius:16px;font-size:calc(11px*var(--fs));color:var(--ink);cursor:pointer}.colour-custom.chosen{box-shadow:0 0 0 2px var(--ink);border-color:transparent}.colour-custom input{width:24px;height:22px;padding:0;border:0;background:none;cursor:pointer}.swatch-hint{margin:2px 0 12px}.modules .module-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;border-top:1px solid var(--line);font-size:calc(11px*var(--fs));color:var(--ink)}.modules .module-row small{display:block;margin-top:2px;color:var(--fg-99a4b1);font-size:calc(10px*var(--fs))}.modules .module-row select{max-width:160px;font-size:calc(11px*var(--fs))}.modules .module-row .btn{padding:4px 10px;font-size:calc(11px*var(--fs))}.device-card.nexus .mini-icon,.node.nexus .device-icon{color:var(--fg-4a7094)}.node-handle{position:absolute;left:89px;top:28px;width:calc(14px*var(--zs,1));height:calc(14px*var(--zs,1));transform:translate(-50%,-50%);border-radius:50%;background:var(--teal);border:2px solid var(--bg-ffffff);box-shadow:0 0 0 1px var(--teal);cursor:crosshair;opacity:0;transition:opacity .12s;touch-action:none;z-index:2}.node-handle::before{content:'';position:absolute;inset:-9px;border-radius:50%}.node:hover .node-handle,.node:focus-within .node-handle,.node.selected .node-handle,.node-handle:active{opacity:1}@media (hover:none){.node-handle{opacity:.9}}.wire-draft{stroke:var(--teal);stroke-width:2;stroke-dasharray:6 5;fill:none;pointer-events:none}.node.drop-target .device-icon{outline:2px dashed var(--teal);outline-offset:4px}.lab-search{width:100%;margin:2px 0 8px;padding:9px 12px;border:1px solid var(--bd-d7dfe8);border-radius:8px;background:var(--bg-ffffff);color:var(--ink)}.lab-search:focus{outline:2px solid var(--teal);outline-offset:1px;border-color:var(--teal)}.lab-search::placeholder{color:var(--fg-4a5b6e);opacity:.8}.lab-found:empty{display:none}.lab-card[hidden]{display:none}