.npc-panel, .npc-view { --npc-good:#22c55e; --npc-bad:#ef4444; --npc-text:#d9ccb0; --npc-strong:#f1e1b4; --npc-mute:#9a8f78; --npc-line:#a68b4a44; --npc-surface:#091b1680; }
.npc-panel { color:var(--npc-text); }
.npc-intro, .npc-empty, .npc-muted { text-align:center; color:var(--npc-mute); font-size:13px; margin:6px 0 12px; }
.npc-roster { display:grid; grid-template-columns:repeat(auto-fill,minmax(132px,1fr)); gap:10px; }
.npc-roster__card { display:flex; flex-direction:column; align-items:center; gap:4px; padding:10px 8px; background:var(--npc-surface); border:1px solid var(--npc-line); border-radius:8px; color:inherit; cursor:pointer; font:inherit; }
.npc-roster__card:hover, .npc-roster__card:focus-visible { border-color:#d6b25e; background:#0d2a2280; }
.npc-roster__portrait { width:64px; height:64px; display:flex; align-items:flex-end; justify-content:center; overflow:hidden; }
.npc-roster__name { color:var(--npc-strong); font-weight:600; font-size:13px; text-align:center; }
.npc-roster__rank { font-size:11px; color:var(--npc-mute); }
.npc-chip { display:inline-flex; align-items:center; padding:1px 8px; border-radius:999px; font-size:11px; font-weight:600; color:var(--npc-chip); border:1px solid var(--npc-chip); background:color-mix(in srgb,var(--npc-chip) 14%,transparent); }
.npc-favor { position:relative; display:block; width:100%; height:5px; border-radius:3px; background:#ffffff14; overflow:hidden; }
.npc-favor::after { content:''; position:absolute; left:50%; top:0; bottom:0; width:1px; background:#ffffff55; }
.npc-favor__fill { position:absolute; top:0; bottom:0; border-radius:3px; }
.npc-favor--large { height:8px; margin-top:8px; }
.npc-card { display:flex; flex-direction:column; gap:10px; }
.npc-back { align-self:center; }
.npc-card__chips { display:flex; gap:6px; justify-content:center; flex-wrap:wrap; }
.npc-card__favor { font-size:12px; color:var(--npc-mute); text-align:center; margin-top:4px; }
.npc-card__favor b { color:var(--npc-strong); }
.npc-notice { text-align:center; padding:8px 12px; border-radius:8px; font-size:13px; border:1px solid; margin-bottom:8px; }
.npc-notice--good { color:#bbf7d0; border-color:#22c55e66; background:#14532d55; }
.npc-notice--bad { color:#fecaca; border-color:#ef444466; background:#7f1d1d55; }
.npc-section-title { text-align:center; font-size:11px; letter-spacing:1px; text-transform:uppercase; color:#d6b25e; margin-top:10px; }
.npc-traits { display:flex; gap:6px; justify-content:center; flex-wrap:wrap; margin-bottom:8px; }
.npc-trait { padding:3px 10px; border-radius:6px; background:#d6b25e22; border:1px solid #d6b25e66; color:var(--npc-strong); font-size:12px; cursor:help; }
.npc-actions { display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:8px; }
.npc-action { display:flex; flex-direction:column; align-items:stretch; gap:3px; text-align:center; }
.npc-action small { color:var(--npc-mute); font-size:11px; }
.npc-gifts { display:flex; flex-direction:column; gap:6px; align-items:stretch; }
.npc-gifts > .sect-btn { align-self:center; }
.npc-gift { display:grid; grid-template-columns:1fr auto; gap:0 10px; padding:6px 10px; text-align:left; background:var(--npc-surface); border:1px solid var(--npc-line); border-radius:8px; color:inherit; font:inherit; cursor:pointer; }
.npc-gift:hover, .npc-gift:focus-visible { border-color:#d6b25e; }
.npc-gift span { color:var(--npc-strong); font-size:13px; }
.npc-gift small { grid-column:1; color:var(--npc-mute); font-size:11px; }
.npc-gift b { grid-row:1 / span 2; grid-column:2; align-self:center; }
.npc-good { color:var(--npc-good); }
.npc-bad { color:var(--npc-bad); }
.npc-memory { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px; }
.npc-memory li { display:flex; justify-content:space-between; gap:12px; padding:4px 10px; border-bottom:1px solid #ffffff10; font-size:12px; }
.npc-view { display:grid; grid-template-columns:230px minmax(0,1fr); gap:18px; align-items:start; color:var(--npc-text); }
.npc-view__side { display:flex; flex-direction:column; align-items:stretch; gap:10px; position:sticky; top:0; }
.npc-view__portrait { display:flex; justify-content:center; align-items:flex-end; min-height:160px; max-height:220px; overflow:hidden; }
.npc-view__name { text-align:center; font-size:1.2em; font-weight:bold; }
.npc-view__rename { display:flex; gap:6px; justify-content:center; flex-wrap:wrap; }
.npc-view__rename .disciple-name-input { flex:1; min-width:0; background:var(--p-111111); border:1px solid; border-radius:var(--r-sm); padding:4px 8px; font-size:14px; font-weight:bold; text-align:center; }
.npc-view__chips { display:flex; gap:5px; flex-wrap:wrap; justify-content:center; }
.npc-view__box { display:flex; flex-direction:column; gap:4px; padding:8px; background:var(--npc-surface); border:1px solid var(--npc-line); border-radius:8px; }
.npc-view__box-title { text-align:center; font-size:10px; letter-spacing:1px; text-transform:uppercase; color:#d6b25e; }
.npc-view__line { display:flex; justify-content:space-between; gap:8px; font-size:12px; }
.npc-view__line span { color:var(--npc-mute); }
.npc-view__trait { cursor:help; color:var(--npc-strong); background:#d6b25e22; border-color:#d6b25e66; }
.npc-view__actions { display:flex; flex-direction:column; gap:8px; }
.npc-view__actions .sect-section { margin:0; gap:4px; }
.npc-view__actions .sect-section__title { font-size:10px; text-align:center; margin-bottom:2px; }
.npc-view__side .npc-interactions { margin:0; }
.npc-view__side .npc-actions { grid-template-columns:1fr 1fr; gap:6px; }
.npc-view__side .npc-action small { display:none; }
.npc-view__side .npc-action .sect-btn { padding:6px 4px; font-size:11px; }
.npc-view__portrait { min-height:140px; }
.npc-view__main { display:flex; flex-direction:column; gap:12px; min-width:0; }
.npc-view__head { display:flex; align-items:flex-start; gap:8px; padding-bottom:8px; border-bottom:1px solid var(--npc-line); }
.npc-view__tabs { flex:1; display:flex; gap:6px; flex-wrap:wrap; justify-content:center; }
.npc-view__close { flex:none; display:grid; place-items:center; width:32px; height:32px; padding:0; border:1px solid var(--npc-line); border-radius:6px; background:var(--npc-surface); color:var(--npc-text); cursor:pointer; }
.npc-view__close:hover, .npc-view__close:focus-visible { border-color:#d6b25e; color:var(--npc-strong); }
.npc-view__close svg { width:14px; height:14px; }
.npc-view__tab { display:inline-flex; align-items:center; gap:5px; padding:6px 12px; border:1px solid var(--npc-line); border-radius:6px; background:var(--npc-surface); color:var(--npc-text); font:inherit; font-size:12px; cursor:pointer; }
.npc-view__tab:hover:not(:disabled), .npc-view__tab:focus-visible { border-color:#d6b25e; }
.npc-view__tab--active { border-color:#d6b25e; background:#d6b25e26; color:var(--npc-strong); }
.npc-view__tab--locked { opacity:.45; cursor:not-allowed; }
.npc-view__lock { width:12px; height:12px; }
.npc-view__panels { display:grid; }
.npc-view__panel { grid-area:1 / 1; display:flex; flex-direction:column; gap:16px; min-width:0; }
.npc-view__panel[hidden] { display:flex; visibility:hidden; pointer-events:none; }
.npc-view__value { font-size:13px; }
.npc-view__history-row { display:flex; justify-content:center; margin-top:8px; }
.npc-history .npc-memory { margin-top:4px; }
.npc-view__row { display:flex; flex-direction:column; align-items:center; text-align:center; }
.npc-view__row small { color:var(--npc-mute); font-size:10px; text-transform:uppercase; letter-spacing:.5px; }
.npc-view__row b { color:var(--npc-strong); font-size:13px; }
.npc-view__row span { color:var(--npc-mute); font-size:11px; }
.disciple-detail-modal, .clan-member-detail-modal { gap:0; }
.npc-view__slots { display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:8px; }
.npc-view__slot { display:flex; flex-direction:column; align-items:center; gap:2px; padding:10px; border:1px dashed var(--npc-line); border-radius:8px; text-align:center; }
.npc-view__slot small { color:var(--npc-mute); font-size:11px; }
.npc-view__slot span { font-size:12px; }
.sm-lb-name-btn { background:none; border:0; padding:0; font:inherit; cursor:pointer; color:inherit; text-decoration:underline dotted; text-underline-offset:2px; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sm-lb-tier { margin-top:2px; }
.sm-lb-tier .npc-chip { font-size:9px; padding:0 6px; }
@media (max-width:760px) {
    .npc-view { grid-template-columns:1fr; }
    .npc-view__side { position:static; }
}
