/*
  Vibe Otter global styles for spoke sites.

  This file is the official Vibe Otter look: design tokens and the classes for
  the standard Vibe Otter header, footer, and build bar. It is copied into a
  session when an admin designates it as a spoke. Do not edit this file inside
  a site — put page-specific styles in the site's own stylesheets.

  Every class name and CSS variable here is vo- prefixed, so linking this file
  never changes the site's own elements; it only styles the markup below.

  The navbar is position: fixed, so give the page's first section roughly
  90px of top padding to clear it.

  Standard header markup (place right after <body>):

  <nav class="vo-navbar">
      <div class="vo-nav-container">
          <a href="https://vibeotter.com/" class="vo-nav-logo">
              <img src="https://vibeotter.com/images/logo-small.png" alt="Vibe Otter" class="vo-logo-img" width="52" height="52" decoding="async">
              <span class="vo-logo-text">Vibe Otter</span>
          </a>
          <div class="vo-nav-links vo-desktop-only">
              <a href="https://community.vibeotter.com">Community</a>
              <a href="https://vibeotter.com/webdesign">Web Design</a>
              <a href="https://marketing.vibeotter.com">Marketing</a>
              <a href="https://vibeotter.com/pricing.html">Pricing</a>
              <a href="https://vibeotter.com/blog.html">Blog</a>
              <a href="https://vibeotter.com/support.html">Support</a>
          </div>
          <div class="vo-nav-actions vo-desktop-only">
              <a class="vo-btn-secondary" href="https://vibeotter.com/dashboard.html">Login</a>
          </div>
          <button class="vo-mobile-menu-toggle" aria-label="Toggle mobile menu">
              <span class="vo-hamburger-line"></span>
              <span class="vo-hamburger-line"></span>
              <span class="vo-hamburger-line"></span>
          </button>
      </div>
      <div class="vo-mobile-menu">
          <div class="vo-mobile-menu-content">
              <a href="https://community.vibeotter.com" class="vo-mobile-menu-item">Community</a>
              <a href="https://vibeotter.com/webdesign" class="vo-mobile-menu-item">Web Design</a>
              <a href="https://marketing.vibeotter.com" class="vo-mobile-menu-item">Marketing</a>
              <a href="https://vibeotter.com/pricing.html" class="vo-mobile-menu-item">Pricing</a>
              <a href="https://vibeotter.com/blog.html" class="vo-mobile-menu-item">Blog</a>
              <a href="https://vibeotter.com/support.html" class="vo-mobile-menu-item">Support</a>
              <a class="vo-btn-secondary vo-mobile-login" href="https://vibeotter.com/dashboard.html">Login</a>
          </div>
      </div>
  </nav>

  Standard footer markup (place right before the closing body tag):

  <footer class="vo-footer">
      <div class="vo-footer-container">
          <div class="vo-footer-grid">
              <div class="vo-footer-column">
                  <h4>Company</h4>
                  <a href="https://vibeotter.com/about.html">About</a>
                  <a href="https://vibeotter.com/blog.html">Blog</a>
              </div>
              <div class="vo-footer-column">
                  <h4>Product</h4>
                  <a href="https://vibeotter.com/pricing.html">Pricing</a>
                  <a href="https://vibeotter.com/support.html">Support</a>
              </div>
              <div class="vo-footer-column">
                  <h4>Legal</h4>
                  <a href="https://vibeotter.com/privacy.html">Privacy</a>
                  <a href="https://vibeotter.com/terms.html">Terms</a>
              </div>
          </div>
          <div class="vo-footer-bottom">
              <a href="https://vibeotter.com/" class="vo-footer-logo" style="text-decoration: none; color: inherit;">
                  <img src="https://vibeotter.com/images/otter-relaxed.svg" alt="Vibe Otter" class="vo-logo-emoji" width="32" height="32">
                  <span>&copy; 2025 VibeOtter</span>
              </a>
          </div>
      </div>
  </footer>

  Standard build bar markup (place it where the page invites visitors to
  build their own site):

  <!-- Vibe Otter build bar — use exactly as written; page-specific placeholder text may be customized -->
  <section class="vo-build-cta">
    <div class="vo-build-container">
      <h2 class="vo-build-heading">Build a website like this</h2>
      <p class="vo-build-sub">Describe your idea and Vibe Otter builds it for you in minutes.</p>
      <div class="vo-build-bar-wrapper">
        <div class="vo-build-otter">
          <img src="https://vibeotter.com/images/otter-waving.svg" alt="Vibe Otter" width="60" height="60" decoding="async">
          <div class="vo-build-trial-bubble">7-Day Free Trial!</div>
        </div>
        <form class="vo-build-bar" action="https://vibeotter.com/" method="get">
          <input type="text" name="prompt" class="vo-build-input" placeholder="Describe the website you want…" aria-label="Describe your website">
          <button type="submit" class="vo-build-btn" aria-label="Build it">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
              <line x1="22" y1="2" x2="11" y2="13"></line>
              <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>
            </svg>
          </button>
        </form>
      </div>
    </div>
  </section>

  Small script for the mobile menu toggle (place before the closing body tag):

  <script>
      document.querySelector('.vo-mobile-menu-toggle').addEventListener('click', function() {
          this.classList.toggle('active');
          document.querySelector('.vo-mobile-menu').classList.toggle('active');
      });
  </script>
*/

