/* =========================================================
   恋詣で koimoude — 本番スタイル（ワイヤーのレイアウトを継承し
   ブランドフォント=明朝/ゴシックで上品に再構成）
   ========================================================= */
:root{
  --ink:#2b2925; --muted:#8d877c; --line:#cfc9bd; --line2:#e2ddd2;
  --fill:#efece4; --fill2:#f6f3ec; --paper:#ffffff;
  --rose:#bb4d68; --plum:#9c6b86; --gold:#b08838; --green:#5f8a5f;
  --rose-soft:#f3dde3; --gold-soft:#f0e4c8; --green-soft:#dceadc;
  --navy:#2a2350; --paper-pink:#fdf3f0; --bg:#faf7f4;
  --serif:"Noto Serif JP", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --sans:"Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
  --radius:13px;
  --maxw:1180px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--sans);color:var(--ink);background:var(--bg);
  font-size:15px;line-height:1.7;-webkit-font-smoothing:antialiased;}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;line-height:1.35;margin:0;}
.km-wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px;}

/* ---------- header ---------- */
.km-header{position:sticky;top:0;z-index:50;background:rgba(246,243,236,.92);
  backdrop-filter:saturate(1.2) blur(6px);border-bottom:1px solid var(--line);}
.km-nav{display:flex;align-items:center;gap:26px;max-width:var(--maxw);margin:0 auto;padding:14px 24px;}
.km-logo{display:flex;align-items:center;gap:6px;font-family:var(--serif);font-size:23px;color:var(--ink);}
.km-logo .pin{color:var(--rose);}
.km-menu{display:flex;gap:22px;font-size:15px;}
.km-menu a:hover{color:var(--rose);}
.km-nav .sp{flex:1;}
.km-search{display:flex;align-items:center;gap:8px;padding:8px 13px;border:1.4px solid var(--line);
  border-radius:9px;background:var(--paper);color:var(--muted);font-size:13px;min-width:200px;}
.km-search input{border:0;background:transparent;outline:0;width:100%;font-family:var(--sans);color:var(--ink);}
.km-ico{width:38px;height:38px;border:1.4px solid var(--line);border-radius:9px;display:flex;
  align-items:center;justify-content:center;font-size:15px;color:var(--muted);position:relative;background:var(--paper);}
.km-ico .dot{position:absolute;top:-3px;right:-3px;width:9px;height:9px;border-radius:50%;
  background:var(--rose);border:1.5px solid var(--paper);}
.km-burger{display:none;font-size:22px;background:none;border:0;cursor:pointer;color:var(--ink);}
.km-mobile-menu{display:none;}

/* ---------- buttons ---------- */
.km-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:12px 18px;
  border-radius:10px;font-size:15px;font-family:var(--sans);border:1.4px solid transparent;cursor:pointer;
  transition:transform .08s ease, box-shadow .15s ease;line-height:1.2;text-align:center;}
