/* ==========================================================================
   Vireoland theme shell. The design system itself ships with Vireoland Core.
   Everything here is scoped to body.vl-theme so it never leaks into plugins.
   ========================================================================== */
body.vl-theme { margin: 0; background: #f8f9f5; color: #101310; font-family: var(--font-sans, "Inter", "Inter Fallback", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: clip; }
.vl-theme .vl-main { display: block; outline: none; }
.vl-theme .skip-link { position: fixed; top: 12px; left: 12px; z-index: 100000; padding: 10px 16px; border-radius: 999px; background: #a8d34a; color: #101310; font-weight: 500; text-decoration: none; transform: translateY(-160%); transition: transform .3s cubic-bezier(.22,1,.36,1); }
.vl-theme .skip-link:focus { transform: none; }
.vl-theme :focus-visible { outline: 2px solid #a8d34a; outline-offset: 3px; }

/* Plain (non-Elementor) pages & posts: readable editorial column */
.vl-theme .vl-plain-page { padding: clamp(132px, 12vw, 176px) 20px clamp(72px, 7vw, 120px); }
.vl-theme .vl-plain-page__inner { max-width: 760px; margin: 0 auto; }
.vl-theme .vl-plain-page__title { margin: 0 0 32px; font-size: clamp(2.2rem, 1.4rem + 2.6vw, 3.6rem); font-weight: 500; letter-spacing: -0.04em; line-height: 1.05; }
.vl-theme .vl-plain-page__meta { margin: 0 0 12px; font-size: 13px; color: #646b62; }
.vl-theme .vl-plain-page__media { margin: 0 0 32px; }
.vl-theme .vl-plain-page__media img { width: 100%; height: auto; border-radius: 18px; }
.vl-theme .vl-entry { font-size: 1.0625rem; line-height: 1.7; color: #2a2f29; }
.vl-theme .vl-entry > * + * { margin-top: 1.1em; }
.vl-theme .vl-entry a { color: #527609; }
.vl-theme .vl-entry img { max-width: 100%; height: auto; }
.vl-theme .vl-plain-list { list-style: none; margin: 0; padding: 0; }
.vl-theme .vl-plain-list li { display: flex; justify-content: space-between; gap: 16px; padding: 18px 0; border-top: 1px solid rgba(16,19,16,.1); }
.vl-theme .vl-plain-list a { color: inherit; font-weight: 500; text-decoration: none; }

/* Fallback header/footer (only when Vireoland Core is inactive) */
.vl-theme .vl-fallback-header { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 20px clamp(20px, 4vw, 48px); background: #101310; color: #eef2ea; }
.vl-theme .vl-fallback-header a { color: inherit; text-decoration: none; }
.vl-theme .vl-fallback-header img { height: 30px; width: auto; }
.vl-theme .vl-fallback-header ul { display: flex; flex-wrap: wrap; gap: 20px; list-style: none; margin: 0; padding: 0; }
.vl-theme .vl-fallback-footer { padding: 40px clamp(20px, 4vw, 48px); background: #101310; color: rgba(238,242,234,.62); font-size: 14px; }
.vl-theme .vl-fallback-footer a { color: inherit; }
.vl-theme .vl-fallback-footer ul { display: flex; flex-wrap: wrap; gap: 16px; list-style: none; margin: 0 0 16px; padding: 0; }

/* Back to top (same design as the original BackToTop component) */
.vl-theme .totop {
  position: fixed; right: 20px; bottom: 20px; z-index: 90; width: 52px; height: 52px; padding: 0; border: 1px solid rgba(255,255,255,.16); border-radius: 50%; display: grid; place-items: center; cursor: pointer;
  background: rgba(14,18,14,.82); color: #a8d34a; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  opacity: 0; transform: translateY(16px) scale(.9); pointer-events: none; transition: opacity .4s, transform .5s cubic-bezier(.22,1,.36,1), background .3s;
}
.vl-theme .totop[data-show="true"] { opacity: 1; transform: none; pointer-events: auto; }
.vl-theme .totop:hover { background: #a8d34a; color: #101310; }
.vl-theme .totop svg.ring { position: absolute; inset: -1px; width: calc(100% + 2px); height: calc(100% + 2px); transform: rotate(-90deg); }
.vl-theme .totop svg.ring circle { fill: none; stroke: #a8d34a; stroke-width: 1.5; stroke-dasharray: 157; stroke-dashoffset: calc(157 - 157 * var(--progress, 0)); opacity: .9; }
.vl-theme .totop svg.arr { width: 16px; height: 16px; position: relative; transition: transform .35s cubic-bezier(.22,1,.36,1); }
.vl-theme .totop:hover svg.arr { transform: translateY(-3px); }

/* Arrival wipe (original template.tsx) */
.vl-theme .ptrans { position: fixed; inset: 0; z-index: 200; pointer-events: none; display: grid; place-items: center; background: #0c180c; animation: vlPtransOut .85s cubic-bezier(.65,0,.35,1) .1s forwards; }
.vl-theme .ptrans img { width: 64px; height: auto; opacity: 0; animation: vlPtransMark .7s cubic-bezier(.22,1,.36,1) forwards; }
@keyframes vlPtransOut { to { transform: translateY(-101%); } }
@keyframes vlPtransMark { 0% { opacity: 0; transform: scale(.9); } 40% { opacity: 1; transform: none; } 100% { opacity: 0; transform: translateY(-20px); } }

/* The Elementor editor never shows theme chrome overlays */
.elementor-editor-active .totop, .elementor-editor-active .ptrans { display: none !important; }

@media (prefers-reduced-motion: reduce) {
  .vl-theme .ptrans { display: none; }
  .vl-theme .totop, .vl-theme .skip-link { transition: none; }
}
