/* VANTA V39 — site-wide alignment and support form polish
   Public/customer-facing copy is deliberately centred. Admin console is excluded. */

/* User-facing site-wide rule: centre every visible text container.
   Form-control values and code remain left-aligned for usability. */
body:not(.admin-page) *:not(input):not(textarea):not(select):not(option):not(code):not(pre) {
  text-align:center !important;
}
body:not(.admin-page) :is(input,textarea,select,option,code,pre) {
  text-align:left !important;
}

body:not(.admin-page) main,
body:not(.admin-page) .site-footer,
body.portal-page:not(.admin-page) .portal-content {
  text-align:center;
}

body:not(.admin-page) main *:not(input):not(textarea):not(select):not(option):not(code):not(pre),
body:not(.admin-page) .site-footer *:not(input):not(textarea):not(select):not(option):not(code):not(pre),
body.portal-page:not(.admin-page) .portal-content *:not(input):not(textarea):not(select):not(option):not(code):not(pre) {
  text-align:center !important;
}

body:not(.admin-page) main :is(h1,h2,h3,h4,p),
body:not(.admin-page) .site-footer :is(h1,h2,h3,h4,p),
body.portal-page:not(.admin-page) .portal-content :is(h1,h2,h3,h4,p) {
  margin-left:auto;
  margin-right:auto;
}

/* Public page section alignment */
body:not(.admin-page) :is(.section-title,.inner-page-hero,.giveaway-hero,.service-section-heading,.service-detail-copy,.manifesto) {
  text-align:center !important;
}
body:not(.admin-page) .section-title { justify-content:center !important; }
body:not(.admin-page) :is(.inner-page-hero,.giveaway-hero) :is(h1,.page-lede,.eyebrow) {
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}
body:not(.admin-page) .giveaway-principles div,
body:not(.admin-page) .giveaway-card,
body:not(.admin-page) .giveaway-card-visual,
body:not(.admin-page) .giveaway-card-body,
body:not(.admin-page) .giveaway-legal,
body:not(.admin-page) .giveaway-details,
body:not(.admin-page) .giveaway-proof,
body:not(.admin-page) .giveaway-proof-row {
  text-align:center !important;
}
body:not(.admin-page) .giveaway-section-head {
  flex-direction:column;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
}
body:not(.admin-page) .giveaway-section-head p { text-align:center !important; margin-inline:auto !important; }
body:not(.admin-page) .giveaway-state { margin-inline:auto; }
body:not(.admin-page) .giveaway-actions { justify-content:center; }
body:not(.admin-page) .giveaway-details summary { justify-content:center; }
body:not(.admin-page) .giveaway-proof-row { grid-template-columns:1fr; }
body:not(.admin-page) .giveaway-winner { justify-content:center; flex-wrap:wrap; }

/* Common public cards/blocks */
body:not(.admin-page) :is(.portrait-copy,.benefit-copy,.support-flow article,.service-detail-card,.service-faq-list details,.faq-list details,.contact-card,.review-card,.resource-card,.product-copy,.work-card-copy) {
  text-align:center !important;
}
body:not(.admin-page) :is(.portrait-copy p,.benefit-copy p,.service-detail-copy p,.service-detail-card p,.support-flow p) {
  margin-inline:auto !important;
}

/* Footer alignment */
body:not(.admin-page) .footer-brand-block,
body:not(.admin-page) .footer-nav-group,
body:not(.admin-page) .footer-pref-copy,
body:not(.admin-page) .footer-bottom-new {
  text-align:center !important;
}
body:not(.admin-page) .footer-description { margin-inline:auto !important; }
body:not(.admin-page) .footer-primary-actions,
body:not(.admin-page) .footer-pref-controls,
body:not(.admin-page) .footer-status { justify-content:center !important; }
body:not(.admin-page) .footer-nav-group { align-items:center; }

