/* NextGen OPD design system */

:root{
  --pc-primary:#4f46e5;
  --pc-primary-dark:#4338ca;
  --pc-primary-light:#eef2ff;
  --pc-accent:#0ea5a4;
  --pc-danger:#e11d48;
  --pc-warning:#f59e0b;
  --pc-success:#16a34a;
  --pc-ink:#111827;
  --pc-muted:#6b7280;
  --pc-border:#e5e7eb;
  --pc-bg:#f6f7fb;
  --pc-surface:#ffffff;
  --pc-radius:14px;
  --pc-radius-sm:9px;
  --pc-shadow:0 1px 2px rgba(16,24,40,.04), 0 8px 24px -12px rgba(16,24,40,.10);
}

*{ box-sizing:border-box; }

body{
  background:var(--pc-bg);
  color:var(--pc-ink);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  font-size:14.5px;
}

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

/* ---------- App shell ---------- */

.pc-shell{ display:flex; min-height:100vh; }

.pc-sidebar{
  width:250px;
  flex-shrink:0;
  background:#151327;
  color:#c7c5da;
  display:flex;
  flex-direction:column;
  position:sticky;
  top:0;
  height:100vh;
  transition:width .18s ease;
}

.pc-sidebar .brand{
  display:flex; align-items:center; gap:.6rem;
  padding:1.15rem 1.25rem;
  color:#fff; font-weight:700; font-size:1.05rem;
  border-bottom:1px solid rgba(255,255,255,.08);
  white-space:nowrap; overflow:hidden;
}
.pc-sidebar .brand .logo-dot{
  width:10px; height:10px; border-radius:50%; flex-shrink:0;
  background:linear-gradient(135deg,var(--pc-primary),var(--pc-accent));
  box-shadow:0 0 0 4px rgba(79,70,229,.25);
}

