:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#f5f7fb;background:#07111f}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:linear-gradient(135deg,#07111f,#12253f)}#root{min-height:100vh}.app-shell{padding:24px;max-width:1100px;margin:0 auto}.topbar{display:flex;justify-content:space-between;align-items:center;padding:16px 0 24px;gap:12px;flex-wrap:wrap}.brand{color:#fff;font-size:1.25rem;font-weight:700;text-decoration:none}.nav-links{display:flex;gap:12px;flex-wrap:wrap}.nav-links a{color:#c9d6f0;text-decoration:none}.hero{background:#ffffff14;border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:32px;margin-bottom:24px}.hero h1,.hero h2{margin-top:0;margin-bottom:12px;font-size:2rem}.hero.compact{padding:24px;margin-bottom:18px}.hero p{margin:0;max-width:720px;color:#dfe9f9}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:18px}.subcard{min-height:180px}.big-value{font-size:1.35rem;font-weight:700;margin:6px 0}@media (max-width: 768px){.app-shell{padding:16px}.topbar{align-items:flex-start;flex-direction:column}.nav-links{width:100%;gap:8px}.nav-links a{padding:6px 8px;background:#ffffff0f;border-radius:999px}.hero{padding:22px}.hero h1,.hero h2{font-size:1.5rem}}.card{background:#ffffff14;border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:20px}.card h2,.card h3{margin-top:0}.card a{color:#7fe0ff;text-decoration:none}.status{display:inline-block;margin-top:8px;padding:6px 10px;border-radius:999px;background:#7fe0ff26;color:#7fe0ff;font-size:.9rem}.disputed-status-text{text-transform:uppercase;white-space:nowrap}.disputed-status-text.unified{color:#89e8a8;font-family:Georgia,Times New Roman,serif;font-weight:700;letter-spacing:.06em}.disputed-status-text.disputed{color:#c43a3a;font-family:Impact,Haettenschweiler,Arial Black,sans-serif;font-weight:800;letter-spacing:.08em;text-shadow:0 0 6px rgba(196,58,58,.35)}.team-logo{border-radius:999px;object-fit:contain;background:transparent;border:1px solid transparent;flex:0 0 auto}.team-logo.fallback{display:inline-flex;align-items:center;justify-content:center;font-size:.62rem;font-weight:700;color:#0a1b2c;background:#ffffffd9;border:1px solid rgba(255,255,255,.25)}.team-inline{display:inline-flex;align-items:center;gap:8px}.team-inline-wrap{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.sport-logo{border-radius:999px;object-fit:contain;background:transparent;border:1px solid transparent;flex:0 0 auto}.sport-logo.fallback{display:inline-flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:800;color:#0a1b2c;background:#ffffffe6;border:1px solid rgba(255,255,255,.3)}.sport-hero-centered{text-align:center;display:flex;flex-direction:column;align-items:center}.sport-hero-title{margin:0;font-size:clamp(2.4rem,6vw,4rem);display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap}.sport-hero-centered .sport-hero-description{font-size:clamp(.95rem,2vw,1.35rem);text-align:center;max-width:820px;margin:10px 0 0}.sport-hero-status{font-size:clamp(1rem,2.5vw,1.8rem);margin-top:14px}.sport-theme-bg{--sport-bg-gradient: linear-gradient(135deg, #0f2746 0%, #24456f 100%);--sport-main-card-bg: #0c1f39;--sport-subcard-bg: #143058;--sport-border-color: rgba(210, 230, 255, .22);--sport-link-color: #9ee8ff;--sport-status-bg: rgba(123, 222, 255, .2);--sport-status-text: #ccf4ff;--sport-status-border: rgba(123, 222, 255, .42);--sport-button-bg: rgba(123, 222, 255, .16);--sport-button-border: rgba(123, 222, 255, .48);--sport-button-text: #e8f9ff;--sport-button-active-bg: #7bdeff;--sport-button-active-text: #092036;background:var(--sport-bg-gradient);border-radius:18px;padding:14px}.sport-page{background:var(--sport-main-card-bg);border-color:var(--sport-border-color)}.sport-page .subcard,.sport-page .hero,.sport-page .admin-section{background:var(--sport-subcard-bg);border-color:var(--sport-border-color)}.sport-page .title-bout-row,.sport-page .last-held-card{border-color:var(--sport-border-color)}.sport-page a{color:var(--sport-link-color)}.sport-page .sport-hero-status{background:var(--sport-status-bg);color:var(--sport-status-text);border:1px solid var(--sport-status-border)}.sport-page .admin-back-link,.sport-page .title-page-button{background:var(--sport-button-bg);border-color:var(--sport-button-border);color:var(--sport-button-text)}.sport-page .title-page-button.active{background:var(--sport-button-active-bg);color:var(--sport-button-active-text);border-color:var(--sport-button-active-bg)}.sport-page .title-page-button:hover:not(:disabled),.sport-page .admin-back-link:hover{filter:brightness(1.08)}.sport-theme-nba{--sport-bg-gradient: linear-gradient(140deg, #081a48 0%, #6a3608 100%);--sport-main-card-bg: #0b2153;--sport-subcard-bg: #14326e;--sport-border-color: rgba(255, 211, 133, .34);--sport-link-color: #ffd98f;--sport-status-bg: rgba(255, 201, 103, .22);--sport-status-text: #ffe8bf;--sport-status-border: rgba(255, 201, 103, .45);--sport-button-bg: rgba(255, 201, 103, .18);--sport-button-border: rgba(255, 201, 103, .5);--sport-button-text: #fff2d9;--sport-button-active-bg: #ffc967;--sport-button-active-text: #2b1a00}.sport-theme-nfl{--sport-bg-gradient: linear-gradient(140deg, #062618 0%, #2e3f13 100%);--sport-main-card-bg: #08271d;--sport-subcard-bg: #164333;--sport-border-color: rgba(168, 219, 181, .32);--sport-link-color: #b9f3cc;--sport-status-bg: rgba(120, 218, 150, .2);--sport-status-text: #d6ffe3;--sport-status-border: rgba(120, 218, 150, .45);--sport-button-bg: rgba(120, 218, 150, .18);--sport-button-border: rgba(120, 218, 150, .52);--sport-button-text: #e9fff0;--sport-button-active-bg: #78da96;--sport-button-active-text: #082012}.sport-theme-mlb{--sport-bg-gradient: linear-gradient(140deg, #f5e9ce 0%, #0f2a5e 100%);--sport-main-card-bg: #12366e;--sport-subcard-bg: #1b4687;--sport-border-color: rgba(255, 236, 196, .34);--sport-link-color: #ffe2b0;--sport-status-bg: rgba(255, 221, 165, .2);--sport-status-text: #fff0d2;--sport-status-border: rgba(255, 221, 165, .45);--sport-button-bg: rgba(255, 221, 165, .18);--sport-button-border: rgba(255, 221, 165, .5);--sport-button-text: #fff4de;--sport-button-active-bg: #ffdda5;--sport-button-active-text: #2b1b00}.sport-theme-nhl{--sport-bg-gradient: linear-gradient(140deg, #bfe9ff 0%, #0b2e4d 100%);--sport-main-card-bg: #11365a;--sport-subcard-bg: #1b4a76;--sport-border-color: rgba(188, 231, 255, .34);--sport-link-color: #bfeeff;--sport-status-bg: rgba(139, 214, 255, .2);--sport-status-text: #dcf4ff;--sport-status-border: rgba(139, 214, 255, .45);--sport-button-bg: rgba(139, 214, 255, .18);--sport-button-border: rgba(139, 214, 255, .52);--sport-button-text: #e9f8ff;--sport-button-active-bg: #8bd6ff;--sport-button-active-text: #04213a}.sport-hero-champion-logo-wrap{margin-top:14px;display:flex;justify-content:center}.sport-hero-champion-logo{width:min(256px,70vw);height:min(256px,70vw);border-radius:20px;background:transparent;border:1px solid transparent}.latest-title-bout-card p{font-size:1.16rem}.latest-title-bout-card h3,.latest-bout-date-line{text-align:center}.latest-bout-winner-line{width:100%;display:flex;justify-content:center}.latest-bout-score-line{text-align:center}.latest-title-bout-card .team-logo:not(.fallback){background:transparent;border-color:transparent}.title-bouts-header-row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.title-bouts-header-row h3{margin:0}.title-bouts-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.title-bouts-search{display:inline-flex;align-items:center;gap:8px;color:#dfe9f9;font-size:.92rem}.title-bouts-search input{border:1px solid rgba(255,255,255,.18);border-radius:10px;background:#050e1ca6;color:#f5f7fb;padding:6px 10px;min-width:180px}.title-bouts-page-size{display:inline-flex;align-items:center;gap:8px;color:#dfe9f9;font-size:.92rem}.title-bouts-page-size select{border:1px solid rgba(255,255,255,.18);border-radius:10px;background:#050e1ca6;color:#f5f7fb;padding:6px 10px}.title-bouts-list{display:grid;gap:8px}.lineage-selector-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.title-pagination-meta{color:#dfe9f9;font-size:.9rem}.title-bout-row{border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:12px 14px;background:#ffffff0a;text-align:center}.title-bout-row p{margin:4px 0}.title-bout-date{font-weight:700;color:#dff7ff}.title-bout-line{color:#e6eefc}.title-bout-line,.title-bout-winner{display:flex;justify-content:center;align-items:center;gap:8px;flex-wrap:wrap}.title-bout-label{font-weight:700;color:#dff7ff}.title-bout-vs{color:#9ed9ea;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.title-bout-date,.title-bout-line,.title-bout-vs,.title-bout-score{font-size:1rem}.title-bout-score{color:#c9d6f0}.title-bout-winner{color:#d7e6ff;font-size:1.17rem}.title-bout-line .team-inline,.title-bout-winner .team-inline{align-items:center;vertical-align:middle}.title-bout-stats-row{display:flex;justify-content:center;gap:18px;margin-top:4px;flex-wrap:wrap}.title-bout-stats-row p{color:#b9caea;font-size:.88rem}.title-bouts-pagination{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px;justify-content:center;align-items:center}.title-pagination-group{display:inline-flex;gap:8px;align-items:center}.title-pagination-group-numbers{min-width:360px;justify-content:center}.title-page-ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:5.6ch;color:#c9d6f0}.title-page-number{min-width:5.6ch;padding-left:8px;padding-right:8px;justify-content:center;text-align:center;font-variant-numeric:tabular-nums}.title-bouts-count-summary{margin:8px 0 0;text-align:center;color:#c9d6f0;font-size:.92rem}.title-bouts-shortcuts-hint{margin:2px 0 0;text-align:center;color:#9fb1d6;font-size:.82rem}.last-held-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.last-held-card{border:1px solid rgba(255,255,255,.12);border-radius:12px;background:#ffffff0a;padding:10px 12px;text-align:center}.last-held-team-name{font-size:.95rem;font-weight:700;margin:0;justify-content:center}.last-held-date{margin:6px 0 0;color:#d5e7ff;font-size:.9rem;text-align:center}@media (max-width: 900px){.title-pagination-group-numbers{min-width:0;width:100%}}.title-page-button{border:1px solid rgba(127,224,255,.35);border-radius:999px;padding:6px 12px;background:#7fe0ff1a;color:#dff7ff;cursor:pointer}.title-page-button:disabled{cursor:not-allowed;opacity:.45}.title-page-button.active{background:#7fe0ff;color:#07233a;border-color:#7fe0ff;font-weight:700}.admin-page{padding:24px}.admin-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;flex-wrap:wrap}.admin-header h2{margin-bottom:6px}.admin-header p{margin:0;color:#dfe9f9}.admin-back-link{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;background:#7fe0ff26}.admin-stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:18px}.admin-stat-card{border:1px solid rgba(255,255,255,.1);border-radius:12px;background:#ffffff0a;padding:14px}.admin-stat-card h3{margin:0;font-size:1.5rem}.admin-stat-card p{margin:4px 0 0;color:#c9d6f0}.admin-form{display:grid;gap:16px}.admin-section{border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:16px;background:#ffffff08}.admin-section h3{margin-bottom:12px}.admin-form-grid{display:grid;gap:12px}.admin-form-grid.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-form-grid.three-col{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-field{display:grid;gap:6px}.admin-field.full-span{grid-column:1 / -1}.admin-form label{color:#dfe9f9;font-size:.95rem}.admin-form input,.admin-form textarea,.admin-form select{width:100%;border:1px solid rgba(255,255,255,.18);border-radius:10px;background:#050e1ca6;color:#f5f7fb;padding:10px 12px}.admin-form input.input-error,.admin-form textarea.input-error,.admin-form select.input-error{border-color:#ff7c7cd9;box-shadow:0 0 0 1px #ff7c7c40}.field-error{margin:0;color:#ffb4b4;font-size:.84rem}.admin-form textarea{min-height:80px;resize:vertical}.admin-submit-button{border:0;border-radius:999px;padding:10px 16px;font-weight:700;width:fit-content;background:#7fe0ff;color:#07233a;cursor:pointer}.admin-submit-button.secondary{display:inline-flex;background:#7fe0ff2e;color:#dff7ff;border:1px solid rgba(127,224,255,.35)}.admin-submit-button.danger{background:#ff7c7c;color:#3a0707}.data-tools-grid{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0 12px}.import-block{display:grid;gap:6px}.import-block input[type=file]{max-width:420px}.import-preview{margin-top:12px;padding:12px;border:1px solid rgba(127,224,255,.35);border-radius:12px;background:#7fe0ff14}.import-preview h4{margin:0 0 6px}.import-preview p{margin:4px 0}.import-warning{margin-top:8px;padding:8px 10px;border-radius:8px;background:#ff7c7c2e;border:1px solid rgba(255,124,124,.45);color:#ffd4d4}.import-diff-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:10px}.import-diff-grid ul{margin:8px 0 0;padding-left:18px}.import-preview-actions{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}.admin-message{margin-top:14px;padding:10px 12px;border-radius:10px}.admin-message.success{background:#5fe48c33;border:1px solid rgba(95,228,140,.45)}.admin-message.error{background:#ff7c7c2e;border:1px solid rgba(255,124,124,.45)}.existing-records{margin-top:18px}.existing-records-grid{display:grid;gap:12px}.record-card{border:1px solid rgba(255,255,255,.16);border-radius:12px;background:#0000001f;padding:12px}.record-grid{display:grid;gap:10px}.record-grid.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}.record-grid.three-col{grid-template-columns:repeat(3,minmax(0,1fr))}.record-actions{margin-top:10px;display:flex;justify-content:flex-end}.franchise-page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:16px}.franchise-page-header p{margin:0;color:#dfe9f9}.franchise-header-actions{display:inline-flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:flex-end}.franchise-controls{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:12px;margin-bottom:14px}.season-range-panel{border:1px solid rgba(255,255,255,.12);border-radius:12px;background:#ffffff0a;padding:12px;margin-bottom:14px}.season-range-panel p{margin:0 0 10px;color:#dfe9f9}.season-range-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.season-range-field{display:grid;gap:6px}.season-range-field label{color:#dfe9f9;font-size:.9rem}.season-range-field input[type=range]{width:100%}.season-range-field p{margin:0;font-size:.9rem}.franchise-control-field{display:grid;gap:6px}.franchise-control-field label{color:#dfe9f9;font-size:.9rem}.franchise-control-field input,.franchise-control-field select{width:100%;border:1px solid rgba(255,255,255,.18);border-radius:10px;background:#050e1ca6;color:#f5f7fb;padding:10px 12px}.franchise-table-wrap{width:100%;overflow-x:hidden}.franchise-table{width:100%;border-collapse:collapse;min-width:0;table-layout:fixed}.franchise-table th,.franchise-table td{text-align:center;padding:6px 4px;border-bottom:1px solid rgba(255,255,255,.12);white-space:normal;word-break:break-word;line-height:1.15;vertical-align:middle;font-size:.8rem}.franchise-table th{color:#9ed9ea;font-size:.72rem;text-transform:uppercase;letter-spacing:.02em}.franchise-table th:first-child,.franchise-table td:first-child{text-align:left;width:250px;white-space:nowrap}.franchise-table td:first-child .team-inline{display:inline-flex;align-items:center;gap:4px;flex-wrap:nowrap;font-size:.88rem}.franchise-table th:not(:first-child),.franchise-table td:not(:first-child){padding:4px 2px}.sort-header-button{all:unset;cursor:pointer;color:inherit;font-size:inherit;letter-spacing:inherit;display:inline-block;width:100%}.sort-header-button:hover{color:#d8f7ff}.franchise-table td{color:#e6eefc}.disputed-champions-table th,.disputed-champions-table td{font-size:.95rem;padding:10px 12px;white-space:normal}.disputed-champions-table th{font-size:.86rem}.disputed-champions-table .team-inline{font-size:.98rem;gap:10px}.franchise-mobile-list{display:none}@media (max-width: 900px){.admin-form-grid.two-col,.admin-form-grid.three-col,.franchise-controls,.season-range-controls,.import-diff-grid,.record-grid.two-col,.record-grid.three-col{grid-template-columns:1fr}.franchise-table-wrap{display:none}.franchise-mobile-list{display:grid;gap:12px}}
