/*
Theme Name: HTX Dining Guide
Theme URI: https://htxdiningguide.com
Author: HTX Dining Guide
Author URI: https://htxdiningguide.com
Description: Modern editorial restaurant directory theme celebrating Houston restaurateurs with St. Thomas High School roots. Features cuisine/location search, interactive maps, family trees, reservation links, and restaurateur self-service profiles.
Version: 1.2.10
Requires at least: 6.0
Tested up to: 6.7
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: htx-dining-guide
*/

/* === VARIABLES === */
:root {
  --htx-red: #E31D1A;
  --htx-red-dark: #B31613;
  --htx-red-light: #F04038;
  --htx-red-muted: #F4D3D8;
  --htx-white: #FFFFFF;
  --htx-cream: #FAF7F4;
  --htx-black: #1A1A1A;
  --htx-charcoal: #2D2D2D;
  --htx-gray: #6B6B6B;
  --htx-gray-light: #E8E4E0;
  --htx-gray-lighter: #F5F3F0;
  --htx-gold: #D4A854;
  --font-display: 'Playfair Display', Georgia, serif;
  --font-heading: 'Playfair Display', Georgia, serif;
  --font-body: 'Source Sans 3', 'Helvetica Neue', sans-serif;
  --font-accent: 'Barlow Condensed', 'Helvetica Neue', sans-serif;
  --max-width: 1280px;
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.1);
  --shadow-lg: 0 8px 30px rgba(0,0,0,0.12);
  --shadow-xl: 0 20px 60px rgba(0,0,0,0.15);
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 12px;
}

/* === RESET === */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;scroll-behavior:smooth;-webkit-font-smoothing:antialiased}
body{font-family:var(--font-body);font-size:1rem;line-height:1.7;color:var(--htx-charcoal);background:var(--htx-white);overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:var(--htx-red);text-decoration:none;transition:color .15s ease}
a:hover{color:var(--htx-red-dark)}
h1,h2,h3,h4{font-family:var(--font-heading);font-weight:700;line-height:1.2;color:var(--htx-black)}
h1{font-size:clamp(2.2rem,5vw,3.5rem)}
h2{font-size:clamp(1.8rem,3.5vw,2.5rem)}
h3{font-size:clamp(1.3rem,2.5vw,1.7rem)}
.label-text{font-family:var(--font-accent);font-size:.75rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--htx-red)}

/* === LAYOUT === */
.container{max-width:var(--max-width);margin:0 auto;padding:0 2rem}
.section{padding:5rem 0}
.section--cream{background:var(--htx-cream)}
.section--dark{background:var(--htx-black);color:var(--htx-white)}
.section--dark h2,.section--dark h3{color:var(--htx-white)}

/* === HEADER === */
.site-header{position:sticky;top:0;z-index:1000;background:var(--htx-white);border-bottom:1px solid var(--htx-gray-light);transition:box-shadow .3s}
.site-header.scrolled{box-shadow:var(--shadow-md)}
.header-inner{display:flex;align-items:center;justify-content:space-between;height:80px;max-width:1440px;margin:0 auto;padding:0 2rem}
.site-logo{display:flex;align-items:center;gap:.75rem}
.site-logo img{height:44px;width:auto}
.site-logo .logo-text{font-family:var(--font-heading);font-size:1.4rem;color:var(--htx-black)}
.site-logo .logo-text span{color:var(--htx-red)}
.main-nav{display:flex;align-items:center;gap:2rem;list-style:none}
.main-nav a{font-family:var(--font-accent);font-size:.85rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--htx-charcoal);padding:.25rem 0;border-bottom:2px solid transparent;transition:all .15s}
.main-nav a:hover,.main-nav a.active{color:var(--htx-red);border-bottom-color:var(--htx-red)}
.nav-cta{background:var(--htx-red)!important;color:var(--htx-white)!important;padding:.5rem 1.25rem!important;border-radius:var(--radius-sm);border-bottom:none!important}
.nav-cta:hover{background:var(--htx-red-dark)!important}
.mobile-toggle{display:none;background:none;border:none;cursor:pointer;padding:.5rem}
.mobile-toggle span{display:block;width:24px;height:2px;background:var(--htx-black);margin:5px 0;transition:.3s}
@media(max-width:768px){
  .mobile-toggle{display:block}
  .main-nav{display:none;position:absolute;top:80px;left:0;right:0;background:var(--htx-white);flex-direction:column;padding:2rem;box-shadow:var(--shadow-lg)}
  .main-nav.active{display:flex}
}

