/* SaluVista — Doctor Portal. Night Horizon brand, self-contained. */
:root{
  --night:#0A1038; --navy-mid:#0D1546; --navy-deep:#10184A;
  --lilac:#8B9BF5; --dawn:#E7C08A; --crest:#EAF0FF; --blue:#273ED4; --soft:#B9C0EE;
  --line:rgba(139,155,245,0.22); --line-2:rgba(139,155,245,0.14);
  --panel:rgba(234,240,255,0.05); --panel-2:rgba(234,240,255,0.03);
  --danger:#E8899B;
  --radius:18px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  color:var(--crest);
  background:linear-gradient(180deg,var(--night) 0%,var(--navy-mid) 58%,var(--navy-deep) 100%);
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--lilac)}
.wrap{max-width:760px;margin:0 auto;padding:26px 20px 80px}

/* ---- brand header ---- */
.brand{display:flex;align-items:center;gap:11px;justify-content:center;padding:14px 0 6px}
.brand__mark{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.brand__mark svg{width:34px;height:34px;display:block}
/* gentle wave drift in the lens mark (same motion language as the site nav) */
.salu-wave path{transform:translateX(0)}
@media (prefers-reduced-motion:no-preference){
  .salu-wave--front path{animation:pvDrift 9s linear infinite}
  .salu-wave--back path{animation:pvDrift 14s linear infinite reverse}
  @keyframes pvDrift{to{transform:translateX(32px)}}
}
.brand__word{font-size:19px;font-weight:600;letter-spacing:.3px}
.brand__word b{color:var(--lilac);font-weight:700}
.brand__sub{font-size:11.5px;letter-spacing:2px;text-transform:uppercase;color:var(--soft);text-align:center;margin-top:2px}

/* ---- card ---- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:22px;margin-top:18px}
.card--tight{padding:18px}
.eyebrow{font-size:11px;font-weight:700;letter-spacing:1.8px;text-transform:uppercase;color:var(--lilac)}
.h1{font-size:23px;font-weight:700;margin:6px 0 0}
.muted{color:var(--soft);font-size:13.5px;line-height:20px}
.hairline{width:36px;height:2px;border-radius:1px;background:rgba(231,192,138,0.8);margin:12px 0}

/* ---- fields ---- */
.field{display:flex;flex-direction:column;gap:7px;margin-top:16px}
.field__label{font-size:12.5px;font-weight:600;color:var(--crest);letter-spacing:.2px}
.field__hint{font-size:11.5px;color:var(--soft);line-height:16px}
.field__err{font-size:12px;color:var(--danger);min-height:0}
.input{
  width:100%;font:inherit;font-size:14.5px;color:var(--crest);
  background:rgba(9,13,38,0.6);border:1px solid var(--line);border-radius:12px;padding:11px 13px;outline:none;
}
.input:focus{border-color:var(--lilac);background:rgba(9,13,38,0.85)}
textarea.input{resize:vertical;min-height:70px}
.row2{display:flex;gap:12px;flex-wrap:wrap}
.row2 .field{flex:1 1 200px}

/* ---- repeater ---- */
.rep-row{display:flex;gap:8px;align-items:flex-start;margin-bottom:8px}
.rep-row .input{min-width:0}
.icon-btn{flex:0 0 auto;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);
  background:var(--panel-2);color:var(--soft);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center}
.icon-btn--danger{color:var(--danger);border-color:rgba(232,137,155,0.4)}
.icon-btn:hover{border-color:var(--lilac)}

