/* =========================================================
   PORTAL – GLOBAL DESIGN SYSTEM
   kompatibilné s Astra theme (SAFE SCOPE)
   ========================================================= */

/* =========================================================
   1) Astra wrapper override iba pre portal stránky
   ========================================================= */
body.portal-page .site,
body.portal-page .ast-site-identity,
body.portal-page .site-content,
body.portal-page .ast-container,
body.portal-page .ast-plain-container,
body.portal-page .ast-page-builder-template {
  background: transparent !important;
}

body.portal-page .site-content,
body.portal-page .ast-plain-container,
body.portal-page .ast-page-builder-template {
  background: radial-gradient(1200px 600px at 50% 0%,
    rgba(70,120,255,.20),
    rgba(240,245,255,.85) 55%,
    rgba(245,247,250,1) 100%) !important;
}

/* =========================================================
   2) Root variables
   ========================================================= */
:root {
  --portal-bg: #f4f6f8;
  --portal-card: #ffffff;
  --portal-border: #e3e7ee;
  --portal-text: #1f2937;
  --portal-muted: #6b7280;

  --portal-green: #16a34a;
  --portal-green-soft: #dcfce7;

  --portal-blue: #2563eb;
  --portal-blue-soft: #dbeafe;

  --portal-radius: 14px;
  --portal-radius-sm: 10px;

  --portal-gap: 16px;
  --portal-gap-lg: 24px;

  --portal-shadow: 0 10px 30px rgba(0,0,0,.05);
}

/* =========================================================
   3) Safe scope reset / typography
   - nič globálne (nech to nebije Astra)
   ========================================================= */
.portal-wrap,
.portal-form-wrap,
.pl-wrap,
.pd-wrap {
  font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--portal-text);
  box-sizing: border-box;
}

.portal-wrap *,
.portal-form-wrap *,
.pl-wrap *,
.pd-wrap *,
.portal-wrap *::before,
.portal-form-wrap *::before,
.pl-wrap *::before,
.pd-wrap *::before,
.portal-wrap *::after,
.portal-form-wrap *::after,
.pl-wrap *::after,
.pd-wrap *::after {
  box-sizing: border-box;
}

/* =========================================================
   4) Headings + helper text (len v portáli)
   ========================================================= */
.portal-wrap h1,
.portal-wrap h2,
.portal-wrap h3,
.portal-form-wrap h1,
.portal-form-wrap h2,
.portal-form-wrap h3 {
  font-weight: 600;
  letter-spacing: -0.02em;
  margin: 0 0 0.6em;
}

.portal-help,
.portal-hint {
  font-size: 13px;
  color: var(--portal-muted);
}

/* =========================================================
   5) Buttons
   ========================================================= */
.portal-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;

  border-radius: 999px;
  padding: 12px 26px;
  font-weight: 600;
  border: none;
  cursor: pointer;
  transition: none;
}

.portal-btn:active {
  transform: none;
}

.portal-btn-lg {
  padding: 14px 34px;
  font-size: 16px;
}

/* primary (default = blue) */
.portal-btn-primary {
  background: var(--portal-blue);
  color: #fff;
}

.portal-btn-primary:hover {
  background: #1d4ed8;
}

/* dopyt (green) */
.portal-form-dopyt .portal-btn-primary {
  background: var(--portal-green);
}

.portal-form-dopyt .portal-btn-primary:hover {
  background: #15803d;
}

/* =========================================================
   6) Form layout
   ========================================================= */
.portal-form-wrap {
  max-width: 980px;
  margin: 40px auto;
  padding: 28px;
  background: var(--portal-card);
  border-radius: var(--portal-radius);
  box-shadow: var(--portal-shadow);
  border: 1px solid var(--portal-border);
}

/* header color strip */
/*.portal-form-ponuka {
  border-top: 5px solid var(--portal-blue);
}

.portal-form-dopyt {
  border-top: 5px solid var(--portal-green);
}*/

/* rows */
.portal-row {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: var(--portal-gap);
  margin-bottom: var(--portal-gap-lg);
  align-items: start;
}

.portal-row-center-y {
  align-items: center;
}


.portal-row-center {
  display: flex;
  justify-content: center;
}

/* columns */
.portal-col-12 { grid-column: span 12; }
.portal-col-6  { grid-column: span 6; }

/* =========================================================
   7) Inputs
   ========================================================= */
.portal-label {
  font-size: 14px;
  font-weight: 600;
  margin-bottom: 6px;
  display: block;
}

.portal-input,
.portal-textarea,
.portal-select {
  width: 100%;
  padding: 12px 14px;
  border-radius: var(--portal-radius-sm);
  border: 1px solid var(--portal-border);
  font-size: 14px;
  background: #fff;
  transition: border .15s ease, box-shadow .15s ease;
}