/* === HERO === */
.hero{position:relative;min-height:50vh;max-height:500px;display:flex;align-items:center;background:linear-gradient(135deg,var(--htx-black) 0%,#2a1015 100%);overflow:hidden}
.hero-content{position:relative;z-index:2;max-width:700px;padding:2.5rem 2rem}
.hero .label-text{color:var(--htx-red-light);margin-bottom:1rem}
.hero h1{color:var(--htx-white);font-size:clamp(2.5rem,6vw,4rem);margin-bottom:1.25rem;line-height:1.1}
.hero p{color:rgba(255,255,255,.7);font-size:1.15rem;margin-bottom:2rem;max-width:540px}
.hero-search{display:flex;background:var(--htx-white);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-xl);max-width:560px}
.hero-search input{flex:1;padding:1.25rem 1.5rem;border:none;font-family:var(--font-body);font-size:1rem;outline:none}
.hero-search button{padding:1.25rem 2rem;background:var(--htx-red);color:var(--htx-white);border:none;font-family:var(--font-accent);font-size:.85rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;transition:background .15s}
.hero-search button:hover{background:var(--htx-red-dark)}
.hero-image{position:absolute;right:0;top:0;bottom:0;width:50%;background-size:cover;background-position:center;-webkit-mask-image:linear-gradient(to right,transparent,black 30%);mask-image:linear-gradient(to right,transparent,black 30%)}
/* v1.2.0: Mobile full-bleed hero with dark overlay */
@media(max-width:768px){.hero-image{width:100%;-webkit-mask-image:none;mask-image:none;opacity:.35}.hero{min-height:50vh;max-height:none}.hero-content{text-align:center;margin:0 auto;padding:3rem 1.5rem}.hero-search{margin:0 auto}}

/* === FILTERS === */
.filters-bar{background:var(--htx-white);border-bottom:1px solid var(--htx-gray-light);padding:1rem 0;position:sticky;top:80px;z-index:100}
.filters-inner{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.filter-select{padding:.5rem 2rem .5rem .75rem;border:1px solid var(--htx-gray-light);border-radius:var(--radius-sm);font-family:var(--font-body);font-size:.9rem;color:var(--htx-charcoal);background:var(--htx-white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath fill='%236B6B6B' d='M6 8L1 3h10z'/%3E%3C/svg%3E") no-repeat right 10px center;appearance:none;cursor:pointer}
.filter-select:focus{border-color:var(--htx-red);outline:none}
.filter-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .75rem;background:var(--htx-red-muted);color:var(--htx-red-dark);border-radius:50px;font-size:.85rem;font-weight:500;cursor:pointer;transition:.15s}
.filter-tag:hover{background:var(--htx-red);color:var(--htx-white)}
.results-count{margin-left:auto;font-family:var(--font-accent);font-size:.85rem;color:var(--htx-gray)}

/* === RESTAURANT CARDS === */
.restaurant-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:2rem;padding:2rem 0}
.restaurant-card{background:var(--htx-white);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--htx-gray-light);transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease;cursor:pointer}
.restaurant-card:hover{transform:translateY(-6px);box-shadow:0 12px 35px rgba(0,0,0,0.15);border-color:transparent}
.card-image{position:relative;height:220px;overflow:hidden}
.card-image img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.restaurant-card:hover .card-image img{transform:scale(1.05)}
.card-badges{position:absolute;top:1rem;left:1rem;display:flex;gap:.25rem}
.badge{padding:.2rem .5rem;border-radius:var(--radius-sm);font-family:var(--font-accent);font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.badge--cuisine{background:var(--htx-red);color:var(--htx-white)}
.badge--memorial{background:var(--htx-black);color:var(--htx-gold)}
.card-reservation{position:absolute;bottom:1rem;right:1rem;padding:.5rem .75rem;background:rgba(255,255,255,.95);border-radius:var(--radius-sm);font-family:var(--font-accent);font-size:.75rem;font-weight:600;color:var(--htx-red);text-transform:uppercase;letter-spacing:.05em;backdrop-filter:blur(8px);transition:.15s}
.card-reservation:hover{background:var(--htx-red);color:var(--htx-white)}
.card-content{padding:1.25rem 1.5rem 1.5rem}
.card-alumni{font-family:var(--font-accent);font-size:.8rem;color:var(--htx-red);font-weight:500;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}
.card-content h3{font-size:1.35rem;margin-bottom:.5rem}
.card-content h3 a{color:var(--htx-black)}
.card-content h3 a:hover{color:var(--htx-red)}
.card-description{font-size:.95rem;color:var(--htx-gray);line-height:1.6;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card-footer{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;border-top:1px solid var(--htx-gray-lighter)}
.cuisine-tag{padding:2px 8px;border:1px solid var(--htx-gray-light);border-radius:50px;font-size:.75rem;color:var(--htx-gray)}

/* === SINGLE RESTAURANT === */
.restaurant-hero{position:relative;height:50vh;min-height:400px;overflow:hidden}
.restaurant-hero img{width:100%;height:100%;object-fit:cover}
.restaurant-hero-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.8) 0%,transparent 60%)}
.restaurant-hero-content{position:absolute;bottom:3rem;left:0;right:0;padding:0 2rem}
.restaurant-hero-content h1{color:var(--htx-white);margin-bottom:.5rem}
.restaurant-hero-content .tagline{color:rgba(255,255,255,.7);font-size:1.15rem}
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;border-radius:var(--radius-sm);font-family:var(--font-accent);font-size:.85rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;transition:.15s;border:none}
.btn--primary{background:var(--htx-red);color:var(--htx-white)}
.btn--primary:hover{background:var(--htx-red-dark);color:var(--htx-white)}
.btn--outline{background:transparent;color:var(--htx-white);border:2px solid rgba(255,255,255,.5)}
.btn--outline:hover{border-color:var(--htx-white);background:rgba(255,255,255,.1);color:var(--htx-white)}
.restaurant-body{display:grid;grid-template-columns:1fr 320px;gap:3rem;padding:3rem 0}
@media(max-width:960px){.restaurant-body{grid-template-columns:1fr}}
.restaurant-main h2{margin-bottom:1.25rem}
.restaurant-main p{margin-bottom:1.25rem;font-size:1.05rem}

