/* ===== 京都漫游手账 · Kyoto Travel Journal Map ===== */
@import url('https://fonts.googleapis.com/css2?family=Zen+Maru+Gothic:wght@400;500;700&family=Yomogi&family=Shippori+Mincho:wght@500;700&display=swap');

:root{
  --paper:#f4ecdc;
  --paper2:#efe4cd;
  --ink:#3b342c;
  --ink-soft:#6f655a;
  --vermilion:#c5482f;   /* 京都朱 */
  --matcha:#6f9268;
  --gold:#c79a4a;
  --indigo:#41607a;
  --line:#cdbfa3;
  --shadow:rgba(80,60,30,.18);
  --tape:rgba(201,138,107,.55);
}

*{box-sizing:border-box}
html,body{margin:0;height:100%;font-family:'Zen Maru Gothic',-apple-system,'PingFang SC',sans-serif;color:var(--ink);background:var(--paper)}
body{overflow:hidden}

/* paper grain overlay over everything */
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.5;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
}

#app{display:flex;height:100%;width:100%}

/* ---------- Sidebar ---------- */
#side{
  width:374px;min-width:374px;height:100%;display:flex;flex-direction:column;
  background:linear-gradient(180deg,var(--paper) 0%,var(--paper2) 100%);
  border-right:2px solid var(--line);box-shadow:4px 0 18px var(--shadow);z-index:600;position:relative;
}
#side::after{content:"";position:absolute;top:0;right:0;width:2px;height:100%;
  background:repeating-linear-gradient(180deg,var(--vermilion) 0 8px,transparent 8px 16px);opacity:.25}

