/* ==========================================================================
   OneSalone World — shared styles
   One file, used by every page. No build step, no framework.
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Inter:wght@400;500;600;700;800&display=swap');

:root{
  /* Brand colors sampled from the OneSalone World mark */
  --navy: #0B2472;
  --navy-ink: #081A55;
  --navy-soft: #12318F;
  --green: #0DA61E;
  --green-ink: #0A8A19;
  --gold: #D3A527;
  --gold-ink: #B8890F;

  /* Neutrals */
  --ink: #12162B;
  --ink-soft: #4A5074;
  --mist: #F6F7FC;
  --mist-2: #EEF0FA;
  --line: #E1E4F0;
  --paper: #FFFFFF;

  --radius-sm: 10px;
  --radius: 16px;
  --radius-lg: 24px;
  --shadow-sm: 0 1px 2px rgba(11,36,114,0.06), 0 1px 1px rgba(11,36,114,0.04);
  --shadow: 0 8px 24px rgba(11,36,114,0.10);
  --shadow-lg: 0 20px 48px rgba(11,36,114,0.16);

  --container: 1160px;
  --font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

*, *::before, *::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin:0;
  font-family: var(--font-body);
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
  line-height: 1.55;
  font-size: 16px;
}
img{ max-width:100%; display:block; }
a{ color: inherit; }
h1,h2,h3,h4{
  font-family: var(--font-display);
  color: var(--navy-ink);
  line-height: 1.15;
  margin: 0 0 0.5em;
  font-weight: 600;
}
p{ margin: 0 0 1em; }
ul{ margin:0; padding:0; }
button{ font-family: inherit; }

.container{ max-width: var(--container); margin: 0 auto; padding: 0 24px; }
.container-narrow{ max-width: 760px; margin: 0 auto; padding: 0 24px; }

/* Skip link for keyboard/screen-reader users */
.skip-link{
  position:absolute; left:-9999px; top:0; background:var(--navy); color:#fff;
  padding:12px 18px; border-radius:0 0 10px 0; z-index:200; font-weight:600;
}
.skip-link:focus{ left:0; }

:focus-visible{ outline: 3px solid var(--gold); outline-offset: 2px; }

