/* ---------- Klientský portál — app shell (sidenav + topbar), UX vzorce inšpirované Adminto,
   vlastná paleta EventPixel (Mocha Mousse / Cloud Dancer), bez Bootstrapu/jQuery. ---------- */

/* ---------- doplnkové tokeny (rovnaké hodnoty ako admin/assets/admin.css) — style.css/portal.css
   dosiaľ nemali --surface/--line-2/--faint/--warning/--info, takže .portal-panel nižšie (rovnaký
   vizuálny jazyk ako admin .admin-panel) tu boli chýbajúce premenné doplnené 1:1. ---------- */
:root{
  --surface:#ffffff; --line-2:#c9bfa9; --faint:#8f8672; --warning:#8a6a1f; --info:#2f5f8a;
  --ep-help-topbar-h:68px; /* výška .portal-topbar (zdieľané portál + tvorca) — pozri assets/css/components.css .ep-help-search/.ep-help-toc */
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) { --surface:#221f19; --line-2:#4a4437; --faint:#6f6754; --warning:#d9a441; --info:#6fa3d8; }
}
:root[data-theme="dark"] { --surface:#221f19; --line-2:#4a4437; --faint:#6f6754; --warning:#d9a441; --info:#6fa3d8; }

.portal-body{ margin:0; background:var(--paper); color:var(--text); font-family:'Work Sans',ui-sans-serif,system-ui,sans-serif; }

/* ---------- Panel — biela boxovaná sekcia s hlavičkovou lištou, presne vizuálny jazyk admin
   .admin-panel/.admin-panel-head (admin/assets/admin.css), aby klientský portál pôsobil rovnako
   prehľadne a profesionálne ako admin. Voliteľne zbaliteľný cez <details class="portal-panel
   portal-collapsible">, rovnaký vzor ako .admin-collapsible. ---------- */
.portal-panel{ background:var(--surface); border:1.5px solid var(--line); border-radius:var(--radius); overflow:hidden; margin-bottom:22px; }
.portal-panel-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px 18px; border-bottom:1.5px solid var(--line); flex-wrap:wrap; background:var(--paper-2); }
.portal-panel-head h2, .portal-panel-head h3{ font-family:'Archivo'; font-size:14.5px; font-weight:800; margin:0; letter-spacing:-.005em; }
.portal-panel-head .portal-meta{ font-weight:400; }
.portal-panel-body{ padding:22px 24px; }
.portal-panel-body > *:last-child{ margin-bottom:0 !important; }

.portal-panel.portal-collapsible > summary.portal-panel-head{ cursor:pointer; list-style:none; }
.portal-panel.portal-collapsible > summary.portal-panel-head::-webkit-details-marker{ display:none; }
.portal-panel.portal-collapsible > summary.portal-panel-head h2{ display:flex; align-items:center; gap:10px; }
.portal-collapsible-chevron{ display:inline-block; width:8px; height:8px; border-right:2px solid var(--text-muted); border-bottom:2px solid var(--text-muted); transform:rotate(45deg); transition:transform .15s ease; flex:0 0 auto; }
.portal-panel.portal-collapsible[open] > summary .portal-collapsible-chevron{ transform:rotate(-135deg); }

@media (max-width:640px){ .portal-panel-head{ padding:14px 16px; } .portal-panel-body{ padding:18px 16px; } }

/* .text-link (assets/css/style.css) je navrhnutý pre tmavé sekcie verejného webu (.hero/.on-ink) —
   near-white text na tmavom pozadí. Portál má svetlé pozadie, takže rovnaký near-white text bol
   prakticky nečitateľný (najviditeľnejšie na žltom "ČAKÁ NA VÁS" boxe na dashboarde). */
.text-link{ color:var(--text); border-bottom-color:var(--text-muted); }
.text-link span{ color:var(--accent); }
.text-link:hover{ border-color:var(--accent); }
.portal-brand-mark{ font-family:'Archivo'; font-weight:900; font-size:19px; color:var(--paper-text); letter-spacing:-.01em; }
.portal-brand-accent{ color:var(--accent-warm); }

/* ---------- app shell ---------- */
.portal-shell{ display:flex; min-height:100vh; }

.portal-sidenav{
  width:264px; flex-shrink:0; background:var(--ink); display:flex; flex-direction:column;
  position:fixed; top:0; left:0; bottom:0; z-index:50; transition:transform .25s ease, width .2s ease;
}
.portal-sidenav-brand{ padding:24px 26px; display:block; border-bottom:1px solid var(--line-dark); }
.portal-nav{ flex:1; overflow-y:auto; padding:18px 14px; display:flex; flex-direction:column; gap:3px; }
.portal-nav-link{
  display:flex; align-items:center; gap:13px; padding:11px 14px; border-radius:8px;
  color:var(--paper-text-muted); font-size:14px; font-weight:600; transition:background .15s ease, color .15s ease;
}
.portal-nav-link svg{ width:19px; height:19px; flex-shrink:0; }
a.portal-nav-link:hover{ background:rgba(240,238,233,.08); color:var(--paper-text); }
.portal-nav-link.is-active{ background:var(--accent); color:var(--accent-ink); }
.portal-nav-link.is-disabled{ opacity:.4; cursor:default; }
.portal-nav-link .count{ margin-left:auto; font-size:10px; padding:2px 7px; border-radius:99px; background:rgba(240,238,233,.14); color:var(--paper-text); font-weight:800; flex-shrink:0; }
.portal-nav-link.is-active .count{ background:rgba(43,29,13,.18); color:var(--accent-ink); }
.portal-nav-soon{
  margin-left:auto; font-size:9px; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
  background:rgba(240,238,233,.12); color:var(--paper-text-muted); padding:2px 7px; border-radius:20px; flex-shrink:0;
}

/* ---------- tvorca/ nav skupiny — vertikálne zbaliteľné kategórie (accordion), pozri
   tvorca/inc/layout_header.php + assets/js/tvorca-nav.js. grid-template-rows 0fr→1fr trik namiesto
   pevnej max-height — funguje pre ľubovoľne dlhú skupinu bez magickej hodnoty v px. ---------- */
.portal-nav-group-toggle{
  display:flex; align-items:center; gap:13px; padding:11px 14px; border-radius:8px; width:100%;
  color:var(--paper-text-muted); font-size:14px; font-weight:600; background:none; border:none; cursor:pointer;
  transition:background .15s ease, color .15s ease; text-align:left; font-family:inherit;
}
.portal-nav-group-toggle svg{ width:19px; height:19px; flex-shrink:0; }
.portal-nav-group-toggle:hover{ background:rgba(240,238,233,.08); color:var(--paper-text); }
.portal-nav-group.is-active > .portal-nav-group-toggle{ color:var(--paper-text); font-weight:700; }
.portal-nav-group-toggle .count{
  margin-left:auto; font-size:10px; padding:2px 7px; border-radius:99px; background:rgba(240,238,233,.14);
  color:var(--paper-text); font-weight:800; flex-shrink:0;
}
.portal-nav-group-chevron{ margin-left:auto; display:flex; flex-shrink:0; transition:transform .2s ease; }
.portal-nav-group-toggle .count + .portal-nav-group-chevron{ margin-left:0; }
.portal-nav-group-chevron svg{ width:15px; height:15px; }
.portal-nav-group.is-open .portal-nav-group-chevron{ transform:rotate(180deg); }
.portal-nav-group-list{ display:grid; grid-template-rows:0fr; transition:grid-template-rows .2s ease; }
.portal-nav-group.is-open .portal-nav-group-list{ grid-template-rows:1fr; }
.portal-nav-group-list-inner{ overflow:hidden; display:flex; flex-direction:column; gap:2px; padding-top:2px; }
.portal-nav-group-list .portal-nav-link{ padding-left:41px; font-size:13.5px; }

/* ---------- tvorca/ nav — horizontálne zbaliteľný sidenav (ikonová lišta), desktop-only. Rail toggle
   je vždy na dne sidenavu, mimo posúvateľného .portal-nav, aby bol vždy dosiahnuteľný. ---------- */
.portal-sidenav-rail-toggle{
  display:flex; align-items:center; gap:11px; margin:8px 14px 14px; padding:9px 14px; border-radius:8px;
  color:var(--paper-text-muted); font-size:12.5px; font-weight:600; background:none;
  border:1.5px solid var(--line-dark); cursor:pointer; flex-shrink:0; font-family:inherit;
}
.portal-sidenav-rail-toggle:hover{ background:rgba(240,238,233,.08); color:var(--paper-text); }
.portal-sidenav-rail-toggle svg{ width:16px; height:16px; flex-shrink:0; transition:transform .2s ease; }

.portal-main{ flex:1; margin-left:264px; display:flex; flex-direction:column; min-width:0; transition:margin-left .2s ease; }

.portal-topbar{
  height:68px; flex-shrink:0; display:flex; align-items:center; justify-content:space-between;
  padding:0 30px; background:var(--paper); border-bottom:1.5px solid var(--line); position:sticky; top:0; z-index:30;
}
.portal-topbar-left{ display:flex; align-items:center; gap:16px; min-width:0; }
.portal-topbar-title{ font-family:'Archivo'; font-weight:800; font-size:18px; margin:0; }
.portal-sidenav-toggle{
  display:none; align-items:center; justify-content:center; width:36px; height:36px; border-radius:8px;
  border:1.5px solid var(--line); background:var(--paper); color:var(--text); cursor:pointer; flex-shrink:0;
}
.portal-sidenav-toggle svg{ width:18px; height:18px; }

/* ---------- notifikačný zvonček (topbar dropdown) — vizuálny jazyk zdieľaný s .portal-user-dropdown ---------- */
.portal-notifications{ position:relative; flex-shrink:0; }
.portal-help-btn{
  display:flex; align-items:center; justify-content:center; width:36px; height:36px; flex-shrink:0;
  border-radius:8px; border:1.5px solid transparent; background:none; color:var(--text-muted); cursor:pointer;
}
.portal-help-btn:hover{ background:var(--paper-2); color:var(--text); }
.portal-help-btn svg{ width:17px; height:17px; }

.portal-notifications-btn{
  position:relative; display:flex; align-items:center; justify-content:center; width:36px; height:36px;
  border-radius:8px; border:1.5px solid transparent; background:none; color:var(--text-muted); cursor:pointer;
}
.portal-notifications-btn:hover{ background:var(--paper-2); color:var(--text); }
.portal-notifications-btn svg{ width:17px; height:17px; }
.portal-notifications-btn .count{
  position:absolute; top:2px; right:2px; min-width:16px; height:16px; padding:0 4px; border-radius:99px;
  background:#a13d2b; color:#fff; font-size:10px; font-weight:800; line-height:16px; text-align:center;
}
.portal-notifications-dropdown{
  display:none; position:absolute; top:calc(100% + 8px); right:0; width:320px; max-width:calc(100vw - 32px);
  background:var(--paper); border:1.5px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow);
  max-height:70vh; overflow-y:auto; z-index:40; padding:6px;
}
.portal-notifications-dropdown.is-open{ display:block; }
.portal-notif-status{ padding:14px 12px; text-align:center; color:var(--text-muted); font-size:12.5px; }
.portal-notif-group{ margin-bottom:4px; }
.portal-notif-group:last-child{ margin-bottom:0; }
.portal-notif-group-label{
  padding:8px 10px 4px; font-size:10px; text-transform:uppercase; letter-spacing:.08em;
  color:var(--text-muted); font-weight:700;
}
.portal-notif-item{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:9px 10px; border-radius:6px; color:var(--text); font-size:13px; font-weight:600; }
.portal-notif-item:hover{ background:var(--paper-2); }
.portal-notif-item .count{ font-size:10px; padding:2px 7px; border-radius:99px; background:var(--paper-2); color:var(--accent-2); font-weight:800; flex-shrink:0; }
@media (max-width:640px){ .portal-notifications-dropdown{ right:-8px; } }

.portal-user-menu{ position:relative; flex-shrink:0; }
.portal-user-btn{
  display:flex; align-items:center; gap:10px; cursor:pointer; background:none; border:none; padding:6px; border-radius:10px;
}
.portal-user-btn:hover{ background:var(--paper-2); }
.portal-user-btn svg{ width:15px; height:15px; color:var(--text-muted); }
.portal-user-avatar{
  width:36px; height:36px; border-radius:50%; background:var(--accent); color:var(--accent-ink);
  display:flex; align-items:center; justify-content:center; font-family:'Archivo'; font-weight:800; font-size:14px; flex-shrink:0;
}
.portal-user-info{ display:none; flex-direction:column; text-align:left; line-height:1.25; }
.portal-user-name{ font-size:13px; font-weight:700; }
.portal-user-company{ font-size:11.5px; color:var(--text-muted); }
@media (min-width:640px){ .portal-user-info{ display:flex; } }

.portal-user-dropdown{
  position:absolute; right:0; top:calc(100% + 8px); background:var(--paper); border:1.5px solid var(--line);
  border-radius:var(--radius); box-shadow:var(--shadow); min-width:180px; padding:6px; display:none; z-index:40;
}
.portal-user-dropdown.is-open{ display:block; }
.portal-user-dropdown form{ margin:0; }
.portal-user-dropdown button{
  display:flex; align-items:center; gap:9px; width:100%; text-align:left; padding:9px 10px; border-radius:6px;
  font-size:13.5px; font-weight:600; color:var(--text); border:none; background:none; cursor:pointer;
}
.portal-user-dropdown button svg{ width:16px; height:16px; color:var(--text-muted); }
.portal-user-dropdown button:hover{ background:var(--paper-2); }

