/* 東京 1日しおり 7/4 — スマホ縦・文字大きめ */
:root{
  --green:#2b5d4c; --green2:#3c7a64; --ink:#20262b; --sub:#5d6b6a;
  --bg:#f3f1e9; --card:#ffffff; --line:#e4e0d2;
  --accent:#c8743a; --accent-soft:#fbeede;
  --fixed:#2b5d4c; --fixed-soft:#e4efe9;
  --star:#b3461f; --star-soft:#fceae2;
  --move:#7a8a88;
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --shadow:0 2px 10px rgba(30,45,40,.07), 0 1px 3px rgba(30,45,40,.05);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic UI",sans-serif;
  font-size:17px; line-height:1.7; -webkit-font-smoothing:antialiased;
  padding-bottom:calc(28px + var(--safe-bottom));
}

/* ヘッダー */
.app-header{position:sticky; top:0; z-index:20;
  background:linear-gradient(135deg,var(--green),var(--green2)); color:#fff;
  padding:calc(10px + var(--safe-top)) 14px 10px; box-shadow:var(--shadow);}
.app-header__row{display:flex; align-items:center; justify-content:space-between; gap:10px}
.app-header__title{font-size:19px; font-weight:800}
.app-header__sub{font-size:13px; opacity:.9; margin-top:1px}
.app-header__clock{flex:0 0 auto; font-size:22px; font-weight:800; font-variant-numeric:tabular-nums}
.app-header__note{font-size:12px; opacity:.92; margin-top:7px; background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.25); border-radius:8px; padding:6px 9px; line-height:1.5}
.jump{display:flex; gap:7px; overflow-x:auto; margin-top:9px; padding-bottom:2px; -webkit-overflow-scrolling:touch}
.jump a{flex:0 0 auto; font-size:12.5px; font-weight:700; color:#fff; text-decoration:none;
  background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.28); border-radius:999px; padding:5px 11px}

/* セクション */
section{padding:16px 14px 6px; max-width:680px; margin:0 auto; scroll-margin-top:140px}
.sec-h{font-size:18px; font-weight:800; margin:0 0 12px; display:flex; align-items:center; gap:8px}
.sec-h .bar{width:5px; height:20px; background:var(--green); border-radius:3px}

/* タイムライン */
.tl{position:relative; padding-left:18px}
.tl::before{content:""; position:absolute; left:5px; top:6px; bottom:6px; width:2px; background:var(--line)}
.stop{position:relative; background:var(--card); border:1px solid var(--line); border-radius:14px;
  padding:13px 15px; margin-bottom:12px; box-shadow:var(--shadow)}
.stop::before{content:""; position:absolute; left:-16px; top:18px; width:11px; height:11px; border-radius:50%;
  background:#fff; border:3px solid var(--green2)}
.stop.kind-fixed{border-left:5px solid var(--fixed)}
.stop.kind-fixed::before{border-color:var(--fixed); background:var(--fixed)}
.stop.kind-move{background:#faf9f4; border-style:dashed}
.stop.kind-move::before{border-color:var(--move)}
.stop.is-now{box-shadow:0 0 0 2px var(--accent), var(--shadow)}
.stop__time{font-size:13px; font-weight:800; color:var(--green); font-variant-numeric:tabular-nums}
.stop__title{font-size:17px; font-weight:800; line-height:1.4; margin:3px 0}
.stop.kind-move .stop__title{font-size:15px; font-weight:700; color:var(--sub)}
.stop__desc{font-size:14px; color:#3c454a; margin:4px 0 0}
.stop__meta{font-size:13px; color:var(--sub); margin-top:7px; display:flex; flex-direction:column; gap:2px}
.stop__meta b{color:var(--ink); font-weight:700}
.badges{display:flex; flex-wrap:wrap; gap:6px; margin-top:9px; align-items:center}
.tag{font-size:11px; font-weight:800; padding:3px 8px; border-radius:6px}
.tag--fixed{background:var(--fixed-soft); color:var(--fixed)}
.tag--now{background:var(--accent); color:#fff}
.star{font-size:12px; font-weight:800; padding:3px 9px; border-radius:8px; background:var(--star-soft); color:var(--star);
  border:1px solid #f1cbb9; display:block; margin-top:8px; line-height:1.5}
.btn-map{display:inline-block; margin-top:9px; font-size:14px; font-weight:800; text-decoration:none;
  background:var(--green); color:#fff; padding:9px 14px; border-radius:10px}
.src{font-size:11.5px; color:var(--sub); margin-top:7px}
.src a{color:var(--green2)}

/* 帰りの新幹線 */
.ret-note{font-size:12.5px; color:#7a5a2a; background:var(--accent-soft); border:1px solid #eccfa6;
  border-radius:10px; padding:9px 12px; margin-bottom:12px; line-height:1.55}
.strat{background:var(--card); border:1px solid var(--line); border-radius:14px; padding:14px; margin-bottom:12px; box-shadow:var(--shadow)}
.strat__h{font-size:16px; font-weight:800; color:var(--green)}
.strat__sub{font-size:12.5px; color:var(--sub); margin:2px 0 8px}
.opt{border-top:1px solid var(--line); padding:10px 0 2px}
.opt:first-of-type{border-top:0}
.opt__rank{font-size:12px; font-weight:800; color:#fff; background:var(--green2); border-radius:6px; padding:2px 8px}
.opt__rank.honmei{background:var(--accent)}
.opt__name{font-weight:800; margin-left:6px}
.legs{list-style:none; padding:0; margin:8px 0 0; font-size:13.5px}
.legs li{position:relative; padding:3px 0 3px 18px; color:#3c454a}
.legs li::before{content:"▸"; position:absolute; left:2px; color:var(--green2)}
.opt__note,.limit{font-size:12.5px; color:var(--sub); margin-top:6px}
.limit{font-weight:700; color:var(--star)}

/* お土産・持ち物・フォールバック */
.sv{background:var(--card); border:1px solid var(--line); border-radius:14px; padding:13px 14px; margin-bottom:11px; box-shadow:var(--shadow)}
.sv__top{display:flex; gap:11px; align-items:flex-start}
.chk{flex:0 0 auto; width:30px; height:30px; border-radius:8px; border:2px solid var(--green2); background:#fff;
  font-size:18px; font-weight:900; color:#fff; display:grid; place-items:center; cursor:pointer; line-height:1}
.chk.on{background:var(--green2)}
.sv__name{font-size:15px; font-weight:800; line-height:1.4}
.sv__shop{font-size:13px; color:var(--sub); margin-top:3px}
.sv__note{font-size:12.5px; color:var(--star); margin-top:4px}
ul.list{margin:0; padding-left:20px}
ul.list li{background:var(--card); border:1px solid var(--line); border-radius:10px; padding:9px 12px; margin-bottom:8px;
  list-style:none; margin-left:-20px; padding-left:14px; font-size:14px; box-shadow:var(--shadow)}
.fb{background:var(--card); border:1px solid var(--line); border-left:4px solid var(--accent); border-radius:10px;
  padding:10px 13px; margin-bottom:9px; box-shadow:var(--shadow)}
.fb__t{font-size:14px; font-weight:800}
.fb__d{font-size:13px; color:#3c454a; margin-top:3px}

.foot{max-width:680px; margin:14px auto 0; padding:14px; color:var(--sub); font-size:12px; border-top:1px solid var(--line); line-height:1.6}
