/* ひとっとび — 航空図（チャート）の紙面：淡い方眼・紺のインク・航路のマゼンタ */
:root{
  --paper:#eef3f6; --sheet:#ffffff; --ink:#0f2238; --ink2:#44566b; --ink3:#5b6b7d;
  --grid:rgba(15,34,56,.055); --line:#d5dee6; --line2:#b9c6d2; --ctl:#7d8b99;
  --route:#b3136f; --route-soft:#f8e5ef; --route-ink:#8f0f59;
  --ok:#0b6b47; --ok-soft:#e1f2ea; --warn:#8a4b00; --warn-soft:#fdf0dc;
  --chip:#e7eef5; --chip-ink:#0f2238;
  --sea:#d6e4ee; --land:#fbfcfd; --coast:#a9bccb; --halo:#fbfcfd; --pt:#8a9aab;
  --shadow:0 1px 0 rgba(15,34,56,.04),0 12px 32px -20px rgba(15,34,56,.45);
  --code:'Saira Condensed','Arial Narrow',sans-serif;
  --body:'BIZ UDPGothic','Hiragino Sans','Yu Gothic',sans-serif;
  --r:10px;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --paper:#0c1622; --sheet:#132131; --ink:#e8eef5; --ink2:#b3c1cf; --ink3:#9fb0c1;
    --grid:rgba(232,238,245,.045); --line:#23364a; --line2:#34495f; --ctl:#6a819a;
    --route:#ff5fb0; --route-soft:#3a1630; --route-ink:#ff8cc6;
    --ok:#5fd6a3; --ok-soft:#10352a; --warn:#ffc16b; --warn-soft:#3a2a10;
    --chip:#1d3045; --chip-ink:#e8eef5;
    --sea:#0a1520; --land:#1a2b3c; --coast:#2e4760; --halo:#1a2b3c; --pt:#6d849b;
    --shadow:0 1px 0 rgba(0,0,0,.2),0 12px 32px -20px rgba(0,0,0,.8);
  }
}
:root[data-theme="dark"]{
  --paper:#0c1622; --sheet:#132131; --ink:#e8eef5; --ink2:#b3c1cf; --ink3:#9fb0c1;
  --grid:rgba(232,238,245,.045); --line:#23364a; --line2:#34495f; --ctl:#6a819a;
  --route:#ff5fb0; --route-soft:#3a1630; --route-ink:#ff8cc6;
  --ok:#5fd6a3; --ok-soft:#10352a; --warn:#ffc16b; --warn-soft:#3a2a10;
  --chip:#1d3045; --chip-ink:#e8eef5;
  --sea:#0a1520; --land:#1a2b3c; --coast:#2e4760; --halo:#1a2b3c; --pt:#6d849b;
  --shadow:0 1px 0 rgba(0,0,0,.2),0 12px 32px -20px rgba(0,0,0,.8);
}
*{box-sizing:border-box}
[hidden]{display:none !important}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; color:var(--ink); font-family:var(--body); font-size:16px; line-height:1.75;
  background-color:var(--paper);
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:28px 28px;
  font-feature-settings:"palt" 1;
}
a{color:var(--route-ink); text-underline-offset:3px}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:3px solid var(--route); outline-offset:2px; border-radius:4px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;background:var(--sheet);padding:8px 12px;z-index:30}
.skip:focus{left:8px}
.wrap{max-width:1160px;margin:0 auto;padding:0 16px}

/* ヘッダー */
.top{border-bottom:1px solid var(--line); background:color-mix(in srgb,var(--paper) 88%,transparent); backdrop-filter:blur(6px)}
.top .wrap{display:flex;align-items:center;gap:12px;min-height:60px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-weight:700;font-size:1.15rem;letter-spacing:.04em}
.logo svg{width:30px;height:30px}
.top nav{margin-left:auto;display:flex;gap:4px;align-items:center}
.top nav a{color:var(--ink2);text-decoration:none;font-size:.9rem;padding:10px 10px;min-height:44px;display:inline-flex;align-items:center}
/* スマホ幅ではヘッダーの「このサイトについて」を隠す（フッターにある） */
@media (max-width:480px){.top nav a.nav-about{display:none}.top nav a{padding:10px 6px}}
.logo,.top nav a{white-space:nowrap}
.theme{border:1px solid var(--ctl);background:var(--sheet);color:var(--ink);border-radius:999px;width:44px;min-width:44px;flex-shrink:0;height:44px;cursor:pointer;font-size:1rem}

