/* Penfriend Club - mobile-first */
:root {
  --brand: #f29a17;
  --brand-dark: #c97600;
  --brand-soft: #fff4e2;
  --ink: #23201c;
  --muted: #6b6560;
  --line: #e9e3da;
  --bg: #fbf9f6;
  --card: #fff;
  --ok: #1f7a3d;
  --ok-bg: #e8f6ed;
  --err: #b42318;
  --err-bg: #fdecea;
  --radius: 14px;
  --shadow: 0 1px 2px rgba(0,0,0,.05), 0 4px 16px rgba(0,0,0,.05);
  --input-line: #d8d0c5;
  color-scheme: light;
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font: 16px/1.55 system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; color: var(--ink); background: var(--bg); }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--brand-dark); }
h1, h2, h3 { line-height: 1.2; margin: 0 0 .6em; }
h1 { font-size: 1.75rem; }
h2 { font-size: 1.3rem; }
p { margin: 0 0 1em; }
.wrap { max-width: 1120px; margin: 0 auto; padding: 0 16px; }
.muted { color: var(--muted); }
.center { text-align: center; }
.sr-only, .hp { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: absolute; left: -999px; top: 8px; background: var(--card); padding: 8px 12px; z-index: 10; }
.skip:focus { left: 8px; }
:focus-visible { outline: 3px solid var(--brand); outline-offset: 2px; }

