/* スタッフアプリ
   2026-08-15 配色更新：アプリコット基調（#ff8a56系）から、SCHOOL Manager と同じブルー基調へ統一（遼様決定）。
   色は下の :root に集約し、以後の色調整が1箇所で効くようにした。ハードコードは原則ここだけに置く。

   変数名・値は admin/style.css と揃えてある。「値をコピーする」のではなく「同じ名前で持つ」ことを
   優先したので、3アプリのトンマナを見直すときは同じ変数名で追える。

   色そのものが意味を持つものは、青基調にしても値を変えていない：
   ・出欠（出席=緑 / 遅刻=オレンジ / 欠席=赤）… 現場の判断に直結する
   ・授業カテゴリのバッジ（通常=緑 / 季節講習=オレンジ / 追加=紫 / 体験=ティール / サービス=ピンク / 自習=青）
   ・学年バッジ（中3=赤で受験学年を目立たせる）
   ・未読・未対応の赤

   フォントは body に直接指定する。以前はコンテナ(#tea-app)にだけ指定していたが、
   position:fixed の下部ナビ・オーバーレイ・モーダルが既定フォントに落ちる余地があり、
   「フォントが違う」という違和感の原因になり得たため body に一本化する（2026-08-13） */
:root{
  /* ===== SCHOOL Manager（admin/style.css）と同名・同値 ===== */
  --bg:#e9f1f7; --surface:#ffffff; --surface-2:#dceaf5; --surface-3:#c4dced;
  --border:#b4d3e6; --border-soft:#d3e5f1;
  /* 本文の色は 2026-09-11 に本部と同じ #20364a にそろえた（以前は #1b2f42）。
     地色（--bg）の上で 10.89:1 あり、本文に必要な 4.5:1 を大きく上回る */
  --text:#20364a; --text-dim:#4e6d85; --text-faint:#5f7f97;
  --accent:#2bacf0; --accent-ink:#ffffff; --accent-dim:#7cc8f5; --accent-soft:#dcf0fd;
  --lesson:#2fae68; --lesson-bg:#e2f6ea; --ticket:#f08a1f; --ticket-bg:#fdead2;
  --extra:#7c5cc4; --extra-bg:#f0e9fb;
  --study:#3d7fc4; --study-bg:#e1eefb; --absent:#e6564f; --absent-bg:#fde3e1;
  --warn:#e6564f; --warn-bg:#fde3e1;
  --trial-bg:#d9f3ef;
  /* 淡い地の上に載せる文字の濃い版。本部が 2026-08-18／08-19 のコントラスト直しで
     作ったものと**同名・同値**（新しい色は1つも足していない）。
     このアプリのバッジは基底色（--lesson 等）のまま取り残されていて、
     淡い地の上で 2.5〜3.5:1 しか出ていなかった（2026-09-11 のトンマナ合わせで実測）。
     面の色（意味を持つ色）は1つも変えていない。変えたのは文字だけ */
  --lesson-deep:#1d7a48; --ticket-deep:#a24e14; --extra-deep:#63469f; --absent-deep:#b7392f;
  --study-deep:#1f6ea8; --trial-deep:#0a6b60; --service-deep:#a02a67;
  /* 淡い地（--surface-2）の上に置く控えめな文字。本部と同名・同値。
     --text-dim だと --surface-2 の上で 4.45:1 と AA に届かない */
  --text-quiet:#47657c;
  --shadow:0 2px 10px rgba(40,110,160,.08); --shadow-hover:0 8px 22px rgba(43,172,240,.2);
  --radius:16px; --radius-sm:10px;
  /* --warn / --warn-bg / --text-faint はこのアプリでは今のところ使っていないが、
     admin と変数表を同じ形に保つために残す（片方だけ欠けていると突き合わせのときに気づけない）。
     特に --text-faint は白地で約2.3:1 しか出ないので、スマホを明るい場所で見るこのアプリでは
     文字に使わない方針にしている（代わりに --text-dim / --text-sub を使う）。 */

  /* ===== ここから下はスタッフアプリ固有 =====
     admin はPCを室内で見るが、スタッフアプリは教室や送迎時など明るい場所でスマホを見る。
     ブランドの明るい青 --accent(#2bacf0) は白地に対して約2.5:1 しかコントラストが出ないため、
     「白文字を載せる面」「読ませる文字色」には濃い --accent-deep（白地で 5.81:1）を使う。
     ベースの色味を変えたくなったら上のブロックだけ触ればよい設計は維持している。
     2026-09-11：値を本部と同じ #0f6b9e にそろえた（以前は #0f6ea6 で、ほぼ同じだが別の色だった）。
     本部も同じ日に「白文字を載せる面は --accent-deep」を主ボタン・カレンダーの選択日へ広げたので、
     2つのアプリの「押すところ・選んだところ」は同じ濃さの青になる。

     【2026-09-11 スタッフのテスト指摘で配色の使い分けを見直した】
     「SCHOOL Managerは明るい水色が基本で、決定・保存・送信など動作のあるボタンだけ濃いブルー。
     アイコン系や現在地は明るい水色で分かりやすいが、スタッフアプリはほぼ全部が濃紺で暗い印象」
     という指摘を受け、**「意味のあるアイコンも濃い方」という以前の一律ルールをやめた**：
       ・決定・保存・送信・修正など、押すと記録が変わる主ボタン → 引き続き --accent-deep（不変）
       ・単独の短い読み文字（役割名・校舎名・件数・番号など、色を変えると読み違えにつながるもの）
         → 引き続き --accent-deep（不変。読みやすさを落とさないため）
       ・隣に読める文字ラベルが必ず添う「装飾寄りのアイコン」（ホームのメニュー絵・一覧行の絵・
         カレンダーの矢印・入力欄のフォーカス枠など）→ --accent（明るい水色）に変更。
         アイコンの色を明るくしても、意味を伝えているのは隣の文字なので読みやすさは変わらない。
     --accent は元々「枠線・点・進捗バーなど、読ませない装飾に限る」としていたが、
     上のとおり「隣に文字がある装飾アイコン」にも使えるよう範囲を広げた。
     ただしカレンダーの「予定がある点」（.tea-cal-dot）は5pxしかなく、明るい青だと屋外で
     ほぼ見えなくなるため、この点だけは意図して --accent-deep のまま残してある */
  --accent-deep:#0f6b9e;
  /* 読ませる文章用の補助色。--text-dim は白地で約4.2:1 で、明るい場所ではやや心もとない。
     --text-dim はラベル（太字・短文）、--text-sub は本文・説明文、と役割で使い分ける */
  --text-sub:#456173;

  /* ===== 文字の大きさ（2026-08-29 遼様のご指摘で見直し） =====
     遼様「全体的に文字が小さいです。あと20%くらいベースを大きくし、
     大きいものと小さいもののメリハリをもう少しつけたい。」

     基準を 14.5px → 17.5px（＋21%）にした。
     あわせて**階段の幅を広げる**。以前は 11.5 / 12 / 13 / 14.5 / 19 と刻みが細かく、
     どれが見出しでどれが補助なのかが一目で分からなかった。
     大きいほうはより大きく、小さいほうは下げ止まり（13px より小さくしない）にして、
     「差が付いている」ことが分かる形にする。 */
  --tea-base:17.5px;      /* 本文 */
  --tea-lg:20px;          /* 小見出し・ボタンの文字 */
  --tea-xl:25px;          /* 画面の見出し */
  --tea-sm:15px;          /* ラベル・補助 */
  --tea-xs:13px;          /* いちばん小さくてよいもの。これ以上は下げない */
  --tea-shell-max:640px;  /* 保護者アプリ（--mah-shell-max）と同じ幅にそろえる */
  /* 下のメニューで画面を切り替えるときの動き（2026-09-19 遼様のご要望）。
     メニューの下敷きの滑り・タブの色の変わり方・画面の横スライドの3つが、この1か所の値を使う
     （片方だけ速いと、ずれて見える）。値は保護者アプリ（parent/style.css の横スライド）と同じ 220ms・ease-out */
  --tea-tab-motion:220ms ease-out;

  /* サイン（符丁）などの文字。本部が直値で持っている色と同値で、
     上の *-deep とは別物（本部側も2種類持っている）。ここを *-deep に寄せると
     本部のサインの色とずれるので、値は据え置く。
     2026-09-18 に振替バッジ（-mk）を廃止したので、いまの使い道はサイン・回数・申し送りの文字 */
  --lesson-ink:#1f7a48;   /* サイン（緑）・無料回数・申し送りの本文 */
  --ticket-ink:#c9611f;   /* サイン（オレンジ）・誕生日当日の文字 */
  --unread:#dc2626;       /* 未読・未対応バッジ。授業マイページと共通の赤（見落とし防止のため据え置き） */

  /* バッジの枠線（塗りと同系の一段濃い線。輪郭が無いと明るい場所で白地に溶ける） */
  --lesson-line:#bfe8cd; --ticket-line:#f9d9ae; --absent-line:#f8cbc8;

  /* 面と影。
     2026-09-11 のトンマナ合わせで、影は本部と同じ2段（--shadow / --shadow-hover）に寄せた。
     カード・主ボタン・ポップアップは本部と同じ濃さで落ちる。
     独自に持っていた --shadow-card（0 3px 12px .10）・--shadow-accent・--shadow-modal は、
     同じ役割の影が2種類あるだけだったので廃止した。
     残す --shadow-float / --shadow-unread は、本部に無い部品（浮いた下部メニュー・未読の赤丸）専用 */
  --surface-glass:rgba(255,255,255,.92);   /* 下部ナビなど、背景が透ける面 */
  --overlay:rgba(32,54,74,.4);             /* ポップアップの背景。本部の .modal-overlay と同値 */
  --overlay-app:rgba(245,251,255,.95);     /* 通信中オーバーレイ。--bg と同系 */
  --shadow-app:0 4px 25px rgba(40,110,160,.12);
  --shadow-float:0 8px 28px rgba(40,110,160,.18);
  --shadow-unread:0 2px 8px rgba(220,38,38,.45);
}

html{background:var(--bg);}
/* 縦スクロールバーが出る画面（出欠の名簿など）と出ない画面（ホーム）で、中身の幅が
   スクロールバーの幅（PCで約15px）ぶんずれて見えるのを防ぐ（2026-08-30 遼様のご指摘）。
   スクロールバーの場所を常に確保しておく。スマホは元々重なって表示されるので影響しない */