/* 見出し */
.hero{padding:30px 0 6px}
.eyebrow{font-family:var(--code);letter-spacing:.22em;text-transform:uppercase;color:var(--route-ink);font-size:.92rem;font-weight:600;margin:0}
h1{font-size:clamp(1.5rem,4.4vw,2.3rem);line-height:1.35;margin:.2em 0 .35em;text-wrap:balance;letter-spacing:.01em}
.lead{color:var(--ink2);margin:0 0 6px;max-width:44em;text-wrap:pretty}
.asof{font-size:.84rem;color:var(--ink3);margin:6px 0 0}
@media (max-width:600px){.hero{padding:20px 0 2px}.lead{font-size:.95rem}}

/* 検索 */
.finder{position:relative;z-index:10;background:var(--sheet);border:1px solid var(--line);border-radius:16px;padding:16px 18px 12px;margin:16px 0 18px;box-shadow:var(--shadow)}
.search{display:grid;grid-template-columns:1.1fr 1fr;gap:14px 18px}
@media (max-width:760px){.search{grid-template-columns:1fr}.finder{padding:14px 14px 10px}}
.lbl{display:flex;align-items:baseline;gap:6px;font-weight:700;font-size:.92rem;margin-bottom:6px}
.lbl .step{font-family:var(--code);color:var(--route-ink);letter-spacing:.08em}
.lbl .opt{font-weight:400;font-size:.8rem;color:var(--ink3);margin-left:4px}
.cb{position:relative;flex:1;min-width:0}
.cb .ico{position:absolute;left:14px;top:50%;width:20px;height:20px;margin-top:-10px;fill:var(--ink3);pointer-events:none}
.cb input{width:100%;min-height:54px;font:inherit;font-size:1.05rem;font-weight:700;color:var(--ink);background:var(--paper);border:1.5px solid var(--ctl);border-radius:12px;padding:8px 46px 8px 44px;text-overflow:ellipsis}
.cb input::placeholder{color:var(--ink3);opacity:1;font-weight:400;font-size:.95rem}
.cb input:focus{border-color:var(--route);outline:none;box-shadow:0 0 0 3px var(--route-soft);background:var(--sheet)}
.cb-x{position:absolute;right:5px;top:50%;margin-top:-22px;width:44px;height:44px;border:0;border-radius:999px;background:transparent;color:var(--ink2);font-size:1.25rem;cursor:pointer}
.cb-x:hover{background:var(--chip)}
.cb-list{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:40;margin:0;padding:6px 0;list-style:none;background:var(--sheet);border:1px solid var(--line2);border-radius:14px;box-shadow:0 18px 48px -18px rgba(15,34,56,.5);max-height:min(56vh,440px);overflow-y:auto;overscroll-behavior:contain}
.cb-list ul{list-style:none;margin:0;padding:0}
.cb-gl{display:block;position:sticky;top:-6px;z-index:1;background:var(--sheet);font-size:.76rem;font-weight:700;letter-spacing:.12em;color:var(--ink3);padding:8px 16px 4px}
.cb-list [role="option"]{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:6px 16px;cursor:pointer}
.cb-list [role="option"]:hover{background:var(--chip)}
.cb-list [role="option"][aria-selected="true"]{background:var(--route-soft);box-shadow:inset 3px 0 0 var(--route)}
.op-n{font-weight:700}
.op-m{font-size:.82rem;color:var(--ink3);white-space:nowrap;font-variant-numeric:tabular-nums}
.cb-note{padding:8px 16px;font-size:.82rem;color:var(--ink3)}
.home-row{display:flex;gap:8px}
.btn-geo{display:inline-flex;align-items:center;gap:6px;min-height:54px;padding:0 14px;border-radius:12px;border:1.5px solid var(--ctl);background:var(--sheet);color:var(--ink);font:inherit;font-weight:700;cursor:pointer;white-space:nowrap}
.btn-geo .ico{width:20px;height:20px;fill:currentColor}
.btn-geo:hover{border-color:var(--ink3)}
@media (max-width:380px){.btn-geo span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.btn-geo{padding:0 14px}}
.note{font-size:.86rem;color:var(--ink2);margin:6px 0 0;min-height:0}
.note:empty{margin:0}
.go{margin-top:8px}
.picks{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.picks:empty{display:none}
.pick{min-height:44px;padding:0 12px;border-radius:999px;border:1px solid var(--ctl);background:var(--paper);color:var(--ink);font:inherit;cursor:pointer}
.quick{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none}
.quick button{min-height:44px;padding:0 13px;border-radius:999px;border:1px solid var(--line2);background:transparent;color:var(--ink2);font:inherit;font-size:.88rem;cursor:pointer}
.quick button:hover{border-color:var(--ink3);color:var(--ink);background:var(--paper)}
.quick .ql{font-size:.8rem;color:var(--ink3);align-self:center;margin-right:2px;font-family:var(--code);letter-spacing:.14em}

/* 結果：左に答えと一覧、右に地図（スマホは 答え→地図→一覧 で、地図は上に貼り付く） */
.results{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,46%);grid-template-rows:auto 1fr;grid-template-areas:"ans map" "list map";gap:14px 24px;align-items:start}
.answer{grid-area:ans}
.list{grid-area:list;min-width:0}
.map{grid-area:map;position:sticky;top:14px;margin:0;height:min(calc(100vh - 28px),780px);min-height:420px;display:flex;flex-direction:column;background:var(--sea);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}
.map-canvas{flex:1;min-height:0;position:relative}
@media (max-width:860px){
  .results{grid-template-columns:1fr;grid-template-areas:"ans" "map" "list";gap:12px}
  .map{top:0;z-index:5;height:clamp(230px,40vh,360px);height:clamp(230px,40svh,360px);min-height:0;margin:0 -16px;border-radius:0;border-left:0;border-right:0;box-shadow:0 10px 18px -14px rgba(15,34,56,.55)}
}

