/*
Theme Name: Snazzy Fulfillment
Theme URI: https://snazzyfulfillment.com
Author: Snazzy Solutions
Description: Custom hand-coded theme for Snazzy Fulfillment — eCommerce 3PL for growing brands. Ported pixel-for-pixel from the Claude Design handoff (Space Grotesk / lime-on-forest-green).
Version: 1.1.9
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Text Domain: snazzy-fulfillment
*/

/* ============================================================
   DESIGN TOKENS (resolved from the handoff's locked settings:
   type "3a — Precise (Space Grotesk)", radius "Soft" 16px,
   hero image "Packing", button "B6 · Sticker")
   ============================================================ */
:root{
  --paper:#F4F7F1;
  --ink:#123526;
  --deep:#0d2419;
  --lime:#C6E84B;
  --green:#1E7A4C;
  --radius:16px;
  --fd:'Space Grotesk',sans-serif;   /* display */
  --fb:'Outfit',sans-serif;          /* body */
  --fl:'Space Mono',monospace;       /* labels */
  --fwd:700;                         /* display weight */
  --heroImg:url(https://snazzyfulfillment.com/wp-content/uploads/2026/07/sf-packing.jpg);
  /* locked button vars (B6 Sticker) */
  --bbg:#C6E84B; --bfg:#0d2419; --brad:14px;
  --bsh:4px 4px 0 #0d2419;
  --bshHero:4px 4px 0 rgba(244,247,241,.92);
  --bff:'Outfit',sans-serif; --btt:none; --bls:0;
  --bpad:15px 27px; --bbord:1.5px solid #0d2419;
  --bchip:none; --barrow:inline;
}

/* ============================================================
   BASE
   ============================================================ */
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;background:var(--paper);}
::selection{background:#C6E84B;color:#0d2419;}
img{max-width:100%;display:block;}

@keyframes floaty{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-9px) rotate(-4deg)}}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}

/* ============================================================
   RESPONSIVE (verbatim from the handoff)
   ============================================================ */
@media (max-width:860px){
  .nav-links{display:none !important;}
  .hero-grid{grid-template-columns:1fr !important;}
  .hero-photo{order:-1;}
  .two-col{grid-template-columns:1fr !important;}
  .steps{grid-template-columns:1fr 1fr !important;}
  .feat-grid{grid-template-columns:1fr 1fr !important;}
  .feat-hero{grid-column:auto !important;}
  .ind-grid{grid-template-columns:1fr 1fr !important;}
  .contact-grid{grid-template-columns:1fr !important;}
  .pricing-card{grid-template-columns:1fr !important;}
  .metrics{grid-template-columns:1fr 1fr !important;}
}
/* Let the pricing grid columns shrink below the estimator form's intrinsic width
   (grid items default to min-width:auto, which was clipping the form off-screen
   on phones behind the section's overflow:hidden). */
.pricing-card > div{min-width:0;}
.pricing-card .snazzy-est-card,.pricing-card .snazzy-est,.pricing-card form.fluent_form_4,.pricing-card .fluentform{min-width:0;max-width:100%;}
.pricing-card .ff-el-form-control{max-width:100%;box-sizing:border-box;}

