/* 出国手続き逆算プランナー（T1）のスタイル。tool-template.php が .t1app 配下で読み込む。
   もと: departure-planner.html の <style>。全ルールを .t1app にスコープ（T1-02）。 */
.t1app{--ink:#1a1d21; --ink2:#4a5057; --ink3:#767d85;
    --line:#e2e5e9; --line2:#eef0f3; --bg:#fbfbfc; --card:#fff;
    --accent:#0f6fc5; --accent-hover:#0d5ea7; --accent-soft:#e6f1fb; --accent-line:#c3dbf0;
    --crit:#b3261e; --crit-soft:#fdeeed;
    --warn:#8a5a00; --warn-soft:#fdf4e3;
    --ok:#2e9e5b; --ok-soft:#e6f3eb; --ok-line:#cbe7d6; --ok-text:#1b7a43;}
  
  .t1app *{box-sizing:border-box}
  
  /* このテンプレは .l-article を経由しないので、.t1app 自身を記事幅（他ページと同じ 1000px 実寸）に。
     メモ2026/09/03：横幅統一。--article_size は style.css の :root で定義。 */
  .t1app{margin:0 auto;max-width:var(--article_size,1000px);
    font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Noto Sans JP",sans-serif;
    background:var(--bg);color:var(--ink);line-height:1.7;-webkit-text-size-adjust:100%}

  .t1app .wrap{max-width:none;margin:0;padding:24px 0 80px}  /* 実寸は .t1app 側で管理。ここは padding のみ */
  
  /* G1r-2: ヘッダー下の水平線は不要。
     j1: M2-3の margin-top:-40px がSPでパンくずリストにH1を食い込ませていたので撤回。
     j7: 証券会社ページ（.l-mainContent__inner padding-top:20px）に見た目を揃えつつ、
     全体をさらに約20px詰める（padding-top:0＋margin-top:-12px）。 */
  .t1app header{border-bottom:0;padding-bottom:4px;margin-bottom:16px}
  .t1app .wrap{padding-top:0;margin-top:-12px}

  /* j1→j5：h1は全ページ22pxに統一（--text-h1 を22pxに変更済み）。
     .t1head と .t1app h1 の両方を同じ値にしてセレクタ勝敗によらず一致させる。 */
  .t1app h1{font-size:var(--text-h1);margin:0 0 6px;letter-spacing:-.01em}

  .t1app .sub{color:var(--ink3);font-size:var(--text-small);margin:0}

  /* G1r-1 / G1r-6: トップ・証券会社ページと同じライン見出し（タスクチェックアイコン＋飛行機雲下線）。
     style.css の h2.cc-h2 は h2 セレクタ限定で h1／h2(#out内) に効かないため、T1 用に再定義。
     j1：下線を約5px上げ（13→8）、アイコン左paddingを0に、gap詰め（11→9）。j5：font-sizeを--text-h1(22px)に。 */
  .t1app .t1head{display:flex;width:-moz-fit-content;width:fit-content;max-width:100%;align-items:flex-start;
    gap:9px;position:relative;padding:0 0 8px;margin:0;font-size:var(--text-h1);font-weight:700;line-height:1.35;
    letter-spacing:-.01em;color:var(--ink);background:none;border:0}
  .t1app .t1head::before{content:"";flex:0 0 auto;width:26px;height:26px;margin:2px 0 0;background:var(--accent);
    -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M8 4H6a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-2'/><rect x='8' y='2' width='8' height='4' rx='1'/><path d='M8.5 13.5l2.5 2.5 5-5'/></svg>") no-repeat center/contain;
            mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M8 4H6a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-2'/><rect x='8' y='2' width='8' height='4' rx='1'/><path d='M8.5 13.5l2.5 2.5 5-5'/></svg>") no-repeat center/contain}
  /* 下線はトップページ（.cc-top section h2::after）と同一：飛行機雲グラデーション。
     アイコンサイズ（26px）だけ T1 用に据え置き。i1：right:-20%→-5%（サイト全体で統一）。 */
  .t1app .t1head::after{content:"";position:absolute;left:0;right:-5%;bottom:0;top:auto;width:auto;height:7px;transform:none;border:0;
    background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 7' preserveAspectRatio='none'><defs><linearGradient id='cc-contrail-t1' x1='0' y1='0' x2='1' y2='0'><stop offset='0' stop-color='%230f6fc5' stop-opacity='.12'/><stop offset='.18' stop-color='%230f6fc5' stop-opacity='.95'/><stop offset='.8' stop-color='%230f6fc5' stop-opacity='.9'/><stop offset='1' stop-color='%230f6fc5' stop-opacity='.08'/></linearGradient></defs><path d='M2 5C70 5 92 2.4 150 3.2S244 5.4 298 2.6' fill='none' stroke='url(%23cc-contrail-t1)' stroke-width='2.4' stroke-linecap='round'/></svg>") no-repeat center bottom;background-size:100% 7px}
  .t1app header .t1head{margin-bottom:6px}
  /* G1r-6: 結果冒頭の「タスクボード」見出し。ページ h1 とは適切な縦余白で分ける。
     j10：前後の余白を、トップ／証券会社ページの h2.cc-h2 と同じルール
     （上=var(--space-7)=48px／下=var(--space-4)=16px）に統一する。 */
  .t1app #out > .t1head{margin:var(--space-7) 0 var(--space-4)}
  
  .t1app .proto{display:inline-block;background:var(--warn-soft);color:var(--warn);font-size:11px;
    padding:3px 8px;border-radius:4px;margin-bottom:10px;font-weight:600}
  
  .t1app .card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:20px;margin-bottom:18px}
  
  .t1app .card h2{font-size:15px;margin:0 0 14px;letter-spacing:-.01em}
  
  .t1app label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--ink2)}
  
  /* j8：GEN-04（MIUIで「年/月/日」が消える）を理由に appearance:none を外していたが、
     その状態だと Redmi Note 13/Chrome で「>」マークが残る（トップページのT1カードは
     appearance:none を付けていて消えている）。sts の要望でトップと同じく appearance:none に統一する。
     ※MIUI で空欄時のプレースホルダが再び消える可能性あり（GEN-04）。要実機再確認。 */
  .t1app input[type=date]{position:relative;font:inherit;font-size:16px;padding:10px 36px 10px 12px;
    -webkit-appearance:none;appearance:none;
    border:1px solid var(--line);border-radius:7px;width:100%;max-width:240px;color:var(--ink);
    background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%230f6fc5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='4' width='18' height='18' rx='2'/><line x1='16' y1='2' x2='16' y2='6'/><line x1='8' y1='2' x2='8' y2='6'/><line x1='3' y1='10' x2='21' y2='10'/></svg>") no-repeat right 10px center;background-size:18px}

  /* G1r-3: Android Chrome（Xiaomi Redmi Note 13 等）で display:none が効かず
     「‹」を90°回した矢印マークが自前カレンダーアイコンと重なる件。
     透明化＋フィールド全面オーバーレイにして、見た目を消しつつタップ領域を広げる。 */
  .t1app input[type=date]::-webkit-calendar-picker-indicator{
    position:absolute;inset:0;width:auto;height:auto;margin:0;padding:0;
    opacity:0;background:transparent;color:transparent;cursor:pointer;
    -webkit-appearance:none;appearance:none}
  /* appearance:none を外したぶん、Chrome の消去ボタン／スピナーは個別に抑止する */
  .t1app input[type=date]::-webkit-clear-button,
  .t1app input[type=date]::-webkit-inner-spin-button{display:none;-webkit-appearance:none;appearance:none}
  
  .t1app input[type=date]::-webkit-datetime-edit{padding:0}
  
  .t1app input[type=date]::-webkit-datetime-edit-text{padding:0 1px}
  
  .t1app input[type=date]::-webkit-datetime-edit-year-field, .t1app input[type=date]::-webkit-datetime-edit-month-field, .t1app input[type=date]::-webkit-datetime-edit-day-field{padding:0 1px}
  
  .t1app .hint{font-size:12px;color:var(--ink3);margin-top:6px}
  
  .t1app fieldset{border:0;padding:0;margin:18px 0 0}
  
  .t1app legend{font-size:13px;font-weight:600;color:var(--ink2);padding:0;margin-bottom:8px}
  /* セクション2の見出しはセクション1（.card h2）と同じ体裁に揃える（メモ2026/09/02 T1-05）。
     3〜7は details.adv 内なので影響しない。 */
  
  .t1app #form > fieldset > legend{font-size:15px;font-weight:600;color:var(--ink);letter-spacing:-.01em;margin-bottom:12px}
  
  .t1app .chips{display:flex;flex-wrap:wrap;gap:7px}
  
  .t1app .chip{position:relative}
  
  .t1app .chip input{position:absolute;opacity:0;pointer-events:none}
  
  .t1app .chip span{display:inline-block;font-size:13px;padding:7px 13px;border:1px solid var(--line);
    border-radius:20px;cursor:pointer;background:#fff;user-select:none;transition:.12s}
  
  .t1app .chip input:checked + span{background:var(--accent);border-color:var(--accent);color:#fff}
  
  .t1app .chip input:focus-visible + span{outline:2px solid var(--accent);outline-offset:2px}
  
  .t1app button.go{font:inherit;font-size:15px;font-weight:600;background:var(--accent);color:#fff;border:0;
    padding:13px 26px;border-radius:8px;cursor:pointer;margin-top:22px;width:100%}

  .t1app button.go:hover{opacity:.92}

  /* f1②：必須の案内バッジ。赤系（--crit/--warn）は結果画面の警告に使うため、ここではアクセント青。 */
  .t1app .reqbadge{display:inline-block;font-size:12.5px;font-weight:700;background:var(--accent-soft);
    color:var(--accent-hover);padding:3px 9px;border-radius:5px;margin-left:8px;vertical-align:middle;letter-spacing:.02em}

  /* f1③：結果画面へ移した証明書の有効期限（#condadd の直後に置く折りたたみ）。 */
  .t1app details.certexp{background:#fff;border:1px solid var(--accent-line);border-radius:9px;margin:0 0 20px}
  .t1app details.certexp > summary{cursor:pointer;padding:12px 14px;font-size:13px;font-weight:700;
    color:var(--accent-hover);list-style:none;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
  .t1app details.certexp > summary::-webkit-details-marker{display:none}
  .t1app details.certexp > summary::before{content:"＋";font-weight:700}
  .t1app details.certexp[open] > summary::before{content:"−"}
  .t1app details.certexp > summary span.n{font-weight:400;color:var(--ink3);font-size:11.5px}
  .t1app details.certexp .certexp-body{padding:0 14px 14px}

  /* f2③④：結果画面の「条件を足して精度を上げる」折りたたみ（条件チップ＋証明書＋役割フィルタを内包） */
  .t1app details.condpanel{border:1px solid var(--accent-line);border-radius:10px;background:var(--accent-soft);margin:0 0 20px}
  .t1app details.condpanel > summary{cursor:pointer;padding:13px 16px;font-size:var(--text-small);font-weight:700;
    color:var(--accent-hover);list-style:none;display:flex;align-items:center;gap:8px}
  .t1app details.condpanel > summary::-webkit-details-marker{display:none}
  .t1app details.condpanel > summary::before{content:"＋";font-weight:700}
  .t1app details.condpanel[open] > summary::before{content:"−"}
  .t1app details.condpanel > summary span.n{font-weight:400;color:var(--ink3);font-size:var(--text-label)}
  .t1app details.condpanel .condpanel-body{padding:2px 16px 16px}
  /* 入れ子の箱（condadd／certexp）は枠と背景を消して余白だけにする */
  .t1app .condpanel .condadd{background:none;border:0;border-radius:0;padding:0;margin:0}
  .t1app .condpanel details.certexp{margin:14px 0 0}
  .t1app .condpanel .cp-filters{margin-top:16px}
  .t1app .condpanel .cp-flabel{font-size:12px;font-weight:700;color:var(--accent-hover);margin-bottom:6px}
  .t1app .condpanel .filters{margin:0}

  /* f2⑤：確度バッジ（常時表示）。出典リンクは「詳細を見る」の展開内へ移動。 */
  .t1app .confbadge{display:inline-block;font-size:var(--text-label);font-weight:600;background:var(--line2);color:var(--ink3);
    padding:2px 7px;border-radius:4px}
  .t1app .task .why-src{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;font-size:var(--text-label)}
  .t1app .task .why-src a{color:var(--accent);text-decoration:none}
  .t1app .task .why-src a:hover{text-decoration:underline}

  /* ============================================================
     f3：保存／共有 UI（〜1439px＝右下 FAB＋ボトムシート／≥1440px＝右ガターの追従カード）
     DOM は #saveshare 1本。旧 .export／.gate（独立カード）は撤去。
     ============================================================ */
  .t1app{--rail-w:200px; --rail-gap:16px; --fab-r:20px;
    --pagetop-size:52px; --fab-gap:7px; --pagetop-bottom:20px;   /* g1r5:16→12（4px下）／j1(memo2026/09/06):12→7（さらに5px下）。横中心は positionSaveFab() が #pagetop に合わせる */
    /* FAB は #pagetop の直上。JS(positionSaveFab) が #pagetop の実測値で上書きする。 */
    --fab-b:calc(var(--pagetop-bottom) + var(--pagetop-size) + var(--fab-gap))}

  /* 既定（SP〜中）＝ボトムシート */
  .t1app .saveshare{position:fixed;left:0;right:0;bottom:0;z-index:40;
    background:var(--card);border-top:1px solid var(--line);border-radius:14px 14px 0 0;
    box-shadow:0 -8px 24px -12px rgba(0,0,0,.28);
    max-height:82vh;overflow:auto;
    padding:16px 18px calc(20px + env(safe-area-inset-bottom,0px));
    transform:translateY(110%);transition:transform .22s ease;visibility:hidden}
  .t1app .saveshare.open{transform:none;visibility:visible}
  .t1app .saveshare-backdrop{position:fixed;inset:0;background:rgba(20,24,28,.4);z-index:39;
    opacity:0;pointer-events:none;transition:opacity .18s}
  .t1app .saveshare-backdrop.open{opacity:1;pointer-events:auto}

  /* g1: 保存FAB。#pagetop（52px）の直上に縦積み。サイズ48・影は c-fixBtn に寄せた軽いもの。 */
  .t1app .savefab{position:fixed;right:var(--fab-r);bottom:var(--fab-b);z-index:30;
    width:48px;height:48px;border-radius:50%;border:0;background:var(--accent);color:#fff;
    display:flex;align-items:center;justify-content:center;cursor:pointer;
    box-shadow:0 1px 4px rgba(0,0,0,.14)}
  .t1app .savefab:hover{background:var(--accent-hover)}
  /* g1③: 保存済み（PLAN_ID あり）＝主張を弱める。白地＋薄枠＋アクセント色アイコン＋チェックバッジ。 */
  .t1app .savefab.saved{background:#fff;border:1px solid var(--line);color:var(--accent)}
  .t1app .savefab.saved:hover{background:var(--bg)}
  .t1app .savefab .fab-check{position:absolute;top:-3px;right:-3px;width:16px;height:16px;border-radius:50%;
    background:var(--ok);color:#fff;font-size:10px;line-height:16px;text-align:center;font-weight:700;
    box-shadow:0 0 0 2px var(--card)}
  /* g1④: シート展開中のみ SWELL 標準トップボタン（#pagetop／ラッパ .p-fixBtnWrap）を一時非表示。
     #pagetop 自体の仕様（位置・サイズ・スクロール連動）には触れない。 */
  body.t1-sheet-open .p-fixBtnWrap,
  body.t1-sheet-open #pagetop{display:none!important}

  /* T1-17（LOG-20260920-t03）：ヘッダー保存アイコン。.t1app スコープ外（SWELL共通ヘッダー内）
     の要素なので .t1app プレフィックスは付けない。このCSS自体がT1ページ専用enqueueのため
     他ページには影響しない。表示範囲は savefab と同じ〜1439px。 */
  #gnav .t1-header-save,
  .l-fixHeader__gnav .t1-header-save{
    position:relative;display:inline-flex;align-items:center;gap:4px;flex-shrink:0;
    border:0;background:none;color:inherit;cursor:pointer;padding:6px;margin-right:4px}
  #gnav .t1-header-save__label,
  .l-fixHeader__gnav .t1-header-save__label{font-size:12px}
  #gnav .t1-header-save .t1-header-save__tip,
  .l-fixHeader__gnav .t1-header-save .t1-header-save__tip{
    position:absolute;top:100%;right:0;margin-top:8px;width:220px;
    background:var(--ink,#1a1d21);color:#fff;font-size:12px;line-height:1.6;
    padding:10px 12px;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.2);
    text-align:left;white-space:normal;z-index:50}
  @media(max-width:480px){
    #gnav .t1-header-save__label,
    .l-fixHeader__gnav .t1-header-save__label{display:none}
  }
  @media(min-width:1440px){
    #gnav .t1-header-save,
    .l-fixHeader__gnav .t1-header-save{display:none!important}
  }

  /* g2: 見出し1つ＋アイコン（FAB と同じブックマーク）＋1行説明 */
  .t1app .savebox .sb-head{display:flex;align-items:center;gap:7px}
  .t1app .savebox .sb-mark{flex:0 0 auto;display:inline-flex;color:var(--accent)}
  .t1app .savebox .sb-mark svg{width:18px;height:18px}
  .t1app .savebox h3{flex:1;margin:0;font-size:14px;letter-spacing:-.01em}
  .t1app .savebox .sb-close{flex:0 0 auto;background:none;border:0;font-size:22px;line-height:1;color:var(--ink3);cursor:pointer;padding:0 2px}
  .t1app .savebox .sb-lead{font-size:var(--text-label);color:var(--ink3);margin:5px 0 12px}

  /* 主ボタン（リンクをコピー／メール保存する）＝塗り。メモ2026/09/04-2：フォント12・高さ小さめ。 */
  .t1app .savebox .sb-primary{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;
    font:inherit;font-size:var(--text-label);font-weight:700;background:var(--accent);color:#fff;border:0;border-radius:8px;
    padding:8px 12px;cursor:pointer}
  .t1app .savebox .sb-primary:hover{background:var(--accent-hover)}

  /* g2②: 「または」区切り */
  .t1app .savebox .sb-or{display:flex;align-items:center;gap:8px;margin:10px 0;color:var(--ink3);font-size:var(--text-label)}
  .t1app .savebox .sb-or::before,.t1app .savebox .sb-or::after{content:"";flex:1;height:1px;background:var(--line)}

  /* g2②: メールで保存ブロック（.gate は追従カードのみ＝.savebox スコープ） */
  .t1app .savebox .sb-mail-h{font-size:var(--text-small);font-weight:700;color:var(--ink);margin:0 0 2px}
  .t1app .savebox .sb-mail-sub{font-size:var(--text-label);color:var(--ink3);margin:0 0 8px}
  .t1app .savebox .gate form{display:flex;flex-wrap:wrap;gap:8px}
  .t1app .savebox .gate input[type=email]{flex:1 1 150px;min-width:0;font:inherit;font-size:var(--text-label);padding:8px 10px;
    border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink)}
  .t1app .savebox .gate .btn{flex:0 0 auto;background:var(--accent);color:#fff;border:0;
    font:inherit;font-size:var(--text-label);font-weight:700;padding:8px 14px;border-radius:8px;cursor:pointer}
  .t1app .savebox .sb-mail-note{font-size:var(--text-label);color:var(--ink3);margin:6px 0 0}
  .t1app .savebox .gate .err{color:var(--crit);font-size:var(--text-label);margin-top:6px}

  /* g2⑤: 保存済み表示 */
  .t1app .savebox .sb-saved-h{font-size:13px;font-weight:700;color:var(--ink);margin:0}
  .t1app .savebox .sb-saved-sub{font-size:var(--text-label);color:var(--ink3);margin:2px 0 8px}
  .t1app .savebox .sb-saved-link .link{display:block;background:var(--accent-soft);border:1px solid var(--accent-line);
    color:var(--ink2);font-size:var(--text-label);padding:8px 10px;border-radius:6px;word-break:break-all;margin-bottom:8px}
  .t1app .savebox .demo{color:var(--warn);font-size:var(--text-label);margin:8px 0 0}

  /* g2④ ＋ メモ2026/09/04-2: カレンダー書き出し＝控えめなテキストリンク（小さめ・アイコンは少し大きく）。 */
  .t1app .savebox .sb-ics{border-top:1px solid var(--line);margin-top:12px}
  .t1app .savebox .sb-ics-link{display:inline-flex;align-items:center;gap:6px;background:none;border:0;
    font:inherit;font-size:var(--text-label);color:var(--ink3);cursor:pointer;padding:10px 2px;text-decoration:none;min-height:40px}
  .t1app .savebox .sb-ics-link:hover{color:var(--accent)}
  .t1app .savebox .sb-ics-link svg{width:16px;height:16px}
  .t1app .savebox .sb-ics-opts{margin:0 0 12px;display:flex;flex-direction:column;gap:8px}
  .t1app .savebox .sb-ics-opts[hidden]{display:none}
  .t1app .savebox .sb-ics-opts select{font:inherit;font-size:var(--text-label);padding:8px 10px;border:1px solid var(--line);
    border-radius:7px;background:#fff}
  .t1app .savebox .sb-ics-go{font:inherit;font-size:var(--text-label);font-weight:600;background:var(--accent);color:#fff;
    border:0;border-radius:7px;padding:8px 14px;cursor:pointer}

  .t1app .savebox .gate{background:none;color:var(--ink);border-radius:0;padding:0;margin:12px 0}

  /* g4③: リンクコピーの常設注記（&p= はスナップショット＝継続共有はメール保存へ） */
  .t1app .savebox .sb-copynote{font-size:var(--text-label);color:var(--ink3);line-height:1.6;margin:6px 0 0}
  /* j10：メアド欄＋ボタンの幅（max-width:420px）で「です」が2行目に折り返していたため、
     テキストを短縮し max-width の制約を外して1行に収める。 */
  .t1app .mailbanner .mb-copynote{font-size:11px;color:var(--ink3);line-height:1.6;margin:8px auto 0;max-width:none}

  /* g4①: サイトデザインに沿ったトースト（alert 置き換え）。#repModal(100000) より前面。 */
  .t1app .t1toast{position:fixed;left:50%;bottom:24px;z-index:100001;
    transform:translateX(-50%) translateY(10px);
    background:var(--ink);color:#fff;font-size:13px;font-weight:600;
    padding:10px 18px;border-radius:8px;box-shadow:0 8px 24px -6px rgba(0,0,0,.4);
    max-width:calc(100vw - 32px);text-align:center;
    opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}
  .t1app .t1toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

  /* g3: ページ下部のメール登録バナー。右レール（白カード＋枠線）と区別するため塗り背景・枠なし・中央寄せ。
     メール登録が主役／カレンダー書き出しは含めない。幅は本文カラム基準（#out いっぱい）。 */
  .t1app .mailbanner{background:var(--accent-soft);border:0;border-radius:16px;padding:28px 32px;
    margin:28px 0 0;text-align:center}
  .t1app .mailbanner .mb-mark{display:inline-flex;color:var(--accent)}
  .t1app .mailbanner h3{margin:8px 0 6px;font-size:15px;color:var(--ink);letter-spacing:-.01em}
  .t1app .mailbanner p{margin:0 0 14px;font-size:12.5px;color:var(--ink2);line-height:1.7}
  .t1app .mailbanner .mb-form{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:420px;margin:0 auto}
  .t1app .mailbanner .mb-form input[type=email]{flex:1 1 200px;min-width:0;font:inherit;font-size:13px;
    padding:9px 12px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink)}
  .t1app .mailbanner .sb-primary{flex:0 0 auto;width:auto;display:inline-flex;align-items:center;justify-content:center;
    font:inherit;font-size:13px;font-weight:700;background:var(--accent);color:#fff;border:0;border-radius:8px;
    padding:9px 18px;cursor:pointer}
  .t1app .mailbanner .sb-primary:hover{background:var(--accent-hover)}
  .t1app .mailbanner .sb-primary[disabled]{opacity:.6;cursor:default}
  .t1app .mailbanner .mb-actions{display:flex;justify-content:center}
  .t1app .mailbanner .mb-linkcopy{display:inline-block;margin-top:10px;background:none;border:0;
    font:inherit;font-size:12px;color:var(--ink3);text-decoration:underline;text-underline-offset:2px;cursor:pointer}
  .t1app .mailbanner .mb-linkcopy:hover{color:var(--accent)}
  .t1app .mailbanner .err{color:var(--crit);font-size:12px;margin-top:8px}
  @media (max-width:520px){
    .t1app .mailbanner{padding:22px 18px}
    .t1app .mailbanner .mb-form{flex-direction:column;max-width:none}
    .t1app .mailbanner .sb-primary{width:100%}
    /* j8：SPで縦積みになると mb-form の `flex:1 1 200px` の flex-basis(200px) が
       主軸＝縦方向のサイズ指定になり、入力欄が ~100px の高さになる不具合（Redmi Note 13/Chrome）。
       縦積み時は flex 伸縮を切って高さを内容ベースに戻す。 */
    .t1app .mailbanner .mb-form input[type=email]{flex:0 0 auto;width:100%;height:auto;min-height:0}
  }

  /* SP：最下部までスクロールしても FAB が本文／フッターに被らないよう余白 */
  @media (max-width:1439px){ .t1app .wrap{padding-bottom:140px} }

  /* j1（memo2026/09/06）：保存FAB（SP）／保存カード（PC右レール）は、チップ帯が追従表示に
     なるのと同じタイミングで出す。結果レンダー直後は隠し、.t1app.chip-pinned で表示。
     SPの .saveshare はボトムシート（FABで開閉）なのでここでは触らない。 */
  .t1app .savefab{opacity:0;pointer-events:none;transition:opacity .18s}
  .t1app.chip-pinned .savefab{opacity:1;pointer-events:auto}

  /* PC 広（≥1440px）：本文 1000px はそのまま、右ガターに fixed の追従カード。
     left = ビューポート中央 + 本文右端(--article_size/2) + すき間。FAB／シート／バックドロップは出さない。 */
  @media (min-width:1440px){
    .t1app .saveshare{position:fixed;
      left:calc(50% + (var(--article_size,1000px) / 2) + var(--rail-gap));
      right:auto;bottom:auto;top:calc(var(--t1-navtop,68px) + var(--swl-adminbarH,0px) + 16px);
      width:var(--rail-w);
      max-height:calc(100vh - var(--t1-navtop,68px) - var(--swl-adminbarH,0px) - 32px);
      transform:none;visibility:visible;
      border:1px solid var(--line);border-radius:12px;box-shadow:0 6px 20px -10px rgba(0,0,0,.18);padding:16px}
    .t1app .saveshare-backdrop,.t1app .savefab,.t1app .savebox .sb-close{display:none!important}
    .t1app .wrap{padding-bottom:80px}
    /* j1：PC右レールもチップ帯と同じタイミングで出す */
    .t1app .saveshare{opacity:0;pointer-events:none;transition:opacity .18s}
    .t1app.chip-pinned .saveshare{opacity:1;pointer-events:auto}
  }

  
  .t1app .summary{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}
  
  .t1app .stat{flex:1;min-width:130px;background:var(--card);border:1px solid var(--line);
    border-radius:9px;padding:13px 15px}
  
  .t1app .stat .n{font-size:22px;font-weight:700;letter-spacing:-.02em}   /* i1：トークン対象外（統計数字） */
  
  .t1app .stat .l{font-size:var(--text-label);color:var(--ink3);margin-top:1px}
  
  .t1app .stat.alert .n{color:var(--crit)}

  /* f2①: 統計は「次の締切」を主・件数を従に */
  .t1app .summary{display:block;margin-bottom:16px}
  .t1app .stat-next{display:block;width:fit-content;max-width:100%;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:13px 16px}
  .t1app .stat-next .l{font-size:var(--text-label);color:var(--ink3);letter-spacing:.04em}
  .t1app .stat-next .n{font-size:24px;font-weight:700;letter-spacing:-.02em;margin-top:2px}   /* i1：トークン対象外（統計数字） */
  .t1app .stat-next .n .sub{font-size:var(--text-body);font-weight:600;color:var(--ink2);margin-left:6px}
  .t1app .stat-next.over .n .sub{color:var(--crit)}
  .t1app .stat-next .ttl{font-size:var(--text-small);color:var(--ink2);margin-top:3px}
  .t1app .stat-mini{display:flex;flex-wrap:wrap;gap:16px;padding:9px 4px 0;font-size:var(--text-label);color:var(--ink3)}
  .t1app .stat-mini b{font-size:var(--text-small);color:var(--ink);font-weight:700}
  .t1app .stat-mini .over,.t1app .stat-mini .over b{color:var(--crit)}

  
  .t1app .alertbox{background:var(--crit-soft);border:1px solid #f3c9c6;border-left:4px solid var(--crit);
    border-radius:8px;padding:15px 17px;margin-bottom:18px}
  
  .t1app .alertbox h3{margin:0 0 7px;font-size:var(--text-body);color:var(--crit)}
  
  .t1app .alertbox p{margin:0 0 6px;font-size:var(--text-small);color:var(--ink2)}
  
  .t1app .alertbox p:last-child{margin-bottom:0}

  
  .t1app .insight{background:var(--accent-soft);border:1px solid var(--accent-line);border-left:4px solid var(--accent);
    border-radius:8px;padding:15px 17px;margin-bottom:18px}
  
  .t1app .insight h3{margin:0 0 7px;font-size:var(--text-body);color:var(--accent-hover)}
  
  .t1app .insight p{margin:0;font-size:var(--text-small);color:var(--ink2)}

  
  .t1app .daygroup{margin-bottom:6px}
  
  .t1app .daybar{display:flex;align-items:baseline;gap:10px;padding:14px 4px 8px;border-bottom:2px solid var(--ink);
    margin-top:22px;flex-wrap:wrap}
  
  .t1app .daybar .d{font-size:var(--text-h3);font-weight:700;letter-spacing:-.01em}   /* i1：PC16px→var(--text-h3)=15px。微減のため要実機確認 */
  
  .t1app .daybar .rel{font-size:var(--text-label);color:var(--ink3)}

  .t1app .daybar .dow{font-size:var(--text-label);color:var(--ink3)}

  
  .t1app .task{background:var(--card);border:1px solid var(--line);border-top:0;padding:14px 16px}
  
  .t1app .task:first-of-type{border-top:1px solid var(--line)}
  
  .t1app .task .top{display:flex;gap:9px;align-items:flex-start}
  /* タスクは3行構成：①期限＋タグ ②タスク名 ③備考（会社名）。メモ2026/09/02 T1-08 */
  
  .t1app .task .tbody{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
  
  .t1app .task .trow1{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
  
  .t1app .task .trow1 .datechip, .t1app .task .trow1 .sev, .t1app .task .trow1 .kindbadge{margin-top:0}
  
  .t1app .task .trow1 .rel{font-size:11.5px;color:var(--ink3)}
  
  .t1app .sev{flex-shrink:0;font-size:10px;font-weight:700;padding:3px 7px;border-radius:4px;margin-top:3px;white-space:nowrap}
  
  .t1app .sev.critical{background:var(--crit-soft);color:var(--crit)}
  
  .t1app .sev.important{background:var(--warn-soft);color:var(--warn)}
  
  .t1app .sev.normal{background:var(--line2);color:var(--ink3)}
  
  .t1app .task .ttl{font-size:var(--text-body);font-weight:600;line-height:1.5}

  .t1app .task .prov{font-size:var(--text-label);color:var(--ink3)}

  .t1app .task .why{font-size:var(--text-small);color:var(--ink2);margin-top:8px;padding-left:0}

  .t1app .task .meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:9px;font-size:var(--text-label);align-items:center}
  
  .t1app .task .meta a{color:var(--accent);text-decoration:none}
  
  .t1app .task .meta a:hover{text-decoration:underline}
  
  .t1app .task .checked{color:var(--ink3)}
  
  .t1app .aff{display:inline-block;font-size:var(--text-label);background:var(--ok-soft);color:var(--ok-text);
    padding:2px 7px;border-radius:4px;font-weight:600}

  .t1app .unconf{display:inline-block;font-size:var(--text-label);background:var(--warn-soft);color:var(--warn);
    padding:2px 7px;border-radius:4px;font-weight:600}

  /* 役割バッジ */

  .t1app .who{display:inline-block;font-size:var(--text-label);padding:2px 8px;border-radius:4px;font-weight:700;
    margin-left:6px;vertical-align:middle;letter-spacing:.02em}
  
  .t1app .who.fu{background:var(--accent-soft);color:var(--accent-hover)} /* hover=濃いめの青。11pxバッジのコントラスト確保 */
  
  .t1app .who.ta{background:#f4e9f2;color:#8b3f76}
  
  .t1app .who.se{background:#eceef0;color:#5c6469}
  
  .t1app .task.mine{border-left:3px solid var(--accent);padding-left:13px}

  /* 役割フィルタ */
  
  .t1app .filters{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0 4px}
  
  .t1app .filters button{font-size:var(--text-small);padding:7px 14px;border:1px solid var(--line);background:#fff;
    border-radius:99px;cursor:pointer;color:var(--ink2);font-family:inherit}

  .t1app .filters button.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}

  /* 鮮度報告 */

  .t1app .rep{background:none;border:none;padding:0;font:inherit;font-size:var(--text-label);color:var(--ink3);
    cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px}

  .t1app .rep:hover{color:var(--accent)}

  .t1app .addcal{background:none;border:none;padding:0;font:inherit;font-size:var(--text-label);color:var(--ink3);
    cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px}

  .t1app .addcal:hover{color:var(--accent)}

  /* 進捗 */

  .t1app .prog{margin:8px 0 22px}  /* G1r-7: 上の余白 +2px。j8: 下の余白 +4px（18→22。「チェックはこの端末に保存されます」下） */

  .t1app .prog .bar{height:8px;background:var(--line2);border-radius:99px;overflow:hidden}

  .t1app .prog .bar i{display:block;height:100%;background:var(--ok);transition:width .25s}

  .t1app .prog .txt{font-size:var(--text-label);color:var(--ink3);margin-top:6px;display:flex;gap:12px;flex-wrap:wrap}

  .t1app .prog .txt b{color:var(--ink);font-size:var(--text-small)}

  /* 今やること（固定枠） */

  .t1app .now{background:#fff;border:2px solid var(--accent);border-radius:10px;padding:16px 18px;margin-bottom:20px}

  .t1app .now h3{margin:0 0 10px;font-size:var(--text-body);color:var(--accent)}

  .t1app .now ol{margin:0;padding-left:0;list-style:none}

  .t1app .now li{display:flex;gap:10px;align-items:baseline;padding:7px 0;border-top:1px solid var(--line2)}

  .t1app .now li:first-child{border-top:0}

  .t1app .now li .dt{font-size:var(--text-label);font-weight:700;white-space:nowrap;color:var(--ink)}

  .t1app .now li .lb{font-size:var(--text-label);padding:1px 6px;border-radius:4px;white-space:nowrap}

  .t1app .now li .lb.od{background:var(--crit-soft);color:var(--crit)}

  .t1app .now li .lb.sn{background:var(--warn-soft);color:var(--warn)}

  .t1app .now li a{font-size:var(--text-small);color:var(--ink);text-decoration:none;flex:1}

  .t1app .now li a:hover{color:var(--accent);text-decoration:underline}

  .t1app .now .none{font-size:var(--text-small);color:var(--ink3);margin:0}

  /* フェーズ見出し（c7①：<details> で折りたたみ） */
  .t1app details.ph{margin-bottom:4px}
  .t1app details.ph > summary.phhead{list-style:none;display:flex;align-items:baseline;gap:10px;
    padding:14px 26px 8px 4px;border-bottom:2px solid var(--ink);margin-top:26px;flex-wrap:wrap;
    cursor:pointer;position:relative;scroll-margin-top:calc(var(--t1-navtop) + var(--swl-adminbarH,0px) + 20px)}
  .t1app details.ph > summary.phhead::-webkit-details-marker{display:none}
  .t1app details.ph > summary.phhead::after{content:"";position:absolute;right:4px;top:16px;width:9px;height:9px;
    border-right:2px solid var(--ink3);border-bottom:2px solid var(--ink3);
    transform:rotate(45deg);transition:transform .15s}
  .t1app details.ph[open] > summary.phhead::after{transform:rotate(-135deg);top:20px}
  .t1app .phhead .t{font-size:16px;font-weight:700;letter-spacing:-.01em}
  .t1app .phhead .c{font-size:12px;color:var(--ink3)}

  /* 期間チップナビ（c7② → e1③：sticky・一括開閉を右端に統合）。
     --t1-navtop は SWELL 追従ヘッダーの高さ。SP/PC で異なる場合は下の @media で調整。 */
  /* SWELL 追従ヘッダー（.l-fixHeader）の高さ。ログイン中の wpadminbar 分は別途 --swl-adminbarH で足す。
     --t1-navtop は素の数値のままにして JS でも parseInt できるようにする。
     実際の top は JS が追従ヘッダーの下端を実測して inline で設定する。ここはフォールバック値。 */
  .t1app{--t1-navtop:68px}
  @media (max-width:959px){ .t1app{--t1-navtop:56px} }  /* SWELL の SP ヘッダーは 56px */
  /* 追従は JS で position:fixed をトグルする（SWELL の overflow-x:clip 等で
     position:sticky が効かないため）。.is-pinned のとき left/width/top は JS が設定し、
     解除時に inline を消す。 */
  /* G1r-9: 追従チップ帯は本文の左右余白を無視して幅いっぱいに使う（pin 時の left/width は JS）。
     各要素の間隔も詰めて、同じ幅により多くのチップを見せる。 */
  .t1app .chipnav{position:relative;z-index:5;background:#fff;display:flex;align-items:center;
    gap:6px;margin:6px 0;padding:7px 2px;border-bottom:1px solid var(--line)}   /* j1：非追従時の左右余白を 6→2px に詰めてコンテンツ幅ギリギリまで使う（memo2026/09/06） */
  .t1app .chipnav.is-pinned{position:fixed;top:calc(var(--t1-navtop,68px) + var(--swl-adminbarH,0px));
    margin:0;padding:7px 8px;box-shadow:0 4px 8px -6px rgba(0,0,0,.22)}
  .t1app .chipnav-spacer{height:0}
  .t1app .chipnav-sentinel{height:0;margin:0;padding:0}
  .t1app .chipnav-scroll{flex:1;min-width:0;display:flex;gap:4px;overflow-x:auto;
    scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .t1app .chipnav-scroll::-webkit-scrollbar{display:none}
  .t1app .chip-nav{flex:0 0 auto;font:inherit;font-size:12px;font-weight:600;line-height:1;
    padding:7px 9px;border:1px solid var(--line);border-radius:99px;background:#fff;color:var(--ink);
    cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
  .t1app .chip-nav b{font-size:11px;background:var(--line2);color:var(--ink3);border-radius:99px;padding:1px 5px}
  .t1app .chip-nav.on{background:var(--accent);border-color:var(--accent);color:#fff}
  .t1app .chip-nav.on b{background:rgba(255,255,255,.28);color:#fff}
  /* e3追補: 残0のフェーズは薄く＋バッジを緑（✓）に。表示中(.on)のチップは通常ハイライト優先 */
  .t1app .chip-nav.cleared{opacity:.6}
  .t1app .chip-nav.cleared:not(.on) b{background:var(--ok-soft);color:var(--ok-text)}
  .t1app .chipnav-allbtns{flex:0 0 auto;display:flex;gap:6px;padding-left:6px;border-left:1px solid var(--line)}
  .t1app .chipnav-allbtns button{font:inherit;font-size:11px;background:none;border:0;padding:2px 0;
    color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:2px;white-space:nowrap}

  /* e2: 入力フォームの排他ラジオ群（持ち家の扱い／配偶者の就業状態）と親子の出し分け */
  .t1app .cd-radiogrp{flex-basis:100%;display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin:2px 0}
  .t1app .cd-radiogrp .grl{font-size:12px;font-weight:600;color:var(--ink3);margin-right:2px}
  .t1app .chip[hidden],.t1app .cd-radiogrp[hidden]{display:none}

  /* e2①: 結果画面の条件追加チップ */
  .t1app .condadd{background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:10px;
    padding:14px 16px;margin-bottom:20px}
  .t1app .condadd-head{font-size:13px;font-weight:700;color:var(--accent);margin-bottom:10px}
  .t1app .condadd-chips{display:flex;flex-wrap:wrap;gap:7px}
  .t1app .cchip{font:inherit;font-size:12.5px;padding:6px 12px;border:1px solid var(--accent-line);
    border-radius:20px;background:#fff;color:var(--ink2);cursor:pointer;transition:.12s}
  .t1app .cchip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
  .t1app .condadd-radio{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px}
  .t1app .condadd-radio .cr-label{font-size:12px;font-weight:700;color:var(--accent);width:100%}
  .t1app .crbtn{font:inherit;font-size:12px;padding:6px 11px;border:1px solid var(--accent-line);
    border-radius:20px;background:#fff;color:var(--ink2);cursor:pointer;transition:.12s}
  .t1app .crbtn.on{background:var(--accent);border-color:var(--accent);color:#fff}

  /* e1②：一度読めば済む注意の集約折りたたみ（警告色） */
  .t1app details.notes{border:1px solid #e6cfa0;border-left:4px solid var(--warn);border-radius:9px;
    background:var(--warn-soft);margin:14px 0}
  .t1app details.notes > summary{cursor:pointer;padding:12px 16px;font-size:13.5px;font-weight:700;
    color:var(--warn);list-style:none;display:flex;align-items:center;gap:8px}
  .t1app details.notes > summary::-webkit-details-marker{display:none}
  .t1app details.notes > summary::before{content:"＋";font-weight:700}
  .t1app details.notes[open] > summary::before{content:"−"}
  .t1app details.notes .notes-body{padding:0 14px 12px}
  .t1app details.notes .notes-body > *:first-child{margin-top:0}

  /* c7④：タスクカードの理由文トグル（e1④：カレンダー追加・編集を提案も内側に） */
  .t1app .why-toggle{font:inherit;font-size:12px;font-weight:600;background:none;border:0;padding:6px 0 0;
    color:var(--accent);cursor:pointer;display:inline-flex;align-items:center;gap:3px}
  .t1app .why-toggle .chev{display:inline-block;transition:transform .15s;font-size:14px;line-height:1}
  .t1app .why-toggle[aria-expanded="true"] .chev{transform:rotate(90deg)}
  .t1app .why-wrap[hidden]{display:none}
  .t1app .meta-more{display:flex;gap:12px;flex-wrap:wrap;margin-top:9px;font-size:11.5px;align-items:center}
  .t1app .prov-inline{font-size:11.5px;color:var(--ink3);margin-left:8px;font-weight:400}

  /* c7⑥a：進捗バーの「次の未完了へ」 */
  .t1app .prog-next{font:inherit;font-size:12px;font-weight:600;background:var(--accent-soft);
    border:1px solid var(--accent-line);border-radius:99px;padding:3px 10px;color:var(--accent-hover);cursor:pointer}
  .t1app .prog-alldone{font-weight:600;color:var(--ok-text)}

  .t1app [id^="t-"],.t1app #now-box{scroll-margin-top:calc(var(--t1-navtop) + var(--swl-adminbarH,0px) + 20px)}

  /* パラメータ付きURL等で run() 直後に #out へ自動スクロールする際、SWELL 追従ヘッダーに
     統計カードが隠れないよう余白を確保する（f1 実機フィードバック）。SP/PC は --t1-navtop が吸収。 */
  .t1app #out{scroll-margin-top:calc(var(--t1-navtop) + var(--swl-adminbarH,0px) + 16px)}
  /* j1：パラメータ付きURLで開いたときは #out ではなく先頭の「タスクボード」見出しへスクロールする。
     追従ヘッダー直下に軽い余白（8px）だけ空ける。 */
  /* j10：トップ遷移後のスクロールで「リストを作る」ボタンが下端に見えていた（＝タスクボードが
     ヘッダーから離れすぎ）ため、余白を +8px → -2px に詰めてタスクボードをヘッダー直下に寄せる。 */
  .t1app #out > .t1head{scroll-margin-top:calc(var(--t1-navtop) + var(--swl-adminbarH,0px) - 2px)}

  /* チェックボックスと完了状態 */
  
  .t1app .chk{flex-shrink:0;width:19px;height:19px;margin:2px 0 0;cursor:pointer;accent-color:var(--ok)}
  
  .t1app .task.done{opacity:.5}
  
  .t1app .task.done .ttl{text-decoration:line-through}
  
  .t1app .datechip{flex-shrink:0;font-size:12px;font-weight:700;background:var(--line2);color:var(--ink2);
    padding:3px 8px;border-radius:5px;margin-top:1px;white-space:nowrap}

  /* kind:"recommend"（厳密な締切ではなく推奨開始目安）のバッジ。confbadgeと同系統の見た目。 */
  .t1app .kindbadge{flex-shrink:0;font-size:11px;font-weight:700;background:var(--line2);color:var(--ink3);
    padding:3px 7px;border-radius:4px;white-space:nowrap}

  /* 統合カード（同一フェーズ内・同一office・締切±3日以内のタスクをまとめた枠）。
     中の.taskは個別カードのボーダーを持たず、カード全体の外枠だけで区切る。 */
  .t1app .officecard{border:1px solid var(--line);border-radius:9px;margin:10px 0;overflow:hidden}
  .t1app .officecard .task{border-left:0;border-right:0;border-bottom:0;border-top:1px solid var(--line)}
  .t1app .officecard .task:first-of-type{border-top:0}
  /* 統合カードの直後に単独タスクカードが続く場合、.taskの既定(border-top:0)のままだと
     区切りが消えてしまう（統合カードの下枠だけでは境界が弱い）ため上辺を引く（2026-09-27） */
  .t1app .officecard + .task{border-top:1px solid var(--line)}
  .t1app .officecard-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;
    padding:10px 14px;background:var(--line2)}
  .t1app .officecard-office{font-size:13.5px;font-weight:700;color:var(--ink)}
  .t1app .officecard-range{font-size:12px;color:var(--ink3)}

  /* 統合カードとは別の弱い関連付け（2026-09-27）。EXCLUDE_FROM_MERGEで統合を外した
     タスクに「同じ市区町村役所で相談・手続きできる」ことだけを伝える軽量な注記。 */
  .t1app .cityhall-note{margin-top:10px;font-size:12px;color:var(--ink3);
    background:var(--line2);border-radius:6px;padding:7px 10px}

  /* 収益導線の枠（本番では比較記事へのリンクが入る） */
  
  .t1app .affbox{margin-top:10px;background:var(--ok-soft);border:1px solid var(--ok-line);border-radius:7px;
    padding:9px 12px}
  
  .t1app .affbox .afftag{display:block;font-size:10.5px;font-weight:700;color:var(--ok-text);
    letter-spacing:.03em;margin-bottom:3px}
  
  .t1app .affbox .afftxt{font-size:12.5px;color:var(--ink2)}
  
  .t1app .affbox .afftxt a{color:var(--accent);font-weight:600;text-decoration:underline}
  
  .t1app .checking{display:inline-block;font-size:11px;background:#fdf1e3;color:#a2600f;
    padding:2px 7px;border-radius:4px;font-weight:600}
  
  /* G1r-8: SWELL 追従ヘッダーより手前に出し（z-index）、縦に長いときは上が切れず
     スクロールできるように（block＋overflow-y＋上パディングでヘッダー下から開始）。 */
  .t1app .modal{position:fixed;inset:0;background:rgba(20,24,28,.45);display:none;
    padding:calc(var(--t1-navtop,68px) + var(--swl-adminbarH,0px) + 16px) 20px 40px;
    z-index:100000;overflow-y:auto;-webkit-overflow-scrolling:touch}

  .t1app .modal.on{display:block}

  .t1app .modal .box{background:#fff;border-radius:12px;max-width:440px;width:100%;margin:0 auto;padding:22px 24px}
  
  .t1app .modal h3{margin:0 0 4px;font-size:16px}
  
  .t1app .modal .ctx{font-size:12px;color:var(--ink3);margin:0 0 14px}
  
  .t1app .modal label.r{display:block;font-size:13.5px;padding:8px 10px;border:1px solid var(--line);
    border-radius:7px;margin-bottom:6px;cursor:pointer}
  
  .t1app .modal label.r:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
  
  .t1app .modal input[type=text], .t1app .modal input[type=email]{width:100%;box-sizing:border-box;font:inherit;font-size:var(--text-small);
    padding:9px 10px;border:1px solid var(--line);border-radius:7px;margin:6px 0 10px}

  .t1app #repEmail{margin-top:0}

  .t1app .modal .opt{font-size:var(--text-small);color:var(--ink2);display:block;margin-bottom:5px}

  .t1app .modal .acts{display:flex;gap:8px;margin-top:12px}

  .t1app .modal .acts button{font:inherit;font-size:var(--text-small);padding:9px 18px;border-radius:7px;cursor:pointer}

  .t1app .modal .acts .send{background:var(--accent);color:#fff;border:none;font-weight:600}

  .t1app .modal .acts .cancel{background:#fff;border:1px solid var(--line);color:var(--ink2)}

  .t1app .modal .meta2{font-size:var(--text-label);color:var(--ink3);margin-top:12px;line-height:1.6}

  /* NEW-54（2026-09-30）：報告モーダル改修（textarea・エラー表示・honeypot・fieldset） */
  .t1app .modal [hidden]{display:none!important}
  .t1app .modal fieldset.reasons{border:0;margin:0;padding:0;min-width:0}
  .t1app .modal .fld{display:block;font-size:12.5px;font-weight:700;color:var(--ink2);margin:12px 0 5px;padding:0}
  .t1app .modal .hint{font-weight:400;color:var(--ink3);margin-left:4px}
  .t1app .modal textarea{width:100%;box-sizing:border-box;font:inherit;font-size:var(--text-small);padding:9px 10px;
    border:1px solid var(--line);border-radius:7px;resize:vertical;line-height:1.6}
  .t1app .modal .hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
  .t1app .modal .err{margin:10px 0 0;font-size:12.5px;color:#b3261e}

  /* 段階開示 */
  
  .t1app details.adv{border:1px solid var(--line);border-radius:9px;margin-top:18px;background:#fcfcfd}
  
  .t1app details.adv > summary{cursor:pointer;padding:13px 16px;font-size:var(--text-small);font-weight:600;
    color:var(--accent);list-style:none;display:flex;align-items:center;gap:8px}
  
  .t1app details.adv > summary::-webkit-details-marker{display:none}
  
  .t1app details.adv > summary::before{content:"＋";font-weight:700}
  
  .t1app details.adv[open] > summary::before{content:"−"}
  
  .t1app details.adv > summary span.n{font-weight:400;color:var(--ink3);font-size:var(--text-label)}
  
  .t1app details.adv .body{padding:0 16px 16px}

  /* 書き出しバー */
  
  /* PC=2行（1行目テキスト／2行目に select＋ボタン2つ）、SP=縦積み4段 */
  .t1app .export{background:var(--accent-soft);border:1px solid var(--accent-line);
    border-radius:9px;padding:14px 16px;margin-bottom:18px}

  .t1app .export .lead{font-size:var(--text-small);color:var(--ink2);margin-bottom:12px}

  .t1app .export-controls{display:flex;gap:9px;flex-wrap:wrap;align-items:center}

  .t1app .export button{font:inherit;font-size:var(--text-small);font-weight:600;padding:10px 18px;border-radius:7px;
    border:none;background:var(--accent);color:#fff;cursor:pointer}

  .t1app .export button.sub2{background:#fff;color:var(--accent);border:1px solid var(--accent)}

  .t1app .export select{font:inherit;font-size:var(--text-small);padding:9px 10px;border:1px solid var(--line);border-radius:7px;background:#fff}

  @media(max-width:520px){
    .t1app .export-controls{flex-direction:column;align-items:stretch}
    .t1app .export-controls > *{width:100%}
    /* G1r-4: SP は入力フォーム（特に「詳しく条件を指定する」）の左右インセットを詰めて幅を広げる */
    .t1app .card{padding:14px 12px}
    .t1app details.adv > summary{padding:12px 10px}
    .t1app details.adv .body{padding:0 8px 12px}
  }

  /* 有効期限入力 */
  
  .t1app .exprow{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:4px}
  
  .t1app .expcell{flex:1;min-width:200px}
  
  .t1app .expcell label{font-size:var(--text-small);font-weight:600;color:var(--ink2);margin-bottom:5px}

  .t1app .expcell input[type=date]{max-width:100%;font-size:var(--text-body);padding:8px 10px}


  .t1app .gate{background:#2b2f34;color:#fff;border-radius:10px;padding:20px;margin:26px 0 0}

  .t1app .gate h3{margin:0 0 7px;font-size:var(--text-h3)}

  .t1app .gate p{margin:0 0 13px;font-size:var(--text-small);color:#c7ccd2}

  .t1app .gate .btn{display:inline-block;background:#fff;color:#2b2f34;font-size:var(--text-body);font-weight:600;
    padding:11px 22px;border-radius:7px;text-decoration:none;border:none;cursor:pointer;font-family:inherit}

  .t1app .gate form{display:flex;gap:8px;flex-wrap:wrap}

  .t1app .gate input[type=email]{flex:1;min-width:200px;padding:11px 12px;border-radius:7px;border:1px solid #444a52;
    background:#20242a;color:#fff;font-size:var(--text-body);font-family:inherit}

  .t1app .gate .done{background:#183a2a;border:1px solid #2b5c42;border-radius:8px;padding:14px 16px;margin-top:4px}

  .t1app .gate .done p{color:var(--ok-line);margin:0 0 8px}

  .t1app .gate .done .link{display:block;background:#12151a;color:#8ccaa5;font-size:12px;padding:8px 10px;
    border-radius:6px;word-break:break-all;margin-bottom:8px}

  .t1app .gate .demo{color:#e8b96b;font-size:var(--text-label);margin-top:8px}

  .t1app .gate .err{color:#e88a8a;font-size:var(--text-small);margin-top:8px}

  .t1app .planerrbox{background:var(--warn-soft);border:1px solid #e6cfa0;border-left:4px solid var(--warn);
    border-radius:8px;padding:13px 16px;margin-bottom:16px;font-size:var(--text-small);color:var(--ink2)}
  
  .t1app .planerrbox strong{color:var(--warn)}
  /* 前回入力の復元通知（エラーではないのでアクセント色に振る） */
  .t1app .planerrbox.restore{background:var(--accent-soft);border-color:var(--accent-line);
    border-left-color:var(--accent);color:var(--ink2)}
  .t1app .planerrbox.restore strong{color:var(--accent)}
  .t1app .linkbtn{font:inherit;font-size:inherit;background:none;border:0;padding:0;
    color:var(--accent);text-decoration:underline;cursor:pointer}

  
  .t1app footer{margin-top:36px;padding-top:18px;border-top:1px solid var(--line);font-size:var(--text-label);color:var(--ink3)}
  
  .t1app footer p{margin:0 0 6px}
  
  .t1app .hidden{display:none}

  /* 「先頭に戻る」ボタンは SWELL 標準に一本化（独自実装 #toTop は撤去。T1-11 を取り消し） */


  @media(max-width:520px){
    /* i1：.daybar .d は base側で既にvar(--text-h3)に統一済みのため、このSP専用の再指定は削除した。 */
    .t1app .stat{min-width:calc(50% - 5px)}

  }
