/* ═══════════════════════════════════════════════════════════ LISTIFY AGENCY — DESIGN SYSTEM v2 Light Minimal Theme · Warm cream + charcoal ═══════════════════════════════════════════════════════════ */ /* ── TOKENS ── */ :root { /* Colours */ --bg: #faf8f5; --bg2: #f2ede6; --bg3: #e8e1d8; --surface: #ffffff; --surf2: #f7f4f0; --border: rgba(60,45,30,.1); --border2: rgba(60,45,30,.18); --tx: #1a1410; --tx2: #4a3f33; --tx3: #8a7a6a; --mu: #b0a090; --go: #c9a84c; /* gold accent */ --go2: #e8c96a; --go-dark: #a07830; --go-bg: rgba(201,168,76,.08); --go-bg2: rgba(201,168,76,.15); --gr: #22c55e; /* green for "after" */ --re: #ef4444; /* red for "before" */ --wa: #25d366; /* WhatsApp */ --shadow-sm: 0 1px 3px rgba(60,45,30,.08); --shadow-md: 0 4px 16px rgba(60,45,30,.10); --shadow-lg: 0 12px 40px rgba(60,45,30,.13); /* Typography */ --fh: 'Outfit', system-ui, sans-serif; --fs: 'Playfair Display', Georgia, serif; --fm: 'JetBrains Mono', monospace; /* Spacing */ --sx: clamp(20px, 5.5vw, 88px); --mw: 1220px; /* Easing */ --ease: cubic-bezier(.4,0,.2,1); --ease-out: cubic-bezier(0,0,.2,1); --ease-spring: cubic-bezier(.34,1.56,.64,1); /* Radius */ --r-sm: 6px; --r-md: 10px; --r-lg: 16px; --r-xl: 24px; --r-full: 9999px; } /* ── RESET ── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-size: 16px; scroll-behavior: smooth; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: hidden; } body { font-family: var(--fh); background: var(--bg); color: var(--tx); line-height: 1.6; overflow-x: hidden; min-height: 100vh; } img, video, svg { display: block; max-width: 100%; } a { color: inherit; text-decoration: none; } button, input, textarea, select { font-family: inherit; font-size: inherit; } ul, ol { list-style: none; } /* ── LAYOUT ── */ .container { width: 100%; max-width: var(--mw); margin: 0 auto; padding: 0 var(--sx); } .section { padding: clamp(80px, 10vw, 140px) 0; } .section--sm { padding: clamp(48px, 6vw, 80px) 0; } .section--lg { padding: clamp(100px, 13vw, 180px) 0; } /* ── TYPOGRAPHY ── */ .eyebrow { font-family: var(--fh); font-size: 11px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--go-dark); display: inline-flex; align-items: center; gap: 10px; } .eyebrow::before { content: ''; display: block; width: 20px; height: 1px; background: var(--go); } .h1 { font-family: var(--fh); font-size: clamp(2.8rem, 6vw, 5.2rem); font-weight: 900; line-height: 1.04; letter-spacing: -.04em; color: var(--tx); } .h2 { font-family: var(--fh); font-size: clamp(2rem, 4vw, 3.6rem); font-weight: 800; line-height: 1.1; letter-spacing: -.03em; color: var(--tx); } .h3 { font-family: var(--fh); font-size: clamp(1.3rem, 2.5vw, 2rem); font-weight: 700; line-height: 1.2; letter-spacing: -.02em; } .serif { font-family: var(--fs); font-style: italic; color: var(--go-dark); } .body-lg { font-size: clamp(15px, 1.6vw, 18px); color: var(--tx2); line-height: 1.75; font-weight: 300; } .body-sm { font-size: clamp(13px, 1.3vw, 15px); color: var(--tx3); line-height: 1.7; } /* ── DIVIDER ── */ .divider { width: 100%; height: 1px; background: var(--border); } /* ── BUTTONS ── */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 14px 28px; border-radius: var(--r-full); font-family: var(--fh); font-size: 14px; font-weight: 700; letter-spacing: .02em; cursor: pointer; border: 2px solid transparent; transition: all .22s var(--ease); white-space: nowrap; position: relative; overflow: hidden; } .btn::after { content: ''; position: absolute; inset: 0; background: rgba(255,255,255,0); transition: background .2s; } .btn:hover::after { background: rgba(255,255,255,.08); } .btn-primary { background: var(--tx); color: #fff; border-color: var(--tx); } .btn-primary:hover { background: var(--tx2); border-color: var(--tx2); transform: translateY(-1px); box-shadow: var(--shadow-md); } .btn-gold { background: var(--go); color: var(--tx); border-color: var(--go); } .btn-gold:hover { background: var(--go2); transform: translateY(-1px); box-shadow: 0 8px 24px rgba(201,168,76,.35); } .btn-outline { background: transparent; color: var(--tx); border-color: var(--border2); } .btn-outline:hover { border-color: var(--tx); background: var(--surf2); } .btn-ghost { background: transparent; color: var(--tx2); border-color: transparent; padding: 12px 18px; } .btn-ghost:hover { background: var(--bg2); } .btn-wa { background: var(--wa); color: #fff; border-color: var(--wa); } .btn-wa:hover { background: #1da852; transform: translateY(-1px); box-shadow: 0 8px 24px rgba(37,211,102,.35); } .btn-sm { padding: 9px 20px; font-size: 13px; } .btn-lg { padding: 18px 38px; font-size: 16px; } /* ── CARDS ── */ .card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-lg); padding: clamp(24px, 3.5vw, 36px); transition: transform .25s var(--ease), box-shadow .25s var(--ease), border-color .25s; } .card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); border-color: var(--border2); } .card-glass { background: rgba(255,255,255,.7); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid rgba(255,255,255,.5); } /* ── BADGE ── */ .badge { display: inline-flex; align-items: center; gap: 5px; padding: 4px 12px; border-radius: var(--r-full); font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; } .badge-gold { background: var(--go-bg2); color: var(--go-dark); border: 1px solid rgba(201,168,76,.25); } .badge-green { background: rgba(34,197,94,.1); color: #16a34a; border: 1px solid rgba(34,197,94,.2); } /* ── NAVIGATION ── */ #nav { position: fixed; top: 0; left: 0; right: 0; z-index: 100; padding: 0 var(--sx); height: 68px; display: flex; align-items: center; justify-content: space-between; gap: 24px; background: rgba(250,248,245,.92); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-bottom: 1px solid transparent; transition: border-color .3s, box-shadow .3s; } #nav.scrolled { border-bottom-color: var(--border); box-shadow: 0 1px 24px rgba(60,45,30,.06); } .nav-logo { display: flex; align-items: center; gap: 10px; text-decoration: none; flex-shrink: 0; } .nav-logo-mark { width: 34px; height: 34px; background: var(--tx); border-radius: 8px; display: flex; align-items: center; justify-content: center; color: var(--bg); font-weight: 900; font-size: 16px; letter-spacing: -.03em; } .nav-logo-text { font-weight: 800; font-size: 17px; letter-spacing: -.02em; color: var(--tx); } .nav-logo-text span { color: var(--go-dark); } .nav-links { display: flex; align-items: center; gap: 2px; list-style: none; } .nav-links a { font-size: 14px; font-weight: 500; color: var(--tx2); padding: 7px 14px; border-radius: var(--r-full); transition: all .18s; letter-spacing: .01em; } .nav-links a:hover, .nav-links a.active { color: var(--tx); background: var(--bg2); } .nav-cta { margin-left: 8px; } .nav-mob-btn { display: none; width: 40px; height: 40px; border: none; background: none; cursor: pointer; flex-direction: column; align-items: center; justify-content: center; gap: 5px; border-radius: var(--r-sm); transition: background .2s; } .nav-mob-btn:hover { background: var(--bg2); } .nav-mob-btn span { display: block; width: 22px; height: 2px; background: var(--tx); border-radius: 2px; transition: all .3s var(--ease); } .nav-mob-btn.open span:nth-child(1) { transform: rotate(45deg) translate(5px,5px); } .nav-mob-btn.open span:nth-child(2) { opacity: 0; transform: scaleX(0); } .nav-mob-btn.open span:nth-child(3) { transform: rotate(-45deg) translate(5px,-5px); } .mob-drawer { position: fixed; top: 68px; left: 0; right: 0; background: var(--bg); border-bottom: 1px solid var(--border); padding: 16px var(--sx) 24px; transform: translateY(-110%); transition: transform .35s var(--ease); z-index: 99; box-shadow: var(--shadow-lg); } .mob-drawer.open { transform: none; } .mob-drawer ul { display: flex; flex-direction: column; gap: 2px; } .mob-drawer a { display: block; padding: 11px 14px; font-size: 15px; font-weight: 500; color: var(--tx2); border-radius: var(--r-sm); transition: all .18s; } .mob-drawer a:hover { background: var(--bg2); color: var(--tx); } .mob-drawer .mob-cta { margin-top: 12px; width: 100%; justify-content: center; } /* ── PAGE TOP OFFSET ── */ .page-top { padding-top: 68px; } /* ── SCROLL REVEAL ── */ .rv { opacity: 0; transform: translateY(30px); transition: opacity .7s var(--ease-out), transform .7s var(--ease-out); } .rv.visible { opacity: 1; transform: none; } .rv.from-left { transform: translateX(-30px); } .rv.from-right { transform: translateX(30px); } .rv.from-left.visible, .rv.from-right.visible { transform: none; } .rv.scale { transform: scale(.95); } .rv.scale.visible { transform: scale(1); } .d1 { transition-delay: .1s; } .d2 { transition-delay: .2s; } .d3 { transition-delay: .3s; } .d4 { transition-delay: .4s; } .d5 { transition-delay: .5s; } /* ── MARQUEE ── */ .marquee-wrap { overflow: hidden; padding: 18px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); background: var(--surf2); } .marquee-track { display: flex; width: max-content; animation: marquee 80s linear infinite; will-change: transform; transform: translateZ(0); backface-visibility: hidden; } .marquee-wrap:hover .marquee-track { animation-play-state: paused; } .marquee-item { display: flex; align-items: center; gap: 10px; padding: 0 clamp(20px,3vw,36px); font-family: var(--fh); font-size: clamp(12px,1.3vw,14px); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--tx3); white-space: nowrap; transition: color .2s; } .marquee-item:hover { color: var(--go-dark); } .marquee-dot { width: 4px; height: 4px; border-radius: 50%; background: var(--go); flex-shrink: 0; } @keyframes marquee { from { transform: translate3d(0,0,0); } to { transform: translate3d(-50%,0,0); } } /* ── BENTO GRID ── */ .bento-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; } .bento-cell { background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-lg); padding: clamp(20px,3vw,32px); transition: transform .22s var(--ease), box-shadow .22s; } .bento-cell:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); } .bento-cell.gold-bg { background: var(--tx); border-color: var(--tx); color: #fff; } .bento-cell.wide { grid-column: span 2; } .bento-cell.tall { grid-row: span 2; } .bento-val { font-size: clamp(2.2rem,4.5vw,3.8rem); font-weight: 900; letter-spacing: -.04em; line-height: 1; color: var(--tx); } .bento-cell.gold-bg .bento-val { color: var(--go2); } .bento-label { font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--tx3); margin-bottom: 10px; } .bento-cell.gold-bg .bento-label { color: rgba(255,255,255,.5); } .bento-sub { font-size: 13px; color: var(--tx3); margin-top: 6px; } .bento-cell.gold-bg .bento-sub { color: rgba(255,255,255,.6); } .bento-bar { height: 3px; background: var(--bg3); border-radius: 3px; margin-top: 14px; overflow: hidden; } .bento-bar-fill { height: 100%; background: var(--go); border-radius: 3px; width: 0%; transition: width 1.2s var(--ease-out); } /* ── BEFORE/AFTER CARDS ── */ .baf-grid { display: grid; grid-template-columns: 1fr auto 1fr; gap: clamp(16px,3vw,32px); align-items: center; max-width: 920px; margin: 0 auto; } .baf-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-lg); padding: clamp(24px,4vw,40px); } .baf-card.before { border-color: rgba(239,68,68,.2); background: rgba(239,68,68,.02); } .baf-card.after { border-color: rgba(34,197,94,.2); background: rgba(34,197,94,.02); } .baf-card-head { font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; margin-bottom: 20px; display: flex; align-items: center; gap: 7px; } .baf-card.before .baf-card-head { color: var(--re); } .baf-card.after .baf-card-head { color: var(--gr); } .baf-list { display: flex; flex-direction: column; gap: 10px; } .baf-list li { display: flex; align-items: flex-start; gap: 10px; font-size: clamp(13px,1.3vw,14.5px); color: var(--tx2); line-height: 1.5; } .baf-list li::before { content: ''; flex-shrink: 0; width: 16px; height: 16px; border-radius: 50%; margin-top: 1px; } .baf-card.before .baf-list li { color: var(--tx3); text-decoration: line-through; text-decoration-color: rgba(239,68,68,.35); } .baf-card.before .baf-list li::before { background: rgba(239,68,68,.15); } .baf-card.after .baf-list li { color: var(--tx); } .baf-card.after .baf-list li::before { background: rgba(34,197,94,.2); } .baf-arrow { font-size: clamp(20px,3vw,28px); color: var(--border2); text-align: center; flex-shrink: 0; } /* ── TESTIMONIALS ── */ .testimonial-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-lg); padding: clamp(24px,3.5vw,36px); } .testimonial-quote { font-family: var(--fs); font-style: italic; font-size: clamp(15px,1.6vw,18px); color: var(--tx2); line-height: 1.65; margin-bottom: 20px; } .testimonial-meta { display: flex; align-items: center; gap: 12px; } .testimonial-avatar { width: 42px; height: 42px; border-radius: 50%; background: var(--bg3); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 15px; color: var(--tx2); flex-shrink: 0; } .testimonial-name { font-weight: 700; font-size: 14px; color: var(--tx); } .testimonial-role { font-size: 12px; color: var(--tx3); } .stars { color: var(--go); font-size: 13px; letter-spacing: 1px; margin-bottom: 14px; } /* ── PRICING ── */ .price-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-lg); padding: clamp(28px,4vw,44px); position: relative; transition: transform .25s var(--ease), box-shadow .25s; } .price-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); } .price-card.featured { border-color: var(--tx); background: var(--tx); color: #fff; } .price-badge { position: absolute; top: -12px; left: 50%; transform: translateX(-50%); background: var(--go); color: var(--tx); font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; padding: 4px 14px; border-radius: var(--r-full); } .price-tier { font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--tx3); margin-bottom: 8px; } .price-card.featured .price-tier { color: rgba(255,255,255,.5); } .price-amount { font-size: clamp(2rem,4vw,3rem); font-weight: 900; letter-spacing: -.04em; line-height: 1; margin-bottom: 6px; } .price-note { font-size: 13px; color: var(--tx3); margin-bottom: 24px; } .price-card.featured .price-note { color: rgba(255,255,255,.5); } .price-items { display: flex; flex-direction: column; gap: 10px; margin-bottom: 28px; } .price-item { display: flex; align-items: center; gap: 9px; font-size: 14px; color: var(--tx2); } .price-card.featured .price-item { color: rgba(255,255,255,.8); } .price-item::before { content: '✓'; width: 18px; height: 18px; background: var(--go-bg2); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 10px; color: var(--go-dark); flex-shrink: 0; } .price-card.featured .price-item::before { background: rgba(201,168,76,.2); color: var(--go2); } /* ── FAQ ── */ .faq-item { border-bottom: 1px solid var(--border); } .faq-q { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 20px 0; background: none; border: none; cursor: pointer; font-size: clamp(14px,1.5vw,16px); font-weight: 600; color: var(--tx); text-align: left; transition: color .2s; } .faq-q:hover { color: var(--go-dark); } .faq-icon { width: 24px; height: 24px; border: 1px solid var(--border2); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 16px; color: var(--tx3); flex-shrink: 0; transition: all .25s; } .faq-item.open .faq-icon { background: var(--tx); color: #fff; border-color: var(--tx); transform: rotate(45deg); } .faq-a { overflow: hidden; max-height: 0; transition: max-height .35s var(--ease-out), padding .35s; } .faq-item.open .faq-a { max-height: 400px; padding-bottom: 20px; } .faq-a p { font-size: 14.5px; color: var(--tx2); line-height: 1.75; } /* ── FOOTER ── */ footer { background: var(--tx); color: rgba(255,255,255,.8); padding: clamp(60px,8vw,100px) 0 clamp(24px,4vw,40px); } .footer-grid { display: grid; grid-template-columns: 1.8fr 1fr 1fr 1fr; gap: clamp(28px,5vw,60px); margin-bottom: clamp(40px,6vw,60px); } .footer-brand .nav-logo-mark { background: var(--go); color: var(--tx); } .footer-brand .nav-logo-text { color: #fff; } .footer-brand .nav-logo-text span { color: var(--go2); } .footer-desc { font-size: 13.5px; color: rgba(255,255,255,.45); line-height: 1.75; margin-top: 14px; max-width: 280px; } .footer-col h4 { font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: rgba(255,255,255,.35); margin-bottom: 16px; } .footer-col ul { display: flex; flex-direction: column; gap: 9px; } .footer-col a { font-size: 13.5px; color: rgba(255,255,255,.55); transition: color .18s; } .footer-col a:hover { color: #fff; } .footer-bottom { border-top: 1px solid rgba(255,255,255,.08); padding-top: 22px; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; } .footer-copy { font-size: 12px; color: rgba(255,255,255,.3); } .footer-social { display: flex; gap: 8px; } .footer-social a { width: 34px; height: 34px; border-radius: 50%; border: 1px solid rgba(255,255,255,.12); display: flex; align-items: center; justify-content: center; font-size: 13px; color: rgba(255,255,255,.4); transition: all .2s; } .footer-social a:hover { border-color: rgba(255,255,255,.35); color: #fff; } /* ── WA FLOAT ── */ .wa-float { position: fixed; bottom: 24px; right: 24px; z-index: 90; width: 54px; height: 54px; border-radius: 50%; background: var(--wa); color: #fff; font-size: 22px; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 20px rgba(37,211,102,.45); transition: transform .2s var(--ease-spring), box-shadow .2s; cursor: pointer; border: none; text-decoration: none; } .wa-float:hover { transform: scale(1.1); box-shadow: 0 8px 28px rgba(37,211,102,.55); } /* ── STICKY CTA ── */ #sticky-cta { position: fixed; bottom: clamp(86px,12vw,100px); left: 50%; transform: translateX(-50%) translateY(20px); z-index: 89; background: var(--tx); color: #fff; border-radius: var(--r-full); padding: 12px 20px 12px 18px; display: flex; align-items: center; gap: 14px; box-shadow: var(--shadow-lg); opacity: 0; pointer-events: none; transition: opacity .35s, transform .35s var(--ease); white-space: nowrap; max-width: calc(100vw - 32px); } #sticky-cta.show { opacity: 1; transform: translateX(-50%) translateY(0); pointer-events: auto; } .scta-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--gr); flex-shrink: 0; animation: pulse 2s ease-in-out infinite; } @keyframes pulse { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.6;transform:scale(1.3)} } .scta-text { font-size: 13px; font-weight: 500; color: rgba(255,255,255,.85); } .scta-btn { background: var(--go); color: var(--tx); border: none; border-radius: var(--r-full); padding: 7px 16px; font-size: 13px; font-weight: 700; cursor: pointer; transition: background .2s; text-decoration: none; } .scta-btn:hover { background: var(--go2); } .scta-close { background: none; border: none; color: rgba(255,255,255,.4); cursor: pointer; font-size: 18px; line-height: 1; padding: 2px; transition: color .2s; } .scta-close:hover { color: #fff; } /* ── CURSOR ── */ #cursor { position: fixed; width: 8px; height: 8px; background: var(--tx); border-radius: 50%; pointer-events: none; z-index: 9999; transform: translate(-50%,-50%); transition: transform .1s, background .2s, width .2s, height .2s; } #cursor-ring { position: fixed; width: 36px; height: 36px; border: 1.5px solid rgba(60,45,30,.35); border-radius: 50%; pointer-events: none; z-index: 9998; transform: translate(-50%,-50%); transition: transform .08s, width .25s var(--ease), height .25s var(--ease), border-color .25s, opacity .25s; } /* ── SKIP LINK ── */ .skip-link { position: absolute; top: -100%; left: 16px; background: var(--tx); color: #fff; padding: 8px 16px; border-radius: 0 0 var(--r-md) var(--r-md); font-size: 13px; font-weight: 600; z-index: 200; transition: top .2s; } .skip-link:focus { top: 0; } /* ── REDUCED MOTION ── */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; } .rv { opacity: 1; transform: none; } .marquee-track { animation: none; } #cursor, #cursor-ring { display: none; } } /* ── RESPONSIVE ── */ @media (max-width: 1100px) { .bento-grid { grid-template-columns: repeat(2,1fr); } .bento-cell.wide { grid-column: span 2; } .footer-grid { grid-template-columns: 1fr 1fr; } } @media (max-width: 900px) { .baf-grid { grid-template-columns: 1fr; } .baf-arrow { transform: rotate(90deg); } } @media (max-width: 768px) { :root { --sx: clamp(16px,5vw,28px); } .nav-links, .nav-cta { display: none; } .nav-mob-btn { display: flex; } .footer-grid { grid-template-columns: 1fr; gap: 28px; } .footer-desc { max-width: 100%; } #cursor, #cursor-ring { display: none; } } @media (max-width: 480px) { .bento-grid { grid-template-columns: 1fr; } .bento-cell.wide { grid-column: span 1; } .footer-bottom { flex-direction: column; align-items: flex-start; gap: 12px; } #sticky-cta { flex-wrap: wrap; border-radius: var(--r-lg); padding: 12px 14px; } .scta-text { flex: 1 1 100%; font-size: 12px; } } /* ── FOCUS VISIBLE ── */ :focus-visible { outline: 2px solid var(--go); outline-offset: 3px; border-radius: 3px; } :focus:not(:focus-visible) { outline: none; } /* ── SCROLLBAR ── */ ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: var(--bg2); } ::-webkit-scrollbar-thumb { background: var(--border2); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: var(--tx3); } /* ── FORM ELEMENTS ── */ .form-group { display: flex; flex-direction: column; gap: 6px; } .form-label { font-size: 13px; font-weight: 600; color: var(--tx); } .form-input, .form-textarea, .form-select { padding: 12px 16px; border: 1.5px solid var(--border2); border-radius: var(--r-md); background: var(--surface); color: var(--tx); font-size: max(16px, 14px); transition: border-color .2s, box-shadow .2s; width: 100%; } .form-input:focus, .form-textarea:focus { outline: none; border-color: var(--go); box-shadow: 0 0 0 3px var(--go-bg2); } .form-textarea { resize: vertical; min-height: 100px; } .form-error { font-size: 12px; color: var(--re); } /* ── PROGRESS BAR ── */ .progress-bar { height: 3px; background: var(--bg3); border-radius: 2px; overflow: hidden; } .progress-fill { height: 100%; background: var(--go); border-radius: 2px; width: 0%; transition: width .4s var(--ease); } /* ── STEP INDICATOR ── */ .steps { display: flex; gap: 0; margin-bottom: 32px; } .step { flex: 1; display: flex; align-items: center; gap: 10px; position: relative; } .step::after { content: ''; flex: 1; height: 1px; background: var(--border); transition: background .3s; } .step:last-child::after { display: none; } .step.done::after { background: var(--go); } .step-num { width: 28px; height: 28px; border-radius: 50%; border: 1.5px solid var(--border2); display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; color: var(--tx3); flex-shrink: 0; transition: all .25s; background: var(--surface); } .step.active .step-num { border-color: var(--tx); background: var(--tx); color: #fff; } .step.done .step-num { border-color: var(--go); background: var(--go); color: var(--tx); } /* ── UTILITY ── */ .text-center { text-align: center; } .text-gold { color: var(--go-dark); } .text-muted { color: var(--tx3); } .mb-4 { margin-bottom: 16px; } .mb-6 { margin-bottom: 24px; } .mb-8 { margin-bottom: 32px; } .mb-10 { margin-bottom: 40px; } .mt-4 { margin-top: 16px; } .mt-6 { margin-top: 24px; } .mt-8 { margin-top: 32px; } .flex { display: flex; } .flex-center { display: flex; align-items: center; justify-content: center; } .flex-between { display: flex; align-items: center; justify-content: space-between; } .gap-2 { gap: 8px; } .gap-3 { gap: 12px; } .gap-4 { gap: 16px; } .gap-6 { gap: 24px; } .grid-2 { display: grid; grid-template-columns: repeat(2,1fr); gap: 20px; } .grid-3 { display: grid; grid-template-columns: repeat(3,1fr); gap: 20px; } .grid-4 { display: grid; grid-template-columns: repeat(4,1fr); gap: 20px; } @media(max-width:768px) { .grid-2,.grid-3,.grid-4 { grid-template-columns: 1fr; } .grid-2-sm { grid-template-columns: 1fr 1fr; } } /* ══════════════════════════════════════════════════════════════ RESPONSIVE UPGRADE — All devices: 320px → 4K Tablets · Large phones · Laptops · Ultrawide · Retina ══════════════════════════════════════════════════════════════ */ /* ── iOS safe area insets ── */ :root { --safe-top: env(safe-area-inset-top, 0px); --safe-bottom: env(safe-area-inset-bottom, 0px); --safe-left: env(safe-area-inset-left, 0px); --safe-right: env(safe-area-inset-right, 0px); } /* ── Prevent all horizontal overflow ── */ html, body { max-width: 100%; overflow-x: hidden; } * { min-width: 0; } /* ── Tablet: 768–1024px ── */ @media (min-width: 769px) and (max-width: 1024px) { :root { --sx: clamp(24px, 4.5vw, 52px); } .hero-stats { grid-template-columns: repeat(3, 1fr); } .srv-grid { grid-template-columns: repeat(2, 1fr); } .testimonials-scroll { grid-template-columns: 1fr; gap: 16px; } .grid-3 { grid-template-columns: 1fr 1fr; } .price-card { padding: clamp(20px,3vw,32px); } .section { padding: clamp(60px, 8vw, 100px) 0; } .story-wrap { gap: clamp(24px, 4vw, 48px); } } /* ── Mobile: ≤768px ── */ @media (max-width: 768px) { /* Typography */ .h1 { font-size: clamp(2.2rem, 8.5vw, 3.2rem); letter-spacing: -.035em; } .h2 { font-size: clamp(1.7rem, 6.5vw, 2.6rem); } .h3 { font-size: clamp(1.2rem, 4.5vw, 1.6rem); } .body-lg { font-size: clamp(14px, 3.8vw, 17px); } .eyebrow { font-size: 10px; } /* Section spacing */ .section { padding: clamp(48px, 10vw, 80px) 0; } .section--sm { padding: clamp(32px, 7vw, 52px) 0; } .section-head { margin-bottom: clamp(28px, 7vw, 44px); } /* Nav */ #nav { padding: 0 clamp(14px, 4vw, 24px); height: 60px; } .page-top { padding-top: 60px; } .mob-drawer { top: 60px; } /* Hero */ .hero { padding: 80px 0 60px; min-height: 95svh; } .hero-actions { flex-direction: column; gap: 10px; } .hero-actions .btn { width: 100%; justify-content: center; } .hero-price { font-size: 12px; } .hero-stats { grid-template-columns: 1fr 1fr 1fr; } .hero-stat { padding: 14px 10px; } .hero-stat-val { font-size: clamp(1.3rem, 5vw, 1.8rem); } /* Services grid */ .srv-grid { grid-template-columns: 1fr; gap: 14px; } /* Story */ .story-wrap { grid-template-columns: 1fr; gap: 24px; } .story-visual { min-height: auto; padding: clamp(18px, 4vw, 28px); } .story-timeline .story-step { padding: 16px 0; } .story-step-h { font-size: 15px; } /* Testimonials */ .testimonials-scroll { grid-template-columns: 1fr; gap: 14px; } /* Pricing */ .grid-3 { grid-template-columns: 1fr; gap: 16px; } .price-badge { font-size: 10px; padding: 3px 10px; } /* Contact grid */ .contact-grid { grid-template-columns: 1fr; } .budget-opts { grid-template-columns: 1fr 1fr; } /* Portfolio */ .portfolio-grid { grid-template-columns: 1fr; } .filter-bar { gap: 6px; } .filter-btn { font-size: 12px; padding: 6px 12px; } /* Demos */ .grid-2 { grid-template-columns: 1fr; gap: 20px; } .roi-row { flex-direction: column; align-items: flex-start; gap: 6px; } .roi-input { width: 100%; } /* Guarantee grid */ .guarantee-grid { grid-template-columns: 1fr; } /* WA float — iOS safe area */ .wa-float { bottom: calc(20px + var(--safe-bottom)); right: calc(16px + var(--safe-right)); } /* Sticky CTA */ #sticky-cta { bottom: calc(80px + var(--safe-bottom)); width: calc(100vw - 28px); left: 14px; transform: translateX(0) translateY(20px); border-radius: var(--r-lg); } #sticky-cta.show { transform: translateX(0) translateY(0); } /* BAF */ .baf-grid { grid-template-columns: 1fr; gap: 12px; } .baf-arrow { transform: rotate(90deg); text-align: center; } /* Pain cards */ .pain-grid { grid-template-columns: 1fr; gap: 12px; } /* Demo cards */ .demo-head { flex-direction: row; align-items: flex-start; } .erp-grid { grid-template-columns: 1fr 1fr; } /* About values */ .value-card { padding: clamp(18px, 4vw, 24px); } /* Buttons */ .btn-lg { padding: 14px 24px; font-size: 15px; } .cta-actions { flex-direction: column; align-items: center; } .cta-actions .btn { width: 100%; max-width: 360px; justify-content: center; } } /* ── Small phones: ≤480px ── */ @media (max-width: 480px) { .hero-stats { grid-template-columns: 1fr 1fr; } .hero-stat:last-child { grid-column: span 2; } .steps { gap: 0; } .step-num { width: 24px; height: 24px; font-size: 11px; } .audit-opts { gap: 6px; } .audit-opt { padding: 5px 10px; font-size: 12px; } .chat-window { min-height: 180px; } .srv-detail-head { flex-direction: column; gap: 10px; } .guarantee-item { flex-direction: column; gap: 8px; } } /* ── Very small: ≤380px (iPhone SE, Galaxy A series) ── */ @media (max-width: 380px) { :root { --sx: 14px; } .h1 { font-size: 2rem; } .h2 { font-size: 1.55rem; } .hero-price { flex-direction: column; text-align: center; gap: 4px; } .hero-price span[style*="opacity"] { display: none; } .bento-grid { grid-template-columns: 1fr; } .bento-cell.wide { grid-column: 1; } .footer-social { gap: 6px; } .footer-social a { width: 30px; height: 30px; font-size: 12px; } } /* ── Ultrawide / 2K / 4K: ≥1440px ── */ @media (min-width: 1440px) { :root { --mw: 1380px; --sx: clamp(60px, 7vw, 120px); } .hero-h1 { font-size: clamp(5rem, 7.5vw, 8rem); } .section { padding: clamp(100px, 12vw, 160px) 0; } } @media (min-width: 1920px) { :root { --mw: 1600px; } } /* ── Touch devices: disable hover animations ── */ @media (hover: none) and (pointer: coarse) { body { cursor: auto !important; } #cursor, #cursor-ring { display: none !important; } .card:hover { transform: none; box-shadow: var(--shadow-sm); } .srv-card:hover { transform: none; box-shadow: none; } .btn-primary:hover, .btn-gold:hover, .btn-wa:hover { transform: none; } } /* ── High DPI / Retina: crisper rendering ── */ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { .nav-logo-mark { image-rendering: -webkit-optimize-contrast; } } /* ── Print ── */ @media print { #nav, .mob-drawer, .wa-float, #sticky-cta, #cursor, #cursor-ring { display: none !important; } .section { padding: 20px 0; } body { font-size: 12pt; color: #000; background: #fff; } } /* ── Landscape mobile ── */ @media (max-width: 768px) and (orientation: landscape) { .hero { min-height: auto; padding: 80px 0 40px; } .hero-stats { grid-template-columns: repeat(3, 1fr); } .mob-drawer { max-height: 80vh; overflow-y: auto; } } /* ── iOS Safari notch fix ── */ @supports (padding-top: env(safe-area-inset-top)) { #nav { padding-top: max(0px, env(safe-area-inset-top)); } .mob-drawer { padding-top: max(16px, env(safe-area-inset-top)); } } /* ── Overflow protection across all pages ── */ .container { padding-left: max(var(--sx), var(--safe-left)); padding-right: max(var(--sx), var(--safe-right)); } img { max-width: 100%; height: auto; } table { width: 100%; overflow-x: auto; display: block; } pre, code { overflow-x: auto; }