/* ----- DESIGN SPEC: BASE ----- */
:root {
  --bg: #070B14;
  --panel: rgba(17, 26, 46, .72);
  --panel-border: rgba(120, 170, 255, .14);
  --surface: #10131A;
  --surface2: #171B24;
  --text: #EAF2FF;
  --text-secondary: #8FA3C4;
  --cyan: #3EE6FF;
  --violet: #8B7CFF;
  --status-normal: #3DDC97;
  --status-high: #FF5C7A;
  --status-low: #FFB454;
  --status-stopped: #6B7A94;
  --glow: 0 0 24px rgba(62, 230, 255, .35);
  --radius: 18px;
  --font-sans: -apple-system, "SF Pro Text", "Segoe UI", system-ui, sans-serif;
  --font-mono: ui-monospace, "SF Mono", "Menlo", "Consolas", monospace;
  --pad: 16px;
  --gap: 12px;
}

.theme-doctor {
  --bg: #FFFFFF;
  --panel: #FFFFFF;
  --panel-border: #E5E7EB;
  --surface: #FFFFFF;
  --surface2: #F9FAFB;
  --text: #111827;
  --text-secondary: #4B5563;
  --cyan: #2563EB; /* Accent color for doctor view */
  --violet: #2563EB;
  --status-normal: #047857;
  --status-high: #B91C1C;
  --status-low: #B45309;
  --status-stopped: #4B5563;
  --glow: none;
  --radius: 8px;
}

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  font-family: var(--font-sans);
  background-color: var(--bg);
  color: var(--text);
  font-size: 15px;
  line-height: 1.5;
}

body {
  -webkit-font-smoothing: antialiased;
}

#app {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  transition: background-color 200ms ease-out;
}

.theme-doctor #app {
  max-width: 1120px;
  margin: 0 auto;
}

/* ----- LAYOUT ----- */
.main-layout {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
}
.main-content {
  flex-grow: 1;
  padding: 72px var(--pad) 100px; /* Space for header and footer */
}

/* ----- MOTION ----- */
.fade-in { animation: fadeIn 200ms ease-out forwards; }
.slide-up { animation: slideUp 240ms ease-out forwards; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes slideUp { from { transform: translateY(100%); } to { transform: translateY(0); } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 1ms !important;
    scroll-behavior: auto !important;
  }
}

/* ----- COMPONENTS ----- */

/* Passkey Gate */
.passkey-gate {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 100vh;
  padding: var(--pad);
}
.passkey-gate h1 {
  font-size: 24px;
  font-weight: 700;
  letter-spacing: .1em;
  color: var(--violet);
  margin-bottom: 48px;
}
.passkey-gate .btn {
  font-size: 17px;
  font-weight: 600;
  padding: 12px 24px;
  border-radius: 12px;
  background-color: var(--violet);
  color: white;
  border: none;
  cursor: pointer;
  min-width: 240px;
}
.passkey-gate a {
  color: var(--text-secondary);
  margin-top: 24px;
  font-size: 14px;
}
.enrol-form {
  display: flex;
  flex-direction: column;
  gap: var(--gap);
  margin-top: 24px;
  width: 100%;
  max-width: 300px;
}
.enrol-form input {
  font-family: var(--font-mono);
  font-size: 18px;
  text-align: center;
  letter-spacing: .2em;
  text-transform: uppercase;
  padding: 10px;
  border-radius: 8px;
  border: 1px solid var(--panel-border);
  background-color: var(--surface);
  color: var(--text);
}