/* ---------- Top notice bar ---------- */
.notice-bar{
  background: var(--navy-ink); color:#fff; font-size: 13.5px;
  text-align:center; padding: 9px 16px;
}
.notice-bar a{ color: #FFE9A8; text-decoration: underline; }

/* ---------- Header / nav ---------- */
.site-header{
  position: sticky; top:0; z-index: 100;
  background: rgba(255,255,255,0.92);
  backdrop-filter: saturate(180%) blur(10px);
  border-bottom: 1px solid var(--line);
}
.nav-row{
  display:flex; align-items:center; justify-content:space-between;
  height: 76px; gap: 20px;
}
.brand{ display:flex; align-items:center; gap:10px; text-decoration:none; flex-shrink:0; }
.brand img{ height: 40px; width:auto; }
.brand-fallback{ font-family: var(--font-display); font-weight:700; font-size:1.3rem; color:var(--navy); }

.nav-links{ display:flex; align-items:center; gap: 28px; list-style:none; }
.nav-links a{
  text-decoration:none; font-weight:600; font-size: 14.5px; color: var(--ink-soft);
  padding: 6px 2px; border-bottom: 2px solid transparent;
}
.nav-links a:hover, .nav-links a.active{ color: var(--navy); border-bottom-color: var(--green); }

.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  border-radius: 999px; font-weight:700; font-size: 14.5px; text-decoration:none;
  padding: 12px 22px; border: 2px solid transparent; cursor:pointer;
  transition: transform .12s ease, box-shadow .12s ease, background .12s ease, border-color .12s ease, color .12s ease;
  line-height:1.1;
}
.btn:hover{ transform: translateY(-1px); }
.btn-primary{ background: var(--green); color:#fff; box-shadow: var(--shadow-sm); }
.btn-primary:hover{ background: var(--green-ink); }
.btn-navy{ background: var(--navy); color:#fff; }
.btn-navy:hover{ background: var(--navy-ink); }
.btn-outline{ background:#fff; color: var(--navy); border-color: var(--line); }
.btn-outline:hover{ border-color: var(--navy); }
.btn-ghost-light{ background: rgba(255,255,255,0.12); color:#fff; border-color: rgba(255,255,255,0.35); }
.btn-ghost-light:hover{ background: rgba(255,255,255,0.2); }
.btn-sm{ padding: 8px 16px; font-size: 13px; }
.btn-block{ width:100%; }
.btn[disabled]{ opacity:.55; cursor:not-allowed; transform:none; }

.menu-toggle{
  display:none; background:none; border:1px solid var(--line); border-radius:10px;
  width:44px; height:44px; align-items:center; justify-content:center; cursor:pointer;
}
.menu-toggle span, .menu-toggle span::before, .menu-toggle span::after{
  content:""; display:block; width:20px; height:2px; background: var(--navy); position:relative;
  transition: transform .15s ease, opacity .15s ease;
}
.menu-toggle span::before{ position:absolute; top:-7px; }
.menu-toggle span::after{ position:absolute; top:7px; }

.mobile-panel{ display:none; border-top:1px solid var(--line); background:#fff; }
.mobile-panel.open{ display:block; }
.mobile-panel .container{ padding: 16px 24px 22px; display:flex; flex-direction:column; gap:4px; }
.mobile-panel a{ text-decoration:none; color: var(--ink); font-weight:600; padding: 10px 4px; border-bottom:1px solid var(--mist-2); }
.mobile-panel .btn{ margin-top:10px; }

@media (max-width: 900px){
  .nav-links{ display:none; }
  .nav-cta{ display:none; }
  .menu-toggle{ display:flex; }
}

/* ---------- Hero ---------- */
.hero{
  background: radial-gradient(1200px 500px at 15% -10%, #16358E 0%, var(--navy) 55%, var(--navy-ink) 100%);
  color:#fff; padding: 68px 0 84px; position:relative; overflow:hidden;
}
.hero::after{
  content:""; position:absolute; inset:0; opacity:.10; pointer-events:none;
  background-image: radial-gradient(var(--gold) 1.5px, transparent 1.5px);
  background-size: 22px 22px;
}
.hero-inner{ position:relative; z-index:1; max-width: 820px; }
.eyebrow{
  display:inline-flex; align-items:center; gap:8px; background: rgba(255,255,255,0.10);
  border:1px solid rgba(255,255,255,0.22); color: #FFE9A8; font-weight:700; font-size:12.5px;
  letter-spacing:.06em; text-transform:uppercase; padding: 7px 14px; border-radius:999px; margin-bottom:22px;
}
.hero h1{ color:#fff; font-size: clamp(2.1rem, 4.4vw, 3.4rem); margin-bottom:18px; }
.hero h1 em{ font-style:normal; color:#FFE9A8; }
.hero p.lead{ color:#CBD5F5; font-size: 1.15rem; max-width:640px; margin-bottom:32px; }
.hero-ctas{ display:flex; flex-wrap:wrap; gap:14px; }

/* Search card */
.search-card{
  background:#fff; border-radius: var(--radius-lg); box-shadow: var(--shadow-lg);
  padding: 16px; margin-top:40px; display:flex; flex-wrap:wrap; gap:12px; max-width: 900px;
}
.search-field{
  flex:1 1 260px; display:flex; align-items:center; gap:10px; background: var(--mist);
  border:1px solid var(--line); border-radius: 12px; padding: 12px 14px;
}
.search-field input, .search-field select{
  border:none; background:transparent; outline:none; font-size:14.5px; color:var(--ink); width:100%; font-family:inherit;
}
.search-card .btn{ flex:0 0 auto; }

/* ---------- Sections ---------- */
section{ padding: 76px 0; }
.section-tight{ padding: 56px 0; }
.section-head{ max-width: 680px; margin-bottom: 40px; }
.kicker{
  display:block; color: var(--green-ink); font-weight:800; font-size:12.5px;
  letter-spacing:.08em; text-transform:uppercase; margin-bottom:10px;
}
.section-head h2{ font-size: clamp(1.6rem, 3vw, 2.2rem); }
.section-head p{ color: var(--ink-soft); font-size:1.02rem; }
.bg-mist{ background: var(--mist); }
.bg-navy{ background: var(--navy-ink); color:#fff; }
.bg-navy .kicker{ color:#FFE9A8; }
.bg-navy h2{ color:#fff; }
.bg-navy p{ color:#C7CEEE; }

/* Feature grid */
.grid{ display:grid; gap: 24px; }
.grid-2{ grid-template-columns: repeat(2, 1fr); }
.grid-3{ grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px){ .grid-2, .grid-3{ grid-template-columns: 1fr; } }

.check-item{ display:flex; gap:12px; align-items:flex-start; margin-bottom:16px; }
.check-dot{
  flex:0 0 auto; width:26px; height:26px; border-radius:50%; background: #E7F8E9; color: var(--green-ink);
  display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:800; margin-top:2px;
}

.stat-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:16px; margin-top:28px; }
.stat-card{ background: rgba(255,255,255,0.08); border:1px solid rgba(255,255,255,0.16); border-radius: var(--radius); padding:20px; }
.stat-num{ font-family: var(--font-display); font-size: 2.1rem; font-weight:700; color:#FFE9A8; }
.stat-label{ font-size:12.5px; color:#C7CEEE; margin-top:4px; }
@media (max-width: 700px){ .stat-grid{ grid-template-columns:1fr; } }

/* ---------- Cards (directory) ---------- */
.filter-row{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; justify-content:space-between; margin-bottom: 28px; gap-row:16px;}
.chip-row{ display:flex; flex-wrap:wrap; gap:8px; }
.chip{
  background:#fff; border:1px solid var(--line); color: var(--ink-soft); font-weight:700; font-size:13px;
  padding: 9px 16px; border-radius:999px; cursor:pointer; transition: all .12s ease;
}
.chip:hover{ border-color: var(--green); }
.chip.active{ background: var(--navy); border-color: var(--navy); color:#fff; }

.org-card{
  background:#fff; border:1px solid var(--line); border-radius: var(--radius); padding: 22px;
  display:flex; flex-direction:column; gap:14px; box-shadow: var(--shadow-sm); transition: box-shadow .15s ease, transform .15s ease;
}
.org-card:hover{ box-shadow: var(--shadow); transform: translateY(-2px); }
.org-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:10px; }
.badge{
  display:inline-flex; align-items:center; gap:6px; font-size:11.5px; font-weight:800; letter-spacing:.03em;
  padding: 5px 11px; border-radius:999px; text-transform:uppercase;
}
.badge-approved{ background:#E7F8E9; color: var(--green-ink); }
.badge-region{ background: var(--mist-2); color: var(--ink-soft); text-transform:none; font-weight:700; }
.org-card h3{ font-size:1.2rem; margin:0; }
.org-card .org-desc{ color: var(--ink-soft); font-size: 14.5px; flex:1; }
.org-meta{ display:flex; flex-wrap:wrap; gap: 10px 18px; font-size:13px; color: var(--ink-soft); border-top:1px solid var(--mist-2); padding-top:14px; }
.org-meta span{ display:inline-flex; align-items:center; gap:6px; }
.org-links{ display:flex; gap:10px; flex-wrap:wrap; }
.org-links a{ font-size:13px; font-weight:700; color: var(--green-ink); text-decoration:none; }
.org-links a:hover{ text-decoration:underline; }

.empty-state{
  text-align:center; padding: 56px 24px; background:#fff; border:1.5px dashed var(--line); border-radius: var(--radius-lg);
}
.empty-state .icon-circle{
  width:56px; height:56px; border-radius:50%; background: var(--mist-2); color: var(--navy);
  display:flex; align-items:center; justify-content:center; margin: 0 auto 18px; font-size:22px;
}
.empty-state h3{ margin-bottom:8px; }
.empty-state p{ color: var(--ink-soft); max-width: 440px; margin:0 auto 20px; }

.skeleton{ background: linear-gradient(90deg, var(--mist-2) 25%, #E2E6F5 37%, var(--mist-2) 63%); background-size: 400% 100%; animation: shimmer 1.4s ease infinite; border-radius: var(--radius); }
@keyframes shimmer{ 0%{ background-position:100% 50%; } 100%{ background-position:0 50%; } }

/* ---------- Forms ---------- */
.field{ margin-bottom: 18px; }
.field label{ display:block; font-weight:700; font-size:13px; letter-spacing:.02em; margin-bottom:7px; color: var(--ink); }
.field .hint{ font-size:12.5px; color: var(--ink-soft); margin-top:6px; }
.field input, .field select, .field textarea{
  width:100%; padding: 12px 14px; border-radius: 10px; border:1.5px solid var(--line); font-size:14.5px;
  font-family: inherit; color: var(--ink); background:#fff; outline:none; transition: border-color .12s ease;
}
.field input:focus, .field select:focus, .field textarea:focus{ border-color: var(--navy); }
.field-row{ display:grid; grid-template-columns: 1fr 1fr; gap:16px; }
@media (max-width:640px){ .field-row{ grid-template-columns:1fr; } }
.dark-card .field label{ color:#E3E7F7; }
.dark-card .field input, .dark-card .field select, .dark-card .field textarea{
  background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.18); color:#fff;
}
.dark-card .field input::placeholder, .dark-card .field textarea::placeholder{ color:#8B93BE; }
.dark-card .field .hint{ color:#9AA2CB; }

.panel{ background:#fff; border:1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow); padding: 34px; }
.dark-card{ background: #101A4A; border:1px solid rgba(255,255,255,0.08); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); padding: 34px; color:#fff; }

.form-msg{ border-radius:12px; padding:14px 16px; font-size:14px; font-weight:600; margin-top:16px; display:none; }
.form-msg.show{ display:block; }
.form-msg.success{ background:#E7F8E9; color: var(--green-ink); }
.form-msg.error{ background:#FDEAEA; color:#B3261E; }

/* ---------- Chat / AI intake ---------- */
.chat-shell{ display:flex; flex-direction:column; gap:16px; }
.chat-log{
  background: rgba(0,0,0,0.18); border:1px solid rgba(255,255,255,0.12); border-radius: var(--radius);
  padding: 18px; height: 380px; overflow-y:auto; display:flex; flex-direction:column; gap:14px;
}
.msg{ display:flex; gap:10px; max-width: 88%; }
.msg.from-user{ align-self:flex-end; flex-direction:row-reverse; }
.msg-avatar{
  flex:0 0 auto; width:30px; height:30px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:800; color:#fff;
}
.msg.from-bot .msg-avatar{ background: var(--green); }
.msg.from-user .msg-avatar{ background:#3A4380; }
.msg-bubble{ background: rgba(255,255,255,0.08); border:1px solid rgba(255,255,255,0.10); border-radius: 14px; padding: 12px 15px; font-size:14.5px; line-height:1.5; color:#EDEFFB; }
.msg.from-user .msg-bubble{ background: var(--green); color:#fff; border-color:transparent; }
.msg-bubble.typing{ display:flex; gap:5px; align-items:center; padding:14px 16px; }
.dot{ width:6px; height:6px; border-radius:50%; background:#C7CEEE; animation: bounce 1.2s infinite ease-in-out; }
.dot:nth-child(2){ animation-delay:.15s; } .dot:nth-child(3){ animation-delay:.3s; }
@keyframes bounce{ 0%,80%,100%{ transform: translateY(0); opacity:.5;} 40%{ transform: translateY(-4px); opacity:1;} }

.chat-input-row{ display:flex; gap:10px; }
.chat-input-row input{
  flex:1; padding:14px 16px; border-radius:12px; border:1.5px solid rgba(255,255,255,0.18);
  background: rgba(255,255,255,0.06); color:#fff; font-size:14.5px; outline:none;
}
.chat-input-row input:focus{ border-color: var(--green); }
.chat-input-row input::placeholder{ color:#8B93BE; }

.mode-toggle{ display:inline-flex; background: rgba(255,255,255,0.08); border-radius:999px; padding:4px; gap:4px; }
.mode-toggle button{
  border:none; background:transparent; color:#C7CEEE; font-weight:700; font-size:13px; padding:8px 16px; border-radius:999px; cursor:pointer;
}
.mode-toggle button.active{ background: var(--green); color:#fff; }

/* ---------- Steps / how it works ---------- */
.steps{ counter-reset: step; display:grid; grid-template-columns: repeat(3,1fr); gap:24px; }
@media (max-width:900px){ .steps{ grid-template-columns:1fr; } }
.step-card{ background:#fff; border:1px solid var(--line); border-radius: var(--radius); padding:24px; position:relative; }
.step-num{
  width:38px; height:38px; border-radius:50%; background: var(--navy); color:#fff; font-weight:800;
  display:flex; align-items:center; justify-content:center; margin-bottom:14px; font-family: var(--font-display);
}

/* ---------- Footer ---------- */
.site-footer{ background: var(--navy-ink); color:#C7CEEE; padding: 56px 0 30px; }
.footer-grid{ display:grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 36px; padding-bottom: 36px; border-bottom:1px solid rgba(255,255,255,0.12); }
@media (max-width:900px){ .footer-grid{ grid-template-columns: 1fr 1fr; } }
@media (max-width:560px){ .footer-grid{ grid-template-columns: 1fr; } }
.footer-grid h4{ color:#fff; font-size:13px; text-transform:uppercase; letter-spacing:.06em; margin-bottom:16px; font-family: var(--font-body); font-weight:800; }
.footer-grid ul{ list-style:none; display:flex; flex-direction:column; gap:10px; }
.footer-grid a{ color:#C7CEEE; text-decoration:none; font-size:14px; }
.footer-grid a:hover{ color:#fff; }
.footer-brand p{ color:#9AA2CB; font-size:13.5px; max-width:280px; }
.footer-bottom{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; padding-top:24px; font-size:13px; color:#8B93BE; }
.footer-social{ display:flex; gap:12px; }
.footer-social a{ width:36px; height:36px; border-radius:50%; background: rgba(255,255,255,0.08); display:flex; align-items:center; justify-content:center; text-decoration:none; color:#fff; }
.footer-social a:hover{ background: var(--green); }

/* ---------- Newsletter ---------- */
.newsletter-row{ display:flex; gap:10px; flex-wrap:wrap; }
.newsletter-row input{ flex:1 1 240px; padding:13px 16px; border-radius:10px; border:1.5px solid rgba(255,255,255,0.18); background: rgba(255,255,255,0.06); color:#fff; font-size:14.5px; }
.newsletter-row input::placeholder{ color:#8B93BE; }

/* ---------- Utility ---------- */
.text-center{ text-align:center; }
.mt-0{ margin-top:0; } .mb-0{ margin-bottom:0; }
.small{ font-size:13px; }
.muted{ color: var(--ink-soft); }
.visually-hidden{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }
.divider{ height:1px; background: var(--line); border:none; margin: 32px 0; }
.pill-note{ display:inline-flex; align-items:center; gap:8px; background:#FFF6E0; color:#8A6512; border:1px solid #F3DFA0; padding:8px 14px; border-radius:999px; font-size:13px; font-weight:700; }

/* ---------- Admin ---------- */
.admin-shell{ display:flex; min-height: calc(100vh - 76px); }
.admin-table{ width:100%; border-collapse: collapse; font-size:14px; }
.admin-table th{ text-align:left; font-size:12px; text-transform:uppercase; letter-spacing:.04em; color: var(--ink-soft); border-bottom:1px solid var(--line); padding: 10px 12px; }
.admin-table td{ padding: 14px 12px; border-bottom:1px solid var(--mist-2); vertical-align:top; }
.tabs{ display:flex; gap:6px; border-bottom:1px solid var(--line); margin-bottom:24px; }
.tab-btn{ background:none; border:none; padding:12px 18px; font-weight:700; color: var(--ink-soft); cursor:pointer; border-bottom:3px solid transparent; }
.tab-btn.active{ color: var(--navy); border-bottom-color: var(--green); }

/* ---------- Simple reveal ---------- */
.hidden{ display:none !important; }