/* 答え（いちばん上の結論） */
.answer{background:var(--sheet);border:1px solid var(--line);border-left:5px solid var(--route);border-radius:14px;padding:12px 18px 12px 16px}
.answer:empty{display:none}
.ans-k{margin:0;font-size:.86rem;color:var(--ink3);font-weight:700}
.ans-v{margin:.05em 0 .15em;font-size:clamp(1.15rem,3.4vw,1.5rem);line-height:1.4;font-weight:700;text-wrap:balance}
.ans-v b{color:var(--route-ink)}
.ans-m{margin:0;color:var(--ink2);font-size:.92rem}
.ans-alt{margin:8px 0 0;padding-top:8px;border-top:1px dashed var(--line2);font-size:.9rem;color:var(--ink2)}
.linkbtn{display:inline-flex;align-items:center;min-height:44px;vertical-align:middle;background:none;border:0;padding:0 2px;margin:0 2px;color:var(--route-ink);text-decoration:underline;text-underline-offset:3px;font:inherit;font-weight:700;cursor:pointer}

/* タブ */
.tabs{display:flex;gap:0;border-bottom:2px solid var(--line);margin-bottom:12px}
.tabs [role="tab"]{flex:1;min-height:52px;border:0;background:transparent;font:inherit;font-weight:700;color:var(--ink2);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;padding:0 10px}
.tabs [role="tab"][aria-selected="true"]{color:var(--ink);border-bottom-color:var(--route)}
.tabs .n{font-family:var(--code);font-size:1.15rem;margin-left:6px;color:var(--route-ink);font-variant-numeric:tabular-nums}
.empty{padding:18px;background:var(--sheet);border:1px dashed var(--line2);border-radius:var(--r);color:var(--ink2);margin:0}
.fine{font-size:.84rem;color:var(--ink3);margin:10px 0 0}
.hint{font-size:.86rem;color:var(--ink2);margin:0 0 4px}