/* header */
.site-header { background: var(--card); border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 5; }
.header-inner { display: flex; align-items: center; justify-content: space-between; min-height: 60px; gap: 12px; }
.logo { display: flex; align-items: center; gap: 8px; color: var(--brand); text-decoration: none; font-size: 1.25rem; font-weight: 700; }
.logo span { color: var(--ink); }
.logo b { color: var(--brand); font-weight: 700; margin-left: 2px; }
.menu summary { list-style: none; cursor: pointer; width: 44px; height: 44px; display: flex; flex-direction: column; justify-content: center; gap: 5px; padding: 10px; border-radius: 10px; }
.menu summary::-webkit-details-marker { display: none; }
.menu summary span { display: block; height: 2px; background: var(--ink); border-radius: 2px; }
.menu[open] summary { background: var(--brand-soft); }
.menu[open] + .nav { display: flex; }
/* na mobilu se menu ukaze po kliknuti na hamburger (details [open]) */
.nav { display: none; position: absolute; left: 0; right: 0; top: 60px; background: var(--card); border-bottom: 1px solid var(--line); box-shadow: var(--shadow); padding: 8px 16px 16px; flex-direction: column; }
.nav > a { padding: 12px 4px; text-decoration: none; color: var(--ink); font-weight: 600; border-bottom: 1px solid var(--line); }
.nav > a[aria-current="page"] { color: var(--brand-dark); }
.lang-switch { display: flex; gap: 6px; padding-top: 12px; }
.lang-switch a { padding: 6px 12px; border: 1px solid var(--line); border-radius: 999px; text-decoration: none; color: var(--muted); font-size: .9rem; font-weight: 600; }
.lang-switch a[aria-current="true"] { background: var(--ink); color: #fff; border-color: var(--ink); }

main { padding-top: 20px; padding-bottom: 48px; min-height: 60vh; }

/* buttons & forms */
[hidden] { display: none !important; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 10px 18px; border-radius: 10px; border: 1px solid var(--line); background: var(--card); color: var(--ink); font: inherit; font-weight: 600; text-decoration: none; cursor: pointer; }
.btn:hover { border-color: #d4cbbf; }
.btn-primary { background: var(--brand); border-color: var(--brand); color: #fff; }
.btn-primary:hover { background: var(--brand-dark); border-color: var(--brand-dark); }
.btn-ghost { background: transparent; }
.btn-danger { background: var(--err); border-color: var(--err); color: #fff; }
.btn-lg { min-height: 52px; padding: 12px 24px; font-size: 1.05rem; }
.btn-sm { min-height: 34px; padding: 4px 10px; font-size: .85rem; }
.link-btn { background: none; border: 0; color: var(--brand-dark); text-decoration: underline; font: inherit; cursor: pointer; padding: 8px 0; }

.form .field, .search .field { margin-bottom: 16px; }
label, .label, legend { display: block; font-weight: 600; margin-bottom: 6px; font-size: .95rem; }
fieldset { border: 0; padding: 0; margin: 0 0 16px; }
input:not([type=checkbox]):not([type=radio]), select, textarea {
  width: 100%; min-height: 46px; padding: 10px 12px; font: inherit; font-size: 16px; color: var(--ink);
  background: var(--card); border: 1px solid var(--input-line); border-radius: 10px;
}
textarea { min-height: 120px; resize: vertical; }
input:focus, select:focus, textarea:focus { border-color: var(--brand); outline: 3px solid rgba(242,154,23,.2); }
[aria-invalid="true"] { border-color: var(--err) !important; }
.hint { font-size: .85rem; color: var(--muted); margin: 6px 0 0; }
.error { font-size: .9rem; color: var(--err); margin: 6px 0 0; font-weight: 600; }
.check { display: flex; align-items: center; gap: 10px; font-weight: 400; margin: 0; min-height: 40px; cursor: pointer; }
.check input { width: 20px; height: 20px; accent-color: var(--brand); flex: none; }
.radios { display: flex; gap: 20px; }
.agree { align-items: flex-start; margin: 8px 0 16px; }
.agree input { margin-top: 3px; }
.inline { display: flex; align-items: center; gap: 8px; }
.row2, .row3 { display: grid; gap: 0 16px; grid-template-columns: 1fr; }
.row3 { gap: 10px; }

.flash { padding: 12px 16px; border-radius: 10px; margin-bottom: 16px; font-weight: 500; }
.flash-success { background: var(--ok-bg); color: var(--ok); }
.flash-error { background: var(--err-bg); color: var(--err); }
.flash-info { background: var(--brand-soft); color: #7a4a00; }

.panel { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 20px; margin-bottom: 20px; box-shadow: var(--shadow); }
.panel.danger { border-color: #f2c4bf; }
.narrow { max-width: 680px; margin: 0 auto; }
.lead { font-size: 1.1rem; color: var(--muted); }
.big-icon { font-size: 3rem; color: var(--brand); line-height: 1; margin-bottom: 8px; }

/* hero */
.hero { display: grid; gap: 24px; margin-bottom: 32px; }
.hero-text h1 { font-size: 2rem; margin-bottom: .4em; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.hero-actions .btn { flex: 1 1 auto; }
.hero-search { background: linear-gradient(160deg, #ffc94d, var(--brand)); border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow); }
.hero-search h2 { color: #3a2500; }
.hero-search label { color: #3a2500; }
.search-compact { display: grid; grid-template-columns: 1fr 1fr; gap: 0 12px; }
.search-compact .field { margin-bottom: 12px; }
.search-compact .field-submit { grid-column: 1 / -1; margin: 4px 0 0; }
.search-compact .btn-primary { width: 100%; background: var(--ink); border-color: var(--ink); }

.section { margin-bottom: 40px; }
.section-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.steps-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; counter-reset: s; }
.steps-list li { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px 16px 16px 60px; position: relative; counter-increment: s; }
.steps-list li::before { content: counter(s); position: absolute; left: 16px; top: 16px; width: 30px; height: 30px; border-radius: 50%; background: var(--brand); color: #fff; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.steps-list b { display: block; }
.steps-list span { color: var(--muted); }
.chips { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.chips a { display: inline-flex; gap: 8px; align-items: center; padding: 8px 14px; background: var(--card); border: 1px solid var(--line); border-radius: 999px; text-decoration: none; color: var(--ink); }
.chips span { color: var(--muted); font-size: .85rem; }

/* cards */
.grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); transition: transform .15s; }
.card:hover { transform: translateY(-2px); }
.card-vip { border-color: #f5c46b; }
.card-link { display: block; color: inherit; text-decoration: none; height: 100%; }
.card-photo { position: relative; aspect-ratio: 1; background: var(--brand-soft); }
.card-photo img { width: 100%; height: 100%; object-fit: cover; }
.no-photo { display: flex; align-items: center; justify-content: center; }
.no-photo > span:not(.badge) { font-size: 3rem; font-weight: 700; color: #e8b25c; }
.badge { position: absolute; top: 8px; left: 8px; background: var(--ink); color: #ffd27a; font-size: .75rem; font-weight: 700; padding: 3px 8px; border-radius: 999px; letter-spacing: .05em; }
.badge-inline { position: static; vertical-align: middle; font-size: .7rem; }
.card-badges { position: absolute; top: 8px; left: 8px; display: flex; flex-wrap: wrap; gap: 6px; z-index: 2; }
.card-badges .badge { position: static; }
.card-body { padding: 10px 12px 14px; }
.card-body h3 { font-size: 1rem; margin-bottom: 2px; }
.card-meta, .card-langs { font-size: .85rem; color: var(--muted); margin: 0; }
.card-about { display: none; font-size: .9rem; margin: 8px 0 0; }

/* browse */
.filters { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); margin-bottom: 16px; }
.filters summary { padding: 14px 16px; font-weight: 600; cursor: pointer; }
.filters .search { padding: 0 16px 8px; }
.result-count { color: var(--muted); }
.empty { text-align: center; padding: 40px 16px; background: var(--card); border-radius: var(--radius); border: 1px dashed var(--line); }
.pagination { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin-top: 24px; }
.pagination a, .pagination span { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; padding: 0 12px; border-radius: 10px; background: var(--card); border: 1px solid var(--line); text-decoration: none; color: var(--ink); }
.pagination [aria-current] { background: var(--ink); color: #fff; border-color: var(--ink); }

/* profile */
.back { margin-bottom: 12px; }
.back a { text-decoration: none; }
.profile { display: grid; gap: 20px; margin-bottom: 28px; }
.profile-photo { border-radius: var(--radius); overflow: hidden; background: var(--brand-soft); aspect-ratio: 1; }
.profile-photo img { width: 100%; height: 100%; object-fit: cover; }
.profile-photo.no-photo > span { font-size: 6rem; }
.facts { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 0 0 16px; }
.facts div { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; }
.facts dt { font-size: .8rem; color: var(--muted); }
.facts dd { margin: 0; font-weight: 600; }
.about { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px; white-space: normal; overflow-wrap: anywhere; }
.contact { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 20px; margin-bottom: 16px; box-shadow: var(--shadow); }
/* nahlaseni profilu: vyrazne cervene tlacitko, po rozkliknuti formular v ramecku */
.report { margin: 8px 0 16px; }
.report summary { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 10px 18px; border: 2px solid var(--err); border-radius: 10px;
  color: var(--err); background: var(--card); font-weight: 700; cursor: pointer; list-style: none; }
.report summary::-webkit-details-marker { display: none; }
.report summary::before { content: "⚠"; font-size: 1.1em; }
.report summary:hover { background: var(--err); color: #fff; }
.report[open] summary { background: var(--err); color: #fff; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.report .form { margin-top: 0; padding: 16px; border: 2px solid var(--err); border-radius: 0 10px 10px 10px; background: var(--err-bg); }

/* my profile */
.me-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; }
.me-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.photo-edit { display: grid; grid-template-columns: 200px 1fr; gap: 24px; align-items: center; }
.photo-edit .card-photo { width: 200px; height: 200px; aspect-ratio: 1; border-radius: 18px; overflow: hidden; border: 1px solid var(--line); box-shadow: 0 2px 10px rgba(0,0,0,.08); }
.photo-edit .card-photo.no-photo { background: var(--brand-soft); border-style: dashed; }
@media (max-width: 560px) { .photo-edit { grid-template-columns: 1fr; justify-items: center; text-align: center; } }
.card-photo.no-photo .avatar-ph { width: 62%; height: 62%; color: var(--brand); opacity: .42; }

/* pages */
.prose h2 { margin-top: 1.5em; }
.faq-item { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 0 16px; margin-bottom: 10px; }
.faq-item summary { padding: 14px 0; font-weight: 600; cursor: pointer; }
.error-page { padding: 40px 0; }
.error-code { font-size: 4rem; font-weight: 800; color: var(--brand); margin: 0; }

/* footer */
.site-footer { background: var(--card); border-top: 1px solid var(--line); padding: 24px 0; font-size: .95rem; }
.footer-inner nav { display: flex; flex-wrap: wrap; gap: 16px; margin-bottom: 12px; }
.footer-inner nav a { color: var(--ink); }

/* admin */
.tiles { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.tile { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px; text-decoration: none; color: var(--ink); display: flex; flex-direction: column; }
.tile-n { font-size: 2rem; font-weight: 800; color: var(--brand-dark); }
.admin-filter { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.admin-filter input, .admin-filter select { flex: 1 1 200px; width: auto; }
.table-wrap { overflow-x: auto; }
.admin-table { width: 100%; border-collapse: collapse; background: var(--card); font-size: .9rem; }
.admin-table th, .admin-table td { text-align: left; padding: 10px; border-bottom: 1px solid var(--line); vertical-align: top; }
/* akcni sloupec je bezna bunka tabulky (zadny display:flex na <td> - to by bunku vytrhlo z radku a tlacitka by pretekala mimo tabulku); tlacitka jsou inline-block a na uzke sirce se zalomi */
.admin-table .actions form { display: inline-block; margin: 0; }
.admin-table .actions > form, .admin-table .actions > a.btn, .admin-table .actions > .btn { margin: 0 4px 4px 0; vertical-align: top; }
/* odkud nahlaseni prislo (Objevuj/Chat/Klub/Profil) */
.src { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: .8rem; background: var(--brand-soft); color: #7a4a00; white-space: nowrap; }
:root:not([data-theme="light"]) .src, :root[data-theme="dark"] .src { background: rgba(255,201,77,.18); color: #e7b14d; }
/* akcni tlacitka na sebe navazuji (spojeny pas bez mezer) */
.admin-table .actions-joined { font-size: 0; white-space: nowrap; }
.admin-table .actions-joined > form, .admin-table .actions-joined > a.btn { margin: 0; }
.admin-table .actions-joined .btn { font-size: .8rem; border-radius: 0; margin-left: -1px; }
.admin-table .actions-joined .btn:hover, .admin-table .actions-joined .btn:focus { position: relative; z-index: 1; }
.admin-table .actions-joined > a.btn:first-child, .admin-table .actions-joined > :first-child .btn { border-top-left-radius: 10px; border-bottom-left-radius: 10px; margin-left: 0; }
.admin-table .actions-joined > a.btn:last-child, .admin-table .actions-joined > :last-child .btn { border-top-right-radius: 10px; border-bottom-right-radius: 10px; }
/* e-mailing: prepinac rezimu a jazykove zalozky */
.ml-mode { display: flex; flex-wrap: wrap; gap: 16px 24px; margin-bottom: 14px; }
.ml-mode .radio { display: inline-flex; align-items: center; gap: 6px; }
.ml-tabs { display: flex; flex-wrap: wrap; gap: 4px; margin: 6px 0 12px; border-bottom: 2px solid var(--line); }
.ml-tab { background: none; border: 0; padding: 8px 14px; cursor: pointer; border-radius: 10px 10px 0 0; font-size: .9rem; color: var(--muted); }
.ml-tab.is-active { background: var(--brand-soft); color: #7a4a00; font-weight: 600; }
:root:not([data-theme="light"]) .ml-tab.is-active, :root[data-theme="dark"] .ml-tab.is-active { background: rgba(255,201,77,.18); color: #e7b14d; }
/* kontrola fotek - pohodlny projizdec (stepper) */
.photo-check .rev-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.rev-help { font-size: .85rem; line-height: 1.5; }
.rev-stage { display: flex; align-items: center; gap: 8px; margin: 10px 0; }
.rev-photo { position: relative; flex: 1; min-width: 0; margin: 0; background: #0b0b0b; border-radius: 14px; overflow: hidden; height: 56vh; min-height: 300px; max-height: 560px; display: flex; align-items: center; justify-content: center; }
.rev-photo img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; display: block; }
.rev-meta { position: absolute; left: 0; right: 0; bottom: 0; margin: 0; padding: 10px 14px; background: linear-gradient(transparent, rgba(0,0,0,.78)); color: #fff; font-size: .95rem; }
.rev-meta a, .rev-meta b { color: #fff; }
.rev-nav { flex: 0 0 auto; width: 52px; height: 72px; border: 0; border-radius: 12px; background: var(--card); color: inherit; font-size: 2rem; line-height: 1; cursor: pointer; box-shadow: 0 1px 5px rgba(0,0,0,.15); }
.rev-nav:hover { background: var(--brand-soft); }
.rev-actions { display: flex; gap: 10px; justify-content: center; margin: 10px 0 4px; }
.rev-actions .btn-lg { flex: 1 1 0; max-width: 240px; }
.rev-actions .btn-lg small { opacity: .75; font-weight: 400; }
.rev-flash { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 7rem; color: #fff; opacity: 0; pointer-events: none; transition: opacity .12s; }
.rev-flash.show { opacity: 1; }
.rev-flash.ok { background: rgba(31,122,61,.5); }
.rev-flash.no { background: rgba(200,40,40,.5); }
.rev-done { text-align: center; font-size: 1.15rem; padding: 36px 10px; }
.rev-badge { position: absolute; top: 12px; left: 12px; z-index: 2; padding: 5px 12px; border-radius: 999px; font-size: .85rem; font-weight: 700; color: #fff; box-shadow: 0 1px 4px rgba(0,0,0,.3); }
.rev-badge.ok { background: #1f7a3d; }
.rev-badge.no { background: #c82828; }
.rev-actions .btn.is-on { outline: 3px solid #23201c; outline-offset: 2px; }
.rev-more { text-align: center; margin: 8px 0 0; color: var(--muted); font-size: .9rem; }
.rev-more .btn { margin-left: 8px; }
/* admin: konverzace */
.tag-warn { background: var(--err-bg); color: var(--err); }
.conv-flagged > td { background: rgba(255,201,77,.14); }
.conv-thread { display: flex; flex-direction: column; gap: 10px; max-width: 760px; margin-top: 12px; }
.conv-msg { max-width: 82%; padding: 9px 13px; border-radius: 14px; background: var(--card); border: 1px solid var(--line); }
.conv-msg.conv-b { align-self: flex-end; background: var(--brand-soft); }
:root:not([data-theme="light"]) .conv-msg.conv-b, :root[data-theme="dark"] .conv-msg.conv-b { background: rgba(255,201,77,.12); }
.conv-msg.held { border-color: var(--err); }
.conv-meta { font-size: .78rem; color: var(--muted); margin-bottom: 4px; }
.conv-text { line-height: 1.5; white-space: normal; overflow-wrap: anywhere; }
.conv-photo img { max-width: 220px; border-radius: 10px; margin: 4px 0; display: block; }
@media (max-width: 640px) {
  .photo-check { padding: 12px; }
  .rev-stage { position: relative; display: block; margin: 8px 0 4px; }
  .rev-photo { width: 100%; height: 54vh; min-height: 0; max-height: none; border-radius: 18px; }
  .rev-photo img { width: auto; height: auto; max-width: 100%; max-height: 100%; }
  /* sipky jako kulate pruhledne knofliky na okrajich fotky */
  .rev-nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 3; width: 46px; height: 46px; border-radius: 50%; background: rgba(255,255,255,.85); color: #222; font-size: 1.5rem; box-shadow: 0 2px 10px rgba(0,0,0,.3); }
  .rev-nav[data-prev] { left: 10px; }
  .rev-nav[data-next] { right: 10px; }
  .rev-meta { font-size: 1rem; padding: 12px 14px; }
  .rev-actions { gap: 8px; margin-top: 12px; position: sticky; bottom: 8px; z-index: 2; }
  .rev-actions .btn-lg { max-width: none; padding: 15px 8px; border-radius: 16px; font-size: 1.02rem; box-shadow: 0 2px 10px rgba(0,0,0,.12); }
  .rev-actions .btn-lg[data-skip] { flex: 0 1 32%; font-size: .9rem; }
  .rev-actions .btn-lg small { display: none; } /* klavesove zkratky na mobilu nedavaji smysl */
}
.status { padding: 2px 8px; border-radius: 999px; font-size: .8rem; background: #eee; }
.status-active { background: var(--ok-bg); color: var(--ok); }
.status-pending { background: var(--brand-soft); color: #7a4a00; }
.status-hidden { background: var(--err-bg); color: var(--err); }
@media (max-width: 699px) {
  .admin-table thead { display: none; }
  .admin-table tr { display: block; border-bottom: 2px solid var(--line); padding: 8px 0; }
  .admin-table td { display: block; border: 0; padding: 4px 10px; }
  .admin-table td[data-label]::before { content: attr(data-label) ": "; font-weight: 600; color: var(--muted); }
}

/* tablet and up */
@media (min-width: 700px) {
  h1 { font-size: 2rem; }
  .row2 { grid-template-columns: 1fr 1fr; }
  .row3 { grid-template-columns: 1fr 1fr 1fr; }
  .grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
  .card-about { display: block; }
  .steps-list { grid-template-columns: repeat(3, 1fr); }
  .tiles { grid-template-columns: repeat(3, 1fr); }
  .profile { grid-template-columns: 340px 1fr; align-items: start; }
  .search:not(.search-compact) { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0 12px; align-items: end; }
  .search .field-wide { grid-column: span 2; }
  .search .field-checks { grid-column: span 2; display: flex; gap: 20px; }
  .search .field-submit { grid-column: span 4; }
}

/* desktop */
/* horni lista: plna sirka, aby mela misto; plne menu jen kde se vejde, jinak hamburger */
.site-header .wrap { max-width: none; }
@media (min-width: 1440px) {
  .menu { display: none; }
  .nav { display: flex; position: static; flex-direction: row; align-items: center; gap: 2px; box-shadow: none; border: 0; padding: 0; background: none; }
  .nav > a { border: 0; padding: 8px 10px; border-radius: 8px; }
  .nav > a:hover { background: var(--brand-soft); }
  .lang-switch { padding: 0 0 0 6px; gap: 4px; }
  .lang-switch a { padding: 5px 9px; }
}
@media (min-width: 960px) {
  .hero { grid-template-columns: 1.2fr 1fr; align-items: center; padding: 24px 0; }
  .hero-text h1 { font-size: 2.8rem; }
  .hero-actions .btn { flex: 0 0 auto; }
  .grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .search .field-submit { grid-column: auto; }
  .search .field-checks { grid-column: span 3; }
}

/* ---------- oznameni na webu, cekajici fotka ---------- */
.site-notice { background: #fff3cd; border-bottom: 1px solid #f0d78a; color: #6b4e00; padding: 10px 0; font-weight: 500; }
.pending-photo { display: flex; gap: 12px; align-items: center; background: var(--brand-soft); border-radius: 10px; padding: 10px; margin-bottom: 12px; }
.pending-photo img { width: 64px; height: 64px; object-fit: cover; border-radius: 8px; opacity: .85; }
.pending-photo p { margin: 0; font-size: .9rem; }

/* ---------- administrace ---------- */
.admin .header-inner { min-height: 54px; }
.admin-top { display: flex; align-items: center; gap: 16px; font-size: .95rem; }
.admin-nav { border-top: 1px solid var(--line); background: var(--card); position: relative; }
.admin-nav .wrap { display: flex; gap: 2px; flex-wrap: wrap; align-items: stretch; }
.admin-nav .nav-link, .admin-nav summary { display: inline-flex; align-items: center; gap: 6px; padding: 12px 12px; text-decoration: none; color: var(--muted); font-weight: 600; border-bottom: 3px solid transparent; cursor: pointer; list-style: none; -webkit-user-select: none; user-select: none; }
.admin-nav summary::-webkit-details-marker { display: none; }
.admin-nav summary::after { content: "▾"; font-size: .7em; opacity: .55; }
.admin-nav .nav-link:hover, .admin-nav summary:hover { color: var(--ink); }
.admin-nav .nav-link[aria-current="page"], .admin-nav summary.is-active { color: var(--ink); border-bottom-color: var(--brand); }
.nav-group { position: relative; }
.nav-group[open] > summary { color: var(--ink); background: var(--brand-soft); }
.nav-menu { position: absolute; top: 100%; left: 0; z-index: 30; min-width: 212px; max-width: calc(100vw - 24px); display: flex; flex-direction: column; gap: 1px; padding: 6px; background: var(--card); border: 1px solid var(--line); border-radius: 0 0 12px 12px; box-shadow: 0 12px 30px rgba(0,0,0,.18); }
.admin-nav .nav-menu a { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 12px; border-bottom: 0; border-radius: 8px; color: var(--ink); font-weight: 600; white-space: nowrap; }
.admin-nav .nav-menu a:hover { background: var(--brand-soft); }
.admin-nav .nav-menu a[aria-current="page"] { color: var(--brand-dark); background: var(--brand-soft); }
.admin-nav .count { display: inline-block; min-width: 20px; padding: 0 6px; border-radius: 999px; background: var(--err); color: #fff; font-size: .75rem; line-height: 1.55; text-align: center; }
@media (max-width: 560px) { .nav-menu { left: 0; right: auto; } .admin-nav .wrap { gap: 0; } }
.page-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 8px; }
.todo { display: grid; gap: 8px; margin-bottom: 16px; }
.todo-item { display: block; padding: 12px 16px; border-radius: 10px; background: #fff3cd; color: #6b4e00; text-decoration: none; }
.tiles { margin-bottom: 20px; }
.bars { display: flex; align-items: flex-end; gap: 6px; height: 180px; padding-top: 20px; }
.bar { flex: 1; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; min-width: 0; }
.bar-fill { width: 100%; background: var(--brand); border-radius: 4px 4px 0 0; }
.bar-n { font-size: .75rem; color: var(--muted); }
.bar-label { font-size: .7rem; color: var(--muted); margin-top: 4px; }
.h-5 { height: 5%; }
.h-10 { height: 10%; }
.h-15 { height: 15%; }
.h-20 { height: 20%; }
.h-25 { height: 25%; }
.h-30 { height: 30%; }
.h-35 { height: 35%; }
.h-40 { height: 40%; }
.h-45 { height: 45%; }
.h-50 { height: 50%; }
.h-55 { height: 55%; }
.h-60 { height: 60%; }
.h-65 { height: 65%; }
.h-70 { height: 70%; }
.h-75 { height: 75%; }
.h-80 { height: 80%; }
.h-85 { height: 85%; }
.h-90 { height: 90%; }
.h-95 { height: 95%; }
.h-100 { height: 100%; }

.simple-list { list-style: none; padding: 0; margin: 0; }
.simple-list li { padding: 8px 0; border-bottom: 1px solid var(--line); }
.simple-list li:last-child { border-bottom: 0; }
.small { font-size: .85rem; }
.mt { margin-top: 1.5em; }
.thumb-cell { width: 56px; }
.thumb { width: 48px; height: 48px; border-radius: 8px; object-fit: cover; display: block; }
.thumb-empty { display: flex; align-items: center; justify-content: center; background: var(--brand-soft); color: #c98f2e; font-weight: 700; }
.admin-grid { display: grid; gap: 20px; }
.admin-photo { width: 100%; max-width: 320px; border-radius: 10px; margin-bottom: 8px; }
.photo-rejected-box { margin-top: 14px; padding: 12px; border: 2px dashed #c0392b; border-radius: 12px; background: rgba(192, 57, 43, .06); }
.photo-rejected-box h3 { margin: 0 0 8px; color: #b03a2e; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.rejected-label { font-size: .75rem; font-weight: 600; padding: 2px 8px; border-radius: 999px; background: #c0392b; color: #fff; }
.admin-photo-rejected { display: block; opacity: .92; }
[data-theme="dark"] .photo-rejected-box h3 { color: #ff8a7a; }
.info-list { display: grid; grid-template-columns: auto 1fr; gap: 6px 12px; margin: 0; font-size: .9rem; }
.info-list dt { color: var(--muted); }
.info-list dd { margin: 0; overflow-wrap: anywhere; }
.photo-queue { display: grid; gap: 16px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.photo-review { padding: 0; overflow: hidden; }
.photo-review > img, .photo-review > .photo-zoom-link img { width: 100%; aspect-ratio: 1; object-fit: contain; background: #222; display: block; }
.photo-review > .photo-zoom-link { display: block; }
.photo-review-body { padding: 14px; }
.photo-review-body form { margin-bottom: 8px; }
.photo-review-body .btn { width: 100%; }
.photo-review details summary { list-style: none; width: 100%; }
.photo-review details summary::-webkit-details-marker { display: none; }
.photo-review details .form { margin-top: 10px; }
.list-scroll { max-height: 520px; overflow-y: auto; }
.list-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)) auto auto; gap: 6px; align-items: center; padding: 4px 0; }
.list-row input { min-height: 38px !important; padding: 6px 8px !important; min-width: 0; }
@media (max-width: 699px) { .list-row { grid-template-columns: 1fr 1fr; } .list-add { grid-template-columns: 1fr 1fr; } }
.list-add { padding-bottom: 12px; margin-bottom: 8px; border-bottom: 1px solid var(--line); grid-template-columns: repeat(4, minmax(0, 1fr)) auto; }
.admin-filter .check { min-height: 46px; }
@media (min-width: 960px) {
  .admin-grid { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); align-items: start; }
  .admin-grid-even { grid-template-columns: 1fr 1fr; }
  .tiles { grid-template-columns: repeat(4, 1fr); }
}

/* ---------- zvetseni fotky na profilu ---------- */
.photo-zoom { display: block; position: relative; height: 100%; cursor: zoom-in; }
.zoom-hint { position: absolute; right: 10px; bottom: 10px; width: 36px; height: 36px; border-radius: 50%; background: rgba(0,0,0,.55); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 1.1rem; opacity: .85; transition: opacity .15s; }
.photo-zoom:hover .zoom-hint, .photo-zoom:focus-visible .zoom-hint { opacity: 1; }
.lightbox { border: 0; padding: 0; background: transparent; max-width: 100vw; max-height: 100vh; width: 100vw; height: 100vh; margin: 0; }
.lightbox[open] { display: flex; align-items: center; justify-content: center; }
.lightbox::backdrop { background: rgba(10, 8, 6, .88); }
/* i male (stare) fotky se roztahnou na obrazovku, pomer stran zustane */
.lightbox img { width: min(1000px, calc(100vw - 32px)); height: min(1000px, calc(100vh - 96px)); max-width: none; object-fit: contain; cursor: zoom-out; filter: drop-shadow(0 10px 30px rgba(0,0,0,.5)); }
.lightbox-close { position: fixed; top: 14px; right: 14px; width: 48px; height: 48px; border-radius: 50%; border: 0; background: rgba(255,255,255,.15); color: #fff; font-size: 1.4rem; cursor: pointer; }
.lightbox-close:hover, .lightbox-close:focus-visible { background: rgba(255,255,255,.3); }

.contact-hidden { display: inline-block; padding: 0 6px; border-radius: 6px; background: #eee9e1; color: var(--muted); font-size: .9em; white-space: nowrap; }

/* ---------- pocet vysledku a volba poctu na stranku ---------- */
.result-bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px 16px; margin-bottom: 12px; }
.result-bar .result-count { margin: 0; }
.per-page { display: flex; align-items: center; gap: 8px; }
.per-page label { margin: 0; font-weight: 500; color: var(--muted); white-space: nowrap; }
.per-page select { width: auto; min-height: 40px; padding: 6px 30px 6px 10px; }

/* ---------- predchozi / dalsi profil ---------- */
.profile-nav { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 14px; }
.back-link { text-decoration: none; }
.prev-next { display: flex; gap: 8px; }
.prev-next .btn { min-width: 44px; font-size: 1rem; }
.btn.is-disabled { opacity: .4; cursor: default; }
@media (max-width: 520px) { .prev-next .btn span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); } .prev-next .btn { font-size: 1.4rem; padding: 4px 14px; } }

.photo-tools { display: flex; gap: 6px; margin: 4px 0 8px; }
.photo-upload { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.photo-upload label { margin-bottom: 4px; }

/* ---------- stitky v administraci ---------- */
.tag { display: inline-flex; align-items: center; gap: 4px; padding: 1px 8px; border-radius: 999px; font-size: .78rem; font-weight: 600; background: #e8e3f7; color: #4b3a8c; text-decoration: none; vertical-align: middle; white-space: nowrap; }
.tag-duplicita { background: #fff1d6; color: #7a4a00; }
.tag-neplatny-email { background: var(--err-bg); color: var(--err); }
.tag-list { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.tag-x { border: 0; background: none; color: inherit; font-size: 1rem; line-height: 1; cursor: pointer; padding: 0 0 0 2px; }
.tag-add { display: flex; gap: 6px; margin-top: 10px; }
.tag-add input { min-height: 38px !important; padding: 6px 8px !important; }

.radios-wrap { flex-wrap: wrap; gap: 4px 20px; }

/* s JavaScriptem se filtruje hned, tlacitko neni potreba (bez JS zustava) */
.js-autofilter .js-hide { display: none; }

/* ---------- zpravy, oblibene, navstevnici ---------- */
.nav-count { display: inline-block; min-width: 20px; padding: 0 6px; border-radius: 999px; background: var(--err); color: #fff; font-size: .75rem; text-align: center; line-height: 20px; }
.me-links { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 16px; }
.contact-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px; }
.fav-btn { font-size: .95rem; }
.fav-btn.is-fav { color: #c2185b; border-color: #f3b6cc; background: #fdeef4; }
.block-form { margin: 6px 0; }
.inbox { list-style: none; padding: 0; margin: 0; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.inbox-item + .inbox-item { border-top: 1px solid var(--line); }
.inbox-item a { display: flex; align-items: center; gap: 12px; padding: 12px 14px; color: inherit; text-decoration: none; }
.inbox-item a:hover { background: var(--brand-soft); }
.inbox-item.is-unread { background: #fffaf0; }
.inbox-item.is-unread .inbox-preview { color: var(--ink); font-weight: 600; }
.inbox-photo { width: 52px; height: 52px; flex: none; border-radius: 50%; overflow: hidden; background: var(--brand-soft); display: flex; align-items: center; justify-content: center; }
.inbox-photo img { width: 100%; height: 100%; object-fit: cover; }
.inbox-photo span { font-weight: 700; color: #c98f2e; }
.thread-who .inbox-photo { width: 44px; height: 44px; }
.inbox-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.inbox-top { display: flex; justify-content: space-between; gap: 8px; }
.inbox-top time { color: var(--muted); font-size: .85rem; white-space: nowrap; }
.inbox-preview { color: var(--muted); font-size: .92rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.unread-badge { flex: none; min-width: 24px; height: 24px; padding: 0 7px; border-radius: 999px; background: var(--brand); color: #fff; font-weight: 700; font-size: .8rem; display: flex; align-items: center; justify-content: center; }
.thread-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; }
.thread-who { display: flex; align-items: center; gap: 10px; color: inherit; text-decoration: none; }
.thread { display: flex; flex-direction: column; gap: 8px; padding: 14px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); margin-bottom: 12px; min-height: 120px; }
.bubble-row { display: flex; }
.bubble-row.mine { justify-content: flex-end; }
.bubble { max-width: 80%; padding: 10px 14px; border-radius: 16px 16px 16px 4px; background: #f3efe8; overflow-wrap: anywhere; }
.mine .bubble { background: var(--brand-soft); border-radius: 16px 16px 4px 16px; }
.bubble-meta { font-size: .75rem; color: var(--muted); margin-top: 4px; }
.reply-form { display: grid; grid-template-columns: 1fr auto; gap: 8px 12px; align-items: end; margin-top: 14px; }
.reply-form textarea { min-height: 60px; width: 100%; }
.reply-form .btn { min-width: 150px; }
.reply-form .reply-hint { grid-column: 1 / -1; margin: 2px 0 0; }
.visitor-when { font-size: .85rem; margin: 6px 4px 0; }
@media (max-width: 520px) { .reply-form { grid-template-columns: 1fr; } .reply-form .btn { width: 100%; } .bubble { max-width: 90%; } }

/* ---------- srdicka ---------- */
.like-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: -4px 0 14px; }
.like-btn { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 6px 14px; border-radius: 999px; border: 1px solid #f3b6cc; background: var(--card); color: #c2185b; font: inherit; font-weight: 600; cursor: pointer; text-decoration: none; }
.like-btn:hover { background: #fdeef4; }
.like-btn .heart { font-size: 1.2rem; line-height: 1; }
.like-btn.is-liked { background: #e91e63; border-color: #e91e63; color: #fff; }
.like-count { color: #c2185b; font-weight: 600; }
.card-likes { color: #c2185b; font-size: .85rem; font-weight: 600; white-space: nowrap; }

/* prihlaseni pres ucty (Google, Apple, Microsoft, Facebook) */
.oauth-login { display: grid; gap: 10px; margin: 0 0 18px; }
.btn-oauth { width: 100%; gap: 10px; background: #fff; border-color: #dadce0; color: #3c4043; }
.btn-oauth:hover { background: #f8f9fa; border-color: #c6c9cc; }
.btn-oauth svg { flex: none; }
.btn-apple { background: #000; border-color: #000; color: #fff; }
.btn-apple:hover { background: #222; border-color: #222; }
.btn-facebook { background: #1877f2; border-color: #1877f2; color: #fff; }
.btn-facebook:hover { background: #166fe0; border-color: #166fe0; }
.or { display: flex; align-items: center; gap: 12px; margin: 6px 0 0; color: var(--muted, #777); font-size: .9em; }
.or::before, .or::after { content: ""; flex: 1; border-top: 1px solid var(--line); }
input[readonly] { background: #f3f4f6; color: #555; }

/* administrace: dvoufazove overeni */
.qr { margin: 10px 0; }
.qr svg { display: block; max-width: 100%; height: auto; border: 1px solid var(--line); border-radius: 8px; }
.setup-key { font-size: 1.05em; letter-spacing: .05em; word-break: break-all; }
.recovery-codes { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 6px; padding: 0; list-style: none; }
.recovery-codes code { font-size: 1.1em; }
.steps li { margin-bottom: 8px; }
.code-input { font-size: 1.6em; letter-spacing: .3em; text-align: center; }
.oauth-box h3 { display: flex; align-items: center; gap: 8px; }
.oauth-box .actions { display: flex; flex-wrap: wrap; gap: 8px; }
.badge-ok { background: #1f7a3d; color: #fff; }
.badge-off { background: #e5e7eb; color: #555; }
.status-deleted { background: #e5e7eb; color: #555; text-decoration: line-through; }

/* administrace: e-mailing */
.mailing-top { margin-bottom: 20px; }
.mailing-top .field { max-width: 520px; margin: 0; }
.mailing-grid { display: grid; gap: 20px; }
.mailing-compose .panel + .panel { margin-top: 20px; }
.mailing-preview h2 { margin-top: 0; }
.mail-head { display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; margin: 0 0 12px; padding-bottom: 12px; border-bottom: 1px solid var(--line); font-size: .92em; }
.mail-head dt { color: var(--muted); }
.mail-head dd { margin: 0; word-break: break-word; font-weight: 600; }
.mail-body { white-space: pre-wrap; word-break: break-word; font: inherit; font-size: .95em; line-height: 1.55; margin: 0; min-height: 200px; max-height: 70vh; overflow: auto; }
.all-recipients { margin-top: 8px; }
.sample-list { margin: 8px 0 0; padding-left: 18px; font-size: .9em; }
.eta { margin: 10px 0 0; font-weight: 600; }
.status-sending { background: #fff4d6; color: #7a4a00; }
.status-paused { background: #e5e7eb; color: #555; }
.status-done { background: #dcfce7; color: #1f7a3d; }
.status-cancelled { background: var(--err-bg); color: var(--err); }
progress { width: 120px; vertical-align: middle; }
@media (min-width: 1000px) {
  .mailing-grid { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); align-items: start; }
  .mailing-preview { position: sticky; top: 16px; }
}

/* zpravy ke kontrole */
.held-label { color: #7a4a00; font-weight: 600; }
.held-msg .held-head { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; flex-wrap: wrap; }
.held-msg .held-body { margin: 12px 0; padding: 12px; background: #fafafa; border: 1px solid var(--line); border-radius: 8px; white-space: normal; word-break: break-word; }
.held-msg .actions { display: flex; flex-wrap: wrap; gap: 8px; }
.held-msg .warn { color: var(--err); }
.held-msg + .held-msg { margin-top: 16px; }
.translate-btn { font-size: .85em; padding: 2px 0; }

/* administrace: ucty a prava */
.perm-box { border: 1px solid var(--line); border-radius: 10px; padding: 12px 16px; margin: 0 0 16px; }
.perm-box legend { font-weight: 700; padding: 0 6px; }
.perm-grid { display: grid; gap: 8px 20px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.perm span { line-height: 1.35; }
.req2fa { margin: 0 0 16px; }
.stack { display: grid; gap: 10px; justify-items: start; }
.plain-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 6px; }

/* administrace: stav webu */
.status-groups { display: grid; gap: 20px; }
@media (min-width: 900px) { .status-groups { grid-template-columns: 1fr 1fr; align-items: start; } }
.status-groups .panel h2 { margin-top: 0; }
.status-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.st { display: grid; grid-template-columns: 28px 1fr auto; gap: 10px; align-items: start; }
.st-icon { width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; font-weight: 700; font-size: .85em; color: #fff; }
.st-ok .st-icon { background: #1f7a3d; }
.st-warn .st-icon { background: #d98a00; }
.st-err .st-icon { background: var(--err); }
.st-off .st-icon { background: #b8bcc4; }
.st-err .st-text b { color: var(--err); }
.st-link { text-decoration: none; font-weight: 700; padding: 0 4px; }

/* ---------- tmavy rezim (prepinac v hlavicce, ulozeny v cookie) ---------- */
[data-theme="dark"] {
  --brand-dark: #ffb547;
  --brand-soft: #3a2a12;
  --ink: #ece7e1;
  --muted: #a69e95;
  --line: #36312b;
  --bg: #161412;
  --card: #201d1a;
  --ok-bg: #12331f;
  --err: #ff7a6e;
  --err-bg: #3b1714;
  --input-line: #4a443d;
  --shadow: 0 1px 2px rgba(0,0,0,.4), 0 4px 16px rgba(0,0,0,.35);
  color-scheme: dark;
}
[data-theme="dark"] .lang-switch a[aria-current="true"], [data-theme="dark"] .pagination [aria-current] { color: var(--bg); }
[data-theme="dark"] .badge { background: #000; }
[data-theme="dark"] .btn:hover { border-color: #5a534b; }
[data-theme="dark"] .site-notice { background: #3a2f0b; border-color: #5a4710; color: #ffd77a; }
[data-theme="dark"] .flash-info, [data-theme="dark"] .status-pending, [data-theme="dark"] .held-label { color: #ffcf7a; }
[data-theme="dark"] .flash-success { color: #8fe0a8; }
[data-theme="dark"] .inbox-item.is-unread { background: #2a2419; }
[data-theme="dark"] .bubble { background: #2c2824; }
[data-theme="dark"] .mine .bubble { background: #3a2a12; }
[data-theme="dark"] .contact-hidden { background: #34302b; }
[data-theme="dark"] input[readonly] { background: #2a2622; color: #aaa; }
[data-theme="dark"] .held-msg .held-body { background: var(--bg); }
[data-theme="dark"] .fav-btn.is-fav { background: #3a1626; border-color: #6b2a45; color: #ff8fb8; }
[data-theme="dark"] .like-btn:hover { background: #3a1626; }
[data-theme="dark"] .todo-item { background: #3a2f0b; color: #ffd77a; }
[data-theme="dark"] .card-vip { border-color: #8a6420; }
[data-theme="dark"] .panel.danger { border-color: #6b2a24; }
[data-theme="dark"] .skip { background: var(--card); }
[data-theme="dark"] .qr svg { background: #fff; }
[data-theme="dark"] .mail-body, [data-theme="dark"] .sample-list { color: var(--ink); }
/* prepinac vzhledu */
.theme-toggle { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border: 1px solid var(--line); border-radius: 999px;
  text-decoration: none; color: var(--ink); font-size: 1.1rem; line-height: 1; }
.theme-toggle:hover { border-color: var(--brand); }
/* uzky mobil: okno Cloudflare ma pevnou sirku 300 px, musi se vejit do formulare */
@media (max-width: 420px) { .panel { padding: 14px; } .captcha { margin-left: -2px; margin-right: -2px; } }
@media (max-width: 359px) { .captcha .cf-turnstile, .captcha .g-recaptcha { transform: scale(.86); transform-origin: 0 0; height: 56px; } }
/* tlacitko Google v tmavem rezimu podle pravidel Googlu (tmave pozadi, sedy okraj, svetly text, barevne G) */
[data-theme="dark"] .btn-google { background: #131314; border-color: #8e918f; color: #e3e3e3; }
[data-theme="dark"] .btn-google:hover { background: #1f1f20; border-color: #a8aba9; }
[data-theme="dark"] .btn-microsoft { background: #2f2f2f; border-color: #8c8c8c; color: #fff; }
[data-theme="dark"] .btn-apple { background: #fff; border-color: #fff; color: #000; }
[data-theme="dark"] .btn-apple svg path { fill: #000; }

/* zalozky (administrace: kontaktni formular) */
.tabs { display: flex; gap: 6px; margin: 0 0 16px; flex-wrap: wrap; }
.tabs a { padding: 8px 14px; border: 1px solid var(--line); border-radius: 999px; text-decoration: none; color: var(--ink); background: var(--card); }
.tabs a[aria-current="page"] { background: var(--ink); color: var(--bg); border-color: var(--ink); }

/* administrace: podpora */
.tabs a.tab-alert { border-color: var(--err); color: var(--err); font-weight: 700; }
.tabs a.tab-alert[aria-current="page"] { background: var(--err); color: #fff; }
.ticket-list { display: grid; gap: 10px; margin-bottom: 20px; }
.ticket { display: grid; gap: 6px; padding: 14px 16px; background: var(--card); border: 1px solid var(--line); border-left: 5px solid var(--line); border-radius: 10px; text-decoration: none; color: var(--ink); }
.ticket:hover { border-color: var(--brand); }
.ticket-wait { border-left-color: var(--err); background: var(--err-bg); }
.ticket-head { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.ticket-preview { color: var(--muted); font-size: .92em; }
.support-thread { display: grid; gap: 14px; margin-bottom: 20px; }
.smsg { max-width: 760px; padding: 14px 16px; border-radius: 12px; border: 1px solid var(--line); background: var(--card); }
.smsg-in { border-left: 4px solid var(--brand); }
.smsg-out { margin-left: auto; background: var(--brand-soft); border-color: transparent; }
.smsg-meta { font-size: .85em; color: var(--muted); margin-bottom: 8px; }
.smsg-body { overflow-wrap: anywhere; }
.smsg-tr { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--line); font-size: .93em; color: var(--muted); overflow-wrap: anywhere; }
.smsg-tr span { display: block; font-size: .8em; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; margin-bottom: 4px; }

/* socialni site v profilu: klikaci ikony */
.social-links { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; align-items: center; }
.social { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; color: #fff; text-decoration: none; transition: transform .15s, opacity .15s; }
.social:hover { transform: translateY(-2px); opacity: .9; }
.social-instagram { background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fd5949 45%, #d6249f 60%, #285aeb 90%); }
.social-facebook { background: #1877f2; }
.social-linkedin { background: #0a66c2; }
.social-links p { margin: 0; }
.social-fields .row3 > div { margin-bottom: 4px; }

/* formular podpory dole na kazde strance */
.feedback-box { margin-top: 32px; margin-bottom: 0; }
.feedback-box details { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); }
.feedback-box summary { cursor: pointer; padding: 16px 20px; font-weight: 700; list-style: none; display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; }
.feedback-box summary::-webkit-details-marker { display: none; }
.feedback-box summary::before { content: "✉"; color: var(--brand); margin-right: 2px; }
.feedback-box summary .muted { font-weight: 400; font-size: .92em; }
.feedback-box[open] summary, .feedback-box details[open] summary { border-bottom: 1px solid var(--line); }
.feedback-form { padding: 16px 20px 20px; }
.placement-form { margin-bottom: 16px; padding-bottom: 16px; border-bottom: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.tag-vracene { background: #fdecea; color: #b42318; }
[data-theme="dark"] .tag-vracene { background: #3b1714; color: #ff9b91; }

/* statistiky podpory */
.support-stats .page-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px; }
.support-stats h2 { margin: 0; }
.tabs-sm { margin: 0; }
.tabs-sm a { padding: 4px 10px; font-size: .88em; }
.stat-tiles { display: grid; gap: 10px; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin: 14px 0 18px; }
.stat { padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--bg); }
.stat b { display: block; font-size: 1.4rem; line-height: 1.2; }
.stat span { font-size: .85em; color: var(--muted); }
.stat-alert { border-color: var(--err); background: var(--err-bg); }
.stat-alert b { color: var(--err); }
.stat-lists { display: grid; gap: 16px 24px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.stat-lists h3 { font-size: 1rem; margin: 0 0 8px; }
.stat-bars { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.stat-bars li { display: grid; grid-template-columns: minmax(80px, 1fr) 2fr auto; gap: 8px; align-items: center; font-size: .9em; }
.stat-bar { width: 100%; height: 8px; border: 0; border-radius: 999px; overflow: hidden; background: var(--line); appearance: none; -webkit-appearance: none; }
.stat-bar::-webkit-progress-bar { background: var(--line); border-radius: 999px; }
.stat-bar::-webkit-progress-value { background: var(--brand); border-radius: 999px; }
.stat-bar::-moz-progress-bar { background: var(--brand); border-radius: 999px; }

/* vymena jazyku, zajmy, tipy na prvni zpravu */
.chip-choices { display: flex; flex-wrap: wrap; gap: 8px; }
.chip-choice { position: relative; }
.chip-choice input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.chip-choice span { display: inline-block; padding: 7px 13px; border: 1px solid var(--line); border-radius: 999px; background: var(--card); cursor: pointer; font-size: .92rem; }
.chip-choice input:checked + span { background: var(--brand); border-color: var(--brand); color: #fff; font-weight: 600; }
.chip-choice input:focus-visible + span { outline: 3px solid rgba(242,154,23,.35); }
.interest-chips { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; padding: 0; margin: 12px 0 0; }
.interest-chips a { display: inline-block; padding: 5px 12px; border-radius: 999px; background: var(--brand-soft); color: var(--ink); text-decoration: none; font-size: .9rem; }
.interest-chips a:hover { background: var(--brand); color: #fff; }
.exchange-badge { display: inline-block; margin: 0 0 12px; padding: 8px 14px; border-radius: 10px; background: #e8f6ed; color: #1f7a3d; font-weight: 700; }
[data-theme="dark"] .exchange-badge { background: #12331f; color: #8fe0a8; }
.icebreakers { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 8px; }
.icebreakers .muted { width: 100%; font-size: .88em; }
.chip-btn { padding: 6px 12px; border: 1px dashed var(--brand); border-radius: 999px; background: var(--card); color: var(--ink); font: inherit; font-size: .88rem; cursor: pointer; text-align: left; }
.chip-btn:hover { background: var(--brand-soft); }
.check-exchange { font-weight: 700; }
.learn-fields .row2 { margin-bottom: 8px; }

/* denni grafy (prehled, navstevnost) */
.bars-days { gap: 2px; }
.bars-days .bar-n { font-size: .62rem; }
.bars-days .bar-label { font-size: .62rem; white-space: nowrap; }
.bar-zero { opacity: .18; }

/* mapa sveta a zebricek zemi (navstevnost) */
.worldmap { width: 100%; max-width: 820px; margin: 4px auto 14px; }
.worldmap svg { width: 100%; height: auto; display: block; }
.worldmap path { fill: var(--map-empty); stroke: var(--card); stroke-width: .3; }
.worldmap [data-lvl] path, .worldmap path[data-lvl] { }
.worldmap [data-lvl="1"], .worldmap [data-lvl="1"] path { fill: var(--map-1); }
.worldmap [data-lvl="2"], .worldmap [data-lvl="2"] path { fill: var(--map-2); }
.worldmap [data-lvl="3"], .worldmap [data-lvl="3"] path { fill: var(--map-3); }
.worldmap [data-lvl="4"], .worldmap [data-lvl="4"] path { fill: var(--map-4); }
.worldmap [data-lvl="5"], .worldmap [data-lvl="5"] path { fill: var(--map-5); }
:root { --map-empty: #e7e1d6; --map-1: #fde3bf; --map-2: #fac77d; --map-3: #f5a623; --map-4: #d6861a; --map-5: #a85f0c; }
[data-theme="dark"] { --map-empty: #2a2a2a; --map-1: #5a4320; --map-2: #875f1f; --map-3: #c07d16; --map-4: #e3a13f; --map-5: #f5c878; }
.country-ranks { max-height: 320px; overflow-y: auto; }
.country-ranks .flag { font-size: 1.05em; }

/* ===== Online pritomnost, zvonecek, zadosti o spojeni, zivy chat ===== */
.live-dot { display:inline-block; width:9px; height:9px; border-radius:50%; background:#28a745; box-shadow:0 0 0 0 rgba(40,167,69,.5); animation:livepulse 2s infinite; vertical-align:middle; flex:none; }
@keyframes livepulse { 0%{box-shadow:0 0 0 0 rgba(40,167,69,.5)} 70%{box-shadow:0 0 0 7px rgba(40,167,69,0)} 100%{box-shadow:0 0 0 0 rgba(40,167,69,0)} }
.online-badge { display:inline-flex; align-items:center; gap:6px; color:var(--muted); text-decoration:none; font-weight:600; font-size:.9rem; }
.online-badge b { color:var(--ink); }
.online-badge:hover { color:var(--ink); }
.flag { font-size:1.05em; line-height:1; }
.online-pill { display:inline-flex; align-items:center; gap:6px; font-size:.78rem; font-weight:700; color:#1f7a3d; background:#e8f6ed; border-radius:999px; padding:3px 10px; vertical-align:middle; }
[data-theme="dark"] .online-pill { color:#8fe0a8; background:#12331f; }
.online-txt { color:#1f7a3d; font-weight:600; display:inline-flex; align-items:center; gap:5px; }
[data-theme="dark"] .online-txt { color:#8fe0a8; }
.card-photo { position:relative; }
.card-online { position:absolute; top:8px; left:8px; background:rgba(255,255,255,.92); border-radius:999px; padding:4px 7px; line-height:0; }
[data-theme="dark"] .card-online { background:rgba(0,0,0,.55); }
.online-count { display:inline-flex; align-items:center; gap:8px; font-weight:700; font-size:1.1rem; }

details.bell { position:relative; }
details.bell > summary { list-style:none; cursor:pointer; position:relative; font-size:1.2rem; padding:4px 6px; border-radius:8px; }
details.bell > summary::-webkit-details-marker { display:none; }
details.bell > summary:hover { background:var(--brand-soft); }
.bell-count { position:absolute; top:-2px; right:-4px; min-width:17px; height:17px; padding:0 4px; border-radius:999px; background:var(--err); color:#fff; font-size:.68rem; font-weight:700; line-height:17px; text-align:center; }
.bell-menu { position:absolute; right:0; top:calc(100% + 6px); width:300px; max-width:85vw; background:var(--card); border:1px solid var(--line); border-radius:12px; box-shadow:0 10px 30px rgba(0,0,0,.18); padding:6px; z-index:60; }
.bell-head { font-weight:700; padding:8px 10px 6px; font-size:.78rem; color:var(--muted); text-transform:uppercase; letter-spacing:.03em; }
.bell-empty { padding:12px 10px; color:var(--muted); margin:0; }
.notif { display:flex; gap:9px; align-items:flex-start; padding:9px 10px; border-radius:8px; text-decoration:none; color:var(--ink); }
.notif:hover { background:var(--bg); }
.notif.unread { background:var(--brand-soft); }
.notif-icon { flex:none; }
.notif-text { font-size:.92rem; line-height:1.35; }
.bell-all { display:block; text-align:center; padding:9px; color:var(--brand); text-decoration:none; font-weight:600; border-top:1px solid var(--line); margin-top:4px; }

.intro-quote { margin:10px 0; padding:10px 14px; border-left:3px solid var(--brand); background:var(--bg); border-radius:0 8px 8px 0; white-space:pre-wrap; }
.connected-note { font-weight:600; color:#1f7a3d; }
[data-theme="dark"] .connected-note { color:#8fe0a8; }
.me-actions { display:flex; gap:10px; flex-wrap:wrap; }
.me-actions form { margin:0; }
.request-list { list-style:none; padding:0; margin:16px 0; display:grid; gap:14px; }
.request { border:1px solid var(--line); border-radius:12px; padding:14px; background:var(--card); }
.req-who { display:flex; gap:12px; align-items:center; text-decoration:none; color:var(--ink); }
.req-name { display:flex; flex-direction:column; gap:2px; }
.req-actions { display:flex; gap:10px; margin-top:12px; flex-wrap:wrap; }
.req-actions form { margin:0; }
.empty-note { padding:20px 0; }
.thread-who-name { display:flex; flex-direction:column; gap:1px; line-height:1.2; }
.thread-presence { font-size:.78rem; color:#1f7a3d; display:inline-flex; align-items:center; gap:5px; }
[data-theme="dark"] .thread-presence { color:#8fe0a8; }

/* proklikavaci karty "Jak to funguje" */
.step-link { display:block; text-decoration:none; color:inherit; }
.steps-list li { transition:border-color .15s, box-shadow .15s; }
.steps-list li:hover { border-color:var(--brand); box-shadow:var(--shadow); }
/* citelne tlacitko Hledat na oranzovem uvodu (pevne barvy i v tmavem rezimu) */
.search-compact .btn-primary { width:100%; background:#3a2500; border-color:#3a2500; color:#fff; font-weight:700; }
.search-compact .btn-primary:hover { background:#241700; border-color:#241700; }

/* klikaci mapa sveta (prochazeni podle zeme) */
.map-browse { width:100%; max-width:900px; margin:10px auto 6px; }
.map-browse svg { width:100%; height:auto; display:block; }
.map-browse path { fill:var(--map-empty); stroke:var(--card); stroke-width:.3; }
.map-browse .has, .map-browse .has path { fill:var(--brand-soft); cursor:pointer; }
.map-browse .has:hover, .map-browse .has:hover path { fill:var(--brand); }
.map-browse-label { text-align:center; font-weight:600; min-height:1.4em; color:var(--brand-dark); }

/* ===== Doladeni formatovani: hlavicka, odznak online, mapa ve svetlem rezimu ===== */
.online-badge { white-space: nowrap; }
.nav a { white-space: nowrap; }
/* mapa: lepsi viditelnost hlavne ve svetlem rezimu */
.map-browse path { fill: #e4dcca; stroke: #9c8f78; stroke-width: .45; }
.map-browse .has, .map-browse .has path { fill: var(--brand); stroke: #fff; }
.map-browse .has:hover, .map-browse .has:hover path { fill: var(--brand-dark); }
[data-theme="dark"] .map-browse path { fill: #2d2d2d; stroke: #5a5a5a; }
[data-theme="dark"] .map-browse .has, [data-theme="dark"] .map-browse .has path { fill: var(--brand); stroke: #1a1a1a; }

/* obrazkove vlajky (SVG) misto emoji - funguji vsude */
.flag-img { width:20px; height:15px; border-radius:2px; vertical-align:-3px; box-shadow:0 0 0 1px rgba(0,0,0,.12); object-fit:cover; }
.country-ranks .flag-img, .stat-bars .flag-img { vertical-align:-2px; }

/* hezci nahravani fotky (dropzone + nahled) */
.field > .label, .photo-form > .label { display:block; font-weight:600; margin-bottom:6px; }
.dropzone { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; text-align:center; min-height:160px; padding:20px; border:2px dashed var(--line); border-radius:14px; background:var(--bg); cursor:pointer; transition:border-color .15s, background .15s; }
.dropzone:hover, .dropzone.is-drag { border-color:var(--brand); background:var(--brand-soft); }
.dropzone-input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.dropzone-icon { color:var(--brand); display:block; }
.dropzone-title { font-weight:700; }
.dropzone-sub { font-size:.82rem; color:var(--muted); max-width:360px; line-height:1.4; }
.dropzone-preview { max-width:190px; max-height:190px; border-radius:12px; object-fit:cover; box-shadow:0 2px 10px rgba(0,0,0,.14); }
.dropzone-chosen { font-size:.85rem; font-weight:600; word-break:break-all; }
.photo-form .btn[type="submit"] { margin-top:12px; }

/* zarovnani vlajky a nazvu zeme na profilu na jeden radek */
.dd-country { display:flex; align-items:center; gap:7px; }
.dd-country .flag-img { flex:none; width:22px; height:16px; }

/* karta: zem\u011b s vlajkou na jednom \u0159\u00e1dku, pod pohlav\u00edm */
.card-loc { display:flex; align-items:center; gap:6px; margin-top:1px; }
.card-loc .flag-img { flex:none; width:19px; height:14px; }
.card-meta + .card-loc { margin-top:2px; }

/* zvetseni fotky ve schvalovani (admin) */
.photo-zoom-link { position:relative; display:block; cursor:zoom-in; }
.photo-zoom-link .zoom-hint { position:absolute; right:8px; bottom:8px; background:rgba(0,0,0,.55); color:#fff; border-radius:8px; padding:3px 7px; font-size:.9rem; }

/* dropzone: text pod sebou; vlastni zajem */
.dropzone-body { display:flex; flex-direction:column; align-items:center; gap:5px; }
.dropzone-title, .dropzone-sub { display:block; }
.interest-custom-label { display:block; margin-top:12px; font-weight:600; font-size:.92rem; }
#f-interests-custom { margin-top:6px; }

/* videohovor */
.call-start-btn { display:inline-flex; align-items:center; gap:6px; white-space:nowrap; }
.call-overlay { position:fixed; inset:0; z-index:200; background:#0e0e0e; display:flex; flex-direction:column; }
.call-overlay[hidden] { display:none !important; }
.call-stage { position:relative; flex:1; overflow:hidden; }
.call-remote { width:100%; height:100%; object-fit:cover; background:#000; }
.call-local { position:absolute; right:14px; bottom:14px; width:140px; max-width:34vw; aspect-ratio:3/4; object-fit:cover; border-radius:12px; box-shadow:0 2px 12px rgba(0,0,0,.5); background:#222; transform:scaleX(-1); }
.call-status { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:#fff; font-size:1.2rem; font-weight:600; text-align:center; padding:20px; text-shadow:0 1px 4px rgba(0,0,0,.6); }
.call-controls { display:flex; gap:16px; justify-content:center; padding:18px; background:#0e0e0e; }
.call-btn { min-height:52px; padding:12px 26px; border:0; border-radius:999px; font-size:1.05rem; font-weight:700; cursor:pointer; color:#fff; }
.call-accept { background:#28a745; }
.call-hangup { background:#d22b2b; }
.call-toggle { display:inline-flex; align-items:center; justify-content:center; width:52px; min-width:52px; padding:0; background:rgba(255,255,255,.16); color:#fff; }
.call-toggle:hover { background:rgba(255,255,255,.26); }
.call-toggle.is-off { background:#d22b2b; }
.call-toggle .ic-off { display:none; }
.call-toggle.is-off .ic-on { display:none; }
.call-toggle.is-off .ic-off { display:inline-block; }

/* klik pro zkopirovani (napr. klic 2FA) */
.copy-key { font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:.95em; background:var(--bg); border:1px solid var(--line); border-radius:8px; padding:4px 10px; cursor:pointer; color:var(--ink); letter-spacing:.04em; }
.copy-key:hover { border-color:var(--brand); background:var(--brand-soft); }
.copy-key.copied { border-color:#28a745; }
.copy-done { color:#1f7a3d; font-weight:600; font-size:.85em; }

/* videohovor – vzhled vyzvaneni/spojeni + tlacitka */
.call-actions { display:inline-flex; gap:8px; }
.call-join-btn { animation:callpulse 1.3s ease-in-out infinite; }
@keyframes callpulse { 0%,100%{ box-shadow:0 0 0 0 rgba(242,154,23,.5);} 50%{ box-shadow:0 0 0 7px rgba(242,154,23,0);} }
.call-overlay { background:radial-gradient(circle at 50% 32%, #2b2b36, #0d0d12) !important; }
.call-remote { opacity:0; transition:opacity .25s; }
.call-overlay.is-connected .call-remote { opacity:1; }
.call-overlay.is-ringing .call-status { font-size:1.35rem; }
.call-overlay.is-ringing .call-status::before { content:''; display:block; width:42px; height:42px; margin:0 auto 16px; border:3px solid rgba(255,255,255,.25); border-top-color:#fff; border-radius:50%; animation:callspin 1s linear infinite; }
@keyframes callspin { to { transform:rotate(360deg); } }

/* VIP */
.btn-vip { border-color:#f0c25a; color:#8a6400; }
:root:not([data-theme="light"]) .btn-vip, :root[data-theme="dark"] .btn-vip { color:#f0c25a; }
.vip-panel { text-align:center; max-width:480px; margin:0 auto; }
.vip-panel.is-vip { border:1px solid #f0c25a; box-shadow:0 2px 16px rgba(224,169,46,.18); }
.vip-crown { color:#e0a92e; line-height:1; margin-bottom:4px; }
.vip-lead { color:var(--muted); margin:.2rem 0 1.1rem; }
.vip-status { color:#8a6400; font-weight:700; margin:.2rem 0 1.1rem; }
:root:not([data-theme="light"]) .vip-status, :root[data-theme="dark"] .vip-status { color:#f0c25a; }
.vip-benefits { list-style:none; padding:0; margin:0 auto 1.3rem; display:inline-block; text-align:left; }
.vip-benefits li { position:relative; padding-left:28px; margin:.55rem 0; }
.vip-benefits li::before { content:'\2605'; position:absolute; left:0; top:0; color:#e0a92e; }
.vip-price { font-size:2rem; font-weight:800; margin:.3rem 0 1rem; }
.vip-price span { font-size:1rem; font-weight:500; color:var(--muted); }
.vip-buy { margin:0; }
.vip-pay-note { margin-top:12px; }

/* Ukazatel vyplnenosti profilu */
.profile-meter .meter-head { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:10px; }
.profile-meter .meter-head h2 { margin:0; }
.meter-pct { font-weight:800; color:var(--brand); }
.meter-track { height:12px; border-radius:999px; background:var(--brand-soft); overflow:hidden; }
.meter-track > span { display:block; height:100%; border-radius:999px; background:linear-gradient(90deg,#e8b25c,#d98a1f); transition:width .4s ease; }
.profile-meter.is-complete .meter-track > span { background:linear-gradient(90deg,#4caf50,#2e9e4e); }
.meter-todo { list-style:none; padding:0; margin:14px 0 0; display:flex; flex-wrap:wrap; gap:8px; }
.meter-todo a { display:inline-block; padding:6px 12px; border-radius:999px; background:var(--brand-soft); color:var(--ink); text-decoration:none; font-size:.9rem; font-weight:600; }
.meter-todo a:hover { background:var(--brand); color:#fff; }
.meter-done { margin:12px 0 0; font-weight:600; color:#2e9e4e; }

/* odznaky overeni / nova tvar */
.badge-verified { background:#e8f5ea; color:#2e7d32; }
.badge-new { background:#fff3d6; color:#9a6a00; }
:root:not([data-theme="light"]) .badge-verified, :root[data-theme="dark"] .badge-verified { background:rgba(46,125,50,.22); color:#8fd79a; }
:root:not([data-theme="light"]) .badge-new, :root[data-theme="dark"] .badge-new { background:rgba(224,169,46,.22); color:#f0c25a; }
.badge-minor { background:#e7effa; color:#2456a6; }
:root:not([data-theme="light"]) .badge-minor, :root[data-theme="dark"] .badge-minor { background:rgba(36,86,166,.26); color:#9cc0f0; }
.profile-photo { box-shadow:0 2px 12px rgba(0,0,0,.08); }
.interest-chips a { font-weight:600; padding:6px 13px; }

/* ledoborce + nahlaseni zpravy */
.icebreakers { margin-bottom:14px; }
.icebreakers-label { display:block; font-size:.9rem; color:var(--muted); margin-bottom:8px; }
.icebreakers-row { display:flex; flex-wrap:wrap; gap:8px; }
.icebreaker { border:1px solid var(--line); background:var(--card); color:var(--ink); border-radius:999px; padding:8px 14px; font:inherit; font-size:.9rem; cursor:pointer; text-align:left; }
.icebreaker:hover { border-color:var(--brand); background:var(--brand-soft); }
.bubble-actions { display:flex; gap:14px; align-items:center; margin-top:4px; flex-wrap:wrap; }
.msg-report-form { display:inline; margin:0; }
.msg-report-btn { font-size:.78rem; color:var(--muted); opacity:.7; }
.msg-report-btn:hover { color:#d22b2b; opacity:1; }

/* VIP zamek (navstevnici) */
.vip-lock { text-align:center; max-width:440px; margin:18px auto; }
.vip-lock-icon { color:#e0a92e; margin-bottom:6px; }
.vip-lock-count { font-size:1.3rem; font-weight:800; margin:.2rem 0; }
.vip-lock .btn { margin-top:14px; }

/* Galerie fotek (VIP) */
.gallery-edit { margin-top:22px; border-top:1px solid var(--line); padding-top:18px; }
.gallery-edit h3 { margin:0 0 12px; }
.gallery-grid { display:flex; flex-wrap:wrap; gap:12px; margin-bottom:14px; }
.gallery-item { position:relative; width:110px; height:110px; border-radius:12px; overflow:hidden; border:1px solid var(--line); }
.gallery-item img { width:100%; height:100%; object-fit:cover; }
.gallery-item.is-pending img { opacity:.55; }
.gallery-pending { position:absolute; left:0; right:0; bottom:0; background:rgba(0,0,0,.6); color:#fff; font-size:.7rem; text-align:center; padding:3px; }
.gallery-del { position:absolute; top:4px; right:4px; margin:0; }
.gallery-del-btn { width:26px; height:26px; border:0; border-radius:50%; background:rgba(0,0,0,.6); color:#fff; font-size:1.1rem; line-height:1; cursor:pointer; }
.gallery-del-btn:hover { background:#d22b2b; }
.gallery-add { max-width:420px; }
.profile-gallery { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
.profile-gallery-item { width:84px; height:84px; border-radius:10px; overflow:hidden; border:1px solid var(--line); display:block; }
.profile-gallery-item img { width:100%; height:100%; object-fit:cover; }
.profile-gallery-item:hover { border-color:var(--brand); }

/* ===== Objevuj (swajpovani) ===== */
.discover { max-width: 460px; margin: 0 auto; }
.discover-head { text-align: center; }
.discover-head h1 { margin: 0 0 4px; }
.discover-sub { color: var(--muted); margin: 0 0 10px; }
.swipe-counter { display: inline-block; font-weight: 700; font-size: .9rem; color: var(--brand); background: var(--brand-soft); padding: 5px 14px; border-radius: 999px; margin-bottom: 14px; }
.swipe-stage { position: relative; width: 100%; aspect-ratio: 3 / 4; max-height: 70vh; margin: 0 auto; }
.swipe-card { position: absolute; inset: 0; border-radius: 20px; overflow: hidden; background: #222; box-shadow: 0 8px 30px rgba(0,0,0,.22); user-select: none; -webkit-user-select: none; touch-action: pan-y; transform: scale(.96); transition: transform .25s ease; }
.swipe-card.is-top { transform: scale(1); cursor: grab; }
.swipe-card.is-dragging { transition: none; cursor: grabbing; }
.swipe-photo { position: absolute; inset: 0; }
.swipe-photo img { width: 100%; height: 100%; object-fit: cover; object-position: center 22%; display: block; pointer-events: none; }
.swipe-grad { position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,.82) 0%, rgba(0,0,0,.35) 38%, rgba(0,0,0,0) 62%); }
.swipe-info { position: absolute; left: 0; right: 0; bottom: 0; padding: 18px 18px 20px; color: #fff; }
.swipe-info h2 { margin: 0; font-size: 1.5rem; display: flex; align-items: center; gap: 8px; color: #fff; }
.swipe-info .flag-img { width: 26px; height: auto; border-radius: 3px; }
.swipe-country { margin: 2px 0 8px; font-size: .95rem; opacity: .9; }
.swipe-about { margin: 0 0 10px; font-size: .92rem; line-height: 1.4; opacity: .95; }
.swipe-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.swipe-tag { background: rgba(255,255,255,.22); backdrop-filter: blur(2px); padding: 4px 10px; border-radius: 999px; font-size: .8rem; font-weight: 600; }
.swipe-stamp { position: absolute; top: 24px; font-size: 2rem; font-weight: 800; padding: 6px 16px; border-radius: 12px; border: 4px solid; opacity: 0; pointer-events: none; }
.stamp-like { right: 20px; color: #2ecc71; border-color: #2ecc71; transform: rotate(14deg); }
.stamp-nope { left: 20px; color: #ff5252; border-color: #ff5252; transform: rotate(-14deg); }
.swipe-card.is-gone { transition: transform .55s ease, opacity .55s ease; opacity: 0; }
.swipe-card.gone-right { transform: translate(140%, -40px) rotate(24deg) !important; }
.swipe-card.gone-left { transform: translate(-140%, -40px) rotate(-24deg) !important; }
.swipe-controls { display: flex; justify-content: center; gap: 28px; margin: 20px 0 8px; }
.swipe-btn { width: 66px; height: 66px; border-radius: 50%; border: 0; font-size: 1.7rem; cursor: pointer; box-shadow: 0 4px 14px rgba(0,0,0,.18); transition: transform .12s; display: flex; align-items: center; justify-content: center; }
.swipe-btn:active { transform: scale(.92); }
.swipe-no { background: #fff; color: #ff5252; border: 1px solid var(--line); }
.swipe-yes { background: #2ecc71; color: #fff; }
.swipe-empty, .swipe-paywall { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 10px; padding: 24px; background: var(--card); border: 1px solid var(--line); border-radius: 20px; }
.swipe-paywall .vip-crown { color: #e0a92e; }
.swipe-paywall h2 { margin: 0; }

/* rameček pri swajpu + nastaveni doporuceni */
.swipe-card.is-liking { box-shadow: 0 0 0 5px #2ecc71, 0 8px 30px rgba(0,0,0,.28); }
.swipe-card.is-noping { box-shadow: 0 0 0 5px #ff5252, 0 8px 30px rgba(0,0,0,.28); }
.disc-prefs { max-width: 460px; margin: 0 auto 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--card); }
.disc-prefs > summary { cursor: pointer; padding: 10px 14px; font-weight: 600; list-style: none; }
.disc-prefs > summary::-webkit-details-marker { display: none; }
.disc-prefs[open] > summary { border-bottom: 1px solid var(--line); }
.disc-prefs-form { padding: 14px; }
.disc-prefs-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px; }
.disc-prefs-grid .field-age { grid-column: 1 / -1; }
.disc-prefs-grid .age-row { display: flex; align-items: center; gap: 8px; }
.disc-prefs-grid .age-row input { width: 100%; }
@media (max-width: 460px) { .disc-prefs-grid { grid-template-columns: 1fr; } }
.disc-prefs-grid .field-kw { grid-column: 1 / -1; }
.disc-prefs-grid .field-kw .hint { margin: 6px 0 0; }
.discover-keys { color: var(--muted); font-size: .82rem; margin: 0 0 10px; }
.fav-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.fav-clear { margin: 0; }

/* profilova pisnicka */
.profile-song { position: fixed; right: 16px; bottom: 16px; z-index: 60; }
.song-toggle { width: 52px; height: 52px; border-radius: 50%; border: 0; background: var(--brand); color: #fff; font-size: 1.5rem; cursor: pointer; box-shadow: 0 4px 16px rgba(0,0,0,.28); display: flex; align-items: center; justify-content: center; }
.song-toggle .song-note { line-height: 1; }
.song-toggle.is-playing .song-note { animation: songpulse 1s ease-in-out infinite; }
@keyframes songpulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.28); } }

/* dekorace holubi / krtecci */
.pigeon-deco, .mole-deco { position: fixed; z-index: 5; pointer-events: none; user-select: none; filter: drop-shadow(0 3px 5px rgba(0,0,0,.18)); }
.mole-deco { z-index: 6; }
/* napovedu o klavesach na dotykovych zarizenich skryt */
@media (pointer: coarse), (max-width: 760px) { .discover-keys { display: none; } }

/* prehledove karty navstevnosti (dnes / 7 / 30 dni) */
.period-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 0 0 16px; }
.period-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px; }
.period-label { display: block; font-size: .85rem; color: var(--muted); margin-bottom: 8px; }
.period-nums { display: flex; gap: 18px; flex-wrap: wrap; }
.period-num b { display: block; font-size: 1.6rem; font-weight: 800; color: var(--brand); line-height: 1.1; }
.period-num span { font-size: .8rem; color: var(--muted); }
@media (max-width: 640px) { .period-cards { grid-template-columns: 1fr; } }

/* rucni stav v administraci */
.status-list .st { flex-wrap: wrap; gap: 8px; align-items: center; }
.st-edit { display: flex; gap: 6px; align-items: center; margin: 0; flex-wrap: wrap; }
.st-edit input[name="note"] { min-width: 150px; }
.st-del { margin: 0; }
.st-add { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.st-add input[name="label"] { flex: 1 1 220px; }

/* Objevuj: super lajk, rewind, shoda, akce na karte, kdo te lajkl */
.swipe-super { background: #3bb0f0; color: #fff; width: 56px; height: 56px; font-size: 1.4rem; }
.swipe-rewind { background: #fff; color: #f3a712; border: 1px solid var(--line); width: 52px; height: 52px; font-size: 1.3rem; }
.swipe-card.gone-up { transform: translate(0, -140%) rotate(-6deg) !important; }
.swipe-card.is-supering { box-shadow: 0 0 0 5px #3bb0f0, 0 8px 30px rgba(0,0,0,.28); }
.swipe-likedme { position: absolute; top: 14px; left: 14px; z-index: 3; background: #2ecc71; color: #fff; font-size: .8rem; font-weight: 700; padding: 5px 11px; border-radius: 999px; box-shadow: 0 2px 8px rgba(0,0,0,.25); }
.card-act { position: absolute; top: 12px; right: 12px; z-index: 4; display: flex; gap: 8px; }
.card-act-btn { width: 36px; height: 36px; border-radius: 50%; border: 0; background: rgba(0,0,0,.45); color: #fff; font-size: 1rem; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.card-act-btn:hover { background: rgba(0,0,0,.7); }
.card-act-btn[disabled] { opacity: .7; cursor: default; }
.match-overlay { position: fixed; inset: 0; z-index: 210; background: radial-gradient(circle at 50% 35%, rgba(243,146,15,.96), rgba(214,70,110,.96)); display: flex; align-items: center; justify-content: center; padding: 24px; }
.match-box { text-align: center; color: #fff; max-width: 420px; }
.match-box h2 { color: #fff; font-size: 2.2rem; margin: 6px 0; }
.match-box p { color: rgba(255,255,255,.95); margin: 0 0 20px; }
.match-emoji { font-size: 4rem; animation: songpulse 1.1s ease-in-out infinite; }
.match-box .btn-primary { background: #fff; color: #d6466e; border: 0; }
.match-box .btn { display: block; width: 100%; margin: 8px 0; }
.match-box > .match-box { }
[data-match-keep] { background: transparent; color: #fff; border: 1px solid rgba(255,255,255,.6); }

/* uvitaci karta */
.welcome-card { position: relative; border: 1px solid #f0c25a; background: var(--brand-soft); }
.welcome-card h2 { margin: 0 0 6px; }
.welcome-x { position: absolute; top: 8px; right: 12px; border: 0; background: transparent; font-size: 1.5rem; line-height: 1; cursor: pointer; color: var(--muted); }
.welcome-steps { list-style: none; padding: 0; margin: 12px 0 16px; }
.welcome-steps li { padding: 4px 0; }
.welcome-steps li.done { color: var(--muted); }
.welcome-tick { display: inline-block; width: 20px; color: #2ecc71; font-weight: 700; }

/* indikator "pise..." v chatu */
.typing-row .typing-bubble { display: inline-flex; gap: 4px; align-items: center; padding: 13px 15px; }
.typing-bubble span { width: 7px; height: 7px; border-radius: 50%; background: var(--muted); opacity: .4; animation: typingdot 1s infinite; }
.typing-bubble span:nth-child(2) { animation-delay: .15s; }
.typing-bubble span:nth-child(3) { animation-delay: .3s; }
@keyframes typingdot { 0%, 60%, 100% { transform: translateY(0); opacity: .35; } 30% { transform: translateY(-4px); opacity: .9; } }

/* fotky v chatu */
.bubble-photo { display: block; max-width: 220px; border-radius: 12px; overflow: hidden; margin-bottom: 4px; }
.bubble-photo img { width: 100%; display: block; }
.bubble-photo.is-pending img { opacity: .6; }
.chat-photo-btn { cursor: pointer; }
.chat-photo-btn.is-busy { opacity: .5; pointer-events: none; }
.held-photo { display: inline-block; max-width: 220px; border-radius: 10px; overflow: hidden; margin: 0 0 8px; }
.held-photo img { width: 100%; display: block; }

/* push oznameni */
.push-box { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.push-state { margin-left: 8px; font-size: .9rem; color: var(--muted); }

/* ===== Reakce na zpravy, hlasovky, stav doruceni ===== */
.bubble-actions{display:flex;gap:10px;align-items:center;margin-top:4px;opacity:.75;flex-wrap:wrap}
.react-add{font-size:1.05rem;line-height:1}
.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.reaction{display:inline-flex;align-items:center;gap:3px;border:1px solid var(--line);background:var(--bg);
  border-radius:999px;padding:1px 8px;font-size:.85rem;cursor:pointer;line-height:1.6}
.reaction.is-mine{border-color:var(--brand);background:var(--brand-soft)}
.reaction span{color:var(--muted);font-size:.8rem}
.react-palette{position:absolute;z-index:40;display:flex;gap:4px;background:var(--card);border:1px solid var(--line);
  border-radius:999px;padding:5px 8px;box-shadow:var(--shadow)}
.react-palette button{font-size:1.25rem;line-height:1;background:none;border:0;cursor:pointer;padding:2px;border-radius:50%}
.react-palette button:hover{transform:scale(1.2)}
.bubble-voice{display:block;margin:2px 0;max-width:230px;height:40px}
.voice-rec-btn.is-recording{background:var(--err-bg);color:var(--err);border-color:var(--err)}
.read-state{opacity:.8}

/* ===== Objevuj: vymena, uroven, boost ===== */
.swipe-exchange{position:absolute;top:12px;left:12px;background:rgba(16,140,90,.92);color:#fff;
  font-size:.78rem;font-weight:600;padding:3px 9px;border-radius:999px;z-index:3}
.swipe-learning{margin:.2rem 0 0;font-size:.9rem;opacity:.95}
.btn-boost{margin-top:6px}
.btn-boost[disabled]{opacity:.8}

/* ===== Profilove prompty ===== */
.profile-prompts{display:grid;gap:10px;margin:1rem 0}
.prompt-card{border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;background:var(--bg)}
.prompt-q{margin:0 0 2px;font-size:.85rem;color:var(--muted)}
.prompt-a{margin:0;font-weight:500}
.prompts-form .field{margin-bottom:10px}
.prompt-daily{border:1px solid var(--brand);background:var(--brand-soft);border-radius:var(--radius);padding:10px 14px}
.prompts-more{margin:6px 0 12px}
.prompts-more summary{cursor:pointer;color:var(--brand-dark);font-weight:600}

/* ===== Serie a pozvanka ===== */
.streak-chip{display:inline-block;margin:.2rem 0 0;padding:3px 12px;border-radius:999px;
  background:var(--brand-soft);color:var(--brand-dark);font-weight:600;font-size:.9rem}
.invite-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.invite-link{flex:1 1 220px;min-width:0;padding:8px 10px;border:1px solid var(--input-line);border-radius:var(--radius);background:var(--bg);color:var(--ink)}

/* ===== Ukazatel (sirku nastavi JS kvuli CSP), schranka, statistiky, preklad profilu ===== */
.meter-fill{width:0}
.me-stats{display:flex;flex-wrap:wrap;gap:8px;margin:.3rem 0 0}
.views-chip{display:inline-block;padding:3px 12px;border-radius:999px;background:var(--brand-soft);color:var(--brand-dark);font-weight:600;font-size:.9rem;text-decoration:none}
.translate-profile-btn{margin:.2rem 0 .6rem;color:var(--brand-dark);font-weight:600}
.inbox-search{display:flex;gap:8px;margin:.4rem 0}
.inbox-search input{flex:1 1 auto;min-width:0;padding:8px 12px;border:1px solid var(--input-line);border-radius:999px;background:var(--bg);color:var(--ink)}
.inbox-tabs{display:flex;gap:6px;margin:0 0 .8rem}
.inbox-tab{padding:5px 14px;border-radius:999px;text-decoration:none;color:var(--muted);border:1px solid var(--line)}
.inbox-tab.is-active{background:var(--brand-soft);color:var(--brand-dark);border-color:var(--brand);font-weight:600}
.inbox-item{position:relative}
.inbox-archive{position:absolute;right:8px;bottom:8px;margin:0}
.inbox-archive-btn{background:none;border:0;cursor:pointer;font-size:1.05rem;opacity:.55;padding:4px;border-radius:8px}
.inbox-archive-btn:hover{opacity:1;background:var(--brand-soft)}

/* ===== Nastroje vlakna: pripnuti, auto-preklad ===== */
.thread-tools{display:flex;gap:6px}
.thread-tools form{margin:0}
.autotrans-toggle.is-on,.thread-pin.is-on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-dark)}
.pinned-banner{display:flex;align-items:center;gap:8px;background:var(--brand-soft);border-radius:var(--radius);padding:6px 10px;margin:0 0 8px}
.pinned-link{flex:1;min-width:0;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;color:var(--brand-dark);font-size:.9rem}
.pinned-banner form{margin:0}
.pinned-unpin{background:none;border:0;cursor:pointer;color:var(--muted);font-size:1rem;padding:2px 4px}
.bubble.is-pinned{box-shadow:0 0 0 2px var(--brand) inset}
.autotrans-orig{display:inline-block;margin-top:2px;font-size:.8rem;color:var(--brand-dark)}
.pin-msg-form{display:inline;margin:0}
.pin-msg-btn{font-size:.95rem}

/* ===== Schranka: nastroje radku ===== */
.inbox-archive{position:static}
.inbox-tools{position:absolute;right:8px;bottom:8px;display:flex;gap:2px}
.inbox-tools form{margin:0}
.inbox-pin-btn,.inbox-archive-btn{background:none;border:0;cursor:pointer;font-size:1.05rem;opacity:.5;padding:4px;border-radius:8px}
.inbox-pin-btn:hover,.inbox-archive-btn:hover{opacity:1;background:var(--brand-soft)}
.inbox-pin-btn.is-on{opacity:1;filter:saturate(1.4)}
.inbox-item.is-pinned{background:var(--brand-soft)}

/* ===== Stitky a odznaky ===== */
.badge-fast{background:#fff0d6;color:#b8761a}
.achievements{display:flex;flex-wrap:wrap;gap:6px;margin:1rem 0}
.ach-chip{display:inline-flex;gap:4px;align-items:center;background:var(--brand-soft);color:var(--brand-dark);border-radius:999px;padding:3px 12px;font-size:.85rem;font-weight:600}
.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-top:.6rem}
.ach-item{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:var(--radius);padding:8px 10px;opacity:.5}
.ach-item.is-earned{opacity:1;border-color:var(--brand);background:var(--brand-soft)}
.ach-emoji{font-size:1.3rem;line-height:1}
.ach-name{font-size:.85rem;font-weight:600}

/* ===== Kluby ===== */
.club-list{list-style:none;padding:0;margin:1rem 0;display:grid;gap:10px}
.club-card a{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);text-decoration:none;color:var(--ink)}
.club-card a:hover{border-color:var(--brand)}
.club-emoji{font-size:1.6rem;line-height:1}
.club-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.club-desc{font-size:.9rem;color:var(--muted)}
.club-meta{font-size:.8rem;color:var(--muted)}
.club-joined{color:var(--brand);font-weight:700}
.club-room-desc{margin:.2rem 0 1rem}
.club-head-info{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
.club-posts{display:flex;flex-direction:column;gap:12px;margin-bottom:1rem}
.club-post{display:flex;gap:10px}
.club-post-ava{flex:0 0 auto}
.club-post-body{flex:1;min-width:0;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:8px 12px}
.club-post.mine .club-post-body{background:var(--brand-soft)}
.club-post-head{display:flex;align-items:center;gap:6px;font-size:.85rem;margin-bottom:2px}
.club-post-head a{text-decoration:none;color:var(--ink)}
.club-post-head time{color:var(--muted);margin-left:auto;font-size:.8rem}
.club-post-text{white-space:pre-wrap;word-wrap:break-word}
.club-form textarea{width:100%;box-sizing:border-box;margin-bottom:8px}

/* ===== Kluby: akce u prispevku, admin ===== */
.club-post-actions{display:flex;gap:10px;align-items:center;margin-top:4px;opacity:.75;flex-wrap:wrap}
.club-post-actions .link-btn{font-size:.85rem}
.club-report-form{display:inline;margin:0}
.club-edit-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.club-edit-row input.wide{flex:1;min-width:160px}
.club-del-row{margin-top:4px}

/* ===== Admin: rucni vyrez profilovky ===== */
.crop-tool{margin:8px 0}
.crop-tool summary{cursor:pointer;font-weight:600;color:var(--brand-dark)}
.crop-area{position:relative;display:inline-block;max-width:100%;margin:6px 0;user-select:none;touch-action:none;line-height:0}
.crop-img{display:block;width:100%;max-width:360px;height:auto}
.crop-frame{position:absolute;top:0;left:0;box-sizing:border-box;border:2px solid #fff;box-shadow:0 0 0 9999px rgba(0,0,0,.45);cursor:move}
.crop-zoom-label{display:block;font-size:.85rem;margin:4px 0}
.crop-zoom{width:100%;max-width:360px}
.crop-form{margin-top:6px}

/* ===== Nove funkce: opravy, pohlednice, pomaly dopis, hovory, slovicka ===== */

/* Predcitani */
.tts-btn { font-size:.95rem; }

/* Opravy (tandem rezim) */
.correction { margin-top:6px; padding:8px 10px; border-left:3px solid var(--ok); background:var(--ok-bg); border-radius:8px; }
.correction-label { display:block; font-size:.72rem; font-weight:700; color:var(--ok); margin-bottom:2px; }
.correction-text { white-space:pre-wrap; }
.correction-note { margin-top:4px; font-size:.85rem; color:var(--muted); font-style:italic; }
:root:not([data-theme="light"]) .correction, :root[data-theme="dark"] .correction { background:rgba(31,122,61,.16); }
.correct-form { margin-top:6px; display:flex; flex-direction:column; gap:6px; }
.correct-form textarea, .correct-form input { width:100%; padding:7px 9px; border:1px solid var(--input-line); border-radius:8px; background:var(--card); color:var(--ink); font:inherit; }
.correct-form-actions { text-align:right; }

/* Pohlednice */
.postcard { border-radius:12px; padding:22px 18px; min-height:120px; display:flex; align-items:flex-end; color:#fff; box-shadow:var(--shadow); }
.postcard-text { white-space:pre-wrap; font-size:1.05rem; line-height:1.45; text-shadow:0 1px 3px rgba(0,0,0,.35); font-weight:500; }
.pc-sunrise { background:linear-gradient(135deg,#ff9a56,#ff6a88 55%,#ffb86c); }
.pc-ocean { background:linear-gradient(135deg,#2193b0,#6dd5ed); }
.pc-forest { background:linear-gradient(135deg,#1d976c,#93f9b9); }
.pc-city { background:linear-gradient(135deg,#414345,#8e9eab); }
.pc-mountains { background:linear-gradient(135deg,#4e54c8,#8f94fb); }
.pc-blossom { background:linear-gradient(135deg,#ec6f9b,#ffc3a0); }
.postcard-dialog { border:none; border-radius:var(--radius); padding:18px; max-width:420px; width:92%; background:var(--card); color:var(--ink); box-shadow:var(--shadow); }
.postcard-dialog::backdrop { background:rgba(0,0,0,.4); }
.postcard-dialog h3 { margin:0 0 10px; }
.postcard-dialog textarea { width:100%; margin:10px 0; padding:8px 10px; border:1px solid var(--input-line); border-radius:8px; background:var(--bg); color:var(--ink); font:inherit; }
.postcard-picker { display:flex; gap:8px; flex-wrap:wrap; }
.postcard-choice { width:54px; height:38px; border-radius:8px; border:2px solid transparent; cursor:pointer; }
.postcard-choice.is-active { border-color:var(--brand); box-shadow:0 0 0 2px var(--brand-soft); }

/* Pomaly dopis + navrh hovoru (rozbalovaci nabidky) */
.letter-menu, .callprop-menu { position:relative; display:inline-block; }
.letter-menu > summary, .callprop-menu > summary { list-style:none; cursor:pointer; }
.letter-menu > summary::-webkit-details-marker { display:none; }
.letter-opts, .callprop-form { position:absolute; bottom:calc(100% + 6px); left:0; z-index:20; background:var(--card); border:1px solid var(--line); border-radius:10px; box-shadow:var(--shadow); padding:8px; min-width:180px; }
.callprop-form { right:0; left:auto; }
.letter-opts-label { display:block; font-size:.75rem; color:var(--muted); margin-bottom:4px; }
.letter-opts button { display:block; width:100%; text-align:left; padding:7px 9px; border:none; background:none; color:var(--ink); border-radius:7px; cursor:pointer; font:inherit; }
.letter-opts button:hover { background:var(--brand-soft); }
.callprop-form input { width:100%; margin-bottom:6px; padding:6px 8px; border:1px solid var(--input-line); border-radius:7px; background:var(--bg); color:var(--ink); font:inherit; }
.callprop-banner { display:flex; align-items:center; gap:10px; flex-wrap:wrap; justify-content:space-between; margin:8px 0; padding:9px 12px; background:var(--brand-soft); border:1px solid var(--line); border-radius:10px; }
.callprop-when { font-weight:600; }

/* Bezpecnostni upozorneni na zacatku konverzace napric zememi */
.safety-note { margin:0 0 10px; padding:9px 12px; background:#fff7e6; border:1px solid #f0d49a; border-radius:10px; color:#7a5a1e; font-size:.86rem; line-height:1.45; }
:root[data-theme="dark"] .safety-note { background:#2e2410; border-color:#5c4718; color:#e6c98a; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .safety-note { background:#2e2410; border-color:#5c4718; color:#e6c98a; } }

/* Slovicko dne */
.word-card { text-align:center; max-width:420px; margin:14px auto; padding:22px; background:var(--card); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); }
.word-of-day-label { font-size:.78rem; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); }
.word-of-day { font-size:2rem; font-weight:800; color:var(--brand-dark); margin:6px 0; }
.word-meaning { color:var(--muted); margin-bottom:14px; }
.word-add-form { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.word-add-form input { flex:1 1 160px; padding:8px 10px; border:1px solid var(--input-line); border-radius:8px; background:var(--card); color:var(--ink); font:inherit; }
.word-list { list-style:none; padding:0; margin:10px 0; }
.word-item { display:flex; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid var(--line); }
.word-item-word { font-weight:700; }
.word-item-meaning { color:var(--muted); flex:1; }
.word-del { margin-left:auto; }

/* Admin filtr (safeguarding) */
.admin-filter { display:flex; gap:8px; margin-bottom:12px; }

/* ===== Rust: horizontalni zebricky (zeme, jazyky) ===== */
.grow-cols { display:grid; grid-template-columns:1fr; gap:0; }
@media (min-width:720px) { .grow-cols { grid-template-columns:1fr 1fr; gap:20px; } }
.hbars { list-style:none; padding:0; margin:0; counter-reset:hb; }
.hbar { display:flex; align-items:center; gap:10px; padding:7px 0; border-bottom:1px solid var(--line); }
.hbar:last-child { border-bottom:0; }
.hbar-name { flex:0 0 38%; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.hbar-track { flex:1; height:10px; background:var(--brand-soft); border-radius:999px; overflow:hidden; }
.hbar-fill { display:block; height:100%; background:var(--brand); border-radius:999px; }
.hbar-n { flex:0 0 auto; min-width:52px; text-align:right; font-variant-numeric:tabular-nums; color:var(--muted); font-weight:700; }
.w-5{width:5%}.w-10{width:10%}.w-15{width:15%}.w-20{width:20%}.w-25{width:25%}.w-30{width:30%}.w-35{width:35%}.w-40{width:40%}.w-45{width:45%}.w-50{width:50%}.w-55{width:55%}.w-60{width:60%}.w-65{width:65%}.w-70{width:70%}.w-75{width:75%}.w-80{width:80%}.w-85{width:85%}.w-90{width:90%}.w-95{width:95%}.w-100{width:100%}

/* ===== Hromadne akce v seznamu profilu ===== */
.bulk-bar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 12px; padding:10px 14px; background:var(--brand-soft); border:1px solid var(--line); border-radius:var(--radius); position:sticky; top:0; z-index:5; }
.bulk-bar[hidden] { display:none; }
.bulk-count { font-weight:700; }
.bulk-bar select, .bulk-bar .bulk-tag { padding:7px 9px; border:1px solid var(--input-line); border-radius:8px; background:var(--card); color:var(--ink); font:inherit; }
.bulk-tag[hidden] { display:none; }
.row-check, #bulk-all { width:18px; height:18px; cursor:pointer; }
.thumb-cell { white-space:nowrap; }
.thumb-cell .row-check { margin-right:8px; vertical-align:middle; }

/* ===== Podezrele ucty ===== */
.suspect-row { padding:10px 0; border-bottom:1px solid var(--line); }
.suspect-row:last-child { border-bottom:0; }
.suspect-head { margin-bottom:6px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.suspect-head code { background:var(--brand-soft); padding:2px 7px; border-radius:6px; font-size:.9rem; }
.suspect-chips { display:flex; flex-wrap:wrap; gap:6px; }
.suspect-chip { display:inline-block; padding:4px 9px; border:1px solid var(--line); border-radius:999px; background:var(--card); color:var(--ink); text-decoration:none; font-size:.86rem; }
.suspect-chip:hover { background:var(--brand-soft); }

/* Uprava ctvercoveho vyrezu primo pri kontrole fotek */
.rev-crop { text-align: center; margin: 10px 0 4px; }
.rev-crop .crop-area { max-width: 100%; }
.rev-crop .crop-img { max-width: 100%; max-height: 56vh; width: auto; }
.rev-crop .crop-zoom, .rev-crop .crop-zoom-label { max-width: 360px; margin-left: auto; margin-right: auto; }
.rev-crop-actions { display: flex; gap: 10px; justify-content: center; margin: 10px 0 2px; }
.rev-crop-actions .btn-lg { flex: 1 1 0; max-width: 240px; }
.rev-crop-btn { position: absolute; top: 12px; right: 12px; z-index: 3; border: 0; border-radius: 999px; padding: 7px 13px; background: rgba(255,255,255,.92); color: #222; font-size: .9rem; font-weight: 700; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,.3); }
.rev-crop-btn:hover { background: #fff; }

/* Panel odhlaseni pres odkaz z e-mailu */
.panel.narrow { max-width: 520px; }

/* Zivy prehled "kdo je v administraci" */
.presence-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 9px 2px; border-bottom: 1px solid var(--line); }
.presence-row:last-child { border-bottom: 0; }
.presence-row.is-me { background: var(--brand-soft); border-radius: 8px; padding: 9px 10px; }
.presence-dot { width: 9px; height: 9px; border-radius: 50%; background: #28a745; flex: none; box-shadow: 0 0 0 0 rgba(40,167,69,.5); animation: livepulse 2s infinite; }
.presence-who { flex: 0 0 auto; }
.presence-where { flex: 1 1 240px; min-width: 0; }
.presence-where code { font-size: .82em; color: var(--muted); word-break: break-all; }
.presence-meta { flex: 0 0 auto; font-size: .85rem; }

/* Stranka "Moje data" (citelny export) */
.data-page h2 { margin-top: 26px; }
.data-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.data-list { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; margin: 8px 0 0; }
.data-list dt { font-weight: 700; color: var(--muted); }
.data-list dd { margin: 0; }
.data-simple { list-style: none; padding: 0; margin: 6px 0 0; }
.data-simple li { padding: 5px 0; border-bottom: 1px solid var(--line); }
.data-simple li:last-child { border-bottom: 0; }
.data-conv { border: 1px solid var(--line); border-radius: 12px; padding: 6px 14px; margin: 10px 0; }
.data-conv h3 { font-size: 1rem; margin: 10px 0 6px; }
.data-msg { margin: 6px 0; padding: 8px 12px; border-radius: 10px; background: var(--bg); }
.data-msg-me { background: var(--brand-soft); }
@media (max-width: 480px) { .data-list { grid-template-columns: 1fr; gap: 2px 0; } .data-list dt { margin-top: 8px; } }
@media print { .site-header, .site-footer, .no-print { display: none !important; } .panel { box-shadow: none; border: 0; } }

/* Hlavicka "Muj profil" - ucesani */
.me-head-main h1 { margin: 0; }
.me-email { margin: 3px 0 0; font-size: .88rem; word-break: break-word; }
.me-links { margin: 14px 0 10px; padding: 8px; background: var(--card); border: 1px solid var(--line); border-radius: 16px; box-shadow: var(--shadow); }
.me-links .btn-sm { border-color: transparent; background: var(--brand-soft); color: var(--ink); font-weight: 600; }
.me-links .btn-sm:hover { background: var(--brand); color: #fff; }
.me-links .btn-vip { background: var(--brand); color: #fff; }
.me-links .btn-vip:hover { background: var(--brand-dark); }
.me-stats { margin: 2px 0 6px; }

/* Zaznam akci: systemovy akter svetle cervene + tlacitko Vratit zpet */
.actor-system { color: #e06666; font-weight: 600; }
.admin-table td[data-label="Kdy"], .admin-table td[data-label="Kdo"], .admin-table th:first-child { white-space: nowrap; }

/* Zvyrazneni antispam slov v "O mne" (jen v administraci) */
.banned-notice { margin: 0 0 14px; padding: 12px 14px; background: #fff8e8; border: 1px solid #f0d890; border-radius: 10px; }
.banned-notice-head { margin: 0 0 8px; font-size: .95rem; }
.banned-preview { white-space: pre-wrap; word-break: break-word; line-height: 1.5; color: #3a352c; font-size: .95rem; max-height: 220px; overflow: auto; }
.banned-hit { background: #ffd23f; color: #5a4300; border-radius: 3px; padding: 0 3px; font-weight: 600; }
.banned-actions { margin-top: 10px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.banned-actions .suspect-ok { display: inline; margin: 0; }
.banned-ok-state { color: #2f8f4e; font-weight: 600; }
.banned-notice.is-ok { background: #eef7f0; border-color: #bfe3c4; }

/* Podezrele ucty: tlacitko "je to v pohode" (stitek Proveřeno) */
.suspect-chip-wrap { display: inline-flex; align-items: center; gap: 2px; margin: 0 4px 4px 0; }
.suspect-ok { display: inline; margin: 0; }
.suspect-ok-cell { white-space: nowrap; text-align: right; }
.suspect-chip-wrap .suspect-ok .btn { padding: 2px 7px; border-color: #bfe3c4; color: #2f8f4e; }
.suspect-ok .btn:hover { background: #eaf7ee; border-color: #8fd0a0; }

/* Stav webu: nastaveni adres pro vystrahy */
.alerts-box { margin-top: 16px; padding: 14px 16px; background: #fbf9f6; border: 1px solid #efe7dc; border-radius: 10px; }
.alerts-box label { display: block; margin-bottom: 6px; }
.alerts-box input { width: 100%; max-width: 460px; }
.alerts-box .alerts-test { margin-top: 12px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

/* Tvrdy orez fotky: obdelnikovy ramecek + puntik na zmenu velikosti */
.hardcrop-area .crop-rect { position: absolute; top: 0; left: 0; box-sizing: border-box; border: 2px solid #fff; box-shadow: 0 0 0 9999px rgba(0,0,0,.5); cursor: move; }
.hardcrop-area .crop-grip { position: absolute; right: -11px; bottom: -11px; width: 22px; height: 22px; border-radius: 50%; background: #fff; border: 3px solid var(--brand); cursor: nwse-resize; touch-action: none; }
.log-undo-cell { white-space: nowrap; text-align: right; }
.log-undo { display: inline; margin: 0; }
.log-undo .btn { color: #c0392b; border-color: #e3b4b4; }
.log-undo .btn:hover { background: #fbeaea; border-color: #d98b8b; }
