*,:before,:after{box-sizing:border-box;margin:0;padding:0}#root{width:100%;height:100vh}body{margin:0}:root{--bg-primary:#1a1a2e;--bg-secondary:#16213e;--bg-card:#1f2940;--text-primary:#e0e0e0;--text-secondary:#aaa;--accent:#2196f3;--win:#4caf50;--loss:#f44336;--draw:#ffc107;--border:#333}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-primary);color:var(--text-primary);font-family:Segoe UI,system-ui,sans-serif;overflow:hidden}.app{flex-direction:column;height:100vh;display:flex}.app-header{border-bottom:1px solid var(--border);background:linear-gradient(90deg,#0f172aeb,#02151b) 0/calc(100% - 300px) 100% no-repeat,url(/fondo.png) 100%/300px 126px no-repeat}.brand-logo{vertical-align:-.25em;filter:drop-shadow(0 2px 4px #0006);width:auto;height:1.4em;margin-right:6px}.header-top{flex-wrap:wrap;align-items:flex-start;gap:16px;padding:10px 20px;display:flex;position:relative}.header-right{align-items:center;gap:8px;display:flex;position:absolute;top:10px;right:20px}.build-tag{color:var(--text-secondary);opacity:.4;cursor:default;white-space:nowrap;font-size:9px;position:absolute;bottom:4px;right:20px}.app-main{flex:1;display:flex;overflow:hidden}.tree-section{flex:1;position:relative;overflow:hidden}.sidebar{background:var(--bg-secondary);border-left:1px solid var(--border);flex-direction:column;gap:16px;width:400px;min-width:400px;padding:16px;display:flex;overflow-y:auto}.download-panel h2{margin-bottom:2px;font-size:18px}.download-panel .subtitle{color:var(--text-secondary);margin-bottom:8px;font-size:11px}.input-row{align-items:center;gap:8px;display:flex}.linked-username{color:var(--text-primary);background:var(--bg-card);border:1px solid var(--border);border-radius:4px;padding:6px 12px;font-size:14px;font-weight:600}.input-row input{border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);border-radius:4px;width:200px;padding:6px 12px;font-size:14px}.input-row button{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:4px;padding:6px 16px;font-size:13px}.input-row button:disabled{opacity:.5;cursor:not-allowed}.status-area{margin-top:8px}.progress-bar{background:var(--bg-card);border-radius:3px;height:6px;overflow:hidden}.progress-fill{background:var(--accent);height:100%;transition:width .3s}.progress-text{color:var(--text-secondary);margin-top:4px;font-size:11px}.status-msg{color:var(--text-secondary);font-size:11px}.success{color:var(--win);font-size:13px}.error{color:var(--loss);font-size:13px}.cache-info{color:var(--text-secondary);font-size:12px}.cache-section{margin-top:6px}.recent-games{flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;display:flex}.recent-label{color:var(--text-secondary);font-size:10px}.recent-game{background:var(--bg-card);color:var(--text-primary);border-radius:4px;align-items:center;gap:4px;padding:2px 8px;font-size:10px;text-decoration:none;transition:background .15s;display:flex}.recent-game:hover{background:#2196f326}.recent-opp{font-weight:500}.recent-date{color:var(--text-secondary);font-size:9px}.filters{align-items:center;gap:20px;padding-top:11px;display:flex}.filter-group{flex-direction:column;gap:4px;display:flex}.filter-group label{text-transform:uppercase;color:var(--text-secondary);letter-spacing:.5px;font-size:10px}.btn-group{gap:2px;display:flex}.btn-group button{border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);cursor:pointer;padding:4px 10px;font-size:12px;transition:all .2s}.btn-group button:first-child{border-radius:4px 0 0 4px}.btn-group button:last-child{border-radius:0 4px 4px 0}.btn-group button.active{background:var(--accent);border-color:var(--accent);color:#fff}.filter-group select{border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);border-radius:4px;max-width:200px;padding:4px 8px;font-size:12px}.opp-clear{cursor:pointer;color:var(--loss);margin-left:4px;font-size:11px}.filter-group input[type=range]{width:120px;accent-color:var(--accent)}.move-explorer{width:100%;height:100%;padding:16px 24px;overflow-y:auto}.explorer-placeholder{height:100%;color:var(--text-secondary);justify-content:center;align-items:center;font-size:18px;display:flex}.breadcrumb{background:var(--bg-card);border-radius:6px;flex-wrap:wrap;align-items:center;gap:2px;margin-bottom:16px;padding:8px 12px;display:flex}.crumb{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 10px;font-size:12px;transition:all .15s}.crumb:hover{background:var(--bg-primary);color:var(--text-primary)}.crumb.active{background:var(--accent);color:#fff;font-weight:700}.crumb.my-crumb{color:#81d4fa}.crumb.opp-crumb{color:#ef9a9a}.crumb.active.my-crumb,.crumb.active.opp-crumb{color:#fff}.crumb-sep{color:var(--text-secondary);margin:0 2px;font-size:14px}.current-node{border-left:4px solid;border-radius:6px;margin-bottom:16px;padding:12px 16px}.current-node.mine{background:#2196f31a;border-left-color:#2196f3}.current-node.opponent{background:#f4433614;border-left-color:#ef5350}.current-node-info{align-items:center;gap:10px;margin-bottom:6px;display:flex}.current-move{font-size:20px;font-weight:700}.move-num-lg{color:var(--text-secondary);margin-right:2px;font-size:14px;font-weight:400}.move-num{color:var(--text-secondary);margin-right:2px;font-size:10px}.move-label-tag{text-transform:uppercase;letter-spacing:.5px;border-radius:10px;padding:2px 8px;font-size:10px}.current-node.mine .move-label-tag{color:#64b5f6;background:#2196f333}.current-node.opponent .move-label-tag{color:#ef9a9a;background:#f4433626}.white-badge{color:#e0e0e0}.black-badge{color:#888}.current-stats{color:var(--text-secondary);gap:12px;font-size:12px;display:flex}.children-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.children-label{color:var(--text-primary);font-size:13px;font-weight:600}.children-label .hint{color:var(--text-secondary);font-size:11px;font-weight:400}.sort-controls{align-items:center;gap:4px;display:flex}.sort-label{color:var(--text-secondary);margin-right:2px;font-size:10px}.sort-btn{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:4px;padding:3px 8px;font-family:inherit;font-size:10px;transition:all .15s}.sort-btn:hover{background:var(--bg-card);color:var(--text-primary)}.sort-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.color-badge{font-size:14px;line-height:1}.owner-tag{text-transform:uppercase;letter-spacing:.3px;border-radius:8px;padding:1px 6px;font-size:9px;font-weight:600}.tag-mine{color:#64b5f6;background:#2196f333}.tag-opp{color:#ef9a9a;background:#f4433626}.card-left{align-items:center;gap:6px;display:flex}.delta-badge{border-radius:8px;padding:1px 5px;font-size:10px;font-weight:700}.delta-pos{color:#81c784;background:#4caf5033}.delta-neg{color:#ef9a9a;background:#f4433626}.weak-badge{cursor:help;font-size:12px}.weak-card{background:#f443360a;border-left-width:6px!important}.children-grid{flex-direction:column;gap:6px;display:flex}.move-card{background:var(--bg-card);border:1px solid var(--border);cursor:pointer;text-align:left;color:var(--text-primary);font-family:inherit;font-size:inherit;border-left:4px solid;border-radius:6px;flex-direction:column;gap:6px;padding:10px 14px;transition:all .15s;display:flex}.move-card:hover{background:#ffffff0d;transform:translate(4px)}.move-card.my-move{border-left-style:solid}.move-card.opp-move{border-left-style:dashed}.card-header{justify-content:space-between;align-items:center;display:flex}.card-move{font-size:16px;font-weight:700}.card-move-num{color:var(--text-secondary);font-size:11px;font-weight:400}.card-games{color:var(--text-secondary);font-size:11px}.freq-bar-bg{background:var(--bg-primary);border-radius:3px;height:6px;position:relative;overflow:visible}.freq-bar-fill{background:var(--accent);opacity:.5;border-radius:3px;height:100%;transition:width .3s}.freq-label{color:var(--text-secondary);font-size:9px;position:absolute;top:-14px;right:0}.card-stats.prominent .mini-bar{background:var(--bg-primary);border-radius:3px;height:6px;overflow:hidden}.card-stats.prominent .stat-numbers{gap:8px;margin-top:4px;font-size:11px;display:flex}.card-stats.subtle{color:var(--text-secondary);gap:8px;font-size:10px;display:flex}.win-hint{color:#81c784}.loss-hint{color:#ef9a9a}.expand-hint{color:var(--text-secondary);text-align:right;font-size:10px}.kbd-hint{color:var(--accent);opacity:.7;margin-left:8px;font-size:10px;font-weight:400}.kbd-hint-inline{color:var(--text-secondary);border:1px solid var(--border);border-radius:3px;margin-right:4px;padding:2px 6px;font-size:9px}.no-children{text-align:center;color:var(--text-secondary);padding:24px;font-style:italic}.end-of-line{background:var(--bg-card);border:1px dashed var(--border);border-radius:8px;align-items:center;gap:14px;margin-top:8px;padding:16px 20px;display:flex}.end-icon{font-size:32px}.end-title{color:var(--text-primary);margin-bottom:4px;font-size:13px;font-weight:600}.end-result{gap:12px;font-size:12px;display:flex}.end-result .win{color:var(--win)}.end-result .loss{color:var(--loss)}.end-result .draw{color:var(--draw)}.load-deeper-btn{background:var(--bg-primary);border:1px solid var(--accent);color:var(--accent);cursor:pointer;border-radius:4px;margin-top:8px;padding:6px 14px;font-family:inherit;font-size:12px;transition:background .15s}.load-deeper-btn:hover{background:#2196f31a}.move-owner{font-size:12px;font-weight:400}.move-owner.mine{color:#64b5f6}.move-owner.opponent{color:#ef9a9a}.color-legend{background:var(--bg-card);border-radius:6px;padding:10px 12px}.color-legend h4{margin-bottom:6px;font-size:12px}.legend-items{color:var(--text-secondary);flex-wrap:wrap;gap:6px;font-size:10px;display:flex}.legend-items span{align-items:center;gap:4px;display:flex}.legend-items i{border-radius:2px;width:10px;height:10px;display:inline-block}.legend-note{color:var(--text-secondary);margin-top:6px;font-size:9px}.game-list{margin-top:10px}.games-toggle{background:var(--bg-primary);border:1px solid var(--border);width:100%;color:var(--accent);cursor:pointer;text-align:left;border-radius:4px;padding:6px 10px;font-family:inherit;font-size:12px;transition:background .15s}.games-toggle:hover{background:#2196f31a}.games-toggle:disabled{opacity:.5;cursor:wait}.games-table{flex-direction:column;gap:2px;max-height:240px;margin-top:6px;display:flex;overflow-y:auto}.game-row{background:var(--bg-primary);color:var(--text-primary);border-radius:4px;align-items:center;gap:8px;padding:5px 8px;font-size:11px;text-decoration:none;transition:background .15s;display:flex}.game-row:hover{background:#2196f31a}.game-result{flex-shrink:0;font-size:13px}.game-opponent{text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:500;overflow:hidden}.game-color{font-size:13px}.game-color.white{color:#e0e0e0}.game-color.black{color:#888}.game-date{color:var(--text-secondary);white-space:nowrap;font-size:10px}.game-tc{color:var(--text-secondary);text-transform:uppercase;font-size:9px}.game-link{color:var(--accent);font-size:12px}.loading-overlay{z-index:10;color:var(--accent);background:#1a1a2ecc;justify-content:center;align-items:center;font-size:18px;display:flex;position:absolute;inset:0}.chess-board-container{flex-direction:column;align-items:center;gap:4px;display:flex}.fen-display{color:var(--text-secondary);word-break:break-all;font-family:monospace;font-size:9px}.board-hint{color:var(--text-secondary);text-align:center;margin-top:4px;font-size:10px}.node-info{background:var(--bg-card);border-radius:6px;padding:12px}.node-info h3{margin-bottom:8px;font-size:18px}.node-stats p{color:var(--text-secondary);margin-top:6px;font-size:12px}.mini-bar{background:var(--bg-primary);border-radius:4px;height:8px;display:flex;overflow:hidden}.win-bar{background:var(--win)}.draw-bar{background:var(--draw)}.loss-bar{background:var(--loss)}.win{color:var(--win)}.draw{color:var(--draw)}.loss{color:var(--loss)}.stats-panel{background:var(--bg-card);border-radius:6px;max-width:400px;margin:24px auto 0;padding:12px}.stats-panel h3{margin-bottom:10px;font-size:14px}.stats-panel.loading{color:var(--text-secondary);text-align:center;padding:20px}.stat-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.stat{background:var(--bg-primary);border-radius:4px;flex-direction:column;align-items:center;padding:6px;display:flex}.stat-value{font-size:18px;font-weight:700}.stat-value.win{color:var(--win)}.stat-value.loss{color:var(--loss)}.stat-value.draw{color:var(--draw)}.stat-label{color:var(--text-secondary);text-align:center;font-size:10px}.stat-label a{color:var(--accent);text-decoration:none}.color-split{text-align:center;border-radius:4px;height:24px;margin-top:10px;font-size:11px;line-height:24px;display:flex;overflow:hidden}.white-bar{color:#333;background:#ddd}.black-bar{color:#ddd;background:#444}.time-dist{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.time-badge{background:var(--bg-primary);color:var(--text-secondary);border-radius:10px;padding:2px 8px;font-size:11px}@media (width<=900px){.app-main{flex-direction:column}.sidebar{width:100%;min-width:unset;border-left:none;border-top:1px solid var(--border)}.tree-section{min-height:50vh}.app-header{flex-direction:column;align-items:flex-start}}.page-tabs{gap:2px;padding-top:27px;display:flex}.tab{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;padding:6px 16px;font-family:inherit;font-size:13px;transition:all .15s}.tab:first-child{border-radius:6px 0 0 6px}.tab:last-child{border-radius:0 6px 6px 0}.tab.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.tab:hover:not(.active){background:var(--bg-card)}.stats-page-section{flex:1;padding:0;overflow-y:auto}.detailed-stats{max-width:1000px;margin:0 auto;padding:24px 32px}.detailed-stats h2{margin-bottom:16px;font-size:22px}.loading-text{color:var(--text-secondary);text-align:center;padding:48px}.stats-filters{background:var(--bg-card);border-radius:6px;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:24px;padding:12px 16px;display:flex}.filter-summary{color:var(--text-secondary);font-size:13px}.filter-summary strong{color:var(--text-primary)}.filter-active{color:var(--accent);font-size:11px}.pct-hint{color:var(--text-secondary);font-size:9px}.chart-bar-clickable{cursor:pointer;border-radius:4px;transition:background .15s}.chart-bar-clickable:hover{background:#2196f314}.chart-section{margin-bottom:28px}.chart-section h3{color:var(--text-primary);margin-bottom:8px;font-size:15px}.chart-meta{color:var(--text-secondary);margin-bottom:8px;font-size:11px}.chart-bars{flex-direction:column;gap:3px;display:flex}.chart-bar-row{align-items:center;gap:8px;height:22px;display:flex}.chart-label{text-align:right;width:180px;min-width:180px;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.chart-bar-bg{background:var(--bg-card);border-radius:3px;flex:1;height:14px;overflow:hidden}.chart-bar-fill{border-radius:3px;height:100%;transition:width .3s}.chart-value{width:40px;color:var(--text-secondary);text-align:right;font-size:11px}.monthly-chart{align-items:flex-end;gap:2px;height:160px;padding-bottom:4px;display:flex;overflow-x:auto}.monthly-bar{flex-direction:column;flex:1;align-items:center;min-width:18px;display:flex}.monthly-stack{border-radius:2px 2px 0 0;flex-direction:column;width:100%;display:flex;overflow:hidden}.monthly-win{background:#4caf50}.monthly-draw{background:#ffc107}.monthly-loss{background:#f44336}.monthly-count{color:var(--text-secondary);margin-top:2px;font-size:8px}.monthly-wr{color:#81c784;font-size:8px}.monthly-label{color:var(--text-secondary);writing-mode:vertical-rl;height:36px;font-size:7px;transform:rotate(180deg)}.hourly-chart{align-items:flex-end;gap:3px;height:120px;display:flex}.hourly-bar{flex-direction:column;flex:1;align-items:center;display:flex}.hourly-stack{border-radius:2px 2px 0 0;flex-direction:column;width:100%;display:flex;overflow:hidden}.hourly-wr{margin-top:2px;font-size:8px}.hourly-label{color:var(--text-secondary);font-size:9px}.auth-loading{color:#e0e0e0;flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:100vh;display:flex}.spinner{border:4px solid #333;border-top-color:#8bc34a;border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.landing{text-align:center;background:linear-gradient(#0f172a8c,#0f172ad9),url(/fondo.png) 50%/cover no-repeat fixed;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.landing-banner{display:none}.landing-logo{filter:drop-shadow(0 6px 18px #0000008c);width:min(260px,45vw);height:auto;margin-bottom:1.5rem}.landing h1{color:#fff;justify-content:center;align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:3rem;display:flex}.landing h1 .brand-logo{height:1.2em}.landing-tagline{color:#aaa;max-width:500px;margin-bottom:2rem;font-size:1.2rem}.landing-features{text-align:left;flex-direction:column;gap:.75rem;margin-bottom:2.5rem;display:flex}.feature{color:#ccc;align-items:center;gap:.75rem;font-size:1.05rem;display:flex}.sign-in-btn{color:#1a1a1a;cursor:pointer;background:#8bc34a;border:none;border-radius:8px;padding:.75rem 2rem;font-size:1.1rem;font-weight:600;transition:background .2s}.sign-in-btn:hover{background:#9ccc65}.username-setup{justify-content:center;align-items:center;width:100%;min-height:60vh;display:flex}.setup-card{text-align:center;background:#2a2a2a;border-radius:12px;width:100%;max-width:450px;padding:2.5rem}.setup-card h2{color:#fff;margin-bottom:.5rem}.setup-card>p{color:#aaa;margin-bottom:1.5rem}.setup-input-row{gap:.5rem;margin-bottom:.75rem;display:flex}.setup-input-row input{color:#e0e0e0;background:#1a1a1a;border:1px solid #444;border-radius:6px;flex:1;padding:.6rem .8rem;font-size:1rem}.setup-input-row button{color:#1a1a1a;cursor:pointer;white-space:nowrap;background:#8bc34a;border:none;border-radius:6px;padding:.6rem 1.2rem;font-weight:600}.setup-input-row button:disabled{opacity:.5;cursor:not-allowed}.setup-error{color:#f44336;margin-top:.5rem;font-size:.9rem}.setup-hint{color:#666;margin-top:1rem;font-size:.85rem}.pricing-page{color:#e6e6e6;max-width:1100px;margin:0 auto;padding:2rem 1rem}.pricing-header{text-align:center;margin-bottom:2rem}.pricing-header h1{margin:0 0 .5rem;font-size:2.2rem}.pricing-header .subtitle{color:#aaa;margin:0 0 1rem}.current-plan-banner{color:#2ea043;background:#2ea04326;border:1px solid #2ea043;border-radius:8px;align-items:center;gap:.75rem;padding:.6rem 1rem;font-size:.95rem;display:inline-flex}.current-plan-banner .warn{color:#f0883e;font-size:.85rem}.current-plan-banner .link-btn{color:#2ea043;cursor:pointer;background:0 0;border:1px solid #2ea043;border-radius:5px;padding:.25rem .6rem;font-size:.85rem}.current-plan-banner .link-btn:hover{background:#2ea04333}.error-banner{color:#f85149;text-align:center;background:#f8514926;border:1px solid #f85149;border-radius:8px;margin-bottom:1rem;padding:.75rem 1rem}.pricing-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem;display:grid}.plan-card{background:#1a1d24;border:1px solid #30363d;border-radius:12px;flex-direction:column;padding:1.75rem 1.5rem;display:flex;position:relative}.plan-card.highlight{border-color:#2ea043;box-shadow:0 0 0 1px #2ea043}.plan-card .badge{color:#fff;background:#2ea043;border-radius:4px;padding:.2rem .7rem;font-size:.75rem;font-weight:600;position:absolute;top:-12px;right:1rem}.plan-card h2{margin:0 0 1rem;font-size:1.3rem}.plan-card .price{margin-bottom:.5rem}.plan-card .price .amount{font-size:2.4rem;font-weight:700}.plan-card .price .period{color:#888;margin-left:.25rem}.plan-card .tagline{color:#aaa;margin:0 0 1.25rem;font-size:.9rem}.plan-card .features{flex-grow:1;margin:0 0 1.5rem;padding:0;list-style:none}.plan-card .features li{color:#ccc;padding:.35rem 0;font-size:.9rem}.plan-card .upgrade-btn{color:#fff;cursor:pointer;background:#238636;border:none;border-radius:6px;padding:.75rem;font-size:1rem;font-weight:600;transition:background .15s}.plan-card .upgrade-btn:hover:not(:disabled),.plan-card.highlight .upgrade-btn{background:#2ea043}.plan-card .upgrade-btn:disabled{cursor:not-allowed;opacity:.6;background:#444}.fine-print{text-align:center;color:#777;margin-top:2rem;font-size:.8rem}.pro-badge{color:#fff;cursor:pointer;background:linear-gradient(135deg,#f59e0b,#d97706);border-radius:4px;margin-left:6px;padding:2px 6px;font-size:.7rem;font-weight:600;display:inline-block}.pro-badge:hover{opacity:.85}.plan-hint{color:#94a3b8;margin:8px 0 0;font-size:.85rem}.upgrade-link{color:#f59e0b;cursor:pointer;font-weight:600}.upgrade-link:hover{text-decoration:underline}.pro-lock-card{text-align:center;background:#1e293b;border:1px solid #334155;border-radius:12px;max-width:520px;margin:24px auto;padding:32px}.pro-lock-card h2{color:#f1f5f9;margin:0 0 12px}.pro-lock-card p{color:#cbd5e1;margin-bottom:20px}select:disabled{opacity:.55;cursor:not-allowed}.plan-card.current{border-color:#22c55e;box-shadow:0 0 0 1px #22c55e}.badge.current-badge{background:#22c55e}.switch-hint{color:#94a3b8;text-align:center;margin-top:8px;font-size:.75rem}.brand-name{letter-spacing:.01em;align-items:baseline;display:inline-flex}.brand-my{color:#fff;font-weight:400}.brand-chess{color:#fff;font-weight:800}.brand-moves{color:#f5c518;font-weight:800}