/* 一覧のカード（搭乗券の半券） */
.stubs{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.stub{position:relative;display:grid;grid-template-columns:78px minmax(0,1fr) auto;grid-template-areas:"code name dist" "code body body";column-gap:14px;row-gap:4px;
  background:var(--sheet);border:1px solid var(--line);border-radius:12px;padding:12px 14px 12px 0;transition:border-color .15s,box-shadow .15s;
  animation:rise .35s ease both}
.stub:nth-child(2){animation-delay:.03s}.stub:nth-child(3){animation-delay:.06s}.stub:nth-child(4){animation-delay:.09s}.stub:nth-child(5){animation-delay:.12s}
@keyframes rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.stub{animation:none;transition:none}}
.stub::before{content:"";position:absolute;left:78px;top:10px;bottom:10px;border-left:2px dashed var(--line2)}
.stub:hover{border-color:var(--line2)}
.stub.is-sel{border-color:var(--route);box-shadow:0 0 0 1px var(--route),0 10px 26px -18px var(--route)}
.stub-hit{position:absolute;inset:0;z-index:1;width:100%;height:100%;padding:0;border:0;border-radius:12px;background:transparent;cursor:pointer}
.stub-hit:focus-visible{outline:3px solid var(--route);outline-offset:-3px}
.stub-code{grid-area:code;display:flex;align-items:center;justify-content:center;font-family:var(--code);font-weight:700;font-size:1.65rem;letter-spacing:.06em;color:var(--ink)}
.stub.is-sel .stub-code{color:var(--route-ink)}
.stub-code.is-name{font-family:var(--body);font-size:1rem;letter-spacing:0;text-align:center;padding:0 4px}
.stub-name{grid-area:name;padding-left:4px;font-weight:700;line-height:1.45}
.stub-name .pref{display:inline-block;margin-left:8px;font-weight:400;font-size:.85rem;color:var(--ink3)}
.stub-name .tag{display:inline-flex;align-items:center;margin-left:8px;padding:0 8px;min-height:22px;border-radius:999px;background:var(--route);color:#fff;font-size:.74rem;vertical-align:2px}
.stub-dist{grid-area:dist;font-family:var(--code);font-size:1.1rem;font-weight:700;color:var(--ink2);font-variant-numeric:tabular-nums;white-space:nowrap}
.stub-body{grid-area:body;padding-left:4px}
.leg{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:2px}
.chip{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:6px;background:var(--chip);color:var(--chip-ink);font-size:.88rem;font-weight:700}
.op{font-size:.83rem;color:var(--ink3)}
td .lab{font-size:.85rem;color:var(--warn)}
td .lab.lab-start{color:var(--ink2)}
.badge{display:inline-flex;align-items:center;min-height:26px;padding:0 8px;border-radius:999px;font-size:.8rem;font-weight:700;background:var(--chip);color:var(--ink2)}
.badge-warn{background:var(--warn-soft);color:var(--warn)}
.badge-ok{background:var(--ok-soft);color:var(--ok)}
/* 乗り継ぎ：①区間 ②区間 を行で見せる */
.via{margin:2px 0 6px;font-size:.9rem;color:var(--ink2)}
.via b{color:var(--ink)}
.route{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.seg{display:grid;grid-template-columns:24px auto minmax(0,1fr);align-items:center;gap:6px 10px}
.seg-n{width:22px;height:22px;border-radius:50%;background:var(--ink);color:var(--sheet);font-family:var(--code);font-weight:700;font-size:.82rem;display:grid;place-items:center}
.seg-od{font-weight:700;white-space:nowrap}
.seg-od .to{margin:0 5px;color:var(--ink3);font-weight:400}
.seg-c{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.flags{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0}
.alts{position:relative;z-index:2;display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}
.alts-l{font-size:.8rem;color:var(--ink3);margin-right:2px}
.alt{min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--line2);background:var(--paper);color:var(--ink);font:inherit;font-size:.88rem;cursor:pointer}
.alt:hover{border-color:var(--ink3)}
.alt[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--sheet);font-weight:700}
.alts-more{font-size:.8rem;color:var(--ink3)}
.more{display:block;width:100%;min-height:48px;margin-top:10px;border-radius:var(--r);border:1.5px solid var(--ctl);background:var(--sheet);color:var(--ink);font:inherit;font-weight:700;cursor:pointer}
@media (max-width:520px){
  .stub{grid-template-columns:60px minmax(0,1fr);grid-template-areas:"code name" "code dist" "body body";padding:12px 12px 12px 0}
  .stub::before{left:60px;bottom:auto;height:52px}
  .stub-code{font-size:1.3rem;align-items:flex-start;padding-top:4px}
  .stub-dist{padding-left:4px;font-size:1rem}
  .stub-body{padding-left:14px}
  .seg{grid-template-columns:24px minmax(0,1fr)}
  .seg-c{grid-column:2}
}

/* 地図 */
.chart{display:block;width:100%;height:100%;touch-action:manipulation}
.chart .sea{fill:var(--sea)}
.chart .land{fill:var(--land);stroke:var(--coast);stroke-width:.8;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.chart .arc{fill:none;stroke:var(--route);stroke-opacity:.3;stroke-width:1.3;vector-effect:non-scaling-stroke}
.chart .arc.sel{stroke-opacity:1;stroke-width:3.2;stroke-linecap:round}
.chart .arrow{fill:var(--route)}
.chart .ground{stroke:var(--ok);stroke-width:2.6;stroke-dasharray:1 6;stroke-linecap:round;vector-effect:non-scaling-stroke}
.chart .pt{fill:var(--pt)}
.chart .pt.on{fill:var(--ink);stroke:var(--land);stroke-width:1.6;vector-effect:non-scaling-stroke}
.chart .pt.on2{fill:var(--ink2)}
.chart .pt.hub{fill:var(--land);stroke:var(--route);stroke-width:3;vector-effect:non-scaling-stroke}
.chart .pt-hit{fill:transparent}
.chart [data-map-o]{cursor:pointer}
.chart .pin path{fill:var(--route);stroke:var(--land);stroke-width:1.6}
.chart .pin circle{fill:var(--land)}
.chart .homemk circle{fill:var(--ok);stroke:var(--land);stroke-width:2}
.chart .homemk path{fill:#fff}
.chart text{font-family:var(--body);font-weight:700;fill:var(--ink);paint-order:stroke;stroke:var(--halo);stroke-linejoin:round;dominant-baseline:central}
.chart .lb.dim{fill:var(--ink2);font-weight:400}
.chart .lb.dest,.chart .lb.hub{fill:var(--route-ink)}
.chart .lb.home{fill:var(--ok)}
.legend{display:flex;flex-wrap:wrap;gap:2px 14px;margin:0;padding:8px 12px;list-style:none;font-size:.78rem;line-height:1.5;color:var(--ink2);background:color-mix(in srgb,var(--sheet) 92%,transparent);border-top:1px solid var(--line)}
.legend li{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.legend svg{width:16px;height:16px;flex-shrink:0}
.legend svg[viewBox^="0 0 28"]{width:22px}
.lg-pin{fill:var(--route)}
.lg-pt{fill:var(--ink)}
.lg-arc{fill:none;stroke:var(--route);stroke-width:2.6;stroke-linecap:round}
.lg-home{fill:var(--ok)}
.lg-ground{stroke:var(--ok);stroke-width:2.6;stroke-dasharray:1 5;stroke-linecap:round}
@media (max-width:860px){.legend{gap:0 12px;padding:5px 16px;font-size:.74rem}}
@media (max-width:760px){.finder.has-dest .quick{display:none}}
.tab-note{margin:0 0 10px}

/* 静的な一覧（空港ページ） */
.section{margin:34px 0}
h2{font-size:1.3rem;line-height:1.45;margin:0 0 12px;padding-bottom:8px;border-bottom:2px solid var(--ink)}
h3{font-size:1.05rem;margin:18px 0 8px}
.table-wrap{overflow-x:auto;background:var(--sheet);border:1px solid var(--line);border-radius:12px}
table{border-collapse:collapse;width:100%;font-size:.95rem}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
th{font-size:.85rem;color:var(--ink2);background:var(--paper);white-space:nowrap}
tr:last-child td{border-bottom:0}
td .code{font-family:var(--code);font-weight:700;letter-spacing:.05em;margin-right:6px;color:var(--ink2)}
.reg{font-size:.8rem;color:var(--ink3);white-space:nowrap}
.dir{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px 16px;list-style:none;padding:0;margin:0}
.dir a{display:flex;gap:8px;align-items:baseline;min-height:40px;padding:6px 0;color:var(--ink);text-decoration:none;border-bottom:1px dotted var(--line2)}
.dir a:hover{color:var(--route-ink)}
.dir .code{font-family:var(--code);font-weight:700;color:var(--ink3);min-width:2.6em}
.dir .cnt{margin-left:auto;font-size:.8rem;color:var(--ink3)}
.prose p{max-width:46em}
.faq dt{font-weight:700;margin-top:14px}
.faq dd{margin:4px 0 0}
.crumb{font-size:.85rem;color:var(--ink3);margin:18px 0 0}
.crumb a{color:var(--ink2)}

/* フッター */
.foot{margin-top:56px;border-top:1px solid var(--line);padding:22px 0 40px;font-size:.88rem;color:var(--ink2)}
.foot nav{display:flex;flex-wrap:wrap;gap:4px 14px}
.foot nav a{color:var(--ink2);min-height:44px;display:inline-flex;align-items:center}
.foot .src{margin:10px 0 0;font-size:.8rem;color:var(--ink3)}
.ad-slot:empty{display:none}

/* スマホ幅では空港ページの表を縦並びのカードにする（4列が潰れて備考が1文字ずつ折り返すのを防ぐ） */
@media (max-width:600px){
  .table-wrap table,.table-wrap tbody,.table-wrap tr,.table-wrap td{display:block;width:100%}
  .table-wrap thead{display:none}
  .table-wrap tr{padding:10px 14px;border-bottom:1px solid var(--line)}
  .table-wrap tr:last-child{border-bottom:0}
  .table-wrap td{border:0;padding:2px 0}
  .table-wrap td:first-child:empty{display:none}
  .table-wrap td:nth-child(2){font-weight:700}
  .table-wrap td:nth-child(4){font-size:.85rem;color:var(--ink2)}
}