/* Alumni Section */
.alumni-section{background:var(--htx-cream);border-radius:var(--radius-lg);padding:2rem;margin:2rem 0}
.alumni-card{display:flex;gap:1.5rem;padding:1.25rem 0;border-bottom:1px solid var(--htx-gray-light)}
.alumni-card:last-child{border-bottom:none;padding-bottom:0}
.alumni-photo{width:80px;height:80px;border-radius:50%;object-fit:cover;border:3px solid var(--htx-red-muted);flex-shrink:0}
.alumni-info h4{font-size:1.1rem;margin-bottom:.2rem}
.alumni-info .grad-year{font-family:var(--font-accent);font-size:.8rem;color:var(--htx-red);font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.alumni-info .bio{font-size:.9rem;color:var(--htx-gray);margin-top:.5rem}
.in-memoriam{position:relative}
.in-memoriam::after{content:'In Memoriam';position:absolute;top:.75rem;right:.75rem;font-family:var(--font-accent);font-size:.7rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--htx-gold);background:var(--htx-black);padding:.2rem .75rem;border-radius:var(--radius-sm)}

/* Sidebar */
.restaurant-sidebar{position:sticky;top:100px;align-self:start}
.sidebar-card{background:var(--htx-white);border:1px solid var(--htx-gray-light);border-radius:var(--radius-lg);padding:1.5rem;margin-bottom:1.5rem}
.sidebar-card h4{font-family:var(--font-accent);font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--htx-gray);margin-bottom:1.25rem;padding-bottom:.5rem;border-bottom:2px solid var(--htx-red)}
.info-row{display:flex;gap:.75rem;padding:.4rem 0;font-size:.9rem}
.info-row .icon{color:var(--htx-red);width:20px;text-align:center;flex-shrink:0}
.map-container{width:100%;height:300px;border-radius:var(--radius-md);overflow:hidden;margin-bottom:1rem}

