.kcpg-hub{font-family:inherit;color:#1b2940;max-width:1150px;margin:20px auto 46px;box-sizing:border-box}
.kcpg-hub *{box-sizing:border-box}
.kcpg-hero{background:linear-gradient(125deg,#0e274e,#146e93);color:#fff;border-radius:22px;padding:34px 38px}
.kcpg-hero h2{font-size:clamp(25px,4vw,38px);font-weight:800;line-height:1.35;color:#fff;margin:6px 0 8px}
.kcpg-hero p{margin:0 0 6px;color:#f2f8fc}.kcpg-overline{font-size:12px;font-weight:700;letter-spacing:2px;color:#94def7}
.kcpg-hub .kcpg-small{font-size:13px;opacity:.85;margin:14px 0 0}
.kcpg-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;background:#f4f7fa;padding:8px;border-radius:14px;margin:18px 0}
.kcpg-tab{border:0;background:transparent;color:#4f617c;padding:13px 4px;border-radius:9px;cursor:pointer;font-size:14px;font-weight:700;line-height:1.5;transition:.15s}
.kcpg-tab.is-active{background:#fff;color:#146b9c;box-shadow:0 2px 12px rgba(30,55,80,.11)}
.kcpg-tab:focus-visible,.kcpg-form button:focus-visible,.kcpg-form input:focus-visible,.kcpg-form select:focus-visible{outline:3px solid #53a5f0;outline-offset:2px}
.kcpg-form{background:#fff;border:1px solid #e3ebf3;border-radius:18px;padding:22px;box-shadow:0 6px 25px rgba(20,46,78,.05)}
.kcpg-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}
.kcpg-fields[hidden]{display:none!important}.kcpg-fields label{display:flex;flex-direction:column;gap:7px;font-size:14px;font-weight:650;color:#27354d}
.kcpg-fields input,.kcpg-fields select{width:100%;min-height:46px;padding:10px 13px;font:inherit;font-size:15px;color:#24344f;background:#fff;border:1px solid #cbd9e5;border-radius:9px}
.kcpg-hint{grid-column:1/-1;font-size:13px;color:#6a7687;margin:0}.kcpg-actions{display:flex;align-items:center;gap:12px;margin-top:18px;flex-wrap:wrap}
.kcpg-actions button{padding:12px 20px;min-height:46px;border-radius:10px;font:inherit;font-weight:750;cursor:pointer}
.kcpg-submit{background:#157bb0;color:white;border:1px solid #157bb0}.kcpg-submit:disabled{opacity:.65;cursor:progress}
.kcpg-share{background:white;color:#1674a0;border:1px solid #c4dfef}
.kcpg-meta{margin:20px 0 10px;color:#61718a;font-size:13px}.kcpg-notice{border-left:3px solid #519ac8;background:#f2f8fc;padding:11px 14px;font-size:13px;line-height:1.6;color:#49647b;border-radius:5px;margin:0 0 16px}
.kcpg-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.kcpg-card{background:#fff;border:1px solid #dfebf0;border-radius:15px;overflow:hidden;display:flex;min-width:0;box-shadow:0 3px 14px rgba(25,55,85,.03)}
.kcpg-card>img{width:130px;object-fit:cover;aspect-ratio:4/3;background:#ecf1f6}.kcpg-card-body{padding:15px;min-width:0}.kcpg-result-title{font-size:17px;font-weight:800;margin-bottom:7px;color:#1d314f;overflow-wrap:anywhere}.kcpg-result-subtitle{font-size:14px;color:#496176;margin-bottom:6px;overflow-wrap:anywhere}.kcpg-result-detail{font-size:12px;color:#708295;overflow-wrap:anywhere}
.kcpg-error{background:#fff2f2;color:#9d3030;padding:18px 20px;border-radius:10px;border:1px solid #ffd0d0}.kcpg-empty{padding:30px;text-align:center;background:#f7f9fb;color:#6f7c89;border-radius:12px}.kcpg-footer{border-top:1px solid #e4eaf0;margin-top:25px;padding-top:12px;font-size:12px;color:#7b879a}
@media(max-width:760px){.kcpg-hero{padding:27px 22px;border-radius:16px}.kcpg-tabs{grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;padding:5px}.kcpg-tab{font-size:12px;padding:12px 2px}.kcpg-form{padding:17px}.kcpg-fields{grid-template-columns:1fr}.kcpg-grid{grid-template-columns:1fr}.kcpg-card>img{width:110px}.kcpg-actions button{flex:1 1 auto}.kcpg-hint{grid-column:1}}
@media(max-width:400px){.kcpg-tab{font-size:11px}.kcpg-card>img{width:95px}}
/* v0.2.3 — service-day chronology, audit clarity, and mobile usability */
.kcpg-service-summary{background:#eef6fb;border:1px solid #d5e6f4;padding:14px 17px;border-radius:12px;margin:12px 0 18px;line-height:1.6}
.kcpg-result-summary-label{font-size:12px;font-weight:700;color:#53718a}
.kcpg-result-summary-text{font-size:16px;font-weight:800;color:#203b58;margin:3px 0}
.kcpg-result-summary-note{font-size:12px;color:#596f83}
.kcpg-filter-row{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 16px}
.kcpg-filter-row button{min-height:40px;padding:7px 15px;border-radius:100px;background:#f4f7fa;color:#37536e;border:1px solid #dae5ec;font-weight:700;cursor:pointer}
.kcpg-filter-row button[aria-pressed="true"]{background:#155f8a;color:white;border-color:#155f8a}
.kcpg-result-validity{margin-top:8px;font-size:12px;color:#376549;font-weight:650}
.kcpg-result-validity.is-unverified{color:#80561e}
.kcpg-more{display:block;margin:18px auto;min-width:230px;min-height:46px;background:#fff;color:#14658e;border:1px solid #8fbdda;border-radius:10px;cursor:pointer;font:inherit;font-weight:800}
.kcpg-more[hidden]{display:none}
.kcpg-results .kcpg-result-empty{text-align:center;grid-column:1/-1;padding:20px;color:#607085}
.kcpg-card{align-items:stretch}
.kcpg-card-body{flex:1}
.kcpg-result-title{font-variant-numeric:tabular-nums}
@media (max-width:760px){
  .kcpg-hub{width:100%;margin:12px auto 28px}
  .kcpg-hero{padding:23px 19px}
  .kcpg-hero h2{font-size:clamp(23px,6vw,29px)}
  .kcpg-tabs{display:flex;overflow-x:auto;gap:6px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;padding:7px;white-space:nowrap}
  .kcpg-tab{font-size:13px;flex:0 0 auto;min-width:89px;min-height:44px;padding:11px 10px;scroll-snap-align:start}
  .kcpg-form{padding:17px 15px}
  .kcpg-fields{gap:12px}
  .kcpg-fields input,.kcpg-fields select{font-size:16px;min-height:48px}
  .kcpg-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .kcpg-actions button{margin:0;white-space:normal;padding:10px 8px}
  .kcpg-grid{grid-template-columns:1fr;gap:9px}
  .kcpg-card-body{padding:13px 14px}
  .kcpg-card .kcpg-result-title{font-size:18px}
  .kcpg-filter-row{display:flex;flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}
  .kcpg-filter-row button{flex:0 0 auto;white-space:nowrap}
  .kcpg-service-summary{padding:12px 13px}
}
@media(max-width:360px){.kcpg-actions{grid-template-columns:1fr}.kcpg-tabs .kcpg-tab{min-width:82px}}
/* v0.2.4 station name -> available lines, mobile autocomplete */
.kcpg-station-wrap{position:relative}
.kcpg-station-suggestions{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #bfd9e9;box-shadow:0 6px 19px rgba(15,45,80,.16);border-radius:10px;max-height:260px;overflow-y:auto;z-index:90}
.kcpg-station-suggestions[hidden]{display:none!important}
.kcpg-station-option{display:block;width:100%;padding:11px 13px;background:#fff;color:#17334c;text-align:left;font-size:14px;border:0;border-bottom:1px solid #edf2f5;cursor:pointer;line-height:1.45}
.kcpg-station-option:hover,.kcpg-station-option:focus-visible{background:#ecf6fb;outline:2px solid #56a5ce;outline-offset:-2px}
.kcpg-station-option:last-child{border-bottom:0}
.kcpg-line-status{grid-column:1/-1;background:#edf6fc;border:1px solid #d2e9f5;border-radius:10px;padding:11px 13px;color:#2a5b78;font-size:13px;line-height:1.55;margin:0}
.kcpg-line-status.is-error{background:#fff8ed;color:#906416;border-color:#f5dfb5}
.kcpg-fields select:disabled{color:#74829b;background:#f5f7f9}
@media(max-width:760px){.kcpg-station-suggestions{max-height:280px}.kcpg-station-option{padding:13px 12px;font-size:15px}}
/* v0.2.6 route planning; schedule panel and other public-data services preserved */
.kcpg-subway-switch{grid-column:1/-1;display:flex;gap:8px;background:#f2f6fa;border-radius:12px;padding:6px}
.kcpg-submode{flex:1;min-height:44px;border:0;border-radius:9px;background:transparent;color:#435b72;font-size:14px;font-weight:750;cursor:pointer;padding:9px 10px}
.kcpg-submode.is-active{background:#176f9f;color:#fff;box-shadow:0 2px 9px rgba(0,0,0,.12)}
.kcpg-route-fields,.kcpg-schedule-fields{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 18px;align-items:end}
.kcpg-route-fields[hidden],.kcpg-schedule-fields[hidden]{display:none!important}
.kcpg-route-station-wrap{position:relative}
.kcpg-route-suggestions{position:absolute;top:100%;left:0;right:0;max-height:230px;overflow:auto;background:white;border:1px solid #bfd9e9;border-radius:10px;z-index:90;box-shadow:0 6px 19px rgba(15,45,80,.16)}
.kcpg-route-suggestions[hidden]{display:none!important}
.kcpg-swap-stations{align-self:end;min-height:44px;padding:7px 14px;border:1px solid #bdd9e9;background:#f0f7fc;color:#175a84;border-radius:9px;cursor:pointer;font:inherit;font-weight:750}
.kcpg-route-summary{background:#eaf5fb;border:1px solid #cfe7f3;border-radius:13px;padding:18px;margin-bottom:16px;line-height:1.65}
.kcpg-route-stops-title{font-size:19px;margin:18px 0 10px;color:#1b3650}
.kcpg-route-stops{border:1px solid #d9e5ed;border-radius:12px;padding:12px 16px 12px 38px;line-height:1.85;background:#fff}
@media(max-width:760px){
 .kcpg-route-fields,.kcpg-schedule-fields{grid-template-columns:1fr;gap:11px}
 .kcpg-submode{font-size:13px;padding:9px 6px;min-width:0}
 .kcpg-swap-stations{justify-self:center;width:100%;min-height:42px}
}
@media(max-width:380px){.kcpg-submode{font-size:12px}}

.kcpg-route-pending{grid-column:1/-1;font-size:13px;background:#fff7e9;border:1px solid #e9d9bb;color:#765523;padding:12px 14px;border-radius:9px;line-height:1.6;margin:0}

/* v0.2.7 depart-at input readability */
.kcpg-route-fields input[type="datetime-local"]{min-height:48px;font-size:16px}

/* v0.2.8 route clarity, real reported times only */
.kcpg-route-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:13px 0}
.kcpg-route-metric{background:white;border:1px solid #d6e7f2;border-radius:10px;padding:12px;min-width:0}
.kcpg-route-metric .kcpg-result-metric-label{font-size:12px;color:#4f6780}
.kcpg-route-metric .kcpg-result-metric-value{font-size:16px;font-weight:800;color:#153e5b;overflow-wrap:anywhere}
.kcpg-route-times{padding:9px 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.kcpg-route-journey{border:1px solid #dce7ee;background:#fff;border-radius:14px;padding:15px;margin:16px 0}
.kcpg-route-journey .kcpg-result-journey-title{font-size:17px;font-weight:800;color:#173e58}
.kcpg-route-steps{margin:12px 0 0;padding:0 0 0 18px;list-style:none;border-left:3px solid #bdd8e8}
.kcpg-route-step{padding:6px 9px 11px 17px;position:relative;color:#3e5368;font-size:14px}
.kcpg-route-step:before{content:'';position:absolute;left:-26px;top:12px;background:#9bb8ce;border:2px solid white;width:13px;height:13px;border-radius:50%}
.kcpg-route-step.is-origin .kcpg-result-step-station,.kcpg-route-step.is-destination .kcpg-result-step-station{font-weight:800;color:#14587d}
.kcpg-route-step.is-transfer{background:#fff6e6;border:1px solid #f0d2a1;border-radius:9px;margin:4px 0}
.kcpg-route-step.is-transfer:before{background:#e9a33f}
.kcpg-route-step .kcpg-result-step-transfer{color:#8b5612;font-weight:750;margin:5px 0}
.kcpg-route-details{margin:13px 0;color:#264960}.kcpg-route-details summary{cursor:pointer;min-height:39px;font-weight:750}
.kcpg-fare-pending{background:#fff8ef;border-left-color:#e5af53}
@media(max-width:760px){.kcpg-route-metrics{grid-template-columns:1fr 1fr}.kcpg-route-metric:last-child{grid-column:1/-1}.kcpg-route-times{grid-template-columns:1fr}.kcpg-route-journey{padding:12px}}

.kcpg-route-step.is-transfer .kcpg-result-step-station{font-weight:800;color:#875112}

/* v0.3.0 optional departure time for route-only users */
.kcpg-route-time-options{grid-column:1/-1;background:#f3f8fc;border:1px solid #d4e7f4;border-radius:10px;padding:12px 14px}
.kcpg-route-time-check{display:flex!important;align-items:center;gap:9px;font-weight:700;cursor:pointer;line-height:1.4}
.kcpg-route-time-check input[type=checkbox]{width:19px;height:19px;min-height:19px;flex-shrink:0;accent-color:#176f9f}
.kcpg-route-time-check span{font-weight:500;color:#5e768d;font-size:13px}
.kcpg-route-time-default{font-size:12px;color:#48657f;margin:7px 0 0;line-height:1.6}
.kcpg-route-custom-datetime[hidden]{display:none!important}
.kcpg-route-custom-datetime{grid-column:1/-1;max-width:360px}

/* v0.3.2: station name suggestions never cover the destination input. */
.kcpg-route-origin .kcpg-route-suggestions{top:auto;bottom:calc(100% + 7px)}
.kcpg-route-suggestions{max-height:164px;overscroll-behavior:contain;z-index:120}
.kcpg-route-suggestions .kcpg-station-option{padding:10px 13px;white-space:normal;line-height:1.3}
@media(max-width:760px){
  .kcpg-route-suggestions{max-height:144px}
  .kcpg-route-suggestions .kcpg-station-option{padding:11px 12px;font-size:14px}
}

/* v0.3.3: timetable directly within the route input screen */
.kcpg-inline-schedule{grid-column:1/-1;min-width:0;margin:6px 0 0;border:1px solid #d5e6f2;border-radius:12px;background:#f8fbfe;padding:9px}
.kcpg-inline-toggle{display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:46px;width:100%;border:0;border-radius:8px;background:#e7f3fc;color:#135a83;font-size:14px;font-weight:800;padding:10px 14px;text-align:left;cursor:pointer}
.kcpg-inline-toggle span{font-size:20px}
.kcpg-inline-panel{padding:12px 5px 2px}.kcpg-inline-panel[hidden]{display:none!important}
.kcpg-inline-title{font-size:14px;margin:0 0 11px;color:#244561}.kcpg-inline-hint{color:#66849a;font-size:12px;margin-left:8px}
.kcpg-inline-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;align-items:end}
.kcpg-inline-controls label{font-size:13px}.kcpg-inline-controls select{min-width:0}
.kcpg-inline-search,.kcpg-inline-more{border-radius:9px;cursor:pointer;font-weight:750;font-size:14px}
.kcpg-inline-search{margin-top:12px;padding:11px 14px;background:#176f9f;color:#fff;border:1px solid #176f9f;min-height:43px}
.kcpg-inline-search:disabled{opacity:.6;cursor:progress}
.kcpg-inline-status{margin:12px 0;font-size:12px;color:#476985;line-height:1.6}
.kcpg-inline-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.kcpg-inline-train{padding:11px 12px;background:white;border:1px solid #d5e6f2;border-radius:10px;display:flex;flex-direction:column;gap:4px;min-width:0}
.kcpg-inline-train strong{font-size:16px;color:#204a6b}.kcpg-inline-train span{font-size:13px;color:#3a5c70}.kcpg-inline-train small{font-size:11px;color:#91672c}
.kcpg-inline-notice{font-size:12px;line-height:1.6;color:#476985;background:#eaf5fc;padding:9px;border-radius:7px}
.kcpg-inline-error{font-size:13px;color:#a23b3b}.kcpg-inline-empty{font-size:13px;color:#61758a}
.kcpg-inline-more{width:100%;padding:11px;margin-top:12px;border:1px solid #9cc7df;background:#fff;color:#176f9f}
.kcpg-inline-more[hidden]{display:none!important}
@media(max-width:760px){.kcpg-inline-controls{grid-template-columns:1fr}.kcpg-inline-grid{grid-template-columns:1fr}.kcpg-inline-hint{display:block;margin-left:0;margin-top:3px}}

/* v0.3.4: boardable route steps link to official station/line schedules */
.kcpg-leg-schedule{margin:11px 0 3px;border:1px solid #c8deed;border-radius:10px;background:#f7fbff;color:#184868;min-width:0}
.kcpg-leg-schedule>summary{padding:11px 12px;cursor:pointer;font-size:13px;font-weight:750;line-height:1.45}
.kcpg-leg-schedule[open]>summary{border-bottom:1px solid #d9e9f2}
.kcpg-leg-schedule-content{padding:12px;display:flex;flex-direction:column;gap:9px}
.kcpg-leg-station-line{font-size:13px;font-weight:800;margin:0;color:#174b6d}
.kcpg-leg-caution,.kcpg-leg-status,.kcpg-leg-empty{font-size:12px;line-height:1.55;margin:0;color:#4b6880}
.kcpg-leg-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.kcpg-leg-controls label{display:block;min-width:0;font-size:12px;font-weight:700;color:#274d68}
.kcpg-leg-controls select{display:block;width:100%;max-width:100%;min-height:40px;margin-top:5px;border:1px solid #bed9e9;border-radius:8px;padding:7px 9px;background:#fff;color:#183d59;font-size:14px}
.kcpg-leg-lookup{align-self:flex-start;background:#176f9f;color:#fff;border:0;border-radius:8px;padding:10px 14px;font-size:13px;font-weight:750;cursor:pointer}
.kcpg-leg-lookup:disabled{opacity:.65;cursor:progress}
.kcpg-leg-notice{background:#edf5fb;padding:8px;border-radius:8px;color:#4d6980;font-size:11px;line-height:1.5;margin:0 0 8px}
.kcpg-leg-trains{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.kcpg-leg-train{display:flex;flex-direction:column;gap:4px;background:#fff;border:1px solid #d5e6f2;border-radius:8px;padding:10px;min-width:0}
.kcpg-leg-train strong{font-size:15px;color:#1c587c}
.kcpg-leg-train span{font-size:12px;color:#405e73}
.kcpg-leg-train small{font-size:11px;color:#986b2b}
.kcpg-leg-more{display:block;width:100%;margin-top:9px;border:1px solid #9cc7df;background:#fff;border-radius:8px;color:#176f9f;padding:9px;cursor:pointer;font-size:13px;font-weight:700}
.kcpg-leg-more[hidden]{display:none!important}
@media(max-width:600px){.kcpg-leg-controls,.kcpg-leg-trains{grid-template-columns:1fr}.kcpg-leg-schedule-content{padding:10px}}

/* v0.3.5: time-aware route leg schedules; never claim guaranteed transfers */
.kcpg-leg-day-note,.kcpg-leg-time-tip,.kcpg-leg-reference-result{font-size:12px;line-height:1.6;margin:0;padding:7px 9px;border-radius:7px;color:#3b6179;background:#e9f4fc}
.kcpg-leg-time-tip{background:#f0f6fa}
.kcpg-leg-reference-result{margin:8px 0;color:#27526c;background:#edf7ed}
.kcpg-leg-show-all{display:block;margin-top:9px;width:100%;background:#fff;border:1px solid #bfd9e9;color:#145a80;border-radius:8px;padding:10px;font-size:13px;font-weight:700;cursor:pointer}

/* v0.3.6: explain direction preselection, keep manual override accessible */
.kcpg-leg-direction-note{font-size:12px;line-height:1.65;margin:0;padding:8px 9px;border:1px solid #c9dfeb;border-radius:7px;background:#f2f9fc;color:#255b77}

/* v0.3.7: tourism search filters and content category label */
.kcpg-tour-fields .kcpg-tour-keyword{grid-column:1/-1}
.kcpg-tour-hint{margin:0;line-height:1.55}
.kcpg-result-category{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:750;background:#eef5fc;color:#245e86;margin:0 0 9px}
@media(max-width:760px){.kcpg-tour-fields .kcpg-tour-keyword{grid-column:1}}

/* v0.3.8: official TourAPI details opened only on demand */
.kcpg-tour-detail-toggle{display:block;width:calc(100% - 24px);margin:0 12px 12px;padding:10px 12px;color:#176f9f;background:#f1f9fe;border:1px solid #cce2f0;border-radius:8px;font-size:13px;font-weight:750;text-align:left;cursor:pointer}
.kcpg-tour-detail-toggle:hover,.kcpg-tour-detail-toggle:focus-visible{background:#deeffb;outline-color:#1b75a0}
.kcpg-tour-detail-panel{margin:0 12px 14px;padding:13px;border:1px solid #d5e6f2;border-radius:10px;background:#f9fcfe;color:#28465c;font-size:13px;line-height:1.65;min-width:0;overflow-wrap:anywhere}
.kcpg-tour-detail-panel[hidden]{display:none!important}
.kcpg-tour-detail-panel h4{margin:0 0 8px;font-size:14px;color:#193e5b}
.kcpg-tour-overview{white-space:pre-line;line-height:1.7;margin:0 0 12px}
.kcpg-tour-detail-line{border-top:1px solid #e5eff5;display:grid;grid-template-columns:90px minmax(0,1fr);gap:8px;padding:8px 0}
.kcpg-tour-detail-line strong{color:#214d6b}
.kcpg-tour-detail-line span{white-space:pre-line;min-width:0}
.kcpg-tour-detail-muted{font-size:11px;line-height:1.6;color:#648096;margin:10px 0 0}
.kcpg-tour-detail-error{color:#a43d38;font-size:12px}
.kcpg-tour-map{display:inline-block;margin:12px 0 0;text-decoration:none;color:#13638c;font-weight:750;border-bottom:1px solid currentColor}
@media(max-width:600px){.kcpg-tour-detail-line{grid-template-columns:1fr;gap:2px}}


/* v0.3.9 — keep tourism card content, disclosure trigger and long detail in vertical flow.
   Other service cards keep their preexisting layout. */
.kcpg-hub .kcpg-grid > .kcpg-card.kcpg-tour-card{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  width:100%;
  min-width:0;
  overflow:hidden;
}
.kcpg-hub .kcpg-grid > .kcpg-tour-card.is-expanded{
  grid-column:1 / -1;
}
.kcpg-hub .kcpg-tour-card > .kcpg-card-body{
  display:block;
  flex:0 0 auto;
  width:100%;
  min-width:0;
  padding:15px 16px 8px;
}
.kcpg-hub .kcpg-tour-card .kcpg-result-title,
.kcpg-hub .kcpg-tour-card .kcpg-result-subtitle,
.kcpg-hub .kcpg-tour-card .kcpg-result-detail{
  display:block;
  width:auto;
  max-width:100%;
  min-width:0;
  white-space:normal;
  word-break:keep-all;
  overflow-wrap:anywhere;
}
.kcpg-hub .kcpg-tour-card > .kcpg-tour-detail-toggle{
  display:block;
  flex:0 0 auto;
  align-self:stretch;
  width:calc(100% - 24px);
  margin:5px 12px 12px;
}
.kcpg-hub .kcpg-tour-card > .kcpg-tour-detail-panel{
  display:block;
  flex:0 0 auto;
  width:calc(100% - 24px);
  max-width:calc(100% - 24px);
  min-width:0;
  margin:0 12px 14px;
  line-height:1.75;
  overflow-wrap:break-word;
  word-break:keep-all;
}
.kcpg-hub .kcpg-tour-card .kcpg-tour-overview{
  overflow-wrap:break-word;
  word-break:keep-all;
  white-space:pre-line;
}
@media(max-width:760px){
  .kcpg-hub .kcpg-tour-card > .kcpg-card-body{padding:13px 14px 8px;}
  .kcpg-hub .kcpg-tour-card .kcpg-tour-detail-line{grid-template-columns:1fr;gap:2px;}
}

/* v0.4.0: tourism visit essentials, rights-cleared original-size images, and nearby sights */
.kcpg-hub .kcpg-tour-facts{background:#eef7fc;border:1px solid #d6e7f1;border-radius:12px;padding:12px 14px;margin-bottom:16px}
.kcpg-hub .kcpg-tour-facts h4{font-size:15px;margin:0 0 7px}
.kcpg-hub .kcpg-tour-facts .kcpg-tour-detail-line{grid-template-columns:minmax(80px,108px) minmax(0,1fr);border-top:1px solid #d8e8f0}
.kcpg-hub .kcpg-tour-gallery{margin:0 0 18px;min-width:0}
.kcpg-hub .kcpg-tour-photos{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:12px;margin:10px 0}
.kcpg-hub .kcpg-tour-photos figure{margin:0;padding:8px;border:1px solid #e0eaf1;background:#fff;border-radius:10px;min-width:0}
.kcpg-hub .kcpg-tour-photos img{display:block;max-width:100%;width:auto;height:auto;max-height:none;object-fit:contain;margin:auto;border-radius:4px}
.kcpg-hub .kcpg-tour-photos figcaption{font-size:11px;line-height:1.5;margin-top:8px;color:#546b7f;word-break:keep-all}
.kcpg-hub .kcpg-tour-overview-wrap{position:relative;max-height:150px;overflow:hidden}
.kcpg-hub .kcpg-tour-overview-wrap:not(.is-open):after{content:"";position:absolute;bottom:0;left:0;right:0;height:48px;background:linear-gradient(transparent,#f9fcfe)}
.kcpg-hub .kcpg-tour-overview-wrap.is-open{max-height:none}
.kcpg-hub .kcpg-tour-overview-more,.kcpg-hub .kcpg-tour-nearby-button{display:block;min-height:42px;width:100%;border:1px solid #c6deed;background:#eef8ff;color:#156186;border-radius:8px;padding:10px 12px;cursor:pointer;text-align:center;font-size:13px;font-weight:750;margin:10px 0 18px}
.kcpg-hub .kcpg-tour-nearby{margin:18px 0 0;min-width:0}
.kcpg-hub .kcpg-tour-nearby-results[hidden]{display:none!important}
.kcpg-hub .kcpg-tour-nearby-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;font-size:13px;margin:10px 0}
.kcpg-hub .kcpg-tour-nearby-item{display:flex;flex-direction:column;gap:5px;background:#fff;border:1px solid #e0eaf1;padding:11px;border-radius:10px;min-width:0}
.kcpg-hub .kcpg-tour-nearby-item strong{font-size:14px;color:#203d5e;overflow-wrap:anywhere}
.kcpg-hub .kcpg-tour-nearby-item span{font-size:12px;color:#5d7385;overflow-wrap:anywhere}
.kcpg-hub .kcpg-tour-nearby-item a{align-self:flex-start;color:#146b97;text-decoration:underline;font-weight:700}
@media(max-width:760px){
 .kcpg-hub .kcpg-tour-facts .kcpg-tour-detail-line{grid-template-columns:1fr}
 .kcpg-hub .kcpg-tour-nearby-results{grid-template-columns:1fr}
 .kcpg-hub .kcpg-tour-photos{grid-template-columns:1fr}
}

/* v0.4.1: nearby sightseeing cards open a verified official detail in place */
.kcpg-hub .kcpg-tour-nearby-item.is-expanded{grid-column:1/-1;border-color:#98c8df;background:#f9fcff}
.kcpg-hub .kcpg-tour-nearby-title{display:block;width:100%;border:0;border-radius:7px;background:transparent;padding:4px 0;color:#175e84;text-align:left;font-size:14px;font-weight:800;line-height:1.55;cursor:pointer;overflow-wrap:anywhere}
.kcpg-hub .kcpg-tour-nearby-title:hover,.kcpg-hub .kcpg-tour-nearby-title:focus-visible{background:#eaf5fd;text-decoration:underline;outline:2px solid #a6cfe7;outline-offset:2px}
.kcpg-hub .kcpg-tour-nearby-title:disabled{opacity:.7;cursor:progress}
.kcpg-hub .kcpg-tour-nearby-item > .kcpg-tour-nearby-detail{width:100%;max-width:100%;margin:10px 0 0;padding:12px;min-width:0;box-sizing:border-box;overflow-wrap:anywhere}
.kcpg-hub .kcpg-tour-nearby-item > .kcpg-tour-nearby-detail[hidden]{display:none!important}
.kcpg-hub .kcpg-tour-nearby-results > .kcpg-tour-detail-muted{grid-column:1/-1}
@media(max-width:760px){.kcpg-hub .kcpg-tour-nearby-item > .kcpg-tour-nearby-detail{padding:10px}}

/* v0.4.2: user-initiated geographic overview; no external map requests until visitor opens it */
.kcpg-hub .kcpg-tour-map-section{grid-column:1/-1;min-width:0;margin:12px 0 6px}
.kcpg-hub .kcpg-tour-map-toggle{display:block;width:100%;min-height:44px;border:1px solid #a7d0e5;border-radius:9px;background:#eaf6ff;color:#145b80;font-size:13px;font-weight:800;padding:11px 14px;text-align:center;cursor:pointer}
.kcpg-hub .kcpg-tour-map-toggle:focus-visible{outline:2px solid #267fbb;outline-offset:3px}
.kcpg-hub .kcpg-tour-map-content{margin:10px 0 14px;min-width:0}
.kcpg-hub .kcpg-tour-map-content[hidden]{display:none!important}
.kcpg-hub .kcpg-tour-map-canvas{width:100%;height:340px;min-width:0;border:1px solid #d7e5ec;border-radius:10px;overflow:hidden;background:#e9eff3;box-sizing:border-box;font-size:13px}
.kcpg-hub .kcpg-tour-map-help{font-size:12px;color:#61778b;line-height:1.6;margin:6px 0 0}
.kcpg-hub .kcpg-tour-map-fallback{padding:24px;color:#6a7180;line-height:1.8}
.kcpg-hub .kcpg-tour-map-popup{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-width:130px}
.kcpg-hub .kcpg-tour-map-popup strong{font-size:13px}
.kcpg-hub .kcpg-tour-map-popup button{padding:6px 9px;border-radius:6px;border:1px solid #b6d7eb;color:#145b80;background:#eef8fe;cursor:pointer}
@media (max-width:760px){.kcpg-hub .kcpg-tour-map-canvas{height:285px}}

/* v0.4.3: tour-site transit navigation based on verified TourAPI coordinates */
.kcpg-hub .kcpg-tour-transport{margin:12px 0 18px;padding:14px;border:1px solid #c7dfe9;border-radius:12px;background:#f3faff;min-width:0}
.kcpg-hub .kcpg-tour-transport h4{margin:0 0 6px;font-size:15px;color:#173c60}
.kcpg-hub .kcpg-tour-transport-help,.kcpg-hub .kcpg-tour-transport-footnote{margin:6px 0 12px;font-size:12px;line-height:1.6;color:#536b7b;word-break:keep-all}
.kcpg-hub .kcpg-tour-transport-footnote{margin:9px 0 0;font-size:11px}
.kcpg-hub .kcpg-tour-transport-label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:750;color:#294c63}
.kcpg-hub .kcpg-tour-transport-label input{display:block;width:100%;min-height:43px;max-width:100%;box-sizing:border-box;border:1px solid #bfd5e4;border-radius:8px;padding:9px 11px;background:#fff;font-size:14px;color:#152638}
.kcpg-hub .kcpg-tour-transport-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}
.kcpg-hub .kcpg-tour-transport-actions a{display:inline-flex;justify-content:center;align-items:center;text-align:center;min-height:42px;box-sizing:border-box;padding:9px 13px;border-radius:8px;text-decoration:none!important;font-weight:800;font-size:13px;color:#fff;background:#1378a8;border:1px solid #1378a8;white-space:normal}
.kcpg-hub .kcpg-tour-transport-actions a.is-secondary{background:#fff;color:#12658e;border-color:#b4d4e4}
.kcpg-hub .kcpg-tour-transport-actions a:focus-visible,.kcpg-hub .kcpg-tour-map-popup-route:focus-visible{outline:3px solid #ffbe55;outline-offset:2px}
.kcpg-hub .kcpg-tour-map-popup-route{font-size:12px;color:#0f6795;text-decoration:underline}
@media(max-width:480px){.kcpg-hub .kcpg-tour-transport-actions{flex-direction:column}.kcpg-hub .kcpg-tour-transport-actions a{width:100%}}

/* v0.4.5 — official TourAPI city/county/district filter */
.kcpg-tour-district-label select:disabled{background:#f5f7f9;color:#64748b;cursor:not-allowed}

/* v0.4.6 favorites: local to this browser; independent of API calls */
.kcpg-hub .kcpg-fav-bar{margin:14px 0 14px;min-width:0}
.kcpg-hub .kcpg-fav-bar[hidden],.kcpg-hub .kcpg-fav-panel[hidden]{display:none!important}
.kcpg-hub .kcpg-fav-toggle{display:block;width:100%;min-height:45px;text-align:left;padding:11px 14px;color:#12577b;background:#eef7fd;border:1px solid #c6e0ee;border-radius:10px;font-size:14px;font-weight:800;cursor:pointer}
.kcpg-hub .kcpg-fav-panel{padding:14px;border:1px solid #d4e4ef;border-radius:0 0 12px 12px;background:#f8fbfe;min-width:0}
.kcpg-hub .kcpg-fav-note{font-size:12px;line-height:1.7;color:#536f82;margin:0 0 14px}
.kcpg-hub .kcpg-fav-empty{font-size:13px;color:#5d7180;margin:0}
.kcpg-hub .kcpg-fav-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.kcpg-hub .kcpg-fav-grid>.kcpg-card{min-width:0}
.kcpg-hub .kcpg-tour-card>.kcpg-fav-btn{display:block;align-self:flex-start;margin:0 12px 10px;min-height:38px;max-width:calc(100% - 24px);padding:7px 11px;background:#fff8e9;color:#765019;border:1px solid #f0dba7;border-radius:8px;font-size:12px;font-weight:750;cursor:pointer}
.kcpg-hub .kcpg-tour-card>.kcpg-fav-btn[aria-pressed="true"]{color:#125c7d;background:#ecf8ff;border-color:#a7d6ed}
.kcpg-hub .kcpg-tour-nearby-item>.kcpg-fav-btn{align-self:flex-start;min-height:36px;padding:6px 9px;border:1px solid #eed7a1;background:#fff8e9;border-radius:7px;color:#755016;font-size:12px;cursor:pointer}
.kcpg-hub .kcpg-fav-btn:focus-visible,.kcpg-hub .kcpg-fav-toggle:focus-visible{outline:3px solid #267fbb;outline-offset:2px}
@media(max-width:760px){.kcpg-hub .kcpg-fav-grid{grid-template-columns:1fr}.kcpg-hub .kcpg-fav-panel{padding:11px}}


/* v0.4.7: multi-day sightseeing draft from browser-saved TourAPI favorites */
.kcpg-hub .kcpg-trip-builder{margin:22px 0 4px;padding:14px;border:1px solid #c9dfe9;border-radius:12px;background:#fff;min-width:0}
.kcpg-hub .kcpg-trip-builder h3{margin:0 0 8px;font-size:17px;color:#163e5c}
.kcpg-hub .kcpg-trip-help{font-size:12px;line-height:1.7;color:#556d7e;margin:8px 0 14px;word-break:keep-all}
.kcpg-hub .kcpg-trip-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}
.kcpg-hub .kcpg-trip-controls label,.kcpg-hub .kcpg-trip-start-label{display:flex;flex-direction:column;gap:6px;font-weight:750;font-size:12px;color:#254a60;min-width:0}
.kcpg-hub .kcpg-trip-controls select,.kcpg-hub .kcpg-trip-start-label select{width:100%;max-width:100%;min-height:42px;padding:7px 10px;border:1px solid #b9d3e0;border-radius:8px;background:#fff;color:#243b4c;box-sizing:border-box}
.kcpg-hub .kcpg-trip-select-label{font-size:12px;font-weight:800;color:#254a60;margin:12px 0 7px}
.kcpg-hub .kcpg-trip-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;max-height:220px;overflow-y:auto;padding:8px;border:1px solid #e0eaf0;border-radius:8px;background:#f9fcfe}
.kcpg-hub .kcpg-trip-choice{display:flex;align-items:center;gap:8px;font-size:12px;line-height:1.6;padding:5px 6px;min-width:0;color:#254b62;cursor:pointer}
.kcpg-hub .kcpg-trip-choice input{width:17px;height:17px;flex:0 0 17px}
.kcpg-hub .kcpg-trip-choice span{overflow-wrap:anywhere}
.kcpg-hub .kcpg-trip-start-label{margin:12px 0}
.kcpg-hub .kcpg-trip-generate{min-height:43px;width:100%;border:1px solid #1276a4;background:#137cae;color:#fff;border-radius:9px;padding:10px 12px;font-size:14px;font-weight:800;cursor:pointer}
.kcpg-hub .kcpg-trip-generate:disabled{opacity:.65;cursor:progress}
.kcpg-hub .kcpg-trip-status{font-size:12px;color:#275770;line-height:1.65;margin:12px 0}
.kcpg-hub .kcpg-trip-result h4{font-size:16px;color:#143952;margin:15px 0}
.kcpg-hub .kcpg-trip-day{padding:13px;margin:10px 0;border:1px solid #d7e7ef;border-radius:11px;background:#f6fbff;min-width:0}
.kcpg-hub .kcpg-trip-day h5{margin:0 0 9px;font-size:15px;color:#183d55}
.kcpg-hub .kcpg-trip-day ol{margin:0 0 10px 21px;padding:0}
.kcpg-hub .kcpg-trip-day li{padding:5px 0;color:#20435c;font-size:13px;overflow-wrap:anywhere}
.kcpg-hub .kcpg-trip-day li span{display:block;font-size:11px;color:#617688;margin-top:2px}
.kcpg-hub .kcpg-trip-day a{display:inline-flex;padding:8px 10px;border:1px solid #b9d9e9;border-radius:7px;background:#fff;color:#126589;text-decoration:none;font-size:12px;font-weight:750}
.kcpg-hub .kcpg-trip-warning{font-size:12px;color:#9a5c1a;background:#fff6e6;border-radius:8px;padding:10px}
@media(max-width:600px){.kcpg-hub .kcpg-trip-controls,.kcpg-hub .kcpg-trip-choices{grid-template-columns:1fr}.kcpg-hub .kcpg-trip-builder{padding:10px}}

/* v0.4.9: bus stop discovery and parking map links */
.kcpg-hub .kcpg-bus-search-area{grid-column:1/-1;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.kcpg-hub .kcpg-bus-find{border:1px solid #c4dbea;background:#edf6ff;color:#123f63;border-radius:10px;padding:12px 18px;font-weight:750;cursor:pointer}
.kcpg-hub .kcpg-bus-find:focus-visible,.kcpg-hub .kcpg-bus-option:focus-visible{outline:3px solid #236cbb;outline-offset:2px}
.kcpg-hub .kcpg-bus-find:disabled{opacity:.6;cursor:wait}
.kcpg-hub .kcpg-bus-selection{font-size:13px;line-height:1.5;color:#526783}
.kcpg-hub .kcpg-bus-candidates{grid-column:1/-1;display:grid;gap:7px;max-height:340px;overflow-y:auto;padding:8px;background:#f6f9fc;border:1px solid #dbe7f0;border-radius:12px}
.kcpg-hub .kcpg-bus-candidates[hidden]{display:none!important}
.kcpg-hub .kcpg-bus-option{display:block;text-align:left;width:100%;padding:11px 12px;border:1px solid #deebf4;border-radius:9px;color:#223a57;background:white;cursor:pointer;font:inherit;font-size:14px}
.kcpg-hub .kcpg-bus-option:hover{border-color:#8abce5;background:#eef7ff}
.kcpg-hub .kcpg-parking-map{display:inline-flex;margin-top:9px;padding:8px 12px;border-radius:8px;background:#eff8f4;color:#155c44;text-decoration:none;font-size:13px;font-weight:750;align-self:flex-start}
.kcpg-hub .kcpg-parking-map:hover{text-decoration:underline}
/* v0.5.0 — accessible, responsive bus stop discovery + opt-in nearby + map. */
.kcpg-hub .kcpg-bus-geo-notice{grid-column:1/-1;margin:0;color:#586b7f;font-size:12px;line-height:1.65}
.kcpg-hub .kcpg-bus-nearby{border:1px solid #bad7c7;background:#e8f8ef;color:#135d3f;border-radius:10px;padding:12px 16px;font-weight:750;cursor:pointer}
.kcpg-hub .kcpg-bus-nearby:disabled{opacity:.6;cursor:wait}
.kcpg-hub .kcpg-bus-find:focus-visible,.kcpg-hub .kcpg-bus-nearby:focus-visible,.kcpg-hub .kcpg-bus-stop-actions a:focus-visible,.kcpg-hub .kcpg-bus-stop-actions button:focus-visible{outline:3px solid #296fa8;outline-offset:2px}
.kcpg-hub .kcpg-bus-map-section{grid-column:1/-1;width:100%;min-width:0;margin:2px 0 8px}
.kcpg-hub .kcpg-bus-map-section[hidden]{display:none!important}
.kcpg-hub .kcpg-bus-map-canvas{height:320px;min-width:0;width:100%;box-sizing:border-box;background:#edf3f7;border:1px solid #d8e5f0;border-radius:12px;overflow:hidden;font-size:13px}
.kcpg-hub .kcpg-bus-map-note{margin:8px 0 0;color:#5b7286;font-size:12px;line-height:1.6}
.kcpg-hub .kcpg-bus-candidates{max-height:420px}
.kcpg-hub .kcpg-bus-stop-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:12px 13px;border:1px solid #dce9f3;border-radius:10px;background:#fff}
.kcpg-hub .kcpg-bus-stop-main{display:flex;flex-direction:column;gap:3px;min-width:0}
.kcpg-hub .kcpg-bus-stop-main strong{font-size:14px;font-weight:800;color:#173853}
.kcpg-hub .kcpg-bus-stop-main span{font-size:12px;color:#5e7287;line-height:1.5}
.kcpg-hub .kcpg-bus-stop-actions{display:flex;flex-wrap:wrap;gap:7px}
.kcpg-hub .kcpg-bus-stop-actions button,.kcpg-hub .kcpg-bus-stop-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:38px;box-sizing:border-box;padding:7px 11px;border-radius:8px;font-size:12px;font-weight:750;line-height:1.2;text-decoration:none;cursor:pointer}
.kcpg-hub .kcpg-bus-stop-actions button{border:1px solid #1388be;background:#117eb2;color:white}
.kcpg-hub .kcpg-bus-stop-actions a{border:1px solid #bad5e6;background:#f0f8ff;color:#155477}
.kcpg-hub .kcpg-bus-popup{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:155px;font-size:12px;line-height:1.5}
.kcpg-hub .kcpg-bus-popup strong{font-size:14px;color:#173853}
.kcpg-hub .kcpg-bus-popup button{padding:7px 9px;border:1px solid #a4d7ec;border-radius:6px;background:#eaf7ff;color:#194e70;cursor:pointer}
.kcpg-hub .kcpg-bus-popup a{font-size:12px;text-decoration:underline;color:#12629a}
@media(max-width:720px){
  .kcpg-hub .kcpg-bus-map-canvas{height:270px}
  .kcpg-hub .kcpg-bus-stop-card{align-items:stretch}
  .kcpg-hub .kcpg-bus-stop-actions{width:100%}
  .kcpg-hub .kcpg-bus-stop-actions button,.kcpg-hub .kcpg-bus-stop-actions a{flex:1;min-width:115px}
  .kcpg-hub .kcpg-bus-find,.kcpg-hub .kcpg-bus-nearby{flex:1;min-width:132px}
}

/* v0.5.2: explicit local parking search fallback */
.kcpg-parking-alternative{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin:10px 0;}
.kcpg-parking-map-search{display:inline-flex;align-items:center;min-height:42px;padding:10px 14px;border:1px solid #267e72;border-radius:9px;background:#f1faf7;color:#075a4e;font-weight:700;text-decoration:none;max-width:100%;box-sizing:border-box;}
.kcpg-parking-map-search:hover,.kcpg-parking-map-search:focus{background:#ddf4ec;text-decoration:underline;}
.kcpg-results>.kcpg-parking-map-search{margin:12px 0;}

/* Parking location preview (v0.5.3) */
.kcpg-parking-mapbox{margin:1rem 0;padding:1rem;border:1px solid #d4dce1;border-radius:12px}.kcpg-parking-iframe{width:100%;height:340px;border:0;border-radius:8px;background:#eef1f2}.kcpg-parking-show-map{cursor:pointer;margin-top:.65rem;padding:.5rem .75rem;border:1px solid #bccdd2;border-radius:7px;background:#fff;color:#234e65;font:inherit}@media(max-width:600px){.kcpg-parking-iframe{height:270px}}

/* 0.5.4 Parking results: named locations first and 10 per page */
.kcpg-hub .kcpg-parking-filter{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:9px;margin:13px 0;}
.kcpg-hub .kcpg-parking-filter .kcpg-hint{margin:0;}
.kcpg-hub .kcpg-parking-unnamed-toggle{font:inherit;font-size:13px;font-weight:700;background:#f4f8fb;color:#23516d;border:1px solid #c9dce7;border-radius:9px;padding:9px 13px;cursor:pointer;}
.kcpg-hub .kcpg-parking-unnamed-toggle:hover{background:#e5f1f8;}
.kcpg-hub .kcpg-parking-unnamed-toggle[hidden]{display:none;}
