/* =====================================================================
 * fantaclient/style.css — 幻想國度水墨前端 /g/ 版面樣式
 * GUI AI 維護。版面搬自 FantaGame/prototypes/v01_silvercross_entrance.html。
 * ===================================================================== */

@font-face {
  font-family: 'Ma Shan Zheng Sub';
  src: url(data:font/ttf;base64,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) format('truetype');
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: 'Noto Serif TC Sub';
  src: url(data:font/ttf;base64,AAEAAAARAQAABAAQR1BPU+Twwr8AAAZEAAACeEdTVULZ5bylAAADMAAAAHJPUy8yoCcELgAAAtAAAABgU1RBVHmgaoEAAAG0AAAAKmNtYXACLgMJAAADpAAAAIRnYXNwAAAAEAAAASQAAAAIZ2x5ZksAE6sAAAi8AAAJhmhlYWQsT1jRAAACQAAAADZoaGVhDAkH/gAAAWwAAAAkaG10eC8OAxkAAAJ4AAAAVmxvY2EbHxkLAAAB4AAAAC5tYXhwAFYCmwAAASwAAAAgbmFtZSsmTQUAAAQoAAACHHBvc3T/uAAyAAABTAAAACBwcmVwaAaMhQAAARwAAAAHdmhlYQyaFyIAAAGQAAAAJHZtdHgQvwkBAAACEAAAAC64Af+FsASNAAABAAH//wAPAAEAAAAWApoAPwAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP+1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAEf/7iAAALuPwX/U4LcAABAAAAAAAAAAAAAAAAAAAAFQABEAAB9P4MAAALuP8y/V0LcAAAAAEAAAAAAAAAAAAAAAAAAQABAAEACAABAAAAFAABAAAAHAACd2dodAEBAAAAAgABAAAAAAEQAfQAAAAAAAAAKwArAGEAggCqAQkBQAF4AccB/wJDAmgCuQLlAzsDgAPHA/YELgRsBKIEwwAAA+gAAANwAIUAigCUAVcBVwFXAEcAZwBHAEcBVwFXAVcBVwFXAMkBXwFmAJ8ApAAAAAEAAAACAMVNI9ecXw889QADA+gAAAAA4sehUQAAAADi6HLg/Bf76AtwBxAAAAAGAAIAAAAAAAAD6ABkAP8AAAI3AC4B1QBCAtAABQI1ADECIgAuAioALgKeACYBUQAjAmwAJgFUACICnAAiAlwALgKHACMB2QAiAeEANAF3AA4ClAAgA1D/+gIxADEAVQAAAAQD3QH0AAUAAAKKAlgAAABLAooCWAAAAV4AMgE0AAACAgIAAAAAAAAAIAAAgyrfPBAAAAAWAAAAAEdPT0cAQAAgAHcDcP+IAAAEfwEeYBIBBwAAAAACAgLZAAAAIAAGAAEAAAAKAEoAWAAGREZMVAA2Y3lybAAqZ3JlawAqaGFuaQAma2FuYQAmbGF0bgAqAAAAAAAEAAAAAP//AAEAAAAEAAAAAP//AAAAAWxvY2wACAAAAAEAAAABAAQAAQAAAAEACAABAAYAEgABAAIAAgADAAAAAAACAAAAAwAAABQAAwABAAAAFAAEAHAAAAAYABAAAwAIACAAMQBWAGEAYwBlAGkAbABwAHUAd///AAAAIAAwAFYAYQBjAGUAaABrAG4AcgB3////4f/S/67/pP+j/6L/oP+f/57/nf+cAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAH4AAwABBAkAAABYAUYAAwABBAkAAQAoAR4AAwABBAkAAgAOARAAAwABBAkAAwBAANAAAwABBAkABAAoAR4AAwABBAkABQBeAHIAAwABBAkABgAkAE4AAwABBAkADgA2ABgAAwABBAkBAQAMAAwAAwABBAkBEAAMAAAATQBlAGQAaQB1AG0AVwBlAGkAZwBoAHQAaAB0AHQAcABzADoALwAvAG8AcABlAG4AZgBvAG4AdABsAGkAYwBlAG4AcwBlAC4AbwByAGcATgBvAHQAbwBTAGUAcgBpAGYAVABDAC0ATQBlAGQAaQB1AG0AVgBlAHIAcwBpAG8AbgAgADIALgAwADAAMwAtAEgAMQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMQAuADEAOwBtAGEAawBlAG8AdABmAGUAeABlACAAMgAuADYALgAwADIALgAwADAAMwAtAEgAMQA7AEcATwBPAEcAOwBOAG8AdABvAFMAZQByAGkAZgBUAEMALQBNAGUAZABpAHUAbQBSAGUAZwB1AGwAYQByAE4AbwB0AG8AIABTAGUAcgBpAGYAIABUAEMAIABNAGUAZABpAHUAbQAoAGMAKQAgADIAMAAxADcALQAyADAAMgA0ACAAQQBkAG8AYgBlACAAKABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBkAG8AYgBlAC4AYwBvAG0ALwApAC4AAQAAAAoAPABKAAZERkxUACZjeXJsACZncmVrACZoYW5pACZrYW5hACZsYXRuACYABAAAAAD//wABAAAAAWtlcm4ACAAAAAEAAAABAAQACQAAAAMCBgCcAAwAAQACAAAACAACAHAABAAAAHwBpgAEAAwAAP/v////+wAAAAAAAAAA/7z/8v/+//0AAP/t//AAAAAAAAD/8AAO/9IAAP/6AAoAAAAA//3//QAA////8v/9/7f/+AAAAAAAAP//AAD//QAAAAAAAAAE/9j//QADAAAAAQAEAAoADwAQABEAAQAPAAMAAQACAAMAAQACAAAACAACAQAABAAAATwBFgAKAAwAAAAAAAD//AAAAAAAAP/v/6L/7wAAAAAAAAAD//3//gAAAAD//v/9/7L/+gAA//4AAAAA//4AAAAAAAD/8v/+/7v/+gAAAAAAAP/+AAAAAAAAAAAAAP/u/7f/9AADAAAAAP/s/+7//AAAAAD/5QAJ/8oAAP/0AAIAAAAA//3//wAAAAAAAP/p/6j/8wAA//8AAAAAAAAAAAAAAAAAAP/2/+b/9wAAAAAAAAAA//r/+QAAAAAAAP/2/9v/8wAAAAAAAP/9//3//QAAAAD/8P/7/7n/9gAA//0AAP+p/6n/u//B/+L/9//OAAAAAP+r/9oAAgADAAQACQAAAAsADgAGABIAEwAKAAEABAAQAAgAAgABAAEABgAFAAYABgAEAAEACQAEAAoACwADAAcAAQAEABAACQAAAAgAAgAFAAYAAAAHAAUAAQABAAAAAAAAAAMABAABAAIAAAAIAAEADAAEAAAAAQASAAEAAQAEAAIABAADAA7/sgAFAGT/iAOEA3AAAwAGAAkADAAPAAAXESERAQEhAQERASEBAREBZAMg/nABPv2EAV4BPv1kAnz+wv6iAT54A+j8GAIdAZn+Pv5nAzL8pQGZAcL8zgGZAAIALv/xAgkC6wAPACMAAAUiJiY1NDY2MzIWFhUUBgYnMj4CNTQuAiMiDgIVFB4CARw+bEREbD4+bENDbD4aMygYGCgzGhwyKBcXKDIPTqmHh6dOTqeHh6lOICJQiGRkhk8iIk+GZGSIUCIAAAIAQv//AawC5gAFABIAADM1NzMXFSc2NREHNTcXBxEUFhdGjVeC4gOL4Q8EAgEcERIcAXRzAb4XIDgLnv6qOHU6AAMABf/6AsgC3AAIAA4AFAAABQEzEyM3EzMDATUhFQcjJTUzFQcjAUz+/m7YEgTML/n+gQEwjxgBRfVrEAYC4v14DgJ6/R4Cwx8fDAwfHg0AAgAx//ECLQIZAB0AQQAAFyImNTQ2Njc2NjcVBgYHBgYVFBYzMjY2NxcjDgI3IiYnNRE0JiYjIgYHNwcGBiMiJzY2MzIWFRUUFjMyNjcXBga9PFAjUkUpXigoUSA9NTEoFSo2JQobHjY66C4vBBgxJxw5IjEPAx0UKAkNb1tbVhUTDBQNEBAxD0Q/KD4xFAwYChkKFwwXQS0uLhArJjEhLRcBPDQDAQg4PBgPEhtPHxonP0hWYPsrIAwPDh0bAAEALv/xAfoCGQAjAAAFIiYmNTQ2NjMyFhYXBiMiJicnFyYmIyIGBhUUFjMyNjcXBgYBLEpyQkt7Ry9PNgoLJBcdBBc3HjUbMlAuaVQsTR8RImIPQHhVW35CIz0pJhogWikTEDlqS2x3JCQNNzoAAQAu//ECAAIZACUAAAUiJiY1NDY2MzIWFhUUByE1ITI2NTQmIyIGBhUUFhYzMjY3FwYGATNMdkNGdENEXzEG/mEBGBwUQDopQygxVDc1TR0RIGcPPntaVnxDOF89JBggHiFBTzVnS1FpMCYjDTY8AAQAJgAAAn4DKQAFABcAHQA2AAAzNTczFxUjPgI1ESc1NxcHFRcVFBYWFzM1NzMXFSM+AjU1NCYjIgYHJzM2NjMyFhUVFBYWFylsKmeuAQEBVakPAwIBAQGgailrsQIBATApI1o0FRs0aDhETQECARwLCxwZUlohAgMFGyAJnN8NsiFaUhkcCwscGVFaInpGOSw7JUE7WGd0IlpRGQAAAwAjAAABKgMJAAUAGAAkAAAzNTczFxUjPgI1NTQmJyc1NxcHFRQWFhcDIiY1NDYzMhYVFAYqbShrsQECAQICVrENAwEBATsaJSUaGiYmHAsLHBlSWiFAM08lBRkrCJCYIVpSGQKPIhsbIiIbGyIAAAUAJgAAAmkDKQAFABcAHQAjACkAADM1NzMXFSM+AjQ1ESc1NxcHERQUFhYXJzUzNzczAwM3ExcVATUzFQcHJ20qbrQBAQFVqw8DAQEBNASXmTRNqUS7TP7t+HQUHAsLHBQ5QT8ZAgMFGyAJnP5mG0FBORSwK5eY/fYBLED+twccAeweHgoDAAACACIAAAE0AykABQAVAAAzNTczFxUjPgI1ESc1NxcHERQWFhcidCh2vAEBAVWrDwMBAQEcCwscIU9SJAIDBRsgCZz+YiRSTyEAAAQAIgAAAnsCGQAFABkAHwA4AAAzNTczFxUjPgI1NTQmJyc1NxcXFRUUFhYXMzU3MxcVIz4CNTU0JiMiBgcnMzY2MzIWFRUUFhYXKGwpaa8BAQEBAlWmDQYBAQGgaipprwEBAS4qIVw0Bws3ajVDTAECARwLCxwZUlohQTNNJAYZLAh0AbMhWlIZHAsLHBlRWiJ6RjktOiREOVlkdiJaURkAAAIALv/xAi4CGQAPABsAAAUiJiY1NDY2MzIWFhUUBgYnMjY1NCYjIgYVFBYBLUZ0RUh1QkR1SEd0RkdQUEdGUFAPP3xZWns/P3taWXw/IHx3d319d3d8AAADACP+/AJaAhkABQAbADoAABM1NzMXFSM+AjURNCYnJzU3HwIRBxUUFhYXNyImJyM3FhYzMjY2NTQmIyIGByczNjYzMhYWFRQGBidvMnPCAQEBAQJWpQ0HAQEBAQGYLlklDQ8jQSgqRSlRQyNHKgwKJ2Q0Pl44PGb+/BwKChwlUlMjATwzTyQGGSwIUwb+mQtaIlNTJfUpNRgmHCxkUnRrITAYOTNCeVVWfkQAAwAiAAAB0wIZAAUAGQAtAAAzNTczFxUjPgI1NTQmJyc1NxcXFRUUFhYXAyczPgIzMhYXFAYjIiYnJxcGBihtN3DFAQEBAQJVpg0GAQEBAxkUEDVDIx4tBxsdFCASFysxRRwMDBwZUlohQTRMJAYZLAiNAZohWlIZAT83MkkoGRsbIhYUFwIRTwAAAQA0//EBtQIZADAAABciJic3MxcnNRYWMzI2NTQmJycmJjU0NjMyFhcHIycXFSYmIyIGFRQWFxcWFhUUBgbhM1EpAS8aKB49K0FCLD41PUllXi9IJwQrHCIeNiA3Oi83NE1BMV4PFRV6ggMkExUzKyQuExMVRzpCWRYXbnkIIBYSMSciLRMSGko2LkkpAAIADv/xAW0CpwADAB0AABM1MxUDIiY1NDY1ESM1Nwc3MwcVERQWMzI2NxcGBp+8bUFAAWB1EyNAAyMgFiEUDxU+AeQmJv4NQ0YZKBwBDR8JDqmtC/6ILSkODRIcHQACACD/8QJsAhEAFQAhAAAFIiY3ExcnNTcXBxUUFjMyNjcXIwYGNyc1Eyc1NxcHERcVAQNHUAEDGGipCwUyLy1UIRogJmSEBAJPqAoESQ9ZcAEuExAaEguHyEw8NS0qNEIFewEBaAoZFAuH/qQHHAAABP/6//sDSwIKABIAGAAeACQAABcDMxMHNxMzEyM3EzMDIwMzBwMBNTMVByM3NTMVByM3NTMVByPluWaOEgaVLpsRBIMqsSudGwed/ur8eh/x52YazclQDwUCD/5DAQ8Br/5CDQGx/fEByhH+RwHxHh4KCh4eCgoeHgoAAAIAMf/xAgEC0QAPACMAAAUiJiY1NDY2MzIWFhUUBgYnMj4CNTQuAiMiDgIVFB4CARk9akFBaj08akJCajwaMCYYGCYwGhowJxYWJzAPS6KBg6NMTKODgaJLICFMgWBhg0wiIU2DYWCBTCEAAAIAVQAAAesCzAAFABIAADM1NzMXFSM2NREHNTcXBxEUFhdVpVab+wON5A8EAgEcEBAcdHMBohUgOAuf/sU4dToAAAA=) format('truetype');
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: 'Noto Serif TC Sub';
  src: url(data:font/ttf;base64,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) format('truetype');
  font-weight: 700;
  font-display: swap;
}

:root {
  --paper: #e3d8bd;
  --paper-deep: #cdbd97;
  --paper-panel: #ece3cd;
  --ink: #221e19;
  --ink-soft: #5b5540;
  --ink-faint: #928a6c;
  --seal: #a3311d;
  --seal-soft: rgba(163, 49, 29, 0.14);
  --jade: #4d7061;
  --river: #3f5c74;
  --gold: #96793a;
  --frame: #3c2c1e;
  --frame-light: #55402c;
  --hp: #a3311d;
  --neili: #3f5c74;
  --stamina: #96793a;
  --focus: #4d7061;
  --fali: #6b4f8f;
  --shadow: rgba(34, 30, 25, 0.28);
  --banner-h: 260px;        /* 房間橫幅固定高度——太高/太矮改這裡 */
}

* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; background: var(--paper-deep); }
body {
  font-family: 'Noto Serif TC Sub', 'Noto Serif TC', 'PMingLiU', 'Songti TC', serif;
  color: var(--ink);
}
#fanta-root { height: 100vh; overflow: hidden; }

