:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh;background:#1a1a2e}#root{width:100%;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}*{box-sizing:border-box}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;box-shadow:0 0 0 2px var(--bg-base),0 0 0 4px var(--primary-color)}button:focus:not(:focus-visible),input:focus:not(:focus-visible),select:focus:not(:focus-visible),textarea:focus:not(:focus-visible){outline:none;box-shadow:none}#root{min-height:100vh;background:var(--bg-base);color:var(--text-primary);font-family:var(--font-family)}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh}.spinner{width:40px;height:40px;border:4px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes modalEnter{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes subtleGlowSweep{0%,to{opacity:.22;transform:translate(-18%) translateY(-8%)}50%{opacity:.35;transform:translate(18%) translateY(8%)}}@keyframes cardReveal{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.skeleton{background:linear-gradient(90deg,var(--bg-surface) 0%,var(--bg-elevated) 50%,var(--bg-surface) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:4px}.login-container{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.login-card{background:var(--card-bg);padding:40px;border-radius:16px;width:100%;max-width:400px;box-shadow:0 8px 32px #0000004d}.login-card h1{margin:0 0 8px;color:var(--primary-color);font-size:28px}.login-card h2{margin:0 0 32px;color:var(--text-secondary);font-size:18px;font-weight:400}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;color:var(--text-tertiary);font-size:14px}.form-group input{width:100%;padding:12px 16px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:var(--text-base);transition:border-color var(--transition-normal),box-shadow var(--transition-normal)}.form-group input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #0d737726}.error{background:var(--error-light);color:var(--error-color);padding:12px;border-radius:6px;margin-bottom:20px;font-size:14px;border:1px solid var(--error-color)}.login-card button{width:100%;padding:14px;background:var(--primary-color);color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:background var(--transition-normal),transform var(--transition-fast)}.login-card button:hover:not(:disabled){background:var(--primary-hover)}.login-card button:active:not(:disabled){transform:scale(.98)}.login-card button:disabled{opacity:.6;cursor:not-allowed}.divider{display:flex;align-items:center;margin:20px 0}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--border-color)}.divider span{padding:0 16px;color:var(--text-secondary);font-size:14px}.google-btn{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;padding:14px;background:#fff;color:#333;border:none;border-radius:8px;font-size:16px;font-weight:500;cursor:pointer;transition:background .2s}.google-btn:hover:not(:disabled){background:#f1f1f1}.google-btn:disabled{opacity:.6;cursor:not-allowed}.app-container{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;justify-content:space-between;align-items:center;padding:16px 32px;background:var(--card-bg);border-bottom:1px solid var(--border-color);gap:24px}.app-header .header-left{display:flex;flex-direction:column;gap:2px}.app-header .header-left h1{margin:0;font-size:20px;color:var(--primary-color)}.app-header .user-email{color:var(--text-secondary);font-size:12px}.main-nav{display:flex;gap:8px}.nav-btn{padding:10px 20px;background:transparent;color:var(--text-secondary);border:1px solid transparent;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s}.nav-btn:hover{background:var(--bg-surface);color:var(--text-primary)}.nav-btn.active{background:#646cff26;color:var(--primary-color);border-color:var(--primary-color)}.nav-btn:focus{outline:2px solid var(--primary-color);outline-offset:2px}.app-main{flex:1}.arsenal-page{min-height:calc(100vh - 70px)}.logout-btn{padding:10px 20px;background:transparent;color:var(--text-secondary);border:1px solid #444;border-radius:8px;cursor:pointer;transition:all .2s}.logout-btn:hover{background:var(--border-color);color:var(--text-primary)}.arsenal-content{display:grid;grid-template-columns:1fr 400px;gap:32px;padding:32px;max-width:1400px;margin:0 auto}@media(max-width:900px){.arsenal-content{grid-template-columns:1fr}}.arsenal-list h2,.ball-picker h2{margin:0;font-size:18px;color:var(--text-tertiary)}.arsenal-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:12px}.status-filters{display:flex;gap:8px}.filter-btn{padding:6px 12px;background:transparent;color:#999;border:1px solid #444;border-radius:16px;cursor:pointer;font-size:12px;transition:all .2s}.filter-btn:hover{border-color:var(--primary-color);color:var(--text-tertiary)}.filter-btn.active{background:#646cff26;border-color:var(--primary-color);color:var(--primary-color)}.filter-btn:focus{outline:2px solid var(--primary-color);outline-offset:2px}.balls-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.empty,.loading{color:#999;font-style:italic;padding:40px;text-align:center}.ball-card{display:grid;grid-template-columns:100px 1fr;gap:20px;background:var(--card-bg);padding:20px;border-radius:8px;border:1px solid var(--border-subtle);position:relative;transition:border-color var(--transition-normal),transform var(--transition-normal)}.ball-photo{width:100px;height:100px;border-radius:6px;overflow:hidden;background:var(--bg-surface);flex-shrink:0}.ball-photo img{width:100%;height:100%;object-fit:cover}.no-photo{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:32px}.ball-info{flex:1;min-width:0}.ball-info .ball-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.ball-info h3{margin:0;font-size:16px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ball-info .status-badge{font-size:10px;padding:2px 6px;border-radius:4px;text-transform:uppercase;font-weight:600;flex-shrink:0}.ball-info .status-inactive{background:#4a4a00;color:#ffeb3b}.ball-info .status-retired{background:#4a0000;color:#ff8a80}.ball-info .brand{margin:0 0 8px;color:var(--accent-color);font-size:14px;font-weight:500}.ball-info .serial{margin:0 0 4px;color:var(--primary-light);font-size:12px;font-family:monospace}.ball-info .coverstock,.ball-info .coverstock-type,.ball-info .specs,.ball-info .surface{margin:0;color:var(--text-secondary);font-size:12px}.ball-info .coverstock-type{color:var(--text-tertiary);font-style:italic}.delete-btn{position:absolute;top:8px;right:8px;width:28px;height:28px;background:transparent;color:#999;border:none;border-radius:50%;cursor:pointer;font-size:14px;transition:all .2s}.delete-btn:hover{background:#f44;color:#fff}.ball-picker{background:var(--card-bg);padding:24px;border-radius:8px;height:fit-content;position:sticky;top:32px}.search-input{width:100%;padding:14px 16px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:16px;margin-bottom:16px}.search-input:focus{outline:none;border-color:var(--primary-color)}.search-results{max-height:400px;overflow-y:auto}.search-result{display:flex;justify-content:space-between;align-items:center;padding:12px;border-radius:8px;transition:background .2s}.search-result:hover{background:var(--bg-surface)}.result-info{display:flex;flex-direction:column;gap:2px}.result-name{font-weight:600;color:var(--text-primary)}.result-brand{color:var(--primary-color);font-size:13px}.result-coverstock{color:#999;font-size:12px}.add-btn{padding:8px 16px;background:var(--primary-color);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600;white-space:nowrap;transition:background .2s}.add-btn:hover{background:var(--primary-hover)}.no-results{color:#999;text-align:center;padding:20px;font-style:italic}.modal-overlay{position:fixed;inset:0;background:#0c0f0fd9;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:fadeIn var(--transition-normal) ease-out}.modal-content{background:var(--card-bg);border:1px solid var(--border-default);border-radius:12px;width:100%;max-width:600px;max-height:90vh;overflow-y:auto;box-shadow:0 24px 48px #0006;animation:modalEnter var(--transition-slow) ease-out}.modal-header{display:flex;align-items:center;gap:16px;padding:20px;border-bottom:1px solid var(--border-color);position:sticky;top:0;background:var(--card-bg);z-index:1}.modal-header h2{margin:0;flex:1;font-size:20px}.modal-photo{width:60px;height:60px;border-radius:8px;object-fit:cover}.photo-source-group{width:100%}.photo-source-selector{display:flex;gap:12px;margin-top:4px}.photo-source-option{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px;background:var(--bg-surface);border:2px solid var(--border-color);border-radius:8px;cursor:pointer;transition:all .2s ease}.photo-source-option:hover{border-color:var(--text-secondary)}.photo-source-option.selected{border-color:var(--primary-color);background:var(--bg-elevated)}.photo-source-thumb{width:64px;height:64px;border-radius:6px;object-fit:cover}.photo-source-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.3px}.photo-source-option.selected .photo-source-label{color:var(--primary-color);font-weight:600}.close-btn{background:transparent;border:none;color:var(--text-secondary);font-size:28px;cursor:pointer;padding:0;line-height:1}.close-btn:hover{color:var(--text-primary)}.modal-content form{padding:20px}.form-section{margin-bottom:24px}.form-section h3{margin:0 0 12px;font-size:14px;color:var(--primary-color);text-transform:uppercase;letter-spacing:.5px}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.modal-content .form-group{margin-bottom:12px}.modal-content .form-group label{display:block;margin-bottom:4px;color:var(--text-tertiary);font-size:12px}.modal-content .form-group input,.modal-content .form-group select,.modal-content .form-group textarea{width:100%;padding:10px 12px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:14px}.modal-content .form-group input:focus,.modal-content .form-group select:focus,.modal-content .form-group textarea:focus{outline:none;border-color:var(--primary-color)}.modal-content .form-group textarea{resize:vertical;font-family:inherit}.modal-content .form-group .readonly-value{padding:10px 12px;background:var(--bg-base);border:1px solid var(--border-color);border-radius:6px;color:var(--text-secondary);font-size:14px}.layout-system-toggle{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--border-color);border-radius:999px;overflow:hidden;background:var(--bg-surface)}.layout-system-option{padding:8px 10px;background:transparent;border:none;color:var(--text-secondary);font-size:12px;font-weight:600;cursor:pointer;transition:background var(--transition-normal),color var(--transition-normal)}.layout-system-option:not(:last-child){border-right:1px solid var(--border-color)}.layout-system-option:hover{color:var(--text-primary)}.layout-system-option.active{background:var(--primary-color);color:#fff}.layout-system-label{margin:8px 0 12px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary)}.checkbox-group label{display:flex!important;align-items:center;gap:8px;cursor:pointer}.checkbox-group input[type=checkbox]{width:auto!important;cursor:pointer}.modal-actions{display:flex;gap:12px;justify-content:space-between;align-items:center;padding-top:16px;border-top:1px solid var(--border-color)}.modal-actions-right{display:flex;gap:12px;margin-left:auto}.cancel-btn{padding:12px 24px;background:transparent;color:var(--text-secondary);border:1px solid #444;border-radius:8px;cursor:pointer;font-size:14px}.cancel-btn:hover{background:var(--border-color);color:var(--text-primary)}.save-btn{padding:12px 24px;background:var(--primary-color);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600}.save-btn:hover:not(:disabled){background:var(--primary-hover)}.save-btn:disabled{opacity:.6;cursor:not-allowed}.leave-detail-modal{max-width:700px;max-height:85vh;display:flex;flex-direction:column}.leave-modal-title{display:flex;align-items:center;gap:16px}.leave-modal-title h2{margin:0;font-size:18px}.leave-modal-stats{display:block;font-size:13px;color:var(--text-secondary);margin-top:2px}.leave-detail-modal .modal-body{flex:1;overflow-y:auto;padding:16px 20px;max-height:50vh}.leave-frames-list{display:flex;flex-direction:column;gap:8px}.leave-frame-item{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--bg-surface);border-radius:8px;border-left:3px solid transparent}.leave-frame-item.converted{border-left-color:var(--success-color)}.leave-frame-item.missed{border-left-color:var(--error-color)}.frame-item-left{display:flex;align-items:center;gap:8px;min-width:60px}.frame-index{font-size:12px;color:var(--text-tertiary)}.frame-result{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;font-weight:600;font-size:14px}.frame-result.spare{background:var(--success-color);color:#fff}.frame-result.open{background:var(--error-color);color:#fff}.frame-item-center{flex:1;min-width:0}.frame-game-info{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:4px}.frame-date{font-weight:500;color:var(--text-primary)}.frame-tournament{font-size:12px;color:var(--text-secondary);background:var(--bg-base);padding:2px 8px;border-radius:4px}.frame-center{font-size:12px;color:var(--text-tertiary)}.frame-rolls{font-size:13px;color:var(--text-secondary);display:flex;gap:12px;align-items:center}.frame-game-score{color:var(--text-tertiary);font-size:12px}.frame-item-right{flex-shrink:0}.view-game-link{padding:6px 12px;background:var(--primary-color);color:#fff;border-radius:4px;text-decoration:none;font-size:12px;font-weight:500}.view-game-link:hover{background:var(--primary-hover)}.leave-detail-modal .modal-footer{padding:16px 20px;border-top:1px solid var(--border-color);display:flex;justify-content:flex-end}.btn{padding:10px 20px;border-radius:6px;font-size:14px;cursor:pointer;border:none}.btn-secondary{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border-color)}.btn-secondary:hover{background:var(--border-color)}.ball-card{cursor:pointer}.ball-card:hover{transform:translateY(-2px);border-color:var(--border-default);box-shadow:0 8px 24px #0003}.ball-card:focus{outline:none;box-shadow:0 0 0 2px var(--bg-base),0 0 0 4px var(--primary-color)}.centers-page{padding:32px;max-width:1200px;margin:0 auto}.centers-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:16px}.centers-header h2{margin:0;font-size:18px;color:var(--text-tertiary)}.header-actions{display:flex;gap:12px;align-items:center}.centers-search{width:250px;margin-bottom:0}.add-center-btn{padding:10px 20px;background:var(--primary-color);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;white-space:nowrap;transition:background .2s}.add-center-btn:hover{background:var(--primary-hover)}.centers-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.center-card{display:flex;gap:16px;background:var(--card-bg);padding:20px;border-radius:8px;position:relative;cursor:pointer;transition:transform .2s,box-shadow .2s}.center-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000004d}.center-card:focus{outline:2px solid var(--primary-color);outline-offset:2px}.center-icon{width:60px;height:60px;background:var(--bg-surface);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:28px;flex-shrink:0}.center-info{flex:1;min-width:0}.center-info h3{margin:0 0 4px;font-size:16px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.center-info .location{margin:0 0 4px;color:var(--primary-color);font-size:14px}.center-info .lanes{margin:0 0 8px;color:var(--text-secondary);font-size:13px}.center-details{display:flex;gap:6px;flex-wrap:wrap}.detail-tag{font-size:11px;padding:3px 8px;background:var(--bg-surface);color:var(--text-tertiary);border-radius:4px}.modal-icon{width:50px;height:50px;background:var(--bg-surface);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0}.modal-error{margin:0 20px 16px}.confirm-modal{max-width:400px}.confirm-modal-header{padding:20px 20px 0}.confirm-modal-header h2{margin:0;font-size:18px;color:var(--text-primary)}.confirm-modal-body{padding:16px 20px}.confirm-modal-body p{margin:0;color:var(--text-tertiary);line-height:1.5}.confirm-modal-actions{display:flex;gap:12px;justify-content:flex-end;padding:16px 20px 20px}.danger-btn{padding:10px 20px;background:#dc3545;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;transition:background .2s}.danger-btn:hover:not(:disabled){background:#c82333}.danger-btn:disabled{opacity:.6;cursor:not-allowed}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);padding:12px 24px;border-radius:8px;font-size:14px;font-weight:500;z-index:1000;animation:slideUp .3s ease-out}.toast-success{background:#28a745;color:#fff}@keyframes slideUp{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.app-layout{display:flex;min-height:100vh;background:var(--bg-surface)}.app-layout.sidebar-open .sidebar{transform:translate(0)}.app-layout.sidebar-closed .sidebar{transform:translate(-100%)}@media(min-width:769px){.app-layout .main-content{margin-left:260px}.app-layout .sidebar,.app-layout.sidebar-closed .sidebar{transform:translate(0)}}.sidebar{position:fixed;top:0;left:0;width:260px;height:100vh;background:var(--card-bg);border-right:1px solid var(--border-color);display:flex;flex-direction:column;z-index:100;transition:transform .3s ease}.sidebar-overlay{position:fixed;inset:0;background:#00000080;z-index:99}@media(min-width:769px){.sidebar-overlay{display:none}}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid var(--border-color)}.sidebar-brand{display:flex;align-items:center;gap:12px}.brand-icon{font-size:28px}.brand-text{font-size:20px;font-weight:600;color:var(--primary-color)}.sidebar-close{display:none;background:transparent;border:none;color:var(--text-secondary);font-size:24px;cursor:pointer;padding:4px 8px}.sidebar-close:hover{color:var(--text-primary)}@media(max-width:768px){.sidebar-close{display:block}}.sidebar-nav{flex:1;padding:16px 12px;overflow-y:auto}.sidebar-link{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:8px;color:var(--text-secondary);text-decoration:none;font-size:15px;font-weight:500;transition:all .2s;margin-bottom:4px}.sidebar-link:hover{background:var(--bg-surface);color:var(--text-primary)}.sidebar-link.active{background:var(--bg-surface);color:var(--text-primary);position:relative}.sidebar-link.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;background:var(--primary-color);border-radius:0 2px 2px 0}.sidebar-link:focus{outline:2px solid var(--primary-color);outline-offset:-2px}.sidebar-link-icon{font-size:18px;width:24px;text-align:center;opacity:.6;transition:opacity var(--transition-normal)}.sidebar-link:hover .sidebar-link-icon,.sidebar-link.active .sidebar-link-icon{opacity:1}.sidebar-link-label{flex:1}.sidebar-link-badge{background:#f44;color:#fff;font-size:12px;padding:2px 6px;border-radius:10px;font-weight:600}.sidebar-footer{padding:16px 20px;border-top:1px solid var(--border-color)}.sidebar-user{display:flex;align-items:center;gap:10px;margin-bottom:12px}.user-avatar{font-size:20px}.sidebar-footer .user-email{font-size:13px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-logout{width:100%;padding:10px;background:transparent;color:var(--text-secondary);border:1px solid #444;border-radius:8px;cursor:pointer;font-size:14px;transition:all .2s}.sidebar-logout:hover{background:var(--border-color);color:var(--text-primary)}.main-content{flex:1;display:flex;flex-direction:column;min-height:100vh;min-width:0;width:100%;transition:margin-left .3s ease}.top-header{display:flex;align-items:center;padding:16px 24px;background:var(--card-bg);border-bottom:1px solid var(--border-color)}.hamburger-btn{display:none;background:transparent;border:none;color:var(--text-secondary);font-size:24px;cursor:pointer;padding:4px 8px}.hamburger-btn:hover{color:var(--text-primary)}@media(max-width:768px){.hamburger-btn{display:block}}.header-spacer{flex:1}.page-content{flex:1;padding:0;width:100%;background:var(--bg-dark)}.page-loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;color:var(--text-secondary)}.page-loader .spinner{width:32px;height:32px;border:3px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:12px}.page-header{padding:24px 32px;border-bottom:1px solid var(--border-color);background:var(--card-bg)}.page-header h1{margin:0;font-size:24px;color:var(--text-primary)}.page-subtitle{margin:4px 0 0;color:var(--text-secondary);font-size:14px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-icon{font-size:64px;margin-bottom:16px}.empty-state h3{margin:0 0 8px;color:var(--text-primary);font-size:18px}.empty-state p{margin:0;color:var(--text-secondary);font-size:14px}.empty-state .hint,.empty-state .empty-hint{margin-top:8px;font-style:italic;font-size:13px;color:var(--text-tertiary)}.dashboard-page{padding:0}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;padding:24px 32px}.stat-card{position:relative;display:flex;flex-direction:column;gap:8px;background:linear-gradient(180deg,#ffffff0a,#fff0),var(--card-bg);padding:24px;border-radius:8px;border:1px solid var(--border-subtle);overflow:hidden;box-shadow:inset 0 1px #ffffff0a,0 12px 24px #00000059;transition:transform var(--transition-normal),box-shadow var(--transition-normal),border-color var(--transition-normal);animation:cardReveal .6s ease both;animation-delay:var(--card-delay, 0s)}.stat-card:after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(120% 120% at 10% 0%,rgba(255,255,255,.12),transparent 60%);opacity:0;transition:opacity var(--transition-normal);pointer-events:none}.stat-card:hover{transform:translateY(-4px);box-shadow:inset 0 1px #ffffff0d,0 18px 32px #00000073;border-color:var(--border-default)}.stat-card:hover:after{opacity:1}.stat-icon{display:none}.stat-content{display:flex;flex-direction:column;gap:4px}.stat-label{font-size:var(--text-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-tertiary);order:1}.stat-value{font-size:var(--text-4xl);font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums;line-height:1;order:2}.dashboard-sections{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:24px;padding:0 32px 32px}.dashboard-section{position:relative;background:linear-gradient(180deg,#ffffff08,#fff0),var(--card-bg);border-radius:8px;padding:20px;border:1px solid var(--border-subtle);box-shadow:inset 0 1px #ffffff0a,0 10px 22px #00000052;transition:transform var(--transition-normal),box-shadow var(--transition-normal),border-color var(--transition-normal);animation:cardReveal .6s ease both;animation-delay:var(--card-delay, 0s)}.dashboard-section:hover{transform:translateY(-3px);box-shadow:inset 0 1px #ffffff0a,0 16px 28px #0006;border-color:var(--border-default)}.dashboard-section h2{margin:0 0 16px;font-size:16px;color:var(--text-tertiary)}.dashboard-header-actions{display:flex;align-items:center}.dashboard-action-bar{position:fixed;left:0;right:0;bottom:0;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#0c0f0f00,#0c0f0fd9 30%,#0c0f0ff2),var(--bg-dark);border-top:1px solid var(--border-color);box-shadow:0 -10px 24px #0006;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:98;display:none}.action-bar-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.action-bar-button{display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;padding:10px 8px;border-radius:12px;background:var(--card-bg);border:1px solid var(--border-color);color:var(--text-secondary);font-size:12px;font-weight:600;cursor:pointer;transition:all var(--transition-normal)}.action-bar-button:hover{border-color:var(--border-default);color:var(--text-primary)}.action-bar-button.primary{background:var(--primary-color);border-color:var(--primary-color);color:#fff;box-shadow:0 10px 20px #0d73774d}.action-bar-button.primary:hover{background:var(--primary-hover)}.action-bar-label{font-size:12px}.action-bar-meta{font-size:11px;opacity:.7;font-weight:500}.dashboard-filter-sheet{position:fixed;inset:0;display:none;align-items:flex-end;justify-content:center;padding:16px;background:#0508089e;opacity:0;pointer-events:none;transition:opacity var(--transition-normal);z-index:900}.dashboard-filter-sheet.open{opacity:1;pointer-events:auto}.dashboard-filter-backdrop{position:absolute;inset:0;background:transparent;border:none;padding:0;cursor:pointer}.dashboard-filter-panel{position:relative;width:min(560px,100%);background:var(--card-bg);border:1px solid var(--border-color);border-radius:16px 16px 12px 12px;padding:16px 16px calc(24px + env(safe-area-inset-bottom));box-shadow:0 -16px 32px #0006;transform:translateY(24px);transition:transform var(--transition-normal)}.dashboard-filter-sheet.open .dashboard-filter-panel{transform:translateY(0)}.dashboard-filter-handle{width:44px;height:4px;border-radius:999px;background:var(--border-default);margin:0 auto 12px}.dashboard-filter-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.dashboard-filter-title{margin:0;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary)}.dashboard-filter-close{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary);padding:6px 12px;border-radius:8px;font-size:12px;cursor:pointer;transition:all var(--transition-normal)}.dashboard-filter-close:hover{border-color:var(--border-default);color:var(--text-primary)}.dashboard-filter-panel .date-filter{flex-direction:column;align-items:stretch;gap:10px}.dashboard-filter-panel .date-filter-btn{width:100%;display:flex;justify-content:center}@media(max-width:768px){.dashboard-page{padding-bottom:calc(96px + env(safe-area-inset-bottom))}.dashboard-page .stats-grid{grid-template-columns:1fr;gap:12px;padding:16px 20px}.dashboard-page .stat-card{padding:18px}.dashboard-header-actions{display:none}.dashboard-action-bar{display:block}.dashboard-filter-sheet{display:flex}}.stats-grid>.stat-card:nth-child(1),.frame-stats-grid>.frame-stat-card:nth-child(1),.dashboard-sections>.dashboard-section:nth-child(1),.stats-two-col>.stats-section:nth-child(1),.lane-insights>.lane-insight-card:nth-child(1),.pattern-insights>.insight-card:nth-child(1),.leave-insights>.insight-card:nth-child(1){--card-delay: 0s}.stats-grid>.stat-card:nth-child(2),.frame-stats-grid>.frame-stat-card:nth-child(2),.dashboard-sections>.dashboard-section:nth-child(2),.stats-two-col>.stats-section:nth-child(2),.lane-insights>.lane-insight-card:nth-child(2),.pattern-insights>.insight-card:nth-child(2),.leave-insights>.insight-card:nth-child(2){--card-delay: .06s}.stats-grid>.stat-card:nth-child(3),.frame-stats-grid>.frame-stat-card:nth-child(3),.dashboard-sections>.dashboard-section:nth-child(3),.stats-two-col>.stats-section:nth-child(3),.lane-insights>.lane-insight-card:nth-child(3),.pattern-insights>.insight-card:nth-child(3),.leave-insights>.insight-card:nth-child(3){--card-delay: .12s}.stats-grid>.stat-card:nth-child(4),.frame-stats-grid>.frame-stat-card:nth-child(4),.dashboard-sections>.dashboard-section:nth-child(4),.stats-two-col>.stats-section:nth-child(4),.lane-insights>.lane-insight-card:nth-child(4),.pattern-insights>.insight-card:nth-child(4),.leave-insights>.insight-card:nth-child(4){--card-delay: .18s}.stats-grid>.stat-card:nth-child(5),.frame-stats-grid>.frame-stat-card:nth-child(5){--card-delay: .24s}.stats-grid>.stat-card:nth-child(6),.frame-stats-grid>.frame-stat-card:nth-child(6){--card-delay: .3s}.stats-grid>.stat-card:nth-child(7),.frame-stats-grid>.frame-stat-card:nth-child(7){--card-delay: .36s}.stats-grid>.stat-card:nth-child(8),.frame-stats-grid>.frame-stat-card:nth-child(8){--card-delay: .42s}@media(prefers-reduced-motion:reduce){.stat-card,.frame-stat-card,.stats-section,.dashboard-section,.insight-card,.lane-insight-card,.chart-frame,.utilization-chart,.gauge-container,.benchmark-card{animation:none;transition:none;transform:none}.ball-intelligence-card .bic-photo:after{animation:none;opacity:.1}.stat-card:hover,.frame-stat-card:hover,.stats-section:hover,.dashboard-section:hover,.insight-card:hover,.lane-insight-card:hover,.chart-frame:hover,.utilization-chart:hover,.gauge-container:hover,.benchmark-card:hover{transform:none}.stat-card:after{opacity:0}}.moneyball-banner{background:var(--card-bg);padding:28px;border-radius:12px;margin:0 32px 24px;cursor:pointer;transition:all var(--transition-normal);border:2px solid var(--border-color);position:relative;overflow:hidden}.moneyball-banner:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--primary-color) 0%,var(--accent-color) 100%)}.moneyball-banner:hover{border-color:var(--primary-color);box-shadow:0 4px 16px #0d737726}.moneyball-banner:focus-visible{outline:3px solid var(--primary-color);outline-offset:2px}.moneyball-banner-content{position:relative;z-index:1}.moneyball-label{display:inline-flex;align-items:center;gap:6px;background:#0d73771a;border:1px solid rgba(13,115,119,.3);padding:6px 12px;border-radius:6px;font-size:var(--text-xs);font-weight:600;color:var(--primary-color);margin-bottom:12px;letter-spacing:.3px;text-transform:uppercase}.moneyball-heading{margin:8px 0 12px;font-size:var(--text-2xl);color:var(--text-primary);font-weight:700;line-height:1.3}.moneyball-description{margin:0 0 20px;color:var(--text-secondary);line-height:1.6;font-size:var(--text-base);max-width:800px}.moneyball-cta{display:inline-flex;align-items:center;gap:8px;background:var(--primary-color);color:#fff;padding:12px 24px;border-radius:8px;font-weight:600;font-size:var(--text-base);transition:all var(--transition-normal)}.moneyball-banner:hover .moneyball-cta{background:var(--primary-hover);transform:translate(4px)}.strategy-insights-page{padding:0}.strategy-insights-page .page-header{padding:24px 32px;border-bottom:1px solid var(--border-color);background:var(--card-bg);margin-bottom:0}.insights-intro{background:var(--primary-bg);padding:24px;border-radius:12px;margin:24px 32px;border:1px solid var(--border-color)}.insights-intro h2{margin:0 0 12px;font-size:var(--text-xl);color:var(--primary-color)}.insights-intro p{margin:0;line-height:1.6;color:var(--text-secondary);max-width:900px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:12px}.section-header h2{margin:0;font-size:var(--text-lg);color:var(--text-primary);flex:1}.metric-badge{padding:6px 12px;border-radius:12px;font-size:var(--text-sm);font-weight:600;white-space:nowrap}.metric-badge.success{background:#10b98126;color:var(--success-color)}.metric-badge.accent{background:#d4a01726;color:var(--accent-color)}.metric-badge.primary{background:#0d737726;color:var(--primary-color)}.section-description{margin:0 0 20px;color:var(--text-secondary);font-size:var(--text-base);line-height:1.6}.stats-grid.two-col{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;padding:0 32px;margin-bottom:24px}.stats-grid.two-col .stats-section{margin:0}.phase-divider{margin:48px 32px 24px;padding:16px;background:#0d73771a;border-radius:12px;border:2px solid var(--primary-color)}.phase-divider h2{margin:0 0 8px;color:var(--primary-color);font-size:var(--text-xl)}.phase-divider p{margin:0;font-size:var(--text-base);color:var(--text-secondary)}.impact-summary{background:#10b98126;padding:24px;border-radius:12px;margin:0 32px 32px;border:1px solid var(--success-color)}.impact-summary h3{margin:0 0 16px;color:var(--success-color);font-size:var(--text-lg)}.impact-summary p{margin:0 0 16px;line-height:1.7;color:var(--text-primary)}.impact-summary p:last-child{margin-bottom:0}.impact-summary .summary-footer{margin-top:24px;padding-top:16px;border-top:1px solid var(--success-color);font-size:var(--text-base);color:var(--text-primary);line-height:1.6}.chart-loading,.chart-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;color:var(--text-secondary);font-style:italic;text-align:center;padding:40px 20px}.chart-empty p{margin:8px 0}@media(max-width:900px){.stats-grid.two-col{grid-template-columns:1fr;padding:0 20px}}@media(max-width:768px){.moneyball-banner{margin:0 20px 20px;padding:20px}.moneyball-heading{font-size:var(--text-xl)}.moneyball-description{font-size:var(--text-sm)}.moneyball-cta{padding:10px 20px;font-size:var(--text-sm)}.strategy-insights-page .page-header{padding:20px}.insights-intro,.phase-divider,.impact-summary{margin-left:20px;margin-right:20px;padding:16px}.stats-section{margin:0 20px 16px;padding:16px}.section-header{flex-direction:column;align-items:flex-start}.metric-badge{align-self:flex-start}}@media(max-width:480px){.moneyball-banner{padding:16px}.moneyball-heading{font-size:var(--text-lg)}.moneyball-label{font-size:10px;padding:3px 10px}}@media(max-width:768px){.page-header{padding:20px}.stats-grid{padding:16px 20px}.dashboard-sections{grid-template-columns:1fr;padding:0 20px 20px}.centers-page{padding:20px}.centers-header{flex-direction:column;align-items:stretch}.header-actions{flex-direction:column}.centers-search{width:100%}.arsenal-content{padding:20px}}:root{--primary-color: #0D7377;--primary-hover: #0A5C5F;--primary-light: #14919B;--accent-color: #D4A017;--accent-light: #E8B82E;--success-color: #10B981;--success-light: #D1FAE5;--warning-color: #F59E0B;--warning-light: #FEF3C7;--error-color: #EF4444;--error-light: #FEE2E2;--chart-1: #0D7377;--chart-2: #D4A017;--chart-3: #10B981;--chart-4: #F59E0B;--chart-5: #EF4444;--chart-6: #14B8A6;--chart-7: #38BDF8;--chart-8: #F97316;--chart-grid: rgba(156, 163, 163, .2);--chart-band: rgba(13, 115, 119, .18);--text-primary: #F0F4F4;--text-secondary: #9CA3A3;--text-tertiary: #6B7575;--bg-base: #0C0F0F;--bg-dark: #0C0F0F;--bg-elevated: #1A1F1F;--bg-surface: #252B2B;--card-bg: #1A1F1F;--border-color: #2D3535;--border-subtle: #2D3535;--border-default: #3D4747;--border-strong: #4D5959;--font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--text-xs: .8125rem;--text-sm: .9375rem;--text-base: 1.0625rem;--text-lg: 1.1875rem;--text-xl: 1.375rem;--text-2xl: 1.625rem;--text-3xl: 2rem;--text-4xl: 2.5rem;--text-5xl: 3.25rem;--transition-fast: .1s ease;--transition-normal: .15s ease;--transition-slow: .25s ease}.date-filter{display:flex;gap:8px;flex-wrap:wrap}.date-filter-btn{padding:8px 16px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:20px;color:var(--text-secondary);font-size:13px;cursor:pointer;transition:all .2s}.date-filter-btn:hover{border-color:var(--primary-color);color:var(--text-primary)}.date-filter-btn.active{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.page-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:16px;margin-bottom:24px}.page-header .header-content{flex:1}.stat-card.highlight{border-color:var(--accent-color)}.stat-card.highlight:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent-color),var(--accent-light))}.chart-empty,.chart-loading{display:flex;align-items:center;justify-content:center;color:var(--text-secondary);font-style:italic}.chart-tooltip{background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:12px;box-shadow:0 4px 12px #0000004d}.chart-tooltip .tooltip-score{font-size:24px;font-weight:700;color:var(--primary-color);margin:0 0 4px}.chart-tooltip .tooltip-date{font-size:14px;color:var(--text-primary);margin:0 0 4px}.chart-tooltip .tooltip-tournament,.chart-tooltip .tooltip-game{font-size:12px;color:var(--text-secondary);margin:0}.strike-spare-gauges{display:flex;justify-content:center;gap:32px;flex-wrap:wrap;padding:20px 0}.gauge-container{display:flex;flex-direction:column;align-items:center;position:relative;transform-style:preserve-3d;transition:transform var(--transition-normal),box-shadow var(--transition-normal)}.gauge-container:before{content:"";position:absolute;inset:0 0 36px;border-radius:50%;background:radial-gradient(60% 60% at 30% 20%,rgba(255,255,255,.18),transparent 60%);opacity:.8;pointer-events:none;z-index:0}.gauge-container:after{content:"";position:absolute;inset:0 0 36px;border-radius:50%;box-shadow:0 12px 20px #00000059;opacity:.6;pointer-events:none;z-index:0}.gauge-container>*{position:relative;z-index:1}.gauge-container svg{filter:drop-shadow(0 8px 14px rgba(0,0,0,.35))}.gauge-container:hover{transform:perspective(1200px) translateY(-3px) rotateX(1deg)}.gauge-value{display:flex;flex-direction:column;align-items:center;text-align:center}.gauge-percentage{font-size:24px;font-weight:700;color:var(--text-primary)}.gauge-label{font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.frame-stats-detail{display:flex;justify-content:center;gap:32px;flex-wrap:wrap;padding-top:16px;border-top:1px solid var(--border-color);margin-top:16px}.frame-stat{display:flex;flex-direction:column;align-items:center;gap:4px}.frame-stat-value{font-size:20px;font-weight:600;color:var(--text-primary)}.frame-stat-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.quick-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px}.summary-item{display:flex;flex-direction:column;gap:4px;padding:16px;background:var(--bg-dark);border-radius:8px;text-align:center}.summary-label{font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.summary-value{font-size:20px;font-weight:600;color:var(--primary-color)}.gauges-section{background:var(--card-bg);border-radius:8px;padding:24px;margin-bottom:24px}.gauges-section h2{text-align:center;margin-bottom:16px}@media(max-width:768px){.page-header{flex-direction:column}.date-filter{width:100%;justify-content:flex-start}.strike-spare-gauges,.frame-stats-detail{gap:16px}.quick-summary{grid-template-columns:repeat(2,1fr)}}.stats-overview-page{padding:0}.stats-overview-page .page-header{padding:24px 32px;border-bottom:1px solid var(--border-color);background:var(--card-bg);margin-bottom:0}.stats-nav{display:flex;gap:8px;padding:16px 32px;background:var(--card-bg);border-bottom:1px solid var(--border-color);overflow-x:auto;scrollbar-width:none}.stats-nav::-webkit-scrollbar{display:none}.stats-nav-link{padding:8px 16px;border-radius:20px;font-size:14px;font-weight:500;text-decoration:none;color:var(--text-secondary);background:var(--bg-secondary);white-space:nowrap;transition:all .2s ease}.stats-nav-link:hover{color:var(--text-primary);background:var(--border-color)}.stats-nav-link.active{color:var(--bg-primary);background:var(--accent-color)}.stats-grid.four-col{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;padding:24px 32px}@media(max-width:1024px){.stats-grid.four-col{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.stats-grid.four-col{grid-template-columns:1fr}}.stats-section{position:relative;background:linear-gradient(180deg,#ffffff08,#fff0),var(--card-bg);border-radius:8px;padding:24px;margin:0 32px 24px;border:1px solid var(--border-subtle);box-shadow:inset 0 1px #ffffff08,0 12px 24px #00000052;transition:transform var(--transition-normal),box-shadow var(--transition-normal),border-color var(--transition-normal);animation:cardReveal .6s ease both;animation-delay:var(--card-delay, 0s)}.stats-section:hover{transform:translateY(-3px);box-shadow:inset 0 1px #ffffff0a,0 18px 30px #0000006b;border-color:var(--border-default)}.stats-section h2{margin:0 0 20px;font-size:18px;color:var(--text-primary);border-bottom:1px solid var(--border-color);padding-bottom:12px}.stats-two-col{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;padding:0 32px;margin-bottom:24px}.stats-two-col .stats-section{margin:0}@media(max-width:900px){.stats-two-col{grid-template-columns:1fr;padding:0 20px}}.frame-stats-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-top:20px}@media(max-width:768px){.frame-stats-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:480px){.frame-stats-grid{grid-template-columns:repeat(2,1fr)}}.frame-stat-card{background:linear-gradient(180deg,#ffffff0a,#fff0),var(--bg-dark);padding:16px;border-radius:8px;text-align:center;display:flex;flex-direction:column;gap:4px;border:1px solid var(--border-subtle);box-shadow:inset 0 1px #ffffff08,0 10px 18px #00000052;transition:transform var(--transition-normal),box-shadow var(--transition-normal),border-color var(--transition-normal);animation:cardReveal .6s ease both;animation-delay:var(--card-delay, 0s)}.frame-stat-card:hover{transform:translateY(-3px);box-shadow:inset 0 1px #ffffff08,0 16px 24px #0006;border-color:var(--border-default)}.frame-stat-big-value{font-size:24px;font-weight:700;color:var(--primary-color)}.frame-stat-card .frame-stat-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.ball-stats-table,.pattern-stats-table{margin-top:20px;overflow-x:auto}.ball-stats-table table,.pattern-stats-table table{width:100%;border-collapse:collapse}.ball-stats-table th,.ball-stats-table td,.pattern-stats-table th,.pattern-stats-table td{padding:12px;text-align:left;border-bottom:1px solid var(--border-color)}.ball-stats-table th,.pattern-stats-table th{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);font-weight:600}.ball-stats-table td,.pattern-stats-table td{font-size:14px;color:var(--text-primary)}.ball-stats-table .ball-name{display:block;font-weight:600}.ball-stats-table .ball-brand{display:block;font-size:12px;color:var(--text-secondary)}.ball-stats-table .strike-pct,.pattern-stats-table .high-game{font-weight:600;color:var(--primary-color)}.chart-tooltip .tooltip-pattern-name{font-size:14px;font-weight:600;color:var(--text-primary);margin:0 0 8px}.chart-tooltip .tooltip-stats{display:flex;flex-direction:column;gap:4px}.chart-tooltip .tooltip-stats span{font-size:12px;color:var(--text-secondary)}.chart-tooltip .tooltip-stats strong{color:var(--text-primary)}.chart-tooltip .tooltip-ball-name{font-size:14px;font-weight:600;color:var(--text-primary);margin:0 0 4px}.chart-tooltip .tooltip-ball-brand{font-size:12px;color:var(--primary-color);margin:0 0 8px}.chart-tooltip .tooltip-title{font-size:14px;font-weight:600;color:var(--text-primary);margin:0 0 4px}.chart-tooltip .tooltip-subtitle{font-size:12px;color:var(--text-secondary);margin:0 0 8px}.chart-tooltip .tooltip-flag{margin-top:6px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}.chart-tooltip .tooltip-flag.success{color:var(--success-color)}.chart-tooltip .tooltip-flag.warning{color:var(--warning-color)}.chart-tooltip .tooltip-flag.info{color:var(--primary-light)}.chart-tooltip .tooltip-flag.error{color:var(--error-color)}.bar-label{fill:var(--text-secondary);font-size:11px;font-weight:600}.chart-insight{margin-top:16px;padding:12px 14px;background:var(--card-bg);border-radius:10px;font-size:13px;color:var(--text-secondary);line-height:1.5;border:1px solid var(--border-subtle)}.chart-insight strong{color:var(--text-primary)}.chart-insight p{margin:8px 0 0}.chart-insight.success{border-color:#10b98159;background:#10b98114}.chart-insight.warning{border-color:#f59e0b59;background:#f59e0b14}.chart-insight.info{border-color:#0d737759;background:#0d737714}.chart-insight.error{border-color:#ef444459;background:#ef444414}.chart-frame{width:100%;position:relative;padding:12px;border-radius:14px;background:radial-gradient(120% 140% at 0% 0%,rgba(255,255,255,.08),transparent 60%),var(--card-bg);border:1px solid var(--border-subtle);box-shadow:inset 0 1px #ffffff0f,0 18px 32px #00000073;overflow:hidden;transition:transform var(--transition-normal),box-shadow var(--transition-normal);transform-style:preserve-3d}.chart-frame:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.08),transparent 50%);opacity:.6;pointer-events:none;z-index:0}.chart-frame:after{content:"";position:absolute;inset:0;background:radial-gradient(60% 35% at 50% 100%,rgba(13,115,119,.2),transparent 70%);opacity:.6;pointer-events:none;z-index:0}.chart-frame:hover{transform:perspective(1200px) translateY(-4px) rotateX(1deg) rotateY(-1deg);box-shadow:inset 0 1px #ffffff0f,0 26px 40px #00000080}.chart-frame>*{position:relative;z-index:1}.chart-frame svg{filter:drop-shadow(0 10px 18px rgba(0,0,0,.35))}.chart-benchmarks{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-top:12px}.benchmark-card{background:linear-gradient(160deg,#ffffff0f,#fff0),var(--bg-surface);border:1px solid var(--border-subtle);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:4px;box-shadow:inset 0 1px #ffffff08,0 10px 18px #00000047;transition:transform var(--transition-normal),box-shadow var(--transition-normal)}.benchmark-card:hover{transform:translateY(-2px);box-shadow:inset 0 1px #ffffff0a,0 16px 24px #00000061}.benchmark-label{font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-tertiary)}.benchmark-value{font-size:14px;font-weight:600;color:var(--text-primary)}.summary-section{margin:0 32px 32px}.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px}.summary-stat{background:var(--bg-dark);padding:20px;border-radius:8px;text-align:center;display:flex;flex-direction:column;gap:8px}.summary-stat .summary-label{font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.summary-stat .summary-value{font-size:24px;font-weight:700;color:var(--text-primary)}.empty-state.small{padding:40px 20px}.empty-state.small p{margin:0;color:var(--text-secondary);font-style:italic}.ball-performance-chart,.pattern-performance-chart{width:100%}.impact-card{display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 16px;border-radius:12px;border:1px solid var(--border-subtle);text-align:center;background:linear-gradient(135deg,#0d73771f,#0d737705);margin-bottom:16px}.impact-card.success{border-color:#10b98173;background:linear-gradient(135deg,#10b98133,#10b9810a)}.impact-card.warning{border-color:#f59e0b73;background:linear-gradient(135deg,#f59e0b33,#f59e0b0a)}.impact-title{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-secondary)}.impact-value{font-size:28px;font-weight:700;color:var(--text-primary)}.impact-card.success .impact-value{color:var(--success-color)}.impact-card.warning .impact-value{color:var(--warning-color)}.impact-subtitle{font-size:12px;color:var(--text-secondary)}.mojo-chart{width:100%}.quadrant-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.quadrant-item{padding:10px 12px;border-radius:10px;border:1px solid var(--border-subtle);background:#ffffff05}.quadrant-title{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}.quadrant-desc{font-size:11px;color:var(--text-secondary);margin-top:4px}.quadrant-icon{width:16px;height:16px}.quadrant-item.keeper{border-color:#10b98180;background:#10b98114;color:var(--success-color)}.quadrant-item.keeper .quadrant-icon{filter:brightness(0) saturate(100%) invert(64%) sepia(98%) saturate(363%) hue-rotate(78deg) brightness(95%) contrast(89%)}.quadrant-item.lucky{border-color:#d4a0178c;background:#d4a0171a;color:var(--accent-color)}.quadrant-item.lucky .quadrant-icon{filter:brightness(0) saturate(100%) invert(77%) sepia(76%) saturate(494%) hue-rotate(4deg) brightness(98%) contrast(93%)}.quadrant-item.accuracy{border-color:#0d737780;background:#0d73771a;color:var(--primary-light)}.quadrant-item.accuracy .quadrant-icon{filter:brightness(0) saturate(100%) invert(46%) sepia(98%) saturate(1178%) hue-rotate(196deg) brightness(101%) contrast(91%)}.quadrant-item.needs-work{border-color:#ef444480;background:#ef44441a;color:var(--error-color)}.quadrant-item.needs-work .quadrant-icon{filter:brightness(0) saturate(100%) invert(36%) sepia(94%) saturate(1945%) hue-rotate(346deg) brightness(91%) contrast(89%)}.surface-effectiveness-visualization{width:100%}.surface-view-toggle{display:flex;justify-content:flex-end;gap:4px;margin-bottom:16px}.view-toggle{padding:8px 14px;border:1px solid var(--border-color);background:var(--card-bg);color:var(--text-secondary);font-size:13px;font-weight:600;cursor:pointer;transition:all .2s}.view-toggle:hover{border-color:var(--primary-color);color:var(--text-primary)}.view-toggle.active{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.view-toggle:first-child{border-radius:8px 0 0 8px}.view-toggle:last-child{border-radius:0 8px 8px 0}.surface-heatmap{display:flex;flex-direction:column;gap:12px}.surface-heatmap-header{display:flex;gap:8px}.surface-heatmap-pattern{text-align:center;padding:4px 0}.surface-heatmap-pattern-label{font-size:13px;font-weight:600;color:var(--text-primary)}.surface-heatmap-pattern-hint{font-size:10px;color:var(--text-secondary);margin-top:2px}.surface-heatmap-subheader{display:flex;gap:8px;margin-bottom:4px}.surface-heatmap-volume-group{display:flex}.surface-heatmap-volume{text-align:center;font-size:10px;color:var(--text-secondary);padding:2px 0}.surface-heatmap-grid{overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:4px}.surface-heatmap-row{display:flex;align-items:center;gap:8px}.surface-heatmap-row-label{font-size:12px;font-weight:500;color:var(--text-primary);text-align:right;padding-right:8px}.surface-heatmap-row-group{display:flex}.surface-heatmap-cell{border-radius:6px;border:1px solid var(--border-color);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:transform .2s ease,box-shadow .2s ease}.surface-heatmap-cell.has-data:hover{transform:scale(1.05);box-shadow:0 6px 16px #0000004d}.surface-heatmap-score{font-size:15px;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}.surface-heatmap-games{font-size:10px;color:#ffffffd9}.surface-heatmap-empty{font-size:10px;color:var(--text-secondary)}.surface-heatmap-legend{display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;color:var(--text-secondary);margin-top:8px}.surface-heatmap-gradient{width:200px;height:12px;border-radius:6px;border:1px solid var(--border-color);background:linear-gradient(to right,#ef4444,#f59e0b,#22c55e)}.surface-scatter-legend{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:16px;font-size:12px}.surface-legend-item{display:flex;align-items:center;gap:8px}.surface-legend-dot{width:12px;height:12px;border-radius:50%;opacity:.8;box-shadow:0 0 0 1px #00000059}.surface-legend-label{color:var(--text-primary)}.surface-size-legend{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px;margin-top:12px;font-size:11px;color:var(--text-secondary)}.surface-size-label{text-transform:uppercase;letter-spacing:.4px;font-weight:600}.surface-size-item{display:flex;align-items:center;gap:6px}.surface-size-dot{border-radius:999px;background:var(--text-secondary);opacity:.6;display:inline-block}.surface-size-value{color:var(--text-secondary)}.utilization-chart{position:relative;padding:12px;border-radius:14px;background:radial-gradient(120% 140% at 0% 0%,rgba(255,255,255,.08),transparent 60%),var(--card-bg);border:1px solid var(--border-subtle);box-shadow:inset 0 1px #ffffff0f,0 18px 32px #0006;overflow:hidden;transition:transform var(--transition-normal),box-shadow var(--transition-normal);transform-style:preserve-3d}.utilization-chart:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.08),transparent 50%);opacity:.6;pointer-events:none;z-index:0}.utilization-chart:after{content:"";position:absolute;inset:0;background:radial-gradient(60% 35% at 50% 100%,rgba(13,115,119,.2),transparent 70%);opacity:.6;pointer-events:none;z-index:0}.utilization-chart>*{position:relative;z-index:1}.utilization-chart svg{filter:drop-shadow(0 10px 18px rgba(0,0,0,.35))}.utilization-chart:hover{transform:perspective(1200px) translateY(-4px) rotateX(1deg) rotateY(-1deg);box-shadow:inset 0 1px #ffffff0f,0 26px 38px #00000080}.donut-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none}.donut-value{font-size:30px;font-weight:700;color:var(--text-primary)}.donut-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary)}.utilization-assessment{margin-top:16px;padding:14px;border-radius:10px;text-align:center;background:var(--card-bg);border:1px solid var(--border-subtle)}.utilization-assessment.success{border-color:#10b98173;background:#10b98114}.utilization-assessment.success .assessment-title{color:var(--success-color)}.utilization-assessment.warning{border-color:#f59e0b73;background:#f59e0b14}.utilization-assessment.warning .assessment-title{color:var(--warning-color)}.utilization-assessment.error{border-color:#ef444473;background:#ef444414}.utilization-assessment.error .assessment-title{color:var(--error-color)}.assessment-title{font-size:16px;font-weight:600;color:var(--text-primary)}.assessment-subtitle{font-size:12px;color:var(--text-secondary);margin-top:6px}.unused-balls{margin-top:16px;padding:12px 14px;background:var(--card-bg);border-radius:10px;border:1px solid var(--border-subtle)}.unused-balls-title{font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:8px}.unused-balls-list{margin:0;padding-left:18px;font-size:12px;color:var(--text-secondary);line-height:1.6}.unused-balls-more{font-style:italic}.pins-after-spare-gauge{display:flex;flex-direction:column;align-items:center;gap:12px}.pins-after-spare-stats{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}.pins-after-spare-stats .quality-label{font-size:16px;font-weight:600}.pins-after-spare-stats .quality-label.success{color:var(--success-color)}.pins-after-spare-stats .quality-label.warning{color:var(--warning-color)}.pins-after-spare-stats .quality-label.error{color:var(--error-color)}.pins-after-spare-stats .potential-ceiling{font-size:24px;font-weight:700;color:var(--text-primary)}.pins-after-spare-stats .subtitle{font-size:12px;color:var(--text-secondary)}@media(max-width:768px){.stats-overview-page .page-header{padding:20px}.stats-grid.four-col{padding:16px 20px}.stats-section{margin:0 20px 16px;padding:16px}.stats-section h2{font-size:16px;margin-bottom:16px}.summary-section{margin:0 20px 20px}}.tournaments-page{padding:0}.tournaments-controls{display:flex;gap:16px;padding:0 32px 24px;flex-wrap:wrap}.tournaments-controls .search-input{flex:1;min-width:200px;max-width:400px;padding:12px 16px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:14px}.tournaments-controls .search-input:focus{outline:none;border-color:var(--primary-color)}.sort-controls{display:flex;gap:8px}.sort-btn{padding:10px 16px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;color:var(--text-secondary);font-size:13px;cursor:pointer;transition:all .2s}.sort-btn:hover{border-color:var(--primary-color);color:var(--text-primary)}.tournaments-content{padding:0 32px 32px}.tournaments-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px}.tournament-card{display:flex;flex-direction:column;background:var(--card-bg);border-radius:8px;padding:20px;text-decoration:none;color:inherit;transition:transform .2s,box-shadow .2s}.tournament-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000004d}.tournament-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.tournament-name{margin:0;font-size:18px;font-weight:600;color:var(--text-primary)}.tournament-date{font-size:12px;color:var(--text-secondary);white-space:nowrap}.tournament-info{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.tournament-info .info-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary)}.tournament-info .info-icon{font-size:14px}.tournament-info .info-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tournament-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding-top:16px;border-top:1px solid var(--border-color)}.tournament-stats.empty{display:flex;justify-content:center}.tournament-stats .no-games{font-size:13px;color:var(--text-secondary);font-style:italic}.tournament-stats .stat{display:flex;flex-direction:column;align-items:center;gap:2px}.tournament-stats .stat-value{font-size:18px;font-weight:700;color:var(--text-primary)}.tournament-stats .stat.highlight .stat-value{color:var(--accent-color)}.tournament-stats .stat-label{font-size:10px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.tournament-detail-page{padding:0}.tournament-detail-page .back-link{display:inline-block;color:var(--primary-color);font-size:14px;text-decoration:none;margin-bottom:8px}.tournament-detail-page .back-link:hover{text-decoration:underline}.view-plan-btn{padding:12px 24px;background:var(--primary-color);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;text-decoration:none;cursor:pointer;transition:background .2s}.view-plan-btn:hover{background:var(--primary-hover)}.tournament-info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;padding:24px 32px}.info-card{display:flex;gap:16px;background:var(--card-bg);padding:16px;border-radius:8px}.info-card-icon{font-size:24px}.info-card-content{display:flex;flex-direction:column;gap:4px}.info-card-label{font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.info-card-value{font-size:14px;color:var(--text-primary);font-weight:500}.tournament-stats-section,.games-section,.notes-section{background:var(--card-bg);border-radius:8px;padding:24px;margin:0 32px 24px}.tournament-stats-section h2,.games-section h2,.notes-section h2{margin:0 0 20px;font-size:18px;color:var(--text-primary);border-bottom:1px solid var(--border-color);padding-bottom:12px}.stats-row{display:flex;gap:24px;flex-wrap:wrap}.stat-box{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px 24px;background:var(--bg-dark);border-radius:8px;min-width:100px}.stat-box-value{font-size:28px;font-weight:700;color:var(--text-primary)}.stat-box.highlight .stat-box-value{color:var(--accent-color)}.stat-box-label{font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.games-list{display:flex;flex-direction:column;gap:8px}.game-row{display:flex;align-items:center;gap:16px;padding:12px 16px;background:var(--bg-dark);border-radius:8px}.game-number{font-size:14px;color:var(--text-secondary);min-width:70px}.game-score{font-size:24px;font-weight:700;color:var(--primary-color);min-width:60px}.game-lane{font-size:13px;color:var(--text-secondary)}.game-notes{flex:1;font-size:13px;color:var(--text-secondary);font-style:italic;text-align:right}.tournament-notes{color:var(--text-secondary);line-height:1.6}.tournament-plan-page{padding:0}.tournament-plan-page .back-link{display:inline-block;color:var(--primary-color);font-size:14px;text-decoration:none;margin-bottom:8px}.tournament-plan-page .back-link:hover{text-decoration:underline}.plan-meta{display:flex;align-items:center;gap:12px}.plan-date{font-size:13px;color:var(--text-secondary)}.customized-badge{padding:4px 10px;background:var(--accent-color);color:#fff;font-size:11px;font-weight:600;border-radius:8px;text-transform:uppercase}.plan-section{background:var(--card-bg);border-radius:8px;padding:24px;margin:0 32px 24px}.plan-section h2{margin:0 0 20px;font-size:18px;color:var(--text-primary);border-bottom:1px solid var(--border-color);padding-bottom:12px}.pattern-characteristics{color:var(--text-secondary);line-height:1.6;margin:0 0 20px}.personal-analysis{display:flex;flex-direction:column;gap:12px}.analysis-item{display:flex;gap:12px;padding:16px;background:var(--bg-dark);border-radius:8px;border-left:3px solid}.analysis-item.good{border-left-color:var(--success-color)}.analysis-item.warning{border-left-color:var(--accent-color)}.analysis-item.tip{border-left-color:var(--primary-color)}.analysis-icon{font-size:20px}.analysis-content{flex:1}.analysis-label{display:block;font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.analysis-content p{margin:0;color:var(--text-primary);line-height:1.5}.arsenal-list{display:flex;flex-direction:column;gap:12px}.arsenal-item{display:flex;align-items:center;gap:16px;padding:16px;background:var(--bg-dark);border-radius:8px}.arsenal-order{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--primary-color);color:#fff;font-weight:700;border-radius:50%}.arsenal-info{flex:1;display:flex;flex-direction:column;gap:2px}.arsenal-info .ball-name{font-weight:600;color:var(--text-primary)}.arsenal-info .ball-brand{font-size:13px;color:var(--primary-color)}.arsenal-info .ball-surface{font-size:12px;color:var(--text-secondary)}.arsenal-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.phase-badge{padding:4px 10px;background:var(--border-color);color:var(--text-primary);font-size:11px;font-weight:600;border-radius:8px}.motion-tag{font-size:12px;color:var(--text-secondary)}.transition-list{display:flex;flex-direction:column;gap:16px}.transition-phase{padding:16px;background:var(--bg-dark);border-radius:8px}.phase-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.phase-name{font-weight:600;color:var(--primary-color)}.phase-timing{font-size:12px;color:var(--text-secondary)}.phase-details{display:flex;flex-direction:column;gap:8px}.phase-balls,.phase-line,.phase-surface,.phase-adjustment{display:flex;gap:8px;align-items:baseline}.detail-label{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;min-width:100px}.detail-value{color:var(--text-primary);font-size:14px}.phase-adjustment .detail-value{color:var(--warning-color);font-weight:500}.rules-list{display:flex;flex-direction:column;gap:16px}.rule-item{padding:16px;background:var(--bg-dark);border-radius:8px}.rule-if,.rule-then,.rule-why{display:flex;gap:12px;margin-bottom:8px}.rule-why{margin-bottom:0}.rule-label{min-width:50px;font-size:11px;font-weight:700;color:var(--primary-color);text-transform:uppercase}.rule-if .rule-label{color:var(--warning-color)}.rule-then .rule-label{color:var(--success-color)}.rule-why .rule-label{color:var(--text-secondary)}.rule-text{color:var(--text-primary);font-size:14px;line-height:1.5}.rule-if .rule-text{color:var(--warning-color)}.rule-then .rule-text{color:var(--success-color)}.practice-list{display:flex;flex-direction:column;gap:8px}.practice-item{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--bg-dark);border-radius:8px}.practice-order{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--border-color);color:var(--text-primary);font-size:12px;font-weight:600;border-radius:50%}.practice-content{flex:1;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}.practice-ball{color:var(--text-primary);font-weight:500}.practice-surface{font-size:12px;color:var(--text-secondary);padding:2px 8px;background:var(--bg-elevated);border-radius:4px}.practice-line{font-size:13px;color:var(--primary-color);font-family:monospace}.practice-purpose{flex-basis:100%;font-size:13px;color:var(--text-secondary);font-style:italic}.additional-notes{color:var(--text-secondary);line-height:1.6;white-space:pre-wrap}.loading-state,.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-state .spinner{margin-bottom:16px}.loading-state p,.error-state p{color:var(--text-secondary)}.error-state h3{margin:0 0 8px;color:var(--text-primary)}@media(max-width:768px){.tournaments-controls,.tournaments-content{padding:0 20px 20px}.tournaments-grid{grid-template-columns:1fr}.tournament-info-grid{padding:16px 20px;grid-template-columns:1fr}.tournament-stats-section,.games-section,.notes-section,.plan-section{margin:0 20px 16px;padding:16px}.stats-row{gap:12px}.stat-box{padding:12px 16px;min-width:80px}.game-row{flex-wrap:wrap}.game-notes{width:100%;text-align:left;margin-top:8px}}.games-page{padding:24px 32px}.games-controls{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;flex-wrap:wrap}.filter-toggle{padding:8px 16px;background:#2a2a4a;border:1px solid #3a3a5a;border-radius:8px;color:#ccc;cursor:pointer;display:flex;align-items:center;gap:8px}.filter-toggle:hover,.filter-toggle.active{background:#3a3a5a;border-color:var(--primary-color);color:#fff}.filter-badge{background:var(--primary-color);color:#fff;width:18px;height:18px;border-radius:50%;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}.sort-controls{display:flex;align-items:center;gap:8px}.sort-label{color:var(--text-secondary);font-size:14px}.sort-btn{padding:6px 12px;background:#2a2a4a;border:1px solid #3a3a5a;border-radius:6px;color:var(--text-tertiary);font-size:13px;cursor:pointer}.sort-btn:hover{background:#3a3a5a;color:#fff}.sort-btn.active{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.filters-panel{display:flex;gap:16px;padding:16px;background:var(--card-bg);border-radius:8px;margin-bottom:16px;flex-wrap:wrap;align-items:flex-end}.filters-panel .filter-group{display:flex;flex-direction:column;gap:6px}.filters-panel .filter-group label{font-size:12px;color:var(--text-secondary);text-transform:uppercase}.filters-panel .filter-group select,.filters-panel .filter-group input{padding:8px 12px;background:var(--bg-surface);border:1px solid #3a3a5a;border-radius:6px;color:var(--text-primary);font-size:14px;min-width:150px}.filters-panel .filter-group input[type=number]{width:100px;min-width:unset}.clear-filters-btn{padding:8px 16px;background:transparent;border:1px solid #666;border-radius:6px;color:#999;cursor:pointer}.clear-filters-btn:hover{border-color:#ff6b6b;color:#ff6b6b}.games-content{background:var(--card-bg);border-radius:8px;overflow:hidden}.games-table-container{overflow-x:auto}.games-table{width:100%;border-collapse:collapse}.games-table th{padding:14px 16px;text-align:left;font-size:12px;text-transform:uppercase;color:var(--text-secondary);background:var(--bg-surface);border-bottom:1px solid #3a3a5a}.games-table td{padding:14px 16px;border-bottom:1px solid #2a2a4a}.games-table tr:hover{background:#2a2a4a}.games-table .date-cell{color:var(--text-tertiary);white-space:nowrap}.games-table .tournament-cell a{color:var(--primary-color);text-decoration:none}.games-table .tournament-cell a:hover{text-decoration:underline}.games-table .game-num-cell{color:var(--text-secondary);font-family:monospace}.games-table .score-cell{font-weight:600;font-size:16px}.games-table .score-cell.score-excellent{color:#4ade80}.games-table .score-cell.score-good{color:#60a5fa}.games-table .score-cell.score-average{color:#fbbf24}.games-table .score-cell.score-low{color:#f87171}.games-table .lane-cell,.games-table .pattern-cell{color:var(--text-tertiary)}.games-table .actions-cell{text-align:right}.games-table .view-btn{padding:6px 12px;background:#3a3a5a;border-radius:6px;color:var(--text-primary);font-size:13px;text-decoration:none}.games-table .view-btn:hover{background:var(--primary-color)}.pagination{display:flex;justify-content:center;align-items:center;gap:16px;padding:20px;border-top:1px solid #2a2a4a}.page-btn{padding:8px 16px;background:#3a3a5a;border:none;border-radius:6px;color:var(--text-primary);cursor:pointer}.page-btn:hover:not(:disabled){background:var(--primary-color)}.page-btn:disabled{opacity:.5;cursor:not-allowed}.page-info{color:var(--text-secondary);font-size:14px}.game-detail-page{padding:24px 32px}.game-detail-page .back-link{display:inline-block;color:var(--text-secondary);text-decoration:none;font-size:14px;margin-bottom:8px}.game-detail-page .back-link:hover{color:var(--primary-color)}.game-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:32px}.game-info-grid .info-card{display:flex;align-items:center;gap:12px;background:var(--card-bg);padding:16px;border-radius:10px}.game-info-grid .info-icon{font-size:24px}.game-info-grid .info-content{display:flex;flex-direction:column}.game-info-grid .info-label{font-size:12px;color:var(--text-secondary);text-transform:uppercase}.game-info-grid .info-value{font-size:16px;color:var(--text-primary);font-weight:500}.game-info-grid .info-value.score-highlight{font-size:24px;font-weight:700;color:#4ade80}.scorecard-section{margin-bottom:32px}.scorecard-section h2{margin:0 0 16px;font-size:18px;color:var(--text-primary)}.scorecard{background:var(--card-bg);border-radius:8px;padding:20px;overflow-x:auto}.scorecard-frames{display:flex;gap:4px;min-width:max-content}.scorecard .frame{display:flex;flex-direction:column;align-items:center;min-width:60px;background:var(--bg-surface);border-radius:8px;overflow:hidden}.scorecard .frame-tenth{min-width:90px}.scorecard .frame-number{width:100%;padding:6px;text-align:center;font-size:12px;color:var(--text-secondary);background:#2a2a4a}.scorecard .frame-rolls{display:flex;border-bottom:1px solid #2a2a4a}.scorecard .frame-pins{display:flex;justify-content:center;padding:2px 0;background:var(--bg-elevated, #1A1F1F);border-bottom:1px solid #2a2a4a}.scorecard .frame-pins .pin-diagram{transform:scale(.9)}.scorecard .tenth-pins{display:flex;justify-content:center;gap:2px;padding:2px}.scorecard .tenth-pins .pin-diagram{transform:scale(.75);margin:-4px}.scorecard .tenth-rolls{width:100%}.scorecard .roll{width:30px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;color:var(--text-primary);border-right:1px solid #2a2a4a}.scorecard .roll:last-child{border-right:none}.scorecard .roll.strike{color:#4ade80}.scorecard .roll.spare{color:#60a5fa}.scorecard .roll.gutter{color:#666}.scorecard .frame-score{padding:8px;font-size:18px;font-weight:600;color:#fff;min-height:36px;display:flex;align-items:center;justify-content:center}.scorecard .tenth-score{min-width:90px}.scorecard .frame-ball{font-size:10px;color:#666;padding-bottom:4px}.scorecard-total{display:flex;justify-content:flex-end;align-items:center;gap:16px;margin-top:16px;padding-top:16px;border-top:1px solid #2a2a4a}.scorecard-total .total-label{font-size:14px;color:var(--text-secondary);text-transform:uppercase}.scorecard-total .total-value{font-size:32px;font-weight:700;color:#4ade80}.game-stats-section{margin-bottom:32px}.game-stats-section h2{margin:0 0 16px;font-size:18px;color:var(--text-primary)}.stats-grid.three-col{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.game-stats-section .stat-card{background:var(--card-bg);padding:20px;border-radius:10px;text-align:center}.game-stats-section .stat-value{font-size:36px;font-weight:700;line-height:1}.game-stats-section .stat-value.strike-color{color:#4ade80}.game-stats-section .stat-value.spare-color{color:#60a5fa}.game-stats-section .stat-value.open-color{color:#f87171}.game-stats-section .stat-label{font-size:14px;color:var(--text-secondary);margin-top:4px}.game-stats-section .stat-pct{font-size:12px;color:#666;margin-top:4px}.balls-used-section{margin-bottom:32px}.balls-used-section h2{margin:0 0 16px;font-size:18px;color:var(--text-primary)}.balls-grid{display:flex;flex-wrap:wrap;gap:12px}.ball-used-card{display:flex;flex-direction:column;background:var(--card-bg);padding:12px 16px;border-radius:8px;min-width:140px}.ball-used-card .ball-name{font-weight:600;color:var(--text-primary)}.ball-used-card .ball-brand{font-size:12px;color:var(--text-secondary)}.ball-used-card .ball-frames{font-size:12px;color:var(--primary-color);margin-top:4px}.game-notes-section{margin-bottom:32px}.game-notes-section h2{margin:0 0 16px;font-size:18px;color:var(--text-primary)}.game-notes-section .notes-content{background:var(--card-bg);padding:16px;border-radius:8px;color:#ccc;line-height:1.6;white-space:pre-wrap}.frame-details-section{margin-bottom:32px}.frame-details-section h2{margin:0 0 16px;font-size:18px;color:var(--text-primary)}.frame-details-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.frame-detail-card{background:var(--card-bg);padding:14px;border-radius:8px}.frame-detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.frame-detail-header .frame-num{font-weight:600;color:var(--text-primary)}.frame-detail-header .mark{width:24px;height:24px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-weight:700}.frame-detail-header .mark.strike{background:#4ade8033;color:#4ade80}.frame-detail-header .mark.spare{background:#60a5fa33;color:#60a5fa}.frame-detail-header .mark.open{background:#f8717133;color:#f87171}.frame-detail-rolls{display:flex;gap:12px;font-size:13px;color:var(--text-tertiary);margin-bottom:8px}.frame-detail-ball{font-size:12px;color:var(--text-secondary)}.frame-detail-leave{font-size:12px;color:#fbbf24;margin-top:4px}.frame-detail-notes{font-size:12px;color:#666;font-style:italic;margin-top:4px}@media(max-width:768px){.games-page{padding:16px 20px}.games-controls{flex-direction:column;align-items:stretch}.sort-controls{flex-wrap:wrap;justify-content:center}.filters-panel{flex-direction:column;gap:12px}.filters-panel .filter-group select,.filters-panel .filter-group input{width:100%;min-width:unset}.game-detail-page{padding:16px 20px}.game-info-grid{grid-template-columns:1fr 1fr}.stats-grid.three-col,.frame-details-grid{grid-template-columns:1fr}.scorecard{padding:12px}.scorecard .frame{min-width:50px}.scorecard .frame-tenth{min-width:75px}.scorecard .roll{width:25px;height:28px;font-size:14px}.scorecard .frame-score{font-size:14px}}.data-quality-page{padding:24px 32px}.data-quality-page .page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.refresh-btn{padding:10px 20px;background:#3a3a5a;border:none;border-radius:8px;color:var(--text-primary);font-size:14px;cursor:pointer}.refresh-btn:hover:not(:disabled){background:var(--primary-color)}.refresh-btn:disabled{opacity:.6;cursor:not-allowed}.dq-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.dq-summary-card{display:flex;align-items:center;gap:16px;background:var(--card-bg);padding:20px;border-radius:8px;border-left:4px solid #3a3a5a}.dq-summary-card.all-clear{border-left-color:#4ade80;background:linear-gradient(135deg,var(--card-bg) 0%,rgba(74,222,128,.1) 100%)}.dq-summary-card.has-issues{border-left-color:#f87171}.dq-summary-card .summary-icon{font-size:28px}.dq-summary-card .summary-content{display:flex;flex-direction:column}.dq-summary-card .summary-value{font-size:28px;font-weight:700;color:#fff;line-height:1}.dq-summary-card .summary-label{font-size:13px;color:var(--text-secondary);margin-top:4px}.dq-tabs{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap;padding-bottom:16px;border-bottom:1px solid #2a2a4a}.dq-tab{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--card-bg);border:1px solid #3a3a5a;border-radius:8px;color:var(--text-tertiary);font-size:13px;cursor:pointer;white-space:nowrap}.dq-tab:hover{background:#2a2a4a;color:var(--text-primary)}.dq-tab.active{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.dq-tab .tab-icon{font-size:14px}.dq-tab .tab-count{background:#fff3;padding:2px 8px;border-radius:8px;font-size:12px;font-weight:600}.dq-tab.active .tab-count{background:#ffffff4d}.dq-issues-container{background:var(--card-bg);border-radius:8px;padding:20px;min-height:200px;margin-bottom:32px}.dq-issues-list{display:flex;flex-direction:column;gap:12px}.dq-issue-card{background:var(--bg-surface);border-radius:10px;padding:16px;border-left:4px solid #3a3a5a}.dq-issue-card.severity-high{border-left-color:#f87171}.dq-issue-card.severity-medium{border-left-color:#fbbf24}.dq-issue-card.severity-low{border-left-color:#4ade80}.issue-header{display:flex;align-items:center;gap:10px;margin-bottom:10px}.issue-icon{font-size:18px}.issue-type{font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.issue-severity{margin-left:auto;padding:3px 10px;border-radius:8px;font-size:11px;font-weight:600;text-transform:uppercase}.issue-severity.high{background:#f8717133;color:#f87171}.issue-severity.medium{background:#fbbf2433;color:#fbbf24}.issue-severity.low{background:#4ade8033;color:#4ade80}.issue-body{margin-bottom:12px}.issue-entity{font-weight:600;color:var(--text-primary);margin-bottom:4px}.issue-entity a{color:var(--primary-color);text-decoration:none}.issue-entity a:hover{text-decoration:underline}.issue-description{font-size:14px;color:var(--text-tertiary)}.issue-actions{display:flex;justify-content:flex-end}.fix-btn{padding:8px 16px;background:#3a3a5a;border-radius:6px;color:var(--text-primary);font-size:13px;text-decoration:none}.fix-btn:hover{background:var(--primary-color)}.dq-help-section{background:var(--card-bg);border-radius:8px;padding:24px}.dq-help-section h3{margin:0 0 20px;font-size:16px;color:var(--text-primary)}.help-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}.help-item{display:flex;gap:12px;padding:12px;background:var(--bg-surface);border-radius:8px}.help-icon{font-size:20px;flex-shrink:0}.help-content strong{display:block;color:var(--text-primary);margin-bottom:4px;font-size:14px}.help-content p{margin:0;font-size:13px;color:var(--text-secondary);line-height:1.4}@media(max-width:768px){.data-quality-page{padding:16px 20px}.data-quality-page .page-header{flex-direction:column;gap:16px}.refresh-btn{align-self:flex-start}.dq-summary-grid{grid-template-columns:repeat(2,1fr)}.dq-tabs{gap:6px}.dq-tab{padding:8px 12px;font-size:12px}.dq-tab .tab-icon{display:none}.help-grid{grid-template-columns:1fr}}.export-page{padding:24px 32px;max-width:1200px;margin:0 auto}.export-page .page-header{margin-bottom:32px}.export-page h1{color:#fff;font-size:28px;font-weight:600;margin:0 0 8px}.export-page .page-subtitle{color:var(--text-secondary);font-size:14px;margin:0}.export-tabs{display:flex;gap:8px;margin-bottom:32px;border-bottom:1px solid var(--border-color);padding-bottom:16px}.export-tab{display:flex;align-items:center;gap:8px;padding:12px 20px;background:#1a1a1a;border:1px solid var(--border-color);border-radius:8px;color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.export-tab:hover{background:#252525;color:#fff;border-color:#444}.export-tab.active{background:#2d5016;border-color:#4a7c23;color:#fff}.export-tab .tab-icon{font-size:16px}.export-section{display:none}.export-section.active{display:block}.export-section h2{color:#fff;font-size:20px;font-weight:600;margin:0 0 8px}.export-section>p{color:var(--text-secondary);font-size:14px;margin:0 0 24px}.export-preview-area{display:flex;flex-direction:column;gap:24px}.export-preview{background:#1a1a1a;border:1px solid var(--border-color);border-radius:8px;padding:24px;display:flex;justify-content:center;align-items:center;min-height:300px}.export-actions{display:flex;gap:12px;flex-wrap:wrap}.export-btn{display:flex;align-items:center;gap:8px;padding:12px 20px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.export-btn.primary{background:#4a7c23;border:none;color:#fff}.export-btn.primary:hover{background:#5a9428}.export-btn.primary:disabled{background:var(--border-color);color:#666;cursor:not-allowed}.export-btn.secondary{background:transparent;border:1px solid #444;color:#fff}.export-btn.secondary:hover{background:#252525;border-color:#555}.export-btn.secondary:disabled{border-color:var(--border-color);color:#555;cursor:not-allowed}.export-stats-card{width:400px;background:linear-gradient(135deg,#1a1a1a,#252525);border-radius:16px;padding:24px;color:#fff;font-family:system-ui,-apple-system,BlinkMacSystemFont,sans-serif}.stats-card-header{display:flex;align-items:center;gap:12px;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border-color)}.stats-card-icon{font-size:32px}.stats-card-title{flex:1}.stats-card-title h3{margin:0 0 4px;font-size:18px;font-weight:600;color:#fff}.stats-card-title span{font-size:12px;color:var(--text-secondary)}.stats-card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:20px}.stats-card-stat{background:#ffffff0d;border-radius:8px;padding:16px;text-align:center}.stats-card-stat .stat-value{font-size:28px;font-weight:700;color:#4a7c23;margin-bottom:4px}.stats-card-stat .stat-label{font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.stats-card-footer{display:flex;justify-content:space-between;align-items:center;padding-top:16px;border-top:1px solid var(--border-color)}.stats-card-branding{display:flex;align-items:center;gap:8px}.stats-card-branding .brand-icon{font-size:20px}.stats-card-branding span{font-size:14px;font-weight:600;color:#4a7c23}.stats-card-date{font-size:11px;color:#666}.export-tournament-card{width:420px;background:linear-gradient(135deg,#1a1a1a,#252525);border-radius:16px;padding:24px;color:#fff;font-family:system-ui,-apple-system,BlinkMacSystemFont,sans-serif}.tournament-card-header{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border-color)}.tournament-card-header h3{margin:0 0 8px;font-size:20px;font-weight:600;color:#fff}.tournament-card-meta{display:flex;flex-wrap:wrap;gap:12px}.tournament-card-meta span{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary)}.tournament-card-scores{margin-bottom:20px}.tournament-card-scores h4{margin:0 0 12px;font-size:14px;font-weight:500;color:var(--text-secondary)}.scores-grid{display:flex;flex-wrap:wrap;gap:8px}.score-badge{background:#4a7c2333;border:1px solid #4a7c23;border-radius:8px;padding:8px 16px;font-size:18px;font-weight:600;color:#fff}.score-badge.high{background:#4a7c2366;border-color:#5a9428}.score-badge.low{background:#ffffff0d;border-color:#444;color:var(--text-secondary)}.tournament-card-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}.tournament-stat{background:#ffffff0d;border-radius:8px;padding:12px;text-align:center}.tournament-stat .stat-value{font-size:20px;font-weight:700;color:#4a7c23;margin-bottom:2px}.tournament-stat .stat-label{font-size:10px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.tournament-card-footer{display:flex;justify-content:space-between;align-items:center;padding-top:16px;border-top:1px solid var(--border-color)}.csv-export-options{display:flex;flex-direction:column;gap:16px}.csv-option-card{background:#1a1a1a;border:1px solid var(--border-color);border-radius:8px;padding:20px;display:flex;justify-content:space-between;align-items:center;transition:all .2s ease}.csv-option-card:hover{border-color:#444;background:#1f1f1f}.csv-option-info{display:flex;align-items:center;gap:16px}.csv-option-icon{font-size:28px}.csv-option-details h4{margin:0 0 4px;font-size:16px;font-weight:500;color:#fff}.csv-option-details p{margin:0;font-size:13px;color:var(--text-secondary)}.tournament-selector{margin-bottom:24px}.tournament-selector label{display:block;font-size:14px;font-weight:500;color:var(--text-secondary);margin-bottom:8px}.tournament-selector select{width:100%;max-width:400px;padding:12px 16px;background:#1a1a1a;border:1px solid var(--border-color);border-radius:8px;color:#fff;font-size:14px;cursor:pointer}.tournament-selector select:focus{outline:none;border-color:#4a7c23}.export-loading{display:flex;flex-direction:column;align-items:center;gap:16px;padding:40px;color:var(--text-secondary)}.export-loading .spinner{width:32px;height:32px;border:3px solid var(--border-color);border-top-color:#4a7c23;border-radius:50%;animation:spin 1s linear infinite}.export-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:40px;text-align:center}.export-empty .empty-icon{font-size:48px;opacity:.5}.export-empty h3{margin:0;font-size:18px;font-weight:500;color:#fff}.export-empty p{margin:0;font-size:14px;color:var(--text-secondary)}@media(max-width:768px){.export-page{padding:16px 20px}.export-tabs{flex-wrap:wrap}.export-tab{padding:10px 14px;font-size:13px}.export-stats-card{width:100%;max-width:400px}.export-tournament-card{width:100%;max-width:420px}.stats-card-grid{grid-template-columns:1fr 1fr;gap:12px}.tournament-card-stats{grid-template-columns:repeat(3,1fr)}.csv-option-card{flex-direction:column;gap:16px;align-items:flex-start}.export-actions{width:100%}.export-btn{flex:1;justify-content:center}}.patterns-page{padding:24px 32px;max-width:1400px;margin:0 auto}.patterns-page .page-header{margin-bottom:32px}.patterns-page h1{color:#fff;font-size:28px;font-weight:600;margin:0 0 8px}.patterns-page .page-subtitle{color:var(--text-secondary);font-size:14px;margin:0}.pattern-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:32px}.pattern-summary-card{background:#1a1a1a;border:1px solid var(--border-color);border-radius:8px;padding:20px;display:flex;align-items:center;gap:16px}.pattern-summary-card.highlight{border-color:#4a7c23;background:linear-gradient(135deg,#1a1a1a,#1f2a15)}.pattern-summary-card .summary-icon{font-size:28px}.pattern-summary-card .summary-content{flex:1}.pattern-summary-card .summary-value{font-size:24px;font-weight:700;color:#fff}.pattern-summary-card .summary-label{font-size:12px;color:var(--text-secondary);margin-top:2px}.pattern-filters{margin-bottom:24px}.pattern-filters .filter-row{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}.pattern-filters .search-box{flex:1;min-width:200px}.pattern-filters .search-box input{width:100%;padding:12px 16px;background:#1a1a1a;border:1px solid var(--border-color);border-radius:8px;color:#fff;font-size:14px}.pattern-filters .search-box input:focus{outline:none;border-color:#4a7c23}.pattern-filters .filter-select{padding:12px 16px;background:#1a1a1a;border:1px solid var(--border-color);border-radius:8px;color:#fff;font-size:14px;cursor:pointer;min-width:150px}.pattern-filters .filter-select:focus{outline:none;border-color:#4a7c23}.view-mode-tabs{display:flex;gap:8px}.view-tab{padding:10px 16px;background:#1a1a1a;border:1px solid var(--border-color);border-radius:8px;color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.view-tab:hover{background:#252525;color:#fff}.view-tab.active{background:#2d5016;border-color:#4a7c23;color:#fff}.pattern-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.pattern-card{background:#1a1a1a;border:1px solid var(--border-color);border-radius:8px;overflow:hidden;transition:all .2s ease}.pattern-card:hover{border-color:#444;transform:translateY(-2px)}.pattern-card.has-stats{border-color:#3a5a20}.pattern-card-header{padding:16px;border-bottom:1px solid #282828}.pattern-name-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.pattern-card-header h3{margin:0;font-size:16px;font-weight:600;color:#fff;line-height:1.3}.pattern-type-badge{padding:4px 10px;border-radius:8px;font-size:11px;font-weight:600;text-transform:uppercase;white-space:nowrap}.pattern-type-badge.type-pba{background:#dc354533;color:#dc3545}.pattern-type-badge.type-usbc{background:#007bff33;color:#007bff}.pattern-type-badge.type-kegel{background:#ffc10733;color:#ffc107}.pattern-type-badge.type-house{background:#28a74533;color:#28a745}.pattern-type-badge.type-custom{background:#6c757d33;color:#adb5bd}.pattern-specs{display:flex;gap:8px;flex-wrap:wrap}.length-badge,.volume-badge,.ratio-badge{padding:4px 10px;border-radius:6px;font-size:12px;font-weight:500}.length-badge{background:#4a7c2333;color:#6aa84f}.length-badge.short{background:#dc354533;color:#e57373}.length-badge.medium{background:#ffc10733;color:#ffc107}.length-badge.long{background:#007bff33;color:#64b5f6}.volume-badge{background:#ffffff1a;color:var(--text-tertiary)}.ratio-badge{background:#9c27b033;color:#ce93d8}.pattern-card-stats{padding:16px}.pattern-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}.pattern-stat{text-align:center;padding:8px 4px;background:#ffffff08;border-radius:6px}.pattern-stat .stat-value{font-size:18px;font-weight:700;color:#fff}.pattern-stat .stat-value.highlight{color:#4a7c23}.pattern-stat .stat-label{font-size:10px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.pattern-last-played{font-size:12px;color:#666;text-align:center}.pattern-card-empty{padding:24px 16px;display:flex;flex-direction:column;align-items:center;gap:8px;color:#666}.pattern-card-empty .no-stats-icon{font-size:24px;opacity:.5}.pattern-card-empty span:last-child{font-size:13px}.pattern-card-footer{padding:12px 16px;background:#151515;display:flex;justify-content:space-between;align-items:center}.difficulty-badge{padding:4px 10px;border-radius:6px;font-size:11px;font-weight:500}.difficulty-badge.very-challenging{background:#dc354533;color:#dc3545}.difficulty-badge.challenging{background:#ff980033;color:#ff9800}.difficulty-badge.moderate{background:#ffc10733;color:#ffc107}.difficulty-badge.forgiving{background:#28a74533;color:#28a745}.difficulty-badge.unknown{background:#6c757d33;color:#adb5bd}.length-category{font-size:12px;color:#666}.pattern-legend{margin-top:40px;padding:20px;background:#1a1a1a;border:1px solid var(--border-color);border-radius:8px}.pattern-legend h3{margin:0 0 16px;font-size:14px;font-weight:600;color:var(--text-secondary)}.legend-items{display:flex;gap:24px;flex-wrap:wrap}.legend-color{width:16px;height:16px;border-radius:4px}.legend-color.short{background:#dc354566}.legend-color.medium{background:#ffc10766}.legend-color.long{background:#007bff66}@media(max-width:768px){.patterns-page{padding:16px 20px}.pattern-summary-grid{grid-template-columns:repeat(2,1fr)}.pattern-filters .filter-row{flex-direction:column}.pattern-filters .search-box{min-width:100%}.pattern-filters .filter-select{width:100%}.view-mode-tabs{flex-wrap:wrap}.pattern-grid{grid-template-columns:1fr}.pattern-stat-grid{grid-template-columns:repeat(2,1fr)}.legend-items{flex-direction:column;gap:12px}}.lane-heatmap{background:#1a1a1a;border-radius:8px;padding:20px}.lane-heatmap.empty{display:flex;justify-content:center;align-items:center;min-height:200px;color:#666}.position-aggregate{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--border-color)}.aggregate-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.aggregate-title{font-size:14px;font-weight:500;color:var(--text-secondary)}.aggregate-subtitle{font-size:12px;color:var(--text-tertiary)}.position-bar{display:flex;gap:4px;border-radius:8px;overflow:hidden}.position-segment{flex:1;padding:12px 8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:60px;transition:transform .2s ease;cursor:pointer}.position-segment:hover{transform:scaleY(1.1);z-index:1}.position-label{font-size:11px;font-weight:500;color:#ffffffe6;text-transform:uppercase;letter-spacing:.5px}.position-diff{font-size:14px;font-weight:600;color:#fff}.position-scale{display:flex;justify-content:space-between;margin-top:8px;font-size:10px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px}.heatmap-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.heatmap-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.heatmap-title{font-size:14px;font-weight:500;color:var(--text-secondary)}.heatmap-legend{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary)}.legend-gradient{width:80px;height:8px;background:linear-gradient(to right,#dc354599,#ffc10799,#4a7c2399);border-radius:4px}.heatmap-grid{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:20px}.heatmap-grid.pairs-only{gap:12px}.lane-pair{display:flex;gap:4px}.lane-cell{width:48px;height:56px;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;transition:transform .2s ease}.heatmap-grid.pairs-only .lane-cell{width:auto;min-width:80px;padding:8px 12px;height:auto;min-height:60px}.lane-center{font-size:9px;color:#fff9;max-width:80px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;text-align:center}.lane-cell.has-data{cursor:pointer}.lane-cell.has-data:hover{transform:scale(1.1);z-index:1}.lane-cell.no-data{background:#252525;border:1px dashed var(--border-color)}.lane-number{font-size:10px;color:#ffffffb3;font-weight:500}.lane-value{font-size:14px;font-weight:700;color:#fff}.lane-empty{font-size:14px;color:#444}.heatmap-stats{display:flex;justify-content:center;gap:32px;padding-top:16px;border-top:1px solid var(--border-color)}.heatmap-stats .stat-item{display:flex;flex-direction:column;align-items:center;gap:4px}.heatmap-stats .stat-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.heatmap-stats .stat-value{font-size:18px;font-weight:700;color:#4a7c23}.heatmap-stats .stat-value.best{color:#4a7c23}.heatmap-stats .stat-value.worst{color:#dc3545}.lane-insights{display:flex;gap:16px;margin-top:20px}.lane-insight-card{flex:1;display:flex;align-items:center;gap:12px;padding:16px;background:#1a1a1a;border:1px solid var(--border-color);border-radius:8px;box-shadow:inset 0 1px #ffffff0a,0 10px 18px #00000052;transition:transform var(--transition-normal),box-shadow var(--transition-normal),border-color var(--transition-normal);animation:cardReveal .6s ease both;animation-delay:var(--card-delay, 0s)}.lane-insight-card:hover{transform:translateY(-3px);box-shadow:inset 0 1px #ffffff0a,0 16px 26px #0006}.lane-insight-card.best{border-color:#4a7c23;background:linear-gradient(135deg,#1a1a1a,#1f2a15)}.lane-insight-card.worst{border-color:#dc3545;background:linear-gradient(135deg,#1a1a1a,#2a1515)}.lane-insight-card .insight-icon{font-size:28px}.lane-insight-card .insight-content{display:flex;flex-direction:column;gap:2px}.lane-insight-card .insight-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.lane-insight-card .insight-value{font-size:18px;font-weight:600;color:#fff}.lane-insight-card .insight-detail{font-size:12px;color:var(--text-secondary)}.lane-insight-card .insight-center{font-size:12px;color:var(--accent-color);font-weight:500}@media(max-width:768px){.lane-cell{width:40px;height:48px}.lane-value{font-size:12px}.heatmap-stats{flex-wrap:wrap;gap:16px}.lane-insights{flex-direction:column}}.comparison-mode{background:#1a1a1a;border-radius:8px;padding:24px}.comparison-header{margin-bottom:24px}.comparison-header h3{margin:0 0 4px;font-size:16px;font-weight:600;color:#fff}.comparison-header p{margin:0;font-size:13px;color:var(--text-secondary)}.comparison-selectors{display:flex;align-items:center;gap:24px;margin-bottom:24px;flex-wrap:wrap}.period-selector{flex:1;min-width:200px;display:flex;flex-direction:column;gap:8px}.period-selector label{font-size:12px;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.period-selector select{padding:12px 16px;background:#252525;border:1px solid var(--border-color);border-radius:8px;color:#fff;font-size:14px;cursor:pointer}.period-selector select:focus{outline:none;border-color:#4a7c23}.period-dates{font-size:11px;color:#666}.vs-badge{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--border-color);border-radius:50%;font-size:12px;font-weight:700;color:var(--text-secondary);flex-shrink:0}.comparison-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.comparison-card{background:#252525;border-radius:8px;padding:16px}.comparison-label{font-size:12px;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px;text-align:center}.comparison-values{display:flex;align-items:center;justify-content:space-between;gap:12px}.period-value{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px}.period-value .period-label{font-size:10px;color:#666}.period-value .period-stat{font-size:20px;font-weight:700;color:#fff}.delta-indicator{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:80px;padding:8px;border-radius:8px;background:#ffffff0d}.delta-indicator.delta-positive{background:#4a7c2333}.delta-indicator.delta-negative{background:#dc354533}.delta-arrow{font-size:16px}.delta-indicator.delta-positive .delta-arrow{color:#4a7c23}.delta-indicator.delta-negative .delta-arrow{color:#dc3545}.delta-value{font-size:11px;font-weight:500;color:var(--text-secondary)}.delta-indicator.delta-positive .delta-value{color:#6aa84f}.delta-indicator.delta-negative .delta-value{color:#e57373}.comparison-loading{display:flex;flex-direction:column;align-items:center;gap:12px;padding:40px;color:var(--text-secondary)}.comparison-loading .spinner{width:32px;height:32px;border:3px solid var(--border-color);border-top-color:#4a7c23;border-radius:50%;animation:spin 1s linear infinite}@media(max-width:768px){.comparison-selectors{flex-direction:column;gap:16px}.period-selector{width:100%}.vs-badge{margin:8px 0}.comparison-grid{grid-template-columns:1fr}.comparison-values{flex-direction:column;gap:8px}.delta-indicator{flex-direction:row;width:100%;justify-content:center;gap:8px}}.goal-tracker{background:#1a1a1a;border-radius:8px;padding:20px}.goal-tracker.loading,.goal-tracker.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:200px;color:var(--text-secondary)}.goal-tracker.empty .empty-icon{font-size:32px;opacity:.5}.goal-tracker-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.goal-tracker-header h3{margin:0;font-size:16px;font-weight:600;color:#fff}.goals-summary{font-size:13px;color:var(--text-secondary);background:#4a7c2333;padding:4px 12px;border-radius:8px}.achieved-goals{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--border-color)}.achieved-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:12px}.trophy-icon{font-size:16px}.achieved-badges{display:flex;flex-wrap:wrap;gap:8px}.achieved-badge{display:flex;align-items:center;gap:6px;padding:6px 12px;background:#4a7c2333;border:1px solid #4a7c23;border-radius:20px;cursor:default}.achieved-badge .badge-icon{font-size:14px}.achieved-badge .badge-label{font-size:12px;font-weight:500;color:#6aa84f}.progress-goals{display:flex;flex-direction:column;gap:16px}.goal-card{display:flex;gap:16px;padding:16px;background:#252525;border-radius:8px}.goal-icon{font-size:24px;flex-shrink:0}.goal-content{flex:1;min-width:0}.goal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.goal-label{font-size:14px;font-weight:500;color:#fff}.goal-current{font-size:12px;color:var(--text-secondary)}.goal-progress-bar{height:8px;background:var(--border-color);border-radius:4px;overflow:hidden;margin-bottom:8px}.goal-progress-fill{height:100%;background:linear-gradient(90deg,#4a7c23,#6aa84f);border-radius:4px;transition:width .3s ease}.goal-description{font-size:12px;color:#666}.show-more-btn{display:block;width:100%;padding:12px;margin-top:16px;background:transparent;border:1px solid var(--border-color);border-radius:8px;color:var(--text-secondary);font-size:13px;cursor:pointer;transition:all .2s ease}.show-more-btn:hover{background:#252525;color:#fff;border-color:#444}.motivation-message{display:flex;align-items:center;gap:12px;margin-top:20px;padding:12px 16px;background:#4a7c231a;border:1px solid rgba(74,124,35,.3);border-radius:8px;font-size:13px;color:var(--text-secondary)}.motivation-icon{font-size:18px}.motivation-message strong{color:#6aa84f}@media(max-width:768px){.goal-tracker-header{flex-direction:column;align-items:flex-start;gap:8px}.achieved-badges{gap:6px}.achieved-badge{padding:4px 10px;font-size:11px}.goal-card{flex-direction:column;gap:12px}.goal-header{flex-direction:column;align-items:flex-start;gap:4px}}.sidebar-link-icon{width:24px;height:24px;object-fit:contain}.brand-icon{width:28px;height:28px;object-fit:contain}.user-avatar{width:20px;height:20px;object-fit:contain}.stat-icon{width:32px;height:32px;object-fit:contain}.empty-icon{width:64px;height:64px;object-fit:contain}.goal-tracker.empty .empty-icon{width:32px;height:32px}.export-empty .empty-icon{width:48px;height:48px}.center-icon img{width:28px;height:28px;object-fit:contain}.modal-icon{width:50px;height:50px;object-fit:contain}.tournament-info .info-icon{width:14px;height:14px;object-fit:contain}.info-card-icon,.game-info-grid .info-icon{width:24px;height:24px;object-fit:contain}.analysis-icon{width:20px;height:20px;object-fit:contain}.insight-icon,.summary-icon,.dq-summary-card .summary-icon,.pattern-summary-card .summary-icon{width:28px;height:28px;object-fit:contain}.severity-dot{width:20px;height:20px;border-radius:50%}.severity-dot.high{background:var(--error-color);box-shadow:0 0 8px #ef444466}.severity-dot.medium{background:var(--warning-color);box-shadow:0 0 8px #f59e0b66}.severity-dot.low{background:var(--success-color);box-shadow:0 0 8px #10b98166}.tab-icon,.dq-tab .tab-icon{width:14px;height:14px;object-fit:contain}.export-tab .tab-icon{width:16px;height:16px;object-fit:contain}.issue-icon{width:18px;height:18px;object-fit:contain}.help-icon{width:20px;height:20px;object-fit:contain}.stats-card-icon{width:32px;height:32px;object-fit:contain}.stats-card-branding .brand-icon{width:20px;height:20px;object-fit:contain}.csv-option-icon{width:28px;height:28px;object-fit:contain}.no-stats-icon{width:24px;height:24px;object-fit:contain}.trophy-icon{width:16px;height:16px;object-fit:contain}.badge-icon{width:14px;height:14px;object-fit:contain}.goal-icon{width:24px;height:24px;object-fit:contain}.motivation-icon{width:18px;height:18px;object-fit:contain}.tournament-card-logo,.stats-card-logo{width:40px;height:40px;object-fit:contain}.ball-placeholder img{width:32px;height:32px;object-fit:contain}.game-edit-modal{max-width:450px}.game-edit-modal .form-hint{display:block;font-size:12px;color:var(--text-tertiary);margin-top:4px}.header-title-row{display:flex;align-items:center;gap:16px}.edit-game-btn{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:6px;color:var(--text-secondary);font-size:14px;cursor:pointer;transition:all .2s}.edit-game-btn:hover{background:var(--bg-elevated);border-color:var(--primary-color);color:var(--text-primary)}.edit-game-btn .edit-icon{width:16px;height:16px;opacity:.7}.pin-diagram{position:relative;display:inline-block}.pin-diagram-svg{display:block}.pin-diagram .pin{transition:all .2s ease}.pin-diagram-badge{position:absolute;bottom:-4px;right:-4px;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}.pin-diagram-badge.strike{background:var(--success-color);color:var(--bg-base)}.pin-diagram-badge.spare{background:var(--primary-color);color:#fff}.pin-diagram-badge.open{background:var(--error-color);color:#fff}.pin-diagram-small{width:60px;height:60px}.pin-diagram-medium{width:100px;height:100px}.pin-diagram-large{width:150px;height:150px}.frame-ball-select-modal{max-width:500px;max-height:85vh;display:flex;flex-direction:column}.frame-ball-select-modal .modal-header{flex-shrink:0}.frame-info-section{padding:16px 20px;background:var(--bg-surface);border-bottom:1px solid var(--border-color);display:flex;gap:20px;align-items:center}.frame-info-grid{display:flex;gap:16px;flex-wrap:wrap}.frame-info-item{display:flex;flex-direction:column;gap:2px}.frame-info-item .info-label{font-size:11px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px}.frame-info-item .info-value{font-size:16px;font-weight:600;color:var(--text-primary)}.frame-info-item .info-value.strike{color:var(--success-color)}.frame-info-item .info-value.spare{color:var(--primary-color)}.frame-pin-diagram{display:flex;flex-direction:column;align-items:center;gap:4px}.pins-left-label{font-size:11px;color:var(--text-tertiary)}.current-selection{padding:12px 20px;background:var(--bg-elevated);display:flex;align-items:center;gap:8px;font-size:14px}.current-label{color:var(--text-tertiary)}.current-ball{font-weight:600;color:var(--text-primary)}.current-brand{color:var(--text-secondary)}.ball-search-box{padding:12px 20px;border-bottom:1px solid var(--border-color)}.ball-search-box input{width:100%;padding:10px 14px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:14px}.ball-search-box input:focus{outline:none;border-color:var(--primary-color)}.ball-select-list{flex:1;overflow-y:auto;padding:8px 12px;max-height:300px}.ball-select-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:6px;cursor:pointer;transition:background .15s}.ball-select-item:hover{background:var(--bg-surface)}.ball-select-item.selected{background:#0d737726;border:1px solid var(--primary-color)}.ball-select-item.inactive{opacity:.6}.ball-select-item .ball-photo{width:40px;height:40px;border-radius:50%;object-fit:cover;background:var(--bg-surface)}.ball-select-item .ball-photo-placeholder{width:40px;height:40px;border-radius:50%;background:var(--bg-surface);border:1px dashed var(--border-color)}.ball-select-item .ball-info{flex:1;display:flex;flex-direction:column;gap:2px}.ball-select-item .ball-name{font-weight:500;color:var(--text-primary)}.ball-select-item .ball-brand{font-size:12px;color:var(--text-secondary)}.ball-select-item .ball-status{font-size:11px;padding:2px 6px;background:var(--bg-surface);border-radius:4px;color:var(--text-tertiary);text-transform:capitalize}.ball-select-item .selected-check{font-size:18px;color:var(--primary-color)}.frame-ball-select-modal .modal-actions{padding:16px 20px;border-top:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.frame-ball-select-modal .action-buttons{display:flex;gap:12px}.clear-btn{padding:8px 16px;background:transparent;border:1px solid var(--border-color);border-radius:6px;color:var(--text-secondary);font-size:14px;cursor:pointer;transition:all .2s}.frame-details-section .section-hint{margin:0 0 16px;font-size:13px;color:var(--text-tertiary)}.frame-detail-card.clickable{cursor:pointer;transition:all .2s}.frame-detail-card.clickable:hover{background:var(--bg-surface);border-color:var(--primary-color);transform:translateY(-2px)}.frame-detail-card.missing-ball{border-color:var(--warning-color);border-style:dashed}.frame-pin-diagram-container{display:flex;justify-content:center;margin:8px 0}.tenth-frame-diagrams{display:flex;gap:8px;justify-content:center;margin:8px 0}.tenth-roll-diagram{display:flex;flex-direction:column;align-items:center;gap:4px}.tenth-roll-diagram .roll-label{font-size:10px;color:var(--text-secondary);font-weight:500}.tenth-roll-diagram .roll-count{font-size:12px;font-weight:600;color:var(--text-primary)}.frame-detail-ball.no-ball{color:var(--warning-color)}.no-ball-warning{font-style:italic}.ball-info-row{display:flex;justify-content:space-between;align-items:center;gap:8px}.ball-thumbnail{width:36px;height:36px;border-radius:50%;object-fit:cover;border:2px solid var(--border-color);flex-shrink:0}.tournament-edit-modal{max-width:500px;width:95%}.tournament-edit-modal .form-group{margin-bottom:20px}.tournament-edit-modal label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.tournament-edit-modal input,.tournament-edit-modal select,.tournament-edit-modal textarea{width:100%;padding:10px 12px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:14px}.tournament-edit-modal input:focus,.tournament-edit-modal select:focus,.tournament-edit-modal textarea:focus{outline:none;border-color:var(--primary-color)}.tournament-edit-modal textarea{resize:vertical;min-height:80px}.tournament-edit-modal .form-row{display:flex;gap:16px}.tournament-edit-modal .form-row .form-field{flex:1}.tournament-edit-modal .form-row .form-field label{display:block;margin-bottom:6px}.tournament-edit-modal input[type=date]{cursor:pointer}.pattern-select-group .selected-pattern{display:flex;align-items:center;gap:12px;padding:12px;background:var(--bg-surface);border:1px solid var(--primary-color);border-radius:6px}.pattern-select-group .pattern-name{font-weight:600;color:var(--text-primary)}.pattern-select-group .pattern-details{font-size:13px;color:var(--text-secondary)}.pattern-select-group .clear-pattern-btn{margin-left:auto;width:24px;height:24px;padding:0;border:none;background:transparent;color:var(--text-secondary);font-size:18px;cursor:pointer;border-radius:4px}.pattern-select-group .clear-pattern-btn:hover{background:var(--bg-elevated);color:var(--error-color)}.pattern-search-container{position:relative}.pattern-search-input{margin-bottom:8px}.pattern-dropdown{max-height:250px;overflow-y:auto;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:6px}.pattern-group{border-bottom:1px solid var(--border-color)}.pattern-group:last-child{border-bottom:none}.pattern-group-header{padding:8px 12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);background:var(--bg-elevated);position:sticky;top:0}.pattern-option{display:flex;justify-content:space-between;padding:10px 12px;cursor:pointer;transition:background .15s}.pattern-option:hover{background:var(--bg-elevated)}.pattern-option-name{color:var(--text-primary)}.pattern-option-length{color:var(--text-secondary);font-size:13px}.pattern-loading,.no-patterns{padding:20px;text-align:center;color:var(--text-secondary);font-size:14px}.missing-data-notice{display:flex;align-items:center;gap:16px;padding:16px 20px;margin:24px 32px;background:var(--bg-elevated);border:1px dashed var(--warning-color);border-radius:8px;cursor:pointer;transition:all .2s}.missing-data-notice:hover{background:var(--bg-surface);border-style:solid}.missing-data-notice .notice-icon{width:32px;height:32px;opacity:.6}.missing-data-notice .notice-content{flex:1}.missing-data-notice .notice-title{display:block;font-weight:600;color:var(--text-primary);margin-bottom:2px}.missing-data-notice .notice-desc{display:block;font-size:13px;color:var(--text-secondary)}.missing-data-notice .notice-action{color:var(--primary-color);font-weight:500;font-size:14px}.edit-tournament-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:transparent;border:1px solid var(--border-color);border-radius:6px;color:var(--text-secondary);font-size:13px;cursor:pointer;transition:all .2s}.edit-tournament-btn:hover{border-color:var(--primary-color);color:var(--primary-color)}.edit-tournament-btn .edit-icon{width:14px;height:14px;opacity:.7}.arsenal-intelligence-page{padding:24px}.arsenal-intelligence-page .page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;flex-wrap:wrap;gap:16px}.arsenal-intelligence-page .header-content h1{margin:0 0 4px;color:var(--text-primary)}.arsenal-intelligence-page .page-subtitle{color:var(--text-secondary);margin:0}.arsenal-summary-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;margin-bottom:24px}.arsenal-summary-stat{background:var(--card-bg);border-radius:12px;padding:16px;text-align:center}.arsenal-summary-stat .stat-value{font-size:28px;font-weight:700;color:var(--text-primary);display:block}.arsenal-summary-stat .stat-label{font-size:12px;color:var(--text-secondary);text-transform:uppercase;margin-top:4px}.arsenal-summary-stat.highlight .stat-value{color:var(--primary-color)}.view-toggle{display:flex;gap:8px}.view-toggle button{padding:8px 16px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:6px;color:var(--text-secondary);cursor:pointer;font-size:14px;transition:all .2s}.view-toggle button:hover{border-color:var(--primary-color);color:var(--text-primary)}.view-toggle button.active{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.ball-intelligence-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px;align-items:start}.ball-intelligence-card{background:var(--card-bg);border-radius:12px;padding:20px;cursor:pointer;transition:all .2s;border:1px solid transparent;display:flex;flex-direction:column}.ball-intelligence-card:hover{border-color:var(--primary-color);transform:translateY(-2px)}.ball-intelligence-card.inactive{opacity:.6}.bic-header{display:flex;gap:14px;margin-bottom:14px;align-items:flex-start;min-height:100px}.bic-photo{width:64px;height:64px;border-radius:50%;overflow:hidden;background:transparent;flex-shrink:0;position:relative;isolation:isolate}.bic-photo img{width:100%;height:100%;object-fit:cover;border-radius:50%;position:relative;z-index:0}.ball-intelligence-card .bic-photo:after{content:"";position:absolute;inset:-20%;background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.25),transparent 55%);mix-blend-mode:screen;opacity:.25;pointer-events:none;animation:subtleGlowSweep 6s ease-in-out infinite;z-index:1}.bic-photo img.no-photo{padding:12px;opacity:.3}.bic-title{flex:1;min-width:0}.bic-title h3{margin:0 0 4px;font-size:16px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bic-brand{margin:0;font-size:13px;color:var(--text-secondary)}.bic-details{margin:4px 0 0;font-size:11px;color:var(--text-tertiary, #888);font-family:var(--font-mono, "SF Mono", Monaco, "Cascadia Code", monospace)}.bic-serial{margin:2px 0 0;font-size:11px;font-weight:500;color:var(--text-tertiary, #888);font-family:var(--font-mono, "SF Mono", Monaco, "Cascadia Code", monospace)}.bic-layout{margin:2px 0 0;font-size:11px;color:var(--text-tertiary, #888);font-family:var(--font-mono, "SF Mono", Monaco, "Cascadia Code", monospace);opacity:.9}.bic-mojo-pill{display:inline-flex;align-items:center;margin-top:6px;padding:3px 8px;border-radius:999px;background:#fbbf241f;border:1px solid rgba(251,191,36,.3);color:#fbbf24;font-size:10px;letter-spacing:.08em;text-transform:uppercase;line-height:1;white-space:nowrap}.bic-value-ring{position:relative;padding:4px;border-radius:12px;background:conic-gradient(from 180deg,rgba(59,130,246,.45) var(--utilization),rgba(255,255,255,.08) 0)}.bic-value-ring:before{content:"";position:absolute;inset:1px;border-radius:10px;background:var(--card-bg)}.bic-value-ring .bic-value-score{position:relative;z-index:1}.bic-value-score{text-align:center;padding:8px 12px;border-radius:8px;min-width:60px}.bic-value-score .score-value{display:block;font-size:24px;font-weight:700}.bic-value-score .score-label{display:block;font-size:10px;text-transform:uppercase;margin-top:2px}.bic-value-score.value-excellent{background:#22c55e26;color:#22c55e}.bic-value-score.value-good{background:#3b82f626;color:#3b82f6}.bic-value-score.value-fair{background:#fbbf2426;color:#fbbf24}.bic-value-score.value-poor{background:#9ca3af26;color:#9ca3af}.bic-specs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;min-height:28px;align-items:flex-start;align-content:flex-start}.bic-specs .spec{font-size:11px;padding:4px 8px;background:var(--bg-surface);border-radius:4px;color:var(--text-tertiary)}.bic-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.bic-metrics .metric{text-align:center;padding:10px 6px;background:var(--bg-surface);border-radius:8px;position:relative;overflow:hidden}.bic-metrics .metric .metric-value{display:block;font-size:18px;font-weight:600;color:var(--text-primary);position:relative;z-index:1}.bic-metrics .metric .metric-label{display:block;font-size:10px;color:var(--text-secondary);text-transform:uppercase;margin-top:2px;position:relative;z-index:1}.bic-metrics .metric .metric-sparkline{position:absolute;inset:6px;width:calc(100% - 12px);height:calc(100% - 12px);opacity:.22;pointer-events:none}.bic-metrics .metric .metric-sparkline path{fill:none;stroke:#3b82f666;stroke-width:2}.bic-metrics .metric.highlight .metric-sparkline path{stroke:#6366f173}.bic-metrics .metric.highlight{background:#8b5cf61a}.bic-metrics .metric.highlight .metric-value{color:var(--primary-color)}.bic-metric-deltas{display:flex;justify-content:flex-end;margin-top:-6px;margin-bottom:12px}.delta-chip{font-size:10px;padding:4px 8px;border-radius:999px;background:var(--bg-surface);color:var(--text-secondary);border:1px solid rgba(148,163,184,.2);text-transform:uppercase;letter-spacing:.06em}.delta-chip.delta-up{color:#22c55e;background:#22c55e1f;border-color:#22c55e4d}.delta-chip.delta-down{color:#ef4444;background:#ef44441f;border-color:#ef44444d}.delta-chip.delta-flat{color:#e5e7eb;background:#94a3b81f;border-color:#94a3b84d}.bic-usage{display:flex;justify-content:space-between;padding:10px 0;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);margin-bottom:14px}.bic-usage .usage-stat{text-align:center}.bic-usage .usage-label{display:block;font-size:10px;color:var(--text-tertiary);text-transform:uppercase}.bic-usage .usage-value{display:block;font-size:14px;font-weight:600;color:var(--text-primary)}.bic-last-five{display:flex;align-items:center;gap:10px;margin:10px 0 12px}.bic-last-five .last-five-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);min-width:44px}.bic-last-five .last-five-dots{display:flex;align-items:center;gap:6px;flex:1}.bic-last-five .score-dot{width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 1px #0003,inset 0 1px 2px #fff3}.bic-last-five .last-five-avg{font-size:11px;color:var(--text-secondary);padding:3px 8px;border-radius:999px;background:var(--bg-surface)}.bic-trend{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:6px;font-size:13px;margin-bottom:12px}.bic-trend.trend-up{background:#22c55e1a;color:#22c55e}.bic-trend.trend-down{background:#ef44441a;color:#ef4444}.bic-trend.trend-stable{background:#9ca3af1a;color:#9ca3af}.bic-trend .trend-icon{font-size:16px;font-weight:700}.bic-trend .trend-text{font-weight:500}.bic-trend .trend-detail{margin-left:auto;font-size:11px;opacity:.8}.bic-patterns{display:flex;flex-direction:column;gap:8px;margin-top:8px}.bic-detail-shelf{padding:10px;border-radius:10px;background:linear-gradient(120deg,#ffffff0a,#ffffff05);border:1px solid rgba(255,255,255,.06);box-shadow:inset 0 1px #ffffff0d;opacity:.6;transform:translateY(2px);transition:opacity .2s ease,transform .2s ease,border-color .2s ease}.ball-intelligence-card:hover .bic-detail-shelf{opacity:1;transform:translateY(0);border-color:#ffffff1f}.bic-patterns .pattern-stat{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;font-size:11px;padding:6px 8px;border-radius:8px}.bic-patterns .pattern-stat.best{background:#22c55e14}.bic-patterns .pattern-stat.worst{background:#ef444414}.bic-patterns .pattern-tag{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);white-space:nowrap}.bic-patterns .pattern-stat.best .pattern-tag{color:#22c55e}.bic-patterns .pattern-stat.worst .pattern-tag{color:#ef4444}.bic-patterns .pattern-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.bic-patterns .pattern-score{font-weight:600;color:var(--text-primary)}.bic-no-data{text-align:center;padding:24px;color:var(--text-tertiary)}.bic-no-data p{margin:0 0 4px}.bic-no-data .hint{font-size:12px;opacity:.7}.arsenal-add-section{margin-top:32px;padding-top:32px;border-top:1px solid var(--border-color)}.arsenal-add-section h2{margin:0 0 16px;font-size:18px;color:var(--text-primary)}.arsenal-add-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.arsenal-add-subtitle{margin:6px 0 0;color:var(--text-secondary);font-size:14px}.add-ball-cta{padding:10px 18px;background:var(--primary-color);border:1px solid var(--primary-color);color:#fff;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:background var(--transition-normal),box-shadow var(--transition-normal)}.add-ball-cta:hover{background:var(--primary-hover);box-shadow:0 10px 20px #0d73774d}.ball-wizard-modal{max-width:760px;padding:0}.wizard-header{padding:20px;border-bottom:1px solid var(--border-color)}.wizard-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.wizard-subtitle{margin:6px 0 0;color:var(--text-secondary);font-size:14px}.wizard-stepper{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}.wizard-step{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:10px;background:var(--bg-surface);border:1px solid var(--border-color);color:var(--text-tertiary);text-transform:uppercase;font-size:10px;letter-spacing:.08em}.wizard-step-index{width:22px;height:22px;border-radius:999px;background:var(--border-color);color:var(--text-primary);display:inline-flex;align-items:center;justify-content:center;font-size:12px}.wizard-step.active{border-color:var(--primary-color);color:var(--text-primary);background:#0d73771f}.wizard-step.active .wizard-step-index{background:var(--primary-color)}.wizard-step.complete{border-color:var(--accent-color);color:var(--text-primary);background:#d4a0171f}.wizard-step.complete .wizard-step-index{background:var(--accent-color)}.wizard-error{margin:16px 20px 0}.field-hint{margin:6px 0 0;font-size:12px;color:var(--text-tertiary);line-height:1.4}.layout-hint{margin-top:12px;font-size:12px;color:var(--text-secondary)}.ball-wizard-modal .search-results{max-height:260px}.ball-wizard-modal .search-result{border:1px solid transparent}.ball-wizard-modal .search-result.selected{border-color:var(--primary-color);background:#0d73771a}.wizard-select-btn{padding:8px 14px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:6px;color:var(--text-secondary);font-size:12px;font-weight:600;cursor:pointer;transition:all var(--transition-normal)}.wizard-select-btn:hover{border-color:var(--primary-color);color:var(--text-primary)}.ball-wizard-modal .search-result.selected .wizard-select-btn{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.wizard-text-button{background:transparent;border:none;color:var(--primary-color);font-size:12px;font-weight:600;cursor:pointer;padding:6px 0;transition:color var(--transition-normal)}.wizard-text-button:hover{color:var(--primary-hover)}.wizard-photo-preview{margin-top:16px;min-height:160px;padding:16px;border:1px dashed var(--border-color);border-radius:12px;background:var(--bg-surface);display:flex;align-items:center;justify-content:center;text-align:center}.wizard-photo-preview img{max-width:100%;max-height:220px;border-radius:10px;object-fit:cover}.wizard-photo-placeholder{color:var(--text-tertiary);font-size:13px}.wizard-photo-stock{display:flex;flex-direction:column;align-items:center;gap:8px}.wizard-photo-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary)}.ball-form-single{max-height:85vh;display:flex;flex-direction:column}.ball-form-scrollable{flex:1;overflow-y:auto;padding:20px}.ball-form-scrollable .form-section{margin-bottom:24px;padding-bottom:24px;border-bottom:1px solid var(--border-color)}.ball-form-scrollable .form-section:last-of-type{border-bottom:none;margin-bottom:0}.wizard-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-top:1px solid var(--border-color);background:var(--bg-surface);margin-top:0}.wizard-actions-right{display:flex;gap:12px}@media(max-width:768px){.ball-intelligence-grid{grid-template-columns:1fr}.bic-metrics,.arsenal-summary-stats{grid-template-columns:repeat(2,1fr)}.wizard-stepper{grid-template-columns:1fr}.wizard-actions{flex-direction:column;align-items:stretch}.wizard-actions-right{width:100%;justify-content:flex-end}}.leave-analysis-page .page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.leave-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.leave-card{background:var(--card-bg);border-radius:12px;padding:16px;display:flex;gap:16px;align-items:center}.leave-diagram{width:80px;height:80px;flex-shrink:0}.leave-info{flex:1}.leave-name{font-size:16px;font-weight:600;color:var(--text-primary);margin:0 0 4px}.leave-stats{display:flex;gap:16px;margin-top:8px}.leave-stat{text-align:center}.leave-stat .value{font-size:18px;font-weight:600}.leave-stat .label{font-size:10px;color:var(--text-tertiary);text-transform:uppercase}.leave-difficulty{font-size:11px;padding:3px 8px;border-radius:4px;display:inline-block;margin-top:6px}.leave-difficulty.easy{background:#22c55e26;color:#22c55e}.leave-difficulty.medium{background:#fbbf2426;color:#fbbf24}.leave-difficulty.hard{background:#f9731626;color:#f97316}.leave-difficulty.very-hard{background:#ef444426;color:#ef4444}.conversion-excellent{color:#22c55e}.conversion-good{color:#60a5fa}.conversion-average{color:#fbbf24}.conversion-poor{color:#ef4444}.leave-summary-stats{display:flex;gap:16px;margin-bottom:24px;flex-wrap:wrap}.leave-summary-stat{background:var(--card-bg);border-radius:12px;padding:16px 24px;text-align:center;flex:1;min-width:140px}.leave-summary-stat .stat-value{display:block;font-size:28px;font-weight:600;color:var(--text-primary)}.leave-summary-stat .stat-label{font-size:12px;color:var(--text-secondary);margin-top:4px}.leave-summary-stat.highlight{background:linear-gradient(135deg,var(--primary-color),var(--accent-color))}.leave-summary-stat.highlight .stat-value,.leave-summary-stat.highlight .stat-label{color:#fff}.leave-summary-stat.best{border:2px solid var(--success-color)}.leave-summary-stat.best .stat-value{color:var(--success-color)}.leave-insights{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.insight-card{display:flex;gap:16px;padding:16px 20px;border-radius:12px;align-items:flex-start;box-shadow:inset 0 1px #ffffff0a,0 10px 18px #00000047;transition:transform var(--transition-normal),box-shadow var(--transition-normal);animation:cardReveal .6s ease both;animation-delay:var(--card-delay, 0s)}.insight-card:hover{transform:translateY(-3px);box-shadow:inset 0 1px #ffffff0a,0 16px 26px #00000061}.insight-card.warning{background:#fbbf241a;border-left:4px solid var(--warning-color)}.insight-card.success{background:#22c55e1a;border-left:4px solid var(--success-color)}.insight-icon{font-size:24px;flex-shrink:0}.insight-content h4{margin:0 0 6px;font-size:14px;font-weight:600;color:var(--text-primary)}.insight-content p{margin:0;font-size:13px;color:var(--text-secondary);line-height:1.5}.leave-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:16px}.difficulty-filters{display:flex;gap:8px;flex-wrap:wrap}.difficulty-filters .filter-btn{background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:20px;padding:8px 16px;font-size:13px;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.difficulty-filters .filter-btn:hover{border-color:var(--text-tertiary)}.difficulty-filters .filter-btn.active{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.difficulty-filters .filter-btn.easy.active{background:var(--success-color);border-color:var(--success-color)}.difficulty-filters .filter-btn.medium.active{background:var(--warning-color);border-color:var(--warning-color);color:var(--bg-base)}.difficulty-filters .filter-btn.hard.active{background:var(--accent-color);border-color:var(--accent-color)}.difficulty-filters .filter-btn.very-hard.active{background:var(--error-color);border-color:var(--error-color)}.leave-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px;margin-bottom:32px}.leave-card{background:var(--card-bg);border-radius:16px;padding:20px;display:flex;flex-direction:column;align-items:center;gap:16px;transition:transform .2s ease,box-shadow .2s ease}.leave-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0003}.leave-card.conversion-excellent{border:2px solid rgba(34,197,94,.3)}.leave-card.conversion-good{border:2px solid rgba(96,165,250,.3)}.leave-card.conversion-needs-work{border:2px solid rgba(239,68,68,.3)}.leave-card-diagram{margin-bottom:8px}.leave-card-info{text-align:center}.leave-card-info .leave-name{font-size:18px;font-weight:600;color:var(--text-primary);margin:0 0 6px}.leave-card-info .leave-difficulty{font-size:12px;font-weight:500}.leave-card-stats{display:flex;gap:24px;width:100%;justify-content:center}.leave-card-stats .leave-stat{text-align:center}.leave-card-stats .leave-stat.primary .stat-value{font-size:24px;font-weight:700;color:var(--primary-color)}.leave-card-stats .leave-stat .stat-value{display:block;font-size:18px;font-weight:600;color:var(--text-primary)}.leave-card-stats .leave-stat .stat-label{font-size:10px;color:var(--text-tertiary);text-transform:uppercase;margin-top:2px}.leave-progress-bar{width:100%;height:6px;background:var(--bg-surface);border-radius:3px;overflow:hidden}.leave-progress-fill{height:100%;border-radius:3px;transition:width .3s ease}.leave-legend{background:var(--card-bg);border-radius:12px;padding:20px 24px;margin-top:32px}.leave-legend h4{margin:0 0 16px;font-size:14px;font-weight:600;color:var(--text-primary)}.legend-items{display:flex;flex-wrap:wrap;gap:16px 32px;margin-bottom:16px}.legend-item{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary)}.legend-color{width:12px;height:12px;border-radius:3px;flex-shrink:0}.legend-tip{margin:0;padding:12px 16px;background:var(--bg-surface);border-radius:8px;font-size:13px;color:var(--text-secondary);line-height:1.5}.ball-comparison-page .page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.comparison-selection-section{margin-bottom:32px}.selection-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.selection-header h2{margin:0;font-size:18px;color:var(--text-primary)}.clear-btn{background:transparent;border:1px solid var(--border-subtle);border-radius:6px;padding:8px 16px;font-size:13px;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.clear-btn:hover{border-color:var(--error-color);color:var(--error-color)}.ball-selection-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.ball-selection-card{position:relative;background:var(--card-bg);border:2px solid transparent;border-radius:12px;padding:16px;cursor:pointer;transition:all .2s ease;text-align:center}.ball-selection-card:hover{border-color:var(--primary-color);transform:translateY(-2px)}.ball-selection-card.selected{border-color:var(--primary-color);background:#6366f11a}.selection-badge{position:absolute;top:-8px;right:-8px;width:24px;height:24px;background:var(--primary-color);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff}.ball-selection-photo{width:60px;height:60px;margin:0 auto 12px;border-radius:50%;overflow:hidden;background:var(--bg-surface)}.ball-selection-photo img{width:100%;height:100%;object-fit:cover}.ball-selection-photo img.placeholder{padding:12px;opacity:.4}.ball-selection-info h4{margin:0 0 4px;font-size:14px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ball-selection-info p{margin:0;font-size:12px;color:var(--text-secondary)}.ball-selection-quick-stats{display:flex;justify-content:center;gap:12px;margin-top:10px;font-size:11px;color:var(--text-tertiary)}.comparison-results{background:var(--card-bg);background-image:var(--card-sheen);border-radius:var(--radius-xl);padding:24px;margin-bottom:32px;border:1px solid var(--border-subtle);box-shadow:var(--card-shadow)}.comparison-header{display:grid;grid-template-columns:150px repeat(var(--comparison-count, 2),1fr);gap:16px;margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--border-subtle)}.comparison-header-label{display:flex;align-items:flex-end;font-size:12px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px}.comparison-ball-header{text-align:center;padding:16px;background:var(--bg-surface);border-radius:12px;position:relative;border:1px solid var(--border-subtle);box-shadow:inset 0 1px #ffffff0f}.comparison-ball-header.winner{border:2px solid var(--success-color);background:#22c55e14;box-shadow:0 10px 24px #05100e59}.ball-header-photo{width:64px;height:64px;margin:0 auto 12px;border-radius:50%;overflow:hidden;background:var(--bg-elevated);border:1px solid var(--border-subtle);box-shadow:inset 0 1px #ffffff1f,0 8px 16px #00000059}.ball-header-photo img{width:100%;height:100%;object-fit:cover}.ball-header-photo img.placeholder{padding:14px;opacity:.4}.comparison-ball-header h3{margin:0 0 4px;font-size:16px;font-weight:600;color:var(--text-primary)}.comparison-ball-header p{margin:0;font-size:12px;color:var(--text-secondary)}.winner-badge{display:inline-block;margin-top:8px;padding:4px 10px;background:var(--success-color);color:var(--bg-base);font-size:11px;font-weight:600;border-radius:12px}.comparison-table{display:flex;flex-direction:column;gap:10px}.comparison-row{display:grid;grid-template-columns:150px repeat(var(--comparison-count, 2),1fr);gap:16px;padding:12px;border-radius:12px;border:1px solid var(--border-subtle);background:var(--bg-surface);transition:transform var(--transition-normal),border-color var(--transition-normal),background var(--transition-normal)}.comparison-row:last-child{border-bottom:none}.comparison-row:hover{border-color:var(--border-default);background:var(--bg-elevated);transform:translateY(-1px)}.comparison-row .metric-label{display:flex;flex-direction:column;justify-content:center}.comparison-row .metric-label span:first-child{font-size:14px;font-weight:500;color:var(--text-primary)}.comparison-row .metric-description{font-size:11px;color:var(--text-tertiary);margin-top:2px}.comparison-row .metric-value{display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:18px;font-weight:600;color:var(--text-primary);position:relative;padding:6px 10px;border-radius:10px}.comparison-row .metric-value.winner{color:var(--success-color);background:#22c55e1f;border:1px solid rgba(34,197,94,.35)}.winner-indicator{position:absolute;top:-8px;left:50%;transform:translate(-50%);padding:2px 8px;border-radius:10px;background:#10b98133;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--success-color)}.comparison-row .metric-value.trend{flex-direction:row;gap:6px;font-size:14px}.comparison-row .metric-value.trend .trend-icon{font-size:16px}.comparison-row .metric-value.trend.trend-up{color:var(--success-color)}.comparison-row .metric-value.trend.trend-down{color:var(--error-color)}.comparison-row .metric-value.trend.trend-stable{color:var(--warning-color)}.comparison-row .metric-value.trend.trend-none{color:var(--text-tertiary)}.comparison-row .metric-value.pattern{font-size:14px}.comparison-row .metric-value.pattern .pattern-name{font-weight:600}.comparison-row .metric-value.pattern .pattern-score{font-size:12px;color:var(--text-secondary);font-weight:400;margin-top:2px}.comparison-row .metric-value.pattern .no-data{color:var(--text-tertiary)}.comparison-row.specs .metric-value.specs{font-size:11px;font-weight:400;gap:4px}.comparison-row.specs .metric-value.specs .spec{color:var(--text-secondary);background:var(--bg-elevated);padding:3px 8px;border-radius:4px}.comparison-summary{margin-top:24px;padding-top:24px;border-top:1px solid var(--border-subtle)}.comparison-summary h3{margin:0 0 12px;font-size:16px;color:var(--text-primary)}.summary-winner{margin:0 0 16px;font-size:14px;color:var(--text-secondary);line-height:1.5}.summary-winner strong{color:var(--success-color)}.summary-insights{display:flex;flex-direction:column;gap:8px}.ball-insight{font-size:13px;color:var(--text-secondary);padding:8px 12px;background:var(--bg-surface);border-radius:6px}.ball-insight strong{color:var(--text-primary)}.comparison-placeholder{text-align:center;padding:60px 20px;background:var(--card-bg);border-radius:16px;border:2px dashed var(--border-subtle)}.placeholder-icon{width:64px;height:64px;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--bg-surface);border:1px solid var(--border-subtle);box-shadow:inset 0 1px #ffffff14,0 12px 20px #00000059}.placeholder-icon img{width:36px;height:36px}.comparison-placeholder h3{margin:0 0 8px;font-size:18px;color:var(--text-primary)}.comparison-placeholder p{font-size:14px;color:var(--text-secondary);max-width:400px;margin:0 auto}@media(max-width:768px){.comparison-header,.comparison-row{grid-template-columns:1fr;gap:12px}.comparison-header-label{display:none}.comparison-row .metric-label{padding-bottom:8px;border-bottom:1px solid var(--border-subtle)}.comparison-row .metric-value{padding:8px;background:var(--bg-surface);border-radius:8px}}.consistency-card{background:var(--card-bg);border-radius:12px;padding:20px}.consistency-card h3{margin:0 0 16px;font-size:16px;color:var(--text-primary)}.consistency-metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:16px;margin-bottom:20px}.consistency-metric{text-align:center;padding:12px;background:var(--bg-surface);border-radius:8px}.consistency-metric .metric-header{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:4px}.consistency-metric .metric-value{font-size:24px;font-weight:600}.consistency-metric .metric-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;margin-top:4px}.consistency-rating{display:inline-block;padding:4px 10px;border-radius:4px;font-size:12px;font-weight:600}.consistency-rating.elite{background:#22c55e26;color:#22c55e}.consistency-rating.good{background:#3b82f626;color:#3b82f6}.consistency-rating.average{background:#fbbf2426;color:#fbbf24}.consistency-rating.inconsistent{background:#ef444426;color:#ef4444}.game-position-bars{margin-top:16px}.position-bar{display:flex;align-items:center;gap:12px;margin-bottom:8px}.position-label{width:80px;font-size:12px;color:var(--text-secondary)}.position-bar-fill{flex:1;height:24px;background:var(--bg-surface);border-radius:4px;overflow:hidden;position:relative}.position-bar-fill .fill{height:100%;background:var(--primary-color);transition:width .5s ease}.position-bar-fill .value{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:12px;font-weight:600;color:var(--text-primary)}.consistency-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.consistency-header h3{margin:0}.consistency-metric .metric-hint{display:block;font-size:10px;color:var(--text-tertiary);margin-top:4px}.consistency-metric.clutch.excellent .metric-value{color:var(--success-color)}.consistency-metric.clutch.good .metric-value{color:var(--primary-color)}.consistency-metric.clutch.average .metric-value{color:var(--warning-color)}.consistency-metric.clutch.poor .metric-value{color:var(--error-color)}.consistency-empty{text-align:center;padding:24px;color:var(--text-secondary)}.consistency-empty .hint{font-size:13px;color:var(--text-tertiary);margin-top:8px}.game-position-section{margin-top:20px;padding-top:20px;border-top:1px solid var(--border-subtle)}.game-position-section h4{margin:0 0 16px;font-size:14px;color:var(--text-primary)}.position-bar-container{flex:1;height:24px;background:var(--bg-surface);border-radius:4px;overflow:hidden}.position-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary-color),var(--accent-color));border-radius:4px;transition:width .5s ease}.position-stats{display:flex;align-items:center;gap:8px;min-width:100px}.position-avg{font-size:14px;font-weight:600;color:var(--text-primary)}.position-games{font-size:11px;color:var(--text-tertiary)}.consistency-insights{margin-top:16px;display:flex;flex-direction:column;gap:8px}.consistency-insights .insight{padding:10px 14px;border-radius:8px;font-size:13px;line-height:1.4}.consistency-insights .insight.success{background:#22c55e1a;border-left:3px solid var(--success-color);color:var(--text-secondary)}.consistency-insights .insight.warning{background:#fbbf241a;border-left:3px solid var(--warning-color);color:var(--text-secondary)}.ball-stats-page{padding:0}.ball-summary-stats{display:flex;gap:16px;padding:0 32px 24px;flex-wrap:wrap}.ball-summary-stat{background:var(--card-bg);padding:16px 24px;border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:100px}.ball-summary-stat .stat-value{font-size:24px;font-weight:700;color:var(--text-primary)}.ball-summary-stat .stat-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.ball-summary-stat.highlight{background:linear-gradient(135deg,var(--primary-color),var(--accent-color))}.ball-summary-stat.highlight .stat-value,.ball-summary-stat.highlight .stat-label{color:#fff}.ball-summary-stat.best{border:2px solid var(--success-color)}.ball-summary-stat.best .stat-value{font-size:16px;color:var(--success-color)}.ball-stats-controls{display:flex;justify-content:space-between;align-items:center;padding:0 32px 24px;flex-wrap:wrap;gap:16px}.ball-stats-controls .status-filters,.ball-stats-controls .sort-controls{display:flex;gap:8px;align-items:center}.ball-stats-controls .sort-label{font-size:13px;color:var(--text-secondary);margin-right:4px}.ball-stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px;padding:0 32px 32px}.ball-stats-card{background:var(--card-bg);border-radius:12px;padding:20px;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.ball-stats-card:hover{border-color:var(--primary-color);transform:translateY(-2px)}.ball-stats-card.inactive{opacity:.6}.ball-stats-card.expanded{border-color:var(--primary-color)}.ball-card-header{display:flex;align-items:center;gap:16px;margin-bottom:16px}.ball-card-header .ball-photo{width:60px;height:60px;border-radius:50%;overflow:hidden;background:var(--bg-surface);flex-shrink:0}.ball-card-header .ball-photo img{width:100%;height:100%;object-fit:cover}.ball-card-header .ball-photo img.placeholder{padding:12px;opacity:.4}.ball-card-header .ball-info{flex:1;min-width:0}.ball-card-header .ball-info h3{margin:0;font-size:16px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ball-card-header .ball-info .ball-brand{margin:2px 0 0;font-size:13px;color:var(--text-secondary)}.ball-card-header .ball-info .inactive-badge{display:inline-block;margin-top:4px;padding:2px 8px;background:var(--bg-surface);border-radius:4px;font-size:10px;color:var(--text-tertiary);text-transform:uppercase}.value-score{display:flex;flex-direction:column;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:var(--bg-surface)}.value-score .score-value{font-size:20px;font-weight:700}.value-score .score-label{font-size:9px;text-transform:uppercase;color:var(--text-tertiary)}.value-score.score-excellent{background:#22c55e26}.value-score.score-excellent .score-value{color:var(--success-color)}.value-score.score-good{background:#3b82f626}.value-score.score-good .score-value{color:var(--primary-color)}.value-score.score-average{background:#fbbf2426}.value-score.score-average .score-value{color:var(--warning-color)}.value-score.score-low{background:#ef444426}.value-score.score-low .score-value{color:var(--error-color)}.ball-primary-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:16px 0;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color)}.ball-primary-stats .primary-stat{display:flex;flex-direction:column;align-items:center;gap:2px}.ball-primary-stats .primary-stat .stat-value{font-size:18px;font-weight:600;color:var(--text-primary)}.ball-primary-stats .primary-stat .stat-label{font-size:10px;color:var(--text-tertiary);text-transform:uppercase}.ball-primary-stats .primary-stat.trend.trend-up .stat-value{color:var(--success-color)}.ball-primary-stats .primary-stat.trend.trend-down .stat-value{color:var(--error-color)}.ball-primary-stats .primary-stat.trend.trend-stable .stat-value{color:var(--warning-color)}.ball-primary-stats .primary-stat.trend.trend-none .stat-value{color:var(--text-tertiary)}.ball-expanded-details{padding-top:16px;animation:slideDown .2s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.ball-expanded-details .detail-section{margin-bottom:16px}.ball-expanded-details .detail-section h4{margin:0 0 12px;font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.ball-expanded-details .detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.ball-expanded-details .detail-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:var(--bg-surface);border-radius:6px}.ball-expanded-details .detail-item .detail-label{font-size:12px;color:var(--text-secondary)}.ball-expanded-details .detail-item .detail-value{font-size:14px;font-weight:600;color:var(--text-primary)}.trend-comparison{display:flex;align-items:center;justify-content:center;gap:16px;padding:12px;background:var(--bg-surface);border-radius:8px}.trend-comparison .trend-item{display:flex;flex-direction:column;align-items:center;gap:4px}.trend-comparison .trend-label{font-size:10px;color:var(--text-tertiary);text-transform:uppercase}.trend-comparison .trend-value{font-size:18px;font-weight:600;color:var(--text-primary)}.trend-comparison .trend-arrow{font-size:24px;color:var(--text-secondary)}.pattern-comparison{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.pattern-comparison .pattern-item{display:flex;flex-direction:column;gap:4px;padding:12px;background:var(--bg-surface);border-radius:8px;border-left:3px solid transparent}.pattern-comparison .pattern-item.best{border-left-color:var(--success-color)}.pattern-comparison .pattern-item.worst{border-left-color:var(--error-color)}.pattern-comparison .pattern-label{font-size:10px;color:var(--text-tertiary);text-transform:uppercase}.pattern-comparison .pattern-name{font-size:14px;font-weight:600;color:var(--text-primary)}.pattern-comparison .pattern-score{font-size:12px;color:var(--text-secondary)}.ball-expanded-details .specs-list{display:flex;flex-wrap:wrap;gap:8px}.ball-expanded-details .spec-item{padding:6px 12px;background:var(--bg-surface);border-radius:6px;font-size:12px;color:var(--text-secondary)}.expand-indicator{text-align:center;padding-top:12px;font-size:11px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px}@media(max-width:768px){.ball-summary-stats{padding:0 16px 16px}.ball-stats-controls{padding:0 16px 16px;flex-direction:column;align-items:flex-start}.ball-stats-grid{grid-template-columns:1fr;padding:0 16px 16px}.ball-primary-stats{grid-template-columns:repeat(2,1fr)}.ball-expanded-details .detail-grid,.pattern-comparison{grid-template-columns:1fr}}.pattern-stats-page{min-height:100vh;background:var(--bg-primary)}.pattern-summary-stats{display:flex;gap:16px;padding:0 32px 24px;flex-wrap:wrap}.pattern-summary-stat{flex:1;min-width:120px;padding:16px 20px;background:var(--card-bg);border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:4px}.pattern-summary-stat .stat-value{font-size:24px;font-weight:700;color:var(--text-primary)}.pattern-summary-stat .stat-label{font-size:12px;color:var(--text-secondary)}.pattern-summary-stat.highlight{background:linear-gradient(135deg,var(--primary-color),var(--accent-color))}.pattern-summary-stat.highlight .stat-value,.pattern-summary-stat.highlight .stat-label{color:#fff}.pattern-summary-stat.best{border:2px solid var(--success-color)}.pattern-summary-stat.best .stat-value{font-size:16px;color:var(--success-color)}.pattern-stats-controls{display:flex;justify-content:space-between;align-items:center;padding:0 32px 24px;flex-wrap:wrap;gap:16px}.pattern-stats-controls .difficulty-filters,.pattern-stats-controls .sort-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.pattern-stats-controls .sort-label{font-size:13px;color:var(--text-secondary);margin-right:4px}.pattern-stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px;padding:0 32px 32px}.pattern-stats-card{background:var(--card-bg);border-radius:12px;padding:20px;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.pattern-stats-card:hover{border-color:var(--primary-color);transform:translateY(-2px)}.pattern-stats-card.expanded{border-color:var(--primary-color)}.pattern-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.pattern-card-header .pattern-info h3{margin:0;font-size:18px;font-weight:600;color:var(--text-primary)}.pattern-card-header .pattern-meta{display:flex;gap:8px;margin-top:4px}.pattern-card-header .pattern-length{font-size:12px;color:var(--text-secondary);padding:2px 8px;background:var(--bg-surface);border-radius:4px}.pattern-card-header .pattern-difficulty{font-size:11px;font-weight:600;padding:2px 8px;border-radius:4px;text-transform:uppercase}.pattern-difficulty.difficulty-easy{background:#22c55e26;color:var(--success-color)}.pattern-difficulty.difficulty-medium{background:#fbbf2426;color:var(--warning-color)}.pattern-difficulty.difficulty-hard{background:#f9731626;color:var(--accent-color)}.pattern-difficulty.difficulty-sport{background:#ef444426;color:var(--error-color)}.pattern-card-header .average-score{display:flex;flex-direction:column;align-items:center;justify-content:center;width:60px;height:60px;border-radius:50%;background:var(--bg-surface)}.pattern-card-header .average-score .score-value{font-size:22px;font-weight:700}.pattern-card-header .average-score .score-label{font-size:9px;text-transform:uppercase;color:var(--text-tertiary)}.pattern-card-header .average-score.score-excellent{background:#22c55e26}.pattern-card-header .average-score.score-excellent .score-value{color:var(--success-color)}.pattern-card-header .average-score.score-good{background:#3b82f626}.pattern-card-header .average-score.score-good .score-value{color:var(--primary-color)}.pattern-card-header .average-score.score-average{background:#fbbf2426}.pattern-card-header .average-score.score-average .score-value{color:var(--warning-color)}.pattern-card-header .average-score.score-low{background:#ef444426}.pattern-card-header .average-score.score-low .score-value{color:var(--error-color)}.pattern-primary-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:16px 0;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color)}.pattern-primary-stats .primary-stat{display:flex;flex-direction:column;align-items:center;gap:2px}.pattern-primary-stats .primary-stat .stat-value{font-size:18px;font-weight:600;color:var(--text-primary)}.pattern-primary-stats .primary-stat .stat-label{font-size:10px;color:var(--text-tertiary);text-transform:uppercase}.pattern-primary-stats .primary-stat.trend.trend-up .stat-value{color:var(--success-color)}.pattern-primary-stats .primary-stat.trend.trend-down .stat-value{color:var(--error-color)}.pattern-primary-stats .primary-stat.trend.trend-stable .stat-value{color:var(--warning-color)}.pattern-primary-stats .primary-stat.trend.trend-none .stat-value{color:var(--text-tertiary)}.pattern-expanded-details{padding-top:16px;animation:slideDown .2s ease}.pattern-expanded-details .detail-section{margin-bottom:16px}.pattern-expanded-details .detail-section h4{margin:0 0 12px;font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.pattern-expanded-details .detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.pattern-expanded-details .detail-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:var(--bg-surface);border-radius:6px}.pattern-expanded-details .detail-item .detail-label{font-size:12px;color:var(--text-secondary)}.pattern-expanded-details .detail-item .detail-value{font-size:14px;font-weight:600;color:var(--text-primary)}.ball-comparison{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.ball-comparison .ball-item{display:flex;flex-direction:column;gap:4px;padding:12px;background:var(--bg-surface);border-radius:8px;border-left:3px solid transparent}.ball-comparison .ball-item.best{border-left-color:var(--success-color)}.ball-comparison .ball-item.worst{border-left-color:var(--error-color)}.ball-comparison .ball-label{font-size:10px;color:var(--text-tertiary);text-transform:uppercase}.ball-comparison .ball-name{font-size:14px;font-weight:600;color:var(--text-primary)}.ball-comparison .ball-score{font-size:12px;color:var(--text-secondary)}.pattern-info-grid{display:flex;flex-wrap:wrap;gap:8px}.pattern-info-grid .info-item{padding:6px 12px;background:var(--bg-surface);border-radius:6px;font-size:12px;color:var(--text-secondary)}.pattern-insights{padding:0 32px 24px}.pattern-insights .insight-card{display:flex;gap:16px;padding:20px;background:var(--card-bg);border-radius:12px;border-left:4px solid var(--primary-color)}.pattern-insights .insight-icon{font-size:32px}.pattern-insights .insight-content h4{margin:0 0 8px;font-size:16px;font-weight:600;color:var(--text-primary)}.pattern-insights .insight-content p{margin:0;font-size:14px;color:var(--text-secondary);line-height:1.5}.pattern-legend{margin:0 32px 32px;padding:20px;background:var(--card-bg);border-radius:12px}.pattern-legend h4{margin:0 0 16px;font-size:14px;font-weight:600;color:var(--text-primary)}.pattern-legend .legend-items{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.pattern-legend .legend-item{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary)}.pattern-legend .legend-color{width:12px;height:12px;border-radius:3px}.pattern-legend .legend-color.easy{background:var(--success-color)}.pattern-legend .legend-color.medium{background:var(--warning-color)}.pattern-legend .legend-color.hard{background:var(--accent-color)}.pattern-legend .legend-color.sport{background:var(--error-color)}@media(max-width:768px){.pattern-summary-stats{padding:0 16px 16px}.pattern-stats-controls{padding:0 16px 16px;flex-direction:column;align-items:flex-start}.pattern-stats-controls .difficulty-filters{width:100%;overflow-x:auto;padding-bottom:8px}.pattern-stats-grid{grid-template-columns:1fr;padding:0 16px 16px}.pattern-primary-stats{grid-template-columns:repeat(2,1fr)}.pattern-expanded-details .detail-grid,.ball-comparison{grid-template-columns:1fr}.pattern-insights{padding:0 16px 16px}.pattern-legend{margin:0 16px 16px}}
