/* FromU Soft UI V6 トークン（resources/design/soft-ui-master.md 準拠） */
:root{
  --bg-base:#eef2f6; --card-surface:#f4f7fb;
  --main-color:#11689c; --accent-color:#fba0af;
  --color-success:#2cb696; --color-error:#e57373; --color-warning:#ffb74d;
  --text-heading:#1e293b; --text-body:#334155; --text-muted:#64748b;
  --text-xs:12px; --text-sm:14px; --text-base:16px; --text-lg:20px; --text-xl:24px; --text-2xl:32px;
  --space-sm:8px; --space-md:16px; --space-lg:32px; --space-xl:64px;
  --radius-card:16px; --radius-pill:100px;
  --shadow-base:10px 10px 24px rgba(51,65,85,.08),-8px -8px 22px rgba(255,255,255,.9);
  --shadow-inset:inset 4px 4px 9px rgba(51,65,85,.10),inset -4px -4px 9px rgba(255,255,255,.85);
  --container:1100px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
  background:var(--bg-base); color:var(--text-body);
  font-family:'Inter','Noto Sans JP',system-ui,sans-serif;
  font-size:var(--text-base); line-height:1.6;
}

/* ヘッダー */
.appbar{
  display:flex; align-items:center; gap:var(--space-md); flex-wrap:wrap;
  padding:var(--space-md) var(--space-lg);
  background:var(--card-surface); box-shadow:var(--shadow-base);
}
.brand{display:flex; align-items:center; gap:10px; font-weight:700; color:var(--text-heading)}
.brand-name{font-size:var(--text-lg)}
.mark{
  display:grid; place-items:center; width:34px; height:34px; border-radius:10px;
  background:var(--main-color); color:#fff; font-weight:800;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.25);
}
.appbar-sub{color:var(--text-muted); font-size:var(--text-sm)}
.appbar-right{margin-left:auto; position:relative}

/* ヘッダーのログインチップ＋メニュー */
.btn.sm{padding:7px 16px; font-size:var(--text-sm)}
.auth-warn{color:var(--color-warning); font-size:var(--text-sm); font-weight:600}
.chip{
  font-family:inherit; font-size:var(--text-sm); font-weight:600; color:var(--text-heading);
  background:var(--bg-base); border:none; border-radius:var(--radius-pill);
  padding:8px 16px; cursor:pointer; box-shadow:var(--shadow-base); display:flex; align-items:center; gap:8px;
}
.chip .dot{width:9px; height:9px; border-radius:50%; background:var(--color-success); box-shadow:0 0 0 3px rgba(44,182,150,.18)}
.authmenu{position:relative}
.menu{
  position:absolute; right:0; top:calc(100% + 8px); min-width:220px; z-index:1000;
  background:var(--card-surface); border-radius:14px; box-shadow:var(--shadow-base); padding:8px; display:flex; flex-direction:column; gap:4px;
}
.menu-state{font-size:var(--text-xs); color:var(--text-muted); padding:6px 10px}
.menu-item{
  font-family:inherit; font-size:var(--text-sm); color:var(--text-body); text-align:left;
  background:transparent; border:none; border-radius:9px; padding:9px 10px; cursor:pointer; display:block;
}
.menu-item:hover{background:var(--bg-base)}

/* レイアウト */
.container{max-width:var(--container); margin:0 auto; padding:var(--space-lg) var(--space-md)}
.layout{display:flex; gap:var(--space-lg); align-items:flex-start}
.content{flex:1; min-width:0}

/* 症例一覧サイドバー */
.sidebar{
  width:240px; flex-shrink:0; position:sticky; top:var(--space-md);
  background:var(--card-surface); border-radius:var(--radius-card); box-shadow:var(--shadow-base);
  padding:var(--space-md); max-height:calc(100vh - 32px); overflow:auto;
}
.side-head{
  display:flex; align-items:center; justify-content:space-between;
  font-weight:700; color:var(--text-heading); margin-bottom:var(--space-sm);
}
.side-refresh{
  font-family:inherit; font-size:var(--text-base); color:var(--main-color);
  background:var(--bg-base); border:none; border-radius:50%; width:30px; height:30px;
  cursor:pointer; box-shadow:var(--shadow-inset);
}
.side-list{display:flex; flex-direction:column; gap:6px}
.side-item{
  display:flex; flex-direction:column; gap:2px; text-align:left;
  font-family:inherit; background:var(--bg-base); border:none; border-radius:10px;
  padding:9px 12px; cursor:pointer; box-shadow:var(--shadow-base); transition:all .2s ease-out; width:100%;
}
.side-item:hover{transform:translateY(-1px)}
.side-item:active{box-shadow:var(--shadow-inset)}
.si-name{font-weight:600; color:var(--text-heading); font-size:var(--text-sm)}
.si-cat{font-size:var(--text-xs); color:var(--text-muted)}
.side-empty,.side-note{font-size:var(--text-xs); color:var(--text-muted); padding:6px 2px}

