/* 大会ごとのページ（scripts/build_pages.py が作る t/*.html）の見た目。色はガイドのページと共通 */
:root{
  --bg:#fffdf7; --surface:#ffffff; --paper:#fbf8ef;
  --ink:#1d2a44; --ink-2:#4c5872; --ink-3:#6b7488; --rule:#e8e2d2;
  --yellow:#f6c343; --yellow-soft:#fff4d2; --amber-ink:#7a5600;
  --coral-ink:#b8352b; --coral-soft:#fce3e0;
  --green:#3b6b1f; --green-soft:#e8f0e1; --grey-soft:#eceff1;
  --font:"M PLUS Rounded 1c","Hiragino Maru Gothic ProN","Noto Sans JP",system-ui,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.8}
a{color:var(--ink)}
.wrap{max-width:860px;margin:0 auto;padding-block:16px 0;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.g-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding-bottom:14px;border-bottom:2px dashed var(--rule)}
.g-brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:800}
.g-nav{display:flex;gap:14px;font-size:.86rem}.g-nav a{color:var(--ink-2)}
.crumbs{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:2px 0;font-size:.78rem;color:var(--ink-3)}
.crumbs li:not(:last-child)::after{content:"›";margin:0 .5em}
.crumbs a{color:var(--ink-3)}
.t{margin-top:18px;display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.eyebrow{margin:0;font-size:.85rem;font-weight:700;color:var(--coral-ink)}
h1{margin:0;font-size:clamp(1.4rem,4.5vw,2rem);line-height:1.4;overflow-wrap:anywhere}
h1 .yr{display:inline-block;margin-left:.4em;padding:0 .5em;border-radius:8px;background:var(--yellow-soft);font-size:.6em;vertical-align:.2em;color:var(--amber-ink)}
.entry{border-radius:16px;padding:14px 18px;background:var(--grey-soft)}
.entry p{margin:0}.entry .lbl{font-weight:800}
.entry .method{margin-top:6px;font-size:.9em;font-weight:700}
.entry.st-open{background:var(--green-soft)}.entry.st-open .lbl{color:var(--green)}
.entry.st-soon{background:var(--yellow-soft)}.entry.st-soon .lbl{color:var(--amber-ink)}
.entry.st-closed .lbl{color:var(--ink-2)}
.info{display:grid;grid-template-columns:5.5em minmax(0,1fr);gap:8px 14px;margin:0;background:var(--surface);border:1.5px solid var(--rule);border-radius:16px;padding:16px 18px}
.info dt{font-weight:700;color:var(--ink-3);font-size:.9rem}
.info dd{margin:0;overflow-wrap:anywhere}
.note{margin:0;overflow-wrap:anywhere;background:var(--paper);border-radius:12px;padding:12px 16px;font-size:.92rem;color:var(--ink-2)}
.actions{display:flex;flex-wrap:wrap;gap:10px}
.btn{display:inline-block;border-radius:999px;padding:9px 18px;font-weight:700;font-size:.92rem;text-decoration:none;border:1.5px solid var(--ink)}
.btn-solid{background:var(--ink);color:#fff}
.btn-line{background:var(--surface);color:var(--ink)}
.box{background:var(--paper);border-radius:16px;padding:14px 18px;display:grid;gap:10px}
.box-h{margin:0;font-weight:800}
.muted{margin:0;color:var(--ink-2);font-size:.92rem}
.verified{margin:0;font-size:.8rem;color:var(--ink-3)}
.near{margin-top:32px}
.near h2,.reg h2{font-size:1.2rem;margin:0 0 10px}
.mlist{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.mlist a{display:grid;grid-template-columns:5.5em minmax(0,1fr);gap:0 12px;background:var(--surface);border:1.5px solid var(--rule);border-radius:14px;padding:10px 14px;text-decoration:none}
.mlist a:hover{border-color:var(--yellow)}
.m-date{grid-row:span 2;font-weight:800;color:var(--amber-ink)}
.m-name{font-weight:700;overflow-wrap:anywhere}
.m-sub{font-size:.8rem;color:var(--ink-3);overflow-wrap:anywhere}
.back{margin:28px 0 0}
@media (max-width:520px){.mlist a{grid-template-columns:minmax(0,1fr)}.m-date{grid-row:auto;font-size:.85rem}.info{grid-template-columns:minmax(0,1fr);gap:2px}.info dd{margin-bottom:8px}}
.hero{margin-top:22px;display:grid;gap:10px}
.hero p{margin:0}
.regnav{display:flex;flex-wrap:wrap;gap:8px}
.regnav a{background:var(--yellow-soft);border-radius:999px;padding:4px 14px;font-weight:700;text-decoration:none;font-size:.9rem}
.reg{margin-top:30px;scroll-margin-top:12px}
.reg h3{font-size:1rem;margin:16px 0 8px;color:var(--ink-2)}
.reg details{margin-top:16px}.reg summary{cursor:pointer;font-weight:700;color:var(--ink-2)}
.reg details .mlist{margin-top:8px}
.g-foot{margin-top:40px;padding-block:22px;border-top:2px dashed var(--rule);font-size:.78rem;color:var(--ink-3)}
.g-foot p{margin:0 0 6px}.g-foot a{color:inherit}
.ja-name{margin:-8px 0 0;font-size:.9rem;color:var(--ink-2)}
.info small{color:var(--ink-3)}

/* AdSense の広告枠（scripts/build_pages.py ad_html）。広告が入ったときだけ「広告」の文字と余白を出す */
.ad{text-align:center}
.ad-lbl{display:none;margin:0 0 4px;font-size:.75rem;color:#8a8f98;letter-spacing:.05em}
.ad:has(ins[data-ad-status="filled"]){margin:32px 0}
.ad:has(ins[data-ad-status="filled"]) .ad-lbl{display:block}
.ad:has(ins[data-ad-status="unfilled"]){display:none}
.fav-btn[aria-pressed="true"]{background:var(--yellow-soft)}
.fav-btn{font-family:inherit;cursor:pointer}
.next-link{display:block;margin-top:6px;font-weight:700}
.prep{background:var(--yellow-soft)}
.prep ul{margin:6px 0;padding:0;list-style:none;display:grid;gap:4px}
.prep li b{display:inline-block;min-width:5.5em;margin-right:6px;font-size:.85rem;color:var(--ink-2)}
.prep a,.prep-link a{color:var(--ink);font-weight:700}
.prep-link{margin:12px 0;font-size:.9rem;color:var(--ink-2)}
/* 進出ルート（2026-10-26）：左に予選、右に次の大会。線でつなぐ樹形図 */
.route{margin:40px 0 0;padding:22px 18px;background:var(--surface);border:1px solid var(--rule);border-radius:20px;scroll-margin-top:12px}
.route h2{margin:0 0 6px;font-size:1.25rem}
.r-meta{margin:0 0 8px;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:.85rem;color:var(--ink-2)}
.r-tag{padding:2px 10px;border-radius:999px;background:var(--green-soft);color:var(--green);font-weight:700}
.r-dir{margin:12px 0 0;font-size:.8rem;font-weight:800;color:var(--ink-3)}

.tree{overflow-x:auto;padding:10px 2px 6px;-webkit-overflow-scrolling:touch}
.tree+.tree{border-top:1px dashed var(--rule);margin-top:6px}
.tn{display:flex;align-items:center;width:max-content}
.tn-kids{display:flex;flex-direction:column}
.tn-kid{position:relative;padding:5px 22px 5px 0;display:flex;justify-content:flex-end}
.tn-kid::after{content:"";position:absolute;right:0;top:50%;width:22px;border-top:2px solid var(--yellow)}
.tn-kid::before{content:"";position:absolute;right:0;top:0;bottom:0;border-right:2px solid var(--yellow)}
.tn-kid:first-child::before{top:50%}
.tn-kid:last-child::before{bottom:50%}
.tn-kid:only-child::before{display:none}
.tn-kids+.tn-box{position:relative;margin-left:18px}
.tn-kids+.tn-box::before{content:"";position:absolute;left:-18px;top:50%;width:12px;border-top:2px solid var(--yellow)}
.tn-kids+.tn-box::after{content:"";position:absolute;left:-8px;top:50%;margin-top:-5px;border:5px solid transparent;border-left:7px solid var(--yellow)}
.tn-box{flex:none;width:210px;background:var(--paper);border:1px solid var(--rule);border-radius:14px;padding:10px 12px;display:flex;flex-direction:column;gap:3px;font-size:.85rem}
.tn-box>a{color:inherit;text-decoration:none;display:flex;flex-direction:column;gap:2px}
.tn-box>a:hover .r-name{text-decoration:underline}
.r-date{font-size:.78rem;font-weight:700;color:var(--coral-ink)}
.r-name{font-weight:800;line-height:1.45}
.r-sub,.r-adv{font-size:.76rem;color:var(--ink-2);line-height:1.5}
.r-adv{padding-top:4px;border-top:1px dashed var(--rule)}
.r-final{background:var(--yellow-soft);border:2px solid var(--yellow)}
.r-group details{font-size:.8rem}
.r-group summary{cursor:pointer;font-weight:700;color:var(--ink)}
.r-group ul{margin:6px 0 0;padding-left:1.1em;display:grid;gap:4px}
.r-group ul a{color:var(--ink)}
.r-pre{background:var(--grey-soft);border-style:dashed}
.r-beyond{background:var(--green-soft);border:2px solid var(--green)}
.r-pre .r-name,.r-beyond .r-name{font-size:.85rem}
.r-side{background:var(--surface);border:2px dashed var(--ink-3)}
.r-chip{align-self:flex-start;padding:1px 8px;border-radius:999px;background:var(--ink);color:#fff;font-size:.72rem;font-weight:800}
/* スマホは縦の樹形図：上に決勝、その下に前の段の大会を字下げして線でつなぐ */
@media (max-width:600px){
 .tree{overflow:visible}
 .tn{flex-direction:column-reverse;align-items:stretch;width:auto}
 .tn-box{width:auto}
 .tn-kids{padding-left:0}
 .tn-kid{padding:8px 0 0 20px;display:block}
 .tn-kid::before{left:7px;right:auto;top:0;bottom:0;border-right:0;border-left:2px solid var(--yellow)}
 .tn-kid:first-child::before{top:0}
 .tn-kid:last-child::before{bottom:auto;height:30px}
 .tn-kid:only-child::before{display:block}
 .tn-kid::after{left:7px;right:auto;top:30px;width:13px}
 .tn-kids+.tn-box{margin-left:0}
 .tn-kids+.tn-box::before,.tn-kids+.tn-box::after{display:none}
 .r-dir .wide{display:none}
}
@media (min-width:601px){.r-dir .narrow{display:none}}
.r-done{align-self:flex-start;margin-bottom:2px;padding:1px 8px;border-radius:999px;background:var(--grey-soft);color:var(--ink-2);font-size:.7rem;font-weight:800}
.r-ended{background:var(--surface)}
.r-ended .r-date{color:var(--ink-3)}
/* 進出ルート：保護者向けの分類と要約（2026-10-26） */
.r-grade{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 4px}
.r-grade span{font-size:.85rem;font-weight:800;color:var(--ink-2)}
.r-grade button{font:inherit;font-size:.9rem;font-weight:700;padding:6px 16px;border-radius:999px;border:1.5px solid var(--ink);background:var(--surface);color:var(--ink);cursor:pointer}
.r-grade button[aria-pressed="true"]{background:var(--ink);color:#fff}
.r-nav{display:grid;gap:10px;margin-top:14px}
.r-navrow b{display:block;font-size:.8rem;color:var(--ink-3);margin-bottom:4px}
.r-navrow .regnav{margin:0}
.r-catbox{margin-top:44px}
.r-cat{margin:0 0 4px;font-size:1.35rem;padding-left:12px;border-left:6px solid var(--yellow)}
.r-catbox>.muted{margin:0}
.r-catbox .route{margin-top:18px}
.route h3{margin:0 0 6px;font-size:1.15rem}
.r-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0 0}
.r-sum>div{background:var(--paper);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.r-sum b{font-size:1.2rem;color:var(--amber-ink);line-height:1.3}
.r-sum span{font-size:.75rem;color:var(--ink-2)}
.r-flow{margin-top:12px}
.r-flow>summary{cursor:pointer;display:inline-block;font-weight:800;font-size:.9rem;padding:7px 16px;border-radius:999px;background:var(--yellow-soft);border:1.5px solid var(--yellow)}
.r-flow[open]>summary{margin-bottom:4px}
.r-badge{align-self:flex-start;padding:1px 8px;border-radius:999px;font-size:.7rem;font-weight:800;margin-bottom:2px}
.r-start{background:var(--green);color:#fff}
.r-up{background:var(--surface);color:var(--amber-ink);border:1px solid var(--yellow)}
.r-group>.r-badge+.r-done{margin-left:0}
@media (max-width:600px){.r-sum{grid-template-columns:1fr 1fr 1fr;gap:6px}.r-sum>div{padding:8px}.r-sum b{font-size:1rem}}
/* 進出ルート：わが家のルート（学年・都道府県で絞った一本道。2026-10-26 改善案 1〜3） */
.r-pick{display:grid;gap:4px;background:var(--paper);border-radius:16px;padding:12px 14px;margin-top:8px}
.r-pick .r-grade{margin:4px 0}
.r-pick select{font:inherit;font-size:.95rem;font-weight:700;padding:6px 12px;border-radius:999px;border:1.5px solid var(--ink);background:var(--surface);color:var(--ink)}
.r-count{margin:0;font-weight:800;color:var(--amber-ink)}
.r-count:empty{display:none}
.r-howto summary{cursor:pointer;font-size:.85rem;font-weight:700;color:var(--ink-2)}
.r-sum{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:600px){.r-sum{grid-template-columns:1fr 1fr}}
.ps{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:0}
.ps-step{position:relative;padding:0 0 18px 26px;display:grid;gap:8px}
.ps-step::before{content:"";position:absolute;left:9px;top:10px;bottom:0;border-left:3px solid var(--yellow)}
.ps-step:last-child::before{display:none}
.ps-step::after{content:"";position:absolute;left:2px;top:4px;width:17px;height:17px;border-radius:50%;background:var(--yellow);border:3px solid var(--bg)}
.ps-head{margin:0;font-size:.82rem;font-weight:800;color:var(--ink-2)}
.ps-card{display:flex;flex-direction:column;gap:2px;background:var(--surface);border:1.5px solid var(--rule);border-radius:14px;padding:10px 14px;text-decoration:none;color:var(--ink)}
.ps-card:hover{border-color:var(--yellow)}
.ps-final{background:var(--yellow-soft);border:2px solid var(--yellow)}
.ps-name{font-weight:800;line-height:1.45}
.ps-when{font-size:.85rem;font-weight:700;color:var(--coral-ink)}
.ps-sub,.ps-adv{font-size:.78rem;color:var(--ink-2)}
.ps-adv{border-top:1px dashed var(--rule);padding-top:4px;margin-top:2px}
.ps-badge{align-self:flex-start;font-size:.72rem;font-weight:800;padding:1px 10px;border-radius:999px;background:var(--grey-soft);color:var(--ink-2)}
.ps-open{background:var(--green);color:#fff}
.ps-soon{background:var(--yellow);color:#1d2a44}
.ps-closed,.ps-done{background:var(--grey-soft);color:var(--ink-3)}
.ps-more summary{cursor:pointer;font-size:.85rem;font-weight:700}
.ps-more[open]{display:grid;gap:8px}
.ps-note{margin:0;font-size:.78rem;color:var(--ink-3)}
.route-link{display:inline-block;margin-top:8px;padding:4px 10px;border-radius:999px;background:var(--soft,#fdf3d3);font-size:.92em;font-weight:700}
/* 目指す大会を1つ選ぶ（2026-10-26） */
.r-goal{flex-basis:100%;display:grid!important;gap:6px;min-width:0}
.r-goal select{width:100%;max-width:100%;border-radius:14px;font-size:1rem;padding:10px 12px;background:var(--yellow-soft,#fdf3d3)}
.r-catbox > .r-cat{font-size:.85rem;border:0;padding:0;margin:18px 0 6px;color:var(--ink-2)}
.r-catbox > .r-cat::before{content:none}
.r-catbox > p.muted{display:none}
/* コースの長さ（2026-10-26） */
.yd-prev{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:999px;background:var(--ink-2);color:#fff;font-size:.75rem;vertical-align:2px}
.yd-wrap{overflow-x:auto}
.yd-t{border-collapse:collapse;width:100%;font-size:.92rem;margin:6px 0}
.yd-t th,.yd-t td{padding:6px 8px;border-bottom:1px solid var(--rule,#e6dfcb);text-align:left;white-space:nowrap}
.yd-t thead th{font-size:.78rem;color:var(--ink-2);font-weight:700}
.yd-t td:nth-child(2){font-weight:700;font-variant-numeric:tabular-nums}
.yd a{color:var(--ink);font-weight:700}
.yd-t tbody th{white-space:normal;min-width:7em}
.yd-t td:last-child{white-space:normal}
/* 大会の更新情報（t/updates.html）と大会ページの更新履歴 */
.u-filter{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;margin-top:4px}
.u-seg{display:inline-flex;background:var(--grey-soft);border-radius:999px;padding:3px}
.u-seg button{font:inherit;font-size:.85rem;font-weight:700;border:0;background:none;color:var(--ink-2);border-radius:999px;padding:4px 12px;cursor:pointer}
.u-seg button[aria-pressed="true"]{background:var(--ink);color:#fff}
.u-filter select{font:inherit;font-size:.88rem;border:1.5px solid var(--rule);border-radius:999px;padding:4px 10px;background:var(--surface);color:var(--ink)}
.u-minechk{font-size:.88rem;font-weight:700;display:inline-flex;gap:4px;align-items:center}
.u-day{margin-top:26px}
.u-day h2{font-size:1.05rem;margin:0 0 6px;padding-bottom:4px;border-bottom:3px solid var(--yellow);display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.u-day h2 small{font-size:.78rem;font-weight:400;color:var(--ink-3)}
.u-soon h2{border-bottom-color:var(--coral-ink)}
.u-list{list-style:none;margin:0;padding:0}
.u-row{display:grid;grid-template-columns:6.6em minmax(0,1fr);gap:2px 10px;padding:9px 0;border-bottom:1.5px dashed var(--rule)}
.u-tag{align-self:start;justify-self:start;font-size:.74rem;font-weight:700;border-radius:999px;padding:1px 9px;white-space:nowrap;margin-top:3px}
.u-stop{background:var(--coral-soft);color:var(--coral-ink)}
.u-change,.u-date,.u-entry{background:var(--yellow-soft);color:var(--amber-ink)}
.u-new{background:#e3eafb;color:#2b4590}
.u-result{background:var(--green-soft);color:var(--green)}
.u-open{background:var(--yellow);color:var(--ink)}
.u-body{min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 8px}
.u-body a{font-weight:700;overflow-wrap:anywhere}
.u-sub{flex-basis:100%;font-size:.84rem;color:var(--ink-2);overflow-wrap:anywhere}
.u-mine,.u-meth{font-size:.72rem;font-weight:700;color:var(--coral-ink)}
.u-meth{color:var(--amber-ink)}
.u-more{font:inherit;font-size:.85rem;font-weight:700;background:none;border:0;color:var(--ink-2);padding:8px 0;cursor:pointer;text-decoration:underline}
.u-month{margin-top:22px}.u-month summary{cursor:pointer;font-weight:700;color:var(--ink-2)}
.u-empty{margin-top:22px;color:var(--ink-2)}
.u-foot{margin-top:26px}
@media (max-width:520px){.u-row{grid-template-columns:minmax(0,1fr)}.u-tag{margin-top:0}}
.u-hist{background:var(--paper);border-radius:16px;padding:14px 18px;display:grid;gap:6px;font-size:.88rem}
.u-hist ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.u-hist li span{display:inline-block;min-width:8.5em;color:var(--ink-3)}
.u-hist a{font-weight:700}

/* きょうだいの切り替え（2026-10-27）。family.js が [data-kidbar] に入れる */
.kid-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 12px 0 0; }
.kid-bar-h { font-size: 12px; font-weight: 700; color: var(--ink-3, #6b7280); margin-right: 2px; }
.kid-bar button { font: inherit; font-size: 14px; font-weight: 700; padding: 6px 14px; border-radius: 999px; border: 1.5px solid var(--rule, #e8e2d2); background: var(--surface, #fff); color: var(--ink-2, #3b4660); cursor: pointer; }
.kid-bar button span { margin-left: 6px; font-size: 12px; font-weight: 400; }
.kid-bar button[aria-pressed="true"] { background: var(--ink, #1d2a44); border-color: var(--ink, #1d2a44); color: #fff; }
.cnav{display:flex;flex-wrap:wrap;gap:4px 14px;margin:4px 0 6px;font-size:.88rem}
.cnav a{color:var(--ink-2);white-space:nowrap}

/* 長い一覧は画面に入るまでレイアウトを後回しにする（表示を速くするため） */
section.reg, section.route { content-visibility: auto; contain-intrinsic-size: auto 1200px; }
