:root{color-scheme:light;--brand: #2563eb;--brand-strong: #1d4ed8;--brand-soft: #e6efff;--secondary: #6d5dfc;--secondary-soft: #f0ecff;--tertiary: #0f8ea8;--tertiary-soft: #e0f7fb;--success: #16a34a;--success-soft: #dcfce7;--danger: #dc2626;--danger-soft: #fee2e2;--bg: #fbfcfe;--surface: #ffffff;--surface-low: #f7f9fc;--surface-mid: #e8edf5;--text: #172033;--muted: #536174;--faint: #7a8698;--border: #e1e7f0;--line: #d7deea;--shadow-sm: 0 1px 2px rgb(23 32 51 / .04);--shadow-md: 0 12px 26px rgb(23 32 51 / .08);--radius-sm: 6px;--radius-md: 8px;--radius-lg: 8px;--topbar-height: 68px;--sidebar-width: 264px}:root[data-theme=dark]{color-scheme:dark;--brand: #60a5fa;--brand-strong: #93c5fd;--brand-soft: #1d2f55;--secondary: #b7a5ff;--secondary-soft: #2e2755;--tertiary: #5ed7e8;--tertiary-soft: #193f4a;--success: #4ade80;--success-soft: #14532d;--danger: #f87171;--danger-soft: #7f1d1d;--bg: #101624;--surface: #151d2b;--surface-low: #1b2637;--surface-mid: #263247;--text: #ecf2fb;--muted: #b6c0d2;--faint: #8d9ab0;--border: #2a3648;--line: #344256;--shadow-sm: 0 1px 2px rgb(0 0 0 / .22);--shadow-md: 0 16px 34px rgb(0 0 0 / .34)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15.5px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input{font:inherit}button,a{color:inherit}button{cursor:pointer;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease,box-shadow .16s ease}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid color-mix(in srgb,var(--brand) 28%,transparent);outline-offset:2px}::selection{background:color-mix(in srgb,var(--brand) 22%,transparent)}img{display:block;max-width:100%}.app-shell{min-height:100vh}.page-with-topbar{padding-top:var(--topbar-height)}.page-fallback{min-height:100vh;background:var(--bg)}.pill{display:inline-flex;align-items:center;min-height:28px;border:1px solid var(--border);border-radius:999px;background:var(--surface-low);color:var(--muted);padding:0 10px;font-size:12px;font-weight:700}.accent-teal{border-color:color-mix(in srgb,var(--tertiary) 34%,var(--border));background:var(--tertiary-soft);color:var(--tertiary)}.top-nav{position:fixed;inset:0 0 auto 0;z-index:30;display:flex;align-items:center;justify-content:space-between;height:var(--topbar-height);padding:0 clamp(18px,3vw,32px);background:color-mix(in srgb,var(--surface) 94%,transparent);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.brand-area,.top-actions,.primary-nav,.brand,.inline-back,.icon-text-button,.search-box,.nav-link,.secondary-button{display:flex;align-items:center}.brand-area{gap:24px;min-width:0}.brand{gap:10px;border:0;background:transparent;color:var(--text);font-size:18px;font-weight:700;padding:8px 0;white-space:nowrap}.brand svg{color:var(--brand)}.primary-nav{gap:4px}.primary-nav button,.primary-nav a{border:0;background:transparent;color:var(--muted);font-size:14px;font-weight:600;text-decoration:none;border-radius:var(--radius-sm);padding:7px 10px}.primary-nav .active{color:var(--brand);background:var(--brand-soft);box-shadow:none}.primary-nav button:hover,.primary-nav a:hover{background:var(--surface-low);color:var(--brand)}.top-actions{gap:8px}.search-box{width:min(30vw,380px);gap:8px;height:40px;padding:0 13px;background:var(--surface-low);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--faint)}.mobile-icon-button{display:none;place-items:center;width:40px;height:40px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--muted)}.mobile-search-panel{position:fixed;inset:calc(var(--topbar-height) + 8px) 12px auto;z-index:40;display:none;grid-template-columns:minmax(0,1fr) auto;gap:8px}.mobile-search-field{display:flex;align-items:center;gap:9px;min-height:44px;border:1px solid var(--border);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 96%,transparent);color:var(--faint);padding:0 12px;box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.mobile-search-field input,.search-box input{min-width:0;width:100%;border:0;outline:0;background:transparent;color:var(--text)}.search-box input::placeholder{color:var(--faint)}.icon-text-button,.nav-link,.secondary-button{gap:8px;min-height:40px;border:1px solid var(--border);background:transparent;color:var(--muted);border-radius:var(--radius-md);padding:0 13px;font-size:13px;font-weight:600;box-shadow:none}.icon-text-button:hover,.nav-link:hover,.secondary-button:hover{color:var(--brand);border-color:color-mix(in srgb,var(--brand) 46%,var(--border));background:color-mix(in srgb,var(--brand-soft) 52%,var(--surface))}.language-mark{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:999px;background:var(--brand-soft);color:var(--brand-strong);font-size:11px;font-weight:800}.home-layout{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100vh}.left-sidebar,.simulator-panel{background:var(--surface);border-color:var(--border)}.left-sidebar{position:sticky;top:var(--topbar-height);height:calc(100vh - var(--topbar-height));display:flex;flex-direction:column;gap:22px;padding:24px 18px;border-right:1px solid var(--border);overflow:auto}.path-header span,.contents-panel h3,.info-section>header,.endpoint-label,.wire-caption,.timeline-item small{color:var(--faint);font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.path-header h2{margin:6px 0 0;color:var(--brand);font-size:18px;line-height:1.3}.category-list{display:grid;gap:7px}.category-list button{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;border:1px solid transparent;border-radius:var(--radius-md);padding:10px 11px;background:transparent;color:var(--muted);text-align:left}.category-heading{display:flex;align-items:center;gap:10px;color:inherit;font-weight:800;min-width:0}.category-list button small{color:var(--faint);font-weight:700}.category-list .active{border-color:color-mix(in srgb,var(--brand) 24%,transparent);background:var(--brand-soft);color:var(--brand-strong)}.category-list .active small{color:var(--brand-strong)}.category-list button:hover{border-color:var(--border);background:var(--surface-low);color:var(--text)}.primary-button,.cta-panel button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:var(--radius-md);background:var(--brand);color:#fff;min-height:44px;padding:0 16px;font-weight:700;box-shadow:none}.primary-button:hover,.cta-panel button:hover{background:var(--brand-strong);transform:translateY(-1px)}.graph-canvas{position:relative;min-width:0;height:calc(100vh - var(--topbar-height));min-height:720px;overflow:hidden;cursor:default;background:var(--bg);-webkit-user-select:none;user-select:none}.graph-canvas:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;box-shadow:inset 0 1px color-mix(in srgb,var(--surface) 92%,transparent),inset 0 0 60px color-mix(in srgb,var(--text) 5%,transparent);content:""}.graph-canvas.is-panning{cursor:grabbing}.mobile-category-tabs{display:none}.search-status{position:absolute;top:24px;left:206px;z-index:6;display:inline-flex;align-items:center;gap:8px;min-height:38px;border:1px solid var(--border);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 94%,transparent);color:var(--muted);padding:0 12px;box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.search-status svg{color:var(--brand)}.search-status strong{color:var(--text)}.graph-toolbar{position:absolute;top:24px;left:28px;z-index:6;display:flex;align-items:center;gap:4px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--surface) 88%,transparent);padding:4px;box-shadow:0 1px #ffffffc7 inset,0 16px 36px #1720331f;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.graph-mode-switch{display:inline-flex;gap:2px;padding:0}.scope-switch{position:relative;padding-left:5px;margin-left:3px}.scope-switch:before{position:absolute;left:0;top:5px;bottom:5px;width:1px;background:var(--border);content:""}.graph-mode-switch button{min-width:58px;min-height:32px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--muted);font-weight:800}.graph-mode-switch button.active{background:var(--brand-soft);color:var(--brand);box-shadow:0 1px #ffffffb3 inset}.graph-empty-state{position:absolute;top:86px;right:24px;bottom:24px;left:24px;display:grid;place-items:center;align-content:center;gap:10px;border:1px dashed color-mix(in srgb,var(--border) 72%,var(--brand));border-radius:8px;background:color-mix(in srgb,var(--surface) 86%,transparent);color:var(--muted);text-align:center}.graph-empty-state svg{color:var(--brand)}.graph-empty-state h2{margin:0;color:var(--text);font-size:18px}.graph-empty-state p{margin:0;max-width:min(520px,80%);overflow-wrap:anywhere}.sphere-graph-stage{position:absolute;top:58px;right:34px;bottom:106px;left:34px;z-index:2;display:grid;place-items:center;cursor:grab;touch-action:none}.sphere-graph{width:100%;height:100%;overflow:visible;pointer-events:auto}.sphere-graph-world{display:grid;place-items:center;width:100%;height:100%;transform-origin:center;transition:transform .14s cubic-bezier(.2,0,0,1);will-change:transform}.graph-canvas.is-panning .sphere-graph-world{transition:none}.graph-canvas.is-panning .sphere-node{pointer-events:none}.sphere-edge{stroke:color-mix(in srgb,var(--category-color) 28%,var(--line));stroke-width:1.25;stroke-linecap:round;opacity:.54}.sphere-edge.category{stroke:color-mix(in srgb,var(--category-color) 44%,var(--line));stroke-width:1.4;opacity:.72}.sphere-edge.group{opacity:.42}.sphere-edge.prerequisite{stroke:color-mix(in srgb,var(--brand) 62%,var(--line));stroke-width:1.7;opacity:.84;filter:url(#sphereLineGlow)}.sphere-edge.related{stroke:color-mix(in srgb,var(--category-color) 52%,var(--line));stroke-width:1.25;stroke-dasharray:5 8;opacity:.72}.sphere-node-shell{overflow:visible}.sphere-node{position:relative;display:grid;place-items:center;width:100%;height:100%;border:1px solid color-mix(in srgb,var(--category-color) 42%,var(--border));border-radius:999px;background:radial-gradient(circle at 34% 25%,rgb(255 255 255 / .92),rgb(255 255 255 / .38) 18%,transparent 36%),radial-gradient(circle at 58% 72%,color-mix(in srgb,var(--category-color) 62%,#0f172a),transparent 72%),color-mix(in srgb,var(--category-color) 30%,var(--surface));color:color-mix(in srgb,var(--text) 78%,var(--category-color));text-align:center;font-weight:850;line-height:1.18;cursor:pointer;box-shadow:inset -9px -13px 18px color-mix(in srgb,var(--category-color) 24%,rgb(0 0 0 / .26)),inset 8px 9px 14px #ffffff57,0 13px color-mix(in srgb,var(--category-color) 38%,#596476),0 18px 26px #1720332e,0 34px 52px color-mix(in srgb,var(--category-color) 14%,transparent);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,filter .16s ease}.graph-canvas-controls{position:absolute;right:20px;bottom:22px;z-index:8;display:flex;align-items:center;overflow:hidden;border:1px solid var(--border);border-radius:14px;background:color-mix(in srgb,var(--surface) 90%,transparent);box-shadow:0 1px #ffffffc7 inset,0 18px 38px #17203329;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.graph-canvas-controls button{display:grid;place-items:center;width:42px;height:42px;border:0;border-right:1px solid var(--border);background:transparent;color:var(--muted)}.graph-canvas-controls button:last-child{border-right:0}.graph-canvas-controls button:hover{background:var(--brand-soft);color:var(--brand)}.canvas-zoom-readout{display:grid;place-items:center;width:58px;height:42px;border-right:1px solid var(--border);color:var(--text);font-size:12px;font-weight:850;font-variant-numeric:tabular-nums}.sphere-node:hover,.sphere-node:focus-visible{transform:translateY(-3px) scale(1.05);border-color:color-mix(in srgb,var(--category-color) 82%,var(--surface));filter:saturate(1.08);box-shadow:inset -9px -13px 18px color-mix(in srgb,var(--category-color) 24%,rgb(0 0 0 / .26)),inset 8px 9px 14px #ffffff57,0 10px color-mix(in srgb,var(--category-color) 38%,#596476),0 22px 32px color-mix(in srgb,var(--category-color) 20%,transparent)}.sphere-node.category{color:var(--category-color);font-size:13px;background:radial-gradient(circle at 34% 24%,rgb(255 255 255 / .98),rgb(255 255 255 / .4) 18%,transparent 36%),radial-gradient(circle at 56% 68%,color-mix(in srgb,var(--category-color) 42%,var(--surface)),transparent 72%),color-mix(in srgb,var(--category-color) 14%,var(--surface))}.sphere-node.group{border-color:color-mix(in srgb,var(--category-color) 74%,var(--surface));background:radial-gradient(circle at 34% 24%,rgb(255 255 255 / .62),transparent 30%),radial-gradient(circle at 58% 70%,color-mix(in srgb,var(--category-color) 72%,#101827),transparent 76%),color-mix(in srgb,var(--category-color) 84%,#10213f);color:#fff;font-size:11px}.sphere-node.knowledge{padding:0 8px;font-size:10.2px}.sphere-node.knowledge.all-mode{font-size:8.2px}.sphere-node.knowledge.secondary{opacity:.86;filter:saturate(.86)}.sphere-node.knowledge.active,.sphere-node.knowledge.matched{opacity:1;border-color:var(--category-color);color:color-mix(in srgb,var(--text) 70%,var(--category-color));box-shadow:0 0 0 5px color-mix(in srgb,var(--category-color) 18%,transparent),inset -9px -13px 18px color-mix(in srgb,var(--category-color) 24%,rgb(0 0 0 / .26)),inset 8px 9px 14px #ffffff57,0 11px color-mix(in srgb,var(--category-color) 46%,#596476),0 20px 34px color-mix(in srgb,var(--category-color) 24%,transparent)}.sphere-label{display:-webkit-box;max-width:82%;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow-wrap:anywhere}.sphere-node.all-mode .sphere-label{max-width:86%;-webkit-line-clamp:2}.sphere-node.category .sphere-label,.sphere-node.group .sphere-label{max-width:78%}.sphere-node small{position:absolute;right:13px;bottom:10px;color:currentColor;font-size:9px;font-weight:900}.sphere-node.group small{color:#ffffffe0}.sphere-node strong{position:absolute;left:50%;bottom:-22px;transform:translate(-50%);white-space:nowrap;border-radius:999px;background:color-mix(in srgb,var(--category-color) 12%,var(--surface));color:var(--category-color);padding:2px 8px;font-size:9px;box-shadow:var(--shadow-sm)}.node-badge{position:absolute;top:-3px;right:-2px;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:999px;background:var(--category-color);color:#fff;box-shadow:var(--shadow-sm)}.visual-node-badge{position:absolute;top:-2px;left:-1px;display:inline-grid;place-items:center;width:18px;height:18px;border-radius:999px;background:color-mix(in srgb,var(--category-color) 88%,var(--surface));color:#fff;box-shadow:var(--shadow-sm)}.visual-node-badge svg{width:11px;height:11px;stroke-width:2.4}.about-shell{display:grid;gap:24px;width:min(1120px,calc(100% - 48px));margin:0 auto;padding:54px 0}.about-hero{display:grid;gap:16px;max-width:760px}.about-hero h1{margin:0;font-size:clamp(34px,5vw,52px);line-height:1.1;letter-spacing:0}.about-hero p,.about-card p{margin:0;color:var(--muted);line-height:1.7}.about-hero .primary-button{width:fit-content;min-width:156px}.about-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.about-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);padding:20px}.about-card h2{margin:0 0 10px;font-size:18px}.mini-concept>div{display:grid;place-items:center;width:38px;height:38px;border-radius:var(--radius-sm);background:var(--surface);color:var(--brand)}.mini-concept span{display:grid;line-height:1.2}.mini-concept small{color:var(--faint);font-size:12px}.detail-shell{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr)}.detail-content{min-width:0;width:min(100%,1440px);margin:0 auto;padding:28px clamp(24px,3vw,42px)}.breadcrumbs{display:flex;align-items:center;gap:9px;color:var(--faint);font-size:14px;margin-bottom:20px}.breadcrumbs button{border:0;background:transparent;color:var(--brand);padding:0;font-weight:600}.breadcrumbs strong{color:var(--muted)}.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) clamp(310px,24vw,380px);gap:clamp(22px,2.5vw,34px);align-items:start;width:100%}.article-flow{display:grid;gap:16px}.hero-panel,.info-section,.contents-panel,.cta-panel{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm)}.hero-panel{position:relative;overflow:hidden;padding:clamp(22px,3vw,30px)}.hero-panel h1{margin:14px 0 10px;font-size:clamp(27px,4vw,34px);line-height:1.2;letter-spacing:0}.hero-panel p{max-width:560px;margin:0;color:var(--muted);font-size:15.5px;line-height:1.6}.hero-facts{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.hero-facts span{display:inline-flex;align-items:center;gap:7px;min-height:30px;border-radius:999px;background:var(--surface-low);color:var(--muted);padding:0 11px;font-size:13px;font-weight:650}.hero-facts svg{color:var(--brand)}.info-section{overflow:hidden}.info-section>header{padding:12px 18px;border-bottom:1px solid var(--border);background:transparent}.info-section>div{padding:16px 18px}.info-section p{margin:0;color:var(--muted);line-height:1.6}.summary-strip{display:flex;align-items:center;gap:12px;color:var(--brand)}.summary-strip p{color:var(--text);font-weight:650}.explanation-flow{display:grid;gap:0}.explanation-card{border-bottom:1px solid var(--border);border-left:3px solid transparent;background:transparent;border-radius:0;padding:16px 4px 18px 14px}.explanation-card:first-child{padding-top:2px}.explanation-card:last-child{border-bottom:0;padding-bottom:2px}.explanation-card h3{margin:0 0 8px;color:var(--brand);font-size:15px}.explanation-card p{margin:0;color:var(--text);line-height:1.72}.mini-facts{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.mini-facts span{display:inline-flex;align-items:center;min-height:30px;border-radius:999px;background:var(--surface-low);color:var(--muted);padding:0 11px;font-size:13px;font-weight:650}.chip-list,.detail-list{display:flex;flex-wrap:wrap;gap:9px}.chip-list span,.detail-list span{display:inline-flex;align-items:center;min-height:32px;border-radius:var(--radius-sm);background:var(--surface-low);color:var(--muted);padding:0 10px;font-size:13.5px;font-weight:700}.detail-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.detail-list span{justify-content:flex-start;min-height:38px}.example-problem-list{display:grid;gap:10px}.example-problem-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;min-height:76px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-low);color:var(--text);padding:13px 14px;text-decoration:none;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.example-problem-card:hover{border-color:color-mix(in srgb,var(--brand) 42%,var(--border));box-shadow:var(--shadow-sm);transform:translateY(-1px)}.example-problem-card span{display:grid;gap:6px;min-width:0}.example-problem-card strong{overflow-wrap:anywhere;font-size:14.5px}.example-problem-card p{margin:0;color:var(--muted);font-size:13px;line-height:1.48}.example-problem-card small{display:inline-flex;align-items:center;gap:5px;color:var(--brand);font-size:12.5px;font-weight:800;white-space:nowrap}code{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace}p code,td code{display:inline-flex;align-items:center;min-height:23px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--brand-soft) 58%,var(--surface-low));color:var(--brand-strong);padding:0 6px;font-size:13px;font-weight:700}table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid var(--border);padding:10px 14px;text-align:left;white-space:nowrap}th{background:var(--surface-low);color:var(--muted);font-size:12px;letter-spacing:.05em;text-transform:uppercase}td{color:var(--muted);font-size:13.5px}.detail-aside{position:sticky;top:calc(var(--topbar-height) + 28px);display:grid;gap:14px}.mobile-detail-cta{display:none}.cta-panel{border-radius:var(--radius-lg);border:1px solid color-mix(in srgb,var(--brand) 30%,var(--border));background:var(--brand-soft);color:var(--brand-strong);padding:18px;box-shadow:none}.cta-panel h2{margin:9px 0 6px;font-size:20px}.cta-panel p{margin:0 0 16px;color:var(--brand-strong);font-size:14px;line-height:1.5}.simulation-meta-list{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;margin:0 0 14px;border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 58%,transparent);padding:10px 11px}.simulation-meta-list span{color:var(--faint);font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.simulation-meta-list strong{color:var(--brand-strong);font-size:14px}.cta-panel button{width:100%;background:var(--brand);color:#fff}.contents-panel{display:grid;gap:7px;padding:16px 18px}.contents-panel h3{margin:0 0 4px}.contents-panel p{margin:0 0 8px;color:var(--muted);font-size:13px;line-height:1.5}.contents-panel a{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);text-decoration:none;border-left:3px solid transparent;padding-left:9px;line-height:1.42;font-size:14px}.contents-panel .active{border-color:var(--brand);color:var(--brand);font-weight:800}.missing-source{display:block;padding:10px 12px;border:1px dashed color-mix(in srgb,var(--danger) 36%,var(--border));border-radius:8px;color:var(--danger);background:color-mix(in srgb,var(--danger) 8%,var(--surface));font-size:13px}.simulation-signals span{display:flex;align-items:center;gap:8px;min-height:34px;border-radius:var(--radius-sm);background:var(--surface-low);color:var(--muted);padding:0 10px;font-size:13px;font-weight:700}.simulation-signals svg{color:var(--brand)}.footer-line{display:flex;flex-wrap:wrap;gap:14px 24px;width:100%;margin-top:36px;padding:24px 0 0;border-top:1px solid var(--border);color:var(--faint);font-size:13px}.footer-line a{color:var(--muted)}.simulator-shell{display:grid;grid-template-columns:minmax(0,1fr) 372px;grid-template-rows:minmax(0,1fr) 104px;height:100vh;overflow:hidden}.simulator-canvas{min-width:0;background:radial-gradient(color-mix(in srgb,var(--line) 55%,transparent) 1px,transparent 1px),linear-gradient(145deg,color-mix(in srgb,var(--brand-soft) 32%,transparent),transparent 42%),var(--surface);background-size:28px 28px,100% 100%,100% 100%;overflow:hidden}.sim-top-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 28px}.sim-context{min-width:132px;color:var(--faint);font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.sim-top-row h1{margin:0;font-size:23px;line-height:1.3;text-align:center}.sim-top-row p{max-width:720px;margin:5px auto 0;color:var(--muted);text-align:center;font-size:13.5px;line-height:1.45}.sim-control-group{display:flex;justify-content:flex-end;gap:8px;min-width:224px}.sim-control-group .secondary-button{min-width:104px;justify-content:center}.sim-control-group .secondary-button:disabled{opacity:.48;cursor:default;transform:none}.visual-stage{position:relative;display:grid;align-items:center;justify-content:center;min-height:calc(100vh - var(--topbar-height) - 104px - 86px);padding:36px}.visual-stage{grid-template-columns:minmax(260px,360px) minmax(420px,620px);gap:clamp(28px,4vw,56px)}.simulation-actor{display:grid;grid-template-columns:44px minmax(0,1fr);grid-template-areas:"icon main" "state state";gap:9px 12px;align-items:center;border:1px solid var(--border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 90%,var(--brand-soft));padding:12px;box-shadow:var(--shadow-sm)}.simulation-actor-icon{grid-area:icon;display:grid;place-items:center;width:44px;height:44px;border-radius:var(--radius-md);background:var(--brand-soft);color:var(--brand)}.simulation-actor>div:nth-child(2){grid-area:main;display:grid;min-width:0}.simulation-actor span{color:var(--text);font-weight:850;line-height:1.25}.simulation-actor small{color:var(--faint);font-size:12px}.simulation-actor code{grid-area:state;width:100%;min-height:31px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--brand-strong);padding:6px 8px;text-align:center;font-size:12.5px;font-weight:850;white-space:normal}.event-map{position:relative;width:min(100%,620px);min-height:460px;border:1px solid var(--border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:var(--shadow-sm);overflow:hidden}.state-flow-stage{display:grid;grid-template-columns:minmax(0,1fr);padding:clamp(20px,4vw,42px)}.tcp-handshake-stage{grid-template-columns:minmax(0,1fr);gap:0;padding:clamp(18px,3vw,34px)}.tcp-handshake-card{position:relative;justify-self:center;width:min(100%,980px);border:1px solid color-mix(in srgb,var(--brand) 18%,var(--border));border-radius:var(--radius-lg);background:linear-gradient(180deg,#fffffff5,#ffffffe6),var(--surface);box-shadow:0 18px 44px #1720331a;overflow:hidden}:root[data-theme=dark] .tcp-handshake-card{background:linear-gradient(180deg,#151d2bf5,#151d2be6),var(--surface)}.tcp-handshake-diagram{display:block;width:100%;height:auto;min-height:0}.tcp-wave-diagram{min-height:470px}.tcp-state-machine-stage{padding:clamp(14px,2.4vw,28px)}.tcp-state-machine-card{width:fit-content;max-width:100%}.tcp-state-machine-diagram{width:auto;height:min(620px,calc(100vh - var(--topbar-height) - 316px));max-width:100%;min-height:0}.ethernet-frame-stage{grid-template-columns:minmax(0,1fr);gap:0;padding:clamp(12px,2.4vw,28px)}.ethernet-frame-card{width:min(100%,1160px);overflow:visible}.ethernet-frame-diagram{display:block;width:100%;height:auto;min-height:0;overflow:visible}.signal-stage{grid-template-columns:minmax(0,1fr);gap:0;padding:clamp(12px,2.4vw,28px)}.signal-card{width:min(100%,1120px);max-width:1120px;overflow:visible}.signal-diagram{display:block;width:100%;height:auto;min-height:0;overflow:visible}.tcp-ip-model-stage{grid-template-columns:minmax(0,1fr);gap:0;padding:clamp(12px,2.4vw,28px)}.tcp-ip-model-card{width:min(100%,1120px);max-width:1120px;overflow:visible}.tcp-ip-model-diagram{display:block;width:100%;height:auto;min-height:0;overflow:visible}.arp-stage{grid-template-columns:minmax(0,1fr);gap:0;padding:clamp(12px,2.4vw,28px)}.arp-card{width:min(100%,1120px);max-width:1120px;overflow:visible}.arp-diagram{display:block;width:100%;height:auto;min-height:0;overflow:visible}.cdn-stage{grid-template-columns:minmax(0,1fr);gap:0;padding:clamp(12px,2.4vw,28px)}.cdn-card{width:min(100%,1120px);max-width:1120px;overflow:visible}.cdn-diagram{display:block;width:100%;height:auto;min-height:0;overflow:visible}.array-stage,.linked-list-stage,.stack-stage{grid-template-columns:minmax(0,1fr);gap:0;padding:clamp(12px,2.4vw,28px)}.array-card{position:relative;width:min(100%,1080px);border:1px solid color-mix(in srgb,var(--brand) 18%,var(--border));border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 18px 44px #1720331a;overflow:hidden}.linked-list-card{position:relative;width:min(100%,1080px);border:1px solid color-mix(in srgb,var(--tertiary) 20%,var(--border));border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 18px 44px #1720331a;overflow:hidden}.stack-card{position:relative;width:min(100%,1080px);border:1px solid color-mix(in srgb,var(--secondary) 20%,var(--border));border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 18px 44px #1720331a;overflow:hidden}.array-diagram,.linked-list-diagram,.stack-diagram{display:block;width:100%;height:auto;min-height:0}.switch-stage{grid-template-columns:minmax(0,1fr);gap:0;padding:clamp(12px,2.4vw,28px)}.switch-card{width:min(100%,1040px);overflow:visible}.switch-diagram{display:block;width:100%;height:auto;min-height:0;overflow:visible}.tcp-bg-panel{fill:color-mix(in srgb,var(--brand-soft) 42%,var(--surface));stroke:color-mix(in srgb,var(--brand) 18%,transparent)}.ethernet-frame-bg,.switch-bg{fill:color-mix(in srgb,var(--brand-soft) 34%,var(--surface));stroke:color-mix(in srgb,var(--brand) 18%,transparent)}.signal-bg{fill:color-mix(in srgb,var(--brand-soft) 30%,var(--surface));stroke:color-mix(in srgb,var(--brand) 18%,transparent)}.signal-title{fill:var(--text);font-size:28px;font-weight:950;text-anchor:middle}.signal-subtitle{fill:var(--muted);font-size:15px;font-weight:850;text-anchor:middle}.signal-device rect,.signal-link rect,.signal-panel>rect,.signal-scenario rect:first-child{fill:color-mix(in srgb,var(--surface) 92%,transparent);stroke:color-mix(in srgb,var(--brand) 18%,var(--border));stroke-width:1.2;filter:url(#signal-soft-shadow)}.signal-device.active rect,.signal-link.active rect{fill:color-mix(in srgb,var(--brand) 10%,var(--surface));stroke:color-mix(in srgb,var(--brand) 38%,var(--border))}.signal-device text,.signal-link text,.signal-control text,.signal-bit-cell text,.signal-timeline-dot+text,.signal-scenario text,.signal-metric-row text{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;font-weight:850;text-anchor:middle}.signal-device-title,.signal-panel-title{fill:var(--text);font-family:inherit;font-size:15px;font-weight:950;text-anchor:middle}.signal-panel-title{text-anchor:start}.signal-link,.signal-main-arrow,.signal-panel,.signal-control,.signal-metric-row,.signal-scenario{opacity:.25;transition:opacity .18s ease}.signal-link.active,.signal-main-arrow.active,.signal-panel.active,.signal-control.active,.signal-metric-row.active,.signal-scenario.active{opacity:1}.signal-link path{fill:none;stroke:var(--brand);stroke-linecap:round;stroke-width:4}.signal-main-arrow{fill:none;stroke:var(--brand);stroke-linecap:round;stroke-width:4}.signal-main-arrow.success{stroke:var(--success)}.signal-control text{text-anchor:start}.signal-control text:nth-of-type(2){fill:var(--brand-strong);font-weight:950}.signal-control rect:first-of-type{fill:color-mix(in srgb,var(--muted) 18%,transparent)}.signal-control rect:nth-of-type(2){fill:var(--brand)}.signal-axis,.signal-timeline-base{fill:none;stroke:color-mix(in srgb,var(--muted) 44%,transparent);stroke-linecap:round;stroke-width:2}.signal-axis.muted{stroke-width:1.5}.signal-axis-label,.signal-band-label{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;font-weight:850;text-anchor:end}.signal-band{fill:url(#signal-band-gradient);stroke:color-mix(in srgb,var(--tertiary) 38%,var(--border))}.signal-band-label{fill:var(--brand-strong);font-size:13px;font-weight:950;text-anchor:middle}.signal-spectrum-line,.signal-waveform{fill:none;stroke:var(--tertiary);stroke-linecap:round;stroke-linejoin:round;stroke-width:4}.signal-waveform{stroke:var(--brand)}.signal-bit-cell rect{fill:color-mix(in srgb,var(--brand) 10%,var(--surface));stroke:color-mix(in srgb,var(--brand) 28%,var(--border))}.signal-bit-cell text{fill:var(--text);font-size:10px;font-weight:950}.signal-timeline-dot{fill:var(--surface);stroke:color-mix(in srgb,var(--muted) 40%,var(--border));stroke-width:2}.signal-timeline-dot.start,.signal-timeline-dot.active{fill:var(--brand);stroke:var(--brand-strong)}.signal-timeline-dot.full.active{fill:var(--success);stroke:var(--success)}.signal-timeline-fill{fill:none;stroke:var(--brand);stroke-linecap:round;stroke-width:5;opacity:.18}.signal-timeline-fill.active{opacity:1}.signal-timeline-fill.throughput{stroke:var(--success)}.signal-panel.timing text:not(.signal-panel-title){fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;font-weight:850;text-anchor:middle}.signal-metric-row text:first-child{text-anchor:start}.signal-metric-row text:nth-child(2){fill:var(--brand-strong);font-weight:950;text-anchor:end}.signal-scenario rect:first-child{fill:color-mix(in srgb,var(--signal-tone) 8%,var(--surface));stroke:color-mix(in srgb,var(--signal-tone) 34%,var(--border));filter:none}.signal-scenario rect:nth-child(2){fill:var(--signal-tone)}.signal-scenario text:first-of-type{fill:var(--text);text-anchor:start}.signal-scenario text:nth-of-type(2){fill:var(--signal-tone);font-weight:950;text-anchor:end}.signal-caption{right:16px;bottom:14px}.tcp-ip-bg{fill:color-mix(in srgb,var(--brand-soft) 32%,var(--surface));stroke:color-mix(in srgb,var(--brand) 18%,transparent)}.tcp-ip-title{font-size:28px}.tcp-ip-subtitle{font-size:15px}.tcp-ip-host rect,.tcp-ip-osi-map>rect,.tcp-ip-receiver>rect,.tcp-ip-debug-panel>rect{fill:color-mix(in srgb,var(--surface) 92%,transparent);stroke:color-mix(in srgb,var(--brand) 18%,var(--border));stroke-width:1.2;filter:url(#tcp-ip-soft-shadow)}.tcp-ip-host text{fill:var(--text);font-size:15px;font-weight:950;text-anchor:middle}.tcp-ip-host text:nth-of-type(2){fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.tcp-ip-layer rect{fill:color-mix(in srgb,var(--surface) 90%,transparent);stroke:color-mix(in srgb,var(--muted) 20%,var(--border));stroke-width:1.1}.tcp-ip-layer.active rect{fill:color-mix(in srgb,var(--layer-color) 12%,var(--surface));stroke:color-mix(in srgb,var(--layer-color) 46%,var(--border))}.tcp-ip-layer-title,.tcp-ip-layer-examples,.tcp-ip-layer-pdu,.tcp-ip-layer-header{text-anchor:start}.tcp-ip-layer-title{fill:var(--text);font-size:17px;font-weight:950}.tcp-ip-layer-examples{fill:var(--muted);font-size:11.5px;font-weight:850}.tcp-ip-layer-pdu,.tcp-ip-layer-header{fill:var(--brand-strong);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:950;text-anchor:end}.tcp-ip-layer-header{fill:var(--muted);font-size:10px;font-weight:850}.tcp-ip-packet,.tcp-ip-down-arrow,.tcp-ip-wire,.tcp-ip-receiver,.tcp-ip-osi-row,.tcp-ip-debug-chip{opacity:.24;transition:opacity .18s ease}.tcp-ip-packet.visible,.tcp-ip-down-arrow.visible,.tcp-ip-wire.visible,.tcp-ip-receiver.visible,.tcp-ip-osi-row.active,.tcp-ip-debug-chip.active{opacity:1}.tcp-ip-packet rect{fill:color-mix(in srgb,var(--brand) 14%,var(--surface));stroke:color-mix(in srgb,var(--brand) 40%,var(--border));stroke-width:1.2;filter:url(#tcp-ip-soft-shadow)}.tcp-ip-packet.teal rect{fill:color-mix(in srgb,var(--tertiary) 13%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 38%,var(--border))}.tcp-ip-packet.warning rect{fill:color-mix(in srgb,#f59e0b 16%,var(--surface));stroke:color-mix(in srgb,#f59e0b 42%,var(--border))}.tcp-ip-packet.success rect{fill:color-mix(in srgb,var(--success) 14%,var(--surface));stroke:color-mix(in srgb,var(--success) 40%,var(--border))}.tcp-ip-packet text,.tcp-ip-wire text,.tcp-ip-rx-step text,.tcp-ip-osi-row text,.tcp-ip-debug-chip text{fill:var(--text);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;font-weight:900;text-anchor:middle}.tcp-ip-packet-detail{fill:var(--muted);font-size:9.5px;font-weight:850}.tcp-ip-down-arrow path,.tcp-ip-wire path,.tcp-ip-up-path{fill:none;stroke:var(--brand);stroke-linecap:round;stroke-linejoin:round;stroke-width:3.5}.tcp-ip-down-arrow:nth-of-type(2) path{stroke:var(--tertiary)}.tcp-ip-down-arrow:nth-of-type(3) path{stroke:#f59e0b}.tcp-ip-wire path{stroke:var(--success);stroke-width:4.2}.tcp-ip-wire rect{fill:color-mix(in srgb,var(--success) 13%,var(--surface));stroke:color-mix(in srgb,var(--success) 34%,var(--border))}.tcp-ip-receiver-title,.tcp-ip-panel-title{fill:var(--text);font-size:13px;font-weight:950;text-anchor:middle}.tcp-ip-panel-title{text-anchor:start}.tcp-ip-rx-step rect{fill:color-mix(in srgb,var(--layer-color) 12%,var(--surface));stroke:color-mix(in srgb,var(--layer-color) 42%,var(--border))}.tcp-ip-up-path{stroke:color-mix(in srgb,var(--muted) 64%,transparent);stroke-dasharray:7 8}.tcp-ip-osi-row rect{fill:color-mix(in srgb,var(--surface) 86%,transparent);stroke:color-mix(in srgb,var(--muted) 18%,var(--border))}.tcp-ip-osi-row.active rect{fill:color-mix(in srgb,var(--brand-soft) 76%,var(--surface));stroke:color-mix(in srgb,var(--brand) 30%,var(--border))}.tcp-ip-osi-row text{font-family:inherit;font-size:10.5px;font-weight:850}.tcp-ip-debug-panel>.tcp-ip-panel-title{text-anchor:start}.tcp-ip-debug-chip rect{fill:color-mix(in srgb,var(--surface) 88%,transparent);stroke:color-mix(in srgb,var(--muted) 20%,var(--border))}.tcp-ip-debug-chip.active rect{fill:color-mix(in srgb,var(--brand) 10%,var(--surface));stroke:color-mix(in srgb,var(--brand) 34%,var(--border))}.tcp-ip-debug-chip text{fill:var(--muted);font-size:9.5px}.tcp-ip-debug-chip.active text{fill:var(--brand-strong)}.tcp-ip-model-caption{right:16px;bottom:14px}.arp-bg{fill:color-mix(in srgb,var(--brand-soft) 30%,var(--surface));stroke:color-mix(in srgb,var(--brand) 18%,transparent)}.arp-title{fill:var(--text);font-size:28px;font-weight:950;text-anchor:middle}.arp-subtitle{fill:var(--muted);font-size:15px;font-weight:850;text-anchor:middle}.arp-device rect,.arp-next-hop rect,.arp-switch rect,.arp-cache-panel>rect,.arp-header-panel>rect{fill:color-mix(in srgb,var(--surface) 92%,transparent);stroke:color-mix(in srgb,var(--brand) 18%,var(--border));stroke-width:1.2;filter:url(#arp-soft-shadow)}.arp-device.gateway rect{fill:color-mix(in srgb,var(--tertiary) 9%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 32%,var(--border))}.arp-switch rect{fill:color-mix(in srgb,var(--tertiary-soft) 48%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 34%,var(--border))}.arp-device text,.arp-switch text,.arp-next-hop text{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;font-weight:850;text-anchor:middle}.arp-device-title,.arp-panel-title{fill:var(--text);font-family:inherit;font-size:14px;font-weight:950;text-anchor:middle}.arp-panel-title{text-anchor:start}.arp-next-hop{opacity:.34;transition:opacity .18s ease}.arp-next-hop.active{opacity:1}.arp-next-hop.active rect{fill:color-mix(in srgb,var(--brand) 12%,var(--surface));stroke:color-mix(in srgb,var(--brand) 42%,var(--border))}.arp-packet,.arp-broadcast,.arp-cache-panel,.arp-header-row,.arp-diagnostic{opacity:.25;transition:opacity .18s ease}.arp-packet.active,.arp-broadcast.active,.arp-cache-panel.active,.arp-header-row.active,.arp-diagnostic.active{opacity:1}.arp-packet path,.arp-broadcast path{fill:none;stroke:var(--tertiary);stroke-linecap:round;stroke-linejoin:round;stroke-width:4}.arp-packet.reply path,.arp-packet.frame path{stroke:var(--success)}.arp-packet rect{fill:color-mix(in srgb,var(--tertiary) 14%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 38%,var(--border));stroke-width:1.2;filter:url(#arp-soft-shadow)}.arp-packet.reply rect,.arp-packet.frame rect{fill:color-mix(in srgb,var(--success) 13%,var(--surface));stroke:color-mix(in srgb,var(--success) 38%,var(--border))}.arp-packet text,.arp-diagnostic text{fill:var(--text);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:950;text-anchor:middle}.arp-packet-sub{fill:var(--muted);font-size:10px;font-weight:850}.arp-cache-row rect{fill:color-mix(in srgb,var(--surface) 90%,transparent);stroke:color-mix(in srgb,var(--muted) 18%,var(--border))}.arp-cache-row.active rect{fill:color-mix(in srgb,var(--success) 12%,var(--surface));stroke:color-mix(in srgb,var(--success) 36%,var(--border))}.arp-cache-row.danger.active rect{fill:color-mix(in srgb,var(--danger) 11%,var(--surface));stroke:color-mix(in srgb,var(--danger) 40%,var(--border))}.arp-cache-row text,.arp-header-row text{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;font-weight:850;text-anchor:start}.arp-cache-row.active text{fill:var(--text)}.arp-cache-row text:nth-of-type(3),.arp-header-row text:nth-of-type(2){text-anchor:end}.arp-header-row.active text:nth-of-type(2){fill:var(--brand-strong);font-weight:950}.arp-diagnostic rect{fill:color-mix(in srgb,var(--surface) 90%,transparent);stroke:color-mix(in srgb,var(--muted) 18%,var(--border))}.arp-diagnostic.active rect{fill:color-mix(in srgb,var(--brand) 10%,var(--surface));stroke:color-mix(in srgb,var(--brand) 34%,var(--border))}.arp-diagnostic.danger.active rect{fill:color-mix(in srgb,var(--danger) 11%,var(--surface));stroke:color-mix(in srgb,var(--danger) 38%,var(--border))}.arp-diagnostic text{font-size:8.5px}.arp-diagnostic text:nth-of-type(2){fill:var(--brand-strong);font-size:12px}.arp-caption{right:16px;bottom:14px}.cdn-bg{fill:color-mix(in srgb,var(--brand-soft) 28%,var(--surface));stroke:color-mix(in srgb,var(--brand) 18%,transparent)}.cdn-title{fill:var(--text);font-size:28px;font-weight:950;text-anchor:middle}.cdn-subtitle{fill:var(--muted);font-size:15px;font-weight:850;text-anchor:middle}.cdn-users>rect,.cdn-routing rect,.cdn-edge rect,.cdn-shield rect,.cdn-origin rect,.cdn-status-panel>rect,.cdn-control-panel>rect,.cdn-metrics-panel>rect,.cdn-purge-band rect{fill:color-mix(in srgb,var(--surface) 92%,transparent);stroke:color-mix(in srgb,var(--brand) 18%,var(--border));stroke-width:1.2;filter:url(#cdn-soft-shadow)}.cdn-edge rect{fill:url(#cdn-edge-gradient)}.cdn-routing.active rect,.cdn-edge.active rect,.cdn-shield.active rect,.cdn-origin.active rect,.cdn-purge-band.active rect{stroke:color-mix(in srgb,var(--brand) 42%,var(--border))}.cdn-panel-title,.cdn-node-title{fill:var(--text);font-size:15px;font-weight:950;text-anchor:start}.cdn-node-title{text-anchor:middle}.cdn-region text,.cdn-asset text,.cdn-routing text,.cdn-edge text,.cdn-shield text,.cdn-origin text,.cdn-status text,.cdn-control text,.cdn-metric text,.cdn-purge-band text{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;font-weight:850;text-anchor:middle}.cdn-region,.cdn-asset,.cdn-routing,.cdn-edge,.cdn-shield,.cdn-origin,.cdn-path,.cdn-status,.cdn-control,.cdn-metric,.cdn-purge-band{opacity:.25;transition:opacity .18s ease}.cdn-region.active,.cdn-asset.active,.cdn-routing.active,.cdn-edge.active,.cdn-shield.active,.cdn-origin.active,.cdn-path.active,.cdn-status.active,.cdn-control.active,.cdn-metric.active,.cdn-purge-band.active{opacity:1}.cdn-region circle{fill:color-mix(in srgb,var(--brand) 12%,var(--surface));stroke:color-mix(in srgb,var(--brand) 42%,var(--border));stroke-width:2}.cdn-region.active circle{fill:var(--brand)}.cdn-region text:first-of-type{fill:var(--text);font-family:inherit;font-size:12.5px;font-weight:900;text-anchor:start}.cdn-region text:nth-of-type(2){fill:var(--brand-strong);text-anchor:end}.cdn-asset rect{fill:color-mix(in srgb,var(--brand) 10%,var(--surface));stroke:color-mix(in srgb,var(--brand) 30%,var(--border))}.cdn-asset text:first-of-type,.cdn-routing .cdn-node-title,.cdn-edge .cdn-node-title,.cdn-shield .cdn-node-title,.cdn-origin .cdn-node-title{fill:var(--text);font-family:inherit}.cdn-path{fill:none;stroke:var(--brand);stroke-linecap:round;stroke-linejoin:round;stroke-width:4}.cdn-path.teal{stroke:var(--tertiary)}.cdn-path.success{stroke:var(--success)}.cdn-path.warning{stroke:#f59e0b}.cdn-path.danger{stroke:var(--danger)}.cdn-status rect{fill:color-mix(in srgb,var(--surface) 88%,transparent);stroke:color-mix(in srgb,var(--muted) 18%,var(--border))}.cdn-status.success.active rect{fill:color-mix(in srgb,var(--success) 12%,var(--surface));stroke:color-mix(in srgb,var(--success) 38%,var(--border))}.cdn-status.warning.active rect{fill:color-mix(in srgb,#f59e0b 14%,var(--surface));stroke:color-mix(in srgb,#f59e0b 42%,var(--border))}.cdn-status.teal.active rect{fill:color-mix(in srgb,var(--tertiary) 12%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 38%,var(--border))}.cdn-status.danger.active rect{fill:color-mix(in srgb,var(--danger) 11%,var(--surface));stroke:color-mix(in srgb,var(--danger) 36%,var(--border))}.cdn-status text:first-of-type,.cdn-metric text:first-of-type,.cdn-control text:first-of-type{fill:var(--text);text-anchor:start}.cdn-status text:nth-of-type(2),.cdn-metric text:nth-of-type(2),.cdn-control text:nth-of-type(2){fill:var(--brand-strong);font-weight:950;text-anchor:end}.cdn-control rect:first-of-type{fill:color-mix(in srgb,var(--muted) 18%,transparent)}.cdn-control rect:nth-of-type(2){fill:var(--brand)}.cdn-purge-band text{fill:var(--brand-strong);font-family:inherit;font-size:11px;font-weight:950}.cdn-caption{right:16px;bottom:14px}.array-bg{fill:color-mix(in srgb,var(--brand-soft) 30%,var(--surface));stroke:color-mix(in srgb,var(--brand) 18%,transparent)}.linked-list-bg{fill:color-mix(in srgb,var(--tertiary-soft) 28%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 20%,transparent)}.stack-bg{fill:color-mix(in srgb,var(--secondary-soft) 34%,var(--surface));stroke:color-mix(in srgb,var(--secondary) 20%,transparent)}.array-title,.linked-list-title,.stack-title{fill:var(--text);font-size:28px;font-weight:950;text-anchor:middle}.array-subtitle,.array-cell-address{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;font-weight:850;text-anchor:middle}.linked-list-subtitle,.linked-node-value,.linked-node-next,.linked-head-pointer text,.linked-traversal text,.linked-insert-note text,.linked-reverse-note text,.linked-null-tail text{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;font-weight:850;text-anchor:middle}.stack-subtitle,.stack-top-pointer text,.stack-operation-panel text,.stack-push-path text,.stack-peek-note text,.stack-pop-note text,.stack-boundary-note text,.stack-bottom-label{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;font-weight:850;text-anchor:middle}.array-formula{opacity:.35;transition:opacity .18s ease}.array-formula.visible,.array-boundary.visible{opacity:1}.array-formula rect,.array-boundary rect,.array-read-pointer rect,.array-shift-arrows rect,.array-insert-marker rect{fill:color-mix(in srgb,var(--surface) 92%,transparent);stroke:color-mix(in srgb,var(--brand) 20%,var(--border));stroke-width:1.2}.array-formula text,.array-boundary text,.array-read-pointer text,.array-shift-arrows text,.array-insert-marker text{fill:var(--text);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;font-weight:900;text-anchor:middle}.array-cell rect{fill:color-mix(in srgb,var(--surface) 92%,transparent);stroke:color-mix(in srgb,var(--muted) 24%,var(--border));stroke-width:1.4;filter:url(#array-soft-shadow)}.array-cell.target rect{fill:color-mix(in srgb,var(--tertiary) 14%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 45%,var(--border));stroke-width:2.4}.array-cell.inserted rect{fill:color-mix(in srgb,#f59e0b 18%,var(--surface));stroke:color-mix(in srgb,#f59e0b 48%,var(--border));stroke-width:2.4}.array-cell.shifted rect{fill:color-mix(in srgb,var(--brand) 12%,var(--surface));stroke:color-mix(in srgb,var(--brand) 36%,var(--border))}.array-cell-value,.array-cell-index{text-anchor:middle}.array-cell-value{fill:var(--text);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:24px;font-weight:950}.array-cell-index{fill:var(--muted);font-size:13px;font-weight:850}.array-cell-address{font-size:12px}.array-read-pointer path,.array-insert-marker path,.array-shift-arrows path{fill:none;stroke:var(--tertiary);stroke-linecap:round;stroke-linejoin:round;stroke-width:3.2}.array-shift-arrows path,.array-insert-marker path{stroke:#f59e0b}#array-arrow-brand path{fill:var(--tertiary)}#array-arrow-warning path{fill:#f59e0b}.array-read-pointer text:nth-of-type(2),.array-shift-arrows text:nth-of-type(2){fill:var(--brand);font-size:14px}.array-boundary{opacity:0;transition:opacity .18s ease}.array-boundary rect{fill:color-mix(in srgb,var(--success) 12%,var(--surface));stroke:color-mix(in srgb,var(--success) 34%,var(--border))}.array-boundary text{fill:var(--success);font-size:14px}.array-caption{bottom:14px}.linked-node rect{fill:color-mix(in srgb,var(--surface) 92%,transparent);stroke:color-mix(in srgb,var(--muted) 24%,var(--border));stroke-width:1.4;filter:url(#linked-list-soft-shadow)}.linked-node line{stroke:color-mix(in srgb,var(--muted) 30%,var(--border));stroke-width:1.2}.linked-node.active rect{fill:color-mix(in srgb,var(--tertiary) 14%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 44%,var(--border));stroke-width:2.4}.linked-node.inserted rect{fill:color-mix(in srgb,#f59e0b 17%,var(--surface));stroke:color-mix(in srgb,#f59e0b 50%,var(--border));stroke-width:2.4}.linked-node.reversed-head rect{fill:color-mix(in srgb,var(--success) 16%,var(--surface));stroke:color-mix(in srgb,var(--success) 48%,var(--border))}.linked-node-id,.linked-node-value,.linked-node-next{text-anchor:middle}.linked-node-id{fill:var(--text);font-size:20px;font-weight:950}.linked-node-value{fill:var(--text);font-size:16px}.linked-node-next{font-size:12px}.linked-head-pointer rect,.linked-traversal rect,.linked-insert-note rect,.linked-reverse-note rect{fill:color-mix(in srgb,var(--surface) 92%,transparent);stroke:color-mix(in srgb,var(--tertiary) 24%,var(--border));stroke-width:1.2}.linked-head-pointer text,.linked-traversal text,.linked-insert-note text,.linked-reverse-note text{fill:var(--text);font-size:14px;font-weight:900}.linked-next-links path,.linked-head-pointer path,.linked-traversal path,.linked-null-tail path{fill:none;stroke:var(--brand);stroke-linecap:round;stroke-linejoin:round;stroke-width:3}.linked-traversal path,.linked-remainder-link{stroke:var(--tertiary)}.linked-next-links path[marker-end*=warning]{stroke:#f59e0b}.linked-next-links path[marker-end*=success],.linked-head-pointer path[marker-end*=success]{stroke:var(--success)}.linked-null-tail path{stroke:color-mix(in srgb,var(--muted) 54%,transparent);stroke-dasharray:7 8}.linked-null-tail text{text-anchor:start}.linked-list-caption{bottom:14px}.stack-frame>path{fill:none;stroke:color-mix(in srgb,var(--muted) 42%,var(--border));stroke-linecap:round;stroke-linejoin:round;stroke-width:3}.stack-slot rect{fill:color-mix(in srgb,var(--surface) 82%,transparent);stroke:color-mix(in srgb,var(--muted) 24%,var(--border));stroke-width:1.4;filter:url(#stack-soft-shadow)}.stack-slot.filled rect{fill:color-mix(in srgb,var(--secondary) 12%,var(--surface));stroke:color-mix(in srgb,var(--secondary) 34%,var(--border))}.stack-slot.top rect{fill:color-mix(in srgb,var(--tertiary) 16%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 48%,var(--border));stroke-width:2.6}.stack-slot text{fill:var(--text);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:26px;font-weight:950;text-anchor:middle}.stack-bottom-label{fill:var(--faint);font-size:12px}.stack-top-pointer rect,.stack-operation-panel rect,.stack-push-path rect,.stack-peek-note rect,.stack-pop-note rect,.stack-boundary-note rect{fill:color-mix(in srgb,var(--surface) 92%,transparent);stroke:color-mix(in srgb,var(--secondary) 24%,var(--border));stroke-width:1.2}.stack-top-pointer text,.stack-operation-panel text,.stack-push-path text,.stack-peek-note text,.stack-pop-note text,.stack-boundary-note text{fill:var(--text);font-size:14px;font-weight:900}.stack-operation-title{font-size:15px}.stack-operation-row{opacity:.36;transition:opacity .18s ease}.stack-operation-row.active{opacity:1}.stack-operation-row circle{fill:color-mix(in srgb,var(--secondary) 18%,var(--surface));stroke:color-mix(in srgb,var(--secondary) 42%,var(--border));stroke-width:1.4}.stack-operation-row.active circle{fill:var(--secondary)}.stack-operation-row text{text-anchor:start;font-size:12px}.stack-top-pointer path,.stack-push-path path,.stack-peek-note path,.stack-pop-note path{fill:none;stroke:var(--secondary);stroke-linecap:round;stroke-linejoin:round;stroke-width:3.2}.stack-push-path path{stroke:var(--tertiary)}.stack-peek-note path{stroke:#f59e0b}.stack-pop-note path{stroke:var(--success)}.stack-boundary-note rect{fill:color-mix(in srgb,var(--danger) 10%,var(--surface));stroke:color-mix(in srgb,var(--danger) 36%,var(--border))}.stack-boundary-note text{fill:var(--danger);font-size:13px}.stack-caption{bottom:14px}.switch-title{font-size:28px}.switch-subtitle{font-size:15px}.switch-host rect,.switch-box>rect,.mac-table-panel>rect{fill:color-mix(in srgb,var(--surface) 92%,transparent);stroke:color-mix(in srgb,var(--brand) 18%,var(--border));stroke-width:1.2;filter:url(#switch-soft-shadow)}.switch-host.host-b rect{stroke:color-mix(in srgb,var(--success) 38%,var(--border))}.switch-host.host-c rect,.switch-host.host-d rect{fill:color-mix(in srgb,var(--surface) 84%,transparent);stroke:color-mix(in srgb,var(--muted) 18%,var(--border));filter:none}.switch-host text,.switch-box text{fill:var(--text);font-size:14px;font-weight:900;text-anchor:middle}.switch-host text:nth-of-type(2),.switch-host text:nth-of-type(3){fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:850}.switch-box>text{fill:var(--brand);font-size:18px;font-weight:950}.switch-port circle{fill:var(--surface);stroke:color-mix(in srgb,var(--muted) 32%,var(--border));stroke-width:2}.switch-port.active circle{fill:color-mix(in srgb,var(--brand) 12%,var(--surface));stroke:color-mix(in srgb,var(--brand) 46%,var(--border))}.switch-port text{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:900}.switch-vlan-chip{fill:color-mix(in srgb,var(--tertiary) 13%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 36%,var(--border))}.switch-vlan-label{fill:var(--tertiary);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:950;text-anchor:middle}.mac-table-title{fill:var(--text);font-size:14px;font-weight:950;text-anchor:start}.mac-table-head,.mac-table-row text{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;font-weight:900;text-anchor:start}.mac-table-row{opacity:0;transition:opacity .18s ease}.mac-table-row.visible{opacity:1}.mac-table-row.visible text{fill:var(--brand)}.switch-flow{opacity:0;transition:opacity .18s ease}.switch-flow.visible{opacity:1}.switch-flow path{fill:none;stroke:var(--brand);stroke-linecap:round;stroke-linejoin:round;stroke-width:4}.switch-flow.flood path{stroke:#f59e0b;stroke-dasharray:9 8}.switch-flow.reply path{stroke:var(--tertiary)}.switch-flow.direct path{stroke:var(--success);stroke-width:5}.switch-flow.filter path{stroke:color-mix(in srgb,var(--muted) 56%,transparent);stroke-width:3.2}.switch-flow rect{fill:color-mix(in srgb,var(--surface) 92%,transparent);stroke:color-mix(in srgb,var(--brand) 18%,var(--border));stroke-width:1}.switch-flow.flood rect{fill:color-mix(in srgb,#f59e0b 14%,var(--surface));stroke:color-mix(in srgb,#f59e0b 38%,var(--border))}.switch-flow.reply rect{fill:color-mix(in srgb,var(--tertiary) 13%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 34%,var(--border))}.switch-flow.direct rect{fill:color-mix(in srgb,var(--success) 14%,var(--surface));stroke:color-mix(in srgb,var(--success) 36%,var(--border))}.switch-flow.filter rect{fill:color-mix(in srgb,var(--surface) 90%,transparent);stroke:color-mix(in srgb,var(--muted) 18%,var(--border))}.switch-flow text{fill:var(--text);font-size:11.5px;font-weight:900;text-anchor:middle}.switch-flow.filter text:nth-of-type(2){fill:var(--muted);font-size:10.5px}.switch-caption{right:16px;bottom:14px}.ethernet-frame-title{font-size:28px}.ethernet-frame-subtitle{font-size:15px}.ethernet-group-band rect{fill:color-mix(in srgb,var(--surface) 72%,transparent);stroke:color-mix(in srgb,var(--muted) 18%,transparent);stroke-width:1.2}.ethernet-group-band.active rect{fill:color-mix(in srgb,var(--surface) 92%,var(--brand-soft));stroke:color-mix(in srgb,var(--brand) 28%,var(--border))}.ethernet-group-band text{fill:var(--muted);font-size:16px;font-weight:900;text-anchor:middle}.ethernet-group-band.active text{fill:var(--text)}.ethernet-field rect{fill:color-mix(in srgb,var(--surface) 72%,var(--muted));stroke:color-mix(in srgb,var(--muted) 18%,transparent);stroke-width:1.1}.ethernet-field.active rect{filter:url(#ethernet-soft-shadow);fill:color-mix(in srgb,var(--surface) 92%,var(--brand-soft));stroke:color-mix(in srgb,var(--brand) 34%,var(--border))}.ethernet-field.vlan.active rect{fill:color-mix(in srgb,#f59e0b 16%,var(--surface));stroke:color-mix(in srgb,#f59e0b 44%,var(--border))}.ethernet-field.payload.active rect,.ethernet-field.type.active rect{fill:color-mix(in srgb,var(--tertiary) 13%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 40%,var(--border))}.ethernet-field.fcs.active rect{fill:color-mix(in srgb,var(--success) 15%,var(--surface));stroke:color-mix(in srgb,var(--success) 42%,var(--border))}.ethernet-field.current rect{stroke-width:2.8}.ethernet-field-label,.ethernet-field-bytes,.ethernet-field-detail{text-anchor:middle}.ethernet-field-label{fill:var(--text);font-size:13px;font-weight:950}.ethernet-field-bytes{fill:var(--brand);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;font-weight:950}.ethernet-field-detail{fill:var(--muted);font-size:10.5px;font-weight:800}.ethernet-vlan-insert path,.ethernet-dispatch path,.ethernet-callout path,.ethernet-fcs-loop path{fill:none;stroke:var(--brand);stroke-linecap:round;stroke-linejoin:round;stroke-width:2.6}.ethernet-vlan-insert path{stroke:#f59e0b}.ethernet-vlan-insert rect{fill:color-mix(in srgb,#f59e0b 18%,var(--surface));stroke:color-mix(in srgb,#f59e0b 42%,var(--border))}.ethernet-vlan-insert text,.ethernet-dispatch text,.ethernet-fcs-loop text{fill:var(--text);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:900;text-anchor:middle}.ethernet-dispatch path{stroke:var(--tertiary);stroke-dasharray:7 8}.ethernet-dispatch rect{fill:color-mix(in srgb,var(--tertiary) 14%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 34%,var(--border))}.ethernet-fcs-loop path{stroke:var(--success);stroke-width:3.4}.ethernet-fcs-loop rect{fill:color-mix(in srgb,var(--success) 13%,var(--surface));stroke:color-mix(in srgb,var(--success) 34%,var(--border))}.ethernet-callout path{stroke:color-mix(in srgb,var(--brand) 58%,transparent);stroke-width:2}.ethernet-callout rect,.ethernet-size-note rect,.ethernet-reference-note rect{fill:color-mix(in srgb,var(--surface) 92%,transparent);stroke:color-mix(in srgb,var(--brand) 18%,var(--border));stroke-width:1.1}.ethernet-callout-title,.ethernet-callout-body,.ethernet-size-note text,.ethernet-reference-note text{text-anchor:middle}.ethernet-callout-title{fill:var(--text);font-size:14px;font-weight:950}.ethernet-callout-body{fill:var(--muted);font-size:11.5px;font-weight:800}.ethernet-size-note text,.ethernet-reference-note text{text-anchor:start}.ethernet-size-note text:first-of-type,.ethernet-reference-note text:first-of-type{fill:var(--text);font-size:15px;font-weight:950}.ethernet-size-note text:nth-of-type(2),.ethernet-reference-note text:nth-of-type(2){fill:var(--brand);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;font-weight:950}.ethernet-size-note text:nth-of-type(3),.ethernet-reference-note text:nth-of-type(3){fill:var(--muted);font-size:11.5px;font-weight:800}.ethernet-frame-caption{right:16px;bottom:14px}.tcp-title{fill:var(--text);font-size:30px;font-weight:950;text-anchor:middle}.tcp-subtitle{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:16px;font-weight:850;text-anchor:middle}.tcp-endpoint rect{fill:var(--surface);stroke-width:2;filter:url(#tcp-soft-shadow)}.tcp-endpoint.client rect{stroke:var(--brand)}.tcp-endpoint.server rect{stroke:var(--tertiary)}.tcp-endpoint text:first-of-type{fill:var(--text);font-size:18px;font-weight:920;text-anchor:middle}.tcp-endpoint text:last-of-type{fill:var(--faint);font-size:12px;font-weight:800;text-anchor:middle}.tcp-lifeline{stroke:color-mix(in srgb,var(--muted) 34%,transparent);stroke-dasharray:8 8;stroke-linecap:round;stroke-width:2}.tcp-state-pill rect{fill:color-mix(in srgb,var(--surface) 88%,var(--muted));stroke:color-mix(in srgb,var(--muted) 20%,transparent);stroke-width:1}.tcp-state-pill.active rect{fill:color-mix(in srgb,var(--brand-soft) 64%,var(--surface));stroke:color-mix(in srgb,var(--brand) 32%,transparent)}.tcp-state-pill text{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;font-weight:900;text-anchor:middle}.tcp-state-pill.active text{fill:var(--brand-strong)}.tcp-segment line,.tcp-established-flow line{stroke:color-mix(in srgb,var(--muted) 28%,transparent);stroke-linecap:round;stroke-width:3.5}.tcp-segment.return line{stroke:color-mix(in srgb,var(--muted) 28%,transparent)}.tcp-segment.revealed line{stroke:var(--brand);stroke-width:4.5}.tcp-segment.return.revealed line{stroke:var(--tertiary)}.tcp-wave-segment.return.revealed line{stroke:var(--brand)}.tcp-wave-segment.tone-orange.revealed line{stroke:#f59e0b}.tcp-wave-segment.tone-green.revealed line{stroke:var(--success)}.tcp-segment.active line,.tcp-established-flow line{stroke-width:6}.tcp-segment rect{fill:color-mix(in srgb,var(--surface) 82%,var(--muted));stroke:color-mix(in srgb,var(--muted) 18%,var(--border));stroke-width:1;filter:url(#tcp-soft-shadow)}.tcp-segment.revealed rect{fill:var(--surface);stroke:color-mix(in srgb,var(--brand) 18%,var(--border))}.tcp-segment.return.revealed rect{stroke:color-mix(in srgb,var(--tertiary) 28%,var(--border))}.tcp-segment-title{fill:var(--muted);font-size:13px;font-weight:850;text-anchor:middle}.tcp-segment-label{fill:color-mix(in srgb,var(--muted) 74%,var(--text));font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;font-weight:900;text-anchor:middle}.tcp-segment.revealed .tcp-segment-label{fill:var(--text)}.tcp-established-flow line{stroke:var(--success)}.tcp-established-flow text{fill:var(--success);font-size:15px;font-weight:900;text-anchor:middle}#tcp-arrow-blue path{fill:var(--brand)}#tcp-arrow-green path{fill:var(--success)}#tcp-arrow-muted path{fill:color-mix(in srgb,var(--muted) 44%,transparent)}#tcp-wave-arrow-blue path{fill:var(--brand)}#tcp-wave-arrow-green path{fill:var(--success)}#tcp-wave-arrow-orange path{fill:#f59e0b}#tcp-wave-arrow-muted path{fill:color-mix(in srgb,var(--muted) 44%,transparent)}.tcp-half-close-band rect{fill:color-mix(in srgb,#f59e0b 12%,var(--surface));stroke:color-mix(in srgb,#f59e0b 32%,var(--border));stroke-width:1}.tcp-half-close-band text{fill:color-mix(in srgb,#92400e 82%,var(--text));font-size:14px;font-weight:900;text-anchor:middle}.tcp-timewait-note rect{fill:color-mix(in srgb,var(--success) 13%,var(--surface));stroke:color-mix(in srgb,var(--success) 34%,var(--border));stroke-width:1;filter:url(#tcp-wave-soft-shadow)}.tcp-timewait-note text{fill:var(--success);font-size:13px;font-weight:900;text-anchor:middle}.tcp-timewait-note text:first-of-type{fill:color-mix(in srgb,var(--success) 78%,var(--text));font-size:15px}.tcp-timewait-note.compact text,.tcp-timewait-note.compact text:first-of-type{fill:color-mix(in srgb,var(--success) 82%,var(--text));font-size:12px}.tcp-fsm-bg-panel{fill:color-mix(in srgb,var(--brand-soft) 34%,var(--surface))}.tcp-fsm-band rect{stroke-width:1}.tcp-fsm-band.setup rect{fill:color-mix(in srgb,var(--brand) 7%,transparent);stroke:color-mix(in srgb,var(--brand) 18%,transparent)}.tcp-fsm-band.transfer rect{fill:color-mix(in srgb,var(--success) 8%,transparent);stroke:color-mix(in srgb,var(--success) 18%,transparent)}.tcp-fsm-band.teardown rect{fill:color-mix(in srgb,#f59e0b 8%,transparent);stroke:color-mix(in srgb,#f59e0b 22%,transparent)}.tcp-fsm-band text{fill:color-mix(in srgb,var(--muted) 82%,var(--text));font-size:14px;font-weight:900;text-anchor:start}.tcp-fsm-edge path{fill:none;stroke:color-mix(in srgb,var(--muted) 38%,transparent);stroke-linecap:round;stroke-linejoin:round;stroke-width:2.6}.tcp-fsm-edge.revealed path{stroke-width:3.7}.tcp-fsm-edge.current path{stroke-width:5.2}.tcp-fsm-edge.dashed path{stroke-dasharray:8 9}.tcp-fsm-edge.tone-blue.revealed path{stroke:var(--brand)}.tcp-fsm-edge.tone-teal.revealed path{stroke:var(--tertiary)}.tcp-fsm-edge.tone-green.revealed path{stroke:var(--success)}.tcp-fsm-edge.tone-orange.revealed path{stroke:#f59e0b}.tcp-fsm-edge rect{fill:color-mix(in srgb,var(--surface) 84%,transparent);stroke:color-mix(in srgb,var(--muted) 12%,transparent);stroke-width:1}.tcp-fsm-edge.revealed rect{fill:color-mix(in srgb,var(--surface) 95%,transparent);stroke:color-mix(in srgb,var(--brand) 16%,var(--border))}.tcp-fsm-edge text{fill:var(--muted);font-size:10.5px;font-weight:850;text-anchor:middle}.tcp-fsm-edge.revealed text{fill:var(--text)}.tcp-fsm-node rect{fill:color-mix(in srgb,var(--surface) 84%,var(--muted));stroke:color-mix(in srgb,var(--muted) 20%,transparent);stroke-width:1.2}.tcp-fsm-node.active rect{filter:url(#tcp-fsm-soft-shadow)}.tcp-fsm-node.tone-closed.active rect{fill:color-mix(in srgb,var(--surface) 92%,var(--muted));stroke:color-mix(in srgb,var(--muted) 32%,transparent)}.tcp-fsm-node.tone-setup.active rect{fill:color-mix(in srgb,var(--brand-soft) 62%,var(--surface));stroke:color-mix(in srgb,var(--brand) 38%,transparent)}.tcp-fsm-node.tone-data.active rect{fill:color-mix(in srgb,var(--success) 16%,var(--surface));stroke:color-mix(in srgb,var(--success) 38%,transparent)}.tcp-fsm-node.tone-active.active rect{fill:color-mix(in srgb,#f59e0b 15%,var(--surface));stroke:color-mix(in srgb,#f59e0b 42%,transparent)}.tcp-fsm-node.tone-passive.active rect{fill:color-mix(in srgb,var(--tertiary) 14%,var(--surface));stroke:color-mix(in srgb,var(--tertiary) 38%,transparent)}.tcp-fsm-node.tone-special.active rect{fill:color-mix(in srgb,#8b5cf6 14%,var(--surface));stroke:color-mix(in srgb,#8b5cf6 38%,transparent)}.tcp-fsm-node.current rect{stroke-width:2.8}.tcp-fsm-node text{fill:var(--muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;font-weight:950;text-anchor:middle}.tcp-fsm-node.active text{fill:var(--text)}.tcp-handshake-caption{position:absolute;right:18px;bottom:16px;display:flex;align-items:center;gap:12px;border:1px solid color-mix(in srgb,var(--brand) 20%,var(--border));border-radius:999px;background:color-mix(in srgb,var(--surface) 88%,transparent);padding:8px 12px;box-shadow:var(--shadow-sm)}.tcp-handshake-caption strong{color:var(--text);font-size:13px}.tcp-handshake-caption span{color:var(--brand);font-size:12px;font-weight:900}.tcp-handshake-caption.tcp-state-machine-caption{top:14px;bottom:auto}.state-flow-map{position:relative;width:min(100%,1120px);aspect-ratio:1.34;min-height:560px;border:1px solid var(--border);border-radius:var(--radius-lg);background:linear-gradient(180deg,#ffffffeb,#ffffffdb),var(--surface);box-shadow:0 16px 36px #17203317;overflow:hidden}:root[data-theme=dark] .state-flow-map{background:linear-gradient(180deg,#151d2bf0,#151d2be0),var(--surface)}.state-flow-sequence{display:block}.state-actor-icon{display:grid;place-items:center;width:100%;height:100%;color:var(--muted)}.state-lane-label{fill:var(--text);font-size:21px;font-weight:900;text-anchor:middle}.data-flow-label-box,.data-transfer-label-box,.state-lane-label-box,.state-block-label-box,.packet-record-label-box{display:grid;place-items:center;width:100%;height:100%;color:var(--text);line-height:1.2;overflow-wrap:anywhere;text-align:center}.data-flow-label-box,.data-transfer-label-box{color:var(--muted);font-size:17px;font-weight:850}.data-transfer-label-box{color:var(--text)}.state-lane-label-box{color:var(--text);font-size:18px;font-weight:900}.state-block-label-box{color:#142033;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;font-weight:900;line-height:1.16;padding:0 6px}.packet-record-label-box{color:var(--text);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:800;line-height:1.18;padding:4px 7px;border-radius:8px;background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.state-block rect{stroke:#ffffff85;stroke-width:1.2}.state-block text{fill:#142033;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:22px;font-weight:900;text-anchor:middle;dominant-baseline:middle}.state-block.blue rect{fill:#5aaee0}.state-block.yellow rect{fill:#ffe795}.state-block.orange rect{fill:#ffc48f}.state-block.green rect{fill:#86c574}.state-block.purple rect{fill:#c7b8ff}.state-block.teal rect{fill:#88d4dc}.state-block.active rect{filter:drop-shadow(0 8px 12px rgb(23 32 51 / .14))}.data-flow-arrow,.data-transfer-arrow{stroke:#95d082;stroke-width:18;stroke-linecap:round;opacity:.74;fill:none}.data-flow-label,.data-transfer-label{fill:var(--muted);font-size:18px;font-weight:850;text-anchor:middle}.data-transfer-label{fill:var(--text)}.endpoint{display:grid;place-items:center;gap:19px}.endpoint-box{position:relative;display:grid;place-items:center;width:148px;height:148px;border:2px solid var(--brand);border-radius:var(--radius-lg);background:var(--surface);box-shadow:0 18px 38px #1720331a}.endpoint.server .endpoint-box{border-color:var(--tertiary)}.endpoint-box svg{color:var(--brand)}.endpoint.server .endpoint-box svg{color:var(--tertiary)}.endpoint-box strong{color:var(--brand);font-family:JetBrains Mono,monospace;font-size:13px}.endpoint.server .endpoint-box strong{color:var(--tertiary)}.endpoint-label{position:absolute;top:-14px;min-width:76px;border-radius:999px;background:var(--brand);color:#fff;padding:3px 10px;text-align:center}.endpoint.server .endpoint-label{background:var(--tertiary)}.endpoint>code{min-width:124px;border:1px solid var(--border);border-radius:999px;background:var(--surface-low);color:var(--brand-strong);padding:7px 13px;text-align:center;font-size:13px;font-weight:800}.endpoint.server>code{color:var(--tertiary)}.wire-zone{position:relative;height:300px}.packet-sequence{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible}.packet-sequence .lifeline{stroke:color-mix(in srgb,var(--line) 82%,var(--muted));stroke-width:2.2;stroke-linecap:round}.generic-sequence{position:relative;min-height:420px}.wire-caption{position:absolute;inset:auto 0 10px;display:flex;justify-content:space-between;gap:12px;padding:0 18px}.actor-node-dot{fill:var(--surface);stroke:var(--brand);stroke-width:2.4}.actor-node-label{fill:var(--muted);font-size:12px;font-weight:800;text-anchor:middle;paint-order:stroke;stroke:var(--surface);stroke-width:4px}.packet-record line,.packet-record path{stroke:var(--brand);stroke-width:2.4;stroke-linecap:round;fill:none}.packet-record text{fill:var(--text);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:800;text-anchor:middle;paint-order:stroke;stroke:var(--surface);stroke-width:5px;stroke-linejoin:round}.packet-record.synAck line{stroke:var(--tertiary)}.packet-record.ack line{stroke:var(--success)}.packet-record.teal path,.packet-record.teal line{stroke:var(--tertiary)}.packet-record.success path,.packet-record.success line{stroke:var(--success)}.packet-record.warning path,.packet-record.warning line{stroke:#f59e0b}.packet-record.danger path,.packet-record.danger line{stroke:var(--danger)}.packet-record.active line,.packet-record.active path{stroke-width:3.2}.packet-record.active text{fill:var(--brand-strong)}.packet-record.active .packet-record-label-box{color:var(--brand-strong);border-color:color-mix(in srgb,var(--brand) 36%,var(--border))}.packet-record.teal.active .packet-record-label-box{color:var(--tertiary);border-color:color-mix(in srgb,var(--tertiary) 40%,var(--border))}.packet-record.success.active .packet-record-label-box{color:var(--success);border-color:color-mix(in srgb,var(--success) 40%,var(--border))}.packet-record.warning.active .packet-record-label-box{color:#b45309;border-color:color-mix(in srgb,#f59e0b 40%,var(--border))}.packet-record.danger.active .packet-record-label-box{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--border))}.packet-record.synAck.active text{fill:var(--tertiary)}.packet-record.ack.active text{fill:var(--success)}.packet-record.teal.active text{fill:var(--tertiary)}.packet-record.success.active text{fill:var(--success)}.packet-record.warning.active text{fill:#b45309}.packet-record.danger.active text{fill:var(--danger)}.simulator-panel{display:flex;flex-direction:column;gap:20px;min-height:0;padding:24px;border-left:1px solid var(--border);overflow:auto}.simulator-panel section{border-bottom:1px solid var(--border);padding-bottom:20px}.simulator-panel h2{display:flex;align-items:center;gap:8px;margin:0 0 11px;color:var(--brand);font-size:13px;letter-spacing:.05em;text-transform:uppercase}.task-text{margin:0;color:var(--text);font-size:16.5px;font-weight:700;line-height:1.5}.progress-meter{position:relative;height:8px;margin-top:14px;border-radius:999px;background:var(--surface-mid);overflow:hidden}.progress-meter span{position:absolute;inset:0 auto 0 0;border-radius:inherit;background:linear-gradient(90deg,var(--brand),var(--tertiary));transition:width .18s ease}.action-section{display:grid;gap:11px}.sim-action{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:48px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-low);color:var(--faint);padding:0 15px;font-weight:700}.sim-action:disabled{cursor:default}.sim-action.enabled{border-color:var(--brand);background:var(--brand);color:#fff;box-shadow:0 10px 24px color-mix(in srgb,var(--brand) 18%,transparent)}.sim-action.enabled:hover{background:var(--brand-strong);transform:translateY(-1px)}.feedback-card{display:grid;gap:8px}.feedback{display:grid;place-items:center;gap:8px;min-height:130px;border:1px dashed var(--border);border-radius:var(--radius-lg);color:var(--faint);text-align:center;padding:18px}.feedback.success{border-color:color-mix(in srgb,var(--success) 60%,var(--border));background:var(--success-soft);color:var(--success)}.feedback.error{border-color:color-mix(in srgb,var(--danger) 60%,var(--border));background:var(--danger-soft);color:var(--danger)}.history-card{display:grid;gap:8px;margin-top:auto}.history-card p{margin:0;border-radius:var(--radius-sm);background:var(--surface-low);color:var(--muted);padding:9px 11px;font-size:14px}.history-card .muted{color:var(--faint);font-style:italic}.history-card p strong{color:var(--brand)}.simulator-empty{display:grid;align-content:center;gap:14px;width:min(760px,calc(100% - 42px));min-height:100vh;margin:0 auto}.simulator-empty h1{margin:0;font-size:34px}.simulator-empty p{margin:0;color:var(--muted)}.timeline{grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));align-items:center;gap:14px;border-top:1px solid var(--border);background:var(--surface);padding:18px clamp(18px,5vw,88px)}.timeline-item{position:relative;display:grid;place-items:center;gap:7px;color:var(--faint)}.timeline-item:before{content:"";position:absolute;top:21px;left:calc(-50% + 25px);width:calc(100% - 50px);height:2px;background:var(--border)}.timeline-item:first-child:before{display:none}.timeline-item span{position:relative;z-index:1;display:inline-grid;place-items:center;width:42px;height:42px;border:1px solid var(--border);border-radius:999px;background:var(--surface-low);font-weight:800}.timeline-item.active span{border-color:var(--brand);background:var(--brand);color:#fff;box-shadow:0 0 0 6px color-mix(in srgb,var(--brand) 14%,transparent)}.timeline-item.done span,.timeline-item.done:before{background:var(--success);border-color:var(--success);color:#fff}@media(max-width:1100px){.home-layout,.detail-shell{grid-template-columns:minmax(0,1fr)}.left-sidebar{display:none}.detail-grid{grid-template-columns:minmax(0,1fr)}.detail-aside{position:static}.detail-aside .cta-panel{display:none}.mobile-detail-cta{display:block}.mobile-category-tabs{position:absolute;top:18px;left:16px;right:16px;z-index:7;display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.mobile-category-tabs::-webkit-scrollbar{display:none}.mobile-category-tabs button{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;min-height:36px;border:1px solid var(--border);border-radius:999px;background:color-mix(in srgb,var(--surface) 94%,transparent);color:var(--muted);padding:0 12px;font-size:13px;font-weight:800;box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.mobile-category-tabs .active{border-color:color-mix(in srgb,var(--brand) 36%,var(--border));background:var(--brand-soft);color:var(--brand)}}@media(max-width:900px){.top-nav{height:64px;min-height:64px;gap:12px;padding:0 12px}.page-with-topbar{padding-top:64px}.primary-nav,.search-box{display:none}.brand-area{gap:10px}.brand{font-size:17px}.top-actions{gap:6px}.mobile-icon-button,.mobile-search-button{display:inline-grid}.mobile-search-panel{display:grid}.icon-text-button{display:inline-grid;place-items:center;width:40px;height:40px;min-height:40px;padding:0}.icon-text-button>span:not(.language-mark){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.home-layout{grid-template-columns:minmax(0,1fr)}.graph-canvas{height:calc(100vh - 64px);min-height:680px}.sphere-graph-stage{top:118px;right:-30px;bottom:106px;left:-30px}.graph-canvas-controls{right:18px;bottom:18px}.graph-canvas-controls button{width:44px;height:44px}.canvas-zoom-readout{width:56px;height:44px}.graph-toolbar{top:66px;left:16px;max-width:calc(100vw - 32px);overflow-x:auto}.search-status{top:116px;left:16px;max-width:calc(100vw - 32px)}.simulator-shell{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto;height:auto;min-height:100vh;overflow:visible}.simulator-panel{border-left:0;border-top:1px solid var(--border)}.visual-stage{grid-template-columns:1fr;align-content:start;min-height:auto;padding:24px 18px 32px}.ethernet-frame-stage,.signal-stage,.tcp-ip-model-stage,.arp-stage,.switch-stage,.array-stage,.linked-list-stage,.stack-stage{overflow-x:auto;justify-content:start}.array-card{width:860px;max-width:none;justify-self:start}.linked-list-card{width:900px;max-width:none;justify-self:start}.stack-card{width:860px;max-width:none;justify-self:start}.array-diagram{height:544px}.linked-list-diagram{height:592px}.switch-card{width:900px;max-width:none;justify-self:start}.switch-diagram{height:502px}.ethernet-frame-card{width:960px;max-width:none;justify-self:start}.ethernet-frame-diagram{height:464px}.signal-card{width:960px;max-width:none;justify-self:start}.signal-diagram{height:582px}.tcp-ip-model-card{width:940px;max-width:none;justify-self:start}.tcp-ip-model-diagram{height:504px}.arp-card{width:960px;max-width:none;justify-self:start}.arp-diagram{height:532px}.event-map{width:min(100%,620px);justify-self:center}.wire-zone{width:min(80vw,420px);justify-self:center;height:240px}.about-grid{grid-template-columns:1fr}}@media(max-width:640px){.brand span{max-width:178px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-list{grid-template-columns:1fr}.example-problem-card{grid-template-columns:1fr;align-items:start}.detail-content{padding:26px 16px}.hero-panel,.info-section>div,.cta-panel,.contents-panel{padding:19px}.hero-facts{gap:7px}.hero-facts span{max-width:100%;min-width:0;overflow-wrap:anywhere}.timeline{grid-template-columns:repeat(2,minmax(0,1fr));min-height:162px}.timeline-item:before{display:none}.sim-top-row{display:grid;grid-template-columns:1fr;justify-items:stretch;padding:18px}.sim-context,.sim-control-group,.sim-control-group .secondary-button{min-width:0}.sim-control-group{width:100%}.sim-control-group .secondary-button{flex:1}.sim-top-row h1,.sim-top-row p{text-align:left}.event-map{min-height:390px}.generic-sequence{min-height:360px}.ethernet-frame-stage,.switch-stage{padding-inline:12px}.switch-card{width:840px}.switch-diagram{height:468px}.ethernet-frame-card{width:880px}.ethernet-frame-diagram{height:425px}}
