:root{--bg: #f6f5f0;--shadow: 0 2px 12px rgba(0, 0, 0, .06);--shadow-hover: 0 6px 24px rgba(0, 0, 0, .12);--frame: #ececea;--gap: 32px}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;background:var(--bg)}body{font:14px/1.4 -apple-system,BlinkMacSystemFont,Helvetica Neue,system-ui,sans-serif;color:#1c1c1c;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}.stage{position:relative;width:100vw;height:100vh;height:100svh;overflow:hidden}.canvas{position:relative;display:grid;gap:var(--gap);padding:var(--gap);width:100%;height:100%}@media(max-width:600px){:root{--gap: 18px}}.edges{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;overflow:visible}.edges line{stroke:#000;stroke-width:2;stroke-linecap:round;stroke-dasharray:2 6;animation:edge-fade-in .15s ease-out both}@keyframes edge-fade-in{0%{opacity:0}to{opacity:1}}.node{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0}.node.center{z-index:3}.node:hover{z-index:20}.node .img-btn{display:block;width:100%;height:100%;padding:0;margin:0;border:none;background:var(--frame);border-radius:8px;overflow:hidden;cursor:pointer;box-shadow:var(--shadow);transition:transform .12s ease,box-shadow .12s ease}.node:hover .img-btn{box-shadow:var(--shadow-hover);transform:scale(1.06)}.canvas.is-flipping .node .img-btn{transform:none;transition:none}.node .img-btn img{display:block;width:100%;height:100%;object-fit:cover}.node .open{position:absolute;top:6px;right:6px;height:24px;display:inline-flex;align-items:center;font-size:13px;line-height:1;color:#1c1c1c;background:#ffffffeb;border-radius:4px;padding:0 6px;text-decoration:none;opacity:0;transition:opacity .12s ease;z-index:4;white-space:nowrap}.node .open-arrow{display:inline-block}.node .open-label{display:inline-block;max-width:0;margin-right:0;overflow:hidden;white-space:nowrap;transition:max-width .44s ease,margin-right .44s ease}.node:hover .open{opacity:1}.node .open:hover{background:#fff}.node .open:hover .open-label{max-width:200px;margin-right:6px}@media(hover:none){.node .open{opacity:1}}.center-placeholder{position:relative;z-index:2;border-radius:8px;background:var(--frame);box-shadow:var(--shadow)}.search-center{z-index:3}.search-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;font:inherit;width:100%;height:100%;padding:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border-radius:8px;background:#1c1c1c;color:#f6f5f0;box-shadow:var(--shadow);overflow:hidden;cursor:pointer;transition:box-shadow .12s ease,transform .12s ease}.search-card:hover{box-shadow:var(--shadow-hover);transform:scale(1.01)}.search-card:active{transform:scale(.998)}.search-card-note{font-family:Helvetica Neue,system-ui,sans-serif;font-weight:500;font-size:clamp(11px,1.3vw,15px);letter-spacing:.01em;line-height:1.3;text-align:center;color:#f6f5f099;max-width:100%}.search-card-text{font-family:Helvetica Neue,system-ui,sans-serif;font-weight:700;letter-spacing:-.02em;line-height:1;text-align:center}.search-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c1c1c52;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;padding-top:14vh;z-index:100}.search-modal{position:relative;width:min(1100px,calc(100% - 40px));background:#fff;border:2px solid #1c1c1c;overflow:hidden}.search-input{width:100%;border:none;outline:none;font:600 clamp(28px,6vw,80px) / 1.3 "Helvetica Neue",system-ui,sans-serif;letter-spacing:-.02em;color:#1c1c1c;background:transparent;padding:.3em .5em}.search-input::placeholder{color:#b9b6ad}.search-progress{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.search-progress:before{content:"";position:absolute;top:0;bottom:0;left:0;right:100%;background:#fff;mix-blend-mode:difference;animation:search-progress-sweep 2.4s cubic-bezier(.45,0,.55,1) infinite}@keyframes search-progress-sweep{0%{left:0%;right:100%}50%{left:0%;right:0%}to{left:100%;right:0%}}.search-overlay.is-loading .search-progress:before{animation:loading-progress-sweep 7s cubic-bezier(.45,0,.55,1) infinite}@keyframes loading-progress-sweep{0%{left:0%;right:100%}57.142857%{left:0%;right:0%}to{left:100%;right:0%}}.stage.is-grid{height:auto;min-height:100vh;overflow:visible}.canvas.grid-view{height:auto;min-height:100vh}.canvas.grid-view .node{aspect-ratio:1 / 1}.canvas.grid-view .node.neighbor{animation:grid-cell-in .32s cubic-bezier(0,0,.2,1) both}@keyframes grid-cell-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.view-toggle{position:fixed;right:24px;bottom:24px;width:36px;height:36px;border:none;background:#ffffffeb;border-radius:8px;box-shadow:var(--shadow);cursor:pointer;display:flex;align-items:center;justify-content:center;color:#1c1c1c;transition:box-shadow .12s ease,transform .12s ease;z-index:60}.view-toggle:hover{box-shadow:var(--shadow-hover);transform:translateY(-1px)}.view-toggle svg{width:18px;height:18px;display:block}.view-toggle:after{content:"press G";position:absolute;right:calc(100% + 8px);top:50%;transform:translateY(-50%);background:#1c1c1c;color:var(--bg);font:600 11px/1 Helvetica Neue,system-ui,sans-serif;letter-spacing:.02em;padding:6px 8px;border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s ease}.view-toggle:hover:after{opacity:1}.details-panel{position:fixed;top:0;right:0;bottom:0;width:min(420px,90vw);background:#fff;color:#1c1c1c;box-shadow:0 12px 48px #0000002e;z-index:80;display:flex;flex-direction:column;overflow:hidden;border-left:1px solid rgba(0,0,0,.06);transform:translate(100%);transition:transform .28s cubic-bezier(.4,0,.2,1)}.details-panel.is-open{transform:translate(0)}.details-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c1c1c47;opacity:0;pointer-events:none;transition:opacity .28s ease;z-index:70;display:none}.panel-grip{display:none;align-self:center;width:36px;height:4px;background:#0000002e;border-radius:999px;margin:10px 0 6px;flex:0 0 auto}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px 14px;border-bottom:1px solid rgba(0,0,0,.06);flex:0 0 auto}.panel-head .meta{display:flex;flex-direction:column;gap:4px;min-width:0}.panel-head .block-id{font:600 15px/1.2 Helvetica Neue,system-ui,sans-serif;letter-spacing:-.01em}.panel-head .arena-link{font:500 13px/1 Helvetica Neue,system-ui,sans-serif;color:#1c1c1c8c;text-decoration:none;display:inline-flex;align-items:center;gap:4px;transition:color .12s ease;width:max-content}.panel-head .arena-link:hover{color:#1c1c1c}.panel-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;cursor:pointer;background:#0000000a;width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#1c1c1c;transition:background .12s ease;flex:0 0 auto}.panel-close:hover{background:#00000014}.panel-close svg{width:16px;height:16px}.panel-body{overflow-y:auto;flex:1 1 auto;padding:16px 20px 24px;-webkit-overflow-scrolling:touch}.panel-section+.panel-section{margin-top:22px}.panel-section h3{font:600 11px/1 Helvetica Neue,system-ui,sans-serif;text-transform:uppercase;letter-spacing:.08em;color:#1c1c1c8c;margin:0 0 10px}.panel-empty{color:#1c1c1c73;font:13px/1.5 Helvetica Neue,system-ui,sans-serif}.pills{display:flex;flex-wrap:wrap;gap:6px}.pill{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;font:500 13px/1.2 Helvetica Neue,system-ui,sans-serif;color:#1c1c1c;background:var(--frame);border:1px solid transparent;padding:6px 10px;border-radius:999px;transition:background .12s ease,transform .12s ease,color .12s ease}.pill:hover{background:#1c1c1c;color:var(--bg)}.pill:active{transform:translateY(1px)}@media(max-width:720px){.details-panel{top:auto;left:0;right:0;width:100%;max-height:75vh;transform:translateY(100%);border-left:none;border-top:1px solid rgba(0,0,0,.06);border-top-left-radius:16px;border-top-right-radius:16px}.details-panel.is-open{transform:translateY(0)}.panel-grip,.details-backdrop{display:block}.details-backdrop.is-open{opacity:1;pointer-events:auto}}.details-open .node.center .img-btn{box-shadow:var(--shadow-hover)}
