:root{--bg:#0f1720;--card:#17212d;--ink:#eef3f8;--mute:#9fb0c2;--acc:#ffcc33;--good:#3ddc97;--bad:#ff6b6b}
*{box-sizing:border-box}body{margin:0;font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}
a{color:var(--acc)}header,main,footer{max-width:720px;margin:0 auto;padding:16px}
nav a{margin-right:14px;text-decoration:none;color:var(--mute)}.brand{font-weight:800;font-size:22px;color:var(--acc);text-decoration:none}
h1{font-size:28px;line-height:1.15;margin:.3em 0}h2{font-size:20px;margin-top:0}
.card{background:var(--card);border-radius:14px;padding:18px;margin:16px 0}
label{display:block;font-size:14px;color:var(--mute);margin-top:10px}
input,select,button{width:100%;font-size:17px;padding:12px;border-radius:10px;border:1px solid #2c3a4a;background:#0c131b;color:var(--ink)}
button{background:var(--acc);color:#111;font-weight:700;border:0;margin-top:14px;cursor:pointer}
.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.big{font-size:44px;font-weight:800}.good{color:var(--good)}.bad{color:var(--bad)}.mute{color:var(--mute);font-size:14px}
.years{display:flex;gap:6px;flex-wrap:wrap}.yr{padding:6px 8px;border-radius:8px;font-size:13px;background:#0c131b}
.yr.y{outline:2px solid var(--good)}.yr.n{outline:2px solid var(--bad);opacity:.8}
.badge{display:inline-block;background:var(--acc);color:#111;font-size:12px;font-weight:700;padding:2px 8px;border-radius:99px}
table{width:100%;border-collapse:collapse;font-size:14px}td,th{padding:6px;border-bottom:1px solid #2c3a4a;text-align:left}
.parts{display:grid;grid-template-columns:1fr 1fr 1.6fr;gap:6px}.parts[hidden],input[hidden]{display:none}
input[type=date]{-webkit-appearance:none;appearance:none;min-height:50px;display:block;line-height:1.2;text-align:left}
input[type=date]::-webkit-date-and-time-value{text-align:left}
button.link{background:none;color:var(--acc);width:auto;padding:4px 0;margin-top:4px;font-size:13px;font-weight:600;text-decoration:underline}
.raceage{background:#0c131b;border-left:4px solid var(--acc);border-radius:10px;padding:10px 12px;margin:10px 0;font-size:17px}
.raceage strong{font-size:22px}.nudge{background:#1d2b1f;border-left:4px solid var(--good);border-radius:10px;padding:8px 12px;margin:8px 0}
.privacy{margin-top:10px}
/* Ad slots: fixed heights so nothing shifts when data.json fills them */
.ad{position:relative;max-width:720px;margin:12px auto;padding:0 16px;height:96px;overflow:hidden}
.ad-mid{height:112px}.ad-bottom{margin-top:24px}
main .ad{padding:0}
.ad-link{display:flex;align-items:center;gap:12px;height:100%;padding:18px 14px 10px;border:1px dashed #33465a;border-radius:12px;background:#121b25;text-decoration:none;color:var(--ink)}
.ad.is-sponsor .ad-link{border-style:solid}
.ad-label{position:absolute;top:5px;left:28px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}
main .ad-label{left:12px}
.ad-img{width:56px;height:56px;flex:0 0 56px;border-radius:8px;object-fit:cover;background:#0c131b}
.ad-body{display:flex;flex-direction:column;min-width:0}
.ad-head{font-size:16px;color:var(--acc);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ad-text{font-size:14px;color:var(--mute);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hint{margin:4px 0 0}.hint.bad{color:var(--bad)}
.update{background:#0c131b;border-left:4px solid var(--acc);border-radius:10px;padding:10px 14px;margin:12px 0}.update h3{font-size:16px;margin:2px 0 6px}.update p{margin:8px 0;font-size:15px}
.estimate h3{font-size:18px;margin:0}.estimate p{margin:4px 0}.estimate .best{font-size:30px;color:var(--acc)}
