/*
Theme Name:  Big Drop Ranch
Theme URI:   https://bigdropranch.com
Author:      Built for Big Drop Ranch
Description: Custom theme for Big Drop Ranch, Hondo, Texas. Quiet-luxury hunting, lodging and cattle. Black and white base with muted KUIU-derived accents, photography-led. No plugin dependencies.
Version:     1.0.3
Requires at least: 6.0
Tested up to:      6.7
Requires PHP:      7.4
License:     Proprietary
Text Domain: bigdrop
Tags: custom-menu, custom-logo, featured-images, translation-ready
*/

/* =========================================================
   1. CORE DESIGN SYSTEM
   Palette, type, layout. Edit colors in :root only.
   ========================================================= */
:root{
  --ink:#0B0B0A;
  --ink-2:#161614;
  --paper:#FAF9F6;
  --paper-2:#F2F0EA;
  --rule:#E2DED5;
  --rule-dk:rgba(250,249,246,.20);
  --grey:#6E6C66;
  --olive:#6B6B4E;
  --bone:#D8D1C4;
  --ser:"Newsreader","Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --sans:"Archivo","Helvetica Neue",Helvetica,Arial,sans-serif;
  --e:cubic-bezier(.22,1,.36,1);
  --pad:clamp(20px,5vw,64px);
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);
  font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}

/* ---- type ---- */
.eyebrow{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.19em;
  text-transform:uppercase;color:var(--grey)}
.eyebrow.ol{color:var(--olive)}
.h1{font-family:var(--ser);font-weight:400;font-size:clamp(40px,6.6vw,80px);
  line-height:1.04;letter-spacing:-.021em}
.h2{font-family:var(--ser);font-weight:400;font-size:clamp(30px,4.2vw,48px);
  line-height:1.13;letter-spacing:-.016em}
.h3{font-family:var(--ser);font-weight:400;font-size:clamp(21px,2.1vw,27px);
  line-height:1.25;letter-spacing:-.01em}
