/* Financeway — premium redesign · minimal custom layer on top of Tailwind utilities */

::selection{ background:#E42C24; color:#211D1A; }

html{ scroll-behavior:smooth; }

body{
  font-family:'Inter',sans-serif;
  background-color:#F7F1E4;
  color:#211D1A;
}
html.dark body{ background-color:#0F0C09; color:#F3ECDD; }

.font-display{ font-family:'Fraunces','Georgia',serif; }
.font-mono{ font-family:'IBM Plex Mono',monospace; }

/* paper grain */
.grain{ position:relative; }
.grain::before{
  content:"";
  position:absolute; inset:0; pointer-events:none; z-index:0;
  opacity:.35; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.35'/%3E%3C/svg%3E");
}
html.dark .grain::before{ opacity:.18; mix-blend-mode:overlay; }

/* ledger hairlines */
.ledger-bg{
  background-image:repeating-linear-gradient(to bottom, transparent, transparent 43px, rgba(20,17,13,0.06) 44px);
}
html.dark .ledger-bg{ background-image:repeating-linear-gradient(to bottom, transparent, transparent 43px, rgba(243,236,221,0.05) 44px); }

/* reveal on scroll */
.reveal{ opacity:0; transform:translateY(22px); transition:opacity .7s cubic-bezier(.16,.8,.24,1), transform .7s cubic-bezier(.16,.8,.24,1); }
.reveal.in{ opacity:1; transform:translateY(0); }
@media (prefers-reduced-motion: reduce){ .reveal{ opacity:1; transform:none; transition:none; } }

/* affiliate marquee */
.marquee-track{ display:flex; width:max-content; animation:marquee 26s linear infinite; }
.marquee-track:hover{ animation-play-state:paused; }
@keyframes marquee{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }

/* theme toggle icon swap */
.theme-toggle{ position:relative; }
.theme-toggle .icon-sun, .theme-toggle .icon-moon{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  transition:opacity .25s ease, transform .35s ease;
}
.theme-toggle .icon-sun{ opacity:1; }
.theme-toggle .icon-moon{ opacity:0; transform:translate(-50%,-50%) rotate(-40deg) scale(.6); }
html.dark .theme-toggle .icon-sun{ opacity:0; transform:translate(-50%,-50%) rotate(40deg) scale(.6); }
html.dark .theme-toggle .icon-moon{ opacity:1; transform:translate(-50%,-50%) rotate(0) scale(1); }

/* premium button shine */
.btn-premium{ position:relative; overflow:hidden; isolation:isolate; box-shadow: inset 0 1px 0 rgba(255,255,255,.4), inset 0 -1px 0 rgba(0,0,0,.12); }
.btn-premium::before{
  content:""; position:absolute; top:0; left:-75%; width:45%; height:100%;
  background:linear-gradient(115deg, transparent, rgba(255,255,255,.65), transparent);
  transform:skewX(-18deg); transition:left .7s cubic-bezier(.16,.8,.24,1); pointer-events:none;
}
.btn-premium:hover::before{ left:130%; }
.btn-premium span{ position:relative; z-index:1; }

/* hero service cycler */
.cycle-word{ display:inline-block; min-width:1ch; }
.cycle-word .cw-in{ display:inline-block; }
@keyframes cycleIn{ from{ opacity:0; transform:translateY(10px); } to{ opacity:1; transform:translateY(0); } }
.cycle-word .cw-in.animating{ animation:cycleIn .45s cubic-bezier(.16,.8,.24,1); }

/* service chip */
.svc-chip{ transition:all .25s ease; }
.svc-chip:hover{ transform:translateY(-2px); }

/* nav dropdown */
.has-dropdown{ position:relative; }
/* Invisible bridge over the visual gap between the trigger and the panel —
   without this, the mouse leaves the hoverable area mid-transit and the
   dropdown closes before you reach the menu items. */
.has-dropdown::after{
  content:''; position:absolute; left:0; right:0; top:100%; height:14px;
}
.has-dropdown .dropdown{
  position:absolute; top:calc(100% + 14px); left:50%; transform:translateX(-50%) translateY(6px);
  opacity:0; pointer-events:none; transition:opacity .18s ease, transform .18s ease;
}
.has-dropdown:hover .dropdown{ opacity:1; pointer-events:auto; transform:translateX(-50%) translateY(0); }

/* mobile drawer */
html.drawer-locked, html.drawer-locked body{ overflow:hidden; }
.drawer-overlay{ opacity:0; pointer-events:none; transition:opacity .35s ease; }
.drawer-overlay.open{ opacity:1; pointer-events:auto; }
.drawer-panel{ transform:translateX(100%); transition:transform .4s cubic-bezier(.16,.8,.24,1); }
.drawer-panel.open{ transform:translateX(0); }
details > summary{ list-style:none; }
details > summary::-webkit-details-marker{ display:none; }
details[open] .details-chevron{ transform:rotate(180deg); }

/* nav underline */
.nav-link::after{
  content:""; position:absolute; left:14px; right:14px; bottom:2px; height:2px;
  background:#F0574B; transform:scaleX(0); transform-origin:left; transition:transform .25s ease;
}
.nav-link:hover::after, .nav-link.active::after{ transform:scaleX(1); }
.has-dropdown:hover .dd-chevron{ transform:rotate(180deg); }

/* faq */
.faq-a{ max-height:0; overflow:hidden; transition:max-height .35s ease; }
.faq-item.open .faq-q .plus{ transform:rotate(45deg); }
.faq-q .plus{ transition:transform .25s ease; display:inline-block; }

/* testimonial track */
#testiSlides{ display:flex; transition:transform .6s cubic-bezier(.16,.8,.24,1); }
.testi-slide{ min-width:100%; }
.testi-dot{ width:8px; height:8px; border-radius:999px; background:rgba(20,17,13,0.22); transition:all .25s ease; }
.testi-dot.active{ width:26px; background:#E42C24; }
html.dark .testi-dot{ background:rgba(243,236,221,0.25); }

/* range sliders */
input[type=range]{ -webkit-appearance:none; appearance:none; width:100%; height:4px; border-radius:999px; background:rgba(20,17,13,0.14); outline:none; }
html.dark input[type=range]{ background:rgba(243,236,221,0.16); }
input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none; appearance:none; width:20px; height:20px; border-radius:999px;
  background:#E42C24; border:3px solid #F7F1E4; box-shadow:0 2px 8px rgba(20,17,13,0.35); cursor:pointer; margin-top:0;
}
html.dark input[type=range]::-webkit-slider-thumb{ border-color:#0F0C09; }
input[type=range]::-moz-range-thumb{
  width:20px; height:20px; border-radius:999px; background:#E42C24; border:3px solid #F7F1E4; box-shadow:0 2px 8px rgba(20,17,13,0.35); cursor:pointer;
}

/* seal badge ring text spin (very slow, decorative) */
.seal-ring{ animation:spin 22s linear infinite; transform-origin:75px 75px; }
@keyframes spin{ to{ transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce){ .seal-ring{ animation:none; } }

/* focus visibility */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible{
  outline:2px solid #E42C24; outline-offset:2px; border-radius:4px;
}

/* corner-tick card */
.tick-card{ position:relative; }
.tick-card::before, .tick-card::after{
  content:""; position:absolute; width:14px; height:14px; border-color:#E42C24; opacity:0; transition:opacity .3s ease;
}
.tick-card::before{ top:10px; left:10px; border-top:1.5px solid; border-left:1.5px solid; }
.tick-card::after{ bottom:10px; right:10px; border-bottom:1.5px solid; border-right:1.5px solid; }
.tick-card:hover::before, .tick-card:hover::after{ opacity:1; }

/* scrollbar */
::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-track{ background:transparent; }
::-webkit-scrollbar-thumb{ background:rgba(228,44,36,0.45); border-radius:999px; }
