.dossier-modal.wide.agent-personnel-modal {width:min(960px,96vw);}
.personnel-overview {display:grid;grid-template-columns:minmax(0,1.3fr) minmax(280px,1fr);gap:24px;align-items:start;}
.personnel-overview .personnel-sheet {display:grid;grid-template-columns:110px minmax(0,1fr);gap:16px;}
.personnel-overview .personnel-photo {width:110px;height:145px;object-fit:cover;}
.personnel-overview .case-facts {grid-template-columns:1fr;margin:10px 0 0;}
.personnel-bio {font-size:12px;line-height:1.6;}
.personnel-radar .skill-radar svg {max-width:360px;}
.personnel-radar .case-provenance {text-align:center;}
.radar-starting {fill:none;stroke:var(--paper);stroke-opacity:.75;stroke-width:1.5;stroke-dasharray:5 4;}
.radar-key {display:inline-block;margin:4px 8px;}
.radar-key.starting {color:var(--paper);}
.radar-key.current {color:var(--accent-soft);}
.career-experience {margin:18px 0 4px;padding:0 14px 0 0;}
.experience-track {position:relative;height:26px;background:var(--panel);border:1px solid var(--line);}
.experience-fill {height:100%;background:var(--accent-soft);}
.experience-current {position:absolute;top:3px;left:clamp(24px,var(--xp-label-position),calc(100% - 24px));transform:translateX(-50%);padding:0 5px;line-height:18px;background:var(--panel-alt);color:var(--paper);font-size:10px;white-space:nowrap;}
.experience-milestones {position:relative;height:26px;}
.xp-hash {position:absolute;top:-5px;transform:translateX(-50%);width:30px;height:30px;color:var(--muted);}
.xp-hash::before {content:'';position:absolute;left:14px;top:0;height:10px;width:2px;background:var(--muted);border:1px solid var(--panel);}
.xp-hash.available::before {width:5px;left:12px;background:var(--paper);outline:1px solid var(--accent-soft);}
.xp-hash.spent::before {background:var(--accent-soft);}
.xp-hash.available {color:var(--paper);}
.xp-hash span {position:absolute;left:0;right:0;bottom:0;text-align:center;font-size:10px;}
.radar-skill-upgrade {cursor:pointer;outline:none;}
.radar-skill-hit,.radar-point-hit {fill:transparent;stroke:none;}
.radar-skill-upgrade .radar-label,.radar-upgrade-gain {fill:var(--accent-soft);}
.radar-upgrade-gain {font-weight:bold;}
.radar-skill-upgrade:hover .radar-skill-hit,.radar-skill-upgrade:focus-visible .radar-skill-hit {fill:var(--panel-alt);stroke:var(--accent-soft);stroke-width:1;}
.radar-skill-upgrade:hover .radar-point,.radar-skill-upgrade:focus-visible .radar-point {fill:var(--accent-soft);stroke:var(--paper);stroke-width:1;}
.trait-tag summary:focus-visible,.career-menu summary:focus-visible {outline:2px solid var(--accent-soft);outline-offset:3px;}
.personnel-traits {margin:18px 0;}
.personnel-traits h3 {margin-bottom:10px;}
.personnel-traits h3 small {color:var(--muted);margin-left:8px;}
.trait-tags {display:flex;flex-wrap:wrap;align-items:flex-start;gap:7px;}
.trait-tag {font-size:11px;border:1px solid var(--line);max-width:100%;}
.trait-tag summary {cursor:pointer;list-style-position:inside;padding:8px 10px;}
.trait-tag.positive summary {color:var(--positive);}
.trait-tag.negative summary {color:var(--danger);}
.trait-tag.specialty summary {color:var(--accent-soft);}
.trait-tag[open] {flex-basis:100%;background:var(--panel-alt);}
.trait-tag>div {padding:0 12px 12px;line-height:1.6;}
.trait-tag>div p {margin:6px 0;}
.trait-tag>div small {color:var(--muted);}
.career-controls {display:flex;align-items:flex-start;justify-content:flex-end;gap:8px;margin:4px 0 14px;}
.career-controls>.command,.career-menu>summary {font-size:10px;min-height:34px;padding:8px 12px;}
.career-controls>.command:disabled {opacity:.45;cursor:not-allowed;}
.career-menu {position:relative;}
.career-menu>summary {display:flex;align-items:center;gap:10px;list-style:none;cursor:pointer;}
.career-menu>summary::-webkit-details-marker {display:none;}
.career-menu>summary small {font-size:10px;color:var(--accent-soft);}
.career-menu[open]>summary {border-color:var(--accent-soft);}
.career-menu-popover {position:absolute;z-index:5;right:0;top:calc(100% + 5px);width:max-content;max-width:min(440px,82vw);max-height:240px;overflow:auto;padding:6px 10px;background:var(--panel-alt);border:1px solid var(--line);box-shadow:3px 3px 0 var(--panel);}
.career-menu-popover table {width:100%;border-collapse:collapse;font-size:11px;}
.career-menu-popover th,.career-menu-popover td {padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;}
.career-menu-popover tr:last-child>* {border-bottom:0;}
.career-menu-popover th {font-weight:400;}
.career-menu-popover th b {color:var(--accent-soft);font-weight:400;white-space:nowrap;}
.career-menu-popover td {color:var(--muted);white-space:nowrap;}
.career-menu-popover .command {font-size:10px;min-height:32px;padding:7px 10px;}
.agent-upgrade-notice {color:var(--accent-soft);font-size:10px;}
.agent-portrait-frame {position:relative;display:block;width:max-content;max-width:100%;align-self:start;}
.agent-portrait-frame>img {display:block;}
.agent-portrait-frame.upgrade-ready {outline:2px solid var(--warning);outline-offset:1px;}
.agent-portrait-frame.upgrade-ready::after {
  content:'';position:absolute;inset:-3px;padding:3px;pointer-events:none;
  background:linear-gradient(110deg,var(--warning) 20%,var(--document) 32%,var(--warning) 44%,var(--warning) 65%,var(--document) 77%,var(--warning) 89%);
  background-size:300% 100%;animation:upgrade-border-shine 3.5s linear infinite;
  mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;
}
@keyframes upgrade-border-shine {from {background-position:100% 0;}to {background-position:0 0;}}
.agent-upgrade-notice,.nav-upgrade-badge {display:inline-flex;width:max-content;max-width:100%;align-items:center;background:var(--warning);color:var(--ink);font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:0;padding:3px 5px;line-height:1.3;}
.career-controls>[data-open-upgrades] small {color:inherit;font-size:10px;}
.modal-scrim.popover-scrim {z-index:90;padding:24px;background:#1f151f85;backdrop-filter:blur(2px);}
.agent-upgrade-popover .upgrade-picker {display:grid;gap:18px;}
.upgrade-picker h3 {max-width:1116px;margin:8px auto 12px;font-size:11px;letter-spacing:1px;color:var(--paper);text-shadow:0 2px 8px var(--ink);}
.upgrade-choice .selection-card-content {display:flex;flex-direction:column;gap:12px;}
.upgrade-choice strong {display:flex;align-items:center;gap:10px;font-family:var(--display);font-size:18px;line-height:1.2;}
.upgrade-choice strong .game-icon {flex:none;}
.upgrade-effect {font-size:12px;line-height:1.5;color:var(--accent-soft);}
.upgrade-choice[data-kind="skill"] .upgrade-effect {font-size:20px;}
.upgrade-choice .category-tags {margin:0;margin-top:auto;gap:6px 10px;}
.agent-upgrade-popover .selection-footer {font-size:11px;color:var(--paper);text-shadow:0 2px 8px var(--ink);}
@media(prefers-reduced-motion:reduce) {.agent-portrait-frame.upgrade-ready::after {animation:none;}}
.reduce-motion .agent-portrait-frame.upgrade-ready::after {animation:none;}
@media(max-width:700px) {
  .personnel-overview {grid-template-columns:1fr;gap:8px;}
  .personnel-radar .skill-radar svg {max-width:310px;}
  .career-controls {justify-content:flex-start;}
  .career-menu-popover {left:0;right:auto;max-width:calc(100vw - 64px);}
  .career-menu-popover th,.career-menu-popover td {padding:7px 5px;}
}

/* Personnel records use an ivory file sheet against the dark command desk. */
.agent-personnel-modal,.asset-personnel-modal,.agent-upgrade-popover {
  --paper:var(--document-ink);
  --text:var(--document-ink);
  --muted:var(--document-muted);
  --line:#61546260;
  --line-soft:#61546240;
  --panel:#d8d7c6;
  --panel-alt:#dedecd;
  --bg:var(--document);
  --accent-soft:#2e586d;
  --cyan:#2e586d;
  --positive:#2e586d;
  --danger:#9f293b;
  color-scheme:light;
  color:var(--document-ink);
  background:var(--document);
  border:0;
  border-top:4px solid var(--red);
}
.dossier-modal.wide.agent-personnel-modal {width:min(1180px,96vw);}
.agent-personnel-modal .dossier-header,.asset-personnel-modal .dossier-header {background:transparent;border-bottom:1px solid var(--line);padding:16px 24px 12px;}
.agent-personnel-modal .dossier-header h2,.asset-personnel-modal .dossier-header h2 {font-family:var(--mono);text-transform:none;font-size:30px;letter-spacing:0;}
.agent-personnel-modal .dossier-body {padding:18px 24px;}
.personnel-overview {grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:20px;align-items:center;}
.personnel-overview .personnel-sheet {grid-template-columns:180px minmax(0,1fr);gap:22px;align-items:start;}
.personnel-overview .personnel-photo {width:180px;height:250px;object-fit:cover;padding:7px;background:var(--document);border:1px solid var(--line);box-shadow:3px 4px 0 #61546220;}
.personnel-overview .case-facts {margin:10px 0 0;gap:10px;}
.personnel-overview .case-facts div {padding-top:6px;}
.personnel-overview .case-facts dt {font-size:10px;}
.personnel-overview .case-facts dd {font-size:14px;}
.personnel-overview .classification {background:var(--slate);color:var(--document);border:0;font-size:11px;padding:5px 8px;}
.personnel-overview .personnel-bio {font-size:12px;line-height:1.6;margin:12px 0 0;}
.personnel-radar .skill-radar svg {max-width:360px;}
.personnel-radar .radar-label {font-size:12px;}
.personnel-radar .radar-value {font-size:14px;}
.agent-personnel-modal .agent-vitals {display:flex;flex-wrap:wrap;gap:8px 20px;margin:16px 0 8px;padding:10px 0;border-block:1px solid var(--line);}
.agent-personnel-modal .agent-vitals>span {font-size:10px;align-items:baseline;flex-wrap:wrap;}
.agent-personnel-modal .agent-vitals b {font-size:20px;margin:0;}
.agent-personnel-modal .personnel-assignment {font-size:11px;margin:10px 0;}
.agent-personnel-modal .experience-fill {background:#a6cfc6;}
.agent-personnel-modal .experience-current {background:var(--document-ink);color:var(--document);}
.agent-personnel-modal .experience-track {background:#51485635;border:0;}
.agent-personnel-modal .radar-starting {stroke:var(--document-muted);}
.agent-personnel-modal .command.primary,.asset-personnel-modal .command.primary {background:var(--document-ink);color:var(--document);border-color:var(--document-ink);}
.agent-personnel-modal .command:focus-visible,.asset-personnel-modal .command:focus-visible {outline-color:var(--document-ink);}
.personnel-traits {padding-top:12px;border-top:1px solid var(--line);margin:14px 0 0;}
.personnel-traits h3 {font-size:14px;letter-spacing:1px;}
.trait-tag {border:0;border-left:2px solid var(--line);}
.trait-tag[open] {background:transparent;border-bottom:1px solid var(--line);}
.trait-tag.positive summary {color:var(--positive);}
.trait-tag.negative summary {color:var(--danger);}

.dossier-modal.wide.asset-personnel-modal {width:min(1000px,96vw);}
.asset-personnel-modal .personnel-sheet {display:grid;grid-template-columns:130px minmax(0,1fr);gap:16px;}
.asset-personnel-modal .personnel-photo {width:130px;height:175px;padding:6px;background:var(--document);border-color:var(--line);}
.asset-personnel-modal .case-facts {margin:12px 0;gap:10px;}
.asset-personnel-modal .classification {background:var(--slate);color:var(--document);}

