/* Live Odds board: elite redesign (2026-09-30). Loaded after elite_black.css on /live-odds. */
.ke-odds-page{width:min(1320px,calc(100% - 40px))!important;max-width:none!important;padding:36px 0 80px!important}
.ke-odds-page .eyebrow{font-size:11.5px;font-weight:700;letter-spacing:.16em;background:var(--ke-accent);-webkit-background-clip:text;background-clip:text;color:transparent}

/* Hero: title left, live status + coverage right */
.ke-odds-hero{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,440px);gap:28px;align-items:stretch;margin:0 0 22px!important;padding:0!important;border:0!important;background:none!important;box-shadow:none!important}
.ke-odds-hero::before,.ke-odds-hero::after{display:none!important}
.ke-odds-title{align-self:end}
.ke-odds-hero h1{margin:12px 0 10px!important;color:#fff!important;font-size:clamp(36px,4.4vw,58px)!important;font-weight:600!important;line-height:1!important;letter-spacing:-.045em!important}
.ke-odds-hero p{max-width:620px;margin:0!important;color:var(--ke-text-2)!important;font-size:15.5px!important;line-height:1.55}
.ke-odds-live{position:relative;display:flex!important;flex-direction:column;gap:6px;margin:0!important;padding:18px 20px!important;border:1px solid #31fbb73d!important;border-radius:20px!important;background:radial-gradient(120% 140% at 100% 0,#2dfce612,transparent 55%),#0a0a0c!important;box-shadow:0 20px 60px #00000080!important;overflow:hidden}
.ke-live-pill{display:inline-flex;align-self:flex-start;align-items:center;gap:8px;padding:4px 11px 4px 9px;border:1px solid #31fbb740;border-radius:999px;background:#31fbb70d;color:var(--ke-mint)!important;font-size:11px!important;font-weight:800!important;letter-spacing:.1em!important;text-transform:uppercase}
.ke-live-pill i{position:relative;width:8px;height:8px;border-radius:50%;background:var(--ke-mint)}
.ke-live-pill i::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid var(--ke-mint);opacity:0;animation:ke-live-ping 1.8s cubic-bezier(0,0,.2,1) infinite}
@keyframes ke-live-ping{0%{transform:scale(.6);opacity:.8}100%{transform:scale(1.6);opacity:0}}
.ke-odds-live:not(.health-online) .ke-live-pill{border-color:#f2c14e55;background:#f2c14e10;color:var(--ke-gold)!important}
.ke-odds-live:not(.health-online) .ke-live-pill i{background:var(--ke-gold)}
.ke-odds-live:not(.health-online) .ke-live-pill i::after{border-color:var(--ke-gold)}
.ke-odds-live.health-unavailable .ke-live-pill,.ke-odds-live.health-offline .ke-live-pill{border-color:#ff7b6b55;background:#ff7b6b10;color:#ff9b8a!important}
.ke-odds-live.health-unavailable .ke-live-pill i,.ke-odds-live.health-offline .ke-live-pill i{background:#ff9b8a}
.ke-odds-live>strong{margin-top:6px;color:#fff!important;font-family:var(--ke-display);font-size:19px!important;font-weight:600!important;letter-spacing:-.015em}
.ke-odds-live>small{color:var(--ke-text-3)!important;font-size:12px!important}
.ke-odds-stats{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:0!important;margin:12px 0 0!important;padding:0!important;border:1px solid var(--ke-hairline)!important;border-radius:14px!important;background:#050506!important;overflow:hidden}
.ke-odds-stats>div{margin:0!important;padding:10px 14px!important;border:0!important;border-left:1px solid var(--ke-hairline)!important;border-radius:0!important;background:none!important;box-shadow:none!important}
.ke-odds-stats>div:first-child{border-left:0!important}
.ke-odds-stats dt{color:var(--ke-text-3);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.ke-odds-stats dd{margin:3px 0 0;color:#fff;font-family:var(--ke-display);font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}

/* Toolbar */
.ke-odds-toolbar{position:relative;z-index:6;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin:0 0 14px;padding:10px;border:1px solid var(--ke-hairline);border-radius:18px;background:var(--ke-surface)}
.ke-odds-toolbar .ke-seg{display:inline-flex!important;flex-wrap:nowrap;gap:2px;margin:0!important;padding:3px!important;border:1px solid var(--ke-hairline)!important;border-radius:999px!important;background:#050506!important;overflow-x:auto;scrollbar-width:none}
.ke-odds-toolbar .ke-seg::-webkit-scrollbar{display:none}
.ke-odds-toolbar .ke-seg a{display:inline-flex!important;align-items:center;min-height:32px;padding:0 14px!important;border:0!important;border-radius:999px!important;background:transparent!important;color:var(--ke-text-2)!important;font-size:13px!important;font-weight:650!important;white-space:nowrap;box-shadow:none!important}
.ke-odds-toolbar .ke-seg a:hover{color:#fff!important}
.ke-odds-toolbar .ke-seg a[aria-current=page]{background:#1c1c20!important;color:#fff!important;box-shadow:inset 0 0 0 1px #ffffff14!important}
.ke-odds-filters{display:flex!important;flex:1 1 560px;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;margin:0!important;padding:0!important;border:0!important;background:none!important;box-shadow:none!important;grid-template-columns:none!important}
.ke-odds-filters label{position:relative;display:block!important;flex:1 1 150px;max-width:200px;min-width:0;margin:0!important;color:transparent!important;font-size:0!important}
.ke-odds-filters label.search{flex:1 1 200px;max-width:none}
.ke-odds-filters label>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ke-odds-filters input,.ke-odds-filters select{width:100%!important;height:38px!important;margin:0!important;padding:0 12px!important;border:1px solid var(--ke-hairline)!important;border-radius:10px!important;background:#131316!important;color:#fff!important;font:500 13px var(--ke-body)!important;box-shadow:none!important}
.ke-odds-filters label.search input{padding-left:34px!important;background:#131316 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%236d7379' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='7' cy='7' r='5'/%3E%3Cpath d='M14 14l-3.2-3.2'/%3E%3C/svg%3E") no-repeat 12px 50%!important}
.ke-odds-filters input:focus,.ke-odds-filters select:focus{outline:0;border-color:#2dfce666!important;box-shadow:0 0 0 3px #2dfce61a!important}
.ke-odds-filters button{flex:none;width:auto!important;height:38px!important;margin:0!important;padding:0 18px!important;border:0!important;border-radius:10px!important;background:#fff!important;color:#000!important;font:700 13px var(--ke-body)!important;cursor:pointer}

/* Day chips and legend */
.ke-odds-days{display:none!important;gap:8px;margin:0 0 12px;overflow-x:auto;scrollbar-width:none}
.ke-odds-days::-webkit-scrollbar{display:none}
.ke-odds-days a{display:inline-flex;flex:none;align-items:center;gap:8px;padding:7px 8px 7px 14px;border:1px solid var(--ke-hairline);border-radius:999px;background:var(--ke-surface);color:#d9dde0;font-size:12.5px;font-weight:600;transition:border-color .15s,color .15s}
.ke-odds-days a span{min-width:22px;padding:1px 7px;border-radius:999px;background:#1c1c20;color:var(--ke-text-2);font-size:11px;text-align:center}
.ke-odds-days a:hover{border-color:#31fbb755;color:#fff}
.ke-odds-legend{display:flex!important;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:0 0 26px!important;padding:0 4px!important;border:0!important;background:none!important;box-shadow:none!important;color:var(--ke-text-3);font-size:12px}
.ke-odds-legend strong{color:#fff;font-size:12px;font-weight:700}
.ke-odds-legend span{color:var(--ke-text-2)}
.ke-odds-legend span b{color:#d9dde0;font-weight:650}
.ke-odds-legend .legend-best{color:var(--ke-mint)!important;font-weight:700}
.ke-odds-legend .legend-up{color:var(--ke-text-3)}
.ke-odds-legend small{flex-basis:100%;color:var(--ke-text-3);font-size:11.5px}

/* One continuous grid: each card carries its own day and kickoff, so the
   day groups dissolve into the list grid instead of leaving half-empty rows.
   The day headings stay in the markup for screen readers. */
.ke-odds-page .cfb-game-list{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(min(392px,100%),1fr));gap:14px;align-items:start;margin:0!important}
.ke-odds-page .cfb-date-group,.ke-odds-page .ke-odds-grid{display:contents!important}
.ke-odds-page .cfb-date-header{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0!important;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0!important}
.ke-odds-page .cfb-unopened-list,.ke-odds-page .ke-odds-no-match{grid-column:1/-1;order:99}
/* Odds card */
.ke-odds-card{position:relative;display:flex;flex-direction:column;gap:10px;min-width:0;margin:0!important;padding:14px 16px!important;border:1px solid var(--ke-hairline)!important;border-radius:18px!important;background:linear-gradient(180deg,#111114 0%,#0a0a0c 100%)!important;box-shadow:inset 0 1px 0 #ffffff0a!important;transition:border-color .2s,transform .2s,box-shadow .2s}
.ke-odds-card:hover{border-color:#ffffff29!important;transform:translateY(-2px);box-shadow:inset 0 1px 0 #ffffff0a,0 16px 40px #00000080!important}
.ke-odds-card.row-stale{opacity:.6}
.ke-odds-top{display:flex;align-items:center;gap:8px;min-height:22px}
.ke-odds-top time{color:#e9ecee;font-size:12.5px;font-weight:650;white-space:nowrap}
.ke-odds-status{padding:1px 8px;border:1px solid #f2c14e55;border-radius:999px;color:var(--ke-gold);font-size:10.5px;font-weight:700}
.ke-odds-fresh{display:inline-flex;align-items:center;gap:6px;margin-left:auto;color:var(--ke-text-3);font-size:11.5px;white-space:nowrap}
.ke-odds-fresh i{width:6px;height:6px;border-radius:50%;background:var(--ke-mint);box-shadow:0 0 0 3px #31fbb71f}
.ke-odds-table{display:grid;gap:6px}
.ke-odds-row{display:grid;grid-template-columns:minmax(0,1fr) 66px 88px 92px;gap:6px;align-items:center}
.ke-odds-row.is-head span{color:var(--ke-text-3);font-size:10px;font-weight:700;letter-spacing:.1em;text-align:center;text-transform:uppercase}
.ke-odds-row.is-head b{font-weight:inherit}
.ke-odds-row.is-head .is-short{display:none}
.ke-odds-row.is-head span:first-child{text-align:left;letter-spacing:.04em;text-transform:none;font-size:11px;font-weight:600}
.ke-odds-team{display:flex;align-items:center;gap:10px;min-width:0}
.ke-odds-team .ke-asset{flex:none;width:28px!important;height:28px!important;border-radius:8px!important}
.ke-odds-team>strong{display:-webkit-box;overflow:hidden;color:#fff;font-size:13.5px;font-weight:600;line-height:1.2;letter-spacing:-.005em;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:normal;word-break:normal;hyphens:auto}
.ke-odds-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:0;min-height:46px;padding:5px 6px;border:1px solid var(--ke-hairline);border-radius:10px;background:#131316;text-align:center;transition:border-color .15s,background .15s}
.ke-odds-cell:hover{border-color:#31fbb766;background:#161a19}
.ke-odds-cell b{color:#fff;font-family:var(--ke-display);font-size:14.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.ke-odds-cell b i{color:var(--ke-text-2);font-family:var(--ke-body);font-size:11.5px;font-style:normal;font-weight:600}
.ke-odds-cell b em{color:var(--ke-text-3);font-family:var(--ke-body);font-size:11px;font-style:normal;font-weight:700}
.ke-odds-cell small{max-width:100%;overflow:hidden;color:var(--ke-text-3);font-size:10px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}
.ke-odds-cell.is-na{background:transparent;border-style:dashed}
.ke-odds-cell.is-na b{color:var(--ke-text-3)}

/* All sportsbooks drawer */
.ke-odds-page .ke-all-sportsbooks{margin:2px -16px -14px!important;border:0!important;border-top:1px solid var(--ke-hairline)!important;border-radius:0 0 18px 18px!important;background:none!important}
.ke-odds-page .ke-all-sportsbooks summary{display:flex!important;align-items:center;gap:10px;padding:11px 16px!important;color:#d9dde0!important;font-size:12.5px!important;font-weight:650!important;cursor:pointer;list-style:none;background:none!important;border:0!important}
.ke-odds-page .ke-all-sportsbooks summary::-webkit-details-marker{display:none}
.ke-odds-page .ke-all-sportsbooks summary small{margin-left:auto;color:var(--ke-text-3)!important;font-size:11px!important;font-weight:500!important}
.ke-odds-page .ke-all-sportsbooks summary::after{content:"";width:7px;height:7px;border-right:1.6px solid var(--ke-text-3);border-bottom:1.6px solid var(--ke-text-3);transform:rotate(45deg) translateY(-2px);transition:transform .2s}
.ke-odds-page .ke-all-sportsbooks[open] summary::after{transform:rotate(-135deg) translateY(-1px);border-color:var(--ke-mint)}
.ke-odds-page .ke-all-sportsbooks summary:hover{color:#fff!important}
.ke-books{display:grid;gap:0;padding:0 12px 12px}
.ke-books-row{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.8fr) minmax(0,1fr) minmax(0,1fr);gap:6px;align-items:center;padding:6px 4px;border-top:1px solid var(--ke-hairline)}
.ke-books-row.is-head{border-top:0;padding-top:2px;color:var(--ke-text-3);font-size:9.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.ke-books-row.is-head span:not(:first-child){text-align:center}
.ke-books-name{display:grid;min-width:0}
.ke-books-name strong{overflow:hidden;color:#e9ecee;font-size:12.5px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}
.ke-books-name time{color:var(--ke-text-3);font-size:10.5px}
.ke-books-pair{display:grid;gap:2px}
.ke-odds-page .ke-book-cell,.ke-odds-page .ke-book-cell.cfb-offer{display:block!important;min-height:0!important;min-width:0!important;margin:0!important;padding:4px 4px!important;border:0!important;border-radius:7px!important;background:transparent!important;box-shadow:none!important;color:#d9dde0;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;text-align:center;white-space:nowrap}
.ke-book-cell i{color:var(--ke-text-3);font-style:normal;font-weight:500}
.ke-odds-page .ke-book-cell.is-best,.ke-odds-page .ke-book-cell.cfb-offer.best-price{background:#31fbb714!important;color:var(--ke-mint)!important;box-shadow:inset 0 0 0 1px #31fbb733!important}
.ke-book-cell.is-best i{color:#7fe9c9}
.ke-book-cell.is-na{color:var(--ke-text-3)}
.ke-books-note{display:flex;align-items:center;gap:8px;margin:8px 4px 0;color:var(--ke-text-3);font-size:11px;line-height:1.45}
.ke-best-dot{flex:none;width:8px;height:8px;border-radius:3px;background:#31fbb740;box-shadow:inset 0 0 0 1px #31fbb766}

/* Unopened, states, signup, disclaimers */
.ke-odds-page .cfb-unopened-list{margin:12px 0 0!important;border:1px dashed var(--ke-hairline-strong)!important;border-radius:14px!important;background:#050506!important}
.ke-odds-page .cfb-unopened-list summary{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;color:var(--ke-text-2);font-size:13px;cursor:pointer;list-style:none}
.ke-odds-page .cfb-unopened-list summary strong{color:#d9dde0;font-weight:600}
.ke-odds-page .cfb-unopened-list summary span{color:var(--ke-mint);font-size:12px;font-weight:650}
.ke-odds-page .cfb-unopened-list ul{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:6px 16px;margin:0;padding:0 16px 14px;list-style:none}
.ke-odds-page .cfb-unopened-list li{display:flex;justify-content:space-between;gap:10px;color:var(--ke-text-2);font-size:12.5px}
.ke-odds-page .cfb-unopened-list time{color:var(--ke-text-3);white-space:nowrap}
.ke-odds-page .empty-state,.ke-odds-page .live-odds-health{margin:0 0 24px!important;padding:22px 24px!important;border:1px dashed var(--ke-hairline-strong)!important;border-radius:16px!important;background:#0b0b0d!important;text-align:left!important}
.ke-odds-page .empty-state strong,.ke-odds-page .live-odds-health strong{display:block;margin-bottom:6px;color:#fff;font-size:16px}
.ke-odds-page .empty-state p,.ke-odds-page .live-odds-health p{margin:0;color:var(--ke-text-2)}
.ke-odds-no-match{padding:22px;border:1px dashed var(--ke-hairline-strong);border-radius:16px;color:var(--ke-text-2);text-align:center}
.ke-odds-page .live-odds-signup{display:flex!important;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin:40px 0 0!important;padding:22px 24px!important;border:1px solid var(--ke-hairline)!important;border-radius:18px!important;background:radial-gradient(120% 160% at 0 0,#2dfce60f,transparent 55%),#0b0b0d!important}
.ke-odds-page .live-odds-signup strong{color:#fff;font-family:var(--ke-display);font-size:19px}
.ke-odds-page .live-odds-signup p{margin:4px 0;color:var(--ke-text-2)}
.ke-odds-page .live-odds-signup small{color:var(--ke-text-3)}
.ke-odds-page .pulse-boundary{display:flex!important;flex-wrap:wrap;gap:6px 18px;margin:18px 0 0!important;padding:14px 18px!important;border:1px solid var(--ke-hairline)!important;border-radius:14px!important;background:#050506!important;color:var(--ke-text-3)!important;font-size:12px!important}
.ke-odds-page .pulse-boundary span{color:var(--ke-text-3)!important}

@media(max-width:1000px){
  .ke-odds-hero{grid-template-columns:1fr}
}
@media(max-width:760px){
  .ke-odds-page{padding-top:22px!important}
  .ke-odds-toolbar .ke-seg{width:100%}
  .ke-odds-filters{flex-basis:100%;justify-content:stretch}
  .ke-odds-filters label{flex:1 1 45%}
  .ke-odds-filters label.search{flex-basis:100%}
  .ke-odds-filters button{flex:1 1 100%}
  .ke-odds-stats dd{font-size:19px}
  .ke-odds-row{grid-template-columns:minmax(0,1fr) 54px 66px 72px;gap:5px}
  .ke-odds-team{gap:8px}
  .ke-odds-team .ke-asset{width:24px!important;height:24px!important}
  .ke-odds-team>strong{font-size:12.5px}
  .ke-odds-cell{min-height:50px;padding:4px 3px}
  .ke-odds-cell b{font-size:13.5px;white-space:normal;line-height:1.15}
  .ke-odds-cell b i{display:block;font-size:10.5px}
  .ke-odds-cell small{font-size:9.5px}
  .ke-odds-fresh{font-size:11px}
  .ke-odds-row.is-head .is-long{display:none}
  .ke-odds-row.is-head .is-short{display:inline}
  .ke-odds-page .ke-all-sportsbooks summary small{display:none}
  .ke-odds-filters label{max-width:none}
  .ke-odds-card{padding:14px!important}
  .ke-odds-page .ke-all-sportsbooks{margin:2px -14px -14px!important}
  .ke-books{padding:0 8px 10px}
  .ke-books-row{grid-template-columns:minmax(0,1fr) repeat(3,minmax(0,1fr))}
  .ke-book-cell{font-size:11px;padding:3px 2px}
}
@media(prefers-reduced-motion:reduce){.ke-live-pill i::after{animation:none}.ke-odds-card,.ke-odds-card:hover{transition:none;transform:none}}

/* Light glow lines on every odds card, matching Live Trends (Alok, 2026-10-02):
   a soft teal top line and a faint light travelling the border, staggered. */
@property --ko-angle{syntax:"<angle>";initial-value:0deg;inherits:false}
@keyframes ko-orbit{to{--ko-angle:360deg}}
.ke-odds-card{isolation:isolate}
.ke-odds-card::before{content:"";position:absolute;top:0;left:12%;right:12%;z-index:1;height:1px;background:linear-gradient(90deg,transparent,#2dfce6 30%,#31fbb7 70%,transparent);opacity:.7;box-shadow:0 0 10px 1px #2dfce62e;pointer-events:none}
.ke-odds-card::after{content:"";position:absolute;inset:0;z-index:1;padding:1px;border-radius:inherit;background:conic-gradient(from var(--ko-angle),transparent 0 82%,#2dfce659 90%,#31fbb766 93%,transparent 97%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);animation:ko-orbit 9s linear infinite;pointer-events:none}
.ke-odds-card:nth-child(2n)::after{animation-delay:-3s}
.ke-odds-card:nth-child(3n)::after{animation-delay:-6s}
.ke-odds-card:hover::before{opacity:.9}
@media(prefers-reduced-motion:reduce){.ke-odds-card::after{animation:none;opacity:.5}}
/* Best-price cells are narrow: a book with an icon shows the icon alone (its
   name stays in the cell's text for screen readers and in the title tooltip);
   a book without one keeps its name. */
.ke-odds-cell small:has(.ke-book-icon.has-logo){font-size:0!important;line-height:0!important}
.ke-odds-cell small .ke-book-icon.has-logo{width:20px;height:20px;margin:2px 0 0;border-radius:6px}