.head{padding:18px 22px 12px;position:relative}
.head .tape{position:absolute;top:-10px;left:28px;width:96px;height:26px;background:var(--tape);
  transform:rotate(-4deg);box-shadow:0 2px 4px var(--shadow);
  -webkit-mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.title{font-family:'Shippori Mincho',serif;font-weight:700;font-size:27px;letter-spacing:1px;line-height:1.1;margin:6px 0 2px}
.title .red{color:var(--vermilion)}
.subtitle{font-family:'Yomogi',cursive;font-size:13px;color:var(--ink-soft);margin-top:4px}
.home-chip{display:inline-flex;align-items:center;gap:6px;margin-top:10px;font-size:12.5px;
  background:#fff7e8;border:1.5px dashed var(--vermilion);border-radius:20px;padding:4px 12px;color:var(--vermilion);font-weight:500}

/* mode toggle */
.modes{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;padding:6px 18px 14px}
.mode-btn{cursor:pointer;border:2px solid var(--line);background:#fbf4e4;border-radius:14px;padding:9px 4px 7px;
  text-align:center;transition:.18s;font-family:inherit;color:var(--ink-soft)}
.mode-btn .ic{font-size:20px;display:block;line-height:1}
.mode-btn .lb{font-size:11px;margin-top:3px;display:block;font-weight:500}
.mode-btn:hover{transform:translateY(-2px)}
.mode-btn.on{background:var(--ink);color:#fff;border-color:var(--ink);box-shadow:0 4px 10px var(--shadow)}
.mode-btn.on .lb{color:#fff}

.iso-hint{padding:0 20px 8px;font-size:11.5px;color:var(--ink-soft);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.iso-hint .swatch{display:inline-block;width:14px;height:11px;border-radius:3px;border:1px solid rgba(0,0,0,.15)}

.divider{height:1px;margin:2px 20px;background:repeating-linear-gradient(90deg,var(--line) 0 6px,transparent 6px 11px)}

.scroll{flex:1;overflow-y:auto;padding:12px 18px 28px}
.scroll::-webkit-scrollbar{width:8px}
.scroll::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}

.sec-label{font-family:'Yomogi',cursive;font-size:13px;color:var(--vermilion);margin:6px 2px 9px;display:flex;align-items:center;gap:6px}
.sec-label::before{content:"✿"}

/* area chips */
.areas{display:flex;flex-wrap:wrap;gap:8px}
.area-chip{cursor:pointer;border:2px solid var(--line);background:#fbf4e4;border-radius:16px;
  padding:7px 12px 6px;font-size:13px;font-weight:500;transition:.16s;display:flex;align-items:center;gap:5px;line-height:1.1}
.area-chip .e{font-size:16px}
.area-chip:hover{transform:translateY(-2px) rotate(-1deg);box-shadow:0 4px 9px var(--shadow)}
.area-chip.on{color:#fff;border-color:transparent;box-shadow:0 4px 12px var(--shadow)}

/* area detail */
#detail{margin-top:14px}
.card{background:#fffaf0;border:2px solid var(--line);border-radius:16px;padding:15px 16px;position:relative;
  box-shadow:0 4px 12px var(--shadow)}
.card .pin{position:absolute;top:-9px;right:16px;font-size:20px;filter:drop-shadow(0 2px 1px var(--shadow))}
.card h3{margin:0 0 4px;font-family:'Shippori Mincho',serif;font-size:19px;display:flex;align-items:center;gap:7px}
.blurb{font-size:13px;line-height:1.65;color:var(--ink-soft);margin:6px 0 12px}
.rec-line{display:flex;align-items:center;gap:8px;font-size:13px;background:#f3f7ef;border-left:4px solid var(--matcha);
  padding:8px 11px;border-radius:8px;margin-bottom:6px}
.rec-line b{color:var(--matcha)}
.time-line{display:flex;align-items:center;gap:8px;font-size:13px;background:#f6f1fa;border-left:4px solid var(--indigo);padding:8px 11px;border-radius:8px}

.guide-t{font-family:'Yomogi',cursive;font-size:13px;color:var(--vermilion);margin:15px 2px 8px}
.steps{list-style:none;margin:0;padding:0;position:relative}
.steps li{position:relative;padding:0 0 13px 26px;font-size:13px;line-height:1.5;color:var(--ink)}
.steps li::before{content:"";position:absolute;left:7px;top:3px;width:9px;height:9px;border-radius:50%;
  background:var(--vermilion);box-shadow:0 0 0 3px #fffaf0}
.steps li::after{content:"";position:absolute;left:11px;top:12px;width:1px;height:100%;
  background:repeating-linear-gradient(180deg,var(--line) 0 4px,transparent 4px 8px)}
.steps li:last-child::after{display:none}

/* spot list inside area */
.spotlist{margin-top:14px;display:flex;flex-direction:column;gap:8px}
.spot-row{cursor:pointer;display:flex;align-items:center;gap:10px;background:#fffaf0;border:1.5px solid var(--line);
  border-radius:12px;padding:8px 11px;transition:.15s}
.spot-row:hover{transform:translateX(3px);border-color:var(--vermilion)}
.spot-row .se{font-size:21px;flex:none;width:26px;text-align:center}
.spot-row .sn{flex:1;font-size:13.5px;font-weight:500;line-height:1.2}
.spot-row .sn small{display:block;font-size:10.5px;color:var(--ink-soft);font-weight:400;font-family:'Yomogi',cursive}
.spot-row .st{font-size:12px;color:var(--vermilion);font-weight:700;text-align:right;line-height:1.15}
.spot-row .st small{display:block;color:var(--ink-soft);font-weight:400;font-size:9.5px}

.empty{font-size:13px;color:var(--ink-soft);text-align:center;padding:30px 10px;line-height:1.7;font-family:'Yomogi',cursive}
.empty .big{font-size:34px;display:block;margin-bottom:8px}

.langbar{border-top:1px dashed var(--line);background:var(--paper2)}
.lang-tabs{display:flex;gap:7px;padding:11px 20px 4px}
.lang-tab{cursor:pointer;font-family:'Zen Maru Gothic',sans-serif;font-weight:700;font-size:13px;
  border:2px solid var(--line);background:#fbf4e4;color:var(--ink-soft);border-radius:11px;
  padding:6px 16px;transition:.16s;letter-spacing:.5px}
.lang-tab:hover{transform:translateY(-2px);border-color:var(--vermilion);color:var(--vermilion)}
.lang-tab.on{background:var(--vermilion);color:#fff;border-color:var(--vermilion);box-shadow:0 3px 9px var(--shadow)}
.foot{font-size:10.5px;color:var(--ink-soft);padding:6px 20px 12px;line-height:1.6}
.foot a{color:var(--indigo)}

/* ---------- Map ---------- */
#map{flex:1;height:100%;background:#dfeae3;position:relative}
#map.base-warm  .leaflet-tile-pane{filter:sepia(.22) saturate(.85) brightness(1.04) contrast(.96)}
#map.base-parch .leaflet-tile-pane{filter:sepia(.5) saturate(.68) brightness(1.07) contrast(.9) hue-rotate(-8deg)}
#map.base-topo  .leaflet-tile-pane{filter:sepia(.16) saturate(.92) brightness(1.02) contrast(.97)}
#map.base-parch{background:#e9dcc0}
#map::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:450;
  box-shadow:inset 0 0 120px rgba(120,90,40,.2)}

/* spot markers */
.spot-ic{position:relative;display:flex;align-items:center;justify-content:center}
.spot-ic .bub{width:38px;height:38px;border-radius:50% 50% 50% 8px;background:#fffaf0;border:2.5px solid var(--mc,#c5482f);
  display:flex;align-items:center;justify-content:center;font-size:20px;transform:rotate(45deg);
  box-shadow:0 3px 7px var(--shadow);transition:.16s}
.spot-ic .bub span{transform:rotate(-45deg)}
.spot-ic:hover .bub{transform:rotate(45deg) scale(1.18)}
.spot-ic .badge{position:absolute;top:-9px;left:50%;transform:translateX(-50%);background:var(--mc,#c5482f);color:#fff;
  font-size:10px;font-weight:700;padding:1px 6px;border-radius:9px;white-space:nowrap;box-shadow:0 2px 4px var(--shadow);
  font-family:'Zen Maru Gothic';display:none}
.spot-ic.show-badge .badge{display:block}
.spot-ic.dim{opacity:.32;filter:grayscale(.5)}
.spot-ic.active .bub{transform:rotate(45deg) scale(1.3);border-width:3px;box-shadow:0 5px 14px var(--shadow)}
.spot-ic.active .badge{display:block}

/* home marker */
.home-ic{display:flex;flex-direction:column;align-items:center}
.home-ic .h{width:44px;height:44px;border-radius:50%;background:var(--vermilion);border:3px solid #fffaf0;
  display:flex;align-items:center;justify-content:center;font-size:24px;box-shadow:0 4px 12px var(--shadow);animation:bob 3s ease-in-out infinite}
.home-ic .tag{margin-top:3px;background:var(--ink);color:#fff;font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:9px;white-space:nowrap}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}

/* leaflet popup restyle */
.leaflet-popup-content-wrapper{background:#fffaf0;border:2px solid var(--ink);border-radius:14px;box-shadow:0 6px 20px var(--shadow)}
.leaflet-popup-tip{background:#fffaf0;border:2px solid var(--ink)}
.leaflet-popup-content{margin:13px 15px;font-family:'Zen Maru Gothic'}
.pop h4{margin:0 0 2px;font-family:'Shippori Mincho',serif;font-size:17px;display:flex;align-items:center;gap:6px}
.pop .ja{font-family:'Yomogi',cursive;font-size:11px;color:var(--ink-soft);margin-bottom:8px}
.pop .hl{font-size:12.5px;line-height:1.5;margin:3px 0;padding-left:16px;position:relative}
.pop .hl::before{content:"♨";position:absolute;left:0;color:var(--vermilion);font-size:11px}
.pop .times{display:flex;gap:5px;margin:10px 0 4px;flex-wrap:wrap}
.pop .tm{font-size:11px;border:1.5px solid var(--line);border-radius:9px;padding:3px 7px;text-align:center;background:#fff}
.pop .tm.best{border-color:var(--matcha);background:#eef5e9;font-weight:700;color:var(--matcha)}
.pop .tm b{display:block;font-size:13px}
.pop .season{font-size:11px;color:var(--gold);font-weight:700;margin-top:7px}
.pop .nav{display:inline-block;margin-top:9px;font-size:12px;color:#fff;background:var(--indigo);padding:5px 12px;border-radius:9px;text-decoration:none}
.pop .route{font-size:11px;color:var(--ink-soft);margin-top:6px;line-height:1.4}

/* legend top-right */
.legend{position:absolute;top:14px;right:14px;z-index:500;background:#fffaf0ee;border:2px solid var(--line);
  border-radius:13px;padding:10px 13px;font-size:11.5px;box-shadow:0 4px 12px var(--shadow);max-width:190px}
.legend .lt{font-family:'Yomogi',cursive;color:var(--vermilion);margin-bottom:6px;font-size:12.5px}
.legend .row{display:flex;align-items:center;gap:7px;margin:3px 0}
.legend .row i{width:18px;height:12px;border-radius:3px;border:1px solid rgba(0,0,0,.15);flex:none}
.base-pills{display:flex;gap:5px;margin:2px 0 2px}
.base-pill{cursor:pointer;font-family:'Zen Maru Gothic',sans-serif;font-size:10.5px;font-weight:500;
  border:1.5px solid var(--line);background:#fbf4e4;color:var(--ink-soft);border-radius:8px;padding:4px 7px;transition:.15s}
.base-pill:hover{border-color:var(--vermilion);color:var(--vermilion)}
.base-pill.on{background:var(--ink);color:#fff;border-color:var(--ink)}

/* mobile */
.m-toggle{display:none}
@media(max-width:820px){
  #app{flex-direction:column}
  #side{width:100%;min-width:0;height:62%;order:2;border-right:none;border-top:2px solid var(--line)}
  #map{height:38%;order:1}
  .legend{top:8px;right:8px;padding:7px 9px;font-size:10px}
  #side::after{display:none}
}
