/*
 * Bioguard Admin Theme V1
 * Shared visual layer for miniAST standard management pages.
 * The GrapesJS HTML template editor and raw email render preview are intentionally excluded.
 */

:root {
  --bg-0: #eefaff;
  --bg-1: #e2f5fb;
  --surface: #ffffff;
  --surface-soft: #f7fcff;
  --ink: #0b2450;
  --muted: #5f7891;
  --line: #d8e8f3;
  --line-strong: #b8d6e9;
  --navy: #0d4278;
  --navy-deep: #082f5d;
  --blue: #1769b7;
  --blue-strong: #0a5fae;
  --cyan: #0d95b6;
  --green: #008f5c;
  --amber: #a96608;
  --red: #c93c42;
  --shadow: 0 16px 34px rgba(13, 65, 105, .12);
  --shadow-soft: 0 9px 22px rgba(13, 65, 105, .08);
}

html {
  scroll-behavior: smooth;
}

body.bioguard-admin {
  min-height: 100vh;
  margin: 0;
  color: var(--ink);
  background:
    radial-gradient(circle at 12% -5%, rgba(124, 232, 246, .46) 0, transparent 28%),
    radial-gradient(circle at 88% 4%, rgba(205, 246, 255, .70) 0, transparent 23%),
    linear-gradient(180deg, #e8f9ff 0%, #f8fcff 48%, #edf8fd 100%);
  font-family: "Noto Sans TC", "Segoe UI", Arial, sans-serif;
}

body.bioguard-admin * {
  box-sizing: border-box;
}

body.bioguard-admin .top {
  position: sticky;
  top: 0;
  z-index: 500;
  border-bottom: 1px solid rgba(191, 220, 237, .96);
  background: rgba(255, 255, 255, .90);
  box-shadow: 0 2px 15px rgba(11, 58, 100, .07);
  backdrop-filter: blur(14px);
}

body.bioguard-admin .bar,
body.bioguard-admin .topin {
  max-width: 1880px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 24px;
  padding-right: 24px;
}

body.bioguard-admin .brand,
body.bioguard-admin .brand-title {
  color: #155ca8;
  letter-spacing: .2px;
}

body.bioguard-admin .brand {
  font-weight: 900;
}

body.bioguard-admin .logo-img {
  border-color: #cfe6f3;
  background: #fff;
  box-shadow: 0 6px 16px rgba(22, 96, 151, .10);
}

body.bioguard-admin .nav {
  gap: 8px;
}

body.bioguard-admin .nav a,
body.bioguard-admin .topin > a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #cfe0ec;
  border-radius: 12px;
  background: rgba(255, 255, 255, .95);
  color: #123258;
  font-weight: 850;
  text-decoration: none;
  box-shadow: 0 2px 7px rgba(21, 79, 125, .04);
  transition: transform .16s ease, border-color .16s ease, background .16s ease, color .16s ease, box-shadow .16s ease;
}

body.bioguard-admin .nav a:hover,
body.bioguard-admin .topin > a:hover {
  transform: translateY(-1px);
  border-color: #8fc1df;
  background: #f4fbff;
  color: #0d5b9f;
  box-shadow: 0 6px 14px rgba(14, 89, 151, .11);
}