/* Customer portal: centre headings, tables and support content without touching admin. */
body.portal-page:not(.admin-page) .portal-page-head,
body.portal-page:not(.admin-page) .portal-page-head > *,
body.portal-page:not(.admin-page) .portal-section-head,
body.portal-page:not(.admin-page) .portal-ticket-preview,
body.portal-page:not(.admin-page) .portal-note,
body.portal-page:not(.admin-page) .portal-empty,
body.portal-page:not(.admin-page) .portal-library-copy,
body.portal-page:not(.admin-page) .portal-settings-list > div {
  text-align:center !important;
}
body.portal-page:not(.admin-page) .portal-page-head h1,
body.portal-page:not(.admin-page) .portal-page-head > p:last-child {
  margin-left:auto !important;
  margin-right:auto !important;
}
body.portal-page:not(.admin-page) .portal-section-head {
  align-items:center !important;
  justify-content:center !important;
  gap:18px;
  flex-wrap:wrap;
}
body.portal-page:not(.admin-page) .portal-section-head > div { width:100%; text-align:center; }
body.portal-page:not(.admin-page) .portal-row > span { text-align:center !important; }
body.portal-page:not(.admin-page) .portal-note {
  grid-template-columns:1fr !important;
  justify-items:center;
  gap:9px !important;
}
body.portal-page:not(.admin-page) .portal-library article { text-align:center; }
body.portal-page:not(.admin-page) .portal-library-actions { justify-content:center !important; }
body.portal-page:not(.admin-page) .portal-form-actions { justify-content:center !important; }
body.portal-page:not(.admin-page) .portal-form-status { text-align:center !important; }

