/* Japan Trip Zero — editorial theme
   Bright paper ground, one saturated brand colour, capsule region tabs,
   photo-led cards. Type: system sans, no webfont dependency. */

:root{
  --paper:#ffffff;
  --paper-warm:#faf7f2;
  --ink:#1b1b20;
  --body:#32323a;
  --muted:#6d6d78;
  --line:#e7e2d9;
  --line-strong:#d8d2c6;
  --brand:#1d4380;
  --brand-ink:#122f5e;
  --brand-soft:#eef2fb;
  --gold:#f2b705;
  --indigo:#163a5a;
  --green:#0f8a5f;
  --radius:10px;
  --wrap:1120px;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--paper); color:var(--body);
  font:16px/1.75 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",
       Arial,"Noto Sans","PingFang SC","Hiragino Sans",sans-serif;
}
img{max-width:100%; display:block; height:auto}
a{color:var(--brand-ink); text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4{color:var(--ink); margin:0}
.wrap{max-width:var(--wrap); margin:0 auto; padding:0 20px}

/* ---------- utility bar ---------- */
.util{background:var(--paper-warm); border-bottom:1px solid var(--line); font-size:12.5px}
.util-in{display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:36px}
.util-links{display:flex; gap:18px; margin:0; padding:0; list-style:none; flex-wrap:wrap}
.util-links a{color:#54545e; padding:7px 0; display:inline-block}
.util-links a:hover{color:var(--brand)}
.util-note{color:#54545e; letter-spacing:.04em; white-space:nowrap}

/* ---------- masthead ---------- */
.masthead{background:var(--paper); border-bottom:1px solid var(--line)}
.mast-in{display:flex; align-items:center; justify-content:space-between; gap:24px;
         padding:16px 20px; flex-wrap:wrap}
.brand{display:inline-flex; align-items:center; gap:9px; font-weight:800; font-size:20px;
       letter-spacing:.06em; color:var(--brand); text-decoration:none}
.brandmark{width:23px; height:23px; flex:none; display:block; color:var(--brand)}
.brand span{color:var(--ink); font-weight:500}
.brand:hover{text-decoration:none}
.regions{display:flex; gap:8px; flex-wrap:wrap; margin:0; padding:0; list-style:none}
.chip{
  font:inherit; font-size:12.5px; line-height:1.1; padding:11px 16px; cursor:pointer;
  background:var(--paper); color:var(--ink); border:1px solid var(--brand);
  border-radius:999px; letter-spacing:.03em; transition:background .12s,color .12s;
}
.chip:hover{background:var(--brand-soft)}
.chip.is-on{background:var(--brand); color:#fff; border-color:var(--brand)}
a.chip{display:inline-block; text-decoration:none}
a.chip:hover{text-decoration:none}

/* ---------- main nav ---------- */
.mainnav{background:var(--brand); position:sticky; top:0; z-index:30;
         box-shadow:0 1px 0 rgba(0,0,0,.06)}
.mainnav-in{display:flex; align-items:stretch; justify-content:space-between; gap:20px;
            padding:0 20px; min-height:46px; flex-wrap:wrap}
.navlinks{display:flex; margin:0; padding:0; list-style:none; flex-wrap:wrap}
.navlinks a{
  display:block; color:#fff; font-size:13.5px; letter-spacing:.06em;
  padding:13px 16px; border-right:1px solid rgba(255,255,255,.22); text-decoration:none;
}
.navlinks li:first-child a{border-left:1px solid rgba(255,255,255,.22)}
.navlinks a:hover{background:rgba(0,0,0,.14); text-decoration:none}
.navlinks a.is-on{background:rgba(0,0,0,.28)}
.search{display:flex; align-items:center; padding:7px 0}
.search input{
  font:inherit; font-size:13px; width:200px; padding:8px 14px; color:var(--ink);
  background:#fff; border:1px solid #fff; border-radius:999px; outline:none;
}
.search input::placeholder{color:#7b7b86}
.search input:focus{border-color:#ffd9d1; box-shadow:0 0 0 3px rgba(255,255,255,.28)}

/* ---------- breadcrumb ---------- */
.crumbs{font-size:12px; color:var(--muted); padding:14px 0 0; letter-spacing:.04em}
.crumbs a{color:var(--muted)}
.crumbs span{margin:0 7px; color:var(--line-strong)}

/* ---------- hero ---------- */
.hero{padding:34px 0 8px}
.hero-in{display:grid; grid-template-columns:1.05fr .95fr; gap:34px; align-items:center}
.kicker{font-size:11px; letter-spacing:.2em; color:var(--brand); margin:0 0 12px; font-weight:700}
.hero h1{font-size:38px; line-height:1.22; letter-spacing:-.01em; margin:0 0 14px}
.lede{font-size:16.5px; color:var(--body); margin:0 0 22px; max-width:44ch}
.hero-art{margin:0}
.hero-art img{border-radius:var(--radius); aspect-ratio:16/10; object-fit:cover; width:100%; height:auto}
.hero-art figcaption{font-size:12px; color:#5c5c66; margin-top:8px}

.btn{
  display:inline-block; background:var(--brand); color:#fff; font-size:13px;
  letter-spacing:.08em; padding:12px 20px; border-radius:6px; text-transform:uppercase;
  font-weight:700; border:0; cursor:pointer;
}
.btn:hover{background:var(--brand-ink); text-decoration:none}
.btn.ghost{background:#fff; color:var(--brand-ink); border:1px solid var(--brand)}
.btn.ghost:hover{background:var(--brand-soft)}

/* ---------- section head ---------- */
.sec-head{
  display:flex; align-items:center; gap:12px; margin:0 0 20px;
  font-size:13px; letter-spacing:.16em; text-transform:uppercase; color:var(--brand); font-weight:700;
}
.sec-head .num{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:26px; height:26px; background:var(--brand); color:#fff;
  font-size:12px; letter-spacing:0; border-radius:5px;
}
.sec-head::after{content:""; flex:1; height:1px; background:var(--line)}
.sec-more{font-size:11.5px; letter-spacing:.1em; color:var(--brand-ink); white-space:nowrap}
.sec-more:hover{color:var(--brand)}

/* ---------- category pages ---------- */
.cathead{padding:26px 0 0}
.cathead h1{font-size:34px; line-height:1.22; letter-spacing:-.01em; margin:0 0 12px}
.cathead .lede{margin:0; max-width:56ch}
.catmeta{font-size:11.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); margin:16px 0 0}
.catblock{padding:26px 0 34px}
.catempty{margin:0; font-size:16px; color:var(--muted); max-width:56ch}
.crosslinks{display:flex; flex-wrap:wrap; gap:10px; margin:0; padding:0; list-style:none}
.crosslinks a{
  display:inline-flex; align-items:center; gap:9px; padding:11px 16px; font-size:12.5px;
  line-height:1.1; letter-spacing:.03em; border-radius:999px;
  border:1px solid var(--line-strong); color:var(--ink);
}
.crosslinks a:hover{border-color:var(--brand); background:var(--brand-soft); text-decoration:none}
.crosslinks b{font-size:11px; line-height:1.1; letter-spacing:.1em; text-transform:uppercase; color:var(--brand)}

section{padding:34px 0}
section[id]{scroll-margin-top:66px}   /* clear the sticky nav when jumping to an anchor */

/* ---------- cards ---------- */
.cards{display:grid; grid-template-columns:repeat(auto-fit,minmax(330px,1fr)); gap:26px}
.card{border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:#fff;
      display:flex; flex-direction:column}
.card.is-hidden{display:none}
/* a lone card fills the row as a wide feature instead of leaving a hole */
.card:only-child{grid-column:1/-1; flex-direction:row}
.card:only-child .card-media{flex:0 0 46%; position:relative; min-height:300px}
.card:only-child .card-media img{position:absolute; inset:0; width:100%; height:100%;
                                 object-fit:cover; aspect-ratio:auto}
.card:only-child .card-body{display:flex; flex-direction:column; justify-content:center; padding:30px 34px}
.card:only-child .card-body h3{font-size:25px}
.card-media{position:relative; display:block}
.card-media img{aspect-ratio:16/10; object-fit:cover; width:100%}
.imgsrc{margin:7px 0 0; font-size:11px; color:var(--muted); line-height:1.6}
.imgsrc a{color:var(--muted); text-decoration:underline}

/* ---------- note tags: category (solid) + region (outline) ---------- */
.tags{display:flex; flex-wrap:wrap; align-items:flex-start; gap:6px; margin:14px 0 0}
.card-body .tags{margin:0 0 12px; min-height:58px}
.tag{
  font:inherit; font-size:11px; line-height:1.1; letter-spacing:.12em; text-transform:uppercase;
  padding:7px 11px; border-radius:4px; cursor:pointer; white-space:nowrap;
  background:var(--brand); color:#fff; border:1px solid var(--brand);
  transition:background .12s,color .12s,border-color .12s;
}
.tag:hover{background:var(--brand-ink); border-color:var(--brand-ink)}
.tag-reg{background:var(--paper); color:var(--brand-ink); border-color:var(--line-strong)}
.tag-reg:hover{background:var(--brand-soft); border-color:var(--brand)}
.card-body{padding:18px 20px 20px}
.card-body h3{font-size:20px; line-height:1.35; margin:0 0 10px}
.card-body h3 a{color:var(--ink)}
.card-body h3 a:hover{color:var(--brand-ink); text-decoration:none}
.card-body p{margin:0; font-size:14.5px; color:var(--muted)}
.card-meta{font-size:11px; letter-spacing:.12em; color:var(--muted); margin-top:14px}
.card-meta b{color:var(--brand)}

/* ---------- section blocks + filters ---------- */
.block.is-gone{display:none}
.entry.is-hidden{display:none}

.empty{margin:6px 0 0; font-size:14px; color:var(--muted)}
.empty button{font:inherit; font-size:13px; background:none; border:0; color:var(--brand-ink);
              cursor:pointer; text-decoration:underline; padding:0}

/* ---------- article ---------- */
.article-head{padding:26px 0 0; max-width:860px}
.article-head h1{font-size:35px; line-height:1.24; letter-spacing:-.01em; margin:0 0 14px}
.byline{font-size:12.5px; color:var(--muted); letter-spacing:.04em; margin:0}
.byline b{color:var(--ink); font-weight:600}
.share{display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin:20px 0 0}
.share a{
  font-size:12px; padding:8px 13px; border-radius:5px; color:#fff; font-weight:700;
  letter-spacing:.05em; text-decoration:none;
}
.share a:hover{opacity:.88; text-decoration:none}
.share .fb{background:#1877f2}
.share .x{background:#111}
.share .mail{background:#5b6b85}
.share .wa{background:#25d366}

.tabs{display:flex; gap:8px; margin:26px 0 0; border-bottom:3px solid var(--brand)}
.tab{
  font:inherit; font-size:14.5px; font-weight:700; letter-spacing:.04em; cursor:pointer;
  padding:11px 22px; border:0; border-radius:6px 6px 0 0; background:var(--gold); color:var(--ink);
}
.tab[aria-selected="true"]{background:var(--brand); color:#fff}
.tabpanel[hidden]{display:none}

.post{max-width:860px; padding:26px 0 60px}
.post .figure{margin:0 0 26px}
.post .figure img{border-radius:var(--radius); width:100%}
.post .figure figcaption{font-size:11.5px; color:var(--muted); margin-top:8px; line-height:1.6}
.post p{margin:0 0 18px; font-size:16.5px; line-height:1.85}
.post .standfirst{font-size:18px; color:var(--ink); line-height:1.8}
.post h2{
  display:flex; gap:12px; align-items:flex-start;
  font-size:24px; line-height:1.4; margin:44px 0 16px; padding-bottom:10px;
  border-bottom:2px solid var(--brand-soft);
}
.post h2 .n{
  flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center;
  width:30px; height:30px; margin-top:3px; background:var(--brand); color:#fff;
  border-radius:6px; font-size:14px; letter-spacing:0;
}
.post h3{font-size:17.5px; margin:30px 0 10px}
.post ul{padding-left:0; margin:0 0 20px; list-style:none}
.post ul li{position:relative; padding-left:22px; margin-bottom:12px; font-size:16.5px; line-height:1.8}
.post ul li::before{content:""; position:absolute; left:4px; top:.72em; width:7px; height:7px;
                    background:var(--brand); border-radius:2px}
.post strong{color:var(--ink)}
.post code{font-size:14px; background:var(--paper-warm); border:1px solid var(--line);
           padding:1px 5px; border-radius:4px}

table{width:100%; border-collapse:collapse; margin:24px 0; font-size:14.5px; display:block; overflow-x:auto}
th,td{border:1px solid var(--line); padding:11px 13px; text-align:left; vertical-align:top}
thead th{background:var(--brand); color:#fff; font-weight:700; font-size:13.5px; letter-spacing:.03em;
         border-color:var(--brand)}
tbody th{background:var(--paper-warm); font-weight:600; color:var(--ink)}
tbody tr:nth-child(even) td{background:#fcfbf9}

.callout{
  background:#fff8e6; border:1px solid #f0dca6; border-left:5px solid var(--gold);
  border-radius:8px; padding:16px 18px; margin:26px 0; font-size:15.5px; line-height:1.8;
}
/* label only: the first child. Any other <b> stays inline, so a shop name inside a callout
   cannot turn into a gold block (2026-10-11: five of them did on the Dotonbori guide). */
.callout > b:first-child{display:block; margin-bottom:4px; color:#8a5a00; letter-spacing:.06em;
           font-size:12px; text-transform:uppercase}
.callout.note{background:var(--brand-soft); border-color:#c9d4ea; border-left-color:var(--brand)}
.callout.note > b:first-child{color:var(--brand-ink)}

.readnext{background:var(--paper-warm); border:1px solid var(--line); border-radius:var(--radius);
          padding:20px 22px; margin:34px 0}
.readnext h3{font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--brand); margin:0 0 12px}
.readnext ul{list-style:none; margin:0; padding:0}
.readnext li{margin:0 0 10px; padding-left:20px; position:relative; font-size:15px}
.readnext li:last-child{margin-bottom:0}
.readnext li::before{content:"\25B8"; position:absolute; left:2px; color:var(--brand-ink)}
.readnext .soon{color:var(--muted)}

.sources{font-size:13.5px; color:var(--muted); border-top:1px solid var(--line); padding-top:18px; margin-top:34px}
.sources h3{font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink); margin:0 0 10px}
.sources ul{list-style:none; margin:0; padding:0}
.sources li{margin-bottom:7px; padding-left:0}
.sources li::before{content:none}

/* ---------- faq ---------- */
.faq-list{max-width:860px; margin:0; padding:0}
details.faq{border:1px solid var(--line); border-radius:8px; margin-bottom:10px; background:#fff}
details.faq[open]{border-color:var(--brand); background:#fffdfc}
details.faq summary{
  cursor:pointer; list-style:none; padding:15px 46px 15px 18px; position:relative;
  font-size:16px; font-weight:600; color:var(--ink);
}
details.faq summary::-webkit-details-marker{display:none}
details.faq summary::after{
  content:"+"; position:absolute; right:16px; top:13px; font-size:20px; color:var(--brand); font-weight:400;
}
details.faq[open] summary::after{content:"\2013"}
details.faq .faq-a{padding:0 18px 18px; font-size:15.5px; color:var(--body); line-height:1.8}
details.faq .faq-a p{margin:0 0 12px}
details.faq .faq-a p:last-child{margin:0}

/* ---------- about / footer ---------- */
footer{background:#171719; color:#b9b9c2; padding:36px 0; font-size:13px}
footer .wrap{display:grid; grid-template-columns:1fr; gap:22px}
footer .wrap>div{max-width:64ch}
footer h3{color:#fff; font-size:12px; letter-spacing:.16em; text-transform:uppercase; margin:0 0 12px}
footer a{color:#e7e7ee}
footer p{margin:0 0 10px; line-height:1.75}
.legal{margin:0; font-size:12px; letter-spacing:.04em; color:#8f8f9a}
footer .legal a{color:#dedee6}
.post-updated{margin:34px 0 0; padding-top:16px; border-top:1px solid var(--line);
               font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted)}
footer .fine{grid-column:1/-1; border-top:1px solid #2c2c33; padding-top:16px; color:#7b7b86;
             font-size:11px; line-height:1.7}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .hero-in{grid-template-columns:1fr; gap:24px}
  .hero h1{font-size:31px}
  .cards{grid-template-columns:1fr}
  .card:only-child{flex-direction:column}
  .card:only-child .card-media img{aspect-ratio:16/10; height:auto; min-height:0}
  .card:only-child .card-body{padding:18px 20px 20px}
  .card:only-child .card-body h3{font-size:20px}
  .post h2{font-size:21px}
  .article-head h1{font-size:28px}
  .cathead h1{font-size:28px}
  footer .wrap{grid-template-columns:1fr}
}
@media (max-width:620px){
  .navlinks a{padding:12px 12px; font-size:13px}
  .search{width:100%}
  .search input{width:100%}
  .post p, .post ul li{font-size:16px}
  .util-note{display:none}
}

/* ---------- itinerary summary strip ---------- */
.keystrip{display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:1px;
          background:var(--line); border:1px solid var(--line); border-radius:8px;
          margin:26px 0; overflow:hidden}
.keystrip>div{background:#fff; padding:14px 16px}
.keystrip dt{font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin:0 0 6px}
.keystrip dd{margin:0; font-size:19px; font-weight:700; color:var(--ink); line-height:1.3}
.keystrip dd small{display:block; font-size:12.5px; font-weight:400; color:var(--muted); margin-top:3px}

/* ---------- itinerary: one card per day ---------- */
.days{list-style:none; margin:26px 0; padding:0}
.day{border:1px solid var(--line); border-left:4px solid var(--brand); border-radius:8px;
     padding:18px 20px 16px; margin:0 0 16px; background:#fff}
.day-head{display:flex; align-items:baseline; gap:10px; flex-wrap:wrap}
.day-n{font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--brand); font-weight:700}
.day-head h3{flex:1 1 240px; font-size:19px; margin:0}
.day-cost{font-size:12px; color:var(--ink); background:var(--brand-soft);
          border:1px solid #c9d4ea; border-radius:999px; padding:5px 11px; white-space:nowrap}
.day-rows{margin:14px 0 0; padding:0}
.day-row{display:grid; grid-template-columns:92px 1fr; gap:14px; padding:9px 0;
         border-top:1px solid var(--line); margin:0}
.day-row:first-child{border-top:0}
.day-row dt{font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); padding-top:3px}
.day-row dd{margin:0; font-size:16px; line-height:1.75}
.day-trap{margin:14px 0 0; font-size:14.5px; color:var(--body); background:var(--paper-warm);
          border:1px solid var(--line); border-radius:6px; padding:10px 12px; line-height:1.75}
.day-trap b{color:var(--brand-ink); letter-spacing:.06em; text-transform:uppercase; font-size:11px; margin-right:6px}

/* ---------- ranked list (top 10) ---------- */
.ranked{list-style:none; margin:26px 0; padding:0}
.rk{display:grid; grid-template-columns:46px 1fr; gap:16px; padding:18px 0;
    border-top:1px solid var(--line); margin:0}
.rk:first-child{border-top:0}
.rk-n{font-size:22px; font-weight:800; color:var(--brand); line-height:1.25}
.rk-body h3{font-size:19px; margin:0 0 6px}
.rk-area{font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted);
         font-weight:600; margin-left:8px; white-space:nowrap}
.rk-why{margin:0 0 10px; font-size:16px; color:var(--body); line-height:1.8}
.rk-facts{list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:8px 20px}
.rk-facts li{font-size:14px; color:var(--muted); margin:0; padding:0}
.rk-facts li::before{content:none}
.rk-facts b{color:var(--ink); font-weight:600}

@media (max-width:620px){
  .rk{grid-template-columns:34px 1fr; gap:10px}
  .rk-n{font-size:19px}
  .day-row{grid-template-columns:1fr; gap:2px}
  .day-row dt{padding-top:0}
}

/* ---------- bookable ticket links (affiliate) ---------- */
a.book{display:inline-flex; align-items:center; gap:6px; font-size:13px; font-weight:600;
       letter-spacing:.02em; padding:5px 12px; margin:2px 6px 2px 0; border:1px solid var(--brand);
       border-radius:999px; color:var(--brand-ink); background:var(--brand-soft); text-decoration:none}
a.book:hover{background:var(--brand); color:#fff; text-decoration:none}
a.book::after{content:"\2197"; font-size:12px}
.aff-note{font-size:12.5px; color:var(--muted); line-height:1.7; margin:10px 0 0}
.day-row dd a.book{margin-top:6px}