/* === FAMILY TREES === */
.family-tree-section{background:var(--htx-cream);padding:4rem 0}
.tree-wrapper{overflow-x:auto;padding:2rem 0}
.tree-patriarch{display:flex;flex-direction:column;align-items:center}
.tree-node-card{background:var(--htx-white);border:2px solid var(--htx-gray-light);border-radius:var(--radius-lg);padding:1.25rem;min-width:180px;text-align:center;transition:.15s}
.tree-node-card:hover{border-color:var(--htx-red);box-shadow:var(--shadow-md)}
.tree-node-card h4{font-size:1rem;margin-bottom:.2rem}
.tree-node-card .role{font-size:.8rem;color:var(--htx-gray)}
.tree-connector{width:2px;height:30px;background:var(--htx-red-muted);margin:0 auto}
.tree-children{display:flex;gap:2rem;justify-content:center;position:relative}
.tree-children::before{content:'';position:absolute;top:0;left:calc(50% - 1px);width:calc(100% - 180px);height:2px;background:var(--htx-red-muted)}

/* === SUBMISSION FORM === */
.submission-form{max-width:700px;margin:0 auto}
.form-group{margin-bottom:1.5rem}
.form-group label{display:block;font-family:var(--font-accent);font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--htx-charcoal);margin-bottom:.5rem}
.form-group input,.form-group select,.form-group textarea{width:100%;padding:.75rem 1rem;border:1px solid var(--htx-gray-light);border-radius:var(--radius-sm);font-family:var(--font-body);font-size:1rem;color:var(--htx-charcoal);transition:border-color .15s}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--htx-red);outline:none;box-shadow:0 0 0 3px var(--htx-red-muted)}
.form-group textarea{resize:vertical;min-height:120px}
.form-group .help-text{font-size:.85rem;color:var(--htx-gray);margin-top:.25rem}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:600px){.form-row{grid-template-columns:1fr}}

/* === FOOTER === */
.site-footer{background:var(--htx-black);color:rgba(255,255,255,.6);padding:5rem 0 1.5rem}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:3rem;margin-bottom:3rem}
@media(max-width:768px){.footer-grid{grid-template-columns:1fr 1fr;gap:1.5rem}}
.footer-brand h3{font-family:var(--font-heading);color:var(--htx-white);font-size:1.5rem;margin-bottom:.75rem}
.footer-brand h3 span{color:var(--htx-red)}
.footer-brand p{font-size:.9rem;line-height:1.7}
.footer-col h4{font-family:var(--font-accent);font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--htx-white);margin-bottom:1.25rem}
.footer-col ul{list-style:none}
.footer-col li{margin-bottom:.5rem}
.footer-col a{color:rgba(255,255,255,.6);font-size:.9rem}
.footer-col a:hover{color:var(--htx-red-light)}
.footer-bottom{padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;align-items:center;font-size:.85rem}

/* === UTILITIES === */
.text-center{text-align:center}
.text-red{color:var(--htx-red)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);border:0}

/* === v1.1.6: STHS HERITAGE SECTION === */
.sths-heritage{background:var(--htx-cream);padding:4rem 0;border-top:3px solid var(--htx-red)}
.sths-heritage-inner{display:flex;align-items:center;gap:3rem;max-width:var(--max-width);margin:0 auto;padding:0 2rem}
.sths-heritage-logo{flex-shrink:0}
.sths-heritage-logo img{width:120px;height:auto;opacity:.9}
.sths-heritage-text{flex:1}
.sths-heritage-text h2{font-size:clamp(1.5rem,3vw,2rem);margin-bottom:.75rem}
.sths-heritage-text p{color:var(--htx-gray);font-size:1.05rem;line-height:1.7;margin-bottom:.5rem}
.sths-heritage-text .heritage-stats{display:flex;gap:2.5rem;margin-top:1.5rem}
.sths-heritage-text .heritage-stat{text-align:center}
.sths-heritage-text .heritage-stat .stat-number{display:block;font-family:var(--font-heading);font-size:2rem;color:var(--htx-red);line-height:1.1}
.sths-heritage-text .heritage-stat .stat-label{font-family:var(--font-accent);font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--htx-gray)}
@media(max-width:768px){
  .sths-heritage-inner{flex-direction:column;text-align:center}
  .sths-heritage-text .heritage-stats{justify-content:center}
}

