:root{--bg:#dff1df;--g:#16834d;--g2:#2a9a5e;--panel:#ffffff;--panel2:#eaf7ee;--line:rgba(24,91,52,.18);--txt:#183725;--muted:#627b69;--red:#d83d45;--gold:#9a6b00;--ok:#16894f;--warn:#a55c00;--bad:#b52f37;--blue:#1769aa;--shadow:0 8px 24px rgba(18,78,43,.10)}*{box-sizing:border-box}html{background:var(--bg);color-scheme:light}body{margin:0;color:var(--txt);font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic",Meiryo,sans-serif;background:repeating-linear-gradient(90deg,rgba(255,255,255,.10) 0 54px,rgba(25,119,67,.06) 54px 108px),linear-gradient(180deg,#50ad70 0,#bfe3c4 210px,#edf8ef 520px,#f7fcf7 100%);min-height:100vh;padding-bottom:86px}button,input,select,textarea{font:inherit}.top{position:sticky;top:0;z-index:30;display:flex;justify-content:space-between;align-items:center;padding:12px 13px;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);box-shadow:0 4px 16px rgba(30,95,55,.08);backdrop-filter:blur(14px)}.brand small{display:block;color:#4d765b;font-size:10px;font-weight:900;letter-spacing:.15em}.brand strong{font-size:18px;color:#12452a}.top-actions{display:flex;gap:7px;align-items:center}.status{font-size:10px;font-weight:900;border:1px solid var(--line);background:var(--panel2);border-radius:999px;padding:7px 9px;color:#245d3c}.live-mini{font-size:10px;font-weight:950;text-decoration:none;color:#fff;background:#d93d43;border-radius:999px;padding:8px 9px}.page{display:none;max-width:940px;margin:auto;padding:12px}.page.active{display:block}.hero,.card,.metric{background:linear-gradient(145deg,rgba(255,255,255,.99),rgba(238,249,241,.99));border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow)}.hero{padding:15px;overflow:hidden;position:relative}.hero:after{content:"";position:absolute;left:-5%;right:-5%;bottom:-17px;height:30px;border-top:2px solid rgba(24,126,70,.30);border-radius:50%}.home-hero{background:linear-gradient(135deg,#f7fff8,#dcf4e1)}.hero h2{margin:3px 0;color:#123f28}.hero-actions{margin-top:12px;max-width:360px}.eyebrow{font-size:10px;color:#4c7a5c;font-weight:900;letter-spacing:.15em}.muted{color:var(--muted)}.small{font-size:11px}.section{display:flex;justify-content:space-between;align-items:end;gap:8px;margin:18px 2px 8px}.section h2,.section h3{margin:0;color:#183725}.stack{display:grid;gap:9px}.card{padding:13px}.notice{padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:#edf8f0;margin:9px 0;font-size:12px}.notice.error{background:#fff0f0;color:#8d2328;border-color:#efb4b7}.notice.warn{background:#fff8e6;color:#7b5000;border-color:#ecd59b}.notice.ok{background:#e9f8ee;color:#155e36}.row{display:flex;justify-content:space-between;gap:8px;align-items:center}.chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}.tag{font-size:10px;font-weight:900;padding:5px 7px;border:1px solid var(--line);background:#eef7f0;border-radius:999px;color:#2d5c3d}.tag.red{background:#fdebed;color:#9f252c}.tag.gold{color:var(--gold);background:#fff8e0}.tag.ok{color:var(--ok)}.tag.blue{color:var(--blue)}.btn{border:1px solid var(--line);background:#e8f5eb;color:#245b3b;padding:11px 12px;border-radius:12px;font-weight:900;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.btn.red{background:var(--red);color:#fff;border-color:transparent}.btn.live{background:#e33f46;color:white;border-color:transparent}.btn.ghost{background:transparent}.btn.wide{width:100%}.btn:disabled{opacity:.45}.quick-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.quick-actions .btn{padding:9px 10px;font-size:11px}.datebar{display:grid;grid-template-columns:auto 1fr auto;gap:7px}.datebar input{min-width:0;border:1px solid var(--line);background:#fff;color:#183725;border-radius:12px;padding:10px}.venue-tabs{display:flex;gap:6px;overflow:auto;padding-bottom:2px}.venue-tabs button{white-space:nowrap}.race{display:grid;grid-template-columns:52px 1fr auto;gap:10px;align-items:center;border-left:4px solid #64b77b}.race .rno{font-size:20px;font-weight:950;text-align:center;color:#145b35}.race .name{font-weight:950;font-size:16px;color:#183725}.race .sub{font-size:11px;color:var(--muted);margin-top:3px}.race .time{font-weight:900;color:#876100}.race.selected{border-left-color:var(--red)}.grade{font-size:10px;background:#f7d9dc;color:#9a2027;padding:5px 7px;border-radius:8px;font-weight:900}.loading{display:flex;gap:9px;align-items:center}.spinner{width:16px;height:16px;border:2px solid rgba(20,95,54,.18);border-top-color:#197544;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.racehead{display:grid;grid-template-columns:1fr auto;gap:10px}.racehead h2{margin:3px 0}.source{font-size:10px;color:var(--muted);margin-top:8px}.source a{color:#166aa1}.runners{display:grid;gap:7px}.runner{display:grid;grid-template-columns:34px 34px minmax(0,1fr) 58px;gap:7px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:13px;background:#fff;box-shadow:0 3px 10px rgba(20,90,50,.05)}.waku,.umaban{display:grid;place-items:center;height:32px;border-radius:8px;font-weight:950}.waku{background:#f0f0f0;color:#111;border:1px solid #ddd}.umaban{background:#e3f2e7;color:#155a34}.horsebtn{background:none;border:0;color:#183725;text-align:left;padding:0;min-width:0}.horsebtn strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.horsebtn span{font-size:10px;color:var(--muted)}.odds{text-align:right;font-weight:950;color:#8c6700}.runner-extra{grid-column:3/5;display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.mini{padding:6px;border:1px solid var(--line);border-radius:8px;text-align:center;font-size:9px;background:#f3faf4;color:#44614d}.mini b{display:block;font-size:12px;color:#1e4d31}.marks .runner{grid-template-columns:36px 34px 1fr 60px}.mark{font-size:22px;font-weight:950}.mark.best{color:var(--red)}.analysis{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.metric{text-align:center;padding:10px}.metric span{display:block;font-size:9px;color:var(--muted)}.metric strong{display:block;font-size:19px;margin-top:3px;color:#173e28}.bars{display:grid;gap:7px}.barrow{display:grid;grid-template-columns:82px 1fr 38px;gap:7px;align-items:center}.bar{height:8px;border-radius:999px;background:#d8eadc;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--red),#e6b64b)}.bets{display:grid;gap:7px}.bet{display:grid;grid-template-columns:68px 1fr 58px;gap:7px;padding:9px;border-bottom:1px solid var(--line)}.field{display:grid;gap:5px;color:var(--muted);font-size:11px;font-weight:800}.field input,.field textarea,.field select,.search{width:100%;border:1px solid var(--line);background:#fff;color:#183725;border-radius:11px;padding:10px}.field textarea{min-height:72px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}.dbgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.horsecard button{width:100%;text-align:left}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.overlay{display:none;position:fixed;inset:0;z-index:50;background:rgba(18,55,31,.48);overflow:auto;padding:10px}.overlay.open{display:block}.sheet{max-width:760px;margin:12px auto;background:#f8fff9;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:0 18px 50px rgba(10,50,28,.22)}.sheethead{position:sticky;top:0;z-index:3;display:flex;justify-content:space-between;gap:8px;padding:13px;background:rgba(255,255,255,.97);border-bottom:1px solid var(--line)}.sheetbody{padding:13px}.close{width:38px;height:38px;border-radius:10px;background:#eaf5ed;border:1px solid var(--line);color:#245b3b;font-size:20px}.profilegrid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.pstat{padding:9px;border:1px solid var(--line);border-radius:10px;background:#edf8ef}.pstat span{display:block;font-size:9px;color:var(--muted)}.pstat strong{display:block;margin-top:2px}.table{display:grid;gap:5px}.tr{display:grid;grid-template-columns:1fr auto;gap:8px;padding:7px 0;border-bottom:1px solid var(--line)}.history-row{display:grid;grid-template-columns:1fr auto;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.history-row:last-child{border-bottom:0}.history-main strong{display:block}.history-main span{font-size:10px;color:var(--muted)}.history-actions{display:flex;gap:5px;align-items:center}.history-actions .btn{font-size:10px;padding:7px 8px}.result-grid{display:grid;gap:6px}.result-line{display:grid;grid-template-columns:42px 34px 1fr;gap:7px;padding:8px;border-radius:10px;background:#f0f8f2}.nav{position:fixed;left:0;right:0;bottom:0;z-index:35;display:grid;grid-template-columns:repeat(5,1fr);padding:6px 5px calc(6px + env(safe-area-inset-bottom));background:rgba(255,255,255,.97);border-top:1px solid var(--line);box-shadow:0 -4px 18px rgba(21,77,45,.08);backdrop-filter:blur(12px)}.nav button{border:0;background:none;color:#688170;font-size:9px;font-weight:900}.nav button b{display:block;font-size:19px}.nav button.active{color:#176b3f}.hidden{display:none!important}.good{color:var(--ok)}.bad{color:var(--bad)}.gold{color:var(--gold)}.warnc{color:var(--warn)}a{color:#1769aa}@media(max-width:620px){.analysis,.stats{grid-template-columns:repeat(2,1fr)}.fields,.dbgrid{grid-template-columns:1fr}.runner-extra{grid-template-columns:repeat(2,1fr)}.race{grid-template-columns:48px 1fr auto}.datebar{grid-template-columns:1fr auto}.datebar .todayBtn{display:none}.top-actions .status{display:none}.brand strong{font-size:17px}}

/* v1.4 weekly race hub */
.weekbar{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.weekbar .btn{min-height:44px;font-weight:800}
.week-range{padding:7px 2px 2px}
.day-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:3px;scrollbar-width:none}
.day-tabs::-webkit-scrollbar{display:none}
.day-tabs .btn{min-width:102px;white-space:nowrap}
.grade-grid{display:grid;gap:10px}
.grade-card{display:grid;grid-template-columns:60px 1fr auto;gap:10px;align-items:center;width:100%;text-align:left;color:inherit;border:1px solid rgba(9,86,47,.14);background:linear-gradient(135deg,#fff,#f3fff7);box-shadow:0 8px 24px rgba(9,86,47,.08)}
.grade-card .grade-date{font-weight:900;color:#176b40;text-align:center;line-height:1.25}
.grade-card .grade-date small{display:block;color:#60756a;font-weight:700}
.grade-card .grade-name{font-size:17px;font-weight:900;line-height:1.25}
.grade-card .grade-meta{font-size:12px;color:#62776b;margin-top:4px}
.grade-badge{display:inline-flex;align-items:center;justify-content:center;min-width:48px;height:32px;border-radius:12px;background:#9b2e36;color:#fff;font-weight:900}
.grade-status{display:inline-block;margin-top:6px;padding:4px 8px;border-radius:999px;background:#e8f6ed;color:#245f40;font-size:11px;font-weight:800}
.grade-status.wait{background:#fff4d8;color:#7c5b11}.grade-status.done{background:#edf1f3;color:#536069}.grade-status.live{background:#e7f7ed;color:#0d6a39}
.race .status-dot{font-size:10px;color:#4f6b5c;margin-top:3px}.race .status-dot.grade{color:#9b2e36;font-weight:800}
.runner .recent-finishes{font-size:11px;color:#587064;margin-top:2px}
.runner .trainer-line{font-size:10px;color:#788b81;margin-top:2px}
.schedule-only{padding:18px;text-align:center}.schedule-only strong{display:block;font-size:18px;margin-bottom:6px}
.data-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.data-chip{font-size:11px;font-weight:800;padding:5px 8px;border-radius:999px;background:#eaf6ee;color:#24603f}
@media(min-width:720px){.grade-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

.race-backbar{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:0 0 9px}.race-backbar .btn{background:rgba(255,255,255,.88)}.runner-extra.history-rich{grid-template-columns:repeat(3,1fr)}@media(max-width:620px){.runner-extra.history-rich{grid-template-columns:repeat(2,1fr)}}
/* v1.5.0: race-first information architecture */
.program-guide{display:flex;flex-direction:column;gap:4px;background:#f7fff8;border:1px solid #cfe7d5}
.race-program{display:grid;gap:12px}
.venue-program{background:rgba(255,255,255,.72);border:1px solid #d7e8dc;border-radius:14px;padding:10px}
.venue-program h4{margin:0 0 8px;font-size:15px;display:flex;align-items:center;justify-content:space-between;color:#173f2a}
.venue-program h4 span{font-size:12px;font-weight:600;color:#64806d}
.program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.program-race{border:1px solid #d7e8dc;background:#fff;border-radius:12px;padding:10px;text-align:left;color:#173f2a;min-width:0;box-shadow:0 1px 3px rgba(12,76,40,.05)}
.program-race.graded{border-color:#d9b25f;background:linear-gradient(180deg,#fffef8,#fff)}
.program-race .program-top{display:flex;align-items:center;gap:6px;margin-bottom:5px}
.program-race .program-top b{font-size:16px;color:#0d6a3b}.program-race .program-top span{font-size:12px;color:#536d5d}
.program-race strong{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.program-race small{display:block;margin-top:3px;color:#688073;font-size:11px}.program-race em{display:block;margin-top:5px;font-style:normal;font-size:10px;color:#2b6f48}
.mini-grade{margin-left:auto!important;background:#b62731;color:#fff!important;border-radius:999px;padding:2px 6px;font-weight:800}
.grade-grid.compact .grade-card{padding:10px}
.race-condition{margin-top:7px;font-size:12px;line-height:1.45;color:#345943}
.data-status{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 2px}
.data-pill{background:#eef3ef;border:1px solid #d6e1d8;color:#617468;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:700}
.data-pill.ok{background:#e8f8ed;border-color:#b8dfc3;color:#18653b}
.bloodline{font-size:10px!important;color:#7a6750!important;margin-top:2px}
.horse-summary{display:flex;align-items:center;justify-content:space-between;gap:10px}.horse-summary>div{display:flex;flex-direction:column;gap:3px}
@media (min-width:720px){.program-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