.pc-nav{ padding:.75rem .6rem; flex:1; overflow-y:auto; overflow-x:hidden; }
.pc-nav .nav-section{
  font-size:.68rem; text-transform:uppercase; letter-spacing:.06em;
  color:#6f6c8c; margin:1rem .6rem .35rem; white-space:nowrap; overflow:hidden;
}
.pc-nav a{
  display:flex; align-items:center; gap:.65rem;
  padding:.55rem .75rem; border-radius:10px;
  color:#c7c5da; font-size:.9rem; font-weight:500;
  margin-bottom:2px; transition:background .12s, color .12s;
  white-space:nowrap; overflow:hidden;
}
.pc-nav a:hover{ background:rgba(255,255,255,.06); color:#fff; }
.pc-nav a.active{ background:var(--pc-primary); color:#fff; }
.pc-nav a .icon{ width:18px; text-align:center; opacity:.9; flex-shrink:0; }

.pc-nav-toggle{
  display:flex; align-items:center; gap:.65rem; width:100%;
  padding:.55rem .75rem; border-radius:10px; margin-bottom:12px;
  background:transparent; border:1px dashed rgba(255,255,255,.18);
  color:#c7c5da; font-size:.85rem; font-weight:500; cursor:pointer;
  white-space:nowrap; overflow:hidden; transition:background .12s, color .12s;
}
.pc-nav-toggle:hover{ background:rgba(255,255,255,.06); color:#fff; }
.pc-nav-toggle .icon{ width:18px; text-align:center; flex-shrink:0; transition:transform .18s; }

.pc-sidebar .foot{
  padding:.9rem 1.1rem; border-top:1px solid rgba(255,255,255,.08);
  font-size:.78rem; color:#8b88a8; white-space:nowrap; overflow:hidden;
}

@media (min-width:901px){
  .pc-sidebar.collapsed{ width:72px; }
  .pc-sidebar.collapsed .brand{ justify-content:center; padding:1.15rem .5rem; }
  .pc-sidebar.collapsed .brand .brand-text,
  .pc-sidebar.collapsed .nav-section,
  .pc-sidebar.collapsed .pc-nav a .label,
  .pc-sidebar.collapsed .pc-nav-toggle .label,
  .pc-sidebar.collapsed .foot{ display:none; }
  .pc-sidebar.collapsed .pc-nav a,
  .pc-sidebar.collapsed .pc-nav-toggle{ justify-content:center; padding:.6rem; }
  .pc-sidebar.collapsed .pc-nav-toggle .icon{ transform:rotate(180deg); }
}

.pc-main{ flex:1; min-width:0; }

.pc-topbar{
  background:var(--pc-surface); border-bottom:1px solid var(--pc-border);
  padding:.85rem 1.5rem; display:flex; align-items:center; justify-content:space-between;
  position:sticky; top:0; z-index:20;
}
.pc-topbar h1{ font-size:1.15rem; font-weight:700; margin:0; }
.pc-topbar .subtitle{ font-size:.82rem; color:var(--pc-muted); }

.pc-content{ padding:1.5rem; max-width:1400px; }

/* ---------- Cards ---------- */

.pc-card{
  background:var(--pc-surface);
  border:1px solid var(--pc-border);
  border-radius:var(--pc-radius);
  box-shadow:var(--pc-shadow);
}
.pc-card .pc-card-header{
  padding:1rem 1.25rem; border-bottom:1px solid var(--pc-border);
  display:flex; align-items:center; justify-content:space-between;
}
.pc-card .pc-card-header h2{ font-size:1rem; font-weight:700; margin:0; }
.pc-card .pc-card-body{ padding:1.25rem; }

.pc-stat{
  background:var(--pc-surface); border:1px solid var(--pc-border);
  border-radius:var(--pc-radius); padding:1.1rem 1.25rem; box-shadow:var(--pc-shadow);
}
.pc-stat .label{ font-size:.78rem; color:var(--pc-muted); font-weight:600; text-transform:uppercase; letter-spacing:.03em; }
.pc-stat .value{ font-size:1.7rem; font-weight:800; margin-top:.15rem; }
.pc-stat .value.accent{ color:var(--pc-primary); }
a.pc-stat{ display:block; text-decoration:none; color:inherit; transition:box-shadow .12s, transform .12s; }
a.pc-stat:hover{ box-shadow:0 6px 18px -6px rgba(16,24,40,.18); transform:translateY(-1px); }

/* ---------- Buttons ---------- */

.btn{ border-radius:9px; font-weight:600; font-size:.88rem; padding:.5rem 1rem; }
.btn-primary{ background:var(--pc-primary); border-color:var(--pc-primary); }
.btn-primary:hover{ background:var(--pc-primary-dark); border-color:var(--pc-primary-dark); }
.btn-outline-primary{ color:var(--pc-primary); border-color:var(--pc-primary); }
.btn-outline-primary:hover{ background:var(--pc-primary); border-color:var(--pc-primary); }
.btn-soft{ background:var(--pc-primary-light); color:var(--pc-primary-dark); border:1px solid transparent; }
.btn-soft:hover{ background:#e0e2fc; color:var(--pc-primary-dark); }

/* ---------- Forms ---------- */

.form-label{ font-weight:600; font-size:.83rem; color:#374151; margin-bottom:.3rem; }
.form-label .req{ color:var(--pc-danger); }
.form-control, .form-select{
  border-radius:9px; border:1px solid var(--pc-border); padding:.5rem .75rem; font-size:.9rem;
}
.form-control:focus, .form-select:focus{
  border-color:var(--pc-primary); box-shadow:0 0 0 3px rgba(79,70,229,.14);
}
.form-hint{ font-size:.76rem; color:var(--pc-muted); margin-top:.25rem; }
.form-error{ font-size:.76rem; color:var(--pc-danger); margin-top:.25rem; }
.is-invalid{ border-color:var(--pc-danger) !important; }

.field-group{ margin-bottom:1rem; }

/* Quick-entry row used in New Case for pills/checklists */
.pc-check-grid{ display:flex; flex-wrap:wrap; gap:.5rem; }
.pc-check-pill{
  border:1px solid var(--pc-border); border-radius:999px; padding:.35rem .85rem;
  font-size:.83rem; cursor:pointer; user-select:none; background:#fff; transition:all .12s;
}
.pc-check-pill input{ display:none; }
.pc-check-pill:has(input:checked){
  background:var(--pc-primary-light); border-color:var(--pc-primary); color:var(--pc-primary-dark); font-weight:600;
}

/* Dosage toggle buttons (Morning/Afternoon/Evening/Night) */
.dose-toggle{ display:inline-flex; gap:.3rem; }
.dose-toggle label{
  border:1px solid var(--pc-border); border-radius:8px; padding:.3rem .55rem;
  font-size:.74rem; font-weight:700; color:var(--pc-muted); cursor:pointer; background:#fff;
}
.dose-toggle input{ display:none; }
.dose-toggle label:has(input:checked){ background:var(--pc-accent); border-color:var(--pc-accent); color:#fff; }

/* Autocomplete dropdown */
.pc-autocomplete{ position:relative; }
.pc-autocomplete::after{
  content:'▾'; position:absolute; right:.7rem; top:50%; transform:translateY(-50%);
  color:var(--pc-muted); font-size:.75rem; pointer-events:none;
}
.pc-autocomplete > input{ padding-right:1.8rem; }
.pc-autocomplete-menu{
  position:absolute; z-index:50; top:100%; left:0; right:0;
  background:#fff; border:1px solid var(--pc-border); border-radius:9px;
  box-shadow:var(--pc-shadow); margin-top:4px; max-height:260px; overflow-y:auto; display:none;
}
.pc-autocomplete-menu.show{ display:block; }
.pc-autocomplete-menu .item{ padding:.5rem .75rem; font-size:.87rem; cursor:pointer; }
.pc-autocomplete-menu .item:hover, .pc-autocomplete-menu .item.active{ background:var(--pc-primary-light); }
.pc-autocomplete-menu .item small{ display:block; color:var(--pc-muted); }

/* Step tabs for the New Case wizard */
.pc-steps{ display:flex; gap:.4rem; margin-bottom:1.25rem; flex-wrap:wrap; }
.pc-steps .step{
  border:1px solid var(--pc-border); background:#fff; border-radius:999px;
  padding:.4rem .9rem .4rem .6rem; font-size:.82rem; font-weight:600; color:var(--pc-muted);
  display:flex; align-items:center; gap:.4rem; cursor:pointer;
}
.pc-steps .step .num{
  width:20px; height:20px; border-radius:50%; background:var(--pc-border); color:#fff;
  display:flex; align-items:center; justify-content:center; font-size:.72rem;
}
.pc-steps .step.active{ border-color:var(--pc-primary); color:var(--pc-primary-dark); background:var(--pc-primary-light); }
.pc-steps .step.active .num{ background:var(--pc-primary); }
.pc-steps .step.done .num{ background:var(--pc-success); }

/* Tables */
.table thead th{
  font-size:.72rem; text-transform:uppercase; letter-spacing:.04em; color:var(--pc-muted);
  border-bottom:2px solid var(--pc-border); font-weight:700;
}
.table td{ vertical-align:middle; font-size:.87rem; }
.table-hover tbody tr:hover{ background:var(--pc-primary-light); }

.badge-status{ font-size:.72rem; padding:.32rem .6rem; border-radius:999px; font-weight:700; }
.badge-pending{ background:#e0e7ff; color:#3730a3; }
.badge-trial{ background:#fef3c7; color:#92400e; }
.badge-active{ background:#dcfce7; color:#166534; }
.badge-past_due{ background:#fee2e2; color:#991b1b; }
.badge-cancelled{ background:#e5e7eb; color:#374151; }
.badge-expired{ background:#fee2e2; color:#991b1b; }

/* Login / marketing */
.pc-auth-wrap{
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  background:radial-gradient(1200px 600px at 10% -10%, #eef2ff 0%, transparent 60%),
             radial-gradient(1000px 500px at 110% 10%, #ecfeff 0%, transparent 55%), var(--pc-bg);
}
.pc-auth-card{ width:100%; max-width:400px; background:#fff; border-radius:18px; box-shadow:var(--pc-shadow); padding:2rem; }

.pc-empty{ text-align:center; padding:3rem 1rem; color:var(--pc-muted); }
.pc-empty .icon{ font-size:2.4rem; margin-bottom:.5rem; }

@media (max-width:900px){
  .pc-sidebar{ position:fixed; left:-260px; z-index:40; transition:left .18s; }
  .pc-sidebar.open{ left:0; }
  .pc-content{ padding:1rem; }
  .pc-nav-toggle{ display:none; }
}
