/* 画面の見た目はここに集める。**外部CSSフレームワークを使わない。**
   色は必ず変数を通す（直接書くとダークモードが壊れる）。 */
:root{
  --bg:#f7f7f5; --surface:#fff; --surface2:#faf9f7; --grid:#e5e3df;
  --ink:#1c1b19; --ink2:#6b6862; --accent:#2f6f4f;
  --good:#2f7d4f; --warning:#a8790f; --serious:#b3402c; --muted:#9a968e;
  --radius:10px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#17181a; --surface:#1e2023; --surface2:#24262a; --grid:#33363b;
    --ink:#e9e8e6; --ink2:#9b9791; --accent:#6fbf90;
    --good:#6fbf90; --warning:#d6a63d; --serious:#e0705c; --muted:#7c7973;
  }
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:system-ui,-apple-system,"Hiragino Sans","Noto Sans JP",sans-serif;
  font-size:14px;line-height:1.7}
a{color:var(--accent)}
.wrap{display:flex;min-height:100vh}
.side{width:210px;flex:0 0 210px;background:var(--surface2);
  border-right:1px solid var(--grid);padding:16px 0}
.side h1{font-size:15px;margin:0 16px 2px}
.side .sub{font-size:11px;color:var(--ink2);margin:0 16px 16px}
.side .item{display:block;padding:7px 16px;color:var(--ink);text-decoration:none}
.side .item:hover{background:var(--surface)}
.side .item.active{background:var(--surface);border-left:3px solid var(--accent);
  padding-left:13px;font-weight:700}
.side .sec{font-size:10px;color:var(--muted);margin:14px 16px 4px}
.body{flex:1;min-width:0}
.top{display:flex;align-items:center;gap:10px;padding:10px 20px;
  border-bottom:1px solid var(--grid);background:var(--surface)}
.top .spacer{margin-left:auto}
.main{padding:20px;max-width:1200px}
.card{background:var(--surface);border:1px solid var(--grid);
  border-radius:var(--radius);padding:16px;margin-bottom:16px}
.card h2,.card h3{margin-top:0}
.tblwrap{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th,td{padding:7px 8px;border-bottom:1px solid var(--grid);text-align:left;
  vertical-align:top}
th{font-size:12px;color:var(--ink2);font-weight:600;white-space:nowrap}
/* 数字は右揃え・桁区切り。左揃えだと桁を目で追えない */
.num{text-align:right;font-variant-numeric:tabular-nums}
/* 入力欄と同じ高さにする（6+20+6+枠2 = 34px）。並べたときに段差が出ない */
.btn{display:inline-block;padding:6px 12px;border:1px solid var(--grid);
  border-radius:8px;background:var(--surface);color:var(--ink);
  text-decoration:none;cursor:pointer;font-size:13px;font-family:inherit}
.btn:hover{background:var(--surface2)}
.btn.active{border-color:var(--accent);font-weight:700}
.btn[disabled]{opacity:.5;cursor:not-allowed}
/* **input と select の枠の高さを揃える。**
   ブラウザ既定のまま並べると select だけ高さが違い、枠の上下がずれる。
   appearance:none で自前の見た目にし、余白と行の高さを1つに固定する。 */
input,select,textarea{padding:6px 9px;border:1px solid var(--grid);
  border-radius:7px;background:var(--surface);color:var(--ink);
  font-size:13px;font-family:inherit;line-height:20px;height:34px;
  -webkit-appearance:none;appearance:none;margin:0;vertical-align:top}
textarea{height:auto;min-height:56px;resize:vertical}
input[type=checkbox],input[type=radio]{height:auto;width:auto;
  -webkit-appearance:auto;appearance:auto}
/* select の下向き矢印を自前で描く（外部ファイルを読まない） */
select{padding-right:26px;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%236b6862' stroke-width='1.4'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 9px center;
  background-size:10px 6px}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) select{
    background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%239b9791' stroke-width='1.4'/%3E%3C/svg%3E")}
}
.btn{line-height:20px}
.field{display:grid;grid-template-columns:130px 1fr;gap:10px;
  padding:7px 0;border-bottom:1px solid var(--grid);align-items:center}
