:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#e8f0fd;background:#0b1422;font-synthesis:none;font-size:13px;color-scheme:dark}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{display:inline-flex;align-items:center;justify-content:center;gap:9px;background:linear-gradient(#243244,#1a2737);border:1px solid #34475d;border-radius:5px;color:#e9f1fd;cursor:pointer;padding:8px 11px;white-space:nowrap;transition:background .15s,border-color .15s}button:hover{background:#2a4059;border-color:#4d79a1}button:disabled{cursor:default;opacity:.35}button svg{flex-shrink:0;width:18px;height:18px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #54aaff;outline-offset:2px}input,select,textarea{background:#0c1725;border:1px solid #33465e;border-radius:4px;color:#e7effb;padding:9px 10px;min-width:0}textarea{resize:vertical;min-height:70px}h2,h3,h4,p{margin:0}h2{font-size:19px;font-weight:650}h3{font-size:14px}h4{font-size:13px}code{font:12px ui-monospace,SFMono-Regular,Consolas,monospace}a{color:inherit;text-decoration:none}.muted{color:#92a6be}.small{font-size:11px;line-height:1.6}.app{height:100dvh;min-height:650px;display:flex;flex-direction:column;overflow:hidden}.topbar{height:62px;flex-shrink:0;display:flex;align-items:center;border-bottom:1px solid #304155;padding:0 17px;gap:17px;background:linear-gradient(110deg,#111e2e,#0b1420 65%,#152236)}.brand{display:flex;align-items:center;gap:10px;white-space:nowrap;font-size:24px;font-weight:700;letter-spacing:-.7px}.brand b{font-weight:650}.topbar nav{display:flex;align-self:stretch;align-items:center;gap:7px;margin-left:20px}.topbar nav button{height:46px;background:none;border-color:transparent;font-size:14px;padding:0 17px;gap:10px}.topbar nav button svg{width:22px;height:22px;color:#c8d5e7}.topbar nav button.active{background:linear-gradient(#183459,#12253f);border-bottom:3px solid #3997ff;border-radius:7px 7px 4px 4px}.topbar nav button:hover{background:#182b42}.course-progress{margin-left:auto;min-width:160px;width:210px;font-size:11px;color:#c5d2e4}.course-progress>div{display:flex;align-items:center;gap:10px;margin-top:6px}.course-progress progress{height:8px;width:100%;border:0;border-radius:20px;overflow:hidden;background:#26354a}.course-progress progress::-webkit-progress-bar{background:#26354a}.course-progress progress::-webkit-progress-value{background:#3acb57;border-radius:20px}.locale{padding:6px 4px;background:transparent;border:none;font-size:11px}.avatar{padding:8px;border-radius:50%;background:#27354a}.avatar.signed-in{border-color:#42cb7e}.workspace{display:grid;grid-template-columns:var(--left) 10px minmax(560px,1fr) 10px var(--right);flex:1;min-height:0;padding:10px 10px 8px 0;gap:0}.sidebar{border:1px solid #293e55;border-left:none;border-radius:0 7px 0 0;display:flex;flex-direction:column;min-height:0;overflow:auto;background:linear-gradient(110deg,#0e1a29,#0b1420)}.lab-heading{margin:18px 18px 0;padding-bottom:18px;border-bottom:1px solid #2a3c51}.eyebrow{font-size:9px;color:#5f8fb6;letter-spacing:2px;margin-bottom:9px}.lab-heading h2{font-size:19px}.lab-heading p{font-size:13px;line-height:1.5;color:#b7c8de;margin-top:7px}.stages{padding:9px 12px 14px}.stages button{width:100%;background:none;border:0;justify-content:flex-start;padding:12px 10px;position:relative;border-radius:5px;color:#b8c8dc}.stages button.selected{background:#1a2d44;color:#f0f6ff}.stages button>svg{margin-left:auto;opacity:0}.stages button.selected>svg{opacity:1}.stage-dot{width:18px;height:18px;border:2px solid #5e7389;border-radius:50%;margin-right:6px;position:relative}.stages button.selected .stage-dot{border-color:#4cafff;box-shadow:0 0 0 4px #2e79b722}.stage-dot.done{background:#20a651;border-color:#37c866;display:grid;place-items:center}.sidebar-actions{display:flex;flex-direction:column;gap:9px;margin:0 18px;padding:17px 0 22px;border-top:1px solid #293b50;border-bottom:1px solid #293b50}.sidebar-actions>button{justify-content:flex-start;height:37px;box-shadow:inset 0 1px #ffffff05}.sidebar-actions>button svg{width:18px;height:18px;margin-right:3px}.primary,.sidebar-actions>button.primary{background:linear-gradient(#26a83f,#14802a);border-color:#3bc150;font-weight:600;box-shadow:inset 0 1px #7ae67740}.primary:hover{background:#269f40}.sidebar-actions>button.run{height:40px;padding:8px;font-size:12px;gap:6px}.playback{display:flex;gap:5px}.playback button{flex:1;padding:6px}.playback select{width:65px;padding:4px}.tool-list{margin:20px 18px}.tool-list h4{font-size:14px;margin-bottom:12px}.tool-list button{width:100%;border:0;background:none;justify-content:flex-start;padding:10px 6px;color:#c2d0e3;font-size:12px}.tool-list button:hover{background:#18283d}.tool-list button svg{width:17px}.sidebar-footer{margin-top:auto;padding:16px 18px;font-size:10px;line-height:1.9;border-top:1px solid #22344b}.sidebar-footer .status-dot{width:6px;height:6px;margin-right:5px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#3dd565;box-shadow:0 0 6px #3dd56520;flex-shrink:0}.status-dot.bad{background:#ef6576}.resizer{position:relative;touch-action:none;z-index:4}.resizer:after{content:"";position:absolute;background:transparent;border-radius:3px;transition:background .15s}.resizer:hover:after{background:#3c8cd4}.vertical{cursor:col-resize}.vertical:after{width:3px;height:60px;left:4px;top:42%}.horizontal{height:10px;cursor:row-resize;flex-shrink:0}.horizontal:after{height:3px;width:60px;top:4px;left:46%}.studio{display:flex;flex-direction:column;min-height:0;min-width:0}.panel{border:1px solid #304359;border-radius:8px;overflow:hidden;background:linear-gradient(115deg,#101d2b,#0d1825);box-shadow:inset 0 1px #ffffff04,0 2px 8px #00000018}.canvas{flex:1;min-height:210px;display:flex;flex-direction:column}.panel-tabs{display:flex;align-items:stretch;min-height:44px;flex-shrink:0;border-bottom:1px solid #304257;background:linear-gradient(#172537,#101c2a)}.panel-tabs>button{border:0;background:none;border-radius:0;padding:11px 15px;position:relative;color:#b3c1d4;font-size:12px}.panel-tabs>button.active{background:linear-gradient(#1c3659,#14243c);color:#f4f8ff;box-shadow:inset 0 -3px #3996ff}.panel-tabs>button:hover{background:#233a54}.canvas-toolbar{padding:3px 6px 0;gap:4px;min-height:46px}.canvas-toolbar>button{font-size:12px;padding:10px 12px}.canvas-toolbar .square{border:1px solid #30465e;border-radius:4px;width:31px;padding:0;height:30px;align-self:center;margin-top:-3px;box-shadow:none}.canvas-toolbar .square.active{background:#224b7a;border-color:#377ccd}.toolbar-spacer{flex:1}.graph-area{flex:1;min-height:0;position:relative;background:radial-gradient(ellipse at center,#101d2b,#0b1521)}.react-flow__node-device{width:108px;text-align:center}.device-node{position:relative;min-height:116px;padding:8px 2px}.device-icon{width:72px;height:62px;margin:0 auto;filter:drop-shadow(0 4px 4px #0006)}.device-icon svg{width:100%;height:100%}.device-node strong{font-size:16px;font-weight:700;text-shadow:0 1px 3px #000}.device-address{font-size:11px;line-height:1.5;margin-top:4px;color:#c8d7eb}.device-address span{display:block;white-space:nowrap}.device-address .muted{font-size:9px}.device-node.selected .device-icon{filter:drop-shadow(0 0 7px #4fafff75)}.device-node.selected:before{content:"";position:absolute;inset:0 6px -4px;border:1px solid #469eff75;border-radius:8px;pointer-events:none;background:#2368b50b}.device-node.off{opacity:.4}.react-flow__handle{width:7px;height:7px;background:#4a98ce;border:1px solid #a2d2f2;opacity:.3}.device-node:hover .react-flow__handle{opacity:1;width:10px;height:10px}.react-flow__attribution{background:#102032!important;color:#7e9bb7!important;font-size:8px!important}.react-flow__controls{box-shadow:none;display:flex;left:auto;right:10px;bottom:34px}.react-flow__controls-button{background:#16283a;border-color:#33475f;fill:#b3c8e0;color:#b3c8e0;padding:7px}.react-flow__controls-button:hover{background:#263b54}.canvas-caption{pointer-events:none;position:absolute;bottom:12px;left:14px;right:14px;color:#7893ac;display:flex;align-items:center;gap:8px;font-size:9px;letter-spacing:.6px}.canvas-caption>span:last-child{margin-left:auto;font-size:10px;letter-spacing:0}.canvas-caption .status-dot{width:5px;height:5px}.packet-card{position:absolute;top:16px;left:50%;transform:translate(-50%);min-width:270px;max-width:90%;padding:13px 17px;background:linear-gradient(120deg,#1c2b3df2,#142031f2);border:1px solid #65829e;border-radius:8px;box-shadow:0 6px 20px #0004;font-size:11px;pointer-events:none}.packet-card>strong{display:flex;align-items:center;gap:8px;font-size:12px}.packet-card dl{display:grid;grid-template-columns:90px 1fr;gap:5px;margin:9px 0 0}.packet-card dt{color:#a9bfd5}.packet-card dd{margin:0;font:11px ui-monospace,monospace}.bottom-dock{height:var(--dock);min-height:180px;flex-shrink:0;display:grid;grid-template-columns:1fr 1fr;gap:10px}.terminal-panel,.timeline{min-width:0;display:flex;flex-direction:column}.terminal-tabs>button{padding:10px 13px;gap:7px;font-size:11px}.terminal-tabs>select{margin-left:auto;width:63px;padding:4px;border:0;border-radius:0;background:transparent;font-size:10px}.terminal-host{background:#0a121d;flex:1;min-height:0;padding:10px 10px 7px 13px;overflow:hidden}.xterm{height:100%}.xterm-viewport{scrollbar-width:thin;scrollbar-color:#334960 #0a121d}.timeline .panel-tabs>button{padding:10px 12px;font-size:11px}.event-count{margin-left:auto;padding:15px 9px;font:10px monospace;color:#7991aa}.timeline-content{overflow:auto;flex:1;padding:10px}.empty-state{height:100%;min-height:100px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:13px;text-align:center;color:#7892ac;padding:15px;font-size:12px;line-height:1.6}.empty-state svg{color:#365879}.empty-state code{font-size:11px;background:#152438;border:1px solid #273c54;padding:6px 12px;border-radius:4px;color:#9ac7ef}.trace-title{display:flex;align-items:center;gap:9px;padding:9px 10px;border:1px solid #2c4057;border-radius:6px;background:#18293c;font-size:11px}.trace-title code{margin-left:auto;font-size:10px}.play-circle{border-radius:50%;display:grid;place-items:center;background:#165f32;color:#65df83;width:23px;height:23px}.hop-list{margin-top:6px}.hop{display:flex;width:100%;border-radius:0;background:transparent;border:0;border-bottom:1px solid #273b51;padding:10px 2px;font-size:11px;gap:9px;justify-content:flex-start;white-space:normal;text-align:left;min-height:44px}.hop-check{background:#27b549;border:1px solid #5cda70;width:21px;height:21px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;position:relative}.hop-check:after{content:"";width:1px;height:23px;background:#2e9d4d;position:absolute;top:20px}.hop:last-child .hop-check:after{display:none}.hop>strong{width:39px;flex-shrink:0;font-size:12px}.hop>span:nth-child(3){flex:1;overflow-wrap:anywhere}.hop code{font-size:9px;white-space:nowrap;background:#24354a;border-radius:4px;padding:5px 6px;color:#d4e6f8}.hop.failed .hop-check{background:#a22c41;border-color:#f16e80}.event-list button{display:flex;width:100%;border:0;background:transparent;justify-content:flex-start;text-align:left;border-radius:0;border-bottom:1px solid #263b51;gap:7px;padding:8px 3px;font-size:10px}.event-list button.selected{background:#1d3855}.event-list time{color:#718ba5;min-width:35px}.event-list b{color:#7dbcf5}.event-list small{margin-left:auto;color:#c4958f;overflow:hidden;text-overflow:ellipsis}.analysis h4{margin:6px 2px 12px;color:#9fc5e8}.analysis button{width:100%;display:block;white-space:normal;text-align:left;margin-bottom:6px;font-size:11px;line-height:1.7}.analysis small{display:block;color:#86a0b9}.inspector{display:flex;flex-direction:column;min-height:0}.inspector>.panel-tabs>button{flex:1;padding:13px 10px;font-size:13px}.inspector-content{overflow:auto;padding:0 10px 15px;flex:1}.device-heading{display:flex;align-items:center;gap:10px;padding:18px 6px 22px}.inspector-device-icon{width:59px;height:51px}.inspector-device-icon svg{width:100%;height:100%}.device-heading h2{font-size:20px;margin-bottom:4px}.device-heading .muted{font-size:12px}.badge{display:flex;align-items:center;gap:6px;background:#13372b;color:#b9e9cb;padding:6px 9px;border-radius:13px;font-size:10px;margin-left:auto}.badge.gray{background:#283243;color:#a6b4c3}.badge.gray .status-dot{background:#768da3}.table-section{border:1px solid #2c4159;border-radius:7px;overflow:hidden;background:#0e1b2a}.table-section>h3,.route-log>h3{display:flex;align-items:center;gap:9px;padding:12px 10px;background:linear-gradient(#223145,#1a293a);border-bottom:1px solid #2e435c;font-size:12px}.table-scroll{padding:0 2px;overflow:auto}table{border-collapse:separate;border-spacing:0;width:100%;text-align:left;font-size:11px}th{font-weight:500;color:#c8d4e7;padding:12px 7px;font-size:10px;white-space:nowrap}td{padding:10px 7px;border-bottom:1px solid #24394d;white-space:nowrap}tr{cursor:pointer}tr.connected{background:#12312675}tr.connected td:first-child{color:#9fe5a7}tr.static{background:#14243c}tr.chosen{background:#214c7d;outline:1px solid #3e85d1;outline-offset:-1px}tr:hover{background:#243d56}tr:last-child td{border-bottom:0}.legend{display:flex;flex-wrap:wrap;gap:12px;padding:12px 9px 9px;font-size:9px;color:#afc0d4}.legend>span{display:flex;align-items:center;gap:7px}.legend i{width:11px;height:11px;border-radius:2px;display:inline-block}.green-square{background:#2eac49;border:1px solid #58d468}.blue-square{background:#338be6;border:1px solid #65a7ed}.route-actions{display:flex;gap:6px;padding:8px}.route-actions button{font-size:10px;padding:7px 9px;flex:1;gap:5px}.route-actions button:last-child{flex:0}.route-log{border:1px solid #2a3e55;border-radius:7px;overflow:hidden;margin-top:16px}.route-log p{font-size:11px;line-height:1.8;padding:10px 12px}.route-log code{font-size:11px}.interface-summary{margin:22px 4px 0}.interface-summary h4{color:#8fa8c0;font-size:11px;font-weight:500;letter-spacing:.5px;margin-bottom:10px}.interface-summary button{width:100%;justify-content:flex-start;border:0;border-bottom:1px solid #22364b;background:transparent;border-radius:0;padding:9px 4px;font-size:11px;gap:10px}.interface-summary button code{font-size:10px;margin-left:auto;color:#adbed1}.statusbar{height:24px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;border-top:1px solid #24374d;padding:0 15px;font-size:9px;color:#718da8;background:#0b1623}.statusbar>span:first-child{display:flex;align-items:center;gap:6px}.statusbar .status-dot{width:5px;height:5px}.status-separator{margin:0 10px;color:#374f66}.dirty-dot{width:5px;height:5px;border-radius:50%;background:#eebc61;margin-left:auto}.palette{padding:16px}.palette h4{margin-bottom:12px}.palette button{width:100%;justify-content:flex-start;margin-bottom:6px}.palette button>svg:first-child{width:32px;height:29px}.palette button>svg:last-child{margin-left:auto;width:15px}.palette p{margin:8px 0 12px}.address-table{padding:15px;overflow:auto;height:100%}.address-table table{font-size:12px}.address-table th{font-size:11px}.config-form{display:flex;flex-direction:column;gap:15px;padding:20px}.config-form label{display:flex;flex-direction:column;gap:7px;color:#aebfd3;font-size:12px}.config-form input,.config-form select,.config-form textarea{width:100%;color:#e8f1ff}.config-form .checkbox{display:flex;flex-direction:row;align-items:center;gap:8px}.checkbox input{width:15px;height:15px;accent-color:#3e9bff}.form-row{display:flex;gap:12px;align-items:end}.form-row>label{flex:1;min-width:0}.blue{background:linear-gradient(#2867a7,#1b4e85);border-color:#3982c9}.danger{color:#ee9ca8}.interface-forms>.config-form{border:1px solid #2a3f56;border-radius:6px;margin:0 0 12px;padding:14px}.interface-forms h4{color:#c9ddf3}.notice{font-size:11px;line-height:1.7;background:#1b2c3b;border:1px solid #344957;border-radius:5px;padding:12px;color:#b6c7d9;margin-top:14px}.modal-backdrop{position:fixed;inset:0;background:#020812bc;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:50;display:flex;align-items:center;justify-content:center;padding:30px}.modal{width:450px;max-width:90vw;max-height:85dvh;background:linear-gradient(125deg,#15263a,#0e1b2b);border:1px solid #3a536f;border-radius:10px;overflow:auto;box-shadow:0 24px 90px #0008}.modal.wide{width:740px}.modal-heading{display:flex;align-items:center;justify-content:space-between;padding:17px 20px;border-bottom:1px solid #30465e;position:sticky;top:0;background:#142337;z-index:1}.modal-heading h2{font-size:17px}.modal-heading button{padding:5px;background:none;border:0}.inline-error{color:#ffb6c1;background:#8c2d4533;border:1px solid #a7435c55;border-radius:5px;font-size:12px;padding:12px;margin:15px 20px 0;line-height:1.6}.help-content{padding:23px;line-height:1.8;color:#baccdf}.help-content p{margin-bottom:15px}.help-content ol{padding-left:20px}.help-content li{margin-bottom:10px}.help-content button{margin-right:10px}.calculator-result{margin:0;display:flex;flex-direction:column;gap:0}.calculator-result>div{display:flex;justify-content:space-between;border-bottom:1px solid #293f56;padding:12px 0}.calculator-result dt{color:#92a8bf}.calculator-result dd{font:13px monospace;margin:0}.catalog{display:flex;flex-direction:column;gap:10px;padding:18px}.mission-card{padding:17px 14px;white-space:normal;text-align:left;justify-content:flex-start;background:linear-gradient(110deg,#1b3048,#15263a);gap:17px}.mission-number{color:#69aeec;display:grid;place-items:center;width:37px;height:37px;border:1px solid #385d82;border-radius:7px;flex-shrink:0;font:17px monospace;background:#163756}.mission-card>div{flex:1}.mission-card h3{font-size:14px;line-height:1.5;margin-bottom:4px}.mission-card p{font-size:11px;color:#9fb4cb;line-height:1.6}.lab-row{display:flex;gap:7px}.lab-row>button:first-child{flex:1;justify-content:flex-start}.lab-row small{margin-left:auto;color:#89a1b9}.toast{position:fixed;bottom:40px;left:50%;transform:translate(-50%);background:#17372f;border:1px solid #348b65;box-shadow:0 7px 30px #0006;padding:14px 16px;border-radius:7px;display:flex;align-items:center;gap:12px;z-index:70;max-width:85vw;font-size:12px;line-height:1.5}.toast>svg{flex-shrink:0;color:#5bde8b}.toast button{background:none;border:0;padding:0}.toast.error{background:#3c1d2c;border-color:#a64660}.toast.error>svg{color:#ec7d93}.small-screen{display:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#0e1b2a}::-webkit-scrollbar-thumb{background:#30465e;border-radius:8px}@media(min-width:1800px){.topbar nav{gap:13px;margin-left:30px}.topbar nav button{font-size:15px;padding:0 22px}.workspace{grid-template-columns:var(--left) 10px minmax(560px,1fr) 10px var(--right)}.panel-tabs>button{font-size:13px}.routes{font-size:12px}.routes th,.route-actions button{font-size:11px}.timeline .panel-tabs>button{font-size:12px}}@media(max-width:1450px){.brand{font-size:20px;gap:8px}.topbar{gap:8px;padding:0 12px}.topbar nav{margin-left:10px;gap:1px}.topbar nav button{padding:0 10px;font-size:12px}.course-progress{width:140px;min-width:125px}.workspace{grid-template-columns:min(var(--left),190px) 8px minmax(500px,1fr) 8px min(var(--right),360px)}.canvas-toolbar>button{padding:8px;font-size:11px}.canvas-toolbar .square{width:26px}.sidebar-actions{margin:0 12px}.sidebar-actions>button.run{font-size:11px}.tool-list{margin:16px 12px}.table-section>h3{font-size:11px}.routes{font-size:10px}.routes th{font-size:9px;padding:10px 5px}.routes td{padding:10px 5px}.route-actions button{font-size:9px;padding:7px 5px}.timeline .panel-tabs>button{font-size:10px;padding:9px 8px}.terminal-tabs>button{padding:10px 9px}.terminal-tabs>button svg{display:none}.terminal-tabs>button:nth-child(n+4){display:none}.hop{font-size:10px}.device-heading{padding:17px 1px;gap:5px}.badge{font-size:9px;padding:5px 6px}.inspector-device-icon{width:49px}.lab-heading{margin:15px 15px 0}.bottom-dock{grid-template-columns:1fr}.timeline{display:none}.inspector>.panel-tabs>button{font-size:11px}.packet-card{top:12px;min-width:250px}.course-progress span{font-size:10px}}@media(max-width:1099px){.workspace,.topbar,.statusbar{display:none}.small-screen{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;height:100dvh;padding:30px;text-align:center;line-height:1.8;color:#b9cce1}.app{min-height:0}.small-screen svg{color:#4e9fe7}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}.react-flow__edge.animated path{animation:none!important}}.workspace{grid-template-rows:minmax(210px,1fr) 10px var(--dock)}.sidebar{grid-column:1;grid-row:1/4}.left-resizer{grid-column:2;grid-row:1/4}.studio{display:contents}.canvas{grid-column:3;grid-row:1}.inspector{grid-column:5;grid-row:1}.right-resizer{grid-column:4;grid-row:1}.horizontal{grid-column:3/6;grid-row:2}.bottom-dock{grid-column:3/6;grid-row:3;height:auto;grid-template-columns:1.04fr 1fr;min-height:0}.timeline{display:flex}.sidebar-actions>button.run{white-space:normal;text-align:left;line-height:1.3}.course-progress small{white-space:nowrap}.device-node .react-flow__handle{opacity:.16}.react-flow__controls{left:auto;right:10px;bottom:30px}.device-node:hover .react-flow__handle{opacity:1}.device-icon{width:80px;height:68px}.device-node strong{font-size:17px}@media(max-width:1450px){.bottom-dock{grid-template-columns:1.04fr 1fr}.timeline{display:flex}.terminal-tabs>button:nth-child(n+4){display:flex}.terminal-tabs>button{padding:10px 12px}.timeline .panel-tabs>button{font-size:11px}.sidebar-footer{font-size:9px}.workspace{grid-template-columns:min(var(--left),185px) 8px minmax(500px,1fr) 8px min(var(--right),360px)}}.react-flow__edge.reverse-packet.animated path{animation-direction:reverse!important}
