/* Палитры используют семантические токены. Карты, гербы и авторская символика не перекрашиваются. */
:root[data-theme=forest]{--bg:#0c1715;--surface-low:#10211c;--surface:#173027;--surface-raised:#234436;--gold:#d8c68b;--teal:#9cdac0;--text:#f2f6ee;--text-muted:#b0c8b8;--border:#395648;--input-border:#759584;--border-gold:#8c8056;--selected-bg:#344635;--on-accent:#102015}
:root[data-theme=slate]{--bg:#17191f;--surface-low:#20232b;--surface:#292d37;--surface-raised:#363c49;--gold:#b7caff;--teal:#a9d7ea;--text:#f4f5fb;--text-muted:#bbc2d1;--border:#4a5366;--input-border:#7c879e;--border-gold:#819aca;--selected-bg:#37435c;--on-accent:#181e30}
:root[data-theme=contrast]{--bg:#050505;--surface-low:#0a0a0a;--surface:#131313;--surface-raised:#222;--gold:#ffe18a;--teal:#9bf2de;--text:#fff;--text-muted:#ddd;--border:#888;--input-border:#bbb;--border-gold:#ffe18a;--selected-bg:#363020;--on-accent:#000}
/* Старый игровой пульт использует токены; мастер задаёт компоненты в своём CSS. */
html[data-theme] body{background-color:var(--bg);color:var(--text)}
html:not([data-theme=atlas]) :is(.player-story,.country-console,.game-console-page){background:var(--bg);color:var(--text)}
html:not([data-theme=atlas]) :is(.console-top,.console-inspector,.console-tools,.console-bottom,.player-panel,.stage-wait){background:var(--surface-low);color:var(--text);border-color:var(--border)}
/* Профиль без рекламной половины экрана: постоянное меню и реальные карточки. */
.account-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:26px 4%;border-bottom:1px solid var(--border)}
.account-shell{display:grid;grid-template-columns:230px minmax(0,1fr);max-width:1440px;margin:auto;padding:32px;gap:40px}
.account-nav{display:flex;flex-direction:column;gap:10px;border-right:1px solid var(--border);padding-right:24px;align-self:start;position:sticky;top:20px}
.account-nav a{padding:13px;border:1px solid transparent;border-radius:8px;color:var(--text-muted);text-decoration:none}
.account-nav a[aria-current]{background:var(--selected-bg);color:var(--gold);border-color:var(--border-gold)}
.account-nav form{margin-top:26px}.account-main{min-width:0}.account-main h1{font-size:clamp(28px,3vw,42px);margin:10px 0}.account-main>p{color:var(--text-muted);margin-bottom:28px}
.account-grid,.appearance-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:22px}.account-card{background:var(--surface-low);border:1px solid var(--border);border-radius:14px;padding:26px;min-width:0;overflow-wrap:anywhere}.account-card h2{font-size:23px;margin:10px 0 18px}.account-card p{color:var(--text-muted);line-height:1.7}.account-card dl{display:grid;grid-template-columns:1fr 1.3fr;gap:14px;font-size:14px}.account-card dt{color:var(--text-muted)}.account-card dd{margin:0}.account-wide{grid-column:1/-1}.account-person{display:flex;align-items:center;gap:18px;margin-bottom:24px}.account-person>div:last-child{min-width:0}.account-person h2{margin:0 0 6px}.account-avatar{display:grid;place-items:center;flex:0 0 64px;height:64px;background:var(--surface-raised);border:1px solid var(--border-gold);border-radius:50%;font-size:30px;color:var(--gold)}.account-person small{color:var(--text-muted)}
.palette-row{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0}.swatch{display:inline-block;width:60px;height:35px;border:1px solid #8f98a1;border-radius:7px;flex-shrink:0}.swatch.atlas{background:linear-gradient(115deg,#0b1220 40%,#1a3048 40% 70%,#d5b779 70%)}.swatch.forest{background:linear-gradient(115deg,#0c1715 40%,#234436 40% 70%,#d8c68b 70%)}.swatch.slate{background:linear-gradient(115deg,#17191f 40%,#363c49 40% 70%,#b7caff 70%)}.swatch.contrast{background:linear-gradient(115deg,#050505 40%,#fff 40% 70%,#ffe18a 70%)}
.theme-options{display:grid;gap:10px;margin-bottom:28px}.theme-option{display:flex!important;flex-direction:row;align-items:center;gap:12px;border:1px solid var(--border);border-radius:9px;padding:12px;margin:0!important}.theme-option input{width:18px;height:18px;min-width:18px;min-height:18px;flex:0 0 18px;margin:0;accent-color:var(--gold)}.theme-option:has(input:checked){border-color:var(--gold);background:var(--selected-bg)}.appearance-preview{align-self:start;position:sticky;top:20px}.preview-sample{border:1px solid var(--border);border-radius:9px;padding:22px;background:var(--surface)}.appearance-actions{display:flex;gap:14px;margin:26px 0;flex-wrap:wrap}.guest-appearance{border-top:1px solid var(--border);padding-top:20px;margin-top:28px}
/* Предпочтения доступности не меняют масштаб карты или игровую геометрию. */
html[data-density=compact] .account-card{padding:18px}html[data-density=compact] .account-grid{gap:14px}html[data-density=compact] .builder-fields{gap:12px}html[data-density=compact] .builder-shell{gap:16px}
html[data-scale=large] :is(.account-card,.account-nav,.player-box,.console-inspector){font-size:18px}
/* Явные размеры полей и навигации тоже увеличиваются, иначе наследование не действует. */
html[data-scale=large] .account-card :is(label,select,input,button,.button,.theme-option span),html[data-scale=large] .account-nav a{font-size:16px}
html[data-motion=reduced] *,html[data-motion=reduced] *::before,html[data-motion=reduced] *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media(prefers-reduced-motion:reduce){html *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:900px){.account-shell{grid-template-columns:1fr;gap:24px;padding:22px}.account-nav{position:static;flex-direction:row;flex-wrap:wrap;border-right:0;padding:0;border-bottom:1px solid var(--border);padding-bottom:16px}.account-nav form{margin:0}.account-nav a{padding:10px}.account-grid,.appearance-grid{grid-template-columns:1fr}.appearance-preview{position:static}.account-wide{grid-column:auto}}
@media(max-width:500px){.account-header{flex-wrap:wrap;padding:20px}.account-shell{padding:16px}.account-card{padding:20px}.account-card dl{grid-template-columns:1fr;gap:5px}.account-card dd{margin-bottom:10px}.account-person{align-items:start}.account-header .brand{font-size:17px;letter-spacing:2px}}
/* Явные размеры старого пульта также учитывают крупный текст. */
html[data-scale=large] .console-inspector :is(p,details,small,textarea,.state-tensions){font-size:16px}html[data-scale=large] .account-card :is(dl,small){font-size:16px}

/* Палитра и подпись не вытесняют друг друга при крупном тексте на телефоне. */
.theme-option span{min-width:0;overflow-wrap:break-word}.theme-option .swatch{width:42px;flex:0 0 42px}
.account-card .button{max-width:100%;white-space:normal;text-align:center;overflow-wrap:break-word}
.appearance-actions>*{max-width:100%;white-space:normal;text-align:center}
@media(max-width:500px){.account-header .button{width:100%}.account-person{gap:12px}.account-avatar{flex-basis:48px;height:48px;font-size:24px}.appearance-actions{display:grid;grid-template-columns:1fr}.preview-sample{padding:16px}}

/* Сеансы — вертикальный список, без широкой таблицы на телефоне. */
.session-list{list-style:none;padding:0;margin:0}.session-list li{padding:18px 0;border-bottom:1px solid var(--border)}.session-list strong{overflow-wrap:anywhere}.security-note{margin-top:24px}

/* Встроенные символы аватара не требуют загрузки файлов и не вытесняют подписи. */
.avatar-options{display:grid;gap:10px;border:0;padding:0;min-width:0;margin:24px 0}.avatar-options legend{margin-bottom:12px}.avatar-symbol{display:grid;place-items:center;width:36px;flex:0 0 36px;font-size:28px;color:var(--gold)}

/* Фото не меняет размеры карточки; исходник никогда не служит CSS-фоном. */
.account-avatar img,.avatar-symbol img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.avatar-symbol:has(img){height:36px}.avatar-upload-preview{width:128px;height:128px;object-fit:cover;border-radius:50%;border:1px solid var(--border-gold)}
.avatar-remove{margin:16px 0 32px}.account-card input[type=file]{max-width:100%;padding:12px 6px;font-size:14px}
.account-card button{max-width:100%;white-space:normal;overflow-wrap:break-word}
