/*
Theme Name: LaborNexa Union
Theme URI: https://example.invalid/labornexa-union
Author: LaborNexa Systems, Inc.
Description: A native block theme for unions, lodges, locals, and member associations.
Version: 0.2.0
Requires at least: 6.6
Requires PHP: 8.1
Text Domain: labornexa-union
*/

:root {
  --ln-shadow-sm: 0 8px 22px rgba(8, 27, 48, 0.08);
  --ln-shadow-lg: 0 24px 54px rgba(8, 27, 48, 0.16);
  --ln-radius: 12px;
}

html { scroll-behavior: smooth; }
body { text-wrap: pretty; }
a { text-underline-offset: 0.18em; }
:focus-visible { outline: 3px solid var(--wp--preset--color--gold); outline-offset: 3px; }

.ln-announcement {
  border-bottom: 1px solid rgba(255,255,255,.18);
  font-size: .82rem;
  letter-spacing: .035em;
}
.ln-announcement a { color: inherit; font-weight: 700; }
.ln-site-header { box-shadow: 0 3px 18px rgba(7, 25, 43, .09); position: relative; z-index: 20; }
.ln-brand-mark {
  align-items: center; background: var(--wp--preset--color--navy); border: 3px solid var(--wp--preset--color--gold);
  border-radius: 50%; color: white; display: inline-flex; font-family: var(--wp--preset--font-family--heading);
  font-size: .75rem; font-weight: 800; height: 48px; justify-content: center; letter-spacing: .08em; width: 48px;
}
.ln-site-title a { text-decoration: none; }
.ln-nav .wp-block-navigation__container { column-gap: 1rem; flex-wrap: nowrap; }
.ln-nav .wp-block-navigation-item__content { font-size: .86rem; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; }
.ln-nav .wp-block-navigation-item__content:hover { color: var(--wp--preset--color--blue); }

.ln-hero { overflow: hidden; position: relative; }
.ln-hero::before {
  background: radial-gradient(circle, rgba(209,161,45,.24) 0 2px, transparent 3px); background-size: 26px 26px;
  content: ""; height: 280px; opacity: .45; position: absolute; right: -40px; top: 20px; transform: rotate(-8deg); width: 430px;
}
.ln-eyebrow { letter-spacing: .15em; text-transform: uppercase; }
.ln-hero-title { max-width: 920px; }
.ln-hero-copy { max-width: 700px; }
.ln-hero-card { backdrop-filter: blur(8px); border: 1px solid rgba(255,255,255,.2); box-shadow: var(--ln-shadow-lg); }
.ln-seal {
  align-items:center; aspect-ratio:1; background: var(--wp--preset--color--navy); border: 7px double var(--wp--preset--color--gold);
  border-radius: 50%; color: #fff; display:flex; flex-direction:column; justify-content:center; margin-inline:auto; max-width:240px;
  text-align:center; transform: rotate(-2deg);
}
.ln-seal strong { font-family: var(--wp--preset--font-family--heading); font-size: 3.5rem; line-height: .9; }
.ln-seal span { font-size: .7rem; font-weight:800; letter-spacing:.18em; margin-top:.7rem; text-transform:uppercase; }