.portal-input:focus,
.portal-textarea:focus,
.portal-select:focus {
  outline: none;
  border-color: var(--portal-blue);
  box-shadow: 0 0 0 3px rgba(37,99,235,.15);
}

/* dopyt = green focus */
.portal-form-dopyt .portal-input:focus,
.portal-form-dopyt .portal-textarea:focus,
.portal-form-dopyt .portal-select:focus {
  border-color: var(--portal-green);
  box-shadow: 0 0 0 3px rgba(22,163,74,.15);
}

.portal-textarea {
  resize: vertical;
  min-height: 120px;
}

.req {
  color: #dc2626;
}

/* =========================================================
   8) Notices
   ========================================================= */
.portal-notice {
  padding: 14px 18px;
  border-radius: var(--portal-radius-sm);
  margin-bottom: 24px;
  font-size: 14px;
}

.portal-notice--ok {
  background: var(--portal-green-soft);
  color: #065f46;
}

.portal-notice--error {
  background: #fee2e2;
  color: #7f1d1d;
}

/* =========================================================
   9) Listings / Cards (ponuky, dopyty)
   ========================================================= */
.pl-card {
  background: #fff;
  border: 1px solid var(--portal-border);
  border-radius: var(--portal-radius);
  padding: 18px;
  transition: none;
}

.pl-card:hover {
  transform: none;
  box-shadow: none;
}

.pl-card h3 a {
  color: var(--portal-blue);
  text-decoration: none;
}

.pl-card h3 a:hover {
  text-decoration: underline;
}

/* =========================================================
   10) Footer (STRICTLY scoped — nerobíme globálne footer a)
   ========================================================= */
.portal-footer {
  background: #0f172a;
  color: #cbd5e1;
  margin-top: 60px;
}

.portal-footer a {
  color: #e5e7eb;
  text-decoration: none;
}

.portal-footer a:hover {
  text-decoration: underline;
}

.portal-footer__inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 38px 18px 18px;
}

.portal-footer__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
}

.portal-footer__title {
  margin: 0 0 10px;
  font-size: 16px;
  font-weight: 700;
  color: #fff;
}

.portal-footer__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 8px;
  font-size: 14px;
}

.portal-footer__bottom {
  margin-top: 26px;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,.12);
  font-size: 13px;
  opacity: .9;
}

@media (max-width: 820px) {
  .portal-footer__grid { grid-template-columns: 1fr; }
}

/* =========================================================
   11) Mobile friendly (Portal) – drop-in patch
   ========================================================= */
@media (max-width: 820px) {
  .portal-wrap,
  .portal-form-wrap,
  .pl-wrap {
    padding-left: 14px;
    padding-right: 14px;
  }

  .portal-form-wrap {
    margin: 18px auto;
    padding: 18px;
    border-radius: 14px;
  }

  .portal-row {
    gap: 12px;
    margin-bottom: 16px;
  }

  .portal-col-6 { grid-column: span 12 !important; }

  .portal-input,
  .portal-select,
  .portal-textarea {
    padding: 13px 14px;
    font-size: 16px; /* iOS no-zoom */
  }

  .portal-label { font-size: 14px; }

  .portal-row-center .portal-btn {
    width: 100%;
    max-width: 520px;
  }

  .pl-filters {
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }

  .pl-taxfilters {
    grid-template-columns: 1fr !important;
    gap: 14px !important;
  }

  .pl-grid {
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }

  .pl-card {
    padding: 14px;
    border-radius: 14px;
  }

  .pd-grid {
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }

  .portal-footer__inner { padding: 28px 14px 16px; }
  .portal-footer__grid {
    grid-template-columns: 1fr !important;
    gap: 18px !important;
  }

  .portal-footer__list { gap: 10px; }
}

@media (max-width: 420px) {
  .portal-form-wrap { padding: 16px; }
  .portal-btn-lg { padding: 14px 22px; }
}
/* ==============================
   PSC UX
   ============================== */
.portal-psc-status {
  margin-top: 6px;
  font-size: 13px;
  color: var(--portal-muted);
  display: flex;
  align-items: center;
  gap: 8px;
}

.portal-psc-status.is-error {
  color: #b91c1c;
}

}

/* disabled inputs look nicer */
.portal-input:disabled,
.portal-select:disabled,
.portal-textarea:disabled {
  background: rgba(255,255,255,.65);
  color: rgba(31,41,55,.75);
  cursor: not-allowed;
}

/* Zjednotenie výšky selectov (Priemysel/Remeslá aj inde) */
.portal-select,
.portal-form-wrap select,
.portal-wrap select {
  height: 48px;
  line-height: 48px;
  padding-top: 0;
  padding-bottom: 0;
  box-sizing: border-box;
}

.portal-select:focus,
.portal-form-wrap select:focus,
.portal-wrap select:focus {
  outline: none;
}