:root {
    --vo-bg-primary: #FFFCF7;
    --vo-bg-secondary: #F5F0E8;
    --vo-bg-tertiary: #EDE6DB;
    --vo-text-primary: #3D3229;
    --vo-text-secondary: #6B5D50;
    --vo-text-tertiary: #9A8B7A;
    --vo-border-color: rgba(45, 125, 125, 0.15);
    --vo-accent-primary: #2D7D7D;
    --vo-shadow-md: 0 6px 20px rgba(61, 50, 41, 0.08), 0 2px 6px rgba(61, 50, 41, 0.05);
    --vo-ease-snappy: cubic-bezier(0.2, 0, 0, 1);
    --vo-duration-med: 200ms;
}

/* Component base — replaces global body/* rules so site styles are untouched */

.vo-navbar, .vo-navbar *,
.vo-footer, .vo-footer *,
.vo-build-cta, .vo-build-cta * {
    box-sizing: border-box;
}

.vo-navbar, .vo-footer, .vo-build-cta {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    line-height: 1.6;
    color: var(--vo-text-primary);
    margin: 0;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Navbar */

.vo-navbar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    background-color: rgba(255, 252, 247, 0.92);
    border-bottom: none;
    z-index: 1000;
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    box-shadow: 0 1px 0 0 rgba(45, 125, 125, 0.08), 0 4px 12px rgba(61, 50, 41, 0.04);
}

.vo-navbar::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 2px;
    background: linear-gradient(90deg, transparent, rgba(212, 165, 116, 0.4) 20%, rgba(45, 125, 125, 0.5) 50%, rgba(212, 165, 116, 0.4) 80%, transparent);
}

.vo-nav-container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 1rem 2rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.vo-nav-logo {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 1.25rem;
    font-weight: 600;
    text-decoration: none;
}

.vo-logo-emoji {
    font-size: 1.5rem;
    vertical-align: middle;
    display: inline-block;
}

.vo-logo-img {
    height: 1.8em;
    width: auto;
    vertical-align: middle;
    margin-right: 0.3rem;
    background: transparent;
    image-rendering: auto;
}

.vo-logo-text {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-size: 1.4em;
    color: var(--vo-accent-primary);
    font-weight: 700;
}

.vo-nav-links {
    display: flex;
    gap: 2rem;
}

.vo-nav-links a {
    color: var(--vo-text-secondary);
    text-decoration: none;
    font-size: 0.95rem;
    transition: color 0.2s;
}

.vo-nav-links a:hover {
    color: var(--vo-text-primary);
}

.vo-nav-actions {
    display: flex;
    gap: 1rem;
    align-items: center;
}

/* Buttons */

.vo-btn-primary, .vo-btn-secondary {
    padding: 0.5rem 1rem;
    border: none;
    border-radius: 0.375rem;
    font-size: 0.95rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
    display: inline-block;
    text-decoration: none;
    text-align: center;
}

