:root{--header-h:80px}.callahan-hardware main{overflow-x:clip}.callahan-hardware .cal-home-hero{min-height:100svh;padding-top:calc(var(--header-h,80px) + 1rem);padding-bottom:4rem}@media (max-width:768px){.callahan-hardware .cal-home-hero{min-height:90svh;padding-top:calc(var(--header-h,64px) + 1rem);padding-bottom:2.5rem}}@media (min-width:600px) and (max-width:899px){.callahan-hardware .services-highlight-grid>:last-child:nth-child(odd){grid-column:1/-1;justify-self:center;width:calc(50% - .75rem)}}.callahan-hardware .footer-root{padding-bottom:.75rem}@media (max-width:1023px){.callahan-hardware .footer-root{padding-bottom:calc(.75rem + 80px)}}.callahan-hardware{--cal-cream:#f5f0e8;--cal-linen:#ede7dc;--cal-warmwhite:#faf8f4;--cal-green:#2d5f3a;--cal-green-hover:#234a2e;--cal-green-light:#e8f0ea;--cal-rust:#b5542a;--cal-rust-hover:#923f1d;--cal-rust-light:#f5e6de;--cal-wood:#6b4d34;--cal-wood-deep:#3e2c1c;--cal-charcoal:#2c2a26;--cal-dark:#1e1c18;--cal-gold:#c4a55a;--cal-gold-light:#e6d7a5;--text-primary:#2c2a26;--text-secondary:#5a554d;--text-muted:#8a847a;--text-inverted:#f5f0e8;--text-accent:#2d5f3a;--border-light:#ddd7cc;--border-warm:#c9c1b4;--border-dark:#3e2c1c;--color-bg:var(--cal-cream);--color-bg-alt:var(--cal-linen);--color-bg-dark:var(--cal-charcoal);--cta-primary:var(--cal-green);--cta-primary-hover:var(--cal-green-hover);--cta-secondary:var(--cal-rust);--cta-secondary-hover:var(--cal-rust-hover);--gradient-hero-overlay:linear-gradient(to bottom,#1e1c1859 0%,#1e1c188c 45%,#3e2c1cbf 100%);--gradient-warm-fade:linear-gradient(to bottom,var(--cal-warmwhite)0%,var(--cal-cream)100%);--gradient-dark-warm:linear-gradient(160deg,var(--cal-charcoal)0%,var(--cal-wood-deep)55%,var(--cal-charcoal)100%);--text-hero:clamp(2.5rem,4.5vw + 1rem,4.5rem);--text-h1:clamp(2rem,3vw + 1rem,3.25rem);--text-h2:clamp(1.625rem,2vw + .75rem,2.25rem);--text-h3:clamp(1.25rem,1vw + .875rem,1.625rem);--text-h4:clamp(1.125rem,.5vw + .875rem,1.3125rem);--text-body-lg:clamp(1.0625rem,.25vw + 1rem,1.1875rem);--text-body:1rem;--text-body-sm:.9375rem;--text-small:.875rem;--text-caption:.8125rem;--leading-tight:1.15;--leading-snug:1.3;--leading-normal:1.55;--leading-relaxed:1.75;--tracking-tight:-.01em;--tracking-normal:0;--tracking-wide:.04em;--tracking-wider:.08em;--tracking-widest:.16em;--ease-smooth:cubic-bezier(.25,.46,.45,.94);--ease-decelerate:cubic-bezier(0,0,.2,1);--duration-fast:.2s;--duration-normal:.4s;--duration-slow:.7s;--duration-reveal:.9s;--slide-distance-sm:12px;--slide-distance-md:20px;--slide-distance-lg:40px;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-pill:999px;--shadow-sm:0 1px 2px #3e2c1c0f;--shadow-md:0 4px 12px #3e2c1c14;--shadow-lg:0 8px 24px #3e2c1c1a;background:var(--color-bg);color:var(--text-primary);font-family:var(--font-callahan-body),"Source Sans 3",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:var(--text-body);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}.callahan-hardware h1,.callahan-hardware h2,.callahan-hardware h3,.callahan-hardware h4,.callahan-hardware .font-display{font-family:var(--font-callahan-display),"Libre Baskerville",Georgia,serif;color:var(--cal-wood-deep);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);font-weight:700}.callahan-hardware a{color:inherit;text-decoration:none}.callahan-hardware section{scroll-margin-top:var(--header-h)}@keyframes callahan-fadeUpReveal{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes callahan-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes callahan-heroReveal{to{opacity:1;transform:translateY(0)}}@keyframes callahan-gentleBounce{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}@keyframes callahan-lineDrawCenter{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.callahan-hardware .reveal{opacity:0;transform:translateY(var(--slide-distance-md));transition:opacity var(--duration-reveal)var(--ease-decelerate),transform var(--duration-reveal)var(--ease-decelerate)}.callahan-hardware .reveal.is-visible{opacity:1;transform:translateY(0)}.callahan-hardware .reveal-left{opacity:0;transform:translateX(calc(-1*var(--slide-distance-lg)));transition:opacity var(--duration-reveal)var(--ease-decelerate),transform var(--duration-reveal)var(--ease-decelerate)}.callahan-hardware .reveal-left.is-visible{opacity:1;transform:translate(0)}.callahan-hardware .reveal-right{opacity:0;transform:translateX(var(--slide-distance-lg));transition:opacity var(--duration-reveal)var(--ease-decelerate),transform var(--duration-reveal)var(--ease-decelerate)}.callahan-hardware .reveal-right.is-visible{opacity:1;transform:translate(0)}.callahan-hardware .reveal-scale{opacity:0;transition:opacity var(--duration-reveal)var(--ease-smooth),transform var(--duration-reveal)var(--ease-smooth);transform:scale(.95)}.callahan-hardware .reveal-scale.is-visible{opacity:1;transform:scale(1)}.callahan-hardware .stagger-1{transition-delay:.1s}.callahan-hardware .stagger-2{transition-delay:.2s}.callahan-hardware .stagger-3{transition-delay:.3s}.callahan-hardware .stagger-4{transition-delay:.4s}.callahan-hardware .stagger-5{transition-delay:.5s}.callahan-hardware .stagger-6{transition-delay:.6s}.callahan-hardware .hero-animate{opacity:0;transform:translateY(var(--slide-distance-md));animation:callahan-heroReveal .7s var(--ease-decelerate)forwards}.callahan-hardware .hero-delay-1{animation-delay:.1s}.callahan-hardware .hero-delay-2{animation-delay:.3s}.callahan-hardware .hero-delay-3{animation-delay:.5s}.callahan-hardware .hero-delay-4{animation-delay:.7s}.callahan-hardware .nav-link{transition:color var(--duration-fast)var(--ease-smooth);position:relative}.callahan-hardware .nav-link:hover{color:var(--cal-gold)!important}.callahan-hardware .nav-link:after{content:"";background:var(--cal-gold);width:0;height:1.5px;transition:width var(--duration-fast)var(--ease-smooth);position:absolute;bottom:-4px;left:50%;transform:translate(-50%)}.callahan-hardware .nav-link:hover:after,.callahan-hardware .nav-link.active:after{width:100%}.callahan-hardware .btn-hover{transition:transform var(--duration-fast)var(--ease-smooth),background-color var(--duration-fast)var(--ease-smooth),box-shadow var(--duration-fast)var(--ease-smooth)}.callahan-hardware .btn-hover:hover{transform:translateY(-2px)}.callahan-hardware .btn-hover:active{transform:translateY(0)}.callahan-hardware .card-hover{transition:transform var(--duration-normal)var(--ease-smooth),box-shadow var(--duration-normal)var(--ease-smooth)}.callahan-hardware .card-hover:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px)}.callahan-hardware .image-hover{overflow:hidden}.callahan-hardware .image-hover img,.callahan-hardware .image-hover .img-placeholder{transition:transform var(--duration-slow)var(--ease-smooth)}.callahan-hardware .image-hover:hover img,.callahan-hardware .image-hover:hover .img-placeholder{transform:scale(1.03)}.callahan-hardware .gold-line-draw{transform-origin:50%;transition:transform .8s var(--ease-decelerate);transform:scaleX(0)}.callahan-hardware .gold-line-draw.is-visible{transform:scaleX(1)}.callahan-hardware .btn{font-family:var(--font-callahan-body),"Source Sans 3",sans-serif;font-weight:600;font-size:var(--text-body);letter-spacing:var(--tracking-wide);border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;transition:transform var(--duration-fast)var(--ease-smooth),background-color var(--duration-fast)var(--ease-smooth),color var(--duration-fast)var(--ease-smooth),border-color var(--duration-fast)var(--ease-smooth),box-shadow var(--duration-fast)var(--ease-smooth);border:1.5px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.875rem 1.75rem;display:inline-flex}.callahan-hardware .btn:hover{transform:translateY(-2px)}.callahan-hardware .btn:active{transform:translateY(0)}.callahan-hardware .btn-primary{background-color:var(--cal-green);color:var(--cal-cream);border-color:var(--cal-green)}.callahan-hardware .btn-primary:hover{background-color:var(--cal-green-hover);border-color:var(--cal-green-hover);box-shadow:0 8px 20px #2d5f3a40}.callahan-hardware .btn-secondary{background-color:var(--cal-rust);color:var(--cal-cream);border-color:var(--cal-rust)}.callahan-hardware .btn-secondary:hover{background-color:var(--cal-rust-hover);border-color:var(--cal-rust-hover);box-shadow:0 8px 20px #b5542a40}.callahan-hardware .btn-heritage{background-color:var(--cal-wood);color:var(--cal-cream);border-color:var(--cal-wood)}.callahan-hardware .btn-heritage:hover{background-color:var(--cal-wood-deep);border-color:var(--cal-wood-deep);box-shadow:0 8px 20px #3e2c1c59}.callahan-hardware .btn-outlined{color:var(--cal-green);border-color:var(--cal-green);background-color:#0000}.callahan-hardware .btn-outlined:hover{background-color:var(--cal-green);color:var(--cal-cream)}.callahan-hardware .btn-outlined-light{color:var(--cal-cream);border-color:var(--cal-cream);background-color:#0000}.callahan-hardware .btn-outlined-light:hover{background-color:var(--cal-cream);color:var(--cal-charcoal)}.callahan-hardware .btn-outlined-gold{color:var(--cal-wood-deep);border-color:var(--cal-gold);background-color:#0000}.callahan-hardware .btn-outlined-gold:hover{background-color:var(--cal-gold);color:var(--cal-wood-deep);border-color:var(--cal-gold);box-shadow:0 6px 16px #c4a55a4d}.callahan-hardware .btn-sm{font-size:var(--text-small);padding:.625rem 1.25rem}.callahan-hardware .btn-lg{font-size:var(--text-body-lg);padding:1rem 2.25rem}.callahan-hardware .card-heritage{background:var(--cal-warmwhite);border:1px solid var(--border-light);border-radius:var(--radius-md);padding:1.5rem}.callahan-hardware .card-heritage-dark{border-radius:var(--radius-md);color:var(--text-inverted);background:#ffffff0a;border:1px solid #f5f0e81f;padding:1.5rem}.callahan-hardware .badge-established{font-family:var(--font-callahan-display),"Libre Baskerville",serif;font-size:var(--text-caption);letter-spacing:var(--tracking-widest);text-transform:uppercase;border-radius:var(--radius-pill);border:1px solid;align-items:center;gap:.5rem;padding:.375rem .875rem;font-weight:700;display:inline-flex}.callahan-hardware .badge-established.on-dark,.callahan-hardware .badge-established.on-light{color:var(--cal-gold);border-color:var(--cal-gold)}.callahan-hardware .badge-established.prominent{font-size:var(--text-small);letter-spacing:.18em;border-width:1.5px;padding:.5rem 1.125rem}.callahan-hardware .badge-established.prominent.on-dark{color:var(--cal-gold);text-shadow:0 1px 3px #00000080;-webkit-backdrop-filter:blur(2px);background:#3e2c1ca6;border-color:#c4a55ae6;box-shadow:0 2px 12px #1e1c184d}.callahan-hardware .section-eyebrow{font-family:var(--font-callahan-body),"Source Sans 3",sans-serif;font-size:var(--text-caption);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--cal-gold);margin-bottom:.75rem;font-weight:700;display:inline-block}.callahan-hardware .section-title{font-family:var(--font-callahan-display),"Libre Baskerville",serif;font-size:var(--text-h2);font-weight:700;line-height:var(--leading-tight);color:var(--cal-wood-deep);margin-bottom:.75rem}.callahan-hardware .section-subtitle{font-size:var(--text-body-lg);color:var(--text-secondary);line-height:var(--leading-normal);max-width:42rem}.callahan-hardware .divider-hairline{border:0;border-top:1px solid var(--border-warm);margin:0}.callahan-hardware .form-input,.callahan-hardware .form-textarea,.callahan-hardware .form-select{background:var(--cal-warmwhite);border:1px solid var(--border-light);border-radius:var(--radius-md);width:100%;font-family:inherit;font-size:var(--text-body);color:var(--text-primary);line-height:var(--leading-normal);transition:border-color var(--duration-fast)var(--ease-smooth),box-shadow var(--duration-fast)var(--ease-smooth);padding:.75rem 1rem}.callahan-hardware .form-input:focus,.callahan-hardware .form-textarea:focus,.callahan-hardware .form-select:focus{border-color:var(--cal-green);outline:none;box-shadow:0 0 0 3px #2d5f3a1f}.callahan-hardware .form-input::placeholder,.callahan-hardware .form-textarea::placeholder{color:var(--text-muted)}.callahan-hardware .form-label{font-size:var(--text-small);color:var(--text-primary);letter-spacing:var(--tracking-wide);margin-bottom:.375rem;font-weight:600;display:block}.callahan-hardware .scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.callahan-hardware .scrollbar-hide::-webkit-scrollbar{display:none}.callahan-hardware :focus-visible{outline:2px solid var(--cal-green);outline-offset:2px;border-radius:var(--radius-sm)}.callahan-hardware .dept-grid{grid-template-columns:1fr;gap:1.5rem;display:grid}@media (min-width:640px){.callahan-hardware .dept-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:1fr;align-items:stretch}.callahan-hardware .dept-grid>*{flex-direction:column;display:flex}.callahan-hardware .dept-grid>*>.card-heritage{flex:1}.callahan-hardware .dept-grid>:last-child{grid-column:1/-1;justify-self:center;width:calc(50% - .75rem)}}@media (min-width:1024px){.callahan-hardware .dept-grid{grid-template-columns:repeat(3,1fr)}.callahan-hardware .dept-grid>:last-child{grid-column:auto;justify-self:auto;width:auto}}@media (min-width:1280px){.callahan-hardware .dept-grid{grid-template-columns:repeat(4,1fr)}.callahan-hardware .dept-grid>:last-child{grid-column:2/4;justify-self:center;width:calc(50% - .75rem);max-width:none}}.callahan-hardware .dept-preview-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:1fr;align-items:stretch;gap:1rem;display:grid}.callahan-hardware .dept-preview-grid>:last-child{grid-column:1/-1;justify-self:center;width:calc(50% - .5rem)}@media (min-width:640px){.callahan-hardware .dept-preview-grid{grid-template-columns:repeat(3,1fr)}.callahan-hardware .dept-preview-grid>:last-child{grid-column:auto;justify-self:auto;width:auto}}@media (min-width:1024px){.callahan-hardware .dept-preview-grid{grid-template-columns:repeat(4,1fr)}.callahan-hardware .dept-preview-grid>:last-child{grid-column:2/4;justify-self:center;width:calc(50% - .5rem);max-width:none}}@media (prefers-reduced-motion:reduce){.callahan-hardware,.callahan-hardware *,.callahan-hardware :before,.callahan-hardware :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
