:root{--explorer-accent:#4a9eff;--explorer-accent-glow:#67b4ff;--explorer-accent-soft:#4a9eff47;--explorer-accent-border:#4a9efff2;--explorer-accent-shadow:#4a9eff8c}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}html,body,#root{background:#0a0e17;width:100%;height:100%;margin:0;overflow:hidden}@media (width<=900px){html,body,#root{height:100dvh}}canvas{touch-action:none;display:block}button{-webkit-tap-highlight-color:transparent}.map-overlay{z-index:7;pointer-events:none;position:absolute;inset:0}.map-overlay-hints{flex-direction:column;gap:.45rem;display:flex;position:absolute;top:3.1rem;left:.85rem}.map-overlay-hint{color:#f3f6fb9e;align-items:center;gap:.45rem;font-size:.72rem;display:flex}.map-overlay-hint-icon{color:#f3f6fbc7;background:#0a0e17b8;border:1px solid #ffffff1f;border-radius:.35rem;justify-content:center;align-items:center;width:1.35rem;height:1.35rem;font-size:.72rem;display:inline-flex}.map-overlay-tooltip{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:none;background:#0a1220e0;border:1px solid #67b4ff59;border-radius:.85rem;width:min(18rem,100% - 2rem);padding:1rem 1.1rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 16px 48px #00000073}.map-overlay-tooltip-title{color:#f3f6fb;font-size:1rem;font-weight:700}.map-overlay-tooltip-eco{color:#f3f6fb94;margin-top:.2rem;font-size:.72rem}.map-overlay-tooltip-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin:.85rem 0 0;display:grid}.map-overlay-tooltip-stats div{flex-direction:column;gap:.15rem;display:flex}.map-overlay-tooltip-stats dt{color:#f3f6fb7a;letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:.62rem;font-weight:600}.map-overlay-tooltip-stats dd{color:#f3f6fb;margin:0;font-size:.82rem;font-weight:700}.map-overlay-tooltip-action{color:#67b4ff;cursor:pointer;pointer-events:auto;background:#4a9eff1f;border:1px solid #4a9eff73;border-radius:.55rem;margin-top:.85rem;padding:.45rem .75rem;font-size:.78rem;font-weight:600}.map-overlay-tooltip-action:hover{background:#4a9eff33}.map-overlay-controls{pointer-events:auto;align-items:flex-end;gap:.65rem;display:flex;position:absolute;bottom:1.25rem;left:.85rem;right:auto}.map-overlay-minimap-canvas{background:#0a0e17d1;border:1px solid #ffffff1f;border-radius:.55rem;width:5.5rem;height:4rem;display:block}.map-overlay-zoom{flex-direction:column;gap:.35rem;display:flex}.map-overlay-zoom button,.map-overlay-fit{color:#f3f6fbd1;cursor:pointer;background:#0a0e17d1;border:1px solid #ffffff1f;border-radius:.45rem;width:2rem;height:2rem;font-size:.95rem;line-height:1}.map-overlay-zoom button:hover,.map-overlay-fit:hover{color:#fff;border-color:#4a9eff73}@media (width<=900px){.map-overlay-hints{max-width:calc(100% - 1.5rem);top:2.6rem}.map-overlay-tooltip{top:auto;bottom:6.5rem;transform:translate(-50%)}.map-overlay-controls{bottom:.85rem}}.candidate-bar{--candidate-accent:var(--explorer-accent);--candidate-accent-strong:var(--explorer-accent-glow);--candidate-accent-soft:var(--explorer-accent-soft);--candidate-accent-border:var(--explorer-accent-border);--candidate-text:#f3f6fb9e;--candidate-text-active:#fff;pointer-events:auto;flex-direction:column;align-items:center;gap:.55rem;width:100%;max-width:52rem;padding:0 1rem;display:flex}.candidate-bar-label{color:#f3f6fb73;letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.62rem;font-weight:700}.candidate-bar-status,.candidate-bar-error{margin:0;font-size:.82rem}.candidate-bar-status{color:#f3f6fb73}.candidate-bar-error{color:#ff9d9d}.candidate-bar-list{flex-wrap:wrap;justify-content:center;gap:.45rem;display:flex}@media (width<=900px){.candidate-bar{max-width:none;padding-inline:calc(.65rem + env(safe-area-inset-left,0px)) calc(.65rem + env(safe-area-inset-right,0px));align-items:stretch;gap:.35rem}.candidate-bar-label{padding-inline:.15rem;font-size:.58rem}.candidate-bar-list{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;touch-action:pan-x;flex-wrap:nowrap;justify-content:flex-start;gap:.4rem;padding-bottom:.1rem;overflow-x:auto}.candidate-bar-list::-webkit-scrollbar{display:none}.candidate-card{flex-shrink:0;min-height:2.75rem;padding:.45rem .85rem;font-size:.84rem}.candidate-card:active:not(.candidate-card-active){color:var(--candidate-text-active);background:#18243ae0;border-color:#ffffff38}}.candidate-card{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);min-height:2.15rem;color:var(--candidate-text);cursor:pointer;font:inherit;background:#0a0e17cc;border:1px solid #ffffff14;border-radius:.65rem;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.84rem;font-weight:500;transition:background .15s,border-color .15s,box-shadow .15s,color .15s,opacity .15s,transform .15s;display:inline-flex;box-shadow:0 8px 24px #00000047,inset 0 1px #ffffff0a}.candidate-bar-list:has(.candidate-card-active) .candidate-card:not(.candidate-card-active){opacity:.55}.candidate-card:hover:not(.candidate-card-active),.candidate-card:focus-visible:not(.candidate-card-active){color:var(--candidate-text-active);background:#18243ae6;border-color:#ffffff2e;outline:none}.candidate-card-active{border-color:var(--candidate-accent-border);box-shadow:0 0 0 1px #67b4ff8c, 0 0 0 3px #4a9eff38, 0 0 28px var(--explorer-accent-shadow), inset 0 1px 0 #ffffff2e;color:var(--candidate-text-active);opacity:1;background:linear-gradient(#244e8cf5 0%,#163466f0 100%);transform:translateY(-1px)}.candidate-card-active:hover,.candidate-card-active:focus-visible{outline:none}.candidate-piece{opacity:.92;font-size:1rem;line-height:1}.candidate-card-active .candidate-piece{opacity:1;filter:drop-shadow(0 0 6px #67b4ffa6)}.candidate-move{font-weight:600}.candidate-card-active .candidate-move{color:#fff}.candidate-separator{color:#ffffff47}.candidate-card-active .candidate-separator{color:#ffffff73}.candidate-percent{color:#f3f6fb7a;font-variant-numeric:tabular-nums;font-size:.78rem}.candidate-card-active .candidate-percent{color:#c4e4fff2;font-weight:600}.graph-node-label{text-align:center;white-space:nowrap;background:#0a0e17d1;border:1px solid #ffffff1a;border-radius:.45rem;flex-direction:column;align-items:center;gap:.18rem;padding:.28rem .55rem;display:flex;box-shadow:0 6px 18px #00000059}.graph-node-label-path{border-color:#4a9eff59}.graph-node-label-selected{border-color:#67b4ffa6;box-shadow:0 0 18px #4a9eff47}.graph-node-label-san{color:#f3f6fb;text-shadow:0 1px 8px #000000a6;font-size:.78rem;font-weight:700;line-height:1.15}.graph-node-label-zoomed{background:#080c16e6;border-color:#ffffff29;padding:.34rem .68rem}.graph-node-label-zoomed .graph-node-label-san{font-size:.92rem}.graph-node-label-zoomed .graph-node-label-opening{color:#f3f6fbc2;max-width:13rem;font-size:.72rem;line-height:1.2}.graph-node-label-synthetic{border-color:#8b5cf659}.graph-node-label-opening{color:#f3f6fba3;text-overflow:ellipsis;text-shadow:0 1px 6px #0000008c;max-width:11rem;font-size:.64rem;font-weight:500;line-height:1.15;overflow:hidden}.map-family-label{color:#f3f6fbe0;text-align:center;text-shadow:0 0 18px #4a9eff59;min-width:6.5rem;padding:.15rem 0}.map-family-label-active .map-family-label-title{color:#fff;text-shadow:0 0 22px #67b4ff8c}.map-family-label-title{white-space:nowrap;font-size:.78rem;font-weight:700;line-height:1.2}.map-family-label-eco{color:#f3f6fb85;margin-top:.12rem;font-size:.62rem;font-weight:500}.map-family-tooltip{pointer-events:auto;background:#0a1220eb;border:1px solid #67b4ff6b;border-radius:.8rem;width:15rem;padding:.95rem 1rem;box-shadow:0 16px 40px #00000073}.map-family-tooltip-title{color:#f3f6fb;font-size:.95rem;font-weight:700}.map-family-tooltip-eco{color:#f3f6fb94;margin-top:.15rem;font-size:.68rem}.map-family-tooltip-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;margin:.75rem 0 0;display:grid}.map-family-tooltip-stats div{flex-direction:column;gap:.12rem;display:flex}.map-family-tooltip-stats dt{color:#f3f6fb75;letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:.58rem;font-weight:600}.map-family-tooltip-stats dd{color:#f3f6fb;margin:0;font-size:.78rem;font-weight:700}.map-family-tooltip-action{color:#67b4ff;cursor:pointer;background:#4a9eff1f;border:1px solid #4a9eff73;border-radius:.5rem;margin-top:.75rem;padding:.42rem .7rem;font-size:.76rem;font-weight:600}.map-family-tooltip-action:hover{background:#4a9eff38}.explorer-controls{pointer-events:none;justify-content:center;display:flex;position:static}.explorer-controls-pad{pointer-events:auto;grid-template-areas:".up.""left down right";gap:.45rem;display:grid}.explorer-controls-up{grid-area:up;justify-self:center}.explorer-controls-left{grid-area:left}.explorer-controls-down{grid-area:down}.explorer-controls-right{grid-area:right}.explorer-controls-btn{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:#ffffffe0;cursor:pointer;background:#0f1624b8;border:1px solid #ffffff1a;border-radius:.75rem;place-items:center;width:2.75rem;height:2.75rem;padding:0;font-size:1rem;line-height:1;transition:background .15s,border-color .15s,color .15s;display:grid;box-shadow:0 8px 24px #00000059,inset 0 1px #ffffff0f}.explorer-controls-btn:hover:not(:disabled){color:#fff;background:#18243ae0;border-color:#4a9eff73}.explorer-controls-btn:disabled{cursor:default;opacity:.35}@media (width<=900px){.explorer-controls{width:100%;padding-inline:calc(.65rem + env(safe-area-inset-left,0px)) calc(.65rem + env(safe-area-inset-right,0px))}.explorer-controls-pad{gap:.35rem}.explorer-controls-btn{width:3rem;height:3rem;font-size:1.05rem}.explorer-controls-btn:active:not(:disabled){color:#fff;background:#18243ae0;border-color:#4a9eff73}}.explorer-sidebar{--sidebar-bg:#0c121fd1;--sidebar-border:#ffffff14;--text-primary:#f3f6fb;--text-muted:#f3f6fb85;--accent:var(--explorer-accent);--accent-soft:#4a9eff29;--accent-border:#4a9eff8c;--win-white:#5fd4c7;--win-draw:#ffffff38;--win-black:var(--explorer-accent);border-left:1px solid var(--sidebar-border);background:linear-gradient(180deg, #ffffff08 0%, transparent 18%), var(--sidebar-bg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);width:min(24rem,100vw);height:100%;min-height:0;color:var(--text-primary);flex-direction:column;flex-shrink:0;font-size:.875rem;line-height:1.45;display:flex}.explorer-sidebar-header{border-bottom:1px solid var(--sidebar-border);grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.65rem .75rem;padding:1.15rem 1.25rem 1rem;display:grid}.explorer-sidebar-header-toggle{min-width:0;color:inherit;cursor:default;font:inherit;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:0;display:flex}.explorer-sidebar-header-toggle:disabled{cursor:default}.explorer-sidebar-heading{flex:1;min-width:0}.explorer-sidebar-title-row{align-items:flex-start;gap:.55rem;min-width:0;display:flex}.explorer-eco-badge{color:#f3f6fbb8;letter-spacing:.08em;background:#ffffff0a;border:1px solid #ffffff1a;border-radius:.4rem;flex-shrink:0;margin-top:.2rem;padding:.22rem .42rem;font-size:.64rem;font-weight:700;line-height:1}.explorer-sidebar-heading h1{letter-spacing:-.02em;text-wrap:balance;flex:1;min-width:0;margin:0;font-size:1.2rem;font-weight:600;line-height:1.28}.explorer-sidebar-subtitle{color:var(--text-muted);margin:.35rem 0 0;font-size:.78rem;line-height:1.35}.explorer-main-line-badge{border:1px solid var(--accent-border);background:var(--accent-soft);color:var(--accent);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border-radius:999px;flex-shrink:0;align-self:start;align-items:center;gap:.4rem;margin-top:.12rem;padding:.3rem .55rem;font-size:.62rem;font-weight:700;display:inline-flex}.explorer-preview-badge{color:#67b4ff;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;background:#4a9eff1f;border:1px solid #67b4ff59;border-radius:999px;flex-shrink:0;padding:.18rem .45rem;font-size:.58rem;font-weight:700}.explorer-sidebar-chevron{color:var(--text-muted);flex-shrink:0;margin-top:.35rem;font-size:.9rem;line-height:1;transition:transform .2s}.explorer-sidebar-chevron-open{transform:rotate(180deg)}.explorer-sidebar-summary{display:none}.explorer-main-line-dot{background:currentColor;border-radius:999px;width:.4rem;height:.4rem}.explorer-sidebar-body{flex-direction:column;flex:1;min-height:0;display:flex}.explorer-sidebar-scroll{scrollbar-width:thin;scrollbar-color:#ffffff2e transparent;flex:1;min-height:0;padding:.65rem 1.25rem .85rem;overflow:auto}.explorer-win-rates{border-bottom:1px solid var(--sidebar-border);background:linear-gradient(180deg, #ffffff05 0%, transparent 100%), var(--sidebar-bg);flex-direction:column;flex-shrink:0;gap:.45rem;padding:.85rem 1.25rem .75rem;display:flex}.explorer-sidebar-footer{border-top:1px solid var(--sidebar-border);background:linear-gradient(180deg, transparent 0%, #0c121f8c 24%), var(--sidebar-bg);flex-shrink:0;padding:.85rem 1.25rem 1.35rem}.explorer-sidebar-scroll::-webkit-scrollbar{width:.42rem}.explorer-sidebar-scroll::-webkit-scrollbar-track{background:0 0;margin-block:.15rem}.explorer-sidebar-scroll::-webkit-scrollbar-thumb{background:#ffffff29 padding-box padding-box;border:2px solid #0000;border-radius:999px}.explorer-sidebar-scroll::-webkit-scrollbar-thumb:hover{background:#4a9eff6b padding-box padding-box}.explorer-status,.explorer-error{margin:0 0 .85rem}.explorer-error{color:#ff9d9d}.explorer-move-table-wrap{overflow:visible}.explorer-move-table{border-collapse:collapse;width:100%}.explorer-move-table th{z-index:1;background:var(--sidebar-bg);color:var(--text-muted);letter-spacing:.08em;text-align:left;text-transform:uppercase;border-bottom:1px solid #ffffff0a;padding:0 0 .55rem;font-size:.68rem;font-weight:600;position:sticky;top:0}.explorer-move-table th:nth-child(2),.explorer-move-table th:nth-child(3){width:42%}.explorer-move-table td{vertical-align:middle;padding:.38rem .35rem .38rem 0}.explorer-move-num{width:2.2rem;color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.78rem;position:relative;padding-left:.85rem!important}.explorer-move-dot{background:var(--accent);border-radius:999px;width:.38rem;height:.38rem;position:absolute;top:50%;left:0;transform:translateY(-50%)}.explorer-move-cell{min-height:1.75rem;color:var(--text-primary);border-radius:.45rem;align-items:center;padding:.15rem .45rem;font-size:.92rem;font-weight:500;display:inline-flex}.explorer-move-preview{border:1px solid var(--accent-border);background:var(--accent-soft);color:#fff;box-shadow:0 0 0 1px #4a9eff14}.explorer-move-empty{color:#ffffff2e}.explorer-win-bar{background:#ffffff14;border-radius:999px;height:.42rem;display:flex;overflow:hidden}.explorer-win-bar span{transition:width .2s}.explorer-win-white{background:var(--win-white)}.explorer-win-draw{background:var(--win-draw)}.explorer-win-black{background:var(--win-black)}.explorer-win-legend{color:var(--text-muted);justify-content:space-between;gap:.5rem;font-size:.68rem;display:flex}.explorer-win-legend span{font-variant-numeric:tabular-nums}.explorer-meta{border:1px solid var(--sidebar-border);background:#0000002e;border-radius:.75rem;flex-direction:column;gap:.55rem;padding:.85rem .9rem;display:flex}.explorer-meta-row{color:var(--text-muted);justify-content:space-between;align-items:center;gap:.75rem;font-size:.76rem;display:flex}.explorer-meta-row strong{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:.82rem;font-weight:600}@media (width<=900px){.explorer-sidebar{border-top:1px solid var(--sidebar-border);border-left:none;flex-shrink:0;width:100%;height:auto;max-height:none}.explorer-sidebar-mobile{padding-bottom:env(safe-area-inset-bottom,0px)}.explorer-sidebar-mobile .explorer-sidebar-header{padding:.8rem calc(.9rem + env(safe-area-inset-right,0px)) .7rem calc(.9rem + env(safe-area-inset-left,0px))}.explorer-sidebar-mobile .explorer-sidebar-heading h1{font-size:1rem;line-height:1.3}.explorer-sidebar-mobile .explorer-eco-badge{margin-top:.12rem;font-size:.6rem}.explorer-sidebar-mobile .explorer-sidebar-header-toggle:not(:disabled){cursor:pointer}.explorer-sidebar-mobile .explorer-main-line-badge{display:none}.explorer-sidebar-summary{padding:0 calc(.9rem + env(safe-area-inset-right,0px)) .65rem calc(.9rem + env(safe-area-inset-left,0px));border-bottom:1px solid var(--sidebar-border);justify-content:space-between;align-items:center;gap:.75rem;display:flex}.explorer-sidebar-summary-move{border:1px solid var(--accent-border);background:var(--accent-soft);color:#fff;border-radius:.45rem;padding:.2rem .45rem;font-size:.88rem;font-weight:600}.explorer-sidebar-summary-stat{color:var(--text-muted);white-space:nowrap;font-size:.76rem}.explorer-sidebar-collapsed .explorer-sidebar-body{display:none}.explorer-sidebar-expanded .explorer-sidebar-body{max-height:min(38vh,18rem);display:flex}.explorer-sidebar-expanded .explorer-win-rates{padding:.75rem calc(.9rem + env(safe-area-inset-right,0px)) .65rem calc(.9rem + env(safe-area-inset-left,0px))}.explorer-sidebar-expanded .explorer-sidebar-scroll{padding:.85rem calc(.9rem + env(safe-area-inset-right,0px)) .65rem calc(.9rem + env(safe-area-inset-left,0px))}.explorer-sidebar-expanded .explorer-sidebar-footer{padding:.75rem calc(.9rem + env(safe-area-inset-right,0px)) 1rem calc(.9rem + env(safe-area-inset-left,0px))}.explorer-win-legend{flex-wrap:wrap;row-gap:.25rem}}.app-shell{background:#0a0e17;width:100%;height:100%;display:flex}.app-stage{flex-direction:column;flex:1;min-width:0;height:100%;display:flex;position:relative}.app-stage-board{flex:1;min-height:0;position:relative}.app-stage-board canvas{width:100%!important;height:100%!important}.app-stage-footer{z-index:5;pointer-events:none;flex-direction:column;align-items:center;gap:.75rem;padding:0 0 1.5rem;transition:opacity .2s;display:flex;position:absolute;bottom:0;left:0;right:0}.app-view-indicator{z-index:6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#f3f6fb8c;letter-spacing:.12em;pointer-events:none;background:#0a0e17b8;border:1px solid #ffffff1a;border-radius:999px;padding:.28rem .55rem;font-size:.62rem;font-weight:700;position:absolute;top:.85rem;left:.85rem}@media (width<=900px){.app-shell{flex-direction:column;height:100dvh;overflow:hidden}.app-stage{flex:auto;min-height:0}.app-stage-board{flex:auto;min-height:12rem}.app-stage-footer{padding:.45rem 0 calc(.55rem + env(safe-area-inset-bottom,0px));background:linear-gradient(#0a0e1700 0%,#0a0e17b8 18%,#0a0e17f5 100%);flex-shrink:0;gap:.55rem;position:static}}