.lead{font-family:var(--ser);font-weight:300;font-size:clamp(19px,1.65vw,22px);
  line-height:1.62;color:#33322E;max-width:34ch}
.body{font-size:16.5px;line-height:1.75;color:#3A3934;max-width:64ch}
.cap{font-size:12.5px;letter-spacing:.02em;color:var(--grey)}
.stat{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.19em;
  text-transform:uppercase;color:var(--grey)}
.stat b{font-weight:600;color:var(--ink)}

/* ---- shell ---- */
.wrap{max-width:1280px;margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
section{padding:clamp(72px,11vw,140px) 0}
.rule{height:1px;background:var(--rule);border:0}

/* ---- header ---- */
header{position:fixed;inset:0 0 auto 0;z-index:90;transition:background .45s var(--e),border-color .45s;
  border-bottom:1px solid transparent}
header .bar{display:flex;align-items:center;gap:clamp(16px,3vw,40px);
  max-width:1280px;margin:0 auto;padding:18px var(--pad);transition:padding .45s var(--e)}
header.solid{background:var(--paper);border-bottom-color:var(--rule)}
header.solid .bar{padding-top:13px;padding-bottom:13px}
.lock{margin-right:auto;line-height:1.05}
.lock .a{font-family:var(--ser);font-size:20px;letter-spacing:-.01em;display:block}
.lock .b{font-size:9px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;
  color:var(--grey);display:block;margin-top:3px}
header:not(.solid) .lock .a,header:not(.solid) .lock .b,
header:not(.solid) nav a,header:not(.solid) .tel{color:#FAF9F6}
header:not(.solid) .lock .b,header:not(.solid) .tel{color:rgba(250,249,246,.78)}
header:not(.solid) .btn{background:transparent;border-color:rgba(250,249,246,.55);color:#FAF9F6}
header:not(.solid) .btn:before{background:var(--paper)}
header:not(.solid) .btn:hover span{color:var(--ink)}
nav{display:flex;gap:clamp(14px,2vw,28px)}
nav a{font-size:11.5px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;
  padding:6px 0;position:relative;transition:color .3s}
nav a:after{content:"";position:absolute;left:0;bottom:2px;height:1px;width:100%;
  background:var(--olive);transform:scaleX(0);transform-origin:right;transition:transform .45s var(--e)}
nav a:hover:after{transform:scaleX(1);transform-origin:left}
.tel{font-size:12px;font-weight:500;letter-spacing:.06em;white-space:nowrap}
@media(max-width:1080px){nav{display:none}}
@media(max-width:700px){
  .tel{display:none}
  header .bar{padding-top:14px;padding-bottom:14px;gap:12px}
  .lock .a{font-size:17px}
  .lock .b{font-size:8px;letter-spacing:.2em}
  .btn{padding:13px 20px;font-size:10.5px;letter-spacing:.12em}
  .lg{display:none}
}
.lbl-short{display:none}
@media(max-width:700px){
  .lbl-full{display:none}
  .lbl-short{display:inline}
}
@media(max-width:420px){
  .lock .b{display:none}
  header .bar{gap:10px}
}

/* ---- buttons ---- */
.btn{display:inline-block;font-family:var(--sans);font-size:11.5px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;padding:17px 34px;border:1px solid var(--ink);
  background:var(--ink);color:var(--paper);position:relative;overflow:hidden;border-radius:0}
.btn span{position:relative;z-index:2;transition:color .4s var(--e)}
.btn:before{content:"";position:absolute;inset:0;background:var(--olive);
  transform:translateY(101%);transition:transform .45s var(--e)}
.btn:hover:before{transform:translateY(0)}
.btn.line{background:transparent;color:var(--ink)}
.btn.line:hover span{color:var(--paper)}
.btn.inv{background:transparent;border-color:rgba(250,249,246,.55);color:#FAF9F6}
.btn.inv:before{background:var(--paper)}
.btn.inv:hover span{color:var(--ink)}
.tlink{display:inline-flex;align-items:center;gap:12px;font-size:11.5px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase}
.tlink i{display:block;width:28px;height:1px;background:var(--olive);transition:width .45s var(--e)}
.tlink:hover i{width:52px}

/* ---- hero ---- */
.hero{position:relative;height:100svh;min-height:560px;background:var(--ink);overflow:hidden}
.hero .ph{position:absolute;inset:0}
.hero .ph img{filter:none}
.hero:after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(11,11,10,.80) 0%,rgba(11,11,10,.30) 42%,rgba(11,11,10,.42) 100%)}
.hero .in{position:absolute;inset:auto 0 0 0;z-index:3;padding-bottom:clamp(44px,7vh,86px)}
.hero .in .wrap{color:#FAF9F6}
.hero .h1{color:#FAF9F6;max-width:15ch}
.hero .eyebrow{color:rgba(250,249,246,.72);margin-bottom:20px}
.hero .acts{display:flex;gap:14px;flex-wrap:wrap;margin-top:34px;align-items:center}
.hero .sl{margin-top:30px;padding-top:20px;border-top:1px solid rgba(250,249,246,.24);
  color:rgba(250,249,246,.72)}
.hero .sl b{color:#FAF9F6}

/* ---- generic bands ---- */
.split > *{min-width:0}
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,80px);align-items:center}
.split.narrow{grid-template-columns:1.06fr .94fr}
@media(max-width:880px){.split,.split.narrow{grid-template-columns:1fr}}
.figure{position:relative;background:var(--paper-2)}
.figure .cap{margin-top:11px}
.ar32{aspect-ratio:3/2}.ar169{aspect-ratio:16/9}.ar45{aspect-ratio:4/5}
.bleed{width:100%;position:relative}
.bleed .cw{max-width:1280px;margin:0 auto;padding:0 var(--pad)}

.dark{background:var(--ink);color:var(--paper)}
.dark .body{color:rgba(250,249,246,.72)}
.dark .lead{color:rgba(250,249,246,.86)}
.dark .eyebrow{color:rgba(250,249,246,.6)}
.dark .rule{background:var(--rule-dk)}
.dark .cap{color:rgba(250,249,246,.55)}

/* ---- editorial rows ---- */
.rows{border-top:1px solid var(--rule);margin-top:clamp(30px,4vw,54px)}
.row{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1.5fr) minmax(0,.7fr);
  gap:clamp(16px,3vw,44px);align-items:baseline;padding:clamp(22px,2.6vw,34px) 0;
  border-bottom:1px solid var(--rule);transition:background .4s}
.row:hover{background:var(--paper-2)}
.dark .row{border-bottom-color:var(--rule-dk)}
.dark .row:hover{background:var(--ink-2)}
.row .sn{text-align:right;white-space:nowrap}
@media(max-width:760px){.row{grid-template-columns:1fr}.row .sn{text-align:left}}

/* ---- lodge grid ---- */
.pgrid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(12px,1.6vw,22px);
  margin-top:clamp(30px,4vw,56px)}
.pgrid > figure{position:relative;min-width:0}
.pgrid .c7{grid-column:span 7}.pgrid .c5{grid-column:span 5}
.pgrid .c6{grid-column:span 6}.pgrid .c4{grid-column:span 4}.pgrid .c8{grid-column:span 8}
@media(max-width:820px){.pgrid > figure{grid-column:span 12 !important}}

/* ---- gallery ---- */
.gal{display:grid;grid-template-columns:repeat(3,1fr);
  gap:clamp(12px,1.6vw,22px);margin-top:clamp(28px,4vw,50px)}
@media(max-width:860px){.gal{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.gal{grid-template-columns:1fr}}
.gal figure{position:relative;overflow:hidden;min-width:0}
/* Trophy frames are pre-fitted so the whole rack is inside the file. Never
   let CSS re-crop them, and drop the hover zoom that would clip antler tips. */
.gal img{object-fit:contain;background:var(--paper-2)}

/* ---- rates ---- */
.tbl{width:100%;border-collapse:collapse;margin-top:clamp(24px,3vw,42px)}
.tbl th{text-align:left;font-family:var(--sans);font-size:10.5px;font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;color:var(--grey);
  padding:0 0 14px;border-bottom:1px solid var(--ink)}
.tbl th:last-child,.tbl td:last-child{text-align:right}
.tbl td{padding:17px 0;border-bottom:1px solid var(--rule);font-size:16px;vertical-align:baseline}
.tbl td:first-child{font-family:var(--ser);font-size:20px}
.tbl td .m{color:var(--grey);font-size:13px;letter-spacing:.04em}
.note{margin-top:22px;padding:18px 22px;background:var(--paper-2);
  border-left:2px solid var(--olive);font-size:14px;line-height:1.65;color:#3A3934;max-width:62ch}

/* ---- book ---- */
.bk3{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule-dk);
  border:1px solid var(--rule-dk);margin-top:clamp(30px,4vw,54px)}
@media(max-width:820px){.bk3{grid-template-columns:1fr}}
.bk3 a{background:var(--ink);padding:clamp(26px,3vw,42px);display:flex;flex-direction:column;
  min-height:250px;transition:background .45s var(--e)}
.bk3 a:hover{background:var(--ink-2)}
.bk3 .h3{margin:auto 0 12px}
.bk3 p{font-size:14.5px;line-height:1.65;color:rgba(250,249,246,.66);margin-bottom:24px}

/* ---- footer ---- */
footer{background:var(--ink);color:rgba(250,249,246,.72);padding:clamp(56px,7vw,96px) 0 40px}
.fg{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:28px;
  padding-top:34px;border-top:1px solid var(--rule-dk)}
@media(max-width:820px){.fg{grid-template-columns:1fr 1fr}}
.fg h6{font-size:10px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(250,249,246,.45);margin-bottom:14px}
.fg a,.fg p{display:block;font-size:15px;line-height:1.65;margin-bottom:5px;color:rgba(250,249,246,.78)}
.fg a{transition:color .3s}.fg a:hover{color:var(--bone)}
.fbot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:44px;
  padding-top:20px;border-top:1px solid var(--rule-dk);
  font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(250,249,246,.4)}
.wordmark{font-family:var(--ser);font-size:clamp(44px,12vw,150px);line-height:.9;
  letter-spacing:-.035em;color:#FAF9F6;margin-bottom:clamp(30px,4vw,56px)}

/* ---- reveal ---- */
.rv{opacity:0;transform:translateY(16px);
  transition:opacity .75s var(--e),transform .75s var(--e)}
.on .rv,.rv.on{opacity:1;transform:none}
.on .rv:nth-child(2){transition-delay:.08s}
.on .rv:nth-child(3){transition-delay:.16s}
.on .rv:nth-child(4){transition-delay:.24s}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}}
/* =========================================================
   2. WORDPRESS INTEGRATION
   ========================================================= */
.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-9999px;z-index:9999;background:var(--ink);color:var(--paper);
  padding:14px 22px;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;font-weight:600}
.skip-link:focus{left:var(--pad);top:12px}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{
  outline:2px solid var(--olive);outline-offset:3px}

/* admin bar */
body.admin-bar header{top:32px}
@media(max-width:782px){body.admin-bar header{top:46px}}

/* mobile nav */
.navtoggle{display:none;background:none;border:0;padding:8px;line-height:0;cursor:pointer}
.navtoggle span{display:block;width:22px;height:1.5px;background:var(--ink);margin:5px 0;
  transition:transform .4s var(--e),opacity .3s}
header:not(.solid) .navtoggle span{background:#FAF9F6}
body.navopen .navtoggle span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
body.navopen .navtoggle span:nth-child(2){opacity:0}
body.navopen .navtoggle span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}
@media(max-width:1080px){
  .navtoggle{display:block;order:9}
  nav.primary{display:none;position:fixed;inset:0 0 0 0;background:var(--paper);
    flex-direction:column;justify-content:center;align-items:flex-start;
    gap:0;padding:0 var(--pad);z-index:-1}
  body.navopen{overflow:hidden}
  body.navopen nav.primary{display:flex;z-index:80}
  /* the open menu sits on paper, so every element that was inverted over the
     hero has to flip back to ink. These beat header:not(.solid) on specificity. */
  body.navopen header{background:var(--paper);border-bottom-color:transparent}
  body.navopen header .lock .a{color:var(--ink)}
  body.navopen header .lock .b{color:var(--grey)}
  body.navopen header nav.primary a{color:var(--ink)}
  body.navopen header nav.primary a:hover{color:var(--olive)}
  body.navopen header .navtoggle span{background:var(--ink)}
  body.navopen header .btn{background:var(--ink);border-color:var(--ink);color:var(--paper)}
  body.navopen header .btn:before{background:var(--olive)}
  body.navopen header .btn:hover span{color:var(--paper)}
  body.navopen header .tel{color:var(--ink)}
  /* nav.primary is a positioned sibling, so the logo and buttons that follow
     it in the DOM would paint underneath the overlay. Lift them above it. */
  body.navopen header .lock,
  body.navopen header .btn,
  body.navopen header .navtoggle{position:relative;z-index:85}
  nav.primary a{font-family:var(--ser);font-size:30px;letter-spacing:-.015em;text-transform:none;
    padding:11px 0;font-weight:400}
  nav.primary a:after{display:none}
}

/* menu list reset (wp_nav_menu) */
nav.primary ul{list-style:none;display:flex;gap:clamp(14px,2vw,28px);margin:0;padding:0}
@media(max-width:1080px){nav.primary ul{flex-direction:column;gap:0}}
nav.primary li{position:relative}
/* One-page anchor menu: every href resolves to the home URL, so WordPress
   flags ALL items as current-menu-item. Colouring by current state therefore
   paints the whole nav olive, which vanishes over a photograph. Colour by
   header state instead, and keep olive for hover only. */
header:not(.solid) nav.primary a,
header:not(.solid) nav.primary li a{color:#FAF9F6}
header.solid nav.primary a,
header.solid nav.primary li a{color:var(--ink)}
nav.primary a:hover,
nav.primary li a:hover{color:var(--olive)}

/* forms */
.frm{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:32px;max-width:760px}
@media(max-width:700px){.frm{grid-template-columns:1fr}}
.frm .full{grid-column:1/-1}
.frm label{display:block;font-size:10.5px;font-weight:600;letter-spacing:.18em;
  text-transform:uppercase;color:var(--grey);margin-bottom:8px}
.frm input,.frm select,.frm textarea{width:100%;background:transparent;border:0;
  border-bottom:1px solid var(--rule);padding:11px 0;font-family:var(--sans);font-size:16px;
  color:var(--ink);border-radius:0}
.dark .frm input,.dark .frm select,.dark .frm textarea{color:#FAF9F6;border-bottom-color:var(--rule-dk)}
.dark .frm label{color:rgba(250,249,246,.55)}
.frm textarea{min-height:96px;resize:vertical}

/* editor content (page.php / single.php) */
.entry{max-width:68ch}
.entry h2{font-family:var(--ser);font-weight:400;font-size:clamp(26px,3.2vw,38px);
  line-height:1.15;letter-spacing:-.014em;margin:44px 0 16px}
.entry h3{font-family:var(--ser);font-weight:400;font-size:24px;margin:34px 0 12px}
.entry p{margin-bottom:20px;color:#3A3934;line-height:1.75}
.entry a{border-bottom:1px solid var(--olive)}
.entry ul,.entry ol{margin:0 0 20px 20px}
.entry li{margin-bottom:8px;color:#3A3934}
.entry img{height:auto;margin:32px 0}
.entry blockquote{border-left:2px solid var(--olive);padding-left:24px;margin:32px 0;
  font-family:var(--ser);font-size:22px;line-height:1.5}
.alignwide{max-width:1100px}.alignfull{max-width:none}
.aligncenter{margin-left:auto;margin-right:auto}

/* page header */
.phead{padding:calc(clamp(72px,11vw,140px) + 70px) 0 clamp(40px,6vw,72px);
  border-bottom:1px solid var(--rule)}

/* pagination */
.pag{display:flex;gap:10px;margin-top:48px}
.pag a,.pag span{padding:10px 15px;border:1px solid var(--rule);font-size:12px;letter-spacing:.1em}
.pag .current{background:var(--ink);color:var(--paper);border-color:var(--ink)}

/* utility */
.hidden{display:none !important}
img.lazyfade{opacity:0;transition:opacity .8s var(--e)}
img.lazyfade.ready{opacity:1}