/* Header */
.header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 var(--pad);
  background-color: var(--panel);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--panel-border);
  z-index: 10;
}
.theme-doctor .header { backdrop-filter: none; }
.header-brand { display: flex; align-items: center; gap: 8px; font-weight: 700; letter-spacing: .1em; color: var(--violet); }
.header-chip { font-size: 11px; font-weight: 600; background-color: rgba(139, 124, 255, 0.2); color: var(--violet); padding: 2px 6px; border-radius: 6px; }
.header-controls { display: flex; align-items: center; gap: 12px; }
.header-controls .icon-btn { background: none; border: none; color: var(--text-secondary); cursor: pointer; padding: 4px; }
.header-controls .icon-btn svg { width: 20px; height: 20px; }
.view-switch { display: flex; background-color: var(--surface); border-radius: 8px; padding: 2px; }
.view-switch button { font-size: 13px; font-weight: 500; padding: 4px 10px; border: none; border-radius: 6px; background: none; color: var(--text-secondary); cursor: pointer; }
.view-switch button.active { background-color: var(--surface2); color: var(--text); }
.theme-doctor .view-switch button.active { background-color: var(--cyan); color: white; }

/* Bottom Tabs */
.tabs {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: 84px;
  display: flex;
  justify-content: space-around;
  padding-bottom: 34px;
  background-color: var(--panel);
  backdrop-filter: blur(14px);
  border-top: 1px solid var(--panel-border);
  z-index: 10;
}
.theme-doctor .tabs { display: none; }
.tab-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  background: none;
  border: none;
  color: var(--text-secondary);
  font-size: 11px;
  font-weight: 500;
  cursor: pointer;
  padding: 8px 12px;
  flex-grow: 1;
}
.tab-item.active { color: var(--violet); }
.tab-item svg { width: 24px; height: 24px; }

/* Page Styles */
.page-header { margin-bottom: 24px; }
.page-header h1 { font-size: 22px; font-weight: 700; }
.page-header p { color: var(--text-secondary); }

/* Vital Ring */
.vital-ring-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin: 24px 0;
  position: relative;
}
.vital-ring-svg { width: 180px; height: 180px; transform: rotate(-90deg); }
.vital-ring-svg circle { fill: none; }
.vital-ring-svg .bg-track { stroke: var(--surface); }
.vital-ring-svg .data-arc {
  stroke-linecap: round;
  transition: stroke-dashoffset 900ms ease-out;
}
.vital-ring-svg .data-arc.glow { filter: drop-shadow(var(--glow)); }
@media (prefers-reduced-motion: reduce) { .vital-ring-svg .data-arc { transition: none; } }
.vital-ring-text {
  position: absolute;
  text-align: center;
}
.vital-ring-text .hero { font-size: 40px; font-weight: 700; line-height: 1; }
.vital-ring-text .hero span { font-size: 20px; font-weight: 500; color: var(--text-secondary); }
.vital-ring-text .sub { font-size: 13px; color: var(--text-secondary); margin-top: 4px; }

/* Attention Strip */
.attention-strip { display: flex; overflow-x: auto; gap: 8px; padding: 4px 0; margin-bottom: 24px; -ms-overflow-style: none; scrollbar-width: none; }
.attention-strip::-webkit-scrollbar { display: none; }
.attention-pill {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  padding: 8px 12px;
  border-radius: 22px;
  background-color: var(--surface);
}
.attention-pill.high { background-color: rgba(255, 92, 122, 0.15); color: var(--status-high); }
.attention-pill.low { background-color: rgba(255, 180, 84, 0.15); color: var(--status-low); }

/* Glance Tiles */
.glance-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap); margin-bottom: 24px; }
.glance-tile {
  background-color: var(--surface);
  border-radius: var(--radius);
  padding: 16px;
}
.glance-tile .label { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; color: var(--text-secondary); margin-bottom: 8px; }
.glance-tile .value { font-size: 22px; font-weight: 600; }
.glance-tile .value span { font-size: 15px; color: var(--text-secondary); margin-left: 4px; }
.glance-tile .mono { font-family: var(--font-mono); font-feature-settings: 'tnum'; }

/* Allergy Card */
.allergy-card {
  background-color: var(--surface);
  border: 1px solid rgba(255, 92, 122, 0.4);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 24px;
}
.allergy-card .label { color: var(--status-high); font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; margin-bottom: 8px; }
.allergy-card ul { list-style: none; }

