
    :root {
      --bg: #0a0a0a; --bg2: #111; --bg3: #181818;
      --lime: #b8ff00; --lime-dim: #7aaa00;
      --white: #f0f0f0; --gray: #e8e8e8; --gray2: #2a2a2a;
      --orange: #ff8c00; --blue: #4da6ff;
      --heatmap-train: #1e2800; --heatmap-rest: #141414;
      --txt-mute: #e8e8e8; /* 補助テキスト色（SPORTY: 明るいオフホワイト / ELEGANT: ダークブラウン） */
    }
    /* ── ELEGANT THEME（アイボリー基調・ユニセックス）── */
    body.theme-feminine {
      --bg: #f5efe7; --bg2: #ebe3d6; --bg3: #ddd0bc;
      --lime: #5c1a2b; --lime-dim: #3f0f1c;
      --white: #2d2620; --gray: #5a4a3a; --gray2: #d4c8b8;
      --orange: #c97a4a; --blue: #6a8aaa;
      --heatmap-train: #d4a8b5; --heatmap-rest: #ccc0b0;
      --txt-mute: #5a4a3a;
    }
    /* スロットカードの色味（ハードコード値の上書き） */
    body.theme-feminine .day-card { background:#ebe3d6; }
    body.theme-feminine .day-card:hover { background:#ddd0bc; }
    body.theme-feminine .day-card.checked { background:#e8d5c0; }
    body.theme-feminine .day-card.checked:hover { background:#ddc0a8; }
    body.theme-feminine .day-card.rest { background:#e6dccc; border-left-color:#b8a890; }
    body.theme-feminine .day-card.rest:hover { background:#dcd1bf; }
    body.theme-feminine .day-card.rest .day-label,
    body.theme-feminine .day-card.rest .day-target,
    body.theme-feminine .day-card.rest .day-exercises { opacity:1 !important; color:#3a2e22 !important; }
    body.theme-feminine .day-card.rest .ex-simple,
    body.theme-feminine .day-card.rest .ex-top { color:#3a2e22; }
    body.theme-feminine .day-card.env-home { background:#d8dde2; border-color:#aab8c5; }
    body.theme-feminine .day-card.env-home:hover { background:#c8d2da; }
    body.theme-feminine .day-card.env-travel { background:#e8d8c8; border-top-color:#c97a4a; }
    body.theme-feminine .day-card.env-travel:hover { background:#ddc8b4; }
    body.theme-feminine .day-card.checked .day-label,
    body.theme-feminine .day-card.checked .day-exercises,
    body.theme-feminine .day-card.checked .ex-top,
    body.theme-feminine .day-card.checked .ex-simple,
    body.theme-feminine .day-card.checked .ex-sets { color:#7a5230; }
    body.theme-feminine .day-card.checked .check-btn { color:#7a5230; border-color:#b08560; background:rgba(176,133,96,0.08); }
    /* 細かい境界線・ヘッダー類 */
    body.theme-feminine .day-head { border-bottom-color:#d4c8b8; }
    body.theme-feminine .ex-item, body.theme-feminine .ex-simple, body.theme-feminine .ex-row { border-color:#ddd0bc; }
    body.theme-feminine .ex-w-input { background:#fffaf3; color:#2d2620; border-color:#c0b4a2; }
    body.theme-feminine .ex-done-btn { border-color:#c0b4a2; color:#8a7e72; background:#fffaf3; }
    body.theme-feminine .ex-done-btn.done { background:#e8d5c0; color:#7a5230; border-color:#b08560; }
    body.theme-feminine .check-btn { background:#fffaf3; border-color:#c0b4a2; color:#8a7e72; }
    body.theme-feminine .check-btn:hover { background:#f0e5d2; color:#7a5230; border-color:#b08560; }
    body.theme-feminine .nutr-card,
    body.theme-feminine .phase-card,
    body.theme-feminine .stat-block,
    body.theme-feminine .streak-section { background:#ebe3d6; }
    body.theme-feminine .nutr-desc,
    body.theme-feminine .phase-desc { color:#5a4a3a; }
    /* ELEGANT: グレー文字を一括ダークブラウン化（コントラスト確保） */
    body.theme-feminine .header-sub,
    body.theme-feminine .day-name,
    body.theme-feminine .day-exercises,
    body.theme-feminine .ex-simple,
    body.theme-feminine .ex-top,
    body.theme-feminine .ex-hint,
    body.theme-feminine .ex-sets,
    body.theme-feminine .gp-row,
    body.theme-feminine .gp-row span,
    body.theme-feminine .gp-unit,
    body.theme-feminine .nutr-label,
    body.theme-feminine .phase-period,
    body.theme-feminine .section-label,
    body.theme-feminine .input-hint,
    body.theme-feminine .input-label,
    body.theme-feminine .setup-sublabel,
    body.theme-feminine .setup-tag,
    body.theme-feminine .setup-sub,
    body.theme-feminine .k-txt,
    body.theme-feminine .k-step-t,
    body.theme-feminine .k-stitle,
    body.theme-feminine .k-hl,
    body.theme-feminine .qa-a,
    body.theme-feminine .nutr-val,
    body.theme-feminine .female-tips-txt,
    body.theme-feminine .female-tips-lab,
    body.theme-feminine .ex-sugg-val,
    body.theme-feminine .cdlabel,
    body.theme-feminine .cdval,
    body.theme-feminine .mf-label,
    body.theme-feminine .nutr-unit,
    body.theme-feminine .qw-label,
    body.theme-feminine .cm-default-badge,
    body.theme-feminine .cm-status-text { color:#5a4a3a; }
    body.theme-feminine .cdrow { border-bottom-color:#d4c8b8; }
    /* ELEGANT: アクティブ背景の暗いライム(#141a00)をローズトーンに */
    body.theme-feminine .chart-tab.active,
    body.theme-feminine .env-btn.active,
    body.theme-feminine .equip-btn.active,
    body.theme-feminine .act-btn.active,
    body.theme-feminine .k-gender-btn.active,
    body.theme-feminine .freq-btn.active,
    body.theme-feminine .target-mode-btn.active,
    body.theme-feminine .gender-btn.active,
    body.theme-feminine .body-goal-btn.active,
    body.theme-feminine .env-sw-btn.active-gym,
    body.theme-feminine .sched-day.train,
    body.theme-feminine .k-card.open .k-card-hd,
    body.theme-feminine .cm-notice,
    body.theme-feminine .str-tab.active,
    body.theme-feminine .range-btn.active,
    body.theme-feminine .timer-preset-chip.active,
    body.theme-feminine .nutr-card.highlight,
    body.theme-feminine .gym-day-btn.is-gym { background:#ecd9dc !important; }
    body.theme-feminine .env-sw-btn.active-home,
    body.theme-feminine .gym-day-btn.is-home,
    body.theme-feminine .view-btn.active { background:#d8e3ec !important; color:#1c3a5e !important; border-color:#6a8aaa !important; }
    body.theme-feminine .env-sw-btn.active-travel { background:#f0dccc !important; }
    body.theme-feminine .chart-tab:hover { border-color:#5c1a2b; }
    body.theme-feminine .upgrade-plan.recommended.selected { background:rgba(92,26,43,0.06); }
    /* TIPS等のk-stitle (背景画像的見出し)とインラインstyle対策 */
    body.theme-feminine .k-stitle { background:#ecd9dc !important; color:#3f0f1c !important; border-left-color:#5c1a2b !important; }
    body.theme-feminine .k-em { color:#5c1a2b; }
    body.theme-feminine [style*="background:#0a1200"],
    body.theme-feminine [style*="background:#0f1a00"],
    body.theme-feminine [style*="background:#141a00"] { background:#ecd9dc !important; }
    body.theme-feminine [style*="color:var(--lime-dim)"] { color:#3f0f1c !important; }
    body.theme-feminine .qa-cat { color:#5a4a3a; border-bottom-color:#d4c8b8; }
    body.theme-feminine .k-card { border-color:#d4c8b8; }
    body.theme-feminine .k-card-hd:hover { background:#f0e5d2; }
    /* TIPS のハイライトボックス・ドロワー類の暗背景をアイボリーに */
    body.theme-feminine .k-hl { background:#ecd9dc !important; border-color:#5c1a2b !important; border-left-color:#5c1a2b !important; color:#2a0a14 !important; }
    body.theme-feminine #pfcDrawer,
    body.theme-feminine #timerDrawer { background:#f5efe7 !important; border-top-color:#5c1a2b !important; color:#2d2620; }
    body.theme-feminine .cm-drawer { background:#ebe3d6 !important; border-left-color:#d4c8b8 !important; }
    /* 種目ピッカーパネル（position:fixedでドロワー外のためCSSvar上書き必要） */
    body.theme-feminine .cm-picker-panel { background:#fffaf3; border-color:#d4c8b8; }
    body.theme-feminine .cm-picker-search { border-color:#d4c8b8; }
    body.theme-feminine .cm-picker-search input { background:#fffaf3; border-color:#d4c8b8; color:#2d2620; }
    body.theme-feminine .cm-picker-group-head { color:#5a4a3a; border-color:#d4c8b8; }
    body.theme-feminine .cm-picker-group-head:hover { background:rgba(92,26,43,0.06); color:#2d2620; }
    body.theme-feminine .cm-picker-item { color:#2d2620; border-color:#e8dece; }
    body.theme-feminine .cm-picker-item:hover { background:rgba(92,26,43,0.08); color:#5c1a2b; }
    body.theme-feminine .cm-picker-direct { color:#5a4a3a; border-color:#d4c8b8; }
    body.theme-feminine .cm-picker-direct:hover { color:#2d2620; }
    body.theme-feminine .cm-ex-picker-btn { background:#fffaf3; border-color:#c0b4a2; color:#2d2620; }
    body.theme-feminine .cm-ex-picker-btn:hover { border-color:#5c1a2b; }
    body.theme-feminine .cm-ex-picker-btn.empty { color:#8a7e72; }
    /* ドロワー内の各種要素 */
    body.theme-feminine #pfcDrawer input,
    body.theme-feminine #pfcDrawer select,
    body.theme-feminine #pfcDrawer textarea,
    body.theme-feminine #timerDrawer input,
    body.theme-feminine .cm-drawer input,
    body.theme-feminine .cm-drawer textarea { background:#fffaf3 !important; color:#2d2620 !important; border-color:#c0b4a2 !important; }
    body.theme-feminine .pfc-dr-title,
    body.theme-feminine .cm-title { color:#5c1a2b !important; }
    /* カスタム編集中の背景tint・適用中バッジの枠はライム固定値のためELEGANTでバーガンディに上書き */
    body.theme-feminine .cm-edit-btn.has-custom { background:rgba(92,26,43,0.1); }
    body.theme-feminine .cm-custom-badge { border-color:rgba(92,26,43,0.45); }
    body.theme-feminine .qw-input { background:#fffaf3 !important; color:#2d2620 !important; border-color:#c0b4a2 !important; }
    body.theme-feminine .qw-step { background:#fffaf3 !important; color:#5a4a3a !important; border-color:#c0b4a2 !important; }
    body.theme-feminine .qw-step:hover { background:#ecd9dc !important; color:#5c1a2b !important; border-color:#5c1a2b !important; }
    body.theme-feminine .quick-weight-bar { background:#ebe3d6 !important; }
    body.theme-feminine .qw-extra-input { background:#fffaf3 !important; color:#2d2620 !important; border-color:#c0b4a2 !important; }
    body.theme-feminine .gym-day-btn.is-home { background:#d8e3ec !important; border-color:#6a8aaa !important; color:#1c3a5e !important; }
    /* ELEGANT: TIMERドロワー内の暗背景・ライム残りを全て上書き */
    body.theme-feminine .timer-phase-label,
    body.theme-feminine .timer-countdown,
    body.theme-feminine .timer-done-title,
    body.theme-feminine .timer-stepper-val { color:#5c1a2b !important; }
    body.theme-feminine .timer-progress-fill,
    body.theme-feminine .timer-dot.done,
    body.theme-feminine .timer-toggle.on { background:#5c1a2b !important; }
    body.theme-feminine .timer-dot.current { background:#5c1a2b !important; opacity:0.5; }
    body.theme-feminine .timer-dot { background:#d4c8b8; }
    body.theme-feminine .timer-btn-primary { background:#5c1a2b !important; color:#fffaf3 !important; }
    body.theme-feminine .timer-btn-primary:disabled { background:#d4c8b8 !important; color:#8a7e72 !important; }
    body.theme-feminine .timer-progress-bar { background:#ddd0bc !important; }
    body.theme-feminine .timer-btn-secondary,
    body.theme-feminine .timer-preset-chip,
    body.theme-feminine .timer-preset-add,
    body.theme-feminine .timer-input,
    body.theme-feminine .timer-prep-row { background:#fffaf3 !important; border-color:#c0b4a2 !important; color:#5a4a3a !important; }
    body.theme-feminine .timer-preset-chip.active { background:#ecd9dc !important; border-color:#5c1a2b !important; color:#5c1a2b !important; }
    body.theme-feminine .timer-input:focus { border-color:#5c1a2b !important; color:#5c1a2b !important; }
    body.theme-feminine .timer-stepper-btn:hover { color:#5c1a2b !important; }
    body.theme-feminine .timer-toggle::after { background:#fffaf3; }
    body.theme-feminine .timer-close-btn,
    body.theme-feminine .timer-input-lbl,
    body.theme-feminine .timer-sublabel,
    body.theme-feminine .timer-setup-label,
    body.theme-feminine .timer-prep-info,
    body.theme-feminine .timer-prep-info small,
    body.theme-feminine .timer-stepper-btn,
    body.theme-feminine .timer-btn-secondary:hover { color:#5a4a3a !important; }
    body.theme-feminine .timer-sound-btn { background:#fffaf3 !important; border-color:#c0b4a2 !important; color:#5a4a3a !important; }
    body.theme-feminine .timer-sound-btn.on { background:#ecd9dc !important; border-color:#5c1a2b !important; color:#5c1a2b !important; }
    /* 女性向け 体重参考行 */
    .female-ref-row { display:flex; justify-content:space-between; align-items:center; padding:10px 14px; border-bottom:1px solid #151f00; cursor:pointer; transition:background 0.15s; }
    .female-ref-row:hover { background:#111d00; }
    .female-ref-label { font-size:13px; color:#ccc; font-weight:500; }
    .female-ref-note { font-size:9px; color:var(--lime); margin-left:6px; }
    .female-ref-val { font-size:15px; color:var(--lime); font-weight:bold; }
    .female-ref-fat { font-size:11px; color:var(--txt-mute); margin-left:6px; font-weight:400; }
    body.theme-feminine .female-ref-row { border-bottom-color:#d4c8b8; }
    body.theme-feminine .female-ref-row:hover { background:#f0e5d2; }
    body.theme-feminine .female-ref-label,
    body.theme-feminine .female-ref-fat { color:#5a4a3a; }
    body.theme-feminine .female-ref-note { color:#5c1a2b; }
    body.theme-feminine .female-ref-val { color:#5c1a2b; }
    /* ELEGANT: 今週の進捗 / グラフ周辺の残りグレーをダークブラウン化 */
    body.theme-feminine .stat-label,
    body.theme-feminine .progress-bar-label,
    body.theme-feminine .streak-stat-label,
    body.theme-feminine .chart-val-unit,
    body.theme-feminine .chart-diff-label,
    body.theme-feminine .chart-count,
    body.theme-feminine .str-tab,
    body.theme-feminine .view-btn,
    body.theme-feminine .range-btn,
    body.theme-feminine .compare-select { color:#5a4a3a !important; }
    body.theme-feminine .streak-stat-num.zero { color:#8a7e72; }
    body.theme-feminine .str-tab,
    body.theme-feminine .view-btn,
    body.theme-feminine .range-btn,
    body.theme-feminine .compare-select { background:#fffaf3; border-color:#c0b4a2; }
    body.theme-feminine .compare-select option { background:#fffaf3 !important; color:#2d2620 !important; }
    body.theme-feminine .compare-select:hover { border-color:#5c1a2b; }
    body.theme-feminine .str-tab:hover,
    body.theme-feminine .view-btn:hover,
    body.theme-feminine .range-btn:hover { border-color:#5c1a2b; }
    body.theme-feminine .progress-bar { background:#ddd0bc; }
    body.theme-feminine .progress-fill { background:#5c1a2b; }
    body.theme-feminine .stat-unit,
    body.theme-feminine .metric-label,
    body.theme-feminine .metric-unit,
    body.theme-feminine .heatmap-head,
    body.theme-feminine .heatmap-legend-item { color:#5a4a3a !important; }
    body.theme-feminine .metric-val { color:#2d2620; }
    /* 初期設定画面のその他のグレー上書き */
    body.theme-feminine #setupOverlay .input-field { background:#fffaf3; color:#2d2620; border-color:#c0b4a2; }
    body.theme-feminine .auth-input { background:#fffaf3; color:#2d2620; border-color:#c0b4a2; }
    body.theme-feminine #setupOverlay { background:#f5efe7; }
    body.theme-feminine #authOverlay { background:#f5efe7; }
    /* 設定画面のライム輪郭をボルドーに */
    body.theme-feminine #femaleWeightRef > div { border-color:rgba(92,26,43,0.25) !important; background:#f3e5e8 !important; }
    body.theme-feminine #targetManualHint > div { border-color:rgba(92,26,43,0.3) !important; background:#f3e5e8 !important; }
    body.theme-feminine .female-ref-row { border-bottom-color:#e0c8cf !important; }
    body.theme-feminine .sched-day.train { border-color:rgba(92,26,43,0.4) !important; }
    body.theme-feminine .sched-day.train .sched-lbl { color:var(--lime) !important; }
    body.theme-feminine .sched-day.train .sched-body { color:var(--lime-dim) !important; }
    /* 設定画面の細字を太く */
    body.theme-feminine .input-hint,
    body.theme-feminine .setup-sub,
    body.theme-feminine .input-label,
    body.theme-feminine .setup-sublabel,
    body.theme-feminine .setup-section-title { font-weight: 500; }
    body.theme-feminine .input-hint { font-size: 11px; }
    body.theme-feminine .setup-sub { font-size: 12px; }
    /* ボルドー背景ボタンは白文字に */
    body.theme-feminine .qw-save,
    body.theme-feminine .cm-save,
    body.theme-feminine .pfc-dr-add-btn,
    body.theme-feminine .setup-submit,
    body.theme-feminine .auth-btn,
    body.theme-feminine .mf-add,
    body.theme-feminine .theme-toggle button.active { color:#fffaf3 !important; }
    /* 透明背景の枠ボタン（PROアップグレード）はボルドー文字＋枠 */
    body.theme-feminine .upgrade-btn { color:#5c1a2b !important; border-color:#5c1a2b !important; }
    body.theme-feminine .upgrade-btn:hover { background:rgba(92,26,43,0.06) !important; }
    /* チェックイン等ボルドーボタンの hover/押下色（ハードコードのライム #ccff22 を上書き） */
    body.theme-feminine .qw-save:hover,
    body.theme-feminine .cm-save:hover { background:#4a1422 !important; }
    /* チェックイン完了「✓ SAVED」表示もテーマ色に */
    body.theme-feminine .qw-done { color:#5c1a2b; }
    /* ライムハードコードのELEGANT対応 */
    body.theme-feminine .day-card.checked,
    body.theme-feminine .ex-done-btn.done { background:#ecd9dc !important; }
    body.theme-feminine .day-card.checked:hover { background:#ddc0c5 !important; }
    body.theme-feminine .day-card.checked .check-btn { color:#5c1a2b !important; border-color:#5c1a2b !important; background:rgba(92,26,43,0.08) !important; }
    body.theme-feminine .day-card.checked .day-label,
    body.theme-feminine .day-card.checked .day-exercises,
    body.theme-feminine .day-card.checked .ex-top,
    body.theme-feminine .day-card.checked .ex-simple,
    body.theme-feminine .day-card.checked .ex-sets { color:#3f0f1c !important; }
    body.theme-feminine .ex-done-btn.done { color:#5c1a2b !important; border-color:#5c1a2b !important; }
    body.theme-feminine .check-btn:hover { background:#ecd9dc !important; color:#5c1a2b !important; border-color:#5c1a2b !important; }
    body.theme-feminine .phase-card.active { background:#ecd9dc !important; }
    body.theme-feminine .phase-card.active .phase-goals li { border-color:#5c1a2b; color:#5c1a2b; }
    /* インラインstyle対策：弱めグレーで指定されている箇所もまとめて上書き */
    body.theme-feminine [style*="color:var(--txt-mute)"],
    body.theme-feminine [style*="color: var(--txt-mute)"],
    body.theme-feminine [style*="color:#aaa"],
    body.theme-feminine [style*="color:#999"],
    body.theme-feminine [style*="color:#888"],
    body.theme-feminine [style*="color:#7"]:not([style*="color:#7a5230"]) { color:#5a4a3a !important; }
    body.theme-feminine .purpose-lead { background:linear-gradient(90deg, rgba(92,26,43,0.18), transparent); border-left-color:#5c1a2b; }
    body.theme-feminine .purpose-lead-lab { color:#5c1a2b; }
    body.theme-feminine .purpose-lead-txt,
    body.theme-feminine .purpose-lead-list li { color:#2a0a14; }
    body.theme-feminine .phase-card.active { background:#f3e8d8; }
    body.theme-feminine .phase-card.active .phase-goals li { border-color:var(--lime); color:var(--lime); }
    /* テーマ切替ボタン */
    .theme-toggle { display:inline-flex; gap:0; border:1px solid var(--gray2); border-radius:3px; overflow:hidden; }
    .theme-toggle button { background:transparent; border:none; color:var(--gray); font-family:'DM Mono',monospace; font-size:9px; letter-spacing:0.15em; padding:6px 12px; cursor:pointer; transition:all 0.2s; }
    .theme-toggle button.active { background:var(--lime); color:var(--bg); }
    .theme-toggle button:not(.active):hover { background:var(--bg3); color:var(--white); }
    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    /* WCAG 2.4.7 - Focus Visible */
    button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible, [role="button"]:focus-visible {
      outline: 2px solid var(--lime); outline-offset: 2px;
    }
    /* ── Atmospheric Background（質感） ───────── */
    body {
      background:
        radial-gradient(ellipse at top left, rgba(184,255,0,0.035), transparent 55%),
        radial-gradient(ellipse at bottom right, rgba(184,255,0,0.025), transparent 60%),
        var(--bg);
    }
    body.theme-feminine {
      background:
        radial-gradient(ellipse at top right, rgba(92,26,43,0.05), transparent 60%),
        radial-gradient(ellipse at bottom left, rgba(92,26,43,0.035), transparent 65%),
        var(--bg);
    }
    /* ── Page Load Staging（reduced-motion 対応） ── */
    @keyframes lbFadeUp { from { opacity:0; transform:translateY(16px); } to { opacity:1; transform:translateY(0); } }
    @keyframes lbSlideIn { from { opacity:0; transform:translateX(-10px); } to { opacity:1; transform:translateX(0); } }
    @keyframes lbPulseRing { 0%{ box-shadow:0 0 0 0 rgba(184,255,0,0.4); } 70%{ box-shadow:0 0 0 8px rgba(184,255,0,0); } 100%{ box-shadow:0 0 0 0 rgba(184,255,0,0); } }
    @keyframes lbPulseRingF { 0%{ box-shadow:0 0 0 0 rgba(92,26,43,0.45); } 70%{ box-shadow:0 0 0 8px rgba(92,26,43,0); } 100%{ box-shadow:0 0 0 0 rgba(92,26,43,0); } }
    body.theme-feminine .phase-card.active .phase-num { animation-name: lbPulseRingF !important; }
    @media (prefers-reduced-motion: no-preference) {
      /* 初回ロード時のみ staging アニメーションを適用（再描画時には適用されない） */
      body.lb-initial-load header { animation: lbFadeUp 0.55s ease-out backwards; animation-delay: 0.05s; }
      body.lb-initial-load section { animation: lbFadeUp 0.55s ease-out backwards; }
      body.lb-initial-load section:nth-of-type(1) { animation-delay: 0.12s; }
      body.lb-initial-load section:nth-of-type(2) { animation-delay: 0.20s; }
      body.lb-initial-load section:nth-of-type(3) { animation-delay: 0.28s; }
      body.lb-initial-load section:nth-of-type(4) { animation-delay: 0.36s; }
      body.lb-initial-load section:nth-of-type(5) { animation-delay: 0.44s; }
      body.lb-initial-load .day-card { animation: lbSlideIn 0.45s ease-out backwards; }
      body.lb-initial-load .day-card:nth-child(1) { animation-delay: 0.30s; }
      body.lb-initial-load .day-card:nth-child(2) { animation-delay: 0.36s; }
      body.lb-initial-load .day-card:nth-child(3) { animation-delay: 0.42s; }
      body.lb-initial-load .day-card:nth-child(4) { animation-delay: 0.48s; }
      body.lb-initial-load .day-card:nth-child(5) { animation-delay: 0.54s; }
      body.lb-initial-load .day-card:nth-child(6) { animation-delay: 0.60s; }
      body.lb-initial-load .day-card:nth-child(7) { animation-delay: 0.66s; }
      .phase-card.active .phase-num { animation: lbPulseRing 2.2s ease-out infinite; border-radius: 50%; }
    }
    /* ── Header Accent Strip（記憶に残す要素） ── */
    header { position: relative; }
    header::after {
      content: ''; position: absolute; left: 0; top: 0;
      width: 3px; height: 90px; background: var(--lime);
      opacity: 0.85;
    }
    /* ══════════════════════════════════════════ */
    /* MICRO INTERACTIONS                          */
    /* ══════════════════════════════════════════ */
    /* #1 完了ボタンバウンス */
    @keyframes lbBounce { 0%{transform:scale(1)} 40%{transform:scale(1.3)} 70%{transform:scale(0.92)} 100%{transform:scale(1)} }
    .ex-done-btn.lb-bounce { animation: lbBounce 0.45s cubic-bezier(0.4,0,0.2,1); }
    /* #2 スパーク（JS制御） */
    @keyframes lbSpark { 0%{transform:scale(0) rotate(0);opacity:0} 50%{opacity:1} 100%{transform:scale(1.6) rotate(160deg);opacity:0} }
    .lb-spark { position: absolute; font-size: 14px; color: var(--lime); pointer-events: none; z-index: 9999; animation: lbSpark 0.65s ease-out forwards; }
    /* #6 重量入力ハイライト */
    @keyframes lbInputFlash { 0%{background:var(--lime);color:var(--bg);transform:scale(1.05)} 100%{} }
    .ex-w-input.lb-flash { animation: lbInputFlash 0.55s ease-out; }
    /* #8 リップル */
    @keyframes lbRippleAnim { from{transform:scale(0);opacity:0.5} to{transform:scale(3);opacity:0} }
    .lb-ripple-host { position: relative; overflow: hidden; }
    .lb-ripple { position: absolute; border-radius: 50%; background: currentColor; pointer-events: none; transform: scale(0); animation: lbRippleAnim 0.55s ease-out forwards; opacity: 0.35; }
    /* #9 カードhoverリフト */
    @media (hover: hover) {
      .day-card:not(.rest) { transition: transform 0.22s ease-out, box-shadow 0.22s ease-out, background 0.2s; }
      .day-card:not(.rest):hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0,0,0,0.32); }
      body.theme-feminine .day-card:not(.rest):hover { box-shadow: 0 6px 16px rgba(92,26,43,0.18); }
    }
    /* #10 テーマ切替クロスフェード */
    .day-card, .nutr-card, .phase-card, .stat-block, .k-card, .female-tips,
    .streak-section, .ex-w-input, .ex-done-btn, .check-btn, .edit-btn,
    .upgrade-btn, .logout-btn, .quick-weight-bar, .qw-input, .qw-step,
    .countdown-block { transition: background-color 0.35s ease, color 0.35s ease, border-color 0.35s ease; }
    /* #13 TODAY'S GOAL文字スライドイン（初回ロード時のみ） */
    @keyframes lbSlideText { from{opacity:0;transform:translateX(-6px)} to{opacity:1;transform:translateX(0)} }
    @media (prefers-reduced-motion: no-preference) {
      body.lb-initial-load .purpose-lead-list li { animation: lbSlideText 0.42s ease-out backwards; }
      body.lb-initial-load .purpose-lead-list li:nth-child(1){ animation-delay: 0.50s; }
      body.lb-initial-load .purpose-lead-list li:nth-child(2){ animation-delay: 0.62s; }
      body.lb-initial-load .purpose-lead-list li:nth-child(3){ animation-delay: 0.74s; }
      body.lb-initial-load .purpose-lead-lab { animation: lbSlideText 0.4s 0.40s ease-out backwards; }
    }
    /* #14 ★アップグレード キラ粒子 */
    @keyframes lbSparkle { 0%,88%,100%{opacity:0;transform:scale(0.4)} 44%{opacity:1;transform:scale(1)} }
    @media (prefers-reduced-motion: no-preference) {
      .upgrade-btn { position: relative; overflow: visible; }
      .upgrade-btn::before, .upgrade-btn::after {
        content: '✦'; position: absolute; font-size: 7px; color: #ffd700;
        opacity: 0; pointer-events: none; text-shadow: 0 0 4px rgba(255,215,0,0.6);
      }
      .upgrade-btn::before { top:1px; left:6px; animation: lbSparkle 3.6s infinite; }
      .upgrade-btn::after { bottom:1px; right:10px; animation: lbSparkle 3.6s 1.8s infinite; }
    }
    /* #15 GOAL縦線の脈打ち（SVG）— inline-animate でJS側で実装 */
    /* #17 保存ステータス滑らかに */
    .sync-status, #syncStatus { transition: opacity 0.35s ease, color 0.3s ease; }
    /* #11 スクロール・リビール用クラス */
    @media (prefers-reduced-motion: no-preference) {
      .lb-reveal { opacity: 0; transform: translateY(20px); transition: opacity 0.7s ease-out, transform 0.7s ease-out; }
      .lb-reveal.lb-revealed { opacity: 1; transform: translateY(0); }
    }
    body { background: var(--bg); color: var(--white); font-family: 'Noto Sans JP', sans-serif; font-weight: 300; line-height: 1.6; min-height: 100vh; overflow-x: hidden; }

    /* ── SETUP OVERLAY ───────────────────────── */
    #setupOverlay {
      position: fixed; inset: 0; background: var(--bg);
      z-index: 1000; overflow-y: auto;
      display: flex; align-items: flex-start; justify-content: center;
      padding: 40px 20px 80px;
    }
    #setupOverlay.hidden { display: none; }

    .setup-wrap { width: 100%; max-width: 760px; }

    .setup-header {
      margin-bottom: 48px;
    }
    .setup-tag {
      font-family: 'DM Mono', monospace; font-size: 10px;
      letter-spacing: 0.4em; color: var(--lime); margin-bottom: 12px;
    }
    .setup-title {
      font-family: 'Bebas Neue', sans-serif;
      font-size: clamp(48px, 8vw, 80px); line-height: 0.9;
    }
    .setup-title span { color: var(--lime); display: block; }
    .setup-sub { margin-top: 16px; font-family: 'DM Mono', monospace; font-size: 12px; color: var(--txt-mute); font-weight: 400; line-height: 1.6; }

    .setup-section { margin-bottom: 40px; }
    .setup-section-title {
      font-family: 'Bebas Neue', sans-serif; font-size: 22px;
      letter-spacing: 0.05em; color: var(--white); margin-bottom: 20px;
      padding-bottom: 10px; border-bottom: 1px solid var(--gray2);
      display: flex; align-items: center; gap: 12px;
    }
    .setup-section-title::before {
      content: attr(data-num);
      font-family: 'DM Mono', monospace; font-size: 10px;
      color: var(--lime); letter-spacing: 0.2em;
    }

    .input-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
    @media(max-width:600px){ .input-grid{ grid-template-columns: 1fr; } }

    .input-group { display: flex; flex-direction: column; gap: 6px; }
    .input-label {
      font-family: 'DM Mono', monospace; font-size: 10px;
      letter-spacing: 0.3em; color: var(--txt-mute); text-transform: uppercase;
      font-weight: 500;
    }
    .input-field {
      background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--white); font-family: 'DM Mono', monospace;
      font-size: 16px; padding: 12px 16px; outline: none;
      transition: border-color 0.2s; width: 100%;
    }
    .input-field:focus { border-color: var(--lime); }
    .input-field::placeholder { color: var(--txt-mute); }
    .input-hint { font-size: 11px; color: var(--txt-mute); font-weight: 400; line-height: 1.6; }

    /* 環境選択 */
    .env-select { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 2px; }
    .env-btn {
      background: var(--bg2); border: 2px solid var(--gray2);
      color: var(--txt-mute); font-family: 'Bebas Neue', sans-serif;
      font-size: 18px; letter-spacing: 0.05em;
      padding: 20px 8px; cursor: pointer; text-align: center;
      transition: all 0.2s; white-space: nowrap;
    }
    .env-btn .env-icon { font-size: 26px; display: block; margin-bottom: 4px; }
    .env-btn .env-sub { font-family: 'DM Mono', monospace; font-size: 8px; letter-spacing: 0.1em; white-space: normal; }
    .env-btn:hover { border-color: var(--txt-mute); color: var(--white); }
    .env-btn.active { border-color: var(--lime); color: var(--lime); background: #141a00; }
    .gym-day-row { display:flex; gap:4px; flex-wrap:wrap; margin-top:4px; }
    .gym-day-btn { background:var(--bg2); border:1px solid var(--gray2); font-family:'DM Mono',monospace; font-size:9px; letter-spacing:0.05em; padding:10px 14px; cursor:pointer; transition:all 0.2s; text-align:center; min-width:52px; }
    .gym-day-btn.is-gym  { border-color:var(--lime); color:var(--lime); background:#141a00; }
    .gym-day-btn.is-home { border-color:#4da6ff; color:#4da6ff; background:#001018; }
    .env-type-badge { font-family:'DM Mono',monospace; font-size:7px; letter-spacing:0.15em; padding:2px 5px; border:1px solid; margin-bottom:6px; display:inline-block; }
    .env-type-badge.gym-badge  { border-color:var(--lime); color:var(--lime); }
    .env-type-badge.home-badge { border-color:#4da6ff; color:#4da6ff; }

    /* 器具選択 */
    #equipSection { display: none; margin-top: 24px; }
    #equipSection.visible { display: block; }
    .equip-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
    @media(max-width:600px){ .equip-grid{ grid-template-columns: repeat(2,1fr); } }
    .equip-btn {
      background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family: 'DM Mono', monospace;
      font-size: 11px; letter-spacing: 0.1em;
      padding: 14px 12px; cursor: pointer; text-align: center;
      transition: all 0.2s; line-height: 1.5;
    }
    .equip-btn .equip-icon { display: block; font-size: 20px; margin-bottom: 4px; }
    .equip-btn:hover { border-color: var(--txt-mute); color: var(--white); }
    .equip-btn.active { border-color: var(--lime); color: var(--lime); background: #141a00; }

    /* 活動量 */
    .activity-select { display: grid; grid-template-columns: repeat(4,1fr); gap: 2px; }
    @media(max-width:600px){ .activity-select{ grid-template-columns: repeat(2,1fr); } }
    .act-btn {
      background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family: 'DM Mono', monospace;
      font-size: 9px; letter-spacing: 0.15em;
      padding: 14px 8px; cursor: pointer; text-align: center;
      transition: all 0.2s;
    }
    .act-btn .act-val { font-family: 'Bebas Neue', sans-serif; font-size: 22px; display: block; margin-bottom: 4px; }
    .act-btn:hover { border-color: var(--txt-mute); color: var(--white); }
    .act-btn.active { border-color: var(--lime); color: var(--lime); background: #141a00; }

    /* ── 有酸素 (cardio) — 休息日メニュー / 筋トレ日への追加項目 ── */
    .cardio-rest-menu {
      background: rgba(184,255,0,0.06);
      border: 1px solid rgba(184,255,0,0.25);
      border-radius: 4px;
      padding: 12px 14px; margin-top: 12px;
    }
    .cardio-rest-head {
      font-family: 'DM Mono', monospace; font-size: 11px;
      letter-spacing: 0.1em; color: var(--lime); font-weight: 700;
      margin-bottom: 8px;
    }
    .cardio-rest-list {
      list-style: none; padding: 0; margin: 0;
      font-family: 'Noto Sans JP', sans-serif; font-size: 12px;
      color: var(--white); line-height: 1.7; font-weight: 500;
    }
    .cardio-rest-list li {
      padding: 3px 0 3px 14px; position: relative;
    }
    .cardio-rest-list li::before {
      content: '・'; position: absolute; left: 0;
      color: var(--lime); font-weight: 700;
    }
    .cardio-rest-list b { color: var(--lime); font-weight: 700; }
    body.theme-feminine .cardio-rest-menu {
      background: rgba(92,26,43,0.06); border-color: rgba(92,26,43,0.35);
    }
    body.theme-feminine .cardio-rest-head { color: #5c1a2b; }
    body.theme-feminine .cardio-rest-list { color: #1a130d; font-weight: 600; }
    body.theme-feminine .cardio-rest-list li::before,
    body.theme-feminine .cardio-rest-list b { color: #5c1a2b; }

    /* 筋トレ日に追加される有酸素行（種目リストの下） */
    .cardio-addon {
      margin-top: 10px; padding: 8px 12px;
      background: rgba(184,255,0,0.05);
      border-left: 2px solid var(--lime);
      border-radius: 0 3px 3px 0;
    }
    .cardio-addon-line {
      display: flex; justify-content: space-between; align-items: baseline;
      margin-bottom: 3px;
    }
    .cardio-addon-tag {
      font-family: 'Noto Sans JP', sans-serif; font-size: 12px;
      color: var(--lime); font-weight: 700;
    }
    .cardio-addon-dur {
      font-family: 'DM Mono', monospace; font-size: 11px;
      color: var(--lime); font-weight: 700;
    }
    .cardio-addon-hint {
      font-family: 'Noto Sans JP', sans-serif; font-size: 10px;
      color: var(--txt-mute); font-weight: 500;
    }
    body.theme-feminine .cardio-addon {
      background: rgba(92,26,43,0.05); border-left-color: #5c1a2b;
    }
    body.theme-feminine .cardio-addon-tag,
    body.theme-feminine .cardio-addon-dur { color: #5c1a2b; }
    body.theme-feminine .cardio-addon-hint { color: #4a3a2a; font-weight: 600; }

    /* HIIT日の inherent badge */
    .cardio-inherent {
      margin-top: 8px; padding: 6px 10px;
      background: rgba(184,255,0,0.04);
      border: 1px dashed rgba(184,255,0,0.3);
      border-radius: 3px;
      font-family: 'Noto Sans JP', sans-serif; font-size: 11px;
      color: var(--lime); font-weight: 600; text-align: center;
    }
    body.theme-feminine .cardio-inherent {
      background: rgba(92,26,43,0.04);
      border-color: rgba(92,26,43,0.35); color: #5c1a2b;
    }

    /* ── PHASE TRANSITION BANNER ───────────────────── */
    .pt-banner {
      position: fixed; bottom: 24px; left: 50%;
      transform: translateX(-50%) translateY(140%);
      max-width: 560px; width: calc(100% - 32px);
      background: #0d0d0d; border: 1px solid var(--lime);
      border-radius: 6px; padding: 18px 22px;
      z-index: 2100; opacity: 0;
      transition: transform 0.4s cubic-bezier(0.4,0,0.2,1), opacity 0.3s;
      box-shadow: 0 8px 32px rgba(0,0,0,0.6), 0 0 24px rgba(184,255,0,0.18);
    }
    .pt-banner.show { transform: translateX(-50%) translateY(0); opacity: 1; }
    body.theme-feminine .pt-banner {
      background: #f5efe7; border-color: #5c1a2b;
      box-shadow: 0 8px 32px rgba(92,26,43,0.25), 0 0 24px rgba(92,26,43,0.15);
    }
    .pt-banner-inner { display: flex; gap: 18px; align-items: flex-start; flex-wrap: wrap; }
    .pt-banner-content { flex: 1; min-width: 220px; }
    .pt-banner-title {
      font-family: 'Noto Sans JP', sans-serif; font-size: 14px;
      font-weight: 700; color: var(--lime); margin-bottom: 6px;
      letter-spacing: 0.02em;
    }
    body.theme-feminine .pt-banner-title { color: #5c1a2b; }
    .pt-banner-desc {
      font-family: 'Noto Sans JP', sans-serif; font-size: 12px;
      color: var(--white); line-height: 1.7; margin-bottom: 6px;
      font-weight: 500;
    }
    body.theme-feminine .pt-banner-desc { color: #1a130d; font-weight: 600; }
    .pt-banner-desc b { color: var(--lime); font-weight: 700; }
    body.theme-feminine .pt-banner-desc b { color: #5c1a2b; }
    .pt-banner-note {
      font-family: 'Noto Sans JP', sans-serif; font-size: 10px;
      color: var(--txt-mute); line-height: 1.5; font-weight: 500;
    }
    body.theme-feminine .pt-banner-note { color: #4a3a2a; font-weight: 500; }
    .pt-banner-actions { display: flex; flex-direction: column; gap: 6px; flex-shrink: 0; }
    .pt-banner-btn {
      background: transparent; border: 1px solid #2a2a2a;
      color: var(--txt-mute); font-family: 'DM Mono', monospace;
      font-size: 11px; letter-spacing: 0.08em; padding: 8px 14px;
      border-radius: 3px; cursor: pointer; transition: all 0.15s;
      white-space: nowrap;
    }
    .pt-banner-btn:hover { border-color: var(--txt-mute); color: var(--white); }
    .pt-banner-btn-primary {
      background: var(--lime); color: #000; border-color: var(--lime); font-weight: 700;
    }
    .pt-banner-btn-primary:hover { opacity: 0.85; color: #000; border-color: var(--lime); }
    body.theme-feminine .pt-banner-btn { border-color: rgba(92,26,43,0.3); color: #4a3a2a; }
    body.theme-feminine .pt-banner-btn:hover { border-color: #5c1a2b; color: #1a130d; }
    body.theme-feminine .pt-banner-btn-primary {
      background: #5c1a2b; color: #f5efe7; border-color: #5c1a2b; font-weight: 700;
    }
    body.theme-feminine .pt-banner-btn-primary:hover { color: #f5efe7; opacity: 0.9; }

    /* ── PREP COMPLETE MODAL ───────────────────── */
    .prep-modal-overlay {
      position: fixed; inset: 0; background: rgba(0,0,0,0.88);
      display: flex; align-items: center; justify-content: center;
      z-index: 2000; padding: 20px;
      overflow-y: auto; -webkit-overflow-scrolling: touch;
    }
    .prep-modal-overlay.hidden { display: none; }
    .prep-modal {
      background: #111; border: 1px solid #2a2a2a;
      border-radius: 6px; max-width: 420px; width: 100%;
      padding: 32px 28px;
      /* iPhoneでモーダルが画面より高い時に下のボタンへ届くよう、内部スクロールさせる */
      max-height: calc(100vh - 40px);
      max-height: calc(100dvh - 40px);
      overflow-y: auto; -webkit-overflow-scrolling: touch;
    }
    .prep-modal-badge {
      font-family: 'DM Mono', monospace; font-size: 10px;
      letter-spacing: 0.25em; color: var(--lime);
      background: rgba(184,255,0,0.07); border: 1px solid rgba(184,255,0,0.2);
      display: inline-block; padding: 4px 10px; border-radius: 2px; margin-bottom: 14px;
    }
    .prep-modal-title {
      font-family: 'Bebas Neue', sans-serif; font-size: 26px;
      letter-spacing: 0.05em; color: var(--white); margin-bottom: 10px;
    }
    .prep-modal-desc {
      font-family: 'Noto Sans JP', sans-serif; font-size: 12px;
      color: var(--txt-mute); line-height: 1.85; margin-bottom: 22px;
    }
    .prep-modal-ref {
      background: #0a0a0a; border: 1px solid #1e1e1e; border-radius: 4px;
      padding: 12px 16px; margin-bottom: 20px;
      display: flex; align-items: center; gap: 16px;
    }
    .prep-modal-ref-label {
      font-family: 'DM Mono', monospace; font-size: 9px;
      letter-spacing: 0.18em; color: var(--txt-mute); white-space: nowrap;
    }
    .prep-modal-ref-val {
      font-family: 'DM Mono', monospace; font-size: 22px;
      color: #777; letter-spacing: 0.03em;
    }
    .prep-modal-ref-sub {
      font-family: 'Noto Sans JP', sans-serif; font-size: 10px;
      color: var(--txt-mute); line-height: 1.5;
    }
    .prep-modal-field-label {
      font-family: 'DM Mono', monospace; font-size: 9px;
      letter-spacing: 0.2em; color: var(--txt-mute); display: block; margin-bottom: 8px;
    }
    .prep-modal-input-row { display: flex; align-items: center; gap: 8px; }
    .prep-modal-input {
      background: #0d0d0d; border: 1px solid #333; color: var(--white);
      font-family: 'DM Mono', monospace; font-size: 20px;
      padding: 10px 14px; border-radius: 4px; width: 140px;
      -moz-appearance: textfield; appearance: textfield;
    }
    .prep-modal-input:focus { border-color: var(--lime); outline: none; }
    .prep-modal-input-unit { font-family: 'DM Mono', monospace; font-size: 12px; color: var(--txt-mute); }
    .prep-modal-input-hint {
      font-family: 'Noto Sans JP', sans-serif; font-size: 11px;
      color: var(--txt-mute); line-height: 1.7; margin-top: 8px;
    }
    .prep-modal-input-err {
      font-family: 'DM Mono', monospace; font-size: 10px;
      color: var(--orange); margin-top: 5px; display: none;
    }
    .prep-modal-actions { margin-top: 24px; display: flex; flex-direction: column; gap: 8px; }
    .prep-modal-btn-primary {
      background: var(--lime); color: #000; font-family: 'DM Mono', monospace;
      font-size: 13px; letter-spacing: 0.08em; padding: 14px;
      border: none; border-radius: 4px; cursor: pointer; font-weight: 700;
      transition: opacity 0.2s;
    }
    .prep-modal-btn-primary:hover { opacity: 0.85; }
    .prep-modal-btn-later {
      background: transparent; color: var(--txt-mute);
      font-family: 'DM Mono', monospace; font-size: 11px;
      letter-spacing: 0.1em; padding: 10px;
      border: 1px solid #2a2a2a; border-radius: 4px; cursor: pointer;
      transition: all 0.15s;
    }
    .prep-modal-btn-later:hover { border-color: #555; color: var(--white); }
    .prep-modal-btn-skip {
      background: transparent; border: none; cursor: pointer;
      font-family: 'Noto Sans JP', sans-serif; font-size: 11px;
      color: var(--txt-mute); padding: 4px; opacity: 0.55; transition: opacity 0.15s;
    }
    .prep-modal-btn-skip:hover { opacity: 1; }
    /* PREP完了モーダル — 体重トレンドボックス */
    .prep-modal-trend {
      background: #0a0a0a; border: 1px solid #1e1e1e; border-radius: 4px;
      padding: 14px 16px; margin-bottom: 20px;
    }
    .prep-modal-trend-label {
      font-family: 'DM Mono', monospace; font-size: 9px;
      letter-spacing: 0.2em; color: var(--txt-mute); margin-bottom: 10px;
    }
    .prep-modal-trend-dir {
      font-family: 'DM Mono', monospace; font-size: 17px;
      letter-spacing: 0.02em; margin-bottom: 6px;
    }
    .prep-modal-trend-dir.stable { color: var(--lime); }
    .prep-modal-trend-dir.rising { color: var(--orange); }
    .prep-modal-trend-dir.falling { color: #60a0ff; }
    .prep-modal-trend-msg {
      font-family: 'Noto Sans JP', sans-serif; font-size: 11px;
      color: var(--txt-mute); line-height: 1.75;
    }
    .prep-modal-trend-data {
      display: flex; gap: 5px; flex-wrap: wrap; margin-top: 10px;
    }
    .prep-modal-trend-chip {
      font-family: 'DM Mono', monospace; font-size: 10px;
      background: #1a1a1a; border-radius: 2px; padding: 3px 7px; color: #666;
    }
    .prep-modal-noise-note {
      font-family: 'Noto Sans JP', sans-serif; font-size: 10px;
      color: #3a3a3a; margin-top: 10px; line-height: 1.65;
      border-top: 1px solid #1a1a1a; padding-top: 8px;
    }
    /* 栄養セクション内 PREP確認値バー */
    .prep-tdee-bar {
      margin-top: 12px; padding: 12px 16px; border-radius: 4px;
      border: 1px solid rgba(184,255,0,0.18); background: rgba(184,255,0,0.04);
      display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
    }
    .prep-tdee-bar-label {
      font-family: 'DM Mono', monospace; font-size: 9px;
      letter-spacing: 0.2em; color: var(--lime-dim); white-space: nowrap;
    }
    .prep-tdee-bar-val {
      font-family: 'DM Mono', monospace; font-size: 18px;
      color: var(--lime); letter-spacing: 0.03em;
    }
    .prep-tdee-bar-unit { font-family: 'DM Mono', monospace; font-size: 11px; color: var(--txt-mute); }
    .prep-tdee-bar-btn {
      margin-left: auto; background: transparent; border: 1px solid rgba(184,255,0,0.25);
      color: var(--lime-dim); font-family: 'DM Mono', monospace; font-size: 9px;
      letter-spacing: 0.15em; padding: 5px 10px; cursor: pointer; border-radius: 2px;
      transition: all 0.15s; white-space: nowrap;
    }
    .prep-tdee-bar-btn:hover { border-color: var(--lime); color: var(--lime); }
    .prep-tdee-bar-notice {
      font-family: 'Noto Sans JP', sans-serif; font-size: 11px;
      color: var(--txt-mute); line-height: 1.6;
    }

    /* ── ELEGANT: 準備完了モーダルをアイボリー基調に上書き（暗背景に暗文字で読めない問題の対策）── */
    body.theme-feminine .prep-modal { background:#f5efe7; border-color:#d4c8b8; }
    body.theme-feminine .prep-modal-badge {
      color:#5c1a2b; background:rgba(92,26,43,0.07); border-color:rgba(92,26,43,0.25);
    }
    body.theme-feminine .prep-modal-title { color:#2d2620; }
    body.theme-feminine .prep-modal-desc,
    body.theme-feminine .prep-modal-ref-label,
    body.theme-feminine .prep-modal-ref-sub,
    body.theme-feminine .prep-modal-field-label,
    body.theme-feminine .prep-modal-input-unit,
    body.theme-feminine .prep-modal-input-hint,
    body.theme-feminine .prep-modal-trend-label,
    body.theme-feminine .prep-modal-trend-msg,
    body.theme-feminine .prep-tdee-bar-notice { color:#5a4a3a; }
    body.theme-feminine .prep-modal-ref,
    body.theme-feminine .prep-modal-trend { background:#ece3d5; border-color:#d4c8b8; }
    body.theme-feminine .prep-modal-ref-val { color:#7a5230; }
    body.theme-feminine .prep-modal-input {
      background:#fffaf3; border-color:#c0b4a2; color:#2d2620;
    }
    body.theme-feminine .prep-modal-input:focus { border-color:#5c1a2b; }
    body.theme-feminine .prep-modal-btn-primary { background:#5c1a2b; color:#fffaf3; }
    body.theme-feminine .prep-modal-btn-later { color:#5a4a3a; border-color:#d4c8b8; }
    body.theme-feminine .prep-modal-btn-later:hover { border-color:#b08560; color:#2d2620; }
    body.theme-feminine .prep-modal-btn-skip { color:#5a4a3a; }
    body.theme-feminine .prep-modal-trend-dir.stable { color:#5c1a2b; }
    body.theme-feminine .prep-modal-trend-dir.falling { color:#4a78c0; }
    body.theme-feminine .prep-modal-trend-chip { background:#e0d5c4; color:#7a5230; }
    body.theme-feminine .prep-modal-noise-note { color:#9a8a78; border-top-color:#d4c8b8; }
    body.theme-feminine .prep-tdee-bar {
      border-color:rgba(92,26,43,0.22); background:rgba(92,26,43,0.05);
    }
    body.theme-feminine .prep-tdee-bar-label { color:#8b3a52; }
    body.theme-feminine .prep-tdee-bar-val { color:#5c1a2b; }
    body.theme-feminine .prep-tdee-bar-btn { color:#8b3a52; border-color:rgba(92,26,43,0.3); }
    body.theme-feminine .prep-tdee-bar-btn:hover { border-color:#5c1a2b; color:#5c1a2b; }

    .setup-submit {
      display: block; width: 100%; margin-top: 40px;
      padding: 20px; background: var(--lime); border: none;
      font-family: 'Bebas Neue', sans-serif; font-size: 22px;
      letter-spacing: 0.1em; color: #0a0a0a;
      cursor: pointer; transition: opacity 0.2s;
    }
    .setup-submit:hover { opacity: 0.85; }
    .data-mgmt { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--gray2); display: flex; gap: 8px; }
    .data-btn {
      flex: 1; background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'DM Mono',monospace; font-size:10px;
      letter-spacing:0.15em; padding: 14px 8px; cursor: pointer; text-align: center;
      transition: all 0.2s;
    }
    .data-btn:hover { border-color: var(--lime); color: var(--lime); }
    .data-btn-sub { font-size:8px; color:var(--txt-mute); margin-top:4px; letter-spacing:0.1em; display:block; }
    .export-status {
      font-family:'DM Mono',monospace; font-size:9px; color:var(--txt-mute);
      padding: 8px 0 14px; letter-spacing:0.1em;
    }
    .export-warn { color: var(--orange); margin-left: 6px; }
    .snapshot-section { margin-top: 16px; }
    .restart-btn { background: transparent; border: 1px solid #2a2a2a; color: var(--txt-mute); font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.15em; padding: 8px 14px; cursor: pointer; transition: all 0.2s; margin-top: 12px; width: 100%; text-align: left; }
    .restart-btn:hover { border-color: var(--txt-mute); color: var(--txt-mute); }
    .restart-btn.pending { border-color: var(--orange); color: var(--orange); animation: blink-border 0.8s infinite; }
    .newphase-btn { background: transparent; border: 1px solid #2a2a2a; color: var(--txt-mute); font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.15em; padding: 8px 14px; cursor: pointer; transition: all 0.2s; margin-top: 12px; width: 100%; text-align: left; }
    .newphase-btn:hover { border-color: var(--txt-mute); color: var(--txt-mute); }
    .newphase-btn.pending { border-color: var(--lime); color: var(--lime); animation: blink-border 0.8s infinite; }
    @keyframes blink-border { 0%,100%{ opacity:1; } 50%{ opacity:0.5; } }
    .snapshot-head { font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.3em; color:var(--txt-mute); margin-bottom:8px; }
    .snapshot-item {
      display: flex; justify-content: space-between; align-items: center;
      padding: 8px 10px; background: var(--bg3); border: 1px solid #1a1a1a;
      margin-bottom: 2px;
    }
    .snapshot-info { font-family:'DM Mono',monospace; font-size:9px; color:var(--txt-mute); }
    .snapshot-date { color: var(--white); margin-right: 8px; }
    .snapshot-restore {
      background: none; border: 1px solid var(--gray2); color:var(--txt-mute);
      font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.15em;
      padding: 4px 10px; cursor: pointer; transition: all 0.2s; white-space:nowrap;
    }
    .snapshot-restore:hover { border-color:var(--lime); color:var(--lime); }
    .snapshot-empty { font-family:'DM Mono',monospace; font-size:9px; color:var(--txt-mute); padding: 10px; }

    /* ── MAIN DASHBOARD ──────────────────────── */
    #dashboard { display: none; }
    #dashboard.visible { display: block; }

    header {
      position: relative; padding: 48px 48px 40px;
      border-bottom: 1px solid var(--gray2); overflow: hidden;
    }
    header::before {
      content: ''; position: absolute; top: -40px; right: -60px;
      width: 320px; height: 320px;
      background: radial-gradient(circle, rgba(184,255,0,0.07) 0%, transparent 70%);
      pointer-events: none;
    }
    .header-row { display: flex; justify-content: space-between; align-items: stretch; }
    .header-tag { font-family: 'DM Mono', monospace; font-size: 11px; letter-spacing: 0.3em; color: var(--lime); margin-bottom: 10px; }
    h1 { font-family: 'Bebas Neue', sans-serif; font-size: clamp(56px, 9vw, 110px); line-height: 0.9; }
    h1 span { color: var(--lime); display: block; }
    .header-sub { margin-top: 16px; font-size: 12px; color: var(--txt-mute); font-family: 'DM Mono', monospace; }
    .phase-badge {
      display: inline-flex; align-items: center; gap: 10px;
      margin-top: 24px; padding: 10px 20px;
      background: var(--bg3); border: 1px solid var(--lime);
      font-family: 'DM Mono', monospace; font-size: 11px;
      letter-spacing: 0.15em; color: var(--lime);
    }
    .phase-badge::before { content: ''; width: 8px; height: 8px; background: var(--lime); border-radius: 50%; animation: pulse 1.5s infinite; }
    .header-btn-row { display:flex; align-items:stretch; gap:8px; flex-wrap:wrap; }
    .header-btn-row > button, .header-btn-row > .theme-toggle { height:36px; box-sizing:border-box; }
    .header-btn-row > button { min-width:160px; justify-content:center; }
    .header-btn-row > .theme-toggle { display:inline-flex; align-items:stretch; min-width:160px; }
    .header-btn-row > .theme-toggle button { height:100%; padding:0 12px; flex:1; min-width:0; justify-content:center; }
    @media(max-width:600px){
      .header-btn-row > button, .header-btn-row > .theme-toggle { height:32px; font-size:9px !important; min-width:140px; }
      .header-btn-row > button { padding:0 10px !important; letter-spacing:0.1em !important; }
      .header-btn-row > .theme-toggle button { padding:0 8px !important; font-size:8px !important; }
    }
    .edit-btn {
      background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family: 'DM Mono', monospace;
      font-size: 10px; letter-spacing: 0.2em;
      padding: 0 16px; cursor: pointer; transition: all 0.2s;
      white-space: nowrap; display:inline-flex; align-items:center;
    }
    .edit-btn:hover { border-color: var(--lime); color: var(--lime); }

    .header-right { display: flex; flex-direction: column; align-items: flex-end; justify-content: space-between; }
    .goal-panel { text-align: right; border-top: 1px solid var(--gray2); padding-top: 14px; min-width: 200px; }
    .gp-label { font-family:'DM Mono',monospace; font-size:9px; letter-spacing:0.25em; color:var(--txt-mute); text-transform:uppercase; margin-bottom:4px; }
    .gp-num { font-family:'Bebas Neue',sans-serif; font-size:68px; line-height:1; color:var(--lime); }
    .gp-unit { font-family:'DM Mono',monospace; font-size:9px; letter-spacing:0.3em; color:var(--txt-mute); margin-bottom:12px; }
    .gp-sep { height:1px; background:var(--gray2); margin-bottom:8px; }
    .gp-row { display:flex; justify-content:space-between; gap:16px; font-family:'DM Mono',monospace; font-size:9px; color:var(--txt-mute); padding:3px 0; }
    .gp-row span:last-child { color:var(--white); }

    main { max-width: 1300px; margin: 0 auto; padding: 0 48px 80px; }
    @media(max-width:900px){ header, main{ padding-left: 24px; padding-right: 24px; } }

    section { padding-top: 72px; }
    .section-label { font-family: 'DM Mono', monospace; font-size: 10px; letter-spacing: 0.4em; color: var(--lime); text-transform: uppercase; margin-bottom: 8px; }
    .section-title { font-family: 'Bebas Neue', sans-serif; font-size: clamp(34px, 5vw, 52px); letter-spacing: 0.04em; color: var(--white); margin-bottom: 40px; position: relative; }
    .section-title::after { content: ''; position: absolute; bottom: -12px; left: 0; width: 40px; height: 2px; background: var(--lime); }
    .divider { height: 1px; background: linear-gradient(to right, var(--lime), transparent); margin-top: 72px; opacity: 0.2; }

    /* ── ROADMAP ─────────────────────────────── */
    .roadmap { display: grid; gap: 2px; }
    .phase-card { display: grid; grid-template-columns: 72px 1fr auto; align-items: start; gap: 20px; padding: 24px 28px; background: var(--bg2); border-left: 3px solid var(--gray2); transition: border-color 0.3s, background 0.3s; }
    .phase-card.active { border-left-color: var(--lime); background: #141a00; }
    .phase-card.done { border-left-color: var(--gray); }
    .phase-num { font-family: 'Bebas Neue', sans-serif; font-size: 44px; line-height: 1; color: var(--gray2); }
    .phase-card.active .phase-num { color: var(--lime); }
    .phase-card.done .phase-num { color: var(--gray); }
    .phase-period { font-family: 'DM Mono', monospace; font-size: 10px; letter-spacing: 0.3em; color: var(--txt-mute); margin-bottom: 4px; font-weight: 500; }
    .phase-card.active .phase-period { color: var(--lime-dim); }
    .phase-name { font-family: 'Bebas Neue', sans-serif; font-size: 24px; letter-spacing: 0.05em; margin-bottom: 8px; }
    .phase-desc { font-size: 12px; color: #ccc; line-height: 1.7; font-weight: 400; }
    .phase-goals { list-style: none; margin-top: 10px; display: flex; flex-wrap: wrap; gap: 6px; }
    .phase-goals li { font-family: 'DM Mono', monospace; font-size: 10px; padding: 3px 8px; border: 1px solid var(--gray2); color: var(--txt-mute); font-weight: 500; }
    .phase-card.active .phase-goals li { border-color: var(--lime); color: var(--lime); }
    .phase-status { font-family: 'DM Mono', monospace; font-size: 10px; letter-spacing: 0.1em; text-align: right; white-space: nowrap; }
    .status-active { color: var(--lime); } .status-done { color: var(--gray); } .status-upcoming { color: var(--txt-mute); }
    @media(max-width:600px){ .phase-card{ grid-template-columns: 48px 1fr; } .phase-status{ display:none; } }

    /* ── WEEKLY TRAINING ─────────────────────── */
    .week-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
    @media(max-width:900px){ .week-grid{ grid-template-columns: repeat(4, minmax(0, 1fr)); } }
    @media(max-width:600px){ .week-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); } }

    .day-card { background: #1e1e1e; padding: 18px 14px; cursor: pointer; transition: background 0.2s; min-width: 0; overflow: hidden; }
    .day-card:hover { background: #2a2a2a; }
    .day-card.checked { background: #1f2a00; }
    .day-card.checked:hover { background: #2a3a00; }
    .day-card.rest { background: #0e0e0e; opacity: 1; border-left: 2px solid #2a2a2a; }
    .day-card.rest:hover { background: #1a1a1a; }
    .day-card.rest .day-label, .day-card.rest .day-target, .day-card.rest .day-exercises { opacity: 0.7; }
    .day-label { font-family: 'Bebas Neue', sans-serif; font-size: 28px; color: var(--txt-mute); transition: color 0.2s; white-space: nowrap; }
    .day-card.checked .day-label { color: var(--lime); }
    .day-name { font-family: 'DM Mono', monospace; font-size: 10px; letter-spacing: 0.25em; color: var(--txt-mute); text-transform: uppercase; margin-bottom: 12px; white-space: nowrap; }
    /* 7列レイアウト時にカードが狭い帯域(901〜1280px)では、環境アイコンを曜日の下に縦並びに切替して文字つぶれを防ぐ */
    @media (min-width: 901px) and (max-width: 1280px) {
      .day-card-top { flex-direction: column; align-items: stretch; gap: 6px; }
      .env-switch-btns { justify-content: flex-start; }
    }
    .day-target { font-family: 'Bebas Neue', sans-serif; font-size: 14px; letter-spacing: 0.05em; color: var(--white); margin-bottom: 6px; }
    .purpose-lead { background: linear-gradient(90deg, rgba(255,127,177,0.08), transparent); border-left: 2px solid #ff7fb1; padding: 6px 10px; margin: 6px 0 10px; border-radius: 0 3px 3px 0; }
    .purpose-lead-lab { font-family: 'DM Mono', monospace; font-size: 8px; color: #cc6090; letter-spacing: 0.2em; margin-bottom: 2px; }
    .purpose-lead-txt { font-size: 10px; color: #ffd0e0; font-weight: 400; line-height: 1.4; }
    .purpose-lead-list { list-style: disc; padding-left: 16px; margin: 2px 0 0; }
    .purpose-lead-list li { font-size: 10px; color: #ffd0e0; line-height: 1.6; }
    .ex-star { color: #ff7fb1; font-size: 10px; margin-right: 2px; }
    .female-tips { background: rgba(184,255,0,0.05); border: 1px solid rgba(184,255,0,0.25); border-radius: 4px; padding: 10px 14px; margin: 0 0 16px; }
    .female-tips-lab { font-family: 'DM Mono', monospace; font-size: 10px; letter-spacing: 0.2em; color: var(--lime-dim); margin-bottom: 6px; font-weight: 600; }
    .tips-toggle { display:flex; justify-content:space-between; align-items:center; cursor:pointer; user-select:none; }
    .tips-toggle:hover .female-tips-lab { color: var(--lime); }
    .female-tips-txt { font-size: 12px; color: var(--txt-mute); line-height: 1.75; font-weight: 400; }
    .female-tips-txt strong { font-weight: 600; color: var(--lime-dim); }
    .female-tips-txt .star { color: var(--lime); font-weight: bold; }
    body.theme-feminine .female-tips { background: rgba(92,26,43,0.05) !important; border-color: rgba(92,26,43,0.25) !important; }
    body.theme-feminine #femaleTipsSection { border-top-color: rgba(92,26,43,0.2) !important; }
    .day-exercises { list-style: none; font-size: 11px; color: var(--txt-mute); line-height: 1.9; }
    .day-card.checked .day-exercises { color: #7a9900; }
    .check-btn { display: block; width: 100%; margin-top: 14px; padding: 7px 0; background: transparent; border: 1px solid var(--gray2); color: var(--txt-mute); font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.2em; cursor: pointer; transition: all 0.2s; }
    .check-btn:hover { border-color: var(--lime); color: var(--lime); }
    .day-card.checked .check-btn { border-color: var(--lime); color: var(--lime); background: rgba(184,255,0,0.05); }

    /* ── PROGRESS ────────────────────────────── */
    .progress-section { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
    @media(max-width:700px){ .progress-section{ grid-template-columns: 1fr; } }
    .stat-block { background: var(--bg2); padding: 28px; }
    .stat-label { font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.3em; color: var(--txt-mute); text-transform: uppercase; margin-bottom: 8px; }
    .stat-value { font-family: 'Bebas Neue', sans-serif; font-size: 60px; line-height: 1; color: var(--lime); margin-bottom: 4px; }
    .stat-unit { font-family: 'DM Mono', monospace; font-size: 11px; color: var(--txt-mute); }
    .progress-bar-wrap { margin-top: 32px; }
    .progress-bar-label { display: flex; justify-content: space-between; font-family: 'DM Mono', monospace; font-size: 9px; color: var(--txt-mute); letter-spacing: 0.2em; margin-bottom: 6px; }
    .progress-bar { height: 3px; background: var(--gray2); overflow: hidden; }
    .progress-bar-fill { height: 100%; background: var(--lime); transition: width 0.8s cubic-bezier(0.4,0,0.2,1); }
    .streak-bar { display: flex; gap: 4px; margin-top: 12px; }
    .streak-dot { width: 20px; height: 4px; background: var(--gray2); }
    .streak-dot.filled { background: var(--lime); }

    /* ── STREAK & HEATMAP ───────────────────────── */
    .streak-section { background: var(--bg2); padding: 24px 28px; margin-top: 4px; }
    .streak-stats { display: flex; margin-bottom: 24px; }
    .streak-stat { flex: 1; text-align: center; padding: 8px 0; }
    .streak-stat-num { font-family: 'Bebas Neue', sans-serif; font-size: 52px; line-height: 1; color: var(--lime); }
    .streak-stat-num.zero { color: var(--txt-mute); }
    .streak-stat-label { font-family: 'DM Mono', monospace; font-size: 8px; letter-spacing: 0.25em; color: var(--txt-mute); text-transform: uppercase; margin-top: 4px; }
    .streak-divider { width: 1px; background: var(--gray2); margin: 4px 0; }
    .heatmap-head { font-family: 'DM Mono', monospace; font-size: 8px; letter-spacing: 0.3em; color: var(--txt-mute); text-transform: uppercase; margin-bottom: 10px; }
    .heatmap-legend { display: flex; gap: 16px; margin-top: 10px; align-items: center; flex-wrap: wrap; }
    .heatmap-legend-item { display: flex; align-items: center; gap: 5px; font-family: 'DM Mono', monospace; font-size: 8px; color: var(--txt-mute); }

    /* ══ Case C Dashboard ════════════════════════════════════ */
    .dash-widget-grid {
      display: grid;
      grid-template-columns: repeat(4, 1fr); /* デスクトップ4列・リッチ化したまま横並び */
      align-items: stretch; /* 同じ行の高さを揃える */
      gap: 10px;
      padding: 14px 28px 12px;
    }
    @media (max-width: 980px) { .dash-widget-grid { grid-template-columns: repeat(2, 1fr); padding: 14px 20px 12px; } }
    @media (max-width: 560px) { .dash-widget-grid { grid-template-columns: 1fr; padding: 12px 16px 10px; gap: 12px; } }

    .dash-widget {
      background: var(--bg3);
      border: 1px solid rgba(255,255,255,0.07);
      border-radius: 4px;
      padding: 18px 20px 16px;
      cursor: pointer;
      transition: border-color .18s, transform .14s, background .18s;
      position: relative;
      overflow: hidden;
      display: flex; flex-direction: column;
    }
    .dash-widget::before {
      content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px;
      background: transparent; transition: background .18s;
    }
    .dash-widget:hover { border-color: rgba(184,255,0,0.3); transform: translateY(-1px); }
    .dash-widget:hover::before { background: var(--lime); }
    .dash-widget.dw-active { border-color: rgba(184,255,0,0.3); background: rgba(184,255,0,0.05); }
    .dash-widget.dw-active::before { background: var(--lime); }

    body.theme-feminine .dash-widget { background: var(--bg2); border-color: rgba(92,26,43,0.18); }
    body.theme-feminine .dash-widget:hover,
    body.theme-feminine .dash-widget.dw-active { border-color: rgba(92,26,43,0.45); background: rgba(92,26,43,0.06); }
    body.theme-feminine .dash-widget:hover::before,
    body.theme-feminine .dash-widget.dw-active::before { background: var(--lime); }

    .dw-slot {
      font-family: 'DM Mono', monospace; font-size: 10px;
      letter-spacing: 0.1em; color: var(--lime-dim);
      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
      margin-bottom: 1px;
    }
    .dw-meta {
      font-family: 'Noto Sans JP', sans-serif; font-size: 10px;
      color: var(--txt-mute); opacity: 0.6;
      margin-top: 2px; white-space: nowrap;
      overflow: hidden; text-overflow: ellipsis;
    }
    /* dw-week は L9 (DM Mono 10px) で統一、ここでは余白のみ */
    .dw-week { margin-bottom: 2px; }
    .dw-pos { color: var(--lime); font-weight: 500; }
    .dw-neg { color: var(--orange); font-weight: 500; }
    /* フェミニンテーマでは lime/orange のままだとボルドー/濃いオレンジになり明瞭 */

    .dw-tag {
      font-family: 'DM Mono', monospace; font-size: 11px; font-weight: 600;
      letter-spacing: .18em;
      color: var(--txt-mute); opacity: .75; text-transform: uppercase;
      margin-bottom: 10px; display: flex; align-items: center; gap: 6px;
    }
    .dw-dot {
      width: 5px; height: 5px; border-radius: 50%;
      background: rgba(255,255,255,0.15); flex-shrink: 0;
    }
    .dash-widget.dw-active .dw-dot { background: var(--lime); }

    .dw-val {
      font-family: 'Bebas Neue', sans-serif; font-size: 30px; line-height: 1;
      color: var(--white); margin-bottom: 2px; letter-spacing: .02em;
    }
    .dw-val span { font-size: 13px; font-family: 'DM Mono', monospace; color: var(--txt-mute); margin-left: 3px; font-weight: 400; letter-spacing: 0; }
    .dw-sub {
      font-family: 'DM Mono', monospace; font-size: 9px;
      color: var(--txt-mute); opacity: .7; margin-bottom: 9px;
      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    }
    /* W2 BODY サブはmWeightDiffの2行HTMLを表示するため複数行可・少し大きく */
    #dwBodySub {
      white-space: normal; overflow: visible; text-overflow: clip;
      font-size: 10px; line-height: 1.7; opacity: 0.9;
    }
    body.theme-feminine #dwBodySub { opacity: 1; color: #3a2e22; font-weight: 500; }
    .dw-sub .dw-pos { color: #7aff5a; opacity: 1; }
    .dw-sub .dw-neg { color: #ff7a7a; opacity: 1; }
    /* フェミニンテーマ用 — クリーム背景で読みやすい濃色に */
    body.theme-feminine .dw-sub .dw-pos { color: #3a7a2a; }
    body.theme-feminine .dw-sub .dw-neg { color: #b8442a; }

    .dw-bar-wrap { height: 3px; background: rgba(255,255,255,0.08); border-radius: 2px; overflow: hidden; }
    body.theme-feminine .dw-bar-wrap { background: rgba(92,26,43,0.14); }
    .dw-bar-fill { height: 100%; background: var(--lime); border-radius: 2px; transition: width .5s ease; }
    .dw-bar-label {
      display: flex; justify-content: space-between;
      font-family: 'DM Mono', monospace; font-size: 8px;
      color: var(--txt-mute); opacity: .65; margin-top: 3px;
    }

    /* PFC bar コンテナ（font は L5 ラベル / L9 数値で統一管理） */
    .dw-pfc { display: flex; flex-direction: column; gap: 4px; margin-top: 2px; }
    .dw-pfc-row { display: flex; align-items: center; gap: 5px; }
    .dw-pfc-bar { flex: 1; height: 3px; background: rgba(255,255,255,0.08); border-radius: 2px; overflow: hidden; }
    body.theme-feminine .dw-pfc-bar { background: rgba(92,26,43,0.14); }
    .dw-pfc-fill { height: 100%; border-radius: 2px; }
    .dw-pfc-fill.p { background: #7aff5a; }
    .dw-pfc-fill.f { background: #f5c842; }
    .dw-pfc-fill.c { background: #4da6ff; }
    /* フェミニンテーマ用 — 明るすぎる原色を抑えた色味に */
    body.theme-feminine .dw-pfc-fill.p { background: #4a7a30; }
    body.theme-feminine .dw-pfc-fill.f { background: #b88a20; }
    body.theme-feminine .dw-pfc-fill.c { background: #3a6a8a; }
    /* pfc-num は幅のみ固定（font は L9） */
    .dw-pfc-num { width: 28px; text-align: right; }

    /* ══ ウィジェット内のリッチコンテンツ ════════════════════════════ */
    /* 今日のエクササイズリスト（W1内） */
    .dw-today-wrap {
      margin-top: 12px; padding-top: 12px;
      border-top: 1px solid rgba(255,255,255,0.06);
      flex: 1; display: flex; flex-direction: column; gap: 0;
    }
    body.theme-feminine .dw-today-wrap { border-top-color: rgba(92,26,43,0.18); }
    .dw-today-empty {
      font-family: 'Noto Sans JP', sans-serif; font-size: 11px;
      color: var(--txt-mute); opacity: 0.8; text-align: center;
      padding: 24px 12px; font-style: italic;
    }
    .dw-today-rest {
      font-family: 'DM Mono', monospace; font-size: 12px;
      color: var(--lime-dim); text-align: center; padding: 30px 12px;
      letter-spacing: 0.1em;
    }
    /* 4列レイアウト用: 種目行は2段組（上=名前、下=セット+重量+ボタン） */
    .dw-ex-item {
      display: block; padding: 8px 0;
      border-bottom: 1px solid rgba(255,255,255,0.04);
    }
    body.theme-feminine .dw-ex-item { border-bottom-color: rgba(92,26,43,0.10); }
    .dw-ex-item:last-child { border-bottom: none; }
    .dw-ex-name {
      display: block; font-family: 'Noto Sans JP', sans-serif;
      font-size: 12px; color: var(--white); font-weight: 500;
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
      margin-bottom: 4px;
    }
    .dw-ex-controls {
      display: flex; align-items: center; gap: 6px;
    }
    /* 自重種目（重量・✓なし） — 名前とセットを1行に */
    .dw-ex-simple { display: flex; align-items: center; gap: 8px; }
    .dw-ex-simple .dw-ex-name { flex: 1; margin-bottom: 0; }
    /* dw-ex-sets は L9 で統一 — flex/幅のみ */
    .dw-ex-sets { flex-shrink: 0; min-width: 36px; }
    .dw-ex-weight-input {
      width: 50px; padding: 3px 4px; background: rgba(255,255,255,0.06);
      border: 1px solid rgba(255,255,255,0.1); border-radius: 2px;
      color: var(--white); font-family: 'DM Mono', monospace; font-size: 11px;
      text-align: center; -moz-appearance: textfield; appearance: textfield;
    }
    .dw-ex-weight-input::-webkit-outer-spin-button,
    .dw-ex-weight-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
    body.theme-feminine .dw-ex-weight-input {
      background: rgba(255,255,255,0.6); border-color: rgba(92,26,43,0.2);
      color: #2d2014; font-weight: 600;
    }
    .dw-ex-done-btn {
      width: 40px; height: 40px; border-radius: 50%;
      background: transparent; border: 1.5px solid rgba(255,255,255,0.15);
      color: var(--txt-mute); font-family: 'DM Mono', monospace; font-size: 11px;
      cursor: pointer; display: flex; align-items: center; justify-content: center;
      transition: all 0.15s; flex-shrink: 0; padding: 0;
    }
    .dw-ex-done-btn:hover { border-color: var(--lime); color: var(--lime); }
    .dw-ex-done-btn.done { background: var(--lime); border-color: var(--lime); color: #000; font-weight: 700; }
    body.theme-feminine .dw-ex-done-btn { border-color: rgba(92,26,43,0.3); color: #4a3a2a; }
    body.theme-feminine .dw-ex-done-btn:hover { border-color: var(--lime); color: var(--lime); }
    /* ボルドー#5c1a2b背景上は明色テキストが必要（--white=#2d2620は同化するので使えない） */
    body.theme-feminine .dw-ex-done-btn.done { background: var(--lime); color: #f5efe7; font-weight: 700; }
    /* 上部のヘッダー（タグ+スロット 左 / 曜日大表示 右） */
    .dw-train-head {
      display: flex; justify-content: space-between; align-items: flex-start;
      gap: 10px; margin-bottom: 8px;
    }
    .dw-train-head-left { flex: 1; min-width: 0; }
    .dw-train-head-right { flex-shrink: 0; text-align: right; }
    .dw-day-big {
      font-family: 'Bebas Neue', sans-serif; font-size: 28px;
      letter-spacing: 0.05em; color: var(--lime); line-height: 1;
    }
    /* dw-day-date は L9 で統一、ここでは余白のみ */
    .dw-day-date { margin-top: 3px; }
    body.theme-feminine .dw-day-big { color: #5c1a2b; font-weight: 600; }

    /* 完了ボタン（W1内・最下部） */
    /* dw-complete-btn — font は L10 で統一、ここでは構造とカラーのみ */
    .dw-complete-btn {
      width: 100%; padding: 10px 14px; margin-top: 12px;
      background: transparent; border: 1px solid var(--lime); border-radius: 3px;
      color: var(--lime); cursor: pointer; transition: all 0.15s;
      flex-shrink: 0;
    }
    .dw-complete-btn:hover { background: var(--lime); color: #000; }
    .dw-complete-btn.done {
      background: var(--lime); color: #000; font-weight: 600;
      border-color: var(--lime);
    }
    .dw-complete-btn.rest {
      border-color: rgba(255,255,255,0.15); color: var(--txt-mute);
      cursor: default; opacity: 0.5;
    }
    .dw-complete-btn.rest:hover { background: transparent; color: var(--txt-mute); }
    /* ボルドー#5c1a2b背景上は明色テキストが必要（--white=#2d2620は同化するので使えない） */
    body.theme-feminine .dw-complete-btn:hover { color: #f5efe7; font-weight: 600; }
    body.theme-feminine .dw-complete-btn.done { color: #f5efe7; font-weight: 700; }
    body.theme-feminine .dw-complete-btn.rest { border-color: rgba(92,26,43,0.2); color: #6a5848; opacity: 0.7; }

    /* ══════════════════════════════════════════════════════
       WIDGET DESIGN SYSTEM — 全4ウィジェット共通文字ルール
       L5 ラベル / L7 値 / L8 本文 / L9 キャプション
       ══════════════════════════════════════════════════════ */
    /* L5 フィールドラベル（Japanese descriptive name） */
    .dw-metric-lbl, .dw-food-lbl, .dw-pfc-lbl {
      font-family: 'Noto Sans JP', sans-serif;
      font-size: 12px; font-weight: 700;
      color: var(--white); letter-spacing: 0.02em;
    }
    .dw-pfc-lbl { width: 12px; letter-spacing: 0; }
    body.theme-feminine .dw-metric-lbl,
    body.theme-feminine .dw-food-lbl,
    body.theme-feminine .dw-pfc-lbl { color: #1a130d; font-weight: 700; }

    /* L7 フィールド値（テキスト/混在） — W3 NUTRITION 食事関連 */
    .dw-food-val {
      font-family: 'Noto Sans JP', sans-serif;
      font-size: 14px; font-weight: 600;
      color: var(--white);
    }
    body.theme-feminine .dw-food-val { color: #1a130d; font-weight: 700; }

    /* L8 本文（フェーズ説明・ヒント・diff） */
    .dw-phase-desc, .dw-phase-goals, .dw-ex-hint, .dw-metric-diff {
      font-family: 'Noto Sans JP', sans-serif;
      font-size: 11px; font-weight: 500;
      line-height: 1.7;
      color: var(--white); opacity: 0.92;
    }
    .dw-phase-goals li { padding: 4px 0 4px 14px; position: relative; }
    .dw-phase-goals li::before {
      content: '·'; position: absolute; left: 4px;
      color: var(--lime); font-weight: 700;
    }
    .dw-ex-hint .dw-sugg-val { color: var(--lime); font-weight: 700; }
    .dw-metric-diff:empty { display: none; }
    body.theme-feminine .dw-phase-desc,
    body.theme-feminine .dw-phase-goals,
    body.theme-feminine .dw-ex-hint,
    body.theme-feminine .dw-metric-diff { opacity: 1; color: #2d2014; font-weight: 500; }

    /* L9 小キャプション（曜日日付 / WEEK / セット数 / PFC g数） */
    .dw-day-date, .dw-week, .dw-ex-sets, .dw-pfc-num {
      font-family: 'DM Mono', monospace;
      font-size: 10px; font-weight: 500;
      color: var(--txt-mute); letter-spacing: 0.03em;
    }
    body.theme-feminine .dw-day-date,
    body.theme-feminine .dw-week,
    body.theme-feminine .dw-ex-sets,
    body.theme-feminine .dw-pfc-num { color: #3a2e22; font-weight: 600; }

    /* L10 CTA / ステータスバッジ */
    .dw-pfc-cta, .dw-complete-btn {
      font-family: 'DM Mono', monospace;
      font-size: 12px; font-weight: 600;
      letter-spacing: 0.1em;
    }
    .dw-body-status {
      font-family: 'DM Mono', monospace;
      font-size: 11px; font-weight: 600;
      letter-spacing: 0.05em;
    }

    /* ── 個別調整 ── */
    /* phase-name はヘッダ扱い */
    .dw-phase-name {
      font-family: 'Noto Sans JP', sans-serif;
      font-size: 14px; font-weight: 700; color: var(--white);
    }
    body.theme-feminine .dw-phase-name { color: #1a130d; font-weight: 700; }
    /* metric-val は W2 のヒーロー値として Bebas Neue を維持 */
    .dw-metric-val {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 18px; color: var(--white); letter-spacing: 0.02em;
    }
    .dw-metric-val small {
      font-family: 'DM Mono', monospace; font-size: 10px;
      color: var(--txt-mute); margin-left: 4px;
    }
    body.theme-feminine .dw-metric-val small { color: #5a4a3a; font-weight: 500; }

    /* 体組成詳細メトリクス行（W2内） */
    .dw-body-metrics {
      margin-top: 12px; padding-top: 12px;
      border-top: 1px solid rgba(255,255,255,0.06);
      flex: 1; display: flex; flex-direction: column; gap: 10px;
    }
    body.theme-feminine .dw-body-metrics { border-top-color: rgba(92,26,43,0.18); }
    .dw-metric-row {
      display: flex; justify-content: space-between; align-items: baseline;
      padding: 4px 0;
    }
    /* metric-diff の縦詰め（font は上部 L8 で定義済み） */
    .dw-metric-diff { margin-top: -2px; margin-bottom: 6px; padding-left: 2px; }

    /* 今日の体組成・栄養 記録ステータス（font は L10 で定義済み） */
    .dw-body-status {
      margin-top: 10px; padding: 8px 10px; border-radius: 3px;
      text-align: center; line-height: 1.5;
      cursor: pointer; transition: opacity 0.15s;
    }
    .dw-body-status:hover { opacity: 0.85; }
    .dw-body-status.recorded {
      background: rgba(184,255,0,0.08); color: var(--lime);
      border: 1px solid rgba(184,255,0,0.3);
    }
    .dw-body-status.missing {
      background: rgba(255,140,0,0.1); color: var(--orange);
      border: 1px solid rgba(255,140,0,0.35);
    }
    body.theme-feminine .dw-body-status.recorded {
      background: rgba(74,122,48,0.12); color: #2d5a2a;
      border-color: rgba(74,122,48,0.4); font-weight: 700;
    }
    body.theme-feminine .dw-body-status.missing {
      background: rgba(201,122,74,0.15); color: #8a3a18;
      border-color: rgba(201,122,74,0.5); font-weight: 700;
    }

    /* 栄養詳細セクション（W3内） — コンテナ構造のみ */
    .dw-food-extras {
      margin-top: 14px; padding-top: 12px;
      border-top: 1px solid rgba(255,255,255,0.06);
      flex: 1; display: flex; flex-direction: column; gap: 10px;
    }
    body.theme-feminine .dw-food-extras { border-top-color: rgba(92,26,43,0.18); }
    .dw-food-row {
      display: flex; justify-content: space-between; align-items: baseline;
      padding: 4px 0;
    }

    /* PFC計算機 CTA ボタン — 構造のみ（font は L10） */
    .dw-pfc-cta {
      margin-top: auto; padding: 8px 12px;
      background: transparent; border: 1px solid var(--lime);
      color: var(--lime); border-radius: 3px;
      cursor: pointer; transition: all 0.15s;
    }
    .dw-pfc-cta:hover { background: var(--lime); color: #000; }
    body.theme-feminine .dw-pfc-cta:hover { color: #f5efe7; font-weight: 700; }

    /* ロードマップ詳細（W4内） — コンテナ構造のみ */
    .dw-phase-info {
      margin-top: 12px; padding-top: 12px;
      border-top: 1px solid rgba(255,255,255,0.06);
      flex: 1; display: flex; flex-direction: column; gap: 10px;
    }
    body.theme-feminine .dw-phase-info { border-top-color: rgba(92,26,43,0.18); }

    /* ══ フェミニンテーマ — その他細部のコントラスト調整 ══ */
    body.theme-feminine .dw-tag       { opacity: 1; color: #3f2f20; font-weight: 600; }
    body.theme-feminine .dw-sub       { opacity: 1; color: #2d2014; font-weight: 500; }
    body.theme-feminine .dw-bar-label { opacity: 1; color: #2d2014; font-weight: 600; }
    body.theme-feminine .dw-slot      { color: #5c1a2b; font-weight: 700; }
    body.theme-feminine .dw-val span  { color: #4a3826; font-weight: 600; }

    .dash-tab-nav {
      display: flex; gap: 0;
      border-bottom: 1px solid rgba(255,255,255,0.07);
      overflow-x: auto; scrollbar-width: none;
      padding: 0 28px;
    }
    .dash-tab-nav::-webkit-scrollbar { display: none; }
    body.theme-feminine .dash-tab-nav { border-bottom-color: rgba(92,26,43,0.2); }

    .dash-tab-btn {
      flex-shrink: 0; padding: 0 16px; min-height: 44px;
      display: inline-flex; align-items: center; justify-content: center;
      font-family: 'DM Mono', monospace; font-size: 10px; letter-spacing: .14em;
      color: var(--txt-mute); background: transparent;
      border: none; border-bottom: 2px solid transparent;
      cursor: pointer; transition: color .15s, border-color .15s;
      position: relative; bottom: -1px;
    }
    .dash-tab-btn:hover { color: var(--white); }
    .dash-tab-btn.dt-active { color: var(--lime); border-bottom-color: var(--lime); }

    .dash-tab-panels { min-height: 300px; }
    .dash-tab-panel { display: none; }
    .dash-tab-panel.dt-active { display: block; }
    /* ══ /Case C Dashboard ════════════════════════════════════ */

    /* ── QUICK WEIGHT ───────────────────────── */
    .quick-weight-bar { background: var(--bg2); padding: 14px 28px; display: flex; align-items: center; gap: 20px; margin-bottom: 4px; flex-wrap: wrap; }
    .qw-label { font-family: 'DM Mono', monospace; font-size: 8px; letter-spacing: 0.3em; color: var(--txt-mute); text-transform: uppercase; line-height: 1.6; white-space: nowrap; }
    .qw-controls { display: flex; align-items: center; gap: 6px; }
    .qw-step { width: 44px; height: 44px; background: #1a1a1a; border: 1px solid #2a2a2a; color: var(--txt-mute); font-size: 18px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background 0.15s; }
    .qw-step:hover { background: #252525; color: var(--white); }
    .qw-input { width: 78px; height: 44px; box-sizing: border-box; background: #0d0d0d; border: 1px solid #2a2a2a; color: var(--white); font-family: 'Bebas Neue', sans-serif; font-size: 28px; line-height: 1; text-align: center; padding: 4px 6px; -moz-appearance: textfield; appearance: textfield; }
    .qw-input::-webkit-outer-spin-button, .qw-input::-webkit-inner-spin-button { -webkit-appearance: none; }
    .qw-input:focus { outline: none; border-color: var(--txt-mute); }
    .qw-unit { font-family: 'DM Mono', monospace; font-size: 11px; color: var(--txt-mute); }
    .qw-save { background: var(--lime); color: #000; font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.2em; padding: 10px 18px; border: none; cursor: pointer; transition: background 0.15s; white-space: nowrap; }
    .qw-save:hover { background: #ccff22; }
    .qw-meta { margin-left: auto; text-align: right; }
    .qw-last { font-family: 'DM Mono', monospace; font-size: 10px; color: var(--txt-mute); }
    .qw-done { font-family: 'DM Mono', monospace; font-size: 10px; color: var(--lime); display: none; letter-spacing: 0.1em; margin-top: 2px; }
    .qw-extras { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
    .qw-extra-field { display:flex; align-items:center; gap:4px; }
    .qw-extra-lbl { font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.15em; color:var(--txt-mute); white-space:nowrap; }
    .qw-extra-input { width:54px; background:#0d0d0d; border:1px solid #2a2a2a; color:var(--white); font-family:'DM Mono',monospace; font-size:14px; line-height:1; text-align:center; padding:5px 4px; -moz-appearance:textfield; appearance:textfield; }
    .qw-extra-input::-webkit-outer-spin-button, .qw-extra-input::-webkit-inner-spin-button { -webkit-appearance:none; }
    .qw-extra-input:focus { outline:none; border-color:var(--txt-mute); }
    .metrics-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2px; grid-column: 1 / -1; }
    @media(max-width:900px){ .metrics-grid{ grid-template-columns: repeat(2, 1fr); } }
    @media(max-width:500px){ .metrics-grid{ grid-template-columns: 1fr; } }
    .metrics-base-note { grid-column: 1 / -1; font-family: 'DM Mono', monospace; font-size: 10px; color: var(--txt-mute); padding: 12px 22px; background: var(--bg2); letter-spacing: 0.05em; line-height: 1.7; border-top: 1px solid var(--gray2); }
    .metrics-base-note strong { color: var(--lime-dim); font-weight: 600; }
    .metrics-base-note a:hover { color: var(--lime); }
    .metric { background: var(--bg2); padding: 22px; }
    .metric-label { font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.3em; color: var(--txt-mute); text-transform: uppercase; margin-bottom: 8px; }
    .metric-val { font-family: 'Bebas Neue', sans-serif; font-size: 38px; color: var(--white); }
    .metric-unit { font-family: 'DM Mono', monospace; font-size: 11px; color: var(--txt-mute); margin-left: 4px; }
    .metric-diff { font-family:'DM Mono',monospace; font-size:10px; color:var(--txt-mute); margin-top:10px; line-height:1.6; }

    /* ── NUTRITION ───────────────────────────── */
    .nutrition-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2px; margin-bottom: 20px; }
    @media(max-width:900px){ .nutrition-grid{ grid-template-columns: repeat(2,1fr); } }
    .nutr-card { background: var(--bg2); padding: 24px 20px; }
    .nutr-card.highlight { background: #141a00; border-top: 2px solid var(--lime); }
    .nutr-label { font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.3em; color: var(--txt-mute); text-transform: uppercase; margin-bottom: 8px; }
    .nutr-val { font-family: 'Bebas Neue', sans-serif; font-size: 36px; line-height: 1; color: var(--white); margin-bottom: 6px; }
    .nutr-card.highlight .nutr-val { color: var(--lime); }
    .nutr-unit { font-family: 'DM Mono', monospace; font-size: 10px; color: var(--txt-mute); margin-left: 4px; }
    .nutr-desc { font-size: 9px; color: #d0d0d0; line-height: 1.6; }

    .pfc-block { background: var(--bg2); padding: 28px; margin-bottom: 20px; }
    .pfc-title { display: flex; align-items: center; gap: 20px; margin-bottom: 20px; }
    .pfc-bars { display: grid; gap: 14px; }
    .pfc-row { display: grid; grid-template-columns: 110px 1fr 160px; align-items: center; gap: 14px; }
    @media(max-width:600px){ .pfc-row{ grid-template-columns: 80px 1fr; } .pfc-row .pfc-num{ display:none; } }
    .pfc-name { font-family: 'Bebas Neue', sans-serif; font-size: 20px; }
    .pfc-bar-wrap { height: 5px; background: var(--gray2); overflow: hidden; }
    .pfc-bar { height: 100%; transition: width 0.8s cubic-bezier(0.4,0,0.2,1); }
    .pfc-p { background: var(--lime); } .pfc-f { background: var(--orange); } .pfc-c { background: var(--blue); }
    .pfc-num { font-family: 'DM Mono', monospace; font-size: 11px; color: var(--white); text-align: right; }

    .countdown-block { background: var(--bg2); padding: 36px 28px; display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: center; }
    @media(max-width:700px){ .countdown-block{ grid-template-columns:1fr; } }
    .cdrow { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--gray2); }
    .cdlabel { font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.2em; color: var(--txt-mute); }
    .cdval { font-family: 'DM Mono', monospace; font-size: 11px; color: var(--white); }
    .days-big { font-family: 'Bebas Neue', sans-serif; font-size: 72px; line-height: 1; color: var(--lime); }

    /* ── ANIMATIONS ──────────────────────────── */
    @keyframes fadeUp { from { opacity:0; transform:translateY(16px); } to { opacity:1; transform:translateY(0); } }
    @keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.3} }

    /* ── WEIGHT TRACKING ─────────────────────────── */
    .ex-simple { line-height: 1.9; font-size: 11px; color: var(--txt-mute); font-weight: 400; }
    .day-card.checked .ex-simple { color: #7a9900; }
    .ex-simple .ex-sets { color: var(--lime-dim); font-size: 10px; }
    .ex-item { margin-bottom: 10px; }
    .ex-top { font-size: 11px; color: var(--txt-mute); line-height: 1.4; font-weight: 400; }
    .day-card.checked .ex-top { color: #7a9900; }
    .ex-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .ex-sets { font-family: 'DM Mono', monospace; font-size: 10px; color: var(--lime-dim); margin-top: 1px; }
    .day-card.checked .ex-sets { color: #5a8000; }
    .ex-hint { font-family: 'DM Mono', monospace; font-size: 10px; color: var(--txt-mute); margin-top: 2px; }
    .ex-sugg-val { color: var(--lime-dim); }
    .ex-done-btn { width:44px; height:44px; border-radius:3px; border:1px solid #5a5a5a; background:#252525; color:#bbb; font-size:14px; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:all 0.15s; flex-shrink:0; }
    .ex-done-btn:hover { border-color:var(--txt-mute); color:var(--txt-mute); background:#2e2e2e; }
    .ex-done-btn.done { border-color:var(--lime); color:var(--lime); background:#141a00; }
    .ex-w-row { display: flex; align-items: center; gap: 4px; margin-top: 4px; }
    .ex-w-input {
      background: var(--bg); border: 1px solid #1e1e1e;
      color: var(--white); font-family: 'DM Mono', monospace;
      font-size: 11px; padding: 3px 6px; outline: none; width: 62px;
      transition: border-color 0.15s;
    }
    .ex-w-input:focus { border-color: var(--lime); }
    .ex-w-unit { font-family: 'DM Mono', monospace; font-size: 8px; color: var(--txt-mute); }
    .ex-group-header {
      font-family: 'DM Mono', monospace; font-size: 8px; letter-spacing: 0.2em;
      color: var(--txt-mute); text-transform: uppercase;
      margin-top: 10px; margin-bottom: 3px;
      padding-bottom: 4px; border-bottom: 1px solid #1e1e1e;
    }
    .day-card.checked .ex-group-header { color: #4a5a30; border-bottom-color: #2a3a00; }

    /* ── KNOWLEDGE DRAWER ────────────────────────── */
    .k-overlay {
      position: fixed; inset: 0; background: rgba(0,0,0,0.65);
      z-index: 1050; opacity: 0; pointer-events: none;
      transition: opacity 0.3s;
    }
    .k-overlay.open { opacity: 1; pointer-events: all; }
    .k-drawer {
      position: fixed; top: 0; right: 0; width: 400px; height: 100vh;
      background: var(--bg2); border-left: 1px solid var(--gray2);
      z-index: 1100; overflow-y: auto;
      transform: translateX(100%); transition: transform 0.35s cubic-bezier(0.4,0,0.2,1);
    }
    .k-drawer.open { transform: translateX(0); }
    @media(max-width:480px){ .k-drawer{ width:100vw; } }

    .k-head {
      display: flex; justify-content: space-between; align-items: center;
      padding: 24px 22px 18px; border-bottom: 1px solid var(--gray2);
      position: sticky; top: 0; background: var(--bg2); z-index: 1;
    }
    .k-head-tag { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:0.35em; color:var(--lime); }
    .k-close {
      background: none; border: 1px solid var(--gray2); color: var(--txt-mute);
      font-family:'DM Mono',monospace; font-size:10px; letter-spacing:0.15em;
      padding: 6px 12px; cursor: pointer; transition: all 0.2s;
    }
    .k-close:hover { border-color:var(--lime); color:var(--lime); }

    .k-body { padding: 16px 20px 64px; }

    .k-card { border: 1px solid var(--gray2); margin-bottom: 2px; }
    .k-card-hd {
      display: flex; align-items: center; gap: 10px;
      padding: 14px 16px; cursor: pointer; transition: background 0.2s; user-select: none;
    }
    .k-card-hd:hover { background: var(--bg3); }
    .k-card.open .k-card-hd { background: #141a00; border-bottom: 1px solid var(--gray2); }
    .k-card-n { font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.25em; color:var(--txt-mute); min-width:20px; }
    .k-card.open .k-card-n { color:var(--lime-dim); }
    .k-card-title { font-family:'Bebas Neue',sans-serif; font-size:17px; letter-spacing:0.05em; flex:1; }
    .k-card.open .k-card-title { color:var(--lime); }
    .k-arrow { font-family:'DM Mono',monospace; font-size:9px; color:var(--txt-mute); transition:transform 0.25s; }
    .k-card.open .k-arrow { transform:rotate(180deg); color:var(--lime); }

    .k-card-bd { display:none; padding: 18px 16px; }
    .k-card.open .k-card-bd { display:block; }

    .k-stitle { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:0.3em; color:var(--lime); text-transform:uppercase; margin:14px 0 7px; font-weight:600; }
    .k-stitle:first-child { margin-top:0; }
    .k-txt { font-size:12px; color:var(--txt-mute); line-height:1.85; font-weight:400; }
    .k-txt strong { color:var(--lime-dim); font-weight:600; }
    .k-hl {
      background:#141a00; border-left:2px solid var(--lime); border:1px solid rgba(184,255,0,0.12);
      padding:11px 14px; margin:12px 0; font-family:'DM Mono',monospace;
      font-size:10px; color:var(--lime-dim); line-height:1.7;
    }
    .k-tbl { width:100%; border-collapse:collapse; margin:8px 0; }
    .k-tbl th { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:0.2em; color:var(--lime-dim); font-weight:600; text-align:left; padding:6px 8px; border-bottom:1px solid var(--gray2); }
    .k-tbl td { font-family:'DM Mono',monospace; font-size:11px; color:var(--txt-mute); padding:7px 8px; border-bottom:1px solid #2a2a2a; vertical-align:top; }
    .k-tbl td:first-child { color:var(--white); white-space:nowrap; font-weight:600; }
    body.theme-feminine .k-tbl td { color:#3a2e22; border-bottom-color:#d4c8b8; }
    body.theme-feminine .k-tbl td:first-child { color:#2d2620; }
    body.theme-feminine .k-tbl th { color:var(--lime); border-bottom-color:#c0b4a2; }
    .k-step { display:flex; gap:12px; margin:8px 0; align-items:flex-start; }
    .k-step-n { font-family:'Bebas Neue',sans-serif; font-size:22px; color:var(--lime); line-height:1; min-width:20px; }
    .k-step-t { font-size:12px; color:var(--txt-mute); line-height:1.75; padding-top:2px; font-weight:400; }
    .k-em { color:var(--white); }

    .k-gender-btn {
      flex: 1; background: var(--bg3); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'DM Mono',monospace; font-size:9px;
      letter-spacing:0.2em; padding:7px; cursor:pointer; transition:all 0.2s;
    }
    .k-gender-btn.active { background:#141a00; border-color:var(--lime); color:var(--lime); }

    .k-fab {
      position: fixed; bottom: 28px; right: 24px; z-index: 800;
      background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'Bebas Neue',sans-serif;
      font-size:15px; letter-spacing:0.2em;
      width: 94px; box-sizing: border-box;
      padding: 11px 14px; cursor: pointer; transition: all 0.2s;
      display: flex; align-items: center; justify-content: center; gap: 8px;
    }
    .k-fab::before { content:'?'; font-family:'DM Mono',monospace; font-size:13px; color:var(--lime); }
    .k-fab:hover { border-color:var(--lime); color:var(--lime); }
    .qa-fab {
      position: fixed; bottom: 78px; right: 24px; z-index: 800;
      background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'Bebas Neue',sans-serif;
      font-size:15px; letter-spacing:0.2em;
      width: 94px; box-sizing: border-box;
      padding: 11px 14px; cursor: pointer; transition: all 0.2s;
      display: flex; align-items: center; justify-content: center; gap: 8px;
    }
    .qa-fab::before { content:'Q'; font-family:'DM Mono',monospace; font-size:13px; color:var(--lime); }
    .qa-fab:hover { border-color:var(--lime); color:var(--lime); }

    /* ── β BANNER ───────────────────────────── */
    .beta-banner {
      background: linear-gradient(135deg, #1a2400 0%, #2a3a00 60%, #1f2a00 100%);
      border: 2px solid var(--lime);
      border-radius: 6px;
      padding: 20px 24px;
      margin: 20px 48px 8px;
      position: relative;
      box-shadow: 0 0 0 1px rgba(184,255,0,0.08), 0 8px 24px rgba(184,255,0,0.06);
      overflow: hidden;
    }
    .beta-banner::before {
      content: ''; position: absolute; top: -50%; right: -10%; width: 200px; height: 200px;
      background: radial-gradient(circle, rgba(184,255,0,0.12) 0%, transparent 70%);
      pointer-events: none;
    }
    @media(max-width:900px){ .beta-banner { margin: 14px 24px 8px; padding: 16px 18px; } }
    .beta-banner-close {
      position: absolute; top: 10px; right: 14px;
      background: none; border: none; color: var(--lime-dim);
      font-size: 22px; cursor: pointer; padding: 0; line-height: 1;
      width: 28px; height: 28px; display: flex; align-items: center; justify-content: center;
      transition: color 0.15s;
    }
    .beta-banner-close:hover { color: var(--lime); }
    .beta-banner-header {
      display: flex; align-items: baseline; gap: 14px; margin-bottom: 12px;
      padding-right: 30px; flex-wrap: wrap;
    }
    .beta-banner-icon { font-size: 28px; }
    .beta-banner-title {
      font-family: 'Bebas Neue', sans-serif; font-size: 26px;
      letter-spacing: 0.06em; color: var(--lime); line-height: 1;
    }
    .beta-banner-days-wrap {
      font-family: 'DM Mono', monospace; font-size: 11px;
      letter-spacing: 0.2em; color: var(--lime-dim);
      text-transform: uppercase;
    }
    .beta-banner-days {
      font-family: 'Bebas Neue', sans-serif; font-size: 32px;
      color: var(--lime); margin: 0 2px; line-height: 1;
      text-shadow: 0 0 12px rgba(184,255,0,0.4);
    }
    .beta-banner-perk {
      font-family: 'Noto Sans JP', sans-serif; font-size: 13px; font-weight: 500;
      color: #e8ffa0; line-height: 1.75; margin-bottom: 14px;
      padding: 12px 14px; background: rgba(184,255,0,0.08);
      border-left: 3px solid var(--lime); border-radius: 0 3px 3px 0;
    }
    .beta-banner-perk strong { color: #ccff22; font-weight: 700; }
    .beta-banner-perk-price-old {
      text-decoration: line-through; color: #9bbf66;
      font-size: 12px; font-weight: 500; margin-right: 4px;
    }
    .beta-banner-feedback {
      font-family: 'Noto Sans JP', sans-serif; font-size: 12px; font-weight: 400;
      color: #c8e8a0; line-height: 1.7; margin-bottom: 14px;
      padding: 10px 14px; background: rgba(255,255,255,0.05);
      border-radius: 3px;
    }
    .beta-banner-feedback strong { color: #ccff22; font-weight: 700; }
    .beta-banner-steps {
      display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;
      padding-top: 14px; border-top: 1px dashed rgba(184,255,0,0.35);
    }
    .beta-steps-toggle { display: none; } /* デスクトップは非表示 */
    @media(max-width:700px){
      .beta-steps-toggle {
        display: flex; align-items: center; justify-content: center; gap: 6px;
        width: 100%; padding: 9px 12px; margin-top: 4px;
        background: rgba(184,255,0,0.06); border: 1px solid var(--lime);
        color: var(--lime); font-family: 'DM Mono', monospace; font-size: 10px;
        letter-spacing: 0.2em; cursor: pointer; transition: all 0.15s;
        border-radius: 3px;
      }
      .beta-steps-toggle:hover, .beta-steps-toggle:focus { background: rgba(184,255,0,0.12); }
      .beta-steps-toggle .beta-steps-arrow { transition: transform 0.2s; }
      .beta-steps-toggle.expanded .beta-steps-arrow { transform: rotate(180deg); }
      .beta-banner-steps {
        display: none; grid-template-columns: 1fr; gap: 10px;
        margin-top: 10px; padding-top: 12px;
      }
      .beta-banner-steps.expanded { display: grid; }
    }
    body.theme-feminine .beta-steps-toggle { background: rgba(92,26,43,0.08); border-color: #5c1a2b; color: #5c1a2b; }
    body.theme-feminine .beta-steps-toggle:hover { background: rgba(92,26,43,0.14); }
    .beta-step {
      display: flex; gap: 10px; align-items: flex-start;
      font-family: 'Noto Sans JP', sans-serif; font-size: 12px; font-weight: 500;
      color: #d4ff8a; line-height: 1.6;
    }
    .beta-step-num {
      flex-shrink: 0; width: 24px; height: 24px; border-radius: 50%;
      background: var(--lime); color: #000; font-family: 'Bebas Neue', sans-serif;
      font-size: 15px; display: flex; align-items: center; justify-content: center;
      font-weight: 700;
    }
    .beta-step-text { flex: 1; padding-top: 2px; }
    .beta-step-text strong { color: var(--lime); font-weight: 700; }
    /* モバイル時のレイアウト微調整 */
    @media(max-width:600px){
      .beta-banner { padding: 14px 14px; margin: 12px 16px 6px; }
      .beta-banner-header { gap: 8px; margin-bottom: 10px; padding-right: 26px; }
      .beta-banner-icon { font-size: 22px; }
      .beta-banner-title { font-size: 20px; }
      .beta-banner-days { font-size: 24px; }
      .beta-banner-days-wrap { font-size: 10px; }
      .beta-banner-perk { font-size: 12px; padding: 10px 12px; }
      .beta-banner-feedback { font-size: 11px; padding: 8px 12px; }
      .beta-banner-close { top: 8px; right: 10px; font-size: 20px; width: 26px; height: 26px; }
    }

    /* ── APP DEV CARD（スマホアプリ開発中の常設告知・全テーマ変数対応） ── */
    .appdev-card {
      display: flex; align-items: center; gap: 14px;
      margin: 16px 48px 8px; padding: 12px 16px;
      background: var(--bg2); border: 1px solid var(--gray2);
      border-radius: 6px; position: relative; cursor: pointer;
      transition: border-color 0.15s, background 0.15s;
    }
    .appdev-card:hover { border-color: var(--lime-dim); background: var(--bg3); }
    .appdev-close {
      position: absolute; top: 6px; right: 10px;
      background: none; border: none; color: var(--txt-mute);
      font-size: 18px; line-height: 1; cursor: pointer; padding: 4px;
      opacity: 0.5; transition: opacity 0.15s;
    }
    .appdev-close:hover { opacity: 1; }
    .appdev-thumb {
      width: 120px; height: 68px; object-fit: cover; object-position: left center;
      border-radius: 4px; border: 1px solid var(--gray2); flex-shrink: 0;
      background: var(--bg3);
    }
    .appdev-body { min-width: 0; padding-right: 22px; }
    .appdev-tag {
      display: flex; align-items: center; gap: 6px;
      font-family: 'DM Mono', monospace; font-size: 10px; letter-spacing: 0.18em;
      color: var(--lime-dim); text-transform: uppercase; margin-bottom: 4px;
    }
    .appdev-dot {
      width: 6px; height: 6px; border-radius: 50%; background: var(--lime);
      box-shadow: 0 0 6px var(--lime); animation: appdevPulse 2s ease-in-out infinite;
    }
    @keyframes appdevPulse { 0%,100%{opacity:1;} 50%{opacity:0.35;} }
    .appdev-title {
      font-family: 'Bebas Neue', sans-serif; font-size: 18px; letter-spacing: 0.03em;
      color: var(--white); line-height: 1.15; margin-bottom: 2px;
    }
    .appdev-desc {
      font-family: 'Noto Sans JP', sans-serif; font-size: 11px; font-weight: 400;
      color: var(--txt-mute); line-height: 1.5;
    }
    @media(max-width:900px){ .appdev-card { margin: 12px 24px 8px; } }
    @media(max-width:600px){
      .appdev-card { margin: 10px 16px 6px; padding: 10px 12px; gap: 10px; }
      .appdev-thumb { width: 92px; height: 54px; }
      .appdev-title { font-size: 16px; }
    }

    /* 完成イメージの拡大モーダル（オーバーレイは全テーマ共通で暗背景） */
    .appprev-modal {
      position: fixed; inset: 0; z-index: 9999;
      flex-direction: column; background: rgba(0,0,0,0.92);
    }
    .appprev-close {
      position: absolute; top: 12px; right: 16px; z-index: 2;
      width: 40px; height: 40px; border-radius: 50%;
      background: rgba(255,255,255,0.12); border: none; color: #fff;
      font-size: 24px; line-height: 1; cursor: pointer;
    }
    .appprev-close:hover { background: rgba(255,255,255,0.22); }
    .appprev-scroll {
      flex: 1; overflow: auto; -webkit-overflow-scrolling: touch;
      display: flex; align-items: center; justify-content: center;
      padding: 56px 12px 12px;
    }
    .appprev-img { max-width: none; width: auto; height: auto; max-height: 100%; border-radius: 6px; }
    .appprev-hint {
      text-align: center; padding: 10px; color: rgba(255,255,255,0.6);
      font-family: 'Noto Sans JP', sans-serif; font-size: 11px;
    }

    /* ELEGANT theme */
    body.theme-feminine .beta-banner {
      background: linear-gradient(135deg, #f0dadd 0%, #e8c8ce 60%, #ecd9dc 100%);
      border-color: #5c1a2b;
      box-shadow: 0 0 0 1px rgba(92,26,43,0.1), 0 8px 24px rgba(92,26,43,0.08);
    }
    body.theme-feminine .beta-banner::before {
      background: radial-gradient(circle, rgba(92,26,43,0.12) 0%, transparent 70%);
    }
    body.theme-feminine .beta-banner-title { color: #5c1a2b; }
    body.theme-feminine .beta-banner-days { color: #5c1a2b; text-shadow: 0 0 10px rgba(92,26,43,0.25); }
    body.theme-feminine .beta-banner-days-wrap { color: #7a3142; }
    body.theme-feminine .beta-banner-perk { background: rgba(92,26,43,0.1); border-left-color: #5c1a2b; color: #2a0a14; font-weight: 500; }
    body.theme-feminine .beta-banner-perk strong { color: #5c1a2b; }
    body.theme-feminine .beta-banner-perk-price-old { color: #7a3142; font-weight: 500; }
    body.theme-feminine .beta-banner-feedback { background: rgba(92,26,43,0.07); color: #4a1522; }
    body.theme-feminine .beta-banner-feedback strong { color: #5c1a2b; }
    body.theme-feminine .beta-banner-steps { border-top-color: rgba(92,26,43,0.35); }
    body.theme-feminine .beta-step { color: #3f0f1c; font-weight: 500; }
    body.theme-feminine .beta-step-num { background: #5c1a2b; color: #fff; }
    body.theme-feminine .beta-step-text strong { color: #5c1a2b; }
    body.theme-feminine .beta-banner-close { color: #7a3142; }
    body.theme-feminine .beta-banner-close:hover { color: #5c1a2b; }

    /* ── FEEDBACK FAB & DRAWER ───────────────── */
    .fb-fab {
      position: fixed; bottom: 228px; right: 24px; z-index: 800;
      background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'Bebas Neue',sans-serif;
      font-size:14px; letter-spacing:0.2em;
      width: 94px; box-sizing: border-box;
      padding: 11px 14px; cursor: pointer; transition: all 0.2s;
      display: flex; align-items: center; justify-content: center; gap: 6px;
    }
    .fb-fab .lb-ic { font-size:14px; margin-right:2px; vertical-align:-0.15em; }
    .fb-fab:hover { border-color:var(--lime); color:var(--lime); }
    .fb-fab .fb-dot {
      position: absolute; top: 6px; right: 6px;
      width: 8px; height: 8px; background: #ff4444; border-radius: 50%;
      display: none;
    }
    .fb-fab.has-reply .fb-dot { display: block; animation: pulse 1.5s infinite; }

    .fb-overlay {
      position: fixed; inset: 0; background: rgba(0,0,0,0.65);
      z-index: 900; opacity: 0; pointer-events: none;
      transition: opacity 0.3s;
    }
    .fb-overlay.open { opacity: 1; pointer-events: auto; }
    .fb-drawer {
      position: fixed; top: 0; right: 0; width: 480px; height: 100vh;
      background: var(--bg2); border-left: 1px solid var(--gray2);
      z-index: 950; overflow-y: auto;
      transform: translateX(100%); transition: transform 0.35s cubic-bezier(0.4,0,0.2,1);
    }
    .fb-drawer.open { transform: translateX(0); }
    @media(max-width:520px){ .fb-drawer { width: 100vw; } }

    .fb-head { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; border-bottom: 1px solid var(--gray2); }
    .fb-head-tag { font-family: 'DM Mono', monospace; font-size: 10px; letter-spacing: 0.25em; color: var(--txt-mute); }
    .fb-close { background: transparent; border: 1px solid var(--gray2); color: var(--txt-mute); font-family: 'DM Mono', monospace; font-size: 9px; padding: 6px 12px; cursor: pointer; letter-spacing: 0.2em; transition: all 0.15s; }
    .fb-close:hover { border-color: var(--lime); color: var(--lime); }
    .fb-body { padding: 16px 20px 80px; }
    .fb-intro {
      background: var(--bg); border-left: 2px solid var(--lime);
      padding: 12px 16px; margin-bottom: 20px;
      font-family: 'Noto Sans JP', sans-serif; font-size: 11px; line-height: 1.75; color: var(--txt-mute);
    }
    .fb-intro strong { color: var(--lime-dim); }
    .fb-label { font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.2em; color: var(--txt-mute); margin-bottom: 8px; text-transform: uppercase; }
    .fb-cat-row { display: flex; gap: 6px; margin: 6px 0 16px; flex-wrap: wrap; }
    .fb-cat-btn {
      background: var(--bg); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family: 'DM Mono', monospace; font-size: 10px;
      padding: 8px 14px; cursor: pointer; transition: all 0.15s; letter-spacing: 0.1em;
    }
    .fb-cat-btn:hover { border-color: var(--txt-mute); }
    .fb-cat-btn.active { border-color: var(--lime); color: var(--lime); background: #141a00; }
    body.theme-feminine .fb-cat-btn.active { background: #ecd9dc; }
    .fb-textarea {
      width: 100%; box-sizing: border-box; background: var(--bg); border: 1px solid var(--gray2);
      color: var(--white); font-family: 'Noto Sans JP', sans-serif; font-size: 13px;
      padding: 10px 14px; outline: none; resize: vertical; min-height: 100px;
      margin: 6px 0 4px; line-height: 1.6;
    }
    .fb-textarea:focus { border-color: var(--lime); }
    .fb-counter { font-family: 'DM Mono', monospace; font-size: 9px; color: var(--txt-mute); text-align: right; margin-bottom: 12px; }
    .fb-img-section { margin: 14px 0; }
    .fb-img-row { display: flex; gap: 8px; margin-top: 6px; flex-wrap: wrap; }
    .fb-img-thumb {
      position: relative; width: 70px; height: 70px;
      background: var(--bg); border: 1px solid var(--gray2);
      overflow: hidden; flex-shrink: 0;
    }
    .fb-img-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
    .fb-img-del {
      position: absolute; top: 2px; right: 2px;
      width: 18px; height: 18px; background: rgba(0,0,0,0.75);
      border: none; color: white; font-size: 12px; cursor: pointer;
      border-radius: 50%; line-height: 1; padding: 0;
      display: flex; align-items: center; justify-content: center;
    }
    .fb-img-add {
      width: 70px; height: 70px; background: var(--bg);
      border: 1px dashed var(--gray2); color: var(--txt-mute);
      font-size: 22px; cursor: pointer; transition: all 0.15s;
      display: flex; align-items: center; justify-content: center;
      font-family: 'DM Mono', monospace; flex-shrink: 0;
    }
    .fb-img-add:hover { border-color: var(--lime); color: var(--lime); }
    .fb-img-input { display: none; }
    .fb-img-hint { font-family: 'DM Mono', monospace; font-size: 9px; color: var(--txt-mute); margin-top: 6px; line-height: 1.5; }
    .fb-submit {
      display: block; width: 100%; padding: 12px 0;
      background: var(--lime); color: #000; border: none;
      font-family: 'DM Mono', monospace; font-size: 11px; letter-spacing: 0.25em;
      cursor: pointer; transition: all 0.15s; margin-top: 12px; font-weight: 600;
    }
    .fb-submit:hover:not(:disabled) { background: #ccff22; }
    .fb-submit:disabled { opacity: 0.4; cursor: not-allowed; }
    body.theme-feminine .fb-submit { background: #5c1a2b; color: #fff; }
    body.theme-feminine .fb-submit:hover:not(:disabled) { background: #7a2540; }
    .fb-status {
      padding: 10px 14px; margin-top: 12px;
      font-family: 'DM Mono', monospace; font-size: 10px;
      border-left: 2px solid; line-height: 1.6;
    }
    .fb-status.success { background: #141a00; border-color: var(--lime); color: var(--lime); }
    .fb-status.error { background: #2a0a0a; border-color: #ff4444; color: #ff8888; }
    body.theme-feminine .fb-status.success { background: #ecd9dc; color: #5c1a2b; }

    .fb-history { margin-top: 32px; padding-top: 20px; border-top: 1px solid var(--gray2); }
    .fb-history-title { font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.2em; color: var(--txt-mute); margin-bottom: 12px; text-transform: uppercase; }
    .fb-history-item {
      background: var(--bg); border-left: 2px solid var(--gray2);
      padding: 10px 14px; margin-bottom: 8px;
    }
    .fb-history-meta { margin-bottom: 6px; }
    .fb-history-cat {
      display: inline-block; font-family: 'DM Mono', monospace; font-size: 8px;
      letter-spacing: 0.15em; padding: 2px 6px;
      background: var(--bg2); color: var(--txt-mute); margin-right: 4px;
    }
    .fb-history-status {
      display: inline-block; font-family: 'DM Mono', monospace; font-size: 8px;
      padding: 2px 6px; letter-spacing: 0.15em;
    }
    .fb-history-status.open { background: var(--bg2); color: var(--txt-mute); }
    .fb-history-status.reviewed { background: #001020; color: var(--blue); }
    .fb-history-status.in_progress { background: #1a0e00; color: var(--orange); }
    .fb-history-status.done { background: #141a00; color: var(--lime); }
    .fb-history-status.wontfix { background: #2a0a0a; color: #ff8888; }
    .fb-history-msg { font-size: 12px; color: var(--white); line-height: 1.6; margin: 4px 0; word-break: break-word; white-space: pre-wrap; }
    .fb-history-date { font-family: 'DM Mono', monospace; font-size: 9px; color: var(--txt-mute); }
    .fb-history-imgs { display: flex; gap: 4px; margin-top: 6px; }
    .fb-history-imgs img { width: 40px; height: 40px; object-fit: cover; border: 1px solid var(--gray2); cursor: pointer; }
    .fb-history-reply {
      margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--gray2);
      font-size: 11px; color: var(--lime-dim); line-height: 1.6;
    }
    .fb-history-reply::before { content: '↪ 運営より: '; font-family: 'DM Mono', monospace; font-size: 9px; color: var(--lime); }
    .fb-history-empty { font-family: 'DM Mono', monospace; font-size: 10px; color: var(--txt-mute); text-align: center; padding: 20px; }
    .qa-cat { font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.35em; color:var(--txt-mute); text-transform:uppercase; padding:18px 0 8px; border-bottom:1px solid #1a1a1a; margin-bottom:4px; }
    .qa-cat:first-child { padding-top:4px; }
    /* ── カテゴリ折りたたみ（TIPS/Q&A共通） ─────────────── */
    .k-section { margin-bottom: 4px; border: 1px solid var(--gray2); border-radius: 3px; overflow: hidden; }
    .k-section-hd { display: flex; align-items: center; padding: 14px 16px; background: var(--bg2); cursor: pointer; user-select: none; transition: background 0.15s; }
    .k-section-hd:hover { background: var(--bg3); }
    .k-section-title { font-family: 'DM Mono', monospace; font-size: 11px; letter-spacing: 0.2em; color: var(--white); text-transform: uppercase; flex: 1; }
    .k-section-count { font-family: 'DM Mono', monospace; font-size: 9px; color: var(--txt-mute); margin: 0 10px; }
    .k-section-arrow { color: var(--txt-mute); font-size: 11px; transition: transform 0.2s; }
    .k-section.open .k-section-arrow { transform: rotate(180deg); }
    .k-section-body { display: none; padding: 6px 12px; background: var(--bg); }
    .k-section.open .k-section-body { display: block; }
    .k-section .k-card { border: none; border-bottom: 1px solid var(--gray2); margin-bottom: 0; border-radius: 0; }
    .k-section .k-card:last-child { border-bottom: none; }
    .qa-a { display:flex; gap:10px; align-items:flex-start; margin-bottom:4px; }
    .qa-a-tag { font-family:'DM Mono',monospace; font-size:10px; color:var(--lime); min-width:14px; padding-top:1px; }
    .qa-ref { font-family:'DM Mono',monospace; font-size:9px; color:var(--txt-mute); margin-top:8px; }
    .qa-ref span { color:var(--lime-dim); }

    /* ── CUSTOM MENU DRAWER ──────────────────────── */
    .cm-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.65); z-index:900; opacity:0; pointer-events:none; transition:opacity 0.3s; }
    .cm-overlay.open { opacity:1; pointer-events:all; }
    .cm-drawer { position:fixed; top:0; right:0; width:480px; height:100vh; background:var(--bg2); border-left:1px solid var(--gray2); z-index:950; overflow-y:auto; transform:translateX(100%); transition:transform 0.35s cubic-bezier(0.4,0,0.2,1); }
    .cm-drawer.open { transform:translateX(0); }
    @media(max-width:520px){ .cm-drawer{ width:100vw; } }

    .cm-head { display:flex; justify-content:space-between; align-items:center; padding:24px 22px 18px; border-bottom:1px solid var(--gray2); position:sticky; top:0; background:var(--bg2); z-index:1; }
    .cm-head-tag { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:0.35em; color:var(--lime); }
    .cm-close { background:none; border:1px solid var(--gray2); color:var(--txt-mute); font-family:'DM Mono',monospace; font-size:10px; letter-spacing:0.15em; padding:6px 12px; cursor:pointer; transition:all 0.2s; }
    .cm-close:hover { border-color:var(--lime); color:var(--lime); }

    .cm-body { padding:16px 20px 80px; }
    .cm-notice { background:#141a00; border:1px solid rgba(184,255,0,0.15); padding:10px 14px; font-family:'DM Mono',monospace; font-size:9px; color:var(--lime-dim); line-height:1.7; margin-bottom:20px; letter-spacing:0.05em; }
    .cm-custom-badge { display:inline-block; font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.2em; color:var(--lime); border:1px solid rgba(184,255,0,0.4); padding:2px 8px; margin-bottom:16px; }
    .cm-default-badge { display:inline-block; font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.2em; color:var(--txt-mute); border:1px solid #2a2a2a; padding:2px 8px; margin-bottom:16px; }

    .cm-slot { background:var(--bg); border:1px solid var(--gray2); margin-bottom:8px; }
    .cm-slot-head { display:flex; align-items:center; gap:10px; padding:10px 14px; border-bottom:1px solid var(--gray2); cursor:pointer; user-select:none; }
    .cm-slot-head:hover { background:rgba(255,255,255,0.03); }
    .cm-slot-toggle { background:none; border:none; color:var(--txt-mute); font-size:14px; cursor:pointer; padding:4px 10px 4px 2px; flex-shrink:0; transition:transform 0.2s; line-height:1; }
    .cm-slot.collapsed .cm-slot-toggle { transform:rotate(-90deg); }
    .cm-slot.collapsed .cm-slot-body { display:none; }
    .cm-slot.collapsed .cm-slot-head { border-bottom:none; }
    .cm-slot-n { font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.2em; color:var(--txt-mute); min-width:20px; }
    .cm-slot-name { font-family:'DM Mono',monospace; font-size:9px; letter-spacing:0.15em; color:var(--white); background:transparent; border:none; border-bottom:1px solid #2a2a2a; padding:2px 4px; width:100%; outline:none; cursor:text; }
    .cm-slot-name:focus { border-bottom-color:var(--lime); color:var(--lime); }
    .cm-slot-body { padding:10px 14px; display:flex; flex-direction:column; gap:6px; }
    .cm-all-toggle { font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.15em; color:var(--txt-mute); background:none; border:1px solid var(--gray2); padding:4px 10px; cursor:pointer; margin-bottom:8px; }
    .cm-all-toggle:hover { color:var(--white); border-color:var(--gray1); }
    .cm-ex-row { display:flex; align-items:center; gap:6px; }
    .cm-ex-sel-wrap { flex:1; display:flex; gap:4px; min-width:0; }
    .cm-ex-sel { flex:1; min-width:0; background:var(--bg2); border:1px solid #1e1e1e; color:var(--white); font-family:'DM Mono',monospace; font-size:10px; padding:5px 8px; outline:none; transition:border-color 0.15s; cursor:pointer; }
    .cm-ex-sel:focus { border-color:var(--txt-mute); }
    .cm-ex-sets { width:60px; background:var(--bg2); border:1px solid #1e1e1e; color:var(--txt-mute); font-family:'DM Mono',monospace; font-size:9px; padding:5px 4px; outline:none; text-align:center; transition:border-color 0.15s; flex-shrink:0; }
    .cm-ex-sets:focus { border-color:var(--txt-mute); }
    .cm-ex-custom { flex:1; min-width:0; background:var(--bg2); border:1px solid rgba(184,255,0,0.3); color:var(--lime-dim); font-family:'DM Mono',monospace; font-size:10px; padding:5px 8px; outline:none; }
    .cm-ex-del { background:none; border:1px solid #1e1e1e; color:var(--txt-mute); font-size:12px; width:24px; height:24px; cursor:pointer; transition:all 0.15s; flex-shrink:0; display:flex; align-items:center; justify-content:center; }
    .cm-ex-del:hover { border-color:#ff4444; color:#ff4444; }
    .cm-ex-moves { display:flex; flex-direction:column; gap:1px; flex-shrink:0; cursor:grab; touch-action:none; }
    .cm-ex-moves:active { cursor:grabbing; }
    .cm-ex-move { background:none; border:1px solid #1e1e1e; color:var(--txt-mute); font-size:9px; width:22px; height:11px; cursor:pointer; transition:all 0.15s; padding:0; display:flex; align-items:center; justify-content:center; line-height:1; }
    .cm-ex-move:hover:not(:disabled) { border-color:var(--lime); color:var(--lime); }
    .cm-ex-move:disabled { opacity:0.3; cursor:not-allowed; }
    /* SortableJS — ドラッグ中の見た目 */
    .cm-ex-row-ghost { opacity:0.4; background:var(--bg3); }
    .cm-ex-row-chosen { background:rgba(184,255,0,0.08); }
    .cm-ex-row-drag   { box-shadow:0 4px 12px rgba(0,0,0,0.4); cursor:grabbing; }
    body.theme-feminine .cm-ex-row-chosen { background:rgba(92,26,43,0.08); }
    .cm-add-ex { background:none; border:1px dashed #2a2a2a; color:var(--txt-mute); font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.15em; padding:5px; cursor:pointer; width:100%; transition:all 0.2s; margin-top:2px; }
    .cm-add-ex:hover { border-color:var(--txt-mute); color:var(--txt-mute); }
    /* 種目ピッカーパネル */
    .cm-picker-panel { position:fixed; z-index:1200; background:var(--bg2); border:1px solid var(--gray2); width:260px; max-height:380px; display:flex; flex-direction:column; box-shadow:0 8px 24px rgba(0,0,0,0.7); }
    .cm-picker-panel.hidden { display:none; }
    .cm-picker-search { padding:7px 8px; border-bottom:1px solid var(--gray2); flex-shrink:0; }
    .cm-picker-search input { width:100%; background:#111; border:1px solid var(--gray2); color:var(--white); padding:5px 9px; font-size:11px; font-family:'DM Mono',monospace; outline:none; }
    .cm-picker-search input:focus { border-color:var(--lime); }
    .cm-picker-list { overflow-y:auto; flex:1; }
    .cm-picker-group-head { width:100%; background:none; border:none; border-bottom:1px solid var(--gray2); color:var(--txt-mute); padding:7px 10px; text-align:left; font-size:9px; letter-spacing:0.15em; cursor:pointer; display:flex; align-items:center; justify-content:space-between; font-family:'DM Mono',monospace; }
    .cm-picker-group-head:hover { background:rgba(255,255,255,0.03); color:var(--white); }
    .cm-picker-group-arrow { font-size:8px; transition:transform 0.2s; display:inline-block; }
    .cm-picker-group.collapsed .cm-picker-group-arrow { transform:rotate(-90deg); }
    .cm-picker-group-body { display:flex; flex-direction:column; }
    .cm-picker-group.collapsed .cm-picker-group-body { display:none; }
    .cm-picker-item { background:none; border:none; border-bottom:1px solid #1e1e1e; color:#e8e8e8; padding:7px 18px; text-align:left; font-size:11px; cursor:pointer; width:100%; }
    .cm-picker-item:hover { background:rgba(184,255,0,0.08); color:var(--lime); }
    .cm-picker-direct { background:none; border:none; border-top:1px solid var(--gray2); color:var(--txt-mute); padding:8px 10px; text-align:left; font-size:9px; font-family:'DM Mono',monospace; letter-spacing:0.1em; cursor:pointer; width:100%; }
    .cm-picker-direct:hover { color:var(--white); }
    /* 種目選択ボタン（selectの代替） */
    .cm-ex-picker-btn { flex:1; min-width:0; background:var(--bg2); border:1px solid #1e1e1e; color:var(--white); font-family:'DM Mono',monospace; font-size:10px; padding:5px 8px; text-align:left; cursor:pointer; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; transition:border-color 0.15s; }
    .cm-ex-picker-btn:hover { border-color:var(--txt-mute); }
    .cm-ex-picker-btn.empty { color:var(--txt-mute); }

    .cm-footer { position:sticky; bottom:0; background:var(--bg2); border-top:1px solid var(--gray2); padding:14px 20px; display:flex; gap:8px; }
    .cm-save { flex:1; background:var(--lime); color:#000; font-family:'DM Mono',monospace; font-size:9px; letter-spacing:0.2em; padding:12px; border:none; cursor:pointer; transition:background 0.15s; }
    .cm-save:hover { background:#ccff22; }
    .cm-reset { background:none; border:1px solid var(--gray2); color:var(--txt-mute); font-family:'DM Mono',monospace; font-size:9px; letter-spacing:0.1em; padding:12px 16px; cursor:pointer; transition:all 0.2s; white-space:nowrap; }
    .cm-reset:hover { border-color:#ff4444; color:#ff4444; }

    /* シェアボタンと統一（同サイズのライム枠ピル） */
    .cm-edit-btn { font-family:'DM Mono',monospace; font-size:11px; letter-spacing:.05em; color:var(--lime); background:transparent; border:1px solid var(--lime); padding:0 12px; min-height:36px; border-radius:6px; display:inline-flex; align-items:center; cursor:pointer; transition:all 0.2s; white-space:nowrap; }
    .cm-edit-btn:hover { background:var(--lime); color:var(--bg); }
    .cm-edit-btn.has-custom { border-color:var(--lime); color:var(--lime); background:rgba(184,255,0,0.1); }

    /* ── SCHEDULE SETUP ─────────────────────────── */
    .freq-select { display: grid; grid-template-columns: repeat(4,1fr); gap: 2px; }
    .freq-btn {
      background: var(--bg2); border: 2px solid var(--gray2);
      color: var(--txt-mute); font-family:'DM Mono',monospace;
      padding: 20px 10px; cursor: pointer; text-align: center;
      transition: all 0.2s;
    }
    .freq-n { font-family:'Bebas Neue',sans-serif; font-size: 36px; display: block; color: var(--white); line-height: 1; }
    .freq-tag { font-size: 8px; letter-spacing: 0.1em; line-height: 1.6; display: block; margin-top: 4px; }
    .freq-btn:hover { border-color: var(--txt-mute); }
    .freq-btn.active { border-color: var(--lime); background: #141a00; color: var(--lime-dim); }
    .freq-btn.active .freq-n { color: var(--lime); }

    .sched-row { display: grid; grid-template-columns: repeat(7,1fr); gap: 2px; margin-top: 16px; }
    .sched-day {
      background: var(--bg2); border: 1px solid var(--gray2);
      padding: 10px 4px; text-align: center; cursor: pointer;
      transition: all 0.2s; user-select: none;
    }
    .sched-day:hover { border-color: var(--txt-mute); }
    .sched-day.train { background: #141a00; border-color: rgba(184,255,0,0.3); }
    .sched-lbl { font-family:'Bebas Neue',sans-serif; font-size:15px; display:block; color: var(--gray); }
    .sched-day.train .sched-lbl { color: var(--lime); }
    .sched-body { font-family:'DM Mono',monospace; font-size:7px; display:block; margin-top:4px; color:var(--txt-mute); line-height:1.4; }
    .sched-day.train .sched-body { color: var(--lime-dim); }
    .sched-hint { font-family:'DM Mono',monospace; font-size:11px; color:var(--txt-mute); margin-top:8px; letter-spacing:0.1em; font-weight:400; line-height:1.6; }

    /* ── GENDER & BODY GOAL SELECT ───────────────── */
    /* ── TARGET WEIGHT MODE ─────────────────────── */
    .target-mode-toggle { display: flex; gap: 2px; margin-bottom: 8px; }
    .target-mode-btn {
      flex: 1; background: var(--bg3); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'DM Mono',monospace; font-size:9px;
      letter-spacing:0.12em; padding: 10px 8px; cursor: pointer; transition: all 0.2s; text-align:center;
    }
    .target-mode-btn.active { background:#141a00; border-color:var(--lime); color:var(--lime); }
    .target-auto-display {
      font-family:'DM Mono',monospace; font-size:11px; color:var(--txt-mute);
      padding: 10px 14px; background: var(--bg3); border: 1px solid #1a1a1a; line-height:1.6;
    }
    .target-auto-display strong { color: var(--lime-dim); font-weight: normal; font-size:14px; }

    .gender-select { display: flex; gap: 2px; }
    .gender-btn {
      flex: 1; background: var(--bg3); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'DM Mono',monospace; font-size:13px;
      letter-spacing:0.15em; padding: 18px 12px; cursor: pointer; text-align: center;
      transition: all 0.2s;
    }
    .gender-btn.active { background:#141a00; border-color:var(--lime); color:var(--lime); }
    .gender-icon { font-size:22px; display:block; margin-bottom:6px; }
    /* ── LINE ICONS (Tabler スプライト・絵文字置換) ── */
    .lb-ic {
      width: 1em; height: 1em; display: inline-block; vertical-align: -0.15em;
      fill: none; stroke: currentColor; stroke-width: 2;
      stroke-linecap: round; stroke-linejoin: round;
      flex-shrink: 0;
    }
    .gender-icon .lb-ic, .bg-icon .lb-ic, .env-icon .lb-ic, .equip-icon .lb-ic { vertical-align: middle; }
    .setup-sublabel { font-family:'DM Mono',monospace; font-size:9px; letter-spacing:0.3em; color:var(--txt-mute); margin-bottom:12px; }
    .body-goal-select { display: flex; gap: 2px; }
    .body-goal-btn {
      flex: 1; background: var(--bg3); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'DM Mono',monospace;
      padding: 20px 10px; cursor: pointer; text-align: center;
      transition: all 0.2s;
    }
    .body-goal-btn.active { background:#141a00; border-color:var(--lime); color:var(--lime); }
    .bg-icon { font-size:28px; margin-bottom:8px; }
    .bg-name { font-family:'Bebas Neue',sans-serif; font-size:18px; letter-spacing:0.05em; margin-bottom:6px; }
    .bg-desc { font-size:9px; letter-spacing:0.03em; line-height:1.7; }
    .body-goal-btn.active .bg-name { color:var(--lime); }
    .body-goal-btn.active .bg-desc { color:var(--lime-dim); }

    /* ── TRAVEL MODE ─────────────────────────────── */
    .day-card-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 4px; }
    .day-card-top > div:first-child { min-width: 0; overflow: hidden; }
    .env-switch-btns { display:flex; gap:4px; flex-shrink: 0; }
    .env-sw-btn {
      width:36px; height:36px; border-radius:3px; border:1px solid #333;
      background:transparent; color:var(--txt-mute); font-size:14px;
      cursor:pointer; display:flex; align-items:center; justify-content:center;
      transition:all 0.15s; flex-shrink:0;
    }
    /* タッチ環境(タブレット/モバイル=週グリッド4・2列)では44pxに拡大 */
    @media(max-width:900px){ .env-sw-btn { width:44px; height:44px; } }
    .env-sw-btn.active-gym    { border-color:var(--lime);   color:var(--lime);   background:#141a00; }
    .env-sw-btn.active-home   { border-color:var(--blue);   color:var(--blue);   background:#001020; }
    .env-sw-btn.active-travel { border-color:var(--orange); color:var(--orange); background:#1a0e00; }
    .day-card.env-home  { border-color:#3a5a7a; background:#142a3d; }
    .day-card.env-home:hover { background:#1d3a52; }
    .day-card.env-travel { border-top:2px solid var(--orange); background:#241a14; }
    .day-card.env-travel:hover { background:#33271c; }
    .travel-badge { font-family:'DM Mono',monospace; font-size:7px; letter-spacing:0.2em; color:var(--orange); margin-bottom:4px; }

    /* ── BODY LOG ────────────────────────────────── */
    .measure-form { background: var(--bg2); padding: 24px 28px; margin-bottom: 16px; }
    .measure-form-row { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr auto; gap: 8px; align-items: end; }
    @media(max-width:900px){ .measure-form-row{ grid-template-columns: 1fr 1fr; } }
    @media(max-width:600px){ .measure-form-row{ grid-template-columns: 1fr; } }
    .mf-group { display: flex; flex-direction: column; gap: 5px; }
    .mf-label { font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.3em; color:var(--txt-mute); text-transform:uppercase; }
    .mf-input {
      background: var(--bg); border: 1px solid var(--gray2);
      color: var(--white); font-family:'DM Mono',monospace;
      font-size:14px; padding:10px 12px; outline:none; width:100%;
      transition: border-color 0.2s;
    }
    .mf-input:focus { border-color: var(--lime); }
    .mf-add {
      background: var(--lime); border: none; color: #0a0a0a;
      font-family:'Bebas Neue',sans-serif; font-size:16px; letter-spacing:0.1em;
      padding: 10px 24px; cursor: pointer; white-space: nowrap;
      transition: opacity 0.2s; height: fit-content; align-self: end;
    }
    .mf-add:hover { opacity: 0.85; }

    .chart-tabs { display: flex; gap: 2px; margin-bottom: 12px; }
    .chart-tab {
      background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'DM Mono',monospace; font-size:9px;
      letter-spacing:0.2em; padding:8px 16px; cursor:pointer; transition:all 0.2s;
    }
    .chart-tab:hover { border-color: var(--txt-mute); color: var(--white); }
    .chart-tab.active { background:#141a00; border-color:var(--lime); color:var(--lime); }

    .chart-wrap { background: var(--bg2); padding: 20px; margin-bottom: 4px; overflow: hidden; min-height: 80px; }
    .chart-wrap svg { display: block; width: 100%; }
    .chart-header { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:14px; }
    .chart-val { font-family:'Bebas Neue',sans-serif; font-size:36px; line-height:1; }
    .chart-val-unit { font-size:14px; font-family:'DM Mono',monospace; color:var(--txt-mute); margin-left:4px; }
    .chart-diff-label { font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.2em; color:var(--txt-mute); margin-bottom:4px; }
    .chart-diff { font-family:'DM Mono',monospace; font-size:13px; }
    .chart-count { font-family:'DM Mono',monospace; font-size:9px; color:var(--txt-mute); margin-top:2px; }

    .log-table-wrap { background: var(--bg2); overflow: hidden; }

    /* ── STRENGTH CHART ─────────────────────────── */
    .str-tab-list { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 16px; }
    .str-tab { background: var(--bg2); border: 1px solid var(--gray2); color: var(--txt-mute); font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.15em; padding: 6px 12px; cursor: pointer; transition: all 0.2s; white-space: nowrap; }
    .str-tab:hover { border-color: var(--txt-mute); color: var(--white); }
    .str-tab.active { background: #141a00; border-color: var(--lime); color: var(--lime); }
    .log-table { width: 100%; border-collapse: collapse; }
    .log-table th {
      font-family:'DM Mono',monospace; font-size:8px; letter-spacing:0.2em;
      color:var(--txt-mute); text-align:left; padding:10px 14px;
      border-bottom:1px solid var(--gray2); background:var(--bg3);
    }
    .log-table td {
      font-family:'DM Mono',monospace; font-size:11px; color:var(--txt-mute);
      padding:9px 14px; border-bottom:1px solid #161616;
    }
    .log-table td:first-child { color:var(--white); }
    .log-table .del-btn {
      background:none; border:1px solid var(--gray2); color:var(--txt-mute);
      font-size:9px; padding:3px 8px; cursor:pointer; letter-spacing:0.1em;
      font-family:'DM Mono',monospace; transition:all 0.2s;
    }
    .log-table .del-btn:hover { border-color:#cc4444; color:#cc4444; }
    .log-empty { font-family:'DM Mono',monospace; font-size:10px; color:var(--txt-mute); padding:32px; text-align:center; letter-spacing:0.2em; }
    .view-btn {
      background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'DM Mono',monospace; font-size:9px;
      letter-spacing:0.2em; padding:8px 14px; cursor:pointer; transition:all 0.2s;
    }
    .view-btn:hover { border-color: var(--txt-mute); color: var(--white); }
    .view-btn.active { background:#080818; border-color:var(--blue); color:var(--blue); }
    .range-btn {
      background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'DM Mono',monospace; font-size:9px;
      letter-spacing:0.2em; padding:8px 14px; cursor:pointer; transition:all 0.2s;
    }
    .range-btn:hover { border-color: var(--txt-mute); color: var(--white); }
    .range-btn.active { background:#141a00; border-color:var(--lime); color:var(--lime); }
    .compare-select {
      background: var(--bg2); border: 1px solid var(--gray2);
      color: #c084fc; font-family:'DM Mono',monospace; font-size:9px;
      letter-spacing:0.1em; padding:7px 10px; cursor:pointer; transition:border-color 0.2s;
      outline:none; -webkit-appearance:none; appearance:none;
    }
    .compare-select:hover { border-color: var(--txt-mute); }
    .compare-select option { background:#111; color:#ccc; }

    /* ── NUTRITION LOG ────────────────────────────── */
    .nutr-log-form { background: var(--bg2); padding: 24px 28px; margin-bottom: 16px; }
    .nutr-note-icon { display: inline-flex; align-items: center; vertical-align: middle; color: var(--txt-mute); }
    .nutr-note-icon svg { width: 15px; height: 15px; }
    .nutr-log-row { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr 1fr auto; gap: 8px; align-items: end; }
    @media(max-width:900px){ .nutr-log-row{ grid-template-columns: 1fr 1fr 1fr; } }
    @media(max-width:600px){ .nutr-log-row{ grid-template-columns: 1fr 1fr; } }
    .nutr-compare-block { background: var(--bg2); padding: 24px 28px; margin-bottom: 4px; }
    .nutr-compare-row { display: grid; grid-template-columns: 110px 1fr 110px; align-items: center; gap: 12px; margin-bottom: 16px; }
    @media(max-width:600px){ .nutr-compare-row{ grid-template-columns: 80px 1fr; } .nutr-compare-row > div:last-child{ display:none; } }
    .nutr-compare-label { font-family: 'Bebas Neue', sans-serif; font-size: 18px; }
    .nutr-bar-wrap { height: 6px; background: var(--gray2); overflow: hidden; }
    .nutr-bar-actual { height: 100%; transition: width 0.6s cubic-bezier(0.4,0,0.2,1); }

    /* ── PFC CALCULATOR ─────────────────────────── */
    #pfcFab {
      position: fixed; bottom: 178px; right: 24px; z-index: 800;
      background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'Bebas Neue',sans-serif;
      font-size:15px; letter-spacing:0.2em;
      width: 94px; box-sizing: border-box;
      padding: 11px 14px; cursor: pointer; transition: all 0.2s;
      display: flex; align-items: center; justify-content: center; gap: 8px;
    }
    #pfcFab:hover { border-color:var(--lime); color:var(--lime); }
    #pfcOverlay {
      position: fixed; inset:0; background: rgba(0,0,0,0.5);
      z-index: 810; opacity:0; pointer-events:none; transition: opacity 0.3s;
    }
    #pfcOverlay.open { opacity:1; pointer-events:auto; }
    #pfcDrawer {
      position: fixed; bottom:0; left:0; right:0;
      background: #0e0e0e; z-index: 820;
      border-top: 2px solid var(--lime);
      border-radius: 14px 14px 0 0;
      padding: 20px 22px 32px;
      font-family: 'DM Mono', monospace;
      transform: translateY(100%);
      transition: transform 0.3s cubic-bezier(0.4,0,0.2,1);
      max-height: 85vh; overflow-y: auto;
    }
    #pfcDrawer.open { transform: translateY(0); }
    .pfc-dr-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; }
    .pfc-dr-title { font-family:'Bebas Neue',sans-serif; font-size:22px; letter-spacing:0.05em; color:var(--lime); }
    .pfc-dr-add-row { display:grid; grid-template-columns:1fr 72px auto; gap:8px; align-items:end; margin-bottom:14px; }
    @media(max-width:600px){ .pfc-dr-add-row{ grid-template-columns:1fr 64px auto; } }
    .pfc-dr-select { background:var(--bg); border:1px solid var(--gray2); color:var(--white); font-family:'DM Mono',monospace; font-size:12px; padding:9px 10px; width:100%; outline:none; -webkit-appearance:none; appearance:none; transition:border 0.2s; }
    .pfc-dr-select:focus { border-color:var(--lime); }
    .pfc-dr-g { background:var(--bg); border:1px solid var(--gray2); color:var(--white); font-family:'DM Mono',monospace; font-size:13px; padding:9px 10px; width:100%; outline:none; transition:border 0.2s; }
    .pfc-dr-g:focus { border-color:var(--lime); }
    /* 食材ピッカー（分類アコーディオン） */
    .pfc-picker-head { display:flex; justify-content:space-between; align-items:center; background:var(--bg); border:1px solid var(--gray2);
      color:var(--white); font-family:'Noto Sans JP',sans-serif; font-size:13px; padding:11px 14px; cursor:pointer; border-radius:6px; transition:border 0.15s; }
    .pfc-picker-head:hover { border-color:var(--lime); }
    .pfc-food-picker { margin-top:6px; max-height:300px; overflow-y:auto; border:1px solid var(--gray2); border-radius:6px; -webkit-overflow-scrolling:touch; }
    .pfc-cat { border-bottom:1px solid var(--gray2); }
    .pfc-cat:last-child { border-bottom:none; }
    .pfc-cat-head { display:flex; justify-content:space-between; align-items:center; padding:11px 14px; cursor:pointer; background:var(--bg2);
      font-family:'DM Mono',monospace; font-size:11px; letter-spacing:0.04em; color:var(--txt-mute); user-select:none; }
    .pfc-cat-head:hover { color:var(--white); }
    .pfc-cat-arrow { font-size:10px; color:var(--lime); }
    .pfc-cat-body { display:none; flex-direction:column; padding:0; }
    .pfc-cat.open .pfc-cat-body { display:flex; }
    .pfc-food-chip { display:block; width:100%; text-align:left; font-family:'Noto Sans JP',sans-serif; font-size:13px;
      padding:10px 16px; border:none; border-bottom:1px solid var(--gray2); background:transparent; color:var(--txt-mute);
      cursor:pointer; transition:background 0.12s; }
    .pfc-food-chip:last-child { border-bottom:none; }
    .pfc-food-chip:hover { background:var(--bg3); color:var(--white); }
    .pfc-food-chip.selected { background:var(--lime); color:#000; font-weight:700; }
    .pfc-selected-food { font-family:'Noto Sans JP',sans-serif; font-size:13px; color:var(--white);
      padding:9px 12px; border:1px solid var(--gray2); border-radius:6px; min-height:38px; display:flex; align-items:center; background:var(--bg); }
    body.theme-feminine .pfc-food-chip.selected { color:#fffaf3; }
    body.theme-feminine .pfc-cat-arrow { color:#5c1a2b; }
    .pfc-dr-add-btn { background:var(--lime); border:none; color:#000; font-family:'Bebas Neue',sans-serif; font-size:15px; letter-spacing:0.1em; padding:10px 14px; cursor:pointer; white-space:nowrap; transition:opacity 0.2s; }
    .pfc-dr-add-btn:hover { opacity:0.85; }
    .pfc-dr-total { display:flex; gap:16px; flex-wrap:wrap; padding:10px 0; border-top:1px solid #222; border-bottom:1px solid #222; margin-bottom:14px; font-size:11px; color:var(--txt-mute); }
    .pfc-dr-total b { color:var(--lime); font-weight:normal; }
    .pfc-dr-actions { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:16px; }
    .pfc-dr-rec-row { display:flex; gap:8px; align-items:center; flex-wrap:wrap; padding-top:12px; border-top:1px solid #1a1a1a; margin-bottom:12px; }
    .pfc-dr-date-row { display:flex; flex-direction:column; gap:4px; margin-bottom:12px; max-width:200px; }
    .pfc-dr-recipe-wrap { margin-bottom:12px; }
    .pfc-dr-recipe-list { display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
    .pfc-recipe-chip { display:flex; align-items:center; gap:4px; background:#181818; border:1px solid #2a2a2a; padding:5px 10px; font-family:'DM Mono',monospace; font-size:10px; cursor:pointer; transition:all 0.2s; color:var(--txt-mute); }
    .pfc-recipe-chip:hover { border-color:var(--lime); color:var(--lime); }
    .pfc-recipe-del { background:none; border:none; color:#555; font-size:11px; cursor:pointer; padding:0 0 0 4px; line-height:1; }
    .pfc-recipe-del:hover { color:var(--orange); }
    /* ELEGANTテーマ: チップ背景が黒のままだとダークブラウン文字が読めないため上書き */
    body.theme-feminine .pfc-recipe-chip { background:#fffaf3; border-color:#c0b4a2; color:#7a5230; }
    body.theme-feminine .pfc-recipe-chip:hover { border-color:var(--lime); color:var(--lime); }
    body.theme-feminine .pfc-recipe-del { color:#b0a290; }
    body.theme-feminine .pfc-recipe-del:hover { color:var(--orange); }
    .pfc-dr-cf-toggle { font-size:9px; letter-spacing:0.25em; color:#555; text-transform:uppercase; cursor:pointer; display:flex; align-items:center; gap:6px; padding-top:12px; border-top:1px solid #1a1a1a; }
    .pfc-dr-cf-toggle:hover { color:var(--txt-mute); }
    .pfc-dr-cf-form { display:none; grid-gap:8px; padding:12px 0 4px; }
    .pfc-dr-cf-form.open { display:grid; }
    .pfc-dr-cf-grid { display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:8px; margin-bottom:8px; }
    @media(max-width:600px){ .pfc-dr-cf-grid{ grid-template-columns:1fr 1fr; } }
    .pfc-dr-cf-hint { font-size:8px; color:#555; margin-top:2px; }

    /* ── AUTH OVERLAY ───────────────────────── */
    #authOverlay {
      position: fixed; inset: 0; background: var(--bg);
      z-index: 2000; display: flex; align-items: center; justify-content: center;
      padding: 20px;
    }
    #authOverlay.hidden { display: none; }
    .auth-box {
      width: 100%; max-width: 400px;
      background: var(--bg2); border: 1px solid #222; padding: 40px 32px;
    }
    .auth-logo {
      font-family: 'Bebas Neue', sans-serif; font-size: 32px;
      color: var(--lime); letter-spacing: 0.05em; margin-bottom: 4px;
    }
    .auth-sub {
      font-family: 'DM Mono', monospace; font-size: 10px;
      color: var(--txt-mute); letter-spacing: 0.3em; margin-bottom: 32px;
    }
    .auth-tabs {
      display: flex; gap: 0; margin-bottom: 28px;
      border-bottom: 1px solid #222;
    }
    .auth-tab {
      font-family: 'DM Mono', monospace; font-size: 11px;
      letter-spacing: 0.15em; color: var(--txt-mute); background: none;
      border: none; padding: 8px 20px 10px; cursor: pointer;
      border-bottom: 2px solid transparent; margin-bottom: -1px;
      transition: all 0.2s;
    }
    .auth-tab.active { color: var(--lime); border-bottom-color: var(--lime); }
    .auth-input {
      width: 100%; background: #0d0d0d; border: 1px solid #2a2a2a;
      color: var(--white); padding: 12px 14px; font-size: 14px;
      font-family: 'Noto Sans JP', sans-serif; margin-bottom: 12px;
      outline: none; transition: border 0.2s;
    }
    .auth-input:focus { border-color: var(--txt-mute); }
    .auth-btn {
      width: 100%; background: var(--lime); color: #000;
      border: none; padding: 14px; font-size: 13px; font-weight: 700;
      letter-spacing: 0.1em; cursor: pointer; margin-top: 8px;
      transition: opacity 0.2s;
    }
    .auth-btn:hover { opacity: 0.85; }
    .auth-btn:disabled { opacity: 0.4; cursor: not-allowed; }
    .auth-msg { font-size: 12px; margin-top: 14px; min-height: 18px; }
    .auth-msg.error { color: #ff6b6b; }
    .auth-msg.success { color: var(--lime); }
    .logout-btn {
      font-family: 'DM Mono', monospace; font-size: 10px;
      letter-spacing: 0.15em; color: var(--txt-mute); background: none;
      border: 1px solid var(--gray2); padding: 0 14px; cursor: pointer;
      transition: all 0.2s; display:inline-flex; align-items:center; white-space:nowrap;
    }
    .logout-btn:hover { border-color: #ff6b6b; color: #ff6b6b; }

    /* ── UPGRADE BUTTON ─────────────────────── */
    .upgrade-btn {
      background: none; border: 1px solid #7c3aed;
      color: #a78bfa; font-family: 'DM Mono', monospace;
      font-size: 10px; letter-spacing: 0.2em;
      padding: 0 16px; cursor: pointer; transition: all 0.2s;
      white-space: nowrap; display:inline-flex; align-items:center;
    }
    .upgrade-btn:hover { border-color: #a78bfa; background: #a78bfa11; }
    .upgrade-btn.pro { border-color: var(--lime); color: var(--lime); }

    /* ── UPGRADE MODAL ──────────────────────── */
    #upgradeModal {
      position: fixed; inset: 0; background: rgba(0,0,0,0.88);
      z-index: 2000; display: flex; align-items: center; justify-content: center;
      padding: 20px;
    }
    #upgradeModal.hidden { display: none; }
    .upgrade-context { color: var(--lime); font-size: 12px; text-align: center; margin: 6px 0 0; }
    .upgrade-context:empty { display: none; }
    .pro-lock-badge { display: none; align-items: center; gap: 2px; font-size: 9px; letter-spacing: .08em; color: var(--lime-dim); vertical-align: middle; }
    body:not(.tier-pro) .pro-lock-badge { display: inline-flex; }
    .invite-entry { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line, #333); display: flex; flex-direction: column; gap: 6px; text-align: left; }
    .upgrade-redeem-btn { align-self: flex-start; background: transparent; color: var(--lime); border: 1px solid var(--lime-dim); border-radius: 8px; padding: 8px 16px; font-size: 12px; cursor: pointer; }
    .upgrade-redeem-btn:hover { background: rgba(184,255,0,0.08); }
    .upgrade-box {
      background: var(--bg2); border: 1px solid #2a2a2a;
      max-width: 540px; width: 100%; padding: 40px 36px;
      /* 低い画面でモーダルが縦にはみ出し[閉じる]に届かない問題の修正: box内をスクロール可能に */
      max-height: calc(100vh - 40px); overflow-y: auto;
    }
    .upgrade-logo {
      font-family: 'Bebas Neue', sans-serif; font-size: 38px;
      letter-spacing: 0.04em; margin-bottom: 4px;
    }
    .upgrade-logo span { color: #a78bfa; }
    .upgrade-sub-label {
      font-family: 'DM Mono', monospace; font-size: 9px;
      letter-spacing: 0.35em; color: var(--txt-mute); margin-bottom: 28px;
    }
    .upgrade-trial-banner {
      background: #0f0a1a; border: 1px solid #7c3aed44;
      padding: 12px 16px; margin-bottom: 10px;
      font-family: 'DM Mono', monospace; font-size: 10px;
      letter-spacing: 0.15em; color: #a78bfa;
    }
    .upgrade-beta-mail-note {
      font-size: 11px; line-height: 1.7; color: var(--txt-mute);
      text-align: center; margin-bottom: 24px;
    }
    .upgrade-plans { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 24px; }
    .upgrade-plans-single { display: grid; grid-template-columns: 1fr; gap: 12px; margin-bottom: 12px; }
    .upgrade-plan-basic .upgrade-plan-note { margin-top: 8px; }
    .upgrade-plan-divider { display: flex; align-items: center; text-align: center; margin: 4px 0 16px; gap: 12px; }
    .upgrade-plan-divider::before, .upgrade-plan-divider::after { content: ''; flex: 1; height: 1px; background: var(--gray2); }
    .upgrade-plan-divider span { font-family: 'DM Mono', monospace; font-size: 8px; letter-spacing: 0.3em; color: var(--txt-mute); }
    .upgrade-plan {
      border: 1px solid var(--gray2); padding: 22px 18px;
      cursor: pointer; transition: all 0.2s; position: relative;
    }
    .upgrade-plan:hover { border-color: #a78bfa44; }
    .upgrade-plan.selected { border-color: #a78bfa; background: #a78bfa0a; }
    .upgrade-plan.recommended { border-color: var(--txt-mute); }
    .upgrade-plan.recommended.selected { border-color: var(--lime); background: rgba(184,255,0,0.04); }
    .upgrade-plan-badge {
      position: absolute; top: -10px; right: 10px;
      background: var(--lime); color: #000; font-family: 'DM Mono', monospace;
      font-size: 8px; letter-spacing: 0.2em; padding: 2px 8px;
    }
    .upgrade-plan-name {
      font-family: 'DM Mono', monospace; font-size: 9px;
      letter-spacing: 0.3em; color: var(--txt-mute); margin-bottom: 10px;
    }
    .upgrade-plan-price {
      font-family: 'Bebas Neue', sans-serif; font-size: 34px;
      letter-spacing: 0.02em; color: var(--white); line-height: 1;
    }
    .upgrade-plan-price sub { font-size: 14px; color: var(--txt-mute); font-family: 'DM Mono', monospace; }
    .upgrade-plan-note {
      font-family: 'DM Mono', monospace; font-size: 9px;
      color: var(--txt-mute); margin-top: 8px; line-height: 1.6;
    }
    .upgrade-cta {
      width: 100%; background: #7c3aed; color: #fff;
      font-family: 'DM Mono', monospace; font-size: 10px;
      letter-spacing: 0.3em; padding: 15px; border: none; cursor: pointer;
      transition: background 0.15s; margin-bottom: 12px;
    }
    .upgrade-cta:hover { background: #9333ea; }
    .upgrade-close-btn {
      display: block; width: 100%; text-align: center;
      font-family: 'DM Mono', monospace; font-size: 9px;
      letter-spacing: 0.2em; color: var(--txt-mute); cursor: pointer;
      background: none; border: none; transition: color 0.2s; padding: 6px;
    }
    .upgrade-close-btn:hover { color: var(--txt-mute); }
    .upgrade-legal {
      font-family: 'DM Mono', monospace; font-size: 10px;
      line-height: 1.8; color: var(--txt-mute); text-align: center; margin-bottom: 10px;
    }
    .upgrade-legal a { color: var(--txt-mute); text-decoration: underline; }

    /* ── アカウント削除（退会）UI ── */
    .danger-btn { background: transparent; border: 1px solid #4a1f1f; color: #c9966b; font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.15em; padding: 8px 14px; cursor: pointer; transition: all 0.2s; width: 100%; text-align: left; }
    .danger-btn:hover { border-color: #ff6b6b; color: #ff6b6b; }
    #deleteAccountModal { position: fixed; inset: 0; background: rgba(0,0,0,0.9); z-index: 2100; display: flex; align-items: center; justify-content: center; padding: 20px; }
    #deleteAccountModal.hidden { display: none; }
    .da-box { background: var(--bg2); border: 1px solid #4a1f1f; max-width: 480px; width: 100%; padding: 36px 32px; max-height: calc(100vh - 40px); overflow-y: auto; }
    .da-title { font-family: 'DM Mono', monospace; font-size: 11px; letter-spacing: 0.3em; color: #ff6b6b; margin-bottom: 14px; text-transform: uppercase; }
    .da-warn { font-family: 'Noto Sans JP', sans-serif; font-size: 12px; line-height: 1.8; color: var(--txt-sub); margin-bottom: 8px; }
    .da-warn strong { color: #ff8a8a; }
    .da-sub { font-family: 'Noto Sans JP', sans-serif; font-size: 11px; line-height: 1.7; color: var(--txt-mute); margin-bottom: 20px; }
    .da-reason-label { font-family: 'DM Mono', monospace; font-size: 8px; letter-spacing: 0.2em; color: var(--txt-mute); text-transform: uppercase; margin-bottom: 8px; }
    .da-reasons { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; }
    .da-reason { display: flex; align-items: center; gap: 10px; border: 1px solid var(--gray2); padding: 11px 14px; cursor: pointer; transition: all 0.15s; font-family: 'Noto Sans JP', sans-serif; font-size: 12px; color: var(--txt-sub); }
    .da-reason:hover { border-color: var(--txt-mute); }
    .da-reason.selected { border-color: #ff6b6b; background: rgba(255,107,107,0.06); color: var(--white); }
    .da-reason-radio { width: 12px; height: 12px; border-radius: 50%; border: 1px solid var(--txt-mute); flex-shrink: 0; }
    .da-reason.selected .da-reason-radio { border-color: #ff6b6b; background: #ff6b6b; box-shadow: inset 0 0 0 2px var(--bg2); }
    .da-textarea { width: 100%; background: #0a0a0a; border: 1px solid #333; color: #e0e0e0; font-family: 'Noto Sans JP', sans-serif; font-size: 12px; padding: 10px; border-radius: 3px; resize: vertical; min-height: 60px; margin-bottom: 12px; box-sizing: border-box; }
    .da-msg { font-family: 'DM Mono', monospace; font-size: 11px; text-align: center; margin-bottom: 10px; min-height: 16px; line-height: 1.5; }
    .da-msg:empty { display: none; }
    .da-confirm { width: 100%; background: #7a1f1f; color: #fff; font-family: 'DM Mono', monospace; font-size: 10px; letter-spacing: 0.25em; padding: 15px; border: none; cursor: pointer; transition: background 0.15s; margin-bottom: 10px; }
    .da-confirm:hover { background: #9b2626; }
    .da-confirm:disabled { background: #2a2a2a; color: var(--txt-mute); cursor: not-allowed; }
    .da-cancel { display: block; width: 100%; text-align: center; font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.2em; color: var(--txt-mute); cursor: pointer; background: none; border: none; padding: 6px; }
    .da-cancel:hover { color: var(--txt-sub); }
    .upgrade-legal a:hover { color: #a78bfa; }

    /* ── TRAINING TIMER ── */
    #timerFab {
      position: fixed; bottom: 128px; right: 24px; z-index: 800;
      background: var(--bg2); border: 1px solid var(--gray2);
      color: var(--txt-mute); font-family:'Bebas Neue',sans-serif;
      font-size:15px; letter-spacing:0.2em;
      width: 94px; box-sizing: border-box; white-space: nowrap;
      padding: 11px 14px; cursor: pointer; transition: all 0.2s;
      display: flex; align-items: center; justify-content: center; gap: 8px;
    }
    #timerFab:hover { border-color:#ffaa00; color:#ffaa00; }
    #timerFab.timer-active {
      border-color: #c8ff00; color: #c8ff00;
      animation: timerPulse 1s ease-in-out infinite;
    }
    @keyframes timerPulse {
      0%,100% { opacity:1; } 50% { opacity:0.5; }
    }
    #timerOverlay {
      position: fixed; inset:0; background: rgba(0,0,0,0.5);
      z-index: 810; opacity:0; pointer-events:none;
      transition: opacity 0.3s;
    }
    #timerOverlay.open { opacity:1; pointer-events:auto; }
    #timerDrawer {
      position: fixed; bottom:0; left:0; right:0;
      background: #0e0e0e; z-index: 820;
      border-top: 2px solid #c8ff00;
      border-radius: 14px 14px 0 0;
      padding: 20px 22px 32px;
      font-family: 'DM Mono', monospace;
      transform: translateY(100%);
      transition: transform 0.3s cubic-bezier(0.4,0,0.2,1);
      max-height: 85vh; overflow-y: auto;
    }
    #timerDrawer.open { transform: translateY(0); }
    #timerDrawer.phase-prep { border-top-color: #ffaa00; }
    #timerDrawer.phase-rest { border-top-color: var(--txt-mute); }
    .timer-header {
      display: flex; justify-content: space-between; align-items: center;
      margin-bottom: 16px;
    }
    .timer-phase-label {
      font-size: 10px; letter-spacing: 0.15em; color: #c8ff00;
    }
    #timerDrawer.phase-prep .timer-phase-label { color: #ffaa00; }
    #timerDrawer.phase-rest .timer-phase-label { color: var(--txt-mute); }
    .timer-close-btn {
      background: none; border: none; color: var(--txt-mute); font-size: 18px;
      cursor: pointer; padding: 0 4px; line-height:1;
    }
    .timer-progress-bar {
      background: #1a1a1a; border-radius: 2px; height: 3px;
      margin-bottom: 14px; overflow: hidden;
    }
    .timer-progress-fill {
      height: 3px; border-radius: 2px; background: #c8ff00;
      transition: width 0.9s linear;
    }
    #timerDrawer.phase-prep .timer-progress-fill { background: #ffaa00; }
    #timerDrawer.phase-rest .timer-progress-fill { background: #888; }
    .timer-countdown {
      font-size: 56px; font-weight: bold; color: #c8ff00;
      letter-spacing: 0.04em; line-height: 1; margin-bottom: 4px;
    }
    #timerDrawer.phase-prep .timer-countdown { color: #ffaa00; }
    #timerDrawer.phase-rest .timer-countdown { color: var(--txt-mute); }
    .timer-sublabel {
      font-size: 9px; color: var(--txt-mute); letter-spacing: 0.1em; margin-bottom: 14px;
    }
    .timer-set-row {
      display: flex; justify-content: space-between; align-items: flex-end;
      margin-bottom: 14px;
    }
    .timer-set-dots { display: flex; gap: 4px; flex-wrap: wrap; max-width: 120px; }
    .timer-dot {
      width: 7px; height: 7px; border-radius: 50%; background: #2a2a2a;
    }
    .timer-dot.done { background: #c8ff00; }
    .timer-dot.current { background: #c8ff00; opacity: 0.5; }
    .timer-controls { display: flex; gap: 8px; }
    .timer-btn-primary {
      flex: 1; background: #c8ff00; color: #000;
      border: none; border-radius: 5px; padding: 11px;
      font-family: 'DM Mono',monospace; font-size: 11px;
      font-weight: bold; letter-spacing: 0.05em; cursor: pointer;
    }
    .timer-btn-primary:disabled { background: #2a2a2a; color: var(--txt-mute); cursor: default; }
    .timer-btn-secondary {
      background: #1a1a1a; border: 1px solid #2a2a2a; color: var(--txt-mute);
      border-radius: 5px; padding: 11px 14px;
      font-family: 'DM Mono',monospace; font-size: 11px; cursor: pointer;
    }
    .timer-btn-secondary:hover { border-color: var(--txt-mute); color: var(--txt-mute); }
    /* Setup screen */
    .timer-setup-label {
      font-size: 9px; color: var(--txt-mute); letter-spacing: 0.1em; margin-bottom: 6px;
    }
    .timer-preset-row {
      display: flex; gap: 5px; flex-wrap: wrap; margin-bottom: 14px;
    }
    .timer-preset-chip {
      display: flex; align-items: center; gap: 4px;
      background: #1a1a1a; border: 1px solid #2a2a2a; color: var(--txt-mute);
      font-size: 9px; padding: 4px 8px; border-radius: 3px; cursor: pointer;
      font-family: 'DM Mono',monospace;
    }
    .timer-preset-chip.active { background: #141a00; border-color: #c8ff00; color: #c8ff00; }
    .timer-preset-chip .chip-del {
      color: var(--txt-mute); font-size: 10px; cursor: pointer; padding: 0 0 0 2px;
    }
    .timer-preset-chip .chip-del:hover { color: #ff6b35; }
    .timer-preset-add {
      background: #1a1a1a; border: 1px dashed #2a2a2a; color: var(--txt-mute);
      font-size: 9px; padding: 4px 8px; border-radius: 3px; cursor: pointer;
      font-family: 'DM Mono',monospace;
    }
    .timer-inputs-grid {
      display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px;
      margin-bottom: 14px;
    }
    .timer-input-lbl { font-size: 8px; color: var(--txt-mute); margin-bottom: 4px; display: block; }
    .timer-input {
      width: 100%; box-sizing: border-box;
      background: #1a1a1a; border: 1px solid #2a2a2a; color: #fff;
      font-family: 'DM Mono',monospace; font-size: 16px; font-weight: bold;
      padding: 8px; border-radius: 4px; text-align: center;
    }
    .timer-input:focus { outline: none; border-color: #c8ff00; color: #c8ff00; }
    .timer-prep-row {
      display: flex; align-items: center; justify-content: space-between;
      background: #1a1a1a; border: 1px solid #2a2a2a; border-radius: 5px;
      padding: 8px 12px; margin-bottom: 14px;
    }
    .timer-prep-info { font-size: 9px; color: var(--txt-mute); }
    .timer-prep-info small { display: block; font-size: 8px; color: var(--txt-mute); margin-top: 1px; }
    .timer-prep-controls { display: flex; align-items: center; gap: 8px; }
    .timer-stepper { display: flex; align-items: center; gap: 6px; }
    .timer-stepper-btn {
      background: none; border: none; color: var(--txt-mute); font-size: 16px;
      cursor: pointer; padding: 0; line-height:1;
      min-width: 44px; min-height: 44px;
      display: inline-flex; align-items: center; justify-content: center;
    }
    .timer-stepper-btn:hover { color: #c8ff00; }
    .timer-stepper-val { color: #c8ff00; font-size: 14px; font-weight: bold; min-width: 22px; text-align: center; }
    .timer-toggle {
      width: 32px; height: 16px; border-radius: 10px; background: #2a2a2a;
      position: relative; cursor: pointer; transition: background 0.2s; flex-shrink:0;
    }
    .timer-toggle.on { background: #c8ff00; }
    .timer-toggle::after {
      content:''; position:absolute; top:2px; left:2px;
      width:12px; height:12px; border-radius:50%; background:#555;
      transition: left 0.2s, background 0.2s;
    }
    .timer-toggle.on::after { left:18px; background:#000; }
    .timer-start-row { display: flex; gap: 8px; }
    .timer-set-btn { flex: none; padding: 10px 14px; font-size: 11px; letter-spacing: 0.1em; }
    .timer-sound-btn {
      background: #1a1a1a; border: 1px solid #2a2a2a; color: var(--txt-mute);
      border-radius: 5px; padding: 11px 13px; font-size: 14px; cursor: pointer;
    }
    .timer-sound-btn.on { border-color: #c8ff00; color: #c8ff00; }
    /* Done screen */
    .timer-done-screen { text-align: center; padding: 24px 0; }
    .timer-done-icon { font-size: 36px; margin-bottom: 10px; }
    .timer-done-title {
      color: var(--lime); font-size: 15px; font-weight: bold;
      letter-spacing: 0.15em; margin-bottom: 4px;
    }
    .timer-done-sub { color: var(--txt-mute); font-size: 10px; letter-spacing: 0.1em; }
    /* Prep next-up */
    .timer-nextup { font-size: 9px; color: var(--txt-mute); line-height: 1.8; }
    .timer-nextup strong { color: var(--txt-mute); }

    /* ============ シェアカード ============ */
    .share-modal { position:fixed; inset:0; background:rgba(0,0,0,0.75); z-index:9999; display:flex; align-items:center; justify-content:center; padding:20px; }
    .share-modal-inner { background:var(--bg2); border:1px solid var(--gray2); border-radius:14px; padding:20px; max-width:440px; width:100%; max-height:92vh; overflow-y:auto; position:relative; }
    .share-close { position:absolute; top:10px; right:14px; background:none; border:none; color:var(--txt-mute); font-size:24px; cursor:pointer; }
    .share-tabs { display:flex; gap:6px; margin-bottom:14px; flex-wrap:wrap; }
    .share-tab { flex:1; background:var(--bg); border:1px solid var(--gray2); color:var(--txt-mute); font-size:12px; padding:8px 4px; cursor:pointer; border-radius:6px; }
    .share-tab.active { border-color:var(--lime); color:var(--lime); }
    .share-preview { width:100%; aspect-ratio:4/5; background:var(--bg); border-radius:10px; overflow:hidden; display:flex; align-items:center; justify-content:center; }
    .share-preview svg { width:100%; height:100%; }
    .share-hide { display:flex; align-items:center; gap:6px; font-size:12px; color:var(--txt-mute); margin:12px 0; cursor:pointer; }
    .share-actions { display:flex; gap:10px; }
    .share-btn-dl, .share-btn-share { flex:1; padding:12px; border-radius:8px; font-size:14px; font-weight:700; cursor:pointer; border:1px solid var(--lime); }
    .share-btn-dl { background:transparent; color:var(--lime); }
    .share-btn-share { background:var(--lime); color:var(--bg); border:none; }
    .share-trigger { background:transparent; border:1px solid var(--lime); color:var(--lime); font-size:11px; letter-spacing:.05em; padding:0 12px; min-height:36px; border-radius:6px; display:inline-flex; align-items:center; cursor:pointer; white-space:nowrap; transition:all .2s; }
    .share-trigger:hover { background:var(--lime); color:var(--bg); }

    .bf-estimate-btn { background:transparent; border:1px solid var(--gray2); color:var(--txt-mute); font-family:'DM Mono',monospace; font-size:10px; letter-spacing:0.05em; padding:5px 10px; margin-top:6px; cursor:pointer; border-radius:4px; }
    .bf-estimate-btn:hover { border-color:var(--lime); color:var(--lime); }
    .setup-optional summary::-webkit-details-marker { display:none; }

    .act-prompt { position:fixed; inset:0; background:rgba(0,0,0,0.75); z-index:10000; display:flex; align-items:center; justify-content:center; padding:20px; }
    .act-prompt-inner { background:var(--bg2); border:1px solid var(--lime); border-radius:14px; padding:24px 22px; max-width:380px; width:100%; text-align:center; }
    .act-prompt-title { font-family:'Noto Sans JP',sans-serif; font-weight:700; font-size:18px; color:var(--white); margin-bottom:10px; }
    .act-prompt-sub { font-size:12px; color:var(--txt-mute); line-height:1.7; margin-bottom:16px; }
    .act-prompt-vals { font-family:'DM Mono',monospace; font-size:13px; color:var(--lime); background:var(--bg); border:1px solid var(--gray2); border-radius:8px; padding:12px; margin-bottom:16px; }
    .act-prompt-actions { display:flex; flex-direction:column; gap:10px; }
    .act-prompt-save { background:var(--lime); color:var(--bg); border:none; border-radius:8px; padding:13px; font-weight:700; font-size:14px; cursor:pointer; }
    .act-prompt-later { background:transparent; color:var(--txt-mute); border:none; font-size:12px; cursor:pointer; }

    /* ── INSTALL HINT（PWA案内バナー） ─────────── */
    .install-hint { position:relative; background:var(--bg2); border:1px solid var(--lime); border-radius:8px; margin:10px 16px 0; padding:12px 36px 12px 14px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-family:'Noto Sans JP',sans-serif; font-size:12px; color:var(--white); }
    .install-hint-close { position:absolute; top:6px; right:10px; background:none; border:none; color:var(--txt-mute); font-size:18px; cursor:pointer; line-height:1; }
    .install-hint-icon { font-size:18px; }
    .install-hint-text { flex:1; min-width:160px; }
    .install-hint-add { background:var(--lime); color:var(--bg); border:none; border-radius:6px; font-weight:700; font-size:12px; padding:7px 14px; cursor:pointer; }
    .install-hint-ios { font-family:'DM Mono',monospace; font-size:11px; color:var(--lime); }

    /* ── 曜日カード長押しD&D（week-dnd.js） ─────────── */
    body.dnd-active { overflow: hidden; }
    .day-card.dnd-grabbing { opacity: 0.35; }
    .day-card.dnd-over { outline: 2px dashed var(--lime); outline-offset: -2px; }
    .dnd-ghost { box-shadow: 0 12px 32px rgba(0,0,0,0.45); border-radius: inherit; }
    .day-card { -webkit-user-select: none; user-select: none; }
    .dnd-handle {
      display: flex; align-items: center; justify-content: center;
      height: 22px; margin: -2px 0 6px; border-radius: 6px;
      color: var(--txt-mute); cursor: grab;
      touch-action: none; -webkit-user-select: none; user-select: none;
      background: rgba(255,255,255,0.04);
    }
    .dnd-handle:hover { color: var(--lime-dim); background: rgba(184,255,0,0.06); }
    .dnd-handle .lb-ic { width: 20px; height: 14px; }
    .day-card.dnd-grabbing .dnd-handle { cursor: grabbing; }
    body.theme-feminine .dnd-handle { background: rgba(0,0,0,0.04); color: #8a7a66; }
    body.theme-feminine .dnd-handle:hover { color: #6b4e2e; background: rgba(0,0,0,0.06); }

  