.ln-stat { border-left: 1px solid var(--wp--preset--color--mist); }
.ln-stat:first-child { border-left: 0; }
.ln-card { background: #fff; border: 1px solid var(--wp--preset--color--mist); border-radius: var(--ln-radius); box-shadow: var(--ln-shadow-sm); overflow: hidden; transition: transform .18s ease, box-shadow .18s ease; }
.ln-card:hover { box-shadow: var(--ln-shadow-lg); transform: translateY(-3px); }
.ln-icon {
  align-items:center; background:var(--wp--preset--color--pale-gold); border-radius:10px; color:var(--wp--preset--color--navy);
  display:inline-flex; font-family:var(--wp--preset--font-family--heading); font-size:1.1rem; font-weight:800; height:44px; justify-content:center; width:44px;
}
.ln-section-rule { height: 4px; margin-left: 0; width: 64px; }
.ln-event-date { min-width: 72px; text-align: center; }
.ln-event-date strong { display:block; font-family:var(--wp--preset--font-family--heading); font-size:1.75rem; line-height:1; }
.ln-event-date span { font-size:.72rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.ln-doc-row { border-bottom: 1px solid var(--wp--preset--color--mist); }
.ln-doc-row:last-child { border-bottom: 0; }
.ln-officer-card { position:relative; }
.ln-officer-avatar {
  align-items:center; background:linear-gradient(145deg,var(--wp--preset--color--navy),var(--wp--preset--color--blue)); border-radius:50%;
  color:white; display:flex; font-family:var(--wp--preset--font-family--heading); font-size:1.3rem; font-weight:800; height:72px; justify-content:center; width:72px;
}
.ln-badge { border-radius:999px; display:inline-block; font-size:.72rem; font-weight:800; letter-spacing:.07em; padding:.35rem .65rem; text-transform:uppercase; }
.ln-page-hero { border-bottom: 5px solid var(--wp--preset--color--gold); }
.ln-footer a { color: #fff; }
.ln-footer a:hover { color: var(--wp--preset--color--gold); }
.ln-footer .wp-block-navigation { color: white; }
.ln-gallery-tile { align-items:flex-end; background:linear-gradient(145deg,#244e73,#0c2136); border-radius:var(--ln-radius); display:flex; min-height:220px; overflow:hidden; padding:1.25rem; position:relative; }
.ln-gallery-tile::after { background:radial-gradient(circle at 70% 20%,rgba(209,161,45,.38),transparent 40%); content:""; inset:0; position:absolute; }
.ln-gallery-tile > * { position:relative; z-index:1; }
.ln-notice { border-left: 5px solid var(--wp--preset--color--gold); }
.ln-connector-placeholder { background:#f7f9fb; border:1px dashed #8aa0b5; border-radius:8px; color:#415467; padding:1rem; }
.ln-template-switcher {
  align-items:center; background:#fff; border-bottom:1px solid var(--wp--preset--color--mist); display:flex; gap:.45rem;
  justify-content:center; min-height:46px; padding:.45rem 1rem;
}
.ln-template-switcher__label { color:var(--wp--preset--color--slate); font-size:.72rem; font-weight:800; letter-spacing:.1em; margin-right:.3rem; text-transform:uppercase; }
.ln-template-switcher__link {
  border:1px solid var(--wp--preset--color--mist); border-radius:999px; color:var(--wp--preset--color--navy); font-size:.76rem;
  font-weight:800; line-height:1; padding:.55rem .8rem; text-decoration:none;
}
.ln-template-switcher__link:hover, .ln-template-switcher__link:focus-visible, .ln-template-switcher__link.is-active {
  background:var(--wp--preset--color--navy); border-color:var(--wp--preset--color--navy); color:#fff;
}

.ln-service-hero { overflow:hidden; position:relative; }
.ln-service-hero::after {
  background:linear-gradient(135deg,transparent 48%,rgba(255,255,255,.07) 48% 52%,transparent 52%);
  background-size:34px 34px; content:""; inset:0 0 0 58%; opacity:.7; pointer-events:none; position:absolute;
}
.ln-service-hero > * { position:relative; z-index:1; }
.ln-service-emblem {
  align-items:center; aspect-ratio:1; background:rgba(255,255,255,.08); border:5px solid currentColor; color:var(--wp--preset--color--gold);
  display:flex; flex-direction:column; justify-content:center; margin-inline:auto; max-width:230px; padding:2rem; text-align:center;
}
.ln-service-emblem--police { border-radius:50%; clip-path:polygon(50% 0,61% 18%,82% 13%,87% 34%,100% 50%,87% 66%,82% 87%,61% 82%,50% 100%,39% 82%,18% 87%,13% 66%,0 50%,13% 34%,18% 13%,39% 18%); }
.ln-service-emblem--fire { border-radius:46% 46% 50% 50% / 34% 34% 62% 62%; }
.ln-service-emblem strong { font-size:clamp(1.8rem,4vw,3rem); line-height:1; }
.ln-service-emblem span { font-size:.7rem; font-weight:800; letter-spacing:.14em; margin-top:.75rem; text-transform:uppercase; }
.ln-service-strip { border-block:1px solid var(--wp--preset--color--mist); }
.ln-service-strip .wp-block-column { border-left:1px solid var(--wp--preset--color--mist); }
.ln-service-strip .wp-block-column:first-child { border-left:0; }
.ln-service-kicker { font-size:.76rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase; }
.ln-service-card { border-top:5px solid var(--wp--preset--color--gold); height:100%; }

/* Demo previews scope their palettes to the page template so visitors can compare designs side by side. */
body.page-template-police-homepage {
  --wp--preset--color--navy:#071b2d; --wp--preset--color--blue:#176497; --wp--preset--color--gold:#bfcbd4;
  --wp--preset--color--pale-gold:#e8eef2; --wp--preset--color--ink:#102535; --wp--preset--color--slate:#526b7d;
  --wp--preset--color--mist:#cbd8e1; --wp--preset--color--cloud:#edf3f7;
}
body.page-template-police-homepage .ln-announcement { background:#03111e !important; border-bottom-color:#28485f; }
body.page-template-police-homepage .ln-site-header { border-bottom:4px solid #176497; }
body.page-template-police-homepage .ln-brand-mark { background:#071b2d; border-color:#bfcbd4; border-radius:5px 5px 14px 14px; }
body.page-template-police-homepage .ln-service-hero {
  background:linear-gradient(118deg,#061521 0%,#0a2e49 62%,#176497 100%) !important;
}
body.page-template-police-homepage .ln-service-emblem { color:#dce6ed; filter:drop-shadow(0 14px 30px rgba(0,0,0,.3)); }
body.page-template-police-homepage .ln-service-strip { background:#eaf1f5 !important; }
body.page-template-police-homepage .ln-card { border-radius:4px; }

body.page-template-fire-homepage {
  --wp--preset--color--navy:#241714; --wp--preset--color--blue:#bd3028; --wp--preset--color--gold:#f1b434;
  --wp--preset--color--pale-gold:#fff0cf; --wp--preset--color--ink:#302420; --wp--preset--color--slate:#6e5e56;
  --wp--preset--color--mist:#e4d5ca; --wp--preset--color--cloud:#fbf3e9;
}
body.page-template-fire-homepage .ln-announcement { background:#4d0e09 !important; border-bottom-color:#7f2019; }
body.page-template-fire-homepage .ln-site-header { border-bottom:5px solid #bd3028; }
body.page-template-fire-homepage .ln-brand-mark { background:#bd3028; border-color:#f1b434; border-radius:50% 50% 44% 44%; }
body.page-template-fire-homepage .ln-service-hero {
  background:radial-gradient(circle at 78% 30%,rgba(241,180,52,.28),transparent 24%),linear-gradient(120deg,#1f1512 0%,#4d1510 54%,#a32720 100%) !important;
}
body.page-template-fire-homepage .ln-service-hero::after { background:repeating-linear-gradient(135deg,transparent 0 24px,rgba(255,255,255,.06) 24px 28px); }
body.page-template-fire-homepage .ln-service-emblem { color:#f1b434; filter:drop-shadow(0 14px 30px rgba(0,0,0,.38)); }
body.page-template-fire-homepage .ln-service-strip { background:#fff3df !important; }
body.page-template-fire-homepage .ln-card { border-radius:0; border-top-color:#bd3028; }
body.page-template-fire-homepage .wp-block-button__link { border-radius:0; }

@media (max-width: 1100px) {
  .ln-nav .wp-block-navigation__responsive-container:not(.is-menu-open) { display:none; }
  .ln-nav .wp-block-navigation__responsive-container-open { display:flex; }
}
@media (max-width: 900px) {
  .ln-nav .wp-block-navigation__responsive-container.is-menu-open { padding: 1.5rem; }
  .ln-nav .wp-block-navigation__responsive-container-content { align-items:flex-start !important; }
  .ln-hero::before { opacity:.24; }
  .ln-desktop-only { display:none !important; }
}
@media (max-width: 600px) {
  .ln-announcement .wp-block-group { justify-content:center; text-align:center; }
  .ln-site-header > .wp-block-group { padding-bottom:.85rem !important; padding-top:.85rem !important; }
  .ln-brand-mark { height:40px; width:40px; }
  .ln-site-title { font-size:1rem !important; }
  .ln-hero { padding-bottom:3.25rem !important; padding-top:3.25rem !important; }
  .ln-hero h1 { font-size:clamp(2.25rem,12vw,3.25rem) !important; }
  .ln-hero .wp-block-buttons { align-items:stretch; flex-direction:column; }
  .ln-hero .wp-block-button, .ln-hero .wp-block-button__link { width:100%; }
  .ln-stat { border-left:0; border-top:1px solid var(--wp--preset--color--mist); padding-top:1rem; }
  .ln-stat:first-child { border-top:0; padding-top:0; }
  .ln-event-row { align-items:flex-start !important; }
  .ln-event-date { min-width:58px; }
  .ln-card:hover { transform:none; }
  .ln-footer { text-align:center; }
  .ln-footer .wp-block-navigation { align-items:center; }
  .ln-template-switcher { flex-wrap:wrap; gap:.35rem; padding:.55rem .65rem; }
  .ln-template-switcher__label { flex-basis:100%; margin:0; text-align:center; }
  .ln-template-switcher__link { font-size:.7rem; padding:.5rem .65rem; }
  .ln-service-hero::after { inset:55% 0 0; }
  .ln-service-emblem { max-width:180px; }
  .ln-service-strip .wp-block-column { border-left:0; border-top:1px solid var(--wp--preset--color--mist); padding-top:1rem; }
  .ln-service-strip .wp-block-column:first-child { border-top:0; padding-top:0; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { scroll-behavior:auto !important; transition-duration:.01ms !important; }
}