html{scrollbar-gutter:stable;}
body {
  font-family:'Zen Maru Gothic','BIZ UDPGothic','Yu Gothic UI','Meiryo UI','Hiragino Kaku Gothic ProN',sans-serif;
  /* 器をやめたので、ページ全体を1色にする。
     以前は body に --surface-2、アプリの面に --bg と2色使っていたが、
     器が無いとその境目が「スクロールすると下から出てくる帯」になって見える */
  background:var(--bg); margin:0; padding:0;
}
/* フォームコントロールはUA既定フォントを持ち祖先を継承しないため明示継承（既定フォント落ち防止） */
button,input,select,textarea{font-family:inherit}
/* ★カード状の器をやめ、画面いっぱいに置く（2026-08-29 遼様のご指摘）。
   遼様「スタッフアプリ、以前の保護者アプリと同様に無駄に四角い枠の中に各コンテンツが
   あります。無駄な枠はなくフラットにしてください。」

   もとは max-width:600px＋角丸＋影で、画面の中央に1枚の「紙」を置く形だった。
   これは GAS で作っていた頃、PCで開くと横に伸びきってしまうのを抑えるための名残で、
   スマホで見るぶんには**周りの余白と影がじゃまなだけ**。
   スクロールすると紙の外側の色が下部メニューの裏にちらついて見える問題もあった
   （保護者アプリでは 2026-08-22 に同じ直しを済ませている）。

   背景も1色にそろえる。以前は「ページ枠(--surface-2)の上にアプリの面(--bg)、
   その上に白いカード」の3層だったが、器が無くなると2層で足りる。 */
#tea-app{
  font-family:inherit;
  width:100%;max-width:var(--tea-shell-max);margin:0 auto;
  padding:16px 14px calc(112px + env(safe-area-inset-bottom));
  background:transparent;color:var(--text);
  position:relative;min-height:100vh;box-sizing:border-box;font-size:var(--tea-base);
  /* 上部の帯（.tea-user-info）は左右の余白ぶん外へ広げているので、縦スクロールバーの幅の分だけ
     2px ほど右へはみ出し、画面の下に横スクロールバーが出ていた（2026-08-30 実測 377/375px）。
     overflow-x:hidden ではなく clip にしているのは、帯の position:sticky を壊さないため。
     2026-09-19 からは、画面の横スライド（.tea-view-in-from-right）で右から入ってくる画面のはみ出しもここで切る。
     切らないと横スクロールの幅が生まれ、スマホが表示の幅を広げ直して下のメニューが一瞬ずれる
     （保護者アプリで「右へ移るときだけ、メニューが下にがくつく」として実際に起きた） */
  overflow-x:clip;
}
/* 画面名の帯。上部にヘッダー（氏名・ログアウト）が付いたぶん、こちらは控えめにして縦を稼ぐ（2026-08-30）。
   2026-09-11：本部の画面名（.content-head）と同じ引き方にそろえた。
   本部は「画面名＝本文と同じ濃さの文字／下の線は髪の毛1本の --border-soft」で、
   こちらだけ「青い文字＋2pxの水色の下線」だったため、同じ画面名が別の飾りに見えていた。
   文字の大きさ（21px）はスマホの都合なのでそのまま */
.tea-header{text-align:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border-soft)}
.tea-header h2{color:var(--text);margin:0 0 2px;font-size:21px;font-weight:800}
.tea-header p{margin:0;font-size:13px;color:var(--text-dim)}
.tea-whoami{font-size:13.5px;color:var(--text-dim)}
.tea-role-chip{color:var(--accent-deep);font-weight:800}
.tea-group{margin-bottom:15px}
.tea-group label{display:block;font-weight:700;margin-bottom:8px;font-size:15px;color:var(--text-dim)}

/* iOSはみ出し完全ブロック & ボタンとの隙間確保 */
.tea-input {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  height: 48px !important;
  padding: 0 14px !important;
  border: 1.5px solid var(--border) !important;
  border-radius: var(--radius-sm) !important;
  font-size:19px !important;
  box-sizing: border-box !important;
  background-color: var(--surface) !important;
  margin: 0 0 15px 0 !important;
  font-family: inherit !important;
  color: var(--text) !important;
  -webkit-appearance: none !important;
  appearance: none !important;
}
/* プレースホルダは既定だと薄すぎて、明るい場所で何を入れる欄か分からなくなる */
.tea-input::placeholder { color: var(--text-dim); opacity: 1; }
/* フォーカス枠は明るい水色（2026-09-11 SCHOOL Manager合わせ。admin の .field input:focus と同じ）。
   縁取りだけの装飾で文字ではないので、淡い面（box-shadow のハロー）とあわせて見えれば十分 */
.tea-input:focus { outline:none !important; border-color:var(--accent) !important; box-shadow:0 0 0 3px var(--accent-soft) !important; }

/* 角の丸みは本部の .btn と同じ --radius-sm（10px）。以前の 14px はこのアプリだけ丸く、
   同じボタンが別部品に見えていた（2026-09-11）。
   枠線を「透明で1.5px」置いてあるのは本部の .btn と同じ考え方で、
   二次ボタン・押せないボタンが枠線を足しても高さが変わらないようにするため
   （以前は主ボタンだけ枠線が無く、二次ボタンより3px低かった）。
   padding を 15→13.5px にしているのは、その枠線ぶんを差し引いて高さを据え置くため */
.tea-btn{display:block;box-sizing:border-box;width:100%;padding:13.5px;color:var(--accent-ink);border:1.5px solid transparent;border-radius:var(--radius-sm);font-size:18px;font-weight:800;cursor:pointer;text-align:center;font-family:inherit;}
/* 主ボタンは白文字を載せるので、明るい --accent ではなく --accent-deep を塗る（屋外での可読性） */
.tea-btn-primary{background:var(--accent-deep);box-shadow:var(--shadow);}
.tea-btn-secondary{background:var(--surface);border-color:var(--border);color:var(--accent-deep);box-shadow:none;}
/* 取り消しのきかない操作用。admin の .btn-danger と同じ意味・同じ色 */
.tea-btn-danger{background:var(--absent);}
/* 押せないときの主ボタン。本部の .btn-primary:disabled と同じ「淡い面＋濃い文字」（UI指示書 4-5）。
   2026-09-11 まではこのアプリだけ「薄い主色 --accent-dim ＋白抜き」で、白文字が 1.84:1 しか無く
   押せない間だけ文字が読めなかった。淡い面（--accent-soft）＋濃い文字（--accent-deep）＝4.96:1 にして、
   押せるようになった瞬間に濃い面＋白文字へ変わるのが見えるようにする。
   .tea-btn-primary（クラス1つ）より詳細度が高いので !important は要らない */
.tea-btn:disabled{background:var(--accent-soft);color:var(--accent-deep);border-color:var(--accent-dim);box-shadow:none;cursor:default;}
.tea-hidden{display:none!important}
.tea-error{color:var(--absent-deep);font-size:14.5px;text-align:center;font-weight:700;}
/* 一覧が空のときの案内。読ませる文章なので --text-faint までは薄くしない */
.tea-empty{text-align:center;color:var(--text-sub);font-size:15px;}
.tea-muted{color:var(--text-sub);}

/* コマ移動用モーダル & 小ボタン */
#tea-move-modal { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: var(--overlay); z-index: 9500; display: flex; align-items: center; justify-content: center; }
/* position:relative は右上の×（.tea-modal-x）を置くため */
.tea-modal-content { position: relative; background: var(--surface); padding: 22px; border-radius: var(--radius); width: 90%; max-width: 350px; text-align: center; box-shadow: var(--shadow-hover); }
/* ポップアップの見出しも本部と同じ引き方（本文と同じ濃さの文字＋髪の毛1本の線）。
   本部の .modal-tall .modal-head と同じ（2026-09-11） */
.tea-move-title { margin: 0 0 10px; padding-bottom: 10px; font-size:19px; font-weight: 800; color: var(--text); border-bottom: 1px solid var(--border-soft); }
.tea-move-target { font-weight: 800; margin-bottom: 15px; line-height: 1.5; color: var(--text); }
.tea-move-slots { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; max-height: 50vh; overflow-y: auto; }
/* 移動先の候補は白地の二次ボタンなので、押せないときの見せ方も
   本部の押せない二次部品（.chip-toggle:disabled）と同じ「淡い面＋控えめな濃い文字」にする。
   主ボタンの押せない形（--accent-soft）を当てると、押せないのに押せそうに見えるため */
.tea-move-slot:disabled { background: var(--surface-2); color: var(--text-quiet); border-color: var(--border-soft); cursor: default; }
.tea-btn-small { background: var(--surface); border: 1.5px solid var(--border); color: var(--accent-deep); border-radius: var(--radius-sm); font-size:13.5px; font-weight: 700; cursor: pointer; padding: 8px 12px; transition: .15s; white-space: nowrap; font-family:inherit; }
.tea-btn-small:hover { background: var(--accent-soft); border-color:var(--accent); }

/* 通信中オーバーレイ */
#tea-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:var(--overlay-app);z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.tea-progress-container{width:80%;max-width:250px;height:8px;background-color:var(--surface-3);border-radius:10px;overflow:hidden;}
.tea-progress-bar{width:0%;height:100%;background-color:var(--accent);border-radius:10px;animation:tea-fake-progress 10s cubic-bezier(0.1, 0.5, 0.05, 1) forwards;}
@keyframes tea-fake-progress{0%{width:0%;}10%{width:30%;}40%{width:70%;}100%{width:95%;}}

/* ホーム画面／その他画面の機能ボタン */
.tea-home-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
/* 項目が奇数個のとき、最後の1つだけ横いっぱいに広げる。
   2列のまま右半分を空けると「押せるものが抜けている」ように見えるため */
.tea-home-grid > .tea-home-btn:last-child:nth-child(odd) { grid-column: 1 / -1; }
.tea-home-btn { display: flex; flex-direction: column; align-items: center; justify-content: center; background: var(--surface); border: 1.5px solid var(--border); border-radius: var(--radius); padding: 26px 10px; color: var(--text); font-weight: 800; font-size:17px; cursor: pointer; text-align: center; line-height: 1.45; transition: .15s; box-shadow: var(--shadow); font-family:inherit; }
.tea-home-btn:hover { border-color: var(--accent); transform: translateY(-2px); box-shadow: var(--shadow-hover); }
/* 2026-09-11 スタッフのテスト指摘でSCHOOL Managerに合わせ、明るい水色に変更。
   文字（メニュー名）は .tea-home-btn 側で --text（濃いグレー）のまま持っており、
   アイコンの色を変えても「どのメニューか」を示す文字の読みやすさは落ちない */
.tea-home-btn i { font-size:34px; color: var(--accent); margin-bottom: 10px; }

/* ホームの区切りラベル（お知らせの塊と勤務の塊を分ける）。お知らせ側の見出しと同じ体裁に揃える */
.tea-home-lbl { font-size:13px; font-weight: 800; letter-spacing: .04em; color: var(--text-dim); margin: 18px 0 8px; }
/* 出退勤記録のような単独ボタンは、正方形タイルではなく横長にして「一覧の1項目」に見せる */
.tea-home-btn-wide { flex-direction: row; justify-content: flex-start; gap: 12px; padding: 18px 16px; width: 100%; box-sizing: border-box; }
.tea-home-btn-wide i { font-size:27.5px; margin-bottom: 0; }

/* 子画面から親（その他）へ戻る導線。ボトムメニューを3つに減らした分、
   デイリー・マンスリー・生徒検索は直接押せなくなったので、画面内にも戻り道を置く */
.tea-back-btn { background: none; border: none; color: var(--accent-deep); font-size:14.5px; font-weight: 800; padding: 0 0 10px; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; font-family: inherit; }

