:root {
  /* ═══════════════════════════════════════════
     基礎変数（ライトモード、デフォルト）
     ━━━━━ 既存名と互換性維持 ━━━━━
  ═══════════════════════════════════════════ */

  /* 背景階層 */
  --bg: #ffffff;
  --s1: #f8f9fb;
  --s2: #ffffff;
  --s3: #f0f2f7;
  --bd: #e5e7eb;

  /* テキスト */
  --ink: #1a1a1a;
  --ink2: #666666;
  --mu: #9ca3af;

  /* アクセント・状態（既存の名前は残し、値を見直し） */
  --ac: #3b82f6;
  --ac-d: rgba(59,130,246,.12);
  --re: #ef4444;
  --or: #f97316;
  --bl: #3b82f6;
  --pu: #a855f7;
  --go: #eab308;
  --te: #14b8a6;
  --gr: #22c55e;
  --sh: 0 4px 24px rgba(0,0,0,.08);
  --r: 12px;

  /* ════════════════════════════════════════��══
     セマンティック変数（用途ベース）
     ━━━━━ 新規コードはこちらを使う ━━━━━
  ═══════════════════════════════════════════ */

  /* 背景の意味ベース */
  --color-bg-page: var(--bg);
  --color-bg-surface: var(--s1);
  --color-bg-card: var(--s2);
  --color-bg-hover: var(--s3);
  --color-border: var(--bd);
  --color-border-focus: var(--ac);

  /* テキストの意味ベース */
  --color-text-primary: var(--ink);
  --color-text-secondary: var(--ink2);
  --color-text-muted: var(--mu);
  --color-text-brand: var(--ac);
  --color-text-danger: var(--re);
  --color-text-success: var(--gr);

  /* インタラクション */
  --color-brand: var(--ac);
  --color-brand-hover: #2563eb;

  /* ═══════════════════════════════════════════
     ボトムナビ専用（ライト/ダーク共通）
  ═══════════════════════════════════════════ */

  --nav-home: #3B82F6;
  --nav-guide: #22C55E;
  --nav-review: #F97316;
  --nav-market: #A855F7;
  --nav-mypage: #EF4444;

  /* ═══════════════════════════════════════════
     スペース（4の倍数、Tailwind 互換）
  ═══════════════════════════════════════════ */

  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;

  /* ══════════════════════════════════��════════
     角丸スケール
  ═══════════════════════════════════════════ */

  --radius-sm: 6px;
  --radius-md: 8px;
  --radius-lg: 12px;
  --radius-xl: 16px;
  --radius-full: 9999px;

  /* ═════════════════════════════════���═════════
     フォントサイズスケール
  ═══════════════════════════════════════════ */

  --text-xs: 10px;
  --text-sm: 11px;
  --text-base: 12px;
  --text-md: 13px;
  --text-lg: 14px;
  --text-xl: 16px;
  --text-2xl: 18px;
  --text-3xl: 22px;
  --text-4xl: 28px;
}

/* ═══════════════════════════════════════════
   ダークモード（明示的に選択された場合）
═══════════════════════════════════════════ */

[data-theme="dark"] {
  --bg: #0b0e15;
  --s1: #13182a;
  --s2: #1a2035;
  --s3: #222840;
  --bd: #2a3550;
  --ink: #e8edf8;
  --ink2: #a0aac0;
  --mu: #5a6480;
  --sh: 0 4px 24px rgba(0,0,0,.55);
}

/* ═══════════════════════════════════════════
   OS 設定のダークモード自動追従（未設定時のみ）
═══════════════════════════════════════════ */

@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    --bg: #0b0e15;
    --s1: #13182a;
    --s2: #1a2035;
    --s3: #222840;
    --bd: #2a3550;
    --ink: #e8edf8;
    --ink2: #a0aac0;
    --mu: #5a6480;
    --sh: 0 4px 24px rgba(0,0,0,.55);
  }
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
body{font-family:'Noto Sans JP',sans-serif;background:var(--bg);color:var(--ink);min-height:100%;padding-bottom:calc(68px + env(safe-area-inset-bottom));}

