/* ============================================================
   Geniro Gram — классические (Blade + Bootstrap 4) страницы Pixelfed
   в дизайн-системе редизайна.

   Подключается в layouts/app.blade.php ПОСЛЕ /gram/gram.css и после
   инлайнового uikit.custom.css. Токены (--bg/--sf/--tx/--cy/--vi/--mg…)
   и классы .gg-* берутся из gram.css; здесь только то, чего там нет:
   доводка шапки под Blade и перевод бутстраповских компонентов на токены.

   Тема — общая с редизайном: класс body.light + localStorage gg-theme
   (gram-fx.js), а НЕ prefers-color-scheme. До этого файла классика жила
   по системной теме и разъезжалась с переключателем в шапке.

   ЗАЧЕМ ВЕЗДЕ ПРЕФИКС `body.gg`
   Старая тема (uikit.custom.css, правится в админке) красит классику
   правилами вида `body:not(.force-light-mode) .form-control` — это на один
   класс «весомее» голого `.form-control`, и без префикса она выигрывает,
   даже стоя выше в документе. `body.gg` даёт ту же весомость (1 элемент +
   2 класса), а при равной весомости побеждает то правило, что ниже, — наше.
   Класс `gg` вешает на <body> сам layouts/app.blade.php.
   Убрать uikit нельзя: он же красит админку Pixelfed, куда этот файл не едет.
   ============================================================ */

/* ---------- шапка: то, что в React делается инлайн-стилями ---------- */
.gg-um { position: relative; display: flex; margin: 0 4px; }
.gg-um-b { display: flex; padding: 0; background: none; border: none; cursor: pointer; border-radius: 50%; }
.gg-um-b img { width: 32px; height: 32px; border-radius: 50%; object-fit: cover; border: 1px solid var(--ln); background: var(--sf2); }
.gg-menu[hidden] { display: none; }
.gg-badge[hidden] { display: none; }
/* Иконка кнопки темы: солнце в тёмной теме, луна — в светлой */
.gg-i-light { display: none; }
body.light .gg-i-light { display: block; }
body.light .gg-i-dark { display: none; }
body.gg .gg-menu a, body.gg .gg-menu button { color: var(--tx) !important; }
body.gg .gg-hdr .gg-nlk:hover { color: var(--tx) !important; }

/* ---------- каркас страницы ---------- */
/* !important — старая тема красит фон страницы через
   `body:not(.force-light-mode){background-color: … !important}` */
body.gg { background: var(--bg) !important; color: var(--tx); font-family: var(--font-body) !important; }
body.gg main#content { min-height: 60vh; }
body.gg h1, body.gg h2, body.gg h3, body.gg h4, body.gg h5, body.gg h6,
body.gg .h1, body.gg .h2, body.gg .h3, body.gg .h4, body.gg .h5, body.gg .h6 {
    font-family: var(--font-display);
    font-weight: 600;
    letter-spacing: -.01em;
    color: var(--tx);
}
body.gg .lead { font-size: 15.5px; }
body.gg hr { border-top: 1px solid var(--ln); }

/* ---------- поверхности ---------- */
/* !important у card/list-group: старая тема отбирает их селектором
   `.card:not([class*="bg-"])` — он весомее любого разумного префикса */
body.gg .card,
body.gg .list-group-item {
    background-color: var(--sf) !important;
    border-color: var(--ln) !important;
    color: var(--tx) !important;
}
body.gg .modal-content,
body.gg .dropdown-menu:not(.gg-menu),
body.gg .popover {
    background-color: var(--sf);
    border-color: var(--ln);
    color: var(--tx);
}
body.gg .card { border-radius: var(--r-lg); }
body.gg .card-header, body.gg .card-footer { background-color: var(--sf2) !important; border-color: var(--ln) !important; }
body.gg .bg-white, body.gg .bg-light { background-color: var(--sf) !important; }
body.gg .border, body.gg .border-top, body.gg .border-bottom, body.gg .border-left, body.gg .border-right { border-color: var(--ln) !important; }
body.gg .text-dark { color: var(--tx) !important; }
body.gg .text-muted, body.gg .text-lighter, body.gg .help-text { color: var(--tx2) !important; }
body.gg .text-primary { color: var(--vi) !important; }
body.gg .text-success { color: var(--ok) !important; }
body.gg .text-danger { color: var(--er) !important; }
body.gg .text-warning { color: var(--wn) !important; }
body.gg .close { color: var(--tx); text-shadow: none; opacity: .6; }
body.gg .close:hover { color: var(--tx); opacity: 1; }
body.gg .modal-header, body.gg .modal-footer { border-color: var(--ln); }
body.gg .modal-backdrop.show { opacity: .66; }
body.gg .dropdown-item { color: var(--tx); }
body.gg .dropdown-item:hover, body.gg .dropdown-item:focus { background-color: var(--sf2); color: var(--tx); }
body.gg .dropdown-divider { border-color: var(--ln); }
body.gg .table { color: var(--tx); }
body.gg .table td, body.gg .table th { border-color: var(--ln); }
body.gg .table thead th { border-bottom-color: var(--ln); color: var(--tx2); }

/* ---------- поля ---------- */
body.gg .form-control,
body.gg .custom-select,
body.gg .custom-file-label,
body.gg select,
body.gg textarea,
body.gg input[type="text"],
body.gg input[type="email"],
body.gg input[type="password"],
body.gg input[type="url"],
body.gg input[type="number"] {
    background-color: var(--sf2);
    border: 1px solid var(--ln);
    border-radius: var(--r-md);
    color: var(--tx);
    font-family: var(--font-body);
    font-size: 14.5px;
}
body.gg .form-control:focus, body.gg .custom-select:focus {
    background-color: var(--sf2);
    border-color: var(--cy);
    box-shadow: none;
    color: var(--tx);
}
body.gg .form-control::placeholder { color: var(--tx2); opacity: 1; }
body.gg .form-control:disabled, body.gg .form-control[readonly] { background-color: var(--sf); opacity: .7; }
body.gg .custom-file-label::after { background-color: var(--sf); border-left: 1px solid var(--ln); color: var(--tx); }
body.gg .input-group-text { background-color: var(--sf); border-color: var(--ln); color: var(--tx2); }
/* Флажки и радио: штатные системные квадратики на тёмной карточке выглядят
   инородно. .custom-control-input не трогаем — он у бутстрапа прозрачный,
   видимую галочку рисует label::before. */
body.gg input[type="checkbox"]:not(.custom-control-input),
body.gg input[type="radio"]:not(.custom-control-input) {
    appearance: none;
    -webkit-appearance: none;
    width: 18px;
    height: 18px;
    margin: 0;
    border: 1.5px solid var(--ln);
    background: var(--sf2);
    cursor: pointer;
    position: relative;
    vertical-align: -3px;
    flex-shrink: 0;
}
body.gg input[type="checkbox"]:not(.custom-control-input) { border-radius: 5px; }
body.gg input[type="radio"]:not(.custom-control-input) { border-radius: 50%; }
body.gg input[type="checkbox"]:not(.custom-control-input):checked { background: var(--mg); border-color: var(--mg); }
body.gg input[type="checkbox"]:not(.custom-control-input):checked::after {
    content: '';
    position: absolute;
    left: 5px;
    top: 1px;
    width: 4px;
    height: 9px;
    border: solid #0B0E17;
    border-width: 0 2.5px 2.5px 0;
    transform: rotate(45deg);
}
body.gg input[type="radio"]:not(.custom-control-input):checked { border: 5px solid var(--mg); }
body.gg input[type="checkbox"]:not(.custom-control-input):focus-visible,
body.gg input[type="radio"]:not(.custom-control-input):focus-visible { outline: 2px solid var(--cy); outline-offset: 2px; }
body.gg input[type="checkbox"]:disabled, body.gg input[type="radio"]:disabled { opacity: .45; cursor: default; }
body.gg .custom-control-label::before { background-color: var(--sf2); border-color: var(--ln); }
body.gg .custom-control-input:checked ~ .custom-control-label::before { background-color: var(--vi); border-color: var(--vi); }
body.gg label, body.gg .col-form-label { color: var(--tx); }

/* ---------- кнопки ---------- */
body.gg .btn {
    border-radius: var(--r-md);
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 14px;
    padding: 9px 18px;
    transition: box-shadow .2s var(--ease-out), transform .15s var(--ease-out), border-color .2s;
}
body.gg .btn-primary,
body.gg .btn-primary:not(:disabled):not(.disabled):active {
    background: var(--mg) !important;
    border: none !important;
    color: #0B0E17 !important;
    font-weight: 800;
    box-shadow: var(--pop-vi);
}
body.gg .btn-primary:hover, body.gg .btn-primary:focus { box-shadow: var(--pop-vi-lg); transform: none; }
body.gg .btn-primary:active { transform: scale(.97); }
body.gg .btn-primary:disabled, body.gg .btn-primary.disabled { opacity: .5; box-shadow: none; }
body.gg .btn-secondary, body.gg .btn-light, body.gg .btn-outline-secondary, body.gg .btn-outline-primary, body.gg .btn-default {
    background: var(--sf) !important;
    border: 1px solid var(--ln) !important;
    color: var(--tx) !important;
}
body.gg .btn-secondary:hover, body.gg .btn-light:hover, body.gg .btn-outline-secondary:hover, body.gg .btn-outline-primary:hover, body.gg .btn-default:hover { border-color: var(--vi) !important; box-shadow: none; }
body.gg .btn-danger { background: var(--er) !important; border: none !important; color: #0B0E17 !important; }
body.gg .btn-outline-danger { background: transparent !important; border: 1px solid var(--er) !important; color: var(--er) !important; }
body.gg .btn-outline-danger:hover { background: var(--er) !important; color: #0B0E17 !important; }
body.gg .btn-success { background: var(--ok) !important; border: none !important; color: #0B0E17 !important; }
body.gg .btn-link { color: var(--cy) !important; font-weight: 700; box-shadow: none; }
body.gg .btn-link:hover { color: var(--mg) !important; }
body.gg .btn-sm { padding: 6px 13px; font-size: 13px; }

/* ---------- сообщения ---------- */
body.gg .alert { border-radius: var(--r-md); border: 1px solid var(--ln); font-family: var(--font-body); }
body.gg .alert-primary, body.gg .alert-success { background: rgba(52, 211, 153, .12); border-color: var(--ok); color: var(--ok); }
body.gg .alert-info { background: rgba(34, 211, 238, .12); border-color: var(--cy); color: var(--cy); }
body.gg .alert-danger { background: rgba(248, 113, 113, .12); border-color: var(--er); color: var(--er); }
body.gg .alert-warning { background: rgba(251, 191, 36, .12); border-color: var(--wn); color: var(--wn); }
body.gg .badge-primary { background-color: var(--vi); }
body.gg .progress { background-color: var(--sf2); border-radius: var(--r-pill); height: 9px; }
body.gg .progress-bar { background: var(--mg); }

/* ---------- подвал ---------- */
body.gg footer { border-top: 1px solid var(--ln); margin-top: 56px; }
body.gg footer a { color: var(--tx2) !important; }
body.gg footer a:hover { color: var(--tx) !important; }
