/* ==========================================================================
   Sjednocený dialog (gc-dialog) — společná struktura pro jQuery UI dialogy.
   Init:   $(...).dialog({ ..., dialogClass: 'gc-dialog-ui' });
   Markup: .gc-dialog__head > (.gc-dialog__title + .gc-dialog__close)
           .gc-dialog__body
           .gc-dialog__actions > button.btnSet
   Řízeno design tokeny (--gc-*). Vnější karta + overlay řeší publicredesign.
   Načítat POSLEDNÍ (přebíjí starší per-dialog pravidla stejné specificity).
   ========================================================================== */

/* Skryjeme defaultní jQuery UI hlavičku — používáme vlastní .gc-dialog__head. */
.gc-dialog-ui .ui-dialog-titlebar,
.gc-dialog-frame .ui-dialog-titlebar { display: none !important; }

/* Varianta pro složité dialogy (AddPoint/EditPoint): skryje titlebar a zobrazí sjednocenou
   .gc-dialog__head, ale ZÁMĚRNĚ nenuluje padding contentu — bespoke tělo (záložky, alerty,
   formuláře) si drží vlastní strukturu a odsazení. Hlavička je pak lehce odsazená od okraje. */

/* Obsah bez vlastního paddingu/rámu — head/body/actions si drží vlastní odsazení
   (oddělovače edge-to-edge). ID selektory přebíjejí starší #id.ui-dialog-content. */
.gc-dialog-ui .ui-dialog-content,
/* Sdílené dialogy s vlastním #id.ui-dialog-content pravidlem (map/collection/group/user) —
   scoped na .gc-dialog-ui, aby se přebilo jen tam, kde je nová struktura (ostatní šablony netknuté). */
.gc-dialog-ui #dialogNoGps,
.gc-dialog-ui #dialogCreateGroup,
.gc-dialog-ui #dialogReportPoint,
.gc-dialog-ui #dialogYouHaveNoRight,
.gc-dialog-ui #dialogUserRequest,
.gc-dialog-ui #dialogUserFollowings,
.gc-dialog-ui #dialogCreateColection,
#eshopButtonPointBuySendOkDialog.ui-dialog-content,
#eshopButtonPointBuySendFailDialog.ui-dialog-content,
#eshopButtonPointReservationSendOkDialog.ui-dialog-content,
#eshopButtonPointReservationSendFailDialog.ui-dialog-content,
#eshopButtonPointRentSendOkDialog.ui-dialog-content,
#eshopButtonPointRentSendFailDialog.ui-dialog-content,
#eshopButtonPointBuyDialog.ui-dialog-content,
#eshopButtonPointReservationDialog.ui-dialog-content,
#eshopButtonPointRentDialog.ui-dialog-content {
    padding: 0 !important;
    margin: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    display: block !important;
}

/* Bespoke dialogy (AddPoint/EditPoint) si drží vlastní padding, ale starý
   hack `.ui-dialog .ui-dialog-content { margin:-5px !important }` v public.css
   je vytahoval 5 px nad a vedle bílé karty — hlavička pak lezla přes zaoblený
   okraj rámu a nahoře nebylo skoro žádné odsazení. Obsah patří do rámu. */
.gc-dialog-frame > .ui-dialog-content {
    margin: 0 !important;
}

