/* OfferDue brand styles, shared by every page on the site.
   Colours: "Soft Paper" (paper + deep teal ink, pastel status tints, one pink flag accent).
   Change a colour here and it changes everywhere. */
*,*::before,*::after{box-sizing:border-box}
:root{
  --paper:#EEF4F1;
  --paper-deep:#E3ECE7;
  --surface:#FFFFFF;
  --ink:#15313A;
  --ink-soft:#4B6166;
  --rule:#D6E0DB;

  /* Status tints: background / text */
  --mint:#DDF2E6;   --mint-ink:#1D6A44;    /* nothing on record */
  --butter:#FCF0CC; --butter-ink:#7A5608;  /* note */
  --blush:#FCE3EC;  --blush-ink:#A3134A;   /* flagged */
  --sky:#DDEBF8;    --sky-ink:#1F4F7E;     /* information */
  --lilac:#ECE8F7;  --lilac-ink:#4B3C8A;   /* not published */

  --flag:#EC2E76;       /* the one loud accent */
  --flag-deep:#B8124F;

  --font:"Archivo","Helvetica Neue",Arial,system-ui,sans-serif;

  /* Type scale: the headline is the biggest thing, then the logo, then section titles */
  --fs-xs:.8125rem;
  --fs-sm:.9rem;
  --fs-base:1.0625rem;
  --fs-lg:1.175rem;
  --fs-h3:1.2rem;
  --fs-h2:clamp(1.6rem,2.6vw,2.1rem);
  --fs-h1:clamp(2rem,3.9vw,2.95rem);
  --fs-logo:1.6rem;

  --r-lg:24px;
  --r:16px;
  --r-sm:12px;
  --shadow:0 28px 56px -36px rgba(21,49,58,.45);
  --shadow-sm:0 12px 26px -20px rgba(21,49,58,.5);
  --ease:cubic-bezier(.2,.8,.2,1);
}
html{color-scheme:light;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:var(--fs-base);line-height:1.55;overflow-x:hidden}
a{color:inherit;text-underline-offset:4px}
h1,h2,h3{text-wrap:balance}
:focus-visible{outline:3px solid var(--flag);outline-offset:3px;border-radius:6px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:16px;top:-60px;background:var(--ink);color:#fff;padding:10px 14px;border-radius:10px;z-index:30}
.skip:focus{top:12px}
.wrap{max-width:1160px;margin:0 auto;padding:0 24px}
@media (max-width:540px){.wrap{padding:0 16px}}

/* ---------- Header ---------- */
.site-head{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--paper) 86%,transparent);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid color-mix(in srgb,var(--rule) 70%,transparent)}
.head-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-block:14px}
.logo{display:inline-flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink)}
.logo-mark{width:46px;height:46px;flex:none}
.logo-word{font-stretch:125%;font-weight:800;font-size:var(--fs-logo);letter-spacing:-.02em;line-height:1}
.logo-tag{display:block;font-stretch:100%;font-weight:550;font-size:var(--fs-xs);letter-spacing:.02em;color:var(--ink-soft);margin-top:4px}
@media (max-width:540px){.logo-mark{width:40px;height:40px}.logo-word{font-size:1.4rem}.logo-tag{display:none}}

/* The flag on the logo waves gently */
.logo-flag{transform-box:fill-box;transform-origin:left center}
@media (prefers-reduced-motion:no-preference){
  .logo-flag{animation:wave 2.8s ease-in-out infinite}
  .logo:hover .logo-flag{animation-duration:.9s}
}
@keyframes wave{0%,100%{transform:skewY(0) scaleX(1)}30%{transform:skewY(-6deg) scaleX(.9)}60%{transform:skewY(4deg) scaleX(1.04)}}

/* ---------- Buttons ---------- */
.btn{position:relative;overflow:hidden;font:inherit;font-weight:720;font-stretch:112%;background:var(--ink);color:#fff;border:0;border-radius:14px;padding:14px 24px;cursor:pointer;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .2s var(--ease),box-shadow .2s var(--ease),background .2s}
.btn:hover{background:#0d2229;transform:translateY(-2px);box-shadow:var(--shadow-sm)}
.btn:active{transform:translateY(0)}
.btn[disabled]{opacity:.6;cursor:wait;transform:none}
.btn-flag{background:var(--flag-deep)}
.btn-flag:hover{background:#930d3f}
.btn-soft{background:var(--surface);color:var(--ink);border:1.5px solid var(--ink)}
.btn-soft:hover{background:var(--surface)}
.btn-sm{padding:10px 16px;font-size:var(--fs-sm);border-radius:12px}
/* a light sweep across the main buttons */
.btn-shine::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.28) 50%,transparent 70%);transform:translateX(-120%)}
@media (prefers-reduced-motion:no-preference){.btn-shine::after{animation:shine 4.5s 1.6s ease-in-out infinite}}
@keyframes shine{0%,70%{transform:translateX(-120%)}100%{transform:translateX(120%)}}

/* ---------- Status pills ---------- */
.pill{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:4px 11px;font-size:var(--fs-xs);font-weight:720;font-stretch:108%;white-space:nowrap;line-height:1.3}
.pill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
.is-flag{background:var(--blush);color:var(--blush-ink)}
.is-note{background:var(--butter);color:var(--butter-ink)}
.is-none{background:var(--mint);color:var(--mint-ink)}
.is-np{background:var(--lilac);color:var(--lilac-ink)}
.is-info{background:var(--sky);color:var(--sky-ink)}

/* ---------- Footer ---------- */
.site-foot{margin-top:24px;padding:40px 0 56px;border-top:1px solid var(--rule);font-size:var(--fs-sm);color:var(--ink-soft)}
.foot-row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:20px;align-items:flex-start}
.site-foot .logo-mark{width:34px;height:34px}
.site-foot .logo-word{font-size:1.2rem}
.site-foot p{margin:0 0 8px;max-width:80ch}
.foot-links{display:flex;flex-wrap:wrap;gap:8px 18px;font-weight:600;color:var(--ink)}

/* ---------- Motion helpers ----------
   Everything is fully visible without animation. Motion only plays when the
   visitor hasn't asked their device to reduce it. */
@media (prefers-reduced-motion:no-preference){
  .rise{animation:rise .7s var(--ease) both}
  .rise-2{animation-delay:.12s}.rise-3{animation-delay:.24s}.rise-4{animation-delay:.36s}.rise-5{animation-delay:.48s}
  @supports (animation-timeline:view()){
    .reveal{animation:rise linear both;animation-timeline:view();animation-range:entry 0% cover 22%}
  }
}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes pop{0%{opacity:0;transform:translateY(10px) scale(.9)}70%{transform:translateY(-2px) scale(1.02)}100%{opacity:1;transform:none}}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes fadein{from{opacity:0}to{opacity:1}}