/* 下部ナビ（フローティングのピル型カプセル。中にピル型ボタンが並ぶ）
   2026-08-17 遼様確定：5つ→3つに再編（左から ホーム → 出欠 → その他）。
   幅は 396px で止める（2026-08-17 当時の保護者アプリと同じ値。保護者アプリは 2026-08-22 に
   器の幅に合わせて広げたが、こちらは今回の直し（2026-09-19）の範囲外なので据え置き） */
#tea-bottom-nav {
  position: fixed; left: 50%; transform: translateX(-50%);
  bottom: calc(14px + env(safe-area-inset-bottom));
  width: calc(100% - 24px); max-width: 396px; z-index: 1000; pointer-events: none;
}
/* ===== 3つのタブ（2026-09-19 遼様のご要望で作り直し） =====
   「スタッフアプリも、保護者アプリと同じように、フローティングメニューの色を現在地だけ塗る。左右の動きもつける」。
   保護者アプリ（parent/style.css の .mah-nav-pill / .mah-nav-ink / .mah-nav-btn）と同じ作り：
     ・3つとも同じ形・同じ大きさ。以前の中央の「出欠」だけを濃い青で常時点灯させる丸（.tea-nav-center-fab・
       光る影 tea-nav-glow）はやめた。常に点灯していると、ホームやその他を開いているときも
       「出欠に居る」ように見え、現在地が分からなくなる（保護者アプリで同じ声があった）
     ・**選んでいる1つだけ**に色：薄い青の背景（--accent-soft）＋濃い青のアイコンと文字（--accent-deep）。
       #0f6b9e が #dcf0fd の上で 4.96:1（主ボタンの押せない形と同じ組。新しい色は作っていない）。
       色はスタッフアプリの青のまま。保護者アプリの緑には合わせない（色の違いが「どちらのアプリか」の手がかり）。
       以前はアイコンだけ明るい水色（--accent）にしていたが、#2bacf0 は薄い青の上で 2.2:1 しか出ないので、
       保護者アプリと同じく「アイコンも文字も同じ濃い色」にそろえた
     ・選んでいないものは色を付けない灰色（--text-sub。白の上で 6.5:1・地色 --bg の上で 5.7:1）。
       ピルは92%の白で下の中身が透けるので、4.5:1 ちょうどの色は使わない
   薄い青の背景はボタンごとに塗らず、下敷き（.tea-nav-ink）を1枚だけ置いて、選んだボタンの下へ滑らせる。
   ボタンは flex:1 で同じ幅なので、下敷きの位置は「幅＋すき間」の何個分かだけで決まる（JSで寸法を測らない）。
   ピルの余白とすき間は変数1か所に持つ（ピル本体と下敷きの計算で値が割れないように）。
   滑る速さと動きは、画面の横スライド（.tea-view-in-*）と同じ --tea-tab-motion */
.tea-nav-pill {
  --tea-nav-pad:5px; --tea-nav-gap:6px;
  pointer-events: auto; position: relative;
  display: flex; gap: var(--tea-nav-gap); padding: var(--tea-nav-pad);
  background: var(--surface-glass); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid var(--border); border-radius: 999px;
  box-shadow: var(--shadow-float);
}
.tea-nav-ink {
  position: absolute; z-index: 0; pointer-events: none;
  top: var(--tea-nav-pad); bottom: var(--tea-nav-pad); left: var(--tea-nav-pad);
  width: calc((100% - 2 * var(--tea-nav-pad) - 2 * var(--tea-nav-gap)) / 3);
  border-radius: 999px; background: var(--accent-soft);
  transform: translateX(0);
  transition: transform var(--tea-tab-motion);
}
.tea-nav-pill[data-active="input"] .tea-nav-ink{transform:translateX(calc(100% + var(--tea-nav-gap)))}
.tea-nav-pill[data-active="more"] .tea-nav-ink{transform:translateX(calc(200% + 2 * var(--tea-nav-gap)))}
/* ラベルの行送りを1にして、ボタンの中の余計な高さを削る（2026-08-30）。
   position:relative は未読の赤いバッジ（.tea-nav-badge）を置くため、z-index:1 は下敷きより前に出すため */
.tea-nav-btn {
  flex: 1; min-width: 0; background: transparent; border: none; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  padding: 6px 2px; line-height: 1; border-radius: 999px; color: var(--text-sub); font-family: inherit;
  font-size:13px; font-weight: 800; white-space: nowrap;
  position: relative; z-index: 1;
  transition: color var(--tea-tab-motion), background-color var(--tea-tab-motion);
}
/* アイコンは残す（「アイコンを使う場所を減らす」2026-09-19 の例外）：
   ここは「いまどの画面か」を示す場所で、アイコンが目印の役目を持つため */
.tea-nav-btn i { font-size:22.5px; }
.tea-nav-btn.active { color: var(--accent-deep); }

/* ===== 3つの画面を切り替えるときの横スライド（2026-09-19 遼様のご要望。保護者アプリと同じ作り） =====
   並びは左から ホーム → 出欠 → その他。右の画面へ移るときは中身が右から入って左へ滑り、
   左へ戻るときは左から入って右へ滑る（メニューの下敷きと同じ向き・同じ速さ）。
   「その他」の子画面（デイリーなど）や出退勤記録は、それぞれ親のタブの一員として扱う
   （その他→デイリーのような同じタブの中の移動は滑らせない）。
   動かすのは入ってくる画面だけ。出ていく画面はその場で消す（2枚を同時に出すと、高さの違う画面が重なって跳ねる）。
   動かすのは transform と opacity だけ（レイアウトを動かさない＝名簿のような重い画面でも引っかからない）。
   移動は32px。終わりの状態は元の見た目そのもの（fill-mode を付けない＝終わったら transform が残らない）。
   右から入る画面は動いている間だけ器の右へはみ出すが、器（#tea-app）の overflow-x:clip で切っているので
   横スクロールの幅は生まれず、下のメニューはずれない（保護者アプリで起きた「右へ移るときだけがくつく」の対策を最初から入れてある）。
   動きを減らす設定では下の prefers-reduced-motion で止める */