/* ===== Custom pricing estimator (replaces flaky FF calc) ===== */
.sf-calc-eyebrow{font-family:var(--fl);font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#1E7A4C;}
.sf-calc-title{font-family:var(--fd);font-weight:700;font-size:clamp(20px,2.1vw,25px);line-height:1.08;letter-spacing:-.02em;color:#123526;margin:8px 0 0;}
.sf-calc-sub{font-size:13.5px;line-height:1.5;color:#4c5a51;margin:8px 0 20px;}
.sf-fields{display:flex;flex-direction:column;gap:13px;}
.sf-field{display:flex;align-items:center;justify-content:space-between;gap:14px;}
.sf-field > label{font-family:var(--fl);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#1E7A4C;display:flex;align-items:center;gap:6px;line-height:1.25;}
.sf-i{display:inline-flex;color:#1E7A4C;cursor:help;flex:none;}
.sf-inwrap{display:inline-flex;align-items:center;gap:8px;flex:none;}
.sf-inwrap input{width:84px;padding:10px 12px;border:1.5px solid rgba(18,53,38,.28);border-radius:11px;background:#fff;color:#123526;font-family:var(--fb);font-size:16px;font-weight:600;box-shadow:2px 2px 0 rgba(18,53,38,.08);text-align:center;}
.sf-inwrap input:focus{outline:none;border-color:#123526;box-shadow:3px 3px 0 #C6E84B;}
.sf-unit{font-family:var(--fl);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#6f8574;white-space:nowrap;width:46px;}
.sf-breakdown{margin-top:20px;border-top:1px dashed rgba(18,53,38,.22);padding-top:14px;display:flex;flex-direction:column;gap:9px;}
.sf-li{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:14px;color:#3d4a41;}
.sf-li > span{display:flex;gap:7px;align-items:baseline;flex-wrap:wrap;}
.sf-li em{font-style:normal;font-family:var(--fl);font-size:11px;color:#8ba48f;}
.sf-li b{font-weight:700;color:#123526;font-variant-numeric:tabular-nums;white-space:nowrap;}
.sf-min-li > span, .sf-min-li em, .sf-min-li b{color:#1E7A4C;}
.sf-total{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:16px;padding-top:14px;border-top:2px solid #123526;}
.sf-total-lbl{font-family:var(--fl);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#1E7A4C;max-width:9ch;line-height:1.25;}
.sf-total-box{display:inline-flex;align-items:baseline;gap:2px;background:#C6E84B;border:2px solid #0d2419;border-radius:14px;box-shadow:5px 5px 0 #0d2419;padding:8px 16px;font-family:var(--fd);font-weight:700;color:#0d2419;}
.sf-dollar{font-size:22px;}
.sf-total-box #cTotal{font-size:clamp(30px,3.6vw,40px);line-height:1;font-variant-numeric:tabular-nums;}
.sf-mo{font-size:15px;margin-left:2px;}
.sf-disc{font-size:12px;line-height:1.5;color:#5a6a5f;margin-top:16px;background:rgba(30,122,76,.07);border-radius:10px;padding:12px 14px;}
.sf-calc-cta{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:16px;background:#0d2419;color:#C6E84B;text-decoration:none;font-weight:700;font-size:16px;padding:15px;border-radius:14px;border:2px solid #0d2419;box-shadow:4px 4px 0 rgba(13,36,25,.5);font-family:var(--fb);}
@media (max-width:420px){.sf-field{flex-direction:column;align-items:flex-start;gap:7px;}.sf-inwrap input{width:100px;}}
@media (max-width:540px){
  .steps{grid-template-columns:1fr !important;}
  .feat-grid{grid-template-columns:1fr !important;}
  .values{grid-template-columns:1fr !important;}
  .form-row{grid-template-columns:1fr !important;}
  .ind-grid{grid-template-columns:1fr !important;} /* stop right-column cards clipping off-screen on phones */
}
/* let industry cards shrink + wrap instead of overflowing in the 2-col tablet range */
.ind-grid > div{min-width:0;}
.ind-grid > div > span:last-child{min-width:0;overflow-wrap:anywhere;}

/* ============================================================
   INTERACTION (replaces the mockup's style-hover / style-focus)
   ============================================================ */
.nl{transition:color .15s ease;}
.nl:hover{color:#1E7A4C !important;}
.flink{transition:color .15s ease;}
.flink:hover{color:#C6E84B !important;}
.flink2{transition:color .15s ease;}
.flink2:hover{color:#a9bdab !important;}
.sol-link{transition:filter .15s ease, border-color .15s ease;}
.sol-link:hover{filter:brightness(1.12);border-color:rgba(198,232,75,.85) !important;}

.btn-sticker,.btn-lime,.btn-dark,.btn-hard-lime,.btn-sticker-paper{white-space:nowrap;}
.btn-lime{transition:transform .14s ease, box-shadow .14s ease, filter .15s ease;}
.btn-lime:hover{transform:translate(2px,2px);box-shadow:none !important;filter:brightness(.97);}
.btn-dark{transition:transform .14s ease, box-shadow .14s ease, filter .15s ease;}
.btn-dark:hover{transform:translate(3px,3px);box-shadow:none !important;filter:brightness(1.12);}
.btn-sticker{transition:transform .12s ease,box-shadow .12s ease;}
.btn-sticker:hover{transform:translate(1px,1px);box-shadow:1px 1px 0 #0d2419 !important;}
.btn-hard-lime{transition:transform .12s ease,box-shadow .12s ease;}
.btn-hard-lime:hover{transform:translate(1px,1px);box-shadow:2px 2px 0 #C6E84B !important;}
.btn-sticker-paper{transition:transform .12s ease,box-shadow .12s ease;}
.btn-sticker-paper:hover{transform:translate(1px,1px);box-shadow:2px 2px 0 rgba(244,247,241,.9) !important;}

/* Uniform hard-offset "sticker" shadow system across ALL cards.
   White cards: quiet translucent dark offset. Accent cards: bold solid offset.
   Same 6px direction everywhere; hover grows the offset + lifts. */
.ind-card{transition:transform .18s ease, box-shadow .18s ease;box-shadow:6px 6px 0 rgba(18,53,38,.16);}
.ind-card:hover{transform:translateY(-5px) rotate(-1deg);box-shadow:10px 10px 0 rgba(18,53,38,.22);}
.ind-card.r:hover{transform:translateY(-5px) rotate(1deg);}

.steps > div, .feat-grid > div{transition:transform .2s ease, box-shadow .2s ease;}
.steps > div:not(:last-child):hover,
.feat-grid > div:not(.feat-hero):hover{transform:translateY(-5px);box-shadow:10px 10px 0 rgba(18,53,38,.22) !important;}
.steps > div:last-child:hover{transform:translateY(-5px);box-shadow:10px 10px 0 #C6E84B !important;}
.feat-hero:hover{transform:translateY(-5px);box-shadow:10px 10px 0 #0d2419 !important;}

/* [ How it works ] — outlined step numbers fill in solid on card hover */
.step-num{transition:color .2s ease;}
.steps > div:hover .step-num{color:#1E7A4C !important;}
.steps > div:last-child:hover .step-num{color:#C6E84B !important;}

/* sticky header offset under the WP admin bar */
.admin-bar .sf-header{top:32px;}
@media screen and (max-width:782px){.admin-bar .sf-header{top:46px;}}

/* ============================================================
   FLUENT FORMS — styled to match the site's chunky "sticker" look
   ============================================================ */
/* Labels: match the page's Space Mono micro-labels (HEADQUARTERS / EMAIL etc.) */
.snazzy-form .ff-el-input--label label,
.snazzy-form .ff-el-input--label label.ff-el-is-required{
  font-family:var(--fl) !important;font-size:11.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:.09em;color:#1E7A4C;margin-bottom:9px;
}
.snazzy-form .ff-el-is-required-mark,.snazzy-form .ff-el-input--label label span{color:#1E7A4C;}

/* Inputs: 1.5px ink border, radius, and a soft hard-offset shadow so they read as sticker fields */
.snazzy-form .ff-el-form-control{
  width:100%;padding:13px 15px;border:1.5px solid rgba(18,53,38,.28) !important;
  border-radius:12px !important;font-size:15px;font-family:var(--fb);background:#fff !important;color:#123526;
  box-shadow:2px 2px 0 rgba(18,53,38,.08) !important;
  transition:border-color .15s ease,box-shadow .15s ease,transform .12s ease;
}
.snazzy-form .ff-el-form-control::placeholder{color:#8ba48f;}
.snazzy-form .ff-el-form-control:hover{border-color:rgba(18,53,38,.45) !important;}
/* Focus: dark border + a lime sticker shadow — on brand */
.snazzy-form .ff-el-form-control:focus{
  border-color:#123526 !important;outline:none;box-shadow:3px 3px 0 #C6E84B !important;
}
.snazzy-form textarea.ff-el-form-control{resize:vertical;min-height:122px;}
.snazzy-form select.ff-el-form-control{appearance:auto;}
.snazzy-form .ff-el-group{margin-bottom:18px;}

/* Two-column rows (native FF container) → responsive */
.snazzy-form .ff-t-container{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;}
.snazzy-form .ff-t-container .ff-t-cell{padding:0 !important;}
@media (max-width:600px){.snazzy-form .ff-t-container{grid-template-columns:1fr;}}

/* Submit: full sticker button matching the site's CTAs — hard shadow + press-in hover */
.snazzy-form .ff-btn.ff-btn-submit,
.snazzy-form .ff_submit_btn_wrapper button{
  width:100%;margin-top:6px;background:#C6E84B !important;color:#0d2419 !important;
  border:1.5px solid #0d2419 !important;font-weight:700;font-size:16px;padding:16px;
  border-radius:14px;cursor:pointer;font-family:var(--fb);
  box-shadow:4px 4px 0 #0d2419 !important;text-transform:none;
  transition:transform .12s ease,box-shadow .12s ease,filter .15s ease;
}
.snazzy-form .ff-btn.ff-btn-submit:hover,
.snazzy-form .ff_submit_btn_wrapper button:hover{
  transform:translate(1px,1px);box-shadow:2px 2px 0 #0d2419 !important;filter:brightness(.97);
}
.snazzy-form .ff-message-success{
  text-align:center;padding:24px 12px;font-family:var(--fb);
  color:#123526;font-size:15.5px;line-height:1.55;
}