.field label{color:var(--ink2);font-size:12px}
.badge{display:inline-block;padding:1px 8px;border-radius:999px;
  border:1px solid var(--grid);font-size:11px;color:var(--ink2)}
.badge.warn{color:var(--serious);border-color:var(--serious)}
.flash{border:1px solid var(--serious);color:var(--serious);
  background:var(--surface);padding:10px 14px;border-radius:var(--radius);
  margin-bottom:14px}
.hint{font-size:11px;color:var(--ink2)}
/* インライン編集。**押せると分かる手がかりを出す** */
.ed{border-bottom:1px dashed var(--muted);cursor:pointer}
.ed:hover{background:var(--surface2)}
.ed.changed{background:var(--surface2)}
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);
  background:var(--ink);color:var(--surface);padding:8px 16px;
  border-radius:999px;opacity:0;transition:opacity .2s;pointer-events:none}
#toast.on{opacity:.95}

/* 横並びの操作列。折り返す（スマホで押せなくならないように） */
.bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.notice{border-left:3px solid var(--serious);background:var(--surface2);
  padding:10px 14px;border-radius:8px}
.hint.warn{color:var(--serious)}
details>summary{list-style:none;display:inline-block}
details>summary::-webkit-details-marker{display:none}

/* スマホ。**移動中・商談待ちに片手で使える形にする。**
   PCでしかできない作業を無くすのが目的なので、隠さず縦に積む */
@media (max-width:760px){
  .wrap{display:block}
  .side{width:auto;flex:none;border-right:none;border-bottom:1px solid var(--grid);
    padding:10px 0;display:flex;flex-wrap:wrap;align-items:center;gap:2px}
  .side h1{font-size:14px;margin:0 12px}
  .side .sub,.side .sec{display:none}
  .side .item{padding:6px 12px;font-size:13px}
  .side .item.active{border-left:none;border-bottom:2px solid var(--accent);padding-left:12px}
  .main{padding:12px}
  .card{padding:12px}
  /* 指で押せる大きさにする */
  .btn{padding:8px 14px;font-size:14px}
  /* 16px未満はiOSで勝手に拡大される。高さも指で押せる大きさにする */
  input,select,textarea{padding:9px 10px;font-size:16px;height:42px;line-height:22px}
  textarea{height:auto;min-height:70px}
  /* 項目名と値を縦に積む。横2列だと値が潰れる */
  .field{grid-template-columns:1fr;gap:2px;padding:10px 0}
  table{font-size:13px}
  th,td{padding:8px 6px}
}

/* 保存バー。**保存していない変更が残っていることを出す**（規約 §12） */
.savebar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:10px;
  background:var(--surface);border:1px solid var(--grid);border-radius:var(--radius);
  padding:10px 14px;margin-bottom:16px}
.savebar .state{color:var(--ink2);font-size:13px}
.savebar.dirty{border-color:var(--warning)}
.savebar.dirty .state{color:var(--warning);font-weight:700}
.savebar .spacer{margin-left:auto}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}
.btn.primary[disabled]{opacity:.45}
.btn.danger{color:var(--serious);border-color:var(--serious)}

/* 項目を3列で並べる。狭くなったら自動で減る */
.cols{display:grid;grid-template-columns:repeat(3,1fr);gap:0 24px}
.cols.two{grid-template-columns:repeat(2,1fr)}
/* 項目名は入力欄の高さに合わせて中央に置く。**枠の上端を揃える** */
.fld{display:grid;grid-template-columns:110px 1fr;gap:10px;align-items:center;
  padding:9px 0;border-bottom:1px solid var(--grid);min-width:0}
.fld>label{align-self:center}
.fld>label{color:var(--ink2);font-size:12px}
.fld input,.fld select,.fld textarea{width:100%;min-width:0}
.fld .ro{color:var(--ink2)}
.card>.lead{color:var(--ink2);font-size:12px;margin:-4px 0 12px}
.sec-danger{border-color:var(--serious)}
.sec-danger h3{color:var(--serious)}

@media (max-width:1000px){ .cols,.cols.two{grid-template-columns:1fr} }
@media (max-width:760px){
  .fld{grid-template-columns:1fr;gap:2px;padding:10px 0}
  .savebar{padding:8px 10px}
}

