.match-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:0;font-family:Inter,system-ui,sans-serif;color:var(--text-primary);background-color:var(--bg-page);height:calc(100dvh - 3.5rem);max-height:calc(100dvh - 3.5rem);overflow:hidden;align-items:stretch;transition:grid-template-columns .2s ease}.match-layout.is-nav-collapsed{grid-template-columns:56px minmax(0,1fr)}.analysis-nav{display:flex;flex-direction:column;min-height:0;height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;background:var(--bg-surface);border-right:1px solid var(--border-soft);padding:10px 8px 16px;box-sizing:border-box;z-index:4}.analysis-nav-toolbar{display:flex;align-items:center;justify-content:flex-end;margin-bottom:8px;flex-shrink:0}.match-layout.is-nav-collapsed .analysis-nav-toolbar{justify-content:center}.analysis-nav-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:8px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background .15s,color .15s}.analysis-nav-toggle:hover{background:var(--bg-muted);color:var(--text-primary)}.analysis-nav-list{display:flex;flex-direction:column;gap:4px;min-height:0}.analysis-nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:none;border-radius:8px;background:transparent;color:var(--text-secondary);font:inherit;font-size:.9rem;font-weight:600;text-align:left;text-decoration:none;cursor:pointer;transition:background .15s,color .15s;box-sizing:border-box}.analysis-nav-item:hover{background:var(--bg-muted);color:var(--text-primary)}.analysis-nav-item.active{background:var(--accent-muted);color:var(--accent)}.analysis-nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.analysis-nav-group{display:flex;flex-direction:column;gap:2px}.analysis-nav-row{display:flex;align-items:stretch;gap:2px}.analysis-nav-row .analysis-nav-item--parent{flex:1;min-width:0}.analysis-nav-item-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.match-layout.is-nav-collapsed .analysis-nav-item{justify-content:center;padding:10px;gap:0}.match-layout.is-nav-collapsed .analysis-nav-item-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.match-layout.is-nav-collapsed .analysis-nav-row .analysis-nav-item--parent{flex:none;width:100%}.analysis-nav-chevron-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;flex-shrink:0;border:none;border-radius:8px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background .15s,color .15s,transform .15s}.analysis-nav-chevron-btn:hover{background:var(--bg-muted);color:var(--text-primary)}.analysis-nav-chevron-btn.expanded{color:var(--text-primary)}.analysis-nav-chevron-btn.expanded svg{transform:rotate(180deg)}.analysis-nav-chevron-btn svg{transition:transform .15s ease}.analysis-nav-children{display:flex;flex-direction:column;gap:2px;padding:2px 0 4px 8px;margin-left:12px;border-left:1px solid var(--border-soft)}.analysis-nav-item--child{font-size:.82rem;font-weight:500;padding:8px 10px;gap:8px}.analysis-nav-player-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--text-muted)}.analysis-nav-player-dot[data-team="0"]{background:var(--team0)}.analysis-nav-player-dot[data-team="1"]{background:var(--team1)}.analysis-nav-empty{margin:0;padding:8px 10px;font-size:.75rem;color:var(--text-muted);line-height:1.35}.match-content{min-width:0;min-height:0;height:100%;width:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;box-sizing:border-box}.match-content-inner{display:flex;flex-direction:column;gap:24px;padding:24px;max-width:1400px;width:100%;margin-inline:auto;box-sizing:border-box}.match-players-view{display:flex;flex-direction:column;gap:24px}.match-main{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:24px;align-items:stretch}.match-main[hidden]{display:none!important}.match-header{display:flex;justify-content:space-between;align-items:center}.match-title{font-size:1.5rem;font-weight:600;margin:0;color:var(--accent)}.player-column{display:flex;flex-direction:column;gap:12px;min-width:0}.video-container{position:relative;width:100%;min-width:0;background:var(--video-bg);border-radius:12px;overflow:hidden;box-shadow:var(--shadow-lg)}.video-element{width:100%;aspect-ratio:16 / 9;object-fit:contain;background-color:var(--video-bg);outline:none;display:block;cursor:pointer}.video-element--hidden{opacity:0}.video-media-overlay{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.65rem;padding:1rem;background:#0000007a;color:#fff;pointer-events:none;text-align:center}.video-media-overlay--error{pointer-events:auto;background:#000000ad}.video-media-overlay__text{margin:0;max-width:18rem;font-size:.9rem;font-weight:500;line-height:1.35;text-shadow:0 1px 2px rgba(0,0,0,.45)}.video-media-overlay__retry{pointer-events:auto;margin-top:.25rem}.video-media-overlay__bar{width:min(240px,72%);height:4px;margin-top:.15rem;border-radius:999px;background:#ffffff38;overflow:hidden}.video-media-overlay__bar-fill{height:100%;border-radius:inherit;background:#fff;transition:width .2s ease-out}.video-ar-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}.ar-layer-toggles{position:absolute;top:.5rem;right:.5rem;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:.35rem;pointer-events:auto}.ar-layer-toggles>.ui-btn{box-shadow:0 0 0 1px var(--border-button),var(--shadow-minimap)}.ar-layer-toggles>.ui-btn:hover:not(:disabled){box-shadow:0 0 0 1px var(--border-hover),var(--shadow-minimap-active)}.ar-layer-toggles__menu{display:flex;flex-direction:column;gap:.15rem;min-width:11.5rem;padding:.4rem;background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:10px;box-shadow:0 0 0 1px var(--border-button),var(--shadow-lg);animation:ar-layer-menu-in .12s ease-out}@keyframes ar-layer-menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ar-layer-toggles__item{display:flex;align-items:center;gap:.5rem;margin:0;padding:.4rem .5rem;border-radius:6px;font-size:.8rem;font-weight:500;color:var(--text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .1s}.ar-layer-toggles__item:hover:not(.is-disabled){background:var(--bg-hover)}.ar-layer-toggles__item.is-disabled{opacity:.45;cursor:not-allowed}.ar-layer-toggles__item input[type=checkbox]{flex-shrink:0;width:.95rem;height:.95rem;margin:0;accent-color:var(--accent);cursor:inherit}.ar-layer-toggles__item span{line-height:1.25}.video-minimap{position:absolute;z-index:2;pointer-events:auto;border-radius:6px;box-shadow:var(--shadow-minimap);border:1px solid var(--border-button);touch-action:none;-webkit-user-select:none;user-select:none}.video-minimap.is-dragging{border-color:var(--team0-border-strong);box-shadow:var(--shadow-minimap-active)}.video-minimap-body{display:block;width:100%;height:100%;cursor:grab;border-radius:6px;overflow:hidden}.video-minimap.is-moving .video-minimap-body{cursor:grabbing}.video-minimap-canvas{display:block;width:100%;height:100%;vertical-align:top;pointer-events:none}.video-minimap-handle{position:absolute;z-index:3;background:transparent;box-shadow:none}.video-minimap-handle:hover{background:var(--team0-soft)}.video-minimap.is-resizing .video-minimap-handle{background:transparent}.video-minimap-handle--n{top:-2px;left:10px;right:10px;height:8px;cursor:ns-resize}.video-minimap-handle--s{bottom:-2px;left:10px;right:10px;height:8px;cursor:ns-resize}.video-minimap-handle--e{top:10px;right:-2px;bottom:10px;width:8px;cursor:ew-resize}.video-minimap-handle--w{top:10px;left:-2px;bottom:10px;width:8px;cursor:ew-resize}.video-minimap-handle--nw{top:-3px;left:-3px;width:14px;height:14px;cursor:nwse-resize;z-index:4}.video-minimap-handle--ne{top:-3px;right:-3px;width:14px;height:14px;cursor:nesw-resize;z-index:4}.video-minimap-handle--sw{bottom:-3px;left:-3px;width:14px;height:14px;cursor:nesw-resize;z-index:4}.video-minimap-handle--se{bottom:-3px;right:-3px;width:14px;height:14px;cursor:nwse-resize;z-index:4}.player-timeline{display:flex;flex-direction:column;gap:10px;padding:12px 14px 14px;background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-timeline)}.timeline-track.is-disabled,.timeline-overview.is-disabled{cursor:not-allowed}.timeline-zoom-bar{display:flex;justify-content:flex-end;align-items:center;gap:12px;flex-wrap:wrap}.zoom-controls{display:inline-flex;align-items:center;gap:6px}.zoom-slider{width:100px;accent-color:var(--accent);cursor:pointer}.zoom-level-label{font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text-primary);min-width:2.75rem;text-align:right}.zoom-meta{display:inline-flex;align-items:center;gap:8px}.timeline-row,.timeline-overview-row{display:grid;grid-template-columns:72px 1fr;align-items:center;gap:10px}.timeline-overview{position:relative;height:16px;border-radius:4px;cursor:grab;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none}.timeline-overview:active{cursor:grabbing}.timeline-overview-bg{position:absolute;inset:0;background:var(--bg-muted);border-radius:4px}.timeline-overview-bg--unloaded{background:var(--bg-muted);opacity:.85}.timeline-overview-loaded{position:absolute;top:0;bottom:0;left:0;background:var(--bg-hover);border-radius:4px 0 0 4px;pointer-events:none;z-index:0;transition:width .15s ease-out}.timeline-overview.is-loading .timeline-overview-loaded{box-shadow:1px 0 0 var(--border)}.timeline-overview-mark{position:absolute;top:4px;bottom:4px;opacity:.55;border-radius:1px;pointer-events:none;z-index:1}.timeline-overview-mark.is-unloaded{opacity:.22;filter:grayscale(.35)}.timeline-overview-mark.team-0{background:var(--team0)}.timeline-overview-mark.team-1{background:var(--team1)}.timeline-overview-mark.team-unknown{background:var(--unknown)}.timeline-overview-window{position:absolute;top:0;bottom:0;border:1.5px solid var(--accent-2-window-border);background:var(--accent-2-window);border-radius:3px;pointer-events:none;box-sizing:border-box;z-index:2}.timeline-overview-playhead{position:absolute;top:0;bottom:0;width:2px;background:var(--playhead);transform:translate(-50%);pointer-events:none;z-index:3;box-shadow:0 0 4px var(--playhead-glow-sm)}.timeline-row-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary)}.timeline-track{position:relative;height:22px;border-radius:6px;cursor:pointer;overflow:hidden}.timeline-track-shots{height:18px}.timeline-track-bg{position:absolute;inset:0;background:var(--bg-hover);border-radius:6px}.timeline-track-bg--unloaded{background:var(--bg-muted);opacity:.9}.timeline-track-loaded{position:absolute;top:0;bottom:0;background:var(--bg-hover);pointer-events:none;z-index:0;border-radius:2px;transition:left .15s ease-out,width .15s ease-out}.timeline-track.is-loading .timeline-track-loaded{box-shadow:1px 0 0 var(--border)}.timeline-rally-band{position:absolute;top:3px;bottom:3px;border:none;border-radius:3px;padding:0;opacity:.75;cursor:pointer;z-index:2;transition:opacity .15s,transform .15s,filter .15s}.timeline-rally-band:hover:not(:disabled){opacity:1;transform:scaleY(1.15)}.timeline-rally-band.active{opacity:1;box-shadow:0 0 0 1px var(--active-ring);z-index:3}.timeline-rally-band.is-unloaded{opacity:.35;filter:grayscale(.85) brightness(1.15);cursor:not-allowed}.timeline-rally-band.is-unloaded:hover{transform:none}.timeline-rally-band.team-0{background-color:var(--team0)}.timeline-rally-band.team-1{background-color:var(--team1)}.timeline-rally-band.team-unknown{background-color:var(--unknown)}.timeline-shot-tick{position:absolute;top:2px;bottom:2px;border:none;border-radius:2px;padding:0;background:var(--accent-2-tick);cursor:pointer;z-index:2;min-width:2px;transition:background .15s,box-shadow .15s,filter .15s}.timeline-shot-tick.quality-excellent{background:var(--quality-excellent)}.timeline-shot-tick.quality-good{background:var(--quality-good)}.timeline-shot-tick.quality-average{background:var(--quality-average)}.timeline-shot-tick.quality-fair{background:var(--quality-fair)}.timeline-shot-tick.quality-poor{background:var(--quality-poor)}.timeline-shot-tick.is-unloaded{opacity:.35;filter:grayscale(.85) brightness(1.15);cursor:not-allowed}.timeline-shot-tick:hover:not(:disabled):not(.is-unloaded){filter:brightness(1.15);z-index:4}.timeline-shot-tick.is-unloaded:hover{filter:grayscale(.85) brightness(1.15)}.timeline-shot-tick.active{box-shadow:0 0 0 1px var(--playhead),0 0 8px var(--playhead-glow);z-index:5;filter:brightness(1.2)}.timeline-seek-range{position:absolute;top:0;bottom:0;background:var(--accent-2-range);border:1px solid var(--accent-2-range-border);border-radius:4px;pointer-events:none;z-index:1}.timeline-playhead{position:absolute;top:0;bottom:0;width:2px;background:var(--playhead);transform:translate(-50%);pointer-events:none;z-index:10;box-shadow:0 0 6px var(--playhead-glow)}.loop-control{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}.loop-control-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary);margin-right:2px}.team-0{background-color:var(--team0)}.team-1{background-color:var(--team1)}.team-unknown{background-color:var(--unknown)}.control-bar-left{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;min-height:36px}.control-bar-left .time-display{justify-self:start}.control-bar-transport{display:inline-flex;align-items:center;justify-content:center;gap:8px}.control-bar-top-right{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-height:1px}.control-bar{display:flex;flex-direction:column;align-items:stretch;gap:10px;margin-top:2px}.control-bar-right{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.time-display{font-family:ui-monospace,monospace;font-size:.85rem;color:var(--text-time);font-variant-numeric:tabular-nums;white-space:nowrap}.speed-control{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--text-secondary)}.speed-label{text-transform:uppercase;letter-spacing:.03em;font-size:.7rem;font-weight:600}.speed-control .ui-select{width:auto;min-width:5rem}.rally-sidebar{display:flex;flex-direction:column;background:var(--bg-surface);border-radius:12px;border:1px solid var(--border-soft);overflow:hidden;box-shadow:var(--shadow-md);height:0;min-height:100%;position:relative}.sidebar-tabs{display:flex;flex-shrink:0;border-bottom:1px solid var(--border-soft);background:var(--bg-elevated)}.sidebar-tab{flex:1;padding:12px 8px;border:none;background:transparent;color:var(--text-secondary);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;transition:color .15s,background .15s;border-bottom:2px solid transparent}.sidebar-tab:hover{color:var(--text-primary);background:var(--bg-muted)}.sidebar-tab.active{color:var(--accent);border-bottom-color:var(--accent);background:var(--accent-muted)}.sidebar-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.sidebar-body[hidden]{display:none!important}.rally-list-panel{display:flex;flex-direction:column;min-height:0;flex:1;overflow:hidden}.rally-filter-block{display:flex;flex-direction:column;gap:6px}.rally-filters-divider{height:1px;margin:4px 0 2px;background:var(--border-soft);border:none}.rally-winner-chips{display:flex;flex-wrap:wrap;gap:6px}.rally-winner-chip{font:inherit;font-size:.75rem;font-weight:600;padding:5px 10px;border-radius:999px;border:1px solid var(--border-medium);background:var(--bg-muted);color:var(--text-soft);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.rally-winner-chip:hover{background:var(--bg-button);color:var(--text-primary);border-color:var(--border-hover)}.rally-winner-chip.active{background:var(--accent-muted);border-color:var(--accent-border);color:var(--accent)}.rally-winner-chip.team-0{border-color:var(--team0-border);color:var(--team0)}.rally-winner-chip.team-0:hover{background:var(--team0-soft)}.rally-winner-chip.team-0.active{background:var(--team0-soft);border-color:var(--team0-border-strong);color:var(--team0)}.rally-winner-chip.team-1{border-color:var(--team1-border);color:var(--team1)}.rally-winner-chip.team-1:hover{background:var(--team1-soft)}.rally-winner-chip.team-1.active{background:var(--team1-soft);border-color:var(--team1-border-strong);color:var(--team1)}.rally-length-chips{display:flex;flex-wrap:wrap;gap:6px}.rally-length-chip{font:inherit;font-size:.72rem;font-weight:600;padding:5px 10px;border-radius:999px;border:1px solid var(--border-medium);background:var(--bg-muted);color:var(--text-soft);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.rally-length-chip:hover{background:var(--bg-button);color:var(--text-primary);border-color:var(--border-hover)}.rally-length-chip.tone-short{border-color:color-mix(in srgb,var(--rally-len-short) 45%,transparent);color:var(--rally-len-short)}.rally-length-chip.tone-short:hover,.rally-length-chip.tone-short.active{background:var(--rally-len-short-soft);border-color:var(--rally-len-short);color:var(--rally-len-short)}.rally-length-chip.tone-medium{border-color:color-mix(in srgb,var(--rally-len-medium) 45%,transparent);color:var(--rally-len-medium)}.rally-length-chip.tone-medium:hover,.rally-length-chip.tone-medium.active{background:var(--rally-len-medium-soft);border-color:var(--rally-len-medium);color:var(--rally-len-medium)}.rally-length-chip.tone-long{border-color:color-mix(in srgb,var(--rally-len-long) 45%,transparent);color:var(--rally-len-long)}.rally-length-chip.tone-long:hover,.rally-length-chip.tone-long.active{background:var(--rally-len-long-soft);border-color:var(--rally-len-long);color:var(--rally-len-long)}.filter-swatch-label{display:inline-flex;align-items:center;gap:.4rem;min-width:0;max-width:100%}.filter-swatch-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;box-shadow:0 0 0 1px color-mix(in srgb,currentColor 15%,transparent)}.filter-swatch-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rally-sort-hint{margin:0;font-size:.7rem;color:var(--text-muted);font-style:italic}.rally-shot-filters-section{flex-shrink:0;border-bottom:1px solid var(--border-soft);background:var(--bg-surface)}.rally-shot-filters-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:none;background:transparent;color:var(--text-secondary);font:inherit;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;cursor:pointer;text-align:left;transition:color .15s,background .15s}.rally-shot-filters-toggle:hover{color:var(--text-primary);background:var(--bg-muted)}.rally-shot-filters-toggle.active{color:var(--accent)}.rally-shot-filters-toggle span:first-child{flex:1}.rally-shot-filters-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0}.rally-shot-filters-chevron{flex-shrink:0;transition:transform .15s ease}.rally-shot-filters-chevron.open{transform:rotate(180deg)}.rally-shot-filters{border-bottom:none}.rally-list-toolbar{display:flex;gap:8px;flex-shrink:0;padding:10px 12px 8px;border-bottom:1px solid var(--border);background:var(--bg-surface);z-index:1}.rally-expand-toolbar-btn{flex:1;min-width:0;display:inline-flex;align-items:center;justify-content:center;font:inherit;font-size:.75rem;font-weight:600;line-height:1.2;padding:7px 10px;background:var(--bg-muted);border:1px solid var(--border-medium);border-radius:6px;color:var(--text-soft);cursor:pointer;white-space:nowrap;transition:background .15s ease,color .15s ease,border-color .15s ease}.rally-expand-toolbar-btn:hover:not(:disabled){background:var(--bg-button);border-color:var(--border-hover);color:var(--text-primary)}.rally-expand-toolbar-btn:disabled{opacity:.35;cursor:not-allowed}.rally-list{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:10px 12px 12px;display:flex;flex-direction:column;gap:8px}.rally-group{display:flex;flex-direction:column;gap:6px;flex-shrink:0}.rally-item-row{display:flex;align-items:stretch;gap:0;background:var(--bg-muted);border:1px solid var(--border-soft);border-radius:8px;position:relative;overflow:hidden;transition:all .2s ease}.rally-item-row:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:transparent;z-index:1}.rally-item-row.team-0:before{background:var(--team0)}.rally-item-row.team-1:before{background:var(--team1)}.rally-item-row:hover{background:var(--bg-hover)}.rally-item-row.active{background:var(--accent-active-bg);border-color:var(--accent-border)}.rally-item{flex:1;min-width:0;background:transparent;border:none;border-radius:0;padding:12px 12px 12px 8px;cursor:pointer;transition:none;position:relative;overflow:hidden;text-align:left;color:inherit;font:inherit}.rally-item:hover{background:transparent}.rally-expand-btn{flex-shrink:0;width:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:0;transition:color .15s ease,background .15s ease;position:relative;z-index:2}.rally-expand-btn:hover{color:var(--text-primary);background:var(--border)}.rally-expand-btn.expanded{color:var(--accent)}.rally-expand-chevron{display:inline-block;font-size:.85rem;line-height:1;transition:transform .15s ease}.rally-expand-btn.expanded .rally-expand-chevron{transform:rotate(90deg)}.rally-shots{display:flex;flex-direction:column;gap:4px;margin-left:18px;padding:4px 0 4px 10px;border-left:2px solid var(--border-medium)}.rally-shots--team-0{border-left-color:var(--team0)}.rally-shots--team-1{border-left-color:var(--team1)}.rally-shots-empty{margin:0;padding:8px 4px;font-size:.8rem;color:var(--text-secondary)}.rally-shot-item{padding:8px 10px;border-radius:6px}.rally-item-header{display:flex;justify-content:space-between;margin-bottom:4px;font-size:.9rem;font-weight:500;gap:8px}.rally-item-details{font-size:.8rem;color:var(--text-secondary);display:flex;justify-content:space-between;gap:8px}.shot-explorer{display:flex;flex-direction:column;min-height:0;flex:1;overflow:hidden}.shot-filters{flex-shrink:0;padding:10px 12px;border-bottom:1px solid var(--border-soft);display:flex;flex-direction:column;gap:6px;background:var(--bg-inset)}.shot-filter-row{display:grid;grid-template-columns:72px 1fr;align-items:center;gap:8px}.shot-filter-label{font-size:.7rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em}.shot-clear-filters{align-self:flex-start;margin-top:2px}.shot-list-meta{flex-shrink:0;padding:6px 12px;font-size:.75rem;color:var(--text-muted)}.shot-list{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 12px 12px;display:flex;flex-direction:column;gap:6px}.shot-list-empty{padding:24px 8px}.shot-item{background:var(--bg-muted);border:1px solid var(--border-soft);border-radius:8px;padding:10px 12px;cursor:pointer;transition:all .15s ease;width:100%;text-align:left;color:inherit;font:inherit;flex-shrink:0}.shot-item:hover{background:var(--bg-hover)}.shot-item.active{background:var(--accent-2-soft);border-color:var(--accent-2-border)}.shot-item-header{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}.shot-type-badge{font-size:.8rem;font-weight:600;color:var(--text-primary)}.shot-quality-badge{display:inline-flex;align-items:center;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:2px 6px;border-radius:4px;background:var(--bg-hover);color:var(--text-subtle);border:1px solid transparent;box-sizing:border-box}.shot-quality-badge.quality-excellent{color:var(--quality-excellent);background:var(--quality-excellent-soft);border:1px solid var(--quality-excellent-border)}.shot-quality-badge.quality-good{color:var(--quality-good);background:var(--quality-good-soft);border:1px solid var(--quality-good-border)}.shot-quality-badge.quality-average{color:var(--quality-average);background:var(--quality-average-soft);border:1px solid var(--quality-average-border)}.shot-quality-badge.quality-fair{color:var(--quality-fair);background:var(--quality-fair-soft);border:1px solid var(--quality-fair-border)}.shot-quality-badge.quality-poor{color:var(--quality-poor);background:var(--quality-poor-soft);border:1px solid var(--quality-poor-border)}.shot-item-details{font-size:.75rem;color:var(--text-secondary);display:flex;justify-content:space-between;gap:8px}.section-heading{margin:0;font-size:1.1rem;font-weight:600;color:var(--text-primary)}.player-cards-section{display:flex;flex-direction:column;gap:4px}.player-cards-heading{margin-bottom:12px}.player-cards-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.player-card{display:flex;flex-direction:column;gap:14px;background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:16px;box-shadow:var(--shadow-sm);text-align:left;color:inherit;font:inherit;position:relative;overflow:hidden}.player-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:transparent}.player-card--team-0:before{background:var(--team0)}.player-card--team-1:before{background:var(--team1)}.player-card--team-unknown:before{background:var(--unknown)}.player-card-top{display:flex;align-items:center;gap:12px}.player-avatar{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700;flex-shrink:0;background:var(--bg-hover);color:var(--text-primary);border:2px solid var(--border-medium)}.player-avatar--team-0{border-color:var(--team0-border-strong);background:var(--team0);color:#fff}.player-avatar--team-0.player-avatar--partner{background:var(--team0-soft);color:color-mix(in srgb,var(--team0) 72%,#0f172a);border-color:var(--team0-border)}.player-avatar--team-1{border-color:var(--team1-border-strong);background:var(--team1);color:#fff}.player-avatar--team-1.player-avatar--partner{background:var(--team1-soft);color:color-mix(in srgb,var(--team1) 78%,#0f172a);border-color:var(--team1-border)}.player-avatar--team-unknown{border-color:color-mix(in srgb,var(--unknown) 55%,transparent);background:var(--unknown-soft);color:var(--unknown)}.player-card-identity{flex:1;min-width:0}.player-card-name{font-weight:600;font-size:.95rem;color:var(--text-heading);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-card-meta{display:flex;align-items:center;gap:8px;margin-top:4px;font-size:.75rem;color:var(--text-secondary)}.player-team-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:.7rem;font-weight:600;letter-spacing:.02em;border:1px solid var(--border);background:var(--bg-hover);color:var(--text-secondary)}.player-team-badge--team-0{color:var(--team0);background:color-mix(in srgb,var(--team0) 16%,transparent);border-color:var(--team0-border-strong)}.player-team-badge--team-1{color:var(--team1);background:color-mix(in srgb,var(--team1) 16%,transparent);border-color:var(--team1-border-strong)}.player-team-badge--team-unknown{color:var(--unknown);background:var(--unknown-soft);border-color:color-mix(in srgb,var(--unknown) 40%,transparent)}.player-overall{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0}.player-overall-value{font-size:1.5rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1;color:var(--accent)}.player-overall-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-top:2px}.player-skills{display:flex;flex-direction:column;gap:6px}.skill-bar-row{display:grid;grid-template-columns:72px 1fr 28px;align-items:center;gap:8px}.skill-bar-label{font-size:.7rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.skill-bar-track{height:6px;border-radius:999px;background:var(--bg-hover);overflow:hidden}.skill-bar-fill{height:100%;border-radius:999px;background:var(--team0);min-width:0;transition:width .25s ease}.player-card--team-0 .skill-bar-fill{background:var(--team0)}.player-card--team-0.player-card--partner .skill-bar-fill{background:var(--team0-soft)}.player-card--team-1 .skill-bar-fill{background:var(--team1)}.player-card--team-1.player-card--partner .skill-bar-fill{background:var(--team1-soft)}.player-card--team-unknown .skill-bar-fill{background:var(--unknown)}.skill-bar-value{font-size:.75rem;font-variant-numeric:tabular-nums;color:var(--text-time);text-align:right}.player-mini-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding-top:4px;border-top:1px solid var(--border-soft)}.player-mini-stat{display:flex;flex-direction:column;gap:2px}.player-mini-stat-value{font-size:.9rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text-primary)}.player-mini-stat-label{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.coach-section{display:flex;flex-direction:column;gap:12px}.coach-heading{margin-bottom:4px}.coach-top-tips{display:flex;flex-direction:column;gap:8px}.coach-top-tips-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary)}.coach-top-tips-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.coach-top-tip{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:var(--bg-surface);color:inherit;font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}.coach-top-tip:hover{background:var(--bg-surface-hover);border-color:var(--border-strong)}.coach-top-tip.tone-improve{border-color:var(--danger-border);background:linear-gradient(145deg,var(--danger-soft),var(--bg-surface) 70%)}.coach-top-tip.tone-strength{border-color:var(--success-border);background:linear-gradient(145deg,var(--success-soft),var(--bg-surface) 70%)}.coach-top-tip-player{font-size:.7rem;color:var(--text-secondary);font-weight:500}.coach-top-tip-title{font-size:.9rem;font-weight:600;color:var(--text-primary)}.coach-top-tip-value{font-size:1.25rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--accent)}.coach-player-tabs{display:flex;flex-wrap:wrap;gap:8px}.coach-player-tab{padding:8px 14px;border-radius:999px;border:1px solid var(--border);background:var(--bg-muted);color:var(--text-secondary);font:inherit;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s ease}.coach-player-tab:hover{color:var(--text-primary);border-color:var(--border-strong)}.coach-player-tab.active{color:var(--accent);border-color:var(--accent-chip-border);background:var(--accent-soft)}.coach-advice-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.coach-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow-sm);border-left:4px solid var(--border-strong)}.coach-card.tone-improve{border-left-color:var(--team1)}.coach-card.tone-strength{border-left-color:var(--success)}.coach-card.tone-neutral{border-left-color:var(--accent)}.coach-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.coach-card-title{margin:0;font-size:.95rem;font-weight:600;color:var(--text-primary);line-height:1.3}.coach-tone-badge{flex-shrink:0;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:3px 8px;border-radius:999px;background:var(--bg-hover);color:var(--text-subtle)}.coach-tone-badge.tone-improve{color:var(--team1);background:var(--danger-soft)}.coach-tone-badge.tone-strength{color:var(--success);background:var(--success-soft)}.coach-tone-badge.tone-neutral{color:var(--accent);background:var(--accent-soft)}.coach-card-body{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}.coach-metric-value{font-size:1.75rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text-heading);line-height:1}.coach-metric-meta{display:flex;flex-direction:column;gap:2px;font-size:.75rem;color:var(--text-secondary)}.coach-card-blurb{margin:0;font-size:.85rem;color:var(--text-subtle);line-height:1.45}.match-stats{display:flex;flex-direction:column;gap:20px}.match-header-meta{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.match-final-score{font-size:1.25rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.02em;padding:6px 14px;border-radius:999px;background:var(--accent-soft);border:1px solid var(--accent-border);color:var(--text-primary)}.kpi-grid{display:flex;flex-wrap:wrap;gap:12px;width:100%}.kpi-tile{flex:1 1 0;min-width:120px;background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow-sm);box-sizing:border-box}.kpi-tile-accent{border-color:var(--accent-border);background:linear-gradient(145deg,var(--accent-soft),var(--bg-surface) 60%)}.kpi-label{font-size:.75rem;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.kpi-value{font-size:1.35rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text-heading);line-height:1.2}.stats-charts{display:grid;grid-template-columns:1fr 1fr;gap:16px;width:100%;max-width:100%;min-width:0;box-sizing:border-box}.match-stats:has(.stats-charts):not(:has(.kpi-grid)) .stats-charts,.match-stats .stats-charts:only-child{margin-top:0}.match-stats:has(.kpi-grid)+.stats-charts,.match-stats .kpi-grid+.stats-charts{margin-top:0}.match-stats{display:flex;flex-direction:column;gap:16px}.player-cards-grid--single{grid-template-columns:minmax(0,420px)}.player-detail{display:flex;flex-direction:column;gap:20px}.player-hero{display:grid;grid-template-columns:minmax(240px,1fr) minmax(280px,1.15fr);gap:24px;padding:20px 22px;background:var(--bg-surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.player-hero:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--border-strong)}.player-hero--team-0:before{background:var(--team0)}.player-hero--team-1:before{background:var(--team1)}.player-hero--team-unknown:before{background:var(--unknown)}.player-hero-identity{display:flex;gap:16px;align-items:flex-start;min-width:0}.player-avatar--lg{width:72px;height:72px;font-size:1.25rem}.player-hero-text{display:flex;flex-direction:column;gap:8px;min-width:0;flex:1}.player-hero-name{margin:0;font-size:1.35rem;font-weight:700;color:var(--text-heading);line-height:1.2}.player-hero-overall{display:flex;align-items:baseline;gap:10px;margin-top:4px}.player-hero-overall-value{font-size:2.5rem;font-weight:800;font-variant-numeric:tabular-nums;line-height:1;color:var(--accent);letter-spacing:-.02em}.player-hero-overall-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:600}.player-mini-stats--hero{margin-top:8px;grid-template-columns:repeat(2,minmax(0,1fr));border-top:none;padding-top:0;gap:10px 14px}.player-hero-chart{display:flex;flex-direction:column;gap:8px;min-height:280px}.player-block-title{margin:0;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.skill-polar-wrap{display:grid;grid-template-columns:minmax(200px,1fr) minmax(140px,.85fr);gap:12px 16px;align-items:center;flex:1;min-height:240px}.skill-polar-chart{position:relative;width:100%;height:260px;min-height:220px}.skill-polar-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;gap:2px}.skill-polar-center-value{font-size:1.75rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--text-heading);line-height:1}.skill-polar-center-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:600}.skill-polar-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.skill-polar-legend li{display:grid;grid-template-columns:12px 1fr auto;align-items:center;gap:8px;font-size:.8rem}.skill-polar-swatch{width:12px;height:12px;border-radius:3px;flex-shrink:0}.skill-polar-legend-label{color:var(--text-secondary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skill-polar-legend-value{font-weight:700;font-variant-numeric:tabular-nums;color:var(--text-primary)}.player-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.player-panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow-sm);min-width:0}.player-panel--wide{grid-column:1 / -1}.stacked-metric{display:flex;flex-direction:column;gap:12px}.stacked-bar{display:flex;height:36px;border-radius:10px;overflow:hidden;background:var(--bg-hover)}.stacked-bar-seg{display:flex;align-items:center;justify-content:center;min-width:0;transition:width .25s ease}.stacked-bar-seg-label{font-size:.7rem;font-weight:700;color:var(--text-on-accent, #0b1220);white-space:nowrap;padding:0 4px}.stacked-legend{display:flex;flex-wrap:wrap;gap:10px 16px}.stacked-legend-item{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;color:var(--text-secondary)}.stacked-legend-item strong{color:var(--text-primary);font-variant-numeric:tabular-nums}.stacked-swatch{width:10px;height:10px;border-radius:3px;flex-shrink:0}.depth-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.depth-block{display:flex;flex-direction:column;gap:10px;min-width:0}.depth-block-title{font-size:.85rem;font-weight:600;color:var(--text-primary)}.depth-block--donut{gap:12px}.depth-donut-wrap{display:grid;grid-template-columns:minmax(140px,1fr) minmax(120px,.9fr);gap:12px 16px;align-items:center}.depth-donut-chart{position:relative;width:100%;height:180px;min-height:160px}.depth-donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;gap:2px}.depth-donut-center-value{font-size:1.15rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--text-heading);line-height:1}.depth-donut-center-label{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);max-width:72px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.depth-donut-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}.depth-donut-legend li{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:8px;font-size:.78rem}.depth-donut-legend-label{color:var(--text-secondary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.depth-donut-legend-value{font-weight:700;font-variant-numeric:tabular-nums;color:var(--text-primary)}.coach-section--compact{background:var(--bg-surface);border:1px solid var(--border);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow-sm)}.coach-compact-list{display:flex;flex-direction:column;gap:6px}.coach-compact-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;background:var(--bg-muted);border:1px solid var(--border-soft)}.coach-compact-row.tone-improve{border-color:var(--danger-border, rgba(245, 87, 108, .35));background:linear-gradient(90deg,var(--danger-soft, rgba(245, 87, 108, .1)),var(--bg-muted) 55%)}.coach-compact-row.tone-strength{border-color:var(--success-border, rgba(46, 229, 154, .35));background:linear-gradient(90deg,var(--success-soft, rgba(46, 229, 154, .1)),var(--bg-muted) 55%)}.coach-tone-dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}.coach-tone-dot.tone-improve{background:var(--team1, #f5576c)}.coach-tone-dot.tone-strength{background:var(--success, #2ee59a)}.coach-tone-dot.tone-neutral{background:var(--accent)}.coach-compact-main{display:flex;flex-direction:column;gap:2px;min-width:0}.coach-compact-title{font-size:.88rem;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.coach-compact-tone{font-size:.7rem;font-weight:500;color:var(--text-muted)}.coach-compact-tone.tone-improve{color:var(--team1, #f5576c)}.coach-compact-tone.tone-strength{color:var(--success, #2ee59a)}.coach-compact-value{font-size:1.05rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text-heading)}@media(max-width:900px){.player-hero,.skill-polar-wrap{grid-template-columns:1fr}.skill-polar-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px}.player-detail-grid,.depth-pair,.depth-donut-wrap{grid-template-columns:1fr}.depth-donut-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px}}.highlights-panel{display:flex;flex-direction:column;min-height:0;flex:1;overflow:hidden}.highlights-list{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}.highlight-kind-badge{display:inline-flex;align-items:center;font-size:.7rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;padding:2px 8px;border-radius:999px;background:var(--accent-muted);color:var(--accent)}.highlight-kind-badge.kind-longest_rally{background:var(--team0-soft);color:var(--team0)}.highlight-kind-badge.kind-long_rally{background:var(--unknown-soft);color:var(--unknown)}.highlight-kind-badge.kind-excellent_shot{background:var(--accent-muted);color:var(--accent)}.highlight-kind-badge.kind-smash{background:var(--team1-soft);color:var(--team1)}.shot-item-time{font-size:.75rem;font-variant-numeric:tabular-nums;color:var(--text-muted)}.rally-shot-filters{flex-shrink:0;border-bottom:1px solid var(--border)}.stats-chart-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:16px 16px 12px;box-shadow:var(--shadow-sm);min-width:0;max-width:100%;box-sizing:border-box}.stats-chart-title{margin:0 0 4px;font-size:.95rem;font-weight:600;color:var(--text-primary)}.stats-chart-hint{margin:0 0 8px;font-size:.75rem;color:var(--text-muted);line-height:1.35}.stats-chart-body{width:100%;min-height:260px}.stats-empty{color:var(--text-muted);font-size:.9rem;padding:48px 0;text-align:center}.stats-legend-row{display:flex;gap:16px;margin-top:4px;font-size:.75rem;color:var(--text-secondary)}.stats-legend-item{display:inline-flex;align-items:center;gap:6px}.stats-swatch{display:inline-block;width:10px;height:10px;border-radius:2px}.stats-swatch.team-0{background:var(--team0)}.stats-swatch.team-1{background:var(--team1)}.stats-tooltip{background:var(--bg-page);border:1px solid var(--border-strong);border-radius:8px;padding:10px 12px;font-size:.8rem;color:var(--text-primary);box-shadow:var(--shadow-tooltip)}.stats-tooltip-title{font-weight:600;margin-bottom:4px;color:var(--text-subtle)}.heatmap-section{display:flex;flex-direction:column;gap:12px}.heatmap-heading{margin-bottom:4px}.heatmap-chips{display:flex;flex-wrap:wrap;gap:8px}.heatmap-chip{padding:6px 14px;border-radius:999px;border:1px solid var(--border-strong);background:var(--bg-surface);color:var(--text-subtle);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.heatmap-chip:hover{border-color:var(--accent-chip-border);color:var(--text-primary)}.heatmap-chip.active{background:var(--accent-chip-bg);border-color:var(--accent-chip-border-active);color:var(--text-primary)}.heatmap-body{display:flex;flex-direction:column;align-items:flex-start;gap:10px}.heatmap-canvas{display:block;width:100%;max-width:560px;height:auto;border-radius:10px;border:1px solid var(--bg-hover);box-shadow:var(--shadow-md);background:var(--court-bg)}.heatmap-canvas--light{background:#fff;border-color:#1e232d2e;box-shadow:0 1px 3px #0f141e14,0 4px 16px #0f141e0f}.heatmap-hint{margin:0;font-size:.8rem;color:var(--text-muted);max-width:320px;line-height:1.4}@media(max-width:1100px){.player-cards-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.coach-advice-list{grid-template-columns:1fr}}@media(max-width:900px){.match-layout{grid-template-columns:1fr;height:auto;max-height:none;overflow:visible}.match-layout.is-nav-collapsed{grid-template-columns:1fr}.analysis-nav{position:sticky;top:3.5rem;z-index:5;height:auto;max-height:none;border-right:none;border-bottom:1px solid var(--border-soft);padding:8px 12px 10px;overflow:visible}.match-layout.is-nav-collapsed .analysis-nav-list{display:none}.analysis-nav-toolbar{margin-bottom:0}.match-layout:not(.is-nav-collapsed) .analysis-nav-toolbar{margin-bottom:8px}.analysis-nav-list{flex-direction:row;flex-wrap:wrap;gap:6px}.analysis-nav-group{flex:1 1 100%}.analysis-nav-children{flex-direction:row;flex-wrap:wrap;margin-left:0;border-left:none;padding-left:0}.match-content{height:auto;overflow:visible}.match-content-inner{max-width:none}.match-main{grid-template-columns:1fr}.rally-sidebar{height:360px;min-height:360px}.timeline-row{grid-template-columns:56px 1fr}.stats-charts,.coach-top-tips-grid{grid-template-columns:1fr}}@media(max-width:520px){.player-cards-grid{grid-template-columns:1fr}.skill-bar-row{grid-template-columns:64px 1fr 28px}}.stats-chart-card--wide{width:100%;max-width:100%;box-sizing:border-box}.stats-chart-body--quality{min-height:280px}.stats-legend-row--quality{flex-wrap:wrap;gap:10px 14px}.stats-tooltip-row{display:flex;align-items:center;gap:6px}.team-stats{display:flex;flex-direction:column;gap:16px;width:100%;max-width:100%;min-width:0;box-sizing:border-box}.team-stats-header{display:flex;flex-direction:column;gap:4px}.team-stats-heading{margin-bottom:0}.team-stats-lead{margin:0;font-size:.85rem;color:var(--text-muted);line-height:1.4;max-width:52rem}.stats-chart-body--hbar{min-height:200px}.share-bar-list{display:flex;flex-direction:column;gap:16px;padding:8px 0 4px}.share-bar-row{display:flex;flex-direction:column;gap:8px}.share-bar-label{font-size:.85rem;font-weight:600;color:var(--text-primary)}.share-bar{position:relative;display:flex;width:100%;height:32px;border-radius:8px;overflow:hidden;background:var(--bg-hover);border:1px solid var(--border)}.share-bar-mid{position:absolute;left:50%;top:0;bottom:0;z-index:2;width:1px;transform:translate(-50%);background:#ffffffe6;box-shadow:0 0 0 .5px #0f172a47;pointer-events:none}.share-bar-seg{position:relative;z-index:1;display:flex;align-items:center;height:100%;min-width:0;padding:0 8px;box-sizing:border-box;transition:width .15s ease}.share-bar-seg--left{justify-content:flex-start}.share-bar-seg--right{justify-content:flex-end}.share-bar-seg-value{font-size:.75rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.share-bar-seg:not(.share-bar-seg--has-value) .share-bar-seg-value,.share-bar-seg[data-narrow=true] .share-bar-seg-value{display:none}.share-bar-legend{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;width:100%;font-size:.8rem;color:var(--text-secondary)}.share-bar-legend-item{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:48%}.share-bar-legend-item--left{justify-content:flex-start;text-align:left;margin-right:auto}.share-bar-legend-item--right{justify-content:flex-end;text-align:right;margin-left:auto;flex-direction:row-reverse}.share-bar-legend-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-weight:700}.stats-charts>.stats-chart-card--wide{grid-column:1 / -1}html[data-theme=dark],:root{color-scheme:dark;--bg-page: #0f111a;--bg-surface: #1a1d2d;--bg-elevated: #202438;--bg-surface-hover: #1e2235;--bg-muted: rgba(255, 255, 255, .03);--bg-hover: rgba(255, 255, 255, .06);--bg-button: rgba(255, 255, 255, .1);--bg-button-hover: rgba(255, 255, 255, .2);--bg-inset: rgba(0, 0, 0, .15);--bg-code: rgba(255, 255, 255, .08);--text-primary: #e2e8f0;--text-heading: #f1f5f9;--text-on-accent: #ffffff;--text-secondary: #8892b0;--text-muted: #94a3b8;--text-subtle: #94a3b8;--text-soft: #a0aec0;--text-time: #cbd5e1;--border: rgba(255, 255, 255, .06);--border-soft: rgba(255, 255, 255, .05);--border-medium: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .12);--border-button: rgba(255, 255, 255, .2);--border-hover: rgba(255, 255, 255, .18);--accent: #2dd4bf;--accent-strong: #0f766e;--accent-2: #14b8a6;--accent-soft: rgba(45, 212, 191, .12);--accent-muted: rgba(45, 212, 191, .08);--accent-border: rgba(45, 212, 191, .4);--accent-border-strong: rgba(45, 212, 191, .55);--accent-active-bg: rgba(45, 212, 191, .12);--accent-active-soft: rgba(45, 212, 191, .22);--accent-2-soft: rgba(20, 184, 166, .1);--accent-2-border: rgba(20, 184, 166, .4);--accent-2-window: rgba(20, 184, 166, .14);--accent-2-window-border: rgba(45, 212, 191, .75);--accent-2-tick: rgba(45, 212, 191, .55);--accent-2-tick-hover: rgba(45, 212, 191, .9);--accent-2-glow: rgba(45, 212, 191, .65);--accent-2-range: rgba(20, 184, 166, .2);--accent-2-range-border: rgba(45, 212, 191, .5);--accent-shots-border: rgba(45, 212, 191, .3);--accent-chip-border: rgba(45, 212, 191, .45);--accent-chip-border-active: rgba(45, 212, 191, .65);--accent-chip-bg: rgba(45, 212, 191, .16);--team0: #60a5fa;--team0-soft: #93c5fd;--team0-border: rgba(96, 165, 250, .4);--team0-border-strong: rgba(96, 165, 250, .55);--team1: #f5576c;--team1-soft: #f9a8b5;--team1-border: rgba(245, 87, 108, .35);--team1-border-strong: rgba(245, 87, 108, .55);--unknown: #f6d365;--unknown-soft: rgba(246, 211, 101, .22);--success: #4ade80;--success-soft: rgba(74, 222, 128, .12);--success-border: rgba(74, 222, 128, .3);--danger-soft: rgba(245, 87, 108, .12);--danger-border: rgba(245, 87, 108, .35);--warning: #f6d365;--warning-soft: rgba(246, 211, 101, .12);--fair: #fb923c;--fair-soft: rgba(251, 146, 60, .12);--quality-excellent: #2ee59a;--quality-excellent-soft: rgba(46, 229, 154, .14);--quality-excellent-border: rgba(46, 229, 154, .35);--quality-good: #6ec8ff;--quality-good-soft: rgba(110, 200, 255, .14);--quality-good-border: rgba(110, 200, 255, .35);--quality-average: #f0d060;--quality-average-soft: rgba(240, 208, 96, .14);--quality-average-border: rgba(240, 208, 96, .35);--quality-fair: #ff9f43;--quality-fair-soft: rgba(255, 159, 67, .14);--quality-fair-border: rgba(255, 159, 67, .35);--quality-poor: #ff5c7a;--quality-poor-soft: rgba(255, 92, 122, .14);--quality-poor-border: rgba(255, 92, 122, .35);--rally-len-short: #8b9cb3;--rally-len-short-soft: rgba(139, 156, 179, .16);--rally-len-medium: #c4a35a;--rally-len-medium-soft: rgba(196, 163, 90, .16);--rally-len-long: #5bb8a8;--rally-len-long-soft: rgba(91, 184, 168, .16);--stroke-right: #7aa2f7;--stroke-right-soft: rgba(122, 162, 247, .14);--stroke-left: #c084fc;--stroke-left-soft: rgba(192, 132, 252, .14);--playhead: #ffffff;--playhead-glow: rgba(255, 255, 255, .6);--playhead-glow-sm: rgba(255, 255, 255, .5);--active-ring: rgba(255, 255, 255, .7);--video-bg: #000000;--court-bg: #1a2e1a;--court-bg-overlay: rgba(20, 40, 24, .88);--court-line: rgba(255, 255, 255, .85);--court-line-muted: rgba(255, 255, 255, .35);--court-line-mid: rgba(255, 255, 255, .45);--court-line-soft: rgba(255, 255, 255, .3);--court-line-kitchen: rgba(255, 255, 255, .4);--court-net: rgba(246, 211, 101, .9);--court-marker-stroke: rgba(0, 0, 0, .55);--court-marker-label: #ffffff;--court-empty-overlay: rgba(0, 0, 0, .35);--ar-line: rgba(45, 212, 191, .95);--ar-kitchen: rgba(20, 184, 166, 1);--ar-net: rgba(246, 211, 101, 1);--ar-ball-hit: #facc15;--ar-ball-bounce: #e16a2c;--ar-ball-net: #ef39ff;--ar-ball-fill: #ffffff;--ar-ball-stroke: rgba(0, 0, 0, .55);--ar-trail-strong: #8ae23a;--ar-trail-muted: rgba(138, 226, 58, .4);--shadow-sm: 0 4px 16px rgba(0, 0, 0, .25);--shadow-md: 0 4px 20px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .5);--shadow-tooltip: 0 8px 24px rgba(0, 0, 0, .45);--shadow-timeline: 0 4px 16px rgba(0, 0, 0, .3);--shadow-minimap: 0 2px 12px rgba(0, 0, 0, .45);--shadow-minimap-active: 0 4px 18px rgba(0, 0, 0, .55);--scrollbar-thumb: rgba(255, 255, 255, .2);--scrollbar-thumb-hover: rgba(255, 255, 255, .3);--chart-grid: rgba(255, 255, 255, .06);--chart-axis: rgba(255, 255, 255, .08)}html[data-theme=light]{color-scheme:light;--bg-page: #f5f7fb;--bg-surface: #ffffff;--bg-elevated: #eef1f8;--bg-surface-hover: #e8ecf6;--bg-muted: rgba(15, 17, 26, .04);--bg-hover: rgba(15, 17, 26, .06);--bg-button: rgba(15, 17, 26, .06);--bg-button-hover: rgba(15, 17, 26, .1);--bg-inset: rgba(15, 17, 26, .04);--bg-code: rgba(15, 17, 26, .06);--text-primary: #0f172a;--text-heading: #0f172a;--text-on-accent: #ffffff;--text-secondary: #475569;--text-muted: #64748b;--text-subtle: #64748b;--text-soft: #64748b;--text-time: #334155;--border: rgba(15, 17, 26, .08);--border-soft: rgba(15, 17, 26, .06);--border-medium: rgba(15, 17, 26, .1);--border-strong: rgba(15, 17, 26, .12);--border-button: rgba(15, 17, 26, .15);--border-hover: rgba(15, 17, 26, .18);--accent: #0f766e;--accent-strong: #0f766e;--accent-2: #0d9488;--accent-soft: rgba(15, 118, 110, .1);--accent-muted: rgba(15, 118, 110, .07);--accent-border: rgba(15, 118, 110, .35);--accent-border-strong: rgba(15, 118, 110, .5);--accent-active-bg: rgba(15, 118, 110, .1);--accent-active-soft: rgba(15, 118, 110, .16);--accent-2-soft: rgba(13, 148, 136, .1);--accent-2-border: rgba(13, 148, 136, .35);--accent-2-window: rgba(13, 148, 136, .12);--accent-2-window-border: rgba(15, 118, 110, .75);--accent-2-tick: rgba(13, 148, 136, .55);--accent-2-tick-hover: rgba(15, 118, 110, .9);--accent-2-glow: rgba(13, 148, 136, .45);--accent-2-range: rgba(13, 148, 136, .15);--accent-2-range-border: rgba(15, 118, 110, .45);--accent-shots-border: rgba(15, 118, 110, .3);--accent-chip-border: rgba(15, 118, 110, .4);--accent-chip-border-active: rgba(15, 118, 110, .6);--accent-chip-bg: rgba(15, 118, 110, .12);--team0: #2563eb;--team0-soft: #60a5fa;--team0-border: rgba(37, 99, 235, .35);--team0-border-strong: rgba(37, 99, 235, .5);--team1: #f5576c;--team1-soft: #fb7185;--team1-border: rgba(245, 87, 108, .4);--team1-border-strong: rgba(245, 87, 108, .55);--unknown: #d4a017;--unknown-soft: rgba(212, 160, 23, .18);--success: #15803d;--success-soft: rgba(22, 163, 74, .12);--success-border: rgba(22, 163, 74, .35);--danger-soft: rgba(245, 87, 108, .12);--danger-border: rgba(245, 87, 108, .4);--warning: #ca8a04;--warning-soft: rgba(202, 138, 4, .12);--fair: #ea580c;--fair-soft: rgba(234, 88, 12, .12);--quality-excellent: #059669;--quality-excellent-soft: rgba(5, 150, 105, .12);--quality-excellent-border: rgba(5, 150, 105, .32);--quality-good: #0284c7;--quality-good-soft: rgba(2, 132, 199, .12);--quality-good-border: rgba(2, 132, 199, .32);--quality-average: #a16207;--quality-average-soft: rgba(161, 98, 7, .12);--quality-average-border: rgba(161, 98, 7, .32);--quality-fair: #c2410c;--quality-fair-soft: rgba(194, 65, 12, .12);--quality-fair-border: rgba(194, 65, 12, .32);--quality-poor: #be123c;--quality-poor-soft: rgba(190, 18, 60, .12);--quality-poor-border: rgba(190, 18, 60, .32);--rally-len-short: #64748b;--rally-len-short-soft: rgba(100, 116, 139, .12);--rally-len-medium: #a16207;--rally-len-medium-soft: rgba(161, 98, 7, .12);--rally-len-long: #0f766e;--rally-len-long-soft: rgba(15, 118, 110, .12);--stroke-right: #2563eb;--stroke-right-soft: rgba(37, 99, 235, .1);--stroke-left: #7c3aed;--stroke-left-soft: rgba(124, 58, 237, .1);--playhead: #0f172a;--playhead-glow: rgba(15, 23, 42, .35);--playhead-glow-sm: rgba(15, 23, 42, .3);--active-ring: rgba(15, 23, 42, .55);--video-bg: #000000;--court-bg: #1a2e1a;--court-bg-overlay: rgba(20, 40, 24, .88);--court-line: rgba(255, 255, 255, .85);--court-line-muted: rgba(255, 255, 255, .35);--court-line-mid: rgba(255, 255, 255, .45);--court-line-soft: rgba(255, 255, 255, .3);--court-line-kitchen: rgba(255, 255, 255, .4);--court-net: rgba(212, 160, 23, .9);--court-marker-stroke: rgba(0, 0, 0, .55);--court-marker-label: #ffffff;--court-empty-overlay: rgba(0, 0, 0, .35);--ar-line: rgba(45, 212, 191, .95);--ar-kitchen: rgba(20, 184, 166, 1);--ar-net: rgba(246, 211, 101, 1);--ar-ball-hit: #facc15;--ar-ball-bounce: #e16a2c;--ar-ball-net: #ef39ff;--ar-ball-fill: #ffffff;--ar-ball-stroke: rgba(0, 0, 0, .55);--ar-trail-strong: #8ae23a;--ar-trail-muted: rgba(138, 226, 58, .4);--shadow-sm: 0 4px 16px rgba(15, 17, 26, .08);--shadow-md: 0 4px 20px rgba(15, 17, 26, .1);--shadow-lg: 0 10px 30px rgba(15, 17, 26, .12);--shadow-tooltip: 0 8px 24px rgba(15, 17, 26, .15);--shadow-timeline: 0 4px 16px rgba(15, 17, 26, .08);--shadow-minimap: 0 2px 12px rgba(15, 17, 26, .2);--shadow-minimap-active: 0 4px 18px rgba(15, 17, 26, .28);--scrollbar-thumb: rgba(15, 17, 26, .2);--scrollbar-thumb-hover: rgba(15, 17, 26, .35);--chart-grid: rgba(15, 17, 26, .06);--chart-axis: rgba(15, 17, 26, .1)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}body{margin:0;background-color:var(--bg-page);color:var(--text-primary);font-family:Inter,system-ui,sans-serif}a{color:var(--accent)}a:hover{filter:brightness(1.12)}.page{box-sizing:border-box;width:100%;max-width:960px;margin:0 auto;padding:2.5rem 1.25rem 3rem}.page--sm{max-width:420px}.page--md{max-width:560px}.page--lg{max-width:960px}.page-header{margin-bottom:1.5rem}.page-title{display:flex;align-items:center;gap:.6rem;margin:0 0 .5rem;font-size:1.75rem;font-weight:700;color:var(--text-heading);line-height:1.2}.page-lead{margin:0;font-size:.95rem;color:var(--text-subtle);line-height:1.5}.page-actions{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-bottom:1.25rem}.card{background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:12px;padding:1.25rem 1.5rem;box-shadow:var(--shadow-sm)}.card+.card{margin-top:1rem}.form{display:flex;flex-direction:column;gap:1rem}.field{display:flex;flex-direction:column;gap:.4rem}.field-label{font-size:.8rem;font-weight:600;color:var(--text-secondary);letter-spacing:.02em}.input,.textarea{box-sizing:border-box;width:100%;padding:.65rem .85rem;font:inherit;font-size:.95rem;color:var(--text-primary);background:var(--bg-elevated);border:1px solid var(--border-medium);border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.input:hover,.textarea:hover{border-color:var(--border-strong)}.input:focus,.textarea:focus{border-color:var(--accent-border-strong);box-shadow:0 0 0 3px var(--accent-muted)}.input:disabled,.textarea:disabled{opacity:.55;cursor:not-allowed}.ui-select{position:relative;display:block;width:100%;min-width:0}.ui-select__trigger{box-sizing:border-box;display:flex;align-items:center;gap:.25rem;width:100%;padding:.35rem .5rem .35rem .85rem;font:inherit;font-size:.95rem;font-weight:500;line-height:1.25;color:var(--text-primary);background:var(--bg-elevated);border:1px solid var(--border-medium);border-radius:8px;transition:border-color .15s,box-shadow .15s,background .15s}.ui-select__trigger:hover{border-color:var(--border-strong);background:var(--bg-surface-hover)}.ui-select__trigger:focus-within{border-color:var(--accent-border-strong);box-shadow:0 0 0 3px var(--accent-muted)}.ui-select--open .ui-select__trigger{border-color:var(--accent-border-strong);box-shadow:0 0 0 3px var(--accent-muted)}.ui-select--disabled .ui-select__trigger{opacity:.55}.ui-select__trigger-main,.ui-select__trigger-input{box-sizing:border-box;display:inline-flex;align-items:center;flex:1;min-width:0;margin:0;padding:.3rem .35rem .3rem 0;font:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;text-align:left;color:inherit;background:transparent;border:none;outline:none}.ui-select__trigger-main{cursor:pointer}.ui-select__trigger-input{cursor:text;width:100%}.ui-select__trigger-input:focus,.ui-select__trigger-input:focus-visible{outline:none}.ui-select__trigger-input::placeholder{color:var(--text-muted);font-weight:400}.ui-select__trigger-main:disabled,.ui-select__trigger-input:disabled{cursor:not-allowed}.ui-select__value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-select__value--placeholder{color:var(--text-muted);font-weight:400}.ui-select__clear,.ui-select__chevron-btn{box-sizing:border-box;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;margin:0;padding:.2rem;color:var(--text-secondary);background:transparent;border:none;border-radius:4px;cursor:pointer;outline:none;transition:color .12s,background .12s}.ui-select__clear:hover:not(:disabled),.ui-select__chevron-btn:hover:not(:disabled){color:var(--text-heading);background:var(--bg-hover)}.ui-select__clear:focus-visible,.ui-select__chevron-btn:focus-visible{color:var(--accent);box-shadow:0 0 0 2px var(--accent-muted)}.ui-select__clear:disabled,.ui-select__chevron-btn:disabled{cursor:not-allowed}.ui-select__chevron{display:block;color:inherit;transition:transform .15s ease,color .15s}.ui-select--open .ui-select__chevron{transform:rotate(180deg);color:var(--accent)}.ui-select__menu{box-sizing:border-box;display:flex;flex-direction:column;margin:0;padding:.35rem;overflow:hidden;background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:10px;box-shadow:var(--shadow-lg);animation:ui-select-in .12s ease-out}.ui-select__menu--sm{border-radius:8px;padding:.3rem}.ui-select__list{margin:0;padding:0;list-style:none;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;min-height:0;flex:1}.ui-select__empty{padding:.65rem .55rem;font-size:.9rem;font-weight:500;color:var(--text-muted);text-align:center;-webkit-user-select:none;user-select:none}.ui-select__menu--sm .ui-select__empty{padding:.45rem .4rem;font-size:.8rem}@keyframes ui-select-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ui-select__option{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.55rem .65rem;border-radius:6px;font-size:.95rem;font-weight:500;color:var(--text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .1s,color .1s}.ui-select__option-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-select__check{flex-shrink:0;color:var(--accent)}.ui-select__option--active{background:var(--bg-hover);color:var(--text-heading)}.ui-select__option--selected{background:var(--accent-soft);color:var(--accent)}.ui-select__option--selected.ui-select__option--active{background:var(--accent-active-soft);color:var(--accent)}.ui-select__option--disabled{color:var(--text-muted);opacity:.55;cursor:not-allowed}.ui-select__option--disabled.ui-select__option--active{background:transparent}.ui-select--sm .ui-select__trigger{padding:.2rem .35rem .2rem .55rem;font-size:.8rem}.ui-select--sm .ui-select__trigger-main{padding:.2rem .25rem .2rem 0}.ui-select__menu--sm .ui-select__option{padding:.4rem .55rem;font-size:.8rem}.ui-select--control .ui-select__trigger{background:var(--bg-button);border-color:var(--border-button)}.ui-select--control .ui-select__trigger:hover{background:var(--bg-button-hover);border-color:var(--border-button)}.ui-select--control.ui-select--open .ui-select__trigger,.ui-select--control .ui-select__trigger:focus-within{border-color:var(--accent-border-strong);box-shadow:0 0 0 3px var(--accent-muted)}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.65rem 1.1rem;font:inherit;font-size:.9rem;font-weight:600;line-height:1.2;border-radius:8px;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:background .15s,border-color .15s,color .15s,opacity .15s;white-space:nowrap}.ui-btn:disabled{opacity:.5;cursor:not-allowed}.ui-btn--primary{background:var(--accent-strong);color:var(--text-on-accent);border-color:transparent}.ui-btn--primary:hover:not(:disabled){filter:brightness(1.08)}.ui-btn--secondary{background:var(--bg-button);color:var(--text-primary);border-color:var(--border-button)}.ui-btn--secondary:hover:not(:disabled){background:var(--bg-button-hover)}.ui-btn--ghost{background:transparent;color:var(--text-secondary);border-color:transparent}.ui-btn--ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.ui-btn--danger{background:var(--danger-soft);color:var(--team1);border-color:var(--danger-border)}.ui-btn--danger:hover:not(:disabled){filter:brightness(1.08)}.ui-btn--active{background:var(--accent-active-soft);border-color:var(--accent);color:var(--accent)}.ui-btn--active:hover:not(:disabled){background:var(--accent-active-soft);filter:brightness(1.05)}.ui-btn--sm{padding:.4rem .75rem;font-size:.8rem}.ui-btn--block{width:100%}.ui-btn--icon{padding:.45rem;flex-shrink:0}.ui-btn--ghost.ui-btn--icon{width:2.25rem;height:2.25rem;padding:0;color:var(--text-primary)}.ui-btn--ghost.ui-btn--icon:hover:not(:disabled){background:var(--bg-hover);color:var(--text-heading)}.ui-btn--ghost.ui-btn--icon.ui-btn--active{background:var(--accent-active-soft);border-color:var(--accent);color:var(--accent)}.ui-btn--ghost.ui-btn--icon.ui-btn--active:hover:not(:disabled){background:var(--accent-active-soft);color:var(--accent);filter:brightness(1.05)}.ui-btn--ghost.ui-btn--icon.ui-btn--sm{width:1.9rem;height:1.9rem}.code{background:var(--bg-code);padding:.1rem .4rem;border-radius:4px;font-size:.8em;font-family:ui-monospace,monospace}.form-row{display:flex;gap:.65rem;align-items:stretch;flex-wrap:wrap}.form-row .input{flex:1;min-width:12rem}.form-row .ui-btn{flex-shrink:0}.split-row{display:flex;justify-content:space-between;align-items:center;gap:1.25rem}.split-row__body{flex:1;min-width:0}.split-row__action{flex-shrink:0}.card-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.card-header__title{display:flex;align-items:center;gap:.45rem;margin:0;font-size:1rem;font-weight:700;color:var(--text-heading)}.card-header+.muted,.card-header+.page-lead{margin-top:-.25rem}.debug-details{margin-top:.5rem}.debug-details summary{color:var(--text-muted);font-size:.85rem;cursor:pointer}.debug-details pre{margin:.5rem 0 0;padding:1rem;background:var(--bg-elevated);border-radius:8px;font-size:.75rem;color:var(--text-subtle);overflow-x:auto;border:1px solid var(--border)}@media(max-width:560px){.split-row{flex-direction:column;align-items:stretch}.split-row__action{align-self:flex-start}.form-row{flex-direction:column}.form-row .ui-btn{width:100%}}.alert{display:flex;align-items:flex-start;gap:.6rem;padding:.75rem 1rem;border-radius:8px;font-size:.9rem;line-height:1.4;border:1px solid transparent}.alert__icon{flex-shrink:0;margin-top:.1rem}.alert--error{background:var(--danger-soft);border-color:var(--danger-border);color:var(--team1)}.alert--success{background:var(--success-soft);border-color:var(--success-border);color:var(--success)}.alert--warning{background:var(--warning-soft);border-color:#f6d36559;color:var(--warning)}.alert--info{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent)}.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .55rem;border-radius:999px;font-size:.7rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;background:var(--bg-hover);color:var(--text-secondary);border:1px solid var(--border)}.badge--success{background:var(--success-soft);color:var(--success);border-color:var(--success-border)}.badge--warning{background:var(--warning-soft);color:var(--warning);border-color:#f6d36559}.badge--danger{background:var(--danger-soft);color:var(--team1);border-color:var(--danger-border)}.badge--info{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-border)}.empty-state{text-align:center;padding:2.5rem 1.25rem;color:var(--text-muted);border:1px dashed var(--border-strong);border-radius:12px;background:var(--bg-muted)}.empty-state__icon{display:flex;justify-content:center;margin-bottom:.75rem;color:var(--text-soft)}.empty-state__title{margin:0 0 .35rem;font-size:1rem;font-weight:600;color:var(--text-primary)}.empty-state__desc{margin:0 0 1rem;font-size:.9rem;color:var(--text-muted)}.loading-state{display:flex;align-items:center;gap:.6rem;color:var(--text-secondary);font-size:.95rem;padding:1rem 0}.stack{display:flex;flex-direction:column;gap:1rem}.stack--sm{gap:.5rem}.muted{color:var(--text-muted);font-size:.9rem}.form-footer{margin:1rem 0 0;font-size:.9rem;color:var(--text-subtle);text-align:center}.form-divider{display:flex;align-items:center;gap:.75rem;color:var(--text-muted);font-size:.8rem;margin:.25rem 0}.form-divider:before,.form-divider:after{content:"";flex:1;height:1px;background:var(--border-strong)}.progress{width:100%;height:8px;border-radius:999px;background:var(--bg-hover);overflow:hidden;border:none;appearance:none}.progress::-webkit-progress-bar{background:var(--bg-hover);border-radius:999px}.progress::-webkit-progress-value{background:var(--accent-strong);border-radius:999px}.progress::-moz-progress-bar{background:var(--accent-strong);border-radius:999px}.progress-meta{display:flex;justify-content:space-between;font-size:.8rem;color:var(--text-secondary);margin-top:.4rem}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem 1.25rem;border:1.5px dashed var(--border-strong);border-radius:12px;background:var(--bg-muted);color:var(--text-secondary);text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone:focus-within{border-color:var(--accent-border);background:var(--accent-muted);color:var(--text-primary)}.dropzone__input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}.dropzone-wrap{position:relative}.dropzone__title{font-weight:600;color:var(--text-primary);font-size:.95rem}.dropzone__hint{font-size:.8rem;color:var(--text-muted)}.file-meta{display:flex;align-items:center;gap:.6rem;padding:.75rem 1rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;font-size:.9rem}.file-meta__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.file-meta__size{color:var(--text-muted);font-variant-numeric:tabular-nums;flex-shrink:0}.video-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.video-card{display:flex;flex-direction:column;gap:.65rem;border:1px solid var(--border-strong);border-radius:12px;padding:.65rem;background:var(--bg-surface);box-shadow:var(--shadow-sm);transition:border-color .15s,box-shadow .15s}.video-card:hover{border-color:var(--accent-border);box-shadow:var(--shadow-md)}.video-card__thumb{width:100%;aspect-ratio:16 / 9;object-fit:cover;border-radius:8px;display:block;background:var(--video-bg)}.video-card-placeholder{width:100%;aspect-ratio:16 / 9;background:var(--bg-elevated);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.video-card__body{display:flex;flex-direction:column;gap:.4rem;padding:0 .15rem .25rem;flex:1}.video-card__title{margin:0;font-size:.95rem;font-weight:600;line-height:1.3}.video-card__title a{color:var(--text-heading);text-decoration:none}.video-card__title a:hover{color:var(--accent)}.video-card__footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:auto}.media-frame{width:100%;border-radius:12px;overflow:hidden;background:var(--video-bg);box-shadow:var(--shadow-md);border:1px solid var(--border)}.media-frame video{display:block;width:100%;aspect-ratio:16 / 9;background:var(--video-bg)}.status-row{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .85rem;border-radius:8px;background:var(--bg-surface);border:1px solid var(--border);font-size:.9rem}.status-row--ok{color:var(--success);border-color:var(--success-border);background:var(--success-soft)}.status-row--fail{color:var(--team1);border-color:var(--danger-border);background:var(--danger-soft)}.app-nav{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;padding:.65rem 1.25rem;font-family:system-ui,sans-serif;border-bottom:1px solid var(--border);background:var(--bg-surface);color:var(--text-primary);position:sticky;top:0;z-index:50}.app-nav__brand{display:inline-flex;align-items:center;gap:.4rem;font-weight:700;font-size:.95rem;color:var(--text-heading);text-decoration:none;margin-right:.35rem}.app-nav__brand:hover{color:var(--accent)}.app-nav__links{display:flex;align-items:center;gap:.25rem;flex-wrap:wrap}.app-nav__link{color:var(--text-secondary);text-decoration:none;font-weight:500;font-size:.875rem;padding:.4rem .65rem;border-radius:6px;transition:color .15s,background .15s}.app-nav__link:hover{color:var(--text-primary);background:var(--bg-hover)}.app-nav__link.is-active{color:var(--accent);background:var(--accent-muted)}.app-nav__spacer{flex:1;min-width:.5rem}.app-nav__user{font-size:.85rem;color:var(--text-secondary);max-width:10rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 .35rem}.app-nav__actions{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.app-nav button,.app-nav__menu-btn{display:inline-flex;align-items:center;gap:.35rem;background:var(--bg-button);border:1px solid var(--border-button);color:var(--text-primary);border-radius:6px;padding:.4rem .65rem;cursor:pointer;font:inherit;font-size:.8rem;font-weight:500}.app-nav button:hover,.app-nav__menu-btn:hover{background:var(--bg-button-hover)}.app-nav button.is-active{border-color:var(--accent-border);color:var(--accent);background:var(--accent-muted)}.app-nav__menu-btn{display:none;padding:.45rem}.app-nav__drawer{display:none}@media(max-width:720px){.app-nav__menu-btn{display:inline-flex}.app-nav__links,.app-nav__actions{display:none}.app-nav.is-open .app-nav__drawer{display:flex;flex-direction:column;gap:.35rem;width:100%;order:10;padding:.5rem 0 .25rem;border-top:1px solid var(--border);margin-top:.35rem}.app-nav.is-open .app-nav__drawer .app-nav__link,.app-nav.is-open .app-nav__drawer button{width:100%;justify-content:flex-start}.app-nav.is-open .app-nav__drawer .app-nav__actions{display:flex;flex-direction:column;align-items:stretch;width:100%;margin-top:.35rem;padding-top:.5rem;border-top:1px solid var(--border)}.app-nav__user{max-width:none;padding:.35rem .65rem}}.home-hero{display:flex;flex-direction:column;gap:1.25rem}.home-hero__actions{display:flex;flex-wrap:wrap;gap:.75rem}.home-features{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem;margin-top:.25rem}.home-feature{display:flex;flex-direction:column;gap:.35rem;padding:.9rem 1rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px}.home-feature__icon{color:var(--accent)}.home-feature__title{margin:0;font-size:.85rem;font-weight:600;color:var(--text-heading)}.home-feature__desc{margin:0;font-size:.75rem;color:var(--text-muted);line-height:1.35}.guide-list{list-style:none;margin:0;padding:0;counter-reset:guide-tip}.guide-list li{position:relative;padding:.75rem .75rem .75rem 2.75rem;border:1px solid var(--border);border-radius:10px;background:var(--bg-elevated);font-size:.9rem;line-height:1.5;color:var(--text-primary)}.guide-list li+li{margin-top:.55rem}.guide-list li:before{counter-increment:guide-tip;content:counter(guide-tip);position:absolute;left:.75rem;top:.75rem;width:1.5rem;height:1.5rem;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.75rem;font-weight:700;display:flex;align-items:center;justify-content:center}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:focus:not(:focus-visible),a:focus:not(:focus-visible),input:focus:not(:focus-visible),select:focus:not(:focus-visible){outline:none}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.icon-inline{display:inline-block;vertical-align:-.15em;flex-shrink:0}.app-nav__actions--desktop{display:flex}@media(max-width:720px){.app-nav__actions--desktop{display:none!important}}
