html,body,#root{height:100%;margin:0}:root{--bg:#0d0f14;--surface:#13161e;--surface2:#1a1e2a;--border:#ffffff12;--accent:#00c896;--accent2:#0090ff;--danger:#ff4d6a;--text:#e8eaf0;--muted:#6b7280;--mono:"JetBrains Mono", monospace;--sans:"Space Grotesk", sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--sans);background:var(--bg);color:var(--text);background-image:linear-gradient(#ffffff04 1px,#0000 1px),linear-gradient(90deg,#ffffff04 1px,#0000 1px);background-size:40px 40px;min-height:100vh}.app{flex-direction:column;min-height:100vh;display:flex}.app-header{border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:100;background:#0d0f14d9;align-items:center;gap:16px;padding:20px 32px;display:flex;position:sticky;top:0}.logo-mark{background:linear-gradient(135deg, var(--accent), #006e54);width:36px;height:36px;font-family:var(--mono);color:#000;letter-spacing:-.5px;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.header-title{letter-spacing:-.3px;font-size:17px;font-weight:600}.header-sub{color:var(--muted);margin-top:1px;font-size:12px}.header-pill{font-family:var(--mono);color:var(--accent);background:#00c8961a;border:1px solid #00c89633;border-radius:20px;margin-left:auto;padding:4px 10px;font-size:11px}.app-main{flex:1;grid-template-columns:360px 1fr 320px;align-items:start;gap:24px;width:100%;max-width:1600px;margin:0 auto;padding:32px;display:grid}.section-label{text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);align-items:center;gap:8px;margin-bottom:16px;font-size:11px;font-weight:600;display:flex}.section-label:after{content:"";background:var(--border);flex:1;height:1px}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:24px;position:relative;overflow:hidden}.card:before{content:"";-webkit-mask-composite:xor;pointer-events:none;background:linear-gradient(135deg,#ffffff14,#0000 60%);border-radius:14px;padding:1px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.stat-skeleton{flex-direction:column;gap:10px;display:flex}.stat-card-label{color:var(--muted);align-items:center;gap:8px;margin-bottom:6px;font-size:12px;font-weight:500;display:flex}.stat-dot{border-radius:50%;width:6px;height:6px}.stat-dot.green{background:var(--accent);box-shadow:0 0 6px var(--accent)}.stat-dot.blue{background:var(--accent2);box-shadow:0 0 6px var(--accent2)}.stat-number{font-family:var(--mono);letter-spacing:-2px;color:#fff;margin-bottom:6px;font-size:52px;font-weight:600;line-height:1}.stat-number.blue{color:var(--accent2)}.stat-number.green{color:var(--accent)}.stat-deltas{flex-direction:column;gap:2px;display:flex}.stat-delta{color:var(--muted);font-size:12px;font-family:var(--mono)}.stat-updated{border-top:1px solid var(--border);color:var(--muted);font-size:11px;font-family:var(--mono);text-align:right;margin-top:20px;padding-top:12px}.stat-divider{background:var(--border);height:1px;margin:20px 0}@keyframes shimmer{0%{background-position:-600px 0}to{background-position:600px 0}}.skeleton{background:linear-gradient(90deg,#ffffff0a 25%,#ffffff17 50%,#ffffff0a 75%) 0 0/600px 100%;border-radius:6px;animation:1.5s linear infinite shimmer}.skel-num{border-radius:8px;width:120px;height:52px}.skel-lbl{width:160px;height:14px}.skel-dlt{width:80px;height:12px}.refresh-btn{border:1px solid var(--border);color:var(--muted);font-family:var(--sans);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:6px;margin-left:auto;padding:5px 12px;font-size:12px;transition:border-color .15s,color .15s;display:flex}.refresh-btn:hover{border-color:var(--accent);color:var(--accent)}.refresh-icon{font-size:13px;display:inline-block}.refresh-icon.spinning{animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.methods-panel{flex-direction:column;gap:16px;display:flex}.method-block{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:22px 24px;position:relative;overflow:hidden}.method-block:before{content:"";border-radius:14px 14px 0 0;height:2px;position:absolute;top:0;left:0;right:0}.method-block.green:before{background:linear-gradient(90deg, var(--accent), transparent)}.method-block.blue:before{background:linear-gradient(90deg, var(--accent2), transparent)}.method-title{margin-bottom:4px;font-size:14px;font-weight:600}.method-desc{color:var(--muted);margin-bottom:16px;font-size:12px;line-height:1.5}.input-row{gap:8px;margin-bottom:12px;display:flex}.input-field{background:var(--surface2);border:1px solid var(--border);color:var(--text);font-family:var(--mono);border-radius:8px;outline:none;flex:1;padding:10px 14px;font-size:12px;transition:border-color .15s}.input-field::placeholder{color:var(--muted)}.input-field:focus{border-color:#00c89680}.action-btn{font-family:var(--sans);cursor:pointer;border:none;border-radius:8px;align-items:center;gap:8px;padding:10px 20px;font-size:13px;font-weight:600;transition:opacity .15s,filter .15s;display:inline-flex}.action-btn:hover{filter:brightness(1.1)}.action-btn:active{filter:brightness(.92)}.action-btn:disabled{opacity:.5;cursor:not-allowed;filter:none}.btn-green{background:var(--accent);color:#000}.btn-blue{background:var(--accent2);color:#fff}.btn-ghost{background:var(--surface2);color:var(--text);border:1px solid var(--border)}.btn-spinner{border:2px solid #00000040;border-top-color:#000;border-radius:50%;width:14px;height:14px;animation:.6s linear infinite spin}.btn-spinner.light{border-color:#fff #ffffff40 #ffffff40}.results-area{margin-top:16px}.results-label{text-transform:uppercase;letter-spacing:1.2px;color:var(--muted);margin-bottom:12px;font-size:11px;font-weight:600}.pred-skeleton{flex-direction:column;gap:12px;display:flex}.pred-skel-row{align-items:center;gap:12px;display:flex}.pred-skel-text{flex-direction:column;flex:1;gap:6px;display:flex}.results-table{border-collapse:collapse;width:100%;font-size:13px}.results-table thead tr{border-bottom:1px solid var(--border)}.results-table th{text-align:left;text-transform:uppercase;letter-spacing:1px;color:var(--muted);padding:8px 12px;font-size:11px;font-weight:600}.results-table td{vertical-align:middle;border-bottom:1px solid #ffffff0a;padding:11px 12px}.results-table tr:last-child td{border-bottom:none}.results-table tbody tr{transition:background .1s}.results-table tbody tr:hover{background:#ffffff08}.rank-badge{width:28px;height:28px;font-family:var(--mono);border-radius:7px;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex}.rank-1{color:#ffd600;background:#ffd60026}.rank-2{color:#b4b4c8;background:#b4b4c826}.rank-3{color:#cd7f32;background:#cd7f3226}.rank-other{color:var(--muted);background:#ffffff0d}.player-name,.player-rating{font-weight:500}.confidence-bar-wrap{align-items:center;gap:10px;display:flex}.confidence-bar{background:#ffffff14;border-radius:2px;flex:1;height:4px;overflow:hidden}.confidence-fill{border-radius:2px;height:100%;transition:width .6s cubic-bezier(.34,1.56,.64,1)}.confidence-value{font-family:var(--mono);color:var(--muted);text-align:right;flex-shrink:0;width:38px;font-size:12px}.empty-state{text-align:center;color:var(--muted);padding:40px 20px}.empty-icon{opacity:.4;margin-bottom:12px;font-size:32px}.empty-text{font-size:13px}.toast-container{z-index:9999;pointer-events:none;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:24px;right:24px}.toast{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);pointer-events:all;border-radius:12px;align-items:center;gap:12px;max-width:340px;padding:14px 18px;font-size:13px;font-weight:500;animation:.3s cubic-bezier(.34,1.56,.64,1) forwards toast-in;display:flex}.toast.exiting{animation:.25s forwards toast-out}@keyframes toast-in{0%{opacity:0;transform:translateY(16px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toast-out{to{opacity:0;transform:translateY(8px)scale(.95)}}.toast-success{color:#e8eaf0;background:#00c89626;border:1px solid #00c8964d}.toast-error{color:#e8eaf0;background:#ff4d6a26;border:1px solid #ff4d6a4d}.toast-icon{flex-shrink:0;font-size:16px}.model-block-title{color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:14px;font-size:12px;font-weight:600}.fi-list{flex-direction:column;gap:8px;display:flex}.fi-row{align-items:center;gap:8px;display:flex}.fi-name{font-family:var(--mono);color:var(--muted);flex-shrink:0;width:120px;font-size:11px}.fi-bar-wrap{background:#ffffff0f;border-radius:3px;flex:1;height:6px;overflow:hidden}.fi-bar{background:var(--accent2);border-radius:3px;height:100%;transition:width .6s cubic-bezier(.34,1.56,.64,1)}.fi-value{font-family:var(--mono);color:var(--text);text-align:right;flex-shrink:0;width:36px;font-size:11px}.manual-form{flex-direction:column;gap:8px;display:flex}.manual-field{flex-direction:column;gap:4px;display:flex}.manual-label{color:var(--muted);font-size:11px;font-weight:500}.score-result{background:#0090ff14;border:1px solid #0090ff33;border-radius:8px;flex-wrap:wrap;align-items:baseline;gap:8px;margin-top:14px;padding:12px;font-size:13px;display:flex}.score-value{font-family:var(--mono);color:var(--accent2);font-size:22px;font-weight:600}.score-hint{color:var(--muted);font-size:11px}.tourn-summary{color:var(--muted);font-size:12px;font-family:var(--mono);background:#ffffff08;border-radius:8px;flex-wrap:wrap;gap:16px;margin-bottom:12px;padding:10px 12px;display:flex}.tourn-summary b{color:var(--text)}@media (width<=1100px){.app-main{grid-template-columns:360px 1fr}}@media (width<=900px){.app-main{grid-template-columns:1fr;gap:20px;padding:20px}.app-header{padding:16px 20px}.stat-number{font-size:40px}}