.km-btn:hover{transform:translateY(-1px);}
.km-btn.pri{background:var(--rose);color:#fff;}
.km-btn.out{background:var(--paper);border-color:var(--plum);color:var(--plum);}
.km-btn.gold{background:var(--gold);color:#fff;}
.km-btn.ghost{background:transparent;color:var(--muted);padding-left:0;}
.km-btn.sm{padding:9px 14px;font-size:14px;}
.km-btn.block{width:100%;}

/* ---------- chips / tags ---------- */
.km-chips{display:flex;flex-wrap:wrap;gap:9px;}
.km-chip{display:inline-flex;align-items:center;gap:5px;padding:8px 15px;border:1.3px solid var(--line);
  border-radius:20px;font-size:14px;background:var(--paper);white-space:nowrap;cursor:pointer;}
.km-chip:hover{border-color:var(--rose);color:var(--rose);}
.km-chip.sel{background:var(--rose-soft);border-color:var(--rose);color:var(--rose);}
.km-tag{display:inline-flex;align-items:center;padding:3px 10px;border-radius:5px;font-size:12px;}
.km-tag.benefit{background:var(--rose-soft);color:var(--rose);}
.km-tag.attr{background:var(--fill);color:var(--muted);}
.km-tag.goshuin{background:var(--green-soft);color:var(--green);}

/* ---------- stars ---------- */
.km-stars{color:var(--gold);letter-spacing:1px;font-size:15px;}
.km-stars .n{color:var(--muted);font-size:12px;margin-left:5px;}

/* ---------- sections ---------- */
.km-sec{padding:46px 0;}
.km-sec + .km-sec{border-top:1px solid var(--line2);}
.km-sechead{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:12px;}
.km-sechead .t{display:flex;align-items:center;gap:10px;font-size:24px;font-family:var(--serif);}
.km-sechead .t::before{content:"";width:4px;height:24px;background:var(--gold);border-radius:2px;}
.km-more{font-size:13px;color:var(--muted);}
.km-more:hover{color:var(--rose);}

.km-g2{display:grid;grid-template-columns:1fr 1fr;gap:22px;}
.km-g3{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
.km-g4{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;}

/* 行事スライドショー（4件以上） */
.km-carousel{position:relative;}
.km-carousel__track{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding:4px 2px 10px;-ms-overflow-style:none;scrollbar-width:none;}
.km-carousel__track::-webkit-scrollbar{display:none;}
.km-carousel__track > .km-card{flex:0 0 calc((100% - 60px)/4);scroll-snap-align:start;}
.km-carousel__nav{position:absolute;top:calc(50% - 6px);transform:translateY(-50%);width:40px;height:40px;border-radius:50%;
  border:1px solid var(--line);background:#fff;color:var(--plum);font-size:22px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;box-shadow:0 3px 12px rgba(0,0,0,.14);z-index:3;transition:opacity .2s,background .2s;}
.km-carousel__nav:hover{background:var(--plum);color:#fff;}
.km-carousel__nav.prev{left:-8px;}
.km-carousel__nav.next{right:-8px;}
.km-carousel__nav[hidden]{display:none;}
@media(max-width:960px){.km-carousel__track > .km-card{flex-basis:calc((100% - 40px)/3);}}
@media(max-width:768px){.km-carousel__track > .km-card{flex-basis:calc((100% - 20px)/2);}}
@media(max-width:560px){.km-carousel__track > .km-card{flex-basis:82%;}.km-carousel__nav{display:none;}}

/* ---------- placeholders ---------- */
.km-ph{position:relative;background:repeating-linear-gradient(135deg,#eceae2 0 9px,#f6f4ee 9px 18px);
  border:1px solid var(--line2);border-radius:9px;display:flex;align-items:center;justify-content:center;
  color:var(--muted);font-size:11px;width:100%;min-height:100px;}

/* ---------- cards ---------- */
.km-card{border:1.3px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--paper);
  display:flex;flex-direction:column;transition:box-shadow .18s ease, transform .18s ease;}
.km-card:hover{box-shadow:0 18px 40px -28px rgba(43,41,37,.45);transform:translateY(-2px);}
.km-card__media{display:block;position:relative;height:140px;overflow:hidden;}
.km-card__media img{width:100%;height:100%;object-fit:cover;}
.km-card__media .km-ph{height:100%;border:0;border-radius:0;}
.km-card__body{padding:14px 15px;display:flex;flex-direction:column;gap:6px;}
.km-card__name{font-size:16px;}
.km-card__name a:hover{color:var(--rose);}
.km-card__one{font-size:13px;color:#5a554c;margin:0;}
.km-area{font-size:11px;color:var(--muted);letter-spacing:.02em;}
.km-rank{position:absolute;top:8px;left:8px;width:30px;height:30px;border-radius:50%;background:var(--ink);
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;}

/* rankcard (list) */
.km-rankcard{display:flex;gap:16px;border:1.3px solid var(--line);border-radius:var(--radius);padding:16px;
  background:var(--paper);position:relative;}
.km-rankcard .km-ph,.km-rankcard__media{width:160px;flex:0 0 160px;align-self:stretch;min-height:120px;
  border-radius:9px;overflow:hidden;}
.km-rankcard__media img{width:100%;height:100%;object-fit:cover;}
.km-rankcard .km-rank{top:-11px;left:-11px;width:32px;height:32px;}
.km-rankcard__main{flex:1;display:flex;flex-direction:column;gap:7px;}

/* ---------- banner ---------- */
.km-banner{border:1.3px dashed var(--line);border-radius:var(--radius);padding:20px 22px;display:flex;
  align-items:center;justify-content:space-between;gap:16px;background:var(--fill2);}
.km-banner.gold{border-style:solid;border-color:var(--gold);background:var(--gold-soft);}
.km-banner .bt{font-size:17px;font-family:var(--serif);}
.km-banner .bs{font-size:12px;color:var(--muted);margin-top:4px;}

/* ---------- breadcrumb ---------- */
.km-bcrumb{font-size:12px;color:var(--muted);padding:14px 0;}
.km-bcrumb b{color:var(--ink);font-weight:400;}
.km-bcrumb a:hover{color:var(--rose);}

/* ---------- table ---------- */
.km-tbl{border:1px solid var(--line2);border-radius:11px;overflow:hidden;}
.km-tbl .tr{display:flex;border-bottom:1px solid var(--line2);font-size:14px;}
.km-tbl .tr:last-child{border-bottom:none;}
.km-tbl .th{flex:0 0 130px;background:var(--fill2);padding:12px 14px;color:var(--muted);font-size:13px;}
.km-tbl .td{padding:12px 14px;}

/* ---------- vote bars ---------- */
.km-vote{display:flex;align-items:center;gap:11px;margin-bottom:9px;}
.km-vote .lbl{flex:0 0 100px;font-size:13px;}
.km-vote .track{flex:1;height:12px;background:var(--fill);border-radius:6px;overflow:hidden;}
.km-vote .fill{height:100%;background:var(--rose);}
.km-vote .pct{font-size:11px;color:var(--muted);flex:0 0 44px;text-align:right;}

/* ---------- facts ---------- */
.km-facts{display:flex;flex-wrap:wrap;gap:8px;}
.km-fact{border:1.2px solid var(--line);border-radius:7px;padding:6px 11px;font-size:12px;color:var(--muted);}
.km-fact b{color:var(--ink);font-weight:500;}

/* ---------- hero ---------- */
.km-hero{position:relative;min-height:420px;display:grid;grid-template-columns:1.1fr .9fr;color:#fff;
  background:linear-gradient(120deg,#6a3550,#2a2350);overflow:hidden;}
.km-hero__img{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.55;}
.km-hero .ov{position:absolute;inset:0;background:linear-gradient(90deg,rgba(43,35,80,.7),rgba(43,35,80,.2));}
.km-hero .in{position:relative;z-index:1;padding:72px 0 72px 0;max-width:var(--maxw);margin:0 auto;width:100%;
  display:flex;flex-direction:column;justify-content:center;}
.km-hero .in-pad{padding-left:24px;padding-right:24px;max-width:620px;}
.km-hero h1{font-size:44px;margin:0 0 16px;font-weight:500;text-shadow:0 1px 14px rgba(0,0,0,.3);}
.km-hero p.sub{font-size:17px;margin:0 0 24px;opacity:.95;}
.km-hero .km-search{background:var(--paper);color:var(--muted);margin-bottom:18px;}
.km-hero .km-btn.out{border-color:#fff;color:#fff;background:transparent;}

/* ---------- layout split ---------- */
.km-side{display:grid;grid-template-columns:1fr 340px;gap:42px;align-items:start;}
.km-filt{display:grid;grid-template-columns:250px 1fr;gap:42px;align-items:start;}
.km-sticky{position:sticky;top:90px;}
.km-sidebox{border:1.3px solid var(--line);border-radius:var(--radius);padding:18px;background:var(--fill2);}

/* ---------- forms ---------- */
.km-field{border:1.3px solid var(--line);border-radius:9px;padding:11px 14px;font-size:14px;
  background:var(--paper);width:100%;font-family:var(--sans);color:var(--ink);}
textarea.km-field{min-height:96px;resize:vertical;}
.km-star-input{font-size:28px;color:var(--line);letter-spacing:4px;cursor:pointer;display:inline-flex;}
.km-star-input .on{color:var(--gold);}
.km-ai-bar{display:flex;align-items:center;gap:9px;font-size:12px;background:var(--green-soft);color:var(--green);
  padding:10px 13px;border-radius:9px;}
.km-ai-bar.warn{background:#f6ead0;color:#9a7320;}
.km-seg{display:inline-flex;border:1.3px solid var(--line);border-radius:10px;overflow:hidden;}
.km-seg .o{padding:10px 16px;font-size:14px;color:var(--muted);cursor:pointer;border:0;background:transparent;font-family:var(--sans);}
.km-seg .o.sel{background:var(--ink);color:#fff;}
.km-toggle{width:38px;height:21px;border-radius:11px;background:var(--rose);position:relative;flex:0 0 auto;display:inline-block;}
.km-toggle::after{content:"";position:absolute;top:2px;right:2px;width:17px;height:17px;border-radius:50%;background:#fff;}
.km-toggle.off{background:var(--line);}
.km-toggle.off::after{right:auto;left:2px;}
.km-torow{display:flex;align-items:center;justify-content:space-between;padding:9px 0;font-size:14px;border-bottom:1px solid var(--line2);}

/* ---------- calendar ---------- */
.km-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
.km-cal .d{min-height:74px;border:1px solid var(--line2);border-radius:7px;padding:6px;font-size:12px;color:var(--muted);}
.km-cal .d.head{min-height:0;text-align:center;border:none;background:transparent;padding:2px;}
.km-cal .d.ev{background:var(--gold-soft);border-color:var(--gold);color:var(--gold);}
.km-cal .d.on{background:var(--rose-soft);border-color:var(--rose);color:var(--rose);}
.km-cal .evp{display:block;font-size:9px;color:var(--green);margin-top:3px;}

/* ---------- badge coins ---------- */
.km-badge-coin{width:52px;height:52px;border-radius:50%;border:1.4px solid var(--gold);background:var(--gold-soft);
  display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--gold);}

/* ---------- page header ---------- */
.km-pagehead{background:var(--fill2);padding:40px 0;border-bottom:1px solid var(--line2);}
.km-pagehead h1{font-size:32px;margin-bottom:12px;}
.km-pagehead h1 .accent{color:var(--rose);}
.km-lead{max-width:760px;color:#5a554c;}

/* ---------- mypage side nav ---------- */
.km-navside{border:1.3px solid var(--line);border-radius:12px;overflow:hidden;}
.km-navside .it{display:block;padding:13px 16px;font-size:14px;border-bottom:1px solid var(--line2);}
.km-navside .it:last-child{border-bottom:none;}
.km-navside .it.sel,.km-navside .it:hover{background:var(--rose-soft);color:var(--rose);}

/* ---------- route planner ---------- */
.km-plan{display:grid;grid-template-columns:440px 1fr;border-top:1px solid var(--line2);border-bottom:1px solid var(--line2);}
.km-plan__input{padding:28px 32px;border-right:1px solid var(--line2);}
.km-plan__map{position:relative;min-height:560px;background:repeating-linear-gradient(135deg,#e6e3da 0 11px,#efece4 11px 22px);}
#km-map{position:absolute;inset:0;}
.km-result-list .row{display:flex;gap:11px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line2);}
.km-result-list .row:last-child{border-bottom:0;}
.km-numbadge{flex:0 0 26px;width:26px;height:26px;border-radius:50%;background:var(--ink);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:12px;}

/* ---------- modal ---------- */
.km-modal-backdrop{position:fixed;inset:0;background:rgba(43,41,37,.55);z-index:100;display:none;align-items:flex-start;justify-content:center;overflow:auto;padding:50px 16px;}
.km-modal-backdrop.open{display:flex;}
.km-modal{width:560px;max-width:100%;background:var(--paper);border-radius:16px;overflow:hidden;
  box-shadow:0 30px 70px -30px rgba(0,0,0,.6);}
.km-modal__head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line2);}

/* ---------- toast ---------- */
.km-toast{position:fixed;top:24px;right:24px;background:var(--ink);color:#fff;padding:13px 18px;border-radius:11px;
  font-size:14px;box-shadow:0 12px 30px -14px rgba(0,0,0,.6);z-index:200;opacity:0;transform:translateY(-10px);
  transition:.25s ease;pointer-events:none;}
.km-toast.show{opacity:1;transform:translateY(0);}

/* ---------- route tray (floating) ---------- */
.km-tray{position:fixed;right:18px;bottom:18px;z-index:60;background:var(--paper);border:1.3px solid var(--rose);
  border-radius:14px;padding:12px 14px;box-shadow:0 18px 40px -22px rgba(43,41,37,.5);display:none;max-width:280px;}
.km-tray.show{display:block;}
.km-tray h4{font-size:14px;margin-bottom:8px;}
.km-tray ul{list-style:none;margin:0 0 10px;padding:0;font-size:13px;display:flex;flex-direction:column;gap:5px;}
.km-tray li{display:flex;justify-content:space-between;gap:8px;}
.km-tray li button{border:0;background:none;color:var(--muted);cursor:pointer;}

/* ---------- footer ---------- */
.km-foot{background:var(--ink);color:#cfc9bd;padding:40px 0 28px;margin-top:40px;}
.km-foot .ft{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr;gap:24px;font-size:13px;}
.km-foot .ft .h{color:#fff;margin-bottom:10px;font-family:var(--serif);}
.km-foot .ft a{opacity:.75;display:block;margin-bottom:6px;}
.km-foot .ft a:hover{opacity:1;color:#fff;}
.km-foot .legal{font-size:11px;opacity:.55;border-top:1px solid #4a463f;margin-top:22px;padding-top:16px;}

/* ---------- notices ---------- */
.km-notice{padding:12px 16px;border-radius:10px;margin:16px 0;font-size:14px;}
.km-notice.ok{background:var(--green-soft);color:var(--green);}
.km-notice.warn{background:#f6ead0;color:#9a7320;}

.km-empty{padding:40px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:12px;}

/* ---------- prose ---------- */
.km-prose{font-size:16px;line-height:1.95;}
.km-prose p{margin:0 0 1.2em;}
.km-prose h2{font-size:22px;margin:1.6em 0 .6em;}
.km-storybox{border:1.3px solid var(--gold);background:var(--gold-soft);border-radius:var(--radius);padding:18px 20px;margin:18px 0;}
.km-storybox .bt{font-family:var(--serif);font-size:17px;margin-bottom:8px;}

/* ---------- responsive ---------- */
@media(max-width:900px){
  .km-menu,.km-nav .km-search{display:none;}
  .km-burger{display:block;}
  .km-mobile-menu.open{display:block;padding:12px 24px;border-top:1px solid var(--line);background:var(--fill2);}
  .km-mobile-menu a{display:block;padding:10px 0;border-bottom:1px solid var(--line2);}
  .km-hero{grid-template-columns:1fr;min-height:auto;}
  .km-g4{grid-template-columns:1fr 1fr;}
  .km-g3{grid-template-columns:1fr;}
  .km-g2{grid-template-columns:1fr;}
  .km-side,.km-filt{grid-template-columns:1fr;}
  .km-sticky{position:static;}
  .km-plan{grid-template-columns:1fr;}
  .km-plan__input{border-right:0;border-bottom:1px solid var(--line2);}
  .km-foot .ft{grid-template-columns:1fr 1fr;}
  .km-hero h1{font-size:34px;}
  .km-rankcard{flex-direction:column;}
  .km-rankcard .km-ph,.km-rankcard__media{width:100%;flex:none;min-height:160px;}
}
@media(max-width:520px){
  .km-g4{grid-template-columns:1fr;}
  .km-foot .ft{grid-template-columns:1fr;}
}

/* ============ ページネーション（トンマナ調整） ============ */
.km-wrap .pagination{margin-top:28px}
.km-wrap .pagination .screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}
.km-wrap .pagination .nav-links{display:flex;justify-content:center;align-items:center;gap:8px;flex-wrap:wrap}
.km-wrap .pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 13px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--plum);font-size:14px;line-height:1;text-decoration:none;font-family:var(--serif);transition:.15s ease}
.km-wrap .pagination a.page-numbers:hover{border-color:var(--rose);color:var(--rose);box-shadow:0 2px 8px rgba(201,107,134,.15)}
.km-wrap .pagination .page-numbers.current{background:var(--rose);border-color:var(--rose);color:#fff;font-weight:600}
.km-wrap .pagination .page-numbers.dots{border-color:transparent;background:transparent;color:var(--muted)}
.km-wrap .pagination .prev.page-numbers,.km-wrap .pagination .next.page-numbers{color:var(--navy);font-weight:600}

/* ============ SVGアイコン ============ */
.km-svg{vertical-align:-.18em}
.km-btn .km-svg{vertical-align:-.2em;margin-right:3px}
.km-area .km-svg{opacity:.45;vertical-align:-.13em;margin-right:2px}
.km-logo .pin{display:inline-flex;align-items:center}
.km-logo .pin .km-svg{color:var(--rose);vertical-align:-.24em;margin-right:4px}
.km-ico .km-svg,.km-burger .km-svg{vertical-align:middle}
.km-search .km-svg{opacity:.5;vertical-align:-.22em}

/* ============ 行事カレンダー 月ナビ ============ */
.km-monthnav{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}
.km-monthnav__label{font-family:var(--serif);font-size:20px;color:var(--navy);font-weight:600;min-width:150px;text-align:center}
.km-chip.on{background:var(--rose);border-color:var(--rose);color:#fff}
.km-empty a{color:var(--rose);font-weight:600}

/* ============ カレンダー：色ドット＋凡例（種別名は凡例で表示） ============ */
.km-cal-legend{display:flex;gap:14px;flex-wrap:wrap;margin:0 0 14px;font-size:12px;color:var(--ink)}
.km-cal-legend .lg{display:inline-flex;align-items:center;gap:6px}
.km-dot{display:inline-block;width:9px;height:9px;border-radius:50%;vertical-align:middle;flex:0 0 auto}
.km-cal .d{position:relative}
.km-cal .d .dn{display:block}
.km-cal .d .km-dot{position:absolute;left:7px;bottom:7px;width:10px;height:10px}
.km-cal .d.has{border-color:var(--rose);background:#fff}

/* 複数種別ドットを横並び（1日に複数行事がある場合） */
.km-cal .d .km-dots{position:absolute;left:7px;right:7px;bottom:7px;display:flex;gap:3px;flex-wrap:wrap}
.km-cal .d .km-dots .km-dot{position:static;width:9px;height:9px}

/* カレンダー：種別をテキスト表示（1日複数対応・縦積み） */
.km-cal .d{display:flex;flex-direction:column}
.km-cal .d .dn{font-weight:600}
.km-cal .d .km-evs{display:flex;flex-direction:column;gap:2px;margin-top:3px}
.km-cal .d .km-evt{font-size:9.5px;line-height:1.3;font-weight:700;padding:0 3px;border-left:2px solid currentColor;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* カレンダー：種別を右リストと同じ塗りバッジに統一（白抜き文字・角丸） */
.km-cal .d .km-evt{color:#fff;font-size:9px;line-height:1.5;font-weight:600;padding:1px 6px;border-radius:6px;border-left:0;align-self:flex-start;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.km-cal .d .km-evs{gap:3px}

/* ルートプランナー地図 */
.km-plan__map{position:relative;min-height:480px}
#km-map{position:absolute;inset:0;border-radius:12px;z-index:0}
@media(max-width:820px){.km-plan__map{min-height:340px;position:relative}#km-map{position:absolute;inset:0}}

/* ルートプランナー：空のときの案内 */
.km-guide{text-align:center;padding:44px 22px;background:var(--fill2);border:1px solid var(--line);border-radius:16px;margin:6px 0 22px}
.km-guide__ic{width:60px;height:60px;margin:0 auto 12px;border-radius:50%;background:#fff;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--rose)}
.km-guide h2{font-family:var(--serif);font-size:20px;color:var(--navy);margin-bottom:8px}
.km-guide .km-lead{max-width:560px;margin:0 auto}
.km-guide__btns{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:16px}

/* ルートプランナー：日別ヘッダー */
.km-dayhead{font-family:var(--serif);font-weight:700;font-size:14px;border-left:4px solid;padding:2px 10px;margin:10px 0 8px}
.km-numbadge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--rose);color:#fff;font-size:12px;font-weight:700;flex:0 0 auto;margin-right:8px}

/* 行事の出典表示・免責 */
.km-src{font-size:10.5px;color:var(--muted);margin-top:3px;line-height:1.5}
.km-src a{color:var(--plum);text-decoration:underline}
.km-src .dt{color:var(--muted)}
.km-disclaimer{font-size:11.5px;color:#9a7a55;background:#fbf6ec;border:1px solid #e8dcc0;border-radius:8px;padding:9px 13px;margin-top:12px}

/* 会員認証フォーム */
.km-authbox{max-width:420px;margin:32px auto;background:#fff;border:1px solid var(--line2);border-radius:14px;padding:28px 26px;box-shadow:0 6px 24px rgba(0,0,0,.05)}
.km-authtitle{font-size:22px;margin:0 0 6px;text-align:center}
.km-authlead{font-size:13px;color:var(--muted);text-align:center;margin:0 0 18px}
.km-authform{display:flex;flex-direction:column;gap:14px}
.km-authform label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--ink);font-weight:500}
.km-authform input[type=email],.km-authform input[type=password],.km-authform input[type=text]{
  padding:11px 13px;border:1.4px solid var(--line);border-radius:9px;font-size:15px;font-family:inherit;background:#fff}
.km-authform input:focus{outline:none;border-color:var(--plum)}
.km-authform .km-check{flex-direction:row;align-items:flex-start;gap:8px;font-weight:400;font-size:12.5px;color:var(--muted);line-height:1.5}
.km-authform .km-check input{margin-top:2px}
.km-authform .km-check a{color:var(--plum);text-decoration:underline}
.km-btn.block{width:100%;justify-content:center;padding:12px}
.km-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.km-authlinks{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-top:16px;font-size:13px}
.km-authlinks a{color:var(--plum);text-decoration:none}
.km-authlinks a:hover{text-decoration:underline}
.km-btn.ghost{background:transparent;border:1px solid var(--line);color:var(--muted)}
