
  .map-overlay{
    display:none;
    position:fixed; inset:0;
    background:rgba(29,43,79,0.55);
    z-index:50;
    align-items:center;
    justify-content:center;
    padding:20px;
  }
  .map-overlay.open{ display:flex; }
  .map-modal{
    background:var(--washi-panel);
    border-radius:4px;
    width:100%;
    max-width:640px;
    overflow:hidden;
    box-shadow:0 20px 50px rgba(0,0,0,0.35);
  }
  .map-modal-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:14px 18px;
    background:var(--indigo-deep);
    color:var(--washi);
  }
  .map-modal-head h3{
    font-family:'Noto Serif JP', serif;
    font-size:16px;
    margin:0;
    font-weight:700;
  }
  .map-modal-head .sub{
    font-size:11px;
    color:rgba(239,230,214,0.7);
    font-family:'BIZ UDPGothic', 'Noto Sans JP', sans-serif;
    margin-top:2px;
  }
  .map-close{
    background:none;
    border:1px solid rgba(239,230,214,0.4);
    color:var(--washi);
    width:28px; height:28px;
    border-radius:50%;
    cursor:pointer;
    font-size:15px;
    line-height:1;
  }

  /* alert()の代替となるページ内トースト。window.alertはAndroid WebViewが
     onJsAlertを実装していないと表示されないことがあるため、モーダル・
     ナビゲーションバーより確実に手前(z-index)に出るこの仕組みへ置き換える。 */
  .app-toast-container{
    position:fixed;
    left:50%; bottom:calc(88px + env(safe-area-inset-bottom, 0px));
    transform:translateX(-50%);
    z-index:1000;
    width:min(92vw, 420px);
    display:flex; flex-direction:column; gap:8px;
    pointer-events:none;
  }
  .app-toast{
    pointer-events:auto;
    background:var(--indigo-deep);
    color:var(--washi);
    padding:12px 16px;
    border-radius:10px;
    font-size:14px;
    line-height:1.6;
    box-shadow:0 8px 24px rgba(0,0,0,0.3);
    opacity:0;
    transform:translateY(8px);
    transition:opacity .2s ease, transform .2s ease;
    cursor:pointer;
  }
  .app-toast.show{ opacity:1; transform:translateY(0); }