/* firstclue design system (shared by portal + intake) */
/* Type — headings + body: Agrandir (Code is caps-style, unused). Files in public/assets/fonts/. */
@font-face{font-family:'Code Pro';src:url('/assets/fonts/CodePro-Light.woff2') format('woff2');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'Code Pro';src:url('/assets/fonts/CodePro-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Agrandir';src:url('/assets/fonts/Agrandir-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Agrandir';src:url('/assets/fonts/Agrandir-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
:root{
  /* neutrals — cool near-black on a whisper-violet canvas */
  --bg:#F6F5FA;
  --surface:#FFFFFF;
  --card:#FFFFFF;
  --card-2:#FAF9FD;         /* subtle raised / alt surface */
  --ink:#1A1725;
  --ink-2:#403A52;
  --muted:#6C6782;
  --faint:#9E99AE;
  /* accent — brand purple, used sparingly */
  --grape:#8C52FF;
  --grape-deep:#6E3AE6;
  --grape-dark:#5A2ECB;
  --tint:#F2EEFD;
  --tint-2:#E7E0FA;
  --tint-3:#CDB6FF;
  /* hairlines */
  --line:#ECEAF3;
  --line-2:#E1DEEB;
  /* semantic */
  --flag:#DE474C;
  --flag-soft:#FCEEEE;
  --ok:#2E9E6B;
  --ok-soft:#E7F5EE;
  --amber:#B87A10;
  --amber-soft:#FAF0DC;
  /* elevation — crisp, layered, tinted to the ink */
  --shadow-sm:0 1px 2px rgba(26,23,37,.05), 0 1px 1px rgba(26,23,37,.03);
  --shadow-md:0 2px 4px -1px rgba(26,23,37,.06), 0 10px 24px -10px rgba(26,23,37,.14);
  --shadow-lg:0 20px 48px -16px rgba(26,23,37,.22), 0 5px 12px -6px rgba(26,23,37,.09);
  --ring:0 0 0 3px rgba(140,82,255,.22);
  --round:14px;
  --round-ctl:10px;
  --round-sm:7px;
  --sysfont:-apple-system,"SF Pro Display","SF Pro Text","Segoe UI",system-ui,Roboto,sans-serif;
  --sans:'Agrandir',var(--sysfont);
  --heading:'Agrandir',var(--sysfont);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}
body{
  font-family:var(--sans);background:var(--bg);color:var(--ink);
  min-height:100dvh;line-height:1.5;overflow-x:hidden;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  background-image:radial-gradient(1100px 560px at 100% -220px, rgba(140,82,255,.045), transparent 62%);
}
.logo-img{display:block;height:22px;width:auto}
h1,h2,h3{font-family:var(--heading);font-weight:700;letter-spacing:-.025em;color:var(--ink)}
.stat .n,.metric .n{font-family:var(--heading);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.03em}

/* ---------- buttons ---------- */
.btn{
  font-family:var(--sans);font-weight:600;font-size:14px;border:none;cursor:pointer;letter-spacing:-.005em;
  border-radius:var(--round-ctl);padding:9px 16px;color:#fff;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px;
  background:var(--grape);
  box-shadow:0 1px 2px rgba(26,23,37,.18), inset 0 1px 0 rgba(255,255,255,.16);
  transition:background .15s, box-shadow .15s, transform .1s;
}
.btn:hover{background:var(--grape-deep)}
.btn:active{transform:translateY(.5px)}
.btn.small{font-size:13px;padding:7px 13px}
.btn.big{font-size:16px;padding:13px 22px}
.btn.ghost{background:var(--surface);color:var(--ink-2);border:1px solid var(--line-2);box-shadow:var(--shadow-sm)}
.btn.ghost:hover{background:var(--card-2);border-color:var(--tint-3);color:var(--grape-deep)}
.btn[disabled]{opacity:.5;pointer-events:none}
.btn:focus-visible,.chip:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{
  outline:2px solid var(--grape);outline-offset:2px}

.eyebrow{
  display:inline-block;background:var(--tint);color:var(--grape-deep);
  font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  padding:5px 10px;border-radius:var(--round-sm);
}

/* ---------- cards ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--round);box-shadow:var(--shadow-sm)}

/* ---------- status badges ---------- */
.pill{display:inline-flex;align-items:center;font-size:11px;font-weight:600;border-radius:var(--round-sm);padding:3px 8px;letter-spacing:.01em;line-height:1.5;white-space:nowrap}
.pill.sent{background:var(--tint);color:var(--grape-deep)}
.pill.in_progress{background:var(--amber-soft);color:var(--amber)}
.pill.completed{background:var(--ok-soft);color:var(--ok)}
.pill.flag{background:var(--flag-soft);color:var(--flag)}

/* ---------- chips (patient intake options) ---------- */
.chip{
  font-family:var(--sans);font-size:14.5px;font-weight:500;color:var(--ink);
  background:var(--surface);border:1px solid var(--line-2);border-radius:99px;padding:10px 17px;cursor:pointer;
  transition:transform .12s, border-color .15s, background .15s, color .15s;
}
.chip:hover{border-color:var(--tint-3)}
.chip:active{transform:scale(.95)}
.chip.picked{border-color:var(--grape);background:var(--grape);color:#fff;animation:pickpop .3s cubic-bezier(.2,.9,.3,1.5)}
@keyframes pickpop{50%{transform:scale(1.06)}}

/* ---------- inputs ---------- */
input[type=text],input[type=email],input[type=password],input[type=datetime-local],select,textarea{
  width:100%;font-family:var(--sans);font-size:14px;color:var(--ink);
  background:var(--surface);border:1px solid var(--line-2);border-radius:var(--round-ctl);padding:10px 12px;
  transition:border-color .15s, box-shadow .15s;
}
input::placeholder,textarea::placeholder{color:var(--faint)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--grape);box-shadow:var(--ring)}
label{display:block;font-size:12.5px;font-weight:600;color:var(--muted);margin:0 0 6px}
.field{margin-bottom:16px}
.field .err{color:var(--flag);font-size:12.5px;font-weight:600;margin-top:6px;display:none}
.field.bad .err{display:block}
.field.bad input,.field.bad select{border-color:var(--flag)}

/* ---------- patient mascot bits ---------- */
.snug{animation:bob 3.4s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-6px) rotate(2deg)}}
.eye{transform-origin:center;animation:blink 4.6s infinite}
@keyframes blink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.08)}}
.bubble{
  background:var(--surface);border:1px solid var(--line);border-radius:14px 14px 14px 4px;box-shadow:var(--shadow-sm);
  padding:12px 15px;font-size:14px;line-height:1.5;color:var(--ink);
}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;bottom:30px;transform:translateX(-50%) translateY(20px);z-index:80;
  background:var(--ink);color:#fff;font-weight:500;font-size:14px;padding:11px 20px;border-radius:var(--round-ctl);
  opacity:0;pointer-events:none;transition:all .3s cubic-bezier(.2,.9,.3,1.3);box-shadow:var(--shadow-lg);
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

.rise{animation:rise .5s cubic-bezier(.2,.8,.25,1) both}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s !important;animation-iteration-count:1 !important;transition-duration:.001s !important}
}