/* Section Grid */
.section-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap); }
.section-card {
  background-color: var(--surface);
  border-radius: var(--radius);
  padding: 16px;
  cursor: pointer;
  transition: background-color 200ms ease-out;
}
.section-card:hover { background-color: var(--surface2); }
.section-card .label { font-weight: 600; margin-bottom: 8px; }
.section-card .latest-flag { display: flex; align-items: center; gap: 4px; font-size: 13px; color: var(--text-secondary); margin-bottom: 12px; }
.section-card .dot { width: 8px; height: 8px; border-radius: 50%; }
.section-card .dot.high { background-color: var(--status-high); }
.section-card .dot.low { background-color: var(--status-low); }
.section-card .sparkline-svg { width: 100%; height: 20px; }

/* Flag Pill */
.flag-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 600;
  padding: 2px 6px;
  border-radius: 6px;
  text-transform: uppercase;
}
.flag-pill.normal { background-color: rgba(61, 220, 151, 0.15); color: var(--status-normal); }
.flag-pill.high { background-color: rgba(255, 92, 122, 0.15); color: var(--status-high); }
.flag-pill.low { background-color: rgba(255, 180, 84, 0.15); color: var(--status-low); }

/* Marker Table */
.marker-table { width: 100%; border-collapse: collapse; }
.marker-table td { padding: 12px 0; border-bottom: 1px solid var(--surface2); }
.marker-table tr:last-child td { border-bottom: none; }
.marker-table .marker-name { font-weight: 500; }
.marker-table .marker-value { text-align: right; font-family: var(--font-mono); font-feature-settings: 'tnum'; }
.marker-table .marker-value .unit { color: var(--text-secondary); }
.marker-table .marker-delta { display: inline-flex; align-items: center; gap: 2px; font-size: 13px; margin-left: 8px; }
.marker-table .marker-delta.up { color: var(--status-high); }
.marker-table .marker-delta.down { color: var(--status-normal); }