.portal-content{ padding:32px 30px 64px; flex:1; }

.portal-sidenav-backdrop{ display:none; }

/* ---------- tvorca/ nav — horizontálne zbaliteľný sidenav (ikonová lišta), LEN desktop (na mobile už
   existuje vlastný overlay-drawer mechanizmus vyššie, nezávislý od tohto). Skupinové zoznamy sa v
   rail móde vždy zbalia bez ohľadu na svoj vertikálny stav — bez labelu by neoznačené vnorené ikony
   boli nečitateľné; klik na skupinu v rail móde preto sidenav najprv rozbalí (assets/js/tvorca-nav.js). ---------- */
@media (min-width:961px){
  body.is-nav-rail .portal-sidenav{ width:76px; }
  body.is-nav-rail .portal-main{ margin-left:76px; }
  body.is-nav-rail .portal-sidenav-brand{ padding:24px 0; text-align:center; }
  body.is-nav-rail .portal-brand-mark{ display:none; }
  body.is-nav-rail .portal-sidenav-brand::after{ content:'EP'; font-family:'Archivo'; font-weight:900; font-size:16px; color:var(--paper-text); }
  body.is-nav-rail .portal-nav-link,
  body.is-nav-rail .portal-nav-group-toggle{ justify-content:center; padding-left:0; padding-right:0; }
  body.is-nav-rail .portal-nav-link span,
  body.is-nav-rail .portal-nav-group-toggle span,
  body.is-nav-rail .portal-nav-link .count,
  body.is-nav-rail .portal-nav-group-toggle .count,
  body.is-nav-rail .portal-nav-group-chevron{ display:none; }
  body.is-nav-rail .portal-nav-group-list{ grid-template-rows:0fr !important; }
  body.is-nav-rail .portal-sidenav-rail-toggle{ justify-content:center; padding-left:0; padding-right:0; }
  body.is-nav-rail .portal-sidenav-rail-toggle span{ display:none; }
  body.is-nav-rail .portal-sidenav-rail-toggle svg{ transform:rotate(180deg); }
}

@media (max-width:960px){
  .portal-sidenav{ transform:translateX(-100%); }
  .portal-sidenav.is-open{ transform:translateX(0); }
  .portal-main{ margin-left:0; }
  .portal-sidenav-toggle{ display:flex; }
  .portal-sidenav-backdrop{
    position:fixed; inset:0; background:rgba(20,18,15,.45); z-index:45; display:none;
  }
  .portal-sidenav-backdrop.is-open{ display:block; }
  .portal-content{ padding:24px 18px 48px; }
  .portal-topbar{ padding:0 18px; }
  /* rail (horizontálne zbalenie) je len desktop koncept — na mobile má sidenav vlastný
     overlay-drawer mechanizmus vyššie, tlačidlo by tu bolo mŕtve (žiadny vizuálny efekt). */
  .portal-sidenav-rail-toggle{ display:none; }
}

/* ---------- Uvítací "začnite tu" banner (konkurenčná analýza — prvé prihlásenie, portál aj tvorca/) ----------
   Zámerne kartový panel nad .portal-welcome, nie systémový strip ako .portal-acting-as-banner —
   ide o jednorazovú priateľskú správu, nie trvalý stavový indikátor. Zmizne natrvalo po zavretí
   (onboarding_dismissed_at), nikdy sa nezobrazí znova. */
.portal-onboarding{
  background:var(--paper-2); border:1.5px solid var(--accent); border-radius:var(--radius);
  padding:20px 22px; margin-bottom:22px; position:relative;
}
.portal-onboarding h3{ font-family:'Archivo'; font-size:16px; margin:0 0 10px; padding-right:28px; }
.portal-onboarding p{ margin:0 0 8px; font-size:13.5px; max-width:64ch; }
.portal-onboarding p:last-of-type{ margin-bottom:0; }
.portal-onboarding strong{ color:var(--accent-ink); }
.portal-onboarding-close{
  position:absolute; top:16px; right:16px; background:none; border:none; cursor:pointer;
  color:var(--text-muted); font-size:20px; line-height:1; padding:2px 6px; border-radius:6px;
}
.portal-onboarding-close:hover{ background:var(--paper); color:var(--text); }

/* ---------- dashboard obsah ---------- */
.portal-welcome h2{ font-size:clamp(20px,2.6vw,26px); margin-bottom:10px; }
.portal-welcome-meta{ display:flex; flex-wrap:wrap; gap:6px 20px; font-size:13.5px; color:var(--text-muted); margin-bottom:14px; }
.portal-welcome p{ max-width:60ch; }

