:root{--navy:#071a2a;--navy-2:#0f2b42;--gold:#c8a95d;--gold-soft:#efe3bf;--paper:#f4f1e9;--card:#fffdf8;--ink:#17222b;--muted:#66717a;--line:#ded8cb;--green:#1f7a5a;--green-soft:#dcefe6;--red:#b14f48;--red-soft:#f5dfdc;--amber:#986c18;--amber-soft:#f5ead0;--shadow:0 10px 28px #071a2a14;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{min-height:100%;color:var(--ink);background:#d8d5cd;margin:0}body{justify-content:center;display:flex}button,select,input{font:inherit}button{-webkit-tap-highlight-color:transparent}.app-shell{width:min(100%,520px);min-height:100vh;padding-bottom:calc(82px + env(safe-area-inset-bottom));background:radial-gradient(circle at 90% -10%, #c8a95d40, transparent 30%), var(--paper);position:relative;box-shadow:0 0 40px #071a2a29}.topbar{z-index:20;padding:calc(12px + env(safe-area-inset-top)) 16px 12px;color:#fff;background:linear-gradient(140deg, var(--navy), #0d3049);position:sticky;top:0;box-shadow:0 6px 18px #071a2a38}.brand-row,.section-head,.race-title-row,.horse-head,.metric-line,.detail-row,.result-meta,.report-link{align-items:center;display:flex}.brand-row{gap:11px}.mark{width:39px;height:39px;color:var(--gold);letter-spacing:-.6px;border:1px solid #c8a95db3;border-radius:13px;flex:0 0 39px;place-items:center;font-family:Georgia,serif;font-size:14px;font-weight:800;display:grid}.brand-copy{flex:1;min-width:0}.brand-copy strong{letter-spacing:.2px;font-family:Georgia,Times New Roman,serif;font-size:17px;display:block}.brand-copy span{color:#c9d2d8;margin-top:2px;font-size:11px;display:block}.logout-button{color:#eaf1f4;white-space:nowrap;background:#ffffff14;border:1px solid #ffffff24;border-radius:999px;justify-content:center;align-items:center;min-height:34px;padding:7px 11px;font-size:10px;font-weight:800;display:inline-flex}.logout-button:active{background:#ffffff29}.content{padding:15px 14px 28px}.eyebrow{color:var(--amber);letter-spacing:1.2px;text-transform:uppercase;margin:0 0 4px;font-size:10px;font-weight:800}h1,h2,h3,p{margin-top:0}h1{margin-bottom:4px;font-family:Georgia,Times New Roman,serif;font-size:25px;line-height:1.1}h2{margin-bottom:3px;font-size:17px}h3{margin-bottom:4px;font-size:15px}.muted{color:var(--muted)}.small{font-size:12px}.selector-grid{grid-template-columns:1.35fr 1fr;gap:9px;margin:14px 0 10px;display:grid}.field{position:relative}.field label{color:var(--muted);letter-spacing:.6px;text-transform:uppercase;margin:0 0 5px 2px;font-size:10px;font-weight:800;display:block}.select-wrap{position:relative}.select-wrap:after{border-right:2px solid var(--navy);border-bottom:2px solid var(--navy);content:"";pointer-events:none;width:7px;height:7px;position:absolute;top:50%;right:12px;transform:translateY(-70%)rotate(45deg)}select,.search-input{border:1px solid var(--line);background:var(--card);width:100%;min-height:45px;color:var(--ink);appearance:none;border-radius:13px;outline:0;padding:0 34px 0 12px;font-weight:700;box-shadow:0 3px 12px #071a2a0a}select:focus,.search-input:focus{border-color:var(--gold);box-shadow:0 0 0 3px #c8a95d2b}.race-tabs{scrollbar-width:none;gap:7px;margin:7px -14px 14px;padding:3px 14px 5px;display:flex;overflow-x:auto}.race-tabs::-webkit-scrollbar{display:none}.sort-row::-webkit-scrollbar{display:none}.race-tab{border:1px solid var(--line);min-width:43px;height:39px;color:var(--muted);background:#fffdf8bd;border-radius:12px;font-size:12px;font-weight:800}.race-tab.active{border-color:var(--navy);background:var(--navy);color:#fff;box-shadow:0 5px 12px #071a2a33}.race-summary{background:linear-gradient(135deg, #fffdf8f5, #f7eed6eb), var(--card);box-shadow:var(--shadow);border:1px solid #c8a95d59;border-radius:19px;margin-bottom:13px;padding:16px;overflow:hidden}.race-title-row{justify-content:space-between;align-items:flex-end;gap:9px}.race-title-row h1{margin:0}.race-number{flex:none}.race-type-summary{text-align:center;flex:1;min-width:0;padding-bottom:2px}.race-type-summary strong,.race-type-summary span{display:block}.race-type-summary strong{color:var(--navy);font-size:10px;line-height:1.25}.race-type-summary span{color:var(--muted);margin-top:2px;font-size:9px;line-height:1.25}.post-time{background:var(--navy);color:#fff;white-space:nowrap;border-radius:10px;flex:none;padding:7px 9px;font-size:11px;font-weight:800}.race-facts{flex-wrap:wrap;gap:7px;margin:12px 0;display:flex}.fact,.tag{border:1px solid var(--line);color:#46525c;background:#ffffffb3;border-radius:999px;align-items:center;min-height:25px;padding:4px 8px;font-size:10px;font-weight:800;display:inline-flex}.fact{min-height:32px;padding:6px 10px;font-size:11px}.fact.pace.hot{background:var(--red-soft);color:var(--red);border-color:#d8aaa5}.fact.pace.cold{color:#285d91;background:#e1ebf6;border-color:#afc7e1}.section-head{justify-content:space-between;gap:10px;margin:18px 2px 8px}.section-head h2{margin:0}.runner-count{color:var(--muted);font-size:11px}.sort-row{scrollbar-width:none;gap:7px;margin:0 -14px 12px;padding:2px 14px 4px;display:flex;overflow-x:auto}.sort-chip{border:1px solid var(--line);background:var(--card);min-height:35px;color:var(--muted);border-radius:999px;flex:none;padding:0 12px;font-size:11px;font-weight:800}.sort-chip.active{border-color:var(--gold);background:var(--gold-soft);color:#654c14}.factor-mode-bar{justify-content:space-between;align-items:center;gap:10px;margin:-2px 2px 10px;display:flex}.factor-mode-bar>span{color:var(--muted);letter-spacing:.6px;text-transform:uppercase;font-size:10px;font-weight:900}.factor-mode-toggle{border:1px solid var(--line);background:#ebe8e1;border-radius:9px;grid-template-columns:repeat(3,1fr);display:inline-grid;overflow:hidden}.factor-mode-toggle button{min-width:56px;min-height:30px;color:var(--muted);letter-spacing:.5px;background:0 0;border:0;padding:0 10px;font-size:9px;font-weight:900}.factor-mode-toggle button.active{background:var(--navy);color:#fff}.horse-list{gap:10px;display:grid}.horse-card{border:1px solid var(--line);background:var(--card);border-radius:17px;transition:border-color .16s,transform .16s;overflow:hidden;box-shadow:0 4px 15px #071a2a0e}.horse-card.top-ranked{border-color:#1f7a5a73}.horse-toggle{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:13px}.horse-head{align-items:flex-start;gap:10px}.saddle{color:#fff;text-shadow:0 1px 2px #00000059;border:2px solid #071a2a33;border-radius:11px;flex:0 0 39px;place-items:center;width:39px;height:39px;font-size:15px;font-weight:900;display:grid}.saddle.light{color:#101820;text-shadow:none}.horse-identity{flex:1;min-width:0;height:39px;position:relative}.horse-primary-row{grid-template-columns:minmax(0,1fr) 70px;align-items:start;gap:6px;min-width:0;height:39px;display:grid}.horse-name{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;font-family:Georgia,Times New Roman,serif;font-size:15px;font-weight:800;line-height:1;overflow:hidden}.style-code{color:#303b43;white-space:nowrap;background:#ebe8e1;border:1px solid #bbb5aa;border-radius:7px;justify-content:center;align-self:center;align-items:center;width:64px;min-height:24px;margin:0 auto;padding:2px 8px;font-size:17px;font-weight:900;line-height:1;display:inline-flex}.style-code.pace-positive{background:var(--green-soft);color:var(--green);border-color:#acd5c4}.style-code.pace-caution{background:var(--amber-soft);color:#76530e;border-color:#dfc985}.style-code.pace-negative{background:var(--red-soft);color:var(--red);border-color:#d8aaa5}.style-code.pace-neutral{color:#303b43;background:#ebe8e1;border-color:#bbb5aa}.horse-sub{color:var(--muted);flex-wrap:wrap;align-items:flex-end;gap:7px;margin:0;font-size:13px;font-weight:800;line-height:1;display:flex;position:absolute;bottom:0;left:0}.horse-fc{color:var(--amber);align-self:flex-end;font-size:13px;font-weight:900;line-height:1.15}.grade{color:#626b71;background:#e4e1da;border-radius:6px;padding:3px 7px}.grade-a,.grade-k{background:var(--green);color:#fff}.grade-b{color:#fff;background:#171b1f}.grade-c{color:#171b1f;background:#e4e1da;font-weight:900}.grade-x{background:var(--red);color:#fff}.sort-score{text-align:right;flex:0 0 67px;width:67px}.score-line{justify-content:flex-end;align-items:baseline;gap:5px;display:flex}.score-line strong{color:var(--navy);font-size:20px;line-height:1}.score-line span{color:var(--muted);letter-spacing:.5px;text-transform:uppercase;font-size:9px;font-weight:800}.rank-badge{border-radius:6px;margin-top:5px;padding:2px 5px;font-size:9px;font-weight:900;display:inline-flex}.rank-badge.rank-first{background:var(--green-soft);color:var(--green)}.rank-badge.rank-placed{background:var(--amber-soft);color:#76530e}.rank-badge.rank-neutral{color:#687178;background:#ebe8e1}.rank-badge.missing{color:#7a8186;background:#ebe8e1}.value-strip{grid-template-columns:repeat(3,1fr);gap:6px;margin-top:11px;display:grid}.value-cell{background:#f3f1eb;border-radius:9px;padding:7px 8px}.value-cell span{color:var(--muted);letter-spacing:.5px;text-transform:uppercase;font-size:8px;font-weight:800;display:block}.value-cell strong{margin-top:2px;font-size:13px;display:block}.value-cell.positive{background:var(--green-soft);color:var(--green)}.value-cell.negative{background:var(--red-soft);color:var(--red)}.factor-panel{background:#faf8f3;border:1px solid #e7e1d7;border-radius:11px;margin-top:8px;padding:10px}.factor-panel-title{color:var(--muted);letter-spacing:.55px;text-transform:uppercase;margin-bottom:8px;font-size:9px;font-weight:900}.factor-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;display:grid}.factor-cell{text-align:center;border-radius:9px;min-width:0;min-height:49px;padding:8px 5px}.factor-cell span,.factor-cell strong{display:block}.factor-cell span{color:var(--muted);letter-spacing:-.15px;text-overflow:clip;font-size:10px;font-weight:900;overflow:hidden}.factor-cell strong{white-space:nowrap;margin-top:4px;font-size:14px}.factor-cell.factor-first{background:var(--green-soft);color:var(--green)}.factor-cell.factor-placed{background:var(--amber-soft);color:#76530e}.factor-cell.factor-neutral{color:#5f6970;background:#ece9e2}.expand-hint{color:#7d858b;text-align:center;margin-top:8px;font-size:9px}.horse-details{border-top:1px solid #ece8df;padding:0 13px 14px;display:none}.horse-card.expanded .horse-details{display:block}.metric-grid{grid-template-columns:repeat(2,1fr);gap:8px 14px;margin:13px 0;display:grid}.metric-line{gap:8px}.metric-label{width:35px;color:var(--muted);font-size:9px;font-weight:900}.metric-track{background:#e8e4dc;border-radius:999px;flex:1;height:6px;overflow:hidden}.metric-fill{border-radius:inherit;background:#a9afb3;height:100%;display:block}.metric-fill.metric-first{background:var(--green)}.metric-fill.metric-placed{background:#d4ad3f}.metric-fill.metric-neutral{background:#a9afb3}.metric-fill.metric-fit-low{background:#e995ad}.metric-number{text-align:right;width:25px;font-size:10px;font-weight:800}.metric-line.fit-low .metric-label,.metric-line.fit-low .metric-number{color:#b54b69}.detail-list{background:#f3f1eb;border-radius:12px;padding:9px 10px}.detail-row{border-bottom:1px solid #e3ded4;justify-content:space-between;gap:10px;min-height:25px;font-size:10px}.detail-row:last-child{border-bottom:0}.detail-row span{color:var(--muted)}.detail-row strong{text-align:right}.detail-row strong.alert-red{color:var(--red)}.tag-row{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.tag.fc{background:var(--amber-soft);color:#76530e;border-color:#dfc985}.tag.good{background:var(--green-soft);color:var(--green);border-color:#acd5c4}.horse-commentary{background:#fffdf8;border:1px solid #ded8cb;border-radius:13px;margin-top:11px;padding:11px}.horse-commentary h3{color:var(--navy);margin:0 0 8px;font-family:Georgia,Times New Roman,serif;font-size:14px}.commentary-row{border-top:1px solid #ebe6dc;grid-template-columns:42px 1fr;align-items:start;gap:8px;padding:7px 0;display:grid}.commentary-row>span{letter-spacing:.45px;text-transform:uppercase;border-radius:7px;justify-content:center;padding:3px 5px;font-size:9px;font-weight:900;display:inline-flex}.commentary-row.pros>span{background:var(--green-soft);color:var(--green)}.commentary-row.cons>span{background:var(--red-soft);color:var(--red)}.commentary-row p{color:#34434d;margin:1px 0 0;font-size:11px;font-weight:700;line-height:1.45}.bottom-line-card{background:linear-gradient(145deg, #efe3bfad, #fffdf8f5 48%), var(--card);box-shadow:var(--shadow);border:1px solid #b9ab7f;border-radius:17px;margin-top:18px;padding:16px}.bottom-line-card h2{color:var(--navy);margin:2px 0 11px;font-family:Georgia,Times New Roman,serif;font-size:22px}.bottom-line-row{border-top:1px solid #b9ab7f73;grid-template-columns:62px 1fr;gap:10px;padding:9px 0;display:grid}.bottom-line-row span{color:#735c22;letter-spacing:.3px;text-transform:uppercase;font-size:10px;font-weight:900}.bottom-line-row strong{color:var(--navy);font-size:12px;line-height:1.4}.empty{color:var(--muted);text-align:center;border:1px dashed #c9c3b8;border-radius:16px;padding:28px 18px}.search-panel{border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow);border-radius:18px;gap:10px;margin:15px 0 18px;padding:14px;display:grid}.search-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.fc-field{border:0;min-width:0;margin:0;padding:0}.fc-field legend{width:100%;color:var(--muted);letter-spacing:.55px;text-transform:uppercase;justify-content:space-between;align-items:baseline;margin-bottom:7px;font-size:10px;font-style:normal;font-weight:900;display:flex}.fc-field legend em{color:#8c9398;letter-spacing:0;text-transform:none;font-size:8px;font-style:normal}.fc-chip-grid{flex-wrap:wrap;gap:6px 5px;display:flex}.fc-chip{border:1px solid var(--line);min-width:0;min-height:32px;color:var(--muted);background:#f7f5ef;border-radius:999px;flex:0 0 calc(14.2857% - 4.28571px);padding:0 3px;font-size:10px;font-weight:900}.fc-chip.active{border-color:var(--gold);background:var(--gold-soft);color:#654c14;box-shadow:inset 0 0 0 1px #c8a95d29}.results-list{gap:10px;display:grid}.result-card{border:1px solid var(--line);background:var(--card);width:100%;color:inherit;text-align:left;border-radius:15px;padding:13px;box-shadow:0 3px 12px #071a2a0d}.result-card h3{margin:0}.result-meta{color:var(--muted);justify-content:space-between;gap:10px;margin-top:8px;font-size:10px}.result-leader{background:#f3f1eb;border-radius:10px;margin-top:9px;padding:9px 10px;font-size:11px}.result-leader strong{color:var(--navy)}.report-card{border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow);border-radius:18px;margin:14px 0;padding:16px}.report-link{background:var(--navy);color:#fff;border-radius:13px;justify-content:space-between;gap:12px;margin-top:12px;padding:13px;font-size:12px;font-weight:800;text-decoration:none}.report-download-list{gap:9px;margin-top:13px;display:grid}.report-download{width:100%;color:var(--ink);text-align:left;background:#faf8f3;border:1px solid #dfd7c6;border-radius:13px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px;text-decoration:none;display:grid}.report-download:disabled{opacity:.72}.report-download-date{min-width:0}.report-download-date strong,.report-download-date small{display:block}.report-download-date strong{color:var(--navy);font-size:13px}.report-download-date small{color:var(--muted);margin-top:4px;font-size:9px;line-height:1.35}.report-download-action{background:var(--navy);color:#fff;white-space:nowrap;border-radius:9px;align-items:center;gap:6px;padding:8px 9px;font-size:10px;font-weight:900;display:inline-flex}.report-download-action b{color:var(--gold);font-size:14px;line-height:1}.stat-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0;display:grid}.stat{border:1px solid var(--line);text-align:center;background:#f8f5ee;border-radius:13px;padding:13px 6px}.stat strong{color:var(--navy);font-size:20px;display:block}.stat span{color:var(--muted);text-transform:uppercase;margin-top:3px;font-size:9px;font-weight:800;display:block}.bottom-nav{z-index:30;padding:8px 10px calc(8px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#071a2af7;border-top:1px solid #ffffff14;grid-template-columns:repeat(3,1fr);display:grid;position:fixed;bottom:0;left:max(0px,50vw - 260px);right:max(0px,50vw - 260px)}.nav-button{color:#aebbc4;background:0 0;border:0;border-radius:12px;place-items:center;gap:3px;min-height:54px;font-size:9px;font-weight:800;display:grid}.nav-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:20px;height:20px}.nav-button.active{color:var(--gold);background:#c8a95d21}@media (width>=521px){.app-shell{min-height:100dvh}}@media (width<=350px){.logout-button{display:none}.value-strip{grid-template-columns:1fr 1fr}}.login-page{width:100%;min-height:100dvh;padding:calc(24px + env(safe-area-inset-top)) 18px calc(24px + env(safe-area-inset-bottom));background:radial-gradient(circle at 82% 3%,#c8a95d33,#0000 29%),linear-gradient(155deg,#061824 0%,#0d3049 60%,#071a2a 100%);place-items:center;display:grid}.login-card{background:#fffdf8fb;border:1px solid #c8a95d52;border-radius:24px;width:min(100%,430px);padding:28px 24px 24px;box-shadow:0 24px 70px #00000057}.login-brand{align-items:center;gap:13px;display:flex}.login-mark{background:var(--navy);width:54px;height:54px;color:var(--gold);letter-spacing:-.7px;border:1px solid #c8a95db8;border-radius:15px;flex:0 0 54px;place-items:center;font-family:Georgia,Times New Roman,serif;font-size:18px;font-weight:800;display:grid;box-shadow:0 8px 20px #071a2a30}.login-brand p{color:var(--navy);margin:0;font-family:Georgia,Times New Roman,serif;font-size:21px;font-weight:700;line-height:1.05}.login-brand span{color:var(--muted);letter-spacing:.8px;text-transform:uppercase;margin-top:4px;font-size:11px;font-weight:800;display:block}.login-rule{background:linear-gradient(90deg, var(--gold), #c8a95d14);height:1px;margin:22px 0}.login-eyebrow{color:var(--amber);letter-spacing:1.3px;text-transform:uppercase;margin:0 0 7px;font-size:10px;font-weight:900}.login-card h1{color:var(--navy);margin-bottom:8px;font-size:29px}.login-intro,.login-help,.login-loading>p{color:var(--muted);font-size:13px;line-height:1.5}.login-form{gap:8px;margin-top:20px;display:grid}.login-form label{color:var(--navy);letter-spacing:.5px;text-transform:uppercase;margin-top:5px;font-size:11px;font-weight:900}.login-form input{width:100%;min-height:50px;color:var(--ink);background:#fff;border:1px solid #d8d0c1;border-radius:13px;outline:0;padding:0 14px;font-size:16px;box-shadow:inset 0 1px 2px #071a2a08}.login-form input:focus{border-color:var(--gold);box-shadow:0 0 0 3px #c8a95d2e}.login-submit,.member-access-error button{background:var(--navy);color:#fff;border:0;border-radius:13px;min-height:50px;margin-top:10px;font-weight:900;box-shadow:0 8px 18px #071a2a33}.login-submit:disabled{cursor:not-allowed;opacity:.55}.login-secondary{color:#71581c;text-underline-offset:3px;background:0 0;border:0;width:100%;margin-top:16px;padding:6px;font-size:12px;font-weight:850;text-decoration:underline;display:block}.login-help{text-align:center;margin:18px 0 0}.login-message{border-radius:11px;margin-top:12px;padding:11px 12px;font-size:12px;font-weight:700;line-height:1.4}.login-message.error{background:var(--red-soft);color:#7b302b}.login-message.success{background:var(--green-soft);color:#155c43}.login-message.warning{background:var(--amber-soft);color:#6d5015}.member-loading{min-height:100dvh;color:var(--navy);place-items:center;padding:28px;font-size:14px;font-weight:850;display:grid}.member-access-error{align-content:center;min-height:100dvh;padding:30px 24px;display:grid}.member-access-error p{color:var(--red);margin:22px 0 6px;font-size:14px;line-height:1.5}