/* Ticket composer */
body.portal-page:not(.admin-page) .portal-ticket-form {
  width:min(100%,1100px);
  margin-left:auto;
  margin-right:auto;
}
body.portal-page:not(.admin-page) .portal-ticket-form-head {
  position:relative;
  justify-content:center !important;
  text-align:center;
  padding-inline:42px;
}
body.portal-page:not(.admin-page) .portal-ticket-form-head h3 { text-align:center !important; }
body.portal-page:not(.admin-page) .portal-ticket-form-head button {
  position:absolute;
  right:0;
  top:50%;
  transform:translateY(-50%);
}
body.portal-page:not(.admin-page) .portal-ticket-form form {
  align-items:start;
}
body.portal-page:not(.admin-page) .portal-ticket-form label {
  text-align:center !important;
}
body.portal-page:not(.admin-page) .portal-ticket-form .portal-ticket-field-full {
  grid-column:1 / -1;
}
body.portal-page:not(.admin-page) .portal-ticket-form input,
body.portal-page:not(.admin-page) .portal-ticket-form select,
body.portal-page:not(.admin-page) .portal-ticket-form textarea {
  text-align:left;
}
body.portal-page:not(.admin-page) .portal-ticket-form form > .portal-ticket-actions {
  grid-column:1 / -1;
  display:flex;
  justify-content:center !important;
  gap:8px;
}
.portal-ticket-feedback {
  width:min(100%,1100px);
  margin:0 auto 22px;
  padding:13px 16px;
  border:1px solid var(--line);
  border-radius:12px;
  font-size:11px;
  line-height:1.5;
  text-align:center;
}
.portal-ticket-feedback[hidden] { display:none !important; }
.portal-ticket-feedback.success { border-color:color-mix(in srgb,#5c9569 45%,var(--line)); color:#4d8059; }
.portal-ticket-feedback.error { border-color:color-mix(in srgb,#a74a4a 45%,var(--line)); color:#a74a4a; }

@media (max-width:760px) {
  body.portal-page:not(.admin-page) .portal-section-head { flex-direction:column; }
  body.portal-page:not(.admin-page) .portal-ticket-form .portal-ticket-field-full,
  body.portal-page:not(.admin-page) .portal-ticket-form form > .portal-ticket-actions { grid-column:auto; }
  body:not(.admin-page) .giveaway-section-head { align-items:center !important; }
}

/* Maintenance page uses its own stylesheet, so centre it explicitly too. */
.maint-shell,.maint-card{text-align:center !important}
.maint-shell :is(h1,h2,h3,p,small,strong,span,div,a,button,label),.maint-card :is(h1,h2,h3,p,small,strong,span,div,a,button,label){text-align:center !important}
.maint-title,.maint-copy{margin-left:auto !important;margin-right:auto !important}
.maint-actions,.maint-services,.maint-card-row{justify-content:center !important}
.maint-foot{justify-content:center !important;flex-wrap:wrap}

/* ================================================================
   VANTA V41 — structural centering pass
   V39 centred text but several layouts still positioned the text
   block itself to the left. These rules centre the layout as well.
   Admin pages remain excluded.
   ================================================================ */

/* Page-level heroes and major headings should occupy the full centred lane. */
body:not(.admin-page) :is(
  .inner-page-hero,
  .giveaway-hero,
  .work-hero,
  .tascar-hero,
  .portal-page-head,
  .legal-hero,
  .auth-simple,
  .service-cta,
  .tascar-footer-cta,
  .work-next-panel
) {
  text-align:center !important;
}
body:not(.admin-page) :is(
  .inner-page-hero,
  .giveaway-hero,
  .work-hero,
  .tascar-hero,
  .portal-page-head,
  .legal-hero,
  .auth-simple,
  .service-cta,
  .tascar-footer-cta,
  .work-next-panel
) :is(h1,h2,h3,p,.eyebrow,.page-lede,.portal-kicker) {
  margin-left:auto !important;
  margin-right:auto !important;
}

/* Status page — V39 centred the text inside a left grid column.
   V41 centres the actual hero and every section heading. */
body:not(.admin-page) .status-hero {
  display:grid !important;
  grid-template-columns:1fr !important;
  justify-items:center !important;
  align-items:center !important;
  gap:28px !important;
  text-align:center !important;
}
body:not(.admin-page) .status-hero > div:first-child {
  width:100% !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
}
body:not(.admin-page) .status-hero h1,
body:not(.admin-page) .status-hero p {
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}
body:not(.admin-page) .status-overall {
  justify-self:center !important;
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}
body:not(.admin-page) .status-section,
body:not(.admin-page) .status-section-head {
  text-align:center !important;
}
body:not(.admin-page) .status-section-head {
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:9px !important;
}
body:not(.admin-page) .status-section-head :is(h2,p) {
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}
body:not(.admin-page) .service-row {
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  justify-items:center !important;
  text-align:center !important;
}
body:not(.admin-page) .service-row > * {
  width:100% !important;
  text-align:center !important;
  justify-self:center !important;
}
body:not(.admin-page) .incident-head {
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
}
body:not(.admin-page) .incident-update {
  grid-template-columns:1fr !important;
  justify-items:center !important;
  text-align:center !important;
}
body:not(.admin-page) .status-maint-meta {
  justify-content:center !important;
}

/* Product page — make the main product title a true page-centred heading,
   rather than centring text inside the old left-hand grid column. */
body:not(.admin-page).product-page .product-hero {
  text-align:center !important;
}
body:not(.admin-page).product-page .product-back {
  display:table !important;
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}
body:not(.admin-page).product-page .product-grid {
  grid-template-columns:1fr !important;
  justify-items:center !important;
  align-items:start !important;
  gap:48px !important;
}
body:not(.admin-page).product-page .product-copy {
  width:min(100%,920px) !important;
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}
body:not(.admin-page).product-page .product-copy h1,
body:not(.admin-page).product-page .product-copy > p {
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}
body:not(.admin-page).product-page .product-tags,
body:not(.admin-page).product-page .product-buy {
  justify-content:center !important;
}
body:not(.admin-page).product-page .product-art {
  width:100% !important;
}

/* Home/collection section title layouts that still kept their heading block left. */
body:not(.admin-page) .try-heading {
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:18px !important;
  text-align:center !important;
}
body:not(.admin-page) .try-heading > * {
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}
body:not(.admin-page) .section-title {
  width:100% !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
}
body:not(.admin-page) .section-title h2 {
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}
body:not(.admin-page) .portrait-copy {
  grid-template-columns:1fr !important;
  justify-items:center !important;
  align-items:center !important;
  text-align:center !important;
}
body:not(.admin-page) .portrait-copy :is(h3,p) {
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}

/* Common split section headings/actions: keep the content centred as one group. */
body:not(.admin-page) :is(.portal-section-head,.giveaway-section-head) {
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
}
body:not(.admin-page) :is(.portal-section-head,.giveaway-section-head) > * {
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}
body:not(.admin-page) :is(.service-section-heading,.tascar-section-head,.work-project-head,.work-detail,.work-next-panel) {
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}

/* Buttons and action groups under centred copy should visually follow the heading. */
body:not(.admin-page) :is(
  .service-cta-actions,
  .tascar-footer-actions,
  .work-actions,
  .giveaway-actions,
  .portal-form-actions,
  .portal-library-actions
) {
  justify-content:center !important;
}

/* Mobile: status rows become one centred stack rather than retaining desktop columns. */
@media (max-width:750px) {
  body:not(.admin-page) .service-row {
    grid-template-columns:1fr !important;
    gap:8px !important;
  }
  body:not(.admin-page) .service-row .desc {
    grid-column:auto !important;
    grid-row:auto !important;
  }
  body:not(.admin-page) .status-overall {
    justify-self:center !important;
  }
}

/* Detailed information cards: remove the remaining desktop number/text split
   so each subsection heading sits on the same centre line as the page. */
body:not(.admin-page) .service-detail-card {
  grid-template-columns:1fr !important;
  justify-items:center !important;
  align-items:start !important;
  gap:14px !important;
  text-align:center !important;
}
body:not(.admin-page) .service-detail-card > * {
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}
body:not(.admin-page) .service-detail-number {
  justify-self:center !important;
}