.portal-cards{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:18px; margin-top:26px; }
.portal-card{
  background:var(--paper-2); border:1.5px solid var(--line); border-radius:var(--radius);
  padding:24px; display:flex; flex-direction:column; gap:10px; align-items:flex-start;
}
a.portal-card{ transition:transform .15s ease, box-shadow .15s ease; }
a.portal-card:hover{ transform:translateY(-2px); box-shadow:var(--shadow); border-color:var(--accent); }
.portal-card-badge-live{ background:var(--accent); color:var(--accent-ink); }
.portal-card-icon{
  width:38px; height:38px; border-radius:9px; background:var(--accent); color:var(--accent-ink);
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.portal-card-icon svg{ width:19px; height:19px; }
.portal-card h3{ font-size:16px; margin:0; }
.portal-card p{ font-size:13.5px; margin:0; color:var(--text-muted); }
.portal-card-badge{
  font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
  background:var(--line); color:var(--text-muted); padding:3px 10px; border-radius:20px;
}

/* ---------- auth (prihlásenie/registrácia) — samostatný shell bez sidenav ---------- */
.portal-auth-body{ background:var(--ink); min-height:100vh; }
.portal-auth-shell{
  min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:flex-start;
  padding:0 20px 28px; gap:36px;
}
.portal-auth-shell > main{ flex:1; width:100%; display:flex; align-items:center; justify-content:center; }
.portal-auth-brand{ display:block; }
/* horná lišta auth stránok — späť na web, jazyk, prepnutie prihlásenie/registrácia (rovnaký vzor ako
   hlavička webu, ale bez menu — používateľ nesmie ostať „zaseknutý“ na prihlasovacej stránke) */
.portal-auth-top{
  width:100%; max-width:1120px; display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:22px 0 0; flex-wrap:wrap;
}
.portal-auth-top-actions{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.portal-auth-link{
  display:inline-flex; align-items:center; gap:7px; min-height:40px; padding:0 14px; border-radius:8px;
  font-size:13.5px; font-weight:600; color:var(--paper-text-muted); text-decoration:none; border:1.5px solid transparent;
  transition:color .15s ease, border-color .15s ease, background .15s ease;
}
.portal-auth-link svg{ width:15px; height:15px; }
.portal-auth-link:hover{ color:var(--paper-text); background:rgba(255,255,255,.05); }
.portal-auth-link--outline{ border-color:var(--line-dark); color:var(--paper-text); }
.portal-auth-link--outline:hover{ border-color:var(--accent-warm); color:var(--accent-warm); background:transparent; }
.auth-lang{ position:relative; }
.auth-lang summary{
  list-style:none; cursor:pointer; display:inline-flex; align-items:center; gap:6px; min-height:40px; padding:0 12px;
  border-radius:8px; border:1.5px solid var(--line-dark); color:var(--paper-text); font-size:13px; font-weight:700; letter-spacing:.04em;
}
.auth-lang summary::-webkit-details-marker{ display:none; }
.auth-lang summary::after{ content:""; width:6px; height:6px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:rotate(45deg) translateY(-2px); opacity:.7; }
.auth-lang[open] summary{ border-color:var(--accent-warm); }
.auth-lang-menu{
  position:absolute; right:0; top:calc(100% + 8px); z-index:20; min-width:180px; margin:0; padding:6px; list-style:none;
  background:#221f19; border:1px solid var(--line-dark); border-radius:10px; box-shadow:0 18px 40px -18px rgba(0,0,0,.8);
}
.auth-lang-menu a{ display:flex; align-items:center; gap:8px; padding:8px 10px; border-radius:7px; font-size:13.5px; color:var(--paper-text); text-decoration:none; }
.auth-lang-menu a:hover, .auth-lang-menu a.is-current{ background:rgba(227,164,104,.14); }
.auth-lang-menu a.is-current{ color:var(--accent-warm); font-weight:700; }
.portal-auth-foot{
  width:100%; max-width:1120px; display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap;
  padding-top:24px; border-top:1px solid var(--line-dark); font-size:12.5px; color:var(--paper-text-muted);
}
.portal-auth-foot nav{ display:flex; gap:18px; flex-wrap:wrap; }
.portal-auth-foot a{ color:var(--paper-text-muted); text-decoration:none; }
.portal-auth-foot a:hover{ color:var(--paper-text); }
@media (max-width:640px){
  .portal-auth-top{ padding-top:16px; }
  .portal-auth-link--back span{ display:none; }
  .portal-auth-foot{ justify-content:center; text-align:center; }
}
.portal-auth-card-wrap{ width:100%; max-width:440px; }
.portal-auth-card-wrap .section-head h1{ color:var(--paper-text); font-size:clamp(22px,3vw,28px); }
.portal-auth-card-wrap .section-head p{ color:var(--paper-text-muted); }

/* ---------- registrácia (EventPixel OS) — pitch + mockup vľavo, formulár vpravo ----------
   Registrácia zároveň predáva produkt: hodnotová ponuka (6 oblastí) a statický mockup portálu
   postavený z HTML/CSS (bez obrázka, preloží sa spolu so stránkou). Tmavé pozadie .portal-auth-body,
   preto pitch používa --paper-text/--paper-text-muted, mockup vlastné tmavé plochy. */
.portal-auth-register{
  width:100%; max-width:1120px; display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,440px);
  gap:56px; align-items:start;
}
.reg-pitch{ color:var(--paper-text); min-width:0; }
.reg-eyebrow{
  display:inline-flex; align-items:center; gap:8px; margin:0 0 14px; font-size:11.5px; font-weight:800;
  letter-spacing:.12em; text-transform:uppercase; color:var(--accent-warm); max-width:none;
}
.reg-eyebrow::before{ content:""; width:18px; height:2px; background:var(--accent-warm); }
.reg-title{ color:var(--paper-text); font-size:clamp(28px,3.6vw,40px); line-height:1.1; margin:0 0 10px; text-wrap:balance; }
.reg-lead{ color:var(--paper-text-muted); font-size:clamp(16px,1.6vw,19px); margin:0 0 28px; max-width:none; }
.reg-features{ list-style:none; margin:0 0 34px; padding:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px 24px; }
.reg-features li{ display:flex; gap:12px; align-items:flex-start; }
.reg-feature-icon{
  width:36px; height:36px; border-radius:9px; flex-shrink:0; display:flex; align-items:center; justify-content:center;
  background:rgba(227,164,104,.12); border:1px solid rgba(227,164,104,.28); color:var(--accent-warm);
}
.reg-feature-icon svg{ width:17px; height:17px; }
.reg-feature-text{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.reg-feature-text strong{ color:var(--paper-text); font-family:'Archivo'; font-size:15px; font-weight:700; }
.reg-feature-text span{ color:var(--paper-text-muted); font-size:13px; line-height:1.45; }

/* mockup */
.reg-mock{ margin:0; }
.reg-mock figcaption{ margin-top:12px; font-size:12.5px; color:var(--paper-text-muted); }
.reg-mock-window{
  background:#221f19; border:1px solid var(--line-dark); border-radius:14px; overflow:hidden;
  box-shadow:0 30px 60px -30px rgba(0,0,0,.7), 0 0 0 1px rgba(255,255,255,.03) inset;
}
.reg-mock-bar{ display:flex; gap:6px; padding:10px 14px; background:#1a1712; border-bottom:1px solid var(--line-dark); }
.reg-mock-bar span{ width:9px; height:9px; border-radius:50%; background:#3d372e; }
.reg-mock-app{ display:grid; grid-template-columns:132px minmax(0,1fr); min-height:300px; }
.reg-mock-nav{ background:#1a1712; border-right:1px solid var(--line-dark); padding:14px 10px; display:flex; flex-direction:column; gap:4px; }
.reg-mock-logo{ font-family:'Archivo'; font-weight:800; font-size:13px; color:var(--paper-text); padding:2px 8px 12px; letter-spacing:-.01em; }
.reg-mock-logo b{ color:var(--accent-warm); }
.reg-mock-nav-item{
  display:flex; align-items:center; gap:8px; padding:7px 8px; border-radius:7px; font-size:11.5px; font-weight:600; color:var(--paper-text-muted);
}
.reg-mock-nav-item svg{ width:13px; height:13px; flex-shrink:0; }
.reg-mock-nav-item.is-active{ background:rgba(227,164,104,.14); color:var(--paper-text); }
.reg-mock-main{ padding:16px 18px; display:flex; flex-direction:column; gap:14px; min-width:0; }
.reg-mock-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
.reg-mock-event{ font-family:'Archivo'; font-weight:700; font-size:15px; color:var(--paper-text); }
.reg-mock-sub{ font-size:11px; color:var(--paper-text-muted); margin-top:4px; display:flex; align-items:center; gap:5px; flex-wrap:wrap; }
.reg-mock-badge{ background:rgba(120,190,120,.16); color:#9fd39f; font-size:9.5px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; padding:2px 7px; border-radius:20px; }
.reg-mock-days{ text-align:right; display:flex; flex-direction:column; line-height:1; flex-shrink:0; }
.reg-mock-days b{ font-family:'Archivo'; font-size:26px; font-weight:800; color:var(--accent-warm); }
.reg-mock-days span{ font-size:10px; color:var(--paper-text-muted); margin-top:3px; }
.reg-mock-kpis{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.reg-mock-kpi{ background:#2a2620; border:1px solid var(--line-dark); border-radius:9px; padding:9px 11px; display:flex; flex-direction:column; gap:3px; min-width:0; }
.reg-mock-kpi span{ font-size:9.5px; text-transform:uppercase; letter-spacing:.06em; font-weight:700; color:var(--paper-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.reg-mock-kpi b{ font-family:'Archivo'; font-size:15px; font-weight:800; color:var(--paper-text); font-variant-numeric:tabular-nums; }
.reg-mock-progress-label{ display:flex; justify-content:space-between; font-size:11px; color:var(--paper-text-muted); margin-bottom:6px; }
.reg-mock-progress-label b{ color:var(--paper-text); }
.reg-mock-progress-bar{ height:6px; border-radius:6px; background:#2f2a23; overflow:hidden; }
.reg-mock-progress-bar i{ display:block; height:100%; border-radius:6px; background:linear-gradient(90deg,var(--accent-warm),#c98a54); }
.reg-mock-timeline{ display:flex; align-items:flex-start; position:relative; }
.reg-mock-timeline::before{ content:""; position:absolute; left:10%; right:10%; top:5px; height:2px; background:#3a342b; }
.reg-mock-step{ flex:1; display:flex; flex-direction:column; align-items:center; gap:6px; position:relative; min-width:0; }
.reg-mock-step i{ width:12px; height:12px; border-radius:50%; background:#2a2620; border:2px solid #4a4437; box-sizing:border-box; }
.reg-mock-step.is-done i{ background:var(--accent-warm); border-color:var(--accent-warm); }
.reg-mock-step.is-active i{ border-color:var(--accent-warm); box-shadow:0 0 0 3px rgba(227,164,104,.22); }
.reg-mock-step span{ font-size:10px; color:var(--paper-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }
.reg-mock-step.is-active span, .reg-mock-step.is-done span{ color:var(--paper-text); }
.reg-mock-list{ background:#2a2620; border:1px solid var(--line-dark); border-radius:9px; padding:10px 12px; display:flex; flex-direction:column; gap:7px; }
.reg-mock-list-title{ font-size:9.5px; text-transform:uppercase; letter-spacing:.06em; font-weight:800; color:var(--paper-text-muted); }
.reg-mock-row{ display:flex; align-items:center; gap:8px; font-size:11.5px; color:var(--paper-text); min-width:0; }
.reg-mock-row svg{ width:13px; height:13px; color:var(--paper-text-muted); flex-shrink:0; }
.reg-mock-row span{ flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.reg-mock-row em{ font-style:normal; font-size:9.5px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; padding:2px 7px; border-radius:20px; background:rgba(255,255,255,.06); color:var(--paper-text-muted); white-space:nowrap; }
.reg-mock-row em.is-warn{ background:rgba(227,164,104,.16); color:var(--accent-warm); }

/* formulár */
.reg-form-wrap{ max-width:440px; justify-self:end; width:100%; }
.reg-form-title{ font-size:20px; margin:0 0 6px; }
.reg-form-desc{ font-size:13.5px; color:var(--text-muted); margin:0 0 22px; }
.reg-form-row{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.reg-form-wrap .checkbox-field{ text-transform:none; letter-spacing:0; font-weight:500; font-size:13.5px; margin:2px 0 6px; }
.reg-submit{ width:100%; justify-content:center; }
.reg-trust{ margin:14px 0 0; font-size:12px; color:var(--text-muted); text-align:center; max-width:none; }

@media (max-width:960px){
  .portal-auth-register{ grid-template-columns:1fr; gap:36px; max-width:560px; }
  .reg-form-wrap{ justify-self:stretch; max-width:none; }
  .reg-pitch{ display:contents; }
  .reg-pitch > *{ order:0; }
  .reg-mock{ order:2; }
  .reg-form-wrap{ order:1; }
  .reg-features{ margin-bottom:0; }
}
@media (max-width:520px){
  .reg-features{ grid-template-columns:1fr; }
  .reg-form-row{ grid-template-columns:1fr; }
  .reg-mock-app{ grid-template-columns:1fr; }
  .reg-mock-nav{ flex-direction:row; flex-wrap:wrap; border-right:0; border-bottom:1px solid var(--line-dark); }
  .reg-mock-logo{ width:100%; padding-bottom:6px; }
}

/* registrácia tvorcu / manažéra (tvorca/registracia.php) — širšia karta, prepínač typu účtu */
.creator-register-wrap{ max-width:600px; }
.reg-form-wrap .creator-register-switch{ margin-bottom:18px; }
.creator-register-switch{ margin-bottom:22px; }
.creator-register-switch .chip{ flex:1; text-align:center; }
.creator-register-switch .chip span{ display:block; padding:10px 14px; border-radius:999px; border:1.5px solid var(--line); font-size:13.5px; font-weight:700; color:var(--text-muted); }
.creator-register-switch .chip.is-active span{ background:var(--accent); border-color:var(--accent); color:var(--accent-ink); }
.creator-register-switch .chip:hover span{ border-color:var(--accent); }
.creator-register-switch .chip span::before{ display:none; }
.creator-register-switch .chip span{ padding-left:14px; }
.creator-drawer-register{ display:flex; flex-direction:column; gap:8px; align-items:center; }
/* ---------- Moje eventy: zoznam ---------- */
.portal-list{ display:flex; flex-direction:column; gap:10px; }
.portal-list-row{
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  background:var(--paper-2); border:1.5px solid var(--line); border-radius:var(--radius);
  padding:18px 20px; transition:border-color .15s ease, background .15s ease;
}
.portal-list-row:hover{ border-color:var(--accent); background:var(--paper); }
.portal-list-row-main{ display:flex; flex-direction:column; gap:5px; min-width:0; }
.portal-list-row-title{ font-family:'Archivo'; font-weight:700; font-size:15.5px; }
.portal-list-row-meta{ display:flex; gap:14px; font-size:12.5px; color:var(--text-muted); flex-wrap:wrap; }

/* ---------- Moje eventy: detail ---------- */
.portal-event-head{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-bottom:24px; }
.portal-event-head h2{ font-size:clamp(20px,2.6vw,25px); margin:0; }
.portal-event-meta-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:16px; max-width:720px; }
.portal-event-meta-item{
  background:var(--paper-2); border:1.5px solid var(--line); border-radius:var(--radius);
  padding:16px 18px; display:flex; flex-direction:column; gap:6px;
}
.portal-event-meta-label{ font-size:11px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--text-muted); }
.portal-event-meta-value{ font-size:14.5px; font-weight:600; }
.portal-event-notes{ font-size:14px; color:var(--text-muted); }
.portal-event-notes p:last-child{ margin-bottom:0; }

/* ---------- Event subnav (hlavička eventu) — rovnaký vizuálny jazyk ako admin .ee-subnav
   (admin/assets/admin.css), zoskupené štítkované riadky s ikonovými pilulkami namiesto plochého
   radu okrúhlych odznakov. Sedí priamo pod .portal-event-head vo vnútri toho istého .portal-panel,
   presne ako v admine .ee-subnav sedí pod .ee-hero vo vnútri .admin-panel. ---------- */
.portal-event-subnav{ display:flex; flex-wrap:wrap; gap:22px; padding:14px 18px; background:var(--paper-2); border-top:1.5px solid var(--line); }
.portal-subnav-group{ display:flex; flex-direction:column; gap:7px; min-width:0; }
.portal-subnav-label{ font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.07em; color:var(--text-muted); }
.portal-subnav-links{ display:flex; gap:6px; flex-wrap:wrap; }
.portal-subnav-links a{
  display:inline-flex; align-items:center; gap:6px; padding:9px 13px; min-height:40px; border-radius:6px;
  border:1.5px solid var(--line); background:var(--surface); color:var(--text); font-size:12.5px; font-weight:600;
  white-space:nowrap; text-decoration:none;
}
.portal-subnav-links a:hover{ border-color:var(--accent); color:var(--accent-2); }
.portal-subnav-links a svg{ width:14px; height:14px; flex-shrink:0; }
.portal-subnav-links a.is-active{ background:var(--accent); border-color:var(--accent); color:var(--accent-ink); }
@media (max-width:640px){
  .portal-event-subnav{ gap:16px; padding:14px 16px; }
  .portal-subnav-links a{ flex:1 1 auto; justify-content:center; }
}
@media (max-width:420px){
  .portal-subnav-links{ flex-direction:column; }
  .portal-subnav-links a{ width:100%; }
}

/* ---------- Dokumenty ---------- */
.portal-doc-list{ display:flex; flex-direction:column; gap:8px; margin-bottom:20px; }
.portal-doc-row{
  display:flex; align-items:center; gap:12px; background:var(--paper-2); border:1.5px solid var(--line);
  border-radius:var(--radius); padding:13px 16px; transition:border-color .15s ease, background .15s ease;
}
.portal-doc-row:hover{ border-color:var(--accent); background:var(--paper); }
.portal-doc-row svg{ width:18px; height:18px; color:var(--accent-2); flex-shrink:0; }
.portal-doc-name{ font-weight:700; font-size:13.5px; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.portal-doc-event{ font-size:12px; color:var(--text-muted); flex-shrink:0; }
.portal-doc-date{ font-size:12px; color:var(--text-muted); flex-shrink:0; }
.portal-doc-empty{ color:var(--text-muted); font-size:13.5px; margin-bottom:20px; }
.portal-doc-upload{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; padding-top:16px; border-top:1.5px solid var(--line); }
.portal-doc-upload input[type="file"]{ font-size:13px; }

/* ---------- Dokumenty — súhrnný pohľad naprieč eventmi (portal/dokumenty) ---------- */
.portal-doc-pending-panel{
  background:var(--paper-2); border:1.5px solid var(--accent); border-radius:var(--radius);
  padding:18px 20px; margin-bottom:24px;
}
.portal-doc-pending-panel h3{ font-size:14.5px; margin:0 0 12px; }
.portal-doc-pending-panel .portal-list-row:hover{ border-color:var(--accent); }
.portal-doc-event-group{ border-top:1.5px solid var(--line); padding-top:18px; margin-top:18px; }
.portal-doc-event-group:first-of-type{ border-top:none; padding-top:0; margin-top:0; }
.portal-doc-event-group h3{ font-size:14px; margin-bottom:12px; }
.portal-doc-event-group h3 a{ color:var(--text); }
.portal-doc-event-group h3 a:hover{ color:var(--accent-2); }

/* ---------- CS-35 — "prepnuté na tvorcu" banner (agentúra/manažér v tvorca/) ---------- */
/* Zámerne AMBER, nie var(--accent) — stránky obsahu (napr. Prehľad) často majú vlastný accent-farebný
   hero panel hneď pod topbarom, takže banner v tej istej farbe by s ním vizuálne splynul. Amber je
   univerzálne rozpoznateľný "systémový" tón pre "pracujete v cudzom mene" stav, nezávislý od
   accent farby ktorejkoľvek stránky. */
.portal-acting-as-banner{
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
  background:#f0b429; color:#3d2b00; padding:10px 20px; font-size:13px; font-weight:600;
  box-shadow:0 2px 6px rgba(0,0,0,.15); position:relative; z-index:2;
}
.portal-acting-as-banner svg{ width:16px; height:16px; vertical-align:-3px; margin-right:4px; flex-shrink:0; }
.portal-acting-as-banner strong{ font-weight:800; }
.portal-acting-as-banner form{ margin:0; }
.portal-acting-as-banner button{
  background:rgba(61,43,0,.12); color:#3d2b00; border:1.5px solid rgba(61,43,0,.4);
  border-radius:var(--radius-sm, 6px); padding:5px 12px; font-size:12.5px; font-weight:700; cursor:pointer;
}
.portal-acting-as-banner button:hover{ background:rgba(61,43,0,.22); }

.portal-quote-items{ overflow-x:auto; }
.portal-quote-table{ width:100%; border-collapse:collapse; font-size:13.5px; }
.portal-quote-table th{
  text-align:left; font-size:11px; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
  color:var(--text-muted); padding:0 10px 10px; border-bottom:1.5px solid var(--line);
}
.portal-quote-table td{ padding:11px 10px; border-bottom:1px solid var(--line); vertical-align:top; }
.portal-quote-table th:not(:first-child), .portal-quote-table td:not(:first-child){ text-align:right; white-space:nowrap; }
.portal-quote-table tfoot td{ border-bottom:none; border-top:1.5px solid var(--line); font-weight:800; padding-top:14px; }

.portal-quote-decide-form textarea{
  width:100%; background:var(--paper); border:1.5px solid var(--line); border-radius:7px;
  padding:11px 12px; color:var(--text); resize:vertical; font-family:inherit; font-size:13.5px; margin-bottom:14px;
}
.portal-quote-decide-actions{ display:flex; gap:12px; flex-wrap:wrap; }

/* ---------- Creators/Influenceri — dáta na prvom mieste, "kde je pridelený" len ako drobný footer ---------- */
.portal-creator-list{ display:flex; flex-direction:column; gap:12px; }
.portal-creator-card{
  background:var(--paper-2); border:1.5px solid var(--line); border-radius:var(--radius);
  padding:16px 18px; display:flex; flex-direction:column; gap:10px;
}
.portal-creator-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.portal-creator-identity{ display:flex; align-items:center; gap:12px; }
.portal-creator-avatar{ width:44px; height:44px; border-radius:50%; object-fit:cover; flex-shrink:0; }
.portal-creator-avatar-fallback{ display:flex; align-items:center; justify-content:center; background:var(--accent); color:var(--accent-ink); font-family:'Archivo'; font-weight:800; font-size:16px; }
.portal-creator-name{ font-family:'Archivo'; font-weight:700; font-size:14.5px; display:block; }
.portal-creator-badges{ display:flex; gap:6px; margin-top:3px; flex-wrap:wrap; }
.portal-creator-reach{ text-align:right; }
.portal-creator-reach-num{ display:block; font-family:'Archivo'; font-weight:900; font-size:20px; color:var(--accent); line-height:1; font-variant-numeric:tabular-nums; }
.portal-creator-reach-label{ font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--text-muted); }
.portal-creator-event{ font-size:11.5px; font-weight:700; letter-spacing:.02em; color:var(--accent-2); align-self:flex-start; }
.portal-creator-profiles{ display:flex; gap:8px; flex-wrap:wrap; }
.portal-creator-profile{
  display:flex; align-items:center; gap:5px; font-size:12px; color:var(--text-muted);
  background:var(--paper); border:1px solid var(--line); border-radius:20px; padding:4px 10px; text-decoration:none;
}
a.portal-creator-profile:hover{ border-color:var(--accent); color:var(--text); }
.portal-creator-profile-platform{ font-weight:700; color:var(--text); }
.portal-creator-profile-handle{ color:var(--text-muted); }
.portal-creator-verified{ color:var(--accent); font-weight:700; }
.portal-creator-profile strong{ font-variant-numeric:tabular-nums; color:var(--text); }
.portal-creator-tags{ display:flex; gap:6px; flex-wrap:wrap; }
.portal-creator-tag{ font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--text-muted); background:var(--paper); border:1px solid var(--line); border-radius:4px; padding:2px 7px; }
.portal-creator-summary{ font-size:13px; color:var(--text-muted); margin:4px 0 2px; max-width:none; }
a.portal-creator-card{ transition:border-color .15s ease, background .15s ease; }
a.portal-creator-card:hover{ border-color:var(--accent); background:var(--paper); }

/* ---------- CS-30 — Klientská kampaň: fotka, štruktúrovaný brief, pravidlá ---------- */
.campaign-hero{ display:flex; gap:22px; align-items:flex-start; flex-wrap:wrap; margin-bottom:20px; }
.campaign-hero-photo{
  width:140px; height:140px; border-radius:var(--radius); overflow:hidden; flex-shrink:0;
  background:var(--paper-2); border:1.5px solid var(--line); display:flex; align-items:center; justify-content:center;
}
.campaign-hero-photo img{ width:100%; height:100%; object-fit:cover; }
.campaign-hero-photo-fallback{ font-size:36px; opacity:.4; }
.campaign-hero-info{ flex:1; min-width:220px; }
.campaign-hero-meta{ display:flex; flex-wrap:wrap; gap:8px; margin:10px 0 4px; }
.campaign-status-row{ display:flex; gap:10px; flex-wrap:wrap; margin-top:6px; }
.campaign-section{
  border-top:1.5px solid var(--line); padding-top:18px; margin-top:18px; max-width:72ch;
}
.campaign-section h3{ font-size:15px; margin-bottom:10px; }
.campaign-section p{ font-size:13.5px; color:var(--text-muted); line-height:1.6; }
.campaign-terms-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:16px; }
.campaign-terms-label{ display:block; font-size:11px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--accent-2); margin-bottom:4px; }
.campaign-terms-grid p{ margin:0; }

/* ---------- Nový event: krok po kroku ---------- */
.portal-wizard-steps{ display:flex; gap:18px; flex-wrap:wrap; margin-bottom:20px; }
.portal-wizard-step{ font-size:12px; font-weight:700; letter-spacing:.03em; color:var(--text-muted); }
.portal-wizard-step.is-active{ color:var(--accent-2); }
.portal-wizard-step.is-done{ color:var(--text); }

/* ---------- Plán eventu (admin plánovací wizard, klientsky viditeľný výstup) ---------- */
.portal-wizard-plan{ display:flex; flex-direction:column; gap:16px; }
.portal-wizard-cat h4{ font-family:'Archivo'; font-size:14px; margin-bottom:10px; }
.portal-wizard-item-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:9px; }
.portal-wizard-item{ display:flex; align-items:flex-start; gap:10px; }
.portal-wizard-item svg{ width:16px; height:16px; flex-shrink:0; margin-top:2px; color:var(--success); }
.portal-wizard-item-icon{ flex-shrink:0; margin-top:1px; line-height:1; }
.portal-wizard-item.is-answered .portal-wizard-item-icon{ color:var(--success); }
.portal-wizard-item.is-pending .portal-wizard-item-icon{ color:var(--text-muted); }
.portal-wizard-item.is-pending .portal-wizard-item-label{ color:var(--text-muted); font-weight:400; }
.portal-wizard-item-body{ display:flex; flex-direction:column; gap:1px; }
.portal-wizard-item-label{ font-size:13.5px; font-weight:600; }
.portal-wizard-item-value{ font-size:12.5px; color:var(--accent-2); font-weight:600; }
.portal-wizard-item-note{ font-size:12px; color:var(--text-muted); }

/* ---------- Správy (klient↔agentúra) ---------- */
.portal-msg-thread{ display:flex; flex-direction:column; gap:14px; margin-bottom:24px; }
.portal-msg-row{ display:flex; }
.portal-msg-row.is-own{ justify-content:flex-end; }
.portal-msg-row.is-agency{ justify-content:flex-start; }
.portal-msg-bubble{
  max-width:80%; background:var(--paper-2); border:1.5px solid var(--line); border-radius:var(--radius);
  padding:12px 15px; display:flex; flex-direction:column; gap:6px;
}
.portal-msg-row.is-own .portal-msg-bubble{ background:var(--accent); border-color:var(--accent); color:var(--accent-ink); }
.portal-msg-meta{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.portal-msg-sender{ font-family:'Archivo'; font-weight:700; font-size:12.5px; }
.portal-msg-date{ font-size:11px; color:var(--text-muted); }
.portal-msg-row.is-own .portal-msg-date{ color:rgba(43,29,13,.65); }
.portal-msg-body{ font-size:13.5px; margin:0; white-space:pre-wrap; word-break:break-word; }
.portal-msg-attachment{
  display:inline-flex; align-items:center; gap:8px; font-size:12.5px; font-weight:700;
  padding:7px 10px; border-radius:7px; background:var(--paper); border:1.5px solid var(--line); width:fit-content;
}
.portal-msg-row.is-own .portal-msg-attachment{ background:rgba(240,238,233,.35); border-color:rgba(43,29,13,.2); }
.portal-msg-attachment svg{ width:15px; height:15px; flex-shrink:0; }

.portal-msg-compose{ border-top:1.5px solid var(--line); padding-top:16px; display:flex; flex-direction:column; gap:10px; }
.portal-msg-compose textarea{
  width:100%; background:var(--paper); border:1.5px solid var(--line); border-radius:7px;
  padding:11px 12px; color:var(--text); resize:vertical; font-family:inherit; font-size:13.5px;
}
.portal-msg-compose-row{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
.portal-msg-compose-row input[type="file"]{ font-size:13px; }
.portal-msg-hint{ font-size:11.5px; color:var(--text-muted); flex:1 1 auto; min-width:160px; }

.portal-msg-tabs{ display:flex; gap:6px; flex-wrap:wrap; margin-bottom:18px; border-bottom:1.5px solid var(--line); padding-bottom:14px; }
.portal-msg-tab{ padding:7px 13px; border-radius:6px; border:1px solid var(--line); background:var(--paper); color:var(--text-muted); font-weight:700; font-size:12.5px; cursor:pointer; }
.portal-msg-tab.is-active{ background:var(--accent); border-color:var(--accent); color:var(--accent-ink); }
.portal-msg-panel{ display:none; }
.portal-msg-panel.is-active{ display:block; }
.portal-msg-attachments-list{ display:flex; flex-direction:column; gap:8px; margin-bottom:20px; }
.portal-msg-attachments-row{
  display:flex; align-items:center; gap:12px; padding:11px 14px; border:1.5px solid var(--line);
  border-radius:var(--radius); background:var(--paper-2); text-decoration:none; color:var(--text);
}
.portal-msg-attachments-row:hover{ border-color:var(--accent); background:var(--paper); }
.portal-msg-attachments-row svg{ width:18px; height:18px; color:var(--accent-2); flex-shrink:0; }
.portal-msg-attachments-name{ font-weight:700; font-size:13.5px; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.portal-msg-attachments-meta{ font-size:12px; color:var(--text-muted); flex-shrink:0; }

/* ---------- Vlákna komentárov (kontextové, per záznam) ----------
   Zámerne VLASTNÉ triedy (nie .portal-msg-*) — assets/js/portal.js's živý poll vlákna správ sa
   aktivuje na základe prítomnosti .portal-msg-thread/.portal-msg-compose kdekoľvek na stránke;
   rovnaké triedy tu by omylom naštartovali poll na portal/api/spravy-nove (iný dátový zdroj). */
.portal-comment-thread{ display:flex; flex-direction:column; gap:14px; margin-bottom:24px; }
.portal-comment-row{ display:flex; }
.portal-comment-row.is-own{ justify-content:flex-end; }
.portal-comment-row.is-agency{ justify-content:flex-start; }
.portal-comment-bubble{
  max-width:80%; background:var(--paper-2); border:1.5px solid var(--line); border-radius:var(--radius);
  padding:12px 15px; display:flex; flex-direction:column; gap:6px;
}
.portal-comment-row.is-own .portal-comment-bubble{ background:var(--accent); border-color:var(--accent); color:var(--accent-ink); }
.portal-comment-meta{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.portal-comment-sender{ font-family:'Archivo'; font-weight:700; font-size:12.5px; }
.portal-comment-date{ font-size:11px; color:var(--text-muted); }
.portal-comment-row.is-own .portal-comment-date{ color:rgba(43,29,13,.65); }
.portal-comment-body{ font-size:13.5px; margin:0; white-space:pre-wrap; word-break:break-word; }
.portal-comment-compose{ border-top:1.5px solid var(--line); padding-top:16px; }
.portal-comment-compose textarea{
  width:100%; background:var(--paper); border:1.5px solid var(--line); border-radius:7px;
  padding:11px 12px; color:var(--text); resize:vertical; font-family:inherit; font-size:13.5px;
}

/* ---------- Hostia (zoznam hostí / check-in) ---------- */
.portal-guest-export-row{ display:flex; gap:10px; flex-wrap:wrap; margin-bottom:18px; }
.portal-guest-counter{
  font-size:15px; font-weight:800; color:var(--text); background:var(--paper-2);
  border:1.5px solid var(--line); border-radius:var(--radius); padding:12px 16px; margin-bottom:14px; text-align:center;
}
.portal-guest-search-row{ display:flex; flex-direction:column; gap:10px; margin-bottom:14px; }
.portal-guest-search-input{
  width:100%; box-sizing:border-box; font-size:16px; padding:14px 16px; border-radius:var(--radius);
  border:1.5px solid var(--line); background:var(--paper); color:var(--text);
}
.portal-guest-search-input:focus{ outline:none; border-color:var(--accent); }
.portal-guest-scan-btn{ width:100%; }

.portal-guest-banner{
  padding:14px 16px; border-radius:var(--radius); margin-bottom:14px; font-size:14.5px; font-weight:700; text-align:center; border:1.5px solid;
}
.portal-guest-banner.success{ color:#1f7a4d; background:#eef6f0; border-color:#bfe0cb; }
.portal-guest-banner.already{ color:var(--warning); background:var(--color-warning-bg); border-color:#e6c98a; }
.portal-guest-banner.notfound{ color:var(--error); background:#fdeeea; border-color:#f3c4b7; }
.portal-guest-banner.error{ color:var(--error); background:#fdeeea; border-color:#f3c4b7; }

.portal-guest-list{ display:flex; flex-direction:column; gap:10px; }
.portal-guest-row{
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
  padding:14px; border:1.5px solid var(--line); border-radius:var(--radius); background:var(--paper-2);
}
.portal-guest-row.is-checked-in{ border-color:#8fbf9f; background:#eef6f0; }
.portal-guest-row-info{ display:flex; flex-direction:column; gap:6px; min-width:0; flex:1 1 200px; }
.portal-guest-row-name{ font-size:15.5px; font-weight:800; color:var(--text); word-break:break-word; }
.portal-guest-row-meta{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.portal-guest-badge{ display:inline-block; padding:3px 10px; border-radius:6px; font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.03em; }
.portal-guest-plusones{ font-size:12px; color:var(--text-muted); font-weight:700; }
.portal-guest-row-status{ font-size:12.5px; color:#1f7a4d; font-weight:700; }
.portal-guest-row-actions{ flex:0 0 auto; max-width:100%; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.portal-guest-btn{ font-size:13.5px; font-weight:800; padding:11px 16px; border-radius:var(--radius); border:1.5px solid; cursor:pointer; white-space:nowrap; }
.portal-guest-btn-arrive{ background:var(--accent); border-color:var(--accent); color:var(--accent-ink); }
.portal-guest-btn-arrive:hover{ background:var(--accent-2); border-color:var(--accent-2); }
.portal-guest-btn-undo{ background:var(--paper); border-color:var(--line); color:var(--text-muted); font-size:12px; padding:8px 12px; }
.portal-guest-btn-undo:hover{ border-color:var(--error); color:var(--error); }
.portal-guest-btn[disabled]{ opacity:.55; cursor:wait; }
.portal-guest-btn-invite{ font-size:12px; color:var(--accent-2); font-weight:700; text-decoration:underline; white-space:nowrap; }

.portal-guest-camera-modal{ position:fixed; inset:0; background:rgba(20,18,15,.92); z-index:200; align-items:center; justify-content:center; padding:16px; }
.portal-guest-camera-modal[hidden]{ display:none; }
.portal-guest-camera-modal:not([hidden]){ display:flex; }
.portal-guest-camera-inner{ width:100%; max-width:480px; display:flex; flex-direction:column; gap:12px; align-items:center; }
.portal-guest-video{ width:100%; max-height:70vh; border-radius:var(--radius); background:#000; }
.portal-guest-camera-status{ color:var(--paper-text); font-size:14px; text-align:center; min-height:20px; }

.portal-guest-bulk-details summary{ cursor:pointer; font-weight:700; font-size:13.5px; color:var(--accent-2); }
.portal-guest-bulk-details textarea{
  width:100%; background:var(--paper); border:1.5px solid var(--line); border-radius:var(--radius);
  padding:12px 14px; color:var(--text); font-family:inherit; font-size:13.5px; margin:10px 0 14px; resize:vertical;
}

@media (min-width:640px){
  .portal-guest-search-row{ flex-direction:row; }
  .portal-guest-search-input{ flex:1 1 auto; }
  .portal-guest-scan-btn{ width:auto; flex:0 0 auto; }
}

.portal-guest-rsvp-badge{ display:inline-block; padding:3px 10px; border-radius:6px; font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.03em; }

.portal-meta{ font-size:12.5px; color:var(--text-muted); }
.portal-guest-hint{ font-size:12px; color:var(--text-muted); margin:6px 0 12px; }

.portal-guest-tabs{ display:flex; gap:6px; flex-wrap:wrap; margin-bottom:20px; border-bottom:1.5px solid var(--line); padding-bottom:14px; }
.portal-guest-tab{ padding:9px 16px; border-radius:6px; border:1px solid var(--line); background:var(--paper); color:var(--text-muted); font-weight:700; font-size:13px; cursor:pointer; }
.portal-guest-tab.is-active{ background:var(--accent); border-color:var(--accent); color:var(--accent-ink); }
.portal-guest-panel{ display:none; }
.portal-guest-panel.is-active{ display:block; }

.portal-guest-partner-row{ display:flex; flex-wrap:wrap; gap:12px; margin-bottom:16px; }
.portal-guest-partner-item{ position:relative; width:96px; height:76px; border:1.5px solid var(--line); border-radius:8px; background:#fff; display:flex; align-items:center; justify-content:center; padding:6px; }
.portal-guest-partner-item img{ max-width:100%; max-height:100%; object-fit:contain; }
.portal-guest-partner-item form{ position:absolute; top:-8px; right:-8px; margin:0; }
.portal-guest-partner-del{ width:22px; height:22px; border-radius:50%; border:1.5px solid var(--line); background:var(--paper); color:var(--text-muted); display:flex; align-items:center; justify-content:center; cursor:pointer; font-size:12px; line-height:1; padding:0; }
.portal-guest-partner-del:hover{ border-color:var(--error); color:var(--error); }

/* ---------- Dotazník spokojnosti (portal/eventy/{id}/hodnotenie) ---------- */
.pf-group{ margin-bottom:20px; }
.pf-group:last-of-type{ margin-bottom:22px; }
.pf-q{ display:block; font-size:13.5px; font-weight:700; margin-bottom:10px; }
.pf-stars{ display:flex; flex-direction:row-reverse; justify-content:flex-start; gap:4px; }
.pf-stars input{ position:absolute; opacity:0; pointer-events:none; }
.pf-stars label{ font-size:30px; color:var(--line); cursor:pointer; line-height:1; }
.pf-stars label:hover, .pf-stars label:hover ~ label,
.pf-stars input:checked ~ label{ color:var(--accent); }
.pf-recommend{ display:flex; gap:10px; max-width:280px; }
.pf-recommend label{ flex:1; text-align:center; padding:10px; border:1.5px solid var(--line); border-radius:7px; font-size:13px; font-weight:700; cursor:pointer; }
.pf-recommend input{ position:absolute; opacity:0; pointer-events:none; }
.pf-recommend input:checked + label{ background:var(--accent); border-color:var(--accent); color:var(--accent-ink); }
.pf-checkbox{ display:flex; align-items:flex-start; gap:8px; font-size:12.5px; color:var(--text-muted); line-height:1.5; cursor:pointer; }
.pf-checkbox input{ margin-top:3px; }

/* ---------- Živý rozpočtový prehľad (konkurenčná analýza — medzi 4 skúmanými globálnymi lídrami
   event-tech kategórie to natívne rieši len Cvent). Zdieľané medzi portal-dashboard.php (hero karta
   primárneho eventu) a portal-event-detail.php (plný pohľad na jeden konkrétny event) — preto tu
   v spoločnom portal.css, nie v page-local <style> bloku. Dve vrstvené výplne v jednom pruhu:
   svetlejšia po "vyfakturované", plná po "zaplatené" — zaplatené je vždy podmnožina vyfakturovaného,
   preto sa vrstvia (position:absolute + width%), nie skladajú vedľa seba. ---------- */
.pd-budget-wrap{ margin-bottom:22px; }
.pd-budget-top{ display:flex; justify-content:space-between; align-items:baseline; font-size:13px; color:var(--text-muted); margin-bottom:6px; }
.pd-budget-top strong{ color:var(--text); font-size:14px; }
.pd-budget-top .pd-budget-over{ color:var(--error); font-weight:700; }
.pd-budget-bar{ height:10px; background:var(--line); border-radius:20px; overflow:hidden; position:relative; }
.pd-budget-fill-invoiced{ position:absolute; inset:0; height:100%; background:var(--accent); opacity:.4; border-radius:20px; transition:width .3s ease; }
.pd-budget-fill-paid{ position:absolute; inset:0; height:100%; background:var(--accent); border-radius:20px; transition:width .3s ease; }
.pd-budget-stats{ display:flex; gap:22px; flex-wrap:wrap; margin-top:12px; }
.pd-budget-stat{ font-size:12px; color:var(--text-muted); }
.pd-budget-stat strong{ display:block; font-size:16px; color:var(--text); font-family:'Archivo'; font-weight:700; }
.pd-budget-legend{ display:flex; gap:14px; flex-wrap:wrap; margin-top:8px; font-size:11.5px; color:var(--text-muted); }
.pd-budget-legend span{ display:inline-flex; align-items:center; gap:5px; }
.pd-budget-legend i{ width:9px; height:9px; border-radius:50%; display:inline-block; background:var(--accent); }
.pd-budget-legend i.faded{ opacity:.4; }
.reg-how{ margin:-10px 0 22px; }
.reg-how .text-link{ display:inline-flex; align-items:center; gap:8px; font-weight:700; font-size:14px; letter-spacing:.03em; color:var(--paper-text); border-bottom:1.5px solid var(--accent); padding-bottom:3px; }

/* ---------- E-shop v2 — editor a správa (tvorca/eshop-*.php, portál) ---------- */
.eshop-editor-top{ display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:16px; flex-wrap:wrap; }
.eshop-editor-actions{ display:flex; gap:8px; }
.eshop-editor-grid{ display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:20px; align-items:start; }
.eshop-editor-main > .portal-panel, .eshop-editor-side > .portal-panel{ margin-bottom:20px; }
.eshop-fields{ display:grid; gap:14px; }
.eshop-fields label{ display:block; font-size:13px; font-weight:700; margin-bottom:4px; }
.eshop-row{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.eshop-row--3{ grid-template-columns:1fr 1fr 1fr; }
.eshop-check{ display:flex!important; gap:8px; align-items:center; font-weight:500!important; font-size:14px!important; }
.eshop-gallery{ display:flex; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.eshop-img{ position:relative; width:110px; height:110px; border-radius:10px; overflow:hidden; border:1.5px solid var(--line); cursor:grab; background:var(--paper); }
.eshop-img img{ width:100%; height:100%; object-fit:cover; }
.eshop-img-main{ position:absolute; left:6px; bottom:6px; font-size:10px; font-weight:800; background:var(--accent); color:#fff; padding:2px 7px; border-radius:999px; }
.eshop-img-btn{ position:absolute; top:6px; right:6px; width:24px; height:24px; border-radius:50%; border:0; background:var(--surface); color:var(--text); cursor:pointer; font-size:13px; line-height:1; box-shadow:0 1px 4px rgba(0,0,0,.25); }
.eshop-img-btn[data-primary]{ right:auto; left:6px; }
.eshop-img-del{ color:#c0392b; }
.eshop-upload{ display:block; border:1.5px dashed var(--line); border-radius:10px; padding:16px; text-align:center; cursor:pointer; font-size:14px; color:var(--text-muted); }
.eshop-upload input{ display:none; }
.eshop-option{ display:grid; grid-template-columns:200px 1fr auto; gap:8px; margin-bottom:8px; }
.eshop-variants td input, .eshop-variants td select{ padding:6px 8px; font-size:13px; }
/* Zoznam produktov (v1.89.0). Fotka je v bunke s názvom a má pevnú stopu — v samostatnom stĺpci ju
   tabuľka pri trinástich stĺpcoch stlačila na pár pixelov a vyzeralo to, že produkt fotku nemá. */
.eshop-prod-cell{ display:flex; align-items:center; gap:12px; min-width:0; }
.eshop-prod-cell-text{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.eshop-prod-name{ font-weight:700; line-height:1.25; }
.eshop-list-thumb{ flex:0 0 56px; width:56px; height:56px; border-radius:10px; overflow:hidden; background:var(--surface-2, rgba(0,0,0,.04)); border:1px solid var(--line); display:inline-flex; align-items:center; justify-content:center; font-size:20px; color:var(--text-muted); text-decoration:none; }
.eshop-list-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.eshop-list-thumb--empty{ border-style:dashed; }
.eshop-list-thumb--empty:hover{ border-color:var(--accent, #a47764); color:var(--accent, #a47764); }
.eshop-col-num{ white-space:nowrap; font-variant-numeric:tabular-nums; }
.eshop-pair{ display:inline-flex; flex-direction:column; line-height:1.2; margin-right:14px; }
.eshop-pair .portal-meta{ font-size:11px; }
.eshop-flags{ display:flex; flex-wrap:wrap; gap:4px; max-width:300px; }
.eshop-row-actions{ display:flex; gap:6px; flex-wrap:nowrap; white-space:nowrap; }
.eshop-filters{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:14px; }
/* KPI dlaždice majú v celom paneli tvorcu jeden vzhľad (v1.82.0): popis hore drobným verzálkovým
   písmom, číslo veľké s tabuľkovými číslicami, doplnok dole. `.eshop-stat` používajú staršie
   obrazovky (objednávky, štatistiky), `.ch-kpi` Creator Home — vyzerajú rovnako zámerne. */
.eshop-stats{ display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:10px; margin-bottom:18px; }
.eshop-stat{ background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:14px 16px; display:flex; flex-direction:column; }
.eshop-stat strong{ order:2; display:block; margin:6px 0 3px; font-size:24px; font-variant-numeric:tabular-nums; }
.eshop-stat span{ order:1; font-size:10.5px; color:var(--text-muted); text-transform:uppercase; letter-spacing:.07em; font-weight:700; }
.eshop-stat em{ order:3; display:block; font-style:normal; font-size:12px; color:var(--text-muted); }
.eshop-tabs{ display:flex; gap:6px; flex-wrap:wrap; margin-bottom:16px; }
.eshop-tabs a{ padding:8px 14px; border-radius:999px; border:1.5px solid var(--line); font-size:13px; font-weight:700; color:var(--text-muted); }
.eshop-tabs a.is-active{ background:var(--text); color:var(--paper); border-color:var(--text); }
.eshop-swatch-preview{ display:inline-block; width:22px; height:22px; border-radius:6px; border:1px solid var(--line); vertical-align:middle; margin-left:6px; }
.eshop-order-grid{ display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:20px; align-items:start; }
.eshop-order-grid > div > .portal-panel{ margin-bottom:20px; }
.eshop-timeline{ list-style:none; padding:0; margin:0; }
.eshop-timeline li{ display:grid; grid-template-columns:110px 1fr; gap:10px; padding:6px 0; border-bottom:1px dashed var(--line); font-size:13px; }
.eshop-timeline time{ color:var(--text-muted); }
.eshop-address{ font-size:14px; line-height:1.5; }
@media (max-width:900px){ .eshop-editor-grid, .eshop-order-grid{ grid-template-columns:1fr; } .eshop-row, .eshop-row--3{ grid-template-columns:1fr; } .eshop-stats{ grid-template-columns:1fr 1fr; } .eshop-option{ grid-template-columns:1fr; } }

/* Zvýraznenia sú prepínače s menovkou — kolieska bez textu si po prvom stĺpci nikto nespojil
   s hlavičkou tabuľky. Zapnuté je plné, vypnuté len obrys. */
.eshop-flag{ padding:3px 9px; border-radius:999px; border:1px solid var(--line); background:transparent; color:var(--text-muted); font-weight:700; font-size:11px; cursor:pointer; line-height:1.6; }
.eshop-flag:hover{ border-color:var(--text-muted); color:var(--text); }
.eshop-flag.is-on{ background:#2e7d32; border-color:#2e7d32; color:#fff; }
.eshop-flag.is-on:hover{ background:#276b2b; color:#fff; }
.eshop-wysiwyg{ border:1.5px solid var(--line); border-radius:10px; overflow:hidden; background:var(--surface); color:var(--text); }
.eshop-wysiwyg-bar{ display:flex; gap:2px; flex-wrap:wrap; padding:6px; border-bottom:1px solid var(--line); background:var(--paper); }
.eshop-wysiwyg-bar button{ min-width:34px; height:30px; padding:0 8px; border:1px solid transparent; border-radius:6px; background:transparent; cursor:pointer; font-size:13px; font-weight:700; color:var(--text); }
.eshop-wysiwyg-bar button:hover{ background:var(--surface); border-color:var(--line); }
.eshop-wysiwyg-sep{ width:1px; background:var(--line); margin:4px 4px; }
.eshop-wysiwyg-area{ min-height:220px; padding:12px 14px; font-size:14.5px; line-height:1.6; outline:0; color:var(--text); background:var(--surface); }
.eshop-wysiwyg-area a{ color:var(--accent); }
.eshop-wysiwyg-area:focus{ box-shadow:inset 0 0 0 2px var(--accent); }
.eshop-wysiwyg-area h2{ font-size:18px; margin:12px 0 6px; } .eshop-wysiwyg-area h3{ font-size:15px; margin:10px 0 4px; } .eshop-wysiwyg-area ul, .eshop-wysiwyg-area ol{ padding-left:22px; }
.eshop-tree-list{ list-style:none; margin:0; padding:0; }
.eshop-tree-list .eshop-tree-list{ padding-left:26px; border-left:2px dashed var(--line); margin-left:14px; }
.eshop-tree-item{ margin:6px 0; }
.eshop-tree-item.is-dragging{ opacity:.4; }
.eshop-tree-row{ display:flex; align-items:center; gap:10px; background:var(--surface); border:1.5px solid var(--line); border-radius:10px; padding:8px 10px; cursor:grab; }
.eshop-tree-row.is-hidden{ opacity:.6; }
.eshop-tree-row.is-over{ border-color:var(--accent); box-shadow:0 -3px 0 0 var(--accent); }
.eshop-tree-row.is-over-child{ border-color:var(--accent); background:color-mix(in srgb, var(--accent) 12%, var(--surface)); }
.eshop-tree-grip{ color:var(--text-muted); letter-spacing:-3px; font-size:14px; }
.eshop-tree-row img{ width:32px; height:32px; border-radius:50%; object-fit:cover; }
.eshop-tree-name{ font-weight:700; flex:1; }
.eshop-tree-name small{ color:var(--text-muted); font-weight:400; }
.eshop-tree-meta{ font-size:12px; color:var(--text-muted); white-space:nowrap; }
.eshop-tree-root{ margin-top:10px; padding:12px; border:2px dashed var(--line); border-radius:10px; text-align:center; color:var(--text-muted); font-size:13px; }
.eshop-tree-root.is-over{ border-color:var(--accent); background:color-mix(in srgb, var(--accent) 12%, var(--surface)); }
.eshop-menu-preview{ list-style:none; padding:0; margin:0; display:flex; gap:18px; flex-wrap:wrap; }
.eshop-menu-preview ul{ list-style:none; padding:6px 0 0 10px; margin:0; border-left:2px solid var(--line); font-size:13px; }
.eshop-menu-preview ul li{ padding:2px 0; color:var(--text-muted); }

/* ---------- Prepínač témy (svetlá / tmavá / automaticky) v topbare portálu a tvorcu ---------- */
.portal-theme-switch{ display:inline-flex; border:1.5px solid var(--line); border-radius:999px; padding:2px; background:var(--surface); margin-right:6px; }
.portal-theme-switch button{ width:32px; height:30px; border:0; border-radius:999px; background:transparent; color:var(--text-muted); cursor:pointer; display:inline-flex; align-items:center; justify-content:center; font-size:12px; font-weight:800; }
.portal-theme-switch button svg{ width:16px; height:16px; }
.portal-theme-switch button[aria-checked="true"]{ background:var(--accent); color:#fff; }
@media (max-width:640px){ .portal-theme-switch{ margin-right:2px; } .portal-theme-switch button{ width:28px; } }
/* v1.44.0 — Creator storefront admin: témy, editor sekcií, bannery, výhody, sociálne, LIVE */
.eshop-themes{ display:grid; grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); gap:12px; }
.eshop-theme{ display:flex; flex-direction:column; gap:6px; padding:12px; border:1.5px solid var(--line); border-radius:12px; cursor:pointer; background:var(--surface); }
.eshop-theme.is-active, .eshop-theme:has(input:checked){ border-color:var(--accent); box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent); }
.eshop-theme input{ position:absolute; opacity:0; pointer-events:none; }
.eshop-theme-swatch{ position:relative; display:block; height:76px; border-radius:8px; background:var(--b); border:1px solid var(--line); overflow:hidden; }
.eshop-theme-swatch-h{ position:absolute; left:10px; top:12px; width:55%; height:10px; border-radius:3px; background:var(--t); }
.eshop-theme-swatch-h::after{ content:""; position:absolute; left:0; top:16px; width:70%; height:6px; border-radius:3px; background:var(--t); opacity:.35; }
.eshop-theme-swatch-btn{ position:absolute; left:10px; bottom:12px; width:44px; height:14px; border-radius:7px; background:var(--a); }
.eshop-themes-actions{ grid-column:1 / -1; display:flex; gap:14px; align-items:center; flex-wrap:wrap; }
.eshop-theme-editor{ display:grid; grid-template-columns:360px minmax(0,1fr); gap:20px; align-items:start; }
.eshop-theme-side details{ border-top:1px solid var(--line); padding:10px 0; } .eshop-theme-side details:first-child{ border-top:0; padding-top:0; }
.eshop-theme-side summary{ cursor:pointer; font-weight:700; font-size:14px; margin-bottom:8px; }
.eshop-theme-side details > div, .eshop-theme-side details > label{ margin-top:10px; }
.eshop-color{ width:100%; height:40px; border:1px solid var(--line); border-radius:8px; padding:2px; background:var(--surface); }
.eshop-theme-actions{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:14px; }
.eshop-theme-preview{ position:sticky; top:16px; }
.eshop-preview-frame{ background:#e9e4de; padding:12px; display:flex; justify-content:center; min-height:520px; }
.eshop-preview-frame iframe{ width:100%; max-width:100%; height:72vh; min-height:520px; border:0; border-radius:10px; background:#fff; transition:width .25s; box-shadow:0 8px 30px rgba(0,0,0,.12); }
.eshop-devices{ display:flex; gap:6px; flex-wrap:wrap; } .eshop-devices .is-active{ background:var(--accent); color:#fff; border-color:var(--accent); }
.eshop-sections{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.eshop-section{ border:1px solid var(--line); border-radius:12px; background:var(--surface); }
.eshop-section.is-off{ opacity:.6; } .eshop-section.is-dragging{ opacity:.4; }
.eshop-section-row{ display:flex; gap:12px; align-items:center; padding:10px 14px; }
.eshop-section-title{ flex:1; display:flex; flex-direction:column; gap:2px; min-width:0; }
.eshop-section-actions{ display:flex; gap:6px; align-items:center; flex-wrap:wrap; }
.eshop-section-settings{ border-top:1px solid var(--line); padding:14px; }
.eshop-banners, .eshop-benefit-list{ display:flex; flex-direction:column; gap:10px; }
.eshop-banner, .eshop-benefit{ display:grid; grid-template-columns:120px minmax(0,1fr); gap:14px; align-items:center; border:1px solid var(--line); border-radius:12px; padding:10px; background:var(--surface); }
.eshop-benefit{ grid-template-columns:36px minmax(0,1fr) auto; } .eshop-benefit .eshop-icon-svg{ width:28px; height:28px; color:var(--accent); }
.eshop-banner.is-off, .eshop-benefit.is-off{ opacity:.6; }
.eshop-banner-img{ aspect-ratio:16/9; border-radius:8px; background:var(--paper); overflow:hidden; } .eshop-banner-img img{ width:100%; height:100%; object-fit:cover; }
.eshop-banner-body{ display:flex; flex-direction:column; gap:4px; min-width:0; } .eshop-banner-actions{ display:flex; gap:6px; flex-wrap:wrap; margin-top:6px; }
.eshop-icon-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(72px, 1fr)); gap:6px; }
.eshop-icon-pick{ display:flex; flex-direction:column; align-items:center; gap:4px; padding:8px 4px; border:1.5px solid var(--line); border-radius:10px; cursor:pointer; font-size:11px; color:var(--text-muted); }
.eshop-icon-pick input{ position:absolute; opacity:0; pointer-events:none; } .eshop-icon-pick:has(input:checked){ border-color:var(--accent); color:var(--accent); }
.eshop-icon-svg{ width:24px; height:24px; }
.eshop-social-grid{ display:grid; grid-template-columns:repeat(4, 1fr); gap:8px; } .eshop-social-post{ position:relative; } .eshop-social-post img{ width:100%; aspect-ratio:1/1; object-fit:cover; border-radius:8px; display:block; } .eshop-social-post form{ position:absolute; top:4px; right:4px; }
.eshop-specs{ display:flex; flex-direction:column; gap:6px; margin-bottom:8px; } .eshop-spec-row{ display:grid; grid-template-columns:1fr 1.4fr; gap:8px; }
.eshop-related-list{ display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:4px 12px; max-height:220px; overflow:auto; border:1px solid var(--line); border-radius:8px; padding:8px 10px; }
.eshop-wizard{ display:flex; gap:6px; align-items:center; flex-wrap:wrap; margin-bottom:16px; }
.eshop-wizard-step{ display:inline-flex; align-items:center; gap:8px; padding:8px 14px; border:1px solid var(--line); border-radius:999px; font-size:13px; font-weight:600; color:var(--text-muted); background:var(--surface); }
.eshop-wizard-step span{ width:22px; height:22px; border-radius:50%; background:var(--line); display:inline-flex; align-items:center; justify-content:center; font-size:12px; }
.eshop-wizard-step.is-active{ border-color:var(--accent); color:var(--text); } .eshop-wizard-step.is-active span, .eshop-wizard-step.is-done span{ background:var(--accent); color:#fff; }
.eshop-summary{ display:grid; grid-template-columns:140px 1fr; gap:8px 16px; margin:0; } .eshop-summary dt{ color:var(--text-muted); font-size:13px; } .eshop-summary dd{ margin:0; }
.eshop-live-products{ display:flex; flex-direction:column; gap:8px; }
.eshop-live-product{ display:grid; grid-template-columns:56px minmax(0,1fr) auto; gap:12px; align-items:center; border:1px solid var(--line); border-radius:10px; padding:8px 10px; }
.eshop-live-product.is-pinned{ border-color:var(--accent); background:color-mix(in srgb, var(--accent) 8%, var(--surface)); }
.eshop-live-product img{ width:56px; height:56px; border-radius:8px; object-fit:cover; } .eshop-live-product > div{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.eshop-live-chat{ height:420px; overflow-y:auto; display:flex; flex-direction:column; gap:6px; font-size:14px; }
.eshop-live-msg strong{ color:var(--accent); } .eshop-live-msg--system, .eshop-live-msg--reaction{ color:var(--text-muted); font-size:13px; }
.eshop-live-msg--pin, .eshop-live-msg--coupon{ background:color-mix(in srgb, var(--accent) 10%, var(--surface)); padding:6px 10px; border-radius:8px; }
.eshop-live-msg-del{ border:0; background:transparent; color:var(--text-muted); cursor:pointer; font-size:14px; }
@media (max-width:1100px){ .eshop-theme-editor{ grid-template-columns:1fr; } .eshop-theme-preview{ position:static; } }
@media (max-width:700px){ .eshop-banner{ grid-template-columns:1fr; } .eshop-social-grid{ grid-template-columns:repeat(3,1fr); } .eshop-summary{ grid-template-columns:1fr; } }
.eshop-img--video{ display:flex; align-items:center; justify-content:center; background:#222; color:#fff; font-weight:700; font-size:13px; }

/* ---------- bočné menu: žiadny posun pri načítaní stránky (v1.48.1) ----------
   inc/nav_boot.php nastaví otvorené skupiny a pozíciu scrollu ešte pred prvým vykreslením; kým je
   na <html> `is-nav-booting`, nesmie sa nič animovať, inak by sa tie isté zmeny prejavili ako
   „poskočenie“ panela. Triedu odoberá assets/js/nav-scroll.js po prvom snímku. ---------- */
html.is-nav-booting .portal-sidenav,
html.is-nav-booting .portal-main,
html.is-nav-booting .portal-nav-group-list,
html.is-nav-booting .portal-nav-group-chevron,
html.is-nav-booting .portal-sidenav-rail-toggle svg{ transition:none !important; }

/* ---------- dashboard e-shopu a LIVE (v1.49.0) ----------
   Grafy sú inline SVG bez vlastných farieb — všetko ide cez tokeny, takže sa prekreslia do svetlej
   aj tmavej témy. Jedna séria = jeden odtieň (accent); stav (storno, po termíne) nesie status farba
   VŽDY spolu s textom, nikdy nie farba samotná. ---------- */
.dash-toolbar{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:18px; }
.dash-range{ display:flex; gap:6px; flex-wrap:wrap; }
.dash-range a{
  padding:7px 13px; border-radius:99px; border:1.5px solid var(--line); font-size:13px; font-weight:600;
  color:var(--text-muted); background:var(--surface);
}
.dash-range a:hover{ color:var(--text); border-color:var(--line-2); }
.dash-range a.is-active{ background:var(--accent); border-color:var(--accent); color:var(--accent-ink); }

.dash-kpis{ display:grid; grid-template-columns:repeat(auto-fit, minmax(210px, 1fr)); gap:14px; margin-bottom:22px; }
.dash-kpi{ background:var(--surface); border:1.5px solid var(--line); border-radius:var(--radius); padding:16px 18px; display:flex; flex-direction:column; gap:6px; min-width:0; }
.dash-kpi-label{ font-size:12px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--text-muted); }
.dash-kpi-value{ font-family:'Archivo',ui-sans-serif,system-ui,sans-serif; font-weight:800; font-size:26px; line-height:1.1; color:var(--text); font-variant-numeric:tabular-nums; }
.dash-kpi-foot{ display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:28px; }
.dash-delta{ font-size:12px; font-weight:700; white-space:nowrap; font-variant-numeric:tabular-nums; }
.dash-delta.is-up{ color:var(--success); }
.dash-delta.is-down{ color:var(--color-danger); }
.dash-delta.is-flat{ color:var(--text-muted); }
.dash-kpi-note{ font-size:12px; color:var(--text-muted); }

.dash-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(320px, 1fr)); gap:18px; align-items:start; }
.dash-grid .portal-panel{ margin-bottom:0; }
.dash-panel-body{ padding:16px 18px; }
.dash-chart-title{ font-size:13px; font-weight:700; color:var(--text-muted); margin:0 0 10px; }

/* SVG grafy — farby výhradne z tokenov */
.ep-chart{ display:block; width:100%; overflow:visible; font-family:inherit; }
.ep-chart-grid{ stroke:var(--line); stroke-width:1; }
.ep-chart-axis{ fill:var(--text-muted); font-size:10px; font-variant-numeric:tabular-nums; }
.ep-chart-bar{ fill:var(--accent); }
.ep-chart-bar:hover{ fill:var(--accent-2); }
.ep-chart-bar-empty{ fill:var(--line-2); }
.chart-empty{ margin:0; padding:18px 0; color:var(--text-muted); font-size:13px; }
.ep-spark{ display:block; }
.ep-spark-line{ fill:none; stroke:var(--accent); stroke-width:2; stroke-linecap:round; stroke-linejoin:round; vector-effect:non-scaling-stroke; }
.ep-spark-dot{ fill:var(--accent); }

/* Vodorovné pruhy (rebríček, lievik, rozdelenia) */
.ep-hbars{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.ep-hbar{ display:grid; grid-template-columns:minmax(0, 1fr) 3fr auto; align-items:center; gap:12px; }
.ep-hbar-label{ font-size:13px; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ep-hbar-track{ height:10px; border-radius:99px; background:var(--paper-2); overflow:hidden; }
.ep-hbar-fill{ display:block; height:100%; border-radius:99px; background:var(--accent); min-width:2px; }
.ep-hbar-value{ font-size:13px; font-weight:700; color:var(--text); font-variant-numeric:tabular-nums; text-align:right; white-space:nowrap; }
.ep-hbar-value small{ display:block; font-weight:500; font-size:11px; color:var(--text-muted); }
@media (max-width: 640px){
  .ep-hbar{ grid-template-columns:1fr auto; }
  .ep-hbar-track{ grid-column:1 / -1; }
}

/* Zoznam „čo ma čaká“ */
.dash-todo{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:2px; }
.dash-todo a{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:11px 12px; border-radius:8px; color:var(--text); font-size:14px; }
.dash-todo a:hover{ background:var(--paper-2); }
.dash-todo .count{ font-size:12px; font-weight:800; padding:2px 9px; border-radius:99px; background:var(--paper-2); color:var(--text-muted); font-variant-numeric:tabular-nums; }
.dash-todo .count.is-alert{ background:var(--color-danger-bg); color:var(--color-danger); }
.dash-todo .count.is-due{ background:var(--color-warning-bg); color:var(--color-warning-text); }

/* Dražby v riadení LIVE (v1.52.0) */
.eshop-auction-live{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; padding:12px 14px; margin-bottom:14px; border:2px solid var(--color-danger); border-radius:var(--radius); background:var(--color-danger-bg); }
.eshop-auction-add{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-top:14px; padding-top:14px; border-top:1px solid var(--line); }
.eshop-auction-add .ep-select{ width:auto; min-width:180px; }

/* Editor klipov (v1.55.0) */
.eshop-clip-products{ display:flex; flex-direction:column; gap:4px; max-height:220px; overflow-y:auto; padding:8px; border:1px solid var(--line); border-radius:var(--radius); }

/* Moderácia a ankety v riadení LIVE (v1.56.0) */
.eshop-chat-mod{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:12px; padding-bottom:12px; border-bottom:1px solid var(--line); font-size:13px; }
.eshop-chat-mod label{ display:flex; align-items:center; gap:6px; }
.eshop-chat-mod .ep-input{ flex:1; min-width:200px; }
.eshop-bans{ margin-top:12px; font-size:13px; }
.eshop-bans summary{ cursor:pointer; font-weight:700; color:var(--accent-2); }
.eshop-ban-row{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:6px 0; border-bottom:1px dashed var(--line); }
.eshop-poll-live{ display:flex; flex-direction:column; gap:10px; }
.eshop-poll-results{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.eshop-poll-results li{ display:grid; grid-template-columns:minmax(0,1fr) 2fr auto; align-items:center; gap:10px; font-size:13.5px; }
.eshop-poll-bar{ height:10px; border-radius:99px; background:var(--paper-2); overflow:hidden; }
.eshop-poll-bar span{ display:block; height:100%; background:var(--accent); border-radius:99px; }

/* ── Fotografie pri dopyte tvorcu (v1.64.0) ──────────────────────────────────
   Náhľad, poradie a mazanie na jednom mieste. Prvá fotka je tá, ktorú uvidí
   väčšina ľudí v marketplace, takže musí byť na prvý pohľad jasné, ktorá to je. */
.req-photos{ display:flex; gap:12px; flex-wrap:wrap; margin-bottom:12px; }
.req-photo{ position:relative; margin:0; width:130px; border-radius:12px; overflow:hidden;
  border:1px solid var(--color-line); background:var(--color-surface); }
.req-photo.is-first{ border-color:var(--color-accent); box-shadow:0 0 0 2px color-mix(in srgb, var(--color-accent) 22%, transparent); }
.req-photo img{ display:block; width:130px; height:130px; object-fit:cover; }
.req-photo-badge{ position:absolute; top:6px; left:6px; background:var(--color-accent); color:var(--color-accent-ink);
  font-size:10.5px; font-weight:700; letter-spacing:.03em; padding:2px 7px; border-radius:999px; }
.req-photo-actions{ display:flex; gap:2px; justify-content:center; padding:5px 4px; background:var(--color-paper-2); }
.req-photo-actions form{ margin:0; }
.req-photo-btn{ border:none; background:none; cursor:pointer; font-size:13px; line-height:1;
  padding:4px 6px; border-radius:6px; color:var(--color-text-muted); }
.req-photo-btn:hover{ background:var(--color-surface); color:var(--color-text); }
.req-photo-btn.is-danger:hover{ color:var(--color-danger); }

.req-photo-upload{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.req-photo-file{ display:inline-flex; align-items:center; gap:10px; cursor:pointer; }
.req-photo-file input[type="file"]{ position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.req-photo-file-btn{ display:inline-flex; align-items:center; height:38px; padding:0 16px; border-radius:999px;
  border:1px solid var(--color-line-2); font-size:13.5px; font-weight:600; color:var(--color-text); white-space:nowrap; }
.req-photo-file:hover .req-photo-file-btn{ border-color:var(--color-accent); color:var(--color-accent-2); }
.req-photo-file input[type="file"]:focus-visible + .req-photo-file-btn{ outline:2px solid var(--color-accent); outline-offset:2px; }
.req-photo-file-name{ font-size:13px; color:var(--color-text-muted); max-width:220px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* ── Filtre v zoznamoch (v1.64.0) ───────────────────────────────────────────
   Viac radov chipov nad sebou nedáva zmysel bez popisky — nedá sa povedať,
   ktorý rad je stav a ktorý kanál. */
.filter-bar{ display:flex; flex-direction:column; gap:10px; margin-bottom:16px;
  padding-bottom:14px; border-bottom:1px solid var(--color-line); }
.filter-row{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.filter-label{ font-size:11.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color:var(--color-faint); min-width:52px; flex-shrink:0; }
.filter-row .eshop-tabs{ margin:0; }
.filter-search{ display:flex; gap:6px; align-items:center; margin-left:auto; }
.filter-search .ep-input{ max-width:220px; height:36px; }
.chip-count{ font-size:11.5px; opacity:.7; margin-left:2px; font-variant-numeric:tabular-nums; }
@media (max-width: 720px){
  .filter-row{ align-items:flex-start; }
  .filter-search{ margin-left:0; width:100%; }
  .filter-search .ep-input{ flex:1; max-width:none; }
}

/* Karta zákazníka (v1.64.0) — fakty ako popisok + hodnota pod sebou, nie tabuľka. */
.cust-facts{ display:grid; gap:12px; }
.cust-facts > div{ display:flex; flex-direction:column; gap:2px; font-size:14.5px; }
.cust-facts .portal-meta{ font-size:11.5px; text-transform:uppercase; letter-spacing:.05em; }

/* Pruh míňania tovaru v riadení vysielania (v1.68.0) — rovnaký, aký vidí divák. */
.lr-stock{ height:4px; border-radius:999px; background:var(--color-line); overflow:hidden; margin-top:6px; max-width:280px; }
.lr-stock span{ display:block; height:100%; border-radius:999px; background:var(--color-accent); transition:width .5s ease; }
.lr-stock.is-low span{ background:var(--color-danger); }
@media (prefers-reduced-motion: reduce){ .lr-stock span{ transition:none; } }

/* Pravidlá dražby v riadení vysielania (v1.68.0). */
.lr-rules{ margin:0 0 14px; border:1px solid var(--color-line); border-radius:10px; background:var(--color-paper-2); }
.lr-rules summary{ cursor:pointer; padding:10px 14px; font-weight:600; font-size:14px; }
.lr-rules-body{ padding:0 14px 14px; font-size:13.5px; line-height:1.55; color:var(--color-text-muted); }
.lr-rules-body p{ margin:0 0 10px; }
.lr-rules-body strong{ color:var(--color-text); }
.lr-rules-body ul{ margin:0 0 10px; padding-left:18px; display:flex; flex-direction:column; gap:6px; }

/* Riadok s AI návrhom v editoroch (v1.68.0). */
.eshop-ai-row{ display:flex; gap:12px; align-items:flex-start; flex-wrap:wrap; padding:12px 14px;
  border:1px dashed var(--color-line-2); border-radius:10px; background:var(--color-paper-2); margin-bottom:4px; }
.eshop-ai-row .portal-meta{ flex:1; min-width:220px; margin:0; line-height:1.45; }

/* Živý náhľad témy (v1.75.0) */
/* Pozor na názvy: `.eshop-theme-preview` je sticky panel s náhľadom vyššie v tomto súbore.
   Tlačidlo má preto vlastnú triedu — kolízia mu predtým nasadila border-radius 999px a z panela
   sa stal kruh, v ktorom sa nedalo klikať. */
.eshop-theme-preview-btn{ margin-top:8px; padding:5px 12px; border:1px solid var(--line); border-radius:999px; background:var(--surface); color:var(--text); font-size:12px; font-weight:700; cursor:pointer; }
.eshop-theme-preview-btn:hover{ border-color:var(--accent); color:var(--accent); }
.tp-modal{ position:fixed; inset:0; z-index:90; display:flex; align-items:center; justify-content:center; padding:16px; background:rgba(12,10,9,.6); }
body.tp-open{ overflow:hidden; }
.tp-box{ width:min(1420px,100%); height:min(92vh,980px); display:flex; flex-direction:column; border-radius:16px; background:var(--surface); border:1px solid var(--line); overflow:hidden; }
.tp-head{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding:12px 16px; border-bottom:1px solid var(--line); flex-wrap:wrap; }
.tp-controls{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.tp-seg{ display:flex; gap:2px; padding:2px; border:1px solid var(--line); border-radius:999px; background:var(--surface-2, var(--surface)); }
.tp-seg button{ padding:5px 12px; border:0; border-radius:999px; background:none; color:var(--text-muted); font-size:12px; font-weight:700; cursor:pointer; }
.tp-seg button.is-active{ background:var(--accent); color:#fff; }
.tp-body{ flex:1; min-height:0; display:grid; grid-template-columns:minmax(0,1fr) 300px; }
.tp-frame{ width:100%; height:100%; border:0; background:#fff; display:block; }
.tp-frame.is-mobile{ width:390px; margin:0 auto; border-left:1px solid var(--line); border-right:1px solid var(--line); }
.tp-guide{ border-left:1px solid var(--line); padding:16px; overflow-y:auto; background:var(--surface); }
.tp-guide h4{ margin:0 0 4px; font-size:15px; }
.tp-guide p{ margin:0 0 12px; font-size:12px; line-height:1.5; }
.tp-guide-h{ display:block; margin-bottom:8px; font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--text-muted); }
.tp-guide-list{ margin:0; padding-left:20px; display:flex; flex-direction:column; gap:10px; }
.tp-guide-list li{ font-size:13px; }
.tp-guide-list strong{ display:block; margin-bottom:2px; }
.tp-guide-list span{ color:var(--text-muted); font-size:12px; line-height:1.5; }
@media (max-width:1100px){
  .tp-body{ grid-template-columns:1fr; grid-template-rows:1fr auto; }
  .tp-guide{ border-left:0; border-top:1px solid var(--line); max-height:34vh; }
}

/* Uložiť a Publikovať boli na konci dlhého panela — v praxi ich nikto nenašiel bez scrollovania.
   Lišta je preto prilepená na spodok panela a viditeľná stále. (v1.76.0) */
/* .portal-panel má overflow:hidden kvôli zaobleniu — to sticky vnútri vypína. Tento jeden panel
   ho preto nemá; zaoblenie drží border-radius na ňom samom. */
.eshop-theme-side{ overflow:visible; }
.eshop-theme-actions{ position:sticky; bottom:0; z-index:5; display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  margin:16px -16px -16px; padding:12px 16px; border-top:1px solid var(--line);
  background:color-mix(in srgb, var(--surface) 92%, transparent); backdrop-filter:blur(8px); }
.eshop-theme-actions .portal-meta{ flex:1 1 100%; margin:0; }
@supports not (backdrop-filter: blur(8px)){ .eshop-theme-actions{ background:var(--surface); } }

/* LIVE riadenie — rozpis skladu pri produkte (v1.77.0) */
.lr-nums{ display:flex; flex-wrap:wrap; gap:3px 14px; margin:4px 0 2px; }
.lr-nums span{ display:flex; align-items:baseline; gap:5px; font-size:12px; }
.lr-nums i{ font-style:normal; color:var(--text-muted); }
.lr-nums b{ font-size:14px; font-weight:800; font-variant-numeric:tabular-nums; }
.lr-num-held b{ color:#c07a2b; }
.lr-num-held.is-zero{ opacity:.45; } .lr-num-held.is-zero b{ color:inherit; }

/* LIVE riadenie — lišta rýchlych akcií (v1.79.0). Prilepená pod stavovým pruhom, aby tvorca
   počas vysielania nemusel scrollovať cez nastavenia. */
.lr-dock{ position:sticky; top:8px; z-index:6; display:flex; align-items:center; gap:8px; flex-wrap:wrap;
  margin:0 0 18px; padding:10px 14px; border:1px solid var(--line); border-radius:12px;
  background:color-mix(in srgb, var(--surface) 92%, transparent); backdrop-filter:blur(8px); }
.lr-dock form{ margin:0; }
.lr-dock-label{ font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--text-muted); margin-right:2px; }
@supports not (backdrop-filter: blur(8px)){ .lr-dock{ background:var(--surface); } }
@media (max-width:640px){ .lr-dock{ position:static; } .lr-dock-label{ width:100%; } }

/* Creator Home — obchodný pás a KPI (v1.80.0) */
.ch-hero{ display:flex; align-items:center; gap:20px; flex-wrap:wrap; margin-bottom:14px; padding:20px 22px; border:1px solid var(--line); border-radius:16px; background:var(--surface); }
.ch-hero-copy{ flex:1; min-width:220px; }
.ch-hero-eyebrow{ display:block; font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--text-muted); }
.ch-hero h2{ margin:4px 0 8px; font-size:clamp(20px,2.4vw,26px); }
.ch-hero-meta{ display:flex; gap:16px; flex-wrap:wrap; font-size:13px; color:var(--text-muted); }
.ch-state{ display:inline-flex; align-items:center; gap:6px; font-weight:700; color:var(--text); }
.ch-state.is-ok{ color:#2e7d32; } .ch-state.is-live{ color:var(--color-danger); }
.ch-blockers{ margin:10px 0 0; font-size:13px; color:var(--color-danger); }
.ch-hero-actions{ display:flex; gap:8px; flex-wrap:wrap; }
.ch-kpis{ display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:10px; margin-bottom:18px; }
.ch-kpi{ padding:14px 16px; border:1px solid var(--line); border-radius:14px; background:var(--surface); }
.ch-kpi small{ display:block; font-size:10.5px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--text-muted); }
.ch-kpi strong{ display:block; margin:6px 0 3px; font-size:24px; font-variant-numeric:tabular-nums; }
.ch-kpi em{ display:block; font-style:normal; font-size:12px; color:var(--text-muted); }
.ch-up{ color:#2e7d32; font-weight:700; } .ch-down{ color:var(--color-danger); font-weight:700; } .ch-flat{ color:var(--text-muted); }
.ch-cols{ display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:14px; margin-bottom:20px; }

/* Hlavička obrazovky tvorcu (v1.82.0) — rovnaký úvod ako Creator Home: čo to je, jednou vetou
   prečo, a akcie vpravo. Používa sa na objednávkach, štatistikách a profile. */
.ch-pagehead{ display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:16px; }
.ch-pagehead-copy{ min-width:240px; flex:1; }
.ch-pagehead .ch-hero-eyebrow{ margin-bottom:2px; }
.ch-pagehead h2{ margin:0 0 4px; font-size:clamp(19px,2.2vw,24px); }
.ch-pagehead p{ margin:0; font-size:13.5px; line-height:1.5; color:var(--text-muted); max-width:70ch; }
.ch-pagehead-actions{ display:flex; gap:8px; flex-wrap:wrap; }

/* Manažérsky dashboard a kalendár tvorcov (v1.83.0). Vychádza z KPI dlaždíc Creator Home
   (.ch-kpi) — manažér a tvorca pozerajú na tie isté čísla, nech vyzerajú rovnako. */
.mg-pagehead{ display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:18px; }
.mg-pagehead h2{ font-size:22px; margin:2px 0 4px; }
.mg-pagehead p{ margin:0; max-width:64ch; color:var(--text-muted); font-size:13px; }
.mg-eyebrow{ font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.08em; color:var(--text-muted); }
.mg-pagehead-actions{ display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
.mg-kpis{ display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:12px; margin-bottom:20px; }
.mg-kpi{ display:flex; flex-direction:column; gap:2px; border:1px solid var(--line); border-radius:14px; background:var(--surface); padding:14px 16px; }
.mg-kpi span{ order:1; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--text-muted); }
.mg-kpi strong{ order:2; font-size:26px; line-height:1.1; font-variant-numeric:tabular-nums; }
.mg-kpi em{ order:3; font-style:normal; font-size:12px; color:var(--text-muted); }
.mg-kpi.is-warn{ border-color:var(--warning, #d98d00); }
.mg-kpi.is-live{ border-color:var(--error, #c0392b); }
.mg-up{ color:var(--success, #2e7d32); font-weight:700; }
.mg-down{ color:var(--error, #c0392b); font-weight:700; }
.mg-flat{ color:var(--text-muted); }
.mg-sub{ font-size:13px; margin:0 0 10px; }
.mg-task-form{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:16px; }
.mg-task-form .ep-select{ width:auto; min-width:170px; }
.mg-task-form .ep-input[type="text"]{ flex:1 1 240px; }
.mg-tasks{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.mg-tasks li{ display:flex; align-items:center; gap:10px; padding:9px 12px; border:1px solid var(--line); border-radius:10px; }
.mg-tasks li.is-overdue{ border-color:var(--error, #c0392b); }
.mg-tasks li.is-today{ border-color:var(--warning, #d98d00); }
.mg-task-body{ display:flex; flex-direction:column; gap:1px; flex:1 1 auto; min-width:0; }
.mg-task-body strong{ font-size:13.5px; }
.mg-task-due{ font-size:12px; color:var(--text-muted); white-space:nowrap; }
.mg-task-check{ width:26px; height:26px; border-radius:50%; border:1px solid var(--line); background:var(--surface-2, transparent); cursor:pointer; font-size:13px; line-height:1; flex:0 0 auto; }
.mg-task-check:hover{ border-color:var(--success, #2e7d32); color:var(--success, #2e7d32); }

/* Kalendár tvorcov — mesačná mriežka. Farba čipu = typ programu, nie náhoda. */
.mgc-toolbar{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 16px; flex-wrap:wrap; border-bottom:1px solid var(--line); }
.mgc-nav{ display:flex; gap:6px; }
.mgc-title{ font-size:17px; font-weight:800; min-width:150px; text-align:center; }
.mgc-filters{ display:flex; gap:8px; flex-wrap:wrap; }
.mgc-filters .ep-select{ width:auto; min-width:150px; }
.mgc-legend{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; padding:10px 16px; border-bottom:1px solid var(--line); }
.mgc-grid{ display:grid; grid-template-columns:repeat(7, 1fr); border-left:1px solid var(--line); border-top:1px solid var(--line); }
.mgc-weekday{ padding:8px; text-align:center; font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.mgc-day{ min-height:110px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); padding:6px; display:flex; flex-direction:column; gap:3px; color:var(--text); text-decoration:none; }
.mgc-day:hover{ background:var(--surface-2, rgba(0,0,0,.03)); }
.mgc-day.is-outside{ opacity:.5; }
.mgc-day.is-today{ background:rgba(217,141,0,.08); }
.mgc-daynum{ font-size:12px; font-weight:700; color:var(--text-muted); margin-bottom:2px; }
.mgc-daynum.is-today-badge{ display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; border-radius:50%; background:var(--accent, #c0392b); color:#fff; }
.mgc-chip{ display:block; padding:2px 6px; border-radius:4px; font-size:10px; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mgc-legend .mgc-chip{ display:inline-flex; gap:5px; align-items:center; }
.mgc-live-live{ background:#c0392b; color:#fff; }
.mgc-live-scheduled{ background:#fde3e6; color:#a02040; }
.mgc-live-ended{ background:#eceaf3; color:#5b3fa0; }
.mgc-live-draft{ background:rgba(0,0,0,.05); color:var(--text-muted); }
.mgc-event{ background:#e2ecf5; color:#1c5d84; }
.mgc-deliverable{ background:#f7e6c4; color:#8a6100; }
.mgc-task-open{ background:#dcecdf; color:#2e7d32; }
.mgc-task-done{ background:rgba(0,0,0,.05); color:var(--text-muted); text-decoration:line-through; }
.mgc-more{ font-size:9.5px; color:var(--text-muted); padding:1px 6px; }
.mgc-day-row{ display:flex; align-items:center; gap:12px; border:1px solid var(--line); border-radius:12px; padding:12px 14px; margin-bottom:8px; flex-wrap:wrap; }
.mgc-day-time{ font-weight:800; font-variant-numeric:tabular-nums; min-width:62px; }
.mgc-day-body{ flex:1 1 240px; display:flex; flex-direction:column; gap:2px; min-width:0; }
@media (max-width:820px){ .mgc-day{ min-height:74px; } .mgc-chip{ font-size:9px; } }

/* Import a certifikácia tém (v1.84.0). Protokol kontroly má byť čitateľný na prvý pohľad —
   stav vľavo, názov kontroly, detail; zelená/žltá/červená nesie význam, nie dekoráciu. */
.eshop-theme-custom-list{ margin-top:16px; padding-top:14px; border-top:1px solid var(--line); display:flex; flex-direction:column; gap:8px; }
.eshop-theme-custom-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; padding:8px 12px; border:1px solid var(--line); border-radius:10px; }
.eshop-theme-import .eshop-row{ align-items:start; }
.eshop-theme-report{ margin-top:18px; padding-top:14px; border-top:1px solid var(--line); }
.eshop-theme-report h3{ font-size:14px; margin:0 0 10px; }
.eshop-check-line{ margin:2px 0; font-size:13px; }
.eshop-check-line.is-fail{ color:var(--error, #c0392b); }
.eshop-check-line.is-warn{ color:var(--warning, #a8730a); }
.eshop-check-table td{ padding:5px 8px; font-size:13px; }
.eshop-check-state{ display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; border-radius:50%; font-size:12px; font-weight:800; }
.eshop-check-state.is-pass{ background:#dcecdf; color:#2e7d32; }
.eshop-check-state.is-fail{ background:#fbe3e3; color:#c0392b; }
.eshop-check-state.is-warn{ background:#fdf0d5; color:#a8730a; }
.eshop-check-state.is-skip{ background:rgba(0,0,0,.06); color:var(--text-muted); }
