:root{--bg: #060d0a;--surface: #0d1a14;--surface-hover: #142820;--accent: #34d399;--accent-dim: #059669;--text: #d8e8e0;--text-dim: #6e8a7e;--border: #1a3328}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:14px}#app{display:flex;height:100%}#sidebar{width:260px;min-width:260px;background:var(--surface);border-right:1px solid var(--border);padding:24px 16px;display:flex;flex-direction:column;gap:20px;overflow-y:auto}#sidebar h1{font-size:18px;font-weight:700;color:var(--accent);line-height:1.3;letter-spacing:-.5px}#experiment-list{display:flex;flex-direction:column;gap:4px}.experiment-card{padding:12px;border-radius:8px;border:1px solid transparent;cursor:pointer;transition:all .15s ease;background:transparent;text-align:left;color:var(--text);font-family:inherit;font-size:inherit}.experiment-card:hover{background:var(--surface-hover)}.experiment-card.active{background:var(--surface-hover);border-color:var(--accent);border-left:3px solid var(--accent)}.experiment-card .name{font-weight:600;font-size:13px;margin-bottom:4px}.experiment-card .description{font-size:11px;color:var(--text-dim);line-height:1.4}#viewport{flex:1;position:relative;overflow:hidden}#svg-canvas{display:block;width:100%;height:100%;background:var(--bg)}#info-overlay{position:absolute;bottom:16px;left:16px;font-size:11px;color:var(--text-dim);background:#060d0ab3;padding:6px 10px;border-radius:6px;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:none}#info-overlay:not(:empty){display:block}#annotation-toggle{position:absolute;top:16px;right:150px;padding:8px 14px;background:#0d1a14d9;border:1px solid var(--border);border-radius:8px;color:var(--text-dim);font-family:inherit;font-size:12px;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all .15s ease;z-index:10}#annotation-toggle:hover{color:var(--text);border-color:var(--accent-dim)}#annotation-toggle.active{color:var(--accent);border-color:var(--accent)}#annotation-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5}#annotation-layer.hidden{display:none}.ann-marker{position:absolute;transform:translate(-50%,-50%);pointer-events:auto}.ann-dot{width:22px;height:22px;border-radius:50%;background:#34d39926;border:1.5px solid rgba(52,211,153,.5);color:var(--accent);font-family:SF Mono,Fira Code,monospace;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 0 8px #34d3991a}.ann-marker:hover .ann-dot{background:#34d3994d;border-color:var(--accent);transform:scale(1.15);box-shadow:0 0 16px #34d39940}.ann-tip{position:absolute;left:30px;top:50%;transform:translateY(-50%);min-width:200px;max-width:320px;padding:10px 12px;background:#0a140ff2;border:1px solid var(--border);border-radius:8px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease,transform .2s ease;pointer-events:none;box-shadow:0 4px 20px #0006;display:flex;gap:8px;align-items:flex-start}.ann-tip-left{left:auto;right:30px}.ann-marker:hover .ann-tip{opacity:1;visibility:visible}.ann-tip-num{flex-shrink:0;width:18px;height:18px;border-radius:50%;background:var(--accent);color:#060d0a;font-family:SF Mono,Fira Code,monospace;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.ann-tip-text{font-family:SF Mono,Fira Code,monospace;font-size:11px;line-height:1.55;color:var(--text)}#source-toggle{position:absolute;top:16px;right:16px;padding:8px 14px;background:#0d1a14d9;border:1px solid var(--border);border-radius:8px;color:var(--text-dim);font-family:inherit;font-size:12px;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all .15s ease;z-index:10}#source-toggle:hover{color:var(--text);border-color:var(--accent-dim)}#source-toggle.active{color:var(--accent);border-color:var(--accent)}#source-overlay{position:absolute;top:56px;right:16px;bottom:16px;width:min(540px,calc(100% - 32px));background:#0a140feb;border:1px solid var(--border);border-radius:10px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;flex-direction:column;z-index:10;overflow:hidden;transition:opacity .15s ease,transform .15s ease}#source-overlay.hidden{display:none}#source-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.source-title{font-size:12px;font-weight:600;color:var(--accent)}.source-stats{font-size:10px;color:var(--text-dim);background:var(--bg);padding:3px 8px;border-radius:4px;margin-left:auto;margin-right:8px}#source-close{background:none;border:none;color:var(--text-dim);font-size:18px;cursor:pointer;padding:4px 8px;border-radius:4px;line-height:1}#source-close:hover{color:var(--text);background:var(--surface-hover)}#source-code{flex:1;overflow:auto;padding:0;margin:0;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:11.5px;line-height:1;color:var(--text);-moz-tab-size:2;tab-size:2;counter-reset:src-line}#source-code code{display:block}.src-table{border-collapse:collapse;width:100%}.src-line{line-height:1.7}.src-line:hover{background:#34d3990a}.src-num{width:1px;white-space:nowrap;padding:0 12px 0 14px;text-align:right;color:#3a5448;font-size:10px;-webkit-user-select:none;user-select:none;vertical-align:top;border-right:1px solid #1a3328}.src-code{padding:0 8px 0 10px;white-space:pre;vertical-align:top}.src-indent{color:#1e3a2c;-webkit-user-select:none;user-select:none}.src-bracket{color:#6e8a7e}.src-tag{color:#34d399;font-weight:600}.src-attr{color:#67e8f9}.src-punct{color:#4a6a5e}.src-val{color:#fbbf24}.src-txt{color:#a7c4b8}#learn-section{border-top:1px solid var(--border);padding-top:16px;display:flex;flex-direction:column;gap:4px}.learn-heading{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-dim);margin-bottom:4px}.learn-heading+.learn-heading{margin-top:12px}.learn-group{border-radius:8px;overflow:hidden}.learn-group summary{padding:8px 12px;font-size:12px;font-weight:600;color:var(--text);cursor:pointer;border-radius:8px;transition:background .12s ease;list-style:none}.learn-group summary::-webkit-details-marker{display:none}.learn-group summary:before{content:"▸";display:inline-block;margin-right:8px;font-size:10px;color:var(--text-dim);transition:transform .15s ease}.learn-group[open] summary:before{transform:rotate(90deg)}.learn-group summary:hover{background:var(--surface-hover)}.learn-group p,.learn-group ul,.learn-group ol{padding:0 12px 8px;font-size:11px;color:var(--text-dim);line-height:1.6}.learn-group ul,.learn-group ol{padding-left:28px}.learn-group li{margin-bottom:2px}.learn-group strong{color:var(--text);font-weight:600}.learn-group code{font-size:10px;background:var(--bg);padding:1px 5px;border-radius:3px;color:var(--accent)}.learn-links{display:flex;flex-direction:column;gap:2px}.learn-links a{display:block;padding:7px 12px;font-size:11px;color:var(--accent);text-decoration:none;border-radius:6px;transition:background .12s ease}.learn-links a:hover{background:var(--surface-hover);text-decoration:underline}.error{display:flex;align-items:center;justify-content:center;height:100%;padding:40px;text-align:center;color:#ff6b6b;font-size:16px;line-height:1.6}


.exploration-site-footer{flex:0 0 auto;margin-top:auto;border-top:1px solid var(--border,#222233);background:var(--surface,#13131a);padding:12px 16px}
.exploration-site-nav{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center}
.exploration-site-nav a{color:var(--text,#d8d8e0);text-decoration:none;font-size:12px}
.exploration-site-nav a:hover,.exploration-site-nav a:focus-visible{text-decoration:underline}
html,body{min-height:100%}
body{display:flex;flex-direction:column;min-height:100vh;min-height:100svh;min-height:100dvh}
#app{flex:1 0 auto;min-height:0}
@media (width <= 720px){.exploration-site-footer{padding:10px 12px}.exploration-site-nav{gap:10px 14px}}