.gc-dialog__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    /* Sevřenější než dřív (8/16) — na nízkém okně jde o každý řádek, jinak
       jQuery UI dopočítá maxHeight a tělo dostane vnitřní posuvník. */
    padding: 5px 14px;
    border-bottom: 1px solid var(--gc-border, #e2e8f0);
}
.gc-dialog__title {
    font-size: 15px;
    font-weight: 700;
    color: var(--gc-text, #0f172a);
    line-height: 1.3;
}
.gc-dialog__close {
    flex-shrink: 0;
    /* 32×32 — s rezervou nad minimem 24×24 (WCAG 2.5.8) a zároveň se to vejde
       do sevřené hlavičky (padding 5px, výška řádku titulku ~20 px). */
    width: 32px;
    height: 32px;
    border: none;
    background: transparent;
    color: var(--gc-text-muted, #5c6b7f);
    font-size: 30px !important; /* !important přebíjí jQuery UI .ui-widget button {font-size:1em} */
    line-height: 1;
    border-radius: 50%;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background-color .15s ease, color .15s ease;
}
.gc-dialog__close:hover {
    background: var(--gc-danger-soft, #fef2f2);
    /* -strong místo -danger: na světle růžovém podkladu 4,41:1 místo 3,44:1
       (30px glyf = velký text, práh 3:1, ale rezerva se hodí). */
    color: var(--gc-danger-strong, #dc2626);
}
.gc-dialog__close:active {
    background: var(--gc-danger-press, #fee2e2);
}
/* Křížek je jediná cesta ven z dialogu klávesnicí — fokus na něm musí být vidět. */
.gc-dialog__close:focus-visible {
    outline: 3px solid var(--gc-primary-strong, #0069d9);
    outline-offset: 2px;
}
.gc-dialog__body {
    padding: 14px;
    color: var(--gc-text, #0f172a);
    font-size: 14px;
    line-height: 1.55;
    max-height: 65vh;
    overflow-y: auto;
    overflow-x: hidden;
}
.gc-dialog__body::-webkit-scrollbar { width: 6px; }
.gc-dialog__body::-webkit-scrollbar-track { background: transparent; }
.gc-dialog__body::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 10px; }
.gc-dialog__body::-webkit-scrollbar-thumb:hover { background: #94a3b8; }
.gc-dialog__actions {
    display: flex;
    /* Bez wrapu se dlouhý popisek (nebo delší překlad) vysype z dialogu ven a
       `overflow:hidden` na .ui-dialog ho ustřihne — tak mizel začátek „Zavřít". */
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
    padding: 10px 14px;
    border-top: 1px solid var(--gc-border, #e2e8f0);
}
.gc-dialog__actions .btnSet {
    margin: 0 !important;
    /* Flex položka se smí zmenšit pod min-content a popisek zalomit — jinak
       tlačítko drží svou šířku i v úzkém dialogu. */
    flex: 0 1 auto;
    min-width: 0;
    max-width: 100%;
    white-space: normal;
}

/* Nativní `input[type=file]` má vlastní vnitřní šířku (~330 px podle jazyka popisku),
   takže v úzkém dialogu (270–300 px) vyleze ven a `overflow:hidden` ho ustřihne.
   Platí pro VŠECHNY jQuery UI dialogy, i ty ještě nepřevedené na .gc-dialog. */
.ui-dialog input[type="file"] {
    max-width: 100%;
    box-sizing: border-box;
}

/* Pojistka pro VŠECHNA tlačítka v dialozích — širší než dialog být nesmí.
   POZOR: `white-space: normal` sem NEPATŘÍ plošně. Staré patičky mají těsné flex
   řádky (270px dialog), kde by povolené zalomení srazilo i popisek, který se
   dnes v pohodě vejde („Smazat položku" se zalomilo na dva řádky). Zalomení se
   proto povoluje jen tam, kde patička umí wrap — viz .gc-dialog__actions
   a .dialogItemDeleteButtons níž. */
.ui-dialog .btnSet {
    max-width: 100%;
    box-sizing: border-box;
}

/* Eshop „Odstranit položku" — nesjednocená patička je flex bez wrapu, takže delší
   překlad tlačítko vytlačil z dialogu ven (v češtině to zakrývalo, přesah 1 px).
   Wrap + možnost zmenšení = řádek se zalomí místo přetečení. */
.ui-dialog .dialogItemDeleteButtons {
    flex-wrap: wrap !important;
}
.ui-dialog .dialogItemDeleteButtons .btnSet {
    min-width: 0;
    white-space: normal;
}

/* Široká varianta pro dialogy s náhledem obsahu (smazání bodu). Globální
   `.ui-dialog { max-width: 270px !important }` z public.css je na kartu
   s fotkami moc úzké. Centrování dělá transform v publicredesign, ne
   dopočítaná pozice od jQuery UI, takže změna šířky pozici nerozhodí. */
.gc-dialog-ui--wide.ui-dialog {
    width: 420px !important;
    max-width: calc(100vw - 24px) !important;
}

/* --- Samostatný JS modal (gosscardAlert/gosscardConfirm) — nahrazuje nativní alert/confirm.
   Buildí ho gosscard-public.js, není závislý na jQuery UI. --- */
.gc-alert-backdrop {
    position: fixed;
    inset: 0;
    z-index: 100000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: rgba(0, 0, 0, 0.5);
    animation: gcAlertFade 0.15s ease;
}
@keyframes gcAlertFade {
    from { opacity: 0; }
    to { opacity: 1; }
}
.gc-alert {
    width: 100%;
    max-width: 360px;
    background: var(--gc-surface, #fff);
    border-radius: var(--gc-radius-lg, 16px);
    padding: 22px 20px 18px;
    box-shadow: var(--gc-shadow-sheet, 0 12px 40px rgba(0, 0, 0, 0.25));
    animation: gcAlertPop 0.18s cubic-bezier(0.34, 1.4, 0.64, 1);
}
@keyframes gcAlertPop {
    from { transform: scale(0.94); opacity: 0.6; }
    to { transform: scale(1); opacity: 1; }
}
.gc-alert:focus {
    outline: none;
}
.gc-alert__title {
    font-size: 17px;
    font-weight: 700;
    color: var(--gc-text, #0f172a);
    margin: 0 0 8px;
}
.gc-alert__msg {
    font-size: 14px;
    line-height: 1.5;
    color: var(--gc-text-muted, #5c6b7f);
    margin: 0 0 18px;
    white-space: pre-wrap;
    word-break: break-word;
}
.gc-alert__actions {
    display: flex;
    gap: 10px;
}
.gc-alert__actions .btnSet {
    flex: 1;
    margin: 0 !important;
}

/* --------------------------------------------------------------------------
   Text v těle dialogu + zvýrazněné varování u nevratných akcí
   (např. „Odstranit účet"). Používá design tokeny --gc-danger*.
   -------------------------------------------------------------------------- */
.gc-dialog__text {
    margin: 0 0 12px;
    color: var(--gc-text, #0f172a);
}
.gc-dialog__text:last-child {
    margin-bottom: 0;
}
.gc-dialog__warning {
    margin: 0;
    padding: 10px 12px;
    border-radius: var(--gc-radius, 12px);
    background: var(--gc-danger-soft, #fef2f2);
    border-left: 3px solid var(--gc-danger, #ef4444);
    /* -strong má na světle růžovém podkladu 4,41:1 — těsně pod AA; -darker 5,91:1. */
    color: var(--gc-danger-darker, #b91c1c);
    font-weight: 600;
}
