:root{--bg:#f2f5f9;--card:#fff;--tx:#0b1b2e;--mu:#56687f;--ln:#d6dee9;--ok:#0f9d8a;--wa:#c98a0b;--hot:#d9453a;--fr:#3b6fd8;--da:#0b8fb0;--sh1:0 1px 2px rgba(11,27,46,.06),0 1px 1px rgba(11,27,46,.04);--sh2:0 8px 28px -10px rgba(11,27,46,.16),0 2px 6px rgba(11,27,46,.05);--rad:12px;--ui:Inter,"SF Pro Text",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,monospace}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#08121f;--card:#0f2036;--tx:#e6eef7;--mu:#8ea5bf;--ln:#233a57;--ok:#2dd4bf;--wa:#f5b942;--hot:#ff6b5e;--fr:#7aa2ff;--da:#4cc9f0;--sh1:0 1px 2px rgba(0,0,0,.4);--sh2:0 12px 32px -12px rgba(0,0,0,.65),0 2px 6px rgba(0,0,0,.3)}}:root[data-theme=dark]{--bg:#08121f;--card:#0f2036;--tx:#e6eef7;--mu:#8ea5bf;--ln:#233a57;--ok:#2dd4bf;--wa:#f5b942;--hot:#ff6b5e;--fr:#7aa2ff;--da:#4cc9f0;--sh1:0 1px 2px rgba(0,0,0,.4);--sh2:0 12px 32px -12px rgba(0,0,0,.65),0 2px 6px rgba(0,0,0,.3)}*{box-sizing:border-box}html{color-scheme:light dark}body{margin:0;background:radial-gradient(1200px 520px at 12% -8%,color-mix(in srgb,var(--fr) 9%,transparent),transparent 70%),var(--bg);color:var(--tx);font:15px/1.55 var(--ui);letter-spacing:-.005em;-webkit-font-smoothing:antialiased;padding:env(safe-area-inset-top,0) 0 env(safe-area-inset-bottom,0)}main{max-width:1760px;margin:0 auto;padding:20px 16px 40px}.eyebrow{display:inline-block;margin:0 0 10px;padding:3px 10px;border:1px solid color-mix(in srgb,var(--fr) 35%,var(--ln));border-radius:999px;background:color-mix(in srgb,var(--fr) 8%,transparent);color:var(--fr);font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:700}h2{font:600 19px/1.3 "Iowan Old Style",Georgia,serif;letter-spacing:-.01em;margin:0 0 10px}.sub{color:var(--mu);max-width:110ch;margin:0 0 14px;font-size:16px;line-height:1.6}.meta{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 4px;padding:0;list-style:none}.meta li{padding:3px 11px;border:1px solid var(--ln);border-radius:999px;font-size:12px;color:var(--mu);background:color-mix(in srgb,var(--card) 80%,transparent)}.meta b{color:var(--tx);font:700 12px var(--mono);margin-right:3px}.card{background:var(--card);border:1px solid var(--ln);border-radius:var(--rad);padding:16px 18px;box-shadow:var(--sh2);min-width:0}.data-load-error{padding:10px 14px;border:1px solid var(--hot);border-radius:10px;color:var(--hot)}.hd{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:8px 14px;margin:0 0 12px;padding-bottom:10px;border-bottom:1px solid var(--ln)}.hd h2{margin:0;flex:1 1 320px}.hd h2 small,.scn h2 small{display:block;font:400 12.5px/1.45 var(--ui);color:var(--mu);margin:3px 0 0}.n{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;margin-right:8px;border:1px solid color-mix(in srgb,var(--fr) 40%,var(--ln));border-radius:5px;background:color-mix(in srgb,var(--fr) 9%,transparent);color:var(--fr);font:700 11px var(--mono);vertical-align:1px}.tb{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.ctl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 26px;margin-bottom:12px}.ctl label{display:flex;justify-content:space-between;gap:8px;font:700 11px var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--mu)}.ctl output{color:var(--tx);font:700 13px var(--mono);letter-spacing:0;text-transform:none}input[type=range]{width:100%;-webkit-appearance:none;appearance:none;height:26px;background:transparent;margin:2px 0 0}input[type=range]::-webkit-slider-runnable-track{height:5px;border-radius:99px;background:var(--ln)}input[type=range]::-moz-range-track{height:5px;border-radius:99px;background:var(--ln)}input[type=range]::-moz-range-progress{height:5px;border-radius:99px;background:var(--fr)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;margin-top:-6.5px;border-radius:50%;background:var(--card);border:2px solid var(--fr);box-shadow:0 2px 8px rgba(11,27,46,.35);cursor:grab}input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--card);border:2px solid var(--fr);box-shadow:0 2px 8px rgba(11,27,46,.35);cursor:grab}#tm::-webkit-slider-runnable-track{background:linear-gradient(90deg,var(--fr) var(--p,0%),var(--ln) var(--p,0%))}input[type=range]:focus-visible{outline:2px solid var(--fr);outline-offset:3px;border-radius:6px}.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;grid-column:1/-1}.row .lab{font:700 11px var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--mu)}.row .sp{flex:1 1 0}.row.tlr{align-items:flex-end;gap:10px 14px;padding-top:12px;border-top:1px solid var(--ln)}.sl.grow{flex:1 1 260px;min-width:200px}.b,.seg button,.lbb{font:600 12.5px var(--ui);padding:0 12px;height:32px;border:1px solid var(--ln);background:var(--card);color:var(--tx);border-radius:8px;cursor:pointer;box-shadow:var(--sh1);transition:border-color .15s,background .15s}.b:hover,.seg button:hover,.lbb:hover{border-color:var(--fr);background:color-mix(in srgb,var(--fr) 7%,var(--card))}.b:focus-visible,.seg button:focus-visible,.nd:focus-visible,td.h:focus-visible,.lbb:focus-visible,.lk:focus-visible{outline:2px solid var(--fr);outline-offset:2px}.b[hidden]{display:none}.play{min-width:132px;background:var(--fr);border-color:var(--fr);color:#fff}.play:hover{background:color-mix(in srgb,var(--fr) 88%,#000);color:#fff}.play[aria-pressed=true]{background:var(--hot);border-color:var(--hot)}.seg{display:inline-flex;flex-wrap:wrap;gap:2px;padding:2px;border-radius:10px;background:color-mix(in srgb,var(--bg) 60%,var(--card));border:1px solid var(--ln)}.seg button{height:28px;border:0;box-shadow:none;background:transparent;border-radius:8px}.seg button[aria-pressed=true]{background:var(--fr);color:#fff}.xst{font-size:12px;color:var(--ok)}.keys{grid-column:1/-1;margin:0;font-size:11.5px;color:var(--mu)}.keys kbd,#csl kbd{border:1px solid var(--ln);border-radius:4px;padding:0 5px;margin:0 2px;font:600 10.5px var(--mono);background:var(--bg)}.verdict{grid-column:1/-1;font-size:14px;line-height:1.55;padding:11px 14px;border-radius:0 10px 10px 0;border:1px solid var(--ln);border-left:4px solid var(--ok);background:color-mix(in srgb,var(--ok) 7%,transparent);transition:border-color .3s,background .3s}.verdict b{font-family:"Iowan Old Style",Georgia,serif;font-size:1.12em}.verdict.a{border-left-color:var(--wa);background:color-mix(in srgb,var(--wa) 9%,transparent)}.verdict.r{border-left-color:var(--hot);background:color-mix(in srgb,var(--hot) 8%,transparent)}.tiles{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:12px}.t{border-left:4px solid var(--ok);padding:12px 14px;transition:border-color .3s}.t.a{border-left-color:var(--wa)}.t.r{border-left-color:var(--hot)}.t small{display:block;color:var(--mu);font:700 10.5px var(--ui);letter-spacing:.09em;text-transform:uppercase}.t b{display:block;font:600 24px/1.2 "Iowan Old Style",Georgia,serif;margin:4px 0 2px;font-variant-numeric:tabular-nums}.t span{display:block;color:var(--mu);font-size:12px;line-height:1.4}.layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:12px;margin-bottom:12px;align-items:start}.map{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.col{display:flex;flex-direction:column;gap:6px;position:relative}.col h4{margin:0 0 6px;font:700 10.5px var(--ui);color:var(--mu);text-transform:uppercase;letter-spacing:.09em}.col+.col::before{content:"\2192";position:absolute;left:-9px;top:0;color:var(--mu);font-size:13px}.nd{text-align:left;font:inherit;color:inherit;border:1px solid var(--ln);border-top:3px solid var(--c,var(--ok));border-radius:9px;background:var(--card);padding:7px 9px;cursor:pointer;display:block;transition:border-color .3s,box-shadow .2s,transform .15s}div.nd{cursor:default}button.nd:hover{transform:translateY(-1px)}.nd:hover,.nd.on{border-color:var(--c,var(--fr));box-shadow:0 0 0 2px color-mix(in srgb,var(--c,var(--fr)) 25%,transparent)}.nd.hl{outline:2px dashed var(--wa);outline-offset:2px}.nd{position:relative}.nd.bind::after{content:"";position:absolute;top:-5px;right:-5px;width:10px;height:10px;border-radius:50%;background:var(--c);box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 28%,transparent)}@media(prefers-reduced-motion:no-preference){.nd.bind::after{animation:pulse 1.8s ease-in-out infinite}}@keyframes pulse{50%{box-shadow:0 0 0 7px transparent}}.nd.g{--c:var(--ok)}.nd.a{--c:var(--wa)}.nd.r{--c:var(--hot)}.nd.pol{--c:var(--fr)}.nd b{display:flex;justify-content:space-between;gap:6px;font-size:12.5px}.nd b i{font:700 12.5px var(--mono);font-style:normal;color:var(--c)}.nd .bar{height:4px;border-radius:2px;background:var(--ln);margin:5px 0 3px;overflow:hidden}.nd .bar s{display:block;height:100%;background:var(--c);transition:width .45s cubic-bezier(.3,.7,.3,1),background .3s}.nd small{display:block;color:var(--mu);font-size:11px}.nd .tk{font:600 10px var(--mono);letter-spacing:.02em;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.det h3{font:600 24px/1.25 "Iowan Old Style",Georgia,serif;letter-spacing:-.01em;margin:2px 0 8px}.det p{margin:6px 0;color:var(--mu)}.det .sec2{margin:12px 0 4px;font:700 10.5px var(--ui);letter-spacing:.09em;text-transform:uppercase;color:var(--tx)}.lp{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:8px 0}.lp div{border:1px solid var(--ln);border-radius:8px;padding:5px 8px;font:700 15px var(--mono)}.lp div.on{border-color:var(--fr);box-shadow:0 0 0 1px var(--fr)}.lp b{display:block;font:600 10.5px var(--ui);color:var(--mu);letter-spacing:.04em}.spk{width:100%;height:auto;display:block;margin-top:4px}.kv{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;margin:8px 0;padding:10px 0;border-block:1px solid var(--ln)}.kv div{min-width:0}.kv dt{font:700 10px var(--ui);letter-spacing:.09em;text-transform:uppercase;color:var(--mu)}.kv dd{margin:1px 0 0;font:650 13px var(--ui)}.g{color:var(--ok)}.a{color:var(--wa)}.r{color:var(--hot)}.nd.g,.nd.a,.nd.r,.t.g,.t.a,.t.r,.verdict.a,.verdict.r{color:var(--tx)}.pills{display:flex;flex-wrap:wrap;gap:5px}.pills span{border:1px solid var(--ln);border-radius:10px;padding:1px 8px;font-size:12px}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.tw{overflow-x:auto}table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:13px}th,td{padding:7px 6px;text-align:left;border-top:1px solid var(--ln)}thead th{border-top:0;color:var(--mu);font:700 10.5px var(--ui);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}tbody th{font-weight:600;white-space:nowrap}td.h{position:relative;cursor:pointer;font:700 13px var(--mono);min-width:64px}td.h i{position:absolute;left:2px;top:3px;bottom:3px;border-radius:4px;background:currentColor;opacity:.16;transition:width .45s cubic-bezier(.3,.7,.3,1)}td.h span{position:relative;padding-left:4px}td.h.on{outline:2px solid var(--fr);outline-offset:-2px}td.fb{font:700 12px var(--mono)}tbody tr:hover th{color:var(--fr)}tr.hl th{box-shadow:inset 3px 0 0 var(--wa)}tr.cur{background:color-mix(in srgb,var(--fr) 7%,transparent)}tr.pin{background:color-mix(in srgb,var(--wa) 8%,transparent)}tr.on .lk{color:var(--fr)}td small{display:block;color:var(--mu);font-size:10.5px}.lk{background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--tx);cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}.lk:hover{color:var(--fr)}.note{color:var(--mu);font-size:12.5px;margin-top:14px;padding:12px 16px;border:1px solid var(--ln);border-left:4px solid var(--fr);border-radius:0 10px 10px 0;background:var(--card);line-height:1.6}.note.tight{margin-top:10px;padding:0;border:0;background:none;font-size:12px}svg text{fill:var(--mu);font-size:11px}@media(max-width:1200px){.tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:1000px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.layout,.two{grid-template-columns:1fr}.ctl{grid-template-columns:1fr}}@media(max-width:720px){.map{grid-template-columns:1fr}.col+.col::before{display:none}.tiles{grid-template-columns:1fr}.keys{display:none}}@media print{.ctl .row,.keys,.b,.lbb,.tb,.vb,#lbx,#lbhud,#tip{display:none!important}body{background:#fff;color:#111}.card{box-shadow:none;break-inside:avoid}}@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:no-preference){.card,.tiles .t,.note{animation:rise .5s cubic-bezier(.2,.7,.2,1) both}.tiles .t:nth-child(2){animation-delay:.05s}.tiles .t:nth-child(3){animation-delay:.1s}.tiles .t:nth-child(4){animation-delay:.15s}.tiles .t:nth-child(5){animation-delay:.2s}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.scn{margin-bottom:12px}.hint{display:none;color:var(--mu);font-size:12px;margin:0 0 6px}.sw{overflow-x:auto}.sw canvas{display:block}.vt{display:inline-flex;gap:2px;margin-left:10px;padding:2px;border:1px solid var(--ln);border-radius:9px;vertical-align:middle;background:color-mix(in srgb,var(--bg) 60%,var(--card))}.vt button{font:600 12px var(--ui);padding:3px 11px;border:0;background:transparent;color:var(--tx);border-radius:7px;cursor:pointer}.vt button[aria-pressed=true]{background:var(--fr);color:#fff}.vt button:focus-visible{outline:2px solid var(--fr);outline-offset:2px}.s3{position:relative;height:520px;border:1px solid var(--ln);border-radius:10px;overflow:hidden;background:radial-gradient(ellipse at 50% 30%,color-mix(in srgb,var(--fr) 12%,var(--card)),var(--card))}#gl,#gl canvas{width:100%;height:100%;display:block}#gl canvas{touch-action:none;cursor:grab}#gl canvas:active{cursor:grabbing}#lbl{position:absolute;inset:0;pointer-events:none;overflow:hidden}.lb{position:absolute;left:0;top:0;pointer-events:auto;font:600 11px var(--ui);color:var(--tx);background:color-mix(in srgb,var(--card) 90%,transparent);border:1.5px solid var(--ok);border-radius:8px;padding:2px 7px;white-space:nowrap;cursor:pointer;will-change:transform;backdrop-filter:blur(4px)}.lb.hl{box-shadow:0 0 0 3px color-mix(in srgb,var(--wa) 55%,transparent)}.lb:disabled{cursor:default}.lb:focus-visible{outline:2px solid var(--fr)}.cap3{position:absolute;left:10px;top:8px;font-size:11.5px;color:var(--mu);pointer-events:none}.vb{position:absolute;left:8px;bottom:8px;right:8px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}.vb button{border:1px solid var(--ln);background:color-mix(in srgb,var(--card) 92%,transparent);color:var(--tx);border-radius:999px;padding:4px 11px;font:600 12px var(--ui);cursor:pointer;box-shadow:var(--sh1);backdrop-filter:blur(6px);display:inline-flex;align-items:center;justify-content:center;gap:5px;height:auto;line-height:1.2;white-space:nowrap}.vb button svg{width:14px;height:14px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.vb button[aria-pressed=true]{background:var(--fr);border-color:var(--fr);color:#fff}.vb button:hover:not([aria-pressed=true]){border-color:var(--fr);background:color-mix(in srgb,var(--fr) 14%,var(--card))}.legend{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12px;color:var(--mu);margin:10px 0 0}.legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:middle}@media(max-width:1100px){.hint{display:block}}@media(max-width:720px){.s3{height:400px}}.ecosystem-app-page #appMainContent{flex:0 0 calc(100% - 260px);width:calc(100% - 260px);max-width:none;margin-left:260px;padding:0 0 24px}.ecosystem-app-page .sidebar.collapsed~#appMainContent{flex-basis:calc(100% - 68px);width:calc(100% - 68px);margin-left:68px}.ecosystem-app-page .ecosystem-main{width:100%;max-width:none;min-width:0;padding:0 clamp(12px,1.2vw,24px) 28px}.ecosystem-app-page #appMainContent>.di-disclosure{width:calc(100% - 32px)!important;max-width:100%;margin:0 16px .9rem!important}.ecosystem-app-page .share-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:20px 0 14px;padding:12px 14px;border:1px solid var(--ln);border-radius:10px;background:var(--card)}.ecosystem-app-page .share-btn{border:1px solid var(--ln);border-radius:7px;background:var(--card);color:var(--tx);padding:5px 9px;font:inherit;text-decoration:none;cursor:pointer}.ecosystem-app-page .share-status{color:var(--mu);font-size:12px}@media(max-width:1100px){.ecosystem-app-page #appMainContent,.ecosystem-app-page #appMainContent.expanded,.ecosystem-app-page .sidebar.collapsed~#appMainContent{flex:0 0 100%;width:100%;max-width:100vw;margin-left:0;padding:76px 0 24px!important}.ecosystem-app-page #appMainContent>.di-disclosure{width:calc(100% - 24px)!important;margin:0 12px .85rem!important}.ecosystem-app-page .main-content>.di-disclosure{position:relative;z-index:1}.ecosystem-app-page .sidebar.mobile-open{z-index:10001}.ecosystem-app-page .ecosystem-main{padding-right:10px;padding-left:10px}}