/* base.css — общая база всех страниц Astro3D.
 * Подключается второй после dark.css: dark → base → fragments → страничный.
 * Здесь только то, что дословно дублировалось в 3+ страничных файлах.
 * Страничные файлы хранят лишь свои отклонения (другой max-width, отступы).
 * Порядок важен: страничные правила идут позже и перебивают базовые.
 * Шрифты не задаём — их перекрывает !important-стек AstroGlyphs в dark.css. */

:root {
    --violet: #8900FF;
    --violet-light: #A138FC;
    --violet-mid: #6400BA;
    --violet-dark: #4D008F;
}

/* ===== Скаффолд ===== */
body {
    margin: 0;
    padding: 0;
}

body * {
    margin: 0 auto;
    border: 0;
}

.center {
    min-width: 0;
    max-width: 100%;
    text-align: center;
    position: relative;
    margin: 5px auto;
    padding: 5px;
    top: 0;
    left: 0;
}

.work {
    display: flex;
    border: 1px solid black;
    height: max-content;
    flex-direction: column;
    border-radius: 15px;
    padding: 3px;
    width: 100%;
    max-width: 640px;
    margin: 0 auto;
    box-sizing: border-box;
}

#chart, #pieChart {
    width: 100%;
    max-width: 700px;
    margin: 0 auto;
    box-sizing: border-box;
}

#chart .js-plotly-plot,
#drawChart .js-plotly-plot,
#pieChart .js-plotly-plot,
#rect .js-plotly-plot {
    width: 100%;
    max-width: 100%;
}

/* ===== Формы .grid ===== */
.grid {
    width: 100%;
    max-width: 596px;
    box-sizing: border-box;
    display: inline-grid;
    grid-template-columns: auto auto auto auto;
    gap: 8px;
    padding: 2px;
    margin: 1px auto;
    align-items: center;
    justify-content: space-between;
    align-content: center;
}

.grid * {
    border-bottom: 1px solid rgba(83, 83, 83, 0.4);
    margin: 1px 0px;
}

.grid label {
    border: 0;
}

select-checkbox {
    font-weight: bold;
}

[type=button] {
    border: 1px solid rgba(83, 83, 83, 0.4);
    border-radius: 5px;
}

legend {
    cursor: pointer;
    width: 100%;
    margin: 2px 2px;
    text-align: start;
}

fieldset {
    padding: 0 4px;
    width: 100%;
    max-width: 600px;
    box-sizing: border-box;
    margin: 2px auto;
    text-align: start;
}

/* ===== Модалки: общее ядро .modal-default (header.js) и .modal-div (calendar2D).
 * Ниже — только совпадающие объявления; отличия живут в своих файлах. */
.modal-default, .modal-div {
    position: fixed;
    left: 50vw;
    transform: translate(-50%, -50%) scale(1);
    opacity: 1;
    max-width: 94vw;
    max-height: 90dvh;
    overflow: auto;
    box-sizing: border-box;
    z-index: 99999999;
    transition: transform 0.3s;
    border: solid 1px;
    background-color: rgba(255, 255, 255, 1);
}

.modal-default br, .modal-div br {
    content: "";
    margin: 15px;
    display: block;
    margin-bottom: -18px;
}

.modal-default img.android, .modal-div img.android {
    margin: 0;
    width: 22px;
    vertical-align: middle;
}

/* ===== Слайдер периода под диаграммой (pie2D, rect2D, index) ===== */
.period-nav {
    width: 100%;
    max-width: 700px;
    box-sizing: border-box;
    margin: 4px auto;
    padding: 6px 10px;
    display: flex;
    gap: 10px;
    align-items: center;
    border: 1px solid rgba(83, 83, 83, 0.4);
    border-radius: 10px;
    font-size: 13px;
}
.period-nav[hidden] {
    display: none;
}
.period-nav input[type=range] {
    flex: 1 1 auto;
    min-width: 120px;
}
.period-nav #periodSliderLabel {
    white-space: nowrap;
    font-weight: bold;
}

/* Текстовые данные на дату среза/курсора (pie2D #pieData, rect2D #rectData) */
#pieData, #rectData {
    width: 100%;
    max-width: 700px;
    box-sizing: border-box;
    margin: 4px auto;
    padding: 6px 10px;
    border: 1px solid rgba(83, 83, 83, 0.4);
    border-radius: 10px;
    font-size: 13px;
    text-align: left;
}
#pieData summary, #rectData summary {
    cursor: pointer;
    font-weight: bold;
}
#pieData pre, #rectData pre {
    white-space: pre-wrap;
    margin: 6px 0 2px;
}

/* ===== Карточки дней (вид «Список» календаря, главная) ===== */
.day-card {
    border: 1px solid #A138FC;
    border-radius: 10px;
    padding: 8px 10px;
    background: #fff;
}

.day-head {
    display: flex;
    align-items: baseline;
    gap: 10px;
    padding: 4px 2px 8px;
    border-bottom: 1px solid #A138FC;
}

.day-num {
    font-size: 22px;
    font-weight: bold;
    color: #4D008F;
    min-width: 40px;
}

.day-week {
    font-weight: bold;
    flex: 1 1 auto;
}

.day-moon {
    color: #555;
    font-size: 13px;
}

.day-card .ev {
    padding: 10px 2px;
    border-bottom: 1px solid #eee;
    font-size: 14px;
    line-height: 1.5;
}

.day-card .ev:last-child {
    border-bottom: none;
}

/* ===== Смартфоны ===== */
@media (max-width: 700px) {
    .grid {
        grid-template-columns: auto auto;
        justify-content: stretch;
        width: 100%;
    }
    .grid label {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        gap: 4px;
    }
    select-checkbox {
        width: 100%;
    }
    /* Кнопка расчёта — липкая снизу, всегда под рукой */
    .grid .calcAstro, .calcAstro {
        position: sticky;
        bottom: 72px;
        z-index: 5;
        width: 100%;
        background: #8900FF;
        color: #fff;
        border: none;
        border-radius: 10px;
        font-size: 18px;
    }
}

@media (max-width: 480px) {
    .grid {
        grid-template-columns: auto;
    }
    .center {
        margin: 2px auto;
        padding: 2px;
    }
    .work {
        border-radius: 10px;
    }
}