/* 契約は開いて編集する。**畳んでおく**（一度しか使わない補助機能は畳む／土台 §4.7） */
details.contract{border:1px solid var(--grid);border-radius:8px;padding:10px 12px;
  margin-bottom:10px;background:var(--surface2)}
details.contract[open]{background:var(--surface)}
details.contract>summary{cursor:pointer;list-style:none;display:block}
details.contract>summary::before{content:"▸ ";color:var(--ink2)}
details.contract[open]>summary::before{content:"▾ "}
details.contract>summary .hint{display:block;margin-top:2px}

/* まとまりの小見出し。カード内をさらに分ける */
.card h4{margin:22px 0 6px;font-size:13px;color:var(--ink2);
  border-bottom:1px solid var(--grid);padding-bottom:5px}
.card h4:first-of-type{margin-top:10px}

/* ボタンの文字を折り返さない。**枠の高さが変わって行がずれる** */
.btn{white-space:nowrap}

/* 郵便番号の行。入力欄・ボタン・説明を1行に並べる */
.zipline{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.zipline input{width:120px;flex:0 0 auto}
@media (max-width:760px){
  .zipline .hint{flex-basis:100%}
}

/* 画面には出さず、紙にだけ出すもの */
.printonly{display:none}

/* ===== 印刷 =====================================================
   **PDFはブラウザの印刷で作る**（設計指示書 §9.2 依存を増やさない）。
   PDF生成のライブラリを入れると、日本語フォントの同梱や
   追加パッケージが要り、先方の環境で動く条件が狭くなる。

   画面のまま印刷すると、左のメニューや操作ボタンまで紙に出る。
   **紙に要らないものを消し、白地に黒で出す。** */
@media print{
  :root{
    --bg:#fff; --surface:#fff; --surface2:#fff; --grid:#bbb;
    --ink:#000; --ink2:#444; --accent:#000; --muted:#666;
    --good:#000; --warning:#000; --serious:#000;
  }
  @page{ margin:14mm 12mm; }
  body{background:#fff;color:#000;font-size:10.5pt;line-height:1.6}

  /* 操作するためのものは紙に要らない。**読むためのものは残す。** */
  .side,.top,.savebar,.btn,#toast,.flash,.noprint{display:none !important}
  /* 追加・記録のための空フォームは紙に出さない */
  form[action$="/archive"],form[action$="/contracts"],form[action$="/touches"],
  form[action$="/client-comments"],form[action$="/relations"],
  form[action$="/introducer"]{display:none !important}
  /* 画面では隠しているが、紙には出したいもの */
  .printonly{display:block !important}

  .wrap{display:block}
  .body{margin:0}
  .main{padding:0;max-width:none}

  /* 折り畳みは開いた状態で出す。**畳んだまま印刷すると中身が消える** */
  details{display:block !important}
  details>*{display:revert !important}
  details>summary{list-style:none}
  details>summary::before{content:""}

  /* 枠は残すが、影や角丸は落とす */
  .card{border:1px solid var(--grid);border-radius:0;padding:8px 10px;
    margin:0 0 8px;break-inside:avoid;page-break-inside:avoid}
  .card h2,.card h3,.card h4{break-after:avoid;page-break-after:avoid}

  /* 入力欄は枠を消して、中身だけを文字として見せる */
  input,select,textarea{border:none;border-bottom:1px solid var(--grid);
    border-radius:0;padding:1px 0;height:auto;background:none;
    -webkit-appearance:none;appearance:none;color:#000}
  select{background-image:none;padding-right:0}
  textarea{min-height:0}
  input::placeholder,textarea::placeholder{color:transparent}

  .badge{border:1px solid var(--grid);color:#000}
  table{font-size:9.5pt}
  th,td{padding:4px 5px}
  thead{display:table-header-group}   /* 表が複数ページに渡っても見出しを出す */
  tr{break-inside:avoid;page-break-inside:avoid}

  /* リンクは押せないので、行き先を紙に出す */
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:8pt;color:#555}
  a{color:#000;text-decoration:none}
}