.vo-btn-primary {
    background: linear-gradient(135deg, #2D7D7D 0%, #4A9B9B 100%);
    color: #FFFCF7;
    font-weight: 600;
    border: 2px solid #2D7D7D;
    border-radius: 12px;
    box-shadow: 3px 3px 0px #236060;
    position: relative;
    overflow: hidden;
    transition: all 0.15s var(--vo-ease-snappy);
}

.vo-btn-primary:hover {
    transform: translateY(-1px) translateX(-1px);
    box-shadow: 4px 4px 0px #236060;
}

.vo-btn-primary:active {
    transform: translateY(3px) translateX(3px);
    box-shadow: 0px 0px 0px #236060;
}

.vo-btn-secondary {
    background-color: transparent;
    color: var(--vo-text-primary);
    border: 2px solid rgba(45, 125, 125, 0.2);
    border-radius: 12px;
    box-shadow: 2px 2px 0px rgba(61, 50, 41, 0.1);
}

.vo-btn-secondary:hover {
    background-color: var(--vo-bg-secondary);
    border-color: var(--vo-accent-primary);
    box-shadow: 3px 3px 0px rgba(45, 125, 125, 0.15);
}

/* Footer */

.vo-footer {
    background: rgba(245, 240, 232, 0.6);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-top: 1px solid rgba(45, 125, 125, 0.12);
    padding: 4rem 2rem 2rem;
}

.vo-footer-container {
    max-width: 1200px;
    margin: 0 auto;
}

.vo-footer-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 3rem;
    margin-bottom: 3rem;
}

.vo-footer-column h4 {
    font-size: 1rem;
    margin: 0 0 1rem;
    color: var(--vo-text-primary);
}

.vo-footer-column a {
    display: block;
    color: var(--vo-text-secondary);
    text-decoration: none;
    font-size: 0.95rem;
    margin-bottom: 0.5rem;
    transition: color 0.2s;
}

.vo-footer-column a:hover {
    color: var(--vo-text-primary);
}

.vo-footer-bottom {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 2rem;
    border-top: 1px solid var(--vo-border-color);
}

.vo-footer-logo {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--vo-text-secondary);
}

/* Build bar — matches the homepage input bar */

.vo-build-cta {
    background: var(--vo-bg-secondary);
    padding: 4rem 2rem;
    text-align: center;
}

.vo-build-container {
    max-width: 640px;
    margin: 0 auto;
}

.vo-build-heading {
    font-size: 1.75rem;
    color: var(--vo-text-primary);
    margin: 0 0 0.5rem;
}

.vo-build-sub {
    color: var(--vo-text-secondary);
    margin: 0 0 1.5rem;
}

.vo-build-bar-wrapper {
    max-width: 600px;
    position: relative;
    margin: 2.5rem auto 0;
}

.vo-build-otter {
    position: absolute;
    left: -30px;
    top: 50%;
    transform: translateY(-50%);
    width: 60px;
    height: 60px;
    z-index: 10;
}

.vo-build-otter img {
    width: 100%;
    height: 100%;
    filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.1));
}

.vo-build-trial-bubble {
    position: absolute;
    bottom: 85%;
    left: calc(45% + 10px);
    background: #2D7D7D;
    color: white;
    font-weight: 700;
    font-size: 0.8rem;
    letter-spacing: 0.02em;
    padding: 0.35rem 0.8rem;
    border-radius: 1rem;
    white-space: nowrap;
    pointer-events: none;
    animation: vo-trial-float 3s ease-in-out infinite;
    z-index: 11;
}

.vo-build-trial-bubble::before {
    content: '';
    position: absolute;
    bottom: -6px;
    left: 4px;
    width: 12px;
    height: 12px;
    background: #2D7D7D;
    border-radius: 0 0 0 4px;
    clip-path: polygon(0% 0%, 100% 0%, 0% 100%);
}

@keyframes vo-trial-float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-3px); }
}

.vo-build-bar {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    background: rgba(255, 252, 247, 0.9);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 2.5px solid rgba(45, 125, 125, 0.3);
    border-radius: 16px;
    padding: 0.5rem;
    box-shadow: 4px 4px 0px #4A9B9B;
    transition: all 0.2s;
    margin: 0;
}

