/* OriGene Biosolutions Members Dashboard
   Life-sciences theme: teal/green, soft cards, modern type. */

:root{
  --bg:        #f3f7f5;
  --surface:   #ffffff;
  --ink:       #0f2a23;
  --ink-soft:  #3a564d;
  --muted:     #6b8278;
  --line:      #dde7e2;
  --primary:   #0f7c66;
  --primary-2: #13a37f;
  --primary-ink:#063d31;
  --accent:    #f0a01a;
  --danger:    #c0392b;
  --warn:      #b7791f;
  --ok:        #1f8a5b;
  --shadow:    0 8px 28px rgba(15,42,35,.08);
  --radius:    14px;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:"Segoe UI",Inter,Helvetica,Arial,sans-serif;
  color:var(--ink);
  background:
    radial-gradient(900px 500px at 90% -10%, rgba(19,163,127,.18), transparent 60%),
    radial-gradient(700px 400px at -10% 110%, rgba(15,124,102,.15), transparent 60%),
    var(--bg);
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}

a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}

/* ---------- Topbar ---------- */
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 28px;background:rgba(255,255,255,.85);backdrop-filter:saturate(140%) blur(8px);
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10;
}
.brand{display:flex;align-items:center;gap:10px;color:var(--ink)}
.brand:hover{text-decoration:none}
.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;background:#e9f7f1;overflow:hidden}
.brand-mark img{width:28px;height:28px;object-fit:contain}
.brand-text{font-weight:700;font-size:17px;line-height:1}
.brand-text small{display:block;font-weight:500;color:var(--muted);font-size:12px;margin-top:2px}

.topnav{display:flex;align-items:center;gap:14px}
.topnav a{color:var(--ink-soft);font-weight:500}
.topnav a:hover{color:var(--primary)}

/* ---------- Layout ---------- */
.container{max-width:1100px;margin:36px auto;padding:0 20px}
.center-narrow{max-width:460px;margin:48px auto;padding:0 18px}

/* ---------- Cards & forms ---------- */
.card{
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow);
  padding:28px;
}
.card h1, .card h2{margin-top:0}
.card .lead{color:var(--muted);margin-top:-4px;margin-bottom:18px}