/* ── TOPBAR ── */
.topbar{display:flex;align-items:center;gap:4px;padding:env(safe-area-inset-top) 8px 0 8px;height:calc(50px + env(safe-area-inset-top));background:var(--s1);border-bottom:1px solid var(--bd);position:sticky;top:0;z-index:300;}
.logo{display:flex;align-items:center;gap:8px;text-decoration:none;}
.logo-mark{width:34px;height:34px;background:linear-gradient(135deg,#2563eb,#1d4ed8);border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;box-shadow:0 2px 10px rgba(37,99,235,.4);}
.logo-text{font-family:'Noto Sans JP',sans-serif;font-size:19px;font-weight:900;background:linear-gradient(135deg,#3b82f6,#60a5fa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.logo-sub{font-size:11px;color:var(--mu);font-weight:400;letter-spacing:.3px;margin-top:-2px;white-space:nowrap;}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:4px;flex-shrink:0;}
.lang-switcher{position:relative;flex-shrink:0;}
.lang-btn{background:transparent;border:1px solid var(--bd);border-radius:8px;padding:4px 8px;font-size:11px;color:var(--ink2);cursor:pointer;font-family:inherit;white-space:nowrap;}
.lang-menu{position:absolute;top:100%;right:0;margin-top:4px;background:var(--s1);border:1px solid var(--bd);border-radius:10px;box-shadow:0 4px 16px rgba(0,0,0,.3);z-index:400;min-width:120px;overflow:hidden;}
.lang-menu-item{display:block;width:100%;text-align:left;padding:10px 14px;background:none;border:none;color:var(--ink);font-size:13px;cursor:pointer;font-family:inherit;}
.lang-menu-item:hover{background:var(--s2);}
.lang-menu-item.active{color:var(--ac);font-weight:700;}
.topbar-auth{display:flex;gap:4px;flex-shrink:0;}
.tb-btn{padding:5px 5px;border-radius:8px;font-size:10px;font-weight:700;cursor:pointer;font-family:inherit;border:none;transition:all .2s;white-space:nowrap;}
.tb-login{background:transparent;color:var(--ink2);border:1px solid var(--bd);}
.tb-reg{background:var(--ac);color:#0b0e15;}
.user-pill{display:flex;align-items:center;gap:7px;padding:4px 10px;background:var(--ac-d);border:1px solid rgba(0,200,160,.25);border-radius:20px;font-size:12px;cursor:pointer;}
.u-av{width:22px;height:22px;background:var(--ac);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;color:#0b0e15;font-weight:700;}

/* ── SCORE HEADER ── */
.score-hd{padding:0;background:var(--s1);position:relative;}
/* ── 工場ヒーローカード ── */
.fct-hero-card{margin:8px 14px 0;background:rgba(74,158,255,.06);border:1px solid rgba(74,158,255,.15);border-radius:14px;overflow:hidden;}
.fct-hero-body{display:flex;flex-direction:row;align-items:center;gap:10px;padding:10px 12px;flex-wrap:nowrap;}
.fct-hero-left{display:flex;flex-direction:column;align-items:center;gap:2px;flex-shrink:0;width:80px;border-right:2px solid rgba(74,158,255,.2);padding-right:10px;cursor:pointer;}
.fct-ring-label{font-size:9px;font-weight:700;color:var(--mu);}
.fct-score-ring{width:66px;height:66px;}
.fct-ring-num{font-family:'JetBrains Mono',monospace;font-size:26px;font-weight:800;fill:var(--ink);}
.fct-ring-rank{font-size:9px;font-weight:600;color:var(--ink2);white-space:nowrap;}
.fct-hero-right{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:3px;}
.fct-factory-name{font-size:15px;font-weight:800;color:var(--ink);line-height:1.3;}
.fct-factory-meta{font-size:11px;color:var(--mu);line-height:1.4;}
.fct-info-link{padding:12px 0 0;border-top:none;font-size:12px;color:var(--bl);font-weight:700;cursor:pointer;}
/* ── 工場ページ タブ ── */
.fct-tabs{display:flex;gap:8px;padding:0 14px;border-bottom:2px solid #4a9eff;}
.fct-tab{flex:1;padding:4px 0;font-size:13px;font-weight:600;color:var(--ink2);cursor:pointer;font-family:inherit;text-align:center;text-decoration:none;display:flex;align-items:center;justify-content:center;gap:4px;background:var(--s3);border:none;border-radius:10px 10px 0 0;transition:all .15s;}
.fct-tab.on{background:var(--bl);color:#fff;font-weight:700;}
.score-bars{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:4px 14px 16px;background:var(--s1);}
.sb{display:flex;flex-direction:column;align-items:center;gap:0;padding:2px 0;background:var(--s2);border-radius:6px;cursor:pointer;transition:background .2s;border:1px solid var(--bd);overflow:hidden;min-width:0;}
.sb:hover{background:var(--s3);}
.sb-ic{font-size:16px;}
.sb-n{font-family:'JetBrains Mono',monospace;font-size:16px;font-weight:600;}
.sb-l{font-size:10px;color:var(--mu);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:center;padding:0 2px;}
/* スコア詳細モーダル */
.sdm-title{font-size:18px;font-weight:800;margin-bottom:4px;}
.sdm-sub{font-size:11px;color:var(--mu);margin-bottom:16px;}
.sdm-total{display:flex;align-items:center;gap:12px;background:var(--s2);border-radius:12px;padding:14px;margin-bottom:16px;}
.sdm-total-n{font-family:'Syne',sans-serif;font-size:42px;font-weight:800;background:linear-gradient(135deg,#FFD700,#FF8C00);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1;}
.sdm-total-label{font-size:11px;color:var(--mu);}
.sdm-total-rank{font-size:12px;font-weight:700;color:var(--go);margin-top:3px;}
.sdm-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--bd);}
.sdm-row:last-child{border-bottom:none;}
.sdm-row-ic{font-size:20px;width:28px;text-align:center;flex-shrink:0;}
.sdm-row-info{flex:1;min-width:0;}
.sdm-row-name{font-size:12px;font-weight:700;}
.sdm-row-subs{display:flex;flex-wrap:wrap;gap:3px;margin-top:3px;}
.sdm-sub-badge{font-size:9px;padding:1px 5px;border-radius:4px;background:var(--s3);color:var(--mu);}
.sdm-row-detail{font-size:10px;color:var(--mu);margin-top:2px;}
.sdm-row-right{text-align:right;flex-shrink:0;}
.sdm-row-score{font-family:'JetBrains Mono',monospace;font-size:16px;font-weight:700;}
.sdm-row-weight{font-size:10px;color:var(--mu);}
.sdm-bar{height:4px;background:var(--bd);border-radius:3px;overflow:hidden;margin-top:5px;}
.sdm-bar-fill{height:100%;border-radius:3px;transition:width .8s ease;}
/* 住環境サブスコア */
.sdm-sub-scores{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;margin-top:6px;}
.sdm-sub-card{background:var(--s3);border-radius:7px;padding:7px;text-align:center;}
.sdm-sub-card-n{font-family:'JetBrains Mono',monospace;font-size:14px;font-weight:700;}
.sdm-sub-card-l{font-size:9px;color:var(--mu);margin-top:2px;}

/* ── Tips ── */
.tips-grid{display:flex;flex-direction:column;gap:8px;margin-bottom:4px;}
.tip-card{display:flex;gap:10px;background:var(--s2);border:1px solid var(--bd);border-radius:10px;padding:11px 12px;}
.tip-icon{font-size:20px;flex-shrink:0;width:26px;text-align:center;margin-top:1px;}
.tip-body{}
.tip-title{font-size:12px;font-weight:700;margin-bottom:3px;color:var(--ink);}
.tip-text{font-size:11px;color:var(--ink2);line-height:1.6;}
.fi-item{display:flex;gap:8px;background:var(--s2);border-radius:8px;padding:9px 11px;}
.fi-label{font-size:11px;font-weight:700;color:var(--mu);min-width:80px;flex-shrink:0;}
.fi-val{font-size:12px;color:var(--ink);line-height:1.5;}
/* ── Q&A ── */
.qa-list{display:flex;flex-direction:column;gap:6px;margin-bottom:4px;}
.qa-item{background:var(--s2);border:1px solid var(--bd);border-radius:10px;overflow:hidden;cursor:pointer;}
.qa-q{font-size:13px;font-weight:700;padding:12px 14px;color:var(--ink);}
.qa-a{font-size:12px;color:var(--ink2);line-height:1.7;padding:0 14px 12px;display:none;}
.qa-a.open{display:block;}
/* ── 工場口コミ ── */

.loc-bar{display:flex;gap:6px;align-items:center;padding:6px 10px;background:var(--s1);border-bottom:1px solid var(--bd);position:relative;z-index:1;box-sizing:border-box;overflow:hidden;}
.loc-wrap{flex:1;min-width:0;display:flex;align-items:center;gap:8px;background:var(--s2);border:1px solid var(--bd);border-radius:10px;padding:8px 12px;}
.loc-wrap input{background:none;border:none;outline:none;color:var(--ink);font-size:12px;font-family:inherit;flex:1;min-width:0;}
.loc-search-icon{color:var(--ink2);flex-shrink:0;}
.loc-gps{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:var(--ac-d);color:var(--ac);border:1px solid var(--ac);border-radius:9px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap;flex-shrink:0;}

/* ── MAP（Leaflet） ── */
.map-block{background:var(--bg);border-bottom:2px solid var(--bd);}
.map-center-bar{display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--s1);border-bottom:1px solid var(--bd);}
.ctr-btn{padding:5px 13px;border-radius:20px;font-size:11px;font-weight:700;border:1px solid var(--bd);background:none;color:var(--mu);cursor:pointer;font-family:inherit;transition:all .2s;white-space:nowrap;}
.ctr-btn.on{background:var(--ac-d);border-color:rgba(0,200,160,.5);color:var(--ac);}
.map-ring-bar{display:flex;align-items:center;gap:5px;padding:4px 10px;background:var(--s1);border-bottom:1px solid var(--bd);}
.ring-bar-label{font-size:10px;color:var(--mu);white-space:nowrap;margin-right:2px;flex-shrink:0;}
.ring-tog{padding:3px 11px;border-radius:16px;border:1px solid var(--bd);background:none;color:var(--mu);font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .15s;white-space:nowrap;}
.ring-tog.on{background:rgba(0,200,160,.15);border-color:rgba(0,200,160,.5);color:var(--ac);font-weight:700;}
.ring-tog.on{background:var(--ac-d);border-color:rgba(0,200,160,.4);color:var(--ac);}
#rt500.on{background:rgba(34,201,122,.12);border-color:rgba(34,201,122,.5);color:#22c97a;}
#rt1k.on{background:rgba(74,158,255,.12);border-color:rgba(74,158,255,.5);color:#4a9eff;}
#rt5k.on{background:rgba(176,106,255,.12);border-color:rgba(176,106,255,.5);color:#b06aff;}
.map-expand{height:36px;padding:0 12px;border-radius:9999px;border:1px solid var(--bd);background:var(--s2);color:var(--mu);font-size:11px;font-weight:600;font-family:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:5px;flex-shrink:0;}
.map-expand-sq{width:36px;min-width:36px;padding:0;justify-content:center;}
#mapDiv{width:100%;height:280px;transition:height .3s ease;}
.cat-chips{display:flex;gap:5px;overflow-x:auto;padding:7px 10px;background:var(--s1);border-top:1px solid var(--bd);}
.cat-chips::-webkit-scrollbar{height:0;}
.chip{flex-shrink:0;padding:4px 10px;border-radius:16px;font-size:11px;font-weight:600;border:1px solid var(--bd);background:none;color:var(--mu);cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s;}
.chip.on{background:var(--ac-d);border-color:rgba(0,200,160,.4);color:var(--ac);}
/* Leaflet スタイル調整 */
.leaflet-tile-pane{filter:none;}
[data-theme="dark"] .leaflet-tile-pane{filter:brightness(.72) saturate(.55) hue-rotate(180deg) invert(1);}
@media (prefers-color-scheme:dark){body:not([data-theme="light"]) .leaflet-tile-pane{filter:brightness(.72) saturate(.55) hue-rotate(180deg) invert(1);}}
.leaflet-container{background:var(--bg) !important;font-family:'Noto Sans JP',sans-serif;}
.leaflet-control-attribution{font-size:8px !important;opacity:.5;background:rgba(0,0,0,.5) !important;color:#888 !important;}
.leaflet-control-attribution a{color:#888 !important;}
.leaflet-popup-content-wrapper{background:var(--s1) !important;border:1px solid var(--bd) !important;border-radius:12px !important;color:var(--ink) !important;box-shadow:0 8px 32px rgba(0,0,0,.7) !important;}
.leaflet-popup-tip{background:var(--s1) !important;}
.leaflet-popup-content{margin:11px 13px !important;}
.leaflet-popup-close-button{color:var(--mu) !important;top:6px !important;right:8px !important;}
.leaflet-bar a{background:var(--s1) !important;color:var(--ink2) !important;border-bottom-color:var(--bd) !important;}
.leaflet-bar a:hover{background:var(--s2) !important;color:var(--ac) !important;}
/* ユーザー投稿マーカーのハイライト（内側divに適用） */
.hk-user-marker-hl{filter:drop-shadow(0 0 8px #00ff88) drop-shadow(0 0 4px #00ff88) !important;}

/* ポップアップ内スタイル */
.hk-pop-name{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:4px;}
.hk-pop-hours{font-size:10px;color:var(--ink2);margin-top:3px;line-height:1.5;}
.hk-pop-dist-row{display:flex;gap:6px;margin-top:5px;flex-wrap:wrap;}
.hk-pop-dbadge{font-size:10px;padding:2px 7px;border-radius:8px;font-weight:700;}
.hk-pop-dbadge.fac{background:rgba(0,200,160,.15);color:#00c8a0;border:1px solid rgba(0,200,160,.3);}
.hk-pop-dbadge.me{background:rgba(74,158,255,.15);color:#4a9eff;border:1px solid rgba(74,158,255,.3);}
/* Googleマップナビボタン（ポップアップ内・カード詳細内） */
.gmaps-nav-btn{display:inline-flex;align-items:center;gap:5px;margin-top:8px;padding:7px 12px;background:#1a73e8;border:none;border-radius:8px;color:#fff !important;font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;text-decoration:none !important;transition:all .2s;}
.gmaps-nav-btn:hover{background:#1557b0;}
.gmaps-nav-btn svg{flex-shrink:0;}
/* カード詳細内のナビボタン */
.det-nav-wrap{margin-top:10px;}
.det-gmaps-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 14px;background:#fff;border:none;border-radius:9px;color:#1a73e8;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;text-decoration:none;box-shadow:0 2px 8px rgba(0,0,0,.2);transition:all .2s;}
.det-gmaps-btn:hover{background:#e8f0fe;}

/* ── TABS ── */
.tab-row{display:flex;overflow-x:auto;background:var(--s1);border-bottom:1px solid var(--bd);position:sticky;top:50px;z-index:200;}
.tab-row::-webkit-scrollbar{height:0;}
.tab{padding:0 11px;height:36px;display:flex;align-items:center;gap:4px;font-size:11px;color:var(--mu);cursor:pointer;border:none;background:none;font-family:inherit;border-bottom:2px solid transparent;white-space:nowrap;position:relative;top:1px;flex-shrink:0;transition:all .15s;}
.tab:hover,.tab.on{color:var(--ink);border-bottom-color:var(--ac);}

/* ── PANELS ── */
.panels{padding:10px;display:none;}
.panels.on{display:block;}
.sec-t{font-size:12px;font-weight:700;color:var(--ink2);margin:14px 0 8px;display:flex;align-items:center;gap:8px;}
.sec-t::after{content:'';flex:1;height:1px;background:var(--bd);}

/* ── SPOT CARD（共通） ── */
.card{background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);cursor:pointer;transition:all .2s;margin-bottom:9px;overflow:hidden;}
.card:hover,.card.sel{border-color:var(--ac);background:var(--s3);}
.card.sel{border-left:3px solid var(--ac);}
.card.map-hl{border-color:var(--ac) !important;box-shadow:0 0 0 2px rgba(0,200,160,.4);transition:box-shadow .3s,border-color .3s;}
.card.user-spot{border-color:rgba(176,106,255,.4);background:rgba(176,106,255,.04);}
.card-main{display:flex;align-items:center;gap:10px;padding:13px;}
.card-icon{font-size:28px;width:52px;text-align:center;flex-shrink:0;display:flex;align-items:center;justify-content:center;}
.card-icon img{width:48px !important;height:48px !important;border-radius:8px;object-fit:cover;display:block;}
.card-body{flex:1;min-width:0;}
.card-name{font-size:13px;font-weight:700;line-height:1.3;}
.card-sub{font-size:11px;color:var(--ink2);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.card-badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:5px;}
.card-tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px;}
.tag-badge{padding:2px 7px;border-radius:10px;font-size:11px;font-weight:600;}
.tag-h24{background:rgba(0,200,160,.2);color:var(--ac);}
.tag-price{background:rgba(37,99,235,.2);color:#60a5fa;}
.tag-late{background:rgba(139,92,246,.2);color:#a78bfa;}
.tag-info{background:rgba(100,100,100,.2);color:#aaa;}
.tag-pending{background:var(--bd);color:var(--mu);border:1px dashed var(--mu);opacity:.7;}
.tag-remain{font-size:10px;color:var(--mu);margin-left:2px;}
.tag-time{background:rgba(0,200,160,.2);color:var(--ac);}
.tag-finance{background:rgba(37,99,235,.2);color:#60a5fa;}
.tag-health{background:rgba(34,197,94,.2);color:#22c55e;}
.tag-facility{background:rgba(249,115,22,.2);color:#f97316;}
.tag-food{background:rgba(236,72,153,.2);color:#ec4899;}
.tag-product{background:rgba(234,179,8,.2);color:#ca8a04;}
.tag-language{background:rgba(168,85,247,.2);color:#a855f7;}
.bx{font-size:10px;padding:2px 6px;border-radius:4px;font-weight:700;}
.b24{background:rgba(0,200,160,.15);color:var(--ac);border:1px solid rgba(0,200,160,.3);}
.bni{background:rgba(74,158,255,.15);color:var(--bl);border:1px solid rgba(74,158,255,.3);}
.bch{background:rgba(255,204,68,.15);color:var(--go);border:1px solid rgba(255,204,68,.3);}
.bsm{background:rgba(255,140,0,.15);color:var(--or);border:1px solid rgba(255,140,0,.3);}
.bns{background:rgba(90,100,128,.2);color:var(--mu);border:1px solid rgba(90,100,128,.3);}
.bat{background:rgba(34,201,122,.15);color:var(--gr);border:1px solid rgba(34,201,122,.3);}
.bgam{background:rgba(176,106,255,.15);color:var(--pu);border:1px solid rgba(176,106,255,.3);}
.card-right{text-align:right;flex-shrink:0;max-width:120px;}
.card-dist{font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:600;}
.card-mode{font-size:14px;color:var(--mu);margin-top:2px;}
.card-det{display:none;padding:0 13px 13px;border-top:1px solid var(--bd);}
.card-det.open{display:block;}
.det-photo{height:90px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:38px;margin-bottom:9px;}
.det-hrs{font-size:12px;padding:7px 10px;background:var(--s1);border-radius:8px;}
.op{color:var(--ac);font-weight:700;}
.cl{color:var(--re);font-weight:700;}
.det-rev{margin-top:8px;font-size:11px;color:var(--ink2);line-height:1.65;border-left:2px solid var(--bd);padding-left:9px;font-style:italic;}
.det-atm{margin-top:9px;padding:10px;background:rgba(34,201,122,.08);border:1px solid rgba(34,201,122,.2);border-radius:8px;}
.det-atm-t{font-size:11px;font-weight:700;color:var(--gr);margin-bottom:6px;}
.atm-row{display:flex;justify-content:space-between;font-size:11px;margin-bottom:3px;}
.dtt-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-top:8px;}
.dtt-cell{background:var(--s1);border:1px solid var(--bd);border-radius:6px;padding:7px 8px;text-align:center;}
.dtt-time{font-size:12px;font-family:'JetBrains Mono',monospace;font-weight:600;}
.dtt-dest{font-size:9px;color:var(--mu);}
.dtt-price{font-size:10px;color:var(--go);font-weight:700;}
/* もっと見る */
.more-cards-btn{width:100%;padding:11px;background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);color:var(--ink2);font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;margin-bottom:9px;transition:all .2s;}
.more-cards-btn:hover{border-color:var(--ac);color:var(--ac);}
.hidden-cards{display:none;}
.hidden-cards.open{display:block;}
/* タブ内スポット追加ボタン */
.tab-spot-add{width:100%;padding:11px 14px;margin-top:10px;background:none;border:1px dashed rgba(176,106,255,.35);color:var(--pu);border-radius:var(--r);font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center;gap:7px;transition:all .2s;}
.tab-spot-add:hover{background:rgba(176,106,255,.08);border-color:var(--pu);}
/* ユーザー追加カード */
.user-spot-badge{display:inline-flex;align-items:center;gap:3px;font-size:9px;padding:2px 6px;border-radius:4px;background:rgba(107,114,128,.12);color:#6b7280;border:1px solid rgba(107,114,128,.25);font-weight:700;margin-bottom:3px;white-space:nowrap;}

/* ── 治安タブ ── */
.saf-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;}
.saf-card{background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);padding:14px;}
.saf-icon{font-size:26px;margin-bottom:6px;}
.saf-title{font-size:12px;font-weight:700;}
.saf-sub{font-size:10px;color:var(--ink2);margin-top:2px;line-height:1.4;}
.saf-meter{display:flex;gap:3px;margin-top:7px;align-items:center;}
.saf-dot{width:9px;height:9px;border-radius:50%;background:var(--bd);}
.saf-dot.g{background:var(--gr);}.saf-dot.y{background:var(--go);}
.saf-score{font-family:'JetBrains Mono',monospace;font-size:15px;font-weight:600;margin-left:7px;}
.saf-row{background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);padding:13px;margin-bottom:9px;}
.saf-row-hd{display:flex;align-items:center;gap:8px;margin-bottom:7px;}
.saf-row-hd-ic{font-size:18px;}
.saf-row-hd-t{font-size:12px;font-weight:700;flex:1;}
.saf-row-hd-s{font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:700;}
.saf-bar{height:4px;background:var(--bd);border-radius:3px;overflow:hidden;margin-bottom:7px;}
.saf-bar-fill{height:100%;border-radius:3px;}
.saf-desc{font-size:11px;color:var(--ink2);line-height:1.55;}
.saf-pts{display:flex;flex-direction:column;gap:4px;margin-top:7px;}
.saf-pt{display:flex;align-items:flex-start;gap:6px;font-size:11px;color:var(--ink2);}
/* 女性安全バッジ */
.women-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:rgba(255,74,106,.1);border:1px solid rgba(255,74,106,.3);border-radius:20px;font-size:11px;font-weight:700;color:var(--re);margin-bottom:10px;}

/* ── 口コミ ── */
.kuchi-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.kuchi-hd-t{font-size:14px;font-weight:700;}
.add-btn{padding:7px 12px;background:var(--ac-d);border:1px solid rgba(0,200,160,.3);color:var(--ac);border-radius:8px;font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .2s;}
.add-btn:hover{background:var(--ac);color:#0b0e15;}
.add-btn.pu{background:rgba(176,106,255,.12);border-color:rgba(176,106,255,.3);color:var(--pu);}
.add-btn.pu:hover{background:var(--pu);color:#fff;}
.kuchi-tab{flex:1;padding:8px 4px;background:none;border:none;border-bottom:2px solid transparent;color:var(--mu);font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .2s;}
.kuchi-tab.on{color:var(--ac);border-bottom-color:var(--ac);}
.kuchi-card{background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);padding:13px;margin-bottom:9px;}
.kc-hd{display:flex;align-items:center;gap:8px;margin-bottom:7px;flex-wrap:wrap;}
.kc-av{width:30px;height:30px;border-radius:50%;background:var(--s3);display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0;}
.kc-name{font-size:12px;font-weight:700;}
.kc-date{font-size:10px;color:var(--mu);}
.kc-cat{font-size:10px;padding:2px 7px;border-radius:10px;background:var(--ac-d);color:var(--ac);border:1px solid rgba(0,200,160,.2);font-weight:700;}
.kc-stars{color:var(--go);font-size:12px;margin-left:auto;}
.kc-place{font-size:11px;font-weight:700;color:var(--ac);margin-bottom:4px;}
.kc-place-link{color:var(--bl);cursor:pointer;text-decoration:underline;text-underline-offset:2px;}
.kc-text{font-size:12px;color:var(--ink2);line-height:1.6;}
.kc-text.clamped{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.kc-toggle{background:none;border:none;color:var(--mu);font-size:11px;cursor:pointer;padding:4px 0;font-family:inherit;}
.kc-foot{display:flex;align-items:center;margin-top:8px;gap:8px;}
.like-btn{display:flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid var(--bd);border-radius:6px;cursor:pointer;background:none;font-family:inherit;font-size:11px;color:var(--mu);transition:all .2s;}
.like-btn:hover{border-color:var(--ac);color:var(--ac);}
.like-btn.liked{border-color:rgba(100,100,100,.3);color:var(--mu);opacity:.6;cursor:default;}
.kc-loc{font-size:10px;color:var(--mu);margin-left:auto;}

/* ── スポットカード内口コミ ── */
.spot-kuchi-wrap{margin-top:10px;padding-top:8px;border-top:1px solid var(--bd);}
.spot-kuchi-item{padding:8px 0;border-bottom:1px solid rgba(255,255,255,.05);}
.spot-kuchi-item:last-child{border-bottom:none;}
.spot-kuchi-hd{display:flex;align-items:center;gap:6px;margin-bottom:4px;}
.spot-kuchi-av{width:22px;height:22px;border-radius:50%;background:var(--s3);display:flex;align-items:center;justify-content:center;font-size:10px;flex-shrink:0;}
.spot-kuchi-name{font-size:11px;font-weight:700;}
.spot-kuchi-stars{font-size:11px;color:var(--go);margin-left:auto;}
.spot-kuchi-text{font-size:12px;color:var(--ink2);line-height:1.6;}
.spot-kuchi-empty{font-size:11px;color:var(--mu);padding:10px 0;margin-top:8px;border-top:1px solid var(--bd);text-align:center;}

/* ── 譲渡板 ── */
.yuz-cat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px;}
.yuz-cat-item{display:flex;flex-direction:column;align-items:center;gap:5px;padding:12px 4px;background:var(--s2);border:1px solid var(--bd);border-radius:10px;cursor:pointer;font-family:inherit;color:var(--ink);transition:all .15s;}
.yuz-cat-item:hover{border-color:var(--ac);}
.yuz-cat-item.on{border-color:var(--ac);background:rgba(0,200,160,.1);}
.yuz-cat-icon{font-size:24px;}
.yuz-cat-name{font-size:10px;font-weight:700;text-align:center;}
.yuz-cat-count{font-size:9px;color:var(--mu);}
.yuz-filter-row{display:flex;gap:5px;overflow-x:auto;flex:1;}
.yuz-filter-row::-webkit-scrollbar{height:0;}
.y-chip{flex-shrink:0;padding:5px 11px;border-radius:16px;font-size:11px;font-weight:600;border:1px solid var(--bd);background:none;color:var(--mu);cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s;}
.y-chip.on{background:rgba(176,106,255,.12);border-color:rgba(176,106,255,.4);color:var(--pu);}
.yuz-delivery-row{display:flex;gap:5px;overflow-x:auto;margin-bottom:10px;}
.yuz-delivery-row::-webkit-scrollbar{height:0;}
.d-chip{flex-shrink:0;padding:4px 10px;border-radius:16px;font-size:10px;font-weight:600;border:1px solid var(--bd);background:none;color:var(--mu);cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s;}
.d-chip.on{background:rgba(74,158,255,.12);border-color:rgba(74,158,255,.4);color:var(--bl);}
.area-chip{flex-shrink:0;padding:4px 10px;border-radius:16px;font-size:10px;font-weight:600;border:1px solid var(--bd);background:none;color:var(--mu);cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s;}
.area-chip.on{background:rgba(0,200,160,.12);border-color:rgba(0,200,160,.4);color:var(--ac);}
.item-card{background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);margin-bottom:10px;overflow:hidden;transition:all .2s;}
.item-card:hover{border-color:rgba(176,106,255,.4);}
.ic-imgs{display:flex;gap:4px;overflow-x:auto;padding:10px 10px 0;}
.ic-imgs::-webkit-scrollbar{height:0;}
.ic-img{width:90px;height:90px;border-radius:8px;background:var(--s3);display:flex;align-items:center;justify-content:center;font-size:36px;flex-shrink:0;border:1px solid var(--bd);}
.ic-img img{width:100%;height:100%;object-fit:cover;border-radius:8px;}
.ic-status{font-size:10px;font-weight:700;padding:2px 7px;border-radius:5px;display:inline-block;margin:6px 12px 0;}
.ic-status.open{background:rgba(34,201,122,.15);color:var(--gr);}
.ic-status.nego{background:rgba(255,204,68,.15);color:var(--go);}
.ic-status.done{background:rgba(90,100,128,.2);color:var(--mu);}
.ic-body{padding:8px 12px 10px;}
.ic-name{font-size:13px;font-weight:700;}
.ic-price{font-size:18px;font-weight:900;color:var(--ac);margin-top:3px;}
.ic-price.free{color:var(--gr);}
.ic-delivery{font-size:10px;padding:2px 7px;border-radius:4px;background:rgba(74,158,255,.12);color:var(--bl);border:1px solid rgba(74,158,255,.3);font-weight:600;margin-left:8px;}
.ic-desc{font-size:11px;color:var(--ink2);margin-top:5px;line-height:1.5;}
.ic-meta{display:flex;gap:8px;align-items:center;margin-top:7px;flex-wrap:wrap;}
.ic-cond{font-size:9px;padding:2px 6px;border-radius:3px;font-weight:700;background:var(--go);color:#0b0e15;}
.ic-area{font-size:10px;color:var(--mu);}
.ic-user-row{display:flex;align-items:center;gap:6px;margin-top:9px;padding-top:8px;border-top:1px solid var(--bd);}
.ic-user-av{width:24px;height:24px;border-radius:50%;background:var(--s3);display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0;}
.ic-user-name{font-size:11px;font-weight:700;}
.ic-user-rating{font-size:10px;color:var(--go);}
.ic-user-date{font-size:10px;color:var(--mu);margin-left:auto;}
.ic-actions{display:flex;gap:6px;padding:0 12px 12px;}
.ic-like-btn{display:flex;align-items:center;gap:4px;padding:8px 14px;border:1px solid var(--bd);border-radius:8px;background:none;font-family:inherit;font-size:11px;color:var(--mu);cursor:pointer;transition:all .2s;}
.ic-like-btn.liked{background:rgba(255,74,106,.1);border-color:rgba(255,74,106,.4);color:var(--re);}
.ic-bm-btn{display:flex;align-items:center;gap:4px;padding:8px 14px;border:1px solid var(--bd);border-radius:8px;background:none;font-family:inherit;font-size:11px;color:var(--mu);cursor:pointer;transition:all .2s;}
.ic-bm-btn.bmed{background:rgba(255,204,68,.1);border-color:rgba(255,204,68,.4);color:var(--go);}
.contact-btn{flex:1;padding:9px;background:rgba(176,106,255,.12);border:1px solid rgba(176,106,255,.3);color:var(--pu);border-radius:8px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .2s;}
.contact-btn:hover{background:var(--pu);color:#fff;}
.item-sold{opacity:.7;}
.ic-sold-btn{padding:8px 14px;border:1px solid rgba(0,200,160,.3);border-radius:8px;background:rgba(0,200,160,.08);font-family:inherit;font-size:11px;color:var(--ac);cursor:pointer;}
.ic-reactivate-btn{padding:8px 14px;border:1px solid var(--bd);border-radius:8px;background:none;font-family:inherit;font-size:11px;color:var(--mu);cursor:pointer;}
.ic-del-btn{padding:8px 14px;border:1px solid rgba(255,74,106,.3);border-radius:8px;background:rgba(255,74,106,.06);font-family:inherit;font-size:11px;color:var(--re);cursor:pointer;}
.ic-comments{padding:0 12px 12px;border-top:1px solid var(--bd);}
.ic-comments-title{font-size:11px;font-weight:700;color:var(--mu);padding:8px 0 6px;}
.ic-comment{display:flex;gap:7px;margin-bottom:8px;}
.ic-comment-av{width:22px;height:22px;border-radius:50%;background:var(--s3);display:flex;align-items:center;justify-content:center;font-size:10px;flex-shrink:0;}
.ic-comment-bubble{background:var(--s3);border-radius:0 8px 8px 8px;padding:7px 10px;flex:1;}
.ic-comment-name{font-size:10px;font-weight:700;color:var(--ac);margin-bottom:2px;}
.ic-comment-text{font-size:11px;color:var(--ink2);line-height:1.5;}
.ic-comment-input{display:flex;gap:6px;margin-top:8px;}
.ic-comment-input input{flex:1;background:var(--s2);border:1px solid var(--bd);border-radius:8px;padding:8px 10px;color:var(--ink);font-size:12px;font-family:inherit;outline:none;}
.ic-comment-input input:focus{border-color:var(--pu);}
.ic-comment-send{padding:8px 12px;background:rgba(176,106,255,.15);border:1px solid rgba(176,106,255,.3);color:var(--pu);border-radius:8px;font-size:11px;cursor:pointer;font-family:inherit;}

/* ── スポットタブ ── */
.spot-card{background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);margin-bottom:10px;overflow:hidden;}
.spot-card.user-added{border-color:rgba(176,106,255,.35);}
.spot-card-main{display:flex;align-items:center;gap:10px;padding:12px 13px;}
.spot-card-icon{font-size:28px;width:52px;text-align:center;flex-shrink:0;display:flex;align-items:center;justify-content:center;}
.spot-card-icon img{width:48px !important;height:48px !important;border-radius:8px;object-fit:cover;display:block;}
.spot-card-body{flex:1;min-width:0;}
.spot-card-name{font-size:13px;font-weight:700;}
.spot-card-meta{font-size:10px;color:var(--mu);margin-top:3px;}
.spot-card-comment{font-size:11px;color:var(--ink2);margin-top:4px;font-style:italic;}
.spot-actions{display:flex;align-items:center;gap:6px;padding:6px 13px 11px;}
.know-btn{display:flex;align-items:center;gap:5px;padding:7px 14px;border-radius:20px;border:1px solid var(--bd);background:none;font-family:inherit;font-size:11px;font-weight:700;color:var(--mu);cursor:pointer;transition:all .2s;}
.know-btn.known{background:rgba(255,140,0,.12);border-color:rgba(255,140,0,.4);color:var(--or);}
.know-count{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:700;color:var(--or);}
.report-btn{margin-left:auto;padding:5px 9px;border-radius:6px;border:1px solid var(--bd);background:none;font-size:10px;color:var(--mu);cursor:pointer;font-family:inherit;transition:all .15s;}
.report-btn:hover{border-color:var(--re);color:var(--re);}
.spot-new-btn{width:100%;padding:12px;background:none;border:1px dashed rgba(255,140,0,.35);color:var(--or);border-radius:var(--r);font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;margin-top:10px;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s;}
.spot-new-btn:hover{background:rgba(255,140,0,.08);}
/* カテゴリ選択グリッド */
.scat-btn{padding:10px 4px;border-radius:9px;border:1px solid var(--bd);background:none;color:var(--mu);font-family:inherit;font-size:11px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;line-height:1.3;transition:all .15s;}
.scat-btn span{font-size:10px;}
.scat-btn.on{background:rgba(255,140,0,.12);border-color:rgba(255,140,0,.4);color:var(--or);}

/* ── セール ── */
.sale-today-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.sale-today-title{font-size:15px;font-weight:800;color:var(--re);}
.sale-today-date{font-size:10px;color:var(--mu);}
.sale-card{background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);margin-bottom:10px;overflow:hidden;}
.sale-card-head{display:flex;align-items:center;gap:10px;padding:12px 13px 8px;}
.sale-card-icon{font-size:24px;flex-shrink:0;}
.sale-card-name{font-size:13px;font-weight:700;}
.sale-card-dist{font-size:10px;color:var(--mu);margin-top:2px;}
.sale-card-travel{font-size:13px;color:var(--mu);margin-top:2px;}
.sale-card-hrs{font-size:11px;color:var(--ink2);padding:0 13px 4px;}
.sale-card-actions{display:flex;gap:6px;padding:0 13px 10px;}
.sale-rows{padding:0 13px 10px;display:flex;flex-direction:column;gap:6px;}
.sale-row{display:flex;align-items:center;gap:8px;font-size:11px;flex-wrap:wrap;}
.sale-row-label{color:var(--mu);flex-shrink:0;width:100px;}
.sale-row-val{font-weight:700;color:var(--ink);}
.sale-row-val.hl-re{color:var(--re);}
.sale-row-val.hl-pu{color:var(--pu);}
.sale-row-note{font-size:10px;color:var(--mu);}
.sale-feed-card{background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);padding:11px 13px;margin-bottom:8px;}
.sale-feed-card.fresh{border-color:rgba(255,74,106,.35);}
.sale-feed-badge{display:inline-flex;align-items:center;gap:4px;font-size:9px;padding:2px 7px;border-radius:4px;font-weight:700;margin-bottom:5px;}
.sfb-half{background:rgba(255,74,106,.15);color:var(--re);border:1px solid rgba(255,74,106,.3);}
.sfb-sale{background:rgba(255,204,68,.15);color:var(--go);border:1px solid rgba(255,204,68,.3);}
.sfb-point{background:rgba(176,106,255,.15);color:var(--pu);border:1px solid rgba(176,106,255,.3);}
.sfb-stock{background:rgba(34,201,122,.15);color:var(--gr);border:1px solid rgba(34,201,122,.3);}
.sale-feed-content{font-size:13px;font-weight:700;margin-bottom:4px;}
.sale-feed-meta{font-size:10px;color:var(--mu);display:flex;gap:8px;}
.sale-cat-btn{padding:7px 12px;border-radius:20px;border:1px solid var(--bd);background:none;color:var(--mu);font-family:inherit;font-size:11px;font-weight:700;cursor:pointer;transition:all .15s;white-space:nowrap;}
.sale-cat-btn.on{background:rgba(255,74,106,.12);border-color:rgba(255,74,106,.4);color:var(--re);}

/* ── ファッション ── */
.fashion-tips{padding:10px;background:rgba(0,200,160,.06);border:1px solid rgba(0,200,160,.15);border-radius:8px;margin-bottom:8px;display:flex;flex-direction:column;gap:6px;}
.ftip{display:flex;align-items:flex-start;gap:7px;font-size:11px;color:var(--ink2);line-height:1.5;}
.ftip-ic{font-size:14px;flex-shrink:0;}

/* ── ランドリー ── */
.laundry-card{background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);margin-bottom:10px;overflow:hidden;cursor:pointer;}
.laundry-detail{padding:0 13px 13px;}
.lm-title{font-size:11px;font-weight:700;color:var(--ink2);margin-bottom:7px;}
.lm-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px;}
.lm-item{display:flex;align-items:center;gap:8px;background:var(--s1);border-radius:8px;padding:8px 10px;border:1px solid var(--bd);}
.lm-icon{font-size:18px;flex-shrink:0;}
.lm-name{font-size:11px;font-weight:700;}
.lm-price{font-size:10px;color:var(--go);font-weight:700;}
.lb-title{font-size:11px;font-weight:700;color:var(--ink2);margin-bottom:7px;}
.lb-bars{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;}
.lb-bar-row{display:flex;align-items:center;gap:8px;}
.lb-time{font-size:10px;color:var(--mu);width:110px;flex-shrink:0;}
.lb-bar{flex:1;height:6px;background:var(--bd);border-radius:3px;overflow:hidden;}
.lb-bar-fill{height:100%;border-radius:3px;}
.lb-level{font-size:10px;font-weight:700;width:55px;flex-shrink:0;text-align:right;}
.laundry-status-btn{padding:11px 8px;border-radius:9px;border:1px solid var(--bd);background:none;color:var(--mu);font-family:inherit;font-size:12px;font-weight:700;cursor:pointer;transition:all .15s;}
.laundry-status-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:6px;font-size:11px;font-weight:700;}
.ls-empty{background:rgba(34,201,122,.15);color:var(--gr);border:1px solid rgba(34,201,122,.3);}
.ls-few{background:rgba(255,204,68,.15);color:var(--go);border:1px solid rgba(255,204,68,.3);}
.ls-busy{background:rgba(249,115,22,.15);color:#f97316;border:1px solid rgba(249,115,22,.3);}
.ls-full{background:rgba(255,74,106,.15);color:var(--re);border:1px solid rgba(255,74,106,.3);}

/* ── ボトムナビ ── */
.bnav{position:fixed;bottom:0;left:0;right:0;z-index:400;display:flex;background:var(--s1);border-top:1px solid var(--bd);height:calc(60px + env(safe-area-inset-bottom));box-shadow:0 -4px 20px rgba(0,0,0,.4);will-change:transform;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);}
.fab-post{position:fixed;right:16px;bottom:70px;width:52px;height:52px;border-radius:50%;background:#4caf50;border:none;color:#fff;font-size:22px;font-weight:700;cursor:pointer;z-index:1000;box-shadow:0 2px 12px rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;transition:transform .2s;}
.fab-post:active{transform:scale(.9);}
#photoViewer[style*="display: flex"],#photoViewer[style*="display:flex"]{flex-direction:column;align-items:center;justify-content:center;}
.mypage-menu-btn{width:100%;padding:13px 16px;background:var(--s2);border:1px solid var(--bd);border-radius:10px;color:var(--ink);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;text-align:left;transition:border-color .2s;}
.mypage-menu-btn:active{border-color:var(--ac);}
/* ── テーマトグル ── */
.theme-toggle{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--s2);border:1px solid var(--bd);border-radius:10px;cursor:pointer;}
.theme-toggle input[type="checkbox"]{display:none;}
.toggle-slider{width:44px;height:24px;background:var(--bd);border-radius:var(--radius-full);position:relative;transition:background .2s;flex-shrink:0;}
.toggle-slider::before{content:'';position:absolute;width:20px;height:20px;border-radius:50%;background:#fff;top:2px;left:2px;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.theme-toggle input:checked+.toggle-slider{background:var(--ac);}
.theme-toggle input:checked+.toggle-slider::before{transform:translateX(20px);}
.notif-tabs{display:flex;gap:0;border-bottom:2px solid var(--bd);margin-bottom:12px;}
.notif-tab{flex:1;padding:8px 4px;background:none;border:none;border-bottom:2px solid transparent;color:var(--mu);font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;}
.notif-tab.on{color:var(--ac);border-bottom-color:var(--ac);}
.dm-bubble{max-width:75%;padding:8px 12px;border-radius:12px;font-size:12px;line-height:1.5;margin-bottom:6px;}
.dm-mine{background:rgba(0,200,160,.15);color:var(--ink);margin-left:auto;border-bottom-right-radius:4px;}
.dm-other{background:var(--s3);color:var(--ink);border-bottom-left-radius:4px;}
.dm-meta{font-size:9px;color:var(--mu);margin-top:2px;}
.dm-thread{display:flex;align-items:center;gap:10px;padding:12px;background:var(--s2);border:1px solid var(--bd);border-radius:10px;margin-bottom:8px;cursor:pointer;}
.dm-thread:active{border-color:var(--ac);}
.dm-input-row{display:flex;gap:6px;padding:8px 0;}
.dm-input-row input{flex:1;padding:8px 12px;background:var(--s2);border:1px solid var(--bd);border-radius:10px;color:var(--ink);font-size:12px;font-family:inherit;outline:none;}
.dm-send-btn{padding:8px 14px;background:var(--ac);color:#0b0e15;border:none;border-radius:10px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;}
.unread-badge{position:absolute;top:2px;right:calc(50% - 16px);background:#ff4a6a;color:#fff;font-size:9px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;line-height:1;}
.bnav-item{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;border:none;background:none;font-family:inherit;color:var(--mu);transition:opacity .15s;padding:4px 2px;width:20%;max-width:20%;opacity:.45;}
.bnav-item.on,.bnav-item:active{opacity:1;background:none;}
.bnav-icon{flex-shrink:0;}
.bni-label{font-size:9px;font-weight:600;text-align:center;line-height:1.2;overflow:hidden;max-height:2.4em;}

/* ── モーダル ── */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:1000;display:flex;align-items:flex-end;backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .25s;}
.modal-bg.open{opacity:1;pointer-events:all;}
.modal{background:var(--s1);border:1px solid var(--bd);border-radius:20px 20px 0 0;padding:24px 20px;width:100%;max-height:92vh;overflow-y:auto;transform:translateY(30px);transition:transform .3s;position:relative;}
.modal-bg.open .modal{transform:translateY(0);}
.modal-title{font-size:20px;font-weight:800;margin-bottom:4px;}
.modal-sub{font-size:12px;color:var(--mu);margin-bottom:20px;}
.modal-close{position:absolute;top:14px;right:16px;background:none;border:none;color:var(--mu);font-size:18px;cursor:pointer;}
.fg{margin-bottom:14px;}
.fl{font-size:11px;color:var(--ink2);margin-bottom:5px;display:block;}
.fl-help{font-size:11px;color:var(--mu);margin-bottom:4px;line-height:1.4;}
.fi{width:100%;padding:11px 13px;background:var(--s2);border:1px solid var(--bd);border-radius:9px;color:var(--ink);font-size:14px;font-family:inherit;outline:none;transition:border-color .2s;}
.fi:focus{border-color:var(--ac);}
.btn-full{width:100%;padding:13px;background:var(--ac);color:#0b0e15;border:none;border-radius:9px;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit;margin-top:4px;}
.btn-out{width:100%;padding:11px;background:transparent;color:var(--ink2);border:1px solid var(--bd);border-radius:9px;font-size:12px;cursor:pointer;font-family:inherit;margin-top:7px;}
.star-b{padding:5px 9px;background:var(--s2);border:1px solid var(--bd);border-radius:6px;cursor:pointer;color:var(--go);font-size:11px;font-family:inherit;}
.star-b.on{background:rgba(255,204,68,.15);border-color:rgba(255,204,68,.4);}
.photo-upload-area{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-top:4px;}
.photo-upload-area::-webkit-scrollbar{height:0;}
.photo-thumb{width:72px;height:72px;border-radius:8px;background:var(--s3);border:1px solid var(--bd);display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;overflow:hidden;}
.photo-thumb img{width:100%;height:100%;object-fit:cover;}
.photo-thumb-del{position:absolute;top:2px;right:2px;width:18px;height:18px;background:rgba(0,0,0,.7);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;cursor:pointer;color:#fff;}
.photo-add{width:72px;height:72px;border-radius:8px;background:none;border:1px dashed var(--bd);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;color:var(--mu);font-size:22px;flex-shrink:0;font-family:inherit;}

/* ── もっとシート ── */

/* ── ロケーションピンSVG（📍の置換用） ── */
.loc-pin{display:inline-block;width:18px;height:18px;vertical-align:middle;margin-right:3px;}

/* ── 今営業中ボタン ── */
.open-now-btn{display:inline-flex;align-items:center;gap:5px;background:rgba(0,200,160,.08);border:1px solid var(--ac);border-radius:14px;color:var(--ac);font-size:12px;font-weight:600;padding:5px 11px;cursor:pointer;transition:background .2s,border-color .2s;white-space:nowrap;flex-shrink:0;}
.open-now-btn.visible{display:inline-flex !important;}
.open-now-btn.on{background:rgba(34,201,122,.15);border-color:#22c97a;}

/* ── トースト ── */
.toast{position:fixed;bottom:72px;left:50%;transform:translateX(-50%) translateY(60px);background:var(--s1);border:1px solid var(--ac);border-radius:11px;padding:11px 18px;font-size:13px;font-weight:600;color:var(--ac);box-shadow:var(--sh);z-index:10001;transition:transform .3s,opacity .3s;pointer-events:none;opacity:0;max-width:calc(100vw - 32px);text-align:center;line-height:1.5;box-sizing:border-box;}
.toast.show{transform:translateX(-50%) translateY(0);opacity:1;}
.tab-row{display:none !important;}

/* ── 新機能CSS ── */
#postMenu{position:fixed;bottom:0;left:0;right:0;top:0;z-index:800;display:none;}
#factorySheet{position:fixed;bottom:0;left:0;right:0;top:0;z-index:800;display:none;}
#chatSheet{position:fixed;bottom:0;left:0;right:0;top:0;z-index:900;display:none;}
#chatSheet .chat-wrap{position:absolute;bottom:0;left:0;right:0;background:var(--s1);border-radius:18px 18px 0 0;height:85vh;display:flex;flex-direction:column;}
.chat-messages{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:10px;}
.chat-msg{display:flex;gap:8px;max-width:85%;}
.chat-msg.mine{align-self:flex-end;flex-direction:row-reverse;}
.chat-msg-av{width:30px;height:30px;border-radius:50%;background:var(--s3);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0;}
.chat-msg-bubble{background:var(--s2);border:1px solid var(--bd);border-radius:12px;padding:9px 12px;font-size:13px;line-height:1.6;max-width:240px;word-break:break-word;}
.chat-msg.mine .chat-msg-bubble{background:rgba(0,200,160,.15);border-color:rgba(0,200,160,.3);}
.chat-msg-time{font-size:10px;color:var(--mu);}
.chat-input-area{display:flex;gap:8px;padding:10px 14px 20px;border-top:1px solid var(--bd);flex-shrink:0;}
.chat-input{flex:1;padding:10px 13px;background:var(--s2);border:1px solid var(--bd);border-radius:22px;color:var(--ink);font-family:inherit;font-size:13px;outline:none;}
.chat-send-btn{width:40px;height:40px;border-radius:50%;background:var(--ac);border:none;color:#000;font-size:18px;cursor:pointer;flex-shrink:0;}
.pm-item{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--s2);border:1px solid var(--bd);border-radius:11px;cursor:pointer;font-family:inherit;color:var(--ink);margin-bottom:8px;}
.pm-item-icon{font-size:22px;flex-shrink:0;}
.pm-item-label{font-size:12px;font-weight:700;}
.pm-item-sub{font-size:10px;color:var(--mu);margin-top:1px;}
.tf-btn{padding:6px 13px;border-radius:20px;border:1px solid var(--bd);background:none;color:var(--mu);font-family:inherit;font-size:11px;font-weight:700;cursor:pointer;white-space:nowrap;flex-shrink:0;}
.tf-btn.on{background:rgba(0,200,160,.15);border-color:rgba(0,200,160,.4);color:var(--ac);}
.tip-card{background:var(--s2);border:1px solid var(--bd);border-radius:12px;padding:12px;margin-bottom:8px;cursor:pointer;transition:border-color .2s;box-sizing:border-box;width:100%;overflow:hidden;}
.tip-card:active{border-color:var(--ac);}
.tip-title{font-size:13px;font-weight:700;margin-bottom:4px;display:flex;align-items:center;gap:6px;}
.tip-arrow{font-size:10px;color:var(--mu);margin-left:auto;flex-shrink:0;transition:transform .2s;}
.tip-card.open .tip-arrow{transform:rotate(180deg);}
.tip-preview{font-size:11px;color:var(--ink2);line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tip-card.open .tip-preview{display:none;}
.tip-text{font-size:11px;color:var(--ink2);line-height:1.7;white-space:pre-line;display:none;}
.tip-card.open .tip-text{display:block;}
.tip-like-btn{background:none;border:1px solid var(--bd);border-radius:8px;padding:4px 10px;font-size:11px;font-weight:700;color:var(--mu);cursor:pointer;font-family:inherit;}
.tip-like-btn.liked{border-color:rgba(76,175,80,.3);color:#4caf50;opacity:.7;cursor:default;}
.tip-pending{font-size:9px;padding:2px 6px;border-radius:4px;background:rgba(255,204,68,.15);color:var(--go);border:1px solid rgba(255,204,68,.3);font-weight:700;margin-left:6px;}
.tip-cat-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-top:4px;}
.tip-cat-btn{padding:8px 6px;border-radius:9px;border:1px solid var(--bd);background:var(--s3);color:var(--ink2);font-family:inherit;font-size:11px;font-weight:700;cursor:pointer;text-align:center;}
.tip-cat-btn.on{background:rgba(0,200,160,.15);border-color:rgba(0,200,160,.4);color:var(--ac);}
.char-count{font-size:10px;color:var(--mu);text-align:right;margin-top:4px;}

/* ── 2段チップUI ── */
.chip-area{background:var(--s1);border-top:1px solid var(--bd);position:sticky;top:50px;z-index:190;}
.chip-row1{display:flex;gap:5px;overflow-x:auto;padding:7px 10px 5px;border-bottom:1px solid rgba(255,255,255,.05);}
.chip-row1::-webkit-scrollbar{height:0;}
.chip-row2{display:flex;gap:5px;overflow-x:auto;padding:5px 10px 7px;min-height:34px;transition:all .2s;}
.chip-row2::-webkit-scrollbar{height:0;}
.chip1{flex-shrink:0;padding:5px 12px;border-radius:20px;font-size:11px;font-weight:700;border:1px solid var(--bd);background:none;color:var(--mu);cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s;}
.chip1.on{background:rgba(0,200,160,.15);border-color:rgba(0,200,160,.5);color:var(--ac);}
.chip2{flex-shrink:0;padding:4px 10px;border-radius:14px;font-size:10px;font-weight:600;border:1px solid var(--bd);background:none;color:var(--mu);cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s;}
.chip2.on{background:rgba(0,200,160,.12);border-color:rgba(0,200,160,.4);color:var(--ac);}
/* 今営業中フィルター */


/* ── スポットカード アクションボタン行 ── */
.card-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;}
.card-act-btn{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;background:none;border:1px solid var(--bd);border-radius:8px;font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;text-decoration:none;transition:all .15s;}
.card-act-btn:active{opacity:.7;}
.card-act-btn.act-map{color:var(--bl);border-color:rgba(74,158,255,.3);}
.card-act-btn.act-insta{color:#e1306c;border-color:rgba(225,48,108,.3);}
.card-act-btn.act-insta-add{color:var(--mu);border-color:var(--bd);font-size:10px;}
.card-act-btn.act-food{color:var(--or);border-color:rgba(255,140,0,.3);}
.card-act-btn.act-time{color:var(--bl);border-color:rgba(74,158,255,.3);}
.card-act-btn.act-kuchi{color:var(--ac);border-color:rgba(0,200,160,.3);}
.card-kuchi-btn{display:inline-flex;align-items:center;gap:4px;margin-top:8px;padding:5px 12px;background:none;border:1px solid rgba(0,200,160,.3);border-radius:8px;color:var(--ac);font-size:10px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .15s;}
.card-kuchi-btn:active{background:rgba(0,200,160,.1);}

/* ── Instagram食レポセクション（廃止済み） ── */

/* ==========================================
   LINE連携モーダル
   ========================================== */

.line-link-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.65);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10000;
  padding: 16px;
  animation: lineLinkFadeIn 0.2s ease-out;
}

@keyframes lineLinkFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.line-link-modal {
  background: var(--s1, #171b26);
  border-radius: 16px;
  padding: 24px 20px;
  max-width: 420px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  position: relative;
  border: 1px solid var(--bd, #2a2f3a);
}

.line-link-close {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--s2, #1e2230);
  border: none;
  color: var(--ink, #fff);
  font-size: 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}

.line-link-close:active {
  background: var(--s3, #262a36);
}

.line-link-title {
  font-size: 18px;
  font-weight: 700;
  margin: 0 0 6px 0;
  text-align: center;
  color: var(--ink, #fff);
}

.line-link-subtitle {
  font-size: 12px;
  color: var(--ink2, #8a92a5);
  text-align: center;
  margin: 0 0 20px 0;
}

.line-link-methods {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 20px;
}

.line-link-method {
  background: var(--s2, #1e2230);
  border-radius: 12px;
  padding: 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

.line-link-method-num {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #06c755;
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}

.line-link-method-label {
  font-size: 12px;
  color: var(--ink2, #8a92a5);
  font-weight: 600;
}

.line-link-cta-btn {
  display: block;
  width: 100%;
  padding: 13px;
  background: #06c755;
  color: #fff;
  text-align: center;
  font-size: 15px;
  font-weight: 700;
  border-radius: 10px;
  text-decoration: none;
  transition: background 0.15s;
}

.line-link-cta-btn:active {
  background: #05a848;
}

.line-link-or {
  text-align: center;
  color: var(--ink2, #8a92a5);
  font-size: 11px;
  position: relative;
}

.line-link-or::before,
.line-link-or::after {
  content: '';
  position: absolute;
  top: 50%;
  width: calc(50% - 24px);
  height: 1px;
  background: var(--bd, #2a2f3a);
}

.line-link-or::before { left: 0; }
.line-link-or::after { right: 0; }

.line-link-qr {
  width: 140px;
  height: 140px;
  border-radius: 8px;
  background: #fff;
  padding: 8px;
}

.line-link-code-box {
  background: var(--s2, #1e2230);
  border: 1px dashed var(--bd, #2a2f3a);
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 16px;
  text-align: center;
}

.line-link-code-label {
  font-size: 11px;
  color: var(--ink2, #8a92a5);
  margin-bottom: 8px;
}

.line-link-code-value {
  font-size: 28px;
  font-weight: 700;
  font-family: 'SF Mono', Monaco, Consolas, monospace;
  letter-spacing: 4px;
  color: var(--ac, #5ac8fa);
  margin-bottom: 10px;
  user-select: all;
}

.line-link-copy-btn {
  padding: 7px 14px;
  background: var(--ac-d, rgba(90, 200, 250, 0.12));
  color: var(--ac, #5ac8fa);
  border: none;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  margin-bottom: 10px;
}

.line-link-copy-btn:active {
  opacity: 0.7;
}

.line-link-countdown {
  font-size: 12px;
  color: var(--ink2, #8a92a5);
  font-weight: 600;
}

.line-link-countdown.expired {
  color: #ff6b6b;
}

.line-link-hint {
  font-size: 11px;
  color: var(--ink2, #8a92a5);
  text-align: center;
  line-height: 1.6;
}

/* ==========================================
   LINE連携ステータスモーダル（連携済み用）
   ========================================== */

.line-link-status-icon {
  text-align: center;
  font-size: 48px;
  margin-bottom: 12px;
}

.line-link-status-info {
  background: var(--s2, #1e2230);
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 20px;
  font-size: 13px;
  color: var(--ink, #fff);
  text-align: center;
  line-height: 1.7;
}

.line-link-unlink-btn {
  display: block;
  width: 100%;
  padding: 13px;
  background: rgba(255, 107, 107, 0.12);
  color: #ff6b6b;
  text-align: center;
  font-size: 14px;
  font-weight: 700;
  border: 1px solid rgba(255, 107, 107, 0.3);
  border-radius: 10px;
  cursor: pointer;
  margin-bottom: 14px;
  transition: background 0.15s;
}

.line-link-unlink-btn:active {
  background: rgba(255, 107, 107, 0.25);
}

/* ==========================================
   ランドリー空き報告
   ========================================== */
.ls-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ls-btn{padding:12px;background:var(--s2);border:1px solid var(--bd);border-radius:8px;color:var(--ink);font-size:13px;cursor:pointer;font-family:inherit;transition:all 0.15s}
.ls-btn:hover{background:var(--s3)}
.ls-btn.selected{border-color:#10b981;background:rgba(16,185,129,0.15)}
.laundry-card{padding:12px;background:var(--s2);border:1px solid var(--bd);border-radius:10px;margin-bottom:10px}
.laundry-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:12px}
.laundry-user{display:flex;align-items:center;gap:6px}
.laundry-time{color:var(--mu)}
.laundry-shop{font-size:14px;font-weight:600;margin-bottom:6px}
.laundry-status{display:inline-block;padding:4px 10px;border-radius:6px;font-size:13px;margin-bottom:6px}
.ls-empty{background:rgba(16,185,129,0.2);color:#10b981}
.ls-few{background:rgba(234,179,8,0.2);color:#eab308}
.ls-busy{background:rgba(249,115,22,0.2);color:#f97316}
.ls-full{background:rgba(107,114,128,0.2);color:#9ca3af}
.laundry-comment{font-size:13px;color:var(--mu);margin-bottom:6px;line-height:1.4}
.btn-del{padding:4px 10px;background:transparent;border:1px solid rgba(239,68,68,0.5);border-radius:6px;color:#ef4444;font-size:11px;cursor:pointer;font-family:inherit}
.btn-del:hover{background:rgba(239,68,68,0.1)}
.pop-btn{display:block;width:100%;padding:8px 12px;margin-top:6px;background:var(--s2);border:1px solid rgba(255,255,255,0.15);border-radius:6px;color:var(--ink);font-size:13px;cursor:pointer;text-align:center;text-decoration:none;font-family:inherit}
.pop-btn:hover{background:var(--s3)}
.pop-status-box{margin:8px 0;padding:10px;background:rgba(255,255,255,0.05);border-radius:8px}
.pop-status-label{font-size:10px;color:var(--mu);margin-bottom:4px}
.pop-status-value{font-size:14px;font-weight:600;margin-bottom:4px;display:inline-block;padding:3px 10px;border-radius:6px}
.pop-status-time{font-size:11px;color:var(--mu)}
.pop-status-comment{font-size:12px;margin-top:6px;color:var(--ink);line-height:1.4}
.pop-status-empty{opacity:0.6}
.pop-status-none{font-size:13px;color:var(--mu);font-style:italic}
.card-laundry-status{display:inline-block;padding:4px 10px;border-radius:6px;font-size:12px;margin-top:6px}
.card-laundry-time{font-size:10px;opacity:0.7;margin-left:4px}
.card-laundry-report-btn{padding:6px 12px;background:rgba(16,185,129,0.15);border:1px solid rgba(16,185,129,0.4);border-radius:6px;color:#10b981;font-size:12px;cursor:pointer;font-family:inherit;margin-top:6px}
.card-laundry-report-btn:hover{background:rgba(16,185,129,0.25)}
.card-laundry-update-btn{padding:4px 10px;background:rgba(59,130,246,0.12);border:1px solid rgba(59,130,246,0.4);border-radius:6px;color:#3b82f6;font-size:11px;cursor:pointer;font-family:inherit;margin-top:4px}
.pin-status-dot{position:absolute;top:-2px;right:-2px;width:12px;height:12px;border-radius:50%;border:2px solid #fff;z-index:10}
.pin-status-dot.empty{background:#10b981}
.pin-status-dot.few{background:#eab308}
.pin-status-dot.busy{background:#f97316}
.pin-status-dot.full{background:none;border:none;width:auto;height:auto;font-size:14px;line-height:1;top:-6px;right:-6px;}
.pin-status-dot.none{background:#9ca3af}

/* スポット検索バー */
.spot-search-bar{padding:8px 16px 6px 16px;background:var(--bg,#0a0a0a);border-top:1px solid rgba(255,255,255,0.05)}
.spot-search-wrap{display:flex;align-items:center;gap:6px;padding:6px 10px;background:rgba(255,255,255,0.05);border:1px solid var(--bd);border-radius:8px;font-size:12px}
.spot-search-wrap input{flex:1;background:transparent;border:none;color:var(--ink);outline:none;font-size:12px;font-family:inherit;padding:2px 0}
.spot-search-wrap input::placeholder{color:var(--mu);font-size:11px}
.spot-search-wrap button{background:transparent;border:none;color:var(--mu);font-size:14px;cursor:pointer;padding:2px 4px;border-radius:4px;line-height:1}
.spot-search-wrap button:hover{background:rgba(255,255,255,0.08);color:#ef4444}
.marker-dimmed{opacity:0 !important;pointer-events:none !important}
.marker-highlighted{z-index:999 !important}
.spot-search-result-bar{padding:6px 12px;margin:0 16px 6px 16px;background:rgba(59,130,246,0.1);border:1px solid rgba(59,130,246,0.25);border-radius:6px;font-size:11px;color:var(--ink);display:none;align-items:center;justify-content:space-between;gap:8px}
.spot-search-result-bar.on{display:flex}
.spot-search-result-bar .count{font-weight:600;color:#3b82f6}
.spot-search-result-bar .clear-btn{background:transparent;border:1px solid rgba(255,255,255,0.15);border-radius:5px;padding:3px 8px;color:var(--ink);font-size:10px;cursor:pointer;white-space:nowrap;font-family:inherit}
.spot-search-result-bar .clear-btn:hover{background:rgba(255,255,255,0.08)}
/* スポット検索履歴 */
.spot-search-history{display:none;margin:0 16px 6px 16px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);border-radius:8px;overflow:hidden}
.spot-search-history.on{display:block}
.sh-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid rgba(255,255,255,0.06)}
.sh-title{font-size:11px;color:var(--mu);font-weight:500}
.sh-clear-all{background:transparent;border:none;color:var(--mu);font-size:10px;cursor:pointer;padding:2px 6px;border-radius:4px;font-family:inherit}
.sh-clear-all:hover{color:#ef4444;background:rgba(239,68,68,0.1)}
.sh-list{max-height:300px;overflow-y:auto}
.sh-item{display:flex;align-items:center;border-bottom:1px solid rgba(255,255,255,0.04)}
.sh-item:last-child{border-bottom:none}
.sh-item-main{flex:1;display:flex;align-items:center;gap:8px;padding:8px 12px;background:transparent;border:none;color:var(--ink);font-size:12px;cursor:pointer;text-align:left;font-family:inherit}
.sh-item-main:hover{background:rgba(255,255,255,0.05)}
.sh-item-icon{font-size:12px;opacity:0.5}
.sh-item-kw{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sh-item-time{font-size:10px;color:var(--mu);flex-shrink:0}
.sh-item-del{background:transparent;border:none;color:var(--mu);font-size:12px;cursor:pointer;padding:8px 12px;border-left:1px solid rgba(255,255,255,0.06)}
.sh-item-del:hover{background:rgba(239,68,68,0.1);color:#ef4444}
.sh-empty{padding:20px;text-align:center;color:var(--mu);font-size:11px}

.out-range-section{padding:16px;margin-top:12px;background:rgba(59,130,246,0.05);border:1px solid rgba(59,130,246,0.2);border-radius:10px;text-align:center}
.out-range-header{font-size:13px;color:var(--mu);margin-bottom:10px}
.out-range-header strong{color:#3b82f6;font-size:14px}
.out-range-expand{padding:10px 20px;background:rgba(59,130,246,0.15);border:1px solid rgba(59,130,246,0.4);border-radius:8px;color:#3b82f6;font-size:13px;cursor:pointer;font-weight:600;font-family:inherit;transition:all 0.2s}
.out-range-expand:hover{background:rgba(59,130,246,0.25);border-color:rgba(59,130,246,0.6)}
.out-range-expand:active{transform:scale(0.98)}

/* ── 戻るボタン（サブページ共通） ── */
.back-btn{display:inline-flex;align-items:center;gap:4px;padding:8px 12px;background:none;border:none;color:var(--ink);font-size:14px;font-weight:500;font-family:inherit;cursor:pointer;margin:8px 0 0 8px;}
.back-btn:active{opacity:.6;}
.back-btn-icon{font-size:18px;line-height:1;}
/* トップバー内「<」戻るボタン */
.topbar-back{display:inline-flex;align-items:center;background:none;border:none;font-size:28px;color:var(--ink);cursor:pointer;padding:4px 4px;margin-right:0;font-weight:300;line-height:1;}

/* ── タグ提案モーダル ── */
.tag-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:center;justify-content:center;padding:16px;}
.tag-modal{background:var(--s1);width:100%;max-width:400px;max-height:85vh;overflow-y:auto;border-radius:16px;padding:20px;box-shadow:0 8px 32px rgba(0,0,0,.3);}
.tag-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;}
.tag-modal-header h3{margin:0;font-size:18px;color:var(--ink);}
.tag-modal-close{background:none;border:none;font-size:20px;cursor:pointer;color:var(--mu);padding:4px 8px;}
.tag-modal-poi-name{font-size:14px;color:var(--ink2);margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--bd);}
.tag-modal-section{margin-bottom:16px;}
.tag-modal-label{font-size:12px;font-weight:600;color:var(--ink2);margin-bottom:8px;}
.tag-modal-tags{display:flex;flex-wrap:wrap;gap:6px;}
.tag-modal-my-tag{display:inline-flex;align-items:center;gap:4px;}
.tag-modal-remove-btn{font-size:11px;color:var(--re);background:none;border:1px solid var(--re);border-radius:9999px;padding:2px 8px;cursor:pointer;font-family:inherit;}
.tag-disabled{opacity:.4;background:var(--bd) !important;color:var(--mu) !important;}
.tag-mine{background:var(--ac-d) !important;color:var(--ac) !important;border:1px solid var(--ac);}
.tag-modal-checklist{display:flex;flex-direction:column;gap:4px;}
.tag-modal-check-item{display:flex;align-items:center;gap:8px;padding:8px;border-radius:8px;cursor:pointer;font-size:14px;color:var(--ink);font-family:inherit;}
.tag-modal-check-item:hover{background:var(--s2);}
.tag-modal-check-item input[type="checkbox"]{margin:0;cursor:pointer;}
.tag-modal-count{font-size:11px;color:var(--ac);margin-left:auto;}
.tag-modal-empty{text-align:center;color:var(--mu);font-size:13px;padding:16px;}
.tag-modal-footer{display:flex;gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid var(--bd);}
.tag-modal-cancel-btn{flex:1;padding:10px;border-radius:8px;border:1px solid var(--bd);background:var(--s2);color:var(--ink);cursor:pointer;font-size:14px;font-family:inherit;}
.tag-modal-submit-btn{flex:2;padding:10px;border-radius:8px;border:none;background:var(--ac);color:white;cursor:pointer;font-size:14px;font-weight:600;font-family:inherit;}
.tag-modal-submit-btn:disabled{background:var(--bd);color:var(--mu);cursor:not-allowed;}

/* お役立ちサービスバナー */
.useful-banner{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--s2);border:1px solid var(--ac);border-left:4px solid var(--ac);border-radius:var(--r);box-shadow:var(--sh);text-decoration:none;color:inherit;margin:6px 14px 0;transition:background .2s;}
.useful-banner:active{background:var(--s3);}
.useful-banner-icons{font-size:16px;letter-spacing:1px;flex-shrink:0;white-space:nowrap;background:var(--ac-d);padding:6px 8px;border-radius:16px;}
.useful-banner-text{flex:1;min-width:0;}
.useful-banner-title{font-size:14px;font-weight:600;color:var(--ac);}
.useful-banner-sub{font-size:10px;color:var(--ink2);margin-top:2px;white-space:nowrap;}
.useful-banner-arrow{font-size:24px;font-weight:300;color:var(--mu);flex-shrink:0;}

/* ── field-renderer 用スタイル（Phase 3 Step 3） ── */
.fld-section-title{font-size:13px;color:var(--ink);font-weight:600;margin:18px 0 10px;padding-top:14px;border-top:1px solid var(--bd);}
.fld-time-row{display:flex;align-items:center;gap:12px;}
.fld-time-input{flex:1;}
.fld-24h-label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink2);white-space:nowrap;}
.fld-chip-row{display:flex;flex-wrap:wrap;gap:8px;}
.fld-budget-range{margin-top:6px;font-size:11px;color:var(--ink2);min-height:14px;}

/* ── extra 項目の表示用スタイル（Phase 3 Step 5+7） ── */
.extra-fields{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:5px;font-size:11px;color:var(--ink2);}
.extra-item{display:inline-block;white-space:nowrap;}

/* ── 注目スポット(B2 + C1) ── */
.featured-section{padding:12px 14px 8px;background:var(--s1);border-bottom:1px solid var(--bd);}
.fs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
.fs-title{font-size:14px;font-weight:700;color:var(--ink);margin:0;}
.fs-more{font-size:12px;color:var(--bl);background:none;border:none;padding:4px 8px;cursor:pointer;font-weight:500;font-family:inherit;}
.fs-cards-horizontal{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;}
.fs-cards-horizontal::-webkit-scrollbar{height:0;}
.fs-cards-vertical{display:flex;flex-direction:column;gap:8px;}
.fs-card{flex-shrink:0;width:130px;background:var(--s2);border-radius:10px;border:1px solid var(--bd);padding:8px;cursor:pointer;position:relative;transition:transform .1s;}
.fs-cards-vertical .fs-card{width:100%;display:flex;align-items:center;gap:10px;}
.fs-card:active{transform:scale(.98);}
.fs-distance{position:absolute;top:6px;left:6px;font-size:10px;background:rgba(0,0,0,.6);color:#fff;padding:2px 6px;border-radius:4px;z-index:1;}
.fs-img{width:100%;height:80px;border-radius:8px;background:var(--s3);margin-bottom:6px;display:flex;align-items:center;justify-content:center;}
.fs-cards-vertical .fs-img{width:70px;height:70px;margin-bottom:0;flex-shrink:0;}
.fs-img-fallback{background:linear-gradient(135deg,rgba(74,158,255,.15),rgba(0,200,160,.15));}
.fs-img-emoji{font-size:32px;}
.fs-name{font-size:12px;font-weight:600;color:var(--ink);line-height:1.3;margin-bottom:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.fs-rating{font-size:11px;color:var(--ink2);font-weight:500;}
.fs-star{color:#fbbf24;}
.fs-count{color:var(--mu);font-size:10px;}
.fs-rating-empty{color:var(--mu);}

/* ── 工場が見つからないエラー画面(⑤-5) ── */
.factory-not-found{padding:60px 20px;text-align:center;background:var(--s1);min-height:60vh;align-items:center;justify-content:center;}
.fnf-inner{max-width:320px;}
.fnf-icon{font-size:48px;margin-bottom:16px;}
.fnf-title{font-size:18px;font-weight:700;color:var(--ink);margin-bottom:8px;}
.fnf-desc{font-size:13px;color:var(--mu);margin-bottom:20px;line-height:1.6;}
.fnf-btn{display:inline-block;padding:10px 24px;background:var(--bl);color:#fff;border:none;border-radius:20px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;}
.fnf-btn:hover{opacity:.9;}

/* ═══ TOP PAGE ═══ */
.is-top .score-hd,.is-top #aroundContent,.is-top .bnav:not(.bnav-top),.is-top .fab-post,.is-top #topbarBack{display:none !important;}
.is-top .panels{display:none !important;}
.is-top.top-panel-open .panels{display:none !important;}
.is-top.top-panel-open .panels.on{display:block !important;}
.is-top.top-panel-open #topPage{display:none !important;}
.is-top #topPage{display:block;}
.bnav-top .bnav-item{width:auto;max-width:none;}
.top-hero{padding:16px 20px 0;}
.top-hero-inner{text-align:center;max-width:480px;width:100%;}
.top-search-wrap{position:relative;margin:0 auto 0;max-width:400px;}
.top-search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--mu);pointer-events:none;width:16px;height:16px;}
.top-search{width:100%;padding:8px 12px 8px 32px;border:1px solid var(--bd);border-radius:10px;background:var(--s2);color:var(--ink);font-size:13px;font-family:inherit;outline:none;box-sizing:border-box;transition:border-color .2s;}
.top-search:focus{border-color:var(--ac);}
.top-search::placeholder{color:var(--mu);}
.top-search-results{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--s2);border-radius:10px;border:1px solid var(--bd);max-height:300px;overflow-y:auto;display:none;z-index:100;box-shadow:0 4px 16px rgba(0,0,0,.3);}
.top-search-item{display:block;padding:12px 16px;border-bottom:1px solid var(--bd);text-decoration:none;color:inherit;cursor:pointer;transition:background .15s;}
.top-search-item:last-child{border-bottom:none;}
.top-search-item:hover,.top-search-item:active{background:rgba(255,255,255,.05);}
.top-search-name{font-size:14px;font-weight:600;color:var(--ink);line-height:1.4;}
.top-search-meta{font-size:12px;color:var(--mu);margin-top:2px;}
.top-search-empty{padding:16px;text-align:center;font-size:13px;color:var(--mu);}
.top-count{font-size:13px;color:var(--mu);margin:4px 0 16px;text-align:left;}
/* 軸で探すセクション */
.top-section-sub{font-size:11px;font-weight:600;color:var(--mu);margin:0 0 4px;}
.top-axis-tabs{display:flex;gap:4px;margin-bottom:16px;}
.top-axis-tab{flex:1;padding:8px 0;font-size:13px;font-weight:600;color:var(--mu);background:var(--s2);border:1px solid var(--bd);border-radius:8px;cursor:pointer;transition:all .15s;font-family:inherit;}
.top-axis-tab.on{background:var(--bl);color:#fff;border-color:var(--bl);font-weight:700;}
.top-axis-tab:hover:not(.on){background:var(--s3);}
.top-axis-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:0;}
.top-axis-chip{display:inline-flex;align-items:center;gap:3px;padding:4px 10px;font-size:11px;font-weight:600;color:var(--ink);background:var(--s2);border:1px solid var(--bd);border-radius:16px;cursor:pointer;transition:all .15s;font-family:inherit;white-space:nowrap;}
.top-axis-chip:hover:not(.on):not(.disabled){background:var(--s3);}
.top-axis-chip.on{background:var(--ac);color:#fff;border-color:var(--ac);}
.top-axis-chip.disabled{opacity:.35;cursor:default;}
.top-axis-chip.sub{font-size:11px;padding:4px 10px;}
.top-axis-chip-cnt{font-size:10px;color:var(--mu);font-weight:400;}
.top-axis-chip.on .top-axis-chip-cnt{color:rgba(255,255,255,.7);}
/* ランキングセクション */
.top-ranking-section{max-width:480px;margin:0 auto 12px;padding:12px 12px 14px;}
.top-ranking-section.top-bordered{border:1px solid var(--bd);border-radius:10px;margin-left:16px;margin-right:16px;max-width:none;}
.top-ranking-title{font-size:16px;font-weight:800;color:var(--ink);margin:0 0 8px;text-align:left;}
.top-rank-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--bd);text-decoration:none;color:inherit;cursor:pointer;transition:background .15s;}
.top-rank-item:first-child{border-top:1px solid var(--bd);border-radius:10px 10px 0 0;}
.top-rank-item:last-child{border-bottom:none;border-radius:0 0 10px 10px;}
.top-rank-item:only-child{border-radius:10px;}
.top-rank-item:hover,.top-rank-item:active{background:rgba(255,255,255,.05);}
.top-rank-info{flex:1;min-width:0;}
.top-rank-name{font-size:14px;font-weight:600;color:var(--ink);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.top-rank-meta{font-size:12px;color:var(--mu);margin-top:2px;}
.top-rank-score{font-family:'JetBrains Mono',monospace;font-size:20px;font-weight:700;color:var(--ac);min-width:36px;text-align:right;}
/* ランキング横スクロール */
.top-rank-scroll{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.top-rank-scroll::-webkit-scrollbar{display:none;}
.rank-card{flex-shrink:0;width:38%;scroll-snap-align:start;text-decoration:none;color:inherit;border:1px solid var(--bd);border-radius:10px;overflow:hidden;transition:border-color .2s;}
.rank-card:active{border-color:var(--ac);}
.rank-card-photo{position:relative;width:100%;aspect-ratio:1/0.6;background:var(--s3);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.rank-badge{position:absolute;top:4px;left:4px;min-width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:11px;font-weight:700;color:var(--ink);background:rgba(255,255,255,.85);}
.rank-badge-1{font-size:14px;background:rgba(255,215,0,.9);}
.rank-badge-2{font-size:14px;background:rgba(192,192,192,.9);}
.rank-badge-3{font-size:14px;background:rgba(205,127,50,.9);}
.rank-card-body{padding:4px 6px 6px;}
.rank-card-name{font-size:11px;font-weight:600;color:var(--ink);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.rank-card-city{font-size:9px;color:var(--mu);margin-top:1px;}
.rank-card-score{margin-top:2px;}
.rank-card-score-num{font-family:'JetBrains Mono',monospace;font-size:16px;font-weight:700;color:var(--ac);}
.rank-card-score-label{font-size:8px;color:var(--mu);}
/* エリアから探す */
.top-area-grid{display:flex;gap:6px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:4px;scrollbar-width:none;}
.top-area-grid::-webkit-scrollbar{display:none;}
.top-area-card{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 4px 5px;background:var(--s2);border:1px solid var(--bd);border-radius:8px;cursor:pointer;text-decoration:none;color:inherit;transition:border-color .2s;scroll-snap-align:start;flex-shrink:0;width:30%;}
.top-area-card:active,.top-area-card.on{border-color:var(--ac);}
.top-area-card img{width:90%;height:auto;object-fit:contain;}
.top-area-card-name{font-size:11px;font-weight:600;color:var(--ink);text-align:center;line-height:1.3;}
.top-area-card-cnt{font-size:10px;color:var(--mu);}
/* フィルタータグ */
.top-filter-tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;max-width:480px;margin:0 auto;padding:0 20px 8px;}
.top-filter-tag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;background:var(--ac-d);color:var(--ac);font-size:11px;font-weight:600;border:none;cursor:pointer;}
.top-filter-tag::after{content:'✕';font-size:9px;opacity:.7;}