.vo-build-bar:focus-within {
    border-color: #2D7D7D;
    box-shadow: 5px 5px 0px #4A9B9B;
}

.vo-build-input {
    flex: 1;
    min-width: 0;
    background: none;
    border: none;
    padding: 0.75rem 1rem 0.75rem 1.5rem;
    font-size: 1rem;
    font-family: inherit;
    color: #3D3229;
    outline: none;
}

.vo-build-input::placeholder {
    color: #9A8B7A;
}

.vo-build-btn {
    background: linear-gradient(135deg, #2D7D7D 0%, #4A9B9B 100%);
    border: 2px solid #2D7D7D;
    border-radius: 10px;
    padding: 0.75rem 1.25rem;
    color: #FFFCF7;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.15s var(--vo-ease-snappy);
    font-weight: 600;
    box-shadow: 2px 2px 0px #236060;
}

.vo-build-btn:hover {
    transform: translateY(-1px) translateX(-1px);
    box-shadow: 3px 3px 0px #236060;
}

.vo-build-btn:active {
    transform: translateY(2px) translateX(2px);
    box-shadow: 0px 0px 0px #236060;
}

/* Mobile menu */

.vo-mobile-menu-toggle {
    display: none;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 40px;
    height: 40px;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
}

.vo-hamburger-line {
    display: block;
    width: 25px;
    height: 3px;
    background-color: var(--vo-text-primary);
    margin: 3px 0;
    transition: 0.3s;
    border-radius: 2px;
}

.vo-mobile-menu-toggle.active .vo-hamburger-line:nth-child(1) {
    transform: rotate(-45deg) translate(-5px, 6px);
}

.vo-mobile-menu-toggle.active .vo-hamburger-line:nth-child(2) {
    opacity: 0;
}

.vo-mobile-menu-toggle.active .vo-hamburger-line:nth-child(3) {
    transform: rotate(45deg) translate(-5px, -6px);
}

.vo-mobile-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: rgba(255, 252, 247, 0.95);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border-bottom: 1px solid rgba(45, 125, 125, 0.12);
    box-shadow: var(--vo-shadow-md);
}

.vo-mobile-menu.active {
    display: block;
}

.vo-mobile-menu-content {
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.vo-mobile-menu-item {
    display: block;
    padding: 0.75rem 1rem;
    color: var(--vo-text-primary);
    text-decoration: none;
    border-radius: 0.5rem;
    transition: background-color 0.2s;
}

.vo-mobile-menu-item:hover {
    background-color: var(--vo-bg-tertiary);
}

.vo-mobile-login {
    margin-top: 0.5rem;
    width: 100%;
}

.vo-desktop-only {
    display: flex;
}

@media (max-width: 768px) {
    .vo-nav-container {
        padding: 0.75rem 1rem;
    }

    .vo-desktop-only {
        display: none !important;
    }

    .vo-mobile-menu-toggle {
        display: flex;
    }

    .vo-footer-bottom {
        flex-direction: column;
        gap: 1rem;
    }

    .vo-build-bar-wrapper {
        margin-left: 1rem;
        margin-right: 1rem;
    }

    .vo-build-input {
        font-size: 0.9rem;
        padding: 0.6rem 0.8rem;
    }

    .vo-build-btn {
        padding: 0.6rem 1rem;
    }

    .vo-build-trial-bubble {
        font-size: 0.7rem;
        padding: 0.3rem 0.65rem;
        bottom: 90%;
        left: calc(40% + 15px);
    }
}

@media (max-width: 480px) {
    .vo-build-bar-wrapper {
        margin-left: 0.75rem;
        margin-right: 0.75rem;
    }

    .vo-build-bar {
        padding: 0.4rem;
        gap: 0.3rem;
    }

    .vo-build-input {
        padding: 0.5rem 0.6rem;
        font-size: 16px; /* Prevents zoom on iOS */
    }

    .vo-build-btn {
        padding: 0.5rem 0.8rem;
    }

    .vo-build-btn svg {
        width: 18px;
        height: 18px;
    }

    .vo-build-trial-bubble {
        font-size: 0.65rem;
        padding: 0.25rem 0.55rem;
        bottom: 90%;
        left: calc(35% + 15px);
    }
}
