/* busco / ばす子 — やさしいレトロ案内所テーマ */
:root{
  --paper:#fbf5e9; --paper2:#f4ead3; --card:#fffdf8;
  --navy:#143a63; --navy2:#102c4c; --navy-deep:#0b1f37;
  --red:#e23b3b; --red-deep:#c22b2b; --gold:#edb94a;
  --ink:#22303f; --muted:#8a8472; --line:#e7dcc2; --own:#1f8f5b;
  --shadow:0 6px 20px rgba(20,58,99,.10);
  --disp:"Zen Maru Gothic","Hiragino Maru Gothic ProN",sans-serif;
  --body:"Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;color:var(--ink);font-family:var(--body);line-height:1.7;
  background-color:var(--paper);
  background-image:radial-gradient(var(--paper2) 1.4px, transparent 1.4px);
  background-size:18px 18px;
}
a{color:var(--navy);text-decoration:none}
.wrap{max-width:980px;margin:0 auto;padding:0 18px}
h1,h2,.brand-mark,.route-od,.price,.btn{font-family:var(--disp)}

/* header */
.site-header{background:var(--navy);color:#fff;border-bottom:4px solid var(--red);position:sticky;top:0;z-index:20}
.header-inner{display:flex;align-items:center;justify-content:space-between;height:64px}
.brand{display:flex;align-items:center;gap:10px;color:#fff}
.brand img{height:40px;width:auto;display:block}
.brand-mark{font-size:24px;font-weight:900;letter-spacing:.02em}
.brand-sub{font-size:11px;color:#b9cce4;font-weight:500}
.nav a{color:#dbe7f6;font-weight:700;font-size:14px;padding:6px 10px;border-radius:8px}
.nav a:hover{background:rgba(255,255,255,.12)}

/* hero */
.hero{
  position:relative;overflow:hidden;margin:26px 0;border-radius:22px;
  background:linear-gradient(135deg,var(--navy2),var(--navy));
  color:#fff;padding:34px 30px;box-shadow:var(--shadow);
  border:3px solid var(--navy-deep);
}
.hero::before{content:"";position:absolute;inset:0;
  background-image:repeating-linear-gradient(90deg,transparent 0 26px,rgba(255,255,255,.05) 26px 30px);
  opacity:.5;pointer-events:none}
.hero-inner{position:relative;display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap}
.hero-copy{flex:1 1 320px;min-width:260px}
.bubble{
  position:relative;display:inline-block;background:#fff;color:var(--navy2);
  font-family:var(--disp);font-weight:700;font-size:15px;
  padding:10px 16px;border-radius:16px;margin-bottom:14px;box-shadow:0 3px 0 rgba(0,0,0,.12)}
.bubble::after{content:"";position:absolute;left:30px;bottom:-9px;border:9px solid transparent;border-top-color:#fff;border-bottom:0}
.hero h1{margin:.1em 0 .3em;font-size:30px;font-weight:900;line-height:1.25}
.hero h1 .hl{color:var(--gold)}
.hero p{margin:0;color:#cfe0f5;font-size:14px}
.hero-mascot{flex:0 0 auto;align-self:flex-end}
.hero-mascot img{height:180px;width:auto;display:block;filter:drop-shadow(0 8px 10px rgba(0,0,0,.25))}

/* search */
.search-box{display:flex;gap:10px;margin:16px 0 0;flex-wrap:wrap;background:#fff;padding:10px;border-radius:14px}
.search-box input{flex:1 1 140px;padding:12px 14px;border:2px solid var(--line);border-radius:10px;font-size:15px;font-family:var(--body)}
.search-box input:focus{outline:none;border-color:var(--navy)}

/* section title with route-dash motif */
.section-title{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:900;color:var(--navy2);margin:34px 0 14px}
.section-title::before{content:"●";color:var(--red);font-size:12px}
.section-title::after{content:"";flex:1;height:0;border-top:3px dashed var(--line)}

/* route ticket cards */
.route-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.route-card{
  position:relative;display:block;background:var(--card);border:2px solid var(--line);
  border-radius:14px;padding:18px 18px 16px 26px;box-shadow:var(--shadow);
  transition:transform .14s, border-color .14s;color:var(--ink);overflow:hidden}
.route-card::before{/* 切符のミシン目 */
  content:"";position:absolute;left:12px;top:8px;bottom:8px;width:0;
  border-left:2px dashed var(--line)}
.route-card:hover{transform:translateY(-3px);border-color:var(--navy)}
.route-card-main{display:flex;align-items:center;justify-content:space-between;gap:8px}
.route-od{display:flex;align-items:center;gap:8px;font-size:19px;font-weight:900;color:var(--navy2)}
.route-od .dot{width:9px;height:9px;border-radius:50%;background:var(--red);flex:0 0 auto}
.route-od .seg{flex:1;min-width:18px;border-top:2px dotted var(--navy);opacity:.5}
.route-card-meta{display:flex;justify-content:space-between;align-items:center;margin-top:12px;font-size:13px;color:var(--muted)}
.route-card-meta .price{color:var(--red-deep);font-weight:900;font-size:16px}
.own-badge{background:var(--red);color:#fff;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;font-family:var(--body)}

/* breadcrumbs + detail */
.crumbs{font-size:13px;color:var(--muted);margin:18px 0 6px}
.route-detail h1{font-size:25px;font-weight:900;color:var(--navy2);margin:6px 0 10px}
.detail-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:14px;color:var(--muted);margin-bottom:14px}
.detail-meta b{color:var(--red-deep)}
.lead-row{display:flex;gap:14px;align-items:flex-start;background:var(--card);border:2px solid var(--line);border-radius:16px;padding:16px 18px;box-shadow:var(--shadow)}
.lead-row .mini-mascot{flex:0 0 auto;height:74px;width:auto}
.lead{margin:0;color:#3a4658}

/* provider list */
.prov-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}
.prov{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:var(--card);border:2px solid var(--line);border-radius:14px;padding:15px 18px;box-shadow:var(--shadow)}
.prov-own{border-color:var(--red)}
.prov-own::before{content:"ばす子のおすすめ";position:absolute;top:-11px;left:14px;background:var(--red);color:#fff;
  font-family:var(--disp);font-weight:700;font-size:11px;padding:2px 10px;border-radius:999px}
.prov-name{font-weight:900;font-size:17px;color:var(--navy2);font-family:var(--disp)}
.prov-tags{margin-top:5px}
.tag{display:inline-block;background:var(--paper2);color:#6b6450;font-size:11px;padding:3px 9px;border-radius:7px;margin:2px 5px 0 0}
.prov-note{display:block;font-size:12px;color:var(--muted);margin-top:5px}
.prov-action{text-align:right;white-space:nowrap}
.prov-price{display:block;color:var(--red-deep);font-weight:900;font-size:17px;margin-bottom:7px;font-family:var(--disp)}
.btn{display:inline-block;background:var(--red);color:#fff;font-weight:700;font-size:14px;padding:10px 18px;border-radius:10px;
  box-shadow:0 3px 0 var(--red-deep);transition:transform .1s}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(1px);box-shadow:0 1px 0 var(--red-deep)}

.note-small{font-size:12px;color:var(--muted);margin-top:16px}

/* articles / column */
.art-title{font-size:17px;font-weight:900;color:var(--navy2);line-height:1.4}
.route-detail h2.section-title{margin-top:30px}
.route-detail p{margin:.6em 0}
.info-table{width:100%;border-collapse:collapse;background:var(--card);border:2px solid var(--line);border-radius:12px;overflow:hidden;margin:8px 0}
.info-table th,.info-table td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:top}
.info-table th{width:120px;background:var(--paper2);color:var(--navy2);font-weight:700;white-space:nowrap}
.info-table tr:last-child th,.info-table tr:last-child td{border-bottom:0}

/* footer with ばす子 */
.site-footer{background:var(--navy-deep);color:#9fb3cc;margin-top:54px;padding:26px 0;font-size:13px;border-top:4px solid var(--red)}
.disclosure{color:#8fa3bd;font-size:12px;line-height:1.7;max-width:760px}
.foot-nav{display:flex;gap:18px;margin:12px 0}
.foot-nav a{color:#cfe0f5;font-weight:700}
.copy{color:#5d738f}

@media(max-width:600px){
  .hero{padding:24px 20px}
  .hero h1{font-size:23px}
  .hero-mascot img{height:128px}
  .prov{flex-direction:column;align-items:stretch}
  .prov-action{text-align:left}
  .btn{display:block;text-align:center}
}
