/* ============================================================
   Govaera — shared site styles
   Tokens: navy #1E2A38 · darker navy #16202C · slate-on-navy #33465C
           red #A32B2B · dark red #8A2323 · red gradient #C24444→#A32B2B→#7E2020
           body #1A1A1A · muted #6B7280 · light-on-navy #C9CFD8 · light-on-red #F3D9D9
           grounds #FFFFFF / #F5F4F1 · borders #D6D3CC · radius 2px
   Page markup keeps the design's inline styles verbatim; this file carries
   the shared base, keyframes, nav/footer components, and the hover/focus
   states converted from the design files' style-hover / style-focus
   attributes (hence the !important — hover must beat the inline base).
   ============================================================ */

body{margin:0;font-family:Inter,sans-serif;color:#1A1A1A;background:#FFFFFF;}
a{color:#1E2A38;text-decoration:none;}
a:hover{color:#A32B2B;}

/* ---- keyframes ---- */
@keyframes gvFadeUp{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
@keyframes gvFlip{from{transform:rotateX(0);}to{transform:rotateX(360deg);}}
@keyframes gvScrollUp{from{transform:translateY(0);}to{transform:translateY(-50%);}}
@keyframes gvScrollDown{from{transform:translateY(-50%);}to{transform:translateY(0);}}
@keyframes gvSlideL{from{transform:translateX(0);}to{transform:translateX(-50%);}}
@keyframes gvSlideR{from{transform:translateX(-50%);}to{transform:translateX(0);}}
@keyframes gvBob{0%,100%{transform:translateY(0);}50%{transform:translateY(6px);}}

/* ---- site nav ---- */
#gvNav{position:fixed;top:0;left:0;right:0;z-index:100;background:#FFFFFF;border-bottom:1px solid #D6D3CC;box-shadow:0 2px 8px rgba(22,32,44,0.08);transform:translateY(-100%);transition:transform .28s ease;}
#gvNav .gv-nav-inner{max-width:1200px;margin:0 auto;padding:8px 20px;min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:clamp(10px,2vw,24px);flex-wrap:wrap;}
#gvNav .gv-nav-brand{display:flex;align-items:center;flex:0 0 auto;height:44px;}
#gvNav .gv-nav-brand img{height:30px;display:block;}
#gvNav .gv-nav-links{display:flex;align-items:center;gap:clamp(10px,1.8vw,24px);flex-wrap:wrap;}
#gvNav .gv-nav-link{font:500 14px Inter,sans-serif;color:#1E2A38;padding-bottom:6px;white-space:nowrap;border-bottom:2px solid transparent;}
#gvNav .gv-nav-link:hover{color:#1E2A38;border-bottom:2px solid #A32B2B;}
#gvNav .gv-nav-link.is-active{border-bottom:2px solid #A32B2B;}
#gvNav .gv-nav-cta{font:600 13px Inter,sans-serif;text-transform:uppercase;letter-spacing:1px;color:#FFFFFF;background:#A32B2B;padding:10px 18px;border-radius:2px;display:inline-block;}
#gvNav .gv-nav-cta:hover{background:#FFFFFF;color:#A32B2B;box-shadow:inset 0 0 0 1.5px #A32B2B;}
/* Touch devices get no mousemove reveal — keep the bar pinned (see main.js). */
@media (hover:none){#gvNav{transform:none;}}

/* ---- site footer ---- */
#gvFooter{background:#16202C;color:#FFFFFF;font-family:Inter,sans-serif;}
#gvFooter a{color:#FFFFFF;}
#gvFooter a:hover{color:#A32B2B;}
#gvFooter .gv-foot-grid{max-width:1200px;margin:0 auto;padding:72px 24px 40px;display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:48px;}
#gvFooter .gv-foot-head{font:600 12px Inter,sans-serif;text-transform:uppercase;letter-spacing:2px;color:#FFFFFF;margin-bottom:16px;}
#gvFooter .gv-foot-links{display:grid;gap:10px;font-size:14px;}
#gvFooter .gv-foot-depts{column-count:2;column-gap:24px;font-size:13px;line-height:2;}
#gvFooter .gv-foot-depts a{display:block;}
#gvFooter .gv-foot-reg{position:relative;border:1px solid #33465C;padding:14px 16px;margin-top:20px;font:500 12px 'IBM Plex Mono',monospace;letter-spacing:1px;text-transform:uppercase;line-height:2;color:#FFFFFF;}
#gvFooter .gv-foot-bar{border-top:1px solid #33465C;}
#gvFooter .gv-foot-bar-inner{max-width:1200px;margin:0 auto;padding:20px 24px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:13px;color:#FFFFFF;}

/* ---- corner brackets (7px red squares on plate corners) ---- */
.gv-cb{position:absolute;width:7px;height:7px;}
.gv-cb-tl{top:-1px;left:-1px;border-top:2px solid #A32B2B;border-left:2px solid #A32B2B;}
.gv-cb-tr{top:-1px;right:-1px;border-top:2px solid #A32B2B;border-right:2px solid #A32B2B;}
.gv-cb-bl{bottom:-1px;left:-1px;border-bottom:2px solid #A32B2B;border-left:2px solid #A32B2B;}
.gv-cb-br{bottom:-1px;right:-1px;border-bottom:2px solid #A32B2B;border-right:2px solid #A32B2B;}
.gv-cb-z{z-index:1;}
/* footer registration plate uses 8px brackets at 2px offsets in the design */
.gv-cb8{position:absolute;width:8px;height:8px;}

/* ---- hover states (from the design's style-hover attributes) ---- */
/* red button → inverts to white with inset red ring */
.hv-btn-red-invert:hover{background:#FFFFFF !important;color:#A32B2B !important;box-shadow:inset 0 0 0 1.5px #A32B2B !important;}
/* the Home hero primary CTA also raises 1px */
.hv-raise:hover{transform:translateY(-1px);}
/* white-outline button on navy → fills white */
.hv-btn-outline-white:hover{background:#FFFFFF !important;color:#1E2A38 !important;}
/* navy button on red banner → inverts to white with inset navy ring */
.hv-btn-navy-invert:hover{background:#FFFFFF !important;color:#1E2A38 !important;box-shadow:inset 0 0 0 1.5px #1E2A38 !important;}
/* red button → darker red */
.hv-btn-red-dark:hover{background:#8A2323 !important;color:#FFFFFF !important;}
/* text link → brand red */
.hv-link-red:hover{color:#A32B2B !important;}
/* card lift: red border, raise, soft shadow */
.hv-lift{transition:border-color .2s,transform .2s,box-shadow .2s;}
.hv-lift:hover{border-color:#A32B2B !important;transform:translateY(-4px);box-shadow:0 8px 20px rgba(22,32,44,0.08);}
a.hv-lift:hover{color:#1E2A38;}
/* quiet card: navy border on hover */
.hv-border-navy:hover{border-color:#1E2A38 !important;}
/* stat plate: scale + red border */
.hv-scale-plate:hover{transform:scale(1.06);border-color:#A32B2B !important;}
/* credentials row: slight scale + warm ground */
.hv-scale-row:hover{transform:scale(1.02);background:#F5F4F1 !important;}
/* mono chip: red border + red text */
.hv-chip:hover{border-color:#A32B2B !important;color:#A32B2B !important;}
/* vendor marquee tile (Home, vertical): navy text on white */
.hv-tile-navy:hover{color:#1E2A38 !important;border-color:#1E2A38 !important;background:#FFFFFF !important;}
/* vendor marquee tile (Vendor Partnerships, horizontal): white on red */
.hv-tile-red:hover{color:#FFFFFF !important;border-color:#A32B2B !important;background:#A32B2B !important;}
/* marquee track pauses while hovered */
.hv-pause:hover{animation-play-state:paused !important;}
/* About "Buyers" panel floods with the red radial gradient */
.hv-buyers:hover{background:radial-gradient(circle at 30% 20%,#C24444 0%,#A32B2B 55%,#7E2020 100%) !important;}

/* ---- form focus states (from style-focus) ---- */
.gv-in:focus{border-color:#1E2A38 !important;outline:none;box-shadow:inset 2px 0 0 #A32B2B;}
.gv-sel:focus{border-color:#1E2A38 !important;outline:none;}

/* ---- What We Supply photo slots (placeholders until real photos land) ---- */
.gv-imgslot{width:100%;height:300px;box-sizing:border-box;background:#F5F4F1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;padding:20px;}
.gv-imgslot img{height:44px;width:auto;opacity:0.45;}
.gv-imgslot span{font:500 12px 'IBM Plex Mono',monospace;letter-spacing:1px;text-transform:uppercase;color:#6B7280;}

/* ---- toggled blocks (forms, contract list) keep display: in the sheet,
   not inline, so the hidden attribute can win ---- */
[hidden]{display:none !important;}
#gvContactForm,#gvVendorForm{display:grid;}
#gvContractsList{display:grid;}

/* ---- reduced motion: kill all animation/transitions site-wide ---- */
@media (prefers-reduced-motion: reduce){*{animation:none !important;transition:none !important;}}