.fc-scene { height: 100vh; display: flex; flex-direction: column; }
.fc-scene-inner { position: relative; flex: 1; display: flex; flex-direction: column; overflow: hidden; background: var(--paper); }

/* ---- banner ---- */
/* 固定高度，不再吃 40vh（大螢幕會太高）。要調整改 --banner-h 即可。 */
.fc-banner { position: relative; flex: 0 0 auto; height: var(--banner-h); overflow: hidden; }
.fc-banner-img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center 42%; }
.fc-banner-placeholder {
  width: 100%; height: 100%;
  background: linear-gradient(180deg, var(--paper) 0%, var(--paper-deep) 100%);
  display: flex; align-items: center; justify-content: center;
}
.fc-banner-title { position: absolute; left: 0; bottom: 0; padding: 24px 30px 14px 22px; color: #f4ecd6; text-shadow: 0 1px 3px rgba(0,0,0,.6); z-index: 2;
  background: radial-gradient(120% 100% at 0% 100%, rgba(18,15,11,.55) 0%, rgba(18,15,11,0) 70%); }
.fc-banner-title h1 { font-family: 'Ma Shan Zheng Sub','Ma Shan Zheng',serif; font-weight: 400; font-size: 34px; margin: 0; letter-spacing: .05em; }
.fc-banner-title p { margin: 4px 0 0; font-size: 12px; letter-spacing: .08em; opacity: .9; }
.fc-seal {
  position: absolute; right: 18px; top: 14px; width: 38px; height: 38px; border-radius: 3px;
  background: var(--seal); color: #f4ecd6; display: flex; align-items: center; justify-content: center;
  font-family: 'Ma Shan Zheng Sub','Ma Shan Zheng',serif; font-size: 19px; transform: rotate(-2deg);
  box-shadow: 0 2px 6px rgba(0,0,0,.4);
}
.fc-conn {
  position: absolute; left: 18px; top: 14px; font-size: 11px; padding: 3px 9px; border-radius: 2px;
  background: rgba(0,0,0,.4); color: #f4ecd6; font-family: system-ui, sans-serif;
}
.fc-conn.is-open { color: #bfe3c8; }
.fc-conn.is-closed, .fc-conn.is-error { color: #e3b3a8; }

/* 3/4 半身立繪：等於橫幅高度、貼底對齊（腰部剛好落在橫幅底緣，之後對話框蓋上去也自然）。
   名牌改成疊在立繪底部的浮層，才不會把立繪撐得比橫幅高。 */
.fc-standee {
  position: absolute; bottom: 0; height: 94%; pointer-events: none;
  filter: drop-shadow(0 4px 8px rgba(0,0,0,.35));
  transform: translateX(-50%);
}
.fc-standee img { height: 100%; width: auto; display: block; margin: 0 auto; }
.fc-standee .fc-tag {
  position: absolute; bottom: 6px; left: 50%; transform: translateX(-50%);
  font-size: 11px; color: #f4ecd6; background: var(--frame); white-space: nowrap;
  border-radius: 2px; padding: 2px 8px; font-family: 'Ma Shan Zheng Sub','Ma Shan Zheng',serif;
}

/* ---- talk box (future: dialogue events) ---- */
.fc-talk {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 5; padding: 30px 20px 14px;
  background: linear-gradient(to top, rgba(18,15,11,.92) 0%, rgba(18,15,11,.78) 45%, rgba(18,15,11,0) 100%);
  display: none;
}
.fc-talk.is-open { display: block; cursor: pointer; }
.fc-talk-name { display: inline-block; background: var(--seal); color: #f4ecd6; font-family: 'Ma Shan Zheng Sub','Ma Shan Zheng',serif; font-size: 14px; padding: 3px 12px; border-radius: 2px; margin-bottom: 6px; }
.fc-talk-line { font-size: 13px; line-height: 1.8; color: #f4ecd6; margin: 0; text-shadow: 0 1px 2px rgba(0,0,0,.5); }

/* ---- HUD + command menu ---- */
/* 右欄頂端工具區：選單圖示一列，血條排在其下（2026-07-19 從橫幅下的橫向 HUD 搬過來）。
   不再需要 border-bottom——.fc-col 的 gap:1px 疊在 --ink-faint 底色上已經畫出分隔線，
   再加一條會變兩條。 */
.fc-hud { flex: none; display: flex; flex-direction: column; gap: 9px; background: var(--paper-panel); padding: 10px 14px 12px; }
/* 五格排三欄＝兩列，比原本橫幅下的一長條省高度；:empty 是因為 renderHud() 在血條資料
   還沒到時會把 innerHTML 清空，沒有這條的話按鈕下面會留一塊空隙。 */
.fc-hud-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px 10px; font-size: 12px; color: var(--ink-soft); font-variant-numeric: tabular-nums; }
.fc-hud-stats:empty { display: none; }
.fc-hud-item { display: flex; align-items: center; gap: 5px; white-space: nowrap; }
.fc-dot { width: 7px; height: 7px; border-radius: 50%; flex: none; display: inline-block; }
.fc-dot.hp { background: var(--hp); } .fc-dot.neili { background: var(--neili); }
.fc-dot.fali { background: var(--fali); } .fc-dot.stamina { background: var(--stamina); } .fc-dot.focus { background: var(--focus); }

/* 搬進右欄後寬度只剩 420px（原本可用整個視窗寬），現有八顆鈕 266px 還放得下，
   但加上 flex-wrap 當保險，日後多一顆才不會擠爆。 */
.fc-menu { display: flex; flex-wrap: wrap; gap: 6px; flex: none; }
.fc-menu button {
  width: 28px; height: 28px; display: flex; align-items: center; justify-content: center;
  background: var(--frame); color: #f4ecd6; font-family: 'Ma Shan Zheng Sub','Ma Shan Zheng',serif;
  font-size: 14px; border-radius: 2px; border: none; cursor: pointer; line-height: 1;
}
.fc-menu button:hover { background: var(--seal); }
.fc-menu button.is-inert { cursor: default; opacity: .55; }
.fc-menu button.is-inert:hover { background: var(--frame); }
/* 繁/簡切換：是個開關而非面板，用外框與其他選單鈕區隔；字面固定為「要切去的那一邊」。
   CJK 本來就走系統字型 fallback（內嵌的 Sub 字型只含拉丁字母），這裡明講以免誤會。 */
.fc-menu button.fc-zh-btn {
  font-family: system-ui, 'Noto Serif TC', serif; font-size: 13px;
  background: var(--frame); border: 1px solid rgba(244,236,214,.45); color: #f4ecd6;
}
.fc-menu button.fc-zh-btn:hover { background: var(--seal); border-color: var(--seal); }
.fc-menu button.fc-zh-btn[aria-pressed="true"] { background: var(--frame-light); border-color: rgba(244,236,214,.75); }

/* ---- 動作選單（在場人物／背包共用；position:fixed 掛在 body 上，才不被面板捲動裁掉） ---- */
.fc-actmenu {
  position: fixed; z-index: 60;   /* 掛 body 上、蓋過面板內容；面板可捲動，用 fixed 才不被裁掉 */
  min-width: 96px; max-width: 240px; padding: 4px;
  background: var(--paper-panel); border: 1px solid var(--ink-faint); border-radius: 3px;
  box-shadow: 0 10px 30px var(--shadow); font-size: 13px;
}
.fc-actmenu-title { padding: 3px 7px 5px; font-size: 11px; color: var(--ink-faint);
  border-bottom: 1px solid rgba(146,138,108,.3); margin-bottom: 3px; }
.fc-actmenu-item {
  display: block; width: 100%; text-align: left; padding: 5px 8px; border: none; border-radius: 2px;
  background: none; color: var(--ink); font: inherit; cursor: pointer; line-height: 1.4;
}
.fc-actmenu-item:hover { background: var(--seal-soft); color: var(--seal); }
.fc-actmenu-item.is-danger { color: var(--seal); }
.fc-actmenu-item.is-danger:hover { background: var(--seal); color: var(--paper-panel); }
.fc-actmenu-group { border-top: 1px solid rgba(146,138,108,.22); margin-top: 3px; padding-top: 3px; }
.fc-actmenu-grouphead { padding: 2px 8px; font-size: 10px; color: var(--ink-faint); letter-spacing: .08em; }
.fc-actmenu-group .fc-actmenu-item { padding-left: 16px; }

/* ---- 聊（聊天）面板 ---- */
.fc-menu button#fc-chat-btn { position: relative; overflow: visible; }
.fc-badge { display: none; }
.fc-badge.is-on {
  display: block; position: absolute; top: -4px; right: -4px; min-width: 14px; height: 14px;
  padding: 0 3px; border-radius: 7px; background: var(--seal); color: #f4ecd6;
  font: 500 9px/14px system-ui, sans-serif; font-style: normal; text-align: center;
}
.fc-chan { font-family: system-ui, sans-serif; font-size: 11px; opacity: .7; margin-left: 6px; }
/* flex-basis 用「有單位的 0」，而不是 `flex:1` 展開出來的 `0%`：百分比 basis 對上高度不定的
   祖先會回退成 content，訊息列的 base 就變成整份內容高度、幾乎不縮，反而把表情格壓成一條
   （改之前實測只剩 ~65px）。反過來若只寫 min-height:0，被壓扁的換成訊息列（實測 24px）——
   表情格與輸入列是 flex:none 不縮，負空間全由訊息列吸收。所以兩邊都要有下限。 */
.fc-chat-log { flex: 1 1 0px; min-height: 90px; overflow-y: auto; padding: 4px 2px 8px;
  font-size: 13px; line-height: 1.8; color: var(--ink-soft); }
.fc-chat-row { padding: 1px 0; word-break: break-word; }
.fc-chat-speaker { color: var(--river); font-weight: 600; }
.fc-chat-row.is-emote .fc-chat-emote-text { color: var(--jade); font-style: italic; }

.fc-chat-emotes { display: none; flex: none; border-top: 1px solid var(--ink-faint);
  background: rgba(146,138,108,.08); max-height: 34%; overflow-y: auto; padding: 8px 10px; }
.fc-chat-emotes.is-open { display: block; }
.fc-emote-bar { display: flex; align-items: center; gap: 10px; padding-bottom: 6px;
  font-size: 11px; color: var(--ink-faint); }
.fc-emote-scope { display: flex; align-items: center; gap: 4px; cursor: pointer; color: var(--ink-soft); }
.fc-emote-target { font: inherit; font-size: 11px; color: var(--ink); background: var(--paper-panel);
  border: 1px solid var(--ink-faint); border-radius: 2px; padding: 1px 3px; max-width: 130px; }
.fc-emote-target:disabled { opacity: .45; cursor: not-allowed; }
.fc-emote-cat { margin-bottom: 3px; }
.fc-emote-cat > summary { cursor: pointer; font-size: 12px; color: var(--ink-soft); padding: 3px 0; list-style: none; }
.fc-emote-cat > summary::before { content: "▸ "; color: var(--ink-faint); }
.fc-emote-cat[open] > summary::before { content: "▾ "; }
.fc-emote-grid { display: flex; flex-wrap: wrap; gap: 4px; padding: 3px 0 6px 12px; }
.fc-emote-btn { padding: 3px 8px; font-size: 12px; border: 1px solid var(--ink-faint); border-radius: 2px;
  background: var(--paper-panel); color: var(--ink-soft); cursor: pointer; font-family: inherit; }
.fc-emote-btn:hover { background: var(--seal); border-color: var(--seal); color: var(--paper-panel); }

.fc-chat-input { display: flex; flex: none; gap: 5px; padding: 8px;
  border-top: 1px solid var(--ink-faint); background: var(--frame-light);
  margin: 0 -14px -14px; }   /* 貼齊 .fc-panel 的 padding，輸入列滿版落在面板底 */
.fc-chat-input input { flex: 1; background: rgba(0,0,0,.22); border: 1px solid rgba(244,236,214,.25);
  border-radius: 2px; padding: 6px 9px; color: #f4ecd6; font-family: inherit; font-size: 13px; }
.fc-chat-input input::placeholder { color: rgba(244,236,214,.4); }
.fc-chat-input button { padding: 6px 11px; border: 1px solid rgba(244,236,214,.3); border-radius: 2px;
  background: var(--frame); color: #f4ecd6; cursor: pointer; font-family: inherit; font-size: 12px; }
.fc-chat-input button:hover { background: var(--seal); border-color: var(--seal); }
.fc-chat-input button.is-on { background: var(--seal); border-color: var(--seal); }

/* ---- 屬性面板・身世區塊（char_stats.identity） ---- */
.fc-id-grid { display: grid; grid-template-columns: max-content 1fr; gap: 3px 12px; align-items: baseline; }
.fc-id-k { color: var(--ink-faint); font-size: 11px; letter-spacing: .1em; white-space: nowrap; }

/* ---- 任（任務）面板 ---- */
.fc-mission-src { margin-bottom: 9px; font-size: 12px; padding: 1px 8px; }
/* 進度文字是後端排版好的多行純文字（「進度 0/3」「步驟：…」），pre-wrap 保留換行、長行仍會折 */
.fc-mission-text { white-space: pre-wrap; word-break: break-word; line-height: 1.85;
  color: var(--ink); background: rgba(146,138,108,.10); border-left: 2px solid var(--ink-faint);
  padding: 9px 12px; border-radius: 2px; }
.fc-mission-hint { margin-top: 8px; font-size: 12px; color: var(--ink-faint); line-height: 1.7; }
.fc-mission-hint b { color: var(--ink-soft); font-family: ui-monospace, monospace; }

/* ---- 技（武學技能）／包（背包）面板 ---- */
.fc-sec { margin: 2px 0 8px; font-family: 'Ma Shan Zheng Sub','Ma Shan Zheng',serif; font-weight: 400;
  font-size: 15px; color: var(--ink); border-left: 3px solid var(--seal); padding-left: 7px; }
.fc-sub { margin: 9px 0 4px; font-size: 11px; color: var(--ink-faint); letter-spacing: .08em; }

.fc-skill { padding: 5px 0 6px; border-bottom: 1px dashed rgba(146,138,108,.28); }
.fc-skill:last-child { border-bottom: none; }
.fc-skill-top { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; line-height: 1.5; }
.fc-skill-name { color: var(--ink); font-weight: 600; }
.fc-skill-lv { margin-left: auto; color: var(--ink-faint); font-size: 11px; white-space: nowrap; }
/* 可點的武學名（派面板 → help <武學>）：要看得出來能點，但別喧賓奪主蓋過既有的水墨調。 */
.fc-link { cursor: pointer; border-bottom: 1px dotted var(--ink-faint); }
.fc-link:hover { color: var(--seal); border-bottom-color: var(--seal); }
.fc-skill-sub { font-size: 11px; color: var(--ink-faint); margin-top: 2px; }
.fc-skill.is-on .fc-skill-name { color: var(--seal); }

/* 等級條：level 是 0–100，直接當百分比 */
.fc-lvbar { height: 3px; background: rgba(146,138,108,.25); border-radius: 2px; margin-top: 4px; overflow: hidden; }
.fc-lvbar i { display: block; height: 100%; background: var(--ink-soft); }
.fc-skill.is-on .fc-lvbar i { background: var(--seal); }

/* 小標籤（門派／階級／已裝備／綁定） */
.fc-tagchip { display: inline-block; font-size: 10px; line-height: 1.6; padding: 0 5px; border-radius: 2px;
  border: 1px solid var(--ink-faint); color: var(--ink-faint); white-space: nowrap; }
.fc-tagchip.is-on { color: var(--seal); border-color: var(--seal); background: var(--seal-soft); }

.fc-bag-row { display: flex; align-items: center; gap: 5px; flex-wrap: wrap;
  padding: 4px 0; border-bottom: 1px dashed rgba(146,138,108,.28); line-height: 1.6; }
.fc-bag-row:last-child { border-bottom: none; }
.fc-bag-name { font-weight: 600; }
.fc-bag-qty { color: var(--ink-faint); font-size: 11px; }
/* 已裝備的也在裝備面板出現——這裡淡化但不濾掉，免得玩家以為東西不見了 */
.fc-bag-row.is-equipped { opacity: .72; }
/* 可點（有 actions）的列給游標與 hover 提示，否則看不出來能點 */
.fc-bag-row.is-actionable { cursor: pointer; margin: 0 -6px; padding-left: 6px; padding-right: 6px; border-radius: 2px; }
.fc-bag-row.is-actionable:hover { background: var(--seal-soft); }

/* ---- 常駐面板區（取代原本的彈出 modal）----
   舊版是 `.fc-modal { position:absolute; inset:0 }` 蓋滿整個場景，半透明底會攔下所有點擊，
   所以面板一開，指令輸入框、工具列全都點不到——非得先關掉才能繼續玩。改成右欄常駐一頁、
   圖示只切換內容，就沒有這個問題（也就不需要「關閉」鈕了）。 */
.fc-dock { flex: 1; min-height: 0; display: flex; flex-direction: column; padding-bottom: 0; }
.fc-dock-body { flex: 1; min-height: 0; display: flex; }
.fc-view { display: none; flex: 1; min-height: 0; overflow-y: auto;
  font-size: 13px; color: var(--ink-soft); line-height: 1.9; }
.fc-view.is-active { display: block; }
/* 聊天頁自己是 flex column（訊息列捲動＋表情格＋輸入列固定），不吃 fc-view 的整頁捲動 */
.fc-view.fc-view-chat.is-active { display: flex; flex-direction: column; overflow: hidden; }
.fc-view b { color: var(--ink); font-weight: 600; }
.fc-view b.hl { color: var(--seal); }
.fc-view b.gold { color: var(--gold); }
.fc-view-sub { font-size: 12px; color: var(--ink-faint); margin-bottom: 7px; }
/* 選單圖示：目前顯示中的那一頁高亮 */
.fc-menu button.is-active { background: var(--seal); }
.fc-divider { border: none; border-top: 1px solid var(--ink-faint); margin: 10px 0; }
.fc-attr-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px 14px; font-variant-numeric: tabular-nums; }
.fc-pending { color: var(--ink-faint); font-style: italic; font-size: 12px; }

/* ---- 2-column layout：中央終端機 + 右側加寬欄（在場人物＋小地圖） ---- */
.fc-layout { flex: 1; display: grid; grid-template-columns: minmax(0,1fr) 420px; gap: 1px; background: var(--ink-faint); min-height: 0; }
.fc-col { display: flex; flex-direction: column; gap: 1px; background: var(--ink-faint); min-height: 0; overflow-y: auto; }
/* 右欄改成「整欄不捲、由各區塊自己管高度」：上面兩區維持自然高度，常駐面板吃掉剩下的空間
   並在內部捲動。若讓整欄捲，面板一長就會把小地圖推出畫面、還會變成雙層捲軸。 */
.fc-col-wide { overflow: hidden; }
/* 26% → 22%：右欄頂上多了工具區（約 110px），而且 26% 是「整欄高度」的百分比、
   欄子又因為橫向 HUD 撤掉而變高，兩頭一夾會把常駐面板擠掉太多，所以收一點還給它。 */
.fc-panel-people { flex: none; max-height: 22%; overflow-y: auto; }
.fc-panel-map { flex: none; }
.fc-panel { background: var(--paper); padding: 12px 14px 14px; }
.fc-panel h2 { font-family: 'Ma Shan Zheng Sub','Ma Shan Zheng',serif; font-weight: 400; font-size: 19px; margin: 0 0 8px; color: var(--seal); border-bottom: 1px solid var(--ink-faint); padding-bottom: 5px; }

.fc-npc-chip { display: flex; align-items: center; gap: 10px; padding: 8px 0; cursor: pointer; }
.fc-npc-chip:not(:last-child) { border-bottom: 1px dotted var(--ink-faint); }
.fc-npc-chip:hover .fc-npc-name { color: var(--seal); }
.fc-npc-portrait { width: 40px; height: 40px; border-radius: 50%; flex: none; background: radial-gradient(circle at 35% 30%, var(--paper-panel), var(--ink-faint)); box-shadow: inset 0 0 0 1px var(--ink-faint); }
/* 玩家沒有立繪（NPC_ART 綁 proto_key、只給 NPC）→ 用剪影頭像＋不同色調區隔，不去配圖。 */
.fc-npc-portrait.is-player {
  background: radial-gradient(circle at 35% 30%, var(--paper-panel), var(--river));
  box-shadow: inset 0 0 0 1px var(--river);
  position: relative;
}
.fc-npc-portrait.is-player::after {
  content: ""; position: absolute; left: 50%; top: 52%; transform: translate(-50%, -50%);
  width: 15px; height: 15px; border-radius: 50% 50% 45% 45%;
  background: rgba(236, 227, 205, .82);
  box-shadow: 0 9px 0 -2px rgba(236, 227, 205, .82);   /* 頭 + 肩：極簡剪影 */
}
.fc-npc-name { font-size: 16px; color: var(--ink); }
.fc-npc-role { display: block; font-size: 12px; color: var(--ink-faint); }

.fc-mid { display: flex; flex-direction: column; min-height: 0; background: var(--paper); }
.fc-term {
  flex: 1; overflow-y: auto; padding: 14px 16px; font-size: 14px; line-height: 1.75;
  background: #14110d; color: #d8cdb5;
}
.fc-term a[id="mxplink"] { color: #7fd4e0; cursor: pointer; text-decoration: none; border-bottom: 1px dotted currentColor; }
.fc-term a[id="mxplink"]:hover { color: #fff; }
.fc-input { display: flex; align-items: center; gap: 8px; background: var(--frame); padding: 9px 12px; flex: none; }
.fc-input .fc-prompt { color: var(--gold); font-family: ui-monospace, Menlo, monospace; font-size: 13px; }
.fc-input input { flex: 1; background: transparent; border: none; outline: none; color: #f4ecd6; font-family: ui-monospace, 'SFMono-Regular', Menlo, monospace; font-size: 13px; }
.fc-input input::placeholder { color: var(--ink-faint); }
.fc-input button { display: none; }

.fc-minimap { display: flex; gap: 6px; }
.fc-minimap-grid { flex: 0 0 74%; display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
/* 格高用 min-height，不要用 aspect-ratio:1——房名只有一行（多為 3～5 字），正方形格子在 420px 的
   右欄會算成 94×94，整個小地圖吃掉 357px、把下面的常駐面板擠掉一半。矮格夠放兩行房名；真的更長
   的房名會把該列自動撐高（grid row 預設 auto），所以不會裁字。 */
.fc-cell { min-height: 38px; border: 1px solid var(--ink-faint); border-radius: 2px; background: var(--paper-deep); display: flex; align-items: center; justify-content: center; padding: 2px 4px; overflow: hidden; }
.fc-cell.is-empty { background: transparent; border-style: dashed; opacity: .32; }
.fc-cell.is-current { border: 2px solid var(--seal); background: var(--paper-panel); }
.fc-cell .fc-cell-label { font-size: 10.5px; line-height: 1.2; text-align: center; color: var(--ink-soft); font-family: 'Noto Serif TC Sub', serif; }
.fc-cell.is-current .fc-cell-label { color: var(--seal); font-weight: 600; }
.fc-minimap-other { flex: 1; display: flex; flex-direction: column; gap: 4px; justify-content: center; }
.fc-minimap-other a { font-size: 12px; text-align: center; padding: 6px 3px; border: 1px solid var(--seal); border-radius: 2px; color: var(--seal); background: var(--seal-soft); text-decoration: none; cursor: pointer; line-height: 1.3; }

/* ---- 裝備清單（score 面板） ---- */
.fc-equip-list { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; }
.fc-eq-slot { display: inline-block; width: 4.6em; color: var(--ink-faint); }
.fc-eq-bonus { color: var(--ink-faint); font-size: 11.5px; }

/* Evennia color-000..255 / bgcolor-XXX 調色盤——由 main.js injectInkPalette() 產生對應規則，
   這裡只放固定的水墨映射函式輸出結果的容器選擇器（.fc-term .color-XXX），實際色票見 main.js。 */