.form-row{display:flex;flex-direction:column;margin-bottom:14px}
.form-row label{font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:6px}
.form-row input, .form-row textarea, .form-row select{
  font:inherit;color:var(--ink);
  border:1px solid var(--line);border-radius:10px;
  padding:11px 12px;background:#fbfdfc;outline:none;transition:all .15s;
}
.form-row textarea{min-height:90px;resize:vertical}
.form-row input:focus, .form-row textarea:focus, .form-row select:focus{
  border-color:var(--primary);box-shadow:0 0 0 3px rgba(19,163,127,.18);background:#fff;
}
.form-row .hint{font-size:12px;color:var(--muted);margin-top:6px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:640px){.form-grid{grid-template-columns:1fr}}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:0;border-radius:10px;padding:11px 18px;font-weight:600;cursor:pointer;
  transition:transform .05s ease, box-shadow .15s ease, background .15s;
  font-size:15px;
}
.btn-primary{background:linear-gradient(135deg,var(--primary-2),var(--primary));color:#fff}
.btn-primary:hover{box-shadow:0 6px 18px rgba(15,124,102,.32)}
.btn-primary:active{transform:translateY(1px)}
.btn-ghost{background:transparent;color:var(--ink-soft);border:1px solid var(--line)}
.btn-ghost:hover{border-color:var(--primary);color:var(--primary)}
.btn-block{width:100%}
.btn-link{background:none;color:var(--primary);padding:0;font-weight:600}

.row-between{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.muted{color:var(--muted)}
.divider{height:1px;background:var(--line);margin:20px 0}

/* ---------- Flash ---------- */
.flash{padding:12px 14px;border-radius:10px;margin-bottom:14px;font-weight:500;border:1px solid transparent}
.flash-ok   {background:#e7f7ee;color:#15633f;border-color:#bfe7d1}
.flash-err  {background:#fdecea;color:#8a2118;border-color:#f6c2bc}
.flash-warn {background:#fff5e0;color:#7a5a00;border-color:#ffe0a3}
.flash-info {background:#e7f1fb;color:#22517a;border-color:#bcd6ee}

/* ---------- OTP boxes ---------- */
.otp-input{
  letter-spacing:14px;text-align:center;font-size:24px;font-weight:700;
  padding:14px;color:var(--primary-ink);
}

/* ---------- Auth split (welcome panel) ---------- */
.auth-shell{
  display:grid;grid-template-columns:1.05fr 1fr;gap:28px;align-items:stretch;
  margin:36px auto;max-width:1020px;padding:0 20px;
}
@media (max-width:880px){.auth-shell{grid-template-columns:1fr}}
.welcome{
  border-radius:var(--radius);padding:34px;color:#eaf7f1;
  background:
    radial-gradient(400px 240px at 80% 0%, rgba(255,255,255,.18), transparent 60%),
    linear-gradient(140deg,#0a5c4d,#0f7c66 50%,#13a37f);
  box-shadow:var(--shadow);overflow:hidden;position:relative;
}
.welcome h1{font-size:28px;margin:0 0 10px}
.welcome p{color:#d6efe6;line-height:1.55}
.welcome .features{margin-top:18px;display:grid;gap:10px}
.welcome .feat{
  display:flex;gap:10px;align-items:flex-start;background:rgba(255,255,255,.08);
  padding:10px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.12);
}
.welcome .feat b{color:#fff}
.welcome .feat span{color:#d6efe6;font-size:13.5px;line-height:1.5}
.welcome .dna{
  position:absolute;right:-30px;bottom:-30px;opacity:.18;width:240px;height:240px;
  background:radial-gradient(closest-side,#fff,transparent 70%);border-radius:50%;
}

/* ---------- Dashboard ---------- */
.tier-pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;
  background:#e9f7f1;color:var(--primary-ink);border:1px solid #c8e8d9}
.tier-pill.pro{background:#fff5e0;color:#7a5a00;border-color:#ffe0a3}
.tier-pill.elite{background:linear-gradient(135deg,#0f7c66,#13a37f);color:#fff;border:0}

.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:14px 0 22px}
@media (max-width:760px){.kpis{grid-template-columns:repeat(2,1fr)}}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px}
.kpi b{font-size:22px;color:var(--primary-ink);display:block}
.kpi span{font-size:12.5px;color:var(--muted)}

.modules{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media (max-width:900px){.modules{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.modules{grid-template-columns:1fr}}
.module{
  background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px;
  transition:transform .12s ease, box-shadow .12s ease;
}
.module:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.module .ico{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  background:#e9f7f1;color:var(--primary);font-weight:700;margin-bottom:10px}
.module h3{margin:6px 0}
.module p{color:var(--muted);font-size:14px;margin:6px 0 10px}
.module .tag{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}
.module.locked{opacity:.7}
.module.locked .ico{background:#f1f1f1;color:#999}

/* ---------- Footer ---------- */
.footer{
  text-align:center;color:var(--muted);font-size:13px;padding:28px 12px 38px;
}
.footer a{color:var(--primary)}

/* ---------- Membership Card ---------- */
.mcard{
  position:relative;width:100%;max-width:880px;
  min-height:340px;height:auto;
  border-radius:18px;color:#e7eef0;overflow:hidden;
  box-shadow:0 18px 50px rgba(7,18,24,.35);
  isolation:isolate;font-family:"Segoe UI",Helvetica,Arial,sans-serif;
}
@supports (aspect-ratio: 8/5){.mcard{aspect-ratio:8/5;min-height:0;}}
.mcard-bg{position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(900px 360px at -10% 110%, rgba(19,163,127,.30), transparent 60%),
    radial-gradient(700px 300px at 110% -10%, rgba(255,255,255,.08), transparent 60%),
    linear-gradient(140deg,#0e2330 0%,#0f2a23 50%,#0a1c2a 100%);
}
.mcard-grid{position:relative;display:grid;grid-template-columns:38% 62%;height:100%;}
.mcard-left{
  position:relative;padding:18px 18px 14px;display:flex;flex-direction:column;
  justify-content:space-between;color:#e7eef0;
  border-right:1px dashed rgba(255,255,255,.12);
}
.mcard-left .mcard-qr{width:26px;height:26px;color:#cfe9da;opacity:.85;align-self:flex-start;}
.mcard-left .mcard-qr:last-child{align-self:flex-end;}
.mcard-logo{display:block;max-width:170px;height:auto;background:#fff;border-radius:8px;padding:6px 8px;margin:6px 0 4px;}
.mcard-tagline{font-size:11.5px;color:#bcd8c9;font-style:italic;margin-bottom:8px;}
.mcard-org{font-size:10.5px;line-height:1.45;color:#cfd8d4;}
.mcard-web{font-size:11.5px;font-weight:600;color:#7ad6b3;letter-spacing:.5px;margin-top:6px;}

.mcard-right{padding:18px 22px;display:flex;flex-direction:column;gap:8px;position:relative;}
.mcard-top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;}
.mcard-meta{font-size:10.5px;color:#9fb6b1;line-height:1.5;}
.mcard-regd{margin-bottom:2px;}
.mcard-msme{color:#bcd0cb;}
.mcard-title{text-align:right;}
.mcard-mission{font-size:10.5px;color:#a7c8be;letter-spacing:.4px;}
.mcard-cardname{font-family:"Brush Script MT","Lucida Handwriting",cursive;
  font-size:30px;color:#7ad6b3;line-height:1;margin-top:2px;}
.mcard-strike{color:#7ad6b3;letter-spacing:1px;font-size:10px;margin-top:2px;}
.mcard-expand{font-size:10.5px;color:#a7c8be;margin-top:2px;}

.mcard-row{display:flex;flex-direction:column;}
.mcard-cols{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:flex-start;}
.mcard-l{font-size:10px;letter-spacing:1px;color:#9fb6b1;}
.mcard-v{font-size:14px;color:#eaf2ee;font-weight:600;margin-top:2px;}
.mcard-name{font-size:18px;}
.mcard-valid .mcard-v{color:#7ad6b3;letter-spacing:1px;}
.mcard-bottom{flex-direction:row;justify-content:space-between;align-items:flex-end;margin-top:auto;gap:14px;}
.mcard-number{font-family:"Courier New",monospace;font-size:18px;letter-spacing:2px;color:#7ad6b3;}
.mcard-tierbadge{
  background:var(--tc,#0f7c66);color:#fff;font-size:11px;letter-spacing:1.5px;font-weight:700;
  padding:5px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.18);
  box-shadow:0 4px 14px rgba(0,0,0,.25);white-space:nowrap;
}

/* Tier-tinted side glow */
.mcard-pro  .mcard-bg{background:
    radial-gradient(900px 360px at -10% 110%, rgba(255,200,80,.20), transparent 60%),
    radial-gradient(700px 300px at 110% -10%, rgba(19,163,127,.18), transparent 60%),
    linear-gradient(140deg,#0e2330 0%,#0f2a23 50%,#0a1c2a 100%);}
.mcard-elite .mcard-bg{background:
    radial-gradient(900px 360px at -10% 110%, rgba(19,163,127,.45), transparent 60%),
    radial-gradient(700px 300px at 110% -10%, rgba(255,255,255,.10), transparent 60%),
    linear-gradient(140deg,#063d31 0%,#0a5c4d 50%,#0f7c66 100%);}

/* Smaller variant (dashboard preview) */
.mcard-sm{max-width:520px;}
.mcard-sm .mcard-cardname{font-size:22px;}
.mcard-sm .mcard-name{font-size:15px;}
.mcard-sm .mcard-number{font-size:14px;}
.mcard-sm .mcard-logo{max-width:120px;}
.mcard-sm .mcard-org{font-size:9.5px;}

@media (max-width:640px){
  .mcard-grid{grid-template-columns:34% 66%;}
  .mcard-cardname{font-size:22px;}
  .mcard-name{font-size:15px;}
  .mcard-number{font-size:14px;}
  .mcard-logo{max-width:110px;}
}

/* Print-only mode: only render the card */
@media print{
  body * {visibility:hidden !important;}
  .mcard, .mcard *{visibility:visible !important;}
  .mcard{position:fixed;left:0;top:0;margin:0;box-shadow:none;}
  @page{size:landscape;margin:0;}
}

/* ---------- Pricing tiers ---------- */
.tier-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:18px;}
@media (max-width:900px){.tier-grid{grid-template-columns:1fr;}}
.tier-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:22px;
  display:flex;flex-direction:column;position:relative;transition:transform .12s, box-shadow .12s;}
.tier-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);}
.tier-card.recommended{border-color:#0f7c66;box-shadow:0 8px 24px rgba(15,124,102,.20);}
.tier-card.recommended::before{content:"MOST POPULAR";position:absolute;top:-11px;left:50%;transform:translateX(-50%);
  background:linear-gradient(135deg,#13a37f,#0f7c66);color:#fff;font-size:11px;letter-spacing:1.4px;font-weight:700;
  padding:5px 12px;border-radius:999px;}
.tier-card h3{margin:0 0 4px;font-size:20px;color:var(--ink);}
.tier-card .tier-tag{color:var(--muted);font-size:13px;margin-bottom:14px;}
.tier-card .tier-price{font-size:30px;font-weight:800;color:var(--primary-ink);}
.tier-card .tier-price small{display:inline-block;font-size:13px;font-weight:500;color:var(--muted);margin-left:4px;}
.tier-card ul{list-style:none;padding:0;margin:14px 0 18px;color:var(--ink-soft);}
.tier-card li{padding:6px 0 6px 26px;position:relative;font-size:14.5px;line-height:1.45;}
.tier-card li::before{content:"";position:absolute;left:0;top:11px;width:14px;height:14px;border-radius:50%;
  background:#e9f7f1 url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%230f7c66' d='M6.6 11.1L3.5 8l-1 1 4.1 4.1 8-8-1-1z'/%3E%3C/svg%3E") no-repeat center/12px;}
.tier-card li.lim{color:var(--muted);}
.tier-card li.lim::before{background:#f3f3f3 url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23999' d='M3 7h10v2H3z'/%3E%3C/svg%3E") no-repeat center/12px;}
.tier-card .btn{margin-top:auto;}

/* Membership benefits page */
.benefit-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}
@media (max-width:680px){.benefit-grid{grid-template-columns:1fr;}}
.benefit-grid .b{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;}
.benefit-grid .b b{display:block;color:var(--primary-ink);margin-bottom:4px;}

/* ---------- Avatar ---------- */
.avatar{width:88px;height:88px;border-radius:50%;background:#e9f7f1;display:flex;align-items:center;justify-content:center;
  color:var(--primary);font-size:28px;font-weight:700;overflow:hidden;border:3px solid #fff;box-shadow:var(--shadow)}
.avatar img{width:100%;height:100%;object-fit:cover}
.profile-head{display:flex;gap:18px;align-items:center;margin-bottom:18px}
.profile-head h2{margin:0}
.profile-head .muted{margin-top:2px}