/* ---- buttons ---- */
.btn{font:inherit;font-weight:700;font-size:14px;border-radius:14px;padding:12px 18px;cursor:pointer;
  border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.btn--primary{background:var(--blue);color:#fff;border-color:rgba(231,192,138,0.35)}
.btn--primary:hover{background:#2f48e6}
.btn--ghost{background:transparent;color:var(--crest);border-color:var(--line)}
.btn--ghost:hover{border-color:var(--lilac)}
.btn--danger{background:transparent;color:var(--danger);border-color:rgba(232,137,155,0.5)}
.btn--danger:hover{background:rgba(232,137,155,0.1)}
.btn--sm{padding:8px 14px;font-size:13px;border-radius:12px}
.btn:disabled{opacity:.5;cursor:default}
.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}
.actions--between{justify-content:space-between}

/* ---- read-only stats ---- */
.stat-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.stat{display:flex;align-items:baseline;gap:6px}
.stat b{font-size:20px;color:var(--dawn)}
.stat span{font-size:12.5px;color:var(--soft)}
.pill{display:inline-flex;padding:5px 12px;border-radius:999px;background:rgba(39,62,212,0.3);
  border:1px solid rgba(139,155,245,0.45);font-size:11.5px;font-weight:600;color:var(--crest)}
.review{border:1px solid var(--line-2);background:var(--panel-2);border-radius:14px;padding:13px;margin-top:9px}
.review__head{display:flex;justify-content:space-between;align-items:center}
.review__author{font-weight:700;font-size:14px}
.review__stars{color:var(--dawn);letter-spacing:1px;font-size:12px}
.review__text{color:var(--soft);font-size:13px;line-height:19px;margin-top:6px}
.review__when{color:rgba(185,192,238,0.55);font-size:11px;margin-top:6px}

/* ---- banners ---- */
.banner{border-radius:14px;padding:13px 15px;font-size:13px;line-height:19px;margin-top:14px}
.banner--warn{background:rgba(231,192,138,0.1);border:1px solid rgba(231,192,138,0.4);color:var(--dawn)}
.banner--info{background:rgba(139,155,245,0.1);border:1px solid var(--line);color:var(--soft)}

/* ---- login ---- */
.login{max-width:400px;margin:8vh auto 0}

/* ---- toast ---- */
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);
  background:rgba(10,16,56,0.96);border:1px solid var(--line);color:var(--crest);
  padding:12px 20px;border-radius:999px;font-size:13.5px;font-weight:600;z-index:50;
  box-shadow:0 10px 30px rgba(0,0,0,0.4)}
.toast--danger{border-color:rgba(232,137,155,0.6);color:var(--danger)}

/* ---- photo upload + crop ---- */
.photo-row{display:flex;gap:14px;align-items:stretch;margin-top:4px}
.photo-preview{width:104px;height:130px;border-radius:14px;overflow:hidden;flex:0 0 auto;
  border:1px solid rgba(231,192,138,0.45);background:rgba(39,62,212,0.18);display:flex;align-items:center;justify-content:center}
.photo-preview img{width:100%;height:100%;object-fit:cover}
.photo-preview span{font-size:11.5px;color:var(--soft)}
.photo-drop{flex:1;border:1.5px dashed var(--line);border-radius:14px;background:var(--panel-2);cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;
  color:var(--soft);font-size:12.5px;line-height:17px;padding:12px;transition:border-color .15s,background .15s}
.photo-drop:hover,.photo-drop:focus{border-color:var(--lilac);outline:none}
.photo-drop.is-over{border-color:var(--dawn);background:rgba(231,192,138,0.08)}
.photo-drop__ico{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--lilac)}

.crop-ov{position:fixed;inset:0;z-index:100;background:rgba(6,10,32,0.86);
  display:flex;align-items:center;justify-content:center;padding:20px}
.crop-box{width:100%;max-width:440px;background:var(--navy-mid);border:1px solid var(--line);
  border-radius:20px;padding:18px;display:flex;flex-direction:column;gap:12px}
.crop-head{font-size:15px;font-weight:700}
.crop-stage{width:100%;height:360px;background:rgba(6,10,32,0.6);border-radius:12px;overflow:hidden}
.crop-stage img{max-width:100%;display:block}
.crop-hint{font-size:11.5px;color:var(--soft);text-align:center}
.crop-actions{display:flex;gap:12px;justify-content:flex-end}
/* keep Cropper's crop box within our rounded stage */
.crop-stage .cropper-container{border-radius:12px}

.center{text-align:center}
.spinner{width:34px;height:34px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--lilac);
  animation:spin .8s linear infinite;margin:60px auto}
@keyframes spin{to{transform:rotate(360deg)}}
