/* DAYLIGHT KARTE Phase 0 — 落ち着いた医療系トーン(Command Centerと区別できる青灰基調) */

/* ══════ 🪟 重なりの順(z-index)の決まり ══════ (2026-09-02 b249 制定・正本はここ)
   先生の逐語「改修箇所履歴のウインドウもそうですが、他のウインドウなどもこのように
   隠れないよう(潜らないように)にして欲しいです」
   ⚠️ 同じ事故が2度起きている(b217=ふつうの窓 .modal-bg が50で帯の下 / b249=改修りれきの窓
      .kaiwin が55で帯の下)。窓の題と✕が帯に塗りつぶされ「掴めない・閉じられない」状態になった。
   → 新しい窓・浮くものを足す時は、必ず下の層のどれかに入れる。層をまたぐ数字を作らない。

   ┌ 層 ─────────────┬ 使い道 ────────────────────────────────┐
   │    1 〜   99     │ ページの中身と**貼り付いた帯**。帯の最上位は .mnav(黒いバー)=80。
   │                  │ 帯はここより大きくしない(80が天井)
   │                  │ 🗂 b306: 裏書きの板(.kcol-ura)は z-index 無しのページの中身。LINEの窓(2000)・
   │                  │ 計画図の列(2000)が板の**上**に重なる(板は動かない・窓は掴んで動かせる)
   │  100 〜  999     │ あけておく(帯を足したくなった時の余白)
   │                  │ 🔗 b445 でここを1組だけ使った(下の 800/900)。使う時は必ず**対で**書く
   │  800 /  900      │ 🔗 b445: 患者トップのひもづけ窓(.plink-win)を手前に出したい間だけの一時の並び。
   │                  │     900=患者ヘッダーの帯(.psticky.pst-front) / 800=LINE(一括)の大窓(.linebw.lbw-under)。
   │                  │     ひもづけ窓は sticky の帯の中にあり、sticky は z-index の値によらず必ず
   │                  │     「重なりの入れ物」を作るので、窓だけを前に出せない → 帯ごと上げ、大窓を下げる。
   │                  │     どちらも帯の天井 80 より上(黒いバーに潜らない)・窓の 1000番台より下
   │                  │     (裏書きの窓・ふつうの窓は今までどおり前に出る)。窓は閉じない・閉じれば元へ戻る
   │ 1000番台         │ 🪟 窓。1000=居座る窓(改修りれき .kaiwin・改善ボード .kboard)
   │                  │     1100=右に出る大きな窓(.fprev・.qpwin) 1110=裏書きの窓(.urapanel)
   │                  │     1200=ふつうの窓(.modal-bg)
   │                  │     1210=b504: 予約ボードの窓が LINE の大窓の後ろへ回っている間(.modal-bg.lwswap.under)。
   │                  │          前に出ている間は 2100(=下の .modal-bg.lwtop と同じ段)。押した方が前に来る
   │ 2000番台         │ ✋ 掴んで動かす窓。2000=.dwin/.linewin/.linebw
   │                  │     2010=開いている間の見積書プレビュー(.qpwin.qtop・b440)
   │                  │     2100=その上に重ねる窓(.modal-bg.lwtop・.fprev.operec.mstop)
   │                  │     2200=オペ記録(.opdw-bg) 2300/2301=オペ記録の中の窓とメニュー
   │ 3000番台         │ 💬 ホバーの小窓・右クリックの小窓・トースト・非常時のバー。
   │                  │     3000/3001=右クリックの小窓(.calctx) 3100=ホバー(.apptip)
   │                  │     3200=トースト(.qtoast) 3900=赤い非常バー(#crashbar)
   └──────────────────┴────────────────────────────────────────┘
   ・窓の中に出す小窓(.palpop・.qpick・.dpop・.drs-menu 等)は親の窓が作る「重なりの文脈」の
     中で前に来ればよいので、小さい数字のままでよい(親を跨いで比べられることはない)
   ・**窓に 1000 未満の数字を付けない**。付けると帯(最大80)に潜って掴めなくなる     */
*{box-sizing:border-box;margin:0;padding:0}
/* フォントはメディベースと同系(Bootstrap系ゴシック・14px・#333) */
body{font-family:-apple-system,"Helvetica Neue",Helvetica,Arial,"Hiragino Kaku Gothic ProN","Hiragino Sans",Meiryo,sans-serif;background:#f7f7f8;color:#333;font-size:14px}
a{cursor:pointer;color:#1e6fe0}
/* 🛡 2026-09-06 b326 榛澤先生の困りごと: トラックパッドの2本指の横スワイプ=ブラウザの「戻る」で記録が消える
   → 横方向のはみ出しスクロールをブラウザに渡さない(=スワイプで戻らない。Chrome/Safari/Edge)。
   窓(.modal-bg)や絵の箱など自前でスクロールする器にも同じ決まりを付ける */
/* 👈👉 2026-09-09 b378 先生の明示「殊更、私に関してはツーフィンガーで戻る、進むは使わないので、
   LINEウインドウ外でもブラウザの戻る、進む、はなしで大丈夫です」→ この決まりを**画面全体**の物とする
   (html・body に付いているので、中のどの器から溢れた横スワイプも最後はここで止まる)。
   ⚠️ アプリの中の「戻る」(EDIT_GUARD・histPush/popstate。main.tsx 冒頭)は別物なので触っていない */
html,body,.modal-bg,.modal,.opdw-view,.opdw-side,.kcol-side,.kcol-ura,.lbw-body,.linechat,.lib,.lib-left,.lib-right,.lib-side{overscroll-behavior-x:none}
.app{min-height:100vh;display:flex;flex-direction:column}
header{display:flex;align-items:center;justify-content:space-between;background:#20364a;color:#eef3f8;padding:10px 18px}
header .brand{font-family:"Hiragino Mincho ProN",serif;letter-spacing:.12em;font-size:16px}
header .brand b{color:#8fc1f7}
header .brand small{font-size:10px;letter-spacing:.02em;color:#9fb3c6;margin-left:10px}
.hright{display:flex;gap:14px;align-items:center;font-size:12px}
.hright a{color:#cfe2f5}
main{flex:1;max-width:1160px;width:100%;margin:0 auto;padding:18px 16px 60px}
main.wide{max-width:none;padding:14px 14px 40px}
footer{background:#e6ecf2;color:#7a8794;font-size:10.5px;text-align:center;padding:8px;letter-spacing:.04em}
.card{background:#fff;border:1px solid #d8e0e8;border-radius:12px;padding:14px 18px;margin-bottom:12px;box-shadow:0 2px 8px rgba(40,60,90,.05)}
.card h2{font-size:18px}.card h2 small{font-weight:400;color:#8794a1;font-size:12px;margin-left:8px}
.card h3{font-size:13.5px;color:#42566b;margin-bottom:8px}
.empty{text-align:center;color:#93a1af;padding:40px 10px}
.err{color:#c0392b;font-size:12.5px;margin:6px 0}
.note{background:#fff7e8;border:1px solid #ecd9a8;border-radius:8px;padding:6px 10px;margin-top:8px;font-size:12.5px}
.crumbs{display:flex;justify-content:space-between;margin-bottom:10px}
.crumbs .print{font-weight:700}
.meta{display:flex;gap:14px;flex-wrap:wrap;color:#5c6b7a;font-size:12.5px;margin-top:4px;align-items:center}
input,select,textarea{border:1px solid #c8d3de;border-radius:8px;padding:8px 10px;font-size:13.5px;font-family:inherit;background:#fff}
textarea{width:100%;resize:vertical}
button{border:1px solid #c8d3de;background:#fff;border-radius:8px;padding:7px 16px;font-size:13px;cursor:pointer}
button:hover{background:#eef4fa}
button.pri{background:#1e6fe0;border-color:#1e6fe0;color:#fff;font-weight:700}
button.pri:hover{background:#155cc4}
button.mini{padding:2px 10px;font-size:11px}
/* 患者検索の1行(2026-08-16 batch94 で横幅を節約)
   ・検索窓と🔍検索ボタンは1つのまとまり(.sgrp)にして**間の余白を無くす**
   ・まとまりの幅は行の半分まで(以前は残り全部を検索窓が食べていた)
   2026-08-16 batch95(院長要望): その半分を**さらに 15分の13**に縮める(50% × 13/15 = 43.3333%)。
   メモ枠(.mgrp)も**まったく同じ幅**にして、空いた右側にCLOSE枠作成を置く
   ⚠️ 2026-08-16 batch96(院長要望): batch95 の 43.3333% は縮めすぎで、薄い案内文が
      「既存患者の氏名や診…」と途中で切れていた。**案内文が両方とも丸ごと見える幅**に戻す。
      割合(%)だと窓の幅しだいで切れるので、**中の文字が収まる実寸(px)**で決める:
        検索  「既存患者の氏名やカルテID」  + 🔍検索ボタン
        メモ枠「時刻・苗字・対面or遠隔・〜hなど」+ メモ枠ボタン ← こちらが長い方
      2つのまとまりは**同じ幅**(--pickgrp)。狭い画面では縮んでよい(flexの1で許す) */
:root{--pickgrp:326px}
.searchrow{display:flex;gap:10px;margin-bottom:8px;align-items:center;flex-wrap:wrap}
.searchrow .sgrp{display:flex;gap:0;flex:0 1 var(--pickgrp);min-width:0}
.searchrow .sgrp input{flex:1;min-width:0;border-top-right-radius:0;border-bottom-right-radius:0}
/* 案内(プレースホルダ)の濃さは**メモ枠と同じ薄さ**にそろえる(2026-08-16 batch96 院長要望) */
.searchrow .sgrp input::placeholder{color:#b9c3cd}
.searchrow .sgrp button{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}
/* ⭐ 窓が開いた瞬間、この欄にカーソルが入る(2026-08-16 batch120 院長要望)。
   どこに打てばよいかが**ひと目で分かる**よう、カーソルのある間はふちを青くする
   (院内の他の入力欄=.uraform-i と同じ光らせ方) */
.searchrow .sgrp input:focus{outline:none;border-color:#7fabe0;box-shadow:0 0 0 2px rgba(127,171,224,.18);
  position:relative;z-index:1}
/* 🩷 メモ枠(2026-08-16 batch94 院長要望)
   LINE問い合わせを捌きながら、患者登録の前に予約枠だけを押さえるための行。
   入力窓(左)とピンクの「メモ枠」ボタン(右)の**間に余白は置かない**(.mgrp の中は gap:0)。
   行そのものは .searchrow と同じ並び(gap:10px)にしてあるので、
   CLOSE枠作成が「新患者登録」の真下にそろう(2026-08-16 batch95) */
.memorow{display:flex;gap:10px;align-items:center;margin:0 0 6px}
.memorow .mgrp{display:flex;gap:0;flex:0 1 var(--pickgrp);min-width:0}
.memorow input{flex:1;min-width:0;border-top-right-radius:0;border-bottom-right-radius:0}
.memorow input::placeholder{color:#b9c3cd}
.memorow .memobtn{background:#e592ab;border-color:#e592ab;color:#fff;font-weight:700;white-space:nowrap;
  border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}
.memorow .memobtn:hover{background:#d97f9a;border-color:#d97f9a}
/* 🩷🧡 2026-09-09 b381(先生の逐語「メモ枠がピンクとオレンジ色が並んでいるようにして
   (現在の状態から、幅は変えない!)」)。**同じボタン・同じ文字・同じ余白のまま**、
   背景だけを左半分ピンク(仮予約)/右半分オレンジ(カルテ戻し)の縞にする(色は画面側から
   その院の現物の受付状態の色を渡す)。押した左右で受付状態が決まる=幅は1pxも変わらない。
   ふちの色は画面側が左半分(ピンク)の色に合わせる。
   ホバーは色を塗り替えず、少し暗くするだけ(2色を保つ) */
.memorow .memobtn.memo2:hover{filter:brightness(.94)}
.memorow .closebtn{white-space:nowrap}
.memohint{color:#8794a1;font-size:11.5px;margin:0;line-height:1.5}
.memohint.reghint{margin-bottom:12px}
/* 検索して当たりが無かった時だけ出す1行(検索前は何も出さない=窓を小さいままにする・batch95) */
.pnohit{color:#8794a1;font-size:12px;margin:10px 0 0}
.plist .prow{display:flex;gap:14px;align-items:baseline;background:#fff;border:1px solid #dbe3ea;border-radius:10px;padding:10px 16px;margin-bottom:6px;cursor:pointer}
.plist .prow:hover{border-color:#1e6fe0;background:#f6faff}
.plist .prow b{color:#1e6fe0}
.plist .prow .nm{font-weight:700;font-size:14.5px}
.plist .prow small{color:#8794a1}
.pform{display:flex;flex-wrap:wrap;gap:8px}
.pform input,.pform select{flex:1;min-width:140px}
.pform textarea{width:100%}
.addrow{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.ent .enthead{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:11.5px;color:#5c6b7a;border-bottom:1px dashed #dfe6ec;padding-bottom:6px;margin-bottom:8px}
.ent .body{font-size:12.5px}
.ent .body div{margin-bottom:2px;line-height:1.48}
/* SOAPの見出し(S/O/A/P)だけの飾り。本文の太字にまで掛かっていて、
   太字にすると青くなり1文字ずつ縦に並んでしまっていた(2026-08-08 修正) */
.ent .body b.soapk{display:inline-block;width:20px;color:#1e6fe0}
/* いま効いている書式のボタンを、押されている見た目にする(2026-08-08 院長要望) */
/* 訂正理由の候補(2026-08-08 院長要望) */
.rsnchips{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 8px}
.rsnchips a{font-size:11.5px;color:#1e6fe0;border:1px solid #c9dcf5;background:#f2f8ff;border-radius:12px;padding:2px 10px;cursor:pointer}
.rsnchips a:hover{background:#e3f0ff}
.rsnchips a.on{background:#1e6fe0;border-color:#1e6fe0;color:#fff;font-weight:700}
/* 文字サイズは 小 / 標 / 大 の3つ(2026-08-08 院長要望)
   「標」は書き始めの大きさ(既定)と同じに見えるよう、親の大きさをそのまま使う。
   「大」はブラウザのxx-large(これまでの「大」と「特大」のちょうど間)。 */
.qpv-fix{background:#127a3d !important;border-color:#127a3d !important}
.mbnote{font-size:11px;color:#5c6b7a;margin-left:8px}
.richta font[size="3"],.stricht font[size="3"],.ent .body font[size="3"],.entgrid font[size="3"]{font-size:inherit}
/* 「小」は書いている最中も保存後と同じ大きさで見せる(2026-08-16 batch99 / 院長報告B)。
   これまで編集欄だけブラウザ既定のままで、小さく書けている事に気付けなかった */
.richta font[size="1"],.richta font[size="2"],.stricht font[size="1"],.stricht font[size="2"]{font-size:10.5px}
.rtb-b.on{background:#d7dee6;border-color:#8fa2b5;box-shadow:inset 0 1px 3px rgba(20,35,55,.22)}
.sumta{font-size:12.5px;line-height:20.5px}
.ent.draft{border-left:4px solid #e8a93c}
.ent.voided{opacity:.55}
.ent.voided .body{text-decoration:line-through}
.tag{border-radius:999px;padding:1px 10px;font-size:10.5px;font-weight:700}
.tag.ok{background:#e2f2e4;color:#1f6b24}
.tag.dr{background:#fdf1dc;color:#9a6a12}
.tag.void{background:#fbe4e1;color:#b03a2e}
.reason{color:#b03a2e;font-size:12px;margin-bottom:6px}
.editor label{display:block;margin-bottom:6px}
.editor label span{display:block;font-size:11px;color:#5c6b7a;font-weight:700;margin-bottom:2px}
.btnrow{display:flex;gap:8px;margin-top:8px}
.revise{border-top:1px dashed #dfe6ec;margin-top:8px;padding-top:8px}
.revise>input{width:100%;margin-bottom:8px}
.auditrow{display:flex;gap:12px;font-size:12px;border-bottom:1px solid #eef2f6;padding:4px 0}
.auditrow .t{color:#8794a1}
/* ---- ログイン(メディベース風2カラム+上質な背景4種) ---- */
.login2{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:34px 22px;position:relative;overflow:hidden}
.login2 .orb{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55;pointer-events:none}
/* A 暁 — 桃色の夜明け(デフォルト) */
.bg-a{background:linear-gradient(135deg,#fdf2ec 0%,#f9dcd6 35%,#eec9dd 65%,#cfc0ea 100%)}
.bg-a .o1{width:440px;height:440px;background:#ffd9c4;top:-90px;left:-70px}
.bg-a .o2{width:380px;height:380px;background:#f3b8d0;bottom:-80px;right:6%}
.bg-a .o3{width:320px;height:320px;background:#cdb9f2;top:18%;right:-90px}
/* B 絹 — シャンパンベージュ */
.bg-b{background:linear-gradient(120deg,#faf7f1 0%,#f3e7d6 40%,#ead3bd 75%,#ddbfa8 100%)}
.bg-b .o1{width:460px;height:460px;background:#f8e3c2;top:-100px;right:-80px}
.bg-b .o2{width:360px;height:360px;background:#e9c9a8;bottom:-90px;left:4%}
.bg-b .o3{width:280px;height:280px;background:#fff6e8;top:30%;left:-70px}
/* C 宵 — 夕暮れの庭 */
.bg-c{background:linear-gradient(160deg,#22374f 0%,#33506d 45%,#77597b 78%,#c78e78 100%)}
.bg-c .o1{width:420px;height:420px;background:#f0b78c;bottom:-100px;right:-60px;opacity:.5}
.bg-c .o2{width:340px;height:340px;background:#8fa8d0;top:-70px;left:6%;opacity:.4}
.bg-c .o3{width:280px;height:280px;background:#d9a0b0;top:34%;right:16%;opacity:.35}
/* D 陽 — あたたかい光の部屋 */
.bg-d{background:#fbf7f0}
.bg-d .o1{width:520px;height:520px;background:#f4c9ae;top:-120px;left:-90px;opacity:.6}
.bg-d .o2{width:420px;height:420px;background:#f7dfd2;bottom:-110px;right:-70px;opacity:.8}
.bg-d .o3{width:340px;height:340px;background:#e9d3f0;top:26%;right:10%;opacity:.45}
.lg-panel{position:relative;display:flex;gap:26px;flex-wrap:wrap;justify-content:center;z-index:1;max-width:1000px;width:100%}
.lg-info{flex:1.35;min-width:300px;background:rgba(255,255,255,.84);backdrop-filter:blur(10px);border-radius:18px;padding:28px 34px;box-shadow:0 16px 44px rgba(90,60,60,.16)}
.lg-info h2{font-size:15px;border-bottom:1px solid #e8dad3;padding-bottom:9px;margin-bottom:14px;color:#7a5c55;letter-spacing:.08em}
.lg-info p{font-size:12.5px;line-height:2.1;color:#5a4a45;margin-bottom:10px}
.lg-tips{background:rgba(250,240,232,.9);border-radius:10px;padding:8px 12px}
.lg-form{width:340px;background:rgba(255,255,255,.95);backdrop-filter:blur(12px);border-radius:18px;padding:36px 34px 28px;box-shadow:0 18px 55px rgba(90,60,60,.26);text-align:center;align-self:center}
.lg-form .brand{font-size:19px;letter-spacing:.13em;color:#33424f;font-weight:700}
.lg-form .brand b{color:#1e6fe0}
.lg-form .sub{font-size:10px;letter-spacing:.28em;color:#b3a49e;margin:5px 0 22px}
.lg-form label{display:block;text-align:left;font-size:11px;color:#7a6a64;font-weight:700;margin:12px 0 5px}
.lg-form input{width:100%;text-align:left;padding:10px 13px;border-radius:9px;border:1px solid #ddcfc9;font-size:14px}
.lg-form button{width:100%;margin-top:22px;background:linear-gradient(135deg,#e8927c,#d4738a);border:none;color:#fff;font-weight:700;padding:12px 0;border-radius:9px;font-size:14px;letter-spacing:.14em;box-shadow:0 6px 18px rgba(212,115,138,.4)}
.lg-form button:hover{background:linear-gradient(135deg,#e2836c,#c9647c)}
.lg-note{margin-top:16px;font-size:10px;color:#b3a49e}
/* 旧ログイン(互換のため残置) */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#20364a,#2c4a66)}
.login-card{background:#fff;border-radius:16px;padding:38px 42px;width:360px;text-align:center;box-shadow:0 18px 50px rgba(10,25,45,.35)}
.login-card .brand{font-family:"Hiragino Mincho ProN",serif;letter-spacing:.16em;font-size:20px;color:#20364a}
.login-card .brand b{color:#1e6fe0}
.login-card .sub{font-size:11px;color:#8794a1;margin:6px 0 18px}
.login-card input{width:100%;margin-bottom:10px;text-align:center}
.login-card button{width:100%;background:#1e6fe0;border-color:#1e6fe0;color:#fff;font-weight:700;padding:10px 0}
.login-card .note{margin-top:14px;font-size:10.5px;background:#f2f5f8;border:none;color:#7a8794}
@media (max-width:640px){.meta{gap:8px}.hright span{display:none}}
/* ---- カレンダー(予約) ---- */
.cal-head{display:flex;gap:8px;align-items:center;margin-bottom:10px;flex-wrap:wrap;position:sticky;top:44px;z-index:30;background:#f7f7f8;padding:8px 0 6px;box-shadow:0 4px 8px -6px rgba(20,35,55,.25)}
.colfil{position:relative;display:flex;align-items:center;gap:6px}
.colfil .cft{font-size:12.5px;font-weight:700}
.colfil .cfl{color:#1e6fe0;font-size:12.5px;cursor:pointer;text-decoration:underline dotted}
.cfmenu{position:absolute;top:30px;left:0;background:#fff;border:1px solid #cfd8e0;border-radius:8px;box-shadow:0 10px 28px rgba(20,35,55,.3);padding:10px 14px;z-index:50;min-width:200px}
.cfmenu label{display:block;font-size:13px;padding:4px 0;cursor:pointer;white-space:nowrap}
.cfmenu input{margin-right:6px}
.cfbtns{margin-top:8px;text-align:right}
/* 患者CSV取込 */
.impmap{display:flex;flex-wrap:wrap;gap:8px 18px}
.impmap label{display:flex;align-items:center;gap:6px;font-size:12.5px}
.impmap label span{width:80px;text-align:right;color:#5c6b7a;font-weight:700;font-size:11.5px}
.impmap select{min-width:150px;padding:5px 8px;font-size:12.5px}
.cal-date{font-size:15px;margin:0 4px}
.legend{display:flex;gap:8px;flex-wrap:wrap;font-size:10px;margin-left:4px}
.legend i{display:inline-flex;align-items:center;gap:3px;font-style:normal;color:#5c6b7a}
.legend i b{width:10px;height:10px;border-radius:3px;display:inline-block}
.cal-grid{display:flex;background:#fff;border:1px solid #d8e0e8;border-radius:10px}
.cal-gutter{width:40px;flex-shrink:0;position:relative;border-right:1px solid #e4eaf0}
.cal-gutter .gh{position:absolute;right:6px;font-size:13px;font-weight:700;color:#5c6b7a;transform:translateY(-8px);font-variant-numeric:tabular-nums}
.cal-col{flex:1;min-width:118px;border-right:1px solid #e4eaf0}
.cal-col:last-child{border-right:none}
.cal-colhead{height:34px;line-height:34px;text-align:center;font-weight:700;font-size:12.5px;color:#111;border-bottom:1px solid #c9d2db;background:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 4px}
.cal-body{position:relative;cursor:crosshair;background-image:
  repeating-linear-gradient(to bottom,#cdd7e2 0,#cdd7e2 1px,transparent 1px,transparent 126px),
  repeating-linear-gradient(to bottom,transparent 0,transparent 63px,#e3eaf1 63px,#e3eaf1 64px,transparent 64px,transparent 126px),
  url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='5' height='21'><rect x='0' y='0' width='2' height='1' fill='%23d0dae5'/></svg>");
  background-size:auto,auto,5px 21px;background-position:0 0,0 0,0 0}
.cal-appt{position:absolute;left:2px;right:2px;border-radius:3px;color:#fff;padding:2px 4px 3px;font-size:10px;overflow:hidden;line-height:1.3;cursor:grab;box-shadow:none;border:1px solid rgba(0,0,0,.22);box-sizing:border-box;z-index:1;touch-action:auto;user-select:none}
.cal-appt.dragging{opacity:.78;z-index:6;box-shadow:0 5px 14px rgba(0,0,0,.4);cursor:grabbing}
.cal-appt a{color:#fff;text-decoration:none;cursor:pointer}
.ca-h{position:absolute;left:0;right:0;height:7px;cursor:ns-resize;z-index:2}
.ca-ht{top:0}.ca-hb{bottom:0}
/* ⏰ 予約枠の時刻(2026-08-16 batch101。batch100 を院長の言葉どおりに作り直し)
   院長「予約枠が重なって**時間が2行になる場合のみ**、12:10 - 12:45 のように同じ12時なので
        あるならば、12:10 - 45 と表示する様にして欲しい」
   → 枠が広いうちはフル表示(12:10 - 12:45)。細くて2行に折り返す幅になった時だけ短縮(12:10 - 45)。
     .ca-time 自身を container にして「時刻が使える幅」で判定するので、
     枠を掴んで伸縮すると幅に応じてその場で切り替わる(JSの再描画なし=ちらつきなし)。
     しきい値を px ではなく ch(数字1文字の幅)で書いてあるので、
     文字が小さい2日/7日表示(8.5px)でも同じ1行で正しく効く。
     container query の無い古い環境では常にフル表示に戻るだけで壊れない。 */
.ca-time{font-size:11.5px;opacity:.92;container-type:inline-size;container-name:catime}
.ca-tshort{display:none}
/* 11.4ch = フル表示「14:00 - 14:35」の実測幅(約10.7ch)+ 折り返し直前で切り替えるための余白。
   これより狭くなると2行に折れてしまうので、その手前で短縮版に入れ替える。
   2026-08-16 batch102: 時をまたぐ枠(10:30 - 11:30)も同じしきい値で
   「10:30 -11:30」(ハイフンの後ろの空白だけを詰めた版)に入れ替える。
   フルの幅は同じ13文字なので折り返す幅も同じ = しきい値は1つで足りる */
@container catime (max-width: 11.4ch){
  .ca-tfull{display:none}
  .ca-tshort{display:inline}
}
.ca-edit{text-decoration:none !important;color:#fff;opacity:.92;font-size:12px;margin-right:3px}
/* 予約時間の行と氏名の行の間を、ヨミガナ1文字分(6px)だけ上へ詰める(2026-08-14 batch87 院長要望。
   フリガナ行の高さぶん氏名ブロックを持ち上げる。文字の大きさは変えない) */
.ca-nm{display:flex;align-items:flex-end;gap:1px;font-weight:400;font-size:12px;margin-top:-6px}
/* 氏名は姓と名に分け、フリガナを漢字の真上にそろえる(2026-08-08 メディベースに合わせた) */
.ca-nmtxt{display:inline-flex;align-items:flex-end;gap:5px;line-height:1.15;min-width:0}
.nmpart{display:inline-flex;flex-direction:column;align-items:center;min-width:0}
.nmpart b{font-weight:400;white-space:nowrap}
.ca-nmtxt small{display:block;font-size:6px;font-weight:400;opacity:.85;line-height:1;white-space:nowrap;
  transform:scale(.9);transform-origin:center bottom;margin-bottom:-1px}
/* 🩷 メモ枠の氏名は「押せる」ことが分かるように下線を引く(押すと新患者登録に進む・batch94) */
.ca-memoreg{color:inherit;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
/* 重なりで左になった枠のメモは、右の枠の下に潜らないよう左半分で折り返す */
.ca-memo.half{width:50%;padding-right:2px}
.ca-memo{white-space:pre-wrap;font-size:10.5px;opacity:.95;line-height:1.35}
/* ---- モーダル共通 ---- */
/* 🪟 窓(モーダル)の重なりの順(2026-08-28 b217 先生の逐語「診療メモの窓がとても上にあって掴めない」
   「術前休止薬なども上の方が欠けた状態で出る、Emptyがあるバーのせいかもしれません」)。
   ⚠️ 真因: この土台の z-index が 50 で、**上部の黒いバー(.mnav=80)・予約ボードの貼り付けた行
      (.cal-fixhead=60。操作の行とお知らせ「Empty」の行)・右クリックの小窓(.calctx=71)より下**
      だった。窓の上端は画面の40pxの所に出ていたのに、その帯に**上から塗りつぶされて**
      題(掴む所)と✕が見えなくなり、「上にありすぎて掴めない」「上が欠ける」状態になっていた。
   → 土台を貼り付けた帯より上に置く。.modal-bg を使うすべての窓(診療メモ・術前休止薬・
      見積送付完了・OP予約管理表・未完バッジの羅列など49か所)がこれで画面の中に収まる。
   ⚠️ 掴んで動かせる窓(.dwin/.linewin=2000・オペ記録=2200)との上下は変えていない
      (今までも .modal-bg の方が下。1200 < 2000 のまま)。
   2026-09-02 b249: 番号は冒頭の「重なりの順の決まり」に合わせて 1000 → 1200 にした(順は同じ)。 */
.modal-bg{position:fixed;inset:0;background:rgba(15,30,50,.45);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:1200;overflow:auto}
.modal{background:#fff;border-radius:14px;padding:18px 24px 20px;width:100%;max-width:780px;box-shadow:0 18px 50px rgba(10,25,45,.4)}
/* ⭐ 押した場所の少し近くに出す窓(2026-08-16 batch95 院長要望)
   ・画面まん中の固定ではなく、left/top を計算して置く(位置の計算は nearWindowPos)
   ・予約ボードが見えていた方が「どこを押したか」が分かるので、背景は暗くしない
   ・幅は 600px 固定(狭い画面では画面幅まで)。高さは中身ぶんだけ=検索前は小さいまま
     (2026-08-16 batch96: 検索窓・メモ枠の案内文が丸ごと見えるよう 560 → 600px に少しだけ広げた) */
.modal-bg.atclick{display:block;padding:0;background:transparent;overflow:visible}
.modal-bg.atclick .modal{position:fixed;width:600px;max-width:calc(100vw - 16px);
  max-height:calc(100vh - 16px);overflow:auto;border:1px solid #cdd8e4;box-shadow:0 14px 40px rgba(10,25,45,.32)}
/* 検索の当たりが多くても窓が伸びすぎないように(伸びすぎると押した場所を避けきれなくなる) */
.modal-bg.atclick .plist{max-height:40vh;overflow:auto}
/* 🪟 2026-09-17 b504 先生の逐語「LINEウインドウの上にそれらのウインドウが出るようにしたい(…LINEウインドウを
   クリックするとラインウインドウが前面に来るように。また、その後それらのウインドウの方をクリックすると
   それらが前面に来るように。)」
   予約ボードから開く窓(予約枠の窓・どなたを診療予約しますか・メモ枠の新患者登録・診療メモ)だけに付く .lwswap。
   ・.lwswap      = その窓が前(2100 = 既存の「LINEの窓の上に重ねる窓」.modal-bg.lwtop と同じ段)
   ・.lwswap.under = LINEの大窓(2000)が前。窓は 1210(ふつうの窓 1200 のすぐ上)へ下がるだけで閉じない
   ・地の暗がりは別の紙(.mb-dim=1200)。大窓(2000)は暗がりより前なので**そのまま押せる**(押した方が前に来る)。
     外側を押して閉じる作法も暗がりが受け持つので今までどおり。LINEの大窓が開いていない時は .lwswap を付けない
     =今までの .modal-bg(1200)のまま(他の窓との上下は1つも変えない) */
.mb-dim{position:fixed;inset:0;background:rgba(15,30,50,.45);z-index:1200}
.mb-dim.clear{background:transparent}   /* 押した場所に出す窓(.atclick)は今までどおり暗くしない */
.modal-bg.lwswap{background:transparent;pointer-events:none;z-index:2100}
.modal-bg.lwswap.under{z-index:1210}
.modal-bg.lwswap>.modal{pointer-events:auto}
.mhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.mhead h3{font-size:16px;color:#25313c}
.mclose{font-size:16px;color:#8794a1;cursor:pointer;padding:2px 8px}
.frow{display:flex;border-bottom:1px solid #eef2f6;padding:9px 0;gap:12px;align-items:center;flex-wrap:wrap}
.frow>span{width:104px;font-size:11.5px;color:#5c6b7a;font-weight:700;flex-shrink:0}
.tsel{display:inline-flex;align-items:center;gap:4px}
.tsel select{padding:5px 6px;font-size:13px;width:50px}
.qbtns{display:flex;gap:4px}
.chip{width:16px;height:16px;border-radius:4px;display:inline-block}
button.danger{border-color:#d84334;color:#b03a2e}
button.danger:hover{background:#fbe4e1}
/* ---- カレンダー設定 ---- */
.set2col{display:flex;gap:24px;flex-wrap:wrap}
.set2col>div{flex:1;min-width:260px}
.set2col h4{font-size:12.5px;color:#42566b;margin-bottom:8px;display:flex;gap:8px;align-items:center}
.setrow{display:flex;gap:6px;align-items:center;margin-bottom:5px}
.setrow input{flex:1;padding:5px 8px;font-size:12.5px}
.setrow input[type=color]{flex:none;width:40px;height:30px;padding:2px}
.setrow a{color:#b03a2e;cursor:pointer;padding:0 4px}
/* ---- メディベース風 登録フォーム ---- */
.mbtitle{font-size:20px;font-weight:700}
.mbtitle small{font-size:13px;color:#666;font-weight:400}
.mbform{max-width:900px}
.mrow{display:flex;align-items:center;gap:18px;margin-bottom:14px}
.mrow .ml{width:190px;text-align:right;font-size:13.5px;flex-shrink:0}
.mrow .req{background:#c9302c;color:#fff;font-style:normal;font-size:10.5px;border-radius:3px;padding:1px 7px;margin-left:6px;font-weight:700}
.mrow .mi{flex:1;display:flex;flex-direction:column;gap:3px}
.mrow .mi>input,.mrow .mi>textarea{width:100%}
.mrow .mi>select{align-self:flex-start;min-width:220px}
.mrow .hint{color:#888;font-size:11.5px}
.bsel{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.bsel .btxt{font-size:13px}
.mbtns{display:flex;gap:14px;margin:20px 0 4px 208px}
.mbtns .pri{padding:9px 22px}
/* ---- 職員(ユーザー)一覧 ---- */
.utable{border:1px solid #d8e0e8;border-radius:8px;overflow:hidden;margin-top:6px}
.urow{display:flex;align-items:center;border-bottom:1px solid #e8eef4;padding:8px 12px;gap:10px;font-size:13px}
.urow:last-child{border-bottom:none}
.urow.uhead{background:#dff0d8;font-weight:700;font-size:12px}
.urow.off{opacity:.5}
.urow span:nth-child(1){width:34px}
.urow span:nth-child(2){flex:1.2}
.urow span:nth-child(3){flex:1}
.urow span:nth-child(4){width:110px}
/* 🏥 b462: 「院」の列(管理者は選び直せる。省スペース優先で幅は詰める) */
.urow span:nth-child(5){width:96px}
.urow span:nth-child(6){width:56px}
.uclinic select{font-size:12px;padding:1px 2px;max-width:92px}
.urow .uacts{display:flex;gap:6px;width:170px}
/* b462: 見出しの「操作」も行と同じ幅にして、見出しと中身の列をそろえる */
.urow.uhead span:nth-child(7){width:170px}
/* ---- メディベース風 黒ナビ ---- */
.mnav{display:flex;align-items:center;gap:2px;background:#1c1f24;color:#e8ecf1;padding:0 10px;height:44px;font-size:13px;position:sticky;top:0;z-index:80}
.mnav a{color:#dfe6ee;padding:0 12px;line-height:44px;cursor:pointer;white-space:nowrap}
.mnav a:hover{background:#31363e}
.mnav a.on{background:#000;font-weight:700}
.brandmini{font-weight:700;letter-spacing:.06em}
.brandmini b{color:#8fc1f7}
.ndrop{position:relative}
.ndrop>a{display:block}
.ndmenu{display:none;position:absolute;right:0;top:44px;background:#fff;border:1px solid #cfd8e0;border-radius:0 0 8px 8px;box-shadow:0 8px 24px rgba(20,35,55,.25);z-index:60;min-width:190px;padding:4px 0}
.ndrop:hover .ndmenu{display:block}
.ndmenu a{display:block;color:#333 !important;padding:8px 16px;line-height:1.4;font-size:13px}
.ndmenu a:hover{background:#eef4fa}
/* ⚠️ batch205b: 狭い画面(iPad・スマホ)の決まりは `.mnav a{line-height:42〜48px}` のように
   **バーの中のaを全部**大きくするので、そのままだと**メニューの中の項目まで**1つ48pxになる。
   ⚙設定は19項目あるので menu の高さが900pxを超え、下の方(アルゴリズム一覧など)が
   iPadの画面に入らず押せなくなっていた。メニューの中は画面幅によらず同じ大きさに戻す
   (`.mnav .ndmenu a` の方が決まりとして強いので、上の狭い画面の決まりに勝つ) */
.mnav .ndmenu a,.mnav .ndsubmenu a{padding:8px 16px;line-height:1.4;font-size:13px}
/* 📚 ⚙設定の中のサブメニュー(2026-08-20 batch162・院長の逐語
   「設定内の一番下に『アルゴリズム一覧』と載せ、そこをホバーすると…出て、
    それをクリックするとルールを記載したウインドウが出る」)。
   ・親の .ndmenu は right:0 で右寄せに出るので、サブは**左側**(right:100%)へ開く
   ・親の項目の上端にそろえる(top:-5px = .ndmenu の padding 4px + 枠 1px ぶん戻す)
   ・説明文は置かない。項目名だけ(院長の指示) */
.ndsub{position:relative;display:block}
.ndsub>a{display:block}
.ndsub:hover>a{background:#eef4fa}
.ndsubmenu{display:none;position:absolute;right:100%;top:-5px;background:#fff;border:1px solid #cfd8e0;
  border-radius:8px 0 0 8px;box-shadow:0 8px 24px rgba(20,35,55,.25);z-index:61;min-width:190px;padding:4px 0}
.ndsub:hover .ndsubmenu{display:block}
/* 🗂 ═══ 2026-09-13 b452 上のバーの「🗂 業務」と「⚙ 設定」 ═══
   ・.ndscroll = 2枚のメニューだけに付ける印。画面からはみ出す時は**メニューの中だけ**縦に送れる
     (窓は伸ばさない。先生の逐語「メニューの中だけ縦に送れるように」)。
     ⚠️ 名前のメニュー(.nuserdrop .ndmenu)には付けない(中の打刻の窓がはみ出して切れるため)
   ・overflow を付けると横も切られるので、中のサブメニュー(アルゴリズム一覧・倉庫)は
     横へ飛び出さず、その場で下に開く(position:static)。ホバーで出るのは今までどおり */
.mnav .ndmenu.ndscroll{max-height:calc(100vh - 56px);overflow-y:auto;overscroll-behavior:contain}
.ndscroll .ndsubmenu{position:static;right:auto;top:auto;background:#f3f7fb;border:0;border-radius:0;
  box-shadow:none;z-index:auto;min-width:0;padding:0}
.ndscroll .ndsubmenu a{padding-left:30px}
.ndscroll .nd-oku.open .ndsubmenu{display:block}
/* ↕ 管理者だけの「掴んで並べ替え」の見え方。掴んだ項目を薄く・落ちる先に青い線
   (上へ動かす時は相手の上=.nd-dropb / 下へ動かす時は相手の下=.nd-dropa。記録集の行・タブと同じ流儀)。
   管理者以外にはこの印は出ない */
.ndscroll .nd-mv{opacity:.45}
.ndscroll .nd-dropb{box-shadow:inset 0 2px 0 0 #1e6fe0}
.ndscroll .nd-dropa{box-shadow:inset 0 -2px 0 0 #1e6fe0}
.ndscroll .nd-drop{box-shadow:inset 0 2px 0 0 #1e6fe0}
/* 🖱 ═══ 2026-09-15 b466 右クリックで「業務⇄設定⇄倉庫」へ移す + 掴んで倉庫へ ═══
   ・.nd-open = 右クリックの選択を出している間・移した直後だけ、そのメニューを開いたままにする
     (ふだんは今までどおりホバーで出る)
   ・.nd-oku.nd-drop>a = 掴んだ項目を「📁 倉庫」の見出しに合わせた時、そこに落とせると分かるようにする
   ・.navctx = 右クリックで出る小さな選択。メニューの中は縦に送れる作りで切られるので、
     メニューの外に position:fixed で出す(上のバーの z-index:80 より前へ) */
.ndrop.nd-open .ndmenu{display:block}
.ndscroll .nd-oku.nd-drop>a{background:#dbeaff;box-shadow:inset 0 2px 0 0 #1e6fe0}
.ndscroll .nd-ctx{background:#eef4fa}
.navctx{position:fixed;z-index:900;background:#fff;border:1px solid #cfd8e0;border-radius:8px;
  box-shadow:0 8px 24px rgba(20,35,55,.28);padding:4px 0;min-width:170px}
.navctx a{display:block;color:#333;padding:8px 14px;font-size:13px;line-height:1.4;white-space:nowrap;cursor:pointer}
.navctx a:hover{background:#eef4fa}
.nsearch{display:flex;align-items:center;gap:0;margin-left:8px}
/* 🔍 2026-09-18 b511 先生の逐語「上部バーが混み合ってきたので…検索窓は5分の4の幅にして」
   → 210px × 0.8 = 168px(下の幅ごとの決まり 190→152・140→112 も同じ5分の4にそろえた)。
     行の高さ(44px)や他の項目の場所は変えない */
.nsearch input{border-radius:4px 0 0 4px;border:none;padding:7px 10px;font-size:12.5px;width:168px}
.nsearch button{border-radius:0 4px 4px 0;border:none;background:#fff;font-weight:700;padding:7px 10px;font-size:12.5px}
.nspacer{flex:1}
.nuser{color:#9fb3c6;padding:0 6px;white-space:nowrap}
.subbrand{background:#e6ecf2;color:#7a8794;font-size:10.5px;padding:3px 14px;letter-spacing:.04em}
/* ---- 患者ヘッダー(メディベース風) ---- */
.phead{display:flex;gap:14px;align-items:center;background:#fff;border:1px solid #d8e0e8;border-radius:10px;padding:10px 16px;margin-bottom:8px;flex-wrap:wrap}
.pico{font-size:30px;display:flex;align-items:center}
.sexico{display:block;border-radius:50%}
.pinfo{flex:1;min-width:220px}
.pname{font-size:16px;color:#4a5361;font-weight:600}   /* メディベースにそろえて薄い黒(2026-08-09 院長要望) */
.pname small{font-weight:400;color:#8794a1;font-size:11px}
.psub{color:#5c6b7a;font-size:12px;margin-top:2px}
.pbadges{display:flex;gap:10px;align-items:center;margin-top:4px;flex-wrap:wrap}
.badge{border-radius:4px;padding:2px 9px;font-size:10.5px;font-weight:700}
.badge.alg{background:#3f9d4e;color:#fff}
.pnums{display:flex;flex-direction:column;gap:3px;align-items:flex-end;font-size:11px}
.pnums span{background:#6b7680;color:#fff;border-radius:4px;padding:2px 9px}
/* 🩺 2026-09-06 b321 先生の指示: 診療情報一覧の撤去(上原だけ切替)。カルテIDのすぐ下の小さなピル(文字だけ)。オンで青 */
.pnums a.dinfo-tgl{font-size:10.5px;line-height:1;color:#8a97a5;background:#fff;border:1px solid #d8e0e8;border-radius:999px;padding:3px 8px;cursor:pointer;user-select:none}
.pnums a.dinfo-tgl:hover{border-color:#9cc2e8;color:#1e6fe0}
.pnums a.dinfo-tgl.on{color:#1e6fe0;border-color:#9cc2e8;background:#eef5fd;font-weight:600}
.pn-alert{background:#fbe4e1;border-color:#eab5ae;color:#b03a2e;font-weight:700;margin-bottom:8px}
.pn-green{background:#e8f6ea;border-color:#b9dfc0;color:#1c7c31;font-weight:700;margin-bottom:8px}
.pn-orange{background:#fdf0e0;border-color:#eccb9a;color:#b06a12;font-weight:700;margin-bottom:8px}
.pn-blue{background:#e7f0fb;border-color:#b9d2ef;color:#1a5fb4;font-weight:700;margin-bottom:8px}
/* サマリーページ(メディベース同構成: 左=基本情報 右=サマリー・特記・紹介) */
.sumwrap{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;margin-top:10px}
.sumcol{flex:1 1 430px;min-width:0}
.itbl{width:100%;border-collapse:collapse;background:#fff;font-size:12.5px}
.itbl th,.itbl td{border:1px solid #dfe5ea;padding:8px 10px;text-align:left;vertical-align:top}
.itbl th{width:132px;background:#fbfcfd;color:#333;font-weight:600}
.itbl th.isec{background:#eef1f4;font-weight:700;width:auto}
.itbl input,.itbl select,.itbl textarea{width:100%;box-sizing:border-box;font-size:12.5px}
.ival{color:#1e6fe0;text-decoration:underline dotted;cursor:pointer;white-space:pre-wrap;word-break:break-word;display:inline-block;min-width:40px;min-height:1em}
.ival.iempty{color:#c0392b;font-style:italic}
/* 読むだけの値(旧カルテ番号など)。押せると勘違いさせないので下線も色も付けない */
.ival.iro{color:#333;text-decoration:none;cursor:default}
.ival.iro.inone{color:#98a4b0}
.itbl .mini{margin-left:8px;white-space:nowrap}
.itbl .plink{color:#1e6fe0}
.sumup{font-size:11.5px;color:#5c6b7a;margin-bottom:6px}
.sumup b{color:#333}
.dirty{color:#b06a12;font-weight:700}
.calcv{color:#333}
/* ---- 患者紹介の欄(2026-08-13 batch77) ----
   ・見出しに患者の姓を入れるので、132pxだと折り返す。少し広げて折り返さないようにする
   ・名札はドラッグでもう一方の欄へ移せる(誤登録の付け替え)。掴める物だと分かるように手の形にする */
.itbl th.refth{width:186px;white-space:nowrap}
.isechint{font-weight:400;color:#5c6b7a;font-size:11px;margin-left:10px}
.refrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:26px;border-radius:6px}
.refnone{color:#c0392b;font-style:italic}
.refp{background:#eef4fb;border:1px solid #cfe0f1;border-radius:6px;padding:2px 8px;cursor:grab;user-select:none}
.refp:active{cursor:grabbing}
.refp a{color:#b03a2e;cursor:pointer;margin-left:6px;text-decoration:none}
/* ドラッグ中: 掴んでいる名札は薄く、受け取る側の欄は青い点線で「ここに置ける」と見せる */
.refp.refgrab{opacity:.45}
.refrow.refsrc{background:#f7f9fb}
.refrow.refdrop{outline:2px dashed #1e6fe0;outline-offset:2px;background:#eef4fb}
.rtbl th{width:auto;background:#f4f6f8;white-space:nowrap}
.rtbl .refhint{background:#eaf4fb;color:#3b6d94}
/* ---- 患者ページのタブ ---- */
/* 患者トップのタブ: メディベースと同じ形。ひとつずつ箱で囲まず、等間隔に並べ、
   選んだものだけが手前の紙のように見える(2026-08-09 院長要望) */
.ptabs{display:flex;gap:2px;flex-wrap:wrap;margin-bottom:12px;align-items:flex-end;border-bottom:1px solid #d7e0ea}
.ptabs a{border:1px solid transparent;border-bottom:0;border-radius:7px 7px 0 0;background:transparent;
  padding:8px 17px;font-size:13px;color:#3b4b5e;cursor:pointer;margin-bottom:-1px;display:inline-flex;
  align-items:center;gap:6px;white-space:nowrap}
.ptabs a:hover{background:#f2f7fc}
.ptabs a.on{border-color:#d7e0ea;background:#fff;font-weight:700;color:#1e6fe0;box-shadow:0 -1px 0 #fff inset}
.ptabs a svg{width:15px;height:15px;flex:none;color:#9cc2e8}      /* 薄い青の線画(色付きの絵文字は使わない) */
.ptabs a.on svg{color:#1e6fe0}
.ptabs a.soon{color:#aab6c1;cursor:not-allowed}
/* 🔖 2026-09-06 b321 先生の指示: 「🔖⚙ スタンプ編集」をタブの列のいちばん右へ(margin-left:auto)。見た目は今までどおり小さな文字
   (.stgear と同じ 12px・灰色)。タブの枠・余白は付けない */
.ptabs a.stgear{margin-left:auto;align-self:center;border:0;border-radius:6px;padding:3px 8px;margin-bottom:4px;font-size:12px;color:#5c6b7a;background:transparent}
.ptabs a.stgear:hover{background:#f2f7fc;color:#1e6fe0}
/* LINE は毎日使うものではないので、緑の印象だけ残して他のタブと同じ濃さに(2026-08-09 院長要望) */
.ptabs a.linebtn{background:#f0faf3;border:1px solid #bfe3cd;color:#12874a;font-weight:600;padding:7px 16px;
  border-radius:7px;margin-bottom:1px;box-shadow:none}
.ptabs a.linebtn svg{color:#4bb377}
.ptabs a.linebtn:hover{background:#e3f5e9;border-color:#9ed4b4}
.ptabs a.linebtn.on{background:#dff3e6;border-color:#6cbd8c;color:#0a6c39;font-weight:700}
.ptabs a.linebtn.on svg{color:#0a6c39}
/* 💬 「ひもづき未」(2026-09-04 先生の逐語「LINEとのひもづきがまだない人は、患者トップのLINEタブの右に
   『ひもづき未』のオレンジ/赤っぽい小さい文字を入れてほしいです」)。
   LINEとひもづいていない患者の時だけ、LINEタブのすぐ右に出る**文字だけ**の印(main.tsx の lineUid === null)。
   ・色はオレンジと赤の間(#e8590c)・字は 10.5px の小さい文字
   ・帯・枠・地色・余白は付けず、1行に固定(white-space:nowrap)+行の高さ1 = タブの列の高さを変えない・折り返さない
   ・align-self:center = 隣のLINEタブの文字と同じ高さに並べる(.ptabs は align-items:flex-end なので個別に指定)
   ・b314: 出るのはひもづけ窓を×で閉じた後だけ。押すと窓がまた開く(cursor:pointer)。<a>だが .ptabs a の箱の指定は打ち消す */
.ptabs .line-nolink{font-size:10.5px;line-height:1;color:#e8590c;font-weight:600;align-self:center;
  margin:0 2px 0 4px;padding:0;white-space:nowrap;cursor:pointer;border:0;border-radius:0;background:transparent}
.ptabs a.line-nolink:hover{background:transparent;text-decoration:underline}
/* 🔗 2026-09-06 b314 先生の指示: ひもづけ窓を最初から・候補を先に。
   LINEとひもづいていない患者では「ひもづき未」の文字の代わりに、この窓が**最初から開いた状態**で出る(main.tsx の plinkOpen)。
   ・置き場 = LINEタブのすぐ右(.plink-wrap は幅0でタブの列の高さいっぱい)の**下**に浮かぶ(タブの列の並びは1pxも動かさない)
   ・中身 = [×(左上)][苗字の入った検索欄] → その下に一覧の行(1つだけ)
     (🔗 2026-09-06 b316 先生の指摘: 一覧を1つに・LINE検索と同じ並び・右クリックでまとめる。b314の「上=フルネーム候補/下=苗字の一覧」の
      2段は撤去し、×の右に検索欄(.plink-head)、その下に LINE(一括)の「全」で同じ語を検索した時と同じ並びの一覧だけ)
   ・行は LINE(一括)の一覧と同じ部品(.lib-row/.lib-ava/.lib-nm/.lib-last…)を使い、見た目も同じ。窓の中では高さだけ詰める(省スペース)
   ・✔ = この患者にひもづいた相手(押せない) / 🔗苗字 = 別の患者にひもづいている相手
   ・行の右クリックの小窓は LINE(一括)と同じ .calctx.lib-rowctx(下の方の定義。部品も共用)
   ・帯・説明文は置かない(先生の好み) */
.ptabs .plink-wrap{position:relative;align-self:stretch;width:0;margin-left:4px}
.plink-head{display:flex;align-items:center;gap:4px;margin:2px 0 3px}
.plink-win{position:absolute;top:100%;left:0;z-index:1500;width:400px;max-height:70vh;overflow:auto;
  background:#fff;border:1px solid #c8d3de;border-radius:8px;box-shadow:0 6px 18px rgba(20,40,60,.18);
  padding:2px 6px 6px;cursor:default;font-weight:400;color:#1b2b3a}
.ptabs .plink-win a{border:0;border-radius:0;padding:0;margin:0;background:transparent;font-weight:400;font-size:inherit;
  color:inherit;box-shadow:none;display:inline;white-space:normal}
.ptabs .plink-win a:hover{background:transparent}
.ptabs .plink-win .plink-x{display:block;width:max-content;font-size:14px;line-height:1;color:#8a97a5;padding:3px 4px;
  cursor:pointer;text-decoration:none!important;user-select:none}
.ptabs .plink-win .plink-x:hover{color:#243b53}
.plink-win .lib-row{height:auto;min-height:0;padding:3px 6px;gap:8px;flex-wrap:wrap;border-radius:6px}
.plink-win .lib-row .lav-l{width:36px;height:36px}
.plink-win .lib-body{height:auto;flex:1 1 0%;min-width:0}
.plink-win .lib-row b{padding-right:0}
.plink-win .lib-when{left:0;margin-left:8px}
.plink-win .lib-l2{padding-right:0;margin-top:0}
.plink-mk{flex:0 0 auto;margin-left:6px;font-size:11px;color:#8a97a5;white-space:nowrap}
.plink-mk.on{color:#12874a;font-weight:700;font-size:13px}
.plink-win .lib-row.plink-mine{cursor:default}
.plink-win .lib-row.plink-mine:hover{background:transparent}
.plink-win .lib-row.plink-ask{background:#fff7e0;box-shadow:inset 0 0 0 1px #f0d08a}
.plink-win .lib-cand-ok{flex:1 0 100%;display:flex;align-items:center;gap:6px;margin-top:2px;font-size:11px;color:#8a5a00}
.ptabs .plink-win .lib-cand-yes,.ptabs .plink-win .lib-cand-no{flex:0 0 auto;padding:1px 8px;border-radius:999px;font-size:11px;
  line-height:1.5;cursor:pointer;text-decoration:none!important;user-select:none;white-space:nowrap}
.ptabs .plink-win .lib-cand-yes{margin-left:auto;background:#1e6fe0;border:1px solid #1e6fe0;color:#fff}
.ptabs .plink-win .lib-cand-yes:hover{background:#1558b0;border-color:#1558b0}
.ptabs .plink-win .lib-cand-no{background:#fff;border:1px solid #c8d3de;color:#5c6b7a}
.ptabs .plink-win .lib-cand-no:hover{background:#f0f4f8}
/* b316: 検索欄は×の右(同じ行)。残りの幅いっぱい */
.plink-q{flex:1 1 0%;min-width:0;box-sizing:border-box;font-size:11.5px;padding:3px 6px;border:1px solid #dbe3ea;border-radius:5px;margin:0}
.ptabs .plink-win .plink-head .plink-x{flex:0 0 auto}
.plink-e{font-size:11px;color:#8a97a5;padding:3px 6px}
/* 💴 新見積書作成(2026-08-16 batch114 院長要望)。LINEの緑の箱と同じ作りで、色だけ薄い黄色。
   タブではなく「窓を開くだけのボタン」なので、押しても表示中のタブは変わらない */
.ptabs a.qnewbtn{background:#fffbe8;border:1px solid #ecdca4;color:#8a6510;font-weight:600;padding:7px 16px;
  border-radius:7px;margin-bottom:1px;box-shadow:none}
.ptabs a.qnewbtn:hover{background:#fdf5d3;border-color:#e0cb85}
.ptabs a.qnewbtn.on{background:#fbefc2;border-color:#d5bb63;color:#71530a;font-weight:700}
/* 🔴 新見積書作成の2択(2026-08-22 batch176)。押したボタンの真下に小さく出す。説明文は入れない */
.qpickwrap{position:relative;display:inline-flex;align-items:flex-end}
/* b249: 押した所に出す小窓。全画面の受け皿(veil)が帯より下だと、帯の上を押しても閉じない */
.qpick-bg{position:fixed;inset:0;z-index:3000;background:transparent}
.qpick{position:absolute;top:100%;left:0;margin-top:3px;z-index:3001;display:flex;flex-direction:column;gap:3px;
  background:#fff;border:1px solid #ddd0a0;border-radius:6px;padding:4px;box-shadow:0 3px 10px rgba(0,0,0,.15)}
.qpick button{white-space:nowrap;font-size:12px;padding:5px 10px;border-radius:5px;cursor:pointer;text-align:left}
.qpick button.qpick-a{background:#fffbe8;border:1px solid #e0cb85;color:#8a6510;font-weight:700}
.qpick button.qpick-a:hover{background:#fbefc2}
.qpick button.qpick-b{background:#f6f8fa;border:1px solid #d7e0ea;color:#3b4b5e}
.qpick button.qpick-b:hover{background:#eef3f8}

/* 名前の右に置く小さな印(禁忌・アレルギー・感染症・コメント)。押すと中身が出る。メディベース準拠 */
.pnamerow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.palerts{position:relative;display:inline-flex;gap:5px;align-items:center}
.pab{cursor:pointer;font-size:11.5px;font-weight:700;border-radius:5px;padding:2px 8px;line-height:1.7;color:#fff;white-space:nowrap}
.pab.ab-red{background:#e05a4d}
.pab.ab-green{background:#4aab63}
.pab.ab-orange{background:#e8994a}
.pab.ab-blue{background:#5b9bd5}
.pabpop{position:absolute;left:0;top:26px;z-index:40;background:#fff;border:1px solid #c8d3de;border-radius:8px;
  box-shadow:0 10px 28px rgba(25,45,66,.22);padding:10px 16px;min-width:230px;max-width:520px;cursor:pointer}
.pabline{font-size:13px;line-height:1.9;white-space:pre-wrap}
.pabline.ab-red{color:#c0392b}
.pabline.ab-green{color:#1c7c31}
.pabline.ab-orange{color:#b06a12}
.pabline.ab-blue{color:#1a5fb4}

/* 窓を掴んで動かしている間は、中の iframe にマウスを取られないようにする(つっかえ防止) */
.fprev.dragging iframe{pointer-events:none}

/* 看護師の用紙(採血問診表・手術記録)を白紙で刷るとき: その用紙だけを原寸で紙に出す(2026-08-09) */
@media print{
  /* ⚠️ 印刷物にブラウザが勝手に足す「日付・題名・URL・ページ番号」を出さない(2026-08-10 院長要望)。
     紙は用紙側で余白を持つ。**印刷物を新しく作るときは必ずこの指定があることを確かめる** */
  @page{margin:0}
  /* ⚠️ 用紙以外の要素(隠していても場所は取る)が横に広いと、ブラウザが紙全体を縮めてしまい
     用紙が小さく刷られる。紙の幅そのものに固定して原寸で出す(2026-08-10 院長報告) */
  html,body.pprint{width:210mm !important;margin:0 !important;padding:0 !important;overflow:hidden !important}
  body.pprint .fprev.operec{width:210mm !important;height:auto !important}
  body.pprint .operec-scroll{padding:0 !important}
  body.pprint .nk-paper,body.pprint .operec-paper,body.pprint .ms-paper,body.pprint .gz-paper{
    width:210mm !important;max-width:none !important;
    box-shadow:none !important;margin:0 !important}
  /* ⚠️ 1枚に収める。高さを紙より1pxだけ低く切り、次の紙へ送らせない
     (min-height を紙と同じにすると、枠線1本ぶんのはみ出しで白紙の2枚目が出る。2026-08-10 院長報告)
     🍎 297mmちょうどだと紙の高さと同値になり、WebKit(iPad・MacのSafari)は端数の丸めで
     **白紙の2枚目**を必ず作る(2026-08-14 batch84でWKWebView+NSPrintOperationの実測により確定。
     Chromeは html の overflow:hidden で切り落とすため露見しなかった)。1px低くすれば両方で1枚 */
  body.pprint .nk-paper,body.pprint .operec-paper,body.pprint .ms-paper,body.pprint .paperprint{
    height:calc(297mm - 1px) !important;min-height:0 !important;overflow:hidden !important;
    page-break-after:avoid !important;break-after:avoid-page !important;
    page-break-inside:avoid !important;break-inside:avoid !important}
  body.pprint .operec-bg{width:100% !important;height:auto !important}
  body.pprint *{visibility:hidden}
  body.pprint .paperprint,body.pprint .paperprint *{visibility:visible}
  /* 🍎 用紙の連なり(先祖)以外は「隠す」だけでなく**場所ごと消す**(2026-08-14 batch84)。
     visibility:hidden だけだと場所は残り、WebKit(iPad)は見えない画面全体(縦2000px超・横に広い表)を
     紙の枚数と縮小率の計算に入れてしまう=iPadの「ほぼ白紙・断片だけ」印刷の正体。
     印(.pomit)は main.tsx の usePrintOnly が付け外しする。画面の見た目には一切効かない(印刷の中だけ) */
  body.pprint .pomit{display:none !important}
  body.pprint .dwin{position:absolute !important;left:0 !important;top:0 !important;width:auto !important;
    border:0 !important;box-shadow:none !important;background:#fff !important}
  body.pprint .dwin-bar{display:none !important}
  body.pprint .dwin-body,body.pprint .skwin-body{height:auto !important;max-height:none !important;overflow:visible !important}
  body.pprint .skwin-body>div{width:auto !important;height:auto !important}
  body.pprint .paperprint{transform:none !important}
  /* ⚠️ 採血問診表(780px幅)・手術記録(980px幅)はpxで作った紙なので、そのままではA4(約794×1123px)から
     はみ出す。印刷のときだけ紙ごと縮めてA4縦1枚の原寸に収める(2026-08-10 院長報告・batch49)。
     採血=780×約1174px→0.95倍(高さが決め手)。手術記録=980×約1266px→0.80倍(幅が決め手)。
     画面の見た目と拡大縮小には影響しない(印刷時のみ) */
  body.pprint .skwin-body .paperprint{width:210mm !important}
  /* ⚠️ 倍率は画面側が測って決める(--pk)。長い記入が折り返して行が増えたぶんだけ自動で縮み、
     必ずA4縦1枚に収まる(2026-08-12 batch63)。測れないときは今までどおり 0.95 / 0.80 */
  body.pprint .skwin-body .skpaper{transform:scale(var(--pk,.95)) !important;transform-origin:0 0 !important}
  body.pprint .skwin-body .skpaper.oppaper{transform:scale(var(--pk,.80)) !important}
  /* 🖨 記入欄(input)は枠の幅で文字が切れる。紙では折り返す文字(.skiprint)に差し替えて全文を出す。
     上の body.pmeasure(画面側の採寸)と同じ指定にしておくこと */
  body.pprint .skpaper .skiw{min-width:0 !important;max-width:100% !important;flex-wrap:wrap !important}
  body.pprint .skpaper input.ski,body.pprint .skpaper textarea.ski{display:none !important}
  body.pprint .skpaper .skiprint{display:inline-block !important}
  /* ✍️ b491: 折り返す欄(.skiw.ta)の包みは画面だけ横に広げている。紙では今までの包みに戻す
     (上の body.pmeasure と対。片方だけ直さないこと) */
  body.pprint .skpaper .skiw.ta{flex:0 1 auto !important}
  /* オペ記録(目・鼻)は版下の画像そのものが1枚の紙。窓の枠を消してA4いっぱいに出す */
  body.pprint .fprev.operec{position:absolute !important;left:0 !important;top:0 !important;
    width:210mm !important;height:auto !important;border:0 !important;box-shadow:none !important;border-radius:0 !important}
  body.pprint .fprev.operec .fprev-bar{display:none !important}
  body.pprint .operec-scroll{overflow:visible !important;height:auto !important;padding:0 !important;background:#fff !important}
  body.pprint .operec-paper{width:210mm !important;box-shadow:none !important;margin:0 !important}
  /* 🍎 WebKit(iPad・MacのSafari)専用の印刷分岐(batch82のzoom切替)は2026-08-14 batch83で撤去。
     iPad実機で逆に白紙化し、「画面の%を下げると印刷にも効く」回避手段まで塞いだため(院長報告)。
     main.tsx 側の html.wk の印付けも止めてあり、印刷経路はbatch81時点(全ブラウザtransform)に戻した。
     → 2026-08-14 batch84: 実物WebKit(WKWebView+NSPrintOperation)の実測で真因を確定して対処済み。
       ①紙の高さ297mmちょうど→端数の丸めで白紙の2枚目(上の height:calc(297mm - 1px) で対処)
       ②見えないだけで場所の残る画面全体が枚数・縮小率の計算に入る(上の .pomit で対処)。
       transform:scale(--pk) 自体はWebKitの印刷でも正しく効くことを実測で確認済み(zoom分岐は不要) */
}
/* 患者一覧: メディベースと同じ表(2026-08-10 院長要望) */
.ptable-wrap{overflow-x:auto;background:#fff;border:1px solid #d7e0ea;border-radius:8px}
.ptable{width:100%;border-collapse:collapse;font-size:12.5px}
.ptable th{background:#f4f8fb;border:1px solid #d7e0ea;padding:7px 10px;text-align:left;
  font-weight:700;color:#3b4b5e;white-space:nowrap}
/* 1行におさめる。文字はメディベースと同じ薄さ(濃い黒にしない) */
.ptable td{border:1px solid #e3eaf1;padding:5px 10px;vertical-align:middle;color:#5a6672;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ptable tbody tr:hover{background:#f7fbff}
.pt-nm a{display:block;line-height:1.15;text-decoration:none;white-space:nowrap}
.pt-kana{display:block;font-size:9px;color:#a3adb7;letter-spacing:.04em;white-space:nowrap}
.pt-name{color:#5b9bd5;font-weight:400;font-size:13.5px;white-space:nowrap}
.pt-nm a:hover .pt-name{text-decoration:underline}
.pt-addr{max-width:270px}
.pt-cm{max-width:170px}
.pt-del{text-align:center;width:52px}
.pt-del a{cursor:pointer;color:#9aa7b4;font-size:14px}
.pt-del a:hover{color:#c0392b}
.delchk{display:inline-flex;align-items:center;gap:5px;margin-left:16px;font-size:12.5px;color:#5c6b7a;cursor:pointer}

/* 🖨 画像の印刷(2026-08-21 batch169 先生の逐語「画像タブ内の画像 印刷できるようにしてほしい」)
   ・A4縦・**1ページに1枚**。画像は紙いっぱいに大きく、縦横比は保つ・切り取らない(object-fit:contain)
   ・上部は小さく1行だけ(氏名・カルテID・画像の名前・撮影日時)。説明文は足さない
   ⚠️ 印刷の仕掛けそのものは既存のまま(usePrintOnly + .paperprint)。この下の @media print は
      「1枚ごとに改ページ」だけを上書きする。上の共通指定(423〜485行)は .paperprint に
      break-after:avoid を付けているので、**必ずその後ろ**に置くこと(同じ強さなら後勝ち) */
.fprev.imgprint{width:min(830px,calc(100vw - 24px))}
.ip-scroll{flex:1;overflow:auto;background:#8f9aa5;padding:12px}
.ip-paper{position:relative;width:100%;max-width:794px;height:1122px;margin:0 auto 12px;background:#fff;
  box-shadow:0 4px 18px rgba(0,0,0,.3);display:flex;flex-direction:column;padding:8mm;box-sizing:border-box}
.ip-paper:last-child{margin-bottom:0}
/* 記録の見出し(説明文ではない)。1行に収め、はみ出しても紙を膨らませない */
.ip-head{flex:none;font-size:11px;line-height:1.4;color:#111;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid #444;padding-bottom:4px;margin-bottom:6px}
.ip-head b{font-weight:700}
.ip-head span{margin-left:14px;color:#222}
.ip-body{flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
.ip-img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}
/* 読み込みがそろうまで「印刷」は押せない(白紙で刷らないため) */
.fprev-bar .ipgo{color:#1a5fb4;font-weight:700}
.fprev-bar .ipgo.off{color:#94a2b0;font-weight:400;cursor:default}
/* 🖨 プレビュー窓の「この1枚だけ印刷」。✕閉じるの右隣(左上の作法は崩さない) */
.pv-print{cursor:pointer;color:#1a5fb4;font-weight:700;white-space:nowrap;border:1px solid #bcd3ee;
  background:#f2f8ff;border-radius:6px;padding:4px 10px;font-size:12.5px}
.pv-print:hover{background:#e3f0ff}
@media print{
  body.pprint .fprev.imgprint{position:absolute !important;left:0 !important;top:0 !important;
    width:210mm !important;height:auto !important;border:0 !important;box-shadow:none !important;
    border-radius:0 !important;overflow:visible !important;display:block !important}
  body.pprint .fprev.imgprint .fprev-bar{display:none !important}
  body.pprint .ip-scroll{display:block !important;overflow:visible !important;height:auto !important;
    padding:0 !important;background:#fff !important}
  /* 1枚 = 1ページ。高さは紙より1px低くする(297mmちょうどだとWebKitが白紙の2枚目を作る。batch84) */
  body.pprint .ip-paper{width:210mm !important;max-width:none !important;height:calc(297mm - 1px) !important;
    margin:0 !important;box-shadow:none !important;padding:8mm !important;overflow:hidden !important;
    display:flex !important;
    page-break-inside:avoid !important;break-inside:avoid !important;
    page-break-after:auto !important;break-after:auto !important}
  /* 2枚目以降は必ず次の紙から(共通指定の break-after:avoid をここで打ち消している) */
  body.pprint .ip-paper + .ip-paper{page-break-before:always !important;break-before:page !important}
  body.pprint .ip-img{max-width:100% !important;max-height:100% !important}
}

/* 🖊 オペ記録(目・鼻): Photoshopの版下を下絵にして、上部だけを差し込む(2026-08-10 院長要望) */
.fprev.operec{width:min(820px,calc(100vw - 24px))}
.operec-scroll{flex:1;overflow:auto;background:#8f9aa5;padding:12px}
.operec-paper{position:relative;width:100%;max-width:794px;margin:0 auto;background:#fff;box-shadow:0 4px 18px rgba(0,0,0,.3)}
.operec-bg{display:block;width:100%;height:auto}
/* 版下の上端〜破線までが空いているので、そこへ重ねる(比率で置くのでどの倍率でもずれない) */
.operec-head{position:absolute;left:0;top:0;width:100%;height:17.3%;padding:2.2% 3% 0;box-sizing:border-box;
  font-size:clamp(9px,1.55vw,13px);line-height:1.5;color:#111}
.operec-head .orh1{display:flex;align-items:baseline;gap:2%}
.orh-id{min-width:26%}
.orh-ttl{font-weight:700;letter-spacing:.18em;font-size:1.35em}
.orh-chk{margin-left:auto;color:#c0392b;font-size:.82em;white-space:nowrap}
.operec-head .orh2{display:flex;align-items:baseline;margin-top:.5em}
.orh-nm{min-width:26%}
.orh-dt{margin-left:auto;font-weight:700}
/* ⚠️ 2026-08-13 batch78: ここには max-height:9.2em + overflow:hidden があり、枠に入りきらない
   手術名が**黙って切り取られて**いた(院長報告「4行目以降が出ない」)。切り取りはやめ、
   文字の大きさと段組み(orbFit)で入るようにする。それでも入らないときは枠からあふれて出す
   ＝ 下絵と重なっても、書いたことが紙に出ないよりは良い(院長の明示指示)。ここに overflow:hidden を戻さないこと。 */
.orh-box{border:1px solid #111;padding:.35em .6em;margin-top:.5em;max-width:62%;
  overflow:visible;background:#fff}
.orh-box.wide{max-width:94%}          /* 2段組みにしたときは枠を横に広げる */
.orb-t{font-weight:700}
.orb-dr{font-weight:700}
.orb-ls{column-gap:1.2em}
.orb-l{white-space:pre-wrap;overflow-wrap:anywhere;break-inside:avoid}
.orb-l.none{color:#8a97a4}
.orb-k{margin-top:.2em}

/* ══ 🖊 オペ記録を画面で書く(2026-08-17 batch128 第1段階) ══════════════════
   2層(背景=版下PNG / 前面=オブジェクトを描き直すキャンバス)。
   ⚠️ .opdw-cv は touch-action:none。iPadのApple Pencil・指で描くとき、
      ブラウザに「これはスクロールだ」と横取りされないため(これが無いと線が引けない) */
.modal-bg.opdw-bg{z-index:2200;padding:14px 12px;align-items:center}
/* 2026-08-18 batch133: 右に図形ライブラリのパネルが付いたので 1180px → 1420px に広げた */
/* ⚠️ 2026-08-18 batch136: 高さを max-height ではなく **height** で決める。
   「図を大きく」は用紙の箱の高さから倍率を出すので、高さが中身で決まると
   (箱が小さい→倍率が小さい→中身が小さい→箱がもっと小さい)と縮み合ってしまう */
/* ⭐ 2026-08-18 batch137: 窓を「左=絵だけ / 右=道具ぜんぶ」の2分割にした(先生の指示)。
   ┌─────────────────────────────────────────────┐
   │ 🖊 オペ記録(鼻)を画面で書く 患者名            │ ← 題名
   ├──────────────────────┬──────────────────────┤
   │ 絵(.opdw-view)        │ 道具(.opdw-side)     │
   │  = 100% - --opdw-right│  = --opdw-right       │
   ├──────────────────────┴──────────────────────┤
   │ 患者カルテに保存 / 閉じる                     │
   └─────────────────────────────────────────────┘
   ⭐⭐ **右の割合を変えたい時は、下の --opdw-right の1行だけを直す**(例: 44% → 38%)。
        左は「残り全部」なので、ここ1つで左右の両方が決まる。
   ⭐  図形ライブラリの高さも --opdw-libh の1行で決まる(窓の縦幅の約1/3) */
/* ⚠️ 窓の横幅の上限を 1420 → 1800px に広げた(2026-08-18 batch137)。
   右に44%を渡すと左(絵)が狭くなり、絵が横で頭打ちになるため。広い画面ほど絵が大きく映る。
   (画面が1420px以下の端末では今までと同じ = calc(100vw - 24px) が効く) */
/* ⭐ 2026-08-19 batch156: --opdw-libh は「図形ライブラリの箱の高さ」。右パネルは下から
     [色パレット入りの図形ライブラリの箱]を--opdw-libhで置くので、**箱の上端 =
     パネルの縦の真ん中あたり**という先生の指定は、この1行で後から調整できる。
   ⭐ --opdw-tplw は右端のテンプレ/カテゴリの細い縦の列の幅(これも1行で調整) */
/* ⭐ 2026-08-21 batch173 先生の指示:
     「ライブラリがたくさん見れている状況が嬉しいので、**画像ライブラリの上端をもう少し上に**」
       → --opdw-libh 39vh → **46vh**(箱が高くなる = 上端が上がる = サムネが1段ぶん多く見える)
     「ツールボックスの右もスペースの余裕作り、**『テンプレ』欄や『LCSG』あたりを幅広目に**」
       → --opdw-tplw 118px → **150px**
     ⚠️ 絵の大きさは --opdw-right だけで決まる。この2つはどちらも**右パネルの中の分け方**なので、
        広げても・高くしても**絵は1pxも小さくならない**(先生の「絵面が重要」を守るための作り) */
/* ⭐ 2026-08-22 batch175 先生の逐語:
     「最前面への『へ』と、最背面への『へ』をなくして、そのぶん広くなった幅に『図を大きく』を
       入れて、同じ行にして」「そしてそのぶん、『図形ライブラリ』が１行分上へ移動するように」
     → 操作の段が 2行(56px) → **1行(28px)** に収まった(道具の箱 267px → 239px)。
       升は「上から auto / 1fr / --opdw-libh」で、ライブラリは**下から**決まるので、
       段が縮んだだけでは上端は動かない(余りを 1fr が吸う)。そこで
       --opdw-libh を **46vh → calc(46vh + 28px)** にして、上端をちょうど1行ぶん(28px)持ち上げた。
     ⚠️ 28px は実測値(段の高さの差)。1440x900 では上端 412px → 384px(上から 45.5% → 41.8%)。
     ⚠️ 絵の大きさは --opdw-right と切り取り窓(OPD_ZU)だけで決まるので、絵の倍率は1%も下がらない */
/* ⭐ 2026-08-25 batch187 先生のモック:
     「図形ライブラリは今より少し下に下がり、テンプレ欄も縦長になります」
     → --opdw-libh calc(46vh+28px) → **calc(41vh+28px)**(箱が低くなる = 上端が下がる。
       テンプレの縦の列はライブラリの上端まで伸びる作りなので、同じ1行で**縦長**になる) */
/* ⭐ 2026-09-04 batch273 先生の逐語(添付画像つき):
     「『直線』『四角』『丸』を左にずらし、『丸』のマークの右端が、『最背面』のマークの右端と
       なるくらいにしてほしい。その分、丸のマーク約2.8個分くらい？ テンプレリストを左へ長く
       してほしい。(拡大縮小回転ウインドウも左へ詰める)」
     → 足したのは **--opdw-toolw(道具の列の幅)の1つだけ**。右パネルを2列 → **3列**にして、
       上半分(裏書・道具の箱・拡大縮小/回転)と下半分(図形ライブラリ・カテゴリ)で
       左右の分かれ目を**別々**にした:
         上半分: [道具 344px][ テンプレ = 残り全部(2列目+3列目) ]
         下半分: [ 図形ライブラリ = 1列目+2列目 ][ カテゴリ 150px ]
       ╲▭⬭ は .opdw-tbr の margin-left:auto で**道具の箱の右端に貼り付いている**ので、
       道具の列が344pxになると3つはそのまま左へ寄る。空いたぶんはテンプレの列が飲み込む
       = 先生の「その分テンプレリストを左へ長く」。
       「🔧 拡大・縮小 / 回転」(.opdw-lib-tools)も同じ1列目なので、同時に左へ詰まる。
     ⭐ 344px の根拠(1440x980 での実測):
          「↩元に戻す…⬇最背面」の段の中身は **324.2px**。道具の箱は左右に padding 8px + 枠1px なので、
          箱の幅を 324.2+18 ≒ **344px** にすると、右端に貼り付いた ⬭ の右端が
          ちょうど「最背面」の右端に重なる(実測の差 1.8px)。
        伸び縮みする1fr のままだと窓幅ごとに右端がずれる(先生の画面でしかそろわない)ので**決め打ち**。
     ⭐ 図形ライブラリは**1列目+2列目**にまたがるので、改修前と同じ幅のまま
        (先生 batch173「ライブラリがたくさん見れている状況が嬉しい」= サムネの数を減らさない)。
     ⚠️ 「1段目(ペン〜消しゴム と ╲▭⬭)が2行になる」のは**避けられない・仕様として正**。
        1段目の中身は横一列だと399px要るのに、⬭ を324.2pxの所まで寄せるのが先生の指示のため。
        先生の添付画像でも ╲▭⬭ は既に「なげなわ・消しゴムの**右下**」に居る = 今の先生の画面と同じ姿。
        他の段(線・文字・ゆがみ・元に戻す…最背面)は**1行のまま**(検査が高さで見張る)。
     ⚠️ 絵(キャンバス)の大きさは --opdw-right(44%)だけで決まるので、1pxも変わっていない。
     ⚠️ 半分の窓(.opdw-half = 処置記録・目のオペ記録)は**今までどおりの2列のまま**(下の打ち消し4行)。
        あちらは右パネル全体が392pxしかなく、道具の列を344pxに固定すると
        テンプレの列が潰れる(先生の「一目で見える」に反する)。 */
/* ⭐⭐ 2026-09-12 b436 先生の逐語(理想図つき):
     「手術記録の「図」の領域はそのままだが、図の窓は右へ「図のみ」のボタン半分量くらい広げて欲しい」
     「だいぶスペースが空くので、右に位置していた「テンプレウインドウ」を「図のみ」のボタン1.5個分くらい左へ拡大」
     → ① --opdw-viewext(26px ≒「図のみ」52.5px の半分): 右パネル(.opdw-side)をそのぶん細くし、図の窓(.opdw-view)は
          右の余白をそのぶん広げる(JS も倍率を出す幅からこの分を引く)= **紙の大きさ・位置は1pxも変わらない**
       ② --opdw-toolw 344px → **240px**: 道具の箱は🔧の箱と合体して縦に積む形になり細くてよい。
          テンプレの列の左端 = 344 − 26 − 240 = **78px(≒「図のみ」1.5個)左へ**。図形ライブラリ(1〜3列目)は左端が 26px 右へ
     ⚠️ 半分の窓(.opdw-half = 目のオペ記録・処置記録・計画の列)は右パネルが 380px しかなく、道具の箱(240px)が
        入らなくなるので --opdw-viewext は 0(下の .opdw-half)。中身の並び替えは同じ */
.modal.opdw{--opdw-right:44%;--opdw-libh:calc(41vh + 28px);--opdw-tplw:150px;--opdw-toolw:240px;--opdw-viewext:26px;
  max-width:min(1800px,calc(100vw - 24px));width:100%;padding:12px 14px 14px;
  display:flex;flex-direction:column;height:calc(100vh - 28px);max-height:calc(100vh - 28px)}
/* ⭐ 2026-09-04 batch276 先生の逐語「『直線』などがあった行は何もなくなるので、その分全体的に上に詰めてください」
     1段目が1行に収まって道具の箱が 220.6 → 192.8px(1440x900 の実測。差 27.8px)。
     升は「auto / auto / 1fr / --opdw-libh」で図形ライブラリは**下から**決まるので、箱が縮んだだけでは
     余りを 1fr が吸って図形ライブラリの上端は動かない(batch175 と同じ理屈)。
     → --opdw-libh を **+28px**(calc(41vh + 28px) → calc(41vh + 56px))して、上端をちょうど1行ぶん持ち上げた。
     ⚠️ 升は minmax(0,--opdw-libh) なので、縦が足りない画面(1440x900 で「🔧 拡大・縮小 / 回転」が
        いつも開いている今は余りが数px)では図形ライブラリのほうが縮む = 縦スクロールは出ない。
     ⚠️ 半分の窓(.opdw-half = 処置記録・目のオペ記録)には掛けない: 処置記録は図形ライブラリの箱が無く
        (4段目の升は空)、この値を増やすとテンプレの列が縦に縮むだけになるため */
.modal.opdw:not(.opdw-half){--opdw-libh:calc(41vh + 56px)}
/* ══ ⭐ 2026-08-27 batch210「『オペ記録を書く』の半分」(先生の逐語) ═══════════════════
   ⭐ **横幅だけ**を半分にする(1800 → 900px)。縦は今までどおり画面いっぱい。
      理由: 右の道具は1本の縦の列に積まれているので、縦を半分にすると
      道具・テンプレがスクロールに沈む(先生の恒久的な好み「一目で見える」に反する)。
      横は、処置記録では図形ライブラリとカテゴリの2つの箱が消えるぶんがちょうど効く。
   ⚠️ 左右の割合(--opdw-right)は**ここでは変えない**。決めている所は今までどおり
      .modal.opdw の1箇所だけ = 先生が「38%にしたい」と言った時に直す場所が増えない
      (batch136 からの決めごと。「オペ記録の画面設計やり直しの検査」が数で見張っている)。
      窓が半分になると細い列だけは詰めたいので、--opdw-tplw(テンプレの列の幅)だけ狭める。 */
.modal.opdw.opdw-half{--opdw-tplw:118px;--opdw-viewext:0px;
  max-width:min(900px,calc(100vw - 24px))}
/* ⭐ 2026-09-04 batch273: 半分の窓(処置記録・目のオペ記録)は**改修前の2列のまま**にする打ち消し。
   理由: 右パネルが392pxしかないので、道具の列を344pxに固定するとテンプレの列が40pxに潰れる。
   ⚠️ 3つの升の指定も2列のときの値に戻す(3列目を指したままだと、幽霊の4本目の線が生えてしまう)。
      → 半分の窓の見た目は1pxも変わっていない(検査「オペ記録の窓6点」等が数で見張る) */
.modal.opdw.opdw-half .opdw-side{grid-template-columns:minmax(0,1fr) var(--opdw-tplw)}
.modal.opdw.opdw-half .opdw-tplcol{grid-column:2/3}
/* ⭐ 2026-09-04 batch276: 半分の窓でもカテゴリの列は無い = 図形ライブラリ(目のオペ記録で出る)は
   2列ぶん(右端まで)。処置記録(noShapeLib)ではこの箱そのものが無いので何も変わらない */
.modal.opdw.opdw-half .opdw-lib-mid{grid-column:1/3}
/* 💉 処置記録の紙(batch210)。下絵(顔の線画 916x922)は紙の中央に**等倍で浮かせて**敷くので、
   紙の高さは下絵では決まらない。オペ記録と同じ座標系を保つため縦横比で決める */
.opdw-paper.sho{aspect-ratio:996/1412}
.opdw-bg-img.sho{position:absolute}
/* 💉 処置記録の欄(処置日/ヒアルロン酸/BTX/その他/記録/処置施行Dr。b208の欄をそのまま残す)。
   置き場所 = 右の道具の列のいちばん上(絵は1pxも削らない)。
   ⚠️ 説明文は足さない。ラベルと欄だけを2列で詰める(省スペース優先) */
.opdw-shrec{grid-column:1;grid-row:1;align-self:start;display:grid;
  grid-template-columns:auto minmax(0,1fr);gap:3px 6px;align-items:center;
  background:#f2f6fa;border:1px solid #dbe5ee;border-radius:9px;padding:6px 8px}
.opdw-shrec>label{font-size:11.5px;color:#5b6b7b;white-space:nowrap}
.opdw-shrec>input,.opdw-shrec>textarea{font-size:12.5px;padding:3px 6px;border:1px solid #c6d3de;
  border-radius:5px;background:#fff;color:#111;min-width:0;width:100%;box-sizing:border-box}
.opdw-shrec>textarea{resize:vertical;line-height:1.35}
/* b208 にあった「患者トップ」への道。欄の右下に小さく(説明文なし) */
.opdw-shrec-go{grid-column:1/-1;justify-self:end;font-size:11.5px;color:#1e6fe0;cursor:pointer}
.opdw-shrec-go:hover{text-decoration:underline}
.opdw-head{justify-content:flex-start;gap:10px;margin-bottom:6px}
/* 🛡 2026-09-06 b326 榛澤先生の困りごと: トラックパッドの戻るで記録が消える→編集中は戻るを無効化・2秒ごとに端末へ控え・復元
   題名の行の右に「◯月◯日 ◯◯:◯◯ の下書きがあります [戻す] [捨てる]」(1行・窓の高さは変えない) */
.opdw-wip{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#7a5c12;white-space:nowrap}
.opdw-wip button{font-size:11.5px;padding:2px 9px;border:1px solid #d8c48a;background:#fff7e0;border-radius:6px;cursor:pointer;color:#7a5c12}
.opdw-wip button:hover{background:#f6ecd2}
/* ⚠️ 2026-08-21 batch173: 題名の行の「➤ 選択」「🔒 固定」(.opdw-headbtns)は**撤去**した。
   先生の指示で「🙎 側貌」と合わせて**紙の右上**へ縦3つに引っ越し(= .opdw-paperbtns) */
.opdw-b:disabled{opacity:.45;cursor:default}
.opdw-b:disabled:hover{background:#fff}
/* 🔒 固定中は橙色(紙の上の枠も橙色の実線になる = 同じ色で結び付く)。
   ⚠️ .opdw-b.on(青)と同じ強さでは**後ろに書いてある青が勝つ**ので、クラスを1つ多く重ねる */
.opdw-b.opdw-lockbtn.on{background:#c07000;border-color:#c07000;color:#fff}
/* 🧰 道具。2026-08-18 batch137で**上部から右パネルの中へ引っ越した**
   (上に横たわっていると、絵を題名の真下まで詰められないため)。段の作りは今までどおり3段:
   ①何を描くか ②どう描くか(太さ・色・塗り・文字の大きさ) ③置いたものへの操作 */
.opdw-tb{display:flex;flex-direction:column;gap:5px;padding:7px 8px;
  background:#f2f6fa;border:1px solid #dbe5ee;border-radius:9px}
.opdw-tbrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.opdw-tbrow+.opdw-tbrow{padding-top:5px;border-top:1px solid #e2eaf2}
.opdw-lb{font-size:11.5px;color:#5b6b7b;min-width:26px}
/* 選択中の案内。⭐ 2026-08-19 batch156: 4段目(側貌などの小物の段)の中に**同じ行で**入る
   (batch137の「自分だけの行に落とす」flex:1 1 100% は、段が増えた今はやめた) */
.opdw-hint{font-size:11.5px;color:#1a73e8;flex:1 1 auto;min-width:0;text-align:left}
.opdw-hint:empty{display:none}
/* 📝 文字まわりは小さめに(先生の指示「テキストツールは必要ですが、少なめ・小さめで大丈夫」) */
.opdw-b.sm{padding:3px 7px;font-size:12px}
/* 🧩 第3段階(batch130)のテンプレ図形の候補が並ぶ場所。空のあいだは何も見せない */
.opdw-tpl{display:flex;flex-wrap:wrap;gap:6px}
.opdw-tpl:empty{display:none}
/* 🙎 側貌写真を重ねる窓(2026-08-18 batch148)。
   ⚠️ オペ記録の窓(.opdw-bg は z-index 2200)の**中**に出すので、
      同じ重なりの文脈の中で前に来ればよい。四辺の青い棒を掴んで帯を決める */
.opdsp-bg{z-index:2300}
.opdsp-crop{position:relative;margin:0 auto;max-width:520px;user-select:none;touch-action:none;line-height:0}
.opdsp-crop img{display:block;width:100%;height:auto;-webkit-user-drag:none;border-radius:6px}
.opdsp-mask{position:absolute;background:rgba(15,30,50,.55);pointer-events:none}
.opdsp-h{position:absolute;background:#1a73e8;opacity:.9;touch-action:none;border-radius:3px}
.opdsp-h.l,.opdsp-h.r{width:10px;top:0;height:100%;margin-left:-5px;cursor:ew-resize}
.opdsp-h.t,.opdsp-h.b{height:10px;left:0;width:100%;margin-top:-5px;cursor:ns-resize}
.opdsp-row{display:flex;flex-wrap:wrap;gap:7px;align-items:center;justify-content:center;padding:10px 4px 2px}
.opdsp-ck{display:flex;align-items:center;gap:5px;font-size:12.5px;color:#3c4c5c;cursor:pointer}
.opdw-b{border:1px solid #c6d3de;background:#fff;border-radius:7px;padding:7px 11px;font-size:13.5px;
  line-height:1.15;cursor:pointer;color:#22303c;white-space:nowrap}
.opdw-b:hover{background:#eaf2f9}
.opdw-b.on{background:#1a73e8;border-color:#1a73e8;color:#fff;font-weight:700}
.opdw-col{padding:6px 9px}
.opdw-sep{width:1px;align-self:stretch;background:#cfdae4;margin:0 3px}
.opdw-z{font-size:12.5px;color:#4a5a6a;min-width:46px;text-align:center}
/* 🖼 用紙。中で拡大するので外側はスクロールできる箱にする */
.opdw-view{flex:1;min-height:240px;overflow:auto;background:#8f9aa5;padding:10px;border-radius:8px;
  /* 🖼 b436: 右へ広げたぶん(--opdw-viewext)は右の余白にする = 紙の幅(紙全体の%)も位置も変わらない */
  padding-right:calc(10px + var(--opdw-viewext,0px))}
.opdw-paper{position:relative;margin:0 auto;background:#fff;box-shadow:0 4px 18px rgba(0,0,0,.3)}
.opdw-bg-img{display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none;pointer-events:none}
/* ══ 🔍「図を大きく」の見方(2026-08-18 batch136 先生の画面設計のやり直し) ═══════════
   先生:「絵面が重要で大きくしたいです(スクロールしなくても全部見れるように)」
   ⭐ 紙(.opdw-paper)は**いつも996x1412のまま**。切り取りの枠(.opdw-crop)が線画の区画の
      大きさになり、中の紙を左上へずらすことで「区画だけを大きく」見せている。
      → 実座標は1pxも変わらないので、描いた図形も・チェック欄も・焼くPNGも見方に左右されない。
   ⚠️ 枠の大きさは JS が「箱の内側(余白20px)に丸ごと収まる」px で入れる = 100%ならスクロールが出ない */
/* ⚠️ 余白は 10 → 6px。ここを詰めたぶんだけ絵が大きく映る(JS側の OPD_VPAD と対) */
/* ⚠️ 2026-08-18 batch145: center → **safe center**。ただの center だと、拡大して中身が箱より
   大きくなった時に**左へはみ出した分が掴めなくなる**(先生の「絵の左あたりを中心に持ってこよう
   と思ってもできずに困っている」の一因)。safe center は溢れた時だけ左詰めに切り替わるので、
   スクロール・パンで左端まで行ける。溢れていない時は今までどおり真ん中に出る */
/* 🗄 2026-09-08 b353 先生の指示: 図のみの紙を右寄せ・左のグレーを図形の棚(利用者ごと・用紙ごと)
   safe center → **safe flex-end**: 紙(.opdw-crop)を箱の右端へ寄せ、左右に分かれていた灰色を左に1つにまとめる
   (safe を残すのは batch145 と同じ理由 = 拡大して溢れた時に左端まで送れる)。
   棚(.opdw-shelf)= 紙の左に敷く灰色。紙(.opdw-paper)の子として x<0 に置く(JSが幅を入れる)。
   棚がある時の枠(.opdw-crop.zu.shelf)は白地と影を消す(棚は灰色・紙は紙の白がそのまま出る)。
   ⚠️ 説明文は無し。左上に極小の「棚」の1文字だけ(.opdw-shelf-lbl) */
.opdw-view.zu{display:flex;align-items:flex-start;justify-content:safe flex-end;padding:6px;
  padding-right:calc(6px + var(--opdw-viewext,0px))}
.opdw-crop.zu{position:relative;overflow:hidden;flex:0 0 auto;background:#fff;border-radius:3px;
  box-shadow:0 4px 18px rgba(0,0,0,.3)}
.opdw-crop.zu.shelf{background:transparent;box-shadow:none}
.opdw-shelf{position:absolute;top:-10%;height:120%;background:#8f9aa5;pointer-events:none}
.opdw-shelf-lbl{position:absolute;left:4px;top:1px;z-index:3;font-size:9px;line-height:1;color:#dfe5eb;
  pointer-events:none;user-select:none}
.opdw-crop.zu .opdw-paper{box-shadow:none;margin:0}
/* 文字を白く塗った下絵。文字入りの版下(.opdw-bg-img)の上に重ねる。
   ⚠️ 下の版下は消さない(紙の高さの元であり、保存で焼くのはそちら) */
.opdw-bg-zu{position:absolute;left:0;top:0;width:100%;height:auto;
  user-select:none;-webkit-user-drag:none;pointer-events:none}
/* 「図を大きく」では紙の□とラベルを消してあるので、押せる欄も出さない(要素は残す) */
.opdw-ck.hid{display:none}
/* 🔍 見方の切り替えボタン「図のみ / 紙全体」。⚠️ 2026-08-23 batch182 先生の指示で道具の箱の3段目から
   **紙の右上の縦並び(.opdw-paperbtns)の「固定」と「選択」の間**へ移した(margin-left:auto は不要に) */
.opdw-viewtg{background:#eef4fb;border-color:#9dbfe4;font-weight:700}
.opdw-viewtg:hover{background:#dceafa}
.opdw-cv{position:absolute;left:0;top:0;width:100%;height:100%;touch-action:none;cursor:crosshair}
/* ☑ 押すと✓が入る欄・執刀医サインの欄(2026-08-17 先生の回答)。
   位置は用紙の実座標を%に直して重ねてあるので、拡大しても紙の□とずれない。
   ⚠️ 座標表(OPE_CHECKS)が空のあいだは1つも出ない */
.opdw-ck{position:absolute;cursor:pointer;border-radius:3px;background:transparent;
  box-shadow:inset 0 0 0 2px transparent;transition:background .12s,box-shadow .12s}
.opdw-ck:hover{background:rgba(26,115,232,.16);box-shadow:inset 0 0 0 2px rgba(26,115,232,.55)}
.opdw-ck.on:hover{background:rgba(192,57,43,.14);box-shadow:inset 0 0 0 2px rgba(192,57,43,.5)}
/* 📝 押すと文字が打てる欄(鼻翼基部軟骨移植の 右/左。2026-08-18 先生の指示)。
   何も入っていない時も「ここは打てる」と分かるよう、うっすら下線を敷く */
.opdw-ck.txt{cursor:text;box-shadow:inset 0 -1px 0 0 rgba(26,115,232,.28)}
.opdw-ck.txt:hover{background:rgba(26,115,232,.12);box-shadow:inset 0 0 0 2px rgba(26,115,232,.5)}
/* ⭕ 2026-09-10 b409: 押すと**太い丸**が付く語(肋軟骨の右6番/右7番・耳介/耳珠の右左)。
   □ではなく語そのものを押すので、ホバーの光も語の形(角の丸い横長)に合わせる。
   ⚠️ 案内の文字・帯は足さない(先生の好み)。丸そのものは紙のキャンバスに描かれる */
/* ⭕ 2026-09-10 b411: 丸の欄は**押し所の板を敷かない**(pointer-events:none)。
   敷くと「右7番」などの語の上から**ペンを引き始められなくなる**(b409 で入った不具合・b356 の検査が3件不合格)。
   丸を付けるのは紙(canvas)の側で「動かさずに押しただけ」を見て行う(main.tsx の up() の中)。
   □のチェックと ✕ の案内は今までどおり板で受ける(小さいので引き始めの邪魔にならない) */
.opdw-ck.cir{border-radius:999px;pointer-events:none}
/* ✕ 2026-09-10 b409: 語の右うしろの**小さい赤い×**(押すと語に横線が入る=今回はしなかった)。
   小さく・目立ちすぎないよう、ふだんは薄く出し、ホバーと「入っている時」だけはっきりさせる */
.opdw-ck.xx{border-radius:3px;opacity:.42}
.opdw-ck.xx:hover,.opdw-ck.xx.on{opacity:1}
.opdw-ck.xx:hover{background:rgba(208,42,42,.14);box-shadow:inset 0 0 0 2px rgba(208,42,42,.5)}
.opdw-ck.xx.on:hover{background:rgba(208,42,42,.14);box-shadow:inset 0 0 0 2px rgba(208,42,42,.5)}
.opdw-xmark{display:block;width:100%;height:100%;pointer-events:none}
/* 打っている最中の入力欄。欄より少し広く出す(小さい欄でも打ちやすいように) */
.opdw-cked{position:absolute;min-width:150px;font-size:14px;padding:2px 6px;
  border:2px solid #1a73e8;border-radius:6px;background:#fff;color:#111;z-index:3;box-shadow:0 3px 10px rgba(0,0,0,.25)}
.opdw-cv.opdw-t-sel{cursor:default}
/* ✋ 2026-08-18 batch145: 道具「◻消しゴム」「✋移動」を撤去した(先生の指示)ので、
   その2つのカーソルの決まりも消した。代わりに**スペースキーを押している間**は
   どの道具でも「掴める手」になる(Photoshop・Illustratorと同じ流儀) */
.opdw-cv.pan,.opdw-view.pan{cursor:grab}
.opdw-cv.pan:active,.opdw-view.pan:active{cursor:grabbing}
.opdw-cv.opdw-t-text{cursor:text}
/* 🫳 ゆがみ(2026-08-18 batch134)。ブラシの円はカーソルに追従(位置はJSがstyleを直接書く) */
.opdw-cv.opdw-t-warp{cursor:crosshair}
/* 🧽 消しゴム(2026-08-18 batch149 で復活)。なぞった所だけを消す道具なので、
   ブラシの円(.opdw-brush.er)で「どこまで消えるか」を先に見せる */
.opdw-cv.opdw-t-erase{cursor:crosshair}
.opdw-brush{position:absolute;display:none;pointer-events:none;border-radius:50%;
  border:1.6px solid rgba(26,115,232,.9);box-shadow:0 0 0 1px rgba(255,255,255,.75),inset 0 0 0 1px rgba(255,255,255,.75)}
.opdw-brush.er{border-color:rgba(224,32,32,.9);background:rgba(224,32,32,.08)}
/* 🔄 四隅のすぐ外側にカーソルを置いた時(2026-08-18 batch149)。Photoshopと同じ「回す」印。
   ⚠️ 付け外しはJSが classList で直接行う(Reactの再描画を起こさないため) */
.opdw-cv.rotcur{cursor:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26"><g fill="none" stroke="%23ffffff" stroke-width="5" stroke-linecap="round"><path d="M6.5 16.5a7.5 7.5 0 1 1 4 4.6"/></g><g fill="none" stroke="%23111111" stroke-width="2.2" stroke-linecap="round"><path d="M6.5 16.5a7.5 7.5 0 1 1 4 4.6"/></g><path d="M2 12.5l9 1.2-5.6 5.6z" fill="%23111111" stroke="%23ffffff" stroke-width="1.4"/></svg>') 13 13,crosshair}
.opdw-rng{width:110px;accent-color:#1a73e8}
/* 📝 文字を打つ欄。押した所に出る(位置は用紙の実座標を%に直したもの)。
   ⭐ 2026-08-18 batch149: <textarea> にして**欄の中で改行**できるようにした */
/* 📝 文字を**その場で**打つ欄(2026-08-22 batch177 ① 先生の指示で作り直した)。
   ⭐ 紙に描かれる文字と**同じ場所・同じ大きさ・同じ色・同じfont**で重なる = 二重に見えない。
      大きさ(font-size)・色・向き・幅・高さは main.tsx が紙の座標から出して style で入れる。
   ⚠️ 白い箱・枠・影・padding は**持たせない**(持たせると紙の文字とずれ、二重に見える)。
      「ここを打っている」ことは、字の色のカーソルと**うっすらした点線**(outline=場所を取らない)で示す。 */
.opdw-ted{position:absolute;margin:0;padding:0;border:0;background:transparent;z-index:3;
  outline:1px dashed rgba(26,115,232,.5);outline-offset:2px;
  resize:none;overflow:hidden;white-space:pre;box-shadow:none;border-radius:0}
/* 🖱 右クリックのメニュー(重ね順・反転・複製・削除) */
.opdw-menubg{position:fixed;inset:0;z-index:2300}
.opdw-menu{position:fixed;z-index:2301;background:#fff;border:1px solid #c6d3de;border-radius:8px;
  box-shadow:0 6px 22px rgba(0,0,0,.22);padding:5px;min-width:168px;display:flex;flex-direction:column}
.opdw-menu a{padding:7px 11px;border-radius:6px;font-size:13.5px;color:#22303c;cursor:pointer;white-space:nowrap}
.opdw-menu a:hover{background:#eaf2f9}
.opdw-menu a.off{color:#8a97a4;cursor:default}
.opdw-menu a.off:hover{background:transparent}
.opdw-msg{color:#1a7f37;font-weight:700;margin:6px 0 0;font-size:13px}
/* ⚠️ 2026-08-18 batch141: .opdw-pvmsg(👀テンプレのホバー中の案内帯)は**撤去**した。
   出入りで窓の高さが動き、紙の縮尺が一瞬変わるため(先生の指示)。ホバーの働きは紙の上に残っている */
/* 🎨 塗りの濃さ。⚠️ 2026-08-23 batch182: 4ボタン(.opdw-fa)をやめて**数値1欄(0〜100)**にした。
   幅は3桁が入る最小(先生の「省スペース」)。単位は出さない */
.opdw-fanum{gap:3px}
.opdw-fanum input.opdw-fain{width:36px}
/* 📝 B = 太字の切替(2026-08-24 batch183)。「文字」の数値欄の隣の小さな1ボタン(省スペース)。
   入/切の見た目は他の道具ボタンと同じ .on(青地)に任せる */
.opdw-b.opdw-boldbtn{font-weight:700;padding:3px 8px;font-family:Georgia,"Times New Roman",serif}
/* ⚠️ 2026-09-04 batch276: ╲▭⬭ を段の右端へ貼り付けていた .opdw-tbr(margin-left:auto)は**撤去**した。
   先生の逐語「左へ詰めて、なげなわと消しゴムの間には距離を置き、『直線』『四角』『丸』は消しゴムの右へ
   入れてこれらを1行にしてください」= 1段目は**左詰めの1行**。3つは消しゴムのすぐ右に、他と同じ大きさで並ぶ。
   ⚠️ batch273 の「⬭ の右端 = 最背面の右端」は、この指示でもう成り立たない(仕様として正) */
/* 🧰 1段目の「なげなわ|消しゴム」の間の明確なすき間(2026-08-25 batch187 先生のモック。
   先生「見逃しやすいポイントは、なげなわと、消しゴムの間を離すことです」)
   ⭐ batch276 先生「なげなわと消しゴムの間には距離を置き」= このすき間は残す。
      34 → **24px**: 1段目の7つ(ペン40+矢印40+なげなわ64+消しゴム31+╲28+▭26.4+⬭26.4 = 255.8px)と
      6つのすき間(6px×6)を足すと、34pxのままでは 325.8px で道具の箱の内側(344-18 = 326px)ぎりぎり
      = ⬭ が2行目へ落ちた(1440x900 の実測)。24px にして 315.8px = 1行に収まる(余り10px)。
      なげなわと消しゴムの間は 24+6+6 = 36px 空く(下の検査が「30px以上」で見張る) */
.opdw-gap1{width:24px;flex:0 0 auto}
/* 🖊 手術の内容 = 最新の裏書の施術内容(batch187 先生のモック。道具箱の上のあいたスペース)。
   ラベル・枠は付けない(モックに無い)。長い術式は折り返す */
.opdw-ura{grid-column:1;grid-row:1;align-self:start;font-size:12.5px;font-weight:700;color:#1b2733;
  line-height:1.5;overflow-wrap:anywhere;padding:0 2px}
/* 🧰 道具の段(1段目)。⭐ 2026-08-23 batch182 ⑤ 省スペース: 2段目(線・図形・文字)と同じ小さいボタンにして
   **1行に収める**(1440x980 で 2行→1行 = 道具の箱が 239.4→192.1px。実測)。
   batch156 先生「無駄に大きいボタンは極力省スペースで」。押し心地(pickTool)は1つも変わらない */
.opdw-toolrow .opdw-b{padding:3px 7px;font-size:12px}
/* 🧽 batch276: 消しゴムは絵(SVG 17px)だけのボタン。ゆがみのアイコン(.opdw-wm)と同じ詰め方で、
   文字のボタンと高さがそろう(SVGは display:block なので余計な行間が入らない) */
.opdw-toolrow .opdw-b.opdw-erasebtn{padding:3px 6px}
.opdw-btns{align-items:center;flex-wrap:wrap}
/* 差し込みの中身は絵(キャンバス)なので読み上げできない。文字の写しを見えない形で置いておく */
.opdw-headtxt{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* ══ 🧩 図形ライブラリとテンプレの右パネル(2026-08-18 batch133 第3段階) ══════════
   先生のイメージ図: 最右列=部位カテゴリの縦リスト / その左=図形サムネのグリッド(縦スクロール可+最後に赤い＋)
   上=テンプレパターン / 下=図形を操るツールボックス(選択中だけ) */
.opdw-main{display:flex;gap:8px;flex:1;min-height:0}
/* ⚠️ 並びは order で決める。HTMLでは「道具(.opdw-side) → 絵(.opdw-view)」の順に書いてあるが、
   画面では **絵が左(order:0) / 道具が右(order:1)**。
   HTMLの並びをこうしてあるのは、道具の列・テンプレ・図形ライブラリ・拡大縮小/回転・ゆがみを
   **1つのスクロールする器(.opdw-side)にまとめる**ため(兄弟でないと1本にまとまらない) */
/* ⭐ 2026-08-21 batch173: 絵の箱を「送られない外側の器」で1枚くるんだ(.opdw-viewwrap)。
   紙の右上に浮かせる「🙎側貌 / 🔒固定 / ➤選択」の3つは、この器を基準に置く
   (絵の箱そのものは overflow:auto で中身と一緒に流れてしまうため) */
.opdw-main .opdw-viewwrap{order:0;flex:1 1 auto;min-width:0;min-height:0;position:relative;display:flex}
.opdw-main .opdw-viewwrap>.opdw-view{flex:1 1 auto;min-width:0}
.opdw-main .opdw-side{order:1}
/* 🙎🔒➤ 紙の右上の3つ(2026-08-21 batch173 先生の指示)。
   ⚠️ 器は pointer-events:none = **ボタンとボタンの隙間の紙には今までどおり描ける**。
      塞ぐのはボタンそのものの下だけ(押しやすさは保つ)。
   ⚠️ 説明文は付けない(名前だけ。詳しくはツールチップ)。選択中・固定中の色は .opdw-b.on 側が勝つ */
.opdw-paperbtns{position:absolute;top:10px;right:12px;z-index:4;pointer-events:none;
  display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.opdw-paperbtns>*{pointer-events:auto;padding:3px 8px;font-size:11.5px;line-height:1.25;
  background:rgba(255,255,255,.9);box-shadow:0 1px 5px rgba(0,0,0,.2)}
/* 🙎 側貌の2択メニュー(2026-08-24 b183c 先生の指示「『画像から選ぶ』『自動取得』の選択」)。
   器のspanは見た目を持たず(上の>*の当たりを打ち消す)、メニューはボタンの下に小さく浮く。説明文なし */
.opdw-paperbtns>.opdw-sidewrap{padding:0;background:transparent;box-shadow:none;position:relative;
  display:flex;justify-content:flex-end;pointer-events:none}
.opdw-sidewrap .opdw-sidebtn{pointer-events:auto;padding:3px 8px;font-size:11.5px;line-height:1.25;
  background:rgba(255,255,255,.9);box-shadow:0 1px 5px rgba(0,0,0,.2)}
/* 🫳📐⇔⇕ b436: 「選択」の下に縦に並ぶ4つ(→) 数字 / ∞ / ⇔ / ⇕)。幅は「図のみ」と同じにそろえる
   (「図のみ」= .opdw-b.sm の12pxの字3つ 36px + 左右の余白 7px×2 + 枠 1px×2 = 52px。実測 52.0px) */
.opdw-paperbtns>.opdw-pbx{box-sizing:border-box;width:52px;padding-left:0;padding-right:0;
  display:inline-flex;align-items:center;justify-content:center;gap:2px}
.opdw-warpbtn{touch-action:none;cursor:ew-resize}
.opdw-warpbtn .opdw-wmi{width:15px;height:15px}
.opdw-wrn{font-weight:700;font-variant-numeric:tabular-nums}
/* ∞ は紙の上なので、入り(保つ)も今までの薄い青の見た目のまま(.opdw-lnk.on)。字は12pxだと小さく見えるので13px(幅は上の52pxのまま) */
.opdw-paperbtns>.opdw-lnk{font-size:13px}
/* ⇔⇕ はアイコンだけ。字を大きくして横にも伸ばす = 今の反転ボタンのアイコンの**約2倍の幅**(ボタンの高さは他と同じ) */
.opdw-flipi{display:inline-block;font-style:normal;font-size:15px;line-height:14px;transform:scaleX(1.5)}
.opdw-sidemenu{position:absolute;top:calc(100% + 3px);right:0;z-index:2301;display:flex;
  flex-direction:column;gap:3px;pointer-events:auto}
.opdw-sidemenu .opdw-b{padding:3px 8px;font-size:11.5px;line-height:1.25;white-space:nowrap;
  background:rgba(255,255,255,.96);box-shadow:0 1px 5px rgba(0,0,0,.25)}
/* ⭐ 右の「道具ぜんぶ」の列(2026-08-18 batch137)。道具の列・線/図形/文字・操作・テンプレ・
   図形ライブラリ・拡大縮小/回転・ゆがみが、この1本の中に上から順に入る。
   ⚠️ **縦スクロールはここが受け持つ**(overflow-y:auto)。
      batch136までは .opdw-lib が overflow:hidden の器で、選択中に出る「拡大・縮小/回転」と
      「ゆがみ」が器からはみ出しても**どこにもスクロール先が無く、切り落とされていた**
      (先生の「拡大 縮小 などの図形ツールゾーンですが、下にスクロールしていけない」)。
   ⚠️ 幅は --opdw-right(gapの8pxを左右で分けるので -4px)。割合を変えるのは変数の1行だけ */
/* ⭐⭐ 2026-08-19 batch156 先生のイメージ図: 右パネルは**2列のグリッド**になった。
     左の広い列 = ①道具の列 ②拡大縮小/回転(選択中だけ) ③図形ライブラリ(色パレット入り)
     右の細い列(--opdw-tplw) = テンプレ(最上部から) → カテゴリの縦リスト
   3段目は下から --opdw-libh で決め打ち = **図形ライブラリの上端がパネルの縦の真ん中あたり**に
   固定され、テンプレとカテゴリの境目も同じ高さに来る(2段目の1frが余りを吸収する)。
   .opdw-lib は display:contents なので、中の4つの箱がこのグリッドに直接並ぶ */
/* ⭐⭐ 2026-09-04 batch273: 上と下で左右の分かれ目を変えるため、**3列**にした(詳しくは .modal.opdw の説明)。
     1列目 = 道具の列(--opdw-toolw で決め打ち。ここが ⬭ と「最背面」の右端をそろえる要)
     2列目 = 余り(minmax(0,1fr))
     3列目 = カテゴリの縦リストの幅(--opdw-tplw)
   上半分は テンプレ が2列目+3列目、下半分は 図形ライブラリ が1列目+2列目にまたがる
   = テンプレだけが左へ伸び、図形ライブラリの幅は改修前のまま */
.opdw-side{flex:0 0 calc(var(--opdw-right) - 4px - var(--opdw-viewext,0px));width:calc(var(--opdw-right) - 4px - var(--opdw-viewext,0px));
  min-width:0;min-height:0;display:grid;
  grid-template-columns:var(--opdw-toolw) minmax(0,1fr) var(--opdw-tplw);
  /* ⭐ 2026-08-21 batch173: 3段目を auto → **minmax(0,--opdw-libh)** にした。
     = 図形ライブラリの高さは「いちばん高くて --opdw-libh」。場所が足りない時(図形を選んで
       拡大縮小/回転のゾーンが出た時)は**ライブラリのほうが縮む**ので、
       先生の「スクロールせずに一目で全部見える」が保たれる。
     ⚠️ これが無いと、ライブラリを高くしたぶんだけ選択中に縦スクロールが出る */
  /* ⭐ 2026-08-25 batch187: 最上段に「手術の内容」(裏書)の升を足した(無い患者では0の高さ) */
  grid-template-rows:auto auto 1fr minmax(0,var(--opdw-libh));gap:8px;
  overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
.opdw-side>.opdw-tb{grid-column:1;grid-row:2;align-self:start}
/* ⭐ 2026-08-19 batch156: .opdw-lib は**透明な袋**(display:contents)。
   中の4つの箱(.opdw-lib-tools / .opdw-lib-mid / .opdw-tplcol / .opdw-lib-cats)が
   .opdw-side のグリッドの升に直接並ぶ(1つの器のままだと2列に組めないため)。
   ⚠️ 大きさを測る検査は .opdw-lib ではなく .opdw-side を測ること(contentsは矩形を持たない) */
.opdw-lib{display:contents}
.opdw-lib-h{font-size:13px;color:#3c4c5c;font-weight:700;display:flex;align-items:center;gap:6px}
.opdw-lib-add{margin-left:auto;font-size:11.5px;color:#1a73e8;cursor:pointer;border:1px solid #c6d3de;
  border-radius:6px;padding:2px 7px;background:#fff;white-space:nowrap}
.opdw-lib-add:hover{background:#eaf2f9}
.opdw-lib-in{font-size:12.5px;padding:4px 7px;border:2px solid #1a73e8;border-radius:6px;background:#fff;
  color:#111;min-width:0;width:100%;box-sizing:border-box}
.opdw-lib-empty{color:#8a97a4;font-size:11.5px;padding:4px 2px}
/* 🗂 テンプレの縦の列(2026-08-19 batch156 先生のイメージ図)。
   右パネルの右端・最上部から、図形ライブラリの上端の高さ(=カテゴリとの境目)まで。
   ⭐ 2026-09-04 batch273: 先生の「その分テンプレリストを左へ長く」で **2列目+3列目**にまたがる
      = 道具の箱が細くなったぶんだけ、この列の**左端だけ**が左へ伸びる(右端は動かない) */
.opdw-tplcol{grid-column:2/4;grid-row:1/4;min-height:0;min-width:0;display:flex;flex-direction:column;gap:4px;
  background:#f2f6fa;border:1px solid #dbe5ee;border-radius:8px;padding:6px;box-sizing:border-box}
.opdw-tplcol .opdw-lib-h{flex-wrap:wrap}
/* 🗂 テンプレの一覧(名前で並ぶ)。他の用紙のものは薄く出す。
   ⭐ batch156: 細い列の中で残り全部を使い、あふれた行は列の中でスクロール(max-height:120pxをやめた) */
.opdw-lib-tpls{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:3px}
.opdw-tplrow{display:flex;align-items:center;gap:4px}
.opdw-tplbtn{flex:1;min-width:0;font-size:12.5px;color:#22303c;background:#fff;border:1px solid #c6d3de;
  border-radius:6px;padding:4px 8px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.opdw-tplbtn:hover{background:#eaf2f9}
/* ⚠️ 2026-09-09 b376: よその用紙のテンプレを薄く出す .opdw-tplbtn.off は撤去(一覧に出さなくなったため) */
/* ── 🏷 テンプレのタグ(2026-09-04 batch279 先生の逐語「見出しのすぐ下3行くらいに『小鼻』『鼻骨』『プロテ』など
   タグが並ぶようにして、オンにした組み合わせに合致度が高いものから順にタグ領域より下に候補が並ぶように」)
   ⭐ 帯(.opdw-tags)は縮まない(flex:0 0 auto)ので、候補の一覧(.opdw-lib-tpls = 残り全部・縦スクロール)が
      何百件になっても帯は上に貼り付いたまま消えない。ピルは小さく(10.5px)して、150〜255px の幅でおおよそ3行に収まる。
   ⚠️ 列の幅・左端(batch273 の 254.7px)には触れていない(中身が増えただけ) */
.opdw-tags{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:3px;align-content:flex-start}
.opdw-tag{font-size:10.5px;line-height:1.3;padding:1px 6px;border-radius:9px;border:1px solid #c6d3de;background:#fff;
  color:#3c4c5c;cursor:pointer;white-space:nowrap;user-select:none}
.opdw-tag:hover{background:#eaf2f9}
.opdw-tag.on{background:#1a73e8;border-color:#1a73e8;color:#fff}
/* ── ⚖️ 2026-09-15 b465 タグの重み(先生の逐語「タグを右クリックすると１弱(青)、２中(黄色)、
   ３強(ピンク)を選べるようにしてほしいです」)
   ⭐ 色が変わるのは**オンの時だけ**(切っている時は今までどおり白)。
      1=いままでと同じ青 / 2=黄色(字は濃い茶で読める濃さに) / 3=ピンク(字は白)。
   ⚠️ 凡例・説明の帯は置かない(先生の恒久的な好み)。行も増やさない(色が変わるだけ) */
.opdw-tag.w2.on{background:#f2b705;border-color:#d99e00;color:#3d2f00}
.opdw-tag.w3.on{background:#e0559b;border-color:#cf3f88;color:#fff}
/* 右クリック(iPadは長押し)で出る 1/2/3 の小さな窓。幅・高さは main.tsx の OPD_TAGW_W/H と同じ値 */
.opdw-wmenu{min-width:0;width:86px;padding:5px}
.opdw-wpick{padding:3px 8px;border-radius:6px;font-size:12px;line-height:18px;color:#22303c;cursor:pointer;
  white-space:nowrap;border:1px solid #c6d3de;background:#fff}
.opdw-wpick+.opdw-wpick{margin-top:2px}
.opdw-wpick.w1{background:#1a73e8;border-color:#1a73e8;color:#fff}
.opdw-wpick.w2{background:#f2b705;border-color:#d99e00;color:#3d2f00}
.opdw-wpick.w3{background:#e0559b;border-color:#cf3f88;color:#fff}
.opdw-wpick.on{outline:2px solid #22303c;outline-offset:-2px;font-weight:700}
.opdw-menu a.opdw-wpick:hover{filter:brightness(1.08)}
/* ★ お気に入り(行の右端の小さな★。省スペース = 幅14px。入り=金色 / 切り=薄い灰色) */
.opdw-tplfav{flex:0 0 14px;width:14px;text-align:center;font-size:12px;line-height:16px;color:#c6d3de;cursor:pointer;user-select:none}
.opdw-tplfav:hover{color:#e0a800}
.opdw-tplfav.on{color:#f0b400}
/* 登録の窓: 1行目 = 名前の欄(日付入り) + 登録 + ✕ / 2行目〜 = タグの帯 + 新規タグの＋の欄(同じ帯の中) */
.opdw-tplreg{flex:0 0 auto;display:flex;flex-direction:column;gap:4px;background:#fff;border:1px solid #c6d3de;border-radius:7px;padding:5px 6px}
.opdw-tplreg-row{display:flex;align-items:center;gap:4px}
.opdw-tplreg-row .opdw-lib-in{flex:1 1 auto;width:auto;padding:3px 6px;font-size:12px}
.opdw-tplreg-row button{font-size:11.5px;padding:3px 8px;border:1px solid #1a73e8;border-radius:6px;background:#1a73e8;color:#fff;cursor:pointer;white-space:nowrap}
.opdw-tplreg-row button:hover{background:#1667cf}
.opdw-tplreg-row .opdw-lib-x{position:static;opacity:1;flex:0 0 16px;width:16px;height:16px;line-height:16px;font-size:10px}
.opdw-tagnew{font-size:10.5px;line-height:1.3;padding:1px 6px;border:1px dashed #c6d3de;border-radius:9px;width:52px;min-width:0;background:#fff;color:#22303c}
.opdw-tagnew:focus{border-style:solid;border-color:#1a73e8;outline:none}
/* 「追加/置き換え/やめる」の三択 */
.opdw-tplask{display:flex;flex-direction:column;gap:4px;background:#fff7e0;border:1px solid #e8cf7a;
  border-radius:7px;padding:6px 7px}
.opdw-tplask b{font-size:11.5px;color:#7a5c00}
.opdw-tplask button{font-size:12px;padding:4px 6px;border:1px solid #c6d3de;border-radius:6px;background:#fff;cursor:pointer}
.opdw-tplask button:hover{background:#eaf2f9}
/* ★ 選択中の図形をライブラリへ登録する入口(選択中だけ出る)
   ⭐ 2026-09-04 batch276 先生の逐語「『選択中をライブラリに登録』は、『図形ライブラリ』の見出しの右に
      位置するようにして、その分空いたスペースへ、図形群を上に詰めるようにしてください」
      → 見出し(.opdw-lib-h)の**同じ行の右隣**に入れた。1行の帯だったものを見出しと同じ高さの小さな札に
        (padding 5px 8px → 2px 7px。テンプレの「＋登録」と同じ背の高さ)= 帯1本ぶん図形の並びが上がる */
.opdw-lib-reg{font-size:11.5px;color:#fff;background:#1a73e8;border-radius:6px;padding:2px 7px;cursor:pointer;
  text-align:center;white-space:nowrap;font-weight:400}
.opdw-lib-reg:hover{background:#1667cf}
/* 🧩 batch276: 図形の名前を打つ欄も見出しの行の右隣(横幅いっぱいにせず、行の残りに収める) */
.opdw-lib-mid .opdw-lib-h .opdw-lib-in{flex:1 1 auto;width:auto;padding:2px 6px;font-size:12px;font-weight:400}
/* 🧩 図形ライブラリの箱(見出し・★登録の帯・グリッド・色パレットが縦に入る)
   ⭐ 2026-08-19 batch156 先生のイメージ図: グリッドの3段目に置き、高さを
      **--opdw-libh で決め打ち** = 上端が右パネルの縦の真ん中あたりに固定される
      (先生が「特に」と強調した位置。変えたい時は .modal.opdw の変数1行)。
      中のグリッドは、この枠の中で独立して縦スクロールする */
/* ⚠️ 2026-08-21 batch173: 高さの指定はここから**升(grid-template-rows)へ移した**。
   升が minmax(0,--opdw-libh) なので、この箱は「いちばん高くて --opdw-libh・足りなければ縮む」 */
/* ⭐ 2026-09-04 batch273: **1列目+2列目**にまたがる = 道具の列を344pxに固定しても
   この箱の幅は改修前と同じ(サムネの横5列が減らない。先生 batch173「たくさん見れていると嬉しい」) */
/* ⭐⭐ 2026-09-04 batch276 先生の逐語「LCSGやSEGなど部品のライブラリは撤去で大丈夫です。その分右下の
   スペースが開くので、図形ライブラリを右に伸ばしてください」
   → 3列目(カテゴリの列 .opdw-lib-cats)が無くなったので、この箱は **1列目〜3列目の全部**(右端まで)。
   📝 列の設計をどうするか(次の担当への覚え書き):
      3列のグリッド(道具 344px / 余り / --opdw-tplw 150px)は batch273 で「上半分と下半分で左右の分かれ目を
      別々にする」ために作ったもの。下半分の分かれ目(カテゴリの列)が消えた今、3列目を使う箱は1つも無い
      = **2列([道具 344px][残り全部])に戻してよい**。その場合 .opdw-tplcol は grid-column:2/3、
      この箱は 1/3 になり、テンプレの列の幅・左端は**1pxも動かない**(2列目+3列目 = 残り全部のまま)。
      ⚠️ 今回は「テンプレの列は次の担当が別に直す」ので、衝突を避けて**3列のまま**にし、
         この箱を 1/4 にまたがらせるだけにした(見た目は2列に戻したのと同じ) */
.opdw-lib-mid{grid-column:1/4;grid-row:4;min-height:0;min-width:0;
  display:flex;flex-direction:column;gap:5px;overflow:hidden;box-sizing:border-box;
  background:#f2f6fa;border:1px solid #dbe5ee;border-radius:8px;padding:6px 7px}
/* ⭐ batch276: カードを 2/3 にしたので、すき間も 6 → 4px(2/3) */
.opdw-lib-grid{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-wrap:wrap;gap:4px;align-content:flex-start;padding:2px}
/* 2026-08-18 batch136: サムネを 76 → 92px(絵は 66 → 82px)。横3列を保ったまま1つを大きくした */
/* ⭐ 2026-08-25 batch187 先生のモック「ライブラリは5列になります」:
   92 → **78px**(絵は 82 → 68px)。1440x980 の右パネル(箱の内側≈430px)で横5列になる最大の大きさ */
/* ⭐⭐ 2026-09-04 batch276 先生の逐語「図形ライブラリ内の図形のカードを縦も横も3分の2くらいに縮小して
   より多くの図形が並ぶようにしてください」
   → カード 78 → **52px**(2/3)、絵 68 → **45px**(2/3)、名前の字 11 → **8px**(釣り合う大きさ)。
     カードの高さは 3+68+1+13+2+枠2 = 89px → 3+45+1+10+2+枠2 = 63px(≈ 2/3)。
     1440x900 で右端まで伸びた箱(内側≈618px)に横 11 列(前は 5 列)。
     ⚠️ 描く側(OpdThumb の canvas 90x90)は変えない = CSSで縮めて映すだけ(絵の作り方は同じ) */
.opdw-shape{position:relative;width:52px;display:flex;flex-direction:column;align-items:center;gap:1px;
  background:#fff;border:1px solid #c6d3de;border-radius:6px;padding:3px 2px 2px;cursor:pointer}
.opdw-shape:hover{border-color:#1a73e8;background:#f4f9ff}
.opdw-shape small{font-size:8px;line-height:1.25;color:#4a5a6a;max-width:48px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.opdw-thumb{width:45px;height:45px;display:block}
/* 図形の小さな✕(削除)と✎(名前の変更)。触っている時だけ見せる */
/* ⭐ batch276: カードを 2/3 にしたので、この2つも 16 → 13px(52pxのカードの両上隅に収まる大きさ) */
.opdw-lib-x,.opdw-lib-ren{position:absolute;top:-1px;width:13px;height:13px;line-height:13px;text-align:center;
  font-size:9px;border-radius:50%;background:#fff;border:1px solid #c6d3de;color:#5b6b7b;cursor:pointer;
  opacity:0;transition:opacity .12s}
.opdw-lib-x{right:-1px}
.opdw-lib-ren{left:-1px}
.opdw-shape:hover .opdw-lib-x,.opdw-shape:hover .opdw-lib-ren,.opdw-tplrow:hover .opdw-lib-x,.opdw-tplrow:hover .opdw-lib-ren{opacity:1}
.opdw-tplrow .opdw-lib-x{position:static;flex:0 0 16px;width:16px;height:16px;line-height:16px;font-size:10px}
/* 🏷 2026-09-08 b357 先生の指示: 登録済みテンプレのタグを編集。行の左端に触っている時だけ出る小さな✎(場所を取らないよう幅0で重ねる) */
.opdw-tplrow .opdw-lib-ren{position:absolute;left:-2px;top:2px;width:13px;height:13px;line-height:13px;font-size:9px;z-index:1}
.opdw-tplrow{position:relative}
/* タグ編集の窓: ✕は左上(先生の好み)。登録の窓と同じ作り */
.opdw-tpledit .opdw-tplreg-row .opdw-lib-x{order:-1}
.opdw-lib-x:hover{background:#fdecea;border-color:#cc4125;color:#cc4125}
.opdw-lib-ren:hover{background:#eaf2f9;border-color:#1a73e8;color:#1a73e8}
/* 最後の赤い＋(先生のイメージ図)。ファイルから画像を取り込む */
/* ⭐ batch276: カードと同じく 2/3(min-height 74 → 49px・字 32 → 21px) */
.opdw-shape-add{justify-content:center;font-size:21px;font-weight:700;color:#cc4125;border-style:dashed;
  min-height:49px;align-items:center;display:flex}
.opdw-shape-add:hover{background:#fdecea;border-color:#cc4125}
/* ⚠️ 2026-09-04 batch276: 最右列の「部位カテゴリの縦リスト」(.opdw-lib-cats / .opdw-cat / .opdw-cat-ops /
   .opdw-cat-add)は**撤去**した(先生「LCSGやSEGなど部品のライブラリは撤去で大丈夫です」)。
   main.tsx 側も出さなくなったので、ここの見た目の指定もまとめて消した。
   空いた3列目は上の .opdw-lib-mid(図形ライブラリ)が右端まで伸びて使う */
/* 🔧 図形を操るツールボックス(選択中だけ)。中身は既存のツールバーと同じ関数を呼ぶだけ。
   ⭐ 2026-08-19 batch156: **道具の列のすぐ下(2段目)**に出る = スクロールせずに見える
   (以前は図形ライブラリの下で、スクロールしないと出てこなかった。それが先生の不満の核心) */
.opdw-lib-tools{grid-column:1;grid-row:3;align-self:start;display:flex;flex-direction:column;gap:4px;
  background:#f2f6fa;border:1px solid #dbe5ee;border-radius:8px;padding:5px 8px}
/* 🔧 中の2列: 左=数値行+(＋拡大 −縮小 ↻15° ↺15°) / 右=回転・反転5つの小さな縦積み */
/* ⚠️ 2026-08-25 batch188: 2列組(.opdw-xf-cols/.opdw-xf-main/.opdw-lib-rot)は撤去し、
   「見出し(右にN個 選択中)+ 3行」に圧縮した(先生「2、3行のみ(せめて4行)にしたい」) */
.opdw-lib-h .opdw-hint{flex:1 1 auto;text-align:right;font-weight:400}
.opdw-lib-tbtns{display:flex;flex-wrap:wrap;gap:4px}
.opdw-lib-tbtns button{font-size:11.5px;padding:4px 6px;border:1px solid #c6d3de;border-radius:6px;
  background:#fff;cursor:pointer;color:#22303c}
.opdw-lib-tbtns button:hover{background:#eaf2f9}
.opdw-lib-pal{display:flex;flex-wrap:wrap;gap:4px}
.opdw-lib-pal .palc{width:19px;height:19px;border-radius:4px;cursor:pointer;display:block}
.opdw-lib-pal .palc.wh{border:1px solid #c6d3de}
.opdw-lib-msg{color:#c0392b;font-size:11.5px}
/* 📐 W:100.00% ∞ H:100.00% ∠0.00°(2026-08-18 batch136 先生のイメージ図の数値入力) */
.opdw-lib-num{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.opdw-num{display:flex;align-items:center;gap:2px;font-size:12px;color:#3c4c5c}
.opdw-num input{width:62px;font-size:12.5px;padding:3px 5px;border:1px solid #c6d3de;border-radius:5px;
  background:#fff;color:#111;text-align:right}
.opdw-num input:focus{border-color:#1a73e8;outline:none}
.opdw-num i{font-style:normal;color:#5b6b7b;font-size:11.5px}
/* 📐 ラベル(W・H・∠)は「左右にドラッグして数字を変える」つまみでもある(2026-08-18 batch149。
   Photoshopのスクラブ)。載せると左右の矢印になり、押したまま引くと数字が連続で変わる */
.opdw-num>.opdw-scrub{cursor:ew-resize;user-select:none;touch-action:none;font-weight:700;
  padding:0 2px;border-radius:4px}
.opdw-num>.opdw-scrub:hover{background:#eaf2f9;color:#1a73e8}
/* 📝 文字の大きさの数値欄(2026-08-21 batch170 ③)。道具の列に置くので W/H/∠ より狭くする
   (先生の「省スペース」)。「Ａ」を左右にドラッグすると大きさが変わる */
.opdw-fznum{gap:3px}
/* ⚠️ 2026-08-23 batch182: 単位(px)を消し、幅は3桁(8〜200)が入る最小に詰めた(46→36px) */
/* ⚠️ 2026-08-25 batch187: 欄の左の「Ａ」つまみは撤去(スクラブは「Ａ 文字」ボタンが兼ねる) */
.opdw-fznum input.opdw-fzin{width:36px}
/* 🫳 大きさ(12〜140)・強さ(10〜100)の欄も3桁の最小幅。単位(px/%)は出さない(batch182) */
.opdw-wnum input{width:36px}
/* 🫳 ゆがみの段(2026-08-21 batch173 先生の微調整案の「5段目」)。
   先頭の「🫳 ゆがみ」= 道具の切り替え / その右にアイコン3つ / さらに右に数値の欄2つ */
.opdw-warprow{gap:5px}
/* 🫳 効かせ方のアイコン(自前のSVG)。文字が無いぶん小さく詰める。
   ⚠️ 選ばれている物は .opdw-b.on(青地)。SVGは currentColor なので白い線になる */
.opdw-b.opdw-wm{padding:3px 7px;display:inline-flex;align-items:center;justify-content:center}
.opdw-wmi{display:block}
/* 🫳 ブラシの大きさ・強さ(スライダーをやめて数値の欄にした)。W/H/∠ より狭くする(省スペース) */
.opdw-wnum{gap:3px}
.opdw-wnum input{width:42px}
.opdw-lnk{font-size:13px;color:#8a97a4;cursor:pointer;border:1px solid #c6d3de;border-radius:5px;
  padding:2px 5px;background:#fff;line-height:1.2}
.opdw-lnk.on{color:#1a73e8;border-color:#1a73e8;background:#eaf2f9;font-weight:700}
/* 🟥 2026-09-12 b436 先生の逐語「「A 文字」や、「ペン」や「歪み」など、どれを選んでいるか分かりやすく選択中のツールは
   赤い太枠で囲うようにしてほしい」。道具のボタン(.opdw-tool = 文字・ペン・矢印・なげなわ・消しゴム・直線・四角・丸・
   ゆがみ・選択)は、選んでいる時に**赤い太枠**。青い塗り(.opdw-b.on)と重ねると見にくいので**赤枠に一本化**(地は白)。
   ⚠️ 太さ(細中太)・塗り・B・固定・∞ は道具ではないので今までの見せ方のまま。
   ⚠️ 枠は box-shadow で描く = ボタンの大きさ・並びは1pxも動かない */
.opdw-b.opdw-tool.on{background:#fff;color:#22303c;border-color:#e02020;box-shadow:0 0 0 2px #e02020;font-weight:700}
.opdw-b.opdw-tool.on:hover{background:#fdf1f1}
.opdw-paperbtns>.opdw-b.opdw-tool.on{background:#fff;box-shadow:0 0 0 2px #e02020,0 1px 5px rgba(0,0,0,.2)}
/* 🎨 b436: 最初から出ている色のパレット(7色×3段)。選んでいる色にはピン(.opdw-pin)が刺さる。
   ピンは見本の右上へはみ出すので、刺さっている見本だけ前に出す(隣の見本に隠れない) */
.opdw-palrow{padding-top:7px}
.opdw-palwrap{display:block}
.opdw-pal .palc{position:relative}
.opdw-pal .palc.on{z-index:1;border-color:transparent}
.opdw-pal .palc.wh.on{border-color:#ccd4dc}
.opdw-pin{position:absolute;left:6px;top:-6px;pointer-events:none;filter:drop-shadow(0 1px 1.2px rgba(0,0,0,.55))}
/* 180°回転・90°回転・水平/垂直反転の縦積み。
   ⭐ 2026-08-19 batch156 先生の指示「無駄に大きいボタンは極力省スペースで」:
      横幅いっぱいの大きなボタン5本をやめ、**文字ぎりぎり+少しの余白の小さなボタン**
      (幅130px前後・高さ22px前後)を数値行の右隣に縦に積む */
/* 📝 文字の背景色(2026-08-25 batch188)。「なし」の見本は白地に赤の斜線 */
.opdw-tbg-none{background:linear-gradient(135deg,#fff 42%,#cc4125 46%,#cc4125 54%,#fff 58%)}
.opdw-tbg-off{width:100%;margin-top:4px}
/* ⚠️ 2026-08-18 batch150: .opdw-lib-warp(パネル下部のブラシツールオプション)は撤去した。
   .opdw-lib-rngrow は他所からも使われうるので残してある(場所は取らない) */
.opdw-lib-rngrow{display:flex;align-items:center;gap:6px;font-size:12px;color:#3c4c5c}
.opdw-lib-rngrow span{min-width:34px}
.opdw-lib-rngrow .opdw-rng{flex:1;min-width:0;width:auto}
.opdw-lib-rngrow i{font-style:normal;min-width:34px;text-align:right;color:#5b6b7b}

/* ↕ 掴んで並べ替え(2026-08-18 batch150)。カテゴリ・図形のサムネ・テンプレの3つで共用。
   掴んだものは薄く、落ちる側の縁に青い線を出す(記録集の行・タブと同じ見え方)。
   u/d=上下の縁(縦の一覧) / l/r=左右の縁(サムネのグリッドは横に折り返して並ぶため) */
.opdw-dmv{opacity:.45}
.opdw-dmvu{box-shadow:0 -3px 0 0 #1e6fe0}
.opdw-dmvd{box-shadow:0 3px 0 0 #1e6fe0}
.opdw-dmvl{box-shadow:-3px 0 0 0 #1e6fe0}
.opdw-dmvr{box-shadow:3px 0 0 0 #1e6fe0}

/* 📝 問診票(紙の実物どおり。2026-08-10) */
.ms-paper{position:relative;width:100%;max-width:794px;min-height:1122px;margin:0 auto;background:#fff;
  box-shadow:0 4px 18px rgba(0,0,0,.3);padding:11mm 12mm;box-sizing:border-box;color:#111}
.ms-ttl{text-align:center;font-size:16px;font-weight:700;letter-spacing:.3em;margin-bottom:6px}
.ms-lead{font-size:9.5px;line-height:1.75;margin:0 0 7px}
.ms-date{font-size:11px;margin-bottom:4px}
.ms-t{width:100%;border-collapse:collapse;table-layout:fixed;border:1.3px solid #111}
.ms-t th,.ms-t td{border:1px solid #111;font-size:10px;padding:4px 6px;vertical-align:middle;line-height:1.5}
.ms-t th{width:31%;text-align:left;font-weight:400;background:#fff}
.ms-nm small{display:block;font-size:8.5px;color:#555;letter-spacing:.08em}
.ms-nm b{font-size:13px;font-weight:400}
.ms-soudan .ms-sub{margin-top:3px}
.ms-yn{display:flex;align-items:center;gap:6px}
.ms-yn .ms-line{flex:1;border-bottom:1px dotted #bbb;margin:0 4px}
.ms-c{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.ms-c input{width:11px;height:11px;margin:0}
.ms-note2{font-size:8.5px;line-height:1.6;margin-top:2px;color:#333}
.ms-kk{line-height:1.9}
.ms-foot{text-align:center;margin-top:8px;font-size:10px}
.ms-leadfoot{text-align:left;margin:0 0 6px;color:#444}
.ms-small{font-size:8.5px;line-height:1.6;margin-top:2px}
.ms-sign{position:absolute;right:12mm;bottom:11mm;font-size:10.5px;border-bottom:1px solid #111;padding:0 40px 2px 0}

/* 🩺 手術中記録(紙の実物どおりに組み直したもの。2026-08-10) */
/* 紙(A4縦)いっぱいに組む。実物は表が用紙の下まで続く */
.nk-paper{position:relative;width:100%;max-width:794px;min-height:1122px;margin:0 auto;background:#fff;
  box-shadow:0 4px 18px rgba(0,0,0,.3);padding:9mm 8mm;box-sizing:border-box;color:#111;
  display:flex;flex-direction:column}
.nk-h{display:flex;align-items:baseline;justify-content:center;position:relative}
.nk-ttl{font-size:17px;font-weight:700;letter-spacing:.22em}
.nk-no{position:absolute;right:0;font-size:13px;font-weight:700}
.nk-h2{display:flex;gap:6%;margin:6px 0 5px;font-size:12.5px}
.nk-h2 span:last-child{margin-left:auto;font-weight:700}
.nk-t{width:100%;border-collapse:collapse;table-layout:fixed;border:1.4px solid #111}
.nk-t th,.nk-t td{border:1px solid #111;font-size:10px;padding:1px 3px;text-align:center;height:22px}
/* ✍️ 記録の空欄の行だけ高くする(2026-08-14 院長要望: 27行→24行に減らして1行を太く書きやすく)。
   行数は main.tsx OpeNakaPaperWin の ROWS と対。A4縦1枚に収まるかは検査(裏書きが紙で途切れないかの実測)で守る */
.nk-t:not(.nk-t2) tbody tr:not(.nk-fix) td{height:26px}
/* ⚠️ 27pxにすると下端の「直介NS：」がA4(1123px)からはみ出す(実測済み)。上げないこと */
.nk-t thead th{background:#fff;font-weight:400;line-height:1.2}
.nk-t .w-tm{width:8%}
.nk-t .w-n{width:7%}
.nk-t .w-rec{width:44%}
.nk-t td.nk-rec{text-align:left;height:auto;padding:3px 5px}
/* ➖ 抗生剤の行の真上に全幅の横線(2026-08-13 batch78 院長要望)。行を分けたうえで、
   その行の上の罫線だけ太くして「紙の左端から右端まで1本」に見えるようにする */
.nk-t tr.nk-abx>td{border-top:2px solid #111}
.nk-ck{display:flex;align-items:flex-start;gap:5px;font-size:10.5px;line-height:1.95;white-space:nowrap}
.nk-ck input{margin:3px 0 0;width:11px;height:11px;flex:none}
.nk-rec.nk-red,.nk-rec.nk-red .nk-ck{color:#c0392b}
.nk-fat{font-size:11.5px;margin:9px 0 3px;text-align:center;letter-spacing:.1em;font-weight:700}
.nk-t2 th,.nk-t2 td{height:23px;font-size:10.5px}
.nk-t2 th:nth-child(3){width:38%}
.nk-ns{display:flex;gap:12%;justify-content:flex-end;font-size:11px;margin-top:8px;padding-right:4px}
.nk-ns span{border-bottom:1px solid #111;min-width:120px}
@media print{
  body.pprint .nk-paper{width:210mm !important;box-shadow:none !important;margin:0 !important;padding:8mm 7mm !important}
}
/* 💉 処置記録(記録一式.xlsx「処置記録」シートどおり。2026-08-12 batch64) */
/* シートは A4縦1枚ぶん(48行)。上に見出しと処置内容の3行、あとは手書き欄、右下にDr署名 */
.sy-paper{position:relative;width:100%;max-width:794px;min-height:1122px;margin:0 auto;background:#fff;
  box-shadow:0 4px 18px rgba(0,0,0,.3);padding:9mm 6mm;box-sizing:border-box;color:#111;
  display:flex;flex-direction:column}
.sy-ttl{text-align:center;font-size:18.5px;font-weight:700;letter-spacing:.16em;line-height:1.4}
/* ID・名前・処置日の1行(シートでは A2:J2 の結合セル。下に細い罫線) */
.sy-h2{display:flex;align-items:baseline;font-size:16px;line-height:25px;
  border-bottom:1px solid #505050;margin-top:2px}
/* ⚠️ 直下の span だけに効かせる(処置日の中にある書き換え欄 .sy-dt を巻き込まないため) */
.sy-h2>span:nth-child(2){margin-left:9%}
.sy-h2>span:last-child{margin-left:auto}
/* 処置日の数字(今日の日付が入る。職員がその場で書き換えられる。印刷では枠を出さない) */
.sy-dt{outline:none;white-space:pre}
.sy-dt:focus{background:#fff3bf}
.sy-sub{font-size:13.5px;font-weight:700;line-height:24px}
/* 処置内容の3行。（ ）の中の空け幅はシートの全角スペースそのまま(pre で潰さない) */
.sy-l{font-size:16px;line-height:21px;white-space:pre}
.sy-l.sy-dot{border-bottom:1px dotted #000}
/* 紙の下まで、まっさらな手書き欄(シートにも罫線は無い)。
   2026-08-13 batch69: ここに「全員共通の本文」(kv 'shochi-body')が出るようになった。
   ⚠️ min-height:0 + overflow:hidden が要。これが無いと、本文が長いとき欄が下へ伸びて
      紙(1122px)が膨らみ、印刷が2枚目に流れる。欄の高さは紙の残りに固定し、
      入りきる大きさになるまで画面側が文字を1段ずつ小さくする(main.tsx SY_FZ)。
   改行はそのまま残す(pre-wrap)。長い行は折り返す(切り捨てない) */
.sy-free{flex:1;min-height:0;overflow:hidden;white-space:pre-wrap;overflow-wrap:break-word;
  line-height:1.6;padding-top:6px}
/* 🙂 顔の線画(2026-08-13 batch76 院長要望)。空白のど真ん中やや上に、空白の約6割の大きさで入る。
   ⚠️ 高さは画面側(main.tsx SY_FACE_H)が px で入れる。ここで伸び縮みさせない
      (flex:0 0 auto = 本文が長くても顔は縮まない・紙が膨らんで2枚目に流れない)。
   上の間(margin-top)で顔の中心を空白の真ん中よりすこし上に持ち上げている */
.sy-face{flex:0 0 auto;margin-top:84px;display:flex;align-items:center;justify-content:center}
.sy-faceimg{max-width:66%;max-height:100%;object-fit:contain;display:block}
.sy-dr{display:flex;justify-content:flex-end;font-size:16px;margin-bottom:20px}
.sy-dr span{border-bottom:1px solid #000;width:29%;min-width:180px}
/* ✏️ 本文の編集(院長のみ)。ワープロのように広く書ける。右に刷り上がりのイメージ(顔の図＋本文)を出す */
.syedit-row{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}
.syedit-ta{flex:1 1 340px;min-width:260px;box-sizing:border-box;min-height:300px;font-size:14px;line-height:1.7;
  padding:10px 12px;border:1px solid #c6d3e0;border-radius:6px;resize:vertical}
.syedit-prev{flex:0 0 auto}
.syedit-prevttl{font-size:11.5px;color:#5a6b7c;line-height:1.4;margin-bottom:4px;text-align:center}
/* 紙の空白の部分(749×870px)と同じ縦横の比で小さく写す。中の割り当ても本物と同じ(顔6割・上に約1割の間) */
.syedit-paper{width:230px;height:267px;box-sizing:border-box;background:#fff;border:1px solid #c6d3e0;
  border-radius:4px;padding:0 6px;display:flex;flex-direction:column}
.syedit-face{flex:0 0 60%;margin-top:9%;min-height:0;display:flex;align-items:center;justify-content:center}
.syedit-face img{max-width:66%;max-height:100%;object-fit:contain;display:block}
.syedit-free{flex:1;min-height:0;overflow:hidden;white-space:pre-wrap;overflow-wrap:break-word;
  font-size:5px;line-height:1.6;color:#111;padding-top:2px}
@media print{
  body.pprint .sy-paper{width:210mm !important;box-shadow:none !important;margin:0 !important;padding:9mm 6mm !important}
}
/* 🗼 銀座院専用の紙(手術同意書・モニター規約)。Wordの原本をA4縦1枚で再現(2026-08-11 batch52) */
.gz-paper{position:relative;width:100%;max-width:794px;min-height:1122px;margin:0 auto;background:#fff;
  box-shadow:0 4px 18px rgba(0,0,0,.3);padding:11mm 13mm 22mm;box-sizing:border-box;color:#111;
  font-size:10.6px;line-height:1.7}
.gz-ttl{text-align:center;font-size:15px;font-weight:700;letter-spacing:.25em;margin-bottom:7px}
.gz-paper p{margin:5px 0}
.gz-optbl{width:100%;border-collapse:collapse;margin:2px 0 7px}
.gz-optbl td{border:1.2px solid #111;padding:7px 10px;font-size:11px;line-height:1.6;min-height:1.6em;
  white-space:pre-wrap;overflow-wrap:anywhere}   /* 長い施術内容は折り返す(切らない。2026-08-13 batch78) */
.gz-ck{margin:3px 0 9px;padding-left:4em}
.gz-u{display:inline-block;border-bottom:1px solid #111;height:1.05em;vertical-align:bottom}
.gz-note{color:#111}
.gz-contact{padding-left:3.5em;margin:2px 0 7px;line-height:2.0}
.gz-sign{margin-top:9px;line-height:2.05}
/* b184b: 透明なpaddingで住所ブロックの反応域を広げる(見た目・印刷は不変。右下の文字位置はright/bottomのまま) */
.gz-foot{position:absolute;right:13mm;bottom:9mm;text-align:right;font-size:10.5px;line-height:1.6;
  padding:8px 0 0 16px}
/* 🏥 住所にホバーで院を選び直す小窓(2026-08-24 batch184)。画面だけの道具なので印刷には出さない。
   ⚠️ b184b: 「body.pprint .gz-clpick{display:none}」を@media printの**外**に書いてはいけない。
   usePrintOnly() は窓を開いている間ずっと body に pprint を付けるので、画面のホバーまで消えてしまう
   (先生の差し戻し「住所ホバーで3院切り替えになりません」の原因)。印刷で消すのは @media print の中だけ */
/* bottom:100%で隙間なく footer の真上に置く(隙間があるとカーソルが渡る途中で mouseleave が出て消える) */
.gz-clpick{position:absolute;right:0;bottom:100%;display:flex;gap:6px;background:#fff;
  border:1px solid #b9c8d6;border-radius:8px;padding:6px 8px;
  box-shadow:0 4px 14px rgba(25,45,66,.22);white-space:nowrap;z-index:5}
.gz-clpick a{cursor:pointer;color:#1a5fb4;font-size:12px;padding:2px 8px;border:1px solid #d5e2ee;border-radius:6px}
.gz-clpick a:hover{background:#eef5fb}
.gz-clpick a.on{background:#1a5fb4;color:#fff;border-color:#1a5fb4}
@media print{.gz-clpick{display:none !important}}
/* モニター規約は文字量が多いので少し詰める */
.gz-kiyaku{font-size:9.4px;line-height:1.56;padding:9mm 12mm 20mm}

/* 🩻 CT紹介状(2026-09-02 batch251 院長要望)
   元PDFを200dpiでPNGにした版下(seed/forms/ct-shokai-a|b.png)を敷き、その上に
   ✓(SVG)・○(SVG)・記入欄(input/textarea)を重ねる。オペ記録(目・鼻)と同じ流儀。
   ⚠️ 紙は A4 = 794×1123px に**固定**する(印刷の210mm=793.7pxと同寸法)。
      幅を可変にすると、重ねた欄の位置だけが版下からずれるため。 */
.ct-paper{position:relative;width:794px;height:1123px;margin:0 auto 12px;background:#fff;
  box-shadow:0 4px 18px rgba(0,0,0,.3);overflow:hidden}
.ct-paper:last-child{margin-bottom:0}
.ct-bg{display:block;width:100%;height:100%}
/* ✓と○。版下の実座標(1654×2339)のまま描いて、紙の大きさへ引き伸ばす */
.ct-ink{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none}
.ct-ink .ct-hit{fill:transparent;pointer-events:all;cursor:pointer}
.ct-ink .ct-hit:hover{fill:rgba(26,95,180,.16)}
/* 記入欄は枠なし・背景なし(紙の罫の上にそのまま載る)。押している間だけ薄く色が付く */
.ct-f{position:absolute;border:0;background:transparent;color:#111;padding:0;margin:0;
  font-family:inherit;line-height:1.15;outline:none;box-sizing:border-box}
.ct-f.mid{text-align:center}
.ct-f:focus{background:rgba(26,95,180,.09)}
.ct-area{resize:none;overflow:hidden;white-space:pre-wrap}
/* 🏥 紹介元の欄にマウスを乗せると3院から選び直せる(b184の作法。印刷には出ない) */
.ct-clwrap{position:absolute}
.ct-clwrap .gz-clpick{display:none}
.ct-clwrap:hover .gz-clpick{display:flex}
.fprev-bar .ctbusy{margin-left:10px;color:#eaf1f8;font-size:12px}
@media print{
  /* 1枚 = 1ページ。共通指定の break-after:avoid をここで打ち消す(.ip-paper と同じ考え方) */
  body.pprint .fprev.operec .ct-paper{width:210mm !important;max-width:none !important;
    height:calc(297mm - 1px) !important;margin:0 !important;box-shadow:none !important;
    overflow:hidden !important;
    page-break-inside:avoid !important;break-inside:avoid !important;
    page-break-after:auto !important;break-after:auto !important}
  body.pprint .ct-paper + .ct-paper{page-break-before:always !important;break-before:page !important}
  body.pprint .ct-f{background:transparent !important}
  body.pprint .ct-ink .ct-hit{fill:transparent !important}
}
.gz-kiyaku .gz-ttl{font-size:14px;margin-bottom:5px}
.gz-jh{font-weight:700;margin:3px 0 1px}
.gz-li{padding-left:1em;text-indent:-1em;margin:1px 0}
.gz-days td{text-align:center;font-size:9.6px;padding:4px 6px}
.gz-apph{text-align:center;font-weight:700;font-size:11.5px;letter-spacing:.2em;margin:7px 0 2px}
.gz-app td{padding:6px 10px}
.gz-app .gz-lb{font-size:10px}
.gz-app .gz-opv{min-height:1.5em}
.gz-opv{white-space:pre-wrap;overflow-wrap:anywhere}
/* 🖨 紙の中身をまとめて包み、入りきるまで縮める共通の仕掛け(2026-08-13 batch78・main.tsx の usePaperFit)。
   幅を 100%/倍率 に広げてから縮めるので、紙の横幅はそのままで文字だけが小さくなる(折り返しも測り直される)。
   ⚠️ 情報を切り捨てないための仕掛け。ここに overflow:hidden を足さないこと */
.pfit{transform:scale(var(--pfk,1));transform-origin:0 0;width:calc(100% / var(--pfk,1))}
.gz-kiyaku .gz-sign{margin-top:6px;line-height:1.9}
/* ---- 画像・書類タブ ---- */
.upbtn{border:1px solid #1e6fe0;background:#1e6fe0;color:#fff;border-radius:8px;padding:5px 14px;font-size:12px;cursor:pointer;margin-left:10px;font-weight:700}
.imgdate{font-size:12.5px;color:#42566b;font-weight:700;margin:10px 0 6px;border-bottom:1px solid #eef2f6;padding-bottom:3px}
.imggrid{display:flex;gap:12px;flex-wrap:wrap}
.imgcard{border:1px solid #dbe3ea;border-radius:8px;padding:6px;width:180px}
.imgcard img{width:100%;height:170px;object-fit:contain;background:#f3f6f9;border-radius:5px;display:block;cursor:zoom-in}
.imgtop{margin-bottom:4px}
.flabel{color:#1e6fe0;font-size:12px;font-weight:700;cursor:pointer}
.flabel.empty{color:#b9c4cf;font-weight:400}
.flabel-edit{display:inline-flex;gap:4px;align-items:center}
.flabel-edit input{padding:2px 6px;font-size:12px;width:110px}
.flabel-edit a{cursor:pointer;color:#1f6b24;font-weight:700}
/* ⚠️ 2026-08-13 batch77 院長要望:「書類などを写真に撮って入れると、ものすごい拡大された写真で見える」
   原因は一覧のサムネイルが object-fit:cover(=枠に合わせて中央だけ切り出す)だったこと。
   縦長の書類写真だと真ん中の一部しか見えず、拡大されたように見えていた。
   contain(=全体を縮めて収める)に変え、余白は薄い灰色で埋める。カードの大きさは今までどおり */
.lazywrap{width:100%;height:170px;cursor:zoom-in}
.lazywrap img{width:100%;height:170px;object-fit:contain;background:#f3f6f9;border-radius:5px;display:block}
.lazyph{width:100%;height:170px;border-radius:5px;background:#eef2f6;display:flex;align-items:center;justify-content:center;font-size:26px;color:#b9c4cf}
.imgerr{opacity:.3}
.docrow a{cursor:pointer}
/* ---- ファイルプレビュー(モーダル) ----
   2026-08-13 batch77 院長要望「ウインドウをもう少し大きく(特に横幅)、
   ウインドウいっぱいに縮尺された画像全容が見えるように。中で拡大縮小は可能に」
   ・横幅の上限 920px → 1680px。画面の広さに合わせていっぱいまで広がる(余白は左右16px)
   ・画像は .pv-zoom(=ZoomPanImg)で出す。既定は全体が収まる大きさ、中でホイール拡大できる
   2026-08-14 batch86 院長要望「ウインドウが大きすぎて閉じるボタンが画面外に行き、
   ブラウザのタブを閉じるほかなくなる。すぐ立ち戻れるよう閉じるボタンが押せるように」
   ・大きさを min() で常に画面内に収める(横=画面の96%まで・縦=画面の92%まで。
     100vh基準だとiPad Safari等でツールバーの分だけ下にはみ出し、中央置きのため
     上端=✕閉じるが画面外に出ることがあった。dvh が使える環境では見えている高さ基準)
   ・Escキー・窓の外(黒背景)クリックでも閉じられる(main.tsx FilePreview) */
.pv-bg{align-items:center;padding:16px}
.pv-wrap{background:#fff;border-radius:12px;width:min(1680px,96vw);max-width:1680px;height:min(1048px,92vh);height:min(1048px,92dvh);display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(10,25,45,.5);overflow:hidden}
.pv-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 18px;border-bottom:1px solid #e4eaf0;background:#f6f8fb}
.pv-name{font-weight:700;font-size:13.5px;color:#25313c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:12px}
.pv-hint{flex:1;font-size:11.5px;color:#7b8894;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pv-head .mclose{font-size:13px;white-space:nowrap}
/* 🪟 b478: 帯を掴んで窓ごと動かす(PrevWin の .fprev-bar と同じ指定)。動かしている間は PDF の iframe がマウスを飲まない */
.pv-head{cursor:move;user-select:none;-webkit-user-select:none;touch-action:none}
.pv-wrap.dragging iframe{pointer-events:none}
.pv-body{flex:1;min-height:0;overflow:auto;background:#333;display:flex;align-items:center;justify-content:center}
.pv-body img{max-width:100%;max-height:100%;object-fit:contain}
.pv-body iframe{width:100%;height:100%;border:none;background:#fff}
.pv-body .empty{color:#fff}
/* 画像のときは窓いっぱいを拡大縮小できる面にする(はみ出しは窓の外に出さない) */
.pv-body.pv-zoom{overflow:hidden}
.pv-body.pv-zoom .zpwrap{flex:1;align-self:stretch;width:100%;height:100%;background:#333}
/* 🖼 2026-09-23 b582 先生の逐語「写真を見比べたい時があるので、画像タブ内では、2個まで画像ウインドウを
   出せるようにして欲しいです。」窓が2つの時だけ .pv-two が付き、横に**並んで**出る(重ならない)。
   ⭐ 1つだけの時は .pv-two が付かないので、見た目も位置も今までとまったく同じ。
   画像の窓の幅は main.tsx の refit が半分の枠に収まる寸法を入れる(inline が勝つ)。
   下の width は書類(PDF)など画像以外の窓のための控え。gap は main.tsx の PV_GAP と同じ 12px */
.pv-bg.pv-two{gap:12px}
.pv-bg.pv-two>.pv-wrap{flex:0 0 auto;width:min(834px,calc(48vw - 14px))}
.imgmeta{display:flex;justify-content:space-between;font-size:10.5px;color:#8794a1;margin-top:4px}
.imgmeta .del,.docrow .del{cursor:pointer}
.docrow{display:flex;gap:14px;align-items:center;border-bottom:1px solid #eef2f6;padding:8px 2px;font-size:12.5px}
.docrow .t{color:#8794a1;font-size:11.5px}
/* ── 📎 書類タブの小さなプレビュー(2026-08-12 batch63 院長要望) ──
   「題名だけだと判別しにくい・10個15個を一つずつ開くのが大変」。カードにして中身を小さく見せる。
   ⚠️ サムネイルの iframe は pointer-events:none。クリックはカードに届き(=今までどおり右で大きく開く)、
      窓を掴んで動かすときにマウスを飲み込むこともない */
.docgrid{display:flex;flex-wrap:wrap;gap:12px}
.docrow.dcard{display:block;width:196px;border:1px solid #dbe3ea;border-radius:8px;padding:6px;gap:0}
.docrow.dcard:hover{border-color:#9cc4f0}
.docrow.dcard.hovon{border-color:#1e6fe0;box-shadow:0 0 0 1px #1e6fe0}
.dmeta{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;margin-top:5px;font-size:11.5px;line-height:1.5}
.dmeta a{overflow-wrap:anywhere}
.dthumb{position:relative;width:100%;height:180px;overflow:hidden;border-radius:5px;
  background:#f3f6f9;border:1px solid #e3eaf1;cursor:zoom-in}
/* PDFはブラウザがそのまま出せる(配信APIが inline)。実寸で描かせて縮めると文字がつぶれない */
.dthumb .dthumb-pdf{position:absolute;left:0;top:0;width:250%;height:250%;border:0;background:#fff;
  transform:scale(.4);transform-origin:0 0;pointer-events:none}
/* 2026-08-13 batch77: 画像タブのサムネと同じ理由で contain(全体が見える)にそろえた。
   cover のままだと縦長の書類写真が中央だけ切り出され「ものすごい拡大」に見える */
.dthumb img{width:100%;height:100%;object-fit:contain;background:#f3f6f9;display:block}
.dthumb .lazyph{width:100%;height:100%;border-radius:0}
.dthumb-none{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:6px;color:#8a97a5;background:#f7f9fb}
.dthumb-none span{font-size:32px}
.dthumb-none small{font-size:10.5px}
.dthumb-sw{margin-left:10px;font-size:11.5px;font-weight:400;color:#5c6b7a;cursor:pointer;user-select:none;
  display:inline-flex;align-items:center;gap:3px;vertical-align:middle}
.histrow{display:flex;gap:12px;align-items:center;border-bottom:1px solid #eef2f6;padding:7px 2px;font-size:12.5px;flex-wrap:wrap}
.histrow .hmemo{color:#5c6b7a;font-size:11.5px;flex:1;min-width:160px}
/* ---- カルテ編集(2カラム: 記録+右にオーダー/スタンプ) ---- */
.ed2col{display:flex;gap:16px;align-items:flex-start;flex-wrap:nowrap}
/* 保存済みの記録を開き直したときも、自費(オーダー)とスタンプは右側のまま(2026-08-04 院長要望) */
@media (max-width:860px){.ed2col{flex-wrap:wrap}}
.edmain{flex:1;min-width:0}
.edmain.editor{max-width:var(--edmax,680px)}/* 裏書ボタン右端に動的一致(狭い時はそれ以下に縮む) */
.addrow .kbtns{display:inline-flex;gap:8px}
/* 右側の柱。--edside-w が「診療録のテキストボックスの右の外のスペース」の幅(2026-08-18 batch132) */
.edside{--edside-w:280px;width:var(--edside-w);flex-shrink:0;display:flex;flex-direction:column;gap:10px}
.soaptgl{font-size:12px;color:#1e6fe0;cursor:pointer;display:inline-block;margin-bottom:6px}
.ordbox,.stbox,.shotbox{border:1px solid #d8e0e8;border-radius:10px;padding:10px 12px;background:#fbfcfe}
.ordbox h4,.stbox h4,.shotbox h4{font-size:12.5px;color:#42566b;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center}
.ordbox{padding:8px 10px}
.ordbox .estedit{width:100%}
/* 🔖 スタンプの箱は右の柱の**5分の2**の幅(2026-08-18 batch132 院長要望)。
   空いた分だけ、診療録のテキストボックスの右の外が広く空く。
   ⚠️ 2026-08-19: この絞りは**診療録(ek-karte)だけ**。看護師の記録(ek-op)にも効いてしまい、
   フォルダ畳みの看護師スタンプ36個が112pxの箱で壊れて見えた(「なくなった」と報告された)。
   看護師の記録・裏書きの箱は元の全幅に戻す */
/* 📐 b282(2026-09-04 先生の逐語「診療録を書く、の時のウインドウはスタンプのウインドウの右端まであたりに
   合わせてください(見積書編集と、『画像を撮る』『iphoneのカメラ』などが横幅取りすぎています。)」)
   ・診療録(ek-karte)の右の柱そのものをスタンプの箱と同じ幅(280×2/5=112px)にする。スタンプの箱は柱いっぱい(100%)
     =幅は今までと同じ112px。「📝見積書編集」「📷画像を撮る」の帯は柱の幅に収まる(中身は変えない・折り返すだけ)
   ・緑の箱(.card.ked.k-karte)の右端 = 柱の右端 + カードの余白18px + 枠2px = --kbox-w(下の .pbody で決める) */
.edside.ek-karte{width:calc(var(--edside-w) * 2 / 5)}
.ek-karte .stbox{width:100%;align-self:flex-start;padding:8px 7px}
.kcol-main .card.ked.k-karte{max-width:var(--kbox-w)}
.ek-karte .stbox h4{font-size:11.5px;margin-bottom:6px}
.ek-karte .stbox .stbtn{padding:5px 3px;font-size:11px;line-height:1.25;word-break:break-all}
/* 🗺 b303(2026-09-05 先生の逐語「『見積書編集』と『画像を撮る』がそれぞれ2行になっていて省スペースじゃないので、
   それぞれ、頭についているアイコンは無しにして1行にしてください」)
   ・アイコン(📝📷)は main.tsx で外した。柱112px − 箱の余白20px − 枠2px = 90px の中に、5文字(11px×5=55px)+ボタンの
     余白(左右8px)+枠2px = 73px で**1行**に収まる。折り返しは禁じる(nowrap)
   ・「手術計画図」(同じ柱・「画像を撮る」の下)も同じ作り。.shotbtns は flex-wrap なので2つ目は自然に下の行へ */
.ek-karte .ordbox .estedit,.ek-karte .shotbtns .mini{white-space:nowrap;padding:3px 8px;width:100%;text-align:center}
.stbox .stlist details .stbtn{margin-left:6px}
/* 📷 画像を撮る(2026-08-18 batch132 → 2026-09-04 b288)。
   b288(先生の逐語「撮った写真はそのまま画像タブ内へ保存で大丈夫です」): 撮った写真はその場で画像タブへ入るので、
   この枠の中は「📷 画像を撮る」のボタンだけ(下見は下の .shotcol へ) */
.shotbox{outline:none;padding:8px 10px}
.shotbox.drop{border-color:#1e6fe0;background:#f0f6ff;box-shadow:0 0 0 3px rgba(30,111,224,.12)}
.shotbox:focus-visible{border-color:#1e6fe0}
.shotbtns{display:flex;flex-wrap:wrap;gap:6px}
.shotbusy{font-size:11.5px;color:#1e6fe0;margin-top:6px}
/* 🗑 b288: 枠の中の小さな下見の並び(.shotlist)・✕(.shotx)・枚数の行(.shothint)は撤去 */
.shotth{position:relative;width:78px;height:78px;border:1px solid #d8e0e8;border-radius:8px;overflow:hidden;background:#fff}
.shotth img{width:100%;height:100%;object-fit:cover;cursor:zoom-in;display:block}
/* 📷 b288 先生の逐語「画像が小さいので、診療録のウインドウの右の外に、今の倍の大きさで表示されるように
   してほしいです。２枚撮れば、２枚目はその下に並ぶ、など。」
   ・.shotcol = 診療録の箱(.card.ked / 保存済みを直すときは .ent.editing)の**右の外**。箱を position:relative に
     して left:100% に置く(箱の上端に揃う)。箱の中の並び(.ed2col=flex)からは外れるので、本文の欄・右の柱の幅は変わらない
   ・.shotth.big = 旧い下見(78px)の縦横2倍=156px。縦1列(2枚目は1枚目の下)。✕は置かない(撮った時点で画像タブに
     入っている医療記録なので、画面から消す道を作らない)
   ・🩺診療情報一覧(.kcol-side)との重なり = 「その柱の左に割り込む」形にする: 下見がある間だけ、左の列(.kcol-main)に
     「箱(--kbox-w)+すき間12px+下見156px」の最小幅を持たせ、診療情報一覧は flex-shrink で**足りない分だけ**細くなる。
     診療録の箱は幅を --kbox-w に固定してある(b282)ので箱も本文も縮まない。画面が広くて元から余っていれば何も変わらない。
     箱が列いっぱいに広がる種類(看護師の記録・保存済みの記録を直すとき)は、箱の右に168pxの余白を空け、
     その分も同じく診療情報一覧が細くなる(箱の幅は今までどおり)。
     LINEの窓が出ている間(.pbody.has-line)は診療情報一覧が無いので割り込みは要らない(下見は箱の右にそのまま出る)
   🪟 b472: LINEの窓が出ていても患者画面の中身は窓が無い時と同じにしたので、ここも :not(.has-line) を外した
     (窓を出す前と後で1pxも変わらない。窓はその上に浮かぶ) */
.kcol-main .card.ked,.kcol-main .ent.editing{position:relative}
.shotcol{position:absolute;left:100%;top:0;margin-left:12px;width:156px;display:flex;flex-direction:column;gap:8px}
.shotth.big{width:156px;height:156px;flex:0 0 auto}
.pbody .karte2col:has(.shotcol) .kcol-side{flex:0 1 340px;min-width:0}
.pbody .karte2col:has(.card.ked.k-karte .shotcol) .kcol-main{min-width:calc(var(--kbox-w) + 168px)}
.pbody .karte2col:has(.card.ked:not(.k-karte) .shotcol, .ent.editing .shotcol) .kcol-main{min-width:calc(100% - 20px - 172px)}
.kcol-main .card.ked:not(.k-karte):has(.shotcol),.kcol-main .ent.editing:has(.shotcol){margin-right:168px}
.shotbig{max-width:min(1080px,94vw)}
.shotcam{max-width:min(880px,94vw)}
.shotcam-v{width:100%;max-height:60vh;background:#101820;border-radius:8px;display:block}
.shotcam-msg{font-size:12px;color:#b03a2e;margin-top:8px}
.shotcam-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}
.shotcam-n{font-size:11px;color:#8794a1}
.qtgl{margin-left:8px}
.qprev{border:1px solid #e3d5b8;background:#fffdf6;border-radius:8px;padding:10px 12px;margin-bottom:10px}
.qprev h5{font-size:12px;color:#8a6d2f;margin-bottom:6px;letter-spacing:.1em}
.qprow{display:flex;justify-content:space-between;gap:10px;font-size:12px;padding:2.5px 0;border-bottom:1px dashed #efe6d2}
.qprow.qptt{font-weight:700;font-size:13.5px;border-bottom:2px solid #8a6d2f;margin-top:4px}
.qprow.qpsm{font-size:10.5px;color:#8794a1;border-bottom:none}
.qprev small{display:block;margin-top:6px;color:#a09277;font-size:10px}
.qna{color:#c0392b;font-style:normal;font-size:10.5px}
.candbox{border:1px solid #cfe0cf;background:#f7fcf7;border-radius:8px;padding:10px 12px;margin-bottom:10px}
.candbox h5{font-size:12px;color:#2f6b35;margin-bottom:6px}
.candbox h5 small{font-weight:400;color:#7a8f7c}
.candchips{display:flex;flex-wrap:wrap;gap:4px}
.cand{border:1px solid #d5dde5;border-radius:6px;padding:2px 7px;font-size:11px;color:#9aa4ad;background:#fff}
.cand.ok{border-color:#3f9d4e;color:#1f6b24;font-weight:700;background:#eaf6ec}
.candbox small{display:block;margin-top:6px;color:#7a8f7c;font-size:10px}
.ordrow{display:flex;gap:4px;align-items:center;margin-bottom:5px}
.ordrow input{padding:5px 7px;font-size:11.5px;min-width:0}
.ordrow input:first-child{flex:1}
.ordrow .n{width:44px}
.ordrow .p{width:86px}
.ordrow a{color:#b03a2e;cursor:pointer;padding:0 2px}
.addlnk{color:#1e6fe0;font-size:12px;cursor:pointer;display:inline-block;margin-top:2px}
.stbox input{width:100%;margin-bottom:8px;padding:6px 8px;font-size:12px}
.stlist{display:flex;flex-direction:column;gap:4px;max-height:340px;overflow-y:auto}
.stbtn{display:block;text-align:center;border:1px solid #c8d3de;border-radius:6px;background:#fff;padding:6px 8px;font-size:12.5px;color:#25313c;cursor:pointer}
.stbtn:hover{border-color:#1e6fe0;background:#f0f6ff}
.stlist details summary{cursor:pointer;font-size:12px;color:#42566b;padding:3px 0}
.stlist details .stbtn{margin:3px 0 3px 14px}
.stgear{color:#5c6b7a;font-size:12px;cursor:pointer;align-self:center;margin-left:6px}
/* ---- カルテ表示(記録+自費の2カラム) ---- */
.entgrid{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
/* 💬 患者トップの LINE(2026-09-04 b280 → 同日 b282 で作り直し)。
   b280: 37.7vw の列(.pline-col)としてタブの中身の右に並べていた。
   b282(先生の逐語「診療情報一覧はスペースの関係上一旦無くなっていいので…すぐ右からLINEウインドウが出る
   スペースとしてください(診療録を書く、以外の時もLINEウインドウはそのような幅で。)」
   「この時のLINEウインドウはバーで動かせるようにしてください。」)
   ・LINEは**掴んで動かす窓**(LineBigWin=.linebw の1人ぶん。印は .plinewin)になった。位置と大きさは
     main.tsx(PatientPage)が開いた瞬間に測って決める: 左=箱(.pbody-main)のすぐ右・右=画面の右端・
     上=タブの下・下=画面の下。z-index は .linebw の 2000(冒頭の層の決まりどおり)
   ・窓が出ている間、左の中身(.pbody-main)は①の緑の箱と同じ幅(--kbox-w)に収め、🩺診療情報一覧(.kcol-side)は
     出さない。どのタブでも同じ幅=窓はいつも「箱のすぐ右」から出る
   ・窓を閉じれば .pbody-main は全幅に戻り、診療情報一覧も戻る(今までと同じ見た目)
   ・--kbox-w = 本文の箱(--edmax)+ 柱との隙間16px + 右の柱(280×2/5=112px)+ カードの余白36px + 枠2px。
     材料の --edside-w はここ(.pbody)に置く(.edside の値と同じ280px。片方だけ変えないこと) */
.pbody{display:flex;align-items:flex-start;gap:0;
  --edside-w:280px;--kbox-w:calc(var(--edmax,680px) + 16px + var(--edside-w) * 2 / 5 + 38px)}
.pbody-main{flex:1 1 auto;min-width:0}
/* 🪟 2026-09-15 b472 先生の逐語「LINEウインドウを出しても、それらの内容が左によることなく、普段通りで、
   上にLINEウインドウが浮かんでいる状態にしたいです。」
   【原因】上の b282 の2行(.pbody.has-line の間は .pbody-main を --kbox-w に縮め、🩺診療情報一覧をしまう)が、
     見積書/会計・画像・書類など**どのタブの中身も**窓の左の幅に押し込んでいた。
   【直し】その2行を外した = has-line は見た目に何もしない(印として残すだけ)。中身の幅・位置は窓が無い時と同じ。
     窓(.linebw.plinewin=2000)は今までどおり上に浮かぶ。開いた時の位置(箱のすぐ右)は main.tsx が
     「.pbody-main の左端 + --kbox-w」で測るので、窓の位置・大きさは b282/b286 のまま。
   ⚠️ 手術計画図の列(.has-plan)は今までどおり左を縮める(依頼はLINEの窓だけ) */
/* 🗺 b303(2026-09-05 先生の逐語「診療録のウインドウの右に、ブラウザの右端いっぱいまで仮の手術記録を書きたい」)
   手術計画図の列が出ている間(.has-plan)は、LINEの列(.has-line)と**同じ扱い**: 左の中身は①の緑の箱の幅に収め、
   🩺診療情報一覧はしまう(先生 b282「診療情報一覧はスペースの関係上一旦無くなっていい」)。列の置き場所は
   main.tsx(PatientPage)が LINE と同じ物差しで測る(左の中身のすぐ右+8px 〜 画面の右端 / タブの下 〜 画面の下) */
.pbody.has-plan .pbody-main{flex:0 1 var(--kbox-w);max-width:var(--kbox-w)}
.pbody.has-plan .kcol-side{display:none}
/* 列そのもの = オペ記録の窓(.modal.opdw)を暗幕なしで、親が渡した枠(left/top/width/height はインライン)に固定する。
   z-index は掴んで動かす窓の層(2000)= LINEの窓(.linebw)と同じ。左の診療録はそのまま触れる(暗幕が無いので) */
.modal-bg.opdw-bg.opdw-colbg{position:fixed;padding:0;background:transparent;z-index:2000;align-items:stretch;justify-content:stretch;pointer-events:none}
.modal-bg.opdw-colbg .modal.opdw.opdw-column{pointer-events:auto;max-width:none;width:100%;height:100%;max-height:100%;border-radius:10px 0 0 0;box-shadow:-4px 0 14px rgba(20,40,60,.14)}
/* ══ ⭐⭐ 2026-09-12 b437 先生の逐語「診療録を書いている時の手術計画図が、図形やライブラリが満足に
   確認できない、選びにくい、ので是正お願いします。」 ════════════════════════════════════
   困りごとの正体(1280x800 で実測した直す前の姿):
     ・列(手術計画図の窓)は画面の右半分しかないので右パネルは 273px。そこを
       [道具の箱 1fr][テンプレ 118px] の**2列**に割るので道具の箱が 147px になり、
       道具の段が全部2行に折り返して箱が **468px** に膨らむ
     ・図形ライブラリの升は残り物(1fr の後)なので **高さ14px = 図形が1つも見えない**
     ・テンプレのタグは 118px の細い列で 1〜2個ずつ **15段**に縦積み(下が切れる)
   → 列のときだけ右パネルを**1列の縦積み**にする:
        ①手術の内容 ②テンプレ(タグは横並び・上にまとめる) ③道具の箱(横幅いっぱい=段が折り返さない)
        ④図形ライブラリ(残りをテンプレと山分け)
   ⭐ 図形ライブラリの升は minmax(150px, 2.6fr) = 「どんなに狭くても 150px(図形が2段ぶん)」。
      余りはテンプレの帯と **1 : 2.6** で分ける(先生の「図形ライブラリがいちばん大事」)。
      ⚠️ 1fr は「余り」ではなく**その升に回る場所の総量**の取り分。1:1 にするとテンプレと同じ高さになり、
         1600x1000 で図形が2段しか見えなくなる(実測)。1:2.6 で 3段。
   ⭐ テンプレの帯の下限は clamp(46px, 100vh - 860px, 150px):
      縦に余裕のある画面(100vh≧1010px)では 150px まで先に確保 = タグ3段 + 候補1〜2行が必ず見える。
      縦の短い画面では 46px まで譲る = そのぶん図形ライブラリが2段を保てる(狭い画面での困りごとが本題のため)。
      入りきらない時だけ右パネルが縦に送れる(今までどおり .opdw-side の overflow-y:auto)。
   ⚠️ 紙(.opdw-view / .opdw-cv)の大きさは --opdw-right(44%)だけで決まるので**1pxも変わらない**。
   ⚠️ 半分の窓(.opdw-half で列ではないもの = 目のオペ記録・処置記録)と、フル幅の窓(b436 の姿)は
      この段落に1つも掛からない(セレクタが .opdw-column 限定)。
   ⚠️ 道具・パレット・赤い太枠・紙の右上の帯(→)数字・∞・⇔・⇕)は b436 のまま(1つも消していない) */
.modal.opdw.opdw-column .opdw-side{grid-template-columns:minmax(0,1fr);
  grid-template-rows:auto minmax(clamp(46px,calc(100vh - 860px),150px),1fr) auto minmax(150px,2.6fr);gap:6px}
.modal.opdw.opdw-column .opdw-ura,
.modal.opdw.opdw-column .opdw-shrec{grid-column:1;grid-row:1}
.modal.opdw.opdw-column .opdw-tplcol{grid-column:1;grid-row:2;overflow:hidden;padding:5px}
.modal.opdw.opdw-column .opdw-side>.opdw-tb{grid-column:1;grid-row:3;gap:3px;padding:5px 8px}
/* 段と段のすき間だけを詰める(横のすき間 .opdw-tbrow の gap は触らない = ボタンの並びは b436 のまま)。
   道具は1つも消していない・順番も b436 のまま。詰めた 28px がそのまま図形ライブラリの1段ぶんになる */
.modal.opdw.opdw-column .opdw-tbrow+.opdw-tbrow{padding-top:3px}
/* すき間と余白をわずかに詰める(列は縦が短いので、この数pxが図形の1段ぶんに効く)。
   ⚠️ カード(.opdw-shape 52x63)そのものは縮めない = 図形の絵が見分けられなくならない */
.modal.opdw.opdw-column .opdw-lib-mid{grid-column:1;grid-row:4;padding:4px 6px;gap:3px}
.modal.opdw.opdw-column .opdw-lib-grid{padding:0}
/* 🏷 タグの帯は横幅いっぱいに並ぶ(15段 → 3段ほど)。数が増えた時だけ帯の中だけを縦に送る
   = 下の候補の一覧が押し出されない(先生「省スペース優先」) */
.modal.opdw.opdw-column .opdw-tags-filter{flex:0 1 auto;min-height:19px;max-height:70px;
  overflow-y:auto;overscroll-behavior:contain}
/* 用紙の二択(目/鼻)を同じ枠に出す(記録集の「＋オペ記録」の窓と同じ文言。案内文は置かない) */
.opdw-colpick{position:fixed;z-index:2000;background:#fff;border:1px solid #d8e0e8;border-radius:10px 0 0 0;box-shadow:-4px 0 14px rgba(20,40,60,.14);padding:12px 14px}
.opdw-colpick .mclose{position:static;display:inline-block;margin-bottom:10px}
.opdw-colpick .btnrow{display:flex;gap:8px;flex-wrap:wrap}
/* 患者トップ カルテタブの2カラム(左=診療録[編集欄と同幅]/右=診療情報一覧) */
.karte2col{display:flex;gap:20px;align-items:flex-start}
.kcol-main{flex:1 1 auto;min-width:0}
.kcol-main .ent{max-width:var(--edmax,680px)}
.kcol-side{flex:0 0 340px;position:sticky;top:var(--pstop,180px);max-height:calc(100vh - var(--pstop,180px) - 12px);overflow:auto}
/* 🗂 b306(2026-09-05 先生の逐語「裏書を書くと患者トップの診療録の右に置かれるようにして欲しいです。手術中心に回っている
   クリニックなので控えている手術に関してのボードが、すぐ見える場所にあるとgoodです。裏書のウインドウの右端が『LINEタブ』の
   左端に接するくらいの横幅にとどめてください」)
   裏書きの**板**(.kcol-ura) = 左の中身(.kcol-main)のすぐ右(+8px)〜LINEタブの左端。3列(左の中身｜板｜🩺診療情報一覧)。
   ・板がある間(.has-ura)だけ左の中身を①の緑の箱の幅(--kbox-w)に固定する(b282 のLINEの列と同じ物差し。板が無い患者では
     今までどおり=この段落は当たらない)
   ・板の幅 --ura-w は main.tsx(PatientPage)が実測して入れる(LINEタブの左端 − 左の中身の右端 − 8px。画面幅に追随)。
     測れていない一瞬だけ 480px
   ・すき間: 左の中身と板は 8px(b282/b303 の列と同じ)、板と診療情報一覧は今までどおり 20px
   ・板は診療情報一覧と同じく画面に貼り付く(sticky)。縦に長い時は板の中でスクロール(画面の下端まで)
   ・🩺診療情報一覧は板の右に残す。足りない分だけ細くなる(b288 の割り込みの作法= flex-shrink・min-width:0)
   ・重なりの順: 板はページの中身(z-index 無し=冒頭の層の 1〜99 未満)。LINEの窓(.linebw=2000)・計画図の列(2000)が
     板の**上**に重なる(窓は掴んで動かせる・板は動かない)。has-line / has-plan の間も板は消さない
   ・板の中の記載(.ent)は板いっぱい(左の一覧の --edmax の上限は .kcol-main 限定なのでここには当たらない)。
     裏書きの記入欄の 660px 上限(.edmain.editor.uraedit)はそのまま=板が狭ければそれ以下に縮む */
.karte2col.has-ura{gap:0}
.karte2col.has-ura .kcol-main{flex:0 0 var(--kbox-w);max-width:var(--kbox-w)}
/* 🩺 2026-09-06 b321 先生の指示: 診療情報一覧の撤去(上原だけ切替)・スタンプ編集をタブ右端へ・裏書きを広く
   (逐語「裏書が最上段当たりに移動したことで、『見えにくい』という意見があり、確かに幅が狭くなりすぎて見えにくい状態です」
   「裏書のウインドウの左端を、診療録の右(今よりも近づいた位置)から、始めて下さい。右端はLINEタブの左端を少し超えても大丈夫です」)
   ・左の中身(.kcol-main)は、箱(新しい診療録 .card.ked / 保存済みを直す .ent.editing)を開いていない間は**診療録の記載の幅
     (--edmax)**まで。①の箱の幅(--kbox-w)に固定していた b306 では記載の右に約166pxの空きができ、板がその分遠かった。
     箱を開いた時だけ今までどおり --kbox-w(箱は縮めない)
   ・板(.kcol-ura)は左の中身の右端 + 14px から。幅 --ura-w は main.tsx が測る(右端 = LINEタブの左端 + 40px。
     診療情報一覧がオンの時だけ一覧のぶん詰めるが、b306 の幅の 1.4倍は下回らない)
   ・🩺診療情報一覧(.kcol-side)は上原がオンにした時だけ板の右(main.tsx の dinfoOn)。足りない分だけ細くなるのは今までどおり */
.karte2col.has-ura:not(:has(.kcol-main .card.ked,.kcol-main .ent.editing)) .kcol-main{flex-basis:var(--edmax,680px);max-width:var(--edmax,680px)}
.kcol-ura{flex:0 0 auto;width:var(--ura-w,480px);margin-left:14px;min-width:0;position:sticky;top:var(--pstop,180px);max-height:calc(100vh - var(--pstop,180px) - 12px);overflow:auto}
.karte2col.has-ura .kcol-side{flex:0 1 340px;min-width:0;margin-left:20px}
/* ↔️ 2026-09-06 b322 先生の指示: 裏書きの板を右へドラッグで伸ばせる
   (逐語「裏書のウインドウは右に伸ばせるようにして欲しいです。デフォは一旦今のままでいいですが」)
   ・取っ手(.kcol-ura-rs)= 板のすぐ右の兄弟。幅6px を margin-left:-6px で板の右端 6px に重ね(板の右端の位置は変えない=
     診療情報一覧の左端は今までどおり板の右端 + 20px)、行の高さいっぱい(align-self:stretch)にして、板をスクロールしても
     右端のどこでも掴める。ホバーで薄く青・カーソルは col-resize。説明文・帯は付けない
   ・幅は main.tsx(PatientPage の uraRsDown)が --ura-w を書き換える。狭い画面(下の @media)では板が1段落ちるので取っ手は出さない */
.kcol-ura-rs{flex:0 0 6px;width:6px;margin-left:-6px;align-self:stretch;cursor:col-resize;touch-action:none;
  user-select:none;-webkit-user-select:none;border-radius:3px;position:relative;z-index:1}
.kcol-ura-rs:hover{background:#1e6fe0;opacity:.3}
/* 古い裏書き(訂正前・過去の手術)の折り畳み: 見出し1行(押すと開く)。開いた中身は左の一覧と同じ記載の箱 */
.uraold{margin-bottom:6px}
.uraold summary{cursor:pointer;font-size:11.5px;color:#8a6d2f;background:#fdf7d9;border:1px solid #ecd873;border-radius:8px;padding:4px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uraold.voided summary{color:#8a97a5;background:#f4f7f9;border-color:#e0e6ec}
.uraold[open] summary{border-radius:8px 8px 0 0;margin-bottom:0}
.uraold[open]>.ent{border-radius:0 0 12px 12px;border-top:none}
/* 🗂 b368 → 🗂 b369(2026-09-08 夜 先生の逐語「裏書のデザイン、並びなどですが、photoshopで格闘して作ったので、忠実に再現して
   欲しいです。通常価格は、通常と呼び名を変え、赤表示に…1.4倍にした手術日あたりの文字はもう少しだけ小さく。院などの並びの順番も忠実に。
   来院時間、GW、EF、培養採血、予約金〜万支払い、術前説明などは白背景の窓を設けたい…横線で区分けされているところも忠実に」)
   ・.urahd = 裏書きの本文の頭。「手術日：R8」の素の文字(b370 で年を令和に)と、日付(9/7)・区分・担当dr・施術院の
     **値だけ**の白い窓(.urawin)を同じ1行に 3px あけて並べる(b370)。文字は本文12.5pxの**1.25倍**(b368の1.4倍は「もう少しだけ小さく」との指示)。
     .md = 日付(黒の太字) / .kubun = 「通常」(赤の太字。モニター様と取り違えないため)
   ・.uraboard = 板の本文。頭より内側に置き、横線(.urahr)で区画を分ける(線は頭と同じ位置から始まり右は板の少し手前で止まる)。
     .urarow = ラベル(.uralbl)+白い窓(.urabox)の行。窓は**表示だけ**で入力欄ではない。中身が無い窓は灰色の見本(.ph)
   ・.enthead.urafoot = 裏書きだけ、#番号・記載者・確定済の帯・訂正の行(赤字のまま)・ボタン列を本文の**下**に。
     上に付いていた時の食い込み(margin -14px -16px)を下向きに裏返し、区切りの点線は上辺に。情報の行→ボタン列の順
   ⚠️ 余白を決める行は「.ent .body …」から書く。上の方(113行あたり)の .ent .body div{margin-bottom:2px} の方が強く、
      「.urahd{margin…}」だけだと負けて余白が 2px になる(b369 で踏んだ) */
/* 🗓 2026-09-09 b370 先生の逐語「その右の日付、モニターか通常か、担当dr、院名は、窓の中で文字の左右の余白は
   今の4分の3にしてほしい。また、窓の間も三分の一にしてほしい。」→ 窓の左右の余白 13px → 10px(3/4)・
   窓どうしの間 8px → 3px(1/3)。文字の大きさ(1.25倍)は変えない */
.ent .body .urahd{display:flex;flex-wrap:wrap;align-items:center;gap:6px 3px;margin:0 0 13px;padding-left:5px}
.urahd .uradate{font-size:1.25em;line-height:1.3;white-space:nowrap}
.urahd .urawin{font-size:1.25em;line-height:1.3;background:#fff;border:1px solid #dfe3e8;border-radius:8px;padding:2px 10px;white-space:nowrap}
.urahd .urawin.md{font-weight:700;color:#1b2733}
.urahd .urawin.kubun{font-weight:700;color:#d81a1a}
.ent .body .uraboard{padding-left:22px;white-space:pre-wrap}
.ent .body .uraboard .urahr{border:0;border-top:1px solid #cfd5db;height:0;margin:9px 56px 9px -17px}
.ent .body .uraboard .urarow{display:flex;flex-wrap:wrap;align-items:center;gap:2px 16px;margin:5px 0}
.uraboard .uracell{display:inline-flex;align-items:center;white-space:nowrap}
.uraboard .urabox{display:inline-block;background:#fff;border:1px solid #dfe3e8;border-radius:5px;padding:1px 10px;margin-left:2px;min-width:30px;line-height:1.5;white-space:nowrap}
.uraboard .urabox.ph{color:#a9b1b9}
.ent.k-kakutei .enthead.urafoot{flex-direction:column;align-items:stretch;gap:6px;border-bottom:none;border-top:1px dashed #e6dba0;border-radius:0 0 8px 8px;margin:10px -16px -14px;padding:8px 16px 10px}
.urafoot .urainfo{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}
.urafoot .urainfo .reason{margin-bottom:0;font-size:11.5px}
.urafoot .entacts{margin-left:0}
.ent.editing .enthead.urafoot{margin:8px 0 0 !important;padding:6px 0 0 !important}
.dinfo{background:#fff;border:1px solid #dfe6ec;border-radius:10px;padding:10px 12px}
.dinfo-h{font-weight:700;font-size:13px;color:#243b53;margin-bottom:8px}
.dinfo-h small{font-weight:400;color:#8a97a5;font-size:10.5px;margin-left:4px}
.dinfo-alg{background:#fbe9e7;border:1px solid #f3c9c2;border-radius:8px;padding:8px 10px;margin-bottom:10px;font-size:12px;line-height:1.6}
.dinfo-alg.none{background:#f4f7f9;border-color:#e0e6ec;color:#8a97a5;font-size:11px;line-height:1.5}
.dalg-h{font-weight:700;color:#b03a2e;margin-bottom:3px}
.dalg-r{display:flex;gap:6px}
.dalg-k{color:#8a5a54;white-space:nowrap}
.dalg-v{color:#333;font-weight:600;word-break:break-word}
.dinfo-tl{list-style:none;margin:0;padding:0;font-size:12px}
.dinfo-tl li{display:flex;gap:8px;padding:5px 2px;border-bottom:1px dashed #e6ebf0;line-height:1.4}
.dinfo-tl li b{color:#1e6fe0;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums;min-width:64px}
.dinfo-tl li span{color:#2c3a47;word-break:break-word}
.dinfo-tl li.none{color:#8a97a5;border:none}
.mkpill.mk-monshin{background:#e7f0fb;color:#1a5fb4;border:1px solid #c3d8f0;font-weight:700}
.opsugg{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px;padding:7px 9px;background:#fffef6;border:1px solid #eadfae;border-radius:8px}
.opsugg-float{position:fixed;z-index:60;max-width:340px;margin:0;box-shadow:0 6px 20px rgba(0,0,0,.18)}
.opsugg-l{font-size:10.5px;color:#8a7a3a;font-weight:700;width:100%}
.opsugg-i{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid #e2d9b6;border-radius:6px;padding:3px 8px;font-size:12px;color:#243b53;cursor:pointer}
.opsugg-i:hover{background:#fff7d6;border-color:#d9c877}
.opsugg-i b{color:#c9781a;font-weight:700;font-size:11.5px}
/* ✔ 正式名称そのものに当たっている候補(2026-08-16 batch97)。書き切っても候補を消さず、
   「当たっています」と分かるように緑の縁で出す */
.opsugg-i.hit{background:#eafaf0;border-color:#7fc9a0;color:#1c6b45;font-weight:600}
/* 🗑 2026-08-20 batch163: 診療録のタグ行にあった「📖 ルール」のチップ(.mkpill.mk-rule)は
   先生の逐語で撤去したので、その飾りもここから消した。ルールは設定→アルゴリズム一覧で見る */
/* 📖 診療録/見積書ルールのボタンは、カルテタブの上から⚙設定の中へ移した(2026-08-19 batch152)。
   設定の中では他の項目と同じ見た目(.ndmenu a)にするので、専用の飾り(.rulebtn)は要らない */
.voidtgl{display:inline-block;margin:4px 0 10px;font-size:11.5px;color:#8a97a5;cursor:pointer;text-decoration:underline dotted}
/* シェーマ・手書き入力 */
.schmodal{max-width:1220px}
.schtop{display:flex;gap:10px;align-items:center;margin-bottom:6px;flex-wrap:wrap}
.schtop-msg{color:#1a5fb4;font-size:12.5px;font-weight:700}
.schtop-file{background:#fff;border:1px solid #ccd4dc;border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer}
.schtop-file:hover{background:#eef4fb}
.schwrap{display:flex;gap:14px;align-items:flex-start}
.schmain{flex:9;min-width:0}
.schtb{display:flex;gap:4px;align-items:center;flex-wrap:wrap;background:#f2f5f8;border:1px solid #dfe6ec;border-radius:8px;padding:6px 8px;margin-bottom:6px}
.schtb-b{background:#fff;border:1px solid #ccd4dc;border-radius:6px;padding:4px 9px;font-size:12px;cursor:pointer}
.schtb-b.on{background:#dbe9fb;border-color:#7fabe0;font-weight:700}
.schsep{width:1px;height:20px;background:#ccd4dc;margin:0 4px}
.schcolbtn{background:#fff;border:1px solid #ccd4dc;border-radius:6px;padding:4px 8px;cursor:pointer;position:relative}
.schcolnow{display:inline-block;width:20px;height:16px;border-radius:3px;border:1px solid rgba(0,0,0,.25);vertical-align:middle}
.schtxt{width:100%;margin-bottom:6px}
.schcv{border:1px solid #ccd4dc;border-radius:8px;background:#fff;width:100%;max-width:720px;touch-action:none;cursor:crosshair;display:block}
.schtpls{flex:7;min-width:0;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;max-height:72vh;overflow:auto;align-content:start}
.schtpls small{grid-column:1/-1}
.schtpls small{color:#8a97a5;font-weight:700}
.schtpl{border:1px solid #dfe6ec;border-radius:8px;padding:6px;text-align:center;cursor:pointer;background:#fff}
.schtpl:hover{border-color:#7fabe0;background:#f4f9ff}
.schtpl img{width:100%;height:64px;object-fit:contain}
.schtpl span{font-size:11px;color:#5c6b7a}
/* リッチテキスト診療録 */
.rtb{display:flex;gap:4px;align-items:center;flex-wrap:wrap;background:#f2f5f8;border:1px solid #dfe6ec;border-radius:8px 8px 0 0;padding:5px 8px;margin-bottom:0}
.rtb-b{background:#fff;border:1px solid #ccd4dc;border-radius:6px;min-width:30px;padding:3px 7px;font-size:13px;line-height:1.2;cursor:pointer}
.rtb-b:hover{background:#eef4fb}
.rtb-sz{min-width:26px;font-size:11.5px}
.rtb-sp{flex:1}
.rtb-save{padding:4px 14px;font-size:12.5px}
.rtb .savestat{font-size:11px;margin-right:8px}
/* 🏷 看護記録の「区分」の札(2026-08-16 batch109 院長要望)。
   書式ボタン(.rtb)の下・入力欄(.richta)の直上に、入力欄と左右の幅をそろえて置く。
   ⚠️ contentEditable の**外**にある = 職員には消せない。保存される本文にも入らない。
   区分の語だけ太字(赤=通常価格 / オレンジ=部分モニター)、括弧の中は通常の太さ(院長の指示)。 */
.nskbn{border-left:1px solid #ccd4dc;border-right:1px solid #ccd4dc;border-bottom:1px dashed #e0e6ec;
  background:#fffdf6;padding:5px 10px 4px;font-size:13px;line-height:1.45;user-select:none;-webkit-user-select:none}
.nskbn b{font-weight:800;letter-spacing:.03em}
.nskbn span{font-weight:400;color:#6b7885;font-size:11.5px;margin-left:6px}
.nskbn.k-normal b{color:#d21f1f}
.nskbn.k-mon b{color:#e2740b}
.richta{min-height:15em;border:1px solid #ccd4dc;border-top:none;border-radius:0 0 8px 8px;padding:8px 10px;font-size:12.5px;line-height:20.5px;background:#fff;outline:none;white-space:pre-wrap;word-break:break-word;cursor:text}
.richta:focus{border-color:#7fabe0;box-shadow:0 0 0 2px rgba(127,171,224,.18)}
.richta:empty::before{content:attr(data-ph);color:#a5b1bc;pointer-events:none}
.richta img{max-width:240px;max-height:200px;border-radius:6px;margin:2px;vertical-align:middle}
.richbody{font-size:12.5px}
.richbody div{margin-bottom:2px;line-height:1.48}
.richbody img{max-width:260px;max-height:220px;border-radius:6px;margin:2px;cursor:pointer;vertical-align:middle}
.richbody font[size="2"]{font-size:10.5px}
.richbody font[size="5"]{font-size:17px}
.richbody font[size="7"]{font-size:22px}
.rtb-saveL{background:#eef4fb;border-color:#c3d8f0;color:#1a5fb4;font-weight:700}
/* 🏷 2026-08-22 batch175: 見積タグは単独の行(.mkchips)をやめ、書式の列の**💾保存のすぐ左**へ。
   段の高さを増やさないよう、丸チップのままで縦を .rtb-b に合わせる(行が1つ減る) */
.rtb .rtb-mkset{flex:none;line-height:1.25;padding:3px 10px;margin-right:2px}
.stricht{min-height:11em;border-top:none;border-radius:0 0 8px 8px}
.stricht img{max-width:200px;max-height:160px}
.ippick{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;max-height:60vh;overflow:auto;padding:4px}
.ippick-i{border:1px solid #dfe6ec;border-radius:8px;padding:5px;text-align:center;cursor:pointer;background:#fff}
.ippick-i:hover{border-color:#7fabe0;background:#f4f9ff}
.ippick-i img{width:100%;height:90px;object-fit:cover;border-radius:5px}
.ippick-i span{display:block;font-size:10px;color:#5c6b7a;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dinfo-tl li.jmp{cursor:pointer}
.dinfo-tl li.jmp:hover{background:#f0f6fd}
.ent.flash{outline:3px solid #7fabe0;outline-offset:2px;transition:outline .3s}
.printsel{font-size:12px;padding:3px 6px;border:1px solid #c8d2dc;border-radius:6px;background:#fff;margin-right:6px;cursor:pointer}
.freelab{position:relative;display:block}
.opsugg-float{position:absolute;z-index:60;max-width:340px;margin:0;box-shadow:0 6px 20px rgba(0,0,0,.18)}
/* 💧文字色パレット */
.palwrap{position:relative;display:inline-block}
.palbtn{position:relative;padding-bottom:5px}
.palbar{position:absolute;left:5px;right:5px;bottom:2px;height:3px;border-radius:2px;display:block}
.palpop{position:absolute;top:calc(100% + 4px);left:0;z-index:70;background:#fff;border:1px solid #ccd4dc;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.2);padding:8px}
.palgrid{display:grid;grid-template-columns:repeat(7,22px);gap:4px}
.palc{width:22px;height:22px;border-radius:3px;cursor:pointer;border:2px solid transparent;display:block}
.palc.on{border-color:#243b53}
.palc.wh{border:1px solid #ccd4dc}
.palreset{display:block;margin-top:6px;font-size:11px;color:#5c6b7a;cursor:pointer;text-align:center}
.palreset:hover{color:#1a5fb4}
/* 改善ホワイトボード2列 */
.kb2col{display:flex}
.kb2col textarea{flex:1;min-width:0}
.kb2col textarea:first-child{border-right:1px dashed #d8cfa8 !important}
/* 改修箇所りれき */
/* 🛠 改修箇所りれきの窓。z-index は 55 だったため、お知らせ「Empty」の帯(.cal-fixhead=60)に
   上半分を塗りつぶされ、題も✕も押せなかった(2026-09-02 b249 先生の報告)→ 窓の層(1000)へ */
.kaiwin{position:fixed;right:14px;top:70px;width:430px;max-height:calc(100vh - 100px);background:#fff;border:1px solid #b9d2ef;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.25);z-index:1000;display:flex;flex-direction:column}
.kai-add{display:flex;gap:6px;padding:8px 10px;border-bottom:1px solid #e6ebf0}
.kai-add input{flex:1;font-size:12px}
.kai-list{list-style:none;margin:0;padding:4px 10px 10px;overflow:auto;font-size:12px}
.kai-list li{display:flex;gap:8px;align-items:baseline;padding:5px 2px;border-bottom:1px dashed #e6ebf0;line-height:1.45}
.kai-list li b{color:#1e6fe0;white-space:nowrap;font-variant-numeric:tabular-nums;min-width:58px}
.kai-list li span{flex:1;word-break:break-word}
.kai-list li small{color:#8a97a5;white-space:nowrap}
.kai-list li.none{color:#8a97a5;border:none}
.kaibtn{color:#1a5fb4;border:1px solid #c3d8f0;background:#eef4fb;margin-right:6px}
.mkpill.mk-end{background:#e8f6ea;color:#1c7c31;border:1px solid #b9dfc0}
/* 見積プレビュー: 見出し/割引/備考 */
.qprow.qphead{font-weight:700;color:#243b53;background:#eef1f4;border-radius:5px;padding:3px 6px;margin:2px 0}
.qprow.qpdisc span:last-child{color:#c0392b;font-weight:700}
.qptgt{margin-left:auto;color:#8a97a5}
.qpbiko{margin-top:8px;border-top:1px dashed #dfe6ec;padding-top:6px}
.qpbiko b{font-size:11px;color:#5c6b7a}
.qpbiko pre{white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:11.5px;margin:3px 0 0;color:#333}
.ruledoc{white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:12.5px;line-height:1.7;color:#243b53;background:#fbfcfd;border:1px solid #e6ebf0;border-radius:8px;padding:12px 14px;max-height:70vh;overflow:auto}
@media(max-width:980px){.karte2col{flex-wrap:wrap}.kcol-side{flex-basis:100%;position:static;max-height:none;margin-top:14px}.kcol-main .ent{max-width:100%}
  /* 🗂 b306: 狭い画面では裏書きの板も1段落として全幅(LINEタブの位置で測った幅は使わない) */
  .karte2col.has-ura .kcol-main{flex:1 1 100%;max-width:none}.kcol-ura{flex-basis:100%;width:auto;margin-left:0;position:static;max-height:none;margin-top:14px}.karte2col.has-ura .kcol-side{margin-left:0}
  .kcol-ura-rs{display:none}/* ↔️ b322: 1段落ちの板には取っ手を出さない */}
/* 📱 2026-09-09 b383 先生の逐語(添付画像=iPadの患者トップ):
   「ipadの画面ですが、裏書がPCと異なり診療録の下の方に並んで見えにくいです。(裏書は、いつもすぐ見やすくなるように、
     患者トップを開いた時は上の方に並んでいて欲しいのです。)目安ですが、診療記録を文字2〜3個分左へ短くし、
     裏書を文字13個分くらい左へ短くして、スペースを作り裏書を右上に持ってきて欲しいです。あるいは少しはみ出た分は
     右へスクロールすると見れるようにして頂いてもありがたいです。」
   ▸ 下に回っていた原因 = すぐ上の @media(max-width:980px)。板の幅が足りないのではなく、そこで
     .karte2col が flex-wrap:wrap になり、板(.kcol-ura)に flex-basis:100% が与えられていたので、
     **折り返しの決まり**で板が1段下へ落ちていた(iPad縦 820px はこの @media に入る。1024px は入らないので今も横並び)。
   ▸ 直し方(狭い画面=1180px以下・**板を見ているだけの時**だけ。PC(1512px)には1pxも当たらない):
     ・板がある間は縦に回さない(flex-wrap:nowrap)= 患者トップを開いた瞬間に板が右上に出る
     ・診療録の列を 32px(本文12.5px の約2〜3文字)だけ狭くしてスペースを作る。空いた分はそのまま板の幅になる
       (板の幅 --ura-w は main.tsx が「診療録の右端 〜 画面の右端」で測っているので、左が縮めば板が広がる)
     ・板は 300px より狭くしない(これより狭いと手術日・施術内容が読めなくなるため)
     ・それでも入りきらない時は縦に回さず横にはみ出す。右へスクロールすれば見られる(先生が明示的に許した形)
   ⚠️ 診療録の箱(＋診療録を書く / ✏️訂正)を**開いている間は当てない**(:not(:has(…)))。書いている最中まで
      2列に詰めると入力欄が狭くなるため、その時は今までどおり @media(max-width:980px) の1段落ちに任せる
   ⚠️ 板の貼り付き(sticky)を残すため、入れ物には overflow を付けない(付けると sticky が効かなくなる) */
@media (max-width:1180px){
  .karte2col.has-ura:not(:has(.kcol-main .card.ked,.kcol-main .ent.editing)){flex-wrap:nowrap}
  .karte2col.has-ura:not(:has(.kcol-main .card.ked,.kcol-main .ent.editing)) .kcol-main{
    flex-basis:calc(var(--edmax,680px) - 32px);max-width:calc(var(--edmax,680px) - 32px)}
  .karte2col.has-ura:not(:has(.kcol-main .card.ked,.kcol-main .ent.editing)) .kcol-ura{
    flex:0 1 auto;width:var(--ura-w,480px);min-width:300px;margin:0 0 0 14px;
    position:sticky;top:var(--pstop,180px);max-height:calc(100vh - var(--pstop,180px) - 12px);overflow:auto}
  .karte2col.has-ura:not(:has(.kcol-main .card.ked,.kcol-main .ent.editing)) .kcol-side{flex:0 0 300px;margin-left:20px}
}
/* 🩸 2026-09-16 b492 先生の逐語「手術に先立って記録された採血問診票を、患者トップの裏書の右に出したいです。
   (ipadの場合は下でも？)(裏書の右に出す意図は、少なくとも手術終えるまでは常に見えやすい場所に掲載されて
    いてほしいためです。)」「『採血問診票のボタン』が押されて登録された画像は、患者トップの裏書の右に並ぶように」
   「『術前採血問診』のボタンが押された看護記録が保存されると、裏書の右においてほしいです。」
   ▸ .kcol-sk = 裏書きの板(.kcol-ura)とその取っ手(.kcol-ura-rs)のすぐ右に足す細い列。
     ・板(.kcol-ura)も左の中身(.kcol-main)も flex-shrink:0 なので、この列を足しても
       **今までの幅・左端は1pxも動かない**(b306/b321/b322/b370/b383 の実測値はそのまま)。
       既定では 🩺診療情報一覧は出ていない(b321)ので、右に空いている所へ入るだけ
     ・幅 = 記録用紙の小さな見た目(.skthumb = 780px × 0.2 = 156px)+ 左右の余白
     ・板と同じく画面に貼り付く(sticky)。縦に長ければこの列の中でスクロールする
   ▸ 狭い画面(1180px以下 = iPad。b383 と同じ物差し)では、main.tsx がこの列を描かず
     **板の中のいちばん下**に同じ欄を置く(先生の「ipadの場合は下でも？」)。板の中では横に2枚ずつ
     並べて縦を伸ばさない(先生の省スペースの好み)
   ▸ 手術日を過ぎたら畳む(main.tsx の skPast)。見出しの1行だけ残るので場所を取らず、押せば開く。
     記録なので消さない・薄くもしない。説明の帯は置かない(先生の好み) */
.kcol-sk{flex:0 0 auto;width:172px;margin-left:14px;min-width:0;position:sticky;top:var(--pstop,180px);
  max-height:calc(100vh - var(--pstop,180px) - 12px);overflow:auto}
.skcol{border:1px solid #f0c9c9;border-radius:10px;background:#fffafa;padding:5px 6px 6px}
.skcol>.skcol-h{display:block;cursor:pointer;font-size:11.5px;font-weight:700;color:#a3474b;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none}
.skcol:not(.open){padding-bottom:5px}
.skcol-in{display:flex;flex-direction:column;gap:7px;margin-top:6px}
.skcard{display:block;width:156px;cursor:pointer;text-decoration:none}
.skcard>img{display:block;width:156px;max-height:210px;object-fit:cover;object-position:top;
  border:1px solid #cfd8e0;border-radius:4px;background:#fff;box-shadow:0 2px 6px rgba(20,35,55,.18)}
.skcard:hover>img{border-color:#1e6fe0;box-shadow:0 4px 12px rgba(30,111,224,.3)}
.skcard>small{display:block;font-size:10.5px;color:#5c6b7a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.skcard.skrec{width:auto}
/* 板の中の下に回った時(狭い画面): 横に並べて縦を伸ばさない */
.kcol-ura .skcol{margin-top:10px}
.kcol-ura .skcol-in{flex-direction:row;flex-wrap:wrap}
.entgrid .body{flex:1;min-width:300px}
.freewrap{white-space:pre-wrap}
.entord{width:280px;border:1px solid #dbe3ea;border-radius:8px;padding:8px 12px;background:#fafcff}
.entord h5{font-size:11.5px;color:#8794a1;margin-bottom:5px}
.eorow{display:flex;justify-content:space-between;gap:8px;font-size:12px;border-bottom:1px dashed #eef2f6;padding:3px 0}
/* ---- スタンプ編集モーダル ---- */
.stset{display:flex;gap:16px;align-items:flex-start}
.stsl{width:250px;flex-shrink:0;display:flex;flex-direction:column;gap:3px;max-height:420px;overflow-y:auto}
.stsl a{border:1px solid #dbe3ea;border-radius:6px;padding:5px 10px;font-size:12px;cursor:pointer;color:#25313c}
.stsl a.on{border-color:#1e6fe0;background:#f0f6ff;font-weight:700}
.stse{flex:1}
.stse textarea{width:100%;margin-top:8px}
/* ---- 見積書フォーム(旧・簡素な窓)の飾りは batch111 で廃止 ---- */
/* ---- カルテ記載: 自動保存・写真挿入・中止(メディベース式) ---- */
.edhint{font-weight:400;color:#8794a1;font-size:11.5px;margin-left:6px}
/* 📝 書きかけの控えを出したときの帯(2026-08-16 batch99) */
.wipbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 10px;padding:7px 12px;
  border:1px solid #f0d48a;background:#fdf6e0;border-radius:8px;color:#7a5c12;font-size:12.5px}
.wipbar button{font-size:11.5px;padding:4px 10px;border:1px solid #d8c48a;background:#fff;border-radius:6px;cursor:pointer;color:#7a5c12}
.wipbar button:hover{background:#f6ecd2}
.wipdot{margin-left:5px;font-size:11px}
.kbtn.haswip{box-shadow:0 0 0 2px #f0d48a inset}
.edtools{display:flex;align-items:center;gap:8px;margin:6px 0}
.edtools small{color:#8794a1;font-size:11px}
.edimgs{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 8px}
.edimg{position:relative;width:96px;height:96px;border:1px solid #dbe3ea;border-radius:8px;overflow:hidden;background:#f4f7fa}
.edimg img{width:100%;height:100%;object-fit:cover}
.edimg a{position:absolute;top:2px;right:2px;width:20px;height:20px;line-height:18px;text-align:center;border-radius:50%;background:rgba(20,28,36,.72);color:#fff;font-size:12px;cursor:pointer}
.savestat{font-size:12px;color:#8794a1;align-self:center}
.savestat.saving{color:#1e6fe0}
.savestat.saved{color:#3f9d4e}
.savestat.dirty{color:#c9902a}
.savestat.error{color:#b03a2e}
.toast{font-size:12.5px;color:#fff;background:#3f9d4e;border-radius:6px;padding:3px 10px;align-self:center;animation:toastin .18s ease}
@keyframes toastin{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
.entimgs{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.entimg{width:120px;height:120px;object-fit:cover;border:1px solid #dbe3ea;border-radius:8px;cursor:pointer;background:#f4f7fa}
.entimg:hover{border-color:#1e6fe0}
.entacts{flex-wrap:wrap;gap:8px}
.entacts .danger{border-color:#e3b7b0;color:#b03a2e;background:#fff}
.entacts .danger:hover{background:#fdeeec}
/* ---- 画像: 前後比較 ---- */
.cmphelp{font-weight:400;color:#8794a1;font-size:11.5px;margin-left:8px}
.cmpbar{background:#eef6ff;border:1px solid #bcd8f6;color:#1f5fa8;border-radius:8px;padding:8px 12px;margin:6px 0 10px;font-size:13px}
.cmpbar a{color:#b03a2e;cursor:pointer;margin-left:10px;text-decoration:underline}
.imgcard.cmpon{outline:2px solid #1e6fe0;outline-offset:2px}
/* ---- 🖼 複数名称変更(2026-08-16 batch108 院長要望A。iPhoneの写真アプリの選択と同じ見た目) ---- */
.mrenbtn.on{background:#1e6fe0;color:#fff;border-color:#1e6fe0}
/* 🖨 画像の印刷(batch169)も、選ぶ状態に入っている間は同じ青で光らせる(どちらの選ぶ状態か一目で分かる) */
.iprnbtn.on{background:#1e6fe0;color:#fff;border-color:#1e6fe0}
.mrenbar{background:#f2f7ff;border-color:#bcd8f6}
.imgcard.selmode{position:relative;cursor:pointer}
/* カード(タイトルの部分まで)全体を覆う。押すと選ぶ/外す。選ぶまでは覆いは透明 */
.selmask{position:absolute;inset:0;z-index:3;border-radius:8px;background:transparent;cursor:pointer}
.imgcard.selon .selmask{background:rgba(255,255,255,.55)}
.imgcard.selon{outline:2px solid #1e6fe0;outline-offset:2px}
/* 右下の丸。選ぶ前は白フチの空の丸、選ぶと青丸+白いチェック */
.selchk{position:absolute;right:8px;bottom:8px;width:24px;height:24px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;
  background:rgba(255,255,255,.72);color:transparent;border:1.5px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.35)}
.imgcard.selon .selchk{background:#1e6fe0;color:#fff;border-color:#fff}
/* 新しい名前を入れる窓 */
.mren-wrap{background:#fff;width:min(560px,94vw);max-height:min(720px,90vh);margin:auto;border-radius:12px;display:flex;flex-direction:column;overflow:hidden}
.mren-head{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid #e6ecf2;background:#f7f9fc}
.mren-head>.mclose{color:#42566b;cursor:pointer;font-size:13px;white-space:nowrap}
.mren-head>.mclose:hover{color:#b03a2e}
.mren-head>b{font-size:14.5px}
.mren-body{padding:12px 14px;overflow:auto}
.mren-f{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:700;color:#42566b}
.mren-f input{padding:7px 10px;border:1px solid #cfd9e3;border-radius:6px;font-size:14px}
.mren-modes{display:flex;flex-direction:column;gap:4px;margin:10px 0 4px}
.mren-modes label{display:flex;align-items:center;gap:6px;font-size:13px;color:#243447;cursor:pointer}
.mren-modes small{color:#8794a1;font-size:11.5px}
.mren-warn{background:#fff6e6;border:1px solid #f0d6a0;color:#8a5c00;border-radius:6px;padding:6px 10px;font-size:12.5px;margin:6px 0}
.mren-prev{margin-top:8px;border:1px solid #e6ecf2;border-radius:8px;overflow:hidden}
.mren-prevh{background:#f7f9fc;padding:5px 10px;font-size:12px;font-weight:700;color:#42566b;border-bottom:1px solid #e6ecf2}
.mren-prev ul{list-style:none;margin:0;padding:4px 10px;max-height:220px;overflow:auto}
.mren-prev li{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:2px 0}
.mren-prev .o{color:#8794a1;min-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mren-prev .ar{color:#b6c1cc}
.mren-prev .n{color:#1f5fa8;font-weight:700}
.mren-foot{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid #e6ecf2;background:#f7f9fc}
.cmpchk{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;color:#42566b;cursor:pointer;user-select:none}
.cmpchk input{cursor:pointer}
.imgmeta{display:flex;align-items:center;gap:8px;justify-content:space-between}
/* 比較ウィンドウ */
/* 画像プレビュー(.pv-bg)と同じ寄せ方に揃えた(2026-08-16 batch108)。上下中央+細い余白で必ず画面内 */
.cmp-bg{align-items:center;justify-content:center;padding:16px}
/* 窓は必ず画面内に収める(2026-08-16 batch108 院長要望B。大きすぎたので画像プレビューと同じ min() の流儀に) */
.cmp-wrap{background:#0f1720;color:#e8eef4;width:min(1180px,94vw);height:min(840px,90vh);height:min(840px,90dvh);margin:auto;border-radius:12px;display:flex;flex-direction:column;overflow:hidden}
.cmp-head{display:flex;align-items:center;gap:14px;padding:10px 16px;background:#16212c;border-bottom:1px solid #26313d}
.cmp-head>b{font-size:15px}
.cmp-tabs{display:flex;gap:4px}
.cmp-tabs a{padding:5px 12px;border-radius:6px;font-size:13px;cursor:pointer;color:#aeb9c4}
.cmp-tabs a.on{background:#1e6fe0;color:#fff}
.cmp-actions{margin-left:auto;display:flex;align-items:center;gap:10px}
.cmp-actions button{background:#26313d;color:#e8eef4;border:1px solid #37444f;border-radius:6px;padding:6px 12px;font-size:13px;cursor:pointer}
.cmp-actions button:hover{background:#324150}
/* ⭐ ✕閉じるはヘッダの左端(先生の恒久的な好み。2026-08-16 batch108) */
.cmp-head>.mclose{color:#cdd6df;cursor:pointer;font-size:13px;white-space:nowrap}
.cmp-head>.mclose:hover{color:#fff}
.cmp-side{flex:1;display:flex;gap:2px;min-height:0;background:#000}
.cmp-col{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}
.cmp-tag{padding:6px 12px;font-size:13px;font-weight:700;background:#16212c;display:flex;align-items:center;gap:8px}
.cmp-tag small{font-weight:400;color:#aeb9c4}
.cmp-tag.before{color:#7fc0ff}
.cmp-tag.after{color:#88e0a5}
/* 🔍 拡大縮小できる画像。⭐ 2026-08-28 batch215 ③ 先生の逐語「＋ − リセットが書類とかぶり
   書類の一部が見えにくく…画像外に出ているように」→ 操作の帯(.zpctl)を**画像の下**へ出した。
   .zpwrap = 画像の面(.zpimg)＋操作の帯 の縦2段。外から見た大きさ・使う所は今までどおり */
.zpwrap{flex:1;position:relative;display:flex;flex-direction:column;overflow:hidden;background:#000;min-height:0}
.zpimg{flex:1;position:relative;overflow:hidden;background:#000;cursor:grab;min-height:0}
.zpimg:active{cursor:grabbing}
.zpwrap img{position:absolute;top:50%;left:50%;max-width:100%;max-height:100%;transform-origin:center;translate:-50% -50%;user-select:none}
.zpctl{flex:none;height:36px;display:flex;align-items:center;justify-content:flex-end;gap:6px;background:#151d26;border-top:1px solid #2b3742;padding:0 8px}
.zpctl button{min-width:30px;height:28px;padding:0 9px;border:1px solid #37444f;background:#26313d;color:#fff;border-radius:6px;cursor:pointer;font-size:13px;white-space:nowrap}
.zpctl .zpx{font-size:12px;color:#aeb9c4;min-width:42px;text-align:right}
/* 重ねて比較 */
.cmp-overlay{flex:1;display:flex;flex-direction:column;min-height:0;background:#000;padding:8px}
.cmp-ovtags{display:flex;justify-content:space-between;padding:2px 4px 8px}
.cmp-ovtags .cmp-tag{background:transparent;padding:0}
.ov-wrap{flex:1;position:relative;overflow:hidden;min-height:0}
.ov-img{position:absolute;top:50%;left:50%;translate:-50% -50%;max-width:100%;max-height:100%;user-select:none}
.ov-divider{position:absolute;top:0;bottom:0;width:2px;background:#fff;transform:translateX(-1px);pointer-events:none;box-shadow:0 0 0 1px rgba(0,0,0,.4)}
.ov-divider span{position:absolute;top:50%;left:50%;translate:-50% -50%;width:34px;height:34px;border-radius:50%;background:#fff;color:#1f5fa8;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;box-shadow:0 1px 6px rgba(0,0,0,.4)}
.ov-range{position:absolute;left:0;right:0;bottom:12px;width:60%;margin:0 auto;display:block;cursor:ew-resize}
.cmp-hint{color:#aeb9c4;text-align:center;padding:6px}
/* ---- カルテ記載: 自動で縦に伸びる記録欄・カーソル挿入写真 ---- */
.editor textarea{font-size:12.5px;line-height:20.5px}
.editor textarea.grow{field-sizing:content;min-height:15em;overflow:hidden;resize:none;font-size:12.5px;line-height:20.5px}
.edimgs{gap:10px}
.edimg{width:auto;max-width:240px;height:auto;background:#f4f7fa;border:1px solid #dbe3ea;border-radius:8px;padding:2px}
.edimg img{width:auto;max-width:236px;max-height:200px;height:auto;object-fit:contain;display:block}
/* 本文インラインの写真(大きめ・切れない) */
.inimg{display:block;max-width:min(420px,100%);max-height:340px;height:auto;object-fit:contain;border:1px solid #dbe3ea;border-radius:8px;margin:8px 0;cursor:pointer;background:#f4f7fa}
.inimg:hover{border-color:#1e6fe0}
.freewrap{white-space:pre-wrap}
.freewrap span{white-space:pre-wrap}
/* ---- カルテ種別ごとの色枠(メディベース風) ---- */
.ent.k-karte{border:2px solid #8bc34a}
.ent.k-karte .enthead{background:#f1f8e4;border-radius:8px 8px 0 0;margin:-14px -16px 10px;padding:10px 16px}
.ent.k-kakutei{border:2px solid #ecd873;background:#fffdf1}
.ent.k-kakutei .enthead{background:#fdf7d9;border-radius:8px 8px 0 0;margin:-14px -16px 10px;padding:10px 16px}
.ent.k-op{border:2px solid #d7b9e0}
.kbtn.k-karte{background:#6fae2f}
.kbtn.k-karte:hover{background:#639c29}
.kbtn.k-kakutei{background:#caa62e}
.kbtn.k-kakutei:hover{background:#b8962a}
/* ---- 中止確認ウィンドウ(中央より少し左) ---- */
.cancel-bg{background:rgba(20,28,36,.28)}
.cancel-box{position:absolute;left:42%;top:46%;transform:translate(-50%,-50%);background:#fff;border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.28);padding:20px 24px;width:340px;max-width:90vw}
.cancel-box p{font-size:15px;font-weight:700;margin:0 0 6px}
.cancel-box small{color:#6b7680;display:block;margin-bottom:16px}
.cancel-btns{display:flex;justify-content:flex-end;gap:10px}
.cancel-btns button{padding:8px 18px;border-radius:8px;border:1px solid #c8d3de;background:#fff;cursor:pointer;font-size:14px}
.cancel-btns .pri.danger{background:#d84334;border-color:#d84334;color:#fff}
.cancel-btns .pri.danger:hover{background:#c33a2c}
/* ---- 和暦表示 ---- */
.wareki{color:#42566b;font-size:13px;margin:0 8px;white-space:nowrap}

/* 見積書管理ページ */
.qadmin{max-width:1100px;margin:0 auto}
.qa-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.qa-head input{flex:1;max-width:360px}
.qa-count{color:#5c6b7a;font-size:12px}
.qatable{width:100%;border-collapse:collapse;font-size:13px;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.qatable th,.qatable td{padding:8px 10px;text-align:left;border-bottom:1px solid #eef1f4}
.qa-th th{background:#f4f7fa;color:#5c6b7a;font-size:11.5px}
.qa-row{cursor:pointer}
.qa-row:hover{background:#f0f6ff}
.qa-no{font-family:monospace;color:#3366cc}
.qa-total{text-align:right;font-weight:700;white-space:nowrap}
.qatable td small{color:#8a97a3;margin-left:6px}
/* 💛 見積ひな型ゾーン(2026-08-16 batch112)。上段に金色で固定表示する表示専用の行 */
.qa-tc{width:30px;text-align:center;padding-right:0}
.qa-tplck{cursor:pointer;accent-color:#c99b1e}
.qa-tplcap td{background:#fbf3d8;color:#8a6a12;font-size:11.5px;font-weight:700;border-bottom:1px solid #ecdaa4}
.qa-row.qa-tpl td{background:#fdf8e6;border-bottom:1px solid #f0e3ba}
.qa-row.qa-tpl:hover td{background:#fbf0cf}
.qa-row.qa-tpl .qa-no{color:#8a6a12}

/* A4見積書プレビュー(freee体裁) */
.qpv-wrap{background:#fff;width:1024px;max-width:97vw;max-height:94vh;overflow:auto;border-radius:8px}
/* 見積書の編集ウインドウは右寄せ(右端との距離を従来=中央置きの半分に・2026-08-10 院長要望) */
.modal-bg.qpv-right{justify-content:flex-end}
.modal-bg.qpv-right .qpv-wrap{margin-right:max(0px,calc((100vw - 1024px)/4 - 16px))}
/* ═══ 📐 2026-09-23 b568 診療録を書いている途中の見積書の窓は画面の右端にくっつける ═══
   先生の逐語:「**診療録を書いている途中の見積書編集ウインドウの位置ですが、画面右端にくっつけて下さい。
     また、診療録が左三分の２だけ見えていたものは、同様に新しい位置で、左三分の2だけ見えるように
     お願いします。**」(b564 の続き)
   ・くっつけるのは **診療録を書いている途中に開いた窓だけ**(.qpv-edge)。
     「💴見積」タブから直す窓・見積書管理から開く窓は**今までどおり**(右端から103px)。
     先生の言葉が「診療録を書いている途中の…」なので、頼まれていない画面は1pxも動かさない
   ・覆いの右の余白 16px と、右寄せのための余白 103px の**両方**を 0 にして紙の右端を画面の右端に合わせる
     実測(1500px幅): 窓 左357〜右1381 → **左476〜右1500**(右端ぴったり・はみ出さない)
   ・角の丸み・幅(1024px)・中身は1つも変えていない */
.modal-bg.qpv-right.qpv-edge{padding-right:0}
.modal-bg.qpv-right.qpv-edge .qpv-wrap{margin-right:0}
.qpv-bar{position:sticky;top:0;background:#f4f7fa;padding:8px 12px;display:flex;gap:8px;align-items:center;border-bottom:1px solid #e5e5e5;z-index:2}
.qpv-hint{font-size:11px;color:#8a97a3}
.qpv-sheet{position:relative;padding:40px 44px;color:#222;font-size:12px}
/* 2枚目に増える境界の赤い細線(画面だけの目印。印刷には絶対に出さない) */
.qpv-pageline{position:absolute;left:0;right:0;height:0;border-top:1px solid rgba(220,50,50,.35);pointer-events:none;z-index:1}
body.pprint .qpv-pageline,body.pprint .qpv-pgbar,body.pprint .qpv-bikomirror{display:none !important}
.qpv-title{text-align:center;font-size:24px;letter-spacing:.35em;margin:0 0 24px;font-weight:400}
.qpv-top{display:flex;justify-content:space-between;align-items:flex-start}
.qpv-cust b{font-size:20px;border-bottom:1px solid #333;padding-bottom:4px;display:inline-block}
.qpv-meta td{padding:2px 8px;font-size:12px}.qpv-meta td:first-child{color:#555}
.qpv-issuer{display:flex;justify-content:flex-end;gap:14px;margin-top:20px}
.qpv-name{font-size:15px;font-weight:700;text-align:right}.qpv-name small{font-weight:400;font-size:11px;color:#444}
.qpv-addr{font-size:10px;color:#333;line-height:1.55}
.qpv-lead{margin:18px 0 8px}
.qpv-subj,.qpv-amt{display:flex;gap:16px;align-items:baseline;margin:2px 0}
.qpv-subj span:first-child,.qpv-amt span:first-child{color:#555;width:72px}
.qpv-amt b{font-size:22px;border-bottom:2px solid #333;padding:0 8px}
.qpv-tbl{width:100%;border-collapse:collapse;margin-top:16px;font-size:11.5px}
.qpv-tbl th,.qpv-tbl td{border:1px solid #bbb;padding:5px 8px}
.qpv-h th{background:#222;color:#fff;font-weight:600}
.qpv-h th:nth-child(2){width:56px}.qpv-h th:nth-child(3),.qpv-h th:nth-child(4){width:104px}
.qpv-sec td{background:#eaeaea;font-weight:600}
.qpv-tbl td.r{text-align:right}
.qpv-blank td{height:22px}
.qpv-sum{display:flex;justify-content:flex-end;margin-top:14px}
.qpv-sum table{border-collapse:collapse;min-width:300px}
.qpv-sum td{border:1px solid #bbb;padding:5px 12px}
.qpv-sum td.r{text-align:right;min-width:130px}
.qpv-tt td{font-weight:700;border-top:2px solid #333}
.qpv-biko{border:1px solid #bbb;margin-top:18px;padding:8px 12px}
.qpv-bkh{color:#555;font-size:11px;margin-bottom:4px}
.qpv-biko pre{font-family:inherit;white-space:pre-wrap;font-size:11px;line-height:1.65;margin:0}
.qpv-in{border:none;border-bottom:1px dashed #cfd8e0;background:#fbfdff;font:inherit;color:inherit;width:100%;padding:2px 3px;box-sizing:border-box;border-radius:2px}
.qpv-in:focus{outline:none;border-bottom:1px solid #4a90d9;background:#f0f7ff}
.qpv-in.r{text-align:right}
.qpv-in.qpv-qty{width:52px}
.qpv-subj .qpv-in{max-width:360px}
.qpv-x{width:22px;text-align:center}
.qpv-x a{color:#c05;cursor:pointer;font-size:12px}
.qpv-add{display:inline-block;margin-top:8px;color:#4a90d9;cursor:pointer;font-size:12px}
.qpv-ok{font-size:11px;color:#1a8a4a;font-weight:600}
.qpv-bikoin{width:100%;min-height:180px;border:none;background:#fbfdff;font-family:inherit;white-space:pre-wrap;font-size:11px;line-height:1.65;color:inherit;padding:2px;box-sizing:border-box;resize:none;overflow-y:hidden}
.qpv-bikoin:focus{outline:none;background:#f0f7ff}
/* 🐽 備考のBOX1〜3の長方形(2026-08-12 batch67・院長指示)。
   備考の本文と同じ字組みの「透明ななぞり書き」を上に重ねて、BOXの所だけ枠線を描く。
   position:absolute なので高さを1pxも取らない = 印刷・確定見積書の窓・2枚目の境界の赤線に影響しない。 */
.qpv-bikowrap{position:relative}
.qpv-bikomirror{position:absolute;left:0;top:0;right:0;pointer-events:none;z-index:2;color:transparent;
  font-family:inherit;white-space:pre-wrap;overflow-wrap:break-word;word-break:break-word;
  font-size:11px;line-height:1.65;padding:2px;box-sizing:border-box}
.qpv-bikomirror>div{white-space:pre-wrap}
.qpv-bikobox{outline:1px solid #7aa7d9;outline-offset:-1px;border-radius:3px;background:rgba(122,167,217,.06)}
@media print {
  body * { visibility: hidden; }
  .qpv-sheet, .qpv-sheet * { visibility: visible; }
  .qpv-sheet { position: absolute; left: 0; top: 0; width: 100%; padding: 12mm; }
  .qpv-bar, .qpv-x, .qpv-add, .qpv-tpl, .qpv-body2 .tplbox, .qpv-body2 .qpv-side, .qtplbox, .qpv-floatbar, .qpv-pgbar, .qpv-pageline, .qpv-bikomirror { display: none; }
  .qpv-in, .qpv-bikoin { border: none; background: transparent; }
  .qpv-body2 { display: block; }
}


/* 見積タグ(ピル) */
.mkchips{display:flex;align-items:center;gap:5px;flex-wrap:nowrap;white-space:nowrap;margin:0 0 7px;overflow:hidden}
.mkchips-lbl{font-size:10px;color:#8a97a3;flex:none}
.mkpill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;cursor:pointer;border:1px solid #cfcfcf;line-height:1.55;user-select:none;font-weight:600;color:#444;flex:none}
.mkpill:hover{filter:brightness(0.96)}
.mk-op{background:#fde2e2;border-color:#f0b6b6}
.mk-biko{background:#fdf3cf;border-color:#ead489}
/* 🏷 2026-08-22 batch174: 診療録の見積タグは1つのボタンにまとめた(🔴🟡🟢が一度に入る)。
   3色を1つに畳んだので、色も3色をなぞった細い帯にする */
.mk-set{background:linear-gradient(90deg,#fde2e2 0 34%,#fdf3cf 34% 67%,#e8f6ea 67% 100%);border-color:#dcc9ae}
.mk-ref{background:#dcf2de;border-color:#a6d9ad}
.mk-memo{background:#f4eec0;border-color:#ded08a}

/* 備考テンプレボックス */
.tplbox{background:#fafcfe}
.qpv-body2{display:flex;align-items:flex-start;gap:0}
.qpv-body2 .qpv-sheet{flex:1;min-width:0}
/* 2026-08-16 batch112: 説明文をやめた分ゾーンの縦幅を詰める(次のバッチの見積ひな型ゾーンの場所も作る) */
.qpv-body2 .tplbox{flex:0 0 186px;width:186px;border-left:1px solid #e8edf1;padding:10px 12px;position:sticky;top:46px;align-self:flex-start;max-height:calc(94vh - 58px);overflow:auto}
/* 2026-08-16 batch113: 右列を「💛見積ひな型 → 📋備考テンプレ」の縦2段にまとめる。
   外枠(幅・貼り付き・スクロール)は .qpv-side が持ち、中の .tplbox は素の箱に戻す */
.qpv-body2 .qpv-side{flex:0 0 186px;width:186px;border-left:1px solid #e8edf1;position:sticky;top:46px;align-self:flex-start;max-height:calc(94vh - 58px);overflow:auto}
.qpv-body2 .qpv-side .tplbox{flex:none;width:auto;border-left:none;position:static;max-height:none;overflow:visible}
.qtplbox{background:#fffdf3;border-bottom:1px solid #eee2bd;padding:10px 12px}
.qtplbox-h{font-size:12px;font-weight:700;color:#8a6d1f;margin-bottom:5px}
.qtplbox-list{display:flex;flex-direction:column;gap:4px}
.qtplbtn{display:block;width:100%;text-align:left;padding:4px 8px;border:1px solid #e3d49a;background:#fffbea;border-radius:6px;cursor:pointer;color:#4a3c12;font-family:inherit}
.qtplbtn:hover{background:#fdf3cf;border-color:#d7bf6a}
.qtplbtn b{display:block;font-size:12px;font-weight:600;line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtplbtn span{display:block;font-size:11.5px;font-weight:700;color:#8a6d1f}
.qpv-prev{color:#8a6d1f;font-weight:700}
.tplbox-h{font-size:12px;font-weight:700;color:#3d5566;margin-bottom:5px}
.tplbox-list{display:flex;flex-direction:column;gap:3px}
.tplbtn{text-align:left;padding:3px 8px;border:1px solid #d5dee6;background:#fff;border-radius:6px;font-size:12px;cursor:pointer;color:#334;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tplbtn:hover{background:#eef5fb;border-color:#9cc4e6}
.impbar{display:flex;gap:6px;margin:8px 0 2px}


/* 診療記録内の色付きピル(背景ハイライト層) */
.ta-hl{position:relative}
.ta-back.grow{position:absolute;inset:0;width:100%;min-height:15em;padding:8px 10px;border:1px solid transparent;border-radius:8px;font-size:12.5px;line-height:20.5px;font-family:inherit;white-space:pre-wrap;word-break:break-word;overflow:hidden;color:transparent;background:transparent;pointer-events:none;z-index:0;box-sizing:border-box}
.editor textarea.grow.ta-fore{position:relative;background:transparent;z-index:1}
.pill-in{border-radius:5px;color:inherit}
.ta-back .pill-in.mk-op{background:#fbdadf;box-shadow:0 0 0 2px #fbdadf}
.ta-back .pill-in.mk-biko{background:#fbeec2;box-shadow:0 0 0 2px #fbeec2}
.ta-back .pill-in.mk-ref{background:#d4eed7;box-shadow:0 0 0 2px #d4eed7}
.ta-back .pill-in.mk-memo{background:#efe7b6;box-shadow:0 0 0 2px #efe7b6}

/* テンプレ編集・プレビュー */
.tplbox-h .tpledit{margin-left:8px;font-size:11px;color:#4a90d9;cursor:pointer;font-weight:400}
.tplbox-h .tpledit:hover{text-decoration:underline}
.tplbtn b{display:block;font-weight:600;line-height:1.5}
.tpledit-row{border:1px solid #e2e8ef;border-radius:6px;padding:7px;margin-bottom:7px}
.tpledit-top{display:flex;gap:6px;align-items:center;margin-bottom:5px}
.tpledit-label{flex:1;font-weight:600}
.tpledit-del{color:#c05;cursor:pointer;padding:0 6px;font-size:13px}

/* 📝 予約の窓のメモ欄(左5分の2)と、定型文の候補(右5分の3) — 2026-08-16 batch107 院長要望
   flex:2 と flex:3 で 2:3 = 5分の2 : 5分の3 に分けている */
.apptmemo{display:flex;gap:10px;flex:1;min-width:0;align-items:stretch}
.apptmemo-ta{flex:2 1 0;min-width:0;resize:vertical}
.amtpl{flex:3 1 0;min-width:0;display:flex;flex-direction:column;background:#fafcfe;border:1px solid #e8edf1;border-radius:8px;padding:8px 10px}
.amtpl-h{font-size:12px;font-weight:700;color:#3d5566;margin-bottom:6px}
.amtpl-h .amtpl-edit{margin-left:8px;font-size:11px;color:#4a90d9;cursor:pointer;font-weight:400}
.amtpl-h .amtpl-edit:hover{text-decoration:underline}
.amtpl-h small{display:block;font-weight:400;color:#93a2ae;font-size:10px;margin-top:2px}
.amtpl-list{display:flex;flex-wrap:wrap;align-content:flex-start;gap:6px;overflow-y:auto;flex:1;min-height:0}
.amtpl-btn{text-align:left;padding:6px 9px;border:1px solid #d5dee6;background:#fff;border-radius:6px;font-size:12px;cursor:pointer;color:#334;max-width:100%;overflow:hidden}
.amtpl-btn:hover{background:#eef5fb;border-color:#9cc4e6}
.amtpl-btn b{display:block;font-weight:600;white-space:nowrap}
.amtpl-btn .amtpl-prev{display:block;font-size:10px;color:#9aa7b2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:1px;max-width:190px}
/* ══ 🗓 b433(2026-09-11 先生の逐語「新しく予約枠を作る時のウインドウですが、縦に短くして欲しいです。」)
   予約枠の窓(.modal.apptwin=新規・更新・複製)だけの決まり。診療メモの窓(.smemo-row)の定型文には効かせない。
   ・左=予約枠(列)〜受付状態を上に詰める / 右上=予約日のミニカレンダー(大きさは今のまま)
   ・左の4行は折り返さない(行を増やさない)。+0.5H〜+2.0H は今の大きさのまま4つともカレンダーより左に収まる(実測)
   ・メモ欄は縦に短く(150px)。定型文の枠はメモ欄と同じ高さに収め、窓を縦に伸ばさない(contain:size)
   ・定型文ボタンは1段に3個。増えたらボタンの横幅を縮めて段に収める(列の数は画面の ApptMemoTemplates が決める) */
.modal.apptwin .apptgrid{display:flex;align-items:flex-start;gap:14px;border-bottom:1px solid #eef2f6}
.modal.apptwin .apptgrid-l{flex:1 1 auto;min-width:0}
.modal.apptwin .apptgrid-l .frow{flex-wrap:nowrap}
.modal.apptwin .apptgrid-l .frow:last-child{border-bottom:none}
/* 「予約日」の字は理想図どおりカレンダーの上端(月の見出しの行)にそろえる。縦の真ん中にしない
   b434(2026-09-12 先生の逐語「「予約日」三個分、ミニカレンダーを左へ詰めて欲しいです。」):
   右端から「予約日」の字3つ分(11.5px×3字×3個)だけ左へ寄せる */
.modal.apptwin .apptgrid-r{flex:none;margin-left:auto;margin-right:calc(11.5px * 9);border-bottom:none;flex-wrap:nowrap;align-items:flex-start}
/* b434(先生の逐語「「分」の字が「+0.5H」に隠れて見えません。→直してください。」「0.5H、1.0Hあたりを2行にして欲しいです。
   2行目は1.5Hと2.0Hでお願いします。」): 時・分の選択は縮ませない(縮んで「分」が次のボタンの下に潜っていた)。
   +0.5H〜+2.0H は2個ずつ2段。行が高くなりすぎないようボタンの上下の余白だけ詰める */
/*   ⚠️ 真因: .frow>span{width:104px}(ラベル用)が .tsel と .qbtns の span にも当たり、時・分の枠が104pxに縮んで
     「分」がはみ出してボタンの下に潜っていた。予約枠の窓ではこの2つの幅を中身なりに戻す */
.modal.apptwin .apptgrid-l .frow>.tsel{width:auto;flex-shrink:0;white-space:nowrap}
.modal.apptwin .apptgrid-l .frow>.qbtns{width:auto;display:grid;grid-template-columns:auto auto;gap:3px 4px;flex-shrink:0}
.modal.apptwin .apptgrid-l .qbtns .mini{padding:1px 8px;line-height:1.25}
.modal.apptwin .apptgrid-r>span{width:auto;padding-top:9px}
.modal.apptwin .apptmemo-ta{height:150px}
.modal.apptwin .amtpl{contain:size;padding:6px 8px}
.modal.apptwin .amtpl-h{line-height:15px;margin-bottom:3px}
.modal.apptwin .amtpl-h small{line-height:12px;margin-top:0}
.modal.apptwin .amtpl-list{display:grid;gap:4px;align-content:start;grid-auto-rows:max-content}
.modal.apptwin .amtpl-btn{min-width:0;width:100%;padding:2px 6px;touch-action:none;user-select:none;-webkit-user-select:none}
.modal.apptwin .amtpl-btn b{overflow:hidden;text-overflow:ellipsis;line-height:14px}
.modal.apptwin .amtpl-btn .amtpl-prev{max-width:none;line-height:12px;margin-top:0}
.modal.apptwin .amtpl-btn.amdrag{opacity:.45}
.modal.apptwin .amtpl-btn.amover{border-color:#1e6fe0;box-shadow:inset 3px 0 0 #1e6fe0}

/* 見積 摘要オートコンプリート */
.qpv-acell{position:relative}
.qpv-ac{position:absolute;left:0;top:100%;z-index:8;background:#fff;border:1px solid #cfd8e0;border-radius:6px;box-shadow:0 6px 18px rgba(0,0,0,.14);min-width:260px;max-height:230px;overflow:auto;margin-top:2px}
.qpv-acitem{display:flex;justify-content:space-between;gap:14px;padding:6px 11px;cursor:pointer;font-size:12px}
.qpv-acitem:hover{background:#eef5fb}
.qpv-acitem b{color:#c2410c;white-space:nowrap}
.mkpill{cursor:pointer}
.mkpill:active{cursor:grabbing}


/* 見積書 フローティング操作バー(最下・中央〜右寄り・スクロール追従) */
.qpv-floatbar{position:sticky;bottom:14px;z-index:9;display:flex;gap:10px;justify-content:center;margin:6px 0 12px;pointer-events:none}
.qpv-floatbar button{pointer-events:auto;box-shadow:0 4px 16px rgba(0,0,0,.22)}
/* 「印刷は1枚に収まります」の知らせは下のボタン列の真上に(書いている最中に気づけるように・2026-08-10) */
.qpv-pgbar{position:sticky;bottom:56px;z-index:9;display:flex;justify-content:center;pointer-events:none}
.qpv-pgbar .qpv-pg{pointer-events:auto;box-shadow:0 2px 10px rgba(0,0,0,.15)}

/* オフサイトbackup 最終実行バッジ
   🛡 2026-09-22 b559②: 置き場所が上の帯(.subbrand)から ⚙設定メニューのいちばん下へ移ったので、
   頭の「.subbrand 」だけ外した(色・大きさ・古くなったら赤の3行の中身は1文字も変えていない)。
   先生の逐語「(バックアップ)の表示は、設定ボタン内の最下部に表示されるようにして下さい。(今の「倉庫」の下)」 */
.bkbadge{margin-left:10px;padding:1px 8px;border-radius:10px;font-weight:600;font-size:11px;white-space:nowrap;display:inline-block}
.bkbadge.bkok{background:#e6f4ea;color:#1e7a34;border:1px solid #b6e0c2}
.bkbadge.bkng{background:#fdeaea;color:#b3261e;border:1px solid #f2b8b5}

/* 📝 改善ホワイトボード(全画面常駐・全PC共有) */
.kboard-chip{position:fixed;right:16px;bottom:16px;z-index:1000;background:#2b4a6f;color:#fff;border:none;border-radius:20px;padding:9px 16px;font-size:13px;font-weight:700;cursor:pointer;box-shadow:0 3px 10px rgba(0,0,0,.25)}
.kboard-chip i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#ffd34d;margin-left:6px}
/* 📱 2026-09-21 b544② 先生の逐語「右下の『改善ボード』の浮きボタンがピルにかぶる
     → **スマホでは改善ボード撤去**で大丈夫です。」
   右下に居座る浮きボタン(right:16px;bottom:16px)が、LINE の送信のボタンやオペ段取り表のピルに
   かぶって押せなくなる。**スマホ幅(520px以下)では出さない**。
   ・物差しは b542 と同じ 520px(main.tsx の PHONE_MQ / app.css の @media (max-width:520px))
   ・パソコン・iPad は1pxも変えない(この段の外は1文字も触っていない)
   ・消すのは**見た目だけ**。改善ボードそのもの(BoardWindow・開いた状態の .kboard・中身の同期)は
     残してあるので、道は塞がっていない(パソコンで開けば今までどおり) */
@media (max-width:520px){
  .kboard-chip{display:none}
}
.kboard{position:fixed;right:16px;bottom:16px;z-index:1000;width:448px;background:#fffdf3;border:1.5px solid #2b4a6f;border-radius:10px;box-shadow:0 6px 22px rgba(0,0,0,.28);display:flex;flex-direction:column}
.kboard-head{display:flex;align-items:center;gap:8px;padding:7px 10px;background:#2b4a6f;color:#fff;border-radius:8px 8px 0 0;cursor:move;user-select:none;touch-action:none;-webkit-user-select:none}
.kboard-head span{font-weight:700;font-size:13px}
.kboard-head small{opacity:.75;font-size:10px}
.kboard-head a{margin-left:auto;cursor:pointer;font-weight:700;padding:0 6px;font-size:15px}
.kboard textarea{border:none;outline:none;resize:none;min-height:80px;padding:10px;font-size:12.5px;line-height:1.7;background:repeating-linear-gradient(transparent,transparent 20px,#eee8d5 21px);font-family:inherit}
.kboard-foot{display:flex;align-items:center;gap:8px;padding:6px 8px;border-top:1px solid #e5dfcc}
.kboard-foot .meta{font-size:10px;color:#8a8570;flex:1}
.kboard-foot .msg{font-size:11px;color:#2c6e49;font-weight:700}
.kboard-foot button{background:#2c6e49;color:#fff;border:none;border-radius:7px;padding:6px 12px;font-size:12px;font-weight:700;cursor:pointer}

/* 現在時刻の赤線(メディベース風・1px) */
.cal-nowline{position:absolute;left:0;right:0;border-top:1px solid #e5484d;z-index:3;pointer-events:none}

/* ホワイトボードの端リサイズハンドル */
.kb-rs{position:absolute;z-index:5}
.kb-n{top:-3px;left:10px;right:10px;height:7px;cursor:ns-resize}
.kb-s{bottom:-3px;left:10px;right:10px;height:7px;cursor:ns-resize}
.kb-e{right:-3px;top:10px;bottom:10px;width:7px;cursor:ew-resize}
.kb-w{left:-3px;top:10px;bottom:10px;width:7px;cursor:ew-resize}
.kb-se{right:-4px;bottom:-4px;width:14px;height:14px;cursor:nwse-resize}

/* スマホ: ホワイトボードが画面から溢れないように(幅はJS側のインラインwidthをmax-widthで抑える) */
@media(max-width:820px){
  .kboard{max-width:calc(100vw - 12px)}
  .kboard-head{padding:10px}
  .kboard-head a{padding:0 10px;font-size:18px}
  .kb2col{flex-wrap:wrap}
  .kb-rs{display:none}
}

/* ---- ミニカレンダー（予約日選択）。mcal-*名前空間=営業日ボードの.cal-*とは絶対に衝突させない(2026-07-29事故対応) ---- */
.mcal{background:#fff;border:1px solid #cdd5dd;border-radius:6px;padding:6px;width:fit-content;box-shadow:0 1px 3px rgba(20,35,55,.08)}
.mcal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;gap:4px}
.mcal-nav{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;font-size:12px;cursor:pointer;border-radius:3px;color:#1e6fe0;font-weight:700;flex-shrink:0;line-height:1}
.mcal-nav:hover{background:#f0f5fa}
.mcal-month{font-weight:700;font-size:12px;color:#333;white-space:nowrap;min-width:90px;text-align:center}
.mcal-wdays{display:grid;grid-template-columns:repeat(7, 1fr);gap:1px;margin-bottom:4px;text-align:center}
.mcal-wd{font-weight:700;font-size:10.5px;padding:2px 0;color:#333;line-height:1.2}
.mcal-wd:nth-child(1),.mcal-wd:nth-child(7){color:#e5484d}
.mcal-grid{display:grid;grid-template-columns:repeat(7, 26px);gap:1px}
.mcal-day{width:26px;height:26px;display:flex;align-items:center;justify-content:center;font-size:11px;cursor:pointer;border-radius:50%;color:#333;user-select:none;line-height:1}
.mcal-day.mcal-off{cursor:default;visibility:hidden}
.mcal-day:hover:not(.mcal-off){background:#f0f5fa}
.mcal-day.selected{background:#1e6fe0;color:#fff;font-weight:700}

/* 🎤 音声入力バー(診療録を書く) */
.vbar{display:flex;align-items:center;gap:8px;margin:6px 0 2px;flex-wrap:wrap}
.vbar .mini.on{background:#d84334;color:#fff;border-color:#d84334;animation:vpulse 1.2s infinite}
.vbar .mini.rec{border-color:#8e5bbf;color:#6b3fa0}
.vbar .mini.rec.on{background:#8e5bbf;color:#fff}
.vbar .vmsg{color:#5c6b7a;font-size:11px}
@keyframes vpulse{50%{opacity:.65}}

/* 設定モーダルの並べ替えグリップ */
.setrow .grip{cursor:grab;user-select:none;color:#9aa4ad;font-size:15px;padding:0 2px;flex-shrink:0}
.setrow .grip:active{cursor:grabbing}
/* 💴 料金マスタの一覧(2026-08-16 batch96 院長要望)
   ・⠿を掴んで並べ替え(見積書の明細と同じ操作感)。掴んだまま端に寄せると自動でスクロール(main.tsx側)
   ・行と行の**すき間**(.pmgap)にマウスを置くと薄い青の線が出て、クリックでそこに空の行が入る。
     すき間は行の余白(10px)にぴったり重ねてあるので、入力窓のクリックを邪魔しない */
.pmlist{padding-top:10px}
.pmlist .setrow{position:relative;margin-bottom:10px}
.pmlist .pmgap{position:absolute;left:0;right:0;top:-10px;height:10px;display:block;cursor:copy;z-index:2}
.pmlist .pmgap i{position:absolute;left:0;right:0;top:50%;margin-top:-1px;height:2px;border-radius:2px;background:transparent}
.pmlist .pmgap:hover i{background:#bcd9f7}
.pmlist .pmgapend{position:relative;margin-top:-10px;top:0}
.pmlist .setrow.pmdrag{background:#fff;box-shadow:0 6px 16px rgba(20,35,55,.22);outline:1px solid #9cc4f0;border-radius:8px;z-index:3}
.pmlist .setrow.pmdrag .grip{cursor:grabbing;color:#1e6fe0}
/* 予約ボードの列名ヘッダー: 純正sticky固定(上部バーの直下・遅延ゼロ) */
.cal-colhead{position:sticky;top:var(--chtop,96px);z-index:25;background:#fff;box-shadow:0 2px 4px -3px rgba(20,35,55,.3)}

/* 患者ページ: ヘッダー+タブ行を上部固定 / 右パネル(見積・スタンプ)を画面右端に固定 */
.psticky{position:sticky;top:44px;z-index:35;background:#f7f7f8;padding-top:8px;margin-top:-8px;box-shadow:0 5px 10px -8px rgba(20,35,55,.28)}
/* 🔗 2026-09-13 b445: ひもづけ窓(.plink-win)を手前に出したい間だけ、患者ヘッダーの帯ごと 900 へ上げる。
   【なぜ帯ごとか】position:sticky は z-index の値によらず**必ず「重なりの入れ物」を作る**ので、
     中に置いた .plink-win の 1500 は外へ出られず、この帯の 35 のまま扱われる(=LINEの大窓に必ず潜る)。
     だから「窓だけ上げる」ことができず、帯ごと上げて、大窓を .lbw-under(800)で下へ回す。
   ・900/800 は層の表の「100〜999=あけておく」の余白。帯の天井 80 より上なので、
     黒いバー(.mnav=80)に潜って掴めなくなる b217/b249 の事故は起きない
   ・窓(1000番台以上)より下なので、裏書きの窓・ふつうの窓・見積書のプレビューは今までどおり帯の**上**に出る
   ・ひもづけ窓を閉じれば元(35/2000)に戻る */
.psticky.pst-front{z-index:900}
.ed2col .edside{position:sticky;top:var(--pstop,170px);align-self:flex-start;max-height:calc(100vh - var(--pstop,170px) - 12px);overflow:auto}

/* ── 2026-08-02 記録3色化・ボタン右上移動・書類/見積プレビュー・会計タブ ── */
.kbtn.k-op{background:#d55f92}
.kbtn.k-op:hover{background:#c25082}
.ent.k-op{border:2px solid #ecacc8;background:#fff8fb}
.ent.k-op .enthead{background:#fbe3ee;border-radius:8px 8px 0 0;margin:-14px -16px 10px;padding:10px 16px}
.card.ked{border-width:2px}
.card.ked.k-karte{border:2px solid #8bc34a;background:#f7fbee}
.card.ked.k-op{border:2px solid #ecacc8;background:#fdf3f8}
.card.ked.k-kakutei{border:2px solid #ecd873;background:#fffbea}
.enthead .entacts{margin-left:auto;display:inline-flex;gap:6px;flex-wrap:wrap;align-items:center}
.enthead .entacts button{padding:3px 10px;font-size:12px}
/* 右に出る大きなウインドウ: 黒いバー(.mnav 44px)の真下から画面下まで。上のバーを掴んで動かせる */
.fprev{position:fixed;top:44px;right:8px;height:calc(100vh - 52px);background:#fff;border:1px solid #b9c8d6;border-radius:0 0 10px 10px;box-shadow:-8px 10px 34px rgba(25,45,66,.28);z-index:1100;display:flex;flex-direction:column;overflow:hidden}
.fprev.half{width:calc(50vw - 16px)}
.fprev.big{width:calc(100vw * 4 / 7 - 16px)}   /* 画面の7分の4 */
/* 書類・見積のプレビューは上の65%の幅(ページ全体が見えにくくならないように) */
.fprev.prev65.half{width:calc((50vw - 16px) * .65)}
.fprev.prev65.big{width:calc((100vw * 4 / 7 - 16px) * .65)}
/* オペ枠ボードの窓: 幅指定が無いと窓がバーの文字幅なりに縮み、カレンダーの右端が切れる(2026-08-09 院長報告) */
.fprev.opewin{width:min(1200px, calc(100vw - 24px))}
.fprev-bar{display:flex;gap:10px;align-items:center;padding:8px 12px;border-bottom:1px solid #e3eaf1;background:#f7fafc;flex-wrap:wrap;font-size:13px;cursor:move;user-select:none;-webkit-user-select:none;touch-action:none}
.fprev-bar .wclose{cursor:pointer;color:#b03a2e;font-weight:700;white-space:nowrap;border:1px solid #e6c3bd;background:#fff5f3;border-radius:6px;padding:4px 10px;font-size:12.5px}
.fprev-bar .wclose:hover{background:#fbe6e2}
.fprev-bar .sp{cursor:pointer;color:#5c6b7a;white-space:nowrap}
.fprev-bar .wreset{margin-left:auto;font-size:12px}
.fprev iframe{flex:1;border:0;width:100%;background:#9aa4ad}
@media (max-width:900px){.fprev.half,.fprev.big,.fprev.opewin{width:calc(100vw - 16px)}}
/* 左に縦バーを置く形の窓(オペ枠ボード。上のバーを無くしてカレンダーの高さを稼ぐ 2026-08-09 院長要望) */
.fprev.vside{flex-direction:row}
.fprev.vside .fprev-bar{flex-direction:column;flex-wrap:nowrap;align-items:center;gap:10px;width:46px;flex:none;
  padding:10px 4px;border-bottom:0;border-right:1px solid #e3eaf1}
.fprev.vside .fprev-bar .wclose{font-size:19px;line-height:1;font-weight:900;width:34px;padding:5px 0;text-align:center;
  color:#d0342c;border:1.6px solid #e2a9a2;border-radius:8px;background:#fff5f3}
.fprev.vside .fprev-bar .opezoom{font-size:16px;font-weight:800;line-height:1;color:#4a5a6a;width:30px;padding:4px 0;
  text-align:center;border:1px solid #d8e2ec;border-radius:7px;background:#f7fafc}
.fprev.vside .fprev-bar .opezoom:hover{background:#e9f1f8}
.fprev.vside .fprev-bar .opezoom.z1{margin-top:auto}
.fprev.vside .fprev-bar .opegear{font-size:16px;color:#8a97a4}
.fprev.vside .fprev-bar .wreset{margin-left:0;margin-top:8px;font-size:15px}
.fprev.vside .fprev-bar .cfmsg{writing-mode:vertical-rl;font-size:11px}
/* ⚙ 表示範囲の微調整(窓の中に重ねて出す) */
.opeadj{position:absolute;left:10px;top:10px;z-index:5;width:290px;background:#fff;border:1px solid #b9c8d6;
  border-radius:10px;box-shadow:0 10px 30px rgba(25,45,66,.25);padding:12px 14px;font-size:12.5px}
.opeadj label{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:5px 0}
.opeadj input{width:96px;padding:3px 6px}
.opeadj .note{color:#5c6b7a;font-size:11.5px;line-height:1.6;margin:6px 0}
/* 会計: コラボ手術のとき、売上担当を2名チェックで選ぶ(2026-08-09 院長要望)
   見た目は今までの選択欄と同じ。押して初めて「2名選んでください」が出る(余計な説明は置かない) */
.kk-pick2wrap{position:relative}
.kk-pick2{cursor:pointer;display:inline-block;width:150px;box-sizing:border-box;border:1px solid #b7c3cf;
  background:#fff;color:#111;border-radius:6px;padding:4px 24px 4px 8px;font-size:13px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;background-image:linear-gradient(45deg,transparent 50%,#7a8794 50%),
  linear-gradient(135deg,#7a8794 50%,transparent 50%);background-position:calc(100% - 13px) 11px,calc(100% - 8px) 11px;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;min-height:26px}
.kk-pick2box{position:absolute;left:64px;top:32px;z-index:30;background:#fff;border:1px solid #b9c8d6;
  border-radius:8px;box-shadow:0 10px 30px rgba(25,45,66,.25);padding:6px 12px 8px;min-width:190px}
.kk-pick2hd{font-size:12.5px;color:#5c6b7a;padding:3px 0 5px;border-bottom:1px solid #eef3f7;margin-bottom:4px}
.kk-pick2row{display:flex;align-items:center;gap:7px;padding:4px 0;font-size:13px;cursor:pointer}
/* オペ枠ボード(外部システム)は枠の外側を隠して「カレンダー + 上の月バー」だけを見せる */
.opecrop{flex:1;position:relative;overflow:hidden;background:#fff}
.opecrop iframe{position:absolute;border:0;flex:none;background:#fff}
.opeadj{display:flex;gap:7px;align-items:center;padding:6px 12px;border-bottom:1px solid #e3eaf1;background:#fffdf0;font-size:12px;flex-wrap:wrap}
.opeadj input{width:62px;padding:3px 5px;border:1px solid #cfd8e0;border-radius:5px;font-size:12px}
.opeadj .note{font-size:11px;color:#7a8794}
.docrow.hovon{background:#eef5fc;border-radius:6px}
.kk-tblwrap{overflow-x:auto}
.kk-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.kk-tbl th,.kk-tbl td{border-bottom:1px solid #e3eaf1;padding:7px 8px;text-align:left;white-space:nowrap}
.kk-tbl th{background:#f4f7fa;color:#42566b;font-weight:600}
.kk-tbl td.r,.kk-tbl th.r{text-align:right}
.kk-tbl tbody tr{cursor:pointer}
.kk-tbl tbody tr:hover{background:#f2f7fc}
.kkst{padding:2px 8px;border-radius:10px;font-size:11px;background:#eef1f5;color:#5c6b7a;white-space:nowrap}
.kkst.ok{background:#e2f4e4;color:#1e7d31}
.kkst.warn{background:#fdeeda;color:#a4650f}
.kkst.part{background:#fdf3d8;color:#8a6d1a}
.kk-box{background:#fff;border-radius:12px;box-shadow:0 12px 40px rgba(20,40,60,.35);width:min(980px,94vw);max-height:92vh;overflow:auto;padding:16px 18px;display:flex;flex-direction:column;gap:10px}
.kk-head{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:13px}
.kk-head .sp{margin-left:auto;cursor:pointer;font-size:16px;color:#5c6b7a}
.kk-2col{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.kk-left{flex:3;min-width:320px}
.kk-right{flex:2;min-width:250px;background:#f7fafc;border:1px solid #e3eaf1;border-radius:10px;padding:10px 12px;font-size:13px}
.kk-lines{width:100%;border-collapse:collapse;font-size:12.5px}
.kk-lines th,.kk-lines td{border-bottom:1px solid #e3eaf1;padding:5px 6px;text-align:left}
.kk-lines th.r,.kk-lines td.r{text-align:right}
.kk-lines input{width:100%;box-sizing:border-box}
.kk-lines td:nth-child(2) input{width:96px;text-align:right}
.kk-lines td:nth-child(3) input{width:54px;text-align:right}
.kk-add{color:#2f6fb1;cursor:pointer;display:inline-block;margin:6px 0}
.kk-sum{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px dashed #dfe6ec;gap:8px}
.kk-sum.big b{font-size:16px}
.kk-sum input{width:92px;text-align:right}
.kk-pay{display:flex;gap:6px;align-items:center;margin:4px 0}
.kk-pay input{width:104px;text-align:right}
.kk-due{color:#b03a2e}

/* ── 2026-08-02 裏書き画面の動線(予約/オペ枠/会計パネル)・埋め込みモード ── */
.app.embed .mnav,.app.embed .subbrand,.app.embed .kboard{display:none}
.app.embed main{padding-top:4px}
/* 🟨 b420(先生の逐語「『予約ボード確認』『オペ枠ボード確認』『確定し会計入力へ』は1行にし、
   アレルギーの窓のある行の上へ黄色い背景帯とともに1行の状態へ移動お願いします。」):
   ・置き場所は UraForm の中(アレルギーの行のすぐ上)。**1行**
   ・黄色い背景の帯(#fdf7d9)を敷く。ボタンは省スペースに詰める(行を増やさない=先生の好み)
   🩹 2026-09-13 b445: b306 で裏書きの板は 462px(記入欄 422px)に絞られているので、b420 の
      nowrap のままでは「💴 確定し会計入力へ」が白い枠の右へ **23px はみ出して**いた
      (狭い画面では 185px。実測で確認)。文言・色・並び・文字の大きさは1つも変えず、
      ・間隔と内側の余白だけ詰めて、いつもの幅では**今までどおり1行**に収める
        (実測: 1行に要る幅 402px → 380px / 帯の中に使える幅 386px → 390px。10px の余裕)
      ・それでも入らないほど狭い画面でだけ折り返す(nowrap→wrap)= はみ出しをなくす安全網 */
.urabar{display:flex;gap:4px;flex-wrap:wrap;row-gap:4px;align-items:center;margin:2px 0 8px;
  background:#fdf7d9;border:1px solid #ecd873;border-radius:8px;padding:5px 4px}
.urabar button{font-size:13.5px;padding:5px 6px;border:1px solid #d9c76a;background:#fff;border-radius:8px;
  cursor:pointer;white-space:nowrap}
.urabar button:hover{background:#fdf7d9}
.urabar button.pri{background:#caa62e;border-color:#caa62e;color:#fff;font-weight:600}
.urabar button.pri:hover{background:#b8962a}
.urapanel{z-index:1110}
.cfmsg{font-size:14px}
.cfmsg b{color:#b03a2e}
.ura-noope{padding:26px;font-size:13.5px}
.ura-kkwrap{flex:1;overflow:auto;padding:10px 12px;background:#f2f5f8}
.kk-embed{box-shadow:none;width:auto;max-height:none}

/* 見積タブの行に出る目印: どの見積書から実際の手術/会計まで進んだか一目で分かるように */
.docrow .qbadge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:800;white-space:nowrap;letter-spacing:.02em;line-height:1.5}
.docrow .qbadge.ura{background:#ffe600;color:#4a3a00;border:1px solid #d6b800;box-shadow:0 1px 0 rgba(0,0,0,.08)}
.docrow .qbadge.rcp{background:#e02020;color:#fff;border:1px solid #b41414;box-shadow:0 1px 0 rgba(0,0,0,.12)}


/* ── 見積書/会計タブ: 左半分=見積書 / 右半分=会計 を1行で並べる ── */
.qk-wrap{overflow-x:auto;margin-top:6px}
.qk-tbl{width:100%;border-collapse:collapse;font-size:12.5px;table-layout:fixed}
.qk-tbl th{text-align:left;font-weight:700;color:#5c6b7a;font-size:11.5px;padding:5px 6px;border-bottom:2px solid #dbe4ec;white-space:nowrap}
.qk-tbl td{padding:6px;border-bottom:1px solid #eef2f6;vertical-align:middle;overflow:hidden;text-overflow:ellipsis}
.qk-tbl th.r,.qk-tbl td.r{text-align:right}
.qk-tbl tr.hovon{background:#f2f8ff}
.qk-tbl tbody tr:hover{background:#f7fbff}
.qk-tbl .c-dt{width:9%;color:#7a8794;white-space:nowrap;font-size:11.5px}
.qk-tbl .c-nm{width:20%}
.qk-tbl .c-nm a{cursor:pointer;color:#1a63b8;text-decoration:none;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qk-tbl .c-nm a:hover{text-decoration:underline}
.qk-tbl .c-am{width:7.5%;white-space:nowrap}
.qk-tbl .c-ur{width:11%}
/* 会計の日時のうしろに保存した人の苗字を並べるぶん、少しだけ広い(2026-08-26 batch192)。
   広げた5%は、件名(…で省略される)・金額の欄(4つ)・ゴミ箱の欄から少しずつ回している。
   「長谷川」のような3文字の苗字でも日時が切れない幅(いちばん狭い1100pxの画面で実測)。
   裏書き・状態のバッジは狭めると読めなくなるので触っていない。表全体の幅も前と同じ */
.qk-tbl .c-kk{width:16%;white-space:nowrap}
.qk-tbl .c-rc{width:11%}
.qk-tbl .c-x{width:3.5%;text-align:center}
/* 🖊 見積書・会計を最後に保存した人の苗字(2026-08-26 batch192 院長要望)。
   行を増やさず、件名/日時と同じ1行に小さく添える。保存者が分からない昔の行は要素ごと出さない */
.qk-tbl .qnmw{display:flex;align-items:baseline;gap:4px;min-width:0}
.qk-tbl .qnmw>.qtitle-w{flex:1 1 auto;width:auto;min-width:0}
.qk-tbl .qby{flex:0 0 auto;margin-left:4px;font-size:10.5px;color:#98a4b0;white-space:nowrap}
/* ちょうど半分のところに仕切り線 */
.qk-tbl .sepL{border-left:2px solid #c8d6e2;padding-left:10px}
.qk-tbl .kklink{cursor:pointer;color:#1a63b8;text-decoration:underline}
.qk-tbl .dash{color:#b6c1cc}
.qk-tbl tr.kkonly .c-nm{color:#a6b2be}
.qk-tbl .kk-due{color:#c0392b;font-weight:700}
.qk-tbl .tag{font-size:10.5px;padding:1px 5px;border-radius:4px;background:#eef3f8;color:#5c6b7a}
.qk-tbl .qbadge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap;line-height:1.5}
.qk-tbl .qbadge.ura{background:#ffe600;color:#4a3a00;border:1px solid #d6b800}
.qk-tbl .qbadge.rcp{background:#e02020;color:#fff;border:1px solid #b41414}
@media (max-width:1100px){.qk-tbl{table-layout:auto;min-width:900px}}

/* 裏書き画面の「手術日」欄(本文の直上) */
.opdate{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:2px 0 6px;padding:7px 10px;background:#fffbe6;border:1px solid #ecdfa8;border-radius:8px}
.opdate label{font-weight:700;font-size:13px;color:#5a4a10}
.opdate input{margin-left:6px;padding:4px 8px;border:1px solid #cfd8e0;border-radius:6px;font-size:13px}
.opdate small{color:#8a7c4a;font-size:11.5px}

/* ── 2026-08-04 予約ボード: 1日/2日/7日表示 + 上部バーのタイト化(メディベース準拠) ── */
/* 上部バーを詰める(メディベースと同じくらいの高さに) */
.cal-head{gap:6px;margin-bottom:6px;padding:5px 0 4px}
.cal-head > button{padding:4px 9px;font-size:12px}
.cal-head .mini{padding:3px 8px;font-size:11.5px}
.cal-date{font-size:14.5px;margin:0 2px;white-space:nowrap}
.cal-head input[type=date]{padding:3px 6px;font-size:12px}
.cal-head .printsel{padding:3px 6px;font-size:12px}
/* 1日 / 2日 / 7日 の切替(右端・メディベースと同じ位置) */
.dsel{display:inline-flex;border:1px solid #c4ced8;border-radius:7px;overflow:hidden;flex-shrink:0}
.dsel button{border:none;border-radius:0;background:#fff;color:#42566b;font-size:12px;font-weight:700;padding:4px 11px;border-right:1px solid #dbe3ea}
.dsel button:last-child{border-right:none}
.dsel button.on{background:#42566b;color:#fff}
/* 日ごとのまとまり(1日表示でも同じ骨組みを使う) */
.cal-day{flex:1;display:flex;flex-direction:column;min-width:0}
.cal-daycols{display:flex;flex:1;min-width:0}
.cal-grid.multi .cal-day{border-right:2px solid #b9c5d1}
.cal-grid.multi .cal-day:last-child{border-right:none}
.cal-dayhead{height:22px;line-height:22px;text-align:center;font-weight:700;font-size:12px;color:#28405b;background:#eef3f8;border-bottom:1px solid #c9d2db;position:sticky;top:var(--chtop,96px);z-index:26;white-space:nowrap;overflow:hidden}
.cal-grid.multi .cal-day.today .cal-dayhead{background:#fff3d6;color:#8a5a00}
.cal-grid.multi .cal-colhead{top:calc(var(--chtop,96px) + 22px);height:26px;line-height:26px;font-size:11px}
/* 多日表示は列が増えるので細く・小さく(メディベースの7日表示と同じ見え方) */
.cal-grid.multi .cal-col{min-width:0}
.cal-grid.multi .cal-appt{font-size:9px;padding:1px 2px 2px;line-height:1.2;word-break:break-all}
.cal-grid.multi .ca-time{font-size:8.5px}
.cal-grid.multi .ca-nm{font-size:10px;margin-top:-7px}  /* 2日/7日表示もフリガナ(7.5px)ぶん詰める(batch87) */
.cal-grid.multi .ca-nmtxt small{font-size:7.5px}
.cal-grid.multi .ca-memo{font-size:8.5px;line-height:1.25}
.cal-grid.multi .cal-body{cursor:default}

/* ── 2026-08-04 上部バーをメディベース並みに大きく + 日付の重複解消 ── */
.cal-head .cnav{padding:5px 13px;font-size:14px;font-weight:700;line-height:1.2}
.cal-head .cnav.ar{padding:5px 12px;font-size:17px;line-height:1}
.cal-date{font-size:20px;font-weight:700;margin:0 4px 0 6px;white-space:nowrap;letter-spacing:.01em}
/* 🗓 を押すと日付ピッカーが開く(アイコンの上に透明な日付欄を重ねている) */
.dpick{position:relative;display:inline-flex;flex-shrink:0}
.dpick .cnav.ico{font-size:16px;padding:5px 10px}
.dpick input[type=date]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;border:none;background:none}
/* 📌 全日共通の掲示(メディベースの「Empty」の場所) */
.calnotice{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #d8e0e8;border-bottom:none;border-radius:10px 10px 0 0;padding:5px 12px;cursor:text;min-height:28px}
.calnotice .cnempty{color:#c0392b;font-style:italic;font-weight:700;font-size:13px;opacity:.75}
.calnotice.on{background:#fffbe8;border-color:#e8d9a0}
.calnotice .cntext{white-space:pre-wrap;font-size:13.5px;font-weight:700;color:#5a4a12;line-height:1.35}
.calnotice small{color:#9a8a5a;font-size:11px;flex-shrink:0}
.calnotice .cnedit{margin-left:auto;color:#9aa4ad;font-size:13px;flex-shrink:0}
.calnotice.editing{display:block;cursor:auto}
.calnotice textarea{width:100%;font-size:13.5px;padding:5px 7px;border:1px solid #cfd8e0;border-radius:6px;resize:vertical}
.calnotice .cnbtn{display:flex;gap:6px;margin-top:5px}
/* 📏 2026-09-02 b249 先生の逐語「スペースを占めている気もするのでEmptyのバーは、
   文字を入力するまで今の2/3くらいの縦幅にできますか?」
   → お知らせが**空のあいだだけ** 28px → 19px(≒2/3)に低くする。
     何か書いてあれば(.on)今までの高さのまま。書き換え中(.editing)も今までのまま。
   ⚠️ 帯の高さが変わると列名の帯の貼り付き位置(--chtop)がずれるが、
      --chtop は .cal-fixhead の**実際の高さ**を測って入れており、b249で ResizeObserver も
      付けたので、高さが変わった瞬間に追随する(main.tsx の meas を参照) */
.calnotice:not(.on):not(.editing){padding:2px 12px;min-height:19px;line-height:1.2}
.calnotice:not(.on):not(.editing) .cnempty{font-size:11.5px}
.calnotice:not(.on):not(.editing) .cnedit{font-size:11px}
.cal-grid{border-radius:0 0 10px 10px}

/* ── 予約ボード設定のタブ + 📁 書類一式 ── */
.settabs{display:flex;gap:6px;margin:2px 0 12px}
.settabs button{padding:6px 14px;font-size:13px;font-weight:700;background:#eef2f6;color:#5c6b7a;border:1px solid #d8e0e8;border-radius:8px}
.settabs button.on{background:#1e6fe0;color:#fff;border-color:#1e6fe0}
.docshelf .dsbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.docshelf .dsbar > input{flex:1;min-width:180px;padding:6px 9px;font-size:13px}
.docshelf .dsadd{display:flex;align-items:center;gap:6px}
.docshelf .dscat{width:170px;padding:5px 8px;font-size:12px}
.docshelf .dsro{color:#8a97a5;font-size:11.5px}
.dscat-blk{margin-bottom:14px}
.dscat-blk h4{margin:0 0 6px;font-size:13px;color:#28405b;border-bottom:1px solid #e4eaf0;padding-bottom:4px}
.dsrow{display:flex;align-items:center;gap:10px;padding:5px 4px;border-bottom:1px dotted #e8edf2;flex-wrap:wrap}
.dsrow .dsname{font-size:13.5px;font-weight:700;color:#1e6fe0;text-decoration:none;cursor:pointer}
.dsrow .dsmeta{font-size:11px;color:#8a97a5;flex:1;min-width:120px}
.dsrow .dsact{display:flex;gap:10px;flex-shrink:0}
.dsrow .dsact a{font-size:11.5px;color:#42566b;cursor:pointer;text-decoration:none}
.dsrow .dsact a.dsdel{color:#c0392b}
.dsedit{display:flex;gap:6px;flex-wrap:wrap;width:100%}
.dsedit input{padding:4px 7px;font-size:12px;flex:1;min-width:110px}

/* ── 🔖 スタンプの3領域 ── */
.stsl .stslhint{font-size:11px;color:#8a97a5;line-height:1.4;margin:0 0 8px}
.stgrp{border:1px dashed #d3dce5;border-radius:8px;padding:5px 6px 7px;margin-bottom:9px;background:#fbfcfd}
.stgrp h5{margin:0 0 5px;font-size:11.5px;font-weight:700;display:flex;align-items:center;gap:6px}
.stgrp h5 .mini{padding:1px 8px;font-size:12px;line-height:1.3}
.stgrp .stnone{font-size:11px;color:#b3bcc5;padding-left:3px}
.stgrp.st-cs{background:#eff5fe;border-color:#b9d3f5}
.stgrp.st-cs h5{color:#17509c}
.stgrp.st-ns{background:#fdeff5;border-color:#f2c2d8}
.stgrp.st-ns h5{color:#a53a6d}
.stgrp.st-ura{background:#fff9e6;border-color:#ecd79a}
.stgrp.st-ura h5{color:#8a6a10}
.useseg{display:inline-flex;gap:5px;flex-wrap:wrap}
.useseg button{padding:4px 11px;font-size:12px;font-weight:700;border:1px solid #cfd8e0;background:#fff;color:#5c6b7a;border-radius:7px}
.useseg button.on{color:#fff;border-color:transparent}
.useseg button.us-cs.on{background:#1e6fe0}
.useseg button.us-ns.on{background:#d1518c}
.useseg button.us-ura.on{background:#c9a23a}
.useseg button.on:not(.us-cs):not(.us-ns):not(.us-ura){background:#8a97a5}

/* ── 📋 術前採血問診(紙の原本そっくり・大きな窓・保存後は小さく) 2026-08-04 ── */
.skbox{background:#fff;border:1px solid #f0cede;border-radius:10px;padding:10px 12px}
.skbox h4{margin:0 0 8px;font-size:13px;color:#a53a6d}
.skbox > small{display:block;color:#8a97a5;font-size:11px;margin-top:6px;line-height:1.4}
.skbox .mini{margin-top:6px}
/* 紙 */
.skpaper{background:#fff;color:#111;border:1px solid #333;padding:14px 18px 18px;font-size:13.5px;line-height:1.55;box-sizing:border-box;font-family:"Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif}
.skpaper h2{margin:0 0 8px;font-size:17px;text-align:center;letter-spacing:.28em;font-weight:700}
.skline{display:flex;flex-wrap:wrap;align-items:center;gap:2px 4px;padding:1.5px 0;min-height:22px}
.skpaper .skh{font-size:13.5px;font-weight:700;margin-right:6px}
.skpaper .skx{white-space:pre}
.skc{display:inline-flex;align-items:center;gap:1px;cursor:pointer;padding:1px 5px 1px 2px;border-radius:4px;white-space:nowrap;user-select:none}
.skc i{font-style:normal;font-size:15px;line-height:1}
.skc:not(.ro):hover{background:#fdeef4}
.skc.on{font-weight:700;color:#8e2f5c}
.skc.ro{cursor:default}
.skiw{display:inline-flex;align-items:baseline;gap:2px}
.skpaper input.ski{border:none;border-bottom:1px solid #999;background:transparent;font-size:13px;padding:0 3px;line-height:1.5;font-family:inherit}
.skpaper input.ski:focus{outline:none;border-bottom-color:#1e6fe0;background:#eef5ff}
/* ✍️ 2026-09-16 b491 折り返す記入欄(手術名など長い文が入る欄)。
   画面の <input> は枠の幅から先が見えず「欠けて見える」ので、行数ぶん高さが伸びる欄にする。
   ⚠️ 印刷では下の body.pprint / body.pmeasure でこの欄も隠れ、.skiprint に差し替わる(紙の見た目は今までどおり) */
.skpaper .skiw.ta{flex:1 1 auto;min-width:0;max-width:100%}
.skpaper textarea.ski{display:block;width:100%;box-sizing:border-box;border:none;border-bottom:1px solid #999;
  background:transparent;font-size:13px;padding:0 3px;line-height:1.5;font-family:inherit;
  resize:none;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere}
.skpaper textarea.ski:focus{outline:none;border-bottom-color:#1e6fe0;background:#eef5ff}
.skiw small{font-size:11px;color:#555}
.skpaper .ski.ro{display:inline-block;border-bottom:1px solid #999;min-height:18px;font-size:13px;padding:0 3px;
  max-width:100%;white-space:pre-wrap;overflow-wrap:anywhere}
/* 🖨 記入欄の中身を「折り返す文字」で出す控え(印刷のときだけ出る。2026-08-12 batch63)。
   画面の <input> は枠の幅で文字が切れて刷られてしまうため、紙ではこちらに差し替えて全文を出す。
   長い文はその欄だけ文字を小さくして(sm/xs)、行が増えすぎないようにする */
.skpaper .skiprint{display:none;border-bottom:1px solid #999;min-height:18px;font-size:13px;padding:0 3px;
  box-sizing:border-box;max-width:100%;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5}
.skpaper .skiprint.sm,.skpaper .ski.ro.sm{font-size:10.5px;line-height:1.4}
.skpaper .skiprint.xs,.skpaper .ski.ro.xs{font-size:8.5px;line-height:1.3}
/* body.pmeasure = 画面側が「紙にしたら何行になるか」を一瞬だけ測るための切り替え(印刷と同じ並び)。
   @media print の中の指定(下の body.pprint)と対になっている。片方だけ直さないこと */
body.pmeasure .skpaper .skiw{min-width:0;max-width:100%;flex-wrap:wrap}
body.pmeasure .skpaper input.ski,body.pmeasure .skpaper textarea.ski{display:none}
body.pmeasure .skpaper .skiprint{display:inline-block}
/* ✍️ b491: 折り返す欄の包みは**画面だけ**横に広げる。印刷・採寸では今までの包み(flex:0 1 auto)に戻し、
   紙の見た目が1px も変わらないようにする */
body.pmeasure .skpaper .skiw.ta{flex:0 1 auto}
/* 💬 b491 採血問診表の右下の吹き出し(お酒の頻度・強さ / 当日のご帰宅方法)。
   紙の右下に置く(margin-left:auto)。上向きの小さな尻尾を ::before(枠線)+::after(白地)で作る */
.skpaper .skfuki{position:relative;box-sizing:border-box;width:62%;min-width:300px;margin:12px 0 2px auto;
  border:1.5px solid #333;border-radius:12px;padding:5px 12px 6px;background:#fff}
.skpaper .skfuki::before,.skpaper .skfuki::after{content:'';position:absolute;left:38px;width:0;height:0;border-style:solid}
.skpaper .skfuki::before{top:-14px;border-width:0 9px 14px;border-color:transparent transparent #333}
.skpaper .skfuki::after{top:-11px;border-width:0 7px 11px;border-color:transparent transparent #fff}
.skpaper .skfuki .skline{min-height:20px}
/* 🟡 WEB問診から自動で入った欄は薄い黄色(2026-08-12 batch62 院長要望)。
   色はWEB問診窓の「はい」の行(.mswrow.yes)と同じ #fffbe0。文字は黒のままなので読みやすさは変わらない。
   職員が手で直すと this class が外れる = 「自動のまま」か「人が確かめた」かが一目で分かる。
   印刷でも色を出す(白黒印刷ならごく薄いグレーになるだけ) */
.skpaper input.ski.auto,.skpaper textarea.ski.auto,.skpaper .ski.ro.auto,.skpaper .skc.auto,.skpaper .skiprint.auto{
  background:#fffbe0;border-radius:3px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.skpaper input.ski.auto:focus,.skpaper textarea.ski.auto:focus{background:#eef5ff}   /* 打ち込み中は今までどおり青(どこを触っているか) */
/* 大きな窓(掴んで動かせる) */
.skzoom{display:inline-flex;gap:3px}
/* 小さい画像(保存後に看護師記録の中へ並ぶ) */
.skthumb{display:inline-flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;text-decoration:none}
.skthumb-in{display:block;overflow:hidden;border:1px solid #cfd8e0;border-radius:4px;background:#fff;box-shadow:0 2px 6px rgba(20,35,55,.18)}
.skthumb:hover .skthumb-in{border-color:#1e6fe0;box-shadow:0 4px 12px rgba(30,111,224,.3)}
.skthumb small{font-size:10.5px;color:#5c6b7a}

/* ── 🗓 日付を選ぶカレンダー(メディベース準拠) 2026-08-04 ── */
.dpop-veil{position:fixed;inset:0;z-index:60}
.dpop{position:absolute;top:34px;left:0;z-index:61;background:#fff;border:1px solid #c4ced8;border-radius:6px;box-shadow:0 12px 32px rgba(20,35,55,.32);padding:6px 8px 4px;width:330px}
.dpop-h{display:flex;align-items:center;justify-content:space-between;padding:4px 6px 8px}
.dpop-h b{font-size:15px;font-weight:700}
.dpop-h a{cursor:pointer;font-size:20px;color:#42566b;padding:0 12px;line-height:1}
.dpop-w{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:12px;color:#5c6b7a;padding-bottom:4px}
.dpop-w .sun{color:#c0392b}.dpop-w .sat{color:#1e6fe0}
.dpop-g{display:grid;grid-template-columns:repeat(7,1fr)}
.dpop-g a{display:flex;align-items:center;justify-content:center;height:38px;font-size:14px;color:#28405b;cursor:pointer;border-radius:50%;margin:1px}
.dpop-g a:hover{background:#eef3f8}
.dpop-g a.sun{color:#c0392b}.dpop-g a.sat{color:#1e6fe0}
.dpop-g a.off{color:#b9c2cb;font-size:12.5px}
.dpop-g a.tdy{outline:1px solid #b9d3f5}
.dpop-g a.sel{background:#1e6fe0;color:#fff;font-weight:700;outline:none}
.dpop-f{display:flex;justify-content:space-between;padding:6px 8px 4px;border-top:1px solid #e8edf2;margin-top:4px}
.dpop-f a{cursor:pointer;font-size:13.5px;color:#42566b}
/* ↶ ↷ は文字なしの太い矢印だけ */
.cal-head .cnav.und{font-size:19px;font-weight:700;padding:2px 11px;line-height:1.15}
.cal-head .cnav.ico.on{background:#42566b;color:#fff}

/* ── 🔖 スタンプ一覧は1行ずつ(混雑を解消) 2026-08-04 ── */
.stgrp a{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:3px 7px;font-size:12px;line-height:1.6;border-radius:5px;margin:1px 0}

/* ── 📝 来院歴・予約のメモをその場で編集 2026-08-04 ── */
.histrow .hmemo{flex:1;min-width:140px;cursor:text;white-space:pre-wrap;padding:2px 6px;border-radius:5px;border:1px solid transparent}
.histrow .hmemo:hover{border-color:#cfd8e0;background:#fbfcfd}
.histrow .hmemo-none{color:#b3bcc5;font-style:normal;font-size:11.5px}
.histrow .hmemo.editing{cursor:auto;border-color:transparent;background:none;display:block;flex-basis:100%}
.histrow .hmemo textarea{width:100%;font-size:12.5px;padding:5px 7px;border:1px solid #cfd8e0;border-radius:6px;resize:vertical;font-family:inherit}
.histrow .hmbtn{display:flex;gap:6px;align-items:center;margin-top:4px}

/* ── 2026-08-04(夕) 掴んで動かせる窓・書類プレビュー・太い矢印・コラボ枠 ── */
/* 🪟 共通の窓(いちばん手前。上部のバーやタブに隠れない) */
.dwin{position:fixed;z-index:2000;background:#f4f6f8;border:1px solid #8d9dad;border-radius:10px;box-shadow:0 22px 60px rgba(20,35,55,.5);overflow:hidden;max-width:calc(100vw - 16px)}
.dwin-bar{display:flex;align-items:center;gap:10px;padding:7px 11px;background:#2f4358;color:#fff;cursor:move;user-select:none;touch-action:none}
.dwin-bar b{font-size:13.5px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dwin-bar .mini{padding:4px 10px;font-size:12px}
.dwin-bar .dwdl{color:#cfe4ff;font-size:12px;text-decoration:none;cursor:pointer;white-space:nowrap}
.dwin-bar .dwdl:hover{text-decoration:underline}
.dwin-body{overflow:auto;background:#e9edf1;-webkit-overflow-scrolling:touch}
.skwin-body{overflow:auto}
/* 📄 書類プレビューの中身 */
.docprev{background:#fff;max-height:calc(100vh - 130px)}
.docprev-in{padding:20px 26px;font-size:13.5px;line-height:1.75;color:#111}
.docprev-in p{margin:0 0 2px;white-space:pre-wrap}
.docprev-in p.sp{height:9px}
.docprev-in p.h{font-weight:700;font-size:14.5px;margin:14px 0 4px;color:#28405b}
.docprev-in p.none{color:#8a97a5}
.docprev-in table{border-collapse:collapse;margin:6px 0 10px;width:100%}
.docprev-in td{border:1px solid #c9d2db;padding:4px 7px;font-size:12.5px;vertical-align:top;line-height:1.5}
.docprev-in pre{white-space:pre-wrap;font-size:12.5px;line-height:1.6;margin:0}
.docprev iframe{width:100%;height:calc(100vh - 150px);border:none;background:#fff}
/* ↶ ↷ 太い濃紺の矢印 */
.cal-head .cnav.und{padding:3px 9px;color:#17509c;line-height:0}
.cal-head .cnav.und:disabled{color:#b9c6d6}
.undoic{display:block}
/* 🤝 コラボ手術用の枠 */
.ca-cb{margin-left:4px;font-size:10px}
button.collabdup{background:#eaf3ff;border-color:#9cc4f0;color:#17509c;font-weight:700}
.collabnote .cbmsg{flex:1;font-size:11.5px;color:#5c6b7a;line-height:1.5;background:#eef5ff;border:1px solid #cfe0f6;border-radius:7px;padding:6px 9px}
.collabnote .cbmsg a{color:#c0392b;cursor:pointer;margin-left:8px;text-decoration:underline}
/* 📋 問診票をiPadでも押しやすくゆったりに */
.skpaper{font-size:15px;line-height:1.75;padding:16px 20px 20px}
.skpaper h2{font-size:19px;margin-bottom:10px}
.skline{min-height:27px;padding:2.5px 0;gap:3px 6px}
.skpaper .skh{font-size:15px}
.skc{padding:3px 7px 3px 3px}
.skc i{font-size:17px}
.skpaper input.ski{font-size:14.5px;padding:1px 4px}
.skpaper textarea.ski{font-size:14.5px;padding:1px 4px}   /* ✍️ b491 折り返す欄も同じ大きさ */
.skpaper .ski.ro{font-size:14.5px;min-height:21px}
.skpaper .skiprint{font-size:14.5px;min-height:21px}   /* 印刷の控えも画面の記入欄と同じ大きさ(長文は .sm/.xs で小さくなる) */
.skiw small{font-size:12px}

/* ── 2026-08-04(夜) 見積書をfreee風に・プレビューは全体表示 ── */
/* 診療録から開く見積書プレビュー: 印刷される実物と同じ見た目にそろえる */
.qpv-sheet .qpv-tbl{width:100%;border-collapse:collapse;margin-top:7px;table-layout:fixed}
.qpv-sheet .qpv-tbl .qpv-h th{background:#111;color:#fff;font-weight:400;font-size:12px;padding:6px 8px;text-align:left;border:none}
.qpv-sheet .qpv-tbl .qpv-h th.qpv-amtc{text-align:right;width:150px}
.qpv-sheet .qpv-tbl .qpv-h th.qpv-x{width:26px;background:#111}
.qpv-sheet .qpv-tbl td{border:none;border-bottom:1px solid #d5d5d5;padding:2.2px 8px;font-size:11.5px;line-height:1.35;vertical-align:middle}
.qpv-sheet .qpv-tbl td.qpv-amtc{text-align:right;width:150px}
/* 💴 料金マスタから引けず0円のままの行(2026-08-16 batch97)。
   薄い赤の下地+小さな注記で職員が気づけるようにする。金額はAIが推測して埋めない */
.qpv-sheet .qpv-tbl td.qpv-nopm{background:#fdecec !important;box-shadow:inset 0 0 0 1px #e79a9a}
.qpv-sheet .qpv-tbl td.qpv-nopm .qpv-nopmn{display:block;color:#c0392b;font-size:9.5px;line-height:1.2;margin-top:1px;white-space:nowrap}
.qpv-sheet .qpv-tbl tr.qpv-odd td{background:#f2f2f2}
.qpv-sheet .qpv-tbl tr.qpv-blank td{height:26px}
/* 件名は摘要の最上段に、行全体を貫く形で(縦線なし) */
.qpv-sheet .qpv-subjrow td{border-bottom:1px solid #111;background:#fff;padding:4px 8px}
.qpv-sheet .qpv-subjin{font-weight:700;font-size:13px}
.qpv-sheet .qpv-subjin::placeholder{font-weight:400;color:#b3bcc5}
.qpv-sheet .qpv-in{width:100%;border:none;background:transparent;font-size:11.5px;padding:1px 2px;font-family:inherit}
.qpv-sheet .qpv-in:focus{outline:none;background:#eef5ff;border-radius:4px}
.qpv-sheet .qpv-in.r{text-align:right}
.qpv-sheet .qpv-sum table{border-collapse:collapse;width:230px;margin-left:auto;margin-top:8px}
.qpv-sheet .qpv-sum td{border:none;border-bottom:1px solid #ccc;padding:5px 8px;font-size:12.5px}
.qpv-sheet .qpv-sum tr.qpv-tt td{font-weight:700;background:#f2f2f2;border-bottom:2px solid #111}
.qpv-sheet .qpv-biko{border:1px solid #999;margin-top:12px;padding:6px 9px}
.qpv-sheet .qpv-bkh{font-weight:700;font-size:12px;margin-bottom:2px}
.qpv-sheet .qpv-cust b{font-size:16px;border-bottom:1px solid #111;display:inline-block;padding:0 26px 2px 0}
.qpv-sheet .qpv-meta td{border:none;font-size:12px;padding:1px 8px 1px 0}
/* 見積書タブのプレビュー: 紙の全体が入るよう縮めて、長いものは中でスクロール */
.qprev-fit{flex:1;overflow:auto;background:#9aa4ad;-webkit-overflow-scrolling:touch}
.qprev-fit iframe{width:210mm;height:297mm;border:0;background:#fff;display:block;margin:0 auto;
  transform:scale(var(--qzoom,.62));transform-origin:top center}
.fprev.prev65.big .qprev-fit iframe{--qzoom:.52}
.fprev.prev65.half .qprev-fit iframe{--qzoom:.42}
@media (min-width:1600px){.fprev.prev65.big .qprev-fit iframe{--qzoom:.62}}
/* クリックで開くプレビュー(ホバーはやめた) */
.clickprev{cursor:pointer}
.clickprev:hover{background:#f4f8fd}
/* 📋 赤で目立たせるチェック(バクトロバン軟膏) */
.skc.red{color:#c0392b;font-weight:700}
.skc.red.on{color:#a02318;background:#fdecea}
/* ══ 🔵 b558 医師が診療録に書いた「なし」だけ青い太字(2026-09-22 先生の逐語) ══
   「【アレルギー】の行になし、【持病】の行になし、と入力したあとは、診療録を書いて保存した
     タイミングでも、反映先でも青い太文字で「なし」と入力されているようにして欲しいです。
     (なし)のチェックに、チェックがつくときも、青い太文字でのチェックにして欲しいです。」
   ⛔ 見た目だけ。保存される文字・☑の中身は今までどおり。
   ⛔ 医師が書いていない「なし」(用紙のひな型・WEB問診・引き写し)にはこの印を付けない(画面側で判定)。
   🖨 紙は黒の太字。白黒印刷で青は灰色になり、かえって薄く見えるため(太さは残すので紙でも分かる)。
      診療録・裏書きの本文の中だけは class を残せない(sanitizeRich が落とす)ので、
      <font color="#1558d6"><b>なし</b></font> の形で差し、印刷では color 属性そのもので狙う */
.drnashi{color:#1558d6;font-weight:700}
/* 🕔 b558-2/3 「(2025年11月時点)」の注釈。先生の逐語「注釈は小さい文字でお願いします。」
   小さく薄く・折り返さない(行を増やさない)。帯や枠は作らない */
.drnote{font-size:9.5px;color:#8a94a0;font-weight:400;margin-left:2px;white-space:nowrap}
/* 🕔 b558-2/3 用紙(採血問診票・手術前問診)の題名の右に添える「いつの時点の中身か」。
   ☐の行に足すと折り返して行が増え、A4 1枚に収める倍率(skPrintScale)が下がるので**題名の行に1つだけ** */
.skwhen{font-size:10px;color:#8a94a0;font-weight:400;margin-left:8px;white-space:nowrap;letter-spacing:0}
.skc.drnashi,.skc.on.drnashi{color:#1558d6;font-weight:700}
.dalg-v.drnashi{color:#1558d6;font-weight:700}
.ival.drnashi{color:#1558d6;font-weight:700}
/* 🔵 b563 先生の逐語「台帳の [診療録 2026/9/22] なし 、を青い太字にお願いします。」
   台帳(サマリー)の欄は「[診療録 2026/9/22] なし」の形になったので、欄まるごとではなく
   **「なし」の2文字だけ**を中で包んで青くする(印は今までどおりの見た目=指揮官の判断。
   印まで青くすると行全体が目立ちすぎ、先生の好み(省スペース)に合わないため) */
.ival .drnashi{color:#1558d6;font-weight:700}
@media print{
  .drnashi,.skc.drnashi,.skc.on.drnashi,.dalg-v.drnashi,.ival.drnashi,.ival .drnashi{color:#000 !important;font-weight:700}
  font[color="#1558d6"]{color:#000 !important}
  font[color="#1558d6"] b{color:#000 !important;font-weight:700}
  /* 🕔 b558-2/3 注釈は紙にも**小さく黒で**出す(いつの時点の中身かは紙の上でも要る情報)。
     薄い灰色のままだと白黒印刷で消えかけるので黒にする。大きさは小さいまま=行は増えない */
  .drnote,.skwhen,font[color="#8a94a0"]{color:#000 !important}
}
/* 📁 書類一式: まとめて印刷・患者差し込み */
.dsprintbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#eef3f8;border:1px solid #d8e0e8;border-radius:8px;padding:6px 10px;margin-bottom:10px}
.dsprintbar .dspsel{font-size:12px;color:#42566b;font-weight:700}
.dsprintbar .dschk{display:flex;align-items:center;gap:4px;font-size:11.5px;color:#5c6b7a}
.dsprintbar .dsclr{font-size:11.5px;color:#c0392b;cursor:pointer;text-decoration:underline}
.dsrow .dssel{margin:0 2px 0 0;flex-shrink:0;width:16px;height:16px}
.docshelf .note code{background:#eef3f8;border:1px solid #d8e0e8;border-radius:4px;padding:0 4px;font-size:11px;margin:0 1px}
/* 診療記録欄の見出し(labelをやめてdivにしたため、見出しの見た目だけ引き継ぐ) */
.freelab{margin-bottom:6px}
.freelab > .freelab-t{display:block;font-size:11px;color:#5c6b7a;font-weight:700;margin-bottom:2px}
/* 📄 書類プレビュー: エクセルは元の表の形(結合セル・列幅)のまま見せる */
.docprev-in table.xl{table-layout:fixed;width:auto;max-width:none;border-collapse:collapse;margin:4px 0 12px}
.docprev-in table.xl td{border:1px solid #b5b5b5;padding:2px 4px;font-size:10.5px;line-height:1.45;vertical-align:top;word-break:break-all;white-space:pre-wrap}
.docprev-in{overflow-x:auto}
/* 🩺 手術記録(2段組の紙) */
.oppaper .op2col{display:flex;gap:0;border:1px solid #333;border-bottom:none}
.oppaper .opcol{flex:1;min-width:0;padding:6px 9px;border-right:1px solid #333}
.oppaper .opcol:last-child{border-right:none}
.oppaper .skline{min-height:24px;padding:1.5px 0}
.oppaper h2{letter-spacing:.24em}
.oppaper .skc{font-size:13.5px}
.skrow2{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-start}
.skcell{display:inline-flex;flex-direction:column;align-items:center;gap:2px}
.skcell .skoff{font-size:10.5px;color:#c0392b;cursor:pointer;text-decoration:underline}

/* ── 📈 収入分析(2026-08-04・メディベースの医業収入に準拠) ── */
.salpage{max-height:calc(100vh - 170px);overflow:auto}
.salsplit{display:flex;gap:14px;align-items:flex-start}
.salside{width:190px;flex-shrink:0;border:1px solid #d8e0e8;border-radius:8px;background:#fff;padding:8px 0}
.salside h5{margin:0;padding:6px 12px 10px;font-size:12.5px;color:#28405b;border-bottom:1px solid #e4eaf0}
.salside hr{border:none;border-top:1px solid #e4eaf0;margin:6px 0}
.salside a{display:block;padding:8px 12px;font-size:12.5px;color:#1e6fe0;cursor:pointer;line-height:1.4}
.salside a:hover{background:#f4f8fd}
.salside a.on{background:#5b8fd0;color:#fff;font-weight:700}
.salmain{flex:1;min-width:0}
.salnav{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;background:#fff;border:1px solid #d8e0e8;border-radius:8px;padding:7px 10px}
.salnav b{font-size:15px;margin:0 4px}
.salnav small{color:#8a97a5;font-size:11px}
.salcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.salmcard{border:1px solid #d8e0e8;border-radius:8px;background:#fff;padding:12px;cursor:pointer}
.salmcard:hover{border-color:#5b8fd0;box-shadow:0 3px 10px rgba(30,111,224,.14)}
.salmcard button{width:100%;pointer-events:none}
.salmcard p{font-size:11.5px;color:#5c6b7a;line-height:1.6;margin:9px 0 0}
.salcards3{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin-bottom:12px}
.salcard2{border:1px solid #d8e0e8;border-radius:8px;background:#fff;overflow:hidden;text-align:center}
.salcard2 .sc2h{background:#f4f6f8;border-bottom:1px solid #e4eaf0;font-size:11px;color:#42566b;padding:6px 8px;line-height:1.4;min-height:32px;display:flex;align-items:center;justify-content:center}
.salcard2 b{display:block;font-size:23px;padding:10px 6px 2px;color:#28405b;letter-spacing:-.02em}
.salcard2 b i{font-size:12px;font-style:normal;color:#5c6b7a;margin-left:2px}
.salcard2 .sc2p{font-size:11px;color:#7a8794;padding-bottom:3px}
.salcard2 .sc2r{font-size:11.5px;padding-bottom:9px;font-weight:700}
.salcard2 .sc2r.up{color:#1f8b4c}.salcard2 .sc2r.dn{color:#c0392b}
.salbox{background:#fff;border:1px solid #d8e0e8;border-radius:8px;padding:10px 12px;margin-bottom:12px}
.salbox h4{margin:0 0 8px;font-size:12.5px;color:#28405b;border-bottom:1px solid #e4eaf0;padding-bottom:5px;display:flex;align-items:center;gap:10px}
.lchart{width:100%}
.lchart svg{width:100%;height:170px;display:block}
.lclabels{display:flex;justify-content:space-between;font-size:10px;color:#8a97a5;padding-top:2px}
table.saltbl{width:100%;border-collapse:collapse;font-size:12px}
table.saltbl th{background:#42566b;color:#fff;font-weight:400;padding:5px 8px;text-align:left;white-space:nowrap}
table.saltbl td{border-bottom:1px solid #eef2f6;padding:5px 8px}
table.saltbl td.r,table.saltbl th.r{text-align:right}
table.saltbl td.none{color:#8a97a5;text-align:center;padding:14px}
table.saltbl tr.salttl2 td{background:#f2f5f8;font-weight:700;border-top:2px solid #42566b}
.sallistwrap{overflow:auto;max-height:330px}
table.sallist{width:100%;border-collapse:collapse;font-size:11.5px}
table.sallist th{position:sticky;top:0;background:#42566b;color:#fff;font-weight:400;padding:5px 7px;text-align:left;white-space:nowrap}
table.sallist td{border-bottom:1px solid #eef2f6;padding:4px 7px;white-space:nowrap}
table.sallist td.r,table.sallist th.r{text-align:right}
table.sallist td.salttl{max-width:200px;overflow:hidden;text-overflow:ellipsis}
@media (max-width:820px){.salsplit{flex-direction:column}.salside{width:100%}}
/* 📄 裏書きから書類を選んで印刷 */
.pdocbody{background:#fff;max-height:calc(100vh - 170px);padding:12px 14px}
.pdocbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.pdocbar input{flex:1;min-width:150px;padding:5px 8px;font-size:12.5px}
.pdoccat h5{margin:8px 0 4px;font-size:12px;color:#28405b;border-bottom:1px solid #e4eaf0;padding-bottom:3px}
.pdocrow{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:6px;cursor:pointer;font-size:12.5px}
.pdocrow:hover{background:#f4f8fd}
.pdocrow.on{background:#eaf3ff}
.pdocrow small{color:#8a97a5;font-size:11px}
.pdocfoot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;border-top:1px solid #e4eaf0;padding-top:10px}
.pdocfoot small{color:#8a97a5;font-size:11px}
.modal.salmodal{max-width:1180px;width:96vw}
/* 見積書プレビューの上部を、印刷される紙とまったく同じ並びに(2026-08-04) */
.qpv-sheet .qpv-top{display:flex;justify-content:space-between;align-items:flex-start;gap:22px}
.qpv-sheet .qpv-tl{flex:1;min-width:0}
.qpv-sheet .qpv-tr{flex-shrink:0;text-align:left}
.qpv-sheet .qpv-lead{margin:20px 0 0;font-size:12px}
.qpv-sheet .qpv-amt{display:flex;gap:10px;align-items:baseline;margin:8px 0 0}
.qpv-sheet .qpv-amt span:first-child{color:#111;width:auto;font-size:12px}
.qpv-sheet .qpv-amt b{font-size:21px;border-bottom:2px solid #111;padding:0 34px 2px 10px}
.qpv-sheet .qpv-meta2{font-size:12px;line-height:1.9}
.qpv-sheet .qpv-meta2 span{display:inline-block;width:52px}
.qpv-sheet .qpv-clinic{font-size:10.5px;line-height:1.7;margin-top:18px}
.qpv-sheet .qpv-clinic b{font-size:13px;display:block;margin-bottom:2px}
/* 保存済みの記録を開き直したときは、記録カードの枠を外して
   「診療録の枠」と「自費(オーダー)・スタンプ」を横に並べる(枠の右外に出す。2026-08-04 院長要望) */
.kcol-main .ent.editing{max-width:none}
.ent.editing{border:none !important;background:transparent !important;padding:0;box-shadow:none}
.ent.editing .enthead{background:none !important;margin:0 0 8px !important;padding:0 0 6px !important;border-radius:0}
.ent.editing .edmain.editor{background:#fff;border:2px solid #cfd8e0;border-radius:10px;padding:12px 14px}
.ent.k-karte.editing .edmain.editor{border-color:#8bc34a}
.ent.k-kakutei.editing .edmain.editor{border-color:#ecd873;background:#fffdf1}
.ent.k-op.editing .edmain.editor{border-color:#d7b9e0}
.ent.k-counsel.editing .edmain.editor{border-color:#9ec5e8}
.ent.editing .urabar{margin-bottom:8px}
/* 見積書プレビュー: 患者名と見積日もその場で直せる */
.qpv-sheet .qpv-cust{display:flex;align-items:baseline;gap:6px;border-bottom:1px solid #111;padding:0 26px 2px 0;max-width:330px}
.qpv-sheet .qpv-cust b{font-size:16px;border:none;padding:0}
.qpv-sheet .qpv-pn{font-size:16px;font-weight:700;padding:0;flex:1;min-width:60px}
.qpv-sheet .qpv-meta2{display:flex;align-items:center;gap:4px}
.qpv-sheet .qpv-qd{width:130px;font-size:12px;border:1px solid transparent;border-radius:4px}
.qpv-sheet .qpv-qd:hover{border-color:#cfd8e0}
/* 何枚になりそうかの目安 */
.qpv-pg{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:14px;white-space:nowrap}
.qpv-pg.ok{background:#eaf6ee;color:#1f8b4c;border:1px solid #bfe3cc}
.qpv-pg.warn{background:#fdf0e6;color:#b35309;border:1px solid #f0cba6}
.qpv-sheet .qpv-bikoin{font-size:11px;line-height:1.62}
/* なぞり書き(BOXの枠)は、備考の本文とまったく同じ字組みにする(ずれると枠が行からはみ出す) */
.qpv-sheet .qpv-bikomirror{font-size:11px;line-height:1.62}
/* 見積書タブ: プレビューの拡大縮小と、確定/一時保存の印 */
.qzoom{display:inline-flex;gap:3px;align-items:center}
.qzoom .mini{padding:2px 8px;font-size:11.5px}
.qprev-fit iframe{transform:scale(var(--qzoom,.52))}
.qbadge.fx{background:#eaf6ee;color:#1f8b4c;border:1px solid #bfe3cc;margin-left:6px}
.qbadge.tmp{background:#f2f5f8;color:#8a97a5;border:1px solid #dde4ea;margin-left:6px}
/* 🅰 見積書のフォント選び */
.qfrow{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid #d8e0e8;border-radius:8px;margin-bottom:8px;cursor:pointer}
.qfrow:hover{border-color:#9cc4f0;background:#f7fbff}
.qfrow.on{border-color:#1e6fe0;background:#eef5ff}
.qfrow.off{opacity:.5;cursor:default}
.qfrow input{margin-top:3px}
.qfl b{display:block;font-size:13px}
.qfl small{display:block;font-size:11.5px;color:#7a8794;line-height:1.5;margin-top:2px}
.qfup{border-top:1px solid #e4eaf0;padding-top:10px;margin-top:4px}
.qfup small{display:block;font-size:11px;color:#8a97a5;line-height:1.5;margin-top:5px}

/* ── 2026-08-05 見積書プレビューの窓を作り直し(左に縦のボタン・縦は画面いっぱい・書類は中央) ── */
.qpwin{position:fixed;top:0;right:0;height:100vh;width:min(72vw,1000px);z-index:1100;display:flex;touch-action:pan-x pan-y;
  background:#5a6672;border-left:1px solid #8d9dad;box-shadow:-10px 0 34px rgba(20,35,55,.34)}
/* 📄 b440: 開いている間の確定見積書のプレビューは、掴んで動かす窓(.linebw=2000)より上に出す。
   そうしないと、LINEの窓が開いている時に左の帯の「LINEで送る」が窓に覆われて押せない
   (押した手はLINEの窓に当たり、外側を押した扱いでプレビューが閉じるだけ=定型文が入らない)。
   「LINEで送る」を押した後は qtop が外れて 1100 に戻る(LINEの窓が前に出て返信欄が見える) */
.qpwin.qtop{z-index:2010}
.qpwin-side{width:66px;flex-shrink:0;background:#2f4358;display:flex;flex-direction:column;align-items:center;gap:9px;padding:10px 6px;
  cursor:move;user-select:none;touch-action:none}
.qpwin-side::after{content:'⣿ 掴んで動かせます';writing-mode:vertical-rl;font-size:9.5px;color:#8fa6bd;margin-top:8px;letter-spacing:.12em}
.qpw-x{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;
  background:#d93025;color:#fff;font-size:22px;font-weight:700;cursor:pointer;line-height:1;user-select:none}
.qpw-x:hover{background:#b3261e}
.qpw-b{width:54px;padding:8px 2px;font-size:11.5px;line-height:1.35;border-radius:8px;border:1px solid #7d8fa1;
  background:#f4f6f8;color:#2f4358;cursor:pointer;text-align:center}
.qpw-b.pri{background:#1e6fe0;color:#fff;border-color:#1e6fe0;font-weight:700}
.qpw-b:hover{filter:brightness(1.06)}
.qpw-zoom{margin-top:auto;display:flex;flex-direction:column;align-items:center;gap:4px}
.qpw-zoom button{width:34px;height:28px;font-size:15px;font-weight:700;border-radius:6px;border:1px solid #7d8fa1;background:#f4f6f8;color:#2f4358;cursor:pointer}
.qpw-zoom b{font-size:11px;color:#cfe0f0;cursor:pointer;padding:2px 0}
.qpwin-body{flex:1;overflow:auto;display:flex;align-items:flex-start;justify-content:center;padding:14px;-webkit-overflow-scrolling:touch}
.qpwin-stage{position:relative;flex:none;margin:auto}
.qpwin-catch{position:absolute;inset:0;z-index:2;background:transparent;touch-action:none;cursor:default}
.qpwin-stage iframe{width:794px;height:1123px;border:0;background:#fff;transform-origin:top left;position:absolute;top:0;left:0;box-shadow:0 4px 18px rgba(0,0,0,.3)}
@media (max-width:900px){.qpwin{width:100vw}}
/* ✍️ 訂正理由の欄を目立たせる */
.revbox{border:2px solid #e0a800;background:#fffdf3;border-radius:9px;padding:10px 12px;margin-bottom:10px}
.revbox b{display:block;font-size:13px;color:#8a6a10}
.revbox small{display:block;font-size:11.5px;color:#7a6a3a;line-height:1.55;margin:3px 0 7px}
.revbox input{width:100%;padding:7px 9px;font-size:13px;border:1px solid #e0a800;border-radius:6px}
/* 見積書プレビュー窓: A4の形にそろえる(横に広すぎたのを修正) */
.qpwin{width:auto;max-width:96vw}
.qpwin-body{width:calc((100vh - 34px) * 0.707 + 28px);max-width:calc(96vw - 66px)}
.qpwin-stage{margin:0 auto}
/* 訂正理由: 書けたら緑になって「保存できます」と分かる */
.revbox.ok{border-color:#3aa35c;background:#f2fbf5}
.revbox.ok b{color:#1f7a44}
.revbox .revstat{display:block;font-size:11.5px;font-weight:700;color:#b3651b;margin-top:6px}
.revbox.ok .revstat{color:#1f8b4c}

/* ── 💬 LINEの窓(2026-08-06 右端に立つ縦長の別窓に作り替え) ── */
.linewin{position:fixed;z-index:2000;display:flex;background:#eef1f4;border:1px solid #06c755;border-radius:12px;
  box-shadow:0 22px 60px rgba(20,35,55,.45);overflow:hidden}
.lwrail{width:62px;flex-shrink:0;background:#06c755;display:flex;flex-direction:column;align-items:center;gap:9px;padding:9px 5px}
.lwrail button{width:52px;border:none;border-radius:9px;background:rgba(255,255,255,.18);color:#fff;font-size:16px;line-height:1.1;
  cursor:pointer;padding:7px 2px;font-weight:700}
.lwrail button small{display:block;font-size:9.5px;font-weight:700;margin-top:3px;line-height:1.25}
.lwrail button:hover{background:rgba(255,255,255,.34)}
.lwrail .lwx{background:#fff;color:#0b7a39}
.lwrail .lwx:hover{background:#eafbf1}
.lwrail .lwn{margin-top:auto;font-size:10px;color:rgba(255,255,255,.85)}
.lwmain{flex:1;min-width:0;display:flex;flex-direction:column}
.lwbar{display:flex;align-items:center;gap:7px;padding:8px 10px;background:#0b7a39;color:#fff;cursor:move;user-select:none;touch-action:none}
.lwbar b{flex:1;min-width:0;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lwbar b span{font-weight:400;font-size:12px;opacity:.9;margin-left:5px}
.lwbar .mini{padding:3px 9px;font-size:12px}
.lwerr{margin:6px 9px 0;font-size:12px}
.lwinfo{padding:8px 9px 2px;background:#f6f9fb;border-bottom:1px solid #dde5ec;max-height:32%;overflow:auto}
.lwinfo .lineown{margin-bottom:6px;padding:5px 8px}
.lwinfo .lineown b{font-size:12px}
.lwinfo .lineown small{font-size:10.5px}
.lwinfo .lineown a{font-size:11px}
.linewin .linechat{flex:1;min-height:0;max-height:none;margin:8px;border-radius:10px;overscroll-behavior:contain}
.linewin .lmsg .lbub{max-width:86%;padding:7px 11px}
.linewin .lmsg .ltxt{font-size:11.5px;line-height:1.55}
.linewin .lmsg small{font-size:9.5px}
.linewin .lwho{font-size:9.5px;color:#22384f;background:rgba(255,255,255,.72);border-radius:8px;padding:1px 7px;margin-bottom:2px;font-style:normal}
.lwmix{flex-basis:100%;margin-top:5px;background:#fff6e5;border:1px solid #f0d08a;border-radius:7px;padding:6px 9px;font-size:11px;color:#8a5a00;line-height:1.6}
.lwmix b{color:#8a5a00;font-size:11px}
.lwmix a{margin-left:8px;color:#1e6fe0;text-decoration:underline;cursor:pointer;font-size:11.5px;float:none}
.lwwarn{background:#fff6e5;border:1px solid #f0d08a;border-radius:7px;padding:6px 9px;font-size:11.5px;color:#8a5a00}
.linewin .lmsg .lbub img{max-width:min(190px,60%);max-height:240px}
.lwnone{color:#fff;font-size:12.5px;text-align:center;padding:20px 0;opacity:.9}
/* ── 💬 LINE一括画面(2026-08-07 試作) ── */
/* 🧪 2026-09-16 b489 先生の逐語「(目立たない)白/灰の小さい縦の米粒のようなボタンを。」
   置き場所=「💬 LINE」のすぐ右。文字は入れない。ふだんは薄く、カーソルを乗せた時だけ少しはっきりする。
   ⚠️ バーは高さ44px固定(.mnav)・この米粒は 16px なので、**行の高さも他の項目の縦位置も変わらない** */
.mnav a.ntestpt{width:7px;height:16px;padding:0;margin:0 3px;border-radius:4px;
  background:#e9edf2;opacity:.42;flex:0 0 auto;line-height:0;align-self:center}
.mnav a.ntestpt:hover{background:#fbfdff;opacity:.85}
.mnav a.linenav{background:#06c755;color:#fff;font-weight:700;border-radius:6px;padding:5px 13px}
/* 🩷 2026-09-19 b535 先生の逐語「長文解答案が作られた際は、管理者の私のみ、上部バーの『LINE』のところにも、ピンクと白数字で通知
   されているようにお願いします。」
   ・.lnav-hw = 「💬 LINE」のすぐ右に置く**幅0・高さ0**の入れ物(バーの並び・ボタンの高さ44px・文字は1つも変わらない)。
     バーの gap(2px) ぶんを margin-left:-2px で戻し、入れ物の左端 = ボタンの右端
   ・.lnav-hn = その入れ物から絶対配置。右端 = ボタンの右端から 1px 内側(right:1px)・上端 = バーの上から 4px(入れ物はバーの真ん中 22px に
     いるので top:-18px)。数字の描き方は院のピルのピンクの数字(b533 .lcpick-n.lcpick-nh)と同じ: 15px・白の太字・薄いピンク半透明の地(#ff7fa8 の55%)
   ・pointer-events:none = 数字を押してもボタンを押したのと同じ */
.mnav .lnav-hw{position:relative;display:block;width:0;height:0;margin-left:-2px;overflow:visible;flex:0 0 0;pointer-events:none}
.mnav .lnav-hn{position:absolute;right:1px;top:-18px;min-width:15px;height:15px;padding:0 4px;box-sizing:border-box;
  border-radius:999px;background:rgba(255,127,168,.55);color:#fff;font-size:9px;line-height:15px;font-weight:700;text-align:center;
  font-style:normal;letter-spacing:0;white-space:nowrap;pointer-events:none}
.mnav a.linenav.on{background:#0b7a39}
/* 🏥 フルページ版(#/line)の院の切替だけの行(batch237で見出しの行を撤去したので、
   置き場としてこの小さな行だけ残す。題も説明文も置かない) */
.lib-clbar{margin:0 0 6px;line-height:1}
.lib-clbar .lcpicks{margin-left:0}
/* batch237: 見出しの行を撤去して3列の上端が3px上がったので、その3pxは3列の縦幅にまわす
   (下端は今までと同じ位置。190→187) */
/* 📏 b259③(先生の逐語「左の一覧、真ん中のウインドウ、右のnoteあたりの領域、全て線一本で
   分けられているようです。これもほとんど完全に忠実に」)。3列の隙間(12px×2=24px)を無くし、
   仕切りは細い線1本だけにする。空いた24pxは**全部**真ん中に渡す(下の .lib-right の flex-basis) */
.lib{display:flex;gap:0;height:calc(100vh - 187px);min-height:420px}
/* 📐 3列の比は 左(一覧):中(本文):右(メモ) = 1:2:1(2026-08-31 batch232 先生の逐語
   「左：患者一覧、真ん中：本文、右：メモ の並びですが、LINEと似せて、1:2:1くらいにしたいです」)。
   ⚠️ flex-basis は「0%」と書く(単位なしの「0」は flex の一括指定では無効として捨てられる)。
   大窓(.linebw)とフルページ版(#/line)は同じ .lib を使うので、ここ1か所で両方に効く */
/* b259③: 箱(枠+角丸)をやめ、右どなりとの仕切りの線1本だけにする */
.lib-left{flex:1 1 0%;min-width:0;display:flex;flex-direction:column;
  border:0;border-right:1px solid #dbe3ea;border-radius:0;overflow:hidden;background:#fff}
/* ☰ batch235: 左端に三本線(絞り込み)、検索窓は2/3の幅で右端(「未ひもづけ」があった位置)へ */
/* 📏 b259⑦(先生の逐語「左の一覧の上の方『全4744人/新しい順に〜』などの行は撤去でお願いします。
   その分上の検索窓の行を1.3倍に大きく」)。もとの行の高さ46px × 1.3 = 59.8px */
/* 📏 b291(先生の逐語「左の一覧検索窓は今の10分の7の大きさにして右に詰めてください。また、その左の3本横線は、
   検索窓のすぐ左に位置させて頂ければと思います」)。検索窓 66% × 7/10 = 46.2% で右端のまま。
   三本線は左端固定をやめ、包み(.lib-bwrap)に margin-left:auto を付けて検索窓のすぐ左(間は gap の 8px)へ。
   高さ(59.8px)・字の大きさ(12.5px)は変えていない */
/* 📏 b294⑤(2026-09-05 先生の逐語「LINEの左上の(検索窓)領域ですが、余白が上下にあるので、上下とも今の5分の2くらいに
   なるようにしてください。スペースができた分は下の患者一覧を上に詰めてください」)。
   前は行の高さ 59.8px の中で検索窓(実測 29.0px)を上下中央に置いていた=上下の余白は (59.8−29.0)/2 = 15.4px ずつ。
   その 2/5 = 6.16px を上下の padding にし、高さの固定(59.8px)をやめて中身なりに(29.0+6.16×2+下の線1px ≒ 42.3px)。
   一覧(.lib-list)はこの行の直下なので、空いた 18.5px ぶんそのまま上に詰まる。字の大きさ・幅・並びは b291 のまま */
.lib-search{position:relative;display:flex;gap:8px;align-items:center;padding:6.16px 8px;
  border-bottom:1px solid #eef2f6}
.lib-search input{flex:0 0 auto;width:46.2%;min-width:0;padding:6px 9px;font-size:12.5px}
.lib-bwrap{position:relative;flex:0 0 auto;margin-left:auto;display:flex;align-items:center}
.lib-search label{display:flex;align-items:center;gap:4px;font-size:11px;color:#5c6b7a;white-space:nowrap}
.lib-burger{flex:0 0 auto;width:22px;height:22px;line-height:20px;text-align:center;border-radius:6px;
  border:1px solid #c8d3de;background:#fff;color:#5c6b7a;font-size:13px;cursor:pointer;user-select:none;text-decoration:none!important}
.lib-burger:hover,.lib-burger.on{background:#e8f3ff;border-color:#1e6fe0;color:#1e6fe0}
/* b291: メニューの基準は行(.lib-search)ではなく三本線の包み(.lib-bwrap)。left:0 で三本線の真下・左そろえ。
   縦の位置は前と同じ所(三本線の下端 40.9px + 16px ≒ 行の下端 59.8px − 3px)
   b294⑤: 行が低くなった(三本線の下端は行の下端の 9.7px 上)ので、同じ「行の下端 − 3px」に出るよう +16px → +7px */
.lib-fmenu{position:absolute;left:0;top:calc(100% + 7px);z-index:7;background:#fff;border:1px solid #c8d3de;border-radius:8px;
  box-shadow:0 4px 14px rgba(20,35,55,.18);padding:3px 0;min-width:96px}
.lib-fmenu a{display:block;padding:6px 12px;font-size:12px;color:#243b53;cursor:pointer;white-space:nowrap;text-decoration:none!important}
.lib-fmenu a:hover{background:#f0f6ff}
.lib-fmenu a.on{background:#1e6fe0;color:#fff}
/* b259⑦: 「全◯人 / 新しい順に300人まで」の行は画面から撤去した(.lib-note の指定も一緒に外した) */
.lib-list{flex:1;overflow:auto}
/* 🖼 batch236(院長要望・LINE公式の一覧に忠実): 行は横2枠。
   [大きいアイコン(縦3行ぶんをまたぐ)][本体 = 氏名+時刻 / 本文+緑丸 / 要対応] */
/* b259③: 行と行のあいだの線は無くす(公式LINEの一覧は線なし。選んでいる行だけ薄い地色)。
   b259⑧(先生の逐語「患者アイコンを20分の19にして頂き、アイコンとアイコンの間の空白を
   アイコンの縦幅の1.117倍も受けるように」):
     アイコン 51 × 19/20 = 48.45px / アイコンどうしの空き = 48.45 × 1.117 = 54.12px
     → 行の高さ = 48.45 + 54.12 = 102.57px(固定。3行目の要対応が出ても変わらない)
   📏 b261②(先生の逐語「患者一覧のアイコン間の空白はやはり元の16分の12で」):
     「元の」= b259⑧の 54.12px。54.12 × 12/16 = 40.59px
     → 行の高さ = 48.45 + 40.59 = 89.04px(アイコンは行の上下中央なので、
       行の高さ − アイコンの直径 = そのままアイコンどうしの空きになる)
     (b260①の 13/16 = 43.9725px / 高さ92.4225px は差し替え) */
.lib-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:0;
  height:89.04px;cursor:pointer}
/* 📐 b260②(先生の逐語「患者ごとの日時表示の上縁が、患者アイコンの上縁と同じ高さ程度で」)。
   本文の塊をアイコンとまったく同じ高さ(48.45px)の箱にする。行は align-items:center なので
   アイコンとこの箱は同じ位置で上下中央にそろい、**箱の上端 = アイコンの上端**になる。
   1行目(氏名+日時)はこの箱の先頭に来るので、日時の上縁がアイコンの上縁と重なる
   (日時そのものは .lib-when の align-self:flex-start で行の中でも上端に付ける) */
.lib-body{flex:1 1 0%;min-width:0;align-self:center;height:48.45px}
/* 2行目: 本文は氏名と同じ左端から。右端(=時刻の真下)に未読の緑丸 */
.lib-l2{display:flex;align-items:center;gap:6px;padding-right:18px;margin-top:2px}
/* 3行目: 要対応のタグは本文の下 */
/* 🚩 3行目のタグの行(batch236)。b265 から「要対応」タグの右に印(🟥🔵🐗🟡🟦)が並ぶ */
.lib-tags{margin-top:2px;line-height:1;display:flex;align-items:center;gap:3px}
/* 🟥🔵🐗🟡🟦 b265 先生の逐語「要対応の位置の右にそれらのアイコンが出る」。
   要対応タグと同じ高さにそろえ、説明文は付けない(印だけ) */
.lib-tmk{font-style:normal;font-size:11px;line-height:1}
/* 💴 2026-09-22 b573 先生の逐語「上部バーのテスト患者トップ呼び出しボタン同様の、縦長の(色は茶色に！)アイコンが、
   その後同じ右クリックにて解除するまでは、🟦などと同様に表示され続けるようにして欲しいです。
   (ラインウインドウ左の患者一覧でも。)」
   → 形は上のバーの米粒(.mnav a.ntestpt = 幅7px・角丸4px)とそろえ、色だけ変える。
     印なので薄くはしない(あちらは opacity:.42 の「目立たない」ボタン。こちらは見えないと意味がない)。
   💴 2026-09-22 b580 先生の逐語「『次回手数料発生』のアイコンは柔らかいオレンジ色に近づけて下さい。
      縦長さも、今の6分の5くらいに。」
   ・色: 茶色 → **下の background の柔らかいオレンジ**。色あい(オレンジ系の約27度)は茶色と同じまま、
     明るさと鮮やかさだけ上げた =「近づけて下さい」。原色のオレンジほどきつくない、落ち着いた色
     ⚠️ 色の値を書いてよいのは下の1行だけ(この覚え書きにも二度書かない。片方だけ直して食い違うのを防ぐ)
   ・高さ: 16px × 5/6 = **13px**。幅(7px)と角の丸み(4px)は変えない(上のバーの .ntestpt も1pxも触っていない)
   ・高さが3px低くなったぶん、文字との縦のそろえを -3px → -2px に(印の上下の位置は今までとほぼ同じ所)
   ⚠️ 出る場所は b580 で ①左の一覧の氏名の直後(.lib-nmfee) ②ノートの最上段(.lib-feenote)
      ③右クリックの小窓(.lm-fee-ctx)の3か所。真ん中の見出し(.lib-dr i)には出さない(先生の明示) */
.lm-fee{display:inline-block;width:7px;height:13px;border-radius:4px;background:#e8944d;
  vertical-align:-2px;flex:0 0 auto}
/* 💴 b580 ①左の一覧: [氏名][この印][半角スペース+ステータス]。ステータス側が自前で半角スペースを持っているので、
   足す余白は氏名との間の3pxだけ(行も高さも増やさない=省スペース) */
.lib-nmfee{margin-left:3px}
/* 💴 b580 ③右クリックの小窓の中の印(文字の左)。.calctx a は display:block なので縦のそろえだけ整える */
.calctx a .lm-fee-ctx{margin-right:6px}
/* 💴 b580 ②ノートの最上段の1行(アイコン+赤文字「予約手数料発生有り」)。
   ・置き場所はノートの見出し(.lib-memo-h)のすぐ下・本文の入れ物(.lib-memo-b)の**外**。
     段取り表も本文も .lib-memo-b の中で入れ替わるので、この行は段取り表が出ても入れ替わらない・隠れない
   ・赤は画面で既に使っている赤(b455の札・dr対応の印と同じ #e03131)
   ・編集不可の札なので文字は選べない(user-select:none)・カーソルも矢印のまま(cursor:default)
   ・1行で折り返さない(省スペース)。説明文・案内の帯は置かない */
.lib-feenote{flex:0 0 auto;display:flex;align-items:center;gap:5px;padding:3px 8px;background:#fff;
  border-bottom:1px solid #eef2f6;cursor:default;user-select:none}
.lib-feenote b{flex:1 1 auto;min-width:0;font-size:11.5px;font-weight:700;line-height:1.35;color:#e03131;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-row:hover{background:#f4f8fc}
.lib-row.on{background:#e8f3ff;box-shadow:inset 3px 0 0 #1e6fe0}
/* 🕒 batch233: 1行目=[印+名前(省略あり)]…[日時] / 2行目=本文の冒頭。2段目の
   「氏名/やり取り数/西暦入りの日時」は撤去した(院長要望・省スペース) */
/* 氏名は太字にしない(batch235 先生の逐語「氏名は太字じゃないように」)。
   <b>は行の1段目の枠として残し、太さだけ普通に戻す */
.lib-row b{display:flex;align-items:center;font-size:12.5px;font-weight:400;line-height:1.3}
/* 🖼 アイコン+📌 青い画鋲(batch235)。画像が無い相手でも既定の丸(.lav0)の上に同じように重なる */
.lib-ava{position:relative;display:inline-flex;align-items:center;flex:0 0 auto}
.lib-ava .lav{margin-right:0}
.lib-nmw{flex:1;min-width:0;display:flex;align-items:center;overflow:hidden}
.lib-nmw>*{flex-shrink:0}
/* 🔤 b258①: 一覧の氏名だけ1.08倍(12.5px→13.5px)。時刻・本文の冒頭・タグは今までのまま */
/* 📛 b263⑦: 縮むのは**ステータスの側から**(氏名を先に削らない)。
   氏名は縮まない(flex-shrink:0)が、max-width:100% があるので氏名だけで入りきらない時は
   今までどおり「…」で省略される */
.lib-nm{flex-shrink:0;max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}
/* ↔ b258④: 日時は緑丸1.6個分(9px×1.6=14.4px)だけ右へ。position:relativeなので
   まわりの取り分(=氏名の幅・本文の右端)は1pxも動かさない */
/* ⬆ b260②: 日時は1行目の中でも「上端そろえ」にする。氏名(13.5px)より文字が小さいので、
   中央そろえのままだと約2px下がってしまう。上端に付けることで
   日時の上縁 = 1行目の上端 = .lib-body の上端 = アイコンの上端 になる */
.lib-when{flex-shrink:0;margin-left:8px;font-size:10.5px;font-weight:400;color:#8a97a5;white-space:nowrap;
  align-self:flex-start;position:relative;left:14.4px}
/* 🏷 b263⑦(先生の逐語「左の患者一覧には氏名表記はスペースなしで、氏名の後ろに半角スペース置いて、
   氏名下のメッセージ分と同じフォントサイズでステータス名が書かれるように」)。
   ・大きさは .lib-last と同じ 11px(氏名の13.5pxより小さい) ・半角スペースは中身に持たせるので
     white-space:pre で詰められないようにする ・長い時は氏名より先にここが省略される */
.lib-st{flex-shrink:100;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:pre;
  font-size:11px;font-weight:400;color:#5c6b7a}
.lib-nolk{margin-left:4px;font-size:10.5px;color:#c98b00}
.lib-last{flex:1 1 0%;display:block;font-size:11px;line-height:1.35;color:#5c6b7a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 🔎 2026-09-06 b318 先生の指示: 検索窓でやり取りの本文も探す・多すぎる語は並べない
   ・.lib-bodyn = 一覧の上の小さな1行(「本文: N人」/「本文: 多すぎて省略」)。件数だけ・帯や説明文は付けない(省スペース)
   ・.lib-hm = 本文で当たった行の「一致の前後」の中の、当たった語(太字)
   ・.lmsg.lhit = その行を押して開いた時、一致したメッセージの行を淡い黄色で一瞬(1.8秒)光らせる */
.lib-bodyn{padding:3px 10px 0;font-size:10.5px;line-height:1.3;color:#8a97a5;white-space:nowrap}
.lib-last .lib-hm{font-weight:700;color:#243b53}
@keyframes lhit-glow{0%,35%{background-color:#fff3a8}100%{background-color:transparent}}
.lmsg.lhit{animation:lhit-glow 1.8s ease-out;border-radius:12px}
/* b259③: 真ん中も箱をやめる。仕切りは左どなり(.lib-left の右の線)と右どなり(.lib-side の左の線)。
   ⭐ flex-basis の 12px = 「消した隙間のぶんを真ん中に譲る」分(2列のとき=隙間1つぶん)。
      3列のときは下の .lib-sw の 24px(隙間2つぶん)が効く */
.lib-right{flex:2 1 12px;min-width:0;display:flex;flex-direction:column;
  border:0;border-radius:0;overflow:hidden;background:#fff}
.lib-head{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid #eef2f6;background:#f6f9fb;flex-wrap:wrap}
/* 🔤 b258①: 会話の見出しの氏名も1.08倍(13.5px→14.58px) */
.lib-head b{font-size:14.58px}
.lib-head a{font-size:11.5px;color:#1e6fe0;cursor:pointer;text-decoration:underline}
.libdot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle;background:#dde4ea}
.libdot.cl-gz{background:#4fc3f7}
.libdot.cl-fk{background:#f5a623}
.libdot.cl-os{background:#ff7fa8}
/* 🏥 院のワンタッチ切替(batch231)。大窓のバー(✕閉じるの右)と全ページ版のh3に出る小さなピル。
   色は院カラーの丸(b230)と同じ: 大阪=ピンク#ff7fa8 / 福岡=黄#f5a623 / 銀座=水色#4fc3f7 */
.lcpicks{display:inline-flex;gap:4px;margin-left:8px;vertical-align:middle}
/* 🩶 2026-09-02 batch248 先生の逐語「選んでいない状態だとほぼ透明で薄いグレーっぽい状態に
   (文字は判別できる程度に)。選ぶとくっきりしたそれぞれの色に(今と同じで良いです)」。
   ・選んでいない = ほぼ透明(10%)の薄いグレー。院ごとのパステルの下地は**選ぶまで出さない**
     (以前は未選択でもピンク/黄/水色が付いていて、どれを選んでいるか分からなかった)
   ・選んでいる(.on)= 今までとまったく同じ色。すべて=#33475b / 大阪=#ff7fa8 / 福岡=#f5a623 / 銀座=#4fc3f7
   ・同じ作法を大窓のバー・フルページ版(.lib-clbar)・定型文の窓の院ピルすべてに当てる(同じクラス) */
.lcpick{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;line-height:1.5;font-weight:600;
  border:1px solid rgba(140,152,166,.28);background:rgba(140,152,166,.10);color:#97a3af;
  cursor:pointer;white-space:nowrap;text-decoration:none!important;user-select:none}
.lcpick:hover{background:rgba(140,152,166,.20);color:#5c6b7a}
.lcpick.on{background:#33475b;border-color:#33475b;color:#fff}
.lcpick.cl-os.on{background:#ff7fa8;border-color:#ff7fa8;color:#fff}
.lcpick.cl-fk.on{background:#f5a623;border-color:#f5a623;color:#fff}
.lcpick.cl-gz.on{background:#4fc3f7;border-color:#4fc3f7;color:#fff}
/* 🟢 b305①(2026-09-05 先生の逐語「未読のLINEが届いている時、その数を🟢のような緑の丸に白文字で数字で…大阪院、福岡院、
   銀座院のボタンの右下あたりに(ボタンに乗り上げる形でもok)…大阪、福岡、銀座はわずかに間隔を広げても大丈夫です。
   行の縦幅は広げすぎないで欲しいです」)。
   ・丸(.lcpick-n)はピルの**右下に乗り上げる**絶対配置。行の流れに入らないので帯の高さは1pxも変わらない(検査で実測)
   ・直径15px・9pxの太字の白・緑は一覧の未読の●と同じ#06c755。2桁でも丸が横に伸びるだけ(99+まで)
   ・丸が右へ6pxはみ出すぶん、院のピルの並び(.lcp-main=大窓のバーとフルページ版の ClinicPick だけ)の間隔を
     4px→9px にわずかに広げた。定型文の窓の院ピル(.ltpl-bar .lcpicks)は今までどおり4px
   ・pointer-events:none = 丸を押してもピルを押したのと同じ(丸が押し損ねの原因にならない) */
.lcpick{position:relative}
.lcpicks.lcp-main{gap:9px}
.lcpick-n{position:absolute;right:-6px;bottom:-4px;min-width:15px;height:15px;padding:0 4px;box-sizing:border-box;
  border-radius:999px;background:#06c755;color:#fff;font-size:9px;line-height:15px;font-weight:700;text-align:center;
  font-style:normal;letter-spacing:0;white-space:nowrap;pointer-events:none}
/* 🩷 b533(2026-09-19 先生の逐語「左上の院のボタンにある緑背景白数字の左隣に薄いピンク透明背景＋白数字を、管理者の私上原だけが
   その数字を見れる形にして置いておいてくれますか？」)
   ・ピンクの数字 = 緑の丸(.lcpick-n)と同じ大きさ・字・位置の決め方(同じクラス)。地だけ薄いピンクの半透明(大阪院の #ff7fa8 を55%)
   ・g1/g2/g3 = 緑の桁数(1桁=15px / 2桁=18px / 99+=23px。Chrome で実測)ぶん左へずらし、すき間2pxで緑の**すぐ左隣**に置く
     (right = 緑の幅 - 4px。緑は right:-6px なので、緑の左端 = ピルの右端 + 6 - 幅。そこから 2px 空ける)
   ・g0 = 緑が無い時は緑と同じ場所(右下)。緑の丸そのものの書き方は1文字も変えていない */
.lcpick-n.lcpick-nh{background:rgba(255,127,168,.55)}
.lcpick-n.lcpick-nh.g1{right:11px}
.lcpick-n.lcpick-nh.g2{right:14px}
.lcpick-n.lcpick-nh.g3{right:19px}
/* 📗 未読の緑丸(batch231): 名前の右の小さな●(LINE公式の見た目に寄せた#06c755)。
   患者様側のLINEの既読には一切影響しない(院内の「誰も開いていない」目印だけ) */
/* ↔ b258④: 未読の緑丸も日時と同じだけ(直径9px×1.6=14.4px)右へ。
   🟢 b260③(先生の逐語「緑丸の表示は患者アイコンと同じ高さにして、今の直径1.2倍の大きさで」):
     ・大きさ = 9px × 1.2 = 10.8px
     ・高さ = 患者アイコンと同じ = 行の縦の真ん中(アイコンは .lib-row の上下中央そろえ)。
       2行目の中では真ん中に置けないので、行(.lib-row は position:relative)に対する
       絶対配置にして top:50% で縦中央に合わせる(⋮ の .lib-dots とまったく同じ作法)
     ・左右は b258④ の位置をそのまま保つ: もとは 2行目(.lib-l2 の padding-right:18px)の
       右端から left:14.4px 右 = 行の右端から 10 + 18 − 14.4 = 13.6px 内側。
       日時(.lib-when)の右端(行の右端から 13.6px 内側)ともそろったまま */
.lib-unread{display:block;position:absolute;right:13.6px;left:auto;top:50%;margin-top:-5.4px;
  width:10.8px;height:10.8px;border-radius:50%;background:#06c755}
/* 🩷 2026-09-19 b534 先生の逐語「どの人かすぐわかるように左の患者一覧で未読の緑の丸の下にピンクの丸をつけて欲しいです。
   (管理者にだけ見えるように。」: Haiku の回答案を管理者がまだ開いていない相手の印。
   ・大きさ・左右・作法は緑の丸(.lib-unread)とまったく同じ(直径10.8px・行の右端から13.6px・行に対する絶対配置)
   ・縦は緑の**真下**: 緑の下端(行の真ん中+5.4px)から2px空けて = margin-top:7.4px。緑が無い(既読の)相手でも同じ位置
   ・色は院のピルのピンクの数字(b533・rgba(255,127,168,.55))より濃く(小さい丸なので見えるように)・白い縁1.5px
   ・緑の丸そのものの書き方は1文字も変えていない */
.lib-hnew{display:block;position:absolute;right:13.6px;left:auto;top:50%;margin-top:7.4px;
  width:10.8px;height:10.8px;border-radius:50%;background:rgba(255,127,168,.9);box-shadow:0 0 0 1.5px #fff}
.lib-nolink{font-size:11.5px;color:#8a5a00;background:#fff6e5;border:1px solid #f0d08a;border-radius:7px;padding:2px 8px}
/* b260⑥(先生の逐語「真ん中のテキストウインドウ上部の5件などメッセージの回数は撤去で大丈夫です」)
   → 会話の見出しの「◯件」は画面から撤去した(.lib-cnt の指定も一緒に外した) */
/* 🖼 LINEのアイコン(2026-08-31 batch234)。line_users.pic のURLをそのまま出す。
   画像が無い/読めない時も灰色の丸が残るので並びは崩れない(.lav0=既定の人型) */
.lav{flex:0 0 auto;display:inline-block;width:32px;height:32px;border-radius:50%;
  background:#dbe2ea;object-fit:cover;position:relative;overflow:hidden}
.lav0::before{content:'';position:absolute;left:50%;top:20%;width:34%;height:34%;border-radius:50%;background:#fff;transform:translateX(-50%)}
.lav0::after{content:'';position:absolute;left:50%;top:60%;width:60%;height:46%;border-radius:50% 50% 0 0;background:#fff;transform:translateX(-50%)}
/* 🖼 一覧のアイコン(batch236): 直径51px = batch234の17pxの3倍(先生の逐語「直径で3倍」)。
   b259⑧: その20分の19 = 48.45px(行の高さは .lib-row 参照) */
.lav-l{width:48.45px;height:48.45px}
/* 🪪 右のゾーンのアイコン(batch237): 一覧の51pxのさらに1.5倍=77px(先生の逐語
   「この時のアイコンは3倍にしたアイコンのさらに1.5倍」) */
.lav-xl{width:77px;height:77px}
.lib-head .lav{width:22px;height:22px;margin-right:6px;vertical-align:-6px}
/* 📐 b260⑧(先生の逐語「テキストウインドウ周囲も、公式LINEと同じに、線一本で他の領域と
   区切られている、という状態に忠実に」)。b259③で3列の仕切りを線1本にしたのと同じ作法を
   会話と返信欄にも当てる: 会話の箱の外の余白(8px)と角丸(10px)をやめる。
   空いた上下16pxは会話の高さにそのまま回る */
.lib-right .linechat{flex:1;min-height:0;max-height:none;margin:0;border-radius:0}
/* 💬 真ん中の会話をLINE公式に寄せる(2026-08-31 batch234 院長要望)。
   [アイコン][吹き出し] 19:29 の横並びにし、時刻を吹き出しの外の横に置く(=1行ぶん詰まる)。
   ⚠️ 患者ページのLINE窓(.linewin)は今までどおりなので .lib-right で囲って効かせる */
/* 🔤 b258①: 会話の吹き出しの本文だけ1.08倍(13px→14.04px)。
   ⚠️ 患者ページのLINE窓(.linewin 11.5px)や時刻(small)は今までのまま */
/* 📏 b261①(先生の逐語「行間はやはり元の10分の8.2倍で」): 「元の」= 1.6。1.6 × 8.2/10 = 1.312
   (b260④の 7/10 = 1.12 は差し替え)
   b260⑤(先生の逐語「メッセージ間の上下距離は今の1.55倍で」): 9px × 1.55 = 13.95px(そのまま)
   ⚠️ どちらも LINE(一括)の会話だけ。患者ページのLINE窓(.linewin)は今までのまま */
.lib-right .lmsg .ltxt{font-size:14.04px;line-height:1.312}
.lib-right .lmsg{flex-direction:row;align-items:flex-end;gap:6px;margin-bottom:13.95px}
.lib-right .lmsg.out{flex-direction:row-reverse}
.lib-right .lmsg small{margin:0 0 3px}
.lib-right .lavx{background:none}
/* 🎨 b259①(先生の逐語「実際の公式LINEと同じでメッセージの背景は白で、こちらからのメッセージの
   背景色ももっとかなり薄い淡い緑に。相手のメッセージはかなり薄い灰色に。目に優しい感じが」)。
   ⚠️ 患者ページのLINE窓(.linewin)は今までどおり。ここは LINE(一括)の会話だけ
     ・会話の地 = 白 #ffffff
     ・相手(受信) = ごく薄い灰色 #f1f2f4
     ・こちら(送信)= ごく薄い淡い緑 #e9f6df(今までの #8de055 からかなり薄くした)
   地が白になったので、白い文字で書いていた「送信中/失敗」の時刻も読める色に直す */
.lib-right .linechat{background:#fff}
.lib-right .lmsg .lbub:not(.lbare){background:#f1f2f4;box-shadow:none}
.lib-right .lmsg.out .lbub:not(.lbare){background:#e9f6df}
.lib-right .lmsg.lpend small{color:#8a97a5}
.lib-right .lmsg.lperr .lbub:not(.lbare){background:#ffd7d7;box-shadow:0 0 0 1.5px #e03131}
.lib-right .lmsg.lperr small,.lib-right .lmsg.lperr small a{color:#c0392b}
/* 📐 b259②(先生の逐語「相互のメッセージの上下の余白は7分の6に、左右の余白は11分の10に」)。
   もとは 8px 12px → 上下 8×6/7 = 6.857px / 左右 12×10/11 = 10.909px */
.lib-right .lmsg .lbub:not(.lbare){padding:6.857px 10.909px}
/* 📅 日をまたぐ境目の帯(今日 / 昨日 / 8/29(土曜))。中央に小さく */
.lday{text-align:center;margin:10px 0 8px}
.lday span{display:inline-block;padding:2px 11px;border-radius:11px;font-size:10.5px;
  color:#fff;background:rgba(24,40,60,.34)}
/* 🏥 どの院とのやり取りかの札(b244)。日付の帯の並びに小さく院名(院が替わる境目にだけ・b230の院カラー)。
   日付の帯(.lday)そのものには足さず、同じ見た目の別の帯(.lclband)で出す(b234の帯の形を保つ) */
.lclband{text-align:center;margin:2px 0 6px}
.lday+.lclband{margin-top:-4px}
.lclband .lday-cl{display:inline-block;padding:2px 8px;border-radius:11px;font-size:10px;color:#fff;
  background:rgba(24,40,60,.34)}
.lday-cl.cl-os{background:#ff7fa8}
.lday-cl.cl-fk{background:#f5a623}
.lday-cl.cl-gz{background:#4fc3f7}
/* ✉️ 返信欄(2026-08-31 batch232 で組み替え)。textareaの**下**に帯を置き、
   左に定型文の＋の吹き出し、右に「送信」「送信を予約」を並べる(LINE公式と同じ位置)。
   ⭐ batch237(先生の逐語 ⑦⑧⑨):
     ⑦ 返信欄の縦幅を1.5倍(min-height 52→78px / max-height 140→210px)
     ⑧ 文字を1.1倍(12.5→13.75px)
     ⑨ 下の(＋)・送信・送信を予約まわりの余白を3分の2に(欄との隙間5→3px・下の余白8→6px)。
        詰めたぶんは⑦の縦幅にまわる */
/* 📐 b260⑧: 返信欄の区画も「線一本」だけで会話と分ける(公式LINEどおり)。
     ・帯の地色(#f6f9fb)をやめて会話と同じ白に。境目は上の線1本(色はb259の仕切りと同じ#dbe3ea)
     ・上の隙間(padding-top:8px)もやめる。空いた8pxは会話の高さに回る
     ・入力欄そのものの枠・角丸も外す(公式は入力欄に枠が無く、地の色も同じ)。
       ⚠️ 枠を外しても box-sizing:border-box なので、下の縦幅(⑦)の実測値は変わらない
   📏 b260⑦(先生の逐語「デフォルトのテキストウインドウの縦幅は今の1.25倍で」):
     既定の高さ 78px × 1.25 = 97.5px。いちばん伸ばせる高さも同じ比で 210 × 1.25 = 262.5px
     (既定だけ上げて上限を据え置くと、伸ばせる余地が痩せるため比例させた) */
.lib-send{display:flex;flex-direction:column;gap:3px;padding:0 8px 6px;border-top:1px solid #dbe3ea;background:#fff}
.lib-send textarea{width:100%;box-sizing:border-box;min-height:97.5px;max-height:262.5px;padding:7px 10px;font-size:13.75px;border:0;border-radius:0;background:transparent;resize:vertical;font-family:inherit}
/* 💧 b259⑥(先生の逐語「真ん中下のテキストウインドウ内の説明文字ですが、公式LINEと同じ
   『Command +Enterで送信/Enterで改行』という文字で。この文字の薄さもライン側に合わせ、
   もっと薄く」)。ブラウザ既定の薄さ(およそ #757575)より、はっきり薄い #c4ccd4 にする */
.lib-send textarea::placeholder{color:#c4ccd4;opacity:1}
/* 📋 2026-09-07 b335 先生の指示: 日程案内の定型文に日時・医師名・相談内容・苗字を自動で。埋めた語に**薄い黄色の下線**。
   返信欄(textarea)の後ろに同じ文を透明の文字で重ね(.lib-tabd。字の大きさ・余白・折り返しは textarea と同じ)、
   埋めた語(mark.lib-tafill)の足元だけ薄い黄色を敷く。textarea は透明の地のまま上に載せる(z-index)。送る文には何も足さない */
.lib-tawrap{position:relative}
.lib-tawrap textarea{display:block;position:relative;z-index:1}
.lib-tabd{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;box-sizing:border-box;padding:7px 10px;font-size:13.75px;font-family:inherit;white-space:pre-wrap;overflow-wrap:break-word;color:transparent}
.lib-tabd mark.lib-tafill{background:transparent;color:transparent;box-shadow:inset 0 -3px 0 #fff0a0}
.lib-sendbar{display:flex;align-items:center;gap:4px}
/* ＋の吹き出し(小さく・LINE公式に寄せた丸い吹き出しに小さな尻尾) */
.lib-plus{position:relative;flex-shrink:0;width:22px;height:20px;border-radius:10px 10px 10px 3px;
  background:#fff;border:1px solid #b9c6d3;color:#5c6b7a;font-size:13px;line-height:18px;text-align:center;
  cursor:pointer;user-select:none}
.lib-plus:hover{background:#e8f3ff;border-color:#1e6fe0;color:#1e6fe0}
.lib-plus::after{content:'';position:absolute;left:1px;bottom:-4px;width:0;height:0;
  border:3px solid transparent;border-top-color:#b9c6d3;border-right-color:#b9c6d3}
/* 📎 ファイルを送る入口(2026-09-01 batch239)。公式と同じ位置=返信欄の下の帯の左、＋のとなり */
.lib-clip{flex-shrink:0;width:22px;height:20px;font-size:12.5px;line-height:20px;text-align:center;
  cursor:pointer;user-select:none;opacity:.7;text-decoration:none!important}
.lib-clip:hover{opacity:1}
/* 🐑 スタンプ(2026-09-05 b296 の😊+小窓 → 同日 b298 先生の逐語「😊のマークを未の顔に変えて、それを押すと
   未のお辞儀スタンプがダイレクトに発信…(ホバーするとお辞儀する未のマークがプレビューで浮かび上がる)」)。
   ・入口は📎のとなり(同じ大きさ 22×20・同じ薄さ)。中身はスタンプの絵(CDN)を高さ20pxに縮めた物。読めなければ 🐑 の文字
   ・ホバーのプレビュー = 同じ絵を 64px(b296 の小窓の1個ぶん)にしてボタンの真上に浮かべる。説明文は置かない。
     .lib-send は overflow を切っていないので、上の会話の上に素直に重なる(z-index は帯の中の小物=60 で足りる)
   ・b296 の小窓(.lstk-win/.lstk-band/.lstk-grid/.lstk-item/.lstk-hid/.lstk-ctx)は撤去した */
.lstk-wrap{position:relative;display:inline-flex;flex-shrink:0}
.lib-stk{font-size:13px;display:inline-flex;align-items:center;justify-content:center}
.lstk-btn{width:20px;height:20px;object-fit:contain;display:block}
.lstk-prev{position:absolute;left:0;bottom:calc(100% + 4px);z-index:60;width:64px;height:64px;
  background:#fff;border:1px solid #d7e0e8;border-radius:10px;box-shadow:0 6px 18px rgba(20,40,60,.22);
  display:flex;align-items:center;justify-content:center;font-size:40px;line-height:1;pointer-events:none}
.lstk-prev img{width:60px;height:60px;object-fit:contain;display:block}
/* 📎 選んだファイルの確かめ(送信は塞いである=disabled) */
.lib-file{display:flex;align-items:center;gap:6px;padding:4px 6px;background:#fff;
  border:1px solid #c8d3de;border-radius:8px}
.lib-file .lth{width:36px;height:36px;object-fit:cover;border-radius:6px;flex:0 0 auto;background:#dde5ee}
.lib-file .lmd{width:36px;height:36px;border-radius:6px;flex:0 0 auto;background:#e6ecf3;color:#41566e;
  font-size:10px;display:flex;align-items:center;justify-content:center}
.lib-file b{flex:1;min-width:0;font-size:11.5px;font-weight:400;overflow:hidden;
  white-space:nowrap;text-overflow:ellipsis}
.lib-file button{width:auto;min-width:0;flex-shrink:0;padding:2px 10px;font-size:11.5px;line-height:18px;border-radius:6px}
/* 📄 PDFのページ数(2026-09-01 batch242)。名前の右に数だけ・1行のまま(説明文は足さない) */
/* batch257: 「6ページ→1枚」= 何ページが何枚になるかを出すだけの札。押すと
   まとめて1枚 / 1ページずつ が切り替わる(説明文は足さない) */
.lib-file .lib-fpg{flex:0 0 auto;font-size:10.5px;font-style:normal;color:#5b6b7c;
  white-space:nowrap;cursor:pointer;text-decoration:none!important;
  border:1px solid #dbe3ea;border-radius:6px;padding:1px 6px;line-height:1.5}
.lib-file .lib-fpg:hover{color:#1e6fe0;border-color:#9fc4f5}
.lib-fx{flex-shrink:0;font-size:11px;color:#8a97a5;cursor:pointer;text-decoration:none!important}
/* 🔁 b277②(2026-09-04): 直前の「送信」で送れなかった札。枠を赤くし ⚠ を1つ付けるだけ(帯・説明文は足さない)。
   札の中の「送信」は撤去した(右下の「送信」1つでまとめて送る) */
.lib-file.ng{border-color:#e06666}
.lib-file .lib-fng{flex:0 0 auto;font-size:12px;color:#d33;line-height:18px;cursor:default}
/* 送信ボタンはLINE公式に似せて小さく(2026-08-31 batch232 先生の逐語「LINEのに似せて小さくしたい」) */
.lib-sendbar .lib-go{margin-left:auto;width:auto;min-width:0;flex-shrink:0;
  padding:2px 12px;font-size:11.5px;line-height:18px;border-radius:6px}
.lib-sendbar .lib-sch{width:auto;min-width:0;flex-shrink:0;padding:2px 10px;font-size:11.5px;line-height:18px;border-radius:6px}
/* ✎ 表示名をその場で直す(2026-08-31 LINE担当の納品を統合 batch228) */
.lib-ren{margin-left:6px;font-size:11px;text-decoration:none!important;opacity:.55}
.lib-ren:hover{opacity:1}
.lib-reni{font-size:13.5px;font-weight:700;padding:1px 6px;border:1px solid #c8d3de;border-radius:6px;width:220px}
/* 📛 b263③(先生の逐語「氏名の編集ボタン(鉛筆のマーク)を押すと氏名を入れる窓全角7行(=7文字分の幅)
   (非常に薄い字で『氏名』と書いてある)と、その右にステータスを入れる窓が出る」)。
   ・全角7文字ぶん = 7em(全角1字=1em)。枠と内側の余白(1+6)×2=14px を足した幅にする
   ・「氏名」の字は非常に薄く出す(::placeholder) */
.lib-reni-nm{box-sizing:content-box;width:7em}
.lib-reni-st{box-sizing:border-box;width:11em;font-weight:400}
.lib-reni-nm::placeholder,.lib-reni-st::placeholder{color:#d7dee5;font-weight:400}
/* 🏷 b263⑤: ステータスの欄にホバーすると下に候補が出る。押すとカーソルの位置に挿し込む */
.lib-stw{position:relative;display:inline-flex;align-items:center;margin-left:6px}
.lib-stlist{position:absolute;top:100%;left:0;z-index:42;min-width:100%;max-width:280px;max-height:220px;overflow:auto;
  display:flex;flex-wrap:wrap;gap:4px;padding:5px 6px;background:#fff;border:1px solid #dbe3ea;border-radius:8px;
  box-shadow:0 6px 18px rgba(20,40,60,.16)}
.lib-stwi{flex:0 0 auto;padding:1px 8px;border-radius:999px;background:#f0f4f8;border:1px solid #dbe3ea;
  font-size:11.5px;font-weight:400;line-height:1.6;color:#243b53;cursor:pointer;text-decoration:none!important}
.lib-stwi:hover{background:#e3efff;border-color:#9fc4f0}
.lib-stwe{flex:0 0 auto;font-size:11px;color:#8a97a5}
.lib-stwed{flex:0 0 auto;margin-left:auto;font-size:11px;color:#8a97a5;cursor:pointer;text-decoration:none!important}
.lib-stwed:hover{color:#243b53}
/* 🏷 b263⑤: ステータス名候補の窓(作る・消す・掴んで並べ替える。定型文の窓と同じ作法) */
.lstw-add{display:flex;align-items:center;gap:6px;margin:2px 0 8px}
.lstw-ai{flex:1 1 auto;min-width:0;font-size:12.5px;padding:4px 8px;border:1px solid #c8d3de;border-radius:6px}
.lstw-go{flex:0 0 auto}
.lstw-list{max-height:340px;overflow:auto;display:flex;flex-direction:column;gap:3px}
.lstw-row{display:flex;align-items:center;gap:7px;padding:3px 6px;border:1px solid #eef2f6;border-radius:6px;background:#fff}
.lstw-row:hover{background:#f7fafc}
.lstw-row b{flex:1 1 auto;min-width:0;font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lstw-grip{flex:0 0 auto;color:#b6c2cd;cursor:grab;font-size:12px}
.lstw-del{flex:0 0 auto;color:#8a97a5;font-size:11px;cursor:pointer;text-decoration:none!important}
.lstw-del:hover{color:#c0392b}
/* 🧲 b274⑥「同じ人にまとめる」の窓。ステータス名候補の窓(.lstw-*)と同じ作りにそろえる。
   ⚠️ 説明文の帯は置かない。1行1候補で「誰を・何件・どんな手がかりで」だけを出す */
.lmg-me{display:flex;align-items:center;gap:8px;padding:4px 6px;margin-bottom:8px;
  border-bottom:1px solid #eef2f6}
.lmg-me b{font-size:13px}
.lmg-me small,.lmg-r small{color:#8a97a5;font-size:11px}
.lmg-list{max-height:300px;overflow:auto;display:flex;flex-direction:column;gap:3px}
.lmg-r{display:flex;align-items:center;gap:7px;padding:4px 6px;border:1px solid #eef2f6;
  border-radius:6px;background:#fff}
.lmg-r b{flex:0 1 auto;min-width:6em;font-size:12.5px;font-weight:600;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.lmg-r small{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lmg-r button{flex:0 0 auto;width:auto;min-width:0}
.lmg-took{margin-top:6px;background:#f7fafc}
/* 💬 LINE公式アカウントに寄せた印(2026-08-31 batch228): 要対応=緑 / dr対応=🟥 / ⋮メニューでピン留め */
.lib-row{position:relative}
.lib-row b{padding-right:18px}
/* ⋮ b259⑤(先生の逐語「縦3個点は、患者の行にカーソルが入った瞬間に、日付が消え、それと代わりに
   現れるという仕様で。また、3個点の位置は患者アイコンと同じ高さで、1.4倍の大きさで、濃く」)。
   ・大きさ 1.4倍: 枠 18→25.2px / 文字 13→18.2px
   ・位置は「患者アイコンと同じ高さ」= 行の縦の真ん中(行は .lib-row で上下中央そろえ)
   ・濃く: #8a97a5 → #3c4c5c
   ・日付との入れ替えは下の .lib-when を visibility で隠す(場所は取ったまま=氏名の幅が動かない) */
.lib-dots{position:absolute;top:50%;transform:translateY(-50%);right:5px;
  width:25.2px;height:25.2px;line-height:25.2px;text-align:center;
  border-radius:5px;color:#3c4c5c;font-size:18.2px;cursor:pointer;opacity:0;user-select:none}
.lib-row:hover .lib-dots,.lib-dots.on{opacity:1}
.lib-dots:hover{background:#e8eef5;color:#1b2b3a}
/* 🔁 日付と⋮の入れ替え(b259⑤)。⋮が出ている間だけ日付を消す=b258で日付と⋮が重なっていた件も解決 */
.lib-row:hover .lib-when{visibility:hidden}
.lib-row:has(.lib-dots.on) .lib-when{visibility:hidden}
.lib-menu{position:absolute;top:calc(50% + 15px);right:5px;z-index:6;background:#fff;border:1px solid #c8d3de;border-radius:8px;
  box-shadow:0 4px 14px rgba(20,35,55,.18);padding:3px 0;min-width:112px}
.lib-menu a{display:block;padding:6px 12px;font-size:12px;color:#243b53;cursor:pointer;white-space:nowrap}
.lib-menu a:hover{background:#f0f6ff}
/* ─ ⋮メニューの横線(batch236): ピン留めとスパムの間に1本だけ */
.lib-msep{display:block;height:1px;background:#e3eaf1;margin:3px 0}
/* ━ b292(2026-09-04 先生の逐語「🟡が押されているものは『アイコン四分の一分の空白とその真ん中に横太線』を隔てて、
   最も下に」)。左の一覧で、下の組(🟡受付対応)が始まる所に1本だけ入る仕切り。
   ・高さ = アイコン(.lav-l 48.45px)の 1/4 = 12.1125px の空白(行の高さ 89.04px は触らない)
   ・その真ん中に太い横線(3px)。左右は行の余白(10px)にそろえる。文字は置かない(線だけ) */
.lib-gsep{display:block;position:relative;height:12.1125px;margin:0;padding:0;flex:0 0 auto}
.lib-gsep::before{content:'';position:absolute;left:10px;right:10px;top:50%;height:3px;margin-top:-1.5px;background:#9fb3c8}
/* 🏷 b266④(先生の逐語「今、要対応は緑に白文字だが、添付画像のようにして欲しい」)。
   🩹 b267②(先生の逐語「要対応のタグは白地に緑文字、緑の枠線がいいです。(薄い緑地ではなく)」)
      = b266④で薄い緑地(#dff5e6)にしていたのを**白地(#fff)**に直す。
      緑の文字(#06c755)・緑の細い枠線(1px)・角丸(8px)・字の大きさ(10px)・余白・太字は今のまま。
   📏 枠線1pxが左右に付くぶんタグが横に2px太るので、左右の余白を 6px → 5px に1pxずつ減らして相殺する
      (一覧の行の高さは .lib-row / .lib-body で固定してあるので、行の高さは動かない)
   ⚠️ 中央の見出しの .lf-need.on(緑地に白文字のボタン)は先生の指示どおり触らない */
.lib-need{display:inline-block;font-size:10px;line-height:1;color:#06c755;background:#fff;
  border:1px solid #06c755;border-radius:8px;padding:2px 5px;font-weight:700;vertical-align:1px}
/* 📌 ピン留め(batch235): 名前の右の📌をやめ、アイコンの右下に重ねる青い画鋲(LINE公式と同じ)。
   batch236でアイコンが3倍になったので画鋲も釣り合う大きさ(16px)にした */
.lib-pin{position:absolute;right:-1px;bottom:-1px;width:16px;height:16px;pointer-events:none}
.lib-dr{margin-right:2px}
.lib-dr i{font-style:normal}   /* 🟥🟡 印は2つ並ぶことがある(batch238) */
/* 💴💰 b579: b573 でここ(見出しの小さなアイコン .lib-hav)に付けていた右クリックの印は**撤去**した。
   先生が押しておられるのは右の列の頭の塊(.lib-prof)なので、カーソルもそちらへ移した(下の .lib-prof)。
   小窓そのものは .calctx の作法・見た目のまま(説明文は置かない。幅は中身なり=.calctx a の white-space:nowrap) */
.lib-flags{display:inline-flex;gap:4px}
.lib-flags .mini{font-size:11px}
.lf-need.on{background:#06c755;border-color:#06c755;color:#fff}
/* b251: 「対応済み」ボタンは撤去(要対応のトグルで外す)。.lf-done の色指定も一緒に外した */
.lf-dr.on{background:#e03131;border-color:#e03131;color:#fff}
/* 🟡 受付対応(batch238)。dr対応と同じ作法・色だけ違う */
.lf-uke.on{background:#f0a500;border-color:#f0a500;color:#fff}
/* ⏳ 回答待ち(batch265)。要対応・受付対応と同じ作法で、🟦に合わせた青 */
.lf-wait.on{background:#1e6fe0;border-color:#1e6fe0;color:#fff}
/* 📌 ピン留め(b298 先生の逐語「『回答待ち』のボタンの右に『ピン留め』オンオフボタン」)。
   他の印と同じ作法で、色は一覧の画鋲(.lib-pin)と同じ青 */
.lf-pin.on{background:#1e6fe0;border-color:#1e6fe0;color:#fff}
/* 👨‍⚕️ dr対応の医師選び(batch265 先生の逐語「dr対応にホバーすると🟥🔵🐗が出るように」)。
   ボタンの下にそのまま出す。ホバーが途切れないよう、ボタンとの隙間は空けない */
.lf-drw{position:relative;display:inline-block}
.lf-drlist{position:absolute;left:0;top:100%;z-index:60;background:#fff;border:1px solid #d7e0e8;
  border-radius:8px;box-shadow:0 4px 14px rgba(20,35,55,.18);padding:3px 0;min-width:86px}
/* ⚠️ 見出しの中なので .lib-head a(青い下線)より強い指定にする(.lib-flags を頭に付ける) */
.lib-flags .lf-drpk{display:flex;align-items:center;gap:5px;padding:3px 9px;font-size:12px;
  line-height:15px;color:#243b53;text-decoration:none;cursor:pointer;white-space:nowrap}
.lib-flags .lf-drpk i{font-style:normal;font-size:12px;line-height:15px}
.lib-flags .lf-drpk:hover{background:#f0f6ff}
.lib-flags .lf-drpk.on{background:#eaf3ff;font-weight:700}
/* 🪪 右のゾーン(2026-08-31 batch237 先生の逐語「公式LINEのように右のスペースの一番上は
   その方のアイコンと氏名表記を」)。上から [77pxのアイコン+氏名][カルテを開く][公式LINEを開く]、
   その下に[ノート]。3列目の幅は今まで(.lib-memoのflex)と同じ1:2:1のまま */
/* b259③: 右の列も箱をやめ、真ん中との仕切りの線1本だけにする(中の[アイコン+氏名]と[ノート]も
   枠と角丸を外し、あいだの区切りは細い線1本) */
.lib-side{flex:1 1 0%;min-width:0;display:flex;flex-direction:column;gap:8px;
  border-left:1px solid #dbe3ea;background:#fff}
/* 💴💰 b579: この塊が右クリックの受け口(次回予約手数料発生 / 💰返金対応 / 🔗ひもづけを外す)。
   b573 は見出しの小さなアイコンに付けていたが、先生が押しておられるのはこちら。見た目は1pxも変えず、
   カーソルだけ右クリックと分かる形にする */
.lib-prof{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:context-menu;
  padding:10px 8px 9px;border:0;border-bottom:1px solid #eef2f6;border-radius:0;background:#fff}
.lib-prof .lav{margin:0}
.lib-pnm{max-width:100%;font-size:13.5px;font-weight:700;line-height:1.3;text-align:center;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lib-pact{max-width:100%;font-size:11.5px;color:#1e6fe0;cursor:pointer;text-decoration:underline;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 🔗 batch248: 氏名の下は1行に横並びの2つ [カルテを開く / 既存カルテに紐づける] [公式LINE] */
.lib-pacts{display:flex;align-items:center;justify-content:center;gap:10px;max-width:100%}
/* display:block = 入れ物(.lib-plw)の行ボックスの余りを作らない。
   これで①2つのボタンの上端がそろい ②候補の窓がボタンの下端に隙間なく接する */
.lib-pacts .lib-pact{display:block;min-width:0;line-height:1.5}
/* 🔗 「既存カルテに紐づける」のホバーで出す候補の窓。
   ⚠️ カーソルを窓へ移せること(b184の失敗を繰り返さない):
     ・窓はこの入れ物の中に出す(mouseleaveが窓へ入っただけでは起きない)
     ・top:100% = ボタンの下端に隙間なく接する(途中で消える隙間を作らない)
     ・画面側でさらに260msの猶予を持たせている */
.lib-plw{position:relative;display:inline-block;max-width:100%;min-width:0}
/* 右端そろえ(right:0)= 大窓のように右の列が細い時でも画面の外へはみ出さない
   (はみ出す向きは左の会話の上。窓は手前に浮くので隠れない) */
.lib-cand{position:absolute;top:100%;right:0;z-index:40;width:236px;max-height:300px;overflow:auto;
  display:flex;flex-direction:column;gap:2px;padding:5px;border:1px solid #c8d3de;border-radius:8px;
  background:#fff;box-shadow:0 6px 18px rgba(20,40,60,.18);cursor:default}
.lib-cand-r{display:flex;align-items:baseline;gap:6px;padding:3px 6px;border-radius:5px;cursor:pointer;text-decoration:none}
.lib-cand-r:hover{background:#eef6ff}
.lib-cand-r b{font-size:12px;font-weight:700;color:#1b2b3a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-cand-r small{margin-left:auto;flex:0 0 auto;font-size:10px;color:#8a97a5;white-space:nowrap}
.lib-cand-q{width:100%;box-sizing:border-box;font-size:11.5px;padding:3px 6px;border:1px solid #dbe3ea;border-radius:5px}
.lib-cand-e{font-size:11px;color:#8a97a5;padding:3px 6px}
/* 🟠 b263①(先生の逐語「候補の最も下に(かつ、『患者を探す』の窓の上に)『クリックで確認作業が
   できます』とオレンジの文字などを表示して欲しいです」)。候補が出ている時だけ出る */
.lib-cand-tip{font-size:11px;color:#e07b00;padding:2px 6px 4px}
/* ❓ b261⑥: 押した候補の**その場**に出す「確定でよいですか？」。
   ・行そのものは今までの .lib-cand-r のまま。確認の1行だけを下に折り返して足す(flex-wrap)
   ・押した瞬間に背面がその患者トップへ動くので、行は「いま背面に出ている人」でもある=薄く色を付ける
   ・やめる道は3つ: [やめる] / 別の候補を押す / 窓の右上の ✕ */
.lib-cand-ask{flex-wrap:wrap;background:#fff7e0;box-shadow:inset 0 0 0 1px #f0d08a;cursor:default}
.lib-cand-ask:hover{background:#fff7e0}
.lib-cand-ok{flex:1 0 100%;display:flex;align-items:center;gap:6px;margin-top:3px;font-size:11px;color:#8a5a00}
.lib-cand-yes,.lib-cand-no{flex:0 0 auto;padding:1px 8px;border-radius:999px;font-size:11px;line-height:1.5;
  cursor:pointer;text-decoration:none!important;user-select:none;white-space:nowrap}
.lib-cand-yes{margin-left:auto;background:#1e6fe0;border:1px solid #1e6fe0;color:#fff}
.lib-cand-yes:hover{background:#1558b0;border-color:#1558b0}
.lib-cand-no{background:#fff;border:1px solid #c8d3de;color:#5c6b7a}
.lib-cand-no:hover{background:#f0f4f8}
.lib-cand-x{align-self:flex-end;flex:0 0 auto;font-size:12px;line-height:1;color:#8a97a5;padding:1px 3px;
  cursor:pointer;text-decoration:none!important;user-select:none}
.lib-cand-x:hover{color:#243b53}
/* 📝 相手ごとのメモ(kv line-notes で全員共有・自動保存。batch237で見出しは「ノート」)
   📋 2026-09-19 b526 先生の逐語「ノート内に『オペ日』と入力しましたが、このフォントサイズと同じフォントサイズに、
      オペ段取り表内の文字も変えてほしいです。」
      → ノートの本文(自由入力の欄)の字の大きさを **--lib-note-fs ただ1か所**に置き、本文も段取り表もここから取る。
        決め打ちで二重に書かない(片方だけ直して食い違うのを防ぐ) */
.lib-memo{flex:1 1 0%;min-width:0;display:flex;flex-direction:column;border:0;border-radius:0;overflow:hidden;background:#fff;--lib-note-fs:12px}
.lib-memo-h{font-size:11.5px;font-weight:700;color:#5c6b7a;padding:6px 10px;border-bottom:1px solid #eef2f6;background:#f6f9fb}
.lib-memo textarea{flex:1;min-height:0;border:0;resize:none;padding:8px 10px;font-size:var(--lib-note-fs,12px);line-height:1.6;font-family:inherit;outline:none;background:#fffef7}
/* 📋 b295: ノートの本文の入れ物。段取り表を**本文の上**(最上段)に置き、掴んで下へ動かした時はこの中で浮かせる(position:relative の物差し) */
.lib-memo-b{flex:1 1 0%;min-height:0;position:relative;display:flex;flex-direction:column}
/* ══ 🔞 2026-09-13 b455 「18歳以下の問い合わせルール」の札 ═════════════════════════
   ・置き場所 = ノートの見出し(.lib-memo-h)のすぐ下 = 先生の「ノートの上の方のあたり」。
     本文の入れ物(.lib-memo-b)の外なので、b295 の段取り表の物差し(浮かせる時の基準)は動かない
   ・目立つ赤(既存のdr対応の印 .lf-dr.on と同じ #e03131)に白文字。1行で折り返さない(省スペース)
   ・右端の小さな白丸は学年の目安(高3・中2 など2〜3字)。説明文・案内の帯は置かない(先生の好み)
   ・.lib-minor-p = マウスを載せている間だけ出る全文の板。画面に貼り付ける(position:fixed)ので
     細いノートの列や .lib-memo の overflow:hidden に切られない。板はマウスを受け取らない
     (pointer-events:none)=「載せる/離す」の判定は札だけで決まり、板の上でちらつかない */
.lib-minor{flex:0 0 auto;position:relative;display:flex;align-items:center;gap:5px;
  padding:3px 8px;background:#e03131;color:#fff;cursor:default;user-select:none}
.lib-minor b{flex:1 1 auto;min-width:0;font-size:11.5px;font-weight:700;line-height:1.35;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-minor .lib-minor-g{flex:0 0 auto;font-style:normal;font-size:10.5px;font-weight:700;line-height:1;
  padding:2px 5px;border-radius:7px;background:#fff;color:#e03131}
.lib-minor-p{position:fixed;z-index:9500;width:460px;max-width:calc(100vw - 8px);pointer-events:none;
  white-space:pre-wrap;font-size:12px;line-height:1.6;color:#243b53;background:#fff;
  border:1px solid #e03131;border-radius:6px;padding:8px 11px;box-shadow:0 4px 16px rgba(20,35,55,.24)}
/* 📋 b289: 段取り表。「手術確定予約」の定型文を送れた相手(b295: または赤いピルで出した相手)にだけ出る。
   省スペース: 1行=見出し+欄で折り返さない。欄は下線だけ(枠で場所を取らない)。空のうちは「未」(placeholder)
   📋 b295: 置き場所をノートの最上段(見出しの下・本文の上)へ。字は先生の逐語「今の1.15倍くらい」= 11.5px×1.15≈13.2px。
   掴んで上下に動かせる(欄の上以外は cursor:grab)。動かした後(.lib-opsh-fl)は本文の上に浮く(top は画面側が相手ごとのkvから) */
/* 📋 2026-09-19 b526 先生の逐語「このフォントサイズ(=ノートの本文)と同じフォントサイズに、オペ段取り表内の文字も
   変えてほしいです。また、それに伴い、オペ段取り表の縦幅を狭くしてほしいです。」
   → 字は --lib-note-fs(ノートの本文と同じ1か所)。縦は行の高さ(1.55→1.28)と上下の余白(3px/4px→1px/2px)を詰めた
     (文字が切れないぎりぎり。本物のChromeで前後の高さを実測してある) */
.lib-opsh{flex:0 0 auto;font-size:var(--lib-note-fs,12px);line-height:1.28;padding:1px 8px 2px;border-bottom:1px solid #eef2f6;background:#fff;color:#243b53;cursor:grab;user-select:none}
.lib-opsh-fl{position:absolute;left:0;right:0;z-index:3;border-top:1px solid #eef2f6;box-shadow:0 2px 6px rgba(20,40,60,.12)}
.lib-opsh-h{flex:1 1 0%;min-width:0;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 📋 2026-09-26 b634 院長の逐語「オペ段取り表内にオペ題名つけたい。(OP日の上へ。) どのdrのオペか 頭文字で。杉 榛など。
   (榛 コラボ鼻)や(上 全切開)や(杉 埋没)や(杉 裏ハムラ)などが良いです。」
   ・○オペ日の行の**上**の1行。太字・折り返さない(長い術式は…で省略)= 行は増えても高さは1行ぶんだけ(省スペース b526)
   ・帯・枠・説明文は付けない(先生の好み)。読めない相手では画面側が行そのものを出さない */
.lib-opsh-ttl{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25}
.lib-opsh-r{display:flex;align-items:center;gap:4px;min-width:0}
.lib-opsh-r span{flex:0 0 auto;white-space:nowrap}
.lib-opsh-r input{flex:1 1 0%;min-width:0;border:0;border-bottom:1px dashed #c7d0d9;border-radius:0;padding:0 3px;font-size:var(--lib-note-fs,12px);line-height:1.22;
  font-family:inherit;outline:none;background:transparent;color:#243b53;cursor:text;user-select:text}
/* 📅 b395: ○オペ日の日付だけを直せる欄。太字(=今までの1行目の見た目)のまま、幅は日付ぶんだけ(残りは術式・担当dr) */
.lib-opsh-r input.lib-opsh-d{flex:0 0 auto;width:58px;font-weight:700}
/* ⭕ 2026-09-18 b519 先生の逐語「オペ日と来院時間は同じ行にお願いします。」:
   オペ日の行の**右端**に「来院時間：[欄]」を並べる。折り返さない・行を増やさない(先生の好み=一目で見える・省スペース)。
   ・来院時間のまとまり(.lib-opsh-vw)は縮まない(flex:0 0 auto)。狭い時に削られるのは真ん中の術式・担当dr(.lib-opsh-h は…で省略)
   ・欄の幅は日付の欄(58px)と同じ考えで時刻ぶんだけ。字の大きさ(b295 の13.2px)は1px も変えていない */
.lib-opsh-r .lib-opsh-vw{flex:0 0 auto;margin-left:6px}
.lib-opsh-r input.lib-opsh-v{flex:0 0 auto;width:56px}
.lib-opsh-r input::placeholder{color:#8a97a5}
.lib-opsh-r input:focus{border-bottom-color:#06c755}
/* ══ 📋 2026-09-19 b526 先生の逐語 ═══════════════════════════════════════════
   ・「『検査日』と『OP前TEL』は1行にまとめてください。GWとEFも1行にまとめてください。」
     → .lib-opsh-2 = 2つの行を横に並べるだけの入れ物(行そのものは作り変えない)。折り返さない(省スペース)
   ・「来院時間の入力は、『送信を予約』の時のように、08:40などの中で、数値しかいじれないような入力のさせ方」
     → .lib-opsh-t = 時刻の入力欄(<input type="time">)。右へ文字が飛び出さないよう幅を決め、
       時計の絵(picker)は出さない(場所を取らない・説明文や帯も置かない=先生の好み)
   ・「クリックするとミニカレンダーが出て選べるようになると嬉しいです。」
     → .lib-opsh-cal = 小さなカレンダーのつまみ(<input type="date">)。中の文字は出さず絵だけ(幅14px) */
.lib-opsh-2{display:flex;align-items:center;gap:var(--opsh-gap,10px);min-width:0}
.lib-opsh-2>.lib-opsh-r{flex:1 1 0%;min-width:0}
/* 🔄 2026-09-26 b628 院長の逐語「OP前TELとGWは文字2個分右へ移動」「予約金の『期限』の記載はOP前TELと同じ列の位置に」
   ・--opsh-rt = 右側の欄をずらす量(文字2個分)。**ここ1か所**で決める(期限の位置も同じ値を読む)
   ・組の右側に来る欄(OP前TEL / 入れ替え後の GW)にだけ付く名札 = .lib-opsh-rt
   🩶 b628「(GWは行わない時も多いので)GWの領域はそもそも薄いグレーで覆う」
   ・薄いグレーは振込チェック表の覆い(b627)と同じ色。右クリックの「この表から削除/戻す」は今までどおり効く */
/* ⚠️ px で持つ(em にすると、字の大きさが違う「期限」(10.5px)と行の見出し(13.2px)で
   2em の実寸がずれて、同じ列に並ばない。実測で 9px ずれていた)
   --opsh-gap = 組の左右の間(.lib-opsh-2 の gap と**同じ1か所**から配る) */
.lib-opsh{--opsh-rt:24px;--opsh-gap:10px}
.lib-opsh-2>.lib-opsh-r.lib-opsh-rt{padding-left:var(--opsh-rt)}
.lib-opsh-r.lib-opsh-gw{background:rgba(120,130,140,.09);border-radius:4px}
/* 📅✅ 2026-09-26 b628(後半)院長の逐語
   「検査日、OP前TELは文字のすぐ右には日付が入るように。日付が入ってない間は薄いグレーで『未定』と。
     ミニカレンダーで日付を選ぶと日付が入る。その時点では日付の右に薄いグレーで『未』と。
     オペ段取り表内は自由入力は不可に。
     検査日、OP前TELは(ミニカレンダー以外の部分を)クリックすると未、済を選択でき…」
   ・.lib-opsh-val = **打ち込みの欄の代わり**に値を出す所(見出しのすぐ右)。打てない=自由入力は不可
   ・.lib-opsh-mi  = 薄いグレーの小さな札(「未定」「未」「済」)。済だけ少し濃くする(緑)
   ・押せるのは 未/済 を選べる欄(.lib-opsh-mz)だけ。ほかは押しても何も起きない見た目にする
   ・省スペース(b526)を崩さない: 行の高さは変えず、字は行の字の大きさをそのまま継ぐ */
.lib-opsh-r .lib-opsh-val{flex:1 1 0%;min-width:0;font-weight:400;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;padding:0 1px;font-variant-numeric:tabular-nums}
.lib-opsh-r .lib-opsh-val.lib-opsh-mz{cursor:pointer}
.lib-opsh-r .lib-opsh-val.lib-opsh-mz:hover{background:rgba(30,111,224,.07);border-radius:3px}
.lib-opsh-r .lib-opsh-mi{font-style:normal;margin-left:4px;font-size:.84em;color:#9aa7b4}
.lib-opsh-r .lib-opsh-mi.on{color:#2e7d32;font-weight:700}
/* 🧪 b363 の承認の札は「済」の右に続けて出す(院長の逐語の並び) */
.lib-opsh-r .lib-opsh-val .labtag{margin-left:4px}
/* 「未定」を薄いグレーで(来院時間・オペ日の空欄も同じ見え方にそろえる) */
.lib-opsh-r input::placeholder{color:#9aa7b4}
/* ✅ 「未 / 済」の小窓(作法・見た目は b393 の右クリックの小窓と同じ。横に2つだけ並べる) */
.calctx.lib-opshdone{min-width:0;display:flex;gap:2px;padding:3px}
.calctx.lib-opshdone .lib-opsh-mzpick{padding:3px 12px;text-align:center;border-radius:4px}
.calctx.lib-opshdone .lib-opsh-mzpick.on{background:#eef4fa;font-weight:700}
.lib-opsh-r input.lib-opsh-t{flex:0 0 auto;width:58px;padding:0 1px;font-variant-numeric:tabular-nums}
.lib-opsh-r input.lib-opsh-t::-webkit-calendar-picker-indicator{display:none}
.lib-opsh-r input.lib-opsh-t::-webkit-inner-spin-button{display:none}
.lib-opsh-r input.lib-opsh-cal{flex:0 0 auto;width:14px;padding:0;margin-left:1px;border-bottom:0;background:transparent;cursor:pointer}
.lib-opsh-r input.lib-opsh-cal::-webkit-datetime-edit,
.lib-opsh-r input.lib-opsh-cal::-webkit-clear-button,
.lib-opsh-r input.lib-opsh-cal::-webkit-inner-spin-button{display:none}
.lib-opsh-r input.lib-opsh-cal::-webkit-calendar-picker-indicator{padding:0;margin:0;opacity:.5;cursor:pointer}
.lib-opsh-r input.lib-opsh-cal:hover::-webkit-calendar-picker-indicator{opacity:.9}
/* 💴 2026-09-25 b626 院長の逐語「オペ段取り表の予約金の行には右の方に期限9/24などと表示されるように。」
   ・**同じ行の右端**に小さく置くだけ(行は増やさない・説明文も帯も置かない)。期限が無ければ描かない
   ・右クリックでミニカレンダー(中の <input type="date"> の showPicker())。入力欄そのものは見せない */
/* 📐 2026-09-26 b628 院長の逐語「オペ段取り表の予約金の『期限』の記載はOP前TELと同じ列の位置に。」
   → 右端(margin-left:auto)から、**組の右側の欄の文字と同じ x** に移した。
   ⚠️ 「半分ずつ」ではない。組(.lib-opsh-2)の子は flex:1 1 0% + box-sizing:border-box なので、
      右側の欄の**寄せ量(--opsh-rt)も箱の中**に入る。余りを半分ずつ分けるため:
        左の欄の幅 = (100% - gap - 寄せ量) / 2
        右の欄の文字の左端 = その幅 + gap + 寄せ量
      実測(幅267px・gap10px・寄せ24px)で 116.5 + 34 = 150.5px = OP前TEL の文字の左端とぴったり一致 */
.lib-opsh-r{position:relative}
.lib-opsh-r .lib-opsh-due{position:absolute;
  left:calc((100% - var(--opsh-gap, 10px) - var(--opsh-rt, 24px)) / 2 + var(--opsh-gap, 10px) + var(--opsh-rt, 24px));
  flex:0 0 auto;margin-left:0;padding-left:0;
  font-style:normal;font-size:10.5px;opacity:.75;white-space:nowrap;cursor:context-menu;
  font-variant-numeric:tabular-nums}
.lib-opsh-r .lib-opsh-due:hover{opacity:1}
/* ⚠️ 高さは指定しない(中身のままにする)。1px などに潰すと「欄の中身がはみ出している」と
   既存の検査(b526 の文字が切れていないかの実測)に拾われてしまう */
.lib-opsh-r .lib-opsh-due input.lib-opsh-duecal{position:absolute;right:0;bottom:0;width:1px;
  opacity:0;pointer-events:none;border:0;padding:0;margin:0}
/* 📋 2026-09-18 b508 先生の逐語「旧の段取り表はノート内に残しつつ、新たに上に段取り表を…
   ノート領域を下にスクロールすれば前の段取り表も見れるように」。
   前の手術の表 = 上の表の下に並ぶ**読むだけ**の表(掴んで動かさない・欄も直せない)。
   新旧が一目で分かるよう、少し薄い字と薄い地色にして、見出しにその時の手術日を出す(行は値のある物だけ)
   ⚠️ b508b: class は生きている表(.lib-opsh / .lib-opsh-r / 中の input)と**1つも重ねない**(.lib-opshv…)。
      重ねると「.lib-opsh の中の欄」を取る画面・検査が、読むだけの前の表を先に掴んでしまう */
.lib-opshv-wrap{flex:0 0 auto}
/* 📋 b526: 前の表も同じ字の大きさ・同じ詰め方にする(新旧の見分けは今までどおり薄い字と薄い地色でつける) */
.lib-opshv{flex:0 0 auto;font-size:var(--lib-note-fs,12px);line-height:1.28;padding:1px 8px 2px;border-bottom:1px solid #eef2f6;
  background:#f7f9fb;color:#6b7a89;cursor:default;user-select:none}
.lib-opshv-r{display:flex;align-items:center;gap:4px;min-width:0}
.lib-opshv-r span{flex:0 0 auto;white-space:nowrap}
.lib-opshv-h{flex:1 1 0%;min-width:0;font-weight:700;color:#54636f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-opshv-v{flex:1 1 0%;min-width:0;font-style:normal;padding:0 3px;
  border-bottom:1px dashed #dde5ec;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:text}
/* ⭕ b519: 前の表(読むだけ)も「オペ日 … 来院時間 ◯◯」の1行にする。中身が空なら画面側が出さない */
.lib-opshv-r .lib-opshv-vw{flex:0 0 auto;display:flex;align-items:center;gap:4px;min-width:0;margin-left:6px}
.lib-opshv-r .lib-opshv-vv{flex:0 0 auto;width:auto;min-width:36px}
/* 📋 b526「『検査日』と『OP前TEL』は1行に」「GWとEFも1行に」: 前の表(読むだけ)も同じ並びにする入れ物 */
.lib-opshv-2{display:flex;align-items:center;gap:10px;min-width:0}
.lib-opshv-2>.lib-opshv-r{flex:1 1 0%;min-width:0}
/* ══ 📋🗑🕘 b393(2026-09-10 先生の逐語) ═══════════════════════════════════════
   ・.lib-uraask  = 「◯月◯日の裏書きが既に存在しますが、こちらに反映して良いですか？」の確認(ノートの中に1行)
   ・.lib-opshctx = 段取り表の行の右クリックの小窓(既存の .calctx の中に置くので地の色・影は .calctx のまま)
   ・.ophist      = 更新履歴の窓(✕は左上)。説明文・案内の帯は置かない(先生の好み) */
.lib-uraask{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap;margin:4px 0;padding:4px 6px;font-size:12px;line-height:1.4;
  background:#fff8e1;border:1px solid #e8c96a;border-radius:5px;color:#4a3a00}
/* 問いの文は1行(=幅いっぱい)にして、はい/いいえ は**その下に横並び**(ボタンが縦に割れないように) */
.lib-uraask span{flex:1 1 100%;min-width:0}
.lib-uraask button{flex:0 0 auto;font-size:12px;padding:2px 12px}
.lib-opshctx a{display:block;padding:3px 10px;font-size:12px;white-space:nowrap;cursor:pointer;color:#25313c}
.lib-opshctx a:hover,.ura-histctx a:hover{background:#eef4fb}
.ura-histctx a{display:block;padding:3px 10px;font-size:12px;white-space:nowrap;cursor:pointer;color:#25313c}
.ophist{position:fixed;z-index:9000;width:420px;max-height:320px;display:flex;flex-direction:column;
  background:#fff;border:1px solid #9aa;border-radius:6px;padding:6px 8px 8px;box-shadow:0 3px 12px rgba(0,0,0,.28)}
.ophist .mhead{margin-bottom:4px}
.ophist .mhead h3{font-size:13px}
.ophist-b{flex:1 1 auto;min-height:0;overflow:auto}
.ophist-r{display:flex;gap:6px;align-items:baseline;font-size:11.5px;line-height:1.5;padding:1px 0;border-bottom:1px solid #f0f4f8}
.ophist-r b{flex:0 0 auto;font-weight:600;color:#5b6b7a;white-space:nowrap}
.ophist-r i{flex:0 0 auto;font-style:normal;color:#25313c;white-space:nowrap}
.ophist-r span{flex:0 0 auto;color:#2f6b3f;white-space:nowrap}
.ophist-r em{flex:1 1 0%;min-width:0;font-style:normal;color:#243b53;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 🟡 b521(先生の逐語「（仮反映）が入っている裏書きを…ヒトの目と手で(実)の記入に変える作業を設ける」)。
   ①見出しの右の小さな黄色い札「仮反映」(行を増やさない・説明文は置かない)
   ②札を押すと裏書きの右に開く細い窓(見積書候補)。✕は左上。掴んで動かさない */
.ura-kari{flex:0 0 auto;display:inline-block;margin-left:4px;padding:0 6px;border-radius:9px;cursor:pointer;
  font-size:10.5px;font-weight:700;line-height:16px;color:#6b4e00;background:#ffe89a;border:1px solid #e8b21f}
.ura-kari:hover{background:#ffdf6e}
/* 🟡 b521 追記(先生の回答「(仮反映)のまま『確定して会計へ』…→ 押せないようにしてください。」):
   会計へ進もうとして止まった時は札が**赤くなる**だけ(説明文の帯・案内文は置かない) */
.ura-kari.ng{color:#fff;background:#e5393f;border-color:#c62828}
.ura-kari.ng:hover{background:#d0262c}
.uraqw{position:fixed;z-index:9000;width:320px;max-height:360px;display:flex;flex-direction:column;
  background:#fff;border:1px solid #9aa;border-radius:6px;padding:6px 8px 8px;box-shadow:0 3px 12px rgba(0,0,0,.28)}
.uraqw .mhead{margin-bottom:4px}
.uraqw .mhead h3{font-size:13px}
.uraqw-b{flex:1 1 auto;min-height:0;overflow:auto}
.uraqw-r{display:flex;gap:6px;align-items:baseline;font-size:11.5px;line-height:1.6;padding:1px 2px;cursor:pointer;
  border-bottom:1px solid #f0f4f8}
.uraqw-r:hover{background:#eef4fb}
.uraqw-r.on{background:#fff6da}
.uraqw-r b{flex:0 0 auto;font-weight:600;color:#5b6b7a;white-space:nowrap}
.uraqw-r span{flex:1 1 0%;min-width:0;color:#243b53;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uraqw-r em{flex:0 0 auto;font-style:normal;color:#25313c;white-space:nowrap}
.uraqw-d{padding:2px 2px 4px 10px;border-bottom:1px solid #f0f4f8;background:#fcfdff}
.uraqw-dr{display:flex;gap:6px;align-items:baseline;font-size:11.5px;line-height:1.5}
.uraqw-dr span{flex:1 1 0%;min-width:0;color:#243b53;word-break:break-all}
.uraqw-dr i{flex:0 0 auto;font-style:normal;color:#5b6b7a;white-space:nowrap}
.uraqw-w{display:block;font-style:normal;font-size:11.5px;color:#7b8794;padding:2px}
.uraqw-go{flex:0 0 auto;margin-top:6px;font-size:12px;padding:3px 0;width:100%}
/* 📍 b295: 赤いピル「オペ段取り表」(お気に入りのピルの帯のすぐ下・右寄せが定位置)。押すと表を出す/しまう。
   上原か管理者(.lib-opsh-pill-mv)だけ掴んで動かせる(位置は transform で。ずれは kv・全員同じ)。
   行そのものは高さを持たない(margin-top:-4px で帯との隙間 gap:8px を詰める) */
.lib-opsh-pillrow{flex:0 0 auto;display:flex;justify-content:flex-end;margin-top:-4px;position:relative;z-index:5}
/* 🟡 b392(2026-09-10 先生の指示「現在の『オペ段取り表』ボタンは赤色から、少し濃いめの黄色へ変更お願いします。」)。
   赤(#e5393f・白文字)→ 少し濃いめの黄色(#e8b21f)+濃い茶の文字(黄色の上では白は読めないため) */
.lib-opsh-pill{flex:0 0 auto;font-size:11px;line-height:1.6;color:#3d2f00;background:#e8b21f;border:1px solid #cd9a0d;
  border-radius:999px;padding:1px 9px;cursor:pointer;white-space:nowrap;user-select:none;touch-action:none}
.lib-opsh-pill:hover{background:#d5a20f;border-color:#b8890a}
.lib-opsh-pill-mv{cursor:grab}
/* 📝 2026-09-08 b358 先生の指示: LINE窓のノート欄に医師だけの『診療メモ』ボタン(予約ボードの右クリックと同じ窓)。
   赤いピルの左に薄い緑の小さなピル(同じ寸法)。.off=ひもづいていない相手(薄く・押せない) */
/* ⬜ b392(2026-09-10 先生の指示「『診療メモ』ボタンは薄い緑から変更で白背景のボタンにしてください。」)。
   薄い緑(#dff5e3)→ 白(#fff)。枠は見える程度に(#c6d0da=右クリックの小窓と同じ線の色) */
.lib-smemo-pill{flex:0 0 auto;font-size:11px;line-height:1.6;color:#1c2b3a;background:#fff;border:1px solid #c6d0da;
  border-radius:999px;padding:1px 9px;margin-right:6px;cursor:pointer;white-space:nowrap;user-select:none}
.lib-smemo-pill:hover{background:#f2f7fb;border-color:#9fb2c4}
.lib-smemo-pill.off{opacity:.45;cursor:not-allowed}
.lib-smemo-pill.off:hover{background:#fff;border-color:#c6d0da}
/* ★ お気に入りの定型文のピル(b246・ノートの下)。押すと返信欄に本文が入る(送信はしない) */
/* 🌲 2026-09-19 b527: 子の帯(.lib-tplkids)を区画の**上**に重ねて出すので position:relative。
   ⚠️ z-index は付けない(上の b518 の注記どおり。数字を付けると重なりの入れ物ができて赤いピルが押せなくなる) */
.lib-tplfavs{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:4px;position:relative}
.lib-tplfav{max-width:100%;font-size:11px;line-height:1.6;color:#0b6f3a;background:#e6f8ee;border:1px solid #9ad9b4;
  border-radius:999px;padding:1px 9px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none}
.lib-tplfav:hover{background:#06c755;border-color:#06c755;color:#fff}
/* 🖱 b294②: ピルを押したまま動かす並べ替え(上原だけ)。掴んでいるピルは薄く・落とす先のピルは緑の枠(説明文は置かない) */
.lib-tplfav.drag{opacity:.45}
.lib-tplfav.over{box-shadow:0 0 0 2px #06c755}
/* 🌲 2026-09-19 b527: お気に入りの通常定型文のツリー(親だけ並べて省スペース・子はホバーで出す)。
   ・子の帯(.lib-tplkids)は個別定型文ツリーの帯(.lib-tree-row)と同じ見た目・同じ出方(区画の上に重ねる)
   ・子を持つ親(.hasKid)は右にごく小さな ▸ を1つ足すだけ(説明文・帯は置かない。先生の指示)
   ・開いている親(.on)はホバーと同じ濃い緑のまま(どれを辿っているかが分かる) */
.lib-tplfav.hasKid::after{content:'▸';margin-left:4px;font-size:9px;opacity:.65}
.lib-tplfav.on{background:#06c755;border-color:#06c755;color:#fff}
/* 🩺 2026-09-23 b595 (D) → b596: 遠隔カウンセリング後だと見分けられた時、「対面 確」のピル(子に置かれていれば親のピル)を
   目立たせる。枠を濃くするだけで、位置も大きさも1pxも変えない(省スペース優先・説明文は足さない) */
.lib-tplfav.arfix,.lib-tplkid.arfix{box-shadow:0 0 0 2px #0b6f3a;font-weight:700}
/* 🩺 2026-09-23 b596: 返信欄に「対面 確」の遠隔後の亜型が入っている間の1行の印(.lai-seed と同じ高さ感・緑系)。
   人が1文字でも手直しすれば消える。説明文はこれ以上足さない */
.lar-seed{display:flex;align-items:center;gap:8px;font-size:11px;color:#0b6f3a;background:#e8f7ee;border:1px solid #b9e3c8;border-radius:6px;padding:2px 9px}
.lar-seed .lai-st{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 📐 2026-09-19 b530 先生の逐語「『op確』でホバーさせてツリーのウインドウを出して、ツリー内の定型文を選びにいく間に
   ツリーのウインドウが多くの場合消えてしまいます。ツリーのウインドウは直上などに出してもらうなどして…」
   → b527 の「left:0;right:0(=区画の一番上に横一列)」をやめ、**その親のピルの真上**に隙間0で出す。
     左端(--favkx)・下端(style.bottom)/上端(style.top)は main.tsx が実測して入れる。
     窓からはみ出す時だけ左へ寄せるので max-width で止める。margin は入れない(1pxでも空けると、そこを通り抜けて消える) */
.lib-tplkids{position:absolute;left:var(--favkx,0px);bottom:100%;z-index:6;display:flex;flex-wrap:wrap;gap:4px;
  max-width:calc(100% - var(--favkx,0px));padding:5px 6px;background:#fff;border:1px solid #9ad9b4;border-radius:10px;
  box-shadow:0 6px 18px rgba(10,25,45,.14)}
.lib-tplkid{max-width:100%;font-size:11px;line-height:1.6;color:#0b6f3a;background:#f2fbf6;border:1px solid #cdeadb;
  border-radius:999px;padding:1px 9px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none}
.lib-tplkid:hover{background:#06c755;border-color:#06c755;color:#fff}
/* 🌳 2026-09-16 b494: 「個別定型文」の区画(お気に入りのピルの下)。大項目のピルは灰青(通例の薄緑と見分けが付く・派手にしない)。
   帯(.lib-tree-pop)は区画の**上**に重ねて出す(中項目の帯が下・小項目の帯がその上)。区画の幅いっぱい=窓の端からはみ出さない。
   ぼんやり光る = data-glow(青/緑/黄)。淡い輪と地色だけ(先生は派手な物を嫌う) */
/* 🗂 2026-09-18 b507 先生の逐語「(なお、ノート領域は定型文領域の背面に位置するようにお願いします。)」
   → 定型文の区画(ピルと帯)を、ノート(.lib-memo)より**前**に置く。ノートは今までどおり後ろ(重なった所は定型文が勝つ)
   🚑 2026-09-18 b518(b514 が見つけた実害): b507 でここに z-index:6 を入れたら、**赤いピルの行(.lib-opsh-pillrow=5)を
      追い越して**しまい、上へ動かした赤いピル(例 translate(-80px,-40px))が押せなくなっていた。
   【直し】この区画に数字は付けない(**位置だけ**)。右の列の中の重なりは次の順で、数字は増やさない:
      ノート(数字なし・位置なし) < 定型文の区画(位置だけ=数字なしでもノートの前に出る) < 赤いピルの行(5) < 開いた帯(.lib-tree-pop=6)
      ⚠️ ここに数字を付けると「重なりの入れ物」ができ、帯(6)も赤いピルの行(5)を越えられなくなる */
.lib-tree{flex:0 0 auto;position:relative}
.lib-tree-cats{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
/* 📐 2026-09-17 b498 先生の逐語「なるべく1行に3個定型文ボタン入れたりして詰めたいので、文字一個分程度は右にはみ出してもokという判定にしてください。」
   一括の大窓だけ: 並べる箱を右へ 15px(=1文字ぶん)はみ出させ、折り返しの判定をその分だけ緩める。はみ出した分は列の右の余白(.lininbox の 12px+
   .lbw-body の 10px の内側)に収まるので横スクロールは出ない。✎ は 15px 戻して列の中に置く。帯(.lib-tree-pop)の幅は列のまま */
.linebw .lib-tree-cats{margin-right:-15px}
.linebw .lib-tree-edit{margin-right:15px}
/* ↔ b498: 大項目のピルの掴んで並べ替え(管理者だけ=.mv)。お気に入りのピル(b294②)と同じ作法: 掴んでいるピルは薄く・落とす先に輪 */
.lib-tree-cat.mv{cursor:grab}
.lib-tree-cat.drag{opacity:.45}
.lib-tree-cat.over{box-shadow:0 0 0 2px #334b63}
.lib-tree-cat,.lib-tree-mid,.lib-tree-sub{max-width:100%;font-size:11px;line-height:1.6;border-radius:999px;padding:1px 9px;
  cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;border:1px solid transparent}
.lib-tree-cat{color:#334b63;background:#f1f5f9;border-color:#c9d5e2}
.lib-tree-cat:hover,.lib-tree-cat.on{background:#dfe8f3;border-color:#a9bdd2}
.lib-tree-mid{color:#334b63;background:#fff;border-color:#c9d5e2}
.lib-tree-mid:hover,.lib-tree-mid.on{background:#e9f0f7;border-color:#a9bdd2}
.lib-tree-sub{color:#1c2b3a;background:#fff;border-color:#d5dde6}
.lib-tree-sub:hover{background:#334b63;border-color:#334b63;color:#fff}
.lib-tree-edit{flex:0 0 auto;font-size:11px;color:#8794a1;cursor:pointer;padding:0 4px;margin-left:auto;user-select:none}
.lib-tree-edit:hover{color:#334b63}
.lib-tree-pop{position:absolute;left:0;right:0;bottom:100%;z-index:6;display:flex;flex-direction:column;gap:3px;padding-bottom:3px;
  transform:translateY(var(--treedown,0px))}
/* 📐 2026-09-18 b507: 帯は**切り取らない**(前は max-height:38vh + overflow:auto で、はみ出した分が隠れていた)。
   背が高い時は上へ伸ばし、画面の上に出そうな分だけ main.tsx が --treedown で下げる */
.lib-tree-row{display:flex;flex-wrap:wrap;gap:4px;padding:5px 6px;background:#fff;border:1px solid #c9d5e2;border-radius:10px;
  box-shadow:0 6px 18px rgba(10,25,45,.14)}
/* 📐 b507: 小項目は**1行に2つ**。右の列から左へ --treeext(LINE の窓に収まる分だけ。main.tsx が実測して入れる)広げる */
.lib-tree-subs{background:#fbfcfe;display:grid;grid-template-columns:1fr 1fr;
  margin-left:calc(-1 * var(--treeext,0px))}
.lib-tree-subs>.lib-tree-sub{max-width:none;text-align:left}
[data-glow=blue].lib-tree-cat,[data-glow=blue].lib-tree-mid,[data-glow=blue].lib-tree-sub{background:#e8f0ff;border-color:#9fbcf0;box-shadow:0 0 0 2px rgba(70,140,255,.28)}
[data-glow=green].lib-tree-cat,[data-glow=green].lib-tree-mid,[data-glow=green].lib-tree-sub{background:#e6f7ec;border-color:#93d6ac;box-shadow:0 0 0 2px rgba(40,180,90,.28)}
[data-glow=yellow].lib-tree-cat,[data-glow=yellow].lib-tree-mid,[data-glow=yellow].lib-tree-sub{background:#fff7d6;border-color:#e6cf7a;box-shadow:0 0 0 2px rgba(230,180,20,.32)}
/* 🌳 b494: 「個別定型文ツリーの編集」の窓(3列。✕は左上・説明文なし) */
.ltrw{max-width:1040px;padding:12px 16px 14px}
.ltr-head{gap:8px;justify-content:flex-start}
.ltr-head h3{flex:1 1 auto;font-size:15px}
.ltr-acts{display:flex;align-items:center;gap:6px}
.ltr-msg{font-size:11.5px;color:#0b6f3a}
.ltr-msg.err{color:#c0392b}
.ltr-cols{display:flex;gap:10px;align-items:stretch}
.ltr-col{flex:1 1 0%;min-width:0;display:flex;flex-direction:column;gap:6px}
.ltr-col3{flex:1.6 1 0%}
.ltr-list{flex:0 0 auto;max-height:38vh;overflow:auto;border:1px solid #dbe3ea;border-radius:8px;padding:3px;display:flex;flex-direction:column;gap:1px}
.ltr-item{font-size:12px;line-height:1.5;padding:2px 7px;border-radius:6px;cursor:pointer;color:#1c2b3a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ltr-item:hover{background:#f2f7fb}
.ltr-item.on{background:#dfe8f3;color:#0f2b46;font-weight:700}
.ltr-btns{display:flex;gap:4px}
.ltr-btns .mini{padding:1px 8px}
.ltr-del{color:#c0392b}
.ltr-fields{display:flex;flex-direction:column;gap:4px}
.ltr-fields input,.ltr-fields textarea{width:100%;box-sizing:border-box;font-size:12px;padding:3px 6px;border:1px solid #dbe3ea;border-radius:6px;background:#fff}
.ltr-fields textarea{resize:vertical;line-height:1.5}
/* ✏️ b498: タイトルの欄。項目を選んだ直後(欄が作り直された時)だけ薄い青の枠が1.2秒ついて、どれがタイトルか分かる(説明文は置かない) */
.ltr-title{animation:ltr-title-hl 1.2s ease-out}
@keyframes ltr-title-hl{0%{border-color:#7fb0ea;box-shadow:0 0 0 2px rgba(127,176,234,.35)}100%{border-color:#dbe3ea;box-shadow:0 0 0 0 rgba(127,176,234,0)}}
@media (max-width:820px){.ltr-cols{flex-direction:column}.ltr-list{max-height:22vh}}
/* 🔗 2026-09-17 b505: 組み合わせ(A×B)の帯。置換タグの帯(.ltr-vars)と同じ作法の折りたたみ。
   ・上の小さなつまみで、いま編集する段(大/中/小)を選ぶ(既定は小)
   ・1行 = ●(いま揃っている印)+ Aの言い方 + × + Bの言い方 + 削除。既存の合図の語(kw)の欄とは別の帯にして混ぜない */
.ltr-and{margin-top:10px;border-top:1px solid #dbe3ea;padding-top:6px}
.ltr-and-h{display:inline-block;font-size:12px;color:#334b63;cursor:pointer;user-select:none;padding:2px 4px;border-radius:6px}
.ltr-and-h:hover{background:#f2f7fb}
.ltr-and-b{display:flex;flex-direction:column;gap:4px;margin-top:4px;max-height:26vh;overflow:auto}
.ltr-and-lv{display:flex;align-items:center;gap:4px}
.ltr-and-tab{font-size:11px;line-height:1.6;padding:1px 9px;border-radius:999px;border:1px solid #c9d5e2;background:#f1f5f9;color:#334b63;
  cursor:pointer;user-select:none;white-space:nowrap;max-width:140px;overflow:hidden;text-overflow:ellipsis}
.ltr-and-tab.on{background:#dfe8f3;border-color:#a9bdd2;font-weight:700}
.ltr-and-add{margin-left:auto}
.ltr-and-row{display:grid;grid-template-columns:14px 1fr 12px 1fr 44px;gap:4px;align-items:center}
.ltr-and-row input{width:100%;box-sizing:border-box;font-size:12px;padding:3px 6px;border:1px solid #dbe3ea;border-radius:6px;background:#fff;min-width:0}
.ltr-and-x{font-size:11px;color:#8794a1;text-align:center}
.ltr-and-hit{font-size:10px;color:#e3e8ee;line-height:1}
.ltr-and-hit.on{color:#2fa96a}
@media (max-width:820px){.ltr-and-row{grid-template-columns:14px 1fr 44px}.ltr-and-x{display:none}}
/* 🏷 2026-09-17 b495: 置換タグ。編集窓の下の折りたたみの帯(.ltr-vars)と、右クリックの一覧(.lib-varctx=既存の .calctx の作法) */
.ltr-vars{margin-top:10px;border-top:1px solid #dbe3ea;padding-top:6px}
.ltr-vars-h{display:inline-block;font-size:12px;color:#334b63;cursor:pointer;user-select:none;padding:2px 4px;border-radius:6px}
.ltr-vars-h:hover{background:#f2f7fb}
.ltr-vars-b{display:flex;flex-direction:column;gap:4px;margin-top:4px;max-height:34vh;overflow:auto}
/* 📝 b500: 院ごとの値は複数行を入れられる欄(textarea)。高さは中身の行数(rows)で決まるので、1行の物は今までと同じ高さのまま。
   行の高さがそろうよう、上そろえ(align-items:start)にした */
.ltr-vrow{display:grid;grid-template-columns:150px 1fr 1fr 1fr 1fr 44px;gap:4px;align-items:start}
.ltr-vrow input,.ltr-vrow textarea{width:100%;box-sizing:border-box;font-size:12px;padding:3px 6px;border:1px solid #dbe3ea;border-radius:6px;background:#fff;min-width:0}
.ltr-vrow textarea{font-family:inherit;line-height:1.5;resize:vertical;display:block;overflow:auto}
.ltr-vrow input{line-height:1.5}
.ltr-vhead span,.ltr-vrow button{align-self:center}
/* 👤 2026-09-18 b507: ＜苗字＞ の行(値は院ごとに持たない=その相手の苗字がその場で入る)。欄は薄く・編集できない */
.ltr-vsei{grid-template-columns:150px 1fr}
.ltr-vsei input{background:#f6f9fb;color:#5c6b7a}
.ltr-vsei-note{align-self:center;font-size:11px;color:#8794a1}
.ltr-vhead span{font-size:11px;color:#8794a1;padding:0 4px}
.ltr-vbtns{align-items:center}
.ltr-vbtns .pri{margin-left:auto}
.lib-varctx a.lib-varitem{padding:4px 10px;font-size:12.5px}
.lib-varctx a.lib-varitem.off{color:#98a4b1}
@media (max-width:820px){.ltr-vrow{grid-template-columns:1fr 1fr;}.ltr-vhead{display:none}}
/* 🪪 新規カルテ登録のパネル(batch247・公式LINEを開くのボックスの下)。読み取りはその場で直せる入力欄 */
.lib-reg{flex:0 0 auto;display:flex;flex-direction:column;gap:4px;
  border:1px solid #f2c9d6;border-radius:10px;background:#fff7fa;padding:8px 9px}
.lib-reg-h{font-size:12px;font-weight:700;color:#c2255c}
.lib-reg-r{display:flex;align-items:center;gap:5px}
.lib-reg-r span{flex:0 0 54px;font-size:10.5px;color:#8a5566}
.lib-reg-r input,.lib-reg-r select{flex:1 1 0%;min-width:0;font-size:11.5px;padding:2px 5px;
  border:1px solid #e6cdd6;border-radius:5px;background:#fff}
/* 🪪 2026-09-08 b352 先生の指示: 新規登録の氏名に姓名の空白(名簿の姓と最長一致)。サーバーが自動で空白を入れた欄は
   薄い黄色の下線(b335 の .lib-tafill と同じ #fff0a0)。職員が打ち直せば外れる(class が取れる) */
.lib-reg-r input.lib-reg-auto{box-shadow:inset 0 -3px 0 #fff0a0}
/* 🎂 2026-09-16 b480: 生年月日の欄の右端に「無効です」(暗い灰)/「有効です」(明るい緑)。行を増やさないよう欄の中に重ねる。
   無効の時だけ欄の下に正しい入れ方を1行(暗い小さな字)。「はい」の関門で止まった理由は赤い字 */
.lib-reg-birth{position:relative}
.lib-reg-r.lib-reg-birth input{padding-right:50px}
.lib-reg-bv{position:absolute;right:6px;top:50%;transform:translateY(-50%);font-style:normal;font-size:10px;
  line-height:1;pointer-events:none;white-space:nowrap}
.lib-reg-bv.ng{color:#9aa0a6}
.lib-reg-bv.ok{color:#0a9f4a;font-weight:700}
.lib-reg-bwhy{margin:-2px 0 0 59px;font-size:10px;line-height:1.3;color:#8a8f96;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-reg-err{font-size:11px;font-weight:700;color:#d93025}
.lib-reg-dup{font-size:11px;color:#b02a2a;background:#fff0f0;border:1px solid #f1b9b9;border-radius:6px;padding:4px 6px}
.lib-reg-dup a{margin-left:6px;color:#1e6fe0;text-decoration:underline;cursor:pointer;white-space:nowrap}
.lib-reg .btnrow{display:flex;gap:6px;margin:2px 0 0}
.lib-reg .btnrow button{flex:1 1 0%}
/* 📋 定型文の窓(batch232・＋の吹き出しから開く) */
.ltpl-bar{display:flex;align-items:center;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.ltpl-q{flex:1;min-width:120px;padding:5px 9px;font-size:12.5px}
.ltpl-tab{font-size:11.5px;color:#5c6b7a;background:#eef2f6;border:1px solid #dbe3ea;border-radius:11px;
  padding:2px 10px;cursor:pointer;white-space:nowrap}
.ltpl-tab.on{background:#06c755;border-color:#06c755;color:#fff;font-weight:700}
.ltpl-sort{font-size:11.5px;padding:3px 4px}
.ltpl-list{max-height:52vh;overflow:auto;border:1px solid #eef2f6;border-radius:8px}
/* 🖱 b293④: 行そのものを押しても返信欄には入らない(入るのは「選択」だけ)ので cursor は既定。
   題名・本文の頭は編集/プレビューの入口なので pointer。position:relative はプレビューの箱(.ltpl-pv)の基準 */
.ltpl-row{position:relative;display:flex;align-items:center;gap:7px;padding:6px 8px;border-bottom:1px solid #f1f4f7}
.ltpl-row:hover{background:#f0f8f3}
.ltpl-row b{font-size:12.5px;white-space:nowrap;max-width:34%;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.ltpl-prev{flex:1;min-width:0;font-size:11px;color:#8a97a5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
/* 👀 b293④: 本文のプレビュー(全文)。編集できない人が題名・本文の頭を**押した**時だけ出る。
   ✂️ 2026-09-19 b529 先生の逐語「定型文の編集ウインドウで、ホバーで本文が出るのは無しで大丈夫です。
      (本文のウインドウのため移動先が確認できない)」→ **ホバーで出す道は撤去**(main.tsx の hov ごと)。
      この箱そのものは「押した時」の道でまだ使うので残している
   行の下(入らなければ上)に重ねて出す。位置(left/width/top|bottom)は画面側が行の座標から入れる(fixed=一覧の枠で切れない) */
.ltpl-pv{position:fixed;z-index:5;max-height:40vh;overflow:auto;white-space:pre-wrap;box-sizing:border-box;
  font-size:11.5px;line-height:1.55;color:#243b53;background:#fff;border:1px solid #dbe3ea;border-radius:8px;
  padding:7px 10px;box-shadow:0 6px 18px rgba(0,0,0,.14);font-weight:400}
.ltpl-fav{flex-shrink:0;font-size:13px;color:#d3dae1;cursor:pointer;line-height:1}
.ltpl-fav.on{color:#f5a623}
/* ↕ 並び順=手動の時のつまみ(b246)。行ごと掴んでドラッグで入れ替える */
.ltpl-grip{flex-shrink:0;font-size:11px;color:#b6c1cb;line-height:1;cursor:grab}
.ltpl-drag{cursor:grab}
/* 🌲 2026-09-19 b527 先生の逐語「ツリー化されたことは、『選択』含んでそれより右のタイトル、本文が、
   ひと段落下がることから認識できるように。」「今クリックを離すと『行の真ん中に入りますよ』という行間に
   色がついて認識できる合図が欲しいです。」「今クリックを離すと、ツリー化しますよ、というのも認識できる合図」
   ⭐ 2つの合図は**はっきり別物**にしてある:
      ・並べ替え(行間) = その行間に**緑の太い線**(.dz-before/.dz-after)。行そのものの色は変えない
      ・ツリー化(行の上) = 置かれる側の行を**紫の枠で囲んで薄紫の地**(.dz-on)。線は出さない
   ⭐ 字下げ(ひと段落)の量は main.tsx の LINE_TPL_KID_INDENT ただ1つ(「選択」の左の余白で当てる)。
      ⠿ と ★ の位置は動かさない */
.ltpl-row.dz-before::before,.ltpl-row.dz-after::after{content:'';position:absolute;left:6px;right:6px;height:3px;
  background:#06c755;border-radius:2px;pointer-events:none}
.ltpl-row.dz-before::before{top:-2px}
.ltpl-row.dz-after::after{bottom:-2px}
.ltpl-row.dz-on{background:#f3effd;box-shadow:inset 0 0 0 2px #6b5ada;border-radius:8px}
.ltpl-row.dz-on:hover{background:#f3effd}
/* 🌲 b527: 子の行だけに出す「ツリーから外す」(⤴)。✎ ✕ と同じ大きさ・同じ薄さ */
.ltpl-unnest{flex-shrink:0;font-size:11px;color:#8a97a5;cursor:pointer;padding:0 2px}
.ltpl-unnest:hover{color:#6b5ada}
.ltpl-ed,.ltpl-del{flex-shrink:0;font-size:11px;color:#8a97a5;cursor:pointer;padding:0 2px}
.ltpl-ed:hover{color:#1e6fe0}
.ltpl-del:hover{color:#e03131}
.ltpl-edit{display:flex;flex-direction:column;gap:6px}
.ltpl-et{padding:6px 9px;font-size:13px}
.ltpl-eb{padding:7px 10px;font-size:12.5px;font-family:inherit;line-height:1.6}
/* 🏥 定型文の院分け(batch245): 窓の切替ピル */
.ltpl-bar .lcpicks,.ltpl-ecl.lcpicks{margin-left:0}
/* 🖱 b293④: 行の左の「選択」(押すと返信欄へ)。行の院マーク(旧 .ltpl-cl)の場所に置き、
   その院の色を**淡く**した地(院ピル .lcpick より薄い)。共通は灰色系。押せる所はここだけ */
.ltpl-sel{flex-shrink:0;font-size:10px;font-weight:600;line-height:1.5;padding:0 7px;border-radius:999px;cursor:pointer;
  border:1px solid #e3e8ee;background:#f3f5f8;color:#6b7a89}
.ltpl-sel:hover{filter:brightness(.96)}
.ltpl-sel.cl-os{background:#fff0f5;border-color:#ffc9d9;color:#b23a62}
.ltpl-sel.cl-fk{background:#fff6e6;border-color:#f8dba6;color:#9a6404}
.ltpl-sel.cl-gz{background:#eef9ff;border-color:#bde6fa;color:#0b6f9e}
/* 🗓 定型文の種類(batch247)。編集画面の院ピルの右の小さなselect */
.ltpl-kind{margin-left:auto;font-size:11.5px;padding:3px 4px}
/* 📮 送信を予約の窓(batch232)。文面も時刻も人が決める(自動生成の経路は無い) */
.lsch-pick{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.lsch-p{font-size:11.5px;color:#5c6b7a;background:#eef2f6;border:1px solid #dbe3ea;border-radius:11px;
  padding:2px 10px;cursor:pointer;white-space:nowrap}
.lsch-p.on{background:#06c755;border-color:#06c755;color:#fff;font-weight:700}
/* 🕗 2026-09-19 b524 先生の逐語「『2026/09〜』の右のものは左に詰めてください」
   = 中の文字(2026/09/20 08:40)と右端のカレンダーの絵の間の**余白**を無くす。
   Chromeは <input type="datetime-local"> の幅を「中の文字より広め」に取り、余った分だけ
   絵が右へ離れる(本物のChromeで実測: 欄149.0px・文字の右端から絵まで17.2pxの余白)。
   絵の位置だけを動かす手(::-webkit-datetime-edit の flex を止める・field-sizing:content)は
   実測でどれも効かなかったので、**欄の幅そのもの**を中の文字ぶんに詰める。
   17.5ch(=「2026/09/20 08:40」の16文字ぶん)+16px(絵12px+左右のすきま)。
   px決め打ちにせず ch にしたのは、字の大きさが変わっても文字が欠けないため
   (11px/12px/16px のどれでも余白は数pxに収まり、文字は欠けないことを実測で確かめた)。
   実測の結果: 欄149.0px→132.8px・余白17.2px→0.9px(検査 b524の…余白を本物のChromeで確かめる) */
.lsch-at{font-size:12px;padding:3px 6px;width:calc(17.5ch + 16px)}
.lsch-list{margin-top:6px;max-height:34vh;overflow:auto}
.lsch-row{display:flex;align-items:center;gap:6px;padding:4px 6px;border-bottom:1px solid #f1f4f7;font-size:11.5px}
.lsch-row b{white-space:nowrap;color:#243b53}
.lsch-row span{flex:1;min-width:0;color:#8a97a5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* ✎ 行を押すと書き直せる(batch268)。押せる行だけ指の形にする。
   送信済みは押しても開かないので、今までどおりの矢印のまま(見た目で分かるように) */
.lsch-row{cursor:pointer}
.lsch-row:hover{background:#f7fafc}
.lsch-row.sent{opacity:.6;cursor:default}
.lsch-row.sent:hover{background:transparent}
/* ✎ 書き直しの欄(batch268)。定型文の .ltpl-edit と同じ作り(縦に並べるだけ)。
   行の位置にそのまま置き換わる=一覧の行数は増やさない */
.lsch-edit{display:flex;flex-direction:column;gap:6px;padding:4px 2px;border-bottom:1px solid #f1f4f7}
.lsch-eb{padding:6px 8px;font-size:12px;font-family:inherit;line-height:1.6}
.lsch-ok{font-style:normal;font-size:10px;color:#fff;background:#98a5b3;border-radius:8px;padding:1px 6px}
.lsch-ng{font-style:normal;color:#e03131}
/* 🚫 b599: 相手が取り消したため止めた予約の印(窓の行の「止」・返信欄の上の帯の色)。帯の形・高さは変えない */
.lsch-hold{background:#e8590c}
.lsb-bar.hold{background:#fff4e6;border-color:#ffd8a8}
.lsb-bar.hold .lsb-t{color:#d9480f}
/* ⚠ b607: 送れなかった予約の帯(色だけ・帯の形は変えない) */
.lsb-bar.err{background:#fff0f0;border-color:#ffc9c9}
.lsb-bar.err .lsb-t{color:#c92a2a}
.lsch-del{color:#8a97a5;cursor:pointer;padding:0 2px}
.lsch-del:hover{color:#e03131}
/* ══ 📮 b270(2026-09-03 先生の逐語「公式LINEと同じようにしたいです」+ 添付の公式LINEの画像) ══
   返信欄のすぐ上に出す「メッセージは〜に送信されます。」の帯と、その⋮の小窓、
   「送信日時を設定」の窓。色・字の大きさは添付画像に寄せつつ、KARTEの既存の色使いから外さない
   (薄いグレー #f2f4f6 / 文字 #5c6b7a / 削除の赤 #e03131 / 決定の緑 #06c755=LINEの緑) */
.lsb-bar{position:relative;display:flex;align-items:center;gap:6px;
  background:#f2f4f6;border:1px solid #e4e9ee;border-radius:6px;padding:3px 6px 3px 9px;font-size:11.5px}
.lsb-t{flex:1;min-width:0;color:#5c6b7a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* ⋮ 縦3個点。押すと下の小窓が出る(添付画像の位置=帯の右端) */
.lsb-dots{flex:0 0 auto;width:16px;text-align:center;color:#5c6b7a;cursor:pointer;
  font-size:13px;line-height:16px;letter-spacing:0;text-decoration:none!important;user-select:none}
.lsb-dots:hover{color:#1e6fe0}
.lsb-x{flex:0 0 auto;width:16px;text-align:center;color:#5c6b7a;cursor:pointer;
  font-size:11px;line-height:16px;text-decoration:none!important}
.lsb-x:hover{color:#e03131}
/* ⋮の小窓。⚠️ z-indexの正本(このファイルの冒頭)どおり小窓は3000番台 */
.lsb-menu{position:absolute;z-index:3000;top:100%;right:0;margin-top:2px;min-width:132px;
  background:#fff;border:1px solid #d2dbe4;border-radius:8px;box-shadow:0 8px 22px rgba(20,35,55,.18);padding:3px 0}
.lsb-menu hr{border:0;border-top:1px solid #edf1f5;margin:3px 0}
.lsb-mi{display:block;padding:5px 12px;font-size:12px;color:#243b53;cursor:pointer;
  white-space:nowrap;text-decoration:none!important}
.lsb-mi:hover{background:#f1f6fc}
.lsb-del{color:#e03131}
.lsb-del:hover{background:#fdf0f0}
/* 「保存」の間だけ緑(添付画像の「緑のボタンが送信から保存に変わる」に合わせる。
   緑は #06c755=LINEの緑で、この画面が元から使っている色(.lsch-p.on・.linebwの枠)と同じ) */
.lib-sendbar .lib-go.lib-save{background:#06c755;border-color:#06c755}
.lib-sendbar .lib-go.lib-save:hover{background:#05b34c}
/* 内容を編集している間は、左下の飾り(＋・📎)を薄くして使えない見た目にする(添付画像C) */
.lib-sendbar.editing .lib-plus,.lib-sendbar.editing .lib-clip{opacity:.35;cursor:default}
.lib-sendbar.editing .lib-plus:hover{background:#fff;border-color:#b9c6d3;color:#5c6b7a}
.lib-sendbar.editing .lib-clip:hover{opacity:.35}
/* 🕐「送信日時を設定」の窓(添付画像D)。丸(ラジオ)が縦に3つ+10分単位の但し書き+キャンセル/設定 */
.lswin .mhead h3{font-size:14px}
.lsw-r{display:flex;align-items:center;gap:7px;padding:6px 2px;font-size:12.5px;color:#243b53;cursor:pointer}
.lsw-r input[type=radio]{flex:0 0 auto;margin:0;cursor:pointer}
.lsw-d{font-size:12px;padding:3px 6px}
.lsw-h{font-size:12px;padding:3px 6px;width:96px}
.lsw-tz{font-style:normal;font-size:10.5px;color:#7b8794;background:#f2f4f6;
  border:1px solid #e4e9ee;border-radius:5px;padding:1px 5px;white-space:nowrap}
.lsw-note{font-size:10.5px;color:#8a97a5;margin:2px 2px 8px}
.lsw-btns{display:flex;justify-content:flex-end;gap:8px}
.lswin .lsw-cancel{padding:4px 14px;font-size:12px}
.lswin .lsw-ok{padding:4px 18px;font-size:12px;background:#06c755;border-color:#06c755}
.lswin .lsw-ok:hover{background:#05b34c}
/* 💬 LINE(一括)の大きな窓(b229)。予約ボード等の上に出る(z-indexは.dwin/.linewinと同じ手前) */
.linebw{position:fixed;z-index:2000;display:flex;flex-direction:column;background:#f4f6f8;
  border:1px solid #06c755;border-radius:12px;box-shadow:0 22px 60px rgba(20,35,55,.5);
  max-width:calc(100vw - 4px)}
/* 🔗 2026-09-13 b445: 患者トップのひもづけ窓(.plink-win)が開いている間だけ、大窓を一段後ろへ。
   b421 で大窓が読み込み直しでも復活するようになってから、患者トップへ移るとこの窓が
   ひもづけ窓に覆いかぶさり、行を押すことも右クリックすることもできなくなっていた。
   窓は閉じない・位置も大きさも中身も変わらない(重なりの順を入れ替えるだけ=b440 と同じ考え)。
   ⚠️ 相手は「患者ヘッダーの帯ごと 900 に上がった .psticky.pst-front」なので、ここは 800 まで下げる
      (ひもづけ窓は sticky の帯の中にあり、単独では帯より前に出られない。上の .psticky.pst-front 参照)。
      800 は帯の天井 80 より上なので、黒いバーに潜って掴めなくなる事故にはならない */
.linebw.lbw-under{z-index:800}
.lbw-bar{border-radius:11px 11px 0 0;padding:5px 9px}
.lbw-body{flex:1;min-height:0;overflow:auto;padding:8px 10px;background:#e9edf1;border-radius:0 0 11px 11px}
/* 中身はフルページ版(LineInbox)そのまま。高さだけ窓なりにする(.libのcalc(100vh-190px)を上書き) */
.lbw-body .card.lininbox{height:100%;box-sizing:border-box;margin-bottom:0;display:flex;flex-direction:column;padding:8px 12px 10px}
.lbw-body .lininbox>h3{margin:0 0 6px}
.lbw-body .lib{flex:1;min-height:0;height:auto}
/* 端・右下の掴みで伸縮(.kb-rsと同じ作り。あちらは狭い画面でdisplay:noneになるので専用クラス) */
.lbw-rs{position:absolute;z-index:5;touch-action:none}
.lbw-n{top:-3px;left:12px;right:12px;height:7px;cursor:ns-resize}
.lbw-s{bottom:-3px;left:12px;right:12px;height:7px;cursor:ns-resize}
.lbw-e{right:-3px;top:12px;bottom:12px;width:7px;cursor:ew-resize}
.lbw-w{left:-3px;top:12px;bottom:12px;width:7px;cursor:ew-resize}
.lbw-se{right:-4px;bottom:-4px;width:16px;height:16px;cursor:nwse-resize}
/* 📐 横幅のワンタッチ(2026-09-02 batch257 先生の逐語「横幅を、ブラウザの横幅の80%や、その半分の
   40%や、80%の1/3の(26%)にワンタッチで折りたためるボタンが…右上に欲しいです」)。
   バーの右端(=窓の右上)に小さなピルを3つ。説明文は置かない・行は増やさない */
/* 26%(=1400pxの画面で364px)まで細くするとバーの中身が1行に入りきらない。
   院のピルを隠すより、その時だけ折り返す方を採る(何も失わない。広い時は今までどおり1行) */
.lbw-bar{flex-wrap:wrap;row-gap:4px}
/* 🤍 b259④(先生の逐語「LINEウインドウの上のバーは今は濃いグレーですが、非常に薄い、
   白に近いグレーで」)。地を #2f4358 → #f7f8fa にし、その上の文字・つまみを読める色へ直す。
   ⚠️ 「✕ 閉じる」は青いボタン(.pri)なので白い地でもそのまま読める。院のピル(.lcpick)も
      もともと薄い地色+濃い文字なのでそのまま */
.lbw-bar{background:#f7f8fa;color:#3c4c5c;border-bottom:1px solid #e3e8ee}
/* 院のピル(b248の「ほぼ透明で薄いグレー・文字は判別できる程度に」)は、地が白に近くなったぶん
   文字だけ少し濃くする(この大窓のバーの中だけ。フルページ版・定型文の窓は b248 のまま) */
.lbw-bar .lcpick:not(.on){color:#6b7a8a}
.lbw-bar .lcpick:not(.on):hover{color:#3c4c5c}
.lbw-pcts{margin-left:auto;flex:0 0 auto;display:inline-flex;gap:3px}
.lbw-pct{padding:1px 7px;border-radius:999px;font-size:10.5px;line-height:1.6;font-weight:600;
  border:1px solid rgba(120,134,150,.34);background:rgba(120,134,150,.10);color:#63758a;
  cursor:pointer;white-space:nowrap;text-decoration:none!important;user-select:none}
.lbw-pct:hover{background:rgba(120,134,150,.20);color:#22384f}
.lbw-pct.on{background:#06c755;border-color:#06c755;color:#fff}
/* 🤖 b309: 「AI設定」のピル(先生の逐語「右上の30%の左あたりにちょっと間隔をあけて」)。見た目は%のピルと同じ、右に間隔だけ */
.lbw-ai{margin-right:10px}
/* 👑 b310: 上原以外には薄く見えるだけ(存在は見せる・押せない。説明文は出さない) */
.lbw-ai.dim{opacity:.45;cursor:default}
.lbw-ai.dim:hover{background:rgba(120,134,150,.10);color:#63758a}
/* ══ ⏱ 2026-09-07 b333 先生の指示: LINE応答速度の記録表(AI導入の効果を見る・上原だけ)。
   ピルは「AI設定」の左(.lbw-pcts の外・右寄せはこのピルが担い、後ろの .lbw-pcts の auto を外す)。窓(.lspw)の✕は左上・省スペース ══ */
.lbw-spd{margin-left:auto;margin-right:6px}
.lbw-spd~.lbw-pcts{margin-left:0}
/* ══ 📚 2026-09-07 b336 先生の指示: アルゴリズム集(仕組みを日本語で確認できる場所)。
   ピルは「応答速度」の左(誰でも見える)。右寄せはこのピルが担い、後ろの「応答速度」「%」の auto を外す。
   ホバーの一覧(.lalg-pop)は小さな縦並び。窓(.lalgw)は掴んで動かす窓(.dwin)の作法・✕は左上・12px・見出しは太字だけ ══ */
.lbw-alg-wrap{position:relative;display:inline-flex;margin-left:auto;margin-right:6px}
.lbw-alg-wrap~.lbw-spd{margin-left:0}
.lbw-alg-wrap~.lbw-pcts{margin-left:0}
/* ══ 📐 2026-09-09 b373 先生の指示(逐語「55%(2番目の大きさ)に縮めた時に,ウインドウ幅の三段階のボタンが右端で
   無くなるのが嫌です。縮めた時は、『アルゴリズム集』と『応答速度』を2行目にして、『30%』『55%』などを
   1行目の右端に残してください」)。
   ・窓が2番目の大きさ(と、それより狭い時)だけ .lbw-2row が付く(main.tsx の LBW_2ROW_W)。広い時は今までどおり1行
   ・並べ替えは order で行う(HTMLの並びは変えない)
   ・改行は入れ物の ::after を「幅いっぱい・高さ0」の中身にして作る(空の div を足さない=DOMを増やさない)
   ══ 📐 2026-09-09 b374 先生の逐語(「LINEウインドウの５２％の時ですが、上のバーが3行になっています。2行がいいです。
   ％系は1行目の一番右へ。アルゴリズム集、AI設定、応答速度は2行目の一番左へ、ならスペース的に問題ないと思います」)。
   【3行に折れていた原因】1行目の右端に「AI設定+%」の4つを置いていたので、院のピルと並ぶと1行に収まらず
     この塊ごと2行目へ落ち、アルゴリズム集・応答速度が3行目に押し出されていた。
   【直し】AI設定を .lbw-pcts の外に出し(main.tsx)、**1行目の右端は%のピルだけ**にする。
     2行目は**左端そろえ**で アルゴリズム集(3) → AI設定(4) → 応答速度(5)。margin-left:auto は全部外す ══ */
.lbw-bar.lbw-2row{row-gap:3px}
.lbw-bar.lbw-2row>.lbw-pcts{order:1;margin-left:auto}
.lbw-bar.lbw-2row::after{content:'';order:2;flex:0 0 100%;height:0}
.lbw-bar.lbw-2row>.lbw-alg-wrap{order:3;margin-left:0;margin-right:6px}
.lbw-bar.lbw-2row>.lbw-ai{order:4;margin-left:0;margin-right:6px}
.lbw-bar.lbw-2row>.lbw-spd{order:5;margin-left:0;margin-right:0}
/* ══ 📐 2026-09-11 b421 先生のご指示(逐語「窓が 320px 近くまで狭いと上のバーが3行になる→2行に収めてください。
   (アルゴリズム集、AI設定、応答速度を2行目の一番左へ。)」)。
   【3行(以上)に折れていた原因】320px 近くでは 1行目の「✕ 閉じる + 院のピル6つ + %のピル3つ」が入りきらず、
     その塊の中でさらに折り返していた(2行目のアルゴリズム集たちは押し出されて3行目に見える)。
   【直し】.lbw-narrow(main.tsx の LBW_NARROW_W より狭い時だけ付く)で、
     ・%のピルを**2行目の右端**へ回す(order:6 + margin-left:auto)。2行目の左端は先生のご指示どおり
       アルゴリズム集 → AI設定 → 応答速度 のまま
     ・1行目 = ✕ 閉じる + 院のピルだけ。入りきるように**余白と間隔だけ**を詰める
       (案内の帯・説明文は足さない。⚠️ 文字の大きさは b588 で 11px → 10.5px にそろえた。下の b588 の項を見る) ══ */
.lbw-bar.lbw-narrow{gap:4px;row-gap:3px;padding:5px 4px}
.lbw-bar.lbw-narrow>.lbw-pcts{order:6;margin-left:auto;gap:2px}
.lbw-bar.lbw-narrow>.lbw-alg-wrap{margin-right:0}
.lbw-bar.lbw-narrow>.lbw-ai{margin-right:0}
.lbw-bar.lbw-narrow .mini{padding:3px 4px;font-size:11px}
.lbw-bar.lbw-narrow .lbw-pct{padding:1px 4px}
.lbw-bar.lbw-narrow .lcpicks{margin-left:0}
.lbw-bar.lbw-narrow .lcpicks.lcp-main{gap:3px}
.lbw-bar.lbw-narrow .lcpick{padding:2px 3px}
/* ══ 📐 2026-09-11 b423 先生のご指示(逐語「LINEウインドウがかなり幅短くなると上部バーは2行になりましたが、
   中くらいに短くなった時は3行の時があります。2行を保つようにして欲しいです。」)。
   【3行に折れていた残りの穴】1行目の「院のピルの並び(.lcpicks)」は中身ぶんの幅を要求するので、
     入りきらないと**塊ごと**2行目へ落ち、アルゴリズム集たちが3行目に押し出されていた。
     先生のスクリーンショットのように「合わせ候補」のピルまで出ていると、この落ち方がとても起きやすい。
   【直し】狭い時(.lbw-narrow)は院のピルの並びだけを「1行目の残り幅いっぱい」にして、
     はみ出したぶんは**横に滑らせて**出す(flex:1 1 0 = 折り返しの計算では幅0とみなされるので、
     この塊が2行目へ落ちることが無くなる)。
     ・ピルは1つも隠さない/消さない・文字の大きさも今までのまま(11px)・案内の帯や説明文は足していない
     ・未読の緑丸(.lcpick-n)はピルの右下へ乗り上げる絶対配置なので、横に滑る入れ物で切れないよう
       右と下に逃げ(padding)を作る。下の逃げは同じだけ外へ戻す(margin)ので**帯の高さは1pxも変わらない**
     ・滑り棒(スクロールバー)は出さない= 行が増えない ══ */
.lbw-bar.lbw-narrow>.lcpicks{flex:1 1 0;min-width:0;overflow-x:auto;overflow-y:hidden;
  scrollbar-width:none;-ms-overflow-style:none;
  padding:0 7px 5px 0;margin-bottom:-5px}
.lbw-bar.lbw-narrow>.lcpicks::-webkit-scrollbar{width:0;height:0}
/* ══ 📐 2026-09-23 b588 「外部サイト」のピル(b584 で増えた)のぶん、窓を 320px まで狭めた時に
   1行目(✕ 閉じる + 院のピル7つ)が窓の右へ **49px はみ出して**いた(b421 の検査で実測。b584 の見落とし)。
   【直し】行は増やさない・ピルは1つも消さない・案内の帯も足さない。狭い時(.lbw-narrow)だけ**詰める**:
     ・院のピルの字を、すぐ隣に並ぶ%のピルと**同じ 10.5px** にそろえる(これ以上は小さくしない)  … 10.5px
     ・ピルの左右の余白 3px→2px / ピル同士の間隔 3px→2px / 字間をわずかに -0.2px      … 24.4px
     ・ピルの枠線(1px)を**内側の影**に替える。線の見え方は今までと同じまま、1つにつき2pxぶん場所を取らなくなる
       (選んでいるピルは枠線と地の色が同じ=もともと見えていないので影は出さない)        … 14px
     ・バーの左右の余白と「✕ 閉じる」も1pxずつ詰める                                  … 4px
   合わせて約53pxぶん詰まり、320px でも1行目が窓の中に収まる(はみ出し0)。2行の並びは b421/b423 のまま ══ */
.lbw-bar.lbw-narrow{gap:3px;padding:5px 3px}
.lbw-bar.lbw-narrow .mini{padding:3px 3px;font-size:10.5px}
.lbw-bar.lbw-narrow .lcpicks.lcp-main{gap:2px}
.lbw-bar.lbw-narrow .lcpick{padding:2px 2px;font-size:10.5px;letter-spacing:-.2px;
  border-width:0;box-shadow:inset 0 0 0 1px rgba(140,152,166,.28)}
.lbw-bar.lbw-narrow .lcpick.cl-sug{box-shadow:inset 0 0 0 1px #f1cf9f}
.lbw-bar.lbw-narrow .lcpick.on{box-shadow:none}
.lalg-pop{position:absolute;left:0;top:calc(100% + 3px);z-index:70;background:#fff;border:1px solid #cfd8e0;border-radius:8px;
  box-shadow:0 8px 24px rgba(20,35,55,.25);min-width:200px;padding:3px 0;white-space:nowrap}
.lalg-item{display:flex;align-items:baseline;gap:8px;padding:4px 12px;font-size:12px;color:#25313c;cursor:pointer;text-decoration:none!important}
.lalg-item:hover{background:#eef4fa}
.lalg-item small{margin-left:auto;font-size:10px;color:#a3aeb9}
.lalgw{font-size:12px}
.lalg-bar{padding:5px 9px;gap:8px}
.lalg-bar b{font-size:13px}
.lalg-x{color:#dfe7ef;font-size:14px;padding:0 4px;text-decoration:none!important}
.lalg-x:hover{color:#fff}
.lalg-upd{flex:0 0 auto;font-size:10.5px;color:#b9c7d4}
/* 📐 2026-09-27 b640 院長の逐語「アルゴリズム集の各項目を赤枠を選択した時のウインドウは
   右に8文字分くらいの白い余白が欲しいです。(メモなどするために)」
   ・右の余白 = 本文12px × 8文字 = 96px(main.tsx の ALGO_PAD_R と同じ数)。**窓の方を96px広げてある**ので
     本文の1行の幅は今までどおり(折り返しが狭くならない)
   ・ペン・文字の板(.lalg-ov)を中身にくっつけるため position:relative にする(見た目は1pxも変わらない) */
.lalg-body{max-height:min(72vh,calc(100vh - 110px));padding:8px 96px 10px 12px;background:#fff;line-height:1.5;color:#25313c;position:relative}
.lalg-sec{margin-bottom:7px}
.lalg-sec>b{display:block;font-size:12px;color:#22384f;margin-bottom:1px}
.lalg-ln{padding-left:10px;text-indent:-10px;margin:0 0 2px 10px;word-break:break-word;color:#42566b}
/* 📋 b476: アルゴリズム集の小さな表(打ち間違いの表・メニューと読み) */
.lalg-tbl{border-collapse:collapse;margin:2px 0 2px 10px;font-size:11.5px;color:#42566b}
.lalg-tbl th,.lalg-tbl td{border:1px solid #e3e8ee;padding:1px 8px;text-align:left;vertical-align:top}
.lalg-tbl th{background:#f3f6f9;font-weight:600;color:#22384f}
/* ══ 📂 2026-09-22 b579 アルゴリズム集の「事例集」(実際のやり取りの抜粋)。
   ・節の中にそのまま開く(新しい窓を増やさない = 2画面モードでも位置が壊れない)
   ・省スペース優先: 1件=1行(はみ出す本文は…で切る・折り返さない)。案内の帯・説明文は足さない
   ・会話は既存のLINEの窓と同じ色(患者=左の灰 #f1f2f4 / クリニック=右の淡い緑 #e9f6df) ══ */
.lalg-cbtn-w{margin:3px 0 2px 10px}
.lalg-cbtn{padding:2px 8px;font-size:11.5px}
.lalg-cases{margin:2px 0 4px 10px}
.lalg-cf{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:3px}
.lalg-cp{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border:1px solid #d7dfe7;border-radius:9px;
  background:#f7f9fb;font-size:11px;color:#42566b;cursor:pointer;text-decoration:none!important;white-space:nowrap}
.lalg-cp:hover{background:#eef4fa}
.lalg-cp.on{background:#2f4358;border-color:#2f4358;color:#fff}
.lalg-cp i{font-style:normal;font-size:10px;color:#8a97a5}
.lalg-cp.on i{color:#cfe0ee}
.lalg-clist{max-height:min(46vh,420px);overflow:auto;border:1px solid #e3e8ee;border-radius:6px;background:#fff}
.lalg-crow{border-bottom:1px solid #eef2f6}
.lalg-crow:last-child{border-bottom:none}
.lalg-chd{display:flex;align-items:baseline;gap:6px;padding:2px 6px;font-size:11px;color:#42566b;
  cursor:pointer;text-decoration:none!important;white-space:nowrap;overflow:hidden}
.lalg-chd:hover{background:#f3f8fd}
.lalg-cym{flex:0 0 auto;color:#8a97a5;font-size:10.5px}
.lalg-csc{flex:0 0 auto;color:#22384f}
.lalg-cht{flex:0 0 auto;color:#5a6b7d}
.lalg-cmix{flex:0 0 auto;color:#c0392b}
.lalg-ctx{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;color:#8a97a5}
.lalg-cbody{padding:4px 8px 6px;background:#fafcfe;border-top:1px dashed #e3e8ee}
.lalg-cmsg{display:flex;justify-content:flex-start;margin-bottom:3px}
.lalg-cmsg.out{justify-content:flex-end}
.lalg-cbub{max-width:82%;background:#f1f2f4;border-radius:10px;padding:4px 8px;font-size:11px;line-height:1.5;
  white-space:pre-wrap;word-break:break-word;color:#25313c}
.lalg-cmsg.out .lalg-cbub{background:#e9f6df}
.lalg-cwhy{font-size:10.5px;color:#5a6b7d;margin-top:2px}
/* ══ 🟥 2026-09-27 b638 院長の逐語「該当するアルゴリズムのいくつかは赤枠で囲って置いてください。」
   = 日程調整に関わる項目(algos.ts の nittei)を**赤枠で囲うだけ**(説明文・帯・色の凡例は足さない・省スペースを崩さない) ══ */
/* ⭐ 枠は**内側に描く**(box-shadow inset)= 行の位置も高さも1pxも動かない(縦並び・省スペースを崩さない) */
.lalg-item.nit{box-shadow:inset 0 0 0 1px #d7443a;border-radius:4px}
.lalgw.nit{box-shadow:0 8px 24px rgba(20,35,55,.25),inset 0 0 0 2px #d7443a}
/* ══ 🗓📋 b638 日程調整の下書き事例(新しい順)。省スペース優先: 1件=1行(押すと下に②③が開く) ══ */
.lalg-nc{max-height:min(46vh,420px);overflow:auto;border:1px solid #e3e8ee;border-radius:6px;background:#fff;margin:2px 0 4px 10px}
.lalg-nc-e{font-size:11px;color:#8a97a5;margin:2px 0 4px 10px}
.lalg-ncr{border-bottom:1px solid #eef2f6}
.lalg-ncr:last-child{border-bottom:none}
.lalg-nch{display:flex;align-items:baseline;gap:6px;padding:2px 6px;font-size:11px;color:#42566b;
  cursor:pointer;text-decoration:none!important;white-space:nowrap;overflow:hidden}
.lalg-nch:hover{background:#f3f8fd}
.lalg-ncat{flex:0 0 auto;color:#8a97a5;font-size:10.5px}
.lalg-nck{flex:0 0 auto;color:#22384f}
.lalg-ncs{flex:0 0 auto;color:#22384f}
.lalg-ncw{flex:0 0 auto;color:#5a6b7d}
.lalg-nci{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;color:#8a97a5}
.lalg-nce{flex:0 0 auto}
.lalg-ncb{flex:0 0 auto;color:#a3aeb9;font-size:10px}
.lalg-ncb2{padding:4px 8px 6px;background:#fafcfe;border-top:1px dashed #e3e8ee}
.lalg-ncl{font-size:11px;color:#22384f}
.lalg-ncy{font-size:10.5px;color:#42566b;padding-left:10px;text-indent:-10px}
.lalg-ncd{font-size:10.5px;color:#5a6b7d;margin-top:2px;white-space:pre-wrap;word-break:break-word}
.lalg-ncev{font-size:11px;color:#0b4f6f;margin-top:2px;white-space:pre-wrap;word-break:break-word}
.lalg-memo{border-top:1px dashed #e3e8ee;padding-top:6px;margin-top:4px}
.lalg-memo>b{display:block;font-size:12px;color:#22384f;margin-bottom:3px}
.lalg-ta{width:100%;box-sizing:border-box;font-size:12px;line-height:1.5;padding:5px 8px;font-family:inherit;background:#fffbf0}
/* ══ 🗓 2026-09-27 b640 ① 日程調整系を下部へまとめた時の**区切りの見出し1行**(説明文・帯・凡例は足さない) ══ */
.lalg-head{padding:3px 12px 1px;font-size:10.5px;color:#8a97a5;border-top:1px solid #e9eef3;margin-top:2px;white-space:nowrap}
/* ══ 🔙 b640 ⑤ 「戻る」(✕の右=左上)。一覧に戻った姿(.lalg-listb) ══ */
.lalg-back{flex:0 0 auto;color:#dfe7ef;font-size:11.5px;padding:0 4px;cursor:pointer;text-decoration:none!important;white-space:nowrap}
.lalg-back:hover{color:#fff}
.lalg-listb{padding:3px 0 5px;white-space:nowrap}
.lalg-listb .lalg-item{padding:4px 12px}
/* ══ 🖍 b640 ② テキストマーカー(帯)・ペン・文字 ══
   ・道具の切り替え4つ+色の丸5つだけ(説明文・案内の帯は足さない=省スペース)
   ・板(.lalg-ov)は本文の上に重なるが**素通し**。押せる面(.lalg-hit)はペン/文字を選んでいる間だけ出す
     = 道具を選んでいない時の本文のクリック・選択は今までどおり */
.lalg-tools{flex:0 0 auto;display:inline-flex;align-items:center;gap:3px;margin-left:auto}
.lalg-tl{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:16px;padding:0 3px;
  border-radius:4px;font-size:11px;line-height:1;color:#cfdae5;cursor:pointer;text-decoration:none!important;
  box-shadow:inset 0 0 0 1px rgba(207,218,229,.35)}
.lalg-tl:hover{color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.6)}
.lalg-tl.on{background:#fff;color:#22384f;box-shadow:none}
.lalg-dot{width:11px;height:11px;border-radius:50%;border:1px solid transparent;cursor:pointer;display:inline-block}
.lalg-dot.on{box-shadow:0 0 0 2px #fff}
.lalg-hl{border-radius:2px;padding:0 1px;margin:0 -1px}
.lalg-ov{position:absolute;left:0;top:0;width:100%;pointer-events:none;z-index:2}
.lalg-svg{position:absolute;left:0;top:0;width:100%;overflow:visible}
.lalg-pe{pointer-events:stroke;cursor:pointer}
.lalg-hit{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:auto}
.lalg-body.tool-pen .lalg-hit{cursor:crosshair}
.lalg-body.tool-txt .lalg-hit{cursor:text}
.lalg-body.tool-mk,.lalg-body.tool-er{cursor:cell}
.lalg-tx{position:absolute;pointer-events:auto;font-size:12px;line-height:1.3;font-weight:600;cursor:grab;
  white-space:pre;background:rgba(255,255,255,.72);border-radius:3px;padding:0 2px}
.lalg-tx.ed{font-family:inherit;border:1px solid #cfd8e0;background:#fff;min-width:80px;padding:1px 3px}
/* 🗓📋 b640 ⑥ 事例の行の「LINEの窓で開けます」の印(💬)。省スペース=印だけ・説明文は足さない */
.lalg-ncj{flex:0 0 auto;font-size:10.5px;opacity:.75}
.lalg-memo-b{display:flex;align-items:center;gap:8px;margin-top:4px}
.lalg-by{font-size:10.5px;color:#8a97a5}
.lalg-msg{font-size:11px;color:#0b6f3a}
.lspw{max-width:520px;padding:12px 16px 12px}
.lsp-head{justify-content:flex-start;gap:8px;margin-bottom:6px}
.lsp-head h3{flex:1}
.lsp-days{margin-left:0}
.lsp-sum{font-size:12.5px;color:#25313c;margin:0 0 6px;white-space:nowrap}
.lsp-sum b{font-size:14px;margin:0 1px}
.lsp-tbl{max-height:60vh;overflow:auto;border-top:1px solid #eef2f6}
.lsp-tbl table{width:100%;border-collapse:collapse;font-size:11.5px}
.lsp-tbl th{font-weight:600;color:#8a97a5;text-align:right;padding:3px 6px;border-bottom:1px solid #e3e8ee;white-space:nowrap;position:sticky;top:0;background:#fff}
.lsp-tbl td{text-align:right;padding:2px 6px;border-bottom:1px solid #f4f6f8;color:#42566b;white-space:nowrap}
.lsp-tbl th:first-child,.lsp-tbl td:first-child{text-align:left}
.lsp-tbl tr.ai td{background:#f3fbf6}
.lsp-tbl td.red{color:#e03131;font-weight:700}
/* ══ 🤖 b309 AI回答パターンの窓(.laiw)。z-index は .modal-bg.lwtop(2100)。✕は左上 ══ */
.laiw{max-width:900px;padding:14px 18px 14px}
.lai-head{justify-content:flex-start;gap:8px;margin-bottom:8px}
.lai-head h3{flex:1}
.lai-new{flex:0 0 auto}
.lai-body{display:grid;grid-template-columns:250px minmax(0,1fr);gap:10px;align-items:start}
.lai-list{border:1px solid #eef2f6;border-radius:8px;max-height:48vh;overflow:auto}
.lai-row{display:flex;align-items:center;gap:6px;padding:5px 8px;border-bottom:1px solid #f1f4f7;cursor:pointer;font-size:12px}
.lai-row:hover{background:#f0f8f3}
.lai-row.on{background:#e6f8ee}
.lai-row.off .lai-nm{color:#a3aeb9}
/* 🤖 b312: 停止中(医師承認待ちの術前術後FAQなど)は行ごと灰色で「停止中」と一目で分かる */
.lai-row.off{background:#f4f6f8;color:#a3aeb9}
.lai-row.off:not(.on) .lai-hits{color:#c0c8d0}
.lai-stkv{font-size:12.5px;color:#5c6b7a;line-height:2}
.lai-av.on{background:#1f8a70;border-color:#1f8a70;color:#fff}
.lai-bar.lai-stk{background:#fff7ea;border-color:#f1cf9f}
.lai-bar.lai-stk .lai-bt{color:#a0641f}
.lai-grip{flex-shrink:0;font-size:11px;color:#b6c1cb;line-height:1;cursor:grab}
.lai-sw{flex-shrink:0;font-size:10px;font-weight:700;line-height:1.5;padding:0 6px;border-radius:999px;cursor:pointer;
  border:1px solid #d3dae1;background:#f3f5f8;color:#8a97a5;text-decoration:none!important}
.lai-sw.on{background:#06c755;border-color:#06c755;color:#fff}
.lai-nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12.5px}
.lai-hits{flex-shrink:0;font-size:10.5px;color:#8a97a5;white-space:nowrap}
.lai-edit{display:flex;flex-direction:column;gap:6px;min-width:0}
.lai-r{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.lai-r.lai-top{align-items:flex-start}
.lai-r>span:first-child{flex:0 0 46px;font-size:11px;color:#5c6b7a;line-height:2}
.lai-in{padding:4px 8px;font-size:12.5px}
.lai-name{flex:1;min-width:140px}
.lai-note{flex:1;min-width:140px}
.lai-len{width:70px}
.lai-win{width:120px;padding:2px 7px;font-size:11.5px}
.lai-by{font-size:10.5px;color:#8a97a5}
.lai-w{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:#0b6f3a;background:#e6f8ee;border:1px solid #9ad9b4;
  border-radius:999px;padding:1px 8px;white-space:nowrap}
.lai-w a{color:#8a97a5;font-size:10px;text-decoration:none!important}
.lai-w a:hover{color:#e03131}
.lai-mode,.lai-cl,.lai-trycl{margin-left:0}
.lai-reply{flex:1;min-width:0;padding:6px 9px;font-size:12.5px;line-height:1.6;font-family:inherit}
.lai-try{border-top:1px dashed #e3e8ee;padding-top:6px}
.lai-tryin{flex:1;min-width:180px;padding:5px 9px;font-size:12px;line-height:1.5;font-family:inherit;background:#fbfcfd}
.lai-res{flex:0 0 100%;font-size:12.5px;color:#8a97a5}
.lai-res.hit{color:#0b6f3a}
.lai-res small{font-weight:400;margin-left:6px;color:#5c6b7a}
.lai-btns{margin-top:2px}
.lai-del{margin-left:auto;color:#e03131}
.lai-hist{margin-top:8px;max-height:22vh;overflow:auto;border-top:1px solid #eef2f6;padding-top:4px}
.lai-hist table{width:100%;border-collapse:collapse;font-size:11px}
.lai-hist td{padding:2px 6px;border-bottom:1px solid #f4f6f8;white-space:nowrap;color:#42566b}
.lai-hist td.lai-hnm{max-width:180px;overflow:hidden;text-overflow:ellipsis}
.lai-hist td.lai-hto{max-width:160px;overflow:hidden;text-overflow:ellipsis}
.lai-hist td.lai-hus{text-align:right}
.lai-hist tr.used td.lai-hus{color:#0b6f3a}
.lai-hist tr.unused td.lai-hus{color:#a3aeb9}
.lai-hist tr.wait td.lai-hus{color:#b8860b}
.lai-hist td.lai-hnone{color:#93a1af;text-align:center;padding:10px}
/* 🤖 b309: 返信欄の上の札「AI補助の下書きあり」(予約の帯 .lsb-bar と同じ薄い帯。説明文は足さない) */
.lai-bar{display:flex;align-items:center;gap:8px;background:#eef9f2;border:1px solid #bfe8cf;border-radius:6px;padding:3px 9px;font-size:11.5px}
.lai-bt{flex:1;min-width:0;color:#0b6f3a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lai-put{flex:0 0 auto;font-size:11px;font-weight:700;color:#fff;background:#06c755;border-radius:999px;padding:1px 9px;
  cursor:pointer;text-decoration:none!important;white-space:nowrap}
.lai-put:hover{background:#05b34c}
/* 🧠 2026-09-21 b550: 帯の「👎 ここが違う」(長文の回答案の下書きの時だけ・上原だけ)。「返信欄に入れる」の左に控えめに */
.lai-bad{flex:0 0 auto;font-size:11px;color:#a33;background:#fff;border:1px solid #e3b4b4;border-radius:999px;padding:1px 9px;
  cursor:pointer;text-decoration:none!important;white-space:nowrap}
.lai-bad:hover{background:#fbe9e9}
/* 🤖 b309: 左の一覧の行の小さな🤖(未読の緑丸の左どなり) */
.lib-ai{display:block;position:absolute;right:28px;top:50%;margin-top:-7px;font-size:11px;line-height:14px}
/* 🤖 2026-09-06 b319 先生の指示: 「AI回答」で並んでいる時の行の印(自動🤖/半自動✎/下書きのみ📝のどれか1つ。同じ場所・説明文なし)。✎は色だけ付けて見分ける */
.lib-aik-draft{color:#c0621e;font-weight:700}
/* ══ 🤖 b311(2026-09-06 先生の決定でAI自動送信を2パターンに限って許可) ══
   先生の逐語「AIが返した方は患者一覧において淡いピンクで行内がうっすらとぼんやり光る(弱くなったりやや強くなったり)ようにして頂き、
   メッセージやり取りを見るとこちらからのAI回答が(今はメッセージ背景は薄い緑だが、)淡いオレンジ色(うっすらとぼんやり光る)に」
   ・一覧の行(.lib-airow)= 淡いピンクの地が約3秒周期で弱↔やや強(目障りでない程度・薄いピンク2段階の間を行き来)
   ・吹き出し(.lmsg.lai .lbub)= 緑の代わりに淡いオレンジ・同じ周期でうっすら明滅
   ・選んでいる行(.on)の青い地・ホバーはそのまま(選んでいる間はピンクを重ねない=どれを見ているか分かるように) */
@keyframes lai-glow{0%,100%{background-color:#fff1f5}50%{background-color:#ffd9e4}}
.lib-row.lib-airow:not(.on){animation:lai-glow 3s ease-in-out infinite}
.lib-row.lib-airow:not(.on):hover{animation:none;background:#ffe3ea}
@keyframes lai-glow-bub{0%,100%{background-color:#fff0dc}50%{background-color:#ffd9b0}}
.lib-right .lmsg.lai .lbub:not(.lbare){background:#fff0dc;animation:lai-glow-bub 3s ease-in-out infinite}
.lmsg.lai .lbub{background:#fff0dc}
/* 半自動で人が送った文の下の「🤖 AIの用意した文: …」(「AI回答」から入った時だけ出る。小さく・薄く) */
.lai-was{display:block;margin-top:5px;padding-top:4px;border-top:1px dashed #e8c9a3;font-size:11px;line-height:1.4;color:#8a6a3f;white-space:pre-wrap;word-break:break-word}
/* 🤖 2026-09-07 b338 先生の指摘: 職員が別の文を送った時もAIの例文を残して見せる
   ・併記の「(使わず)」の小さな印(.lai-unused) ・挙動を広げた時の「下書きを使わず別の文を送った」の下の例文(.lai-was2・会話とAI設定の履歴の両方) */
.lai-was .lai-unused{font-size:9.5px;color:#b08a5a;margin-left:2px}
.lai-was2{display:block;font-style:normal;padding-left:12px;color:#8a6a3f;white-space:pre-wrap;word-break:break-word}
/* 🧾 2026-09-06 b324 先生の指示: AIの挙動の説明を残して見せる(精度の観察)
   ・会話: AIが当たった受信のすぐ下の灰色の1行(10.5px・アイコン32px+すき間6pxぶん右に寄せる)。押すと .lai-acts(1行ずつ)が下に広がる。帯なし
   ・一覧: 「AI回答」の行の印(🤖/✎/📝)の左に最後の挙動のひとこと(.lib-aiw)。その分だけ最後の文の右余白を広げる(.lib-l2ai)
   ・AI設定の履歴: 行を押すと次の行(.lai-hacts)に挙動が1行ずつ */
.lib-right .lai-act{margin:-9px 0 10px 38px;font-size:10.5px;line-height:1.35;color:#8a97a5;cursor:pointer;white-space:pre-wrap;word-break:break-word;max-width:86%}
.lib-right .lai-act:hover .lai-act1{color:#5c6b7a}
.lib-right .lai-act .lai-acts{display:block;margin-top:2px;padding-left:12px;color:#6b7a89}
.lib-right .lai-act .lai-acts span{display:block}
.lib-right .lai-act .lai-acts span::before{content:'・'}
.lib-l2.lib-l2ai{padding-right:132px}
.lib-aik .lib-aiw{font-style:normal;font-size:10px;font-weight:400;color:#8a97a5;margin-right:3px;white-space:nowrap}
/* 🧠 2026-09-21 b550: 心得を足した下書きの相手は、既存の印(🧠)の隣に小さく👎(新しい窓は作らない・説明文は足さない) */
.lib-aik .lib-aikk{font-style:normal;font-size:9px;margin-left:1px}
.lai-hist tr.lai-hrow{cursor:pointer}
.lai-hist tr.lai-hrow.open td{background:#f7f9fb}
.lai-hist tr.lai-hacts td{white-space:normal;color:#6b7a89;font-size:10.5px;line-height:1.4;padding:2px 6px 5px 66px;background:#f7f9fb}
.lai-hist tr.lai-hacts td span{display:block}
.lai-hist tr.lai-hacts td span::before{content:'・'}
/* 返信欄にAIの下書きが入っている間: 上の小さな帯と、返信欄の地色を淡いオレンジに(人が直せば帯は「編集済み」) */
/* 🤖 b311 / 🧠 b575: 帯の左に「AI下書き」、右に「👎 ここが違う」(長文の回答案+上原だけ)。行は増やさない */
.lai-seed{display:flex;align-items:center;gap:8px;font-size:11px;color:#a0641f;background:#fff0dc;border:1px solid #f1cf9f;border-radius:6px;padding:2px 9px}
.lai-seed .lai-st{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-send textarea.lai-ta{background:#fff5e6}
/* 🗓 2026-09-18 b508 先生の逐語「『予約枠を自動作成する場合は列を選んでください』という列が並んでいる窓が出てほしい」。
   返信欄のすぐ上の小さな窓(帯と同じ作法・.lai-seed / .lsb-bar と同じ高さ感)。文はその1行だけ・説明文は足さない。
   列は押すと選ばれる(選んだ列だけピンクで塗る=できるのがピンクの仮枠だから)。右端の✕で閉じる */
.lcolpick{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:11px;color:#7c1f4c;
  background:#fdeef5;border:1px solid #f3c6da;border-radius:6px;padding:3px 8px}
.lcolpick .lcp-t{flex:none;font-weight:700}
.lcolpick .lcp-cols{display:flex;align-items:center;gap:4px;flex-wrap:wrap;min-width:0}
.lcolpick a.lcp-c{border:1px solid #e9a7c3;border-radius:999px;padding:1px 8px;background:#fff;color:#7c1f4c;
  cursor:pointer;white-space:nowrap;line-height:1.6}
.lcolpick a.lcp-c:hover{background:#fbe2ee}
.lcolpick a.lcp-c.on{background:#f9b6d2;border-color:#eb8fb6;font-weight:700}
.lcolpick a.lcp-x{margin-left:auto;flex:none;color:#9c6b83;cursor:pointer;padding:0 2px}
/* 「AI回答」のピル(オペ患の右・上原だけ)。選んでいる時は淡いオレンジ系(AIの色。院の色とは別) */
.lcpick.cl-ai.on{background:#f0932b;border-color:#f0932b;color:#fff}
/* AI設定の窓: 区分の見出し・条件の1行・条件の中身・試すの結果・上限・履歴の列 */
.lai-sec{font-size:10.5px;font-weight:700;color:#5c6b7a;background:#f3f5f8;padding:2px 8px;border-bottom:1px solid #e6ebf0}
.lai-sec.lai-sec-auto{color:#a0641f;background:#fff3e3}
.lai-none{font-size:11px;color:#a3aeb9;padding:3px 8px}
.lai-modes .lcpick.lai-md-auto.on{background:#f0932b;border-color:#f0932b}
.lai-cds{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.lai-cd{display:flex;align-items:center;flex-wrap:wrap;gap:4px 6px;font-size:12px;line-height:1.5;padding:2px 7px;border:1px solid #e6ebf0;border-radius:6px;background:#fbfcfd}
.lai-cd.on{background:#f0f8f3;border-color:#bfe8cf}
.lai-cd.or{margin-left:14px}
.lai-cdt{flex:1;min-width:0;color:#22384f;cursor:pointer;text-decoration:none!important}
.lai-cd.on .lai-cdt{font-weight:600}
.lai-cdx{flex:0 0 auto;color:#a3aeb9;font-size:11px;cursor:pointer;text-decoration:none!important}
.lai-cdx:hover{color:#e03131}
.lai-cdedit{flex:0 0 100%;display:flex;align-items:center;flex-wrap:wrap;gap:4px 6px;padding-top:2px;border-top:1px dashed #e3e8ee}
.lai-cdadd{display:flex;align-items:center;gap:6px}
.lai-or.on{background:#33475b;border-color:#33475b;color:#fff}
.lai-rf,.lai-then{margin-left:0}
.lai-opv{width:150px}
.lai-cf.on{background:#8e44ad;border-color:#8e44ad;color:#fff}
.lai-tryq{width:170px}
.lai-tryres{display:flex;flex-direction:column;gap:1px}
.lai-tl{font-size:11px;color:#c0392b;line-height:1.5}
.lai-tl.ok{color:#0b6f3a}
.lai-lim{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:11px;color:#5c6b7a}
/* 🧠 2026-09-19 b532: 「長文の回答案」の行(上限の行と同じ見た目・別の class=b309 の検査が数える .lai-lim の入力欄を増やさない) */
.lai-long{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:11px;color:#5c6b7a}
.lai-long label{display:inline-flex;align-items:center;gap:2px;cursor:pointer}
/* 🗓 2026-09-23 b597: 右クリック仮枠の日程提案文の文面(本文・遅れの詫び・遠隔の一文)。上の行と同じ字・色。欄は縦にだけ伸ばせる */
.lai-propose{display:flex;flex-direction:column;align-items:stretch;gap:3px;margin-top:8px;font-size:11px;color:#5c6b7a}
.lai-propose textarea{width:100%;box-sizing:border-box;font-size:12px;line-height:1.35;resize:vertical;font-family:inherit}
.lai-prop-body{min-height:82px}
.lai-prop-late,.lai-prop-video{min-height:30px}
/* 🙅 2026-09-19 b535 先生の逐語「従業員がテスト的に送ったメッセージにAI回答つけて欲しくない」: AI設定の窓の「AI回答をつけない」の名簿。
   1行1人(表示名+「外す」)。見た目は上の「長文の回答案」の行と同じ字・色。いちばん下が足すための欄(氏名で探す→候補のピルを押す) */
.lai-excl{display:flex;flex-direction:column;align-items:flex-start;gap:3px;margin-top:4px;font-size:11px;color:#5c6b7a}
/* 🗓 2026-09-21 b549 先生の逐語「どんな単語が入っていたら除外するかなど、自分で編集できるようにして下さい。」:
   長文の回答案の語の名簿(例外の語・除外の語)。1語1行。見た目は下の「AI回答をつけない」の名簿と同じ字・色。
   ⚠️ 2026-09-22: class は .lai-lw…(行) / .lai-exw・.lai-ngw(足す欄)。**.lai-excl の名簿の class と同じ名前にしない**
      (窓の中の最初の .lai-exadd を押す検査が、名簿ではなくこちらに打ち込んでしまうため) */
.lai-longw{display:flex;flex-direction:column;align-items:flex-start;gap:3px;margin-top:4px;font-size:11px;color:#5c6b7a}
.lai-lwrow{display:flex;align-items:center;gap:8px;padding-left:8px}
.lai-lwnm{font-weight:700;color:#33475b}
.lai-lwdel{font-size:10.5px;color:#a33;cursor:pointer;border:1px solid #e3b4b4;border-radius:999px;padding:0 7px;line-height:16px;background:#fff}
.lai-lwdel:hover{background:#fbe9e9}
.lai-exw,.lai-ngw{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-left:8px}
.lai-exrow{display:flex;align-items:center;gap:8px;padding-left:8px}
.lai-exnm{font-weight:700;color:#33475b}
.lai-exdel{font-size:10.5px;color:#a33;cursor:pointer;border:1px solid #e3b4b4;border-radius:999px;padding:0 7px;line-height:16px;background:#fff}
.lai-exdel:hover{background:#fbe9e9}
.lai-exadd{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-left:8px}
/* 🧠 2026-09-21 b550 先生の逐語「院内の決まりのニュアンスを『正しくはこんな考え方ですよ』と逐一伝えていって、成長させていきたい」:
   AI設定の窓の「心得」の名簿。上の語の名簿と同じ字・色。1件が1行の文なので折り返しだけ許す(欄は広く) */
.lai-kkrow{align-items:flex-start;width:100%}
.lai-kknm{font-weight:400;color:#33475b;white-space:normal;word-break:break-word;line-height:1.45;flex:1;min-width:0}
.lai-kkin{width:320px}
/* ⚠️ 2026-09-22 b550: 心得の足す欄は **.lai-kkadd**(上の .lai-exadd と**同じ名前にしない**)。
   窓の中の**最初の** .lai-exadd を押す検査(b535の上部バーのLINEのピンクの数字)が、
   「AI回答をつけない」名簿ではなくこちらの欄に打ち込んでしまうため(b549 も同じ事故で .lai-exw / .lai-ngw に改名)。
   見た目は .lai-exadd と1pxも変えない=同じ指定をそのまま写す */
.lai-kkadd{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-left:8px}
.lai-hist td.lai-hk{font-size:10px;font-weight:700;color:#5c6b7a}
.lai-hist td.lai-hk-auto{color:#a0641f}
.lai-hist td.lai-hsent,.lai-hist td.lai-hdr{max-width:220px;overflow:hidden;text-overflow:ellipsis;color:#5c6b7a}
.lai-hist td.lai-hdr{color:#8a6a3f}
.lai-hist tr.fail td.lai-hus{color:#e03131}
/* ══ 💡 2026-09-06 b327 先生の指示: AIアイディア保存とAIアイディア庫(半自動/自動化の参考資料の蓄積) ══
   .lidea = 保存の窓(掴んで動かせる・外クリックで消えない・✕は左上)。z-index は 2100=「その上に重ねる窓」の層
   (LINEの窓 .linebw/.linewin=2000 の中に出すので、その上に来る)。帯や説明文は置かない
   .lidl = 庫(AI設定の窓 .laiw の中で切り替え)。.lidea-r/.lidea-in/.lidea-ta は保存の窓と庫の編集で共用 */
.lidea{position:fixed;z-index:2100;background:#f4f6f8;border:1px solid #8d9dad;border-radius:10px;box-shadow:0 22px 60px rgba(20,35,55,.5);overflow:hidden;max-width:calc(100vw - 16px)}
.lidea-bar{gap:8px;padding:5px 10px}
.lidea-bar b{font-size:13px;flex:0 0 auto}
.lidea-x{color:#fff;font-size:15px;cursor:pointer;padding:0 5px;text-decoration:none!important;line-height:1}
.lidea-x:hover{color:#ffd0d0}
.lidea-who{flex:1;min-width:0;font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lidea-bar .lidea-who{color:#e6f0fa;margin-left:6px}
.lidea-cl{flex:0 0 auto;font-style:normal;font-size:10px;font-weight:700;line-height:1.5;padding:0 6px;border-radius:999px;background:#5c7086;color:#fff}
.lidea-cl.cl-os{background:#ff7fa8}.lidea-cl.cl-fk{background:#f5a623}.lidea-cl.cl-gz{background:#4fc3f7}
.lidea-at{flex:0 0 auto;font-size:10.5px;color:#c9d6e2}
.lidea-body{background:#fff;padding:8px 12px 10px;display:flex;flex-direction:column;gap:6px}
.lidea-r{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.lidea-r.lidea-top{align-items:flex-start}
.lidea-r>span:first-child{flex:0 0 66px;font-size:11px;color:#5c6b7a;line-height:2}
.lidea-r>span.lcpicks:first-child{flex:0 0 auto}
.lidea-cats,.lidea-conds{flex:1;min-width:0;flex-wrap:wrap;gap:3px 4px;margin-left:0}
.lidea-catadd{color:#1e6fe0;border-style:dashed}
.lidea-in{padding:3px 8px;font-size:12px}
.lidea-catin{width:130px;padding:1px 7px;font-size:11.5px}
.lidea-condin{width:110px;padding:1px 7px;font-size:11.5px}
.lcpick.lidea-cond.on{background:#1f8a70;border-color:#1f8a70}
.lidea-dir{flex:0 0 auto;margin-left:0;flex-direction:column;align-items:flex-start;gap:3px;width:66px}
.lidea-dir .lcpick{padding:1px 6px;font-size:10px}
.lidea-ta{flex:1;min-width:0;padding:5px 9px;font-size:12.5px;line-height:1.55;font-family:inherit}
.lidea-text{background:#fbfcfd}
.lidea-want{background:#fffdf5}
.lidea-lvs{margin-left:0}
.lcpick.lidea-lv-rough.on{background:#8a97a5;border-color:#8a97a5}
.lcpick.lidea-lv-mid.on{background:#f0932b;border-color:#f0932b}
.lcpick.lidea-lv-clean.on{background:#1f8a70;border-color:#1f8a70}
.lidea-memo-lb{font-size:11px;color:#5c6b7a;margin-left:8px}
.lidea-memo{flex:1;min-width:100px}
.lidea-btns{margin-top:0;justify-content:flex-end}
.lidea-btns .lidea-save{min-width:110px}
/* ══ 🧠 2026-09-21 b550 「👎 ここが違う」の小さな窓(院長の心得を1行足す) ══
   先生の逐語「院内の決まりのニュアンスを『正しくはこんな考え方ですよ』と逐一伝えていって、成長させていきたい」。
   見た目はアイディア保存の窓(.lidea)と同じ作法(✕は左上・省スペース・説明文の帯は置かない)。上の .lkk-draft は
   直そうとしている下書き(この窓の中だけで見る。患者の本文は画面の外へ出さない) */
.lkk{width:min(560px,calc(100vw - 20px));background:#f4f6f8;border:1px solid #8d9dad;border-radius:10px;
  box-shadow:0 22px 60px rgba(20,35,55,.5);overflow:hidden}
.lkk-draft{max-height:120px;overflow:auto;background:#fbfcfd;border:1px solid #dde4ea;border-radius:6px;
  padding:5px 9px;font-size:11.5px;line-height:1.5;color:#5c6b7a;white-space:pre-wrap;word-break:break-word}
.lkk-ta{padding:5px 9px;font-size:12.5px;line-height:1.55;font-family:inherit;resize:vertical}
/* 会話の右クリックの小窓(1行だけ) */
.calctx.lib-chatctx a.lib-idea{color:#1c2b3a}
/* 庫 */
.lai-views{margin-left:0}
.lidl{display:flex;flex-direction:column;gap:5px;min-height:200px}
.lidl-filt{gap:5px}
.lidl-cats,.lidea-r>span.lcpicks.lidl-cats:first-child{flex:1 1 auto;min-width:0;flex-wrap:wrap;gap:3px 4px;margin-left:0}
.lidl-cats .lcpick small,.lidl-tch small{font-size:9.5px;font-weight:600;margin-left:3px;opacity:.75}
.lidl-lvs,.lidl-modes{margin-left:0}
.lidl-q{flex:1;min-width:160px}
.lidl-list{max-height:60vh;overflow:auto;border:1px solid #eef2f6;border-radius:8px}
.lidl-row{display:flex;align-items:center;gap:6px;padding:4px 8px;border-bottom:1px solid #f1f4f7;cursor:pointer;font-size:11.5px;white-space:nowrap}
.lidl-row:hover{background:#f7fafc}
.lidl-at{flex:0 0 auto;color:#243b53;font-size:11px}
.lidl-who{flex:0 0 auto;max-width:110px;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.lidl-cat{flex:0 0 auto;font-style:normal;font-size:10px;font-weight:700;padding:0 6px;border-radius:999px;background:#eaf3fa;color:#25597f}
.lidl-lv{flex:0 0 auto;font-style:normal;font-size:10px;font-weight:700;padding:0 6px;border-radius:999px;color:#fff;background:#8a97a5}
.lidl-lv.lidea-lv-mid{background:#f0932b}
.lidl-lv.lidea-lv-clean{background:#1f8a70}
.lidl-cond{flex:0 0 auto;text-decoration:none;font-size:9.5px;padding:0 5px;border-radius:999px;border:1px solid #9ad9b4;color:#0b6f3a;background:#e6f8ee}
.lidl-text{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;color:#243b53}
.lidl-text.out{color:#0b6f3a}
.lidl-text.out::before{content:'↩ ';color:#8a97a5}
.lidl-want{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;color:#8a6a3f}
.lidl-texts{max-height:60vh;overflow:auto;border:1px solid #eef2f6;border-radius:8px}
.lidl-tch{font-size:10.5px;font-weight:700;color:#5c6b7a;background:#f3f5f8;padding:2px 8px;border-bottom:1px solid #e6ebf0}
.lidl-t{padding:4px 8px 3px;border-bottom:1px solid #f4f6f8;cursor:pointer;font-size:12px;line-height:1.5}
.lidl-t:hover{background:#f7fafc}
.lidl-t.out .lidl-tt{color:#0b6f3a}
.lidl-tt{display:block;white-space:pre-wrap;word-break:break-word;color:#243b53}
.lidl-t small{font-size:10px;color:#8a97a5}
.lidl-edit{display:flex;flex-direction:column;gap:6px}
.lidl-head{gap:8px}
.lidl-back{font-size:12px;color:#1e6fe0;white-space:nowrap}
.lidl-edit .lidea-who{flex:0 0 auto;max-width:200px}
.lidl-edit .lidea-r>span:first-child{flex:0 0 66px}
.lidl-edit .lidea-r>span.lcpicks:first-child{flex:0 0 auto}
.lai-hwhy{color:#8a97a5}
/* 🪪 右の列の開け閉め(batch257 先生の逐語「LINEウインドウの右側のノートなどのある列を
   ワンタッチでしまったり出したりできるようにしたい(公式LINEにある機能)」)。
   公式と同じ「⇥ / ⇤」の小さなつまみを**右の列の境目**に貼る。位置は絶対指定なので、
   右の列の中の並び(いちばん上=アイコン+氏名。b237)は今までのまま */
.lib{position:relative}
.lib-side{position:relative}
.lib-sidetog{position:absolute;left:-13px;top:50%;transform:translateY(-50%);z-index:4;
  width:15px;height:46px;display:flex;align-items:center;justify-content:center;
  border:1px solid #dbe3ea;border-right:none;border-radius:7px 0 0 7px;background:#fff;
  color:#8a97a5;font-size:11px;cursor:pointer;user-select:none;text-decoration:none!important;
  box-shadow:-1px 0 3px rgba(20,35,55,.06)}
.lib-sidetog:hover{color:#1e6fe0;border-color:#9fc4f5}
/* しまってある時のつまみは3列のいちばん右端に付く(押すと出る) */
.lib>.lib-sideon{left:auto;right:-1px;border-right:1px solid #dbe3ea}
/* 2列(40%相当)の時は、一覧が細くなりすぎないように左の取り分を少しだけ増やす。
   📐 b379: 下がりきった時の幅(min-width)は右のノート(.lib-z2>.lib-side)と**同じ230px**にそろえた。
   そろえないと、帯を左端に寄せた時と右端に寄せた時で真ん中のやり取りの幅が変わり、
   スワイプの途中で文字が組み直されてしまう(1512pxの画面の52%では 740px なので、どちらも下限には当たらない) */
.lib-z2>.lib-left{flex:1.15 1 0%;min-width:230px}
/* 📐 b258②(先生の逐語「右のノートの列のウインドウを1.5文字分狭くし、真ん中のテキスト
   ウインドウの幅を1.5文字分右へ広くしたい」)。1文字分=1em=14px なので 1.5em=21px を
   右の列から真ん中へ移す。
   ・.lib-sw = 右の列が出ている3列のときだけ付く印。しまっている時・2列・1列は今までのまま
   ・flex-basis を 左1.5em / 中4.5em / 右0 にすると、伸び代(1:2:1)で分け合ったあと
     左=±0 / 中=+1.5em / 右=−1.5em にちょうど落ちる(1:2:1の比はここで少しだけ変わる=指示どおり) */
.lib-sw>.lib-left{flex-basis:1.5em}
/* b259③: 4.5em(b258の1.5文字分)+ 24px(b259で消した3列の隙間12px×2)。
   左と右の取り分は1pxも変えず、空いた24pxを丸ごと真ん中に足す */
/* 📐 2026-09-09 b373 先生の指示(逐語「左の患者一覧の領域、真ん中のやり取りの領域、右のノートあたりの領域、三つとも、
   テキストウインドウ内の文字一個分だけ、横幅を狭めて欲しいです」)。窓そのものは3段とも3ポイント細くした
   (main.tsx の LBW_PCTS 30/55/80 → 27/52/77)。
   ⚠️ 窓を細くしただけだと、余りは伸び代の 1:2:1 で分かれるので**真ん中だけ倍に痩せる**(左10.5/中21/右10.5 のような減り方)。
      3列を**同じだけ**細くするには、真ん中の flex-basis を「窓が細くなった量の1/3」だけ足す(左・右の basis は触らない)。
      1512pxのブラウザで窓は45.4px細くなるので 45.4/3 ≒ 15px → 24px + 15px = 39px。
      これで3列とも約15px(=1文字強)ずつ細くなる(実測で確かめた値) */
.lib-sw>.lib-right{flex-basis:calc(4.5em + 39px)}
/* 📐 b373: 2番目の大きさ(2列)は「本文+右のゾーン」になったので、右のゾーンが痩せすぎないように
   取り分を少しだけ増やす(2列の左の一覧に .lib-z2>.lib-left で入れてあるのと同じ作法・同じ数)。
   これで2列の右のゾーンは3列の時とほぼ同じ幅になり、割合を上げなくても窮屈にならない */
.lib-z2>.lib-side{flex:1.15 1 0%;min-width:230px}
/* 📐 2026-09-17 b498: 一括の大窓(.linebw。1人ぶんの .plinewin は除く)は 52%/77% で窓が15px(=1文字ぶん)広い(main.tsx の LBW_EXTRA_PX)。
   その15pxを丸ごと右の列(ノート/定型文ボタン)の basis に足す=伸び代の分け合いは変わらず、左の一覧と真ん中の会話は1pxも動かない */
/* 📐 2026-09-19 b525 先生の逐語「右の定型文ボタン〜ノートあたりの領域は1.5文字分、右へ広げてほしいです。
   LINEウインドウ自体が広がる形で大丈夫です。」→ b498 の15px(1文字)に **1.5文字ぶん(15×1.5=22.5→23px)** を足して
   **38px**(main.tsx の LBW_EXTRA_PX + LBW_SIDE_EX)。窓の幅も同じだけ広がる(lbwWidthOf)ので、
   広がった38pxは丸ごと右の列に乗り、左の一覧と真ん中の会話の幅は1pxも変わらない */
.linebw:not(.plinewin) .lib-sw>.lib-side{flex-basis:38px}
/* 👈👉 2026-09-17 b502 先生のご報告「52%のウインドウの時、左右スワイプ時に右の定型文領域の表示が一部しか写らない瞬間があって」。
   【原因(本物のChromeで実測)】スワイプ中の帯の決まり `.lib-strip>.lib-side{flex:0 0 var(--stw)}` より、b498 で足した
     この基準幅の決まりの方が**強かった**(クラス4つ対2つ)ので、帯の間だけ flex-basis が 15px に勝ち、
     伸び代0と合わさって右の列が **245px → 15px** に潰れていた(=「一部しか写らない」)。狭い1列(b419)の帯でも同じ。
   【直し】基準幅は**帯になっていない時だけ**当てる(:not(.lib-strip))。帯の間は今までどおり1コマの幅(--stw)に従う。
   ⭐ 2列(52%)では左の一覧と右のノートは入れ替わりで出るので、同じ基準幅にそろえる。そろえないと左端と右端で
     真ん中のやり取りの幅が 9.5px 変わって字が組み直される(b379 の決まり)。帯の1コマ(main.tsx の stripW)も同じ式 */
/* 📐 2026-09-19 b525: 基準幅は 15px → **38px**(b498の1文字15px + b525の1.5文字23px)。
   :not(.lib-strip) の除外は b502 の直しそのまま=スワイプ中(帯が出ている時)は今までどおり1コマの幅(--stw)に従う
   (外すと帯の決まりより強くなって右の列が38pxに潰れる)。左の一覧も同じ基準幅にそろえる(b379 の決まり) */
.linebw:not(.plinewin) .lib-z2:not(.lib-strip)>.lib-side{flex-basis:38px}
.linebw:not(.plinewin) .lib-z2:not(.lib-strip)>.lib-left{flex-basis:38px}
/* 👈👉 b379(2026-09-09 先生の逐語「画面がスクロールするように動くのではなく、オンオフといった感じで
   切り替わるので、スクロールするような感じにしたいです。(スワイプしようと思ってやっぱり途中まで行って
   戻せる、といったような)」)。2番目の大きさ(2列)の「帯」=3列を横に並べ、見えている窓を帯の上でずらす。
   ・ずらしは **transform:translateX**。列の幅を動かす手立てもあるが、幅を動かすと毎フレーム
     文字が組み直されて重くなる。transform なら描き直しだけで済むので指にそのまま追従する
   ・左の一覧(.lib-left)と右のノート(.lib-side)は**まったく同じ幅**(--stw)。
     こうすると左端に寄せても右端に寄せても真ん中のやり取りは 100%−--stw のままで、字が組み直されない
   ・--sox = ずらし量(px。0=左端で「一覧+やり取り」/ --stw=右端で「やり取り+ノート」)
   ・指で動かしている間は transition を付けない(付けると重く感じる)。端へ寄せる時だけ lib-anim が付く */
.lib-strip{overflow:hidden}
.lib-strip>.lib-left,.lib-strip>.lib-side{flex:0 0 var(--stw);min-width:0;max-width:none;
  transform:translateX(var(--sox,0px))}
.lib-strip>.lib-right{flex:0 0 calc(100% - var(--stw));min-width:0;transform:translateX(var(--sox,0px))}
.lib-strip.lib-anim>.lib-left,.lib-strip.lib-anim>.lib-right,.lib-strip.lib-anim>.lib-side{
  transition:transform 180ms ease-out}
/* 👈👉 b419(2026-09-10 先生の逐語「52%でLINEウインドウを開いていたが、ブラウザ幅を縮めると真ん中のやり取りメッセージ
   しか見えなくなる場合があります。この場合、スワイプで右のノート領域にしたり、患者一覧が見える領域にしたりできるように
   して欲しいです。上のバーはいずれにスワイプしても残っているようにして欲しいです。」)。
   狭い1列(zone 1)の帯 = 3つの領域を**1面ずつ**横に並べる(どれも窓と同じ幅 --stw)。
   ・--sox のずらし量は 0=患者一覧 / --stw=やり取り / --stw×2=ノート
   ・上のバー(.lbw-bar)は .lib の**外**にあるので、どこへ送っても見えたまま(動くのは下の3領域だけ) */
.lib-strip.lib-strip1>.lib-left,.lib-strip.lib-strip1>.lib-right,.lib-strip.lib-strip1>.lib-side{
  flex:0 0 var(--stw);min-width:0;max-width:none;transform:translateX(var(--sox,0px))}
/* 🪟 b379②: いちばん広い段(3列)で、しまってあるノートを右スワイプ(や⇤)で出す時は、
   幅0から本来の幅へ滑らかに開く。flex-grow を 0→1 へ動かすだけなので、幅を測らなくても
   今までの取り分(1:2:1 と .lib-sw の調整)にそのまま落ち着く。
   開いている間だけ overflow:hidden(中身が幅0の箱からはみ出して見えないように)。
   終わると印が外れるので、ひもづけ候補の小窓(.lib-cand)などは今までどおり外へ出せる */
@keyframes lib-side-in{from{flex-grow:0}to{flex-grow:1}}
.lib-side.lib-sidein{overflow:hidden;animation:lib-side-in 180ms ease-out}
/* ‹ 狭い1列(26%相当)の時だけ出る「一覧へ戻る」。見出しの左上に重ねる=行を増やさない
   📐 b373: 2列で左の一覧が消えている時も同じ「‹」を出すので、印は段(.lib-z1)ではなく .lib-bk で持つ */
.lib-z1>.lib-right,.lib-bk>.lib-right{position:relative}
.lib-z1 .lib-head,.lib-bk .lib-head{padding-left:28px}
.lib-back{position:absolute;left:3px;top:5px;z-index:5;width:22px;height:26px;
  display:flex;align-items:center;justify-content:center;color:#5c6b7a;font-size:19px;
  line-height:1;cursor:pointer;text-decoration:none!important;user-select:none}
.lib-back:hover{color:#1e6fe0}
/* 📱 ═══ 2026-09-20 b542④⑤ スマホでLINEを使えるようにする(**スマホ幅だけ**の直し) ═══
   先生の逐語(b542)「…④返信欄の字を16px以上 ⑤押し所を44px目安に。…プッシュ通知は無しで大丈夫です。」
   ・物差し = **幅 520px 以下**(main.tsx の PHONE_MQ と同じ)。院内で「スマホ」を指す既存の段
     (batch204 の上のバーの @media (max-width:520px))にそろえた。
     pointer:coarse は iPad の物差し(b299/b323)なので使わない=iPad・パソコンの見た目は1pxも変わらない
   ・⑤の押し所は「見た目を大きくしすぎない」(先生の省スペースの好み)ため、字と地の大きさは
     控えめにし、足りないぶんは **::before の当たり判定だけ**で 44px 前後に広げる。
     広げ幅は**隣との隙間より小さく**取る(隣の押し所を横取りしない) */
@media (max-width:520px){
  /* ④ 返信欄の字を 16px に(iPhone の Safari は 16px 未満の入力欄に触れると画面を勝手に拡大する)。
     ⚠️ b335 の薄い黄色の下線(.lib-tabd=返信欄の後ろに重ねた透明の同じ文)も**必ず同じ字の大きさ**にする。
        ずらすと下線の位置が本文とずれる */
  .lib-send textarea{font-size:16px}
  .lib-tabd{font-size:16px}
  /* ⑤ 要対応などの札(見出しの .lib-flags の中のボタン)。
     b540 の実測で「要対/応」と2行に折れていた(48.5×40px)→ 折らない(white-space:nowrap)。
     高さは 32px に抑え、当たり判定だけ上下 6px ずつ広げて 44px にする
     (見出しの並びの隙間は 12px なので、6px ずつなら上下の行の押し所と重ならない) */
  .lib-flags{flex-wrap:wrap;gap:6px}
  .lib-flags .mini{position:relative;display:inline-flex;align-items:center;justify-content:center;
    white-space:nowrap;min-height:32px;padding:0 9px;font-size:11px;line-height:1}
  .lib-flags .mini::before{content:'';position:absolute;left:0;right:0;top:-6px;bottom:-6px}
  /* ⑤ 院のピル(b540 の実測 19〜53×22.5px)。高さ 32px + 当たり判定を上下 6px・左右 4px 広げる。
     ⚠️ 左右に 4px ずつ広げるので、並びの隙間も**全部 9px にそろえる**(大窓とフルページの .lcp-main は
        もともと 9px。定型文の窓の 4px はスマホ幅の時だけ 9px にする)= 隣のピルの押し所と重ならない */
  .lcpick{min-height:32px;display:inline-flex;align-items:center;justify-content:center;padding:0 12px}
  .lcpick::before{content:'';position:absolute;left:-4px;right:-4px;top:-6px;bottom:-6px}
  .lcpicks{gap:9px}
  /* ⑤ 📎(b540 の実測 22×20px)。地は 34px にとどめ、当たり判定を四方に 5px 広げて 44px にする。
     広げたぶんが隣(＋・🐑・送信)と重ならないよう、返信欄の下の帯の隙間だけ 4px→10px にする */
  .lib-sendbar{gap:10px}
  .lib-clip{position:relative;width:34px;height:34px;line-height:34px;font-size:15px;opacity:.85}
  .lib-clip::before{content:'';position:absolute;left:-5px;right:-5px;top:-5px;bottom:-5px}
  /* ⑤ 戻る ‹(b540 の実測 22×26px)。見出しの左上に重ねる作りはそのまま、押し所だけ 44×44 にする。
     見出しの左余白も同じだけ空ける(28px→46px)=氏名が ‹ の下に潜らない */
  .lib-z1 .lib-head,.lib-bk .lib-head{padding-left:46px}
  .lib-back{left:0;top:0;width:44px;height:44px;font-size:21px}
  /* ⑤ AI下書きの「返信欄に入れる」(b540 の実測 95×19px)。字と地の色はそのまま、高さだけ 44px に */
  .lai-put{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 14px;font-size:12px}
  /* ⚠️ ①のつまみ(⇤/⇥)は**1pxも変えない**。先生の逐語「既存のつまみの見た目・作法をそのまま使う」 */
}
/* 見積書の見分け(2026-08-07 院長要望): 確定=青い太字 / 編集中=薄いグレーの細字 */
/* 摘要の並べ替え(2026-08-08 freeeに倣う): 取っ手は項目の頭・紙の外側に置くので、紙の並びは崩れない */
.qpv-acell{position:relative;overflow:visible}
.qpv-grip{position:absolute;left:-19px;top:50%;transform:translateY(-50%);width:16px;text-align:center;
  color:#c3ccd6;cursor:grab;font-size:14px;line-height:1;user-select:none;touch-action:none;opacity:0;transition:opacity .12s}
tr:hover .qpv-grip,tr.qpv-drag .qpv-grip{opacity:1}
.qpv-grip:hover{color:#1e6fe0}
.qpv-grip:active{cursor:grabbing}
/* 動かしている行は浮き上がって見える(中の文字もいっしょに動く) */
tr.qpv-drag{background:#fff !important;box-shadow:0 6px 16px rgba(20,35,55,.22);outline:1px solid #9cc4f0;position:relative;z-index:3}
tr.qpv-drag .qpv-in{cursor:grabbing;background:transparent}
/* 右半分(会計)のマス目は、どこを押しても会計の窓が開く(2026-08-08) */
.c-kk[title],.c-am[title],.c-rc[title]{cursor:pointer}
tr:hover .c-kk[title],tr:hover .c-am[title],tr:hover .c-rc[title]{background:#eef6ff}
.qa-row.hovon{background:#e8f3ff;box-shadow:inset 3px 0 0 #1e6fe0}
.qa-go{white-space:nowrap;text-align:right}
.qa-go a{font-size:11.5px;color:#1e6fe0;cursor:pointer;white-space:nowrap;margin-left:10px}
.qa-go a:hover{text-decoration:underline}
a.qtitle.fx,td.qtitle.fx{color:#1e6fe0 !important;font-weight:700}
a.qtitle.tmp,td.qtitle.tmp{color:#93a1ad !important;font-weight:400}
td.qtitle{font-size:12.5px}
/* 見積書の件名をその場で直す入力欄(2026-08-13 batch75)。クリックすると出て、Enterで決定 */
.qtitle-in{width:100%;min-width:120px;max-width:320px;box-sizing:border-box;font-size:12.5px;
  padding:2px 5px;border:1px solid #1e6fe0;border-radius:4px;background:#fff;color:#243b53;font-weight:600}
.qtitle-in:focus{outline:2px solid rgba(30,111,224,.25)}
/* 件名の文字を押すと「見積書を開く」(行と同じ)。直すのは末尾の鉛筆だけ(2026-08-16 batch93 院長要望C) */
a.qtitle{cursor:pointer}
/* 件名+鉛筆の並び。件名は**表示幅に上限**を決めて省略(…)し、鉛筆は縮まないので右の欄の下に潜らない */
.qtitle-w{display:inline-flex;align-items:baseline;gap:4px;max-width:100%;width:100%;min-width:0;vertical-align:bottom}
.qtitle-w>a.qtitle-t{flex:0 1 auto;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;cursor:pointer}
.qtitle-w>a.qtitle-pen{flex:0 0 auto;width:16px;overflow:visible;font-size:11px;line-height:1;
  cursor:pointer;opacity:.55;user-select:none;color:#8a97a3;text-decoration:none}
.qtitle-w>a.qtitle-pen:hover{opacity:1;text-decoration:none}
/* 見積書管理の件名の欄は幅が決まっていないので、ここで上限を決めて鉛筆を右端に固定する */
.qatable .qtitle-w{width:auto;max-width:260px}
/* ── 📄 書類印刷(2026-08-07) ── */
.dfshelf{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0}
/* 📄 書類印刷: カードの棚 → 小見出し+「1書類=1行」のリスト(2026-08-11 batch52 院長要望)
   ⚠️ 行にも .dfcard を残している(既存の検査と開く動きをそのまま使うため)。行の見た目は .dfrow が上書きする */
.dflist{margin:8px 0 4px;max-width:760px}
.dfgroup{margin-bottom:12px}
.dfgh{font-size:11.5px;font-weight:700;color:#8a97a5;letter-spacing:.08em;
  border-bottom:1px solid #e3eaf1;padding-bottom:3px;margin-bottom:2px}
.dfcard.dfrow{display:flex;align-items:baseline;gap:10px;width:auto;border:0;border-bottom:1px solid #f0f4f8;
  border-radius:0;padding:7px 6px;background:transparent}
.dfcard.dfrow:hover{background:#f4f8ff;border-color:#e3eaf1}
.dfcard.dfrow b{display:inline;flex:none;font-size:13px}
.dfcard.dfrow small{display:inline;flex:1;margin-top:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dfcard.dfrow .dfgo{display:inline;margin-top:0;flex:none;white-space:nowrap}
/* 🖊 その場で描く(2026-08-27 batch210)。紙のプレビューを通さずに描画の窓を開く。
   ⚠️ 説明文は足さない = 鉛筆1つだけ(何かはホバーのツールチップに) */
.dfcard.dfrow .dfdraw{display:inline;flex:none;font-size:13px;line-height:1;cursor:pointer;
  border:1px solid #c8d3de;border-radius:6px;padding:2px 6px;background:#fff;color:#1e6fe0}
.dfcard.dfrow .dfdraw:hover{background:#e8f1ff;border-color:#1e6fe0}
/* 🗂 2026-09-07 b339 先生の指示: 書類印刷の手直しを自動保存し「前回のものを使用」で戻す。
   控えがある行だけ「開く」の左に小さく出る(いつ・誰がはホバーのツールチップ。帯や説明文は足さない) */
.dfcard.dfrow .dfprev{display:inline;flex:none;font-size:11px;line-height:1;cursor:pointer;white-space:nowrap;
  border:1px solid #c9daf3;border-radius:6px;padding:3px 6px;background:#fff;color:#1e6fe0}
.dfcard.dfrow .dfprev:hover{background:#e8f1ff;border-color:#1e6fe0}
/* (.dfgz=「銀座院専用」の小さな表示は 2026-08-24 batch184 で撤去。院専用の区分をやめたため) */
.dfcard{width:230px;border:1px solid #dbe3ea;border-radius:10px;padding:12px 14px;cursor:pointer;background:#fff}
.dfcard:hover{border-color:#1e6fe0;background:#f4f8ff}
.dfcard b{display:block;font-size:13.5px}
.dfcard small{display:block;font-size:11.5px;color:#8a97a5;margin-top:3px}
.dfgo{display:block;margin-top:8px;font-size:11.5px;color:#1e6fe0}
.dfwin{max-width:860px}
.dfpaper{background:#fff;border:1px solid #dbe3ea;border-radius:8px;padding:20px 26px;max-height:62vh;overflow:auto}
.dfpaper h4{text-align:center;font-size:18px;letter-spacing:.4em;margin:0 0 14px}
.dfdate{text-align:right;font-size:12.5px;margin-bottom:12px}
.dfdate input{width:56px;text-align:center;margin:0 3px;padding:3px 4px;border:1px solid #c8d3de;border-radius:5px}
.dfrow{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:12.5px}
.dfrow b{font-weight:400;min-width:120px}
.dfrow input{flex:1;padding:5px 8px;border:1px solid #c8d3de;border-radius:5px;font-size:12.5px}
.dfsuf{color:#5c6b7a;font-size:12px}
.dfright{margin:14px 0 10px auto;max-width:460px;background:#f8fafc;border:1px solid #e4eaf0;border-radius:8px;padding:9px 11px}
.dfright label{display:flex;align-items:center;gap:8px;font-size:12.5px;margin-bottom:6px}
.dfright label b{font-weight:400;min-width:72px}
.dfright select,.dfright input{flex:1;padding:5px 8px;border:1px solid #c8d3de;border-radius:5px;font-size:12.5px}
.dfaddr{font-size:11.5px;color:#42566b;line-height:1.7;margin:0 0 7px 80px}
.dfpt div{display:flex;align-items:center;gap:6px;font-size:12.5px;margin-bottom:5px}
.dfpt b{font-weight:400;min-width:96px;letter-spacing:.25em}
.dfpt input{flex:1;padding:5px 8px;border:1px solid #c8d3de;border-radius:5px;font-size:12.5px}
.dfsec{margin-top:10px;border:1px solid #9aa8b6;border-radius:6px;overflow:hidden}
.dfsec-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#f2f5f8;border-bottom:1px solid #9aa8b6;padding:5px 9px;font-size:12px}
.dfchips{display:flex;gap:5px;flex-wrap:wrap}
.dfchips a{font-size:11px;color:#1e6fe0;border:1px solid #c9dcf5;background:#f2f8ff;border-radius:11px;padding:1px 9px;cursor:pointer}
.dfchips a:hover{background:#e3f0ff}
.dfsec textarea{width:100%;border:none;padding:8px 10px;font-size:12.5px;line-height:1.75;font-family:inherit;resize:vertical;display:block}
.dfsec textarea:focus{outline:2px solid #9cc4f0;outline-offset:-2px}
.dfjson{width:100%;height:44vh;font-family:ui-monospace,Menlo,monospace;font-size:12px;padding:10px;border:1px solid #c8d3de;border-radius:8px}
/* ── 🖼 まとめて登録(2026-08-07) ── */
.bulkwin{max-width:720px}
.bulkthumbs{display:flex;gap:10px;flex-wrap:wrap;max-height:34vh;overflow:auto;background:#f6f9fb;border:1px solid #e4eaf0;border-radius:9px;padding:10px;margin-bottom:12px}
.bulkth{width:110px}
.bulkth img{width:110px;height:82px;object-fit:cover;border-radius:6px;display:block;background:#fff;border:1px solid #dbe3ea}
.bulkth .bulkdoc{display:flex;align-items:center;justify-content:center;width:110px;height:82px;font-size:30px;background:#fff;border:1px solid #dbe3ea;border-radius:6px}
.bulkth small{display:block;font-size:10px;color:#8a97a5;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bulkform label{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.bulkform label b{width:110px;flex-shrink:0;font-size:12.5px;color:#42566b;text-align:right}
.bulkform label input{flex:1;padding:7px 10px;font-size:13px;border:1px solid #c8d3de;border-radius:7px}
.bulkpre{display:flex;gap:6px;flex-wrap:wrap;margin:-4px 0 10px 120px}
.bulkpre a{font-size:11.5px;color:#1e6fe0;border:1px solid #c9dcf5;background:#f2f8ff;border-radius:12px;padding:2px 10px;cursor:pointer}
.bulkpre a:hover{background:#e3f0ff}
/* 2026-09-08 b362 先生の指示: 画像の題名が空のあいだ「登録する」は薄く・押せない(説明文は出さない) */
.bulkwin .btnrow button.pri.bulk-off,.bulkwin .btnrow button.pri:disabled{opacity:.4;cursor:default}
.bulkwin .btnrow button.pri.bulk-off:hover,.bulkwin .btnrow button.pri:disabled:hover{background:#1e6fe0}
/* 上部メニュー・患者一覧を本物のリンクにしたので、見た目は元のまま保つ */
.mnav a{text-decoration:none}
a.prow{text-decoration:none;color:inherit}
/* ── 🔄 画面を更新する(2026-08-07 iPad・スマホ向け) ── */
.mnav a.nreload{color:#bfe6cf}
.mnav a.nreload.on{background:#0b7a39;color:#fff}
/* ── 📱 スマホ・iPadの上のバー(2026-08-16 batch109 院長要望で方針を変更) ──
   ⚠️ ここには 2026-08-07 まで
        @media (pointer: coarse){ .app.ppage > .mnav{display:none} .app.ppage .psticky{top:0} }
      と書いてあり、**指で操作する端末の患者ページだけ黒い上のバーを消して**縦幅を稼いでいた。
      これが院長報告「予約ボードから患者トップへ進むと黒い上部バーが消えて戻りにくい」の原因。
   → 黒いバー(.mnav)は**どの画面でも消さない**。戻る道をいつでも残す(元に戻すことは禁止)。
     .psticky は .mnav(高さ44px)の真下に貼り付くので、既定の top:44px のままでよい。
   代わりに縦幅は、下の薄い帯(.subbrand)を狭い画面で引っ込めて稼ぐ。 */
/* 🔖 「DAYLIGHT KARTE — Phase 0 … / バックアップ◯時間前」の帯。
   狭い画面・指で操作する端末では**予約ボードのときだけ**出す(患者ページ等では出さない)。
   PCの幅(1025px以上でマウス)は今までどおり、どの画面でも出る。 */
@media (max-width:1024px){
  .app:not(.calpage) > .subbrand{display:none}
}
@media (pointer: coarse){
  .app:not(.calpage) > .subbrand{display:none}
}
/* ── 🗨 予約枠メモの吹き出し(2026-08-07) ── */
.apptip{position:fixed;z-index:3100;width:min(320px,72vw);max-height:52vh;overflow:auto;
  background:#22303f;color:#fff;border-radius:11px;padding:10px 13px;box-shadow:0 12px 34px rgba(10,20,35,.45);
  pointer-events:none;font-size:12.5px;line-height:1.65}
.apptip b{display:block;font-size:13px;margin-bottom:2px}
.apptip small{display:block;font-size:10.5px;color:#b9cbdb;margin-bottom:5px}
.apptip-memo{white-space:pre-wrap;word-break:break-word;border-top:1px solid rgba(255,255,255,.18);padding-top:6px}
/* ヘッダーを詰める(iPadで右端が切れないように・2026-08-07) */
@media (max-width: 1180px){
  .mnav a{padding:0 8px}
  .mnav .nsearch input{width:152px}   /* b511: 190px の5分の4 */
}
@media (max-width: 900px){
  .mnav a{padding:0 6px;font-size:12px}
  .mnav .nsearch input{width:112px}   /* b511: 140px の5分の4 */
  .mnav .nuser{display:none}
}
/* 📱 iPad・スマホ(1100px以下)の上部の黒いバー(2026-08-26 batch203 → batch204で作り直し)
   先生の逐語(batch204):「予約ボードを右にスクロールすると上部バーが左に残る」
   「スマホも2行に」「改修履歴・印刷・DAYLIGHT KARTEの帯・バックアップは無くてよい」
   「メディベースに倣って検索窓は左、設定などは右」「ログアウトは名前を押してから」
   ・**position:fixed** にして画面の左上に貼り付ける(sticky は縦にしか付いてこないので、
     横スクロールすると左に取り残されていた=先生の症状)。幅は画面いっぱい(100%)で、
     どこまで右へスクロールしても常に見える。ずれた分は .app の padding-top で埋める
   ・2行の作り: 検索窓の直前の .nbreak(幅いっぱい・高さ0)で行を折る
     1行目 = 🦔KARTE / 🗓オペ枠ボード / 📅予約ボード / 📋WEB問診
     2行目 = 🔍検索窓(左) …余白… 各バッジ / 📗記録集 / ⚙設定 / 🔄更新 / 🔑 / 👤名前▾(右)
   ・パソコン幅(1101px以上)は今までどおり1行・sticky のまま(見た目を変えない) */
.mnav .nbreak{display:none}
/* 🖨 b299(2026-09-05 先生の逐語「印刷ボタンがipadだとなくなっている…上部黒バーの適した場所などに小さく追加」)
   上部の黒いバーの小さな印刷(.nprint=💬LINEの右・予約ボードの時だけ)。
   パソコンでは出さない(今までどおりボードの操作の行の🖨印刷だけ)。出すのは、下の
   「.cal-head .printsel を隠す」2つの条件(1100px以下 / 指で操作する端末)と**同じ所**で、
   ボードの印刷が消えるのと入れ替わりに出る(二重に出ない・どちらも無い状態を作らない)。
   小さく=バーの高さ(48px)を変えない 26px・文字は🖨だけ */
.mnav .nprint{display:none;height:26px;width:34px;font-size:14px;line-height:1;padding:2px 0;margin:0 2px 0 4px;
  text-align:center;border-radius:6px;background:#fff;color:#1c1f24;border:1px solid #c8d2dc;flex:0 0 auto;
  /* ▾の矢印を消して🖨だけの幅(34px)にする(省スペース。iPadでも押せば院を選ぶ一覧はそのまま開く) */
  -webkit-appearance:none;appearance:none}
@media (max-width: 1100px){
  /* ⚠️ batch204b(先生の逐語「それぞれ離れていて視点が散ってしまい落ち着かない」):
     間延びの正体は header の justify-content:space-between。狭い画面では**左詰め**にする */
  .mnav{position:fixed;left:0;right:0;top:0;width:100%;max-width:100vw;box-sizing:border-box;
    justify-content:flex-start;height:auto;flex-wrap:wrap;row-gap:0;padding:0 12px 3px;gap:0}
  .app{padding-top:var(--navh,78px)}
  .mnav .nbreak{display:block;flex:0 0 100%;height:0;margin:0}
  /* 一つ一つを少し大きく(押しやすさ優先。パソコンは変えない) */
  .mnav a{line-height:42px;font-size:14px;padding:0 10px}
  .mnav .nsearch{margin-left:0}
  .mnav .nsearch input{width:min(36vw,210px);min-width:0;font-size:13.5px;padding:8px 10px}
  .mnav .nsearch button{font-size:13.5px;padding:8px 12px}
  .mnav .nspacer{flex:1;min-width:0}
  .mnav .nuser{display:inline;line-height:42px;font-size:13.5px}
  /* 設定・更新・名前は「やや右」= 右端にすこし余白を残す(べったり右端に付けない) */
  .mnav .nuserdrop{margin-right:8px}
  .mnav .ndmenu{top:42px}
  /* 省スペースのため、狭い画面では出さないもの(先生の明示) */
  .subbrand{display:none}
  .cal-head .kaibtn,.cal-head .printsel{display:none}
  .mnav .nprint{display:inline-block}   /* 🖨 b299: ボードの印刷を隠す代わりに黒いバーへ */
}
/* 📱 batch205(先生の逐語「ipadの上部黒バーの並び…一列にしたいです。一列にした分、黒バー以下の
   内容は上に詰めることになります」): iPad(521〜1100px)は**1行**にする。
   並びは 左からタブ類 → …余白… → 🔍検索窓(今までより右) → ⚙設定 → 👤名前(右端は少し空ける)。
   ・折り返しの目印(.nbreak)は使わない
   ・1行になった分、下の中身は --navh(実測)がそのまま上へ詰めてくれる
   ・入りきらない時は検索窓が縮む(min-width:0)。スマホ(520px以下)は今までどおり2行 */
@media (min-width: 701px) and (max-width: 1100px){
  /* ⚠️ batch205b: ここに overflow:hidden を付けていたが、**⚙設定・名前のメニューが丸ごと
     切り取られて開かなくなる**(バーの外にぶら下がるため)。iPadで設定が押せない状態だったので外した。
     1行に収めるのは flex-wrap:nowrap と下の幅指定でやる(はみ出しは検査で実測している) */
  .mnav{flex-wrap:nowrap;height:48px;padding:0 10px}
  .mnav .nbreak{display:none}
  .mnav a{line-height:48px;padding:0 8px;font-size:13.5px}
  .mnav .nsearch{margin-left:auto}
  .mnav .nspacer{flex:0 0 8px;min-width:8px}
  .mnav .nsearch input{width:min(24vw,180px);padding:6px 8px}
  /* 🖨 b299: 幅が詰まった時(834pxのiPad縦に🖨を足した所)に「🔍 検索」が2行に折れて
     バーの高さを押し上げていた。batch205の決まり「入りきらない時は検索窓が縮む」のとおり
     縮むのは入力欄(min-width:0)に任せ、ボタンは1行のままにする */
  .mnav .nsearch button{padding:6px 10px;white-space:nowrap}
  .mnav .nuser{line-height:48px}
  .mnav .ndmenu{top:48px}
}
/* ⚠️ 700px以下(iPadを大きく拡大した時など)は1行に入りきらないので、**2行に折り返す**。
   こうすると名前は次の行に回るだけで、画面の外へは出ない(batch204bで先生に直された点を守る) */
/* 📌 batch205: 予約ボードの操作の行(今日・日付・ミニカレンダー・更新・予約種類・1日2日7日・⚙設定)と
   お知らせ(Empty)の行を、上部の黒いバーのすぐ下に**貼り付ける**(下にスクロールしても動かない)。
   列名の帯は従来どおりこの下に続けて貼り付く(--chtop はこのかたまりの高さを含めて測っている) */
.cal-fixhead{position:sticky;top:var(--navh,44px);z-index:60;background:#f4f7fa;
  padding-top:2px;box-shadow:0 3px 6px -5px rgba(20,40,60,.5)}
/* 📋 WEB問診は**iPad(スマホより広く、パソコンより狭い画面)**では出さない(batch204b 先生の明示)。
   スマホ(520px以下)とパソコン(1101px以上)では今までどおり出す。
   iPad Pro 横(1366px)のような広いタッチ画面も iPad なので、指で操作する端末も同じ扱いにする */
@media (min-width: 521px) and (max-width: 1100px){ .mnav .navmonshin{display:none} }
@media (pointer: coarse) and (min-width: 521px){ .mnav .navmonshin{display:none} }
/* 📱 スマホ(520px以下)は幅が足りないので、2行に収まるようさらに詰める(batch204)
   ・🔄更新 と 🔑 は隠す(更新は右下の丸いボタン、🔑は名前のメニューの中にある)
   ・検索窓を細く・文字と余白を詰める */
@media (max-width: 520px){
  .mnav{padding:0 6px 2px;gap:0}
  .mnav a{padding:0 6px;font-size:12px;line-height:36px}
  .mnav .nsearch input{width:min(34vw,124px);padding:5px 7px;font-size:12px}
  .mnav .nsearch button{padding:5px 7px;font-size:12px}
  .mnav .nreload{display:none}
  .mnav .nuser{font-size:12px;line-height:36px;max-width:104px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .mnav .nuserdrop{margin-right:4px}
  .mnav .ndmenu{top:36px}
}
/* 🔍 拡大(ピンチ・ブラウザの拡大)で幅が足りなくなった時も、**ログイン者の名前を画面の外に出さない**
   (batch204b 先生の逐語)。バーは折り返せる作りなので、名前は必要なら次の行に回って必ず見える。
   ・.mnav は max-width:100vw・中身は縮められる(min-width:0)ので、横にはみ出さない
   ・名前がいちばん後ろなので、詰まった時に最初に次の行へ回るのも名前(=切れずに全部見える) */
@media (max-width: 400px){
  .mnav a{padding:0 5px;font-size:11.5px}
  .mnav .nsearch input{width:min(30vw,104px)}
  .mnav .nuser{max-width:90px}
}
/* 🖐 指で操作する端末(iPad Pro 横=1366pxのように幅が広い機械も含む)は、幅によらず
   ①バーを画面に貼り付ける(横スクロールで取り残されない) ②帯・改修箇所りれき・印刷を出さない。
   2行にするかどうかは上の幅の決まり(1100px以下)に任せる */
@media (pointer: coarse){
  .mnav{position:fixed;left:0;right:0;top:0;width:100%;box-sizing:border-box}
  .app{padding-top:var(--navh,44px)}
  .subbrand{display:none}
  .cal-head .kaibtn,.cal-head .printsel{display:none}
  .mnav .nprint{display:inline-block}   /* 🖨 b299: 指で操作する端末でも黒いバーの方に出す */
}
/* 📱 2026-09-06 b323 先生の指示: iPadの黒バーを詰める・書類プレビューは外クリックで閉じる
   先生の逐語「上部黒バーで、印刷やラインを増やした関係か、ipadで、右の方にあったはずのログイン者の名前などが
     見切れるようになってしまっている…オペ枠ボードを『オペ枠表』に、ハリネズミ&KARTEを、ハリネズミだけに、
     して左へ詰めるようにして下さい。(ipadでだけで、いいです。)」
   ・iPad の見分けは b299 の🖨と同じ **@media (pointer: coarse)**(指で操作する端末。iPad Pro 横1366pxも含む)。
     スマホ(520px以下)は2行の作りで名前が切れないので対象外(min-width:521px)。パソコン(マウス)は変えない
   ・🦔KARTE → 🦔だけ(b を隠す)
   ・🗓 2026-09-18 b511: 「オペ枠ボード → オペ枠表」の出し分け(.nope-pc/.nope-ipad)は**撤去**した。
     先生の指示でパソコンも含めて文言が「オペ枠表」に統一されたため(main.tsx 側も1つの文言に戻した)
   ・項目の左右の余白 12px→7px・検索欄を少し狭く・バーの隙間0 で左へ詰める。右端の名前と⚙設定が画面に収まる
   ・この決まりは上の幅ごとの決まり(1180px以下/1100px以下/701〜1100px)より後に書き、同じ強さなので勝つ */
@media (pointer: coarse) and (min-width: 521px){
  .mnav{gap:0}
  .mnav .brandmini b{display:none}
  .mnav a{padding:0 7px}
  .mnav .nsearch{margin-left:4px}
  .mnav .nsearch input{width:min(18vw,160px);min-width:0}
  .mnav .nuserdrop{margin-right:6px}
}
/* 👤 ログイン者の名前を押すと出る小さなメニュー(ログアウト。メディベースの▾と同じ作法) */
.nuserdrop{position:relative}
.nuserdrop>a.nuser{cursor:pointer;color:#dfe6ee}
.nuserdrop:hover .ndmenu,.nuserdrop.on .ndmenu{display:block}
.fabreload{position:fixed;right:16px;bottom:16px;z-index:45;width:58px;height:58px;border-radius:50%;
  border:none;background:#1c1f24;color:#fff;font-size:24px;line-height:1;cursor:pointer;
  box-shadow:0 6px 18px rgba(15,25,40,.35);display:none;align-items:center;justify-content:center}
.fabreload:active,.fabreload.on{background:#0b7a39;transform:scale(.94)}
/* 指で操作する端末(iPad・スマホ)だけに出す */
@media (pointer: coarse){ .fabreload{display:flex} }
@media print{ .fabreload{display:none !important} }
.modal-bg.lwtop{z-index:2100}   /* LINEの窓(.linewin/.linebw=2000)より上に出す */
.lwmore{text-align:center;padding:4px 0 10px}
.lwmore a{display:inline-block;background:rgba(255,255,255,.92);border-radius:14px;padding:5px 14px;font-size:12px;color:#17509c;cursor:pointer}
.lwmore b{display:inline-block;background:rgba(255,255,255,.82);border-radius:14px;padding:5px 14px;font-size:11.5px;color:#42566b;font-weight:700}
/* 真っ白画面を出さないための受け皿 */
#crashbar{position:fixed;left:0;right:0;top:0;z-index:3900;background:#b3261e;color:#fff;padding:10px 16px;
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:13px;box-shadow:0 6px 20px rgba(0,0,0,.3)}
#crashbar b{font-size:13.5px}
#crashbar button{border:none;border-radius:7px;background:#fff;color:#b3261e;font-weight:700;padding:5px 14px;cursor:pointer;font-size:12.5px}
#crashbar small{flex-basis:100%;font-size:10.5px;opacity:.85;font-family:ui-monospace,Menlo,monospace}
/* ── 💬 LINEタブ(2026-08-05) ── */
.linetab h3{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.lineown{display:flex;align-items:center;gap:10px;background:#eef7f0;border:1px solid #c6e3cf;border-radius:8px;padding:7px 11px;margin-bottom:8px;flex-wrap:wrap}
.lineown b{font-size:13px;color:#1f7a44}
.lineown small{font-size:11.5px;color:#5c6b7a}
.lineown a{margin-left:auto;font-size:11.5px;color:#c0392b;cursor:pointer;text-decoration:underline}
.linechat{background:#7f9fc4;border-radius:10px;padding:12px;max-height:calc(100vh - 330px);overflow:auto}
.lmsg{display:flex;flex-direction:column;align-items:flex-start;margin-bottom:9px}
.lmsg.out{align-items:flex-end}
.lmsg .lbub{max-width:74%;background:#fff;border-radius:14px;padding:8px 12px;box-shadow:0 1px 3px rgba(0,0,0,.16);display:inline-block}
.lmsg.out .lbub{background:#8de055}
.lmsg .ltxt{display:block;font-size:13px;line-height:1.6;white-space:pre-wrap;word-break:break-word}
.lmsg .lbub img{max-width:230px;max-height:300px;border-radius:8px;display:block;cursor:zoom-in}
.lmsg .lbub img + .ltxt{margin-top:5px}
.lmsg small{font-size:10.5px;color:#22384f;margin-top:2px}
/* 🖼 写真の小さなプレビュー(2026-09-01 batch239 先生の逐語「公式LINEのように 写真を送ってきた時に
   小さいプレビューにまとまるのがいいです」)。
   ・写真・札だけの行(.lbare)は白い吹き出しを出さない=公式と同じ(写真がそのまま並ぶ)
   ・続けて届いた写真は横に3枚ずつ並ぶ(78px + 隙間4px ×3 = 246px) */
.lmsg .lbub.lbare{background:none;box-shadow:none;padding:0;max-width:246px;
  display:flex;flex-wrap:wrap;gap:4px;align-items:flex-start}
.lmsg.out .lbub.lbare{background:none;justify-content:flex-end}
.lmsg .lth{width:78px;height:78px;object-fit:cover;border-radius:8px;display:block;
  cursor:zoom-in;background:#dde5ee;flex:0 0 auto}
/* 🎞 実体の来ない物(動画など)の札。写真と同じ大きさ・同じ角丸で並びを崩さない */
.lmsg .lmd{width:78px;height:78px;border-radius:8px;flex:0 0 auto;background:#e6ecf3;
  color:#41566e;font-size:11.5px;display:flex;align-items:center;justify-content:center}
/* 🎬 受け取った動画(2026-09-01 batch241 先生の逐語「相手から送ってきた動画も見れるように」)。
   写真と同じ78pxの枡にサムネイル(最初の1コマ)を出し、真ん中の▶で動画と分かるようにする。
   押すと拡大の窓で再生する(常設の説明文は足さない) */
.lmsg .lvid{position:relative;display:block;width:78px;height:78px;flex:0 0 auto;cursor:pointer}
.lmsg .lvid video.lth{width:78px;height:78px;object-fit:cover;background:#20303f}
.lvplay{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:24px;height:24px;
  border-radius:12px;background:rgba(0,0,0,.5);color:#fff;font-size:10px;font-style:normal;
  line-height:24px;text-align:center;padding-left:2px;box-sizing:border-box;pointer-events:none}
/* 🖼 b274①「カルテに保存する」(2026-09-03 先生の依頼①)。
   患者から届いた写真の**右下に重ねる**小さな札。▶の札(.lvid/.lvplay)とまったく同じ作法なので、
   行は1つも増えない(省スペース)。ふだんは薄く、写真にカーソルを乗せるとはっきりする。
   ⚠️ 常設の説明文・帯は足さない(先生の明示)。保存できた合図は1.5秒の小さな知らせ(.qtoast) */
.lmsg .lpho{position:relative;display:block;width:78px;height:78px;flex:0 0 auto}
.lsavek{position:absolute;right:2px;bottom:2px;z-index:1;font-size:9px;line-height:14px;
  padding:0 4px;border-radius:7px;background:rgba(0,0,0,.55);color:#fff;cursor:pointer;
  opacity:.55;white-space:nowrap;text-decoration:none!important;user-select:none}
.lmsg .lpho:hover .lsavek{opacity:1}
.lsavek.on{background:rgba(11,122,57,.85);opacity:.95;cursor:default}
/* 📎 選んだ動画の下見(返信欄の下の帯)も写真と同じ枡にそろえる */
.lib-file video.lth{width:36px;height:36px;object-fit:cover;border-radius:6px;flex:0 0 auto;background:#20303f}
.lmsg .lbub:not(.lbare) .lmd{margin-bottom:5px}
/* 😊 b296: 受信・送信したスタンプの絵(LINEのCDNの静止画)。公式と同じく白い吹き出し無し(.lbare)で絵だけ。
   .lbub img の 8px 角丸・zoom-in は写真の作法なので、スタンプでは打ち消す(押しても何も起きない) */
.lmsg .lbub img.lstk{width:120px;height:120px;object-fit:contain;border-radius:0;cursor:default;background:none}
/* 🏷 b265: 実体の来ていない札は押すと理由が1行出る。押せると分かるように指の形にする */
.lmsg .lmdq{cursor:pointer}
/* 🚫 患者が取り消したメッセージ(2026-09-02 batch265・受け口はb240の unsent_at)。
   本文と写真は職員には残したまま(診療記録の証跡)、印を1つ足して中身を薄くする。
   ⚠️ 説明文の帯は足さない(先生の明示)。印そのものが注意喚起 */
.lunmark{display:block;width:100%;font-size:10.5px;line-height:1.35;font-weight:700;color:#c92a2a}
.lmsg.lunsent .lbub{background:#fff2f2;box-shadow:0 0 0 1px #f2c2c2}
.lmsg.out.lunsent .lbub{background:#f6dede;color:#5c2b2b}
.lmsg.lunsent .ltxt,.lmsg.lunsent .lth,.lmsg.lunsent .lmd{opacity:.5}
/* 🕒 2026-09-16 b484 先生の逐語「公式LINEのように、時刻の表示が点3個に変わるようにして欲しいです。
   (点3個も今より大きく。時刻の9:35などと同じくらいの幅で、太字で)」(b482の「薄く重ねる」から作り直し)
   ・カーソルが近づくと **時刻の文字が消えて、その場所に点3個が出る**(重ね置きではなく入れ替え)
   ・入れ替えは visibility(場所は取ったまま)+ 重ね置き(absolute inset:0)なので、
     **時刻の幅も高さも吹き出しの位置も1pxも動かない**(既読の行も動かない)
   ・点3個は時刻と同じ幅(inset:0 = 時刻の枠いっぱい)・太字・時刻より大きな字・落ち着いた灰色
   ・⚠️ 「…」の字は CSS(::after)で出す。時刻の文字(small の textContent)は「19:29」だけのまま
     =「時刻は19:29だけ」を見ている既存の検査も見え方も変わらない
   ・出すのは**こちらの送信(.out)だけ**(b484 先生の逐語「相手の送信を隠したい時がないので」) */
.lmsg small{position:relative}
.lmsg .lmtm{font-style:normal;visibility:visible}
.lmsg .lmdots{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:15px;font-weight:800;line-height:1;letter-spacing:3px;color:#8a97a5;
  opacity:0;cursor:pointer;user-select:none}
.lmsg .lmdots::after{content:'•••';margin-right:-3px}
.lmsg.out small:hover .lmtm{visibility:hidden}
.lmsg.out small:hover .lmdots{opacity:1}
/* 🚮 b486 先生の逐語「取り消した場合は、薄くそのまま内容も見えると嬉しいです。…取り消したメッセージで、
   時刻表示は、取り消してない時同様にメッセージの下縁に、時刻表示の下縁が合うようにして欲しいです。」
   (b484 の「中身の無い枠だけ」から作り直し)
   ・吹き出し = 地色なし・1pxの灰色の枠。**中身(文章・写真)はそのまま薄い灰色**で見える(公式LINEと同じ)
   ・「メッセージの送信を取り消しました」は**時刻のすぐ下**に置く(重ね置きなので時刻の枠には入らない)
     → 時刻の下縁は、取り消していない吹き出しとまったく同じように**吹き出しの下縁**にそろう
   ・患者様が公式LINEで取り消した時の「🚫 取り消されました」(.lunmark・赤)とは別の見た目(灰色) */
.lmsg.lhid .lbub,
.lib-right .lmsg.lhid .lbub:not(.lbare),
.linewin .lmsg.lhid .lbub:not(.lbare){background:none;box-shadow:0 0 0 1px #d6dbe0;animation:none}
.lmsg.lhid .ltxt,.lmsg.lhid .lai-was{color:#a9b2bb}
.lmsg.lhid .lth,.lmsg.lhid .lmd,.lmsg.lhid .lvid,.lmsg.lhid img.lstk{opacity:.32}
/* 🚮 2026-09-16 b487 先生の逐語「メッセージを取り消しました、の文は公式ラインに忠実に。
   メッセージの下部でお願いします。(時刻表示と一緒に動かすのではなく)」
   ・時刻(small)の中の重ね置きをやめ、**吹き出しの下の独立した1行**にした
   ・こちらの送信は右寄せなので、**右端が吹き出しの右端にそろう**(公式LINEと同じ)
   ・⚠️ 時刻はこの行に引きずられない=下縁は取り消していない時とまったく同じ(b486の揃えを保つ)
     (横並びの会話(.lib-right)では折り返し(flex-wrap)で2行目に落とす。
      縦並びの会話(カルテの💬LINEタブ)では、そのまま次のブロックとして下に来る) */
.lhidmark{display:block;margin-top:2px;font-size:10px;line-height:1.3;color:#a9b2bb;
  white-space:nowrap;pointer-events:none;text-align:right}
.lmsg.in .lhidmark{text-align:left}
.lib-right .lmsg.lhid{flex-wrap:wrap;row-gap:2px}
.lib-right .lmsg.lhid .lhidmark{flex:0 0 100%;margin-top:0}
/* 🚮 b484: 「…」を押して出る小さな選択。案内の1行(先生の逐語)は小さな灰色の字で、項目の下に添える */
.calctx.lib-hidectx{min-width:210px;max-width:290px}
.calctx.lib-hidectx a{white-space:normal;line-height:1.35}
.calctx.lib-hidectx a i{display:block;margin-top:2px;font-style:normal;font-size:10.5px;line-height:1.3;color:#6b7a88}
/* 🕒 b488: 持ち時間(管理者10時間・ほかの職員4時間)を過ぎた送信。項目は見えるが押せない(理由は下の1行) */
.calctx.lib-hidectx a.off{color:#9aa5b1;cursor:default}
.calctx.lib-hidectx a.off:hover{background:none}
/* ⚡ 送信中の吹き出し(batch238)。押した瞬間に薄く出し、送れたら本物に入れ替わる。
   失敗したら赤いまま残り、右下の「再送」で送り直せる(返信欄の文章も消さない) */
.lmsg.lpend .lbub{opacity:.55}
.lmsg.lpend small{color:#e8f0f8;opacity:.85}
.lmsg.lperr .lbub{background:#ffd7d7;opacity:1;box-shadow:0 0 0 1.5px #e03131}
.lmsg.lperr small{color:#fff;opacity:1}
.lmsg.lperr small a{color:#fff;text-decoration:underline;cursor:pointer}
.lsearch{width:100%;padding:7px 10px;font-size:13px;margin-bottom:10px}
.lcands{max-height:52vh;overflow:auto}
.lcand{display:flex;align-items:center;gap:12px;padding:9px 10px;border-bottom:1px solid #eef2f6}
.lcand.taken{opacity:.6}
.lcinfo{flex:1;min-width:0}
.lcinfo b{display:block;font-size:13px}
.lcinfo small{display:block;font-size:11px;color:#8a97a5}
.lcinfo .llast{display:block;font-size:11.5px;color:#5c6b7a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.ltaken{font-size:11.5px;color:#8a97a5;white-space:nowrap}
.lzoom{max-width:92vw;max-height:92vh;border-radius:8px;background:#fff}
/* 🔍 2026-09-10 b414 先生の逐語「公式LINEだと、写真の左右にある〈 、〉、のような形をクリックして
   過去送られてきた画像などをそのまま確認することができる」。拡大の窓の左右に置く送りの札。
   ふだんは薄く、カーソルを乗せるとはっきりする(.lsavek/.lvplay と同じ作法)。
   端では札そのものを出さない(画面側)。⚠️ 常設の説明文・帯は足さない(先生の明示) */
.lzarr{position:fixed;top:50%;transform:translateY(-50%);z-index:1;width:44px;height:44px;
  border-radius:22px;background:rgba(0,0,0,.45);color:#fff;font-size:20px;line-height:44px;
  text-align:center;cursor:pointer;opacity:.5;user-select:none;text-decoration:none!important}
.lzarr:hover{opacity:1}
.lzprev{left:16px}
.lznext{right:16px}
/* 🔢 b414: 何枚目かの控えめな表示(公式LINEと同じ位置=上の真ん中)。押せない・並びを崩さない */
.lzno{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:1;font-size:12px;
  line-height:20px;padding:0 9px;border-radius:10px;background:rgba(0,0,0,.45);color:#fff;
  pointer-events:none;user-select:none;white-space:nowrap}
.lineown .lcsv{margin-left:auto;color:#1e6fe0}
.lineown a + a{margin-left:12px}
/* 💬 LINE取り込みの設定 */
.lsstat{background:#f4f7fa;border:1px solid #d8e0e8;border-radius:8px;padding:10px 12px;margin-bottom:12px}
.lsstat span{display:block;font-size:13.5px;font-weight:700}
.lsstat span.on{color:#1f7a44}.lsstat span.off{color:#b3651b}
.lsstat small{display:block;font-size:11.5px;color:#5c6b7a;margin-top:4px;line-height:1.6}
.lssend{background:#f0f9f3;border:1px solid #bfe3cc;border-radius:9px;padding:10px 12px;margin-bottom:12px}
.lssend b{display:block;font-size:13px;color:#127a3d}
.lssend small{display:block;font-size:11.5px;color:#42566b;line-height:1.6;margin:4px 0 8px}
.lsmade{border:2px solid #1e6fe0;background:#eef5ff;border-radius:9px;padding:11px 13px;margin-bottom:12px}
.lsmade b{display:block;font-size:13px;color:#17509c}
.lsmade small{display:block;font-size:11.5px;color:#42566b;line-height:1.6;margin:4px 0 8px}
.lstok{display:flex;gap:8px}
.lstok input{flex:1;font-family:ui-monospace,Menlo,monospace;font-size:12.5px;padding:7px 9px;border:1px solid #9cc4f0;border-radius:6px;background:#fff}
.linesetup .note code{background:#eef3f8;border:1px solid #d8e0e8;border-radius:4px;padding:0 4px;font-size:11.5px}
/* 💬 LINEのひもづけ(一括) */
.llbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.llbar input{flex:1;min-width:170px;padding:7px 10px;font-size:13px}
.llbar label{display:flex;align-items:center;gap:5px;font-size:12px;color:#5c6b7a}
.lllist{max-height:56vh;overflow:auto}
.llrow{display:flex;align-items:center;gap:12px;padding:9px 8px;border-bottom:1px solid #eef2f6}
.llrow.done{opacity:.62}
.llinfo{flex:1;min-width:0}
.llinfo b{display:block;font-size:13.5px}
.llinfo .llren{margin-left:7px;font-size:12px;color:#1e6fe0;cursor:pointer}
.llinfo small{display:block;font-size:11px;color:#8a97a5}
.llinfo .lllast{display:block;font-size:11.5px;color:#5c6b7a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.llact{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;max-width:56%}
.lwarnbadge{font-size:11px;color:#8a5a00;background:#fff6e5;border:1px solid #f0d08a;border-radius:10px;padding:2px 7px;margin-left:6px;white-space:nowrap}
.llact .mini.warn{border-color:#e0a34a;color:#8a5a00;background:#fffaf0}
.lhint{font-size:11px;color:#1f7a44;background:#eaf6ee;border:1px solid #bfe3cc;border-radius:10px;padding:2px 7px;margin-left:6px;white-space:nowrap}
/* 📥 履歴CSVをまとめて取り込む */
.csvcols{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#f4f7fa;border:1px solid #d8e0e8;border-radius:8px;padding:8px 11px;margin:10px 0}
.csvcols b{font-size:12px;color:#42566b}
.csvcols label{display:flex;align-items:center;gap:5px;font-size:12px;color:#5c6b7a}
.csvcols select{padding:3px 6px;font-size:12px}
.csvcols small{flex-basis:100%;font-size:11px;color:#8a97a5}
.cpsum{margin:6px 0 8px;font-size:12.5px;color:#41505f;background:#f6f9fc;border:1px solid #e4eaf0;border-radius:8px;padding:8px 11px}
.cpsum .cpok{color:#127a3d}
.cpsum .cpng{color:#c2410c}
.cpsum .cppick{margin-left:10px}
.csvplan{max-height:44vh;overflow:auto;border:1px solid #e4eaf0;border-radius:8px}
.cprow{display:flex;align-items:center;gap:10px;padding:6px 9px;border-bottom:1px solid #f1f4f7;font-size:12px}
.cprow.ng{background:#fdf3ee}
.cprow b{flex:1;min-width:0;font-weight:400;color:#5c6b7a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cprow .cpname{width:130px;font-weight:700;flex-shrink:0}
.cprow .cpn{width:52px;text-align:right;color:#8a97a5;flex-shrink:0}
.cprow .cphow{width:270px;flex-shrink:0}
.okmsg{color:#1f8b4c;font-weight:700;font-size:13px}
.cprow .cppick{margin-left:8px;font-size:11.5px;color:#1e6fe0;cursor:pointer;white-space:nowrap}

/* POD(術後◯日)。**白い小札に #dd5218 の太字・影なし**で統一(2026-08-16 batch105 院長決定)。
   出す場所は ①患者トップ(生年月日・性別の右) ②予約枠のメモの文末 ③予約枠の吹き出しの先頭 ④印刷

   ⭐ 経緯: batch104で12通りを見比べていただき「9番(白い札に赤の太字・影なし)」を採用。
      さらに院長のご指示で、その赤(#c62828)を従来のオレンジ(#ff9100)へ 5分の2(40%)寄せた:
        R 198*0.6+255*0.4=220.8→221  G 40*0.6+145*0.4=82  B 40*0.6+0*0.4=24  ⇒ #dd5218
   ⭐ にじんで見えていた元(白いモヤ text-shadow)は消してある。白い札にすることで、
      枠地の色(受付済の薄橙・吹き出しの濃紺など)が何色でも輪郭が立ち、白黒印刷でも読める。 */
.pod, .podtop{ color:#dd5218; font-weight:800; text-shadow:none;
  background:#fff; border-radius:3px; padding:0 3px; white-space:nowrap; }
.apptip-memo .pod{ margin-right:6px; }
.podtop{ margin-left:10px; font-size:12.5px; }

/* LINEの窓: いつ時点までの反映かの注意書き(2026-08-10 院長要望) */
.lw-asof{margin-left:10px;background:#fff;color:#c0392b;font-size:11px;font-weight:700;border-radius:5px;padding:2px 8px;white-space:nowrap}
/* 💬 LINE CSVの週1取り込みアラート(上部バー・管理者のみ・2026-08-10)。lw-asofに倣う。
   上部バーは暗い色なので、白い小札に赤文字で読めるようにする */
.line-csv-alert{margin-right:8px;background:#fff;color:#c0392b;font-size:11px;font-weight:700;border-radius:5px;padding:2px 8px;white-space:nowrap}

/* 📋 WEB問診の受信箱(B3・2026-08-11 batch55) */
/* 上部バー「📋 WEB問診」の未紐付け件数バッジ(赤い丸札) */
.mnbadge{display:inline-block;margin-left:5px;background:#c0392b;color:#fff;font-size:10.5px;font-weight:700;
  border-radius:9px;padding:1px 6px;line-height:1.5;vertical-align:1px}
/* 回答の全文(設問→答えの2列。患者入力はReactのテキスト描画=エスケープ済みでだけ出す) */
.msdetail{max-height:60vh;overflow:auto;border:1px solid #e3e9ef;border-radius:8px;padding:4px 10px;margin-bottom:8px}
.msdrow{display:flex;gap:10px;padding:6px 2px;border-bottom:1px solid #eef2f6;font-size:12.5px}
.msdrow:last-child{border-bottom:none}
.msdrow span{flex:0 0 44%;color:#5c6b7a}
.msdrow b{flex:1;font-weight:600;white-space:pre-wrap;word-break:break-word}

/* 📝 WEB問診のカルテ内表示・流し込み印刷・設定(B4・2026-08-11 batch56) */
/* 患者トップの「📝 WEB問診 n通」(紐付いた問診があるときだけ出る) */
.pnums a.pwebmon{background:#2b6cb0;color:#fff;border-radius:4px;padding:2px 9px;cursor:pointer;font-weight:700}
.pnums a.pwebmon:hover{background:#245a94}
/* 紙の問診票への回答の流し込み(白紙のときはこのクラス自体が付かない=見た目不変) */
.ms-ans{font-style:normal;font-weight:700;color:#111;white-space:pre-wrap;word-break:break-word}
.ms-yn .ms-line .ms-ans{display:block;text-align:center;font-size:9.5px;line-height:1.35;padding:0 4px}
/* 回答の選択肢に付ける丸(紙に手で○を書くのと同じ見た目) */
.ms-mr{display:inline-block;position:relative;padding:0 1px}
.ms-mr::after{content:'';position:absolute;left:-3px;right:-3px;top:-2px;bottom:-2px;border:1.4px solid #111;border-radius:50%}
/* 管理者のWEB問診設定(URL・QR) */
.msqr-list{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin:10px 0}
.msqr-card{flex:0 1 220px;border:1px solid #dbe3ea;border-radius:10px;padding:10px 12px;text-align:center;background:#fbfcfd}
.msqr-card h4{margin:0 0 6px;font-size:14px}
.msqr-img{display:flex;justify-content:center;background:#fff;padding:4px}
.msqr-img svg{display:block}
.msqr-url{font-size:10.5px;word-break:break-all;color:#3a4a5a;margin:6px 0;user-select:all}
.msqr-card .btnrow{justify-content:center}
.msqr-card .mini.warn{border-color:#e0a34a;color:#8a5a00;background:#fffaf0}

/* 📝 カルテ内WEB問診ウインドウ(2026-08-11 batch58・院長の実運用フィードバックA)
   カウンセリングの序盤に「眺めながら話す」窓。掴んで動かせる非モーダル(DragWin)で、
   画面の上下いっぱい・スクロールなしで全項目が見渡せるよう行を詰める。 */
/* 📐 窓の高さは**中身に合わせて縮む**(2026-08-18 batch144・院長の逐語
   「行が少なくて済んで、下に余白が現れた場合は、その分詰めてください」)。
   ・height:auto = 中身のぶんだけ。行が少ない問診では窓ごと短くなり、下の空白が消える
   ・max-height = 今までの上限(画面に収まる高さ)。中身が多い時は今までどおりここで止まり、
     回答一覧(.mswin-detail)の中だけが縦スクロールする(はみ出さない)
   ⚠️ flex:1(=flex-basis:0)のままだと、高さautoの縦フレックスでは中身が潰れて0になる。
      中身の高さで自然に伸びるよう **flex:1 1 auto**(basis=auto)にしてある。ここを1に戻さないこと。
   ⚠️ 下の帯(.msw-foot)・通しのタブ(.msw-tabs)は縮ませない(flex-shrink:0)。
      上限に当たった時に縮んでよいのは回答一覧だけ=帯は必ず窓の下端に付いてくる */
/* 📐 窓の**横幅も中身に合わせて縮む**(2026-08-19 batch154・院長の逐語
   「書いてある内容が少なめな時、幅も狭くしたい」「その分いい感じで幅を狭く(4〜6文字分)」)。
   ・width:max-content = 中身がいちばん広く要る幅。何が「中身」かは見えない控え(.msw-meas)が持つ
     (回答一覧 .mswin-detail は下で幅の口出しをやめさせてある。理由はそこのコメント)
   ・min-width 639px = 今までの720pxから全角6文字ぶん(13.5px×6=81px)狭い所で止める
   ・max-width 720px = 今までの幅。中身が広い問診はここで止まるので、横に溢れない
   ・どちらも min(…, 100vw - 16px) で挟み、狭い画面でも画面からはみ出さない
   ⚠️ DragWin が付ける style="width:…px" を上書きするので !important が要る。
      幅の決定をJSではなくCSSに持たせているのは、版組の無い jsdom ではJSが幅を測れず、
      検査が「実際に描かれた幅」を数字で確かめられなくなるため */
.dwin.mswin{width:max-content !important;min-width:min(639px,calc(100vw - 16px)) !important;
  max-width:min(720px,calc(100vw - 16px)) !important;
  height:auto;max-height:calc(100vh - 54px);display:flex;flex-direction:column;background:#fff}
.mswin .dwin-bar{padding:5px 11px}
.mswin-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;background:#fff;padding:3px 9px 5px;overflow:hidden}
.mswin-body .empty{padding:20px 10px}
.mswin .msw-tabs{margin:2px 0 3px;flex:0 0 auto}
.mswin-body>.msw-foot,.mswin-body>p{flex:0 0 auto}
/* 回答の全文(1設問=1行)。max-heightは持たせず、窓の高さいっぱいを使う。
   ⚠️ width:0 + min-width:100%(2026-08-19 batch154)は「幅は窓いっぱいに使うが、
      **窓の幅を決める投票権は持たない**」という指定。
      回答一覧に投票権を残すと「幅が決まる→左右2列の対が決まる→2列の行が幅を押し広げる→
      また対が決まる…」の堂々巡りになる。幅を決めるのは対の組み方に左右されない控え(.msw-meas)だけ */
.mswin-detail{flex:1 1 auto;min-height:0;max-height:none;overflow:auto;border:0;border-radius:0;padding:0;margin:0;
  width:0;min-width:100%}
/* 1行の作り: 見出し(自然な幅・折り返さない)+ 回答。回答は見出しから全角2文字ぶんあけて左に詰め、
   2行目も同じ列から始まる(=ぶら下げ揃え。flexの右の列がそのまま回答の列になる) */
/* 行の高さは「全部が1画面に入る」範囲でいちばん読みやすい所に置く(実測は
   test/WEB問診ウインドウの見た目の検査.mjs が画面高1024pxでも余白を報告する) */
.mswrow{display:flex;align-items:baseline;padding:3px 8px;border-bottom:1px solid #f1f4f7;
  font-size:13.5px;line-height:1.5}
/* いちばん下の行だけ罫線を消す(左右2列に畳んだ .msw2 が最後に来る場合も同じ) */
.mswin-detail>.mswrow:last-child,.mswin-detail>.msw2:last-child>.mswrow{border-bottom:none}
.mswrow>span{flex:0 0 auto;color:#5c6b7a;white-space:nowrap}
.mswrow>b{flex:1 1 auto;min-width:0;margin-left:2em;font-weight:700;color:#111;
  white-space:pre-wrap;word-break:break-word}
/* 📐 回答の開始位置をそろえる(2026-08-18 batch140 → 2026-08-20 batch162 で 9.5em → 11.5em)
   「いいえ・無回答**以外**の行」だけ、見出しの欄に**下限**を持たせて、
   その幅に収まる見出しなら回答がどの行でも同じ列から始まるようにする。
   ⭐ 2026-08-20 batch162(院長の逐語「はい、全幅の行にも同じ字下げを適用お願いします」):
      下限を **11.5em(全角11文字＋半角1文字)** に広げた。batch161で左右2列の左の枡だけ11.5emに
      していたため、全幅の行(「ご予算の目安」の『〜50万円』・「塗り薬の使用」のベピオ/ルリコン等)
      だけ字下げが揃わない、という院長の指摘に応えるもの。
      → 記載ありの行は**全幅でも2列の左の枡でも同じ11.5em**。右の枡だけ今までの9.5emのまま(下)。
   ⚠️ **絶対に折り返さない**(batch139は9em固定で2行に折り返し、院長に却下された。
      「スクロールせずに一目で見る」が狙いなので、行が縦に伸びるのがいちばん困る)。
      下限を超える見出し(「内服薬(ピル/サプリ含む)」の丸括弧を半角にした batch163 以降は
      ちょうど11.5emに収まるが、これより長い見出しを足した時)は欄がそのまま伸び、
      **見出しの文字が終わったすぐ後ろに回答が出る**(そろえを諦めて省スペースを採る=院長の明示指示)。
      折り返し禁止は .mswrow>span の white-space:nowrap をそのまま引き継ぐ。
   半文字だけ空けるのは「…のご病気喘息(吸入薬)」と見出しと回答がくっついて1語に読めるのを防ぐため
   (box-sizing:border-box なので padding も内側)。高さは1文字も増えない。
   ⚠️ 「いいえ」「(未回答)」の行(.no)は院長の明示で対象外。従来どおり右端に寄せる */
.mswrow.yes>span,.mswrow.filled>span,.mswrow.msw-refl>span{flex:0 0 auto;min-width:11.5em;padding-right:.5em}
.mswrow.yes>b,.mswrow.filled>b,.mswrow.msw-refl>b{margin-left:0}
/* 📐 色が付く行の**色の幅**(2026-08-19 batch161・院長の逐語)
   「真ん中で分けられてない1行に色が入る時も、ど真ん中までの色しか入らないように。
    長文で2行目などにも差し掛かる場合は全幅で色が入る。
    ど真ん中を超える文章で1行以上にならない場合は、その文章終わりまでの色付けで」
   ・width:max-content = 中身(見出し+回答)がちょうど終わる所まで
   ・min-width:50%     = 中身が短くても**ど真ん中まで**は必ず色が伸びる
     (50%は回答一覧の内幅の半分 = 左右2列 .msw2 の仕切りとぴったり同じ位置)
   ・max-width:100%    = 中身がど真ん中を大きく超えて折り返す長文は、そこで頭打ち=**全幅**
   ⚠️ 「いいえ」「(未回答)」の行には付けない(院長の明示「これらは『はい』の内容のみ」)。
      どの行に付くかは main.tsx の msWinCell が決める(色が決まった行=.yes か .msw-c-◯◯ だけ)
   ⚠️ 左右2列(.msw2)に詰まった行は**枡の子**なのでこの指定に当たらない=今までどおり枡いっぱい
   ⚠️ 折り返しは今までと同じ。max-content が 100% に収まる行は1行のまま(新しく折り返さない) */
.mswin-detail>.mswrow.msw-fit{width:max-content;min-width:50%;max-width:100%}
/* 「はい」の設問は箱全体をかなり薄い黄色に(院長指示A-3) */
.mswrow.yes{background:#fffbe0;border-bottom-color:#f4edcb;border-radius:4px}
/* 🎨 本日の相談内容の系統に応じた行の色(2026-08-19 batch159・院長の逐語)
   鼻=薄い青 / 目=薄いピンク / くま=薄いオレンジ / 脂肪吸引=濃い黄色 / 複合(2系統以上)=薄紫 /
   内服薬にピル・おたばこあり=紫 / 手術の希望時期が最短・今月=薄緑。
   どの行にどの色が付くかは main.tsx の mswRowHue が決める(語彙は見積書の件名判定と同じ表)。
   ⚠️ 「はい」の薄い黄色(.mswrow.yes)の**すぐ後ろ**に置いてある(同じ強さなら後ろ勝ち)ので、
      色が決まった行は薄い黄色と二重にならず、必ずこちらの色に**置き換わる**。
   ⚠️ 色は枡(.mswrow)そのものに敷く。左右2列(.msw2)に詰まった行では**その枡だけ**が色になる。
   ⚠️ 文字は今までどおり黒(#111)。どの色も文字が読める濃さに留める
      (「濃い黄色」だけは院長の指示どおりはっきりした黄色にしてある)。
   ⚠️ 凡例・説明文は画面に出さない(院長の指示)。印刷では回答一覧ごと畳まれるので色も出ない */
.mswrow.msw-c-nose{background:#e1effd;border-bottom-color:#c7e0f7;border-radius:4px}
.mswrow.msw-c-eye{background:#fde7f0;border-bottom-color:#f5cfe0;border-radius:4px}
.mswrow.msw-c-kuma{background:#ffecd8;border-bottom-color:#f6dabd;border-radius:4px}
.mswrow.msw-c-lipo{background:#ffe45c;border-bottom-color:#f0d334;border-radius:4px}
.mswrow.msw-c-multi{background:#efe4fb;border-bottom-color:#dbcaf3;border-radius:4px}
.mswrow.msw-c-purple{background:#dcc6f7;border-bottom-color:#c7abec;border-radius:4px}
.mswrow.msw-c-green{background:#dff5e1;border-bottom-color:#c3e8c8;border-radius:4px}
/* 「いいえ」「(未回答)」は行の右端に薄い文字で(同上) */
.mswrow.no>b{flex:0 0 auto;margin-left:auto;text-align:right;font-weight:400;color:#a9b3bd}
/* 🔴 回答の**文字だけ**を赤地に白文字(2026-08-20 batch162・院長の逐語
   「部分モニターの希望無しの場合、無の字だけ、赤背景に白文字」)。
   ・付くかどうかは main.tsx の monshinWinRows が決める(r.ng。今は部分モニターの「無」だけ)
   ・⚠️ **行の背景は塗らない**(院長の明示「行全体ではなく『無』の字だけ」)。
     この行は「いいえ」の区域なので、そもそも行の色分け(.mswrow.yes / .msw-c-◯◯)の対象外
   ・.mswrow.no>b の薄い灰色(#a9b3bd)より内側なので、文字色は白が勝つ
   ・行の高さは増やさない(縦の padding を持たせない・line-height は行のまま) */
.mswrow>b>.msw-ng{background:#c62828;color:#fff;font-weight:700;border-radius:3px;padding:0 4px}
/* 氏名/生年月日・住所は太字にしない(2026-08-18 batch139/batch140・院長の逐語) */
.mswrow.msw-name>b,.mswrow.msw-addr>b{font-weight:400}
/* 🧵 「過去/現在治療中のご病気・ケガ/病気での手術歴・塗り薬の使用」が3つとも「いいえ」の時に
   畳んだ1行(batch139)。見出しが長いが**折り返さない**(batch140)。
   窓を思い切り狭くした時だけ、行を増やさずに末尾を…で切る
   (「いいえ」は右端に1つだけ=.mswrow.no>b の指定のまま) */
.mswrow.msw-nomerge>span{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
/* 🪟 左右2列に詰めた1行(2026-08-18 batch143 → batch144で「ど真ん中」に固定)
   ⭐ 院長の逐語(2026-08-18 batch144)「私の指示に忠実に。仕切りはど真ん中のみにしてください」
   ・**grid の 1fr 1fr で左右をきっちり等分する**。中身の長さに関係なく仕切りは常に窓のど真ん中
     (batch143は flex で中身なりの幅だったため、仕切りが真ん中からずれていた)
   ・どの2つを組むかは main.tsx が**実測**(.msw-meas の自然な幅)で決める。
     「左右**それぞれ**が (回答一覧の内幅 - column-gap) ÷ 2 に収まる」相手だけを組む
     (直後の相手が入らなければ、その次・そのまた次を試す=先生の逐語「次の相手を探す」)
   ・minmax(0,1fr)+overflow:hidden は念のための安全網。判定で収まるものしか組まないので
     普段は効かないが、万一のときも**行を増やさず**(折り返さず)窓からはみ出さない
   ・枡の中の作法は今までのまま。記載ありは見出しが薄く回答が太字、いいえ・無回答は
     その枡の**右端**に薄く寄る(.mswrow.filled / .mswrow.no の指定がそのまま効く)
   ⚠️ 行の高さは1行のまま。row-gap は付けない(縦に伸ばさない) */
/* 仕切りの線は、枡の枠線ではなく**行のど真ん中(50%)に引いた1pxの背景**にする。
   枡の border-left にすると線が「隙間の右端」に来て中心から7pxずれるため(batch144で直した) */
.msw2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:14px;overflow:hidden;
  background:linear-gradient(#eef2f6,#eef2f6) 50% 0/1px 100% no-repeat}
.msw2>.mswrow{min-width:0;overflow:hidden}
/* 📐 2列に分かれた行の**左の枡だけ**、見出しの欄を全角11文字+半角1文字(=11.5em)にする
   (2026-08-19 batch161・院長の逐語「ど真ん中で区切られているときの左の列は
    全角11文字分プラス半角一文字分あけてから、回答が記載されているように」)。
   ⚠️ 「はい・記載あり」の枡だけ(院長の明示「これらは『はい』の内容のみ」)。
      「いいえ」「(未回答)」の枡は従来どおり(右端に薄く寄る)。
   ⚠️ 右の枡は変えない(指示は「左の列は」)。
   ⚠️ 行は増やさない。入りきらない時は今までどおり枡の中で末尾が…で切れるだけ
      (.msw2>.mswrow>b の overflow:hidden がそのまま効く) */
.msw2>.mswrow:first-child.yes>span,.msw2>.mswrow:first-child.filled>span{min-width:11.5em}
/* 📐 右の枡は今までどおり全角9文字+半角1文字(2026-08-20 batch162)。
   上の .mswrow.filled>span を 11.5em に広げた(全幅の行にも同じ字下げ=院長の逐語)ので、
   「右の枡は変えない」を守るため、ここで右の枡だけ 9.5em に戻す。
   ⚠️ :last-child は左右2列の**右側**(.msw2 の子はいつも2つ)。指定の強さは上の一般則より強い */
.msw2>.mswrow:last-child.yes>span,.msw2>.mswrow:last-child.filled>span{min-width:9.5em}
/* 枡の中では回答も折り返さない(1行の高さを守る安全網。判定で収まる組しか作らないので普段は効かない) */
.msw2>.mswrow>b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 📏 幅を測るためだけの控え(見えない・高さ0)。自然な幅のまま描いて実測する。
   高さ0+overflow:hidden なので、窓の行数にも縦スクロールにも一切効かない */
.msw-meas{height:0;overflow:hidden;visibility:hidden;flex:0 0 0}
.msw-meas>.mswrow{width:max-content;max-width:none;border-bottom:0}
.msw-meas>.mswrow>b{white-space:nowrap}
/* 最上段=受付職員のチェック(2026-08-11 batch59・院長指示B-3)。患者のフォームには出さない項目。
   1行に2つ並べる(窓の行数を増やさない)。付けた人と日付をその場に小さく残す */
.msw-chk{gap:14px;align-items:center;background:#f7fafc;border-bottom-color:#e3eaf1;border-radius:4px}
.msw-chk label{display:inline-flex;align-items:center;gap:5px;color:#5c6b7a;cursor:pointer;user-select:none;
  white-space:nowrap;flex:0 0 auto}
.msw-chk label.on{color:#1a6b3c;font-weight:700}
.msw-chk input{width:15px;height:15px;margin:0;accent-color:#1a6b3c;cursor:pointer}
.msw-chk small{color:#8a97a4;font-weight:400;font-size:11px}
/* ⬜︎Dr確認済み(2026-08-12 batch61)。医師が押すものと分かるよう、受付の2つと色と区切りで分ける。
   これが付くまで、患者トップを開くたびにこの窓が自動で出る(右端の案内文で伝える) */
.msw-chk label.dr{color:#1d4ed8;border-left:1px solid #dbe3ec;padding-left:14px}
.msw-chk label.dr input{accent-color:#1d4ed8}
.msw-chk label.dr.on{color:#1d4ed8}
.msw-chk label.dr.on small{color:#1d4ed8}
/* 案内文は右端に1行で。窓が狭いときは、チェック本体を押しのけずに自分が縮む(…で切る) */
.msw-chk-hint{margin-left:auto;color:#a9b3bd;font-size:11px;white-space:nowrap;
  flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
/* 🤝 紹介元患者の候補(2026-08-13 batch75)。自動では紐付けず、職員が確かめて押す */
.msw-ref>b{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-weight:400}
.msw-ref .mini{font-weight:600}
.msw-ref .mini small{margin-left:4px;font-weight:400;color:#5c6b7a}
.msw-ref-hint{color:#8a97a4;font-size:11px}
.msw-ref-ok{color:#1f7a3d;font-weight:700}
/* 📮 基本情報(住所・電話・来院動機)への反映(2026-08-15 batch92)。
   食い違い(.ng)は機械が黙って書き換えず、職員が中身を見て「反映する」を押した時だけ入る */
.msw-refl{background:#eef6ff;border-bottom-color:#d7e6f7;border-radius:4px}
.msw-refl>b{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-weight:400}
.msw-refl .mini{font-weight:600;white-space:nowrap}
.msw-refl-hint{color:#5c6b7a;font-size:11px;flex:1 1 auto;min-width:0}
.msw-refl.ng{background:#fff4f4;border-bottom-color:#f7dcdc}
.msw-refl.ng>span{color:#a3382f;font-weight:700}
.msw-foot{margin-top:5px;align-items:center;flex-wrap:wrap}
/* 下の帯の左側(ひもづけ / 台帳へ転記済み)は**2行**(2026-08-19 batch154・院長の逐語)。
   行送りを詰めてあるので、2行でも右のボタンの背丈をほとんど超えず、帯は1段のまま */
.msw-meta{margin-right:auto;color:#8a97a4;font-size:11px;display:flex;flex-direction:column;line-height:1.25}
/* 紙の様式(PrevWin)は、この窓(DragWin=とても手前)よりさらに手前に出す */
.fprev.operec.mstop{z-index:2100}
@media print{
  /* 紙を刷るときは、窓の枠と回答一覧が用紙を切らないように畳む */
  /* 紙に刷る時は画面の高さの上限を外す(batch144でmax-heightを持たせたので、ここでも解除する) */
  /* 紙に刷る時は横幅の決め方(batch154の width:max-content と上下限)も外し、用紙なりに戻す */
  body.pprint .dwin.mswin{height:auto !important;max-height:none !important;overflow:visible !important;
    width:auto !important;min-width:0 !important;max-width:none !important}
  body.pprint .mswin-body{display:block !important;padding:0 !important;overflow:visible !important}
  body.pprint .mswin-detail,body.pprint .msw-foot,body.pprint .msw-tabs{display:none !important}
}

/* ════════ 🗂 裏書きの入力欄 UraForm(2026-08-13 batch72 / B2) ════════
   設計: raw/memo-2026-08-13-裏書き構造化-設計案.md ②
   上の区画(手術日・施術院・担当dr・術式) ─ 全幅の横線 ─ 下の区画(アレルギー…ph)。
   ⚠️ 既存のクラスは変えず、.uraform* だけを足している(この段落を消せば元に戻る) */
/* 🗂 裏書きの記入欄の幅(2026-08-30 b222 先生の逐語「裏書の記入欄が無駄に横幅が長いので、
   今の半分くらいで良さそうです。右の方の診療情報一覧あたりと、裏書ウインドウの間に
   スペースを設けてもらって大丈夫です」)。
   ・b217で右の柱(.edside)を撤去した結果、記入欄が1000px超まで伸びていた → **660px**で止める
   ・止めるのは max-width なので、右の 🩺診療情報一覧(.kcol-side)との間に**すき間**ができる
   ・⚠️ 変えるのは**裏書き(uraedit)だけ**。診療録・看護記録・カウンセリングは
     今までどおり var(--edmax,680px)(上の .edmain.editor)のまま
   ・⚠️ b216の「狭い幅では窓が縮んで、それでも入らなければ折り返す」は max-width では止まらない
     (上限を下げるだけなので、狭い画面ではこれ以下にちゃんと縮む)

   ⚠️⚠️ **660px より狭くしてはいけない**(実測で確かめた下限。数字を下げると先生の過去の指示に戻る):
     ・640px以下 … GW・EF・ph の欄が90pxを割る = batch73の先生の指示
       「GW、EF、phなどが枠が小さすぎです」に逆戻りする
     ・540px(=b217の半分)… 手術日のボタンが170→134px・担当drが112→84pxに潰れ、
       見出しが欄の上へ落ちて**行が増える**(裏書きの縦が367px→434px)。先生の「省スペース・
       行を増やさない」に反する。半分にしたいなら欄の並べ方から作り直す必要がある */
.edmain.editor.uraedit{max-width:660px}
/* 🪟 先生の言う「裏書ウインドウ」= 記入欄を囲む黄色い箱そのもの。ここも同じだけ絞らないと
   箱だけが右端まで伸びて、診療情報一覧との間にすき間ができない。
   ・新しい裏書き = .card.ked.k-kakutei / 保存済みの裏書きを直すとき = .ent.editing
   ・:has() で**欄形式の裏書きを抱えている箱だけ**に効かせる。旧い1枚テキストの裏書きは
     右の柱(.edside)が残るので今までどおり広いまま(この行は当たらない) */
.kcol-main .card.ked.k-kakutei:has(.edmain.editor.uraedit),
.kcol-main .ent.editing:has(.edmain.editor.uraedit){max-width:700px}
/* ⚠️ 2026-08-13 batch73(先生の指示11「縦長でスクロールしないと下が見えない」):
   欄の高さ・余白・ラベル幅をひとまわり詰め、横に2〜4欄ずつ並べて**1画面に収める**。
   数字を戻すと縦長に戻るので、詰めた値は動かさないこと。 */
.uraform{border:1px solid #ccd4dc;border-top:none;border-radius:0 0 8px 8px;background:#fff;padding:6px 10px 8px}
.uraform>.uraform-top,.uraform>.uraform-bot{display:flex;flex-direction:column;gap:4px}
.uraform label.uraform-r,.uraform .uraform-r{display:flex;align-items:flex-start;gap:6px;margin:0;min-width:0}
/* 横に並べる区画(手術日｜施術院 / 担当dr｜区分 / アレルギー｜内服｜既往歴 / 次回予約｜GW｜EF｜ph) */
.uraform .uraform-2{display:flex;align-items:flex-start;gap:12px;min-width:0}
/* ⚠️ flex-basis は「0%」。単位なしの「0」は flex 一括指定では無効になり取り分が効かなくなる */
.uraform .uraform-2>.uraform-r{flex:1 1 0%;min-width:0}
.uraform .uraform-l{flex:0 0 auto;max-width:118px;font-size:11.5px;font-weight:700;color:#4a5a6a;padding-top:4px;
  text-align:right;white-space:nowrap}
.uraform>.uraform-bot>.uraform-r>.uraform-l,.uraform>.uraform-top>.uraform-ops>.uraform-l{flex:0 0 118px}
/* 上の横並び(手術日/担当dr と 施術院/区分)だけ見出しの幅をそろえて縦にきれいに並べる */
.uraform>.uraform-top>.uraform-2>.uraform-r>.uraform-l{flex:0 0 74px}
/* ⚠️ 下の横並び(アレルギー｜内服｜既往歴 / 次回予約｜GW｜EF｜ph)は見出しに幅を取らせない。
   固定幅にすると狭いカルテ画面で入力欄がつぶれ、GW・EF・ph が1文字も見えなくなる
   (2026-08-13 先生の追修正「GW、EF、phなどが枠が小さすぎです」)。 */
.uraform>.uraform-bot>.uraform-2{gap:10px}
.uraform>.uraform-bot>.uraform-2>.uraform-r>.uraform-l{flex:0 0 auto;padding-left:2px}
.uraform>.uraform-bot>.uraform-2 .uraform-i{min-width:72px}
.uraform .uraform-i{flex:1;min-width:0;padding:2px 6px;border:1px solid #cfd8e0;border-radius:5px;font-size:12.5px;
  line-height:1.6;color:#1e2b3a;background:#fff;font-family:inherit}
.uraform .uraform-i:focus{outline:none;border-color:#7fabe0;box-shadow:0 0 0 2px rgba(127,171,224,.18)}
.uraform .uraform-ta{line-height:1.45;resize:vertical}
/* 🌱 b278(2026-09-04 先生の逐語)「『例：〜』と最初から書かれている文字…はもっと薄い文字にしてほしい」
   = ただの例文(placeholder)は**今より薄く**。下書き(.seedv / .prov)は逆に濃くするので、
   「サマリーから入った値」と「ただの例文」が見分けられる(Chrome既定の darkgray より薄い) */
.uraform .uraform-i::placeholder{color:#c6ced6}
/* 🌱 b278 下書きの欄(サマリー・予約・見積書から仮に入った値。職員が打てば外れる = .seedv)
   先生の逐語「反映された窓はものすごく薄い(銀色)(ほぼ白)で覆われていて2秒に一回くらい
   波が走るようにキラリと鈍く輝く」「反映された文字はもっと濃くしてほしい」
   ・覆い = 欄の地をほぼ白の銀色(#f2f4f7)にする。文字の上に何も重ねない(文字は濃いまま読める)
   ・波   = 白い帯(background-image)を**CSSだけ**で左→右へ流す。2秒に1回、0.9秒で走って残りは休む
            (予約枠の qreqSweep と同じ作り方。JSのタイマーは使わない)
   ・鈍く = 帯は白〜薄い銀の2段だけ。明滅(点滅)はさせず、枠線・大きさ・並びは変えない
   ・文字 = 人が打った文字(#1e2b3a)より少し薄い程度(#55677a)。「下書きと分かるが、はっきり読める」
   ✋ b420(2026-09-11 先生の逐語「確定見積書から反映された内容は銀色にきらりと光る状態になっていると
      思いますが、きらりと光るのは無しでお願いします。」): **動く光(波)だけ**をやめた。
      覆い(ほぼ白の銀色 #f2f4f7)と文字の濃さ(#55677a)は今までどおり残す = 下書きかどうかは変わらず分かる */
.uraform .uraform-i.seedv{color:#55677a;background:#f2f4f7}
/* 🗓 手術日: 空のときは枠を黄色く光らせて「未入力」と出す(書き忘れに気づけるように) */
.uraform .uraform-dt{position:relative;display:flex;align-items:center;gap:6px;flex:1;min-width:0}
.uraform .uraform-dbtn{padding:2px 10px;border:1px solid #cfd8e0;border-radius:5px;background:#fff;font-size:12.5px;
  line-height:1.6;font-weight:700;color:#1e2b3a;cursor:pointer;min-width:170px;text-align:left}
.uraform .uraform-dbtn:hover{border-color:#7fabe0}
.uraform .uraform-dbtn.warn{background:#fffbe6;border-color:#e6c34a;color:#8a6d10;font-weight:400;
  box-shadow:0 0 0 2px rgba(230,195,74,.28)}
/* 📅 b420(先生の逐語「『押してカレンダー、、、』のところは薄く『日程入力(カレンダーマーク)』で」):
   日付がまだ空のときの文字は**薄く**出す(押すとミニカレンダーが開くのは今までどおり) */
.uraform .uraform-dph{color:#c2bda0;font-weight:400}
/* ␣ b420(先生の逐語「『手術以外の裏書』では、『本日』『通常価格』などの行の上には
   文字一文字分の余白の行が欲しいです。」): 文字1つぶんの高さ(1em)の空きの行 */
.uraform .uraform-gap1{height:1em;flex:0 0 1em}
.uraform .uraform-mi{color:#a8801a;font-size:11px;font-weight:700}
.uraform .uraform-x{cursor:pointer;color:#9aa7b4;font-size:12px;padding:0 4px}
.uraform .uraform-x:hover{color:#c0392b}
/* 🪟 施術院・担当dr・区分 = 「小さな窓ひとつ」+ 候補(先生の指示7・8・9)
   ⭐ ホバー(:hover)でもクリック(.open)でも候補が開く。ホバーだけだとタッチ操作で選べないため */
/* 「小さな窓」= 幅を伸ばしきらない(先生の指示7「小さな窓ひとつ」)。担当drだけ「×」で2名入るので少し広い */
.uraform .urasel{position:relative;flex:0 0 auto;display:flex;align-items:center;gap:5px;min-width:0}
.uraform .urasel-i{flex:0 0 175px;width:175px;min-width:0;cursor:pointer}
/* 🧑‍⚕️ 担当dr = 最初から空欄2つ(コラボ施術で2名。2026-08-28 b214 先生の逐語)。
   2つ合わせて今までの1欄(230px)と同じ幅に収めるので**行は増えない**(省スペース) */
.uraform .uradrs{flex:0 0 auto;display:flex;align-items:center;gap:6px;min-width:0}
.uraform .urasel[data-k^="drs"] .urasel-i{flex:0 0 112px;width:112px}
/* 仮の表示は薄い文字(先生の指示7・10)。b278: 「反映された文字はもっと濃くしてほしい」で
   #a5b1bc → #55677a(人が打った文字 #1e2b3a より少し薄い程度。例文 #c6ced6 よりはっきり濃い) */
.uraform .urasel-i.prov{color:#55677a}
.uraform .urasel-mi{color:#a5b1bc;font-size:10.5px;white-space:nowrap}
/* ⛔ 必須(2026-08-27 b207)。「推奨」が居た場所にそのまま出すので**行は増えない**。
   空のまま「保存して完了」「手術確定し会計入力に進む」を押した時だけ出て、埋めると消える */
.uraform .urasel-req{color:#d0021b;font-weight:700;font-size:10.5px;white-space:nowrap}
.uraform .urasel-i.reqng{border-color:#d0021b;background:#fff6f6}
.uraform .urasel-pop{display:none;position:absolute;left:0;top:100%;z-index:62;margin-top:2px;padding:3px;
  flex-direction:column;gap:1px;min-width:130px;background:#fff;border:1px solid #c4ced8;border-radius:6px;
  box-shadow:0 8px 22px rgba(20,35,55,.22)}
.uraform .urasel:hover .urasel-pop,.uraform .urasel.open .urasel-pop{display:flex}
.uraform .urasel-c{display:block;padding:3px 10px;border-radius:4px;font-size:12.5px;color:#28405b;
  cursor:pointer;white-space:nowrap}
.uraform .urasel-c:hover{background:#eef3f8}
.uraform .urasel-c.on{background:#1e6fe0;color:#fff;font-weight:700}
/* 術式(既定4行・＋で足せる・入力中は候補が出る) */
.uraform .uraform-ops{display:flex;align-items:flex-start;gap:6px}
.uraform .uraform-oplist{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.uraform .uraform-oprow{position:relative;display:flex}
.uraform .uraform-sugg{position:absolute;left:8px;top:100%;z-index:60;max-width:340px;margin:2px 0 0;
  box-shadow:0 6px 20px rgba(0,0,0,.18)}
.uraform .uraform-add{align-self:flex-start;font-size:11.5px;color:#1e6fe0;cursor:pointer;padding:0}
.uraform .uraform-add:hover{text-decoration:underline}
/* 上下を分ける全幅の横線(裏書きの黄色系) */
.uraform .uraform-hr,.uraform hr.uraform-hr{border:none;border-top:2px solid #ecdfa8;margin:6px -10px 6px}
/* 当日Nsへの注意点は**欄まるごと赤**(先生の指示。鏡のHTMLでも #e06666 の太字で残る) */
.uraform .uraform-red .uraform-l{color:#e06666}
.uraform .uraform-red .uraform-i{color:#e06666;border-color:#eec0c0;background:#fffafa;font-weight:700}
.uraform .uraform-red .uraform-i::placeholder{color:#e6a8a8;font-weight:400}

/* ════ 🪟 窓の幅が狭いときに欄が重ならないようにする(2026-08-28 b216) ════
   先生の逐語「ブラウザのウインドウの幅を短くすると、記入欄が重なったりしてかなり惑わされる」。

   ⚠️ 重なっていた理由: 横並びの欄(.uraform-2>.uraform-r)に min-width:0 が付いていたため、
      欄の**箱**は中身より小さく潰れる一方、中の窓(施術院175px・担当dr112px×2・手術日ボタン170px)は
      幅が固定で縮まない。潰れた箱から中身が右へはみ出し、隣の欄の上に乗っていた。

   直し方は2段構え。**幅の数字で分岐(メディアクエリ)はしない**ので、
   ブラウザだけでなくカルテの窓・分割幅が狭いときも同じ理屈で効く:
     ① まず窓が縮む(行は増えない = 省スペース)。読める下限(施術院96px・担当dr70px)で止まる
     ② それでも入らなければ横並びを**折り返す**(縦に積む)
   ⚠️ 広い画面では①も②も発動しない(取り分・基準幅は今までと同じ数字)ので、
      パソコンの見た目・行の高さ・担当dr2欄(b214)は1pxも変わらない。 */
.uraform .uraform-2{flex-wrap:wrap;row-gap:4px}
.uraform>.uraform-bot>.uraform-2{row-gap:4px}
/* ⚠️ 潰れる下限を「中身の幅」に戻す(min-width:auto)。折り返す/折り返さないの分かれ目もこれで決まる */
.uraform .uraform-2>.uraform-r{min-width:auto}
.uraform .uraform-dt{min-width:auto}
/* ⚠️ 窓の入れ物は flex:0 0 auto(縮まない)だった。狭いと入れ物ごと外へはみ出すので縮めるようにする。
   ⭐ 「普段の幅」は**入れ物(.urasel)の flex-basis**に移す。中の入力欄の width は縮みの下限に使う。
      こうしないと、ブラウザが width(175/112px)を「この欄に最低限必要な幅」と数えてしまい、
      狭いときに折り返しても欄が枠の外へはみ出す(2026-08-28 b216 実測で確認)。
   ・.uradrs(担当drの2欄の入れ物)は中の窓が伸びないので、入れ物が伸びても見た目は今までと同じ。
     基準を「縮んだときの幅(146px=70+6+70)」にしておくと、少し狭いくらいでは行を増やさず窓が縮む */
.uraform .uradrs{flex:1 1 146px;min-width:auto}
.uraform .urasel{flex:0 1 175px;min-width:auto}
.uraform .urasel[data-k^="drs"]{flex:0 1 112px}
/* それでも1行に入らないときは、見出しの下へ欄を落とす(重ねない) */
.uraform label.uraform-r,.uraform .uraform-r{flex-wrap:wrap;row-gap:2px}
/* 🪟「小さな窓」は狭いとき先に縮む。
   ⚠️ **flex-basis が普段の幅・width が縮みの下限**という書き分けにしている(見た目は flex-basis が勝つ
      ので広い画面では今までどおり 175px / 112px)。width を 175px のまま残すと、ブラウザは
      「この欄は最低175px要る」と数えてしまい、狭いときに折り返しても欄が外へはみ出す(実測で確認)。 */
.uraform .urasel-i{flex:1 1 96px;width:96px;min-width:96px}
.uraform .urasel[data-k^="drs"] .urasel-i{flex:1 1 70px;width:70px;min-width:70px}
/* ⛔ 赤い「必須」(b207)が出ている間だけは、この書き分けをやめて b216 以前の指定に戻す。
   窓の幅(175/112px)を保ったまま右に「必須」が並ぶ = 必須が出たときの見た目も1pxも変えない */
.uraform .urasel:has(.urasel-req){flex:0 1 auto}
.uraform .urasel:has(.urasel-req) .urasel-i{flex:0 0 175px;width:175px}
.uraform .urasel[data-k^="drs"]:has(.urasel-req) .urasel-i{flex:0 0 112px;width:112px}
/* ⚠️ 下の段(アレルギー｜内服｜既往歴 / 次回予約｜GW｜EF｜ph)の入力欄にも width を書く。
   <input> は width を書かないと「20文字ぶん(約177px)は要る」と数えられ、
   まだ余裕がある幅でも折り返してしまう(見た目の幅は flex:1 の取り分で決まるので変わらない) */
.uraform>.uraform-bot>.uraform-2 .uraform-i{width:72px}
/* 術式・注意点・備考は見出しが118px固定。狭いときは見出しの下へ欄を落として、
   欄が糸のように細くならないようにする(数字はどこで落とすかの目安ではなく「欄の最低幅」) */
.uraform .uraform-ops{flex-wrap:wrap}
.uraform .uraform-oplist,.uraform .uraform-ta{min-width:170px}
.uraform .uraform-mi{white-space:nowrap}
/* 🗓 手術日のボタンも同じ書き分け(普段は今までどおり170px・下限110px)。
   文字は折り返さず「…」で切る(2行にして行を増やさない) */
.uraform .uraform-dbtn{flex:0 1 170px;width:110px;min-width:110px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ════ 🗂💉 b415(2026-09-10 先生の逐語): 裏書きの種別と「手術以外の裏書」の簡易フォーム ════
   ・種別は「🗓 手術日」の**上**に1行。既定は手術。押すとその場で簡易フォームに変わる
   ・⛔ 説明文・案内の帯は足さない(先生の明示)。行を増やさず、既存の欄の見た目は1pxも変えない */
.uraform .urakind{gap:14px;align-items:center}
.uraform .urakind-c{font-size:12.5px;color:#5c6b7a;cursor:pointer;white-space:nowrap;user-select:none}
.uraform .urakind-c:hover{color:#1660c0}
.uraform .urakind-c.on{color:#1e2b3a;font-weight:700}
/* 📅 日付の窓の**左**の「本日」(手術以外の裏書きだけ) */
.uraform .uraform-today{flex:0 0 auto;padding:2px 9px;border:1px solid #cfd8e0;border-radius:5px;
  background:#f4f8fd;font-size:12.5px;line-height:1.6;font-weight:700;color:#1660c0;cursor:pointer}
.uraform .uraform-today:hover{background:#e6f0fc;border-color:#7fabe0}
/* 💴 区分は「通常価格」で固定(選び直せない) */
.uraform .uraform-i.urafix{flex:0 1 175px;width:96px;min-width:96px;background:#f2f4f7;color:#1e2b3a;
  font-weight:700;cursor:default}
/* 💉 施術のボタンの並び(押すとその施術の行が現れる)。折り返して並ぶ・行の高さは詰める */
.uraform .uraform-etcbtns{display:flex;flex-wrap:wrap;gap:3px 4px;margin-bottom:2px}
.uraform .uraform-etcb{padding:1px 8px;border:1px solid #d3e2f7;border-radius:5px;background:#eef4fd;
  font-size:12px;color:#2a3b4d;cursor:pointer;white-space:nowrap}
.uraform .uraform-etcb:hover{background:#dbe9fb;border-color:#7fabe0}
/* 💉 現れる行: [施術名の見出し][銘柄][部位][本数]本 [✕] */
.uraform .uraform-etcrow{align-items:center;gap:4px;justify-content:flex-start}
.uraform .uraform-etcl{flex:0 0 auto;font-size:12px;color:#2a3b4d;white-space:nowrap}
.uraform .uraform-i.uraform-etcb1{flex:0 1 108px;width:70px;min-width:70px}
/* 部位は「涙袋」「ほうれい線」が読める幅で止める(伸ばしきると本数の窓が遠くへ離れて読みにくい) */
.uraform .uraform-i.uraform-etcb2{flex:0 1 190px;width:80px;min-width:80px}
.uraform .uraform-i.uraform-etcb3{flex:0 0 44px;width:44px;min-width:44px;text-align:right}
.uraform .uraform-etcu{flex:0 0 auto;font-size:12px;color:#5c6b7a}
/* ⛔ b415: ヒアルロン酸なのに本数か銘柄が空 → 押された時だけ赤枠(必須3欄の .reqng と同じ見た目) */
.uraform .uraform-i.reqng{border-color:#d0021b;background:#fff6f6}

/* ════ 🗓 b417(2026-09-10 先生の逐語): 手術以外の裏書きの上の1行 ════
   「施術日、施術院、担当dr、区分の窓は1行としてください。」
   「施術日の窓は幅を短くできるならある程度お願いします。」
   「施術院窓は文字三文字分くらいの幅に短くしてください。」「『区分』の窓は四文字分だけで大丈夫です。」
   「(施術日/施術院/担当dr/区分の)文字は撤去でお願いします。撤去した分施術日の文字の3分の２だけ上に詰めてください。」
   ⚠️ 当たるのは .uraform-etchead(手術以外の裏書きだけに付く)の中だけ。**手術の裏書きは1pxも変えない** */
/* 撤去した見出しのぶん、施術日の文字(11.5px)の3分の2 = 7.7px だけ上へ詰める */
.uraform .uraform-2.uraform-etchead{margin-top:-7.7px;gap:6px;flex-wrap:nowrap;align-items:center}
.uraform .uraform-etchead>.uraform-r{flex:0 0 auto}
/* 施術日: 窓の文字は「2026-09-10」の10文字。ある程度短く(96px)して残りを右の3つに渡す */
.uraform .uraform-etchead .uraform-dbtn{flex:0 0 96px;width:96px;min-width:96px;padding:2px 6px}
.uraform .uraform-etchead .uraform-dt{gap:4px}
/* 施術院 = 3文字分 / 区分 = 4文字分(文字は12.5px。左右の余白6+6と枠1+1を足す) */
.uraform .uraform-etchead .urasel[data-k="clinic"]{flex:0 0 auto}
.uraform .uraform-etchead .urasel[data-k="clinic"] .urasel-i{flex:0 0 52px;width:52px;min-width:52px}
.uraform .uraform-etchead .uraform-i.urafix{flex:0 0 64px;width:64px;min-width:64px;padding:2px 6px}
/* 担当dr = 窓ひとつ(2つ目は出さない) */
.uraform .uraform-etchead .uradrs{flex:0 0 auto}
/* ⛔ 赤い「必須」が出ている間も、この1行の幅は変えない(b216 の :has の指定を打ち消す=行が増えない) */
.uraform .uraform-etchead .urasel[data-k="clinic"]:has(.urasel-req) .urasel-i{flex:0 0 52px;width:52px}
.uraform .uraform-etchead .urasel[data-k^="drs"]:has(.urasel-req) .urasel-i{flex:0 0 112px;width:112px}
/* 📍 b417 部位の窓(候補が出る + 自由入力)。中の窓の幅は b415 のまま(.uraform-etcb2) */
.uraform .urasel.uraform-etcpw{flex:0 1 auto}

/* 🔎 施術名でのヒット(裏書きの術式から・2026-08-13 batch79)
   検索窓に施術名が入ったとき、患者一覧の上に「その施術の裏書きがある患者」を出す箱 */
.ophits{background:#fff;border:1px solid #d5deeb;border-radius:8px;padding:10px 12px;margin-bottom:12px}
.ophits-h{font-weight:700;color:#2a3b4d;font-size:13.5px}
.ophits-note{color:#8a6d1a;background:#fdf6df;border:1px solid #f0e3b2;border-radius:6px;
  padding:4px 8px;font-size:12px;margin:5px 0 7px}
.ophits-r{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;padding:5px 0;border-top:1px dashed #e3e9f2}
.ophits-nm{display:inline-flex;flex-direction:column;color:#1660c0;text-decoration:none;min-width:130px}
.ophits-nm:hover .pt-name{text-decoration:underline}
.ophits-pno{color:#5c6b7a}
.ophits-ops{display:flex;flex-wrap:wrap;gap:4px 8px}
.ophits-op{background:#eef4fd;border:1px solid #d3e2f7;border-radius:5px;padding:1px 7px;
  font-size:12.5px;color:#2a3b4d;white-space:nowrap}
.ophits-op small{color:#5c6b7a;margin-left:3px}

/* ═══════ 📗 医師の手術記録集(2026-08-16 batch89・第1段階A) ═══════
   設計: raw/memo-2026-08-16-医師の記録集-設計案.md ③
   ・部屋(医師)→タブ→表。セルはクリックしたところだけ <input> に差し替わる
   ・⭐ 閉じるは左上(先生の恒久的な好み)。既存のクラスには一切触れず .drs-* だけで完結させる */
.drs-page{display:flex;flex-direction:column;gap:8px}
.drs-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.drs-head h3{margin:0;font-size:16px;color:#2a3b4d}
.drs-back{background:#eef2f7;border:1px solid #cfd9e6;border-radius:6px;color:#2a3b4d;
  font-size:13px;padding:4px 12px;cursor:pointer}
.drs-back:hover{background:#e2e9f3}
.drs-sub{color:#5c6b7a;font-size:12px}
.drs-ok{color:#1a7f37;font-size:12.5px;font-weight:700}
/* 部屋(医師ごと)。「過去データ」も同じ見た目で並ぶ */
.drs-rooms{display:flex;gap:6px;flex-wrap:wrap}
.drs-rooms button{background:#fff;border:1px solid #cfd9e6;border-radius:16px;color:#2a3b4d;
  font-size:13px;padding:4px 14px;cursor:pointer}
.drs-rooms button.on{background:#1e6fe0;border-color:#1e6fe0;color:#fff;font-weight:700}
/* タブ(1つの部屋に何本でも) */
.drs-tabs{display:flex;gap:4px;flex-wrap:wrap;align-items:center;
  border-bottom:2px solid #d5deeb;padding-bottom:0}
.drs-tabs button{background:#f4f7fb;border:1px solid #d5deeb;border-bottom:none;
  border-radius:6px 6px 0 0;color:#2a3b4d;font-size:12.5px;padding:5px 14px;cursor:pointer;
  position:relative;top:2px}
.drs-tabs button.on{background:#fff;color:#1660c0;font-weight:700;border-color:#a9c4e8}
.drs-tabs .drs-addtab{background:transparent;border:1px dashed #c3cfdd;color:#5c6b7a}
/* 🗂 タブを掴んで並び替え(2026-08-17 batch126)。掴んだタブは薄く、落ちる場所に青い線(行の入れ替えと同じ流儀) */
.drs-tabs button.drs-tmv{opacity:.45}
.drs-tabs button.drs-tmvl{box-shadow:-3px 0 0 0 #1e6fe0}
.drs-tabs button.drs-tmvr{box-shadow:3px 0 0 0 #1e6fe0}
.drs-taben{font-size:12.5px;padding:4px 8px;border:1px solid #1e6fe0;border-radius:5px;
  width:140px;position:relative;top:2px}
.drs-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.drs-cnt{color:#2a3b4d;font-size:12.5px;font-weight:700}
.drs-hint{color:#5c6b7a;font-size:11.5px}
/* 表の外枠。ここがスクロールする箱(行の窓表示はこの箱のスクロール位置で決まる) */
/* 表そのものの幅にぴったり合わせる(右側に使わない白い帯を作らない)。
   列が多いときは max-width で止まり、この箱の中だけが横スクロールする */
.drs-wrap{position:relative;overflow:auto;max-height:calc(100vh - 230px);
  width:fit-content;max-width:100%;
  border:1px solid #d5deeb;border-radius:8px;background:#fff}
/* ⭐ table-layout:fixed は「表そのものに幅がある時だけ」効く(2026-08-16 batch119)。
   幅は main.tsx が列幅の合計を style で渡す。ここでは「中身に押し広げられない」ことを念押しする
   (これが無いと、氏名に長い日本語が入った実データで 140px 指定の列が 240px で描かれ、
    列の境目を掴んで引いても描画幅が1pxも変わらなかった) */
.drs-tbl{border-collapse:collapse;table-layout:fixed;font-size:12.5px;min-width:0;max-width:none}
.drs-tbl th,.drs-tbl td{border:1px solid #e3e9f2;padding:0 6px;vertical-align:middle;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drs-tbl thead th{position:sticky;top:0;z-index:3;background:#eef2f7;color:#2a3b4d;
  font-weight:700;height:30px;text-align:left}
.drs-th{position:relative}
/* 見出しは「押すと並べ替え」。つまみ(左右9px)に文字がかからないよう、左右の余白を少し広げる */
.drs-tbl th.drs-th{padding:0 11px}
/* 見出しの文字は掴んで左右に引ける(2026-09-13 b449)。引いている間に文字が選択されないようにする
   (⚠️ 列名の入力欄(.drs-colen)は別物なので、こちらには掛けない=名前の書き換えは今までどおり) */
.drs-collbl{cursor:pointer;user-select:none;-webkit-user-select:none}
.drs-collbl:hover{text-decoration:underline dotted}
.drs-sortmk{color:#1660c0;font-size:9px;margin-left:3px;vertical-align:middle}
.drs-colen{width:calc(100% - 10px);font-size:12.5px;padding:1px 4px;border:1px solid #1e6fe0;border-radius:4px}
/* ⭐ 列の幅を変えるつまみ(2026-08-16 batch118)
   以前は right:-3px だったため、th の overflow:hidden で外側3pxが切り落とされ、
   実測で**掴めるのは境目の内側4pxだけ**(境目そのものを狙うと外れる)だった。
   いまは「この列の右端の内側9px」と「次の列の左端の内側9px」の2枚で境目を挟み、
   はみ出しを使わないので切られない = 境目の左右どちらからでも掴める(合計18px) */
.drs-cgrip{position:absolute;top:0;right:0;width:9px;height:100%;cursor:col-resize;z-index:4;
  touch-action:none}
.drs-cgrip-l{right:auto;left:0}
.drs-cgrip:hover{background:#1e6fe0;opacity:.35}
/* 行番号の列(左に固定)。掴んで上下に引くと行の順番を入れ替えられる */
.drs-tbl .drs-no{position:sticky;left:0;z-index:2;background:#f7f9fc;color:#5c6b7a;
  text-align:right;font-size:11.5px}
.drs-tbl tbody td.drs-no{cursor:grab;user-select:none;-webkit-user-select:none}
.drs-tbl tbody td.drs-no:hover{background:#e7effa;color:#1660c0}
.drs-tbl thead .drs-no{z-index:5}
/* 行の下端を掴むつまみ(高さの変更)。こちらも はみ出しを使わず、セルの内側7pxに収める */
.drs-rgrip{position:absolute;left:0;bottom:0;width:100%;height:7px;cursor:row-resize;z-index:3;
  touch-action:none}
.drs-rgrip-t{bottom:auto;top:0;height:5px}
.drs-rgrip:hover{background:#1e6fe0;opacity:.35}
.drs-r{position:relative}
/* 🖐 行を引いている最中(2026-08-16 batch118)。動かす行は薄く、落ちる場所は青い線で示す */
.drs-r.drs-mv > td{opacity:.45}
.drs-r.drs-dropu > td{box-shadow:inset 0 3px 0 0 #1e6fe0}
.drs-r.drs-dropd > td{box-shadow:inset 0 -3px 0 0 #1e6fe0}
.drs-r.drs-dropu.drs-dropd > td{box-shadow:inset 0 3px 0 0 #1e6fe0,inset 0 -3px 0 0 #1e6fe0}
/* 🖐 列を引いている最中(2026-09-13 b449)。行の入れ替えと同じ見せ方にそろえる:
   動かす列は薄く、落ちる場所は青い線(縦1本)。見出しもセルも同じ印が付く */
.drs-tbl th.drs-cmv,.drs-tbl td.drs-cmv{opacity:.45}
.drs-tbl th.drs-cdropl,.drs-tbl td.drs-cdropl{box-shadow:inset 3px 0 0 0 #1e6fe0}
.drs-tbl th.drs-cdropr,.drs-tbl td.drs-cdropr{box-shadow:inset -3px 0 0 0 #1e6fe0}
.drs-r:hover .drs-c{background:#fbfdff}
/* 表そのものがキー操作を受け取る(2026-08-16 batch116)。既定の太い枠は出さず、細い色枠で示す */
.drs-wrap:focus{outline:none;border-color:#1e6fe0}
/* 押したまま引いて範囲を選ぶとき、ブラウザの文字選択が邪魔をしないようにする */
.drs-c{cursor:cell;user-select:none;-webkit-user-select:none}
.drs-c.drs-on{padding:0;background:#fff}
/* 🎨 まとめて書式を当てるために選んでいるセル(2026-08-16 batch91)。
   セルの塗り色は inline style で入るので、選択の印は**枠線だけ**にして色を隠さない */
.drs-c.drs-sel{box-shadow:inset 0 0 0 2px #1e6fe0}
/* クリックしたセルだけ入力欄になる(contentEditableは使わない) */
.drs-in{width:100%;height:100%;box-sizing:border-box;border:2px solid #1e6fe0;border-radius:0;
  font-size:12.5px;padding:0 4px;outline:none;background:#fff}
/* ✏️ 書いている間だけ、入力欄が列より広くても切られないようにする(2026-08-16 batch119)。
   列を狭めた時、ふだんは「…」で省略して見せるが、押して書く時は中身が全部見えないと困る。
   エクセルと同じく、書いている欄だけが右へはみ出して手前に出る */
.drs-tbl td.drs-c.drs-on{overflow:visible;position:relative;z-index:6}
.drs-c.drs-on .drs-in{position:absolute;left:0;top:0;height:100%;min-width:100%}
/* 👆 iPad(指)で掴む・長押しでメニュー(2026-09-13 b450)
   ・スクロールは今までどおり指にまかせたいので touch-action は既定のまま(横取りしない)。
     掴んだ後だけ main.tsx が touchmove の既定を止める
   ・長押しで iOS の「文字を選ぶ」虫めがねや吹き出しが割り込まないようにする
     (文字の選択止め user-select:none は .drs-no / .drs-c / .drs-collbl に既に掛かっている)
   ・幅・高さのつまみ(.drs-cgrip / .drs-rgrip)は上で touch-action:none 済み
     = 指で掴んだ時にスクロールと取り合わない */
.drs-tbl tbody td.drs-no,.drs-tbl th.drs-th,.drs-c,.drs-tabs button{-webkit-touch-callout:none}
/* 窓表示の上下の詰めもの(高さだけを持つ空の行。ここには何も描かない) */
.drs-pad td{border:none;padding:0}
.drs-empty{color:#5c6b7a;font-size:12.5px;padding:14px}
/* 🎨 セルの書式バー(2026-08-16 batch91)。診療録のリッチ入力(.rtb)と同じ操作感になるよう
   ボタンは .rtb-b をそのまま使い、色見本だけ .drs-sw を足す */
.drs-fmt{display:flex;gap:5px;align-items:center;flex-wrap:wrap;
  background:#f2f5f8;border:1px solid #dfe6ec;border-radius:8px;padding:5px 8px}
.drs-fmt-lbl{color:#2a3b4d;font-size:12px;font-weight:700}
.drs-fmt-t{color:#5c6b7a;font-size:11.5px}
.drs-fmt-g{display:flex;gap:4px;align-items:center}
.drs-sw{width:20px;height:20px;border-radius:4px;border:1px solid #b6c2d0;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;font-size:11px;color:#5c6b7a;line-height:1}
.drs-sw:hover{border-color:#1e6fe0}
.drs-sw.on{box-shadow:0 0 0 2px #1e6fe0;border-color:#1e6fe0}
.drs-sw-x{background:#fff}

/* 🖱 右クリックのメニュー(2026-08-16 batch121)。Googleスプレッドシートの見た目に寄せる。
   ⚠️ 高さの計算(main.tsx の DRS_MENU_ITEM=30 / DRS_MENU_SEP=7 / DRS_MENU_PADY=6)と
      必ず同じ値にする。ずれると「画面の外にはみ出さない」計算が狂う */
.drs-menu{position:fixed;z-index:3000;background:#fff;border:1px solid #d5deeb;border-radius:8px;
  box-shadow:0 6px 24px rgba(20,40,70,.18);padding:6px 0;font-size:13px;color:#2a3b4d;user-select:none;
  box-sizing:border-box;overflow-y:auto}
.drs-mi{display:flex;align-items:center;justify-content:space-between;gap:12px;
  height:30px;padding:0 14px;cursor:pointer;box-sizing:border-box;white-space:nowrap;overflow:hidden}
.drs-mi:hover{background:#eef4fd}
.drs-mi i{color:#8794a3;font-style:normal;font-size:11.5px}
.drs-mi-x{color:#c00000}
.drs-mi-x:hover{background:#fdeeee}
.drs-msep{height:1px;border:0;background:#e3e9f2;margin:3px 0}
/* 選んでいる行番号・列見出しを目立たせる(2026-08-16 batch121。どこを選んでいるかが一目で分かる) */
.drs-tbl tbody td.drs-no.drs-nosel{background:#dbe8fb;color:#1660c0;font-weight:700}
.drs-tbl thead th.drs-th.drs-thsel{background:#dbe8fb;color:#1660c0}

/* ⭐ 全切開患者の自動追記とオペ記録ボタン(2026-08-17 batch125) */
/* 📌 仕切り行のうっすらした目印(行番号の左端。主張しすぎない) */
.drs-pin{margin-left:2px;font-size:10px;opacity:.8;pointer-events:none}
/* 📄 オペ記録セルのボタン風の札。未リンク=青っぽく / リンク済み=緑っぽく */
.drs-oprec{display:inline-block;padding:1px 9px;border:1px solid #c9d6e8;border-radius:11px;
  background:#f2f7ff;color:#1660c0;font-size:12px;line-height:1.6;cursor:pointer;
  user-select:none;-webkit-user-select:none;white-space:nowrap}
.drs-oprec:hover{background:#e3eefc;border-color:#1e6fe0}
.drs-oprec.on{background:#eaf6ec;border-color:#bcd9c2;color:#1a7f37}
.drs-oprec.on:hover{background:#ddf0e1;border-color:#1a7f37}
/* 📝 下書き(一時記録)まで進んでいる札(2026-08-27 batch210)。保存済み(緑)とは色で見分ける。
   ⚠️ 説明文は足さない。絵文字(📝)と色だけ */
.drs-oprec.on.draft{background:#fff6e2;border-color:#e6cf94;color:#8a6100}
.drs-oprec.on.draft:hover{background:#ffefcd;border-color:#c79a1e}
/* 📛 氏名の列の文字リンク(2026-08-26 batch198)。押すとその患者のカルテ(画像タブ)へ。
   下線とカーソルでリンクだと分かる。セルの余白は今までどおり編集のクリック */
.drs-pname{color:#1660c0;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.drs-pname:hover{color:#1e6fe0}
/* 📌 仕切りの設定の小さな窓 */
.modal.drs-aset{max-width:520px}
.drs-aset-head{justify-content:flex-start;gap:10px}
.drs-aset-rows{display:flex;flex-direction:column;gap:8px;margin:10px 0 6px}
.drs-aset-rows label{display:flex;align-items:center;gap:10px;font-size:13px;color:#2a3b4d}
.drs-aset-rows label span{width:130px;flex:none;color:#5c6b7a}
.drs-aset-rows select,.drs-aset-rows input{flex:1;font-size:13px;padding:5px 8px;
  border:1px solid #c9d6e8;border-radius:6px;box-sizing:border-box;min-width:0}
/* ⭐ 術式のカテゴリ選択(batch127)。目の手術/鼻整形/自由な言葉 の三択 */
.drs-acat{display:flex;flex-direction:column;gap:6px;margin:10px 0 4px;
  padding:10px 12px;background:#f6f9fc;border:1px solid #dbe5f0;border-radius:8px}
.drs-acat-t{font-size:12px;color:#5c6b7a}
.drs-acat-o{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:#2a3b4d;cursor:pointer}
.drs-acat-o input{margin-top:2px;flex:none}
.drs-acat-kw{font-size:13px;padding:5px 8px;border:1px solid #c9d6e8;border-radius:6px;
  box-sizing:border-box;margin-left:24px}
/* 📄 オペ記録の窓 */
.modal.drs-oprw{max-width:900px;width:min(900px,94vw);display:flex;flex-direction:column;
  max-height:min(880px,92vh)}
.drs-oprw-head{justify-content:flex-start;gap:10px}
.drs-oprw-body{overflow:auto;min-height:0}
.drs-opsec{margin:8px 0 5px;color:#5c6b7a;font-size:12.5px;font-weight:600}
.drs-opgrid{display:flex;flex-wrap:wrap;gap:10px}
.drs-opthumb{display:flex;flex-direction:column;gap:3px;width:152px;cursor:pointer;
  border:1px solid #d5deeb;border-radius:8px;padding:6px;background:#fff;box-sizing:border-box}
.drs-opthumb:hover{border-color:#1e6fe0;background:#f4f9ff}
.drs-opthumb img{width:100%;height:102px;object-fit:cover;border-radius:5px;background:#eef1f5;display:block}
.drs-opthumb small{font-size:11px;color:#42505f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* リンク済みの画像を大きく見る(既存の ZoomPanImg=.zpwrap をそのまま入れる) */
.drs-oprw-img{height:min(560px,58vh);min-height:260px}
.drs-oprw-img .zpwrap{height:100%}
/* リンク済みの記事の本文 */
.drs-oprw-text{white-space:pre-wrap;background:#fbfcfe;border:1px solid #e3e9f2;border-radius:8px;
  padding:12px;font-size:13.5px;line-height:1.75;max-height:min(560px,58vh);overflow:auto}
/* オペ記事を書く欄 */
.drs-oprw-ta{width:100%;min-height:280px;font-size:13.5px;line-height:1.75;padding:10px;
  border:1px solid #c9d6e8;border-radius:8px;box-sizing:border-box;resize:vertical}

/* 📥 エクセルの取り込み(2026-08-16 batch90・第1段階B)。下見の一覧だけの小さな窓 */
.modal.drsimp{max-width:940px}
/* ⭐ ✕は左上(先生の恒久的な好み)。見出しは✕のすぐ右に置き、右側は空けておく */
.drsimp-head{justify-content:flex-start;gap:10px}
.drsimp-sum{font-size:13px;color:#2a3b4d;margin:10px 0 6px}
.drsimp-wrap{max-height:46vh;overflow:auto;border:1px solid #e3e9f2;border-radius:6px}
.drsimp-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.drsimp-tbl th,.drsimp-tbl td{border-bottom:1px solid #eef2f7;padding:5px 8px;text-align:left;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
.drsimp-tbl thead th{position:sticky;top:0;background:#eef2f7;color:#2a3b4d;font-weight:700;z-index:1}
.drsimp-tbl .drsimp-n{text-align:right;font-variant-numeric:tabular-nums}
.drsimp-why{color:#5c6b7a}
.drsimp-tbl tr.drsimp-off{background:#fafbfd;color:#8b96a3}
.drsimp-tbl select{font-size:12px;padding:2px 4px;border:1px solid #cfd9e6;border-radius:5px;background:#fff}

/* ══ 💠 見積もり依頼の伝達(2026-08-24 batch185) ══ */
/* 患者トップ: 氏名の右の水色の楕円チップ(作成送付/送付/無し) */
.qreq-chips{display:inline-flex;gap:6px;margin-left:10px;vertical-align:2px}
.qreq-chip{background:#e2f4fc;border:1px solid #7fcbe9;color:#0f7cab;border-radius:999px;padding:2px 12px;font-size:12px;font-weight:700;white-space:nowrap;cursor:pointer}
.qreq-chip:hover{background:#cdecf9}
.qreq-chip.qnone{background:#f1f4f6;border-color:#c3ccd3;color:#5a6771}
.qreq-chip.qnone:hover{background:#e5eaee}
/* 患者トップ上部右: 完了ボタン(依頼中だけ出る) */
.qreq-donebtn{display:inline-block;background:#5fc3ea;border:1px solid #37a8d6;color:#fff;border-radius:999px;padding:2px 12px;font-size:12px;font-weight:700;white-space:nowrap;cursor:pointer;text-decoration:none}
.qreq-donebtn:hover{background:#43b4e2}
/* 予約枠: メモ先頭の依頼文(白背景・赤太字) */
.qreq-ask{position:relative;z-index:3;background:#fff;color:#c11f1f;font-weight:800;font-size:10.5px;line-height:1.3;border-radius:3px;padding:0 3px;margin:1px 0;width:fit-content;max-width:100%}
/* 依頼中の枠の分身(2026-08-24 batch185b → b185d固定 → b185e出し入れ):
   position:sticky で「列名の帯のすぐ下」に貼り付いたまま動かない(JSでは動かさない=ゆらゆらしない)。
   出すのは**本物の枠の上端が帯より上に切れ始めた時だけ**(.on を IntersectionObserver が付け外し。
   パッと出る/消えるのみ・transitionは付けない)。45分以上の枠は30分ぶんの高さ。
   ドラッグ不可・患者名で患者トップへ・他は予約枠の窓。stickyは列(.cal-body)の中に閉じる */
.cal-appt.qreq-ghost{display:none;position:sticky;top:calc(var(--chtop,96px) + 36px);left:auto;right:auto;margin:0 2px;z-index:55;cursor:pointer;box-shadow:0 3px 10px rgba(20,60,90,.4)}
.cal-appt.qreq-ghost.on{display:block}
/* 依頼中の枠の上端の見張り(1px)。IntersectionObserverが「上に切れ始めたか」をこれで正確に見る */
.qreq-eye{position:absolute;top:0;left:0;right:0;height:1px;pointer-events:none}
/* ══ batch189 ══ */
/* 患者トップ: 2行のコンパクトなボタン(見積作成送付依頼/見積送付のみ依頼/医師が見積作成送付) */
.qreq-chip.two{border-radius:9px;padding:1px 8px;font-size:11px;line-height:1.2;text-align:center}
/* ライトブルー(見積もり作成送付)の枠だけ、鉛筆(✎)の当たり判定を小さく */
.cal-appt.qreq-lb .ca-edit{font-size:9px;margin-right:2px;opacity:.8}
/* 予約枠の右クリックメニュー(診療メモ / 見積送付完了) */
/* 🖱 右クリックの小窓。b249まで 70/71 で、上部の黒いバー(.mnav=80)より下だった
   (ボードの上の方で右クリックするとメニューがバーに潜った)→ 小窓の層(3000番台)へ */
.calctx-bg{position:fixed;inset:0;z-index:3000}
.calctx{position:fixed;z-index:3001;background:#fff;border:1px solid #c6d0da;border-radius:8px;box-shadow:0 6px 18px rgba(20,40,60,.25);padding:4px;min-width:150px}
.calctx a{display:block;padding:6px 10px;border-radius:6px;font-size:13px;color:#1c2b3a;cursor:pointer;white-space:nowrap}
.calctx a:hover{background:#eaf3fa}
/* batch197: 受付状態の行(縦に詰める・左に状態色の小さな四角・現在の状態に✓) */
.calctx-hr{height:1px;background:#dde5ec;margin:4px 2px}
/* 🩷 2026-09-17 b499 先生の逐語「縦に並べて二つウインドウを出してもらえると嬉しいです」。
   予約枠の右クリックの小窓を、少し太い区切り線で上下2区画に分ける(下の区画=「◯◯さんの仮枠を作る」)。
   見出しや説明の文は置かない(省スペース=先生の好み)。1行ぶんしか増えない */
.calctx-hr.b499{height:2px;background:#cfdae4;margin:5px 2px}
/* 🖱 b280: LINE(一括)の一覧の行の右クリック。いま人が決めている院の行だけ薄く塗る(✓も付く) */
.calctx.lib-rowctx a.on{background:#f2f7fb;font-weight:700}
.calctx a.calctx-st{display:flex;align-items:center;gap:7px;padding:3px 10px;font-size:12.5px;line-height:1.25}
.calctx a.calctx-st i,.stpick>i{width:10px;height:10px;border-radius:2px;flex:none;border:1px solid rgba(0,0,0,.18)}
/* 🎨 b435: 予約枠の窓の「受付状態」(StatusPick)。開いた小窓は上の .calctx をそのまま使う。
   閉じている時は今までの選択欄(input,select の決まり)と同じ枠・余白・字の大きさ。色の四角は上と同じ物。
   .kb = ↑↓ で指している行(マウスを乗せた時と同じ色) */
.calctx a.kb{background:#eaf3fa}
.stpick{display:inline-flex;align-items:center;gap:7px;border:1px solid #c8d3de;border-radius:8px;padding:8px 10px;font-size:13.5px;line-height:18px;font-family:inherit;background:#fff;color:#1c2b3a;text-align:left;cursor:pointer;max-width:100%}
.stpick:hover{background:#fff}
.stpick-v{display:grid;min-width:0}
.stpick-v>span{grid-area:1/1;white-space:nowrap;visibility:hidden;overflow:hidden;text-overflow:ellipsis}
.stpick-v>span.on{visibility:visible}
.stpick::after{content:'';flex:none;width:6px;height:6px;margin:-4px 3px 0 4px;border:solid #3a4652;border-width:0 1.8px 1.8px 0;transform:rotate(45deg)}
.calctx a.calctx-st b.ck{margin-left:auto;color:#1379a8}
.calctx a.calctx-st.on{background:#f2f7fb}
/* batch200: LINE直結(botId)の登録窓 */
.modal.linebiz{width:560px;max-width:94vw}
.modal.linebiz .frow input{flex:1;min-width:0}
/* b200d: 「◯◯をコピーしました」の小さな一時表示(1.5秒で消える) */
.qtoast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:rgba(28,43,58,.92);color:#fff;padding:6px 14px;border-radius:8px;font-size:12.5px;z-index:3200;pointer-events:none}
/* 診療メモの窓(中くらい): 左=メモ欄 右=定型文 */
.modal.smemo{width:640px;max-width:94vw}
.smemo-row{display:flex;gap:10px}
.smemo-row textarea{flex:3;min-width:0;resize:vertical}
.smemo-row .amtpl{flex:2;min-width:0}
.cal-grid.multi .cal-appt.qreq-ghost{top:calc(var(--chtop,96px) + 50px)}
/* 予約枠: キラキラ(淡い明滅+細い光の帯。派手すぎず気づける程度) */
.cal-appt.qreq-shine{animation:qreqGlow 2.2s ease-in-out infinite}
.cal-appt.qreq-shine::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 32%,rgba(255,255,255,.55) 46%,transparent 60%);background-size:230% 100%;animation:qreqSweep 2.6s linear infinite}
@keyframes qreqGlow{0%,100%{box-shadow:0 0 3px 1px rgba(140,215,255,.5)}50%{box-shadow:0 0 8px 3px rgba(170,230,255,.9)}}
@keyframes qreqSweep{0%{background-position:130% 0}100%{background-position:-90% 0}}

/* 🔴 未完バッジ(2026-08-25 batch190 / 2026-08-26 b190c)。上部バー「📗記録集」の左隣・
   赤背景に白の数字だけ。ホバーで未完の羅列(.ndmenuと同じ白い小窓)。
   ⚠️ b190c: バッジは**黒バーの高さいっぱい(44px)**にして、窓を top:44px = **隙間なく**下に付ける
      (⚙設定の .ndrop/.ndmenu と同じ作り)。隙間があるとそこでカーソルが外れて窓が消えていた。
      開閉はJSが持つ(離れてから220msは閉じない)ので :hover の表示切り替えは置かない */
.mikan{position:relative;display:flex;align-items:center;height:44px;padding:0 6px}
.mikan-n{display:inline-block;background:#c0392b;color:#fff;font-size:11.5px;font-weight:800;
  border-radius:9px;padding:1px 8px;line-height:1.6;cursor:default}
.mikan-pop{position:absolute;right:0;top:44px;background:#fff;border:1px solid #cfd8e0;
  border-radius:0 0 8px 8px;box-shadow:0 8px 24px rgba(20,35,55,.25);z-index:60;min-width:230px;
  max-height:60vh;overflow:auto;padding:4px 0}
/* 1行 = 左が本文(押すと患者トップへ)・右端が✓(押すとその行を消す) */
.mikan-row{display:flex;align-items:center}
.mikan-row:hover{background:#eef4fa}
.mnav .mikan-pop a{flex:1;display:block;color:#333 !important;padding:7px 6px 7px 14px;
  line-height:1.4;font-size:12.5px;white-space:nowrap}
/* ⚠️ 上部バーの .mnav a:hover は**暗い色**。白い窓の中で当たると行が黒くつぶれるので打ち消す
   (行の色づけは .mikan-row:hover が受け持つ) */
.mnav .mikan-pop a:hover{background:transparent}
.mikan-ok{flex:0 0 auto;color:#2e7d32;font-size:14px;font-weight:800;cursor:pointer;
  padding:6px 12px 6px 6px;line-height:1.2}
.mikan-ok:hover{color:#fff;background:#2e7d32;border-radius:6px}
/* 🎨 未完バッジの3分割(2026-08-30 b222 先生の逐語「『見積書』と『処置』と『手術記録』を
   色分けで設置するようにお願いします。(今まで見積書と、手術記録は合算されていましたが、分けて。)
   見積書は黄色、手術記録はピンクとオレンジの中間、などがいいかもです」)。
   ・見積書 = 黄色(#f2c200・数字は濃い茶。白文字だと黄色の上で読めない)
   ・手術記録 = サーモン(#f2795f = ピンクと橙の中間・先生の挙げた色そのまま)
   ・処置 = 緑(.shal-n)のまま / 写真来院 = 橙(.phal-n)のまま
   ⚠️ 窓(.mikan-pop)・行・✓の作りは b190c のまま**1つ**を共用する(作りを増やさない) */
.mikan.mk-quote .mikan-n{background:#f2c200;color:#3d2f00}
.mikan.mk-oprec .mikan-n{background:#f2795f;color:#fff}
.mikan .mikan-n{white-space:nowrap}
/* 🧪 2026-09-08 b363 先生の指示: 検査データ(採血・培養)の医師承認フローと未完バッジ・6日前の期限・看護師の確認・裏書きに承認の札
   ・バッジ = 紫(黄=見積・サーモン=手術記録・緑=処置・橙=写真来院 と区別できる色)。窓・行は未完バッジの流儀を借りる
   ・行の印 = 赤い「期限」((b)手術6日前を過ぎた) / 緑の「Dr済」((c)ドクターチェック済み・看護師の確認待ち)。説明文は置かない
   ・札(.labtag) = 裏書きの「培養・採血」・段取り表の「◯培養・採血検査」・プレビュー窓のバーに出す小さな札(赤=未承認 / 緑=承認済み) */
.mikan.mk-lab .mikan-n{background:#6c3fb5;color:#fff}
.labdue,.labdr{font-style:normal;font-size:10.5px;font-weight:800;margin-left:6px;padding:0 5px;border-radius:7px;line-height:1.5;vertical-align:1px}
.labdue{background:#c0392b;color:#fff}
.labdr{background:#1b7a4b;color:#fff}
/* 🧪 2026-09-10 b400 先生の逐語「『裏書きが有効でない可能性があります』と目立つように赤で注意喚起文を出して欲しいです。」
   ・出す所 = 🧪の一覧のその行 と チェックの窓の帯。**行は増やさない**(同じ行に赤い文字を足すだけ・帯や囲みは作らない) */
.labwarn{font-style:normal;font-size:11px;font-weight:800;color:#c0392b;margin-left:6px;white-space:nowrap;vertical-align:1px}
.fprev.labprev .fprev-bar .labwarn{font-size:11.5px}
/* 📌 b430: 赤い「培養なし」= .labwarn と同じ見た目(小鼻縮小以外の鼻の手術で培養の画像が無い) */
.labnocult{font-style:normal;font-size:11px;font-weight:800;color:#c0392b;margin-left:6px;white-space:nowrap;vertical-align:1px}
.fprev.labprev .fprev-bar .labnocult{font-size:11.5px}
.labtag{display:inline-block;font-style:normal;font-size:10.5px;font-weight:700;margin-left:5px;padding:0 6px;border-radius:7px;line-height:1.6;
  background:#fdecea;color:#c0392b;border:1px solid #f1c3bd;white-space:nowrap;vertical-align:1px}
.labtag.ok{background:#e6f4ea;color:#1b7a4b;border-color:#bfe3c9}
.labline{font-size:12.5px;color:#4a5560;margin-top:2px}
.fprev.labprev{width:min(720px,calc(100vw - 16px));height:auto;max-height:calc(100vh - 52px)}   /* 📌 b365: 中身なりの高さ(編集面が乗る) */
.fprev.labprev .fprev-bar .labnav{font-size:18px;line-height:1;padding:0 6px;font-weight:800;color:#2b4a6b}
.fprev.labprev .fprev-bar .labok{background:#1b7a4b;border-color:#1b7a4b;color:#fff;font-weight:800}
.fprev.labprev .fprev-bar .laback{background:#eaf2fb;border:1px solid #b8cde3;color:#1f3d5c;font-weight:700}
.fprev.labprev .fprev-bar .err{margin:0;font-size:12px}
.fprev.labprev .empty{padding:24px;text-align:center;color:#8a97a5}
/* 📌 b382②: 帯の氏名は押せる(背面だけその患者トップへ)。押せると分かるように青い下線だけ付ける(案内文は置かない) */
.fprev.labprev .fprev-bar b .labpt{color:#1a5fb4;text-decoration:underline;text-underline-offset:2px;cursor:pointer}

/* 🧴 2026-09-10 b416 先生の逐語: 看護師のダブルチェック(未完バッジ)。
   ・バッジ = 青緑(#0e7490)。黄=見積・サーモン=手術記録・紫=検査データ・緑=処置・橙=写真来院 と区別できる色
   ・窓(.mikan-pop)・行は未完バッジの流儀をそのまま借りる(作りを増やさない)
   ・窓の中は「先生の一文」+ 施術・銘柄・部位・本数の一覧だけ(帯や説明文は足さない・省スペース) */
.mikan.mk-hya .mikan-n{background:#0e7490;color:#fff}
.fprev.hyaprev{width:min(560px,calc(100vw - 16px));height:auto;max-height:calc(100vh - 52px)}
.fprev.hyaprev .fprev-bar .hyaok{background:#0e7490;border-color:#0e7490;color:#fff;font-weight:800}
.fprev.hyaprev .fprev-bar b .labpt{color:#1a5fb4;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.fprev.hyaprev .fprev-bar .err{margin:0;font-size:12px}
.hyabody{padding:8px 10px 10px}
.hyaask{margin:0 0 6px;font-size:13px;font-weight:700;color:#1f3d5c}
.hyatbl{width:100%;border-collapse:collapse;font-size:12.5px}
.hyatbl th,.hyatbl td{border:1px solid #dde4ea;padding:3px 6px;text-align:left;white-space:nowrap}
.hyatbl th{background:#f2f6fa;color:#4a5764;font-weight:700}
.hyatbl .r{text-align:right}

/* 🌸 2026-09-19 b523 先生の逐語「(仮反映のまま放置されたものを拾う網)については、作ってください。
   アイコン無しでピンクの背景プラス数字で大丈夫です。該当院の受付さんと、管理者の私上原のみに
   出るようにしてください。」
   ・バッジ = **ピンク(#ec4899)に白抜きの数字**。黄=見積・サーモン=手術記録・紫=検査データ・
     青緑=ヒアル・緑=処置・橙=写真来院 のどれとも見分けが付く色
   ・⚠️ 絵文字は付けない(数字だけ)。大きさ・間隔は他の未完バッジと同じ .mikan-n をそのまま使う
   ・窓(.mikan-pop)・行(.mikan-row)は未完バッジの流儀をそのまま借りる(作りを増やさない) */
.mikan.mk-kari .mikan-n{background:#ec4899;color:#fff}

/* 🧾 2026-09-10 b416: 「会計は保存したのに領収書がまだ」の**小さな印**(既にある一覧の状態の欄の中)。
   ⚠️ 人の操作は1つも止めない。帯も説明文も足さない(印1つだけ) */
.kkrcpng{font-style:normal;font-size:10.5px;font-weight:800;margin-left:5px;padding:0 5px;border-radius:7px;
  line-height:1.6;background:#fff3e0;color:#a55b00;border:1px solid #f0d3a8;white-space:nowrap;vertical-align:1px}
/* 💴🗂 b416: 会計項目の画面を出せなかった時の1行(理由 + その場の「＋ 裏書き」)。行を増やさない */
.err.kkng{display:flex;align-items:center;gap:8px}
.err.kkng button{flex:0 0 auto}

/* 🔵🐗🟥 2026-09-06 b330 先生の指示: 予約ボードにdr別の要対応アラート(榛澤🔵/杉尾🐗/上原🟥は🔥の時だけ)。
   未完バッジ群の左。絵文字の上に**白い数字**を重ね、**1秒周期**でキラキラ光る(明滅+光の輪+✦の瞬き。目障りにならない程度)。
   榛澤の🔵だけ**少し大きい**(先生の明示)。窓(.mikan-pop)・行(.mikan-row)は未完バッジの流儀をそのまま借りる */
.dral{position:relative;display:flex;align-items:center;height:44px;padding:0 4px}
.dral-n{position:relative;display:inline-block;line-height:1;cursor:default;user-select:none;-webkit-user-select:none}
.dral-em{display:inline-block;font-size:22px;line-height:1;animation:dralShine 1s ease-in-out infinite}
.dral.dral-hz .dral-em{font-size:26px}
.dral-num{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);text-align:center;color:#fff;
  font-size:12px;font-weight:900;line-height:1;pointer-events:none;
  text-shadow:0 0 2px rgba(0,0,0,.95),0 0 3px rgba(0,0,0,.8),0 1px 1px rgba(0,0,0,.9)}
.dral.dral-hz .dral-num{font-size:13px}
.dral-n::after{content:'✦';position:absolute;top:-5px;right:-6px;font-size:9px;line-height:1;color:#fff;
  animation:dralTwinkle 1s ease-in-out infinite;pointer-events:none}
@keyframes dralShine{0%,100%{filter:brightness(1) drop-shadow(0 0 0 rgba(255,255,255,0))}
  50%{filter:brightness(1.35) drop-shadow(0 0 5px rgba(255,255,210,.95))}}
@keyframes dralTwinkle{0%,100%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1.2)}}
.dral .mikan-pop.dral-pop{min-width:180px}

/* 📷 写真来院アラート(2026-08-26 batch196)。未完バッジの左隣・橙(赤は未完バッジの色なので使わない)。
   窓(.mikan-pop)・行・✓は未完バッジの流儀をそのまま借りる(作りを2つにしない) */
.phal{position:relative;display:flex;align-items:center;height:44px;padding:0 6px}
.phal-n{display:inline-block;background:#b26a00;color:#fff;font-size:11.5px;font-weight:800;
  border-radius:9px;padding:1px 8px;line-height:1.6;cursor:default;white-space:nowrap}

/* 💉 処置記録アラート(2026-08-27 batch208)。写真来院アラートの左隣・緑
   (赤=未完バッジ・橙=写真来院アラート なので、区別できる色にする)。
   窓(.mikan-pop)・行は未完バッジの流儀をそのまま借りる(作りを3つにしない) */
.shal{position:relative;display:flex;align-items:center;height:44px;padding:0 6px}
.shal-n{display:inline-block;background:#1b7a4b;color:#fff;font-size:11.5px;font-weight:800;
  border-radius:9px;padding:1px 8px;line-height:1.6;cursor:default;white-space:nowrap}
/* 💉 その場で書く処置記録の窓。紙の用紙と同じ欄を、名札+入力欄の2列で省スペースに並べる */
.modal.shrec{width:min(560px,94vw)}
.shrec-grid{display:grid;grid-template-columns:max-content 1fr;gap:6px 10px;align-items:center;padding:2px 0 4px}
.shrec-grid label{font-size:12.5px;color:#4a5764;white-space:nowrap}
.shrec-grid input,.shrec-grid textarea{width:100%;font-size:13px;padding:4px 6px;
  border:1px solid #cfd8e0;border-radius:5px;font-family:inherit}
.shrec-grid textarea{resize:vertical;line-height:1.5}
.shrec-grid label:has(+ textarea){align-self:start;padding-top:6px}
.shrec-grid .shrec-dt{width:130px}

/* 🗂 OP予約管理表(2026-08-26 batch196)。受付のエクセルの置き換え。
   ⭐ ✕は左上(先生の恒久的な好み)。院タブ×月タブ(エクセルのシート分けと同じ)を見出しの行に収める */
.modal.oplmodal{max-width:1180px;width:96vw}
.opl-head{justify-content:flex-start;gap:12px;flex-wrap:wrap}
.opl-tabs{display:flex;gap:2px}
.opl-tabs a{padding:3px 10px;border:1px solid #c9d6e8;border-radius:6px;font-size:12.5px;
  color:#42566b;cursor:pointer;white-space:nowrap}
.opl-tabs a.on{background:#2f4a6b;border-color:#2f4a6b;color:#fff;font-weight:700}
.opl-months{margin-left:auto}
.opl-wrap{max-height:72vh;overflow:auto;border:1px solid #e3e9f2;border-radius:6px}
.opl-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.opl-tbl th,.opl-tbl td{border-bottom:1px solid #eef2f7;border-right:1px solid #f2f5fa;
  padding:4px 8px;text-align:left;vertical-align:top}
.opl-tbl thead th{position:sticky;top:0;background:#eef2f7;color:#2a3b4d;font-weight:700;z-index:1;
  white-space:nowrap}
.opl-no{color:#8794a1;text-align:right;width:26px}
.opl-date,.opl-cl,.opl-drs{white-space:nowrap}
.opl-name{white-space:nowrap}
.opl-name a{color:#1c5f9e;font-weight:700}
.opl-ops{white-space:pre-line;line-height:1.45;min-width:260px}
/* チェック欄。セルごと押せる(受付が付け外し)。付いたら緑の✓ */
.opl-chk{width:34px;text-align:center;cursor:pointer;color:#2e7d32;font-weight:800;font-size:14px;
  user-select:none}
.opl-chk:hover{background:#eef4fa}
.opl-chk.on{background:#e7f3e8}
.opl-empty{color:#8794a1;text-align:center;padding:18px 0}

/* 💴 振込チェック表(2026-09-25 b622)。窓・表・院タブ・チェックのセルは上の OP予約管理表(.opl-*)の**流用**。
   ここで足すのは ①期限切れの行の赤(.kk-due と同じ #b03a2e) ②金額の右寄せ ③期限の日付欄と備考欄の入力だけ。
   ⭐ 説明文・帯は置かない(先生の好み)。新しい飾りは作らない */
/* 📏 b626/b627: 窓の横幅は**列の幅の合計**から画面が決める(style で当てる)。
   b627 院長の逐語「右端によって、この振込チェック表ウインドウ自体も縮んだりするように。」= 列を詰めれば窓も縮む。
   ここでは上限(画面からはみ出さない)だけを決める */
.modal.fkmodal{max-width:96vw}
/* 🪟 2026-09-25 b627 院長の逐語「背面のカルテを見るため背面をクリックしたりしても、消えないように。」
   → 背面は**素通し**(押しても届かない・地の色も置かない)。窓だけが押せる。
   「上下左右の余白を掴んで動かせるように。」= 窓の余白は掴める形(cursor:move)にする(中身の上では普通のまま) */
.modal-bg.fk-bg{background:transparent;pointer-events:none}
.modal-bg.fk-bg>.modal{pointer-events:auto;cursor:move}
.modal-bg.fk-bg>.modal>*{cursor:auto}
.fk-tbl .fk-yen{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.fk-tbl tr.fk-over td{color:#b03a2e}
.fk-tbl tr.fk-over .opl-name a{color:#b03a2e}
.fk-duec,.fk-notec{padding:2px 4px}
/* 📅 b626: 振込期限は「9/16」だけを見せる。<input type="date"> は**隠して残す**(値は YYYY-MM-DD のまま・
   押した時に showPicker() でカレンダーが出る)。幅0・目に見えない場所に置くだけで、作りは今までどおり */
.fk-duec .fk-duev{cursor:pointer;border-bottom:1px dashed transparent;color:inherit}
.fk-duec .fk-duev:hover{border-bottom-color:#c9d6e8}
.fk-duec .fk-duev.on{font-weight:700}
.fk-duein{position:absolute;right:0;bottom:0;width:1px;opacity:0;pointer-events:none;border:0;padding:0;margin:0}
/* 📏 b626: 日付は「/」の位置をそろえる(2桁の月でもずれない)。月は右詰め・日は左詰め。ゼロ埋めはしない */
.fk-tbl .fk-date{font-variant-numeric:tabular-nums}
.fk-tbl .fk-mo{display:inline-block;min-width:1.25em;text-align:right;font-style:normal}
.fk-tbl .fk-dy{display:inline-block;min-width:1.25em;text-align:left;font-style:normal}
.fk-notein{width:100%;min-width:0;border:1px solid transparent;border-radius:4px;background:transparent;
  font-size:12.5px;color:inherit;padding:1px 4px}
.fk-notein:hover,.fk-notein:focus{border-color:#c9d6e8;background:#fff;outline:none}
/* 📏 2026-09-25 b623 院長の逐語「備考欄は今の半分の横幅で。案内日、名前、OP日の窓の横幅は今の3分の2で。
   振込額の窓も今の5分の4に。残額の窓も今の3分の2に。」
   b622 の実測(1500px幅・全院タブ)を元に掛け算した数字。実測 → 直した幅:
     案内日 77→51(×2/3) / 名前 152→101(×2/3) / OP日 69→46(×2/3) /
     振込額 88→70(×4/5) / 残額 98→65(×2/3) / 備考欄 230→115(×1/2)
   ・指示が無い列(# / 院 / 振込期限 / チェック日)は実測のまま
   ・table-layout:fixed は**表の横幅が決まっている時だけ効く**(width:auto では効かず、文字の長さで広がってしまう
     = 実測で 51px の指定が 55px になっていた)。なので width:100% を付け、余りは最後の空の列(.fk-c-pad)が全部受け取る
   ・幅は**列の名札(.fk-c-*)**で当てるので、院の列が出ない「各院」タブでもずれない
   ・はみ出す文字は折り返さず「…」で切る(行が増えない=先生の好み) */
/* 📏 b624/b626: 9列の幅は kv 'furikomi-cols' が持ち、th に直に当てる(既定の数字は main.tsx の FK_COL0)。
   ここに px を書かないので、「🔧 調整」で変えた幅がそのまま効く。
   表の横幅も**列の幅の合計**を px で当てる(b626 で余白の列を撤去したため。table-layout:fixed は
   横幅が決まっている時だけ効く = 余りが各列に足されない) */
.fk-tbl{table-layout:fixed}
.fk-tbl .fk-duec{position:relative}
/* 🔧 2026-09-25 b624 院長の逐語「管理者の私だけ、『調整モード』…間違って動かしてしまわないように、
   調整モードをオンにした時だけ調整できるように。」
   ⭐ オフの間は .fk-tune が付かない = 掴めない・印も線も出ない(b623 と1pxも変わらない)
   ・青い線は既存のナビの並べ替え(.nd-dropb)と同じ色・太さ。上下ではなく**左右**に出す
   ・.fk-rz = 列見出しの右の境目(6px)。ここを掴むと幅が変わる(並べ替えの掴みとは別) */
.fk-tbl th{position:relative}
.fk-tbl th.fk-tune{cursor:grab;user-select:none}
.fk-tbl th.fk-mv{opacity:.45}
.fk-tbl th.fk-dropb{box-shadow:inset 2px 0 0 0 #1e6fe0}
.fk-tbl th.fk-dropa{box-shadow:inset -2px 0 0 0 #1e6fe0}
.fk-tbl th .fk-rz{position:absolute;top:0;right:0;bottom:0;width:6px;cursor:col-resize;z-index:2}
.fk-tbl th .fk-rz:hover{background:#1e6fe0}
.fkmodal .fk-tunew{margin-left:auto}
.fkmodal .fk-tuneb.on{background:#1e6fe0;border-color:#1e6fe0;color:#fff;font-weight:700}
.fkmodal .fk-reset{font-size:11.5px}
/* 🔤 b627: 表の中の文字を小さく/大きく(調整モードの間だけ出る2つ。説明文は置かない) */
.fkmodal .fk-fzb{font-weight:700;padding-left:7px;padding-right:7px}
/* 📋 2026-09-25 b627 院長の逐語「チェック/承認済みの方は そうでない人から下に空行6行あけてそれより下に並ぶように
   (7人分の行だけ見えていて、それより下はスクロールで見える、ということで。)。
   また、空行以下はやや薄いグレーの覆いで覆われるように。本日9/25 のような行(黄色い行)を作って、
   本日以前の振込期限の人はそれより上に並ぶように。赤で太字が良いです。」
   ・.fk-today = 黄色い地に**赤の太字**の1行。期限切れの人のすぐ下に置く(=本日以前の人はその上)
   ・.fk-gap  = 空行 / .fk-dim = チェック済みの群。どちらも**やや薄いグレーの覆い**をかける
   ・見える高さは画面が実測して max-height に当てる(文字の大きさで行の高さが変わるため)
   📋 2026-09-26 b633 院長の逐語「本日9/26の9/26は振込期限の列と合うようにお願いします。「本日」の単語は
      「名前」の列の後ろから半角数字2個分くらい左へ離して表示。」/「空行3行」
   ・「本日」の行は**列ごとのマス**で描く(colSpan をやめた)。だから列の幅・並び(調整モード b624)に自動でついていく
   ・「本日」= 名前の列の**右詰め**+右に半角数字2個分(2ch)の空き / 日付 = 振込期限の列(ほかの期限と同じ左詰め) */
.fk-tbl tr.fk-today td{background:#fff6cc;color:#c0392b;font-weight:700;text-align:left;white-space:nowrap}
/* 「本日」は名前の列の右詰め。列の右端から**半角数字2個分**(2ch)だけ離す
   (ch = 数字1個の幅なので、調整モードで文字の大きさを変えてもその比で付いてくる) */
.fk-tbl tr.fk-today td.fk-today-name{text-align:right;padding-right:2ch}
.fk-tbl tr.fk-gap td{background:rgba(120,130,140,.09);height:1.9em;border-right:0}
.fk-tbl tr.fk-dim td{background:rgba(120,130,140,.09)}
.fk-tbl tr.fk-dim .opl-name a{color:#5b6b7c}
.fk-tbl td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fk-tbl .opl-chk{width:auto;font-size:12px}
/* ✓ b623: チェックした人の苗字(同じマスの日付の右に小さく。行の高さは変えない) */
.fk-tbl .fk-by{font-style:normal;font-size:10.5px;font-weight:600;margin-left:3px}
/* 掴んで「上部バー ←→ 🗂業務」を移している間の落とし先の合図。青い線は既存の .nd-dropb と同じ色・太さ */
.mnav.fk-drop{box-shadow:inset 0 -2px 0 0 #1e6fe0}
.ndmenu.nd-workmenu.nd-drop{box-shadow:inset 0 2px 0 0 #1e6fe0,0 8px 24px rgba(20,35,55,.25)}
.mnav a.nfk.nd-mv,.ndmenu a.nd-fk.nd-mv{opacity:.45}

/* 💊 術前休止薬(2026-08-27 batch201)。他施設5つのガイドラインの**原文**を見る/横断検索する窓。
   ⭐ ✕は左上。検索窓と施設タブは見出しの1行に収める(省スペース)。説明文は一切置かない。
   .kyu-pre = PDFから取り出した原文をそのまま出す等幅の箱。桁を崩さないよう折り返さず横スクロール */
.modal.kyumodal{max-width:1240px;width:97vw}
.kyu-head{justify-content:flex-start;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.kyu-q{width:190px;padding:4px 9px;border:1px solid #c9d6e8;border-radius:6px;font-size:13px}
.kyu-tabs{display:flex;gap:2px;flex-wrap:wrap}
.kyu-tabs a{padding:3px 10px;border:1px solid #c9d6e8;border-radius:6px;font-size:12.5px;
  color:#42566b;cursor:pointer;white-space:nowrap}
.kyu-tabs a.on{background:#2f4a6b;border-color:#2f4a6b;color:#fff;font-weight:700}
.kyu-body{max-height:74vh;overflow:auto}
.kyu-list{display:inline-block;min-width:320px}
.kyu-listrow{display:flex;align-items:baseline;gap:10px;padding:5px 2px;border-bottom:1px solid #eef2f7}
.kyu-listrow>a:first-child{color:#1c5f9e;font-weight:700;font-size:13.5px;cursor:pointer}
.kyu-date{color:#8794a1;font-size:11.5px}
.kyu-pdf{margin-left:auto;color:#1c5f9e;font-size:12px;white-space:nowrap;text-decoration:none}
.kyu-blk{margin:0 0 10px}
.kyu-blkhead{display:flex;align-items:baseline;gap:8px;padding:3px 6px;background:#eef2f7;
  border-radius:5px 5px 0 0;font-size:12.5px;color:#2a3b4d}
.kyu-blkhead b{font-size:13px}
.kyu-where{color:#6a7b8c;font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:52%}
.kyu-pre{margin:0;border:1px solid #e3e9f2;border-top:0;border-radius:0 0 5px 5px;padding:4px 8px;
  overflow-x:auto;white-space:pre;line-height:1.5;font-size:11.5px;
  font-family:"Osaka-Mono","MS Gothic","Hiragino Kaku Gothic ProN",Menlo,monospace}
.kyu-pre>div{min-height:1.5em}
/* 原文の空行は「表の行の切れ目」なので消さない。ただし高さは詰める(省スペース) */
.kyu-pre>div.kyu-sp{min-height:0;height:.5em;line-height:.5em}
.kyu-hit{background:#fff3c4;font-weight:700}

/* ⏱ カウセ/見積り作成速度(2026-09-27 b649)。窓・見出しの1行・期間タブは術前休止薬(.kyu-*)の流用。
   ⭐ ✕は左上。説明文・帯・凡例は置かない。行を押すとその組の一覧が下に開く(省スペース) */
.modal.cspmodal{max-width:720px;width:96vw}
.csp-range{color:#6a7b8c;font-size:12px;white-space:nowrap}
.csp-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.csp-tbl th,.csp-tbl td{border-bottom:1px solid #eef2f7;padding:3px 8px;text-align:left;white-space:nowrap}
.csp-tbl thead th{background:#eef2f7;color:#2a3b4d;font-weight:700;position:sticky;top:0}
.csp-tbl th.csp-n,.csp-tbl td.csp-n{text-align:right}
.csp-tbl tr.csp-row{cursor:pointer}
.csp-tbl tr.csp-row:hover td{background:#f4f7fb}
.csp-tbl tr.csp-row.on td{background:#eef4fa}
.csp-tbl tr.csp-sub td{font-weight:700;background:#fafbfd;color:#2a3b4d}
.csp-tbl tr.csp-all td{font-weight:700;background:#eef2f7}
.csp-tbl td.csp-det{padding:0 0 4px 28px;background:#fbfcfe}
.csp-det table{border-collapse:collapse;font-size:12px}
.csp-det td{border-bottom:1px solid #f2f5fa;padding:2px 12px 2px 0;color:#42566b}

/* ================================================================
   📮 LINEの新規問い合わせ(2026-08-30 batch225)
   ・「新着」= 予約ボードの休診の列の上方に固定される小さな通知。
     .linq-fix は高さ0のstickyで、列名の帯(.cal-colhead)のすぐ下に貼り付く
     =スクロールしても見える。動きは控えめな鼓動(linqpulse)
   ================================================================ */
.linq-fix{position:sticky;top:calc(var(--chtop,96px) + 34px);z-index:24;height:0;text-align:center;overflow:visible}
.cal-grid.multi .linq-fix{top:calc(var(--chtop,96px) + 48px)}
.linq-badge{border:none;border-radius:999px;background:#e0523c;color:#fff;font-size:11px;font-weight:700;
  padding:3px 10px;margin-top:5px;cursor:pointer;box-shadow:0 2px 8px rgba(214,69,49,.45);
  animation:linqpulse 1.6s ease-in-out infinite}
@keyframes linqpulse{0%,100%{transform:scale(1);box-shadow:0 2px 8px rgba(214,69,49,.45)}
  50%{transform:scale(1.1);box-shadow:0 3px 12px rgba(214,69,49,.65)}}
.cal-head .linq-badge{margin:0}
/* 問い合わせの窓(小さめ・×は左上) */
.linqwin{max-width:440px}
.linqwin .mhead{justify-content:flex-start;gap:10px;margin-bottom:6px}
.linq-list{max-height:52vh;overflow:auto}
.linq-row{border-top:1px solid #e3e8ee;padding:7px 0 8px}
.linq-row.done{opacity:.55}
.linq-top{display:flex;align-items:center;gap:8px;min-width:0}
.linq-top b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.linq-top small{color:#8794a1;font-size:11px;white-space:nowrap}
.linq-new{font-size:10px;font-weight:700;color:#fff;background:#e0523c;border-radius:999px;padding:1px 7px;
  white-space:nowrap;animation:linqpulse 1.6s ease-in-out infinite}
/* 2026-09-06 b313: 2か月あいた再問い合わせの「再」の小さな札 */
.linq-re{font-size:10px;font-weight:700;color:#6b5a1e;background:#f3e7b5;border-radius:4px;padding:1px 5px;white-space:nowrap}
.linq-go{margin-left:auto;font-size:11px;color:#3b6ea5;cursor:pointer;white-space:nowrap}
.linq-ex{font-size:12px;color:#4a5561;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:2px 0 4px}
.linq-send{display:flex;gap:6px;align-items:flex-end}
.linq-send textarea{flex:1;min-height:34px;font-size:12.5px;padding:5px 7px}
.linq-month{margin-top:10px;border-collapse:collapse}
.linq-month td{border:1px solid #d7dee6;padding:2px 12px;font-size:12px}
.linq-month td+td{text-align:right}
/* 📅 b325「ステータスの日程を頭へ(一括)」の確認窓(.stfix)の見た目は
   b453 で撤去。理由: 役目を終えた一括直し(院長の指示 2026-09-13) */
/* 🧲 2026-09-06 b328 先生の指示: CSV取込と新しいLINEの合わせ候補(半自動・ひもづけ保持・丸数字は除外)。
   帯のピル(.cl-sug)は「AI回答」の右(淡いオレンジ=承認待ちの合図。院の色とは別)。
   窓(.lsgw)の1行(.lsg-r)= 左:CSV側 → 右:新しい側 / [合わせる][別人]。患者トップ(.lsg-pt)は青の小さな字。
   別の患者にひもづき(.lsg-ng)は薄い赤地+赤い字。✕は左上(.lai-head)。説明文の帯は置かない */
.lcpick.cl-sug{background:#fff0dc;border-color:#f1cf9f;color:#a0641f}
.lcpick.cl-sug:hover{background:#ffe3bf;color:#7a4a12}
.lsg-list{max-height:70vh}
.lsg-r{display:flex;align-items:center;gap:6px;padding:4px 6px;border:1px solid #eef2f6;border-radius:6px;background:#fff}
.lsg-r.lsg-ng{background:#fff5f5;border-color:#f3c9c9}
.lsg-side{flex:1 1 0;min-width:0;display:flex;align-items:center;gap:6px}
.lsg-t{min-width:0;display:flex;flex-direction:column;line-height:1.25}
.lsg-t b{font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lsg-t b i{font-style:normal;font-weight:400;color:#6b7a89}
.lsg-t b em{font-style:normal;font-weight:400;color:#8a97a5;font-size:10.5px;margin-left:5px}
.lsg-t small{color:#8a97a5;font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lsg-t small.lsg-pt{color:#1f5f9c}
.lsg-t small.lsg-pt0{color:#b6c2cd}
.lsg-arr{flex:0 0 auto;color:#b6c2cd;font-size:13px}
.lsg-btns{flex:0 0 auto;display:flex;align-items:center;gap:4px}
.lsg-btns button{width:auto;min-width:0}
.lsg-ng-t{font-style:normal;color:#c0392b;font-size:10.5px;font-weight:700;white-space:nowrap}
/* 🗓 2026-09-07 b341 先生の指示: 従業員シフト表(院別・営業日・休み・肋候補日・Dr人数)。
   oplus に寄せた見た目: 上に院のピルと月の切替(＜ 今日 ＞)、左に職員名(NS/受付の小さな札)、列が日付(土=青・日=赤)、
   休診の日は列ごと薄い灰色、見出しに「肋」の札と「Dr 2」。マスの札の色は oplus と同じ趣旨
   (休=赤・希休=灰・有休=薄赤・残業=青・×=灰・自由記入=白)。説明文の帯は置かない。小さな選択(.shift-pop)の✕は左上 */
.shiftpage{padding:6px 8px 12px}
.shift-bar{display:flex;align-items:center;gap:6px;margin:0 0 6px;flex-wrap:wrap}
.shift-pill{display:inline-block;padding:2px 11px;border-radius:999px;border:1px solid #cfd8e0;background:#fff;color:#4a5561;font-size:12.5px;font-weight:600;cursor:pointer;user-select:none}
.shift-pill.on{background:#1f5f9c;border-color:#1f5f9c;color:#fff}
.shift-mon{display:inline-flex;align-items:center;gap:4px;margin-left:8px}
.shift-mon b{font-size:13px;color:#25313c;margin-left:6px;white-space:nowrap}
.shift-scroll{overflow-x:auto}
.shift-tbl{border-collapse:collapse;font-size:11.5px;table-layout:fixed;background:#fff}
/* 🏷📏 2026-09-10 b412 先生の指示: 1日ぶんの枠を僅かに広げる(36px → 44px・+8px)/ 札を2つ以上縦に積む /
   人の行(tr.prow)の縦幅を高くする(24px → 40px。札2枚が収まる)/「休み」の行は人数が多くても列を広げない */
.shift-tbl th,.shift-tbl td{border:1px solid #d5dde5;padding:0;text-align:center;height:24px;min-width:44px;width:44px;max-width:44px;white-space:nowrap;overflow:hidden;vertical-align:middle}
.shift-tbl tbody tr.prow th,.shift-tbl tbody tr.prow td{height:40px}
/* 札の積み木(縦に並べる。列の幅は増やさない) */
.scs{display:flex;flex-direction:column;align-items:stretch;gap:1px;padding:0 2px}
.shift-tbl thead th{height:auto;padding:2px 0 1px;line-height:1.15;background:#f6f8fa;vertical-align:top}
.shift-tbl thead th b{display:block;font-size:12px}
.shift-tbl thead th small{display:block;font-size:9.5px;color:#6b7a89}
.shift-tbl thead th.sat,.shift-tbl thead th.sat small{color:#1f6fd0}
.shift-tbl thead th.sun,.shift-tbl thead th.sun small{color:#d33}
.shift-tbl thead th .rib{display:inline-block;font-style:normal;font-size:9px;line-height:1.35;color:#fff;background:#e67e22;border-radius:3px;padding:0 3px;margin-top:1px}
.shift-tbl thead th em{display:block;font-style:normal;font-size:9.5px;color:#1f5f9c;font-weight:700}
.shift-tbl th.name{position:sticky;left:0;z-index:2;background:#fff;text-align:left;padding:0 6px;min-width:118px;width:118px;max-width:118px;font-weight:600;color:#25313c;box-shadow:1px 0 0 #d5dde5}
.shift-tbl th.name small{display:inline-block;font-size:9px;line-height:1.3;color:#5c6b7a;border:1px solid #c9d0d7;border-radius:3px;padding:0 3px;margin-right:5px;vertical-align:1px}
.shift-tbl thead th.name{background:#f6f8fa}
.shift-tbl .closed{background:#eceff2;color:#9aa5b1}
.shift-tbl thead th.closed b,.shift-tbl thead th.closed small{color:#9aa5b1}
.shift-tbl td.can{cursor:pointer}
.shift-tbl td.can:hover{background:#eef4fa}
.shift-tbl td.picking{outline:2px solid #1f5f9c;outline-offset:-2px}
.shift-in{width:100%;height:22px;border:0;background:transparent;font-size:10.5px;text-align:center;padding:0 2px;color:#25313c;outline:none}
.shift-in:focus{background:#fffbe6}
.shift-in::placeholder{color:#a3adb8}
.shift-tbl tr.sum th,.shift-tbl tr.sum td{background:#f6f8fa;font-size:11px;color:#3b4652}
/* 🏷 b412: 休む人が5人並んでもこの列だけ広がらない。枠の中で折り返して全員の姓が読めるようにする
   (以前は nowrap で列が広がり、日付の並びが不揃いになっていた) */
.shift-tbl tr.sum.off td{font-size:9px;color:#a33;white-space:normal;word-break:break-all;overflow-wrap:anywhere;line-height:1.15;padding:1px 2px;height:auto;vertical-align:top}
.sc{display:inline-block;min-width:30px;border-radius:4px;font-size:10.5px;line-height:1.6;padding:0 3px;font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.sc-off{background:#e74c3c;color:#fff}
.sc-wish{background:#9aa5b1;color:#fff}
.sc-paid{background:#f7c6c6;color:#a33}
.sc-half{background:#fde9c8;color:#8a5a12}
.sc-early{background:#dbe9fb;color:#1f4f8f}
.sc-ot{background:#2f80ed;color:#fff}
.sc-ng{background:#c9d0d7;color:#fff}
.sc-free{background:#fff;border:1px solid #b6c2cd;color:#333;font-weight:400}
.sc-on{background:#e8f6ea;color:#1d7a3a}
.sc.dim{opacity:.55}
.shift-pop{position:fixed;z-index:200;background:#fff;border:1px solid #cfd8e0;border-radius:8px;box-shadow:0 8px 24px rgba(20,35,55,.25);padding:6px 10px 8px 22px;min-width:300px}
.shift-pop .x{position:absolute;left:5px;top:3px;font-size:12px;color:#6b7a89;cursor:pointer}
.shift-pop .who{font-size:11px;color:#6b7a89;margin-bottom:4px}
/* 🏷 2026-09-10 b412: 小さな選択の中の「今このマスに積んである札」(押すとその札を直す・✕で消す・↑で1つ上へ)。
   ＋ = 札をもう1つ足す。説明文は置かない(印だけ) */
.shift-pop .slots{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:5px}
.shift-pop .slots .sl{display:inline-flex;align-items:center;gap:2px;border:1px solid transparent;border-radius:5px;padding:1px 2px}
.shift-pop .slots .sl.on{border-color:#1f5f9c;background:#eef4fa}
.shift-pop .slots .sl .lb{cursor:pointer;min-width:34px;text-align:center;line-height:1.7}
.shift-pop .slots .sl .up,.shift-pop .slots .sl .del{cursor:pointer;font-size:11px;color:#6b7a89;line-height:1;padding:0 1px}
.shift-pop .slots .sl .del:hover,.shift-pop .slots .sl .up:hover{color:#c0392b}
.shift-pop .slots .addsl{cursor:pointer;font-size:13px;font-weight:700;color:#1f5f9c;border:1px dashed #9fb6cd;border-radius:5px;padding:0 6px;line-height:1.7}
.shift-pop .slots .addsl.on{background:#eef4fa;border-style:solid}
.shift-pop .ks{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.shift-pop .ks .sc{cursor:pointer;min-width:38px;text-align:center;line-height:1.9}
.shift-pop .ks .sc:hover{filter:brightness(.94)}
.shift-pop .fr{display:flex;gap:4px;align-items:center}
.shift-pop .fr input{flex:1;font-size:12px;padding:3px 6px}
.shift-pop .fr button{width:auto;min-width:0}
/* 🙈 2026-09-08 b359 先生の指示: シフト表の行を上原だけ右クリックで院から外す/一旦載せない
   .shift-ctx = 名前の行を右クリックした小さなメニュー(2項目) / .shift-hid = 表の下の「非表示: ◯人 ▸」(小さく・説明文なし) */
.shift-ctx{position:fixed;z-index:200;background:#fff;border:1px solid #cfd8e0;border-radius:8px;box-shadow:0 8px 24px rgba(20,35,55,.25);padding:4px 0;min-width:150px}
.shift-ctx .who{font-size:11px;color:#6b7a89;padding:2px 10px 3px}
.shift-ctx a{display:block;font-size:12.5px;color:#25313c;padding:5px 12px;cursor:pointer;white-space:nowrap}
.shift-ctx a:hover{background:#eef4fa}
.shift-hid{margin:4px 0 0;font-size:11px;color:#6b7a89;display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}
.shift-hid .hd{cursor:pointer;color:#6b7a89;user-select:none}
.shift-hid .hi{color:#3b4652}
.shift-hid .hi small{display:inline-block;font-size:9px;line-height:1.3;color:#5c6b7a;border:1px solid #c9d0d7;border-radius:3px;padding:0 3px;margin-right:4px;vertical-align:1px}
.shift-hid .hi a{margin-left:4px;color:#1f5f9c;cursor:pointer;text-decoration:underline}
/* ➕✏️↕ 2026-09-10 b389 先生の指示: シフト表に行の追加(右クリック)・名前の編集(ダブルクリック)・並べ替え(掴んで上下)
   .shift-ctx .add = メニューの中の名前の記入欄 / th.name.grab = 掴める行 / tr.dragging = 掴んでいる行 / tr.dragover = 落とし先 */
.shift-ctx .add{display:flex;gap:4px;align-items:center;padding:2px 8px 4px}
.shift-ctx .add input{width:130px;font-size:12px;padding:3px 6px}
.shift-ctx .add button{width:auto;min-width:0}
.shift-tbl th.name.grab{cursor:grab;user-select:none}
.shift-tbl tr.dragging th.name{cursor:grabbing;background:#eef4fa}
.shift-tbl tr.dragging{opacity:.55}
.shift-tbl tr.dragover th.name,.shift-tbl tr.dragover td{box-shadow:inset 0 2px 0 #1f5f9c}
/* 🗑 2026-09-10 b394 先生の指示: 足した行を自分で消せる・右クリックの「削除履歴」から3週間は戻せる
   .shift-ctx a.dl = メニューの「削除履歴」(目立たせない) / .shift-ctx .dels = その一覧(いつ・誰が・誰を+戻す。説明文なし) */
.shift-ctx a.dl{border-top:1px solid #eef1f4;color:#6b7a89;font-size:11.5px}
.shift-ctx .dels{max-height:220px;overflow:auto;padding:2px 10px 5px;font-size:11.5px;color:#3b4652}
.shift-ctx .dels i{color:#8a949e;font-style:normal}
.shift-ctx .dels .di{display:block;white-space:nowrap;line-height:1.95}
.shift-ctx .dels .di small{display:inline-block;font-size:9px;line-height:1.3;color:#5c6b7a;border:1px solid #c9d0d7;border-radius:3px;padding:0 3px;margin-right:4px;vertical-align:1px}
.shift-ctx .dels .di b{font-weight:400;color:#8a949e;margin-left:6px}
.shift-ctx .dels .di a{display:inline;padding:0;margin-left:6px;color:#1f5f9c;text-decoration:underline;cursor:pointer}
.shift-ctx .dels .di a:hover{background:none}
.shift-tbl th.name input.ren{width:calc(100% - 34px);font-size:11.5px;padding:0 3px;border:1px solid #1f5f9c;border-radius:3px;background:#fff;height:19px}
/* 📝 2026-09-10 b410 先生の指示: シフト表の日付の列のいちばん右に、各行のメモ欄(月ごと・院ごと)。
   列が1つ増えるだけで行は増やさない。見出しは「メモ」だけ(説明文は置かない) */
.shift-tbl th.memo,.shift-tbl td.memo{width:132px;min-width:132px;max-width:132px;text-align:left}
.shift-tbl thead th.memo{font-size:10px;color:#6b7a89;font-weight:600;vertical-align:middle}
.shift-tbl .memo-in{text-align:left;padding:0 4px}

/* ══ 🕘 勤怠(2026-09-07 b342 先生の指示: 勤怠の打刻(上部バー)と月次勤怠表のPDF) ══
   .kt-pop = 名前のメニュー(.nuserdrop .ndmenu)の中の打刻の窓。ホバー/タップ/.on で出る(出し方は .ndmenu と同じ)。
             ✕は左上・時計は13px・説明文なし・省スペース(日付と時計を1行、ボタンは2×2)
   .ktw    = 勤怠表(月次)の窓。1人1ページのA4の紙(.kt-paper=794×1122px。bakeHtmlPaper がそのままA4のJPEGに焼く)を
             縦に並べる。印刷では紙ごとに改ページ(1人1枚) */
.nuserdrop .ndmenu{min-width:236px}
.kt-pop{padding:6px 10px 8px;border-bottom:1px solid #e3eaf1;margin-bottom:4px}
.kt-pop.kt-hid{display:none}
.kt-top{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ndmenu .kt-x{display:inline-block;padding:0 4px;color:#8794a1 !important;font-size:13px;cursor:pointer;line-height:1}
.ndmenu .kt-x:hover{color:#b03a2e !important}
.kt-date{font-size:12.5px;color:#25313c;white-space:nowrap}
.kt-clock{font-size:13px;font-variant-numeric:tabular-nums;color:#25313c;margin-left:auto;white-space:nowrap}
.kt-btns{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.kt-b{padding:5px 6px;font-size:12.5px;border-radius:7px;white-space:nowrap;display:flex;flex-direction:column;align-items:center;gap:1px;line-height:1.2;width:auto;min-width:0}
.kt-b b{font-size:11px;font-weight:600}
.kt-b.kt-next{background:#1e6fe0;border-color:#1e6fe0;color:#fff;font-weight:700}
.kt-b.kt-ok{background:#fff;border-color:#8fb4e6;color:#1e6fe0}
.kt-b.kt-done{background:#eef2f6;border-color:#d5dde5;color:#6b7a89}
.kt-b.kt-off{background:#f7f9fb;border-color:#e3e9f0;color:#b6c2cd}
.kt-msg{margin-top:5px;font-size:12px;color:#b03a2e;white-space:nowrap}
/* ⏱ 2026-09-10 b410: 打刻の窓の中の「⏱ 勤務時間」(早番・遅番の勤務時間を自分で決める入口。小さく1行だけ) */
.ndmenu .kt-plan{display:block;margin-top:6px;font-size:11.5px;color:#1e6fe0 !important;cursor:pointer;white-space:nowrap;padding:0}
/* 勤怠表(月次)の窓 */
.ktw{padding:16px 10px}
.ktw-in{background:#eef2f6;border-radius:12px;width:min(880px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column;
  box-shadow:0 18px 50px rgba(10,25,45,.4);overflow:hidden}
.ktw-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#f7fafc;border-bottom:1px solid #e3eaf1;font-size:13px;flex-wrap:wrap}
.ktw-bar .kt-x{padding:0 4px;font-size:14px}
.ktw-bar select{font-size:13px;padding:3px 6px;border:1px solid #cfd9e6;border-radius:6px;background:#fff}
.ktw-ym{display:inline-flex;align-items:center;gap:6px;font-weight:700;white-space:nowrap}
.ktw-ym a{cursor:pointer;color:#1e6fe0;padding:0 4px}
.ktw-bar .sp{cursor:pointer;color:#1e6fe0;white-space:nowrap}
.ktw-n{color:#8794a1;margin-left:auto;white-space:nowrap}
.ktw-body{overflow:auto;padding:12px 10px;display:flex;flex-direction:column;gap:14px}
.kt-sheet{width:794px;max-width:100%;margin:0 auto}
.kt-tools{display:flex;align-items:center;gap:10px;font-size:12.5px;color:#25313c;margin-bottom:4px;flex-wrap:wrap}
.kt-tools .sp{cursor:pointer;color:#1e6fe0;margin-left:auto;white-space:nowrap}
.kt-fix{display:inline-flex;align-items:center;gap:4px}
.kt-fix input{width:64px;font-size:12px;padding:3px 5px;border:1px solid #cfd9e6;border-radius:5px}
.kt-fix input+input{width:150px}
.kt-fix select{font-size:12px;padding:2px 4px}
.kt-fix button{padding:3px 8px;font-size:12px;width:auto;min-width:0}
.kt-paper{width:794px;height:1122px;max-width:100%;background:#fff;box-shadow:0 4px 18px rgba(0,0,0,.3);padding:11mm 12mm;
  box-sizing:border-box;color:#111;font-size:10.5px;line-height:1.35;overflow:hidden}
.kt-co{font-size:11px;color:#111}
.kt-ttl{font-size:14px;font-weight:700;margin:4px 0 6px}
.kt-who{border-collapse:collapse;margin-bottom:6px;font-size:10.5px}
.kt-who th{background:#eef2f6;border:1px solid #9aa4ad;padding:2px 6px;font-weight:600;white-space:nowrap}
.kt-who td{border:1px solid #9aa4ad;padding:2px 8px;min-width:48px;white-space:nowrap}
.kt-tbl{width:100%;border-collapse:collapse;font-size:10.5px}
.kt-tbl th{background:#eef2f6;border:1px solid #9aa4ad;padding:2px 4px;font-weight:600}
.kt-tbl td{border:1px solid #9aa4ad;padding:1px 4px;height:18px;text-align:center;white-space:nowrap}
.kt-tbl td.kt-note{text-align:left;font-size:9.5px;max-width:280px;overflow:hidden;text-overflow:ellipsis}
.kt-tbl tr.kt-sat td:nth-child(-n+2){color:#1a5fb4}
.kt-tbl tr.kt-sun td:nth-child(-n+2){color:#c0392b}
.kt-cell{cursor:pointer}
.kt-cell:hover{background:#eef5fb}
.kt-sum{display:flex;gap:10px;margin-top:8px;align-items:flex-start}
.kt-sum table{border-collapse:collapse;font-size:10.5px;flex:1}
.kt-sum th{background:#eef2f6;border:1px solid #9aa4ad;padding:2px 6px;font-weight:600;text-align:left}
.kt-sum td{border:1px solid #9aa4ad;padding:1px 6px;white-space:nowrap}
.kt-sum td+td{text-align:right;min-width:52px}
/* ⏱ 2026-09-10 b410 先生の指示: 早番・遅番の勤務時間を各人で決める窓(手本=HRMOSの日次勤怠)。
   1日=1行・説明文なし・✕は左上。記入欄は小さく(時刻は HH:MM の4〜5文字ぶん) */
.ktpw{padding:16px 10px}
.ktpw-in{background:#fff;border-radius:12px;width:min(720px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column;
  box-shadow:0 18px 50px rgba(10,25,45,.4);overflow:hidden}
.ktp-who{font-size:13px;color:#25313c;white-space:nowrap}
.ktpw-body{overflow:auto;padding:8px 10px 12px}
.ktp-tbl{width:100%;border-collapse:collapse;font-size:12px}
.ktp-tbl th{background:#f6f8fa;border:1px solid #d5dde5;padding:2px 4px;font-weight:600;color:#3b4652;white-space:nowrap}
.ktp-tbl td{border:1px solid #d5dde5;padding:1px 3px;text-align:center;white-space:nowrap;height:24px}
.ktp-tbl tr.kt-sat td:nth-child(-n+2){color:#1a5fb4}
.ktp-tbl tr.kt-sun td:nth-child(-n+2){color:#c0392b}
.ktp-tbl select{font-size:12px;padding:1px 2px;border:1px solid #cfd9e6;border-radius:4px;background:#fff;width:66px}
.ktp-t{width:48px;font-size:12px;padding:1px 3px;border:1px solid #dde4ec;border-radius:4px;text-align:center}
.ktp-n{width:100%;min-width:110px;font-size:12px;padding:1px 4px;border:1px solid #dde4ec;border-radius:4px}
.ktp-tbl .ktp-brk i{font-style:normal;color:#8794a1;padding:0 1px}
.ktp-nx{display:inline-block;font-size:10.5px;line-height:1.5;color:#8794a1;border:1px solid #dde4ec;border-radius:4px;padding:0 3px;cursor:pointer;margin-left:2px}
.ktp-nx.on{background:#1e6fe0;border-color:#1e6fe0;color:#fff;font-weight:700}
.ktp-add{color:#1e6fe0;cursor:pointer;font-size:12px}
@media print{
  /* 勤怠表は**何枚も**刷る(1人1枚)。共通の印刷指定(html/body の overflow:hidden・.paperprint の改ページ回避)は
     1枚の紙のためのものなので、この窓が開いている間(body.ktprint)だけ外す */
  html:has(body.ktprint),body.pprint.ktprint{overflow:visible !important;height:auto !important}
  body.pprint .ktw{position:static !important;padding:0 !important;overflow:visible !important;background:#fff !important;display:block !important}
  body.pprint .ktw-in{max-height:none !important;overflow:visible !important;box-shadow:none !important;background:#fff !important;
    width:auto !important;display:block !important;border-radius:0 !important}
  body.pprint .ktw-bar,body.pprint .kt-tools{display:none !important}
  body.pprint .ktw-body{overflow:visible !important;padding:0 !important;display:block !important}
  body.pprint .kt-sheet{width:auto !important;margin:0 !important}
  body.pprint .kt-paper{width:210mm !important;max-width:none !important;box-shadow:none !important;margin:0 !important;
    page-break-after:always !important;break-after:page !important}
  body.pprint .kt-sheet:last-child .kt-paper{page-break-after:auto !important;break-after:auto !important}
}

/* 📦 ══ 2026-09-10 b413 先生の指示: 設定に「物品在庫表」(ヒアルロン酸) ══
   4つの段(在庫 / 予定消費 / 納入予定 / 記入+台帳)を1枚に。説明文の帯は置かない・1件=1行・✕は左上。
   在庫の「残」(予定を引いた後)がマイナスなら赤(.ng)。本数が未記入の予定の行は薄く(.zk-un) */
.zkw{padding:16px 10px}
.zkw-in{background:#fff;border-radius:12px;width:min(940px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column;
  box-shadow:0 18px 50px rgba(10,25,45,.4);overflow:hidden}
.zkw .zk-sub{font-size:12px;color:#5b6773;white-space:nowrap}
.zkw-body{overflow:auto;padding:8px 10px 12px}
.zk-tbl{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:8px}
.zk-tbl th{background:#f6f8fa;border:1px solid #d5dde5;padding:2px 4px;font-weight:600;color:#3b4652;white-space:nowrap}
.zk-tbl td{border:1px solid #d5dde5;padding:1px 3px;text-align:center;white-space:nowrap;height:24px}
.zk-st td{min-width:30px}
.zk-st tbody th{text-align:left}
.zk-st .zk-krow th{font-weight:700}
.zk-st .zk-brow th{font-weight:400;color:#6b7784;padding-left:14px}
.zk-st .zk-brow td{color:#6b7784}
.zk-now{font-weight:700}
.zk-pl{color:#6b7784}
.zk-rest{font-weight:700;background:#f4f9f4}
.zk-tbl td.ng,.zk-tbl td.zk-rest.ng{color:#c0392b}
.zk-use td.zk-nm,.zk-use td.zk-ops{text-align:left;max-width:210px;overflow:hidden;text-overflow:ellipsis}
.zk-use tr.zk-un td.zk-nm{color:#6b7784}
.zk-tbl select{font-size:12px;padding:1px 2px;border:1px solid #cfd9e6;border-radius:4px;background:#fff}
.zk-tbl select.zk-k{width:106px}
.zk-tbl select.zk-b{width:82px}
.zk-n{width:46px;font-size:12px;padding:1px 3px;border:1px solid #dde4ec;border-radius:4px;text-align:center}
.zk-d{width:92px;font-size:12px;padding:1px 3px;border:1px solid #dde4ec;border-radius:4px;text-align:center}
.zk-note{width:100%;min-width:90px;font-size:12px;padding:1px 4px;border:1px solid #dde4ec;border-radius:4px}
.zk-tbl .zk-empty{color:#8a97a5}
.zk-ord tr.zk-done td{color:#6b7784}
.zk-ok{color:#1b7a4b;font-weight:700}
.zk-a{cursor:pointer;color:#1e6fe0;padding:0 3px}
.zk-a.zk-del{color:#8a97a5}
.zk-tbl button.pri{padding:2px 8px;font-size:12px;width:auto;min-width:0}
.zk-form{display:flex;gap:5px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.zk-form select{font-size:12px;padding:2px 4px;border:1px solid #cfd9e6;border-radius:4px;background:#fff}
.zk-form select.zk-k{width:88px}
.zk-form select.zk-t{width:74px}
.zk-form .zk-note{flex:1;min-width:120px}
.zk-form button.pri{padding:3px 10px;font-size:12px;width:auto;min-width:0}
.zk-log{font-size:11px;color:#5b6773}
.zk-log td{height:20px;border-color:#e6ecf2}
.zk-log td.zk-lgn{font-weight:700;color:#25313c}
.zk-log td.zk-ops{text-align:left;max-width:220px;overflow:hidden;text-overflow:ellipsis}
.zk-log td.zk-by{color:#8a97a5}

/* ══ 🗓 2026-09-07 b343 先生の指示: 予約ボード上部(8時)にその日のNS人数・受付人数・休みを出す ══
   .cal-shift   = 各院の最初の列の 8:00 の行に置く薄い黄色の帯(枠と同じ幅・pointer-events:none で下の枠・空きを押せる)
   .cal-shift-t = 文字(10.5px)。ここだけ押せて、その院・その月のシフト表へ。備考は2行目に小さく
   説明文の帯は置かない・省スペース。7日表示は列が狭いので文字を小さく(短い形「NS3/受付2」は画面側) */
.cal-shift{position:absolute;left:0;right:0;z-index:2;pointer-events:none;background:rgba(255,238,140,.55);border-top:1px solid #e6cf5a;padding:0 2px;line-height:1.25}
.cal-shift-t{display:inline-block;max-width:100%;pointer-events:auto;cursor:pointer;font-size:10.5px;font-weight:600;color:#5a4a00;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:top}
.cal-shift-t:hover{text-decoration:underline}
.cal-shift-t small{display:block;font-size:9px;font-weight:400;color:#6b5a10;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-grid.multi .cal-shift-t{font-size:9.5px}
.cal-grid.multi .cal-shift-t small{font-size:8.5px}

/* ══ 📝 2026-09-08 b364 先生の指示: 検査データの画像に「メモ窓」と「ペン」・保存でメモごと画像に焼く ══
   .fprev.imgmemo = 掴める窓(✕は左上=PrevWin の作法)。高さは中身なり(画像+メモ板が収まる縮尺)。
   帯は1行: 題名 / ✏╱⌫✋ / 色3つ・細太 / ↶ 全消し / 保存。説明文は置かない
   .imw-img = 画像(ホイールで拡大・✋でずらす) / .imw-pen = 透明なペン層 / .imw-board = メモ板(白・罫線と□は canvas)
   カード: .imemo = 「✎ メモ」(採血結果/培養結果だけ) / .imemo.done = 「📝 メモ済」 / .imk = 焼いた画像の印 */
.fprev.imgmemo{z-index:2100;height:auto;max-height:calc(100vh - 52px)}
.fprev.imgmemo .fprev-bar{gap:6px;flex-wrap:nowrap}
.fprev.imgmemo .fprev-bar .imm-t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}
/* 📌 b365: 道具の帯は .imtb にまとめ、掴める窓の帯(.fprev-bar)にも 🧪の窓の道具の段(.imw-tools)にも同じ物を置く */
.imtb{display:flex;flex:1;gap:6px;align-items:center;min-width:0;white-space:nowrap}
.imtb .imt{display:inline-flex;gap:3px;align-items:center;padding-left:6px;border-left:1px solid #dbe3ea}
.imtb .imt button{min-width:26px;height:24px;padding:0 6px;border:1px solid #c5d2de;background:#fff;color:#2b3a49;border-radius:5px;cursor:pointer;font-size:12.5px;line-height:1;white-space:nowrap}
.imtb .imt button.on{background:#1f3d5c;color:#fff;border-color:#1f3d5c}
.imtb .imt button:disabled{opacity:.4;cursor:default}
.imtb .imt .sw{width:18px;height:18px;min-width:0;padding:0;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #b6c3cf}
.imtb .imt .sw.on{box-shadow:0 0 0 2px #1f3d5c}
.imtb .imsave{margin-left:auto;background:#1b7a4b;border:1px solid #1b7a4b;color:#fff;font-weight:800}
.imtb .imsave:disabled{opacity:.5}
.imtb .imreset{height:24px;padding:0 8px;border:1px solid #c5d2de;background:#fff;color:#2b3a49;border-radius:5px;cursor:pointer;font-size:12px;line-height:1;white-space:nowrap}
.imtb .imreset:disabled{opacity:.4;cursor:default}
.imtb .err{margin:0;font-size:12px}
.imw-tools{display:flex;align-items:center;padding:5px 10px;border-bottom:1px solid #e3eaf1;background:#fbfcfd;font-size:13px;flex:none}
.fprev.imgmemo .empty,.imw-body.empty{padding:24px;text-align:center;color:#8a97a5}
.imw-body{display:flex;justify-content:center;background:#1a222b;overflow:hidden;flex:none}
.imw-img{position:relative;overflow:hidden;background:#222;flex:none}
.imw-stage{position:absolute;left:0;top:0;transform-origin:center center;will-change:transform}
.imw-stage img{display:block;width:100%;height:100%;user-select:none;-webkit-user-select:none;pointer-events:none}
.imw-pen{position:absolute;left:0;top:0;width:100%;height:100%;touch-action:none;cursor:crosshair}
.imw-pen.hand{cursor:grab}
.imw-pen.erase{cursor:cell}
.imw-pen.text{cursor:text}
/* 📌 b365: メモ板は写真の上に浮かぶ(実座標 pos)。縁と見出し列を掴んで動かせる */
.imw-board{position:absolute;background:#fff;overflow:hidden;outline:1px solid #333;box-shadow:0 3px 12px rgba(0,0,0,.4);z-index:2}
.imw-board canvas{position:absolute;left:0;top:0;display:block}
/* 📌 b557: 既定のペンでもメモ板の上は「掴んで動かす」(線は引かない)ので、板の上だけカーソルを move にする
   (先生の逐語「バクトロバン塗布などの書かれた板も掴んで動かせるし」)。写真の上は今までどおり crosshair */
.imw-board .imw-pen.hand,.imw-board .imw-pen.pen{cursor:move}
/* 📌 b405(2026-09-10 先生の逐語「画面の任意の箇所を掴んでウインドウ内で画像を動かせるようにして下さい」):
   スペースキーを押している間だけ .imw-stage に .grab が付く。カーソルが✊になり(道具は変わらない=ペンのまま)、
   メモ板の掴み手・文字箱・記入欄は素通しになる → 写真のどこを押しても掴んで動かせる。離せば元どおりペン。
   ⚠️ 中ボタン(ホイール押し込み)のドラッグでも同じことができる(そちらはCSS不要)。案内文・帯は足さない(先生の好み) */
.imw-stage.grab .imw-pen,.imw-stage.grab .imw-board .imw-pen,.imw-stage.grab .imw-grip,.imw-stage.grab .imw-tb{cursor:grab}
.imw-stage.grab .imw-grip,.imw-stage.grab .imw-tb,.imw-stage.grab .imw-txt{pointer-events:none}
.imw-stage.grab .imw-pen:active,.imw-stage.grab .imw-board .imw-pen:active{cursor:grabbing}
/* 📌 b367: メモ板の掴み手 = 板の上辺の細い帯(薄いグレー・左に ⠿・右端に「移動」・cursor:grab)。板の直前に置き、焼かない。
   帯か板にホバーすると板の枠が少し濃くなる(掴めると分かる) */
.imw-grip{position:absolute;z-index:2;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;padding:0 6px;background:#e6ebf0;color:#5b6773;font-size:11px;line-height:1;outline:1px solid #333;cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none;white-space:nowrap;overflow:hidden}
.imw-grip:active{cursor:grabbing}
.imw-grip:hover,.imw-grip:hover+.imw-board,.imw-board:hover{outline:2px solid #000}
/* 📌 b365: 写真の上の文字箱(メモ板より前面)。選ぶと点線、打っている間は入力欄 */
.imw-tb{position:absolute;z-index:3;white-space:pre;line-height:1.2;margin:0;padding:0;cursor:move;user-select:none;-webkit-user-select:none;touch-action:none;font-family:"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;font-weight:700}
.imw-tb.sel{outline:1px dashed #1a5fb4;outline-offset:1px}
.imw-tb.edit{border:0;outline:1px solid #1a5fb4;background:rgba(255,255,255,.75);cursor:text;user-select:text;-webkit-user-select:text;box-sizing:content-box}
.imw-txt{position:absolute;border:0;outline:0;background:transparent;padding:0 4px;color:#111;box-sizing:border-box;font-family:"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif}
.imgtop{display:flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden}
.imgtop .flabel{overflow:hidden;text-overflow:ellipsis}
.imemo{flex:none;font-size:11px;font-weight:700;color:#1a5fb4;cursor:pointer;border:1px solid #bcd3ee;background:#eef5fd;border-radius:5px;padding:0 5px;line-height:1.6}
.imemo:hover{background:#e3f0ff}
.imemo.done{color:#1b7a4b;border-color:#bfe3c9;background:#e6f4ea}
.imk{flex:none;font-style:normal;font-size:12px}
.pv-memo{margin-left:6px}
.fprev.labprev .fprev-bar .labmemo{color:#1a5fb4;font-weight:700;border:1px solid #bcd3ee;background:#eef5fd;border-radius:6px;padding:3px 8px;font-size:12px}
/* 📌 b365: 🧪の窓の道具の段は掴む帯ではない(cursor は普通) */
.fprev.labprev .imw-tools{cursor:default}

/* ═══ 👁 2026-09-13 b448 見え方テスト(管理者だけ・見るだけ) ═══
   ・.vachip = 上のバーの名前の右に出す**短い札1つ**(帯・説明文は足さない)
   ・.vawin  = 相手を選ぶ小さな窓(✕は左上・名前/職種/院の3列) */
.nuser .vachip{display:inline-block;margin-left:5px;padding:0 5px;border-radius:9px;background:#f6c445;color:#3b2f00;font-size:10.5px;font-weight:700;line-height:1.6;vertical-align:1px;white-space:nowrap}
.vawin .va-q{width:100%;box-sizing:border-box;margin:0 0 6px;padding:5px 8px;border:1px solid #c8d2dc;border-radius:7px;font-size:13px}
.vawin .va-tbl{width:100%;border-collapse:collapse;font-size:13px;max-height:none}
.vawin .va-row{cursor:pointer}
.vawin .va-row:hover{background:#eef5fd}
.vawin .va-row td{padding:4px 6px;border-bottom:1px solid #eceff3;white-space:nowrap}
.vawin .va-nm{font-weight:700;color:#25313c}
.vawin .va-jb{color:#5b6773}
.vawin .va-cl{color:#8794a1;text-align:right}

/* ═══ 📣 2026-09-14 b461 SNS(#/sns)= 黒いバーはそのまま、その下に Command Center を枠で出す ═══
   ・main は余白を取らず、枠を残り全部の高さにする(黒いバーは .mnav のまま上に残る)
   ・.snsng = 枠の**裏**に置く短い一言。枠が描けたら隠れる(真っ白にしないための備え。説明の帯は置かない)
   ・.snsout = 右上の小さな逃げ道。枠の中は Command Center の別ログインなので、入れない時はここから別のタブへ */
main.snsmain{display:flex;flex-direction:column;padding:0;max-width:none}
/* 📣 2026-09-16 「📣 SNS」に1秒以上乗せた時に出る「今の広告」の小窓 */
.nd-snsw{position:relative;display:inline-flex}
.nd-snsw .snspop{position:absolute;top:100%;left:0;z-index:60;margin-top:4px;padding:6px 8px;background:#1f2b36;
  border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.28);white-space:nowrap}
.nd-snsw .snspop-h{color:#cfe0f0;font-size:10.5px;margin-bottom:4px}
.nd-snsw .snspop-n{color:#cfe0f0;font-size:11px}
.nd-snsw .snspop-g{display:flex;gap:4px}
.nd-snsw .snspop-i{position:relative;width:44px;height:44px;border-radius:5px;overflow:hidden;background:#33424f}
.nd-snsw .snspop-i img{width:44px;height:44px;object-fit:cover;display:block}
.nd-snsw .snspop-x{width:44px;height:44px}
.nd-snsw .snspop-d{position:absolute;left:0;right:0;bottom:0;background:rgba(138,99,0,.92);color:#fff;
  font-size:8.5px;text-align:center;line-height:12px}
.snswrap{position:relative;flex:1;min-height:420px;background:#eef1f5}
.snswrap .snsframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.snswrap .snsng{position:absolute;top:12px;left:14px;z-index:0;color:#5b6773;font-size:13px}
.snswrap .snsout{position:absolute;top:8px;right:12px;z-index:2;font-size:11.5px;color:#25313c;text-decoration:none;
  background:rgba(255,255,255,.92);border:1px solid #c8d2dc;border-radius:6px;padding:2px 8px;line-height:1.7}
.snswrap .snsout:hover{background:#fff;border-color:#8fa6bd}

/* ═══ 🪟 2026-09-21 b551 2画面モード(左=予約ボード / 右=それ以外) ═══
   先生の逐語「LINE問い合わせを捌いている時に、**予約ボードと患者トップを１画面で見られたら嬉しい**です。
     画面を左右二つに分断することができるようして欲しいです。…**左は予約ボード、右はそれ以外**といったように
     して欲しいです。予約ボードは左がいいかもです。(**狭くなると思うので、左右スクロールで、見えない箇所も
     出てくるように**。) **LINEウインドウは左右の画面とは独立して、左右に跨ることができる**ように。」
   ⚠️ **切の時の画面を1pxも変えない**のがこの一式の第一条件。そのため入れ物(.tpwrap)は既定で
      display:contents = 箱を1つも作らない(main は今までどおり .app の直接の子として並ぶ)。
      色・余白・貼り付きを変える決まりは**すべて .app.twopane の中**に閉じてある
   ・LINEの大窓(.linebw)は position:fixed・z-index 2000 で、この入れ物の**外**に浮いている。
     だから左右の境目を跨いで置ける・掴んで動かせる・幅のピル(27/52/77%)も今までどおり(1行も足していない) */
.tpwrap{display:contents}
/* 入の時だけ: 画面の高さに収め、左右それぞれが自前でスクロールする器になる */
.app.twopane{height:100vh;min-height:100vh;overflow:hidden}
.app.twopane .tpwrap{display:flex;flex:1;min-height:0;align-items:stretch}
/* 左=予約ボード。幅は main.tsx が % で入れる(既定50=半々)。縦も横もこの区画の中でスクロールする
   (先生の「狭くなると思うので、左右スクロールで、見えない箇所も出てくるように」) */
.app.twopane .tp-l{min-width:0;overflow:auto;-webkit-overflow-scrolling:touch;padding:14px 14px 40px;background:#f7f9fb}
/* 右=それ以外の画面(今までの main)。中身の作りは1つも変えず、器だけを右半分にする */
.app.twopane main{flex:1 1 0;min-width:0;width:auto;max-width:none;margin:0;overflow:auto;-webkit-overflow-scrolling:touch}
/* 境目の取っ手。掴むと幅が変わる(b322 の裏書きの板と同じ流儀)。説明文・帯は置かない */
.tp-rs{flex:0 0 6px;width:6px;cursor:col-resize;touch-action:none;user-select:none;-webkit-user-select:none;
  background:#dde4ec;position:relative;z-index:1}
.tp-rs:hover{background:#1e6fe0;opacity:.45}
/* 貼り付く帯(予約ボードの操作の行・患者トップの見出し)は、画面の上の黒いバーではなく**その区画の上端**に貼る。
   --navh を0にすると .cal-fixhead{top:var(--navh,44px)} がそのまま区画の上端に来る
   (列名の帯の --chtop / 右パネルの --pstop は main.tsx の測り方が同じ0を使う) */
.app.twopane .tp-l,.app.twopane main{--navh:0px}
.app.twopane .psticky{top:0}

/* ═══ 💬 2026-09-22 b556 2画面モードでLINEの大窓が患者トップの下に潜り込むのを直す ═══
   先生の逐語「**2画面モードで、表示が変になる(LINEウインドウが患者トップの一部の下に潜り込む？)直して欲しい**です。」

   ── 実測した本当の原因(b551 の跨ぎ方ではなかった) ────────────────────────
   本物のChrome(1500×1000)で測ると、大窓の上に来ていたのは
     `.psticky.pst-front`(z-index **900**) — 患者の名前の帯・タブの帯が入っている貼り付く帯。
   その時の大窓は `.linebw.lbw-under`(z-index **800**)に下がっていた。
   これは b445 の「ひもづけ窓を開けている間だけ**重なりの順を入れ替える**」決まり(app.css 2612行・4272行)で、
   **ひもづいていない患者**の患者トップでは b314 によりひもづけ窓が**自動で開く**ため、
   患者トップを出すだけで大窓が 800 に下がっていた(WEB問診の窓 .modal-bg=1200 が大窓を覆うのも同じ理由)。

   ── 直し方(上げるのは必要な所だけ・新しく上へ出る物は1つも作らない) ──────────
   2画面モードの時だけ、この入れ替えを**やめて元の数字に戻す**(帯 35 / 大窓 2000)。
   ・新しい大きな数字は1つも足していない = b507→b518 の「z-indexを上げたら押せなくなった」型の実害が出ない
   ・決まりは全部 `.app.twopane` の中 = **1画面の時の重なりは1pxも変わらない**(b445 は1画面では今までどおり)
   ⚠️ 引き換えに、2画面の時はひもづけ窓が大窓と重なると後ろに回る。ひもづけは大窓の中の
      「既存カルテに紐づける」から行える(大窓は掴んで動かせる・幅も変えられる) */
.app.twopane .psticky.pst-front{z-index:35}
.app.twopane .linebw.lbw-under{z-index:2000}

/* ═══ 📏 2026-09-22 b559 さらに省スペース(先生の逐語) ═══
   「2画面モードにして、さらに省スペースを目指したく、
     ①『DAYLIGHT KARTE-Phase0』などの文字は撤去でお願いします。**この行も撤去して、上に詰めて**下さい。
     ②(バックアップ)の表示は、設定ボタン内の最下部に表示されるようにして下さい。(今の「倉庫」の下)
     ③また、『DAYLIGHT KARTE-Phase0』の行と2026年9月22日などの日付のあたりの間に、**予約ボードが裏に
       透けて見える無駄なスペースがあるので、これを撤去して、上に詰める**ようにお願いします。
     ④また、**「更新」ボタンはアイコンだけ**にして下さい。**「元に戻す」「やり直し」ボタンも今の半分くらいの
       大きさ**にして下さい。」

   ── 実測(本物のChrome 1500×1000) ──────────────────────────────
   ① 撤去した帯(.subbrand)の高さ = **28px**(1画面・2画面とも。スマホ幅ではもともと display:none)
   ③ 「透けて見える無駄なスペース」の正体 = 予約ボードを入れている器の**上の余白**
      ・2画面 … .app.twopane .tp-l の padding-top **14px**(上の帯と日付の行のあいだが実測14px)
      ・1画面 … main.wide の padding-top **14px**(同じ14px。先生は2画面で気づかれたが、原因は共通)
      どちらも、貼り付く帯(.cal-fixhead)は背景を持つのに、その**上の余白だけ背景が無く**、
      後ろでスクロールしている予約ボードがそのまま透けていた。→ 予約ボードの時だけ 0 にする
   ④ 更新 77.9×28.8px → 絵文字だけ(main.tsx で文字「更新」を出さない)
      ↶↷ 43×31px → **30×22px**(面積で約半分)。見た目だけ小さくし、押し所は ::before で 44×44px に保つ
      (b542④⑤ と同じ手。広げ幅は隣との隙間の中に収める = 隣の押し所を横取りしない)
   ⚠️ .subbrand の決まり自体は消していない(帯を出す場所が1つも無くなったので働かない)。
      消すと、他の担当が同じ時間に触っている所と衝突しうるため、本文だけ撤去した */

/* ③ 予約ボードの頭の上の余白を 0 に(2画面=左の区画 / 1画面=予約ボードの画面。どちらも同じように効く)。
   ・患者トップ・ドクター表・シフト表の main.wide は今までどおり 14px のまま(.calpage の時だけ 0)
   ・下と左右の余白(14px 14px 40px)は1pxも変えていない */
.app.twopane .tp-l{padding-top:0}
.app.calpage > .tpwrap > main.wide{padding-top:0}

/* ② バックアップの札を ⚙設定メニューのいちばん下(📁倉庫の下)に置く。説明文・案内の帯は足さない */
.nd-setmenu .nd-bk{display:block;padding:7px 16px 5px}
.nd-setmenu .nd-bk .bkbadge{margin-left:0}

/* ④ ↶元に戻す / ↷やり直し を「今の半分くらいの大きさ」に(実測 43×31px → 30×22px = 面積で約半分)。
   ・見た目だけ小さくし、**押し所(当たり判定)は ::before で 44×44px** を確保する(b542⑤ と同じ手)
   ・⚠️ ::before の元になる箱は border box ではなく **padding box**(30×22px の内側 = 28×20px)。
     44px にするには外側へ 8px / 12px 広げる(28+8+8=44 / 20+12+12=44)。ここを 7/11 にすると 42×42 になる
   ・左右に 8px 広げるので、隣との隙間もそれに合わせる。.cal-head の gap は 6px(この css 2793行)なので、
     このボタンに margin 0 4px を付けて隙間を 4+6+4=**14px** にした。↶と↷の押し所は 7+7 で
     **ちょうど接するだけ**(重ならない = 隣の押し所を横取りしない)。🔄 と 予約種類 との隙間は 4+6=10px で、
     向こう側は押し所を広げていないので食い込まない
   ・上下は padding box から 12px(border box からは 11px)。上は .cal-head の余白5px + .cal-fixhead の
     余白2px の中に収まり(=帯の外へ出ない)、下は .cal-head の margin-bottom 6px の中に収まる
   ・title(何のボタンか分かる説明)は main.tsx 側でそのまま残してある */
.cal-head .cnav.und{position:relative;padding:2px 6px;margin:0 4px;font-size:0;line-height:0}
.cal-head .cnav.und .undoic{width:16px;height:16px}
.cal-head .cnav.und::before{content:'';position:absolute;left:-8px;right:-8px;top:-12px;bottom:-12px}

/* ══ 🌐 2026-09-23 b584 外部サイト(HOT PEPPER Beauty / トリビュー / 口コミ広場)の一覧 ══
   ・一覧の行は LINE の .lib-row をそのまま使う(高さ 89.04px・氏名 13.5px・日時・緑丸は1文字も変えていない)
   ・社の札(.ext-site)はアイコン(.lav-l = 48.45px)と同じ大きさの丸に置く=行の高さは変わらない
   ・「外部サイト」のピル(.lcpick.cl-ext)に新しい色は足さない(オペ患と同じ=選ぶと「全」と同じ濃いグレー)
   ・説明文・案内の帯は置かない(院長の好み) */
.ext-site{display:flex;flex-direction:column;align-items:center;justify-content:center;width:48.45px;height:48.45px;border-radius:50%;
  background:#f1f4f7;font-style:normal;font-size:8px;line-height:1.1;font-weight:700;color:#5c6b7a;text-align:center;white-space:normal;word-break:keep-all;overflow:hidden}
.ext-site .ext-sm{display:block;font-size:13px;line-height:1.1;margin-bottom:1px}
.ext-site.ext-hpb{background:#fff0e6;color:#c2410c}
.ext-site.ext-tribeau{background:#eef2ff;color:#4338ca}
.ext-site.ext-kuchikomi{background:#ecfdf5;color:#047857}
.lib-head.ext-head{gap:8px;flex-wrap:nowrap}
.lib-head.ext-head b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ext-kindtag{font-size:11px;color:#5c6b7a;white-space:nowrap}
.ext-btns{margin-left:auto;display:inline-flex;gap:6px;flex:0 0 auto}
.ext-btns .mini{white-space:nowrap}
.ext-doneb.on{background:#e6f7ec;border-color:#9fd6b2;color:#1f7a44}
.ext-body{flex:1;min-height:0;overflow:auto;padding:8px 12px}
.ext-msg{margin:0 0 8px;padding:8px 10px;background:#f4f6f8;border-radius:10px;font:inherit;font-size:13px;line-height:1.45;white-space:pre-wrap;word-break:break-word}
.ext-tbl{border-collapse:collapse;width:100%;font-size:12.5px}
.ext-tbl th{text-align:left;vertical-align:top;white-space:nowrap;padding:3px 10px 3px 0;color:#5c6b7a;font-weight:600;width:1%}
.ext-tbl td{padding:3px 0;white-space:pre-wrap;word-break:break-word;color:#243b53}
/* 📐 2026-09-25 b619 院長の逐語「左の患者一覧、真ん中のやり取りメッセージ領域、右の患者情報領域…三つに分かれるように…
   三つの横幅もほとんど他の院の表示と同じに」→ .lib-ext も LINE と同じ .lib-left / .lib-right / .lib-side を持つので、
   列の取り分は LINE の決まり(.lib-right{flex:2 1 12px} / .lib-sw>.lib-right{flex-basis:calc(4.5em + 39px)} / .lib-sw>.lib-left{flex-basis:1.5em} /
   .linebw:not(.plinewin) .lib-sw>.lib-side{flex-basis:38px} / .lib-z2>.lib-left・.lib-z2>.lib-side{flex:1.15 1 0%;min-width:230px})が**そのまま**効く。
   b584 で入れていた「.lib-ext の右の列は flex:2 1 0%」は外した(3列の取り分を LINE と同じにするため) */
/* 💬 b619: 通知の項目の吹き出し(最初の受信)。受信の吹き出し(.ext-in)と同じ形。1行=「項目名: 値」 */
.ext-notice{margin-top:2px}
.lib-right .ext-notice .lbub:not(.lbare){max-width:86%}
.ext-notice .ext-fr{display:block;font-size:14.04px;line-height:1.312;white-space:pre-wrap;word-break:break-word}
.ext-notice .ext-fr b{font-weight:700;color:#42566b}
.ext-notice .ext-msg{margin:0 0 4px;padding:0;background:none;font-size:14.04px;line-height:1.312}
/* 🪪 b619: 右の列(.lib-side)の中身。上=相手(氏名・社・種類・院)+ボタン / 短い項目 / 定型文のピル(折り返し=右の列の幅に収まる) */
.ext-prof .ext-kindtag{display:block;text-align:center}
.ext-prof .ext-btns{margin:4px 0 0;flex-wrap:wrap;justify-content:center;gap:4px}
.ext-sideinfo{flex:0 0 auto;padding:0 8px;overflow:auto;max-height:40%}
.ext-side .ext-tpls{flex:0 0 auto;flex-wrap:wrap;overflow:visible;padding:0 8px 8px}
/* 📋 b619: 外部サイト用の本文の上書きがあるピルの印(縁の色1つだけ) */
.ext-tpl.ovr{border-color:#f59e0b}
/* ⋮ b619: 外部サイトの行は全部に緑の丸(.lib-unread=絶対配置・DOM で後ろ)が付くので、そのままだと ⋮ の真上に丸が乗って押せない。
   ⋮ が出ている間(ホバー・開いている時)だけ ⋮ を丸より上に(外部サイトの行だけ。LINE の行の決まりは触らない) */
.lib-ext .lib-row:hover .lib-dots,.lib-ext .lib-dots.on{z-index:2}
/* 🚪 b619: 一時離脱の行=薄い灰色の覆い(押せる・⋮も出る)。仕切りの横線は LINE の下の組と同じ .lib-gsep */
.lib-row.ext-away::after{content:'';position:absolute;inset:0;background:rgba(120,131,143,.18);pointer-events:none;z-index:1}
.lib-row.ext-away .lib-dots,.lib-row.ext-away .lib-menu{z-index:6}
/* 📋 b619: 「外部サイト用の本文を編集」の小窓(画面の真ん中・×は左上) */
.ext-tplbody-bg{background:rgba(20,35,55,.18);display:flex;align-items:center;justify-content:center}
.ext-tplbody{width:min(520px,92vw);background:#fff;border:1px solid #c6d0da;border-radius:10px;box-shadow:0 8px 24px rgba(20,40,60,.28);padding:8px 10px 10px;display:flex;flex-direction:column;gap:6px}
.ext-tplbody-h{display:flex;align-items:center;gap:8px;min-width:0}
.ext-tplbody-h b{font-size:13px;white-space:nowrap}
.ext-tplbody-t{font-size:12px;color:#5c6b7a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.ext-tplbody-x{flex:0 0 auto;width:22px;height:22px;line-height:22px;text-align:center;border-radius:5px;font-size:17px;color:#5c6b7a;cursor:pointer;text-decoration:none!important;user-select:none}
.ext-tplbody-x:hover{background:#e8eef5;color:#1b2b3a}
.ext-tplbody-ta{width:100%;box-sizing:border-box;min-height:220px;max-height:60vh;padding:7px 10px;font-size:13.5px;line-height:1.5;font-family:inherit;border:1px solid #c7d0d9;border-radius:6px;resize:vertical}
.ext-tplbody-b{justify-content:flex-end}
/* 🪪📧 2026-09-23 b586 第3段+第4段
   ・ext-regtag = 一覧の行の「カルテ登録済み」の小さな札(2行目・緑の丸の左。行の高さは変えない)
   ・ext-reg    = 登録パネル(LINE の .lib-reg と同じ部品。真ん中の上に置くので幅だけ抑える)
   ・ext-mails  = こちらから送った文(LINE の吹き出し .lmsg.out と同じ形。失敗は .lperr の赤)
   ・ext-send   = 返信欄(LINE の .lib-send と同じ部品)。ext-to = 宛先を大きく(手入力欄は無い)。ext-tpls = 既存の定型文のピル
   ・ext-hole / ext-senderr = 穴が残る・送れなかった時の赤い1行(説明文の帯は足さない) */
.ext-regtag{flex:0 0 auto;margin-left:6px;font-size:10px;line-height:14px;padding:0 5px;border-radius:7px;background:#e6f7ec;color:#1f7a44;border:1px solid #9fd6b2;white-space:nowrap}
.ext-note{margin:0;padding:6px 12px;font-size:12px;color:#1f7a44;background:#e6f7ec}
.ext-reg{max-width:440px;margin:0 0 10px}
/* b619: 上に通知の吹き出し(.ext-notice)が来たので、点線の仕切りは外した(1本のやり取りとして並ぶ) */
.ext-mails{margin-top:0}
.lib-right .ext-mails .lmsg.out .lbub:not(.lbare){max-width:86%}
.ext-send .ext-to{font-size:14.5px;padding:6px 2px 2px;color:#243b53;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ext-send .ext-to b{font-size:16px;font-weight:800;letter-spacing:.2px}
.ext-send .ext-tono{margin-left:8px;font-style:normal;font-size:11px;font-weight:700;color:#d93025}
.ext-tpls{display:flex;gap:4px;overflow-x:auto;padding:2px 0 4px;scrollbar-width:thin}
.ext-tpl{flex:0 0 auto;font-size:11px;line-height:20px;padding:0 9px;border-radius:10px;border:1px solid #b9c6d3;background:#fff;color:#243b53;cursor:pointer;white-space:nowrap}
.ext-tpl:hover{background:#eef3f8}
.ext-hole,.ext-senderr{font-size:11.5px;font-weight:700;color:#d93025}
.ext-senderr{padding:2px 2px 0}
/* 📮 2026-09-23 b591 「送ったのに届かなかった」に気づけるように(院長のご報告)
   ・ext-bouncetag = 一覧の行の赤い札「届かず」。大きさは「カルテ登録済み」の札と同じ=**行の高さは変わらない**
   ・ext-warn      = 送る前の小さな注意(過去に届かなかったドメイン)。1行だけ・帯は作らない・送信は止めない
   ・届かなかった吹き出しは既存の .lperr(送信に失敗した時と同じ赤)をそのまま使う=新しい色を足さない */
.ext-bouncetag{flex:0 0 auto;margin-left:6px;font-size:10px;line-height:14px;padding:0 5px;border-radius:7px;background:#fdecea;color:#c5221f;border:1px solid #f2a9a4;font-weight:700;white-space:nowrap}
.ext-warn{font-size:11.5px;font-weight:700;color:#b26a00;padding:1px 2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ext-send textarea{min-height:110px}
/* 💬 2026-09-24 b611 相手(患者本人)からの返信(院長のご報告「相手から返信来てるのに、LINE側ウインドウへ反映されてない」)
   ・ext-in    = 受信の吹き出し。LINE の受信と同じ(.lib-right の .lmsg = 左寄せ・.lbub = 灰色 #f1f2f4)。新しい色は足さない
   ・ext-qtog  = 吹き出しの中の小さな「▼ 引用」(押すと下に引用が開く)。説明文の帯は足さない
   ・ext-quote = 開いた引用(薄い字・点線の上線)。閉じている間は無い */
.lib-right .ext-mails .lmsg.in .lbub:not(.lbare){max-width:86%}
.ext-in .ext-qtog{display:block;margin-top:3px;font-size:10.5px;color:#6b7a89;cursor:pointer;user-select:none}
.ext-in .ext-qtog:hover{color:#243b53}
.ext-in .ext-quote{margin:4px 0 0;padding:4px 0 0;border-top:1px dashed #cfd6dd;font:inherit;font-size:11.5px;line-height:1.4;color:#6b7a89;white-space:pre-wrap;word-break:break-word;max-height:220px;overflow:auto}
.ext-sendcfg{margin-top:12px;padding-top:10px;border-top:1px dashed #d8e0e8}
.ext-sendcfg .lstok{margin-bottom:8px}
.ext-sendcfg .ext-sc2{align-items:center;flex-wrap:wrap}
.ext-sendcfg .ext-sc2 label{display:flex;align-items:center;gap:6px;font-size:12px;color:#42566b;flex:1 1 auto}
.ext-sendcfg .ext-sc2 label input{flex:1;min-width:0;font-family:inherit}
.ext-sendcfg .ext-sc2 label input[type=number]{flex:0 0 64px}

/* ═══ 🪟 2026-09-24 b608 2画面の仕切りをギリギリまで寄せられるように(先生の逐語) ═══
   「右の患者トップで患者さんの診療録書いている時、**左の予約ボードを覆い隠すほど左へ縮小したいので、
     2画面の真ん中の仕切りを、もっとギリギリまで左右へ動かせるようにして欲しい**です。」
   ・動かせる範囲は main.tsx の tpClamp(20〜80% → 左右とも 32px を残す所まで)が決める。
     ここは**その保険**: 窓の大きさが後で変わって覚えた%が溢れても、左は 32px より細くならず・
     右(main)も 32px は残る(=取っ手 6px が画面の外に出ない・掴んで戻せる)
   ・32px の根拠: 右の区画(main)は左右の余白(患者一覧 16+16px / wide 14+14px)より細くなれない。
     それより小さくすると main が画面の右端からはみ出す(実測 24px にした時 1504px まで出た)
   ・決まりは .app.twopane の中だけ = 1画面は1pxも変わらない。既定の半々(50%)には何も効かない */
.app.twopane .tp-l{min-width:32px;max-width:calc(100% - 38px)}

/* ═══ 🪟 2026-09-27 b648 左の予約ボードの名前を押したら右が 63.8% まで「伸びてくる」(先生の逐語) ═══
   「右の画面が、**ブラウザウインドウ幅の63.8%まで伸びてくる**ようにお願いします。」
   ・幅そのものは main.tsx(TP_OPEN_R_PCT・tpOpenFromBoard)が tpPct に入れる。ここは**伸びる動き**だけ:
     名前を押した時だけ .tp-l に data-glide が付き、flex-basis が 200ms(main.tsx の TP_GLIDE_MS と同じ)で動く。
     掴んで動かす時は付かない(指に遅れて見えないように)
   ・決まりは .app.twopane の中だけ = 1画面は1pxも変わらない */
.app.twopane .tp-l[data-glide]{transition:flex-basis .2s ease}
