:root{--bg:#06111d;--p:#0d1c2c;--p2:#10263a;--line:#213a51;--txt:#eef7ff;--mut:#8ea8bf;--a:#27ddb5;--blue:#55adff;--gold:#ffd166;--red:#ff647c;--ok:#54dfa1}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 75% -15%,#17456d 0,#06111d 38%);color:var(--txt);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.app{max-width:1280px;margin:auto;padding:14px}.top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.brand{font-weight:950;letter-spacing:.07em}.brand span{color:var(--a)}.pill{border:1px solid var(--line);background:#091827;color:var(--mut);padding:6px 9px;border-radius:999px;font-size:11px}.tabs{display:flex;gap:7px;overflow:auto;margin-bottom:12px}.tab{white-space:nowrap;border:1px solid var(--line);background:#0b1a29;color:var(--mut);padding:9px 12px;border-radius:11px;font-weight:800}.tab.on{background:var(--a);color:#03231b;border-color:transparent}.page{display:none}.page.on{display:block}.card{background:linear-gradient(180deg,#10263af5,#091827f5);border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:0 15px 40px #0004;margin-bottom:12px}.card h2{font-size:15px;margin:0 0 12px}.grid{display:grid;grid-template-columns:1.1fr .9fr;gap:12px}.fields{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.field{width:100%;background:#061522;border:1px solid var(--line);border-radius:9px;color:var(--txt);padding:9px;outline:none}label{display:block;color:var(--mut);font-size:10px;margin:0 0 4px}.btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.btn{border:0;border-radius:10px;padding:10px 13px;font-weight:850;cursor:pointer;background:#17314a;color:var(--txt);border:1px solid var(--line)}.btn.primary{background:var(--a);color:#03251c;border:0}.btn.warn{background:#493a19;color:#ffe6a5}.status{font-size:12px;line-height:1.55;padding:10px;border-radius:10px;background:#071624;color:var(--mut);margin-top:9px}.status.ok{color:#bff7df;border:1px solid #245a49}.status.err{color:#ffc2cb;border:1px solid #6a2d38}.boats{display:grid;gap:7px}.boat{display:grid;grid-template-columns:38px 1.2fr repeat(6,.62fr);gap:6px;align-items:end;padding:8px;border:1px solid var(--line);border-radius:12px;background:#091a29}.lane{height:34px;border-radius:8px;display:grid;place-items:center;font-weight:950;border:1px solid #ffffff24}.l1{background:#f5f5f5;color:#111}.l2{background:#333}.l3{background:#e44}.l4{background:#368ee8}.l5{background:#e7c32d;color:#111}.l6{background:#28b76a}.small{padding:7px;font-size:12px}.mut{color:var(--mut);font-size:11px;line-height:1.5}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.kpi{background:#071624;border:1px solid var(--line);border-radius:12px;padding:11px}.kpi b{display:block;font-size:21px;margin-top:3px}.rank{display:grid;grid-template-columns:34px 1fr 62px;gap:8px;align-items:center;margin:8px 0}.bar{height:8px;border-radius:99px;background:#061522;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--a))}.tablewrap{overflow:auto}.tbl{width:100%;border-collapse:collapse;font-size:12px;min-width:650px}.tbl th,.tbl td{padding:8px;border-bottom:1px solid var(--line);text-align:right}.tbl th:first-child,.tbl td:first-child{text-align:left}.good{color:var(--ok);font-weight:850}.bad{color:#ff93a3}.tag{display:inline-block;border:1px solid var(--line);padding:3px 6px;border-radius:999px;font-size:10px}.tag.buy{color:#bdf7df;border-color:#2a765e}.tag.watch{color:#ffe29a;border-color:#806a2a}.tag.skip{color:#ffacb8;border-color:#7a3340}.oddsgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.oddrow{display:grid;grid-template-columns:1fr 1fr;gap:5px;align-items:center;background:#081725;padding:6px;border-radius:8px}.oddrow b{font-size:12px}.oddrow input{text-align:right}.textarea{min-height:130px;resize:vertical}.note{font-size:11px;color:#7690a7;line-height:1.6}.split{display:grid;grid-template-columns:1fr 1fr;gap:12px}.reason{padding:11px;border-radius:11px;background:#071624;color:#c1d4e5;font-size:12px;line-height:1.7}.footer{text-align:center;color:#6f899f;font-size:10px;padding:8px 0 16px}@media(max-width:900px){.grid,.split{grid-template-columns:1fr}.fields{grid-template-columns:1fr 1fr}.boat{grid-template-columns:34px 1fr repeat(2,.7fr)}.boat .hideM{display:none}.oddsgrid{grid-template-columns:repeat(2,1fr)}.kpis{grid-template-columns:1fr 1fr}}@media(max-width:520px){.app{padding:9px}.fields{grid-template-columns:1fr 1fr}.oddsgrid{grid-template-columns:1fr}.brand{font-size:14px}.tab{font-size:12px;padding:8px 10px}}
.errOverlay{position:fixed;inset:0;background:#000b;z-index:9999;display:none;align-items:center;justify-content:center;padding:14px}.errOverlay.on{display:flex}.errModal{width:min(760px,100%);max-height:90vh;overflow:auto;background:#0b1b2a;border:1px solid #6a2d38;border-radius:18px;padding:16px;box-shadow:0 25px 80px #000}.errHead{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.errHead h2{margin:0;color:#ffd5dc;font-size:18px}.errClose{background:#182b3d;border:1px solid var(--line);color:var(--txt);border-radius:9px;padding:7px 10px}.errSummary{margin:12px 0;padding:10px;background:#28131a;border:1px solid #6a2d38;border-radius:10px;color:#ffc2cb;font-size:12px;line-height:1.6}.errLog{width:100%;min-height:260px;max-height:45vh;background:#040b12;color:#cfe3f5;border:1px solid var(--line);border-radius:10px;padding:10px;font:11px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical}.copyState{font-size:11px;color:var(--mut);margin-top:8px}
/* v0.2.2 mobile layout repair */
@media(max-width:900px){
  .boat .hideM{display:block}
}
@media(max-width:600px){
  body{background:linear-gradient(180deg,#0b2b45 0,#06111d 240px);}
  .app{padding:10px;overflow-x:hidden}
  .top{align-items:center;margin-bottom:10px}
  .brand{font-size:14px;line-height:1.15;white-space:nowrap}
  .pill{font-size:9px;padding:6px 8px;white-space:nowrap}
  .tabs{gap:6px;margin:0 -1px 12px;padding-bottom:2px}
  .tab{flex:0 0 auto;font-size:11px;padding:9px 10px;border-radius:10px}
  .card{padding:13px 12px;border-radius:15px;margin-bottom:11px}
  .card h2{font-size:16px;margin-bottom:14px}
  .fields{grid-template-columns:1fr 1fr;gap:10px 8px}
  .fields>div:nth-child(5):last-child{grid-column:1/-1}
  label{font-size:11px;margin-bottom:5px}
  .field{min-width:0;padding:10px 9px;font-size:16px}
  select.field{padding-right:24px}
  .btns{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .btns .btn{width:100%;min-height:46px;padding:10px 8px;font-size:13px}
  .btns .btn:first-child:nth-last-child(3){grid-column:1/-1}
  .status{font-size:12px;padding:11px;line-height:1.55}
  .boats{gap:10px}
  .boat{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px 8px;align-items:end;padding:11px;min-width:0}
  .boat .lane{position:absolute;left:11px;top:29px;width:48px;height:48px;border-radius:10px;font-size:20px;z-index:1}
  .boat>div:not(.lane){min-width:0}
  .boat>div:nth-child(2){grid-column:1/-1;padding-left:60px}
  .boat .hideM{display:block}
  .boat .field.small{width:100%;min-width:0;padding:9px 8px;font-size:16px}
  .boat>div:nth-child(9){grid-column:1/-1}
  .footer{font-size:10px;line-height:1.55;padding:10px 8px 18px}
  .errModal{padding:13px;border-radius:15px}
}
@media(max-width:370px){
  .brand{font-size:12px}.pill{font-size:8px}.tab{font-size:10px;padding:8px}
}

/* v0.2.9 iOS form sizing repair */
.fields{grid-template-columns:repeat(5,minmax(0,1fr))}
.fields>div{min-width:0;max-width:100%}
.field{display:block;min-width:0;max-width:100%;width:100%;box-sizing:border-box}
input[type="date"].field{-webkit-appearance:none;appearance:none;min-width:0!important;max-width:100%!important;width:100%!important;overflow:hidden}
input[type="date"]::-webkit-date-and-time-value{min-width:0;width:100%;text-align:left}
@media(max-width:900px){.fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media(max-width:600px){
  .fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .fields>div{min-width:0;overflow:hidden}
  #date{font-size:16px;padding-left:10px;padding-right:6px}
}

.jsonPasteBox{margin-top:12px;padding:14px;border:1px solid #dbe3ef;border-radius:14px;background:#f8fafc}.jsonPasteBox textarea{width:100%;min-height:220px;resize:vertical;box-sizing:border-box;font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;border:1px solid #cbd5e1;border-radius:10px;padding:10px;background:#fff}.jsonPasteBox .hint{font-size:12px;color:#64748b;margin:0 0 8px}.jsonPasteBox[hidden]{display:none!important}

/* v0.3.1 */
.quickFields{display:grid;grid-template-columns:1.2fr 1fr .72fr;gap:12px}.predictBtn{width:100%;min-height:58px;font-size:18px;margin-top:14px}.raceMeta{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.mini{padding:11px;border:1px solid var(--line);border-radius:14px;background:#071a29}.mini span{display:block;color:var(--mut);font-size:11px}.mini b{display:block;margin-top:4px;font-size:14px}.heroCombo{font-size:42px;letter-spacing:5px;font-weight:900;margin:8px 0}.comboCards{display:grid;gap:10px}.comboCard{display:grid;grid-template-columns:42px 1fr auto;gap:10px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:15px;background:#071a29}.comboCard .pos{font-size:12px;color:var(--mut);text-align:center}.comboCard .combo{font-size:21px;font-weight:900;letter-spacing:2px}.comboCard .pct{font-weight:900}.sectionTitle{display:flex;justify-content:space-between;align-items:end;gap:10px}.sectionTitle small{color:var(--mut);font-weight:500}.scenario{padding:13px;border-radius:14px;background:#071a29;border:1px solid var(--line);line-height:1.7}.sourceBadge{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:11px;background:#102a40;color:#a9bdd0}.oddsFresh{font-size:12px;color:var(--mut);line-height:1.6}.loading{display:none;margin-top:12px;padding:12px;border-radius:13px;background:#071a29;color:var(--mut)}.loading.on{display:block}.detailGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.detailBoat{padding:11px;border:1px solid var(--line);border-radius:13px;background:#071a29;font-size:12px;line-height:1.6}.detailBoat b{font-size:14px}.noOdds{padding:14px;border:1px dashed var(--line);border-radius:14px;color:var(--mut);line-height:1.7}.pill.goodPill{color:#57e0bd}.tabs{grid-template-columns:repeat(2,1fr)}
@media(max-width:640px){.quickFields{grid-template-columns:1fr 1fr}.quickFields>div:first-child{grid-column:1/-1}.raceMeta{grid-template-columns:1fr 1fr}.heroCombo{font-size:36px}.detailGrid{grid-template-columns:1fr}.top{align-items:center}.brand{font-size:16px}.pill{font-size:10px}.comboCard{grid-template-columns:36px 1fr auto}}
.scenarioRich p{margin:0 0 12px}.scenarioRich p:last-child{margin-bottom:0}.batchBox{margin-top:18px}.batchStatus{margin-top:10px;color:var(--mut);font-size:13px;line-height:1.6}.batchOutput{width:100%;min-height:180px;margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:13px;background:#071a29;color:#dfeeff;font:12px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical;box-sizing:border-box}.batchBtns{display:grid;grid-template-columns:1fr;gap:8px;margin-top:10px}.scenarioRich b{color:#eaf5ff}

.oddsControls{display:flex;gap:8px;margin:12px 0 6px}
.oddsControls .mini{flex:1;border:1px solid var(--line);background:#0b1d2b;color:var(--muted);border-radius:12px;padding:10px 8px;font-weight:800;font-size:13px}
.oddsControls .mini.active{background:var(--accent);color:#06221d;border-color:var(--accent)}
.oddsList{display:grid;gap:9px;margin-top:10px}
.oddsItem{border:1px solid var(--line);background:#091c29;border-radius:14px;padding:12px 13px}
.oddsTop{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.oddsCombo{font-size:21px;font-weight:900;letter-spacing:.5px}
.oddsEv{font-size:18px;font-weight:900}
.oddsEv.hot{color:var(--accent)}
.oddsMeta{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}
.oddsMetric{background:#0d2332;border-radius:10px;padding:8px 9px}
.oddsMetric small{display:block;color:var(--muted);font-size:11px;margin-bottom:3px}
.oddsMetric b{font-size:16px}
