@import url(https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap);body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--accent:#0d9488;--bg:#fafaf9;--paper:#fff;--ink:#1c1917;--muted:#57534e;--soft:#78716c;--line:#e7e5e4;--line-strong:#d6d3d1}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:#e7e5df;min-height:100%;width:100%}a{color:inherit}button{font:inherit}.App{background:#e7e5df;color:#1c1917;color:var(--ink);font-family:IBM Plex Sans,sans-serif;min-height:100vh;text-align:left}.site-shell{background:#fafaf9;background:var(--bg);border-radius:2px;box-shadow:0 1px 3px #0000001a;margin:48px auto;overflow:hidden;width:min(1040px,calc(100% - 32px))}.site-header{align-items:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffd6;border-bottom:1px solid #e7e5e4;border-bottom:1px solid var(--line);display:flex;gap:24px;justify-content:space-between;padding:22px 64px;position:-webkit-sticky;position:sticky;top:0;z-index:10}.brand-mark,.desktop-sim-link,.hero-actions,.live-badge,.primary-button,.publication-filters,.top-nav{font-family:IBM Plex Mono,monospace}.brand-mark{align-items:center;color:#1c1917;color:var(--ink);display:inline-flex;font-size:13px;gap:10px;text-decoration:none}.brand-dot{background:#0d9488;background:var(--accent);border-radius:2px;display:inline-block;height:9px;width:9px}.brand-short{display:none}.top-nav{align-items:center;color:#57534e;color:var(--muted);display:flex;font-size:12.5px;gap:26px}.hero-actions a,.primary-button,.project-card,.publication-row,.top-nav a{text-decoration:none}.site-footer a:hover,.top-nav a:hover{color:#0d9488;color:var(--accent)}.hero-section{max-width:1000px;padding:64px 64px 44px}.hero-grid{align-items:center;display:flex;gap:52px}.hero-text{flex:1 1;min-width:0}.hero-portrait{flex:none}.hero-portrait img{border:1px solid #d6d3d1;border:1px solid var(--line-strong);border-radius:50%;box-shadow:0 8px 28px #1c191724;display:block;height:210px;object-fit:cover;width:210px}.eyebrow,.section-heading span{color:#0d9488;color:var(--accent);font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.12em;text-transform:uppercase}.hero-section h1{color:#1c1917;color:var(--ink);font-size:52px;font-weight:600;letter-spacing:-.02em;line-height:1.05;margin:18px 0 0}.hero-role{color:#44403c;font-size:19px;font-weight:500;margin:14px 0 0}.hero-copy{color:#57534e;color:var(--muted);font-size:17px;line-height:1.65;margin:22px 0 0;max-width:680px}.hero-copy .tech{color:#0d9488;color:var(--accent);font-family:IBM Plex Mono,monospace;font-size:.9em}.hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}.hero-actions a,.hero-actions button,.publication-filters button{background:#fff;background:var(--paper);border:1px solid #d6d3d1;border:1px solid var(--line-strong);border-radius:999px;color:#1c1917;color:var(--ink);font-size:12.5px}.hero-actions a,.hero-actions button{padding:7px 15px}.hero-actions button{cursor:pointer;font-family:inherit}.hero-actions a:hover,.hero-actions button:hover,.primary-button:hover,.publication-filters button.active,.publication-filters button:hover{border-color:#0d9488;border-color:var(--accent);color:#0d9488;color:var(--accent)}.content-section{padding:0 64px 56px}.section-heading{align-items:center;display:flex;gap:12px;margin-bottom:16px}.section-heading i{background:#e7e5e4;background:var(--line);flex:1 1;height:1px}.simulator-card{background:#fff;background:var(--paper);border:1px solid #d6d3d1;border:1px solid var(--line-strong);border-radius:8px;overflow:hidden;position:relative}.live-badge{align-items:center;background:#ffffffdb;border:1px solid #e7e5e4;border:1px solid var(--line);border-radius:4px;color:#0d9488;color:var(--accent);display:inline-flex;font-size:11px;gap:6px;padding:4px 9px;position:absolute;right:16px;top:14px;z-index:2}.live-badge b{background:#0d9488;background:var(--accent);border-radius:50%;height:7px;width:7px}.network-preview{contain:layout paint;height:clamp(360px,42vw,440px);isolation:isolate}.network-preview #network{overflow:hidden}.simulator-copy{align-items:center;background:#ffffffdb;border-top:1px solid #e7e5e4;border-top:1px solid var(--line);display:flex;gap:24px;justify-content:space-between;padding:18px 20px 20px}.simulator-copy h2{color:#1c1917;color:var(--ink);font-size:18px;font-weight:600;margin:0}.simulator-copy p{color:#78716c;color:var(--soft);font-size:14px;line-height:1.5;margin:6px 0 0;max-width:560px}.primary-button{background:#fff;background:var(--paper);border:1px solid #0d9488;border:1px solid var(--accent);border-radius:999px;color:#1c1917;color:var(--ink);flex:none;font-size:12px;padding:9px 16px}.publications-heading{flex-wrap:wrap;margin-bottom:6px}.publication-filters{display:flex;flex-wrap:wrap;gap:6px}.publication-filters button{color:#57534e;color:var(--muted);cursor:pointer;font-size:11px;padding:4px 11px;text-transform:capitalize}.publication-list{border-top:1px solid #e7e5e4;border-top:1px solid var(--line)}.publication-row{align-items:flex-start;border-bottom:1px solid #e7e5e4;border-bottom:1px solid var(--line);display:flex;gap:22px;padding:18px 0}.publication-row:hover strong{color:#0d9488;color:var(--accent)}.publication-year{color:#a8a29e;flex:none;font-family:IBM Plex Mono,monospace;font-size:13px;width:46px}.publication-main{grid-gap:4px;display:grid;flex:1 1;gap:4px}.publication-main strong{color:#1c1917;color:var(--ink);font-size:16px;font-weight:500;line-height:1.4}.publication-main em,.publication-main small{color:#78716c;color:var(--soft);font-size:14px;font-style:normal;line-height:1.45}.publication-type{border:1px solid #e7e5e4;border:1px solid var(--line);border-radius:999px;color:#0d9488;color:var(--accent);flex:none;font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.05em;padding:3px 10px;text-transform:uppercase}.project-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.project-card{grid-gap:8px;background:#fff;background:var(--paper);border:1px solid #e7e5e4;border:1px solid var(--line);border-radius:6px;display:grid;gap:8px;padding:20px}.project-card:hover{border-color:#0d9488;border-color:var(--accent)}.project-title{align-items:center;display:flex;gap:10px}.project-icon{flex-shrink:0;height:26px;object-fit:contain;width:26px}.project-title strong{color:#1c1917;color:var(--ink);font-size:16px;font-weight:600}.project-card span:not(.project-title){color:#57534e;color:var(--muted);font-size:14px;line-height:1.55}.project-card em{color:#0d9488;color:var(--accent);font-family:IBM Plex Mono,monospace;font-size:12px;font-style:normal;margin-top:4px}.split-section{grid-gap:48px;display:grid;gap:48px;grid-template-columns:repeat(2,minmax(0,1fr))}.compact-row{grid-gap:4px;border-top:1px solid #e7e5e4;border-top:1px solid var(--line);display:grid;gap:4px;padding:14px 0}.compact-row strong{color:#1c1917;color:var(--ink);font-size:15px;font-weight:500}.compact-row span{color:#78716c;color:var(--soft);font-family:IBM Plex Mono,monospace;font-size:12.5px}.compact-row .course-desc{color:#57534e;color:var(--muted);font-family:inherit;font-size:13.5px;line-height:1.5}.course-topics{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}.course-topics b{border:1px solid #d6d3d1;border:1px solid var(--line-strong);border-radius:999px;color:#78716c;color:var(--soft);font-size:11px;font-weight:500;padding:2px 9px}.course-topics b,.site-footer{font-family:IBM Plex Mono,monospace}.site-footer{align-items:center;background:#fff;background:var(--paper);border-top:1px solid #e7e5e4;border-top:1px solid var(--line);color:#a8a29e;display:flex;flex-wrap:wrap;font-size:12px;gap:14px;justify-content:space-between;padding:30px 64px}.site-footer a,.site-footer button{color:#0d9488;color:var(--accent);font-size:12.5px;text-decoration:none}.site-footer button{background:none;border:0;cursor:pointer;font-family:inherit;padding:0}.sim-shell{min-height:calc(100vh - 96px);width:min(1440px,calc(100% - 32px))}.sim-header{justify-content:flex-start;padding-left:36px;padding-right:36px}.sim-intro{align-items:flex-end;display:flex;gap:24px;justify-content:space-between;padding:34px 36px 24px}.sim-intro h1{color:#1c1917;color:var(--ink);font-size:34px;font-weight:600;line-height:1.12;margin:12px 0 0;max-width:760px}.sim-intro p{color:#57534e;color:var(--muted);font-size:15px;line-height:1.55;margin:12px 0 0;max-width:720px}.sim-stat{border-left:1px solid #e7e5e4;border-left:1px solid var(--line);color:#78716c;color:var(--soft);display:grid;font-family:IBM Plex Mono,monospace;min-width:112px;padding-left:22px;text-align:right}.sim-stat span{color:#0d9488;color:var(--accent);font-size:31px;font-weight:600;line-height:1}.sim-stat small{font-size:11px;margin-top:5px;text-transform:uppercase}.sim-workspace{grid-gap:16px;display:grid;gap:16px;grid-template-columns:minmax(220px,260px) minmax(0,1fr) minmax(250px,300px);min-height:690px;padding:0 36px 36px}.sim-controls,.sim-inspector .MuiPaper-root,.sim-main{background:#fff;background:var(--paper);border:1px solid #d6d3d1;border:1px solid var(--line-strong);border-radius:8px}.sim-controls{align-self:start;padding:18px}.sim-control-list{grid-gap:15px;display:grid;gap:15px}.sim-control{grid-gap:4px;border:0;display:grid;gap:4px;margin:0;padding:0}.sim-control legend{align-items:center;display:flex;gap:10px;justify-content:space-between;padding:0;width:100%}.sim-control b,.sim-control em,.sim-range-inputs,.sim-regenerate,.sim-toolbar-copy{font-family:IBM Plex Mono,monospace}.sim-control b{color:#1c1917;color:var(--ink);font-size:12.5px;font-weight:500}.sim-control em{color:#0d9488;color:var(--accent);font-size:12px;font-style:normal}.sim-range-inputs{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:7px}.sim-range-inputs label{grid-gap:4px;display:grid;gap:4px}.sim-range-inputs span{color:#78716c;color:var(--soft);font-size:10px;text-transform:uppercase}.sim-range-inputs input{background:#fafaf9;border:1px solid #d6d3d1;border:1px solid var(--line-strong);border-radius:6px;color:#1c1917;color:var(--ink);font:inherit;font-size:13px;min-width:0;padding:7px 8px;width:100%}.sim-range-inputs input:focus{border-color:#0d9488;border-color:var(--accent);outline:2px solid #0d948824;outline-offset:1px}.sim-regenerate.MuiButton-root{background:#0d9488;background:var(--accent);border-radius:999px;box-shadow:none;color:#fff;font-size:12px;font-weight:500;margin-top:18px;padding:9px 13px;text-transform:none}.sim-regenerate.MuiButton-root:hover{background:#0f766e;box-shadow:none}.sim-main{display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden;position:relative}.sim-toolbar{align-items:center;border-bottom:1px solid #e7e5e4;border-bottom:1px solid var(--line);display:flex;gap:16px;justify-content:space-between;min-height:50px;padding:10px 14px}.sim-main:-webkit-full-screen{background:#fff;background:var(--paper);border:0;border-radius:0;height:100vh;width:100vw}.sim-main.is-fullscreen,.sim-main:fullscreen{background:#fff;background:var(--paper);border:0;border-radius:0;height:100vh;width:100vw}.sim-main.is-fullscreen{inset:0;position:fixed;z-index:100}.sim-main:-webkit-full-screen .sim-canvas{min-height:0}.sim-main.is-fullscreen .sim-canvas,.sim-main:fullscreen .sim-canvas{min-height:0}.sim-toolbar .live-badge{flex:none;position:static}.sim-toolbar-copy{align-items:center;color:#57534e;color:var(--muted);display:inline-flex;font-size:12px;gap:7px;min-width:0}.sim-toolbar-copy svg{color:#0d9488;color:var(--accent);height:16px;width:16px}.sim-toolbar-copy span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sim-view-controls{align-items:center;display:inline-flex;flex:none;font-family:IBM Plex Mono,monospace;font-size:11px;gap:6px}.sim-view-controls button{align-items:center;background:#fff;background:var(--paper);border:1px solid #d6d3d1;border:1px solid var(--line-strong);border-radius:999px;color:#1c1917;color:var(--ink);cursor:pointer;display:inline-flex;height:30px;justify-content:center;width:30px}.sim-view-controls button:hover:not(:disabled){border-color:#0d9488;border-color:var(--accent);color:#0d9488;color:var(--accent)}.sim-view-controls button:disabled{cursor:default;opacity:.45}.sim-view-controls svg{height:16px;width:16px}.sim-view-controls .sim-zoom-reset{color:#57534e;color:var(--muted);min-width:44px;padding:0 8px;width:auto}.sim-canvas{cursor:grab;flex:1 1;min-height:620px;overflow:hidden;overscroll-behavior:contain;position:relative;touch-action:none;-webkit-user-select:none;user-select:none}.sim-canvas.is-panning{cursor:grabbing}.sim-network-zoom{inset:0;position:absolute;transform-origin:center center;transition:transform .12s ease}.sim-canvas #network{height:100%}.sim-legend-toggle{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffffeb;border:1px solid #d6d3d1;border:1px solid var(--line-strong);border-radius:999px;box-shadow:0 1px 3px #1c19171f;color:#1c1917;color:var(--ink);cursor:pointer;display:inline-flex;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500;gap:6px;left:calc(100% - 104px);padding:7px 13px;position:-webkit-sticky;position:sticky;top:12px;z-index:7}.sim-legend-toggle svg{color:#0d9488;color:var(--accent);height:16px;width:16px}.sim-control>input{background:#fafaf9;border:1px solid #d6d3d1;border:1px solid var(--line-strong);border-radius:6px;color:#1c1917;color:var(--ink);font:inherit;font-family:IBM Plex Mono,monospace;font-size:13px;margin-top:7px;min-width:0;padding:7px 8px;width:100%}.sim-control>input:focus{border-color:#0d9488;border-color:var(--accent);outline:2px solid #0d948824;outline-offset:1px}.sim-traffic-heading{margin-top:24px}.sim-traffic-note{color:#78716c;color:var(--soft);font-size:11px;line-height:1.5;margin:10px 0 0}.sim-legend-backdrop{background:#1c191747;inset:0;position:absolute;z-index:8}.sim-legend-overlay{max-height:calc(100% - 24px);opacity:0;overflow:auto;pointer-events:none;position:absolute;right:12px;top:12px;transform:translateX(calc(100% + 24px));transition:transform .28s ease,opacity .28s ease;width:min(360px,calc(100% - 24px));z-index:9}.sim-legend-overlay.is-open{opacity:1;pointer-events:auto;transform:translateX(0)}.sim-legend-close{align-items:center;background:#0000;border:0;border-radius:999px;color:#57534e;color:var(--muted);cursor:pointer;display:inline-flex;justify-content:center;padding:4px;position:absolute;right:10px;top:10px;z-index:1}.sim-legend-close:hover{color:#1c1917;color:var(--ink)}.sim-node-sheet{border-top-left-radius:16px;border-top-right-radius:16px;max-height:78vh;padding:8px 8px calc(8px + env(safe-area-inset-bottom))}.sim-inspector{display:flex;flex-direction:column;gap:16px;min-height:0;min-width:0;overflow:hidden}.sim-inspector .MuiPaper-root{box-shadow:none}.sim-inspector .MuiTypography-overline{color:#0d9488;color:var(--accent);font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.1em}.sim-inspector .MuiTypography-body2,.sim-inspector .MuiTypography-caption{color:#57534e;color:var(--muted)}.sim-node-panel{display:flex;flex:1 1;min-height:0;overflow:auto}@media (max-width:760px){.App{background:#e7e5df}.site-shell{border:1px solid #d6d3d1;border:1px solid var(--line-strong);border-radius:30px;box-shadow:0 4px 24px #0000001f;margin:20px auto;width:min(390px,calc(100% - 20px))}.site-header{flex-wrap:wrap;gap:14px;padding:18px 22px}.brand-full{display:none}.brand-short{display:inline-flex}.brand-dot{height:8px;width:8px}.top-nav{color:#1c1917;color:var(--ink);flex-wrap:wrap;font-size:11px;gap:8px 6px;justify-content:center;order:2;padding-bottom:2px;width:100%}.top-nav a{background:#fff;background:var(--paper);border:1px solid #d6d3d1;border:1px solid var(--line-strong);border-radius:999px;flex:0 1 auto;padding:5px 9px;white-space:nowrap}.desktop-sim-link,.top-nav .desktop-only{display:none}.hero-section{padding:34px 22px 26px}.hero-grid{align-items:flex-start;flex-direction:column;gap:22px}.hero-portrait{align-self:center;margin-bottom:4px;order:-1}.hero-portrait img{height:128px;width:128px}.eyebrow,.section-heading span{font-size:10.5px;letter-spacing:.1em}.hero-section h1{font-size:34px;line-height:1.06;margin-top:14px}.hero-role{font-size:15px;margin-top:10px}.hero-copy{font-size:14.5px;line-height:1.6;margin-top:16px}.hero-actions{gap:8px;margin-top:20px}.hero-actions a{font-size:11.5px;padding:6px 12px}.content-section{padding:0 22px 30px}.section-heading{margin-bottom:12px}.network-preview{height:210px}.live-badge{right:12px;top:12px}.simulator-copy{grid-gap:12px;display:grid;gap:12px;padding:14px 16px 16px}.simulator-copy h2{font-size:15px}.simulator-copy p{font-size:12.5px}.primary-button{font-size:11.5px;justify-self:start;padding:7px 13px}.publications-heading{grid-gap:10px;display:grid;gap:10px;grid-template-columns:1fr}.publications-heading i{display:none}.publication-filters button{font-size:10.5px;padding:4px 9px}.publication-row{grid-gap:6px 10px;display:grid;gap:6px 10px;grid-template-columns:1fr auto;padding:14px 0}.publication-year{font-size:11.5px;width:auto}.publication-main{grid-column:1/-1;grid-row:2}.publication-main strong{font-size:14.5px}.publication-main em,.publication-main small{font-size:12.5px}.publication-type{font-size:10px;padding:2px 8px}.project-grid,.split-section{gap:12px;grid-template-columns:1fr}.project-card{padding:16px}.project-title strong{font-size:14.5px}.project-card span:not(.project-title){font-size:13px}.site-footer{display:grid;font-size:11.5px;padding:24px 22px}.sim-shell{min-height:auto;width:min(430px,calc(100% - 16px))}.sim-header{display:flex;flex-wrap:nowrap;justify-content:flex-start;padding-left:22px;padding-right:22px}.sim-intro{grid-gap:16px;display:grid;gap:16px;padding:28px 22px 18px}.sim-intro h1{font-size:26px;line-height:1.14}.sim-intro p{font-size:13.5px}.sim-stat{align-items:baseline;border-left:0;border-top:1px solid #e7e5e4;border-top:1px solid var(--line);display:flex;justify-content:space-between;min-width:0;padding-left:0;padding-top:14px;text-align:left}.sim-stat span{font-size:25px}.sim-workspace{display:flex;flex-direction:column;gap:12px;min-height:0;padding:0 12px 18px}.sim-controls{order:2;padding:14px;width:100%}.sim-control-list{gap:10px 14px;grid-template-columns:repeat(2,minmax(0,1fr))}.sim-control b,.sim-control em{font-size:11.5px}.sim-main{height:620px;order:1}.sim-toolbar{align-items:flex-start;flex-wrap:wrap;gap:8px;padding:10px 12px}.sim-toolbar-copy{flex:1 1 160px;font-size:11px}.sim-toolbar-copy span{white-space:normal}.sim-view-controls{margin-left:auto}.sim-view-controls button{height:28px;width:28px}.sim-view-controls span{min-width:34px}.sim-canvas{min-height:540px}.sim-inspector{order:3;overflow:visible}.sim-node-panel{max-height:360px}}#network{background:radial-gradient(circle at 50% 50%,#0d948814,#0000 42%),linear-gradient(#fafaf9,#f7f5f1);flex:auto;flex-grow:1;height:100%;position:relative}svg{display:block}.packet-layer,svg{height:100%;width:100%}.packet-layer{inset:0;position:absolute}.packet,.packet-layer{pointer-events:none}
/*# sourceMappingURL=main.e203f7bf.css.map*/