/* Character dossiers inside the portal frame. Breakpoints follow the frame,
   whose usable width differs from the viewport because of the sidebar. */
.is-portal .character-page {
    padding: 12px clamp(18px, 3.5cqi, 36px) 28px;
}
.character-page .char { gap: 24px; }
.character-page .char__stage {
    width: 100%;
    margin: 0;
    padding: 24px 0 32px;
    border-bottom: 1px solid var(--border-strong);
}
.is-portal .portal-scroll .character-page .char__inner {
    padding: 0 12px;
    grid-template-columns: minmax(180px, .75fr) minmax(0, 1.6fr);
    gap: clamp(24px, 4cqi, 44px);
    align-items: center;
}
.character-page .char__card {
    width: calc(100% - 32px);
    max-width: 260px;
    margin: 0 auto 64px;
}
.character-page .char__card-plate { bottom: -60px; max-width: 100%; white-space: normal; text-align: center; }
.character-page .char__portrait { min-width: 0; min-height: 300px; }
.character-page .char__card-tag { top: 16px; left: 16px; right: 16px; font-size: .58rem; line-height: 1.5; }
.character-page .char__card-status { top: 38px; left: 16px; right: auto; font-size: .62rem; }
.character-page .char__card .char__skull { top: 60px; right: 16px; }
.character-page .char__body { gap: 24px; }
.character-page .char__head { gap: 10px; }
.character-page .char__name {
    margin: 0;
    font-size: clamp(30px, 4.8cqi, 50px);
    line-height: 1.15;
    overflow-wrap: anywhere;
}
.character-page .char__sub { gap: 5px; line-height: 1.6; }
.character-page .char__badges { margin-top: 2px; }
.character-page .char__badges .plate { max-width: 100%; white-space: normal; }
.character-page .gbar { grid-template-columns: 80px minmax(0, 1fr) auto; gap: 12px; }
.character-page .gbar__value { min-width: 0; font-variant-numeric: tabular-nums; }
.character-page .char__plates { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.character-page .char__plate { padding: 12px; align-content: start; }
.character-page .char__plate:last-child:nth-child(odd) { grid-column: auto; }
.character-page .char__plate dt { white-space: normal; line-height: 1.6; letter-spacing: .12em; }
.character-page .char__plate dd { line-height: 1.45; }
.character-page .char__grid,
.character-page .char__grid--no-profile {
    grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr) minmax(220px, .8fr);
    gap: 18px;
    align-items: stretch;
}
.character-page .cbox { min-width: 0; padding: 20px; gap: 18px; }
.character-page .cbox--eq { grid-column: auto; min-width: 0; }
.character-page .char__grid--no-profile { grid-template-columns: minmax(0, 1fr) minmax(220px, .6fr); }
.character-page .cbox__head { gap: 10px; flex-wrap: wrap; }
.character-page .cbox__title { white-space: normal; line-height: 1.6; letter-spacing: .15em; }
.character-page .cbox__rule { min-width: 20px; }
.character-page .cbox__split { grid-template-columns: minmax(0, 1fr); gap: 18px; justify-items: center; }
.character-page .radar { width: 160px; height: 160px; max-width: 100%; }
.character-page .skillwin { width: 100%; min-width: 0; }
.character-page .char__logs { gap: 18px; }
.character-page .party { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; }
.character-page .csearch { margin-top: 0; gap: 18px; padding: 22px; }
.character-page .csearch__field { min-width: 0; }

@container (max-width: 1000px) {
    .character-page .char__grid,
    .character-page .char__grid--no-profile { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .character-page .char__grid:not(.char__grid--no-profile) .cbox--skills { grid-column: 1 / -1; }
    .character-page .cbox__split { grid-template-columns: 160px minmax(0, 1fr); gap: 28px; }
    .character-page .char__grid--no-profile .cbox__split { grid-template-columns: minmax(0, 1fr); }
    .character-page .gbar { grid-template-columns: minmax(0, 1fr) auto; gap: 7px 12px; }
    .character-page .gbar__label { grid-column: 1; grid-row: 1; }
    .character-page .gbar__value { grid-column: 2; grid-row: 1; white-space: normal; text-align: right; }
    .character-page .gbar__track { grid-column: 1 / -1; grid-row: 2; }
    .character-page .char__plates { grid-template-columns: repeat(auto-fit, minmax(min(130px, 100%), 1fr)); }
    .character-page .csearch { grid-template-columns: minmax(0, 1fr); }
}
@container (max-width: 680px) {
    .is-portal .portal-scroll .character-page .char__inner { grid-template-columns: minmax(0, 1fr); gap: 28px; padding: 0 4px; }
    .character-page .char__body { grid-row: 1; }
    .character-page .char__card { max-width: 220px; margin-bottom: 64px; }
    .character-page .char__portrait { min-height: 260px; }
    .character-page .char__grid,
    .character-page .char__grid--no-profile,
    .character-page .char__logs { grid-template-columns: minmax(0, 1fr); }
    .character-page .cbox__split { grid-template-columns: 140px minmax(0, 1fr); gap: 20px; }
    .character-page .radar { width: 140px; height: 140px; }
    .character-page .chron__row { grid-template-columns: minmax(0, 1fr); gap: 4px; }
}
@container (max-width: 440px) {
    .is-portal .character-page { padding: 8px 16px 20px; }
    .character-page .char { gap: 18px; }
    .character-page .char__stage { padding-top: 12px; padding-bottom: 18px; }
    .character-page .char__body { gap: 20px; }
    .character-page .char__name { font-size: clamp(28px, 9cqi, 38px); }
    .character-page .char__plates { grid-template-columns: minmax(0, 1fr); }
    .character-page .char__plate { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; align-items: center; }
    .character-page .char__plate dd { text-align: right; }
    .character-page .cbox { padding: 16px; }
    .character-page .cbox__split { grid-template-columns: minmax(0, 1fr); gap: 18px; }
    .character-page .party { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
    .character-page .party__name { overflow-wrap: anywhere; }
    .character-page .csearch { padding: 18px 14px; }
    .character-page .csearch__field { grid-template-columns: minmax(0, 1fr); }
    .character-page .csearch__field .fbtn { min-width: 0; width: 100%; }
    .character-page .char__sig-grid label { grid-template-columns: minmax(0, 1fr); }
}
