/* Jyothi Blood Connect - shared styles (student + admin) */
@font-face{font-family:Poppins;font-weight:400;font-display:swap;src:url(../fonts/poppins-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:Poppins;font-weight:500;font-display:swap;src:url(../fonts/poppins-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:Poppins;font-weight:600;font-display:swap;src:url(../fonts/poppins-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:Poppins;font-weight:700;font-display:swap;src:url(../fonts/poppins-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Great Vibes";font-weight:400;font-display:swap;src:url(../fonts/great-vibes-latin-400-normal.woff2) format("woff2")}

:root{
  --red:#c1121f;--red-d:#8e0b14;--red-l:#fde8ea;--red-ll:#fff3f4;
  --purple:#2a1a6b;--gold:#e8a33d;
  --ink:#1d1b2e;--muted:#6c6a7c;--line:#f1d6da;
  --ok:#198a4f;--ok-bg:#e5f6ec;--warn:#b7791f;--warn-bg:#fff3d1;--bad:#b3121d;--bad-bg:#fde4e6;--info-bg:#e8f0fe;--info:#2b5bd7;
  --radius:16px;--shadow:0 6px 22px rgba(140,20,35,.10);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Poppins,"Segoe UI",system-ui,sans-serif;color:var(--ink);font-size:14px;line-height:1.45;
  background:radial-gradient(1200px 500px at 90% 0,#ffe3e6 0,transparent 60%),linear-gradient(#fff7f8,#fff1f2 60%,#ffe9eb);min-height:100vh}
[hidden]{display:none!important}
h1,h2,h3,h4{margin:0}
a{color:var(--red)}
button,input,select,textarea{font:inherit;color:inherit}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ---------- hero / header ---------- */
.hero{position:relative;overflow:hidden;color:var(--ink);background:#fff;min-height:210px;border-bottom:1px solid var(--line)}
.hero::before{content:"";position:absolute;inset:0;background:url(../img/campus.jpg) center 52%/cover no-repeat;opacity:.95}
.hero::after{content:"";position:absolute;inset:0;background:
  linear-gradient(90deg,#fff 0,rgba(255,255,255,.93) 22%,rgba(255,255,255,.35) 42%,rgba(255,255,255,0) 55%,rgba(255,255,255,.35) 70%,rgba(255,255,255,.93) 86%,#fff 100%),
  linear-gradient(180deg,rgba(255,255,255,.35),rgba(255,255,255,0) 40%)}
.hero-in{position:relative;z-index:2;max-width:1440px;margin:0 auto;padding:18px 28px 70px;display:flex;align-items:flex-start;justify-content:space-between;gap:20px}
.brand{display:flex;align-items:center;gap:14px}
.brand img.mark{width:84px;height:auto;filter:drop-shadow(0 4px 6px rgba(150,10,20,.25))}
.wordmark{font-weight:700;line-height:1;letter-spacing:-.5px;font-size:clamp(30px,4.2vw,50px)}
.wordmark .j{color:var(--purple);display:block;font-size:.86em}
.wordmark .b{color:var(--red);display:block;margin-top:2px;white-space:nowrap}
.wordmark .b svg{height:.74em;width:.5em;vertical-align:-.04em;margin:0 -.02em}
.hero-title{font-size:clamp(17px,2vw,24px);color:var(--purple);font-weight:600;margin-top:6px}
.hero-title b{font-weight:700}
.script{font-family:"Great Vibes",cursive;font-size:clamp(20px,2.4vw,28px);color:var(--red-d);letter-spacing:.5px;margin-top:2px;white-space:nowrap}
.script i{font-style:normal;margin-right:14px}
.hero-logos{display:flex;align-items:center;gap:16px;background:rgba(255,255,255,.78);backdrop-filter:blur(3px);border-radius:18px;padding:8px 16px;box-shadow:0 2px 10px rgba(0,0,0,.06)}
.hero-logos .l25{height:92px}
.hero-logos .sep{width:1px;align-self:stretch;background:#cfc7e6}
.college{display:flex;align-items:center;gap:12px}
.college .shield{height:70px;border-radius:8px}
.college .nm{color:var(--purple);font-weight:700;line-height:1.1;font-size:clamp(20px,2.2vw,30px)}
.college .nm small{display:block;font-size:.5em;font-weight:600;letter-spacing:.2px;line-height:1.25}
.college .nm em{display:block;font-style:normal;font-size:.3em;font-weight:500;letter-spacing:.35em;color:#59508a;margin-top:3px}
.wave{position:absolute;left:0;right:0;bottom:-1px;height:78px;z-index:1;width:100%}
.hero-tag{position:absolute;right:28px;bottom:10px;z-index:3;color:#fff;font-size:10px;letter-spacing:.32em;text-transform:uppercase}

/* ---------- layout ---------- */
.shell{max-width:1440px;margin:-6px auto 0;padding:0 22px 40px;display:grid;grid-template-columns:232px 1fr;gap:22px;position:relative;z-index:3}
.side{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 12px;align-self:start;position:sticky;top:12px;margin-top:-18px;border:1px solid #fff}
.side a.nav,.side button.nav{display:flex;align-items:center;gap:12px;width:100%;padding:11px 14px;border-radius:12px;color:#4b4960;text-decoration:none;font-weight:500;border:0;background:none;cursor:pointer;text-align:left;font-size:14px}
.side .nav svg{width:20px;height:20px;flex:none;color:var(--red)}
.side .nav:hover{background:var(--red-ll)}
.side .nav.on{background:linear-gradient(90deg,#c1121f,#a30d1a);color:#fff;box-shadow:0 6px 14px rgba(193,18,31,.3)}
.side .nav.on svg{color:#fff}
.side hr{border:0;border-top:1px solid var(--line);margin:10px 14px}
.side .droplet{display:block;margin:18px auto 0;width:110px;opacity:.18}
.main{min-width:0;padding-top:16px}
.page-h{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:14px;flex-wrap:wrap}
.page-h h1{font-size:clamp(24px,3vw,34px);font-weight:700;color:var(--purple)}
.page-h p{margin:2px 0 0;color:var(--muted)}
.quote{display:flex;gap:10px;color:#5d5a70;font-size:13px;max-width:360px;align-items:flex-start}
.quote q{quotes:none}
.quote .qm{font-family:Georgia,serif;font-size:40px;line-height:.8;color:#f0a0a8}
.quote u{text-decoration:none;border-bottom:2px solid var(--red)}

.grid{align-items:start;display:grid;grid-template-columns:repeat(12,1fr);gap:16px}
.c4{grid-column:span 4}.c6{grid-column:span 6}.c8{grid-column:span 8}.c12{grid-column:span 12}.c3{grid-column:span 3}
.card{background:#fff;border:1px solid #fbe3e6;border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;min-width:0}
.card-h{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.card-h .ic{width:30px;height:30px;border-radius:9px;background:var(--red-l);color:var(--red);display:grid;place-items:center;flex:none}
.card-h .ic svg{width:17px;height:17px}
.card-h h3{font-size:16px;font-weight:600;color:var(--purple)}
.card-h .r{margin-left:auto;font-size:12.5px}
.card-h .r a,.card-h .r button{color:var(--purple);font-weight:500;background:none;border:0;cursor:pointer;text-decoration:underline;padding:0}

/* ---------- forms ---------- */
.f{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;min-width:0}
.f label{font-size:12px;color:#5d5a70;font-weight:500}
.f label i{color:var(--red);font-style:normal}
.f input,.f select,.f textarea{border:1px solid #ead5d8;border-radius:10px;padding:9px 11px;background:#fff;width:100%;outline:none;min-width:0}
.f input:focus,.f select:focus,.f textarea:focus,.search input:focus{border-color:var(--red);box-shadow:0 0 0 3px rgba(193,18,31,.12)}
.f textarea{resize:vertical;min-height:58px}
.f small{color:var(--muted);font-size:11.5px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.chk{display:flex;gap:9px;align-items:flex-start;font-size:12.5px;color:#4b4960;margin:4px 0 10px}
.chk input{margin-top:3px;accent-color:var(--red);width:16px;height:16px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:11px;padding:10px 16px;font-weight:600;cursor:pointer;text-decoration:none;font-size:14px;transition:.15s}
.btn svg{width:17px;height:17px}
.btn.primary{background:linear-gradient(180deg,#d4202c,#a80f1b);color:#fff;box-shadow:0 6px 14px rgba(193,18,31,.28);width:100%}
.btn.primary:hover{filter:brightness(1.07)}
.btn.auto{width:auto}
.btn.ghost{background:#fff;border-color:#e6c9ce;color:var(--red-d)}
.btn.ghost:hover{background:var(--red-ll)}
.btn.purple{background:var(--purple);color:#fff}
.btn.sm{padding:6px 12px;font-size:12.5px;border-radius:9px}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn.danger{background:#fff;border-color:#e9a3aa;color:var(--bad)}

/* radio / toggle */
.radios{display:flex;gap:14px;margin-top:4px;flex-wrap:wrap}
.radios label{display:flex;gap:7px;align-items:center;cursor:pointer;font-size:14px;color:var(--ink)}
.radios input{accent-color:var(--red);width:17px;height:17px}
.q{font-size:13px;color:#4b4960;margin:0 0 4px}
.tgl{position:relative;width:52px;height:28px;flex:none;display:inline-block}
.tgl input{opacity:0;width:0;height:0;position:absolute}
.tgl span{position:absolute;inset:0;background:#cfcbd9;border-radius:30px;transition:.2s;cursor:pointer}
.tgl span::before{content:"";position:absolute;width:22px;height:22px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.tgl input:checked+span{background:#1fa95d}
.tgl input:checked+span::before{transform:translateX(24px)}
.tgl input:focus-visible+span{outline:3px solid rgba(193,18,31,.35)}
.state-box{display:flex;gap:14px;align-items:center;padding:12px 14px;border-radius:12px}
.state-box.ok{background:var(--ok-bg)}.state-box.bad{background:var(--bad-bg)}.state-box.warn{background:var(--warn-bg)}.state-box.off{background:#f1eff6}
.state-box b{display:block;font-size:15px}
.state-box.ok b{color:var(--ok)}.state-box.bad b{color:var(--bad)}.state-box.warn b{color:var(--warn)}
.state-box small{color:#4f4d63;font-size:12.5px}
.state-box .big{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;flex:none;color:#fff}
.state-box.ok .big{background:#1fa95d}.state-box.bad .big{background:var(--red)}.state-box.warn .big{background:#e0a21d}
.note{display:flex;gap:10px;align-items:flex-start;padding:11px 13px;border-radius:12px;font-size:12.5px;color:#454360}
.note svg{width:18px;height:18px;flex:none;margin-top:1px}
.note.info{background:var(--info-bg)}.note.info svg{color:var(--info)}
.note.priv{background:#fde9eb}.note.priv svg{color:var(--red)}
.note.warn{background:var(--warn-bg)}.note.warn svg{color:var(--warn)}

/* ---------- profile card ---------- */
.prof{display:flex;gap:14px;align-items:center;margin-bottom:12px}
.avatar{width:84px;height:84px;border-radius:50%;background:linear-gradient(145deg,#ffd9dc,#f7b2b8);display:grid;place-items:center;font-size:30px;font-weight:700;color:var(--red-d);flex:none;border:3px solid #fff;box-shadow:0 3px 10px rgba(150,10,20,.2)}
.prof h4{font-size:19px;font-weight:700;color:var(--purple);line-height:1.15}
.prof p{margin:2px 0 0;color:var(--muted);font-size:12.5px}
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.tile{background:var(--red-ll);border-radius:12px;padding:9px 4px;text-align:center}
.tile svg{width:18px;height:18px;color:var(--red)}
.tile b{display:block;font-size:17px;font-weight:700;color:var(--purple);line-height:1.2}
.tile span{font-size:11px;color:var(--muted)}

/* ---------- pills / tables ---------- */
.pill{display:inline-block;padding:2px 11px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}
.pill.pending{background:#fff0a8;color:#7a5b00}.pill.in_progress{background:#dbe8ff;color:#1e4aa8}.pill.fulfilled{background:#cdf0da;color:#136b3b}
.pill.closed,.pill.cancelled{background:#e6e4ec;color:#55526a}.pill.urgent{background:#fcd3d6;color:var(--bad)}.pill.normal{background:#ffe7bf;color:#8a5a00}
.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.no{background:var(--bad-bg);color:var(--bad)}.pill.mut{background:#eeecf4;color:#55526a}
.bg{display:inline-grid;place-items:center;min-width:46px;height:40px;padding:0 6px;border-radius:10px;font-weight:700;font-size:16px;color:#fff;background:var(--red)}
.bg.sm{min-width:34px;height:26px;font-size:13px;border-radius:8px}
.bg.Aa{background:#c1121f}.bg.Bb{background:#d6342f}.bg.O{background:#a50e1a}.bg.AB{background:#6b2a96}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{text-align:left;font-weight:600;color:#4f4c66;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;background:#fffafb;font-size:12.5px}
.tbl td{padding:9px 10px;border-bottom:1px solid #f8e6e8;vertical-align:middle}
.tbl tr:hover td{background:#fffafa}
.tbl .num{color:var(--muted)}
.tbl-wrap{overflow:auto;border-radius:12px;max-width:100%}
.empty{padding:26px;text-align:center;color:var(--muted)}
.empty svg{width:40px;height:40px;color:#e4b4b9}

/* ---------- toast / modal ---------- */
.toasts{position:fixed;z-index:200;top:16px;right:16px;display:flex;flex-direction:column;gap:8px;max-width:min(380px,92vw)}
.toast{background:#1f1a2e;color:#fff;border-radius:12px;padding:12px 16px;box-shadow:0 8px 24px rgba(0,0,0,.25);animation:in .25s;font-size:13.5px}
.toast.ok{background:#146c3e}.toast.err{background:#a40f1b}
@keyframes in{from{transform:translateY(-8px);opacity:0}to{transform:none;opacity:1}}
.modal-bg{position:fixed;inset:0;background:rgba(30,10,20,.5);z-index:150;display:grid;place-items:center;padding:16px}
.modal{background:#fff;border-radius:18px;max-width:560px;width:100%;max-height:92vh;overflow:auto;padding:22px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.modal.wide{max-width:760px}
.modal h3{font-size:19px;color:var(--purple);margin-bottom:10px}
.modal .acts{display:flex;gap:10px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}
.spin{display:inline-block;width:16px;height:16px;border:2px solid #fff6;border-top-color:#fff;border-radius:50%;animation:sp .7s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ---------- misc ---------- */
.mobbar{display:none}
.foot{text-align:center;color:var(--muted);font-size:12px;padding:20px 12px 28px}
.dis{font-size:11.5px;color:var(--muted);margin-top:8px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;font-size:13px}
.kv dt{color:var(--muted)}.kv dd{margin:0;font-weight:500}
.aware{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.aware .card h4{color:var(--purple);margin-bottom:6px;font-size:15px}
.aware ul{margin:0;padding-left:18px;color:#4b4960;font-size:13px}
.aware li{margin:3px 0}
.grp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.grp-grid .g{background:var(--red-ll);border-radius:14px;padding:14px;text-align:center}
.grp-grid .g b{display:block;font-size:30px;color:var(--purple);line-height:1.1}
.grp-grid .g span{font-weight:700;color:var(--red)}

@media (max-width:1100px){
  .c4{grid-column:span 6}.c8{grid-column:span 12}.c3{grid-column:span 6}
}
@media (max-width:900px){
  .shell{grid-template-columns:1fr;padding:0 12px 30px}
  .side{display:none;position:fixed;inset:0 auto 0 0;width:270px;z-index:120;margin:0;border-radius:0 18px 18px 0;overflow:auto}
  .side.open{display:block}
  .mobbar{display:flex;align-items:center;gap:10px;margin:12px 0 0;position:relative;z-index:5}
  .mobbar button{background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 14px;font-weight:600;color:var(--red-d);display:flex;gap:8px;align-items:center;cursor:pointer}
  .hero-in{flex-direction:column;padding:14px 16px 64px}
  .hero-logos{align-self:stretch;justify-content:space-between}
  .hero-logos .l25{height:62px}.college .shield{height:50px}
  .brand img.mark{width:62px}
  .hero-tag{display:none}
  .grid{grid-template-columns:1fr}.c3,.c4,.c6,.c8,.c12{grid-column:auto}
  .script{white-space:normal}
}
@media (max-width:520px){
  .row2,.row3{grid-template-columns:1fr}
  .tiles{grid-template-columns:repeat(2,1fr)}
  .grp-grid{grid-template-columns:repeat(2,1fr)}
  .college .nm{font-size:17px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.mobbar svg{width:20px;height:20px}
