/* PolyBlog brand layer — navy + flame orange, Plus Jakarta Sans, motion utilities.
   Loaded after Bootstrap on every platform page (landing, auth, dashboards). */
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-display:swap;font-weight:200 800;src:url(../vendor/fonts/plus-jakarta-sans-latin-wght-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-display:swap;font-weight:200 800;src:url(../vendor/fonts/plus-jakarta-sans-latin-ext-wght-normal.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{
  --navy:#0b1736;--navy-2:#13244f;--navy-3:#1d3166;--brand:#ff6a2b;--brand-2:#ff8a50;--brand-soft:#fff1ea;
  --ink:#1b2540;--muted:#5b6780;--line:#e6e9f2;--bg-soft:#f6f8fc;--ok:#16a34a;
  --grad:linear-gradient(135deg,var(--brand),var(--brand-2));
  --grad-navy:linear-gradient(160deg,var(--navy),var(--navy-2));
  --shadow-sm:0 1px 2px rgba(11,23,54,.05),0 2px 8px rgba(11,23,54,.04);
  --shadow:0 10px 30px rgba(11,23,54,.08);
  --shadow-lg:0 24px 60px rgba(11,23,54,.16);
  --shadow-brand:0 10px 26px rgba(255,106,43,.32);
  --r:16px;--ease:cubic-bezier(.22,1,.36,1);
  --bs-body-font-family:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --bs-body-color:var(--ink);--bs-primary:#ff6a2b;--bs-primary-rgb:255,106,43;
  --bs-link-color:#e8551a;--bs-link-color-rgb:232,85,26;--bs-link-hover-color:#c2410c;--bs-link-hover-color-rgb:194,65,12;
  --bs-border-radius:.65rem;--bs-border-radius-lg:1rem;--bs-border-color:#e6e9f2;
  --bs-primary-bg-subtle:#fff1ea;--bs-primary-text-emphasis:#c2410c;--bs-primary-border-subtle:#ffd2bd;
  --bs-focus-ring-color:rgba(255,106,43,.25);
}
body{font-family:var(--bs-body-font-family);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-weight:800;letter-spacing:-.015em;color:var(--navy)}
a{text-decoration:none}a:not(.btn):not(.nav-link):not(.dropdown-item):hover{text-decoration:underline;text-underline-offset:3px}
::selection{background:rgba(255,106,43,.22)}

/* ---------- buttons ---------- */
.btn{font-weight:700;border-radius:999px;padding-inline:1.05rem;transition:transform .25s var(--ease),box-shadow .25s var(--ease),background-color .2s,color .2s,border-color .2s}
.btn-sm{padding-inline:.8rem}
.btn-lg{padding:.8rem 1.7rem}
.btn-primary{--bs-btn-bg:#ff6a2b;--bs-btn-border-color:transparent;--bs-btn-hover-bg:#f45d1d;--bs-btn-hover-border-color:transparent;--bs-btn-active-bg:#e5531a;--bs-btn-active-border-color:transparent;--bs-btn-disabled-bg:#ff6a2b;--bs-btn-disabled-border-color:transparent;--bs-btn-focus-shadow-rgb:255,106,43;
  background-image:var(--grad);box-shadow:var(--shadow-brand);position:relative;overflow:hidden;isolation:isolate}
.btn-primary::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.45) 50%,transparent 70%);transform:translateX(-120%);transition:transform .7s var(--ease);z-index:-1}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(255,106,43,.4)}
.btn-primary:hover::after{transform:translateX(120%)}
.btn-outline-primary{--bs-btn-color:#e8551a;--bs-btn-border-color:#ffb08d;--bs-btn-hover-bg:#ff6a2b;--bs-btn-hover-border-color:#ff6a2b;--bs-btn-active-bg:#e5531a;--bs-btn-active-border-color:#e5531a;--bs-btn-focus-shadow-rgb:255,106,43}
.btn-dark{--bs-btn-bg:var(--navy);--bs-btn-border-color:var(--navy);--bs-btn-hover-bg:var(--navy-2);--bs-btn-hover-border-color:var(--navy-2)}
.btn-outline-dark{--bs-btn-color:var(--navy);--bs-btn-border-color:var(--navy);--bs-btn-hover-bg:var(--navy);--bs-btn-hover-border-color:var(--navy)}
.btn-navy{background:var(--navy);color:#fff;border:0}.btn-navy:hover{background:var(--navy-2);color:#fff;transform:translateY(-2px)}
.btn-ghost-light{border:2px solid rgba(255,255,255,.55);color:#fff;background:rgba(255,255,255,.04);backdrop-filter:blur(6px)}
.btn-ghost-light:hover{background:#fff;color:var(--navy);border-color:#fff;transform:translateY(-2px)}
.btn:active{transform:translateY(0) scale(.98)}

/* ---------- form controls ---------- */
.form-control,.form-select{border-radius:.7rem;border-color:#d7ddea;transition:border-color .2s,box-shadow .2s}
.form-control:focus,.form-select:focus{border-color:var(--brand-2);box-shadow:0 0 0 .22rem rgba(255,106,43,.16)}
.form-check-input:checked{background-color:var(--brand);border-color:var(--brand)}
.form-check-input:focus{border-color:var(--brand-2);box-shadow:0 0 0 .22rem rgba(255,106,43,.16)}
.form-label{font-weight:600;font-size:.88rem;color:#334155}
.progress-bar{background-image:var(--grad)}
.nav-pills .nav-link.active{background:var(--grad)}
.page-link{color:var(--navy)}.active>.page-link,.page-link.active{background:var(--navy);border-color:var(--navy)}
.text-primary{color:#e8551a!important}.bg-primary{background-color:#ff6a2b!important}
.text-bg-primary{background:var(--grad)!important;color:#fff!important}
.badge{font-weight:700;letter-spacing:.01em}

/* ---------- typographic helpers ---------- */
.eyebrow{display:inline-flex;align-items:center;gap:.45rem;color:var(--brand);font-weight:800;text-transform:uppercase;font-size:.78rem;letter-spacing:.14em}
.eyebrow::before{content:"";width:22px;height:2px;border-radius:2px;background:var(--grad)}
.text-grad{background:linear-gradient(90deg,#ff8a50,#ffb347,#ff6a2b,#ff8a50);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 6s linear infinite}
.logo-dot{width:30px;height:30px;border-radius:9px;background:var(--grad);display:inline-grid;place-items:center;color:#fff;font-weight:800;font-size:15px;box-shadow:var(--shadow-brand);position:relative}
.logo-dot::after{content:"B"}
.logo-dot.sm{width:24px;height:24px;font-size:12px;border-radius:7px}

/* ---------- motion ---------- */
@keyframes shimmer{to{background-position:300% 0}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}
@keyframes floaty-r{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(12px) rotate(4deg)}}
@keyframes blob{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(40px,-30px) scale(1.12)}66%{transform:translate(-30px,25px) scale(.92)}}
@keyframes spin-slow{to{transform:rotate(360deg)}}
@keyframes pulse-ring{0%{box-shadow:0 0 0 0 rgba(255,106,43,.55)}80%,100%{box-shadow:0 0 0 14px rgba(255,106,43,0)}}
@keyframes fade-up{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@keyframes fade-in{from{opacity:0}to{opacity:1}}
@keyframes grow-x{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes grow-y{from{transform:scaleY(.1)}to{transform:scaleY(1)}}
@keyframes marquee{to{transform:translateX(-50%)}}
@keyframes dash{to{stroke-dashoffset:0}}
@keyframes blink{50%{opacity:0}}
@keyframes wiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}

.float{animation:floaty 6s ease-in-out infinite}.float-r{animation:floaty-r 7s ease-in-out infinite}
.delay-1{animation-delay:.12s!important}.delay-2{animation-delay:.24s!important}.delay-3{animation-delay:.36s!important}.delay-4{animation-delay:.48s!important}
.pulse{animation:pulse-ring 2.2s var(--ease) infinite}
.anim-in{animation:fade-up .7s var(--ease) both}

/* scroll reveal (activated by brand.js; content stays visible without JS) */
.js .reveal{opacity:0;transform:translateY(28px);transition:opacity .8s var(--ease),transform .8s var(--ease);transition-delay:var(--d,0s)}
.js .reveal.reveal-l{transform:translateX(-36px)}.js .reveal.reveal-r{transform:translateX(36px)}.js .reveal.reveal-z{transform:scale(.94)}
.js .reveal.in{opacity:1;transform:none}

/* hover lift for cards */
.lift{transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .35s}
.lift:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}

/* animated gradient border */
.glow-border{border:2px solid transparent!important;background:linear-gradient(#fff,#fff) padding-box,conic-gradient(from var(--a,0deg),#ff6a2b,#ffb347,#3b5bdb,#ff6a2b) border-box!important;animation:spin-border 5s linear infinite}
@property --a{syntax:'<angle>';initial-value:0deg;inherits:false}
@keyframes spin-border{to{--a:360deg}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .js .reveal{opacity:1;transform:none}
}
.btn-link{text-decoration:none;font-weight:600}