.tea-view-in-from-right{animation:tea-view-in-from-right var(--tea-tab-motion)}
.tea-view-in-from-left{animation:tea-view-in-from-left var(--tea-tab-motion)}
@keyframes tea-view-in-from-right{from{transform:translateX(32px);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes tea-view-in-from-left{from{transform:translateX(-32px);opacity:0}to{transform:translateX(0);opacity:1}}

/* 上に戻るボタン（スタッフアプリのみ）。アイコンのみで文字を持たないので明るい水色に
   （2026-09-11 SCHOOL Manager合わせ）。46px の丸いボタンで矢印も21.5pxと十分大きいので、
   カレンダーの点（5px）のような屋外での視認性の問題は起きない */
.tea-to-top {
  position: fixed; right: 16px; z-index: 1001;
  bottom: calc(84px + env(safe-area-inset-bottom));
  width: 46px; height: 46px; border-radius: 50%; border: 1px solid var(--border);
  background: var(--surface-glass); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  color: var(--accent); font-size:21.5px; cursor: pointer; box-shadow: var(--shadow-float);
  display: flex; align-items: center; justify-content: center;
  opacity: 1; transition: opacity .2s, transform .2s;
}
.tea-to-top.tea-hidden { display: flex !important; opacity: 0; pointer-events: none; transform: translateY(8px); }

/* カードとトグル */
.tea-card{border:1px solid var(--border-soft);border-radius:var(--radius);padding:10px 10px 6px;margin-bottom:8px;background:var(--surface);box-shadow:var(--shadow);}
.tea-card-title{font-size:17px;font-weight:800;color:var(--text);margin-bottom:6px;border-bottom:1px solid var(--border-soft);padding-bottom:5px;font-variant-numeric:tabular-nums;}
.tea-toggle-group{display:flex;gap:6px;}
.tea-toggle-btn{flex:1;padding:9px 0;border:1.5px solid var(--border);background:var(--surface);border-radius:var(--radius-sm);font-size:14.5px;font-weight:800;cursor:pointer;text-align:center;color:var(--text-sub);font-family:inherit;transition:.12s;}
/* 出欠の色は現場の判断に直結するため従来どおり（出席=緑・遅刻=オレンジ・欠席=赤）。
   青基調にしても、この3色だけは admin と同じ意味・同じ値のまま使う */
.tea-toggle-btn.active-ok{background:var(--lesson);color:#fff;border-color:var(--lesson);}
.tea-toggle-btn.active-late{background:var(--ticket);color:#fff;border-color:var(--ticket);}
.tea-toggle-btn.active-ng{background:var(--absent);color:#fff;border-color:var(--absent);}
.tea-toggle-btn.active-none{background:var(--text-sub);color:#fff;border-color:var(--text-sub);}

/* 並べ替えボタン（「選択中」の状態なので、SCHOOL Managerの選択チップと同じ淡い水色の塗りにする。
   2026-09-11：以前は選んだ方を濃紺で塗っていたが、これは決定・送信のボタンではなく「今どちらを
   選んでいるか」を示す表示なので、明るい水色の塗り＋濃い文字（読みやすさは変えない）にそろえた */
.tea-sort-group { display: flex; gap: 8px; margin-bottom: 12px; }
.tea-sort-btn { flex: 1; padding: 9px 0; border: 1.5px solid var(--accent); background: var(--surface); color: var(--accent-deep); border-radius: var(--radius-sm); font-size:14.5px; font-weight: 800; cursor: pointer; text-align: center; transition: .15s; font-family:inherit; }
.tea-sort-btn.active { background: var(--accent-soft); border-color: var(--accent); color: var(--accent-deep); }

/* バッジデザイン */
.tea-badge-grade { display: inline-block; padding: 2px 9px; border-radius: 99px; font-size:13px; font-weight: 800; margin-right: 6px; }

/* 学年バッジの色分け（受験学年=中3を赤で目立たせる。SCHOOL Managerと同じ規則なので値は据え置き） */
.grade-elem   { background:#e1f0fb; color:var(--study-deep); }
.grade-jh12   { background:var(--lesson-bg); color:var(--lesson-deep); }
.grade-jh3    { background:var(--absent-bg); color:var(--absent-deep); }
.grade-high   { background:var(--extra-bg); color:var(--extra-deep); }
.grade-other  { background:var(--surface-2); color:var(--text-quiet); }

/* 履歴・結果用のバッジ */
.tea-badge-ok{background:var(--lesson-bg);color:var(--lesson-deep); border: 1px solid var(--lesson-line); padding:4px 10px; border-radius:99px; font-size:13px; font-weight:700;}
.tea-badge-ng{background:var(--absent-bg);color:var(--absent-deep); border: 1px solid var(--absent-line); padding:4px 10px; border-radius:99px; font-size:13px; font-weight:700;}
.tea-badge-warn{background:var(--ticket-bg);color:var(--ticket-deep); border: 1px solid var(--ticket-line); padding:4px 10px; border-radius:99px; font-size:13px; font-weight:700;}

/* 実人数サマリー（コマ数ではなく人数） */
.tea-headcount { display: flex; gap: 10px; margin-bottom: 10px; }
.tea-headcount-box { flex: 1; background: var(--surface); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 10px 8px; text-align: center; box-shadow: var(--shadow); }
.tea-headcount-box .num { font-size:28px; font-weight: 800; color: var(--accent-deep); line-height: 1; font-variant-numeric:tabular-nums; }
.tea-headcount-box .label { font-size:13px; color: var(--text-dim); font-weight: 700; margin-top: 5px; }
/* 授業と自習で分けた人数（2026-10-10）。見出し（授業／自習）の下に「来る予定」「出席確定」を2つ並べる */
.tea-headcount-cap { font-size:14px; font-weight: 800; color: var(--text); margin-bottom: 6px; }
.tea-headcount-pair { display: flex; justify-content: space-around; gap: 6px; }
.tea-headcount-pair > div { flex: 1; min-width: 0; }

/* 出欠画面の「いつの情報か」の1行（2026-09-11 の点検で追加）。
   通信に失敗したときは名簿を書き換えない方針にしたので、代わりにここで古さを知らせる。
   ふだんは名簿の邪魔をしない薄い帯。更新できていないときだけ注意色（赤）に変わり、
   「今すぐ更新」が出る。文字は 13px（このアプリの下限）。 */
.tea-att-freshness { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap;
  margin: 0 0 10px; padding: 7px 12px; border-radius: var(--radius-sm);
  background: var(--surface-2); color: var(--text-quiet); font-size:13px; font-weight:700; line-height:1.5; }
.tea-att-freshness.is-stale { background: var(--absent-bg); color: var(--absent-deep); border: 1px solid var(--absent-line); }
.tea-att-fresh-btn { border: 1px solid var(--absent-line); background: var(--surface); color: var(--absent-deep);
  border-radius: 99px; padding: 6px 14px; font-size:13px; font-weight:700; font-family: inherit; cursor: pointer; }

/* レギュラー講師（閲覧専用）向け表示。
   「今は自分では記録できない」と気づいてもらう必要があるので、青ではなく注意色（オレンジ系）で出す */
.tea-readonly-note { background: var(--ticket-bg); border: 1px solid var(--ticket-line); color: var(--ticket-deep); border-radius: var(--radius-sm); padding: 11px 14px; font-size:14.5px; margin-bottom: 12px; line-height: 1.6; font-weight:700; }
.tea-status-view { font-size:14.5px; font-weight: 800; padding: 5px 13px; border-radius: 99px; white-space: nowrap; }
.tea-status-view.is-ok { background: var(--lesson-bg); color: var(--lesson-deep); border: 1px solid var(--lesson-line); }
.tea-status-view.is-ng { background: var(--absent-bg); color: var(--absent-deep); border: 1px solid var(--absent-line); }
.tea-status-view.is-none { background: var(--surface-2); color: var(--text-quiet); border: 1px solid var(--border); }
.hidden { display: none !important; }

/* ===== 狭いスマホ（iPhone SE など 400px以下）向けの調整 =====
   スタッフアプリは授業中に片手で操作する。タップ対象を小さくしないことを優先する。 */
@media (max-width: 400px) {
  #tea-app { padding: 16px 12px calc(84px + env(safe-area-inset-bottom)); border-radius: 0; box-shadow: none; }

  .tea-card { padding: 14px; }
  .tea-card-title { font-size:17px; }

  /* 出欠のボタンは横3つのまま（縦に積むと1人分が長くなり、名簿の見通しが悪くなる）。
     余白だけ詰めて、指で押せる高さは維持する */
  .tea-toggle-group { gap: 4px; }
  .tea-toggle-btn { padding: 10px 0; font-size:13.5px; }

  /* 名前と出欠ボタンが1行に収まらない場合は、ボタンを下の行に回して重ならないようにする */
  .tea-att-row { flex-wrap: wrap; }
  .tea-att-row > div:last-child { margin-left: auto; }

  .tea-home-grid { gap: 10px; }
  .tea-home-btn { padding: 22px 8px; font-size:15.5px; }
  .tea-home-btn i { font-size:31px; }
  .tea-home-btn-wide { padding: 16px 14px; }

  .tea-headcount { gap: 8px; }
  .tea-headcount-box { padding: 12px 8px; }
  .tea-headcount-box .num { font-size:29px; }

  .tea-btn-small { padding: 8px 10px; font-size:13px; }
  .tea-status-view { font-size:13.5px; padding: 5px 11px; }
  .tea-sort-btn { font-size:13.5px; }
}

@media (max-width: 340px) {
  #tea-app { padding: 14px 10px calc(84px + env(safe-area-inset-bottom)); }
  .tea-home-btn { padding: 18px 6px; font-size:15px; }
  .tea-toggle-btn { font-size:13px; }
  /* 下のメニューは3つとも同じ幅（2026-09-19 に中央の丸をやめた）。320px幅でも1つ約90pxあり、
     「ホーム」「その他」は折り返さない（.tea-nav-btn の white-space:nowrap） */
  .tea-nav-btn { font-size:13px; }
}

/* ===== 出欠名簿の1行（名前を上、大きな操作ボタンを下に）===== */
   文字の1.2倍化で1人が約110pxになり、旧版（約70px）の1.5倍スクロールが要るようになっていた。8/30に91pxまで詰め、
   同日「もう少し詰めてよい」で余白とボタン高さをさらに詰めた（ボタンは42px。文字は下限13pxを割らない） */
.tea-att-row { padding: 5px 0; border-bottom: 1px solid var(--border-soft); }
.tea-att-row:last-child { border-bottom: none; }
.tea-att-head { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 3px; }
.tea-att-name { font-size:16px; font-weight: 800; color: var(--text); }
/* 名前の右のバッジ。並びは「◯/◯コマ目」→ 種別で、種別バッジが一番右に固定される（2026-08-31 遼様指示）。
   複数コマの生徒だけ、その左に「◯/◯コマ目」が付く。
   2つのバッジは1つの塊として扱う（nowrap）。折り返しを許すと、名前が長い行で種別だけが
   次の行に落ち、一覧の中で種別の位置がばらついて目が泳ぐ。塊ごと次の行へ回る方がまし */
.tea-att-meta { margin-left: auto; display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: flex-end; align-items: center; gap: 4px; }
.tea-att-actions { display: flex; gap: 8px; }
/* タップしやすい大きめのボタン（授業中に片手で押す） */
.tea-att-actions .tea-toggle-btn { padding: 6px 0; font-size:15px; border-radius: 10px; min-height: 42px; }
.tea-att-actions .tea-att-move { flex: 0 0 auto; min-width: 56px; padding: 6px 8px; font-size:14px; border-radius: 10px; min-height: 42px; }
/* 閲覧専用（レギュラー講師）の状態表示 */
.tea-att-row.readonly .tea-att-meta .tea-status-view { font-size:15px; }

/* ===== 記録済みの行（送信後ロック。2026-08-31 遼様決定2）=====
   状態（出席・欠席）を色つきで見せ、右端に小さな「修正」を置く。
   出席済みの人を後半のコマへスクロールする途中で誤って欠席にする事故を防ぐため、
   送信済みの行は「修正」を押さないと出欠のボタンが出ない。
   行の高さは3ボタンのとき（42px）と同じにそろえ、名簿の密度（1人 72px 前後）を崩さない */
.tea-att-actions.is-recorded { align-items: center; justify-content: space-between; min-height: 42px; }
.tea-att-actions.is-recorded .tea-status-view { font-size:15px; }
.tea-att-actions.is-recorded .tea-status-view i { font-size:13px; margin-right: 2px; }
/* 「修正」は小さく見せるが、当たり判定は44px四方（指で押す最小サイズ）。
   ボタン自体は透明で大きく、中の札（.tea-att-revise-pill）だけを小さく描く。
   上下の -1px は、44px の当たり判定で行が 42px より高くならないようにするため */
.tea-att-revise {
  display: flex; align-items: center; justify-content: flex-end;
  min-width: 44px; min-height: 44px; margin: -1px 0; padding: 0 0 0 8px;
  background: none; border: none; cursor: pointer; font-family: inherit;
}
.tea-att-revise-pill {
  display: inline-flex; align-items: center; gap: 4px; padding: 5px 11px; border-radius: 99px;
  border: 1.5px solid var(--border); background: var(--surface); color: var(--accent-deep);
  font-size:13.5px; font-weight: 800; white-space: nowrap; transition: background .15s, color .15s, border-color .15s;
}
.tea-att-revise:hover .tea-att-revise-pill, .tea-att-revise:active .tea-att-revise-pill { background: var(--accent-soft); border-color: var(--accent); }
.tea-att-revise:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; border-radius: 10px; }
/* 修正中の行：左に青い線を引き、名前の横に「修正中」の札と「やめる」を出す。
   「やめる」を押すと記録済み（ロック）の行に戻る。押し間違えて開けた行を放置しなくて済む */
.tea-att-row.is-revising { box-shadow: inset 3px 0 0 var(--accent); padding-left: 8px; }
.tea-att-revising { display: inline-block; padding: 2px 8px; border-radius: 99px; background: var(--accent-soft); color: var(--accent-deep); font-size:13px; font-weight: 800; white-space: nowrap; }
.tea-att-revise-cancel {
  background: none; border: none; color: var(--text-dim); font-size:13px; font-weight: 700; cursor: pointer; font-family: inherit;
  padding: 0 8px; min-height: 36px; margin: -6px 0; text-decoration: underline; text-underline-offset: 3px;
}
.tea-att-revise-cancel:hover { color: var(--accent-deep); }
/* 「未入力にする」＝修正中の行を、出欠を付けていない状態に戻す選択（2026-09-11 スタッフのテスト指摘）。
   「やめる」と同じ小さな文字リンクの見た目でそろえ、選んでいる間だけ .tea-status-view.is-none と
   同じ色（中立のグレー）の札に変わって、いま何を送ろうとしているかが分かるようにする */
.tea-att-unset-btn {
  background: none; border: none; color: var(--text-dim); font-size:13px; font-weight: 700; cursor: pointer; font-family: inherit;
  padding: 0 8px; min-height: 36px; margin: -6px 0; text-decoration: underline; text-underline-offset: 3px;
}
.tea-att-unset-btn:hover { color: var(--accent-deep); }
.tea-att-unset-btn.is-active {
  color: var(--text-quiet); background: var(--surface-2); border: 1px solid var(--border);
  border-radius: 99px; padding: 3px 10px; text-decoration: none; font-weight: 800;
}

/* ===== コマのカードの開閉（アコーディオン。2026-08-31 遼様決定3：既定は開いた状態）=====
   見出しはボタン。押すとそのコマの名簿を畳み、畳んだ見出しには「未記録◯名」を出す。
   出欠の記録が終わったコマを畳めば、残りのコマに集中できる。
   見出しの当たり判定は 40px（カードは1日に多くて7枚なので、1人分の行ほど詰めなくてよい） */
.tea-att-card { padding-top: 6px; }
.tea-att-card-title {
  display: flex; align-items: center; gap: 8px; width: 100%; min-height: 40px;
  background: none; border: none; border-bottom: 1px solid var(--border-soft);
  padding: 0 0 4px; margin: 0 0 6px; text-align: left; cursor: pointer; font-family: inherit;
  font-size:17px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums;
}
.tea-att-card-title:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; border-radius: 8px; }
.tea-att-card-tx { flex: 1 1 auto; min-width: 0; }
/* 「未記録◯名」は畳んだときだけ。開いているときは名簿そのものが見えるので出さない */
.tea-att-card-pending { display: none; padding: 2px 9px; border-radius: 99px; background: var(--absent-bg); color: var(--absent-deep); border: 1px solid var(--absent-line); font-size:13px; font-weight: 800; white-space: nowrap; }
.tea-att-card.is-collapsed .tea-att-card-pending { display: inline-block; }
.tea-att-card-chev { font-size:15px; color: var(--text-dim); transition: transform .15s; flex: 0 0 auto; }
.tea-att-card.is-collapsed .tea-att-card-chev { transform: rotate(-90deg); }
.tea-att-card.is-collapsed .tea-att-card-title { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.tea-att-card.is-collapsed .tea-att-card-body { display: none; }
.tea-att-card.is-collapsed { padding-bottom: 6px; }

/* ===== 時間帯の目次（出欠画面の上部の帯の下に貼り付く。2026-08-31 遼様指示）=====
   帯（.tea-user-info）と同じく器の左右余白ぶん外へ広げ、帯の直下に貼り付く（top は JS が帯の高さを実測して入れる）。
   チップは「開始時刻」と「未記録◯」の2段。横に並べて1行に収め、入りきらなければ横にスクロールする
   （2行に折り返すと貼り付く部分が高くなり、名簿が隠れる） */
.tea-slot-index {
  position: sticky; z-index: 39;
  display: flex; gap: 6px; overflow-x: auto; scrollbar-width: thin;
  margin: -16px -14px 12px; padding: 6px 14px 7px;
  background: rgba(233,241,247,.96); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--border); box-shadow: 0 2px 8px rgba(40,110,160,.06);
}
.tea-slot-chip {
  flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; gap: 1px;
  min-width: 64px; min-height: 44px; padding: 4px 8px; border-radius: var(--radius-sm);
  border: 1.5px solid var(--border); background: var(--surface); cursor: pointer; font-family: inherit;
  transition: background .15s, border-color .15s;
}
.tea-slot-chip:hover, .tea-slot-chip:active { background: var(--accent-soft); border-color: var(--accent); }
.tea-slot-chip:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.tea-slot-chip-tm { font-size:15px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; line-height: 1.1; }
.tea-slot-chip-n { font-size:13px; font-weight: 700; color: var(--text-dim); line-height: 1.1; white-space: nowrap; font-variant-numeric: tabular-nums; }
/* 未記録が残っているコマは数字を赤く（見落とし防止。色だけでなく「未記録」の文字も伴う） */
.tea-slot-chip.has-pending .tea-slot-chip-n { color: var(--absent-deep); }

/* デイリー（閲覧のみ）の1行。区切り線は生徒1人ぶんの包み（.tea-daily-row）に引く：
   名前の行（.tea-daily-head）に引くと、その下の「体験 2回目／全4回」が線の外＝次の生徒の真上に落ちる（2026-10-10 の点検）。
   自習の行も同じ包みで描く（2026-10-10 自習の出欠。以前の本のアイコン付きの行 .tea-study-row は、
   「自習」の札＋遅刻連絡＋出欠を出す形に置き換えたので消した） */
.tea-daily-row { border-bottom: 1px solid var(--border-soft); }
.tea-daily-head { padding: 6px 0; margin-bottom: 0; }
.tea-daily-head .tea-att-name { font-size:17px; }
/* デイリーの自習の行の出欠（付いているときだけ出す）。名簿の札と並ぶので、出欠画面の状態表示より一回り小さく */
.tea-daily-head .tea-status-view { font-size:13px; padding: 3px 10px; }

/* 授業カテゴリのバッジ（塗り分け。通常/振替/季節講習/追加授業） */
/* 授業カテゴリのバッジ：色相＝どの授業か、塗り／枠線＝そのままか振替か（計6種類）。
   振替を単色にすると自習の青と衝突するため、色相は基底カテゴリに割り当てている。
   admin の .badge-* と同じ意味・同じ値なので、青基調にしても値は変えない。 */
/* 種別バッジ。2026-09-18 遼様指示でアイコンをやめ、文字だけにした（gap は他の中身が増えたとき用に残す）。
   振替も**元の種別と同じ色**にそろえたので、振替専用の色指定（.tea-cat-*-mk）は廃止した。
   振替かどうかは「通常・振替」「季節・振替」という文字だけで見分ける */
.tea-cat { display:inline-flex; align-items:center; gap:5px; padding:4px 10px; border-radius:99px; font-size:13px; font-weight:700; border:1px solid transparent; }
.tea-cat-normal { background:var(--lesson-bg); color:var(--lesson-deep); }   /* 通常授業・通常の振替=緑 */
.tea-cat-season { background:var(--ticket-bg); color:var(--ticket-deep); }  /* 季節講習・季節の振替=オレンジ */
.tea-cat-extra  { background:var(--extra-bg); color:var(--extra-deep); }     /* 追加授業・追加の振替=紫 */
.tea-cat-trial  { background:var(--trial-bg); color:var(--trial-deep); }   /* 体験授業・体験の振替=ティール（無料・見込み生） */
.tea-cat-service{ background:#fbe7f0; color:var(--service-deep); }   /* サービス・サービスの振替=ピンク（無料・お礼/お詫び） */
.tea-cat-study  { background:var(--study-bg); color:var(--study-deep); }   /* 自習=青系（カテゴリとは別枠） */

/* 「◯/◯コマ目」バッジ（右寄せ・数字が揃うように） */
.tea-slotcount { display:inline-flex; align-items:center; padding:4px 10px; border-radius:99px; font-size:13px; font-weight:700; background:var(--surface-2); color:var(--text-quiet); font-variant-numeric:tabular-nums; }
/* チケット授業の「体験 2回目／全4回」（2026-10-10）。名前の下に文字だけで1行。札にしないのは、メタ情報の札（折り返さない）を増やさないため */
.tea-tkp { font-size:13px; font-weight:700; color:var(--text-quiet); margin:0 0 4px; font-variant-numeric:tabular-nums; }

/* ===== 汎用モーダル（alert/confirm の置き換え）===== */
.tea-modal-overlay {
  position: fixed; inset: 0; background: var(--overlay); z-index: 9800;
  display: flex; align-items: center; justify-content: center; padding: 24px;
}
.tea-modal-card {
  position: relative;   /* 右上の×（.tea-modal-x）の基準 */
  background: var(--surface); border-radius: var(--radius); padding: 26px 22px 22px; width: 100%; max-width: 340px;
  text-align: center; box-shadow: var(--shadow-hover); animation: tea-modal-pop .28s cubic-bezier(.2,1.4,.4,1) both;
  /* 内容が画面より高くなったら、ポップアップの中だけスクロールする（2026-08-19）。
     これが無いと、退勤の打刻（内容の確認＋承認者＋暗証番号＋ボタン3つ）のような
     背の高いポップアップで、下の「キャンセル」が画面の外に出たまま届かなくなる
     （スマホの縦画面 844px で実際に発生。overlay は align-items:center なので
       上下とも切れて、スクロールのしようが無かった） */
  max-height: calc(100vh - 48px);   /* 48px = overlay の padding 24px × 上下 */
  overflow-y: auto;
}
@keyframes tea-modal-pop { 0%{transform:scale(.85);opacity:0} 100%{transform:scale(1);opacity:1} }
.tea-modal-icon { width: 60px; height: 60px; margin: 0 auto 14px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size:39px; }
.tea-modal-icon.ok   { background:var(--lesson-bg); color:var(--lesson-deep); }
.tea-modal-icon.warn { background:var(--ticket-bg); color:var(--ticket-deep); }
.tea-modal-icon.ng   { background:var(--absent-bg); color:var(--absent-deep); }
.tea-modal-card h3 { margin: 0 0 8px; font-size:21.5px; font-weight: 800; color: var(--text); }
.tea-modal-card #tea-modal-body { font-size:15.5px; color: var(--text-sub); line-height: 1.6; margin-bottom: 20px; }
.tea-modal-actions { display: flex; gap: 10px; }
.tea-modal-actions .tea-btn { margin: 0; }
/* 選択肢が3つ以上あるポップアップ（打刻の承認）は縦に積む。
   横並びのままだと「あとで承認（上長がいないとき）」が2〜3行に折れて読めなくなる */
.tea-modal-actions.is-stack { flex-direction: column; }
/* 右上の×（2026-08-30 遼様「閉じずに前の画面に戻れない場合がある」）。
   背景タップ・Esc と合わせて、どのポップアップも同じ3つで閉じられる。
   JS（initModalDismiss）が全ポップアップに同じものを差し込むので、画面ごとに作法が違うことは起きない。
   当たり判定は44px四方（指で押す最小サイズ）。色は本部アプリの .modal-x と同じ変数 */
.tea-modal-x {
  position: absolute; top: 6px; right: 6px; z-index: 3;
  width: 44px; height: 44px; display: flex; align-items: center; justify-content: center;
  border: 1px solid transparent; border-radius: var(--radius-sm); background: none;
  color: var(--text-dim); font-size: 22px; cursor: pointer; font-family: inherit; line-height: 1;
}
.tea-modal-x:hover, .tea-modal-x:active { background: var(--surface-2); color: var(--text); border-color: var(--border); }
.tea-modal-x:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }

/* ===== 社内お知らせ（イントラ。2026-08-13 遼様決定：既読は明示ボタンのみ） ===== */
/* .tea-nav-btn の position:relative（バッジを置くため）は、タブの定義の側にまとめた（2026-09-19） */
/* 未読の赤は「見落としてはいけない」印。青基調でも値を変えない（授業マイページと共通）。
   大きさ・位置は保護者アプリの .mah-nav-badge と同じ（文字13px・余白4px 10px＝高さ約21px）。
   文字だけ13pxで余白と位置が据え置きだったので、2026-08-30 にそろえた。
   大きくなったぶんタブの文字にかぶらないよう、上外側へ逃がす（top / right） */
.tea-nav-badge{animation:tea-badge-bounce 3.2s ease-in-out infinite;position:absolute;top:-4px;right:calc(50% - 26px);min-width:22px;height:22px;padding:0 6px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;border-radius:999px;background:var(--unread);color:#fff;font-size:13px;font-weight:900;line-height:1;font-variant-numeric:tabular-nums;box-shadow:var(--shadow-unread);pointer-events:none}
/* 未対応が残っている間、数秒おきに小さく跳ねて気づきやすくする（授業マイページと共通の演出・2026-08-17指示） */
@keyframes tea-badge-bounce{
  0%,100%{transform:translateY(0)}
  4%{transform:translateY(-4px)}
  8%{transform:translateY(0)}
  12%{transform:translateY(-2px)}
  16%{transform:translateY(0)}
}
@media (prefers-reduced-motion: reduce){
  .tea-nav-badge{animation:none}
  /* 下のメニューで画面を切り替えるときは、画面も下敷きも一瞬で切り替える（保護者アプリと同じ扱い。2026-09-19）。
     打ち消しは元の定義より後ろに置く（同じ詳細度なら後勝ち） */
  .tea-view-in-from-right,.tea-view-in-from-left{animation:none}
  .tea-nav-ink,.tea-nav-btn{transition:none}
}
.tea-notice-lbl{font-size:13px;font-weight:800;letter-spacing:.04em;color:var(--text-dim);margin:0 0 8px}
.tea-notice-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:13px 14px;margin-bottom:8px;
  box-shadow:var(--shadow)}
.tea-notice-card.is-read{opacity:.68}
.tea-notice-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.tea-notice-title{font-weight:800;font-size:15.5px;color:var(--text)}
.tea-unread-chip{background:var(--unread);color:#fff;font-size:13px;font-weight:800;padding:2px 8px;border-radius:99px;flex:0 0 auto}
.tea-read-chip{background:var(--lesson-bg);color:var(--lesson-deep);font-size:13px;font-weight:800;padding:2px 8px;border-radius:99px;flex:0 0 auto}
.tea-notice-body{font-size:14.5px;color:var(--text-sub);margin-top:6px;line-height:1.6}
.tea-notice-due{font-size:13px;color:var(--ticket-deep);font-weight:800;margin-top:6px}

/* ===== 生徒検索のカレンダー表示（2026-08-13 遼様指示：他画面と同じ「点＋タップで一覧」方式） ===== */
.tea-cal-nav{display:flex;align-items:center;justify-content:center;gap:18px;margin:16px 0 12px}
/* アイコンのみのボタン（矢印だけで文字を持たない）なので明るい水色に（2026-09-11 SCHOOL Manager合わせ） */
.tea-cal-nav button{background:var(--accent-soft);border:none;color:var(--accent);width:30px;height:30px;border-radius:var(--radius-sm);font-size:15px;cursor:pointer;padding:0;font-family:inherit}
.tea-cal-month-label{font-size:17.5px;font-weight:800;min-width:110px;text-align:center}
.tea-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.tea-cal-dow{text-align:center;font-size:13px;font-weight:800;color:var(--text-dim);padding:2px 0 6px}
.tea-cal-day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  border:1.5px solid transparent;border-radius:var(--radius-sm);cursor:pointer;font-size:15px;font-weight:700;color:var(--text);background:var(--surface-2);transition:.12s}
.tea-cal-day:hover{background:var(--surface-3)}
.tea-cal-day.empty{visibility:hidden}
/* 「今日」の印の付け方も本部の .cal-day.today と同じ（枠線を薄い主色にするだけで、
   地の色は他のマスと変えない）。以前はここだけ白地＋青文字だった */
.tea-cal-day.today{border-color:var(--accent-dim);color:var(--text);font-weight:800}
.tea-cal-day.selected{background:var(--accent-deep);border-color:var(--accent-deep);color:#fff;box-shadow:var(--shadow-hover)}
.tea-cal-day.selected .tea-cal-dot{background:#fff}
/* 予定がある日の点。5pxしかないので、装飾用の明るい青だと屋外で消える */
.tea-cal-dot{width:5px;height:5px;border-radius:50%;background:var(--accent-deep);display:inline-block}
/* カレンダーの下に出す、その日の明細 */
.tea-detail-row{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--border-soft);font-size:17px}
.tea-detail-slot{font-weight:800;font-variant-numeric:tabular-nums}

/* ===== 生徒ピッカー（打ち込んで絞り込む生徒選択）=====
   SCHOOL Manager の .student-picker-box と同じ操作感・同じ構造。
   スタッフアプリは「Managerの簡易版」という位置づけなので、寸法だけスマホ向けに大きくして
   （タップ対象と文字を確保）、色は teacher の変数に置き換えている。
   Manager 側は --text-faint を使っているが、このアプリは明るい場所で見るため
   文字には使わない方針なので --text-dim / --text-sub に読み替えた。 */
.tea-picker-box{position:relative;margin:0 0 15px}
/* 文字サイズ16pxは .tea-input と同じ理由（iOSが16px未満の入力欄でページを勝手に拡大する） */
.tea-picker-input{
  display:block;width:100%;height:48px;padding:0 36px 0 14px;
  border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:19px;box-sizing:border-box;
  background:var(--surface);font-family:inherit;color:var(--text);
  -webkit-appearance:none;appearance:none;
}
.tea-picker-input::placeholder{color:var(--text-dim);opacity:1;font-size:15px}   /* 案内文が入力欄からはみ出さない大きさ（2026-08-30） */
/* フォーカス枠は明るい水色（2026-09-11 SCHOOL Manager合わせ） */
.tea-picker-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
/* 候補を開くと箱自体が縦に伸びるので、top:50% ではなく入力欄の高さ48pxの中央に固定する */
.tea-picker-caret{position:absolute;right:14px;top:24px;transform:translateY(-50%);color:var(--text-dim);font-size:13.5px;pointer-events:none}
.tea-picker-menu{
  position:absolute;left:0;right:0;top:52px;z-index:60;max-height:300px;overflow-y:auto;
  background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-hover);
}
/* 学年の見出し。スクロールしても残るようにして「今どの学年を見ているか」を見失わせない */
.tea-picker-group{position:sticky;top:0;padding:6px 13px;font-size:13px;font-weight:800;color:var(--text-sub);background:var(--surface-2)}
.tea-picker-item{display:flex;align-items:center;gap:8px;padding:11px 13px;cursor:pointer;font-size:17px;color:var(--text)}
.tea-picker-item:hover,.tea-picker-item.active{background:var(--accent-soft)}
.tea-picker-item .tea-badge-grade{margin-right:0}
/* 漢字で出しているときだけ添える読み（カタカナ） */
.tea-picker-item .kana{font-size:13px;color:var(--text-dim);margin-left:auto}
.tea-picker-empty{padding:14px 13px;font-size:15px;color:var(--text-sub)}

/* ===== 生徒検索の結果カード・生徒カルテの申し送り ===== */
.tea-profile-rows{font-size:17px;line-height:1.9}
.tea-notes-lead{font-size:14.5px;color:var(--text-sub);margin:0 0 10px}
.tea-inline-form{display:flex;gap:8px}
.tea-inline-form .tea-input{margin:0!important;flex:1}
.tea-inline-btn{width:auto;padding:0 18px;flex:0 0 auto}
.tea-inline-form-add{margin-top:12px;gap:6px}
.tea-note-item{padding:9px 0;border-bottom:1px solid var(--border-soft)}
.tea-note-item.is-resolved{opacity:.55}
.tea-note-body{font-size:15.5px;font-weight:700;color:var(--text)}
.tea-note-meta{font-size:13px;color:var(--text-dim);margin-top:3px}
.tea-note-actions{display:flex;gap:6px;margin-top:6px}

/* 申し送りの「サイン」。色は本部が意味を決めて付けるラベルなので、
   青基調に寄せず7色のまま残す（塗りは薄地・文字は濃色で、明るい場所でも読めるようにしてある） */
.tea-sign{padding:4px 11px;border-radius:99px;font-size:13.5px;font-weight:800;display:inline-block}
.tea-sign-gray  {background:var(--surface-2); color:var(--text-sub);}
.tea-sign-red   {background:var(--absent-bg); color:#c2453e;}
.tea-sign-orange{background:var(--ticket-bg); color:var(--ticket-ink);}
.tea-sign-green {background:var(--lesson-bg); color:var(--lesson-ink);}
.tea-sign-blue  {background:var(--study-bg);  color:#2f6fb0;}
.tea-sign-purple{background:var(--extra-bg);  color:#63469f;}
.tea-sign-pink  {background:#fbe7f0;          color:#a02a67;}
.tea-sign-list{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}

/* ===== 生徒カルテ（2026-08-31 遼様要望 5・6）=====
   種類ごとのブロックを1枚のカードに縦に積む。科目はチップ、面談などの長文は段落、それ以外は箇条書き。
   各ブロックの下に追記欄。削除の入口は置かない（削除はリーダー以上＝本部画面） */
.tea-karte-block{padding:8px 0 12px;border-bottom:1px solid var(--border-soft)}
.tea-karte-block:last-child{border-bottom:none;padding-bottom:4px}
.tea-karte-lbl{font-size:13.5px;font-weight:800;letter-spacing:.03em;color:var(--text-dim);margin-bottom:5px}
.tea-karte-empty{font-size:14.5px;color:var(--text-dim);margin:0 0 6px}
.tea-karte-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.tea-karte-chip{padding:4px 12px;border-radius:99px;font-size:14.5px;font-weight:800;background:var(--accent-soft);color:var(--accent-deep)}
.tea-karte-list{margin:0 0 6px;padding-left:20px;font-size:15.5px;line-height:1.7;color:var(--text)}
.tea-karte-list li{font-weight:700}
.tea-karte-note{font-size:13px;color:var(--text-sub);margin-left:6px}
.tea-karte-para{padding:6px 0;border-bottom:1px dashed var(--border-soft)}
.tea-karte-para:last-of-type{border-bottom:none}
.tea-karte-text{font-size:15.5px;font-weight:700;color:var(--text);line-height:1.6}
/* 追記欄。科目は「選択肢＋（その他のときだけ）中身」で2行になりうるので折り返せる並びにする */
.tea-karte-add{display:flex;flex-wrap:wrap;align-items:flex-end;gap:6px;margin-top:6px}
.tea-karte-add .tea-input{margin:0!important;flex:1 1 160px}
/* 科目の選択肢は「選ぶもの」と分かるよう、ブラウザ標準の矢印つきの見た目に戻す（.tea-input は矢印を消しているため） */
.tea-karte-add select.tea-input{-webkit-appearance:menulist!important;appearance:menulist!important;padding-right:8px!important}
.tea-karte-add .tea-karte-textarea{height:auto!important;min-height:72px;padding:10px 14px!important;flex:1 1 100%;resize:vertical;line-height:1.5}
.tea-karte-add .tea-btn-small{flex:0 0 auto;height:48px}
/* 成績の写真の一覧。1行＝1枚。押すとポップアップで開く */
.tea-doc-list{display:flex;flex-direction:column;gap:6px;margin-bottom:4px}
.tea-doc-row{display:flex;align-items:center;gap:10px;width:100%;padding:11px 12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;font-family:inherit;text-align:left;color:var(--text)}
.tea-doc-row:hover{border-color:var(--accent);background:var(--accent-soft)}
/* アイコンは明るい水色（2026-09-11 SCHOOL Manager合わせ）。行の題名は .tea-doc-title 側で
   --text を使っており、アイコンの色を変えても題名の読みやすさは落ちない */
.tea-doc-row i{font-size:19px;color:var(--accent);flex:0 0 auto}
.tea-doc-title{font-size:15.5px;font-weight:800;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tea-doc-meta{font-size:13px;color:var(--text-dim);flex:0 0 auto;white-space:nowrap}
.tea-doc-img{display:block;max-width:100%;max-height:70vh;margin:0 auto;border-radius:10px}
/* 写真を見せるポップアップは 340px では狭いので広げる（画面が狭ければ画面幅いっぱい） */
.tea-modal-card.is-wide{max-width:720px}
/* 成績の写真の追加（2026-09-11）。リーダー以上にだけ出る。<label> の中に画像を選ぶ欄を隠して入れるので、
   押すとスマホの「写真を撮る／写真ライブラリ」がそのまま開く（display:none にすると開かない機種がある） */
.tea-doc-add{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:8px;height:48px;position:relative;overflow:hidden;font-size:15px}
.tea-doc-add i{font-size:16px}
.tea-doc-file{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0);pointer-events:none}
.tea-doc-add-note{font-size:13px;color:var(--text-dim);margin:6px 0 0}
/* 登録前の確認ポップアップ：選んだ写真の見本と、種別・対象年月・タイトル */
.tea-doc-preview{display:block;max-width:100%;max-height:34vh;margin:0 auto 10px;border-radius:10px}
.tea-doc-up-lbl{display:block;font-size:13.5px;font-weight:800;color:var(--text-dim);margin:8px 0 4px;text-align:left}
.tea-doc-up-field{width:100%;box-sizing:border-box;margin:0!important}
select.tea-doc-up-field{-webkit-appearance:menulist!important;appearance:menulist!important;padding-right:8px!important}

/* ===== 今日の申し送り（2026-09-17。2026-09-11 スタッフのテスト No.238「開校前：申し送りを読む」）=====
   ホームのいちばん上。お知らせと同じ器（白いカード・見出しラベル）にそろえて、
   ホームの中で読みものの形が2つに割れないようにする。
   まだ読んでいない行だけを立てる：左に赤い帯を入れ、読んだ行は文字ごと沈める（.is-read）。
   赤は既存の「未読・未対応」の意味（--unread）そのままで、新しい色は足していない。
   本文はここに出さないので、行の高さは2段（生徒の行＋書いた人と時刻）に収まる */
#tea-handovers .tea-notice-lbl{display:flex;align-items:center;gap:8px}
.tea-ho-count{background:var(--unread);color:#fff;font-size:13px;font-weight:800;padding:2px 8px;border-radius:99px}
.tea-ho-lead{font-size:13px;color:var(--text-sub);margin:0 0 8px;line-height:1.5}
.tea-ho-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:2px 14px;margin-bottom:8px;box-shadow:var(--shadow)}
.tea-ho-row{padding:11px 0 12px;border-bottom:1px solid var(--border-soft)}
.tea-ho-row:last-child{border-bottom:none}
/* 未読の行だけ左に赤い帯。色だけに頼らないよう、右端の「未読」の札と必ず対で出す */
.tea-ho-row.is-unread{border-left:3px solid var(--unread);padding-left:10px;margin-left:-10px}
.tea-ho-row.is-read{opacity:.68}
.tea-ho-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.tea-ho-head .tea-badge-grade{margin-right:0;flex:0 0 auto}
/* 未読・読了の札はいつも行のいちばん右。名前と区分が長くて折り返した日でも、
   目で追う位置が動かないようにする（お知らせのカードと同じ見え方） */
.tea-ho-head .tea-unread-chip,.tea-ho-head .tea-read-chip{margin-left:auto}
.tea-ho-name{font-weight:800;font-size:15.5px;color:var(--text)}
.tea-ho-cat{background:var(--surface-2);color:var(--text-quiet);font-size:13px;font-weight:800;padding:2px 8px;border-radius:99px}
/* 常設＝ずっと出続ける申し送り。今日書かれたものと見分けるための札（急ぎの赤とは別の色にする） */
.tea-ho-pin{background:var(--accent-soft);color:var(--accent-deep);font-size:13px;font-weight:800;padding:2px 8px;border-radius:99px}
.tea-ho-meta{display:flex;align-items:center;gap:10px;margin-top:4px;font-size:13px;color:var(--text-sub)}
.tea-ho-by{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tea-ho-at{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.tea-ho-acts{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}

/* ===== 誕生日が近い生徒（2026-08-31 遼様の決定 7／2026-09-11 スタッフのテスト指摘で前後1週間に拡張）=====
   お知らせの下に別枠で出す。連絡ではなく覚え書きなので、既読ボタン・未読チップは付けない。
   当日はオレンジ（--ticket 系）で強調する。赤は「未対応」の意味で使っているので使わない。
   過ぎた生徒（is-past）は、これからの生徒と見分けられる程度に文字を淡くするだけにとどめる
   （もう対応しようがない過去なので、当日ほど目立たせる必要は無い） */
#tea-birthdays .tea-notice-lbl{margin-top:14px}
.tea-bday-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:4px 14px;margin-bottom:8px;box-shadow:var(--shadow)}
.tea-bday-row{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--border-soft);font-size:15.5px}
.tea-bday-row:last-child{border-bottom:none}
.tea-bday-row .tea-badge-grade{margin-right:0;flex:0 0 auto}
.tea-bday-name{font-weight:800;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tea-bday-date{font-weight:700;color:var(--text-sub);font-variant-numeric:tabular-nums;white-space:nowrap}
.tea-bday-row.is-past .tea-bday-name,.tea-bday-row.is-past .tea-bday-date{color:var(--text-dim)}
.tea-bday-in{font-size:13px;font-weight:800;color:var(--text-dim);white-space:nowrap}
.tea-bday-today{background:var(--ticket);color:#fff;font-size:13px;font-weight:800;padding:3px 9px;border-radius:99px;white-space:nowrap}
.tea-bday-row.is-today .tea-bday-name,.tea-bday-row.is-today .tea-bday-date{color:var(--ticket-ink)}

/* ===== マンスリーサマリーの1行 ===== */
.tea-month-row{display:flex;justify-content:space-between;padding:4px 0;font-size:15px}
/* 「空き」は緑で伝えるが、白地に置く文字なので塗り用の --lesson ではなく濃い方を使う */
.tea-free-count{color:var(--lesson-ink);font-weight:800}

/* ===== 出退勤記録（2026-08-18） =====
   教室で立ったまま片手で押すので、ボタンは大きく・押し間違いが起きない間隔にする。
   金額はこの画面に一切出さない（単価は個別の取り決めなので、覗かれても分からないように） */
.tea-tc-card {
  background: var(--surface); border: 1px solid var(--border-soft); border-radius: var(--radius);
  padding: 18px 16px; box-shadow: var(--shadow); margin-bottom: 18px;
}
.tea-tc-lead { font-size:15.5px; color: var(--text-sub); line-height: 1.8; margin: 0 0 14px; }
.tea-tc-hint { font-size:13.5px; color: var(--text-sub); line-height: 1.75; margin: 12px 0 0; }
.tea-tc-now {
  display: flex; align-items: baseline; gap: 12px; padding: 9px 0;
  border-bottom: 1px solid var(--border-soft);
}
.tea-tc-now:last-of-type { border-bottom: none; }
.tea-tc-now .lb { font-size:13.5px; font-weight: 800; color: var(--text-dim); width: 62px; flex: 0 0 auto; }
.tea-tc-now .vl { font-size:24px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }
.tea-tc-tag {
  display: inline-block; margin-left: 8px; padding: 2px 8px; border-radius: 99px;
  font-size:13px; font-weight: 800; background: var(--surface-3); color: var(--accent-deep);
  vertical-align: middle;
}
/* 状態は色だけに頼らず必ず文字で出す（色覚配慮。3アプリ共通の原則） */
.tea-tc-state {
  display: inline-block; padding: 4px 12px; border-radius: 99px;
  font-size:13.5px; font-weight: 800; margin-bottom: 12px;
}
.tea-tc-st-open { background: var(--study-bg); color: var(--study-deep); }
.tea-tc-st-pending { background: var(--ticket-bg); color: var(--ticket-deep); }
.tea-tc-st-approved { background: var(--lesson-bg); color: var(--lesson-deep); }
.tea-tc-st-rejected { background: var(--absent-bg); color: var(--absent-deep); }
.tea-tc-reject {
  display: flex; gap: 8px; margin-top: 12px; padding: 10px 12px;
  background: var(--absent-bg); border: 1px solid var(--absent-line); border-radius: var(--radius-sm);
  font-size:14.5px; color: var(--absent-deep); line-height: 1.75;
  /* 「最近の記録」欄では .tea-tc-row 側で flex-basis:100% を明示指定される（下の
     .tea-tc-row .tea-tc-reject）。box-sizing が content-box のままだと、この
     padding と border の分だけ枠の外にはみ出し、退勤忘れの案内文がスマホ幅で
     行の外へ飛び出していた（2026-09-11 スタッフテスト指摘）。border-box にして
     はみ出しを止める */
  box-sizing: border-box;
}
.tea-tc-acts { display: flex; flex-direction: column; gap: 10px; margin-top: 6px; }

/* ===== 休憩（2026-08-19） =====
   「いま休憩中」は放置してほしくない状態だが、色だけに頼らずアイコン＋文字で示す。
   地はオレンジ系（--ticket-bg）＝承認待ちと同じ「まだ済んでいない」系統の色。
   赤（--absent）は欠席・危険の意味で使っているので、ここには使わない */
.tea-tc-break {
  display: flex; align-items: center; gap: 12px;
  background: var(--ticket-bg); border: 1.5px solid var(--ticket-line);
  border-radius: var(--radius-sm); padding: 12px 14px; margin: 12px 0;
}
.tea-tc-break > i { font-size:25px; color: var(--ticket-deep); flex: 0 0 auto; }
.tea-tc-break .bx { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tea-tc-break .bx b { font-size:18px; font-weight: 800; color: var(--ticket-deep); }
.tea-tc-break .bx span { font-size:13.5px; color: var(--text-sub); font-variant-numeric: tabular-nums; }
/* 休憩ボタンと「？」を横に並べる。ボタンが幅いっぱいだと「？」の置き場が無くなる */
.tea-tc-break-row { display: flex; align-items: center; gap: 6px; margin: 12px 0 0; }
.tea-tc-break-row .tea-btn { flex: 1; width: auto; }
/* 休憩の記録と退勤の入力の区切り。線1本で「ここから下は退勤」と分ける */
.tea-tc-sep { border: none; border-top: 1px dashed var(--border); margin: 16px 0 14px; }
/* 同じ日の2回目の出勤（開き直し）の一角。上の記録とは別の操作なので線で区切る */
.tea-tc-reopen { margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--border); }
/* 「時給とコマ給の両方」の方の今日の入口（2026-08-31 要望 C7）。
   2つのボタンを同じ大きさ・同じ色で縦に並べる＝既定を置かない（どちらが「ふつう」かを見た目で示さない） */
.tea-tc-choose { display: flex; flex-direction: column; gap: 12px; margin: 4px 0 6px; }

/* その場承認（2026-08-18 遼様の要件追加）。
   打刻のポップアップの中で、その場にいる上長に暗証番号を入れていただく枠。
   毎日通る操作なので、選ぶ・打つ以外の手数を足さない。
   枠で囲うのは「ここからは自分ではなく上長が触る場所」を目で分けるため */
.tea-tc-appr {
  margin: 14px 0 4px; padding: 14px 14px 4px;
  background: var(--surface-2); border: 1.5px solid var(--border); border-radius: var(--radius-sm);
  text-align: left;
}
.tea-tc-appr-lbl {
  display: flex; align-items: center; gap: 8px; margin-bottom: 10px;
  font-size:15px; font-weight: 800; color: var(--accent-deep);
}
/* 承認をお願いできる方がいない日の案内。枠は同じ形のまま、中身だけ差し替える */
.tea-tc-appr.is-none {
  display: flex; gap: 8px; padding: 12px 14px;
  font-size:14.5px; color: var(--text-sub); line-height: 1.75;
}
/* 暗証番号が違ったときの注意書き。色だけに頼らずアイコンと文字を伴わせる */
.tea-tc-appr-err {
  display: flex; gap: 8px; margin-bottom: 12px; padding: 10px 12px;
  background: var(--absent-bg); border: 1px solid var(--absent-line); border-radius: var(--radius-sm);
  font-size:14.5px; font-weight: 700; color: var(--absent-deep); line-height: 1.7; text-align: left;
}
/* 「誰が・どちらの経路で承認したか」。緑は承認済みの意味（出席と同じ緑を流用しない）ではなく、
   ここは「済んだこと」を静かに示すだけなので、地は敷かず文字と線だけにしている */
.tea-tc-appr-done {
  display: flex; gap: 8px; margin-top: 10px; padding-top: 10px;
  border-top: 1px solid var(--border-soft);
  font-size:14.5px; font-weight: 700; color: var(--lesson-ink); line-height: 1.7;
}

/* コマ給の方のコマ選び。指で押すので1行1コマ、押した状態は塗りで示す */
.tea-tc-slots { display: flex; flex-direction: column; gap: 9px; margin: 4px 0 16px; }
.tea-tc-slot {
  display: flex; align-items: center; gap: 12px; padding: 14px 14px;
  border: 1.5px solid var(--border); border-radius: var(--radius-sm);
  background: var(--surface); cursor: pointer; font-size:17px;
}
.tea-tc-slot.is-on { background: var(--accent-soft); border-color: var(--accent); }
.tea-tc-slot.is-locked { opacity: .6; cursor: default; }
/* コマの呼び名は時刻だけ。記号（A〜G）は識別子であって現場の呼び名ではない */
.tea-tc-slot .tm { font-size:18px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }

.tea-tc-row {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 11px 13px; margin-bottom: 8px;
  background: var(--surface); border: 1px solid var(--border-soft); border-radius: var(--radius-sm);
}
.tea-tc-row .dt { font-size:15px; font-weight: 800; color: var(--text); white-space: nowrap; }
.tea-tc-row .dv { font-size:13.5px; color: var(--text-sub); font-variant-numeric: tabular-nums; }
.tea-tc-row .tea-tc-state { margin-bottom: 0; margin-left: auto; }
/* 承認前の記録には「直す」「取り消す」を出す（2026-08-18）。
   退勤の押し忘れは翌日以降に気づくもので、ここで直せないとその日の給与が丸ごと消える。
   注意書きとボタンは行の幅いっぱいに折り返す（日付・内容と同じ行に並べると読めない） */
.tea-tc-row .tea-tc-reject,
.tea-tc-row .tea-tc-acts { flex: 1 0 100%; }
.tea-tc-row .tea-tc-acts { flex-direction: row; gap: 8px; margin-top: 10px; }
.tea-tc-row .tea-tc-acts .tea-btn { flex: 1; padding: 9px 10px; font-size:14.5px; }

/* 承認のポップアップに出す「これから承認する中身」（2026-08-18）。
   退勤のポップアップが「いまの時刻で退勤を記録します」しか出しておらず、
   出勤時刻も実働も見えないまま上長が4桁を入れる形になっていた。
   数字は等幅（tabular-nums）で縦に揃える。桁の違いに目で気づけるようにするため */
.tea-tc-sum {
  margin: 0 0 4px; padding: 12px 14px;
  background: var(--surface-2); border: 1px solid var(--border-soft); border-radius: var(--radius-sm);
  text-align: left;
}
.tea-tc-sum-row {
  display: flex; align-items: baseline; gap: 12px; padding: 5px 0;
  font-size:18px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums;
}
.tea-tc-sum-row b { font-size:13.5px; font-weight: 800; color: var(--text-dim); width: 44px; flex: 0 0 auto; }

/* ホームの「出退勤記録」ボタンに、今日の状態を小さく添える */
.tea-home-btn-tx { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; text-align: left; }
.tea-home-btn-sub { font-size:13px; font-weight: 700; color: var(--text-sub); }

/* 暗証番号の伏せ字（2026-08-30）。type="password" にするとブラウザのパスワードマネージャーが
   「保存しますか？」と毎回聞いてくるので、文字欄のまま CSS で伏せる。見た目は同じ */
.tea-pin-mask{-webkit-text-security:disc;text-security:disc;}

/* ===== 画面上部の帯（氏名・役割・ログアウト）。保護者アプリの .mah-user-info と同じ作法（2026-08-30） =====
   器（#tea-app）の左右余白ぶん外へ広げて画面の端まで帯にし、スクロールしても上に貼り付く。
   出欠画面のときだけ、右側に「一括送信」を出す（一番下まで行かなくても送れるように） */
.tea-user-info{position:sticky;top:0;z-index:40;display:flex;justify-content:space-between;align-items:center;gap:10px;
  margin:-16px -14px 16px;padding:11px 14px;
  background:rgba(233,241,247,.96);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border-bottom:1px solid var(--border);box-shadow:0 2px 8px rgba(40,110,160,.06)}
/* 氏名の側は縦に積む。2行目に校舎名が出る（2026-09-11。全ロールに出す）。
   横に並べると、スマホの幅（414px）では「ゼンケンカンリシャ 全権…」と役割まで欠けた */
.tea-user-info > div:first-child{display:flex;flex-direction:column;gap:3px;min-width:0}
.tea-user-name{font-size:16px;font-weight:800;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tea-user-name .tea-role-chip{font-size:13px;color:var(--accent-deep);font-weight:800}
.tea-user-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
/* ログアウトは枠なしのグレー文字（右上で悪目立ちしないように） */
.tea-logout{white-space:nowrap;background:none;border:none;color:var(--text-dim);font-size:13px;font-weight:700;padding:4px 2px;cursor:pointer;font-family:inherit}
.tea-head-send{white-space:nowrap;background:var(--accent-deep);color:var(--accent-ink);border:none;border-radius:10px;
  padding:9px 13px;font-size:14px;font-weight:800;cursor:pointer;font-family:inherit;box-shadow:var(--shadow)}
.tea-head-send:disabled{background:var(--accent-dim);box-shadow:none}
/* いま働いている校舎（2026-09-11）。全ロールに出る、氏名の下の行。
   掛け持ちの先生が「いまどの校舎で記録しているか」を取り違えないための表示なので、
   **校舎名は途中で切らない**（入りきらなければ折り返す）。狭い画面で切れるのは氏名の側だけ。
   全権管理者だけは押して選び直せるので、枠と建物のアイコンでボタンらしく見せる。文字は下限の13px */
.tea-school-btn{display:inline-flex;align-items:center;gap:5px;align-self:flex-start;max-width:100%;
  background:var(--surface);border:1.5px solid var(--border);border-radius:10px;
  padding:4px 10px;font-size:13px;font-weight:800;color:var(--accent-deep);
  cursor:pointer;font-family:inherit;text-align:left;white-space:normal;overflow-wrap:anywhere}
.tea-school-btn:hover{border-color:var(--accent)}
/* 全権管理者以外は押せない＝ただの表示。押せそうな見え方（枠・面・指のカーソル）を全部外す。
   ブラウザ既定の disabled の薄い文字にはしない（読めなくなっては本末転倒なので色は据え置き） */
.tea-school-btn.is-static,
.tea-school-btn.is-static:hover{cursor:default;background:transparent;border-color:transparent;
  padding-left:0;opacity:1;color:var(--accent-deep)}
/* ログイン画面の見出しの下に出す校舎名（2026-09-11）。帯のものと大きさ・色をそろえる */
.tea-school-line{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:8px;
  font-size:13px;font-weight:800;color:var(--accent-deep);line-height:1.35;overflow-wrap:anywhere}

/* 校舎を選ぶまでの案内（ホームの一番上）。ポップアップを閉じても行き止まりにしないための入口 */
.tea-school-required{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);
  padding:18px 16px;margin-bottom:16px;text-align:center}
.tea-school-required-lead{margin:0 0 6px;font-size:17px;font-weight:800;color:var(--text)}
/* アイコンは明るい水色（2026-09-11 SCHOOL Manager合わせ）。見出しの文字は --text のまま */
.tea-school-required-lead i{color:var(--accent);margin-right:6px}
.tea-school-required-note{margin:0 0 14px;font-size:14px;color:var(--text-sub);line-height:1.5}

/* ===== 各コマの一番下の「本日の変更」（2026-08-30 遼様指示）=====
   当日に振替・欠席・コマ移動・振替取消で名簿から消えた生徒の覚え書き。頻繁に見るものではないので、
   小さく（下限の13px）・薄く・破線で区切るだけにして、名簿の邪魔をしない */
.tea-changes{margin-top:6px;padding-top:6px;border-top:1px dashed var(--border-soft);font-size:13px;color:var(--text-sub);line-height:1.4}
.tea-changes-title{font-weight:800;color:var(--text-dim);margin-bottom:2px}
.tea-changes-title i{font-size:13px;margin-right:2px}
.tea-changes-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;padding:2px 0}
.tea-changes-name{font-weight:800;color:var(--text)}
.tea-changes-by{margin-left:auto;color:var(--text-dim);font-variant-numeric:tabular-nums;white-space:nowrap}

/* ===== 保護者からの遅刻連絡の印（2026-09-18 遼様のご要望）=====
   「遅刻の表示は、スタッフアプリの出欠欄に表示されるようにする（生徒名の右、コマ目の印の隣で）」。
   出欠の記録（出席・欠席）ではなく保護者からの連絡なので、出欠を付けたあとも消さずに残す。
   色は既存の注意色＝オレンジ（--ticket 系。.tea-badge-warn・.tea-readonly-note と同じ組み合わせ）。
   このアプリは「出席=緑／遅刻=オレンジ／欠席=赤」を意味の色として決めてあり（ファイル冒頭の注記）、
   赤（--warn／--absent）にすると同じ行の「欠席」と見分けがつかなくなるため、新しい色は足さずにオレンジを選んだ。
   形は種別バッジ（.tea-cat）と同じ丸い札。文字は下限の13px */
.tea-late{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:99px;
  font-size:13px;font-weight:700;background:var(--ticket-bg);color:var(--ticket-deep);
  border:1px solid var(--ticket-line);white-space:nowrap}
/* 走る人のアイコンは 2026-09-19 遼様のご指示で外した（文字と色だけ）。アイコン用の指定（.tea-late i）も一緒に消した */
