/* =====================================================================
   eccube — Modern UI Layer  (loads after style.css, frontend only)
   Additive polish: typography, buttons, cards, sections, header, forms.
   Built on existing --ec-* gradient tokens. Safe, non-structural.
   ===================================================================== */

:root {
  --ec-primary: #5b7cfa;
  --ec-primary-end: #9b6dff;
  --ec-accent: #ff8a00;
  --ec-gradient: linear-gradient(100deg, #5b7cfa 0%, #9b6dff 100%);
  --ec-gradient-hover: linear-gradient(100deg, #6b8aff 0%, #a981ff 100%);
  --ec-ink: #1b2333;
  --ec-body: #5b6475;
  --ec-muted: #8b93a3;
  --ec-line: #eceef3;
  --ec-surface: #ffffff;
  --ec-bg-soft: #f6f8fc;
  --ec-radius: 16px;
  --ec-radius-sm: 12px;
  --ec-radius-pill: 999px;
  --ec-shadow-sm: 0 2px 8px rgba(27, 35, 51, .06);
  --ec-shadow: 0 10px 30px rgba(27, 35, 51, .08);
  --ec-shadow-lg: 0 22px 50px rgba(27, 35, 51, .14);
  --ec-ring: 0 0 0 4px rgba(91, 124, 250, .18);
  --ec-ease: cubic-bezier(.2, .7, .2, 1);
}

/* ---------- Base rendering ---------- */
html { scroll-behavior: smooth; }
body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  color: var(--ec-body);
  background: var(--ec-bg-soft);
}
::selection { background: var(--ec-primary); color: #fff; }

/* ---------- Typography ---------- */
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
  color: var(--ec-ink);
  font-weight: 600;
  letter-spacing: -.01em;
  line-height: 1.25;
}
a { transition: color .25s var(--ec-ease); }
.text-linear-primary,
.text-primary {
  background: var(--ec-gradient);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent !important;
}

/* ---------- Section rhythm ---------- */
.section { position: relative; }
.section-header { margin-bottom: 2.4rem; }
.section-header h2,
.section-header .sub-title,
.section-header .title {
  position: relative;
}
.section-header.text-center h2::after,
.section-header.text-center .title::after {
  content: "";
  display: block;
  width: 64px;
  height: 4px;
  margin: 16px auto 0;
  border-radius: var(--ec-radius-pill);
  background: var(--ec-gradient);
}
.sub-title {
  text-transform: uppercase;
  letter-spacing: .12em;
  font-weight: 600;
  font-size: 13px;
  color: var(--ec-primary);
}

/* ---------- Buttons ---------- */
.btn {
  border-radius: var(--ec-radius-pill);
  font-weight: 600;
  letter-spacing: .01em;
  padding: .65rem 1.5rem;
  transition: transform .25s var(--ec-ease), box-shadow .25s var(--ec-ease), background .25s var(--ec-ease);
  border: none;
}
.btn:focus-visible { box-shadow: var(--ec-ring); }
.btn-primary,
.btn-bg-godducks,
.btn-linear-primary,
.btn-gradient,
.btn-dark {
  background: var(--ec-gradient);
  color: #fff;
  box-shadow: 0 8px 20px rgba(91, 124, 250, .28);
}
.btn-primary:hover,
.btn-bg-godducks:hover,
.btn-linear-primary:hover,
.btn-gradient:hover,
.btn-dark:hover {
  background: var(--ec-gradient-hover);
  color: #fff;
  transform: translateY(-2px);
  box-shadow: 0 14px 28px rgba(91, 124, 250, .36);
}
.btn-outline-primary {
  border: 1.6px solid var(--ec-primary);
  color: var(--ec-primary);
  background: transparent;
}
.btn-outline-primary:hover {
  background: var(--ec-gradient);
  border-color: transparent;
  color: #fff;
  transform: translateY(-2px);
}
.btn-light, .btn-white {
  background: #fff;
  color: var(--ec-ink);
  box-shadow: var(--ec-shadow-sm);
}
.btn-light:hover, .btn-white:hover { transform: translateY(-2px); box-shadow: var(--ec-shadow); }

/* ---------- Cards / items ---------- */
.service-item, .work-item, .blog-item, .card,
.feature-item, .pricing-item, .team-item, .testimonial-item,
.provider-widget, .widget-box, .single-blog {
  background: var(--ec-surface);
  border-radius: var(--ec-radius);
  border: 1px solid var(--ec-line);
  box-shadow: var(--ec-shadow-sm);
  overflow: hidden;
  transition: transform .35s var(--ec-ease), box-shadow .35s var(--ec-ease), border-color .35s var(--ec-ease);
}
.service-item:hover, .work-item:hover, .blog-item:hover, .card:hover,
.feature-item:hover, .pricing-item:hover, .team-item:hover,
.single-blog:hover {
  transform: translateY(-6px);
  box-shadow: var(--ec-shadow-lg);
  border-color: rgba(91, 124, 250, .35);
}
.service-img, .work-img, .blog-img, .img-slider { overflow: hidden; }
.service-img img, .work-img img, .blog-img img, .single-blog img {
  transition: transform .6s var(--ec-ease);
  width: 100%;
}
.service-item:hover .service-img img,
.work-item:hover .work-img img,
.blog-item:hover .blog-img img,
.single-blog:hover img { transform: scale(1.06); }
.service-content, .blog-content, .work-content { padding: 1.1rem 1.2rem 1.3rem; }

/* ---------- Badges ---------- */
.badge {
  border-radius: var(--ec-radius-pill);
  font-weight: 600;
  letter-spacing: .02em;
  padding: .4em .8em;
}
.badge-dark-transparent { background: rgba(27, 35, 51, .06); color: var(--ec-ink); }

/* ---------- Header / nav ---------- */
.header, .main-header, header.header {
  backdrop-filter: saturate(1.4) blur(8px);
  background: rgba(255, 255, 255, .88);
  box-shadow: 0 1px 0 var(--ec-line);
  transition: box-shadow .3s var(--ec-ease), background .3s var(--ec-ease);
}
.header.fixed, .header.sticky, .header-fixed {
  box-shadow: var(--ec-shadow);
}
.main-menu > li > a, .main-nav > li > a, .nav-menu a {
  font-weight: 500;
  position: relative;
  transition: color .25s var(--ec-ease);
}
.main-menu > li > a::after, .main-nav > li > a::after {
  content: "";
  position: absolute;
  left: 12px; right: 12px; bottom: 2px;
  height: 2px;
  border-radius: 2px;
  background: var(--ec-gradient);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s var(--ec-ease);
}
.main-menu > li > a:hover::after,
.main-menu > li.active > a::after,
.main-nav > li > a:hover::after { transform: scaleX(1); }

/* ---------- Forms ---------- */
.form-control, .form-select, textarea, input[type="text"],
input[type="email"], input[type="tel"], input[type="password"], input[type="search"] {
  border-radius: var(--ec-radius-sm);
  border: 1.5px solid var(--ec-line);
  padding: .7rem 1rem;
  transition: border-color .2s var(--ec-ease), box-shadow .2s var(--ec-ease);
}
.form-control:focus, .form-select:focus, textarea:focus, input:focus {
  border-color: var(--ec-primary);
  box-shadow: var(--ec-ring);
  outline: none;
}

/* ---------- Breadcrumb / page header ---------- */
.breadcrumb-bar, .page-header, .inner-banner {
  position: relative;
}
.breadcrumb a { color: var(--ec-primary); }

/* ---------- Footer ---------- */
.footer, footer.footer {
  background: #0f1626;
  color: #c4ccda;
}
.footer a { color: #c4ccda; }
.footer a:hover { color: #fff; }
.footer h4, .footer h5, .footer .footer-title { color: #fff; }

/* ---------- Misc polish ---------- */
.owl-dots .owl-dot span { transition: all .3s var(--ec-ease); }
.owl-dots .owl-dot.active span { background: var(--ec-primary) !important; width: 22px; border-radius: 999px; }
hr { border-color: var(--ec-line); opacity: 1; }
.shadow, .box-shadow { box-shadow: var(--ec-shadow) !important; }

/* Custom scrollbar (desktop) */
@media (min-width: 992px) {
  ::-webkit-scrollbar { width: 10px; height: 10px; }
  ::-webkit-scrollbar-thumb {
    background: linear-gradient(var(--ec-primary), var(--ec-primary-end));
    border-radius: 999px;
    border: 2px solid var(--ec-bg-soft);
  }
  ::-webkit-scrollbar-track { background: var(--ec-bg-soft); }
}

/* Reveal-on-load (works with existing WOW/AOS, harmless otherwise) */
.section { will-change: auto; }

/* Back-to-top */
#scroll-top, .scroll-top, .back-to-top {
  background: var(--ec-gradient) !important;
  border-radius: 14px !important;
  box-shadow: var(--ec-shadow);
  transition: transform .25s var(--ec-ease), box-shadow .25s var(--ec-ease);
}
#scroll-top:hover, .scroll-top:hover, .back-to-top:hover { transform: translateY(-3px); }
