/*
Theme Name: U-Ville Storage
Theme URI: https://u-villestorage.com/
Author: U-Ville Storage
Author URI: https://u-villestorage.com/
Description: Warm, folksy small-town storage theme for U-Ville Storage in Unionville (Monroe, NC). Deep forest green + cream palette, Charlie the mascot, built to play nicely with Elementor. Header, footer and homepage are coded for pixel-perfect fidelity; all other pages (including the 6Storage units page) inherit the brand fonts and palette.
Version: 1.0.0
Requires at least: 6.0
Tested up to: 6.5
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: uville-storage
*/

/* =========================================================
   Brand tokens
   ========================================================= */
:root {
  --uv-green-900: #0d3b1f; /* deep forest */
  --uv-green-700: #1f7a3d; /* mid green */
  --uv-green-500: #3ea04a; /* leaf accent */
  --uv-green-200: #7fc98a;
  --uv-cream:     #f4ecd9; /* page */
  --uv-cream-100: #fffdf6; /* cards */
  --uv-cream-300: #ecdfc1;
  --uv-khaki:     #c9a86a;
  --uv-ink:       #16271c; /* warm ink */
  --uv-border:    #e3dac2;
  --uv-border-card: #e8dfc6;
  --uv-star:      #e0a92e;
  --uv-icon-bg:   #e4ecd3; /* warm soft-sage chip behind green icons (replaces cool mint #e7f1e6) */
  --uv-maxw:      1200px;

  --uv-font-display: 'Archivo Black', system-ui, sans-serif;
  --uv-font-script:  'Kaushan Script', cursive;
  --uv-font-body:    'Mulish', system-ui, sans-serif;
}

/* =========================================================
   Base / global — applies site-wide (incl. Elementor + 6Storage pages)
   ========================================================= */
* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body.uville {
  margin: 0;
  font-family: var(--uv-font-body);
  color: var(--uv-ink);
  background: var(--uv-cream);
  overflow-x: hidden;
  line-height: 1.6;
}

/* NOTE: no blanket `a` color here. A global link color (specificity 0,1,2)
   outranks the single-class button/link rules (0,1,0) and would repaint
   button text, nav, and utility links green. Content links get their color
   from the scoped `.uv-prose a` rule instead; chrome links set their own. */

/* Base heading color via :where() so it carries near-zero specificity and any
   component class (e.g. light footer headings, white amenity titles) overrides
   it cleanly — same lesson as the link-color rule above. */
.uville :where(h1, h2, h3, h4, h5, h6) {
  color: var(--uv-green-900);
  line-height: 1.1;
}

img { max-width: 100%; height: auto; }

/* Animations (from the design prototype) */
@keyframes uvFloat { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-16px); } }
@keyframes uvSpin  { to { transform: rotate(360deg); } }
@keyframes uvSway  { 0%,100% { transform: rotate(-1.5deg); } 50% { transform: rotate(1.5deg); } }
@keyframes uvPulse { 0%,100% { opacity: .5; } 50% { opacity: .85; } }

@media (prefers-reduced-motion: reduce) {
  .uv-float, .uv-spin, .uv-sway { animation: none !important; }
  html { scroll-behavior: auto; }
}

/* Lucide icons inherit current size/color from their wrapper */
body.uville [data-lucide] { display: inline-block; }

/* WordPress admin bar offset for the sticky header */
.admin-bar .uv-header { top: 32px; }
@media screen and (max-width: 782px) {
  .admin-bar .uv-header { top: 46px; }
}
