:root{color-scheme:light;--ink:#1e302d;--muted:#64726e;--green:#173d36;--green-soft:#eaf2ef;--orange:#af481e;--line:#dfe6e2;--paper:#fff;--background:#f6f8f6;font-family:Meiryo,'Hiragino Kaku Gothic ProN','Noto Sans JP',sans-serif;color:var(--ink);background:var(--background);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{font-size:14px;cursor:pointer}a{color:inherit;text-underline-offset:4px}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid #bd5e37;outline-offset:4px}button:disabled{cursor:wait;opacity:.7}ruby{ruby-position:over}rt{font-size:.56em;font-weight:400;letter-spacing:.035em;color:inherit;opacity:.8}button rt{font-size:9px}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:700}h1{font-size:32px;letter-spacing:.015em;line-height:1.9}h2{font-size:23px;line-height:1.9}p{line-height:2.1}.topbar{max-width:1280px;margin:0 auto;padding:25px 40px 21px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:21px;font-weight:700;letter-spacing:.06em}.brand small{display:block;font-size:8px;letter-spacing:.2em;margin-top:5px;color:var(--muted)}.icon-button,.quiet-button{border:1px solid var(--line);background:white;border-radius:10px;min-height:44px;padding:9px 16px;display:flex;gap:8px;align-items:center;justify-content:center}.icon-button>span:first-child{font-size:21px}.workspace{max-width:1200px;margin:auto;padding:34px 40px 26px}.intro{display:flex;justify-content:space-between;align-items:center;gap:24px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--muted);line-height:2.3}.intro .eyebrow{color:var(--orange)}.intro p{font-size:14px;color:var(--muted);margin-top:4px;line-height:2.35}.primary-button{border:0;background:var(--green);color:white;border-radius:10px;min-height:50px;padding:13px 20px;box-shadow:0 5px 12px #173d3618;display:inline-flex;align-items:center;justify-content:center;gap:9px;white-space:nowrap}.primary-button:hover{background:#25554b}.primary-button>span:first-child:not([data-ruby]){font-size:24px}.permission-note{font-size:11px;line-height:2.25;color:var(--muted);margin:16px 0 18px;max-width:1000px}.course-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:15px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.course-label{font-size:12px;color:var(--muted)}.course-buttons{display:flex;gap:7px}.course-buttons button{border:1px solid var(--line);background:white;color:var(--ink);border-radius:7px;min-height:42px;padding:7px 17px}.course-buttons button[aria-pressed=true]{background:var(--green-soft);color:var(--green);border-color:#92aea2;font-weight:700}.mode-tag{margin-left:auto;font-size:11px;line-height:2;background:var(--green-soft);color:var(--green);border-radius:5px;padding:3px 9px}.notice{font-size:12px;line-height:2.2;color:var(--muted);min-height:39px;padding:12px 0 4px}.notice.is-error{color:#9c3e21}.reading-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:30px;margin-top:18px;align-items:start}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.story-count{width:33px;height:33px;border-radius:50%;display:grid;place-items:center;background:var(--green-soft);color:var(--green);font-size:14px;font-weight:700}.reading-clock{border:1px solid var(--line);background:white;border-radius:12px;padding:14px 18px 13px;margin-bottom:20px}.clock-top{display:flex;align-items:center;justify-content:space-between;gap:14px}.clock-top>div{display:flex;align-items:baseline;gap:13px;flex-wrap:wrap}.clock-label{font-size:12px;color:var(--muted)}#countdown{font-size:27px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.01em}.quiet-button{background:var(--background);padding:7px 11px;font-size:12px;border:0;min-height:42px}.quiet-button>span:first-child{font-size:16px}progress{width:100%;height:4px;appearance:none;border:none;display:block;margin:12px 0;background:var(--green-soft);border-radius:5px;overflow:hidden}progress::-webkit-progress-bar{background:var(--green-soft)}progress::-webkit-progress-value{background:var(--green)}progress::-moz-progress-bar{background:var(--green)}.clock-caption{font-size:10px;color:var(--muted);line-height:2.1}.story-list{display:grid;gap:17px}.story-card{background:white;border:1px solid var(--line);border-radius:14px;padding:23px 25px 20px;position:relative;overflow:hidden}.story-card:before{position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--green);content:''}.story-card[data-category=road]:before{background:#6d75a0}.story-card[data-category=culture]:before{background:#b26c32}.story-card[data-category=tradition]:before{background:#946381}.story-meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px;gap:10px}.story-category{font-size:11px;padding:4px 8px;border-radius:4px;background:var(--green-soft);color:var(--green);line-height:2}.distance{font-size:11px;color:var(--muted);white-space:nowrap}.story-card h3{margin-bottom:9px;line-height:2}.story-open{border:0;background:none;padding:0;text-align:left;font-size:20px;line-height:2.1;color:var(--ink);font-weight:700;min-height:44px}.story-open:hover{color:var(--orange)}.story-text{font-size:15px;line-height:2.4;color:#485650;overflow-wrap:anywhere}.story-bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:17px;flex-wrap:wrap}.reading-grade{font-size:10px;color:var(--muted);line-height:2}.reading-grade.auto{color:#925522}.more-button{border:0;background:none;color:var(--green);text-decoration:underline;text-underline-offset:5px;padding:6px 0;min-height:38px;font-size:12px}.reading-tip{font-size:11px;color:var(--muted);margin-top:16px;line-height:2.2}.place-panel{background:var(--green);color:white;border-radius:14px;padding:22px 24px 25px;text-align:center}.place-panel .eyebrow{color:#b7cfc6;font-size:10px}.place-mark{font-size:35px;margin:14px 0 9px;color:#dcebe5}.place-panel h2{font-size:27px;line-height:2.1;overflow-wrap:anywhere}.place-panel p{font-size:12px;line-height:2.4;color:#d4e1db}.road-label{font-size:13px;padding:16px 0 13px;margin-top:12px;border-top:1px solid #ffffff20;line-height:2.4;overflow-wrap:anywhere}.place-panel .location-accuracy{font-size:10px;color:#bdcec5}.map-link{display:inline-block;font-size:12px;margin-top:14px;text-underline-offset:5px;line-height:2.3}.place-photo{margin:20px 0 0;background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden}.place-photo img{width:100%;height:155px;object-fit:cover;display:block}.place-photo figcaption{padding:13px 15px 15px;line-height:2;font-size:13px}.place-photo small{display:block;font-size:9px;color:var(--muted);line-height:1.9;margin-top:6px}.reading-note{display:flex;gap:11px;margin-top:20px;padding:18px 0}.note-symbol{font-size:19px;width:32px;height:32px;background:var(--green-soft);border-radius:8px;color:var(--green);display:grid;place-items:center;flex-shrink:0}.reading-note strong{font-size:12px;line-height:2.4}.reading-note p{font-size:11px;color:var(--muted);line-height:2.3;margin-top:6px}.footer{border-top:1px solid var(--line);margin-top:38px;padding-top:22px;display:flex;gap:16px;justify-content:space-between;align-items:center;font-size:11px;line-height:2.2;color:var(--muted);flex-wrap:wrap}.footer>span{font-weight:700}.footer small{font-size:8px;letter-spacing:.1em;margin-left:8px}.footer a{font-size:10px}.skip-link{position:absolute;left:16px;top:-100px;padding:15px;background:white;z-index:100}.skip-link:focus{top:10px}dialog{border:1px solid var(--line);border-radius:18px;padding:25px 30px 30px;width:min(520px,calc(100% - 28px));max-height:calc(100dvh - 40px);color:var(--ink);box-shadow:0 20px 80px #142f3430}dialog::backdrop{background:#0c2728a8;backdrop-filter:blur(3px)}.dialog-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.close-button{border:0;background:var(--background);border-radius:50%;width:42px;height:42px;font-size:23px;color:var(--muted)}dialog h2{font-size:22px;line-height:2.1;margin-bottom:22px}dialog form>label{display:block;font-size:14px;line-height:2.3;margin-top:20px}select{width:100%;min-height:48px;border:1px solid #becac4;border-radius:8px;background:white;padding:10px 13px;margin-top:7px;color:var(--ink);font-size:15px}dialog form>p{font-size:12px;color:var(--muted);margin-top:10px;line-height:2.35}dialog .primary-button{margin-top:26px;width:100%}.story-dialog{width:min(650px,calc(100% - 28px));padding:26px 34px 32px}.story-dialog h2{font-size:26px}.story-dialog #detail-body p{font-size:17px;line-height:2.65;margin-bottom:20px;overflow-wrap:anywhere}.detail-reading{font-size:11px;color:var(--muted);margin-top:15px;line-height:2.3}.source-link{display:block;font-size:12px;color:var(--green);line-height:2.4;margin-top:13px;overflow-wrap:anywhere}.empty-state{padding:30px;background:white;border:1px solid var(--line);border-radius:14px;color:var(--muted);font-size:14px;line-height:2.4}[hidden]{display:none!important}
@media(max-width:1000px){.workspace{padding:28px}.topbar{padding:22px 28px}.reading-layout{grid-template-columns:minmax(0,1fr) 270px;gap:22px}h1{font-size:28px}.story-card{padding:21px}.story-open{font-size:19px}.place-panel{padding:22px 17px}}
@media(max-width:740px){.topbar{padding:18px 20px}.brand{font-size:18px;gap:9px}.brand img{width:34px;height:34px}.brand small{font-size:7px}.workspace{padding:24px 18px}.intro{align-items:flex-start;display:block}h1{font-size:27px;line-height:1.9;letter-spacing:-.01em}.intro p{font-size:12px;line-height:2.4;margin-top:7px}.intro .primary-button{width:100%;margin-top:19px}.permission-note{font-size:10px;line-height:2.3;margin:12px 0 18px}.course-bar{gap:10px;padding:12px 0}.course-label{font-size:11px}.course-buttons{gap:5px;flex:1}.course-buttons button{padding:7px 12px;min-width:0;flex:1}.mode-tag{margin-left:0;font-size:9px}.notice{font-size:11px;padding-top:11px}.reading-layout{display:flex;flex-direction:column;gap:24px;margin-top:10px}.reading-column{width:100%}.walk-column{width:100%;display:grid;grid-template-columns:1fr;gap:0}.place-panel{text-align:left;display:grid;grid-template-columns:1fr auto;padding:18px 20px}.place-panel .eyebrow{grid-column:1/-1}.place-mark{grid-column:2;grid-row:2/4;margin:0;font-size:32px;align-self:center}.place-panel h2{font-size:23px}.place-panel p{grid-column:1/-1}.road-label{grid-column:1/-1;margin-top:6px;padding:10px 0}.map-link{grid-column:1/-1;margin-top:9px}.section-heading{margin-bottom:13px}h2{font-size:21px}.story-card{padding:20px 19px 18px}.story-open{font-size:19px;line-height:2.2}.story-text{font-size:15px;line-height:2.55}.story-meta{margin-bottom:9px}.reading-clock{padding:13px 15px;margin-bottom:16px}.clock-top{gap:8px}.clock-top>div{gap:9px}.clock-label{font-size:11px}#countdown{font-size:25px}.quiet-button{font-size:11px;padding:7px 9px}.clock-caption{font-size:10px}.place-photo{margin-top:17px}.place-photo img{height:190px}.footer{margin-top:23px;display:block}.footer>div{margin-top:10px}.icon-button{padding:7px 10px;font-size:12px}.story-dialog{padding:21px}.story-dialog h2{font-size:22px}.story-dialog #detail-body p{font-size:16px;line-height:2.65}dialog{padding:22px}dialog h2{font-size:20px}.reading-tip{font-size:10px}}
@media(prefers-reduced-motion:no-preference){button,a{transition:background-color .15s,color .15s}.story-card{animation:arrive .25s ease-out}@keyframes arrive{from{opacity:.6;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}}

/* 案内と操作ラベルだけ読みを非表示にし、話のタイトルと本文には残す。 */
:is(.intro,.permission-note,.reading-grade:not(.auto),.more-button,.clock-label,#pause-button,#clock-caption,.story-category,#detail-category,.distance) rt{display:none}
:is(.intro,.permission-note,.reading-grade:not(.auto),.more-button,.clock-label,#pause-button,#clock-caption,.story-category,#detail-category,.distance) ruby{display:inline}

/* 話を開く操作は、スマートフォンでも押しやすい角丸ボタンにする。 */
.more-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border:1px solid #c5d8cf;border-radius:10px;background:var(--green-soft);color:var(--green);font-size:14px;font-weight:700;line-height:1.4;text-decoration:none;box-shadow:0 2px 5px #173d360d}
.more-button:hover:not(:disabled){background:#dcebe4;border-color:#92aea2}
.more-button:active:not(:disabled){background:#d1e3d9}

/* 写真の説明と地図リンクも、ふりがなを付けずに表示する。 */
:is(.place-photo,#map-link) rt{display:none}
:is(.place-photo,#map-link) ruby{display:inline}

/* 一覧下の案内と、フッターの出典表記のふりがなを非表示にする。 */
:is(.reading-tip,.footer>div) rt{display:none}
:is(.reading-tip,.footer>div) ruby{display:inline}

/* 地図へのリンクは、暗い背景でも見つけやすい角丸ボタンにする。 */
#map-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border:1px solid #dbe7e1;border-radius:10px;background:white;color:var(--green);font-size:14px;font-weight:700;line-height:1.4;text-decoration:none;box-shadow:0 3px 6px #0a251c24}
#map-link:hover{background:var(--green-soft)}
#map-link:active{background:#dcebe4}
#map-link:focus-visible{outline-color:#f4c7a8}

/* 設定画面と詳細の補足・出典・戻る操作には、ふりがなを表示しない。 */
:is(#settings-button,#settings-dialog,#detail-reading,#detail-source,#story-dialog>.primary-button) rt{display:none}
:is(#settings-button,#settings-dialog,#detail-reading,#detail-source,#story-dialog>.primary-button) ruby{display:inline}

/* 状態の案内・近くの話の見出し・ふりがなの説明も、読みを非表示にする。 */
:is(#notice,#mode-label,#stories-heading,.reading-note) rt{display:none}
:is(#notice,#mode-label,#stories-heading,.reading-note) ruby{display:inline}

/* 文字の分割で生じる余白を、保存と戻るボタンに限ってなくす。 */
#settings-form>.primary-button,#story-dialog>.primary-button{gap:0}

/* 話の分類ラベルと場所パネルの文字を、少し大きく読みやすくする。 */
.story-category,#detail-category{font-size:.8125rem}
.place-panel .eyebrow{font-size:.75rem}
.place-panel h2{font-size:1.875rem}
.place-panel p{font-size:.875rem}
.place-panel .road-label{font-size:.9375rem}
.place-panel .location-accuracy{font-size:.75rem}
#map-link{font-size:1rem}

/* 場所を示す見出しだけ読みを隠し、地名と道路名の読みは残す。 */
.place-panel>.eyebrow rt{display:none}
.place-panel>.eyebrow ruby{display:inline}

@media(max-width:740px){
  .place-panel h2{font-size:1.625rem}
}

/* 詳しい歴史を段落ごとに読み、ダイアログの端で背景へスクロールを伝えない。 */
#detail-history h3{font-size:1.125rem;line-height:2.2;margin:22px 0 12px;overflow-wrap:anywhere}
#story-dialog{overscroll-behavior:contain}
#story-dialog::backdrop{overflow:hidden;overscroll-behavior:contain}
