/* 旅じたく舎 — パスポートの紺 × 白 × スタンプの赤。搭乗券の横長カード、行き先表示の等幅数字 */
:root{
  --navy:#1d2b4f; --navy-d:#131d38; --navy-l:#2c3d68;
  --paper:#f6f4ee; --white:#fff; --ink:#1a1e2b; --muted:#646a7c; --line:#d8d4c8;
  --red:#c7352b; --red-d:#a42820; --board:#0f1730; --amber:#f2c14e;
  --mono:"Space Mono",ui-monospace,Menlo,monospace;
  --sans:"Zen Kaku Gothic New",system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{font-family:var(--sans);color:var(--ink);background:var(--paper);line-height:1.75;font-size:15px;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;cursor:pointer}
.wrap{max-width:1160px;margin:0 auto;padding:0 20px}
.mono{font-family:var(--mono)}

/* ヘッダー */
.ribbon{background:var(--red);color:#fff;font-size:12px;text-align:center;padding:5px 12px;letter-spacing:.04em}
header.site{background:var(--navy);color:#fff;position:sticky;top:0;z-index:50;box-shadow:0 2px 0 var(--navy-d)}
header.site .wrap{display:flex;align-items:center;gap:20px;min-height:66px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:#fff}
.logo svg{width:38px;height:38px;flex:none}
.logo b{display:block;font-size:19px;letter-spacing:.12em;line-height:1.2}
.logo small{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.28em;opacity:.7}
.gnav{display:flex;gap:22px;margin-left:auto;font-size:13.5px}
.gnav a{text-decoration:none;opacity:.88}
.gnav a:hover{opacity:1;text-decoration:underline;text-underline-offset:4px}
.list-link{position:relative;display:flex;align-items:center;gap:8px;text-decoration:none;background:#fff;color:var(--navy);
  font-weight:700;font-size:13px;padding:8px 14px 8px 16px;border-radius:4px;white-space:nowrap}
.list-link::before,.list-link::after{content:"";position:absolute;left:-6px;width:12px;height:12px;border-radius:50%;background:var(--navy);top:50%;transform:translateY(-50%)}
.list-link::after{left:auto;right:-6px}
.list-link .n{font-family:var(--mono);background:var(--red);color:#fff;border-radius:3px;min-width:24px;text-align:center;padding:0 5px;font-size:12px}

/* ヒーロー */
.hero{background:var(--navy);color:#fff;position:relative;overflow:hidden;padding:56px 0 70px}
.hero::after{content:"";position:absolute;inset:auto 0 0 0;height:14px;background:repeating-linear-gradient(90deg,var(--paper) 0 10px,transparent 10px 20px)}
.hero .wrap{display:grid;grid-template-columns:1.05fr 1fr;gap:48px;align-items:center}
.hero .kicker{font-family:var(--mono);font-size:12px;letter-spacing:.3em;color:var(--amber)}
.hero h1{font-size:clamp(30px,4.6vw,50px);line-height:1.35;margin:14px 0 18px;letter-spacing:.04em}
.hero h1 em{font-style:normal;color:#fff;background:linear-gradient(transparent 62%,var(--red) 62%)}
.hero p{max-width:30em;opacity:.9}
.hero .go{display:inline-flex;align-items:center;gap:10px;margin-top:26px;background:var(--red);color:#fff;text-decoration:none;font-weight:700;padding:13px 26px;border-radius:3px}
.hero .go span{font-family:var(--mono)}
.pass{background:#fff;color:var(--ink);border-radius:12px;display:grid;grid-template-columns:1fr 112px;position:relative;box-shadow:0 18px 40px rgba(0,0,0,.35);transform:rotate(-2deg)}
.pass .main{padding:18px 20px}
.pass .bar{font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--navy);display:flex;justify-content:space-between;border-bottom:1.5px solid var(--navy);padding-bottom:6px}
.pass .route{display:flex;align-items:center;gap:12px;margin:14px 0 10px;font-family:var(--mono);font-size:30px;font-weight:700;color:var(--navy)}
.pass .route small{display:block;font-size:10px;font-weight:400;letter-spacing:.1em;color:var(--muted)}
.pass .route svg{width:34px;flex:none}
.pass .ph{aspect-ratio:16/9;border-radius:6px;overflow:hidden}
.pass .ph img{width:100%;height:100%;object-fit:cover}
.pass .stub{border-left:2px dashed var(--line);padding:18px 12px;font-family:var(--mono);font-size:10px;color:var(--muted);display:flex;flex-direction:column;gap:10px}
.pass .stub b{display:block;font-size:17px;color:var(--navy)}
.pass::before,.pass::after{content:"";position:absolute;right:104px;width:16px;height:16px;border-radius:50%;background:var(--navy)}
.pass::before{top:-8px}.pass::after{bottom:-8px}
.pass .barcode{margin-top:auto;height:44px;background:repeating-linear-gradient(90deg,var(--ink) 0 2px,transparent 2px 4px,var(--ink) 4px 5px,transparent 5px 8px)}
.stamp{position:absolute;left:-16px;bottom:-40px;width:118px;height:118px;border-radius:50%;border:3px solid var(--red);color:var(--red);
  display:flex;align-items:center;justify-content:center;text-align:center;font-weight:700;font-size:13px;line-height:1.35;transform:rotate(14deg);background:rgba(255,255,255,.88)}
.stamp::before{content:"";position:absolute;inset:5px;border:1px solid var(--red);border-radius:50%}

/* セクション見出し */
.sec{padding:64px 0}
.shead{display:flex;align-items:baseline;gap:14px;margin-bottom:26px;flex-wrap:wrap}
.shead h2{font-size:24px;letter-spacing:.08em}
.shead .code{font-family:var(--mono);font-size:12px;color:var(--red);letter-spacing:.2em}
.shead .rule{flex:1;min-width:40px;border-top:2px dotted var(--line);align-self:center}

/* 出発案内板（絞り込み） */
.board{background:var(--board);border-radius:8px;padding:14px 14px 10px;color:#e8ebf3;margin-bottom:34px;box-shadow:inset 0 0 0 1px #233158}
.board .hd,.board button{display:grid;grid-template-columns:70px 1fr 80px 120px;align-items:center;gap:10px;width:100%;text-align:left}
.board .hd{font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;color:#8f9ab8;padding:0 10px 8px;border-bottom:1px solid #26345c}
.board button{background:none;border:0;color:inherit;padding:9px 10px;border-bottom:1px solid #1d2a4d}
.board button:last-child{border-bottom:0}
.board button:hover{background:#18244a}
.board .g{font-family:var(--mono);font-weight:700;color:var(--amber);font-size:15px}
.board .d{font-weight:700;letter-spacing:.06em}
.board .c{font-family:var(--mono);font-size:14px}
.board .s{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:#8f9ab8}
.board button.on{background:#202f5c}
.board button.on .s{color:#fff;background:var(--red);border-radius:2px;padding:2px 6px;justify-self:start}

/* 搭乗券カード */
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}
.bp{display:grid;grid-template-columns:150px 1fr;background:#fff;border-radius:10px;text-decoration:none;color:inherit;position:relative;
  box-shadow:0 1px 0 var(--line),0 6px 18px rgba(29,43,79,.07);transition:transform .15s,box-shadow .15s;min-height:150px}
.bp:hover{transform:translateY(-2px);box-shadow:0 1px 0 var(--line),0 12px 26px rgba(29,43,79,.14)}
.bp .ph{border-radius:10px 0 0 10px;overflow:hidden;background:#e9e6dd}
.bp .ph img{width:100%;height:100%;object-fit:cover;aspect-ratio:1}
.bp .info{border-left:2px dashed var(--line);padding:12px 16px 12px 18px;display:flex;flex-direction:column;gap:4px;min-width:0}
.bp::before,.bp::after{content:"";position:absolute;left:142px;width:16px;height:16px;border-radius:50%;background:var(--paper)}
.bp::before{top:-8px}.bp::after{bottom:-8px}
.bp .top{display:flex;justify-content:space-between;gap:8px;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:var(--muted)}
.bp .top b{color:var(--navy)}
.bp .nm{font-weight:700;font-size:15px;line-height:1.5}
.bp .sh{font-size:12px;color:var(--muted)}
.bp .pr{margin-top:auto;font-family:var(--mono);font-weight:700;font-size:20px;color:var(--navy);display:flex;align-items:baseline;gap:4px}
.bp .pr small{font-family:var(--sans);font-size:11px;font-weight:400;color:var(--muted)}

/* お店のお約束（入国スタンプ） */
.promise{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.stamps{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.stamps .st{padding:22px 22px 20px;border:2.5px solid var(--red);border-radius:12px;position:relative;color:var(--ink)}
.stamps .st:nth-child(1){transform:rotate(-1.2deg)}
.stamps .st:nth-child(2){transform:rotate(.8deg);border-radius:50px 12px}
.stamps .st:nth-child(3){transform:rotate(-.6deg);border-style:double;border-width:5px}
.stamps .st .lb{font-family:var(--mono);font-size:11px;letter-spacing:.24em;color:var(--red)}
.stamps .st h3{font-size:18px;margin:6px 0 8px;color:var(--red-d)}
.stamps .st p{font-size:14px}

/* フッター */
footer.site{background:var(--navy-d);color:#cfd5e6;padding:44px 0 26px;font-size:13.5px;margin-top:0}
footer.site .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:30px}
footer.site b{color:#fff;font-size:16px;letter-spacing:.1em}
footer.site h4{font-family:var(--mono);font-size:11px;letter-spacing:.24em;color:var(--amber);margin-bottom:10px;font-weight:400}
footer.site ul{list-style:none}
footer.site li{margin-bottom:6px}
footer.site a{text-decoration:none}
footer.site a:hover{text-decoration:underline}
footer.site .copy{border-top:1px dashed #33406a;margin-top:28px;padding-top:16px;font-family:var(--mono);font-size:11px;opacity:.7}

/* ボタン */
.btn{display:inline-block;background:var(--red);color:#fff;border:0;border-radius:3px;padding:13px 24px;font-weight:700;text-decoration:none;text-align:center}
.btn:hover{background:var(--red-d)}
.btn.line{background:#fff;color:var(--navy);border:1.5px solid var(--navy)}
.btn.block{display:block;width:100%}

/* 商品ページ */
.crumb{font-size:12px;color:var(--muted);padding:20px 0 14px}
.crumb a{text-decoration:none}
.pd{display:grid;grid-template-columns:1.05fr 1fr;gap:44px;padding-bottom:56px}
.main-img{background:#fff;border-radius:12px;padding:10px;border:1px solid var(--line)}
.main-img img{width:100%;aspect-ratio:1;object-fit:contain;border-radius:8px;background:#fff}
.cap{font-size:12px;color:var(--muted);margin-top:8px}
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px;margin-top:12px}
.thumbs button{border:2px solid transparent;border-radius:6px;padding:0;background:#fff;overflow:hidden}
.thumbs button.on{border-color:var(--red)}
.thumbs img{width:100%;aspect-ratio:1;object-fit:cover}
.ticket{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 0 var(--line),0 8px 24px rgba(29,43,79,.08)}
.ticket .head{background:var(--navy);color:#fff;display:flex;justify-content:space-between;padding:10px 20px;font-family:var(--mono);font-size:12px;letter-spacing:.18em}
.ticket .head b{color:var(--amber)}
.ticket .body{padding:20px 22px 22px}
.ticket h1{font-size:23px;line-height:1.5;letter-spacing:.03em}
.ticket .sh{font-size:13px;color:var(--muted);margin-top:4px}
.price{font-family:var(--mono);font-size:32px;font-weight:700;color:var(--navy);margin:14px 0 4px;border-top:2px dashed var(--line);padding-top:12px}
.price small{font-family:var(--sans);font-size:13px;font-weight:400;color:var(--muted)}
.desc{white-space:pre-line;margin:12px 0 18px}
.opt{margin-bottom:14px}
.opt .t{font-size:13px;font-weight:700;margin-bottom:6px}
.opt .t span{font-weight:400;color:var(--muted)}
.vals{display:flex;flex-wrap:wrap;gap:6px}
.vals button{border:1.5px solid var(--line);background:#fff;border-radius:3px;padding:6px 11px;font-size:13px}
.vals button.on{border-color:var(--navy);background:var(--navy);color:#fff}
.buy{display:flex;gap:10px;margin-top:18px}
.buy .btn{flex:1}
.qty{display:flex;border:1.5px solid var(--navy);border-radius:3px;overflow:hidden;flex:none}
.qty button{width:38px;background:#fff;border:0;font-size:17px;color:var(--navy)}
.qty input{width:40px;border:0;text-align:center;font-family:var(--mono);font-size:15px;background:#fff}
.msg{color:var(--red);font-size:13px;min-height:1.4em;margin-top:6px}
.ship{list-style:none;font-size:13px;background:var(--paper);border-radius:8px;padding:12px 14px;margin-top:10px}
.ship li{padding-left:18px;position:relative;margin:3px 0}
.ship li::before{content:"✈";position:absolute;left:0;color:var(--navy);font-size:11px;top:2px}
.spec{margin-top:24px}
.spec h3,.related h2{font-size:15px;letter-spacing:.1em;margin-bottom:8px}
.spec dl{display:grid;grid-template-columns:7.5em 1fr;border-top:1.5px solid var(--navy)}
.spec dt,.spec dd{padding:9px 6px;border-bottom:1px solid var(--line);font-size:13.5px}
.spec dt{color:var(--muted);font-weight:700}
.note{font-size:12.5px;color:var(--muted);margin-top:14px}
.note p+p{margin-top:6px}
.note .warn{color:var(--ink);background:#fbefe9;border-left:3px solid var(--red);padding:8px 10px;border-radius:0 4px 4px 0}
.related{padding:20px 0 64px}

/* 旅じたくリスト */
.ptitle{background:var(--navy);color:#fff;padding:34px 0 30px;text-align:center}
.ptitle h1{font-size:24px;letter-spacing:.12em}
.ptitle p{font-family:var(--mono);font-size:11px;letter-spacing:.3em;color:var(--amber);margin-top:4px}
.cart{display:grid;grid-template-columns:1fr 330px;gap:30px;padding:36px 0 64px;align-items:start}
.cart .row{display:grid;grid-template-columns:88px 1fr auto;gap:14px;background:#fff;border-radius:8px;padding:12px;margin-bottom:12px;border-left:5px solid var(--navy)}
.cart .row img{width:88px;height:88px;object-fit:cover;border-radius:6px}
.cart .nm{font-weight:700;text-decoration:none}
.cart .op{font-size:12.5px;color:var(--muted)}
.cart .qty{margin-top:6px;display:inline-flex}
.cart .qty button{width:30px}
.cart .qty input{width:34px}
.cart .rm{background:none;border:0;color:var(--red);font-size:12px;text-decoration:underline;margin-top:4px}
.cart .sub{font-family:var(--mono);font-weight:700;color:var(--navy)}
.sum{background:#fff;border-radius:10px;padding:20px;border-top:6px solid var(--red);position:sticky;top:90px}
.sum dl{display:grid;grid-template-columns:1fr auto;gap:6px 10px;font-size:14px}
.sum dd{font-family:var(--mono);text-align:right}
.sum .total{font-weight:700;font-size:17px;border-top:2px dashed var(--line);padding-top:10px;margin-top:4px}
.sum .free{font-size:12px;color:var(--muted);margin:12px 0}
.empty{text-align:center;padding:60px 0}
.empty p{margin-bottom:18px}
.modal{position:fixed;inset:0;background:rgba(15,23,48,.6);display:none;align-items:center;justify-content:center;padding:16px;z-index:100}
.modal.show{display:flex}
.modal .box{background:#fff;border-radius:12px;padding:26px;max-width:440px;width:100%}
.modal h3{font-size:18px;margin-bottom:10px;color:var(--navy)}
.modal p{font-size:14px;margin-bottom:18px}

/* 法務ページ */
.legal{max-width:860px;margin:0 auto;padding:40px 20px 70px}
.legal .lead{background:#fff;border-radius:8px;padding:16px 18px;font-size:14px;margin-bottom:24px;border-left:5px solid var(--red)}
.legal .tbl{background:#fff;border-radius:10px;overflow:hidden}
.legal .tbl div{display:grid;grid-template-columns:12em 1fr;border-bottom:1px solid var(--line)}
.legal .tbl dt{background:#eef0f6;padding:14px 16px;font-weight:700;font-size:13.5px;color:var(--navy)}
.legal .tbl dd{padding:14px 16px;font-size:14px}
.legal h2{font-size:16px;margin:28px 0 8px;color:var(--navy);padding-left:10px;border-left:4px solid var(--red)}
.legal p,.legal li{font-size:14.5px}
.legal ul{padding-left:1.4em}

.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,40px);background:var(--navy);color:#fff;padding:12px 20px;border-radius:4px;opacity:0;transition:.25s;z-index:120;font-size:14px;max-width:calc(100% - 32px)}
.toast.show{opacity:1;transform:translate(-50%,0)}

@media (max-width:900px){
  .hero .wrap{grid-template-columns:1fr;gap:40px}
  .pass{max-width:520px;transform:rotate(-1deg)}
  .grid{grid-template-columns:1fr}
  .pd{grid-template-columns:1fr;gap:26px}
  .cart{grid-template-columns:1fr}
  .sum{position:static}
  .stamps{grid-template-columns:1fr;gap:20px}
  footer.site .cols{grid-template-columns:1fr}
  .gnav{display:none}
  .list-link{margin-left:auto}
}
@media (max-width:560px){
  .wrap{padding:0 16px}
  header.site .wrap{min-height:58px;gap:10px}
  .logo svg{width:32px;height:32px}
  .logo b{font-size:16px}
  .list-link{font-size:12px;padding:7px 10px 7px 12px}
  .hero{padding:38px 0 56px}
  .pass{grid-template-columns:1fr 78px}
  .pass::before,.pass::after{right:70px}
  .pass .route{font-size:22px}
  .pass .stub{padding:14px 8px}
  .stamp{width:92px;height:92px;font-size:11px;left:-6px;bottom:-34px}
  .board .hd,.board button{grid-template-columns:44px 1fr 40px;gap:8px}
  .board .hd span:last-child,.board button .s{display:none}
  .board button.on{box-shadow:inset 4px 0 0 var(--red)}
  .bp{grid-template-columns:112px 1fr}
  .bp::before,.bp::after{left:104px}
  .bp .nm{font-size:14px}
  .bp .pr{font-size:18px}
  .cart .row{grid-template-columns:70px 1fr;}
  .cart .row img{width:70px;height:70px}
  .cart .sub{grid-column:2}
  .legal .tbl div{grid-template-columns:1fr}
  .legal .tbl dt{padding:10px 14px}
  .spec dl{grid-template-columns:6em 1fr}
}

:root{--review-accent:var(--navy);--review-line:var(--line);--review-ink:var(--ink);--review-paper:var(--paper)}
/* Purchase reviews inherit each shop's type, colors and buttons. */
.reviews-section{margin-block:48px;padding-block:24px;max-width:100%}
.reviews-section[hidden],.rv[hidden],.rv-sheet[hidden]{display:none!important}
.reviews-section h2{font-size:1.35rem;margin-bottom:20px}
.rv-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:20px}
.stars{white-space:nowrap;letter-spacing:.08em;opacity:.8}.stars .on{color:var(--review-accent);opacity:1}
.rv-avg{font-size:1.5rem;font-weight:bold}.rv-count,.rv-meta{font-size:.85rem;opacity:.75}
.rv-list{list-style:none;padding:0;margin:0}.rv{padding:22px 0;border-top:1px solid var(--review-line)}
.rv-head{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.rv-badge{font-size:.7rem;border:1px solid currentColor;padding:2px 6px;border-radius:3px;opacity:.8}
.rv h4{margin:12px 0 8px;font-size:1rem}.rv p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.9;margin:8px 0}
.rv-meta,.rv-item{margin-top:8px}.rv-item{font-size:.85rem;overflow-wrap:anywhere}
.rv-more{margin-top:20px;cursor:pointer;font:inherit}.product-review-rating{display:inline-flex;gap:10px;align-items:center;margin:10px 0;font-size:.9rem}
.card-w{min-width:0;display:flex;flex-direction:column}.card-w>a{flex:1}.card-rv{background:transparent;color:inherit;border:1px solid var(--review-line);padding:10px 6px;font:inherit;font-size:.8rem;cursor:pointer;display:flex;gap:7px;justify-content:center;align-items:center;flex-wrap:wrap;width:100%}
.rv-sheet{position:fixed;inset:0;z-index:10000;background:#0008;display:flex;align-items:center;justify-content:center;padding:16px;color:var(--review-ink)}
.rv-sheet-box{width:640px;max-width:100%;max-height:85vh;overflow:auto;background:var(--review-paper);padding:24px;border:1px solid var(--review-line);border-radius:8px}
.rv-sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.rv-sheet-head h3{font-size:1.1rem;overflow-wrap:anywhere}
.rv-sheet-x{font:inherit;font-size:1.8rem;line-height:1;background:transparent;color:inherit;border:0;cursor:pointer;padding:0 4px}.rv-sheet-go{margin-top:16px;display:inline-block}
@media(max-width:480px){.rv-sheet-box{padding:18px}.reviews-section{margin-block:28px}.card-rv{font-size:.72rem}}