@media (max-width:860px){
  .layout{flex-direction:column}
  .sidebar{width:100%; position:static; max-height:none}
}
.card{
  background:var(--card-surface); border-radius:var(--radius-card);
  box-shadow:var(--shadow-base); padding:var(--space-lg);
  margin-bottom:var(--space-lg);
}
.card-title{
  margin:0 0 var(--space-md); font-size:var(--text-lg); color:var(--text-heading); font-weight:700;
}
.card-title .hint{font-weight:400; font-size:var(--text-xs); color:var(--text-muted); margin-left:8px}
.hint{color:var(--text-muted); font-size:var(--text-xs)}

/* 基本情報 */
.info-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:var(--space-md);
}
.field{display:flex; flex-direction:column; gap:6px; min-width:0}
.field.wide{grid-column:span 2}
.field>label{font-size:var(--text-xs); color:var(--text-muted)}
.field .age{
  align-self:flex-start; padding:8px 16px; border-radius:var(--radius-pill);
  background:var(--bg-base); box-shadow:var(--shadow-inset);
  color:var(--text-heading); font-weight:700;
}

/* 入力部品 */
input,select,textarea{
  font-family:inherit; font-size:var(--text-base); color:var(--text-body);
  background:var(--bg-base); border:none; border-radius:10px;
  padding:10px 12px; box-shadow:var(--shadow-inset); width:100%;
}
input:focus,select:focus,textarea:focus{
  outline:2px solid var(--main-color); outline-offset:2px;
}
textarea.ta{resize:vertical; min-height:64px}
label.block{display:block; margin:var(--space-md) 0 6px; font-size:var(--text-sm); color:var(--text-heading); font-weight:600}

/* 症例マスタ照合ノート */
.case-name{margin:var(--space-md) 0 0; font-size:var(--text-sm); color:var(--text-muted)}
.case-name.ok{color:var(--color-success)}
.case-name.new{color:var(--main-color)}

/* 採点グリッド */
.grid-head,.score-row{
  display:grid; grid-template-columns:1.6fr .8fr 1fr 1fr; gap:var(--space-md); align-items:center;
}
.grid-head{
  padding:0 4px var(--space-sm); font-size:var(--text-xs); color:var(--text-muted);
  border-bottom:1px dashed rgba(100,116,139,.25); margin-bottom:var(--space-sm);
}
.score-row{padding:6px 4px; border-radius:10px}
.score-row.supp{background:rgba(17,104,156,.035)}
.score-row .sn{color:var(--text-heading); font-weight:600}
.score-row .sn .tag{
  margin-left:8px; font-style:normal; font-size:10px; color:var(--main-color);
  background:rgba(17,104,156,.10); padding:1px 8px; border-radius:var(--radius-pill);
}
.score-row .ix{font-size:var(--text-xs); color:var(--text-muted)}
input.num{text-align:center; padding:8px}

/* 合成得点テーブル */
.comp-row{
  display:grid; grid-template-columns:1.6fr 1fr 1fr .8fr 1.2fr; gap:var(--space-md); align-items:center;
  padding:9px 4px; border-bottom:1px dashed rgba(100,116,139,.2);
}
.comp-row:last-child{border-bottom:none}
.comp-head{
  font-size:var(--text-xs); color:var(--text-muted); border-bottom:1px dashed rgba(100,116,139,.25); padding-bottom:var(--space-sm);
}
.comp-row .cx{color:var(--text-heading); font-weight:700}
.comp-row .cx i,.comp-row .cv i{display:block; font-style:normal; font-size:var(--text-xs); color:var(--text-muted); font-weight:400}
.comp-row .cv{font-size:var(--text-lg); font-weight:800; color:var(--main-color)}
.comp-row .cs{color:var(--text-body)}
.comp-row .cs-main{font-weight:800; color:var(--text-heading)}

/* プロセス得点テーブル */
.proc-head,.proc-row{display:grid; grid-template-columns:2fr 1fr 1fr; gap:var(--space-md); align-items:center}
.proc-head{font-size:var(--text-xs); color:var(--text-muted); border-bottom:1px dashed rgba(100,116,139,.25); padding-bottom:var(--space-sm); margin-bottom:var(--space-sm)}
.proc-row{padding:6px 4px}
.proc-row .pn{color:var(--text-heading); font-weight:600}
.proc-row .pe{text-align:center}