body.bioguard-admin .nav a.active,
body.bioguard-admin .nav a.theme-current,
body.bioguard-admin .topin > a.theme-current {
  border-color: #1769b7;
  background: linear-gradient(135deg, #1769b7, #0d5ba7);
  color: #fff;
  box-shadow: 0 7px 17px rgba(23, 105, 183, .23);
}

body.bioguard-admin .wrap {
  max-width: 1880px;
  margin: 22px auto 46px;
  padding-left: 25px;
  padding-right: 25px;
}

body.bioguard-admin .card,
body.bioguard-admin .box,
body.bioguard-admin .panel,
body.bioguard-admin .stat,
body.bioguard-admin .field,
body.bioguard-admin .summary-card {
  border-color: #d6e6f0;
  background: rgba(255, 255, 255, .97);
  box-shadow: var(--shadow-soft);
}

body.bioguard-admin .card,
body.bioguard-admin .box,
body.bioguard-admin .panel {
  border-radius: 21px;
}

body.bioguard-admin .card {
  padding: 20px;
}

body.bioguard-admin .card > :first-child:not(.toolbar):not(.actions):not(.notice):not(.tip) {
  color: #123a67;
}

body.bioguard-admin h1,
body.bioguard-admin h2,
body.bioguard-admin h3 {
  color: #123a67;
}

body.bioguard-admin h1 {
  letter-spacing: .2px;
}

body.bioguard-admin .btn,
body.bioguard-admin button,
body.bioguard-admin input[type="submit"] {
  border: 1px solid #c9dce9;
  border-radius: 12px;
  background: #fff;
  color: #10477f;
  font-family: inherit;
  font-weight: 900;
  box-shadow: 0 3px 8px rgba(14, 80, 131, .05);
  transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease, filter .15s ease;
}

body.bioguard-admin .btn:hover,
body.bioguard-admin button:hover,
body.bioguard-admin input[type="submit"]:hover {
  transform: translateY(-1px);
  border-color: #80b9db;
  box-shadow: 0 7px 15px rgba(16, 96, 157, .13);
}

body.bioguard-admin .btn.primary,
body.bioguard-admin button.primary,
body.bioguard-admin button[type="submit"],
body.bioguard-admin input[type="submit"].primary {
  border-color: #1769b7;
  background: linear-gradient(135deg, #1769b7, #0d5ba7);
  color: #fff;
  box-shadow: 0 8px 17px rgba(23, 105, 183, .22);
}

body.bioguard-admin .btn.warn,
body.bioguard-admin button.warn {
  border-color: #f0cd89;
  background: #fff9ed;
  color: #9a6008;
}

body.bioguard-admin .btn.danger,
body.bioguard-admin button.danger {
  border-color: #ffd0d2;
  background: #fff5f5;
  color: #bd3a3f;
}

body.bioguard-admin input[type="text"],
body.bioguard-admin input[type="number"],
body.bioguard-admin input[type="email"],
body.bioguard-admin input[type="password"],
body.bioguard-admin input[type="date"],
body.bioguard-admin input[type="datetime-local"],
body.bioguard-admin select,
body.bioguard-admin textarea {
  border: 1px solid #cbdfea;
  border-radius: 12px;
  background: #fff;
  color: #102f53;
  box-shadow: inset 0 1px 2px rgba(18, 72, 112, .035);
  outline: none;
  transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}

body.bioguard-admin input[type="text"]:focus,
body.bioguard-admin input[type="number"]:focus,
body.bioguard-admin input[type="email"]:focus,
body.bioguard-admin input[type="password"]:focus,
body.bioguard-admin input[type="date"]:focus,
body.bioguard-admin input[type="datetime-local"]:focus,
body.bioguard-admin select:focus,
body.bioguard-admin textarea:focus {
  border-color: #3b9ed8;
  background: #feffff;
  box-shadow: 0 0 0 3px rgba(59, 158, 216, .14);
}

body.bioguard-admin input[readonly] {
  background: #f4f8fb;
  color: #60748a;
}

body.bioguard-admin label {
  color: #173a5f;
}

body.bioguard-admin .notice,
body.bioguard-admin .tip,
body.bioguard-admin .lifecycle-plan,
body.bioguard-admin .instrument-box {
  border-color: #bde0f1;
  background: rgba(246, 253, 255, .94);
  color: #486c8d;
  box-shadow: 0 7px 16px rgba(14, 85, 137, .045);
}

body.bioguard-admin .notice strong,
body.bioguard-admin .tip strong,
body.bioguard-admin .lifecycle-plan h3 {
  color: #1d517f;
}

body.bioguard-admin .notice.ok,
body.bioguard-admin .msg {
  border-color: #bce7d2;
  background: #effcf5;
  color: #08764d;
}

body.bioguard-admin .notice.err,
body.bioguard-admin .err {
  border-color: #ffc9cb;
  background: #fff2f2;
  color: #b5353a;
}

body.bioguard-admin .table-wrap,
body.bioguard-admin .sum-scroll,
body.bioguard-admin .detail {
  border-color: #d4e5ef;
  border-radius: 17px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9);
  background: #fff;
}

body.bioguard-admin table {
  border-color: #dbeaf2;
}

body.bioguard-admin table th,
body.bioguard-admin .summary-table th,
body.bioguard-admin table.stat th,
body.bioguard-admin .stats-table th {
  border-color: #1d578e;
  background: linear-gradient(90deg, #0d4278, #124f87);
  color: #fff;
  font-weight: 900;
}

body.bioguard-admin table td,
body.bioguard-admin .summary-table td,
body.bioguard-admin table.stat td,
body.bioguard-admin .stats-table td {
  border-color: #deebf3;
}

body.bioguard-admin table tbody tr:nth-child(even) td,
body.bioguard-admin .summary-table tbody tr:nth-child(even) td,
body.bioguard-admin table.stat tbody tr:nth-child(even) td {
  background: #f5faff;
}

body.bioguard-admin table tbody tr:hover td,
body.bioguard-admin .summary-table tbody tr:hover td,
body.bioguard-admin table.stat tbody tr:hover td {
  background: #edf9ff;
}

body.bioguard-admin .badge,
body.bioguard-admin .tag,
body.bioguard-admin .prefix-badge,
body.bioguard-admin .file-chip {
  border: 1px solid rgba(132, 193, 224, .28);
  background: #e9f8ff;
  color: #08628e;
  box-shadow: 0 2px 5px rgba(25, 104, 154, .04);
}

body.bioguard-admin .badge.off,
body.bioguard-admin .status-failed,
body.bioguard-admin .status-cancelled {
  background: #fff0f0;
  color: #bd3e43;
  border-color: #ffd1d3;
}

body.bioguard-admin .badge.on,
body.bioguard-admin .status-sent,
body.bioguard-admin .status-approved,
body.bioguard-admin .status-tested {
  background: #ecfbf3;
  color: #08794f;
  border-color: #b9e8d0;
}

body.bioguard-admin .status-pending_test,
body.bioguard-admin .status-needs_review,
body.bioguard-admin .status-scheduled {
  background: #fff8e9;
  color: #9b630c;
  border-color: #f4db9f;
}

body.bioguard-admin .muted,
body.bioguard-admin .note,
body.bioguard-admin .mini,
body.bioguard-admin .hint {
  color: #5d7892;
}

body.bioguard-admin .stat,
body.bioguard-admin .summary-card,
body.bioguard-admin .stage-card {
  border-radius: 17px;
}

body.bioguard-admin .stat b,
body.bioguard-admin .summary-card b,
body.bioguard-admin .stage-card .range {
  color: #0e629f;
}

body.bioguard-admin .stage-card:hover,
body.bioguard-admin .stage-card.active {
  border-color: #72b8dd;
  background: #f1fbff;
  box-shadow: 0 8px 18px rgba(18, 100, 163, .12);
}

body.bioguard-admin .actions,
body.bioguard-admin .toolbar {
  gap: 9px;
}

body.bioguard-admin details {
  border-radius: 10px;
}

body.bioguard-admin summary {
  color: #1267ad;
  font-weight: 900;
}

body.bioguard-admin .theme-scroll-top {
  position: fixed;
  right: 22px;
  bottom: 24px;
  z-index: 800;
  width: 46px;
  height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255,255,255,.64);
  border-radius: 50%;
  background: linear-gradient(135deg, #1769b7, #0a5fae);
  color: #fff;
  font-size: 21px;
  font-weight: 900;
  box-shadow: 0 13px 24px rgba(16, 91, 163, .28);
  cursor: pointer;
  opacity: 0;
  transform: translateY(12px);
  pointer-events: none;
  transition: opacity .18s ease, transform .18s ease, filter .18s ease;
}

body.bioguard-admin .theme-scroll-top.visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

body.bioguard-admin .theme-scroll-top:hover {
  filter: brightness(1.05);
}

body.bioguard-login {
  display: grid;
  place-items: center;
  min-height: 100vh;
  background:
    radial-gradient(circle at 18% 12%, rgba(117, 224, 243, .48), transparent 26%),
    radial-gradient(circle at 86% 88%, rgba(105, 189, 235, .20), transparent 24%),
    linear-gradient(135deg, #edfaff 0%, #f8fcff 47%, #e6f5fb 100%);
}

body.bioguard-login .wrap {
  width: min(100% - 30px, 470px);
  margin: 0;
  padding: 0;
}

body.bioguard-login .card {
  padding: 28px;
  border: 1px solid #d5e6f1;
  border-radius: 25px;
  box-shadow: 0 22px 52px rgba(11, 67, 111, .17);
}

body.bioguard-login .brand {
  gap: 11px;
  margin-bottom: 20px;
  color: #104f8b;
  font-size: 20px;
}

body.bioguard-login .logo-img {
  width: 128px;
  height: 128px;
  padding: 9px;
  border-radius: 24px;
  box-shadow: 0 9px 21px rgba(17, 94, 145, .10);
}

body.bioguard-login label {
  color: #275071;
  font-weight: 850;
}

body.bioguard-login input {
  padding: 13px 14px;
}

body.bioguard-login button {
  margin-top: 18px;
  padding: 13px;
  background: linear-gradient(135deg, #1769b7, #0d5ba7);
  box-shadow: 0 10px 20px rgba(23, 105, 183, .20);
}

body.bioguard-login .langs {
  gap: 8px;
}

body.bioguard-login .langs a {
  border: 1px solid #cfe1ec;
  border-radius: 999px;
  padding: 6px 10px;
  background: #f8fcff;
  color: #1769b7;
  font-weight: 800;
}

@media (max-width: 900px) {
  body.bioguard-admin .bar,
  body.bioguard-admin .topin,
  body.bioguard-admin .wrap {
    padding-left: 15px;
    padding-right: 15px;
  }

  body.bioguard-admin .top {
    position: relative;
  }

  body.bioguard-admin .nav {
    width: 100%;
    overflow-x: auto;
    flex-wrap: nowrap;
    padding-bottom: 2px;
  }

  body.bioguard-admin .nav a {
    flex: 0 0 auto;
  }

  body.bioguard-admin .card {
    padding: 15px;
    border-radius: 17px;
  }
}

@media (max-width: 560px) {
  body.bioguard-admin .theme-scroll-top {
    right: 14px;
    bottom: 16px;
    width: 43px;
    height: 43px;
  }

  body.bioguard-login .card {
    padding: 22px 19px;
  }
}


/* Shared return-navigation bar for all Bioguard admin pages. */
body.bioguard-admin .theme-page-actions{
  max-width:1880px;
  margin:12px auto 0;
  padding:0 25px;
  display:flex;
  align-items:center;
  justify-content:flex-start;
}
body.bioguard-admin .theme-page-back{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  padding:9px 14px;
  border:1px solid #b9d6e9;
  border-radius:12px;
  background:#ffffff;
  color:#0d5b9f;
  font:inherit;
  font-size:14px;
  font-weight:900;
  box-shadow:0 4px 11px rgba(14,89,151,.08);
  cursor:pointer;
  transition:transform .15s ease, background .15s ease, border-color .15s ease, box-shadow .15s ease;
}
body.bioguard-admin .theme-page-back:hover{
  transform:translateY(-1px);
  background:#f4fbff;
  border-color:#73b6dd;
  box-shadow:0 7px 15px rgba(14,89,151,.14);
}
body.bioguard-admin .theme-page-back:focus-visible{
  outline:3px solid rgba(57,158,216,.32);
  outline-offset:2px;
}
@media (max-width:900px){
  body.bioguard-admin .theme-page-actions{padding:0 15px;}
}

/* Follow-up approval attention layer: injected on every standard admin page
   for users who actually have approval permission. */
.followup-approval-alert {
  position: fixed;
  z-index: 9999;
  right: 22px;
  bottom: 22px;
  width: min(470px, calc(100vw - 34px));
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  padding: 14px;
  border: 1px solid #f0b64f;
  border-radius: 18px;
  background: linear-gradient(135deg, #fffdf6, #fff5db);
  box-shadow: 0 18px 44px rgba(129, 79, 0, .24);
  color: #6a4308;
}

.followup-approval-alert__icon {
  width: 42px;
  height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: #e59a1d;
  color: #fff;
  font-size: 24px;
  font-weight: 950;
  box-shadow: 0 6px 13px rgba(191, 119, 5, .24);
}

.followup-approval-alert__copy {
  min-width: 0;
  display: grid;
  gap: 3px;
}

.followup-approval-alert__copy strong {
  color: #754500;
  font-size: 15px;
}

.followup-approval-alert__copy span {
  color: #8b641e;
  font-size: 13px;
  line-height: 1.45;
}

.followup-approval-alert__action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 10px 12px;
  border-radius: 11px;
  background: linear-gradient(135deg, #1769b7, #0d5ba7);
  color: #fff !important;
  font-size: 13px;
  font-weight: 900;
  text-decoration: none;
  white-space: nowrap;
  box-shadow: 0 6px 14px rgba(16, 91, 167, .22);
}

.followup-nav-attention {
  position: relative;
}

.followup-nav-count {
  min-width: 20px;
  height: 20px;
  margin-left: 7px;
  padding: 0 5px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: #e43f3f;
  color: #fff;
  font-size: 11px;
  font-weight: 950;
  line-height: 1;
  box-shadow: 0 3px 8px rgba(190, 38, 38, .28);
}

@media (max-width: 680px) {
  .followup-approval-alert {
    right: 12px;
    bottom: 12px;
    grid-template-columns: 38px minmax(0, 1fr);
    gap: 10px;
    padding: 12px;
  }
  .followup-approval-alert__icon { width: 38px; height: 38px; font-size: 21px; }
  .followup-approval-alert__action { grid-column: 2; justify-self: start; }
}
