/* Readable personal-office requirements; colors always accompany written status. */
.promotion-readable{--promotion-ink:#2f333b;--promotion-muted:#545860;--promotion-good:#4c5058;--promotion-bad:#843d32}
.promotion-readable .promotion-offices{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:10px;padding:14px 0;border-block:1px solid #c8bfa8;margin:12px 0}
.promotion-offices>div{min-width:0}
.promotion-offices span{display:block;color:var(--promotion-muted);font-size:12px;line-height:1.6}
.promotion-offices strong{display:block;font:700 18px/1.6 var(--serif);color:var(--promotion-ink);word-break:keep-all;overflow-wrap:anywhere}
.promotion-offices .promotion-arrow{color:#8b744a;font-size:18px}
.promotion-readable .promotion-status{margin:12px 0;padding:10px 12px;border-left:3px solid currentColor;background:#ece8db;font-size:13px;line-height:1.75}
.promotion-status b,.promotion-status span{display:block}
.promotion-status span{margin-top:4px;color:var(--promotion-ink);font-size:12px}
.promotion-readable .is-met{color:var(--promotion-good)}
.promotion-readable .is-missing{color:var(--promotion-bad)}
.promotion-readable .promotion-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;list-style:none;margin:14px 0;padding:0}
.promotion-readable .promotion-check{display:grid;grid-template-columns:minmax(0,1fr) auto;align-content:start;gap:7px 6px;padding:12px;background:#fffaf0;border:1px solid #cfc3ac;border-top:3px solid currentColor;min-width:0}
.promotion-check-label{color:var(--promotion-ink);font-size:13px;font-weight:700;line-height:1.6;overflow-wrap:anywhere}
.promotion-check-state{font-size:12px;font-weight:700;line-height:1.7;text-align:right;white-space:nowrap}
.promotion-check-values{grid-column:1/-1;display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;color:var(--promotion-ink);font-variant-numeric:tabular-nums;line-height:1.6}
.promotion-check-values small{font-size:11px;color:var(--promotion-muted)}
.promotion-check-values b{font-size:22px;font-weight:700}
.promotion-check-values .promotion-divider{font-size:15px;color:#8b8270}
.promotion-check-values>span:not(.promotion-divider){white-space:nowrap}
.promotion-readable .promotion-checks-compact{grid-template-columns:1fr;gap:5px}
.promotion-readable .promotion-checks-compact .promotion-check{padding:7px 9px;gap:2px 6px;border-top-width:1px;border-left:3px solid currentColor}
.promotion-checks-compact .promotion-check-label,.promotion-checks-compact .promotion-check-state{font-size:12px}
.promotion-checks-compact .promotion-check-values{gap:6px}
.promotion-checks-compact .promotion-check-values b{font-size:16px}
.promotion-preview{grid-column:1/-1;margin-top:4px}
.promotion-preview .promotion-checks-compact{grid-template-columns:repeat(5,minmax(0,1fr))}
.promotion-preview .promotion-checks-compact .promotion-check{grid-template-columns:1fr;gap:4px}
.promotion-preview .promotion-check-state{text-align:left}
.patronage-strip.promotion-readable .promotion-offices{gap:6px;padding:10px 0;margin-top:10px}
.patronage-strip.promotion-readable .promotion-offices strong{font-size:15px}
.patronage-strip.promotion-readable .promotion-offices span{font-size:11px}
.patronage-strip.promotion-readable .promotion-separate-note{grid-column:1/-1;color:var(--promotion-ink);font-size:12px;line-height:1.8;margin:12px 0}
.patronage-strip.promotion-readable .promotion-status{padding:8px;font-size:12px}
.patronage-strip.promotion-readable .promotion-status span{font-size:11px}
.patronage-strip.promotion-readable>.text-button{grid-column:1/-1;display:block;min-height:42px;text-align:left;font-size:13px;font-weight:700;line-height:1.8;color:#713b2d}
.promotion-readable .promotion-ability-note{margin:14px 0;font-size:13px;color:var(--promotion-ink);line-height:1.9}
.promotion-process{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:16px 0;margin:16px 0;border-block:1px solid #c8bfa8}
.promotion-process>div{min-width:0}
.promotion-process b{font-size:14px;color:var(--promotion-ink)}
.promotion-process p{font-size:12px;line-height:1.85;margin-top:6px;color:var(--promotion-muted)}
.promotion-all{border:1px solid #c8bfa8;background:#f5eedf;margin:18px 0}
.promotion-all>summary{cursor:pointer;padding:13px 14px;font-size:13px;font-weight:700;color:var(--promotion-ink);line-height:1.8}
.promotion-all>summary:focus-visible{outline:2px solid #843d32;outline-offset:3px}
.promotion-ladder{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;border-top:1px solid #c8bfa8;padding:14px}
.promotion-ladder>section{min-width:0}
.promotion-stage-heading{display:flex;justify-content:space-between;align-items:baseline;gap:7px;flex-wrap:wrap}
.promotion-stage-heading h4{margin:0;font:700 16px/1.8 var(--serif);color:var(--promotion-ink)}
.promotion-stage-heading>span{font-size:12px;font-weight:700}
.promotion-readable .promotion-system-note{font-size:12px;color:var(--promotion-muted);line-height:1.85}
.personnel-review{grid-column:1/-1;min-width:0;margin:14px 0 4px;padding:15px;border:1px solid #bdb299;border-left:3px solid #83724b;background:#f8f1e3;color:var(--promotion-ink)}
.personnel-review-heading{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:6px 14px}
.personnel-review-heading h3{margin:0;font:700 17px/1.6 var(--serif)}
.personnel-review-state{font-size:12px;font-weight:700;line-height:1.7;color:#604d2c}
.patronage-strip .personnel-review p{margin:8px 0;color:var(--promotion-ink);font-size:12px;line-height:1.8;overflow-wrap:anywhere}
.personnel-review-record{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px}
.personnel-review-record>b{font-size:15px;font-variant-numeric:tabular-nums}
.personnel-review-record>span{color:var(--promotion-muted);margin-left:auto}
.personnel-review-options{margin-top:12px;border-top:1px solid #c8bfa8}
.personnel-review-options>summary{padding:13px 0 8px;cursor:pointer;font-size:13px;font-weight:700;line-height:1.7}
.personnel-review-options>summary:focus-visible,.personnel-review-result:focus-visible{outline:2px solid #843d32;outline-offset:4px}
.personnel-review-roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:9px 0}
.personnel-review-role{display:flex;flex-direction:column;min-width:0;padding:12px;border:1px solid #cdc1aa;background:#fffbf2}
.personnel-review-role>div{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:4px 8px}
.personnel-review-role strong{font-size:14px;line-height:1.7}
.personnel-review-role>div>b{color:#713b2d;font-size:20px;font-variant-numeric:tabular-nums}
.personnel-review-role .secondary{min-height:44px;width:100%;height:auto;margin:8px 0 0;padding:9px;font-size:12px;line-height:1.6;margin-top:auto;overflow-wrap:anywhere}
.personnel-review-role>small{font-size:11px;line-height:1.7;margin-top:6px}
.personnel-review-bonus{display:block;color:#4c5058;font-weight:700}
.personnel-review-result{margin:12px 0;padding:12px;background:#eae5d7;border-left:3px solid currentColor;scroll-margin-top:20px}
.personnel-review-result>strong{font-size:14px;line-height:1.7}
.patronage-strip .personnel-review-result p:last-child{margin-bottom:0}
.patronage-strip .personnel-review .personnel-review-note{color:var(--promotion-muted)}
.recruitment-review{margin:18px 0 24px;padding:16px 18px;min-width:0;border:1px solid #c5baa3;background:#f5eedf;color:var(--promotion-ink)}
.recruitment-review p{margin:8px 0;font-size:12px;line-height:1.85;overflow-wrap:anywhere}
.recruitment-review-intro,.recruitment-review-note{color:var(--promotion-muted)}
.recruitment-review-options{margin-top:12px;border-top:1px solid #c8bfa8}
.recruitment-review-options>summary{padding:13px 0 5px;cursor:pointer;font-size:13px;line-height:1.8;font-weight:700}
.recruitment-review-options>summary:focus-visible{outline:2px solid #843d32;outline-offset:4px}
.recruitment-review-warning{margin:14px 0;padding:12px 14px;border-left:3px solid #843d32;background:#f2e2d5;color:#713b2d}
.recruitment-review-warning>b{font-size:13px}
.recruitment-review-warning.is-notice{border-color:#83724b;background:#ece6d8;color:var(--promotion-ink)}
.recruitment-review-warning p:last-child{margin-bottom:0}
.recruitment-review-candidates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0}
.recruitment-review-candidate{min-width:0;display:flex;flex-direction:column;padding:14px;border:1px solid #cfc3ac;background:#fffbf2}
.recruitment-review-candidate-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.recruitment-review-candidate-heading>div{min-width:0}
.recruitment-review-candidate-heading h4{margin:0;font:700 16px/1.65 var(--serif);overflow-wrap:anywhere}
.recruitment-review-candidate-heading p{margin:2px 0 0;color:var(--promotion-muted)}
.recruitment-review-candidate-heading>strong{white-space:nowrap;font:700 24px/1.5 var(--serif);font-variant-numeric:tabular-nums;color:#713b2d}
.recruitment-review-candidate-heading small{font-size:13px;margin-left:2px}
.recruitment-review-candidate .recruitment-review-ability{font-weight:700;color:#50545c}
.recruitment-review-consequence{font-weight:700;color:#843d32}
.recruitment-review-candidate .secondary{margin-top:auto;min-height:44px;height:auto;padding:10px 12px;font-size:13px;line-height:1.7;overflow-wrap:anywhere}
.recruitment-review-candidate>small{font-size:12px;margin-top:8px;line-height:1.7}
.recruitment-review-candidate[data-recruitment-colors]{border-color:var(--recruitment-line);border-top:3px solid var(--recruitment-accent);background:var(--recruitment-paper);color:var(--recruitment-ink)}
.recruitment-review-candidate[data-recruitment-colors] h4,.recruitment-review-candidate[data-recruitment-colors] .recruitment-review-candidate-heading>strong{color:var(--recruitment-accent)}
.recruitment-review-candidate [data-recruitment-faction]{display:flex;align-items:center;gap:10px;text-align:left;justify-content:flex-start;border:1px solid var(--recruitment-accent);background:var(--recruitment-accent);color:#fff9e8;box-shadow:0 2px 4px #30251a20}
.recruitment-review-candidate [data-recruitment-faction]>span:not(.recruitment-faction-flag):not(.recruitment-faction-arrow){flex:1;min-width:0;word-break:keep-all;overflow-wrap:anywhere}
.recruitment-review-candidate [data-recruitment-faction]:focus-visible{outline:3px solid var(--recruitment-ink);outline-offset:3px}
.recruitment-faction-flag{display:flex;align-items:center;justify-content:center;flex:0 0 30px;width:30px;height:36px;padding-bottom:5px;clip-path:polygon(0 0,100% 0,100% 100%,50% 86%,0 100%);background:#fff1c9;color:var(--recruitment-banner);font:700 21px/1 var(--serif);text-align:center;white-space:nowrap}
.recruitment-faction-flag.is-double{font-size:13px;letter-spacing:-1px}
.recruitment-faction-arrow{flex:0 0 auto;font-size:17px}
.recruitment-review .personnel-review-result p{color:var(--promotion-ink)}
.career-transfer{grid-column:1/-1;min-width:0;margin:10px 0 4px;padding:15px;border:1px solid #bdb299;border-left:3px solid #5e626a;background:#f5f0e4;color:var(--promotion-ink)}
.patronage-strip .career-transfer p{margin:8px 0;font-size:12px;line-height:1.85;color:var(--promotion-ink);overflow-wrap:anywhere}
.career-transfer-current{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px}
.career-transfer-current>b{font-size:14px}
.career-transfer-current>span{color:var(--promotion-muted)}
.career-transfer-options{margin-top:12px;border-top:1px solid #c8bfa8}
.career-transfer-options>summary,.career-transfer-checks>summary{padding:12px 0 6px;cursor:pointer;font-size:13px;font-weight:700;line-height:1.8;overflow-wrap:anywhere}
.career-transfer-options>summary:focus-visible,.career-transfer-checks>summary:focus-visible{outline:2px solid #843d32;outline-offset:4px}
.career-transfer-candidate{padding:13px;border:1px solid #cdc1aa;margin:9px 0;background:#fffbf2;min-width:0}
.career-transfer-candidate-heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap}
.career-transfer-candidate-heading h4{font:700 16px/1.7 var(--serif);margin:0}
.career-transfer-candidate-heading>strong{font:700 24px/1.5 var(--serif);font-variant-numeric:tabular-nums;color:#713b2d}
.career-transfer-candidate-heading small{font-size:13px;margin-left:2px}
.career-transfer-chance-label{display:block;font:700 11px/1.6 var(--sans);color:var(--promotion-muted)}
.career-transfer-candidate-heading>.career-transfer-ineligible{font-size:17px;line-height:1.8}
.patronage-strip .career-transfer .career-transfer-warning{color:#803b2d;font-weight:700;padding:9px 11px;border-left:3px solid #843d32;background:#f3e6d8}
.career-transfer .promotion-offices{margin:12px 0}
.career-transfer-checks{margin:12px 0;border-top:1px solid #c8bfa8;border-bottom:1px solid #c8bfa8;padding-bottom:7px}
.career-transfer .promotion-checks-compact{grid-template-columns:repeat(2,minmax(0,1fr))}
.patronage-strip .career-transfer .career-transfer-next{border-top:1px solid #c8bfa8;padding-top:12px;margin-top:14px}
.career-transfer-candidate .secondary{width:100%;min-height:44px;height:auto;padding:10px 12px;white-space:normal;line-height:1.7;font-size:13px;overflow-wrap:anywhere}
.patronage-strip .career-transfer .career-transfer-note{color:var(--promotion-muted)}
@media(max-width:1100px){.promotion-preview .promotion-checks-compact{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:520px){.promotion-readable .promotion-checks:not(.promotion-checks-compact){grid-template-columns:1fr}.promotion-preview .promotion-checks-compact{grid-template-columns:repeat(2,minmax(0,1fr))}.promotion-ladder{grid-template-columns:1fr}.promotion-process{grid-template-columns:1fr;gap:12px}.promotion-readable .promotion-offices{gap:8px}.promotion-offices strong{font-size:17px}.patronage-strip.promotion-readable{grid-template-columns:1fr;padding:13px}.patronage-strip.promotion-readable>strong{grid-column:1;grid-row:auto;margin:4px 0 7px}}
@media(max-width:640px){.personnel-review-roles{grid-template-columns:1fr}.personnel-review{padding:12px}.personnel-review-record>span{flex-basis:100%;margin-left:0}.personnel-review-role .secondary{font-size:13px}.personnel-review-role>div>b{font-size:21px}}
@media(max-width:640px){.recruitment-review{padding:13px}.recruitment-review-candidates{grid-template-columns:1fr}.recruitment-review-candidate{padding:12px}}
@media(max-width:640px){.career-transfer{padding:12px}.career-transfer-candidate{padding:11px}.career-transfer-current>span{flex-basis:100%}.career-transfer .promotion-offices strong{font-size:17px;overflow-wrap:anywhere}}
@media(max-width:520px){.career-transfer .promotion-checks-compact{grid-template-columns:1fr}.career-transfer .promotion-check-label{word-break:keep-all}.promotion-check-values .promotion-divider{display:none}}