.muted{color:var(--text-muted)}

/* 現在症例コンテキストバー */
.case-context{display:flex; align-items:center; gap:var(--space-md); padding:var(--space-sm) var(--space-md) 0; flex-wrap:wrap}
.cc-name{font-weight:700; color:var(--text-heading); font-size:var(--text-lg)}
.cc-id{font-size:var(--text-xs); color:var(--text-muted)}
.cc-id code{background:rgba(51,65,85,.07); padding:2px 8px; border-radius:6px}
.cc-empty{font-size:var(--text-sm); color:var(--text-muted)}

/* トップナビ */
.topnav{display:flex; gap:var(--space-sm); padding:var(--space-md) var(--space-md) 0}
.navbtn{
  font-family:inherit; font-size:var(--text-sm); font-weight:600; color:var(--text-muted);
  background:var(--bg-base); border:none; border-radius:var(--radius-pill);
  padding:9px 22px; cursor:pointer; box-shadow:var(--shadow-inset); transition:all .2s ease-out; width:auto;
}
.navbtn.active{background:var(--main-color); color:#fff; box-shadow:var(--shadow-base)}

/* 自動算出フィールド（読み取り専用） */
input.auto{color:var(--text-muted); background:var(--bg-base)}
details.card summary.card-title{cursor:pointer; list-style:revert}
details.card summary.card-title::-webkit-details-marker{color:var(--main-color)}

/* WAIS サブタブ */
.subtabs{display:flex; gap:var(--space-sm); margin-bottom:var(--space-lg)}
.subtab{
  font-family:inherit; font-size:var(--text-sm); font-weight:600; color:var(--text-muted);
  background:var(--card-surface); border:none; border-radius:var(--radius-pill);
  padding:9px 22px; cursor:pointer; box-shadow:var(--shadow-base); transition:all .2s ease-out; width:auto;
}
.subtab.active{background:var(--main-color); color:#fff}

/* ツールバー（保存・読込） */
.toolbar{display:flex; align-items:center; gap:var(--space-md); flex-wrap:wrap; margin-bottom:var(--space-lg)}
.sync-msg{font-size:var(--text-sm); color:var(--text-muted)}
.rec-select{width:auto; padding:8px 12px; font-size:var(--text-sm); font-weight:600; color:var(--text-heading)}
.prompt-ta{font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:var(--text-xs); line-height:1.5}
.prompt-actions{display:flex; align-items:center; gap:var(--space-sm); flex-wrap:wrap; margin-top:var(--space-sm)}
a.btn{text-decoration:none; display:inline-block}
.sync-msg.ok{color:var(--color-success)}
.sync-msg.ng{color:var(--color-error)}

/* Google連携パネル */
.connect-card .cn-row{display:flex; align-items:center; gap:var(--space-md); flex-wrap:wrap; margin-top:var(--space-sm)}
.cn-status{font-weight:600; color:var(--text-heading)}
.cn-warn{
  background:rgba(255,183,77,.18); color:var(--text-heading);
  padding:10px 14px; border-radius:10px; font-size:var(--text-sm); margin-bottom:var(--space-sm);
}
.cn-warn code{background:rgba(51,65,85,.08); padding:1px 6px; border-radius:6px}
.btn{
  font-family:inherit; font-size:var(--text-sm); font-weight:600; color:#fff;
  background:var(--main-color); border:none; border-radius:var(--radius-pill);
  padding:9px 20px; cursor:pointer; box-shadow:var(--shadow-base);
  transition:all .25s ease-out; width:auto;
}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(1px); box-shadow:var(--shadow-inset)}
.btn.ghost{background:var(--bg-base); color:var(--main-color); box-shadow:var(--shadow-inset)}
.cn-out{
  margin-top:var(--space-md); padding:12px 14px; border-radius:10px;
  background:var(--bg-base); box-shadow:var(--shadow-inset);
  font-size:var(--text-xs); white-space:pre-wrap; word-break:break-all; max-height:240px; overflow:auto;
}
.cn-out.ok{color:var(--text-body)}
.cn-out.ng{color:var(--color-error)}

/* 専門家レポート（A4印刷） */
.report-sheet{
  background:#fff; color:#1e293b; border-radius:var(--radius-card); box-shadow:var(--shadow-base);
  padding:18mm 16mm; max-width:210mm; margin:0 auto; font-size:11px; line-height:1.5;
}
.report-sheet h1{font-size:16px; margin:0 0 10px; color:var(--main-color)}
.report-sheet h2{font-size:13px; margin:16px 0 6px; border-bottom:2px solid var(--main-color); padding-bottom:3px}
.report-sheet h2 .note{font-size:10px; font-weight:400; color:var(--text-muted); border:none}
.rpt-meta{width:100%; border-collapse:collapse; margin-bottom:4px}
.rpt-meta th{text-align:left; background:#f1f5f9; padding:4px 8px; width:14%; font-size:10px; color:var(--text-muted); border:1px solid #e2e8f0}
.rpt-meta td{padding:4px 8px; border:1px solid #e2e8f0; width:36%}
.rpt-table{width:100%; border-collapse:collapse}
.rpt-table th,.rpt-table td{border:1px solid #e2e8f0; padding:5px 8px; text-align:center}
.rpt-table thead th{background:#f1f5f9; font-size:10px; color:var(--text-muted)}
.rpt-table td.lbl{text-align:left; font-weight:600}
.rpt-table td.lbl span{color:var(--text-muted); font-weight:400; font-size:9px; margin-left:6px}
.rpt-table td.strong{font-weight:800; color:var(--main-color); font-size:13px}
.profile-svg{width:100%; height:auto; margin:4px 0}
.rpt-note{min-height:40px; white-space:pre-wrap; padding:6px 0}
.rpt-foot{margin-top:14px; font-size:9px; color:var(--text-muted)}
.report-sheet .note{color:var(--text-muted)}

/* NSU報告書（FromUテンプレ＋座標オーバーレイ） */
.report-sheet.nsu{padding:0; background:transparent; box-shadow:none}
.nsu-sheet{
  position:relative; width:100%; max-width:210mm; margin:0 auto;
  aspect-ratio:595.92/842.88; container-type:inline-size;
  background-repeat:no-repeat; background-position:center; background-size:100% 100%;
  box-shadow:var(--shadow-base);
  -webkit-print-color-adjust:exact; print-color-adjust:exact;
}
.nsu-sheet .ov{position:absolute; line-height:1; white-space:nowrap}
.nsu-sheet .score{font-weight:700; font-size:1.49cqw; color:#1a2430; font-family:Arial,'Noto Sans JP',sans-serif}
.nsu-sheet .cls{font-size:1.15cqw; color:#333}
.nsu-sheet .meta{font-size:1.36cqw; color:#1a2430; font-weight:600}
.nsu-sheet .bar{position:absolute; height:2.4%; border-radius:1px; -webkit-print-color-adjust:exact; print-color-adjust:exact}
.nsu-sheet .sbar{position:absolute; height:1.0%; border-radius:1px; -webkit-print-color-adjust:exact; print-color-adjust:exact}
.nsu-shoken-band{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  background:#2b8aa6; color:#fff; padding:9px 18px; font-size:15px; font-weight:700; margin-top:14px;
  -webkit-print-color-adjust:exact; print-color-adjust:exact;
}
.nsu-shoken-band .nm{font-size:13px; font-weight:400}
.nsu-shoken{background:#fff; padding:14px 18px; box-shadow:var(--shadow-base)}

@media print{
  @page{size:A4; margin:12mm}
  body{background:#fff}
  .appbar,.topnav,.case-context,.sidebar,.toolbar,.subtabs,.savebadge,.no-print{display:none !important}
  .layout,.content,.container{display:block; margin:0; padding:0; max-width:none}
  .report-sheet{box-shadow:none; border-radius:0; padding:0; max-width:none; margin:0}
}

/* 保存バッジ */
.savebadge{
  position:fixed; left:var(--space-lg); bottom:var(--space-lg);
  background:var(--main-color); color:#fff; padding:8px 18px; border-radius:var(--radius-pill);
  box-shadow:var(--shadow-base); font-size:var(--text-sm);
  opacity:0; transform:translateY(8px); transition:all .25s ease-out; pointer-events:none;
}
.savebadge.show{opacity:1; transform:translateY(0)}

/* レスポンシブ */
@media (max-width:768px){
  .info-grid{grid-template-columns:1fr 1fr}
  .field.wide{grid-column:span 2}
  .grid-head,.score-row{grid-template-columns:1.4fr .7fr 1fr 1fr}
  .sum-row{grid-template-columns:1fr 1fr; gap:var(--space-sm)}
  .sum-row .sc{grid-column:span 2}
}