/* === v1.1.6: CONTACT FORM === */
.contact-page{max-width:700px;margin:0 auto}
.contact-page p.intro{color:var(--htx-gray);font-size:1.1rem;margin-bottom:2rem;line-height:1.7}
.contact-form .form-group{margin-bottom:1.25rem}
.contact-form label{display:block;font-family:var(--font-accent);font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--htx-charcoal);margin-bottom:.4rem}
.contact-form input[type="text"],
.contact-form input[type="email"],
.contact-form textarea{width:100%;padding:.75rem 1rem;border:1px solid var(--htx-gray-light);border-radius:var(--radius-sm);font-family:var(--font-body);font-size:1rem;color:var(--htx-charcoal);transition:border-color .15s}
.contact-form input:focus,
.contact-form textarea:focus{border-color:var(--htx-red);outline:none;box-shadow:0 0 0 3px var(--htx-red-muted)}
.contact-form textarea{resize:vertical;min-height:150px}
.contact-form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:600px){.contact-form .form-row{grid-template-columns:1fr}}
.contact-success{background:#d4edda;border:1px solid #c3e6cb;color:#155724;padding:1rem 1.5rem;border-radius:var(--radius-sm);margin-bottom:1.5rem}
.contact-error{background:#f8d7da;border:1px solid #f5c6cb;color:#721c24;padding:1rem 1.5rem;border-radius:var(--radius-sm);margin-bottom:1.5rem}

/* === v1.1.6: GRID ALIGNMENT FIX === */
.restaurant-grid{align-items:start}

/* === v1.1.6: FOOTER DISCLAIMER === */
.footer-disclaimer{margin-top:1.5rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.06);font-size:.78rem;color:rgba(255,255,255,.35);line-height:1.6;text-align:center;max-width:700px;margin-left:auto;margin-right:auto}

/* === v1.2.3: CSS POLISH === */

/* Smooth scroll */
html{scroll-behavior:smooth}

/* Focus-visible for keyboard accessibility */
a:focus-visible,.btn:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--htx-red);outline-offset:2px;border-radius:var(--radius-sm)}

/* Respect reduced motion preferences */
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}.restaurant-card:hover{transform:none}.restaurant-card:hover .card-image img{transform:none}}

/* Cuisine tag hover */
.cuisine-tag{transition:all .2s}
.cuisine-tag:hover{border-color:var(--htx-red);color:var(--htx-red)}

/* Card reservation button refinement */
.card-reservation{transition:background .2s,transform .2s}
.card-reservation:hover{transform:translateY(-2px)}

/* Better text selection color */
::selection{background:var(--htx-red-muted);color:var(--htx-black)}

/* Subtle image loading placeholder */
.card-image img{background:var(--htx-gray-lighter)}

/* Smoother hero text rendering */
.hero h1,.hero p{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}

/* Footer link hover */
.site-footer a{transition:color .2s}
.site-footer a:hover{color:var(--htx-white)}

/* Single restaurant sidebar polish */
.sidebar-section{transition:box-shadow .2s}
.sidebar-section:hover{box-shadow:var(--shadow-sm)}

/* === v1.2.7: ALUMNI PORTRAIT CROPPING FIX === */
.alumni-photo,
.alumni-card img.wp-post-image,
.alumni-archive img.wp-post-image {
    object-position: center 20%;
}

/* === v1.2.8: ACCOUNT SETTINGS PAGE === */
.account-settings-form input:focus {
    border-color: var(--htx-red);
    outline: none;
    box-shadow: 0 0 0 3px var(--htx-red-muted);
}

/* === v1.2.10: ANTI-SPAM HONEYPOT === */
.form-group--confirm-email{position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}