/* Trend Chart */
.trend-chart-container { margin: 24px 0; }
.trend-chart-header { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.chip-btn {
  font-size: 13px;
  padding: 6px 12px;
  border-radius: 16px;
  border: 1px solid var(--surface2);
  background-color: transparent;
  color: var(--text-secondary);
  cursor: pointer;
}
.chip-btn.active {
  background-color: var(--violet);
  color: white;
  border-color: var(--violet);
}
.trend-chart-svg { width: 100%; height: 200px; }
.trend-chart-svg .normal-range { fill: rgba(61, 220, 151, 0.12); }
.trend-chart-svg .grid-line { stroke: var(--surface2); stroke-width: 1; }
.trend-chart-svg .axis-label { fill: var(--text-secondary); font-size: 11px; }
.trend-chart-svg .data-line { fill: none; stroke: var(--cyan); stroke-width: 2; }
.trend-chart-svg .data-point { stroke-width: 2; }
.trend-chart-svg .point-label { fill: var(--text); font-size: 12px; font-family: var(--font-mono); text-anchor: middle; }

/* Medicine Page */
.med-filters { display: flex; overflow-x: auto; gap: 8px; padding: 4px 0; margin-bottom: 16px; -ms-overflow-style: none; scrollbar-width: none; }
.med-filters::-webkit-scrollbar { display: none; }
.med-list { display: flex; flex-direction: column; gap: var(--gap); }
.med-card {
  background-color: var(--surface);
  border-radius: var(--radius);
  padding: 16px;
  border-left: 4px solid;
  transition: background-color 200ms ease-out;
}
.med-card.active { border-color: var(--status-normal); }
.med-card.prn { border-color: var(--status-low); }
.med-card.held { border-color: var(--status-low); }
.med-card.stopped { border-color: var(--status-stopped); }
.med-card.past { border-color: var(--status-stopped); }
.med-card-header { display: flex; justify-content: space-between; align-items: flex-start; }
.med-card-header .name { font-size: 17px; font-weight: 600; }
.med-card-header .dose { color: var(--text-secondary); }
.med-card .generic { font-size: 14px; color: var(--text-secondary); margin-top: 2px; }
.med-card-details { font-size: 13px; color: var(--text-secondary); margin-top: 12px; display: flex; flex-direction: column; gap: 4px; }
.med-card.stopped .med-card-details, .med-card.past .med-card-details { color: var(--status-low); }

/* Timeline Page */
.timeline-group { margin-bottom: 32px; }
.timeline-group h2 { font-size: 17px; font-weight: 600; margin-bottom: 16px; }
.timeline-item {
  display: flex;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--surface2);
}
.timeline-item:last-child { border-bottom: none; }
.timeline-icon { width: 32px; height: 32px; flex-shrink: 0; background-color: var(--surface); border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.timeline-content .title { font-weight: 500; }
.timeline-content .detail { font-size: 14px; color: var(--text-secondary); }
.timeline-content .date { font-size: 13px; color: var(--text-secondary); }

/* Share Sheet */
.sheet-overlay { position: fixed; inset: 0; background-color: rgba(0,0,0,0.6); z-index: 20; }
.share-sheet {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  max-height: 90vh;
  background-color: var(--surface);
  border-top-left-radius: var(--radius);
  border-top-right-radius: var(--radius);
  display: flex;
  flex-direction: column;
  z-index: 21;
}
.share-sheet-content { padding: 24px var(--pad); overflow-y: auto; }
.share-sheet h2 { font-size: 17px; font-weight: 600; margin-bottom: 16px; }
.share-sections-grid { display: grid; grid-template-columns: 1fr; gap: 8px; margin-bottom: 24px; }
.share-section-label {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px;
  background-color: var(--surface2);
  border-radius: 12px;
  cursor: pointer;
}
.share-section-label.sensitive { background-color: rgba(255, 180, 84, 0.1); }
.share-section-label input { width: 20px; height: 20px; accent-color: var(--violet); }
.share-section-label .icon { color: var(--text-secondary); }
.share-section-label.sensitive .icon { color: var(--status-low); }
.share-form-group { margin-bottom: 24px; }
.share-form-group label { display: block; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; color: var(--text-secondary); margin-bottom: 8px; }
.share-form-group input[type="text"] { width: 100%; padding: 12px; font-size: 15px; background-color: var(--surface2); border: 1px solid var(--panel-border); border-radius: 8px; color: var(--text); }
.duration-pills { display: flex; gap: 8px; }
.duration-pills .chip-btn { flex-grow: 1; }
.share-sheet-footer { padding: var(--pad); border-top: 1px solid var(--panel-border); }
.btn-primary { width: 100%; padding: 14px; font-size: 17px; font-weight: 600; background-color: var(--violet); color: white; border: none; border-radius: 12px; cursor: pointer; }

/* QR Code View */
.qr-view { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 32px 0; }
.qr-container { position: relative; width: 220px; height: 220px; margin-bottom: 24px; }
.qr-svg { width: 100%; height: 100%; }
.qr-corners { position: absolute; inset: -12px; }
.qr-corners svg { width: 100%; height: 100%; }
.qr-corners path { fill: none; stroke: var(--violet); stroke-width: 3; stroke-linecap: round; }
.qr-code { font-family: var(--font-mono); font-size: 22px; font-weight: 700; letter-spacing: .1em; margin-bottom: 8px; }
.qr-countdown { color: var(--text-secondary); }

/* Live Shares */
.live-share-list { display: flex; flex-direction: column; gap: var(--gap); }
.live-share-row {
  background-color: var(--surface2);
  padding: 12px;
  border-radius: 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.live-share-info .label { font-weight: 600; }
.live-share-info .state { font-size: 13px; color: var(--text-secondary); }
.live-share-row .btn-revoke { background: none; border: none; color: var(--status-high); font-weight: 600; cursor: pointer; }

/* Banners */
.banner {
  padding: 12px var(--pad);
  text-align: center;
  font-size: 14px;
  font-weight: 500;
  position: fixed;
  top: 56px;
  left: 0;
  right: 0;
  z-index: 11;   /* above the side navigation (10): a taller banner (pairing number) must not slide under it */
}
.preview-banner { background-color: var(--violet); color: white; }
.approval-banner {
  background-color: var(--surface);
  border-bottom: 1px solid var(--panel-border);
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.approval-banner .btn {
  font-size: 14px;
  font-weight: 600;
  padding: 6px 12px;
  border-radius: 8px;
  border: none;
  cursor: pointer;
}
.approval-banner .btn-allow { background-color: var(--status-normal); color: white; }
.approval-banner .btn-deny { background: none; color: var(--text-secondary); }
.approval-info { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left; }
.approval-main { font-weight: 600; }
.approval-pair { font-size: 13px; color: var(--text-secondary); }
.approval-pair .pairing-number { font-family: var(--font-mono); font-size: 20px; letter-spacing: .14em; color: var(--cyan); margin-left: 4px; }
.approval-meta { font-size: 12px; color: var(--text-secondary); }

/* "N private items hidden · Unlock with Face ID" (no fresh passkey) */
.unlock-row { display: flex; justify-content: center; padding: 12px var(--pad) 0; }
.unlock-pill {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px; border-radius: 999px;
  font-size: 13px; font-weight: 600; color: var(--text);
  background-color: var(--panel); border: 1px solid var(--panel-border);
  backdrop-filter: blur(14px); box-shadow: var(--glow);
  cursor: pointer;
}
.unlock-pill:hover, .unlock-pill:focus-visible { border-color: var(--cyan); outline: none; }
.theme-doctor .unlock-row { display: none; }

/* ----- LAPTOP STYLES ----- */
@media (min-width: 900px) {
  .main-layout {
    flex-direction: row;
    max-width: 1120px;
    margin: 0 auto;
    gap: 24px;
  }
  .header {
    position: sticky;
    border-bottom: none;
    background: none;
    backdrop-filter: none;
    width: 100%;
    max-width: 1120px;
    margin: 0 auto;
    left: auto; right: auto;
  }
  .tabs { /* Becomes left rail */
    position: sticky;
    top: 0;
    left: 0;
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-start;
    width: 220px;
    height: 100vh;
    background: none;
    backdrop-filter: none;
    border-top: none;
    border-right: 1px solid var(--panel-border);
    padding: 72px 0 0 0;
  }
  .tab-item {
    flex-direction: row;
    justify-content: flex-start;
    gap: 12px;
    width: 100%;
    padding: 12px var(--pad);
    font-size: 15px;
    border-radius: 0;
  }
  .tab-item.active { background-color: var(--surface); }
  .main-content {
    padding: 72px 0 24px 0;
    width: 100%;
  }
  .home-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
  }
  .home-col-1 { display: flex; flex-direction: column; gap: 24px; }
  .home-col-2 { display: flex; flex-direction: column; gap: 24px; }
  .vital-ring-container { margin: 0; }
  .attention-strip { margin-bottom: 0; }
  .glance-grid { margin-bottom: 0; }
  .allergy-card { margin-bottom: 0; }
  .section-grid { grid-column: 1 / -1; }
}

/* ----- DOCTOR PREVIEW PRINT STYLES ----- */
@media print {
  .theme-doctor {
    --bg: #FFFFFF;
    --text: #000000;
    --text-secondary: #555555;
    --panel-border: #CCCCCC;
  }
  .header, .tabs, .preview-banner, .unlock-row, .btn {
    display: none !important;
  }
  #app, .main-layout, .main-content {
    display: block;
    padding: 0;
    margin: 0;
  }
  .page-section {
    page-break-before: always;
  }
  .trend-chart-svg .data-line { stroke: black; }
  .trend-chart-svg .data-point { stroke: black; }
  .trend-chart-svg .point-label { fill: black; }
  .trend-chart-svg .normal-range { fill: #E5E7EB; }
}
