:root {
  --bg: #f8f5fb;
  --bg-grad-1: #eef2f8;
  --bg-grad-2: #f9fbff;
  --text: #0f172a;
  --muted: #6b7280;
  --primary: #007aff; /* iOS blue */
  --success: #34c759;
  --warning: #ff9f0a;
  --danger: #ff3b30;
  --neutral: #9aa0a6;
  --card-bg: rgba(255,255,255,0.65);
  --card-border: rgba(255,255,255,0.35);
  --shadow: 0 10px 25px rgba(0,0,0,0.06);
  --radius: 14px;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #0b0f17;
    --bg-grad-1: #0b1220;
    --bg-grad-2: #0e1626;
    --text: #e6edf7;
    --muted: #9aa4b2;
    --primary: #0a84ff;
    --success: #30d158;
    --warning: #ffd60a;
    --danger: #ff453a;
    --neutral: #8b93a1;
    --card-bg: rgba(17, 24, 39, 0.55);
    --card-border: rgba(255,255,255,0.12);
    --shadow: 0 10px 25px rgba(0,0,0,0.4);
  }
}

/* Explicit theme overrides take precedence over system settings */
:root[data-theme="light"] {
  --bg: #f5f7fb;
  --bg-grad-1: #eef2f8;
  --bg-grad-2: #f9fbff;
  --text: #0f172a;
  --muted: #6b7280;
  --primary: #007aff;
  --success: #34c759;
  --warning: #ff9f0a;
  --neutral: #9aa0a6;
  --card-bg: rgba(255,255,255,0.65);
  --card-border: rgba(255,255,255,0.35);
  --shadow: 0 10px 25px rgba(0,0,0,0.06);
}

:root[data-theme="dark"] {
  --bg: #0b0f17;
  --bg-grad-1: #0b1220;
  --bg-grad-2: #0e1626;
  --text: #e6edf7;
  --muted: #9aa4b2;
  --primary: #0a84ff;
  --success: #30d158;
  --warning: #ffd60a;
  --neutral: #8b93a1;
  --card-bg: rgba(17, 24, 39, 0.55);
  --card-border: rgba(255,255,255,0.12);
  --shadow: 0 10px 25px rgba(0,0,0,0.4);
}

html, body {
  height: 100%;
}

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
  color: var(--text);
  background: linear-gradient(180deg, var(--bg-grad-1), var(--bg-grad-2));
  background-attachment: fixed;
}

.app-shell {
  display: grid;
  grid-template-rows: auto 1fr auto;
  min-height: 100vh;
}

.app-header {
  position: sticky;
  padding: 12px;
  width:100%;
  top: 0;
  z-index: 100;
  backdrop-filter: saturate(160%) blur(12px);
  -webkit-backdrop-filter: saturate(160%) blur(12px);
  background: linear-gradient(180deg, rgba(255,255,255,0.7), rgba(255,255,255,0.45));
  border-bottom: 1px solid var(--card-border);
}

@media (prefers-color-scheme: dark) {
  .app-header {
    background: linear-gradient(180deg, rgba(20,23,35,0.7), rgba(20,23,35,0.45));
  }
}

.header-inner {
  max-width: 1400px;
  margin: 0 auto;
  padding: 14px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.header-actions { display:flex; align-items:center; gap:10px; }

.theme-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--card-border);
  background: var(--card-bg);
  color: var(--text);
  padding: 8px 10px;
  border-radius: 999px;
  cursor: pointer;
  box-shadow: var(--shadow);
  font-size: 0.85rem;
}
.theme-toggle .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--primary); box-shadow: 0 0 0 2px rgba(10,132,255,0.15); }

.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  font-weight: 700;
  letter-spacing: 0.2px;
}

.brand .dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--primary);
  box-shadow: 0 0 0 3px rgba(10,132,255,0.15);
}

.welcome {
  color: var(--muted);
  font-size: 0.95rem;
}

.app-main {
  max-width: 1400px;
  margin: 24px auto;
  padding: 0 20px 24px;
  width: 100%;
}

.toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 16px;
  align-items: end;
  margin-bottom: 16px;
}

.field {
  display: grid;
  gap: 6px;
}

label { font-size: 0.9rem; color: var(--muted); }

select, input[type="text"], input[type="time"], .btn {
  appearance: none;
  -webkit-appearance: none;
  border: 1px solid var(--card-border);
  background: var(--card-bg);
  color: var(--text);
  padding: 10px 12px;
  border-radius: 12px;
  outline: none;
  box-shadow: var(--shadow);
}

select, input[type="text"], input[type="time"] {
  min-width: 200px;
}

.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font-weight: 600;
  transition: transform 0.08s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.btn:active { transform: translateY(1px); }

.btn-primary { background: linear-gradient(180deg, #4da3ff, var(--primary)); color: #fff; border: none; }
.btn-success { background: linear-gradient(180deg, #5dd37c, var(--success)); color: #fff; border: none; }
.btn-warning { background: linear-gradient(180deg, #ffc676, var(--warning)); color: #222; border: none; }
.btn-neutral { background: linear-gradient(180deg, #c9d1da, var(--neutral)); color: #222; border: none; }

.pill {
  padding: 8px 12px;
  border-radius: 999px;
  background: var(--card-bg);
  border: 1px solid var(--card-border);
}

.grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
}

@media (min-width: 900px) {
  .grid { grid-template-columns: 1.2fr 0.8fr; }
}

.card {
  padding: 16px;
  position: relative;
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
}

.card-header {
  font-size: large;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border-bottom: 1px solid var(--card-border);
  backdrop-filter: blur(10px);
}

.date-card-header {
  
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
}

.card-body { padding: 12px 14px 16px; }

.section-title { margin: 10px 0 6px; font-size: 1.05rem; }
.subtle { color: var(--muted); font-size: 0.85rem; }

.chart { height: 500px; width: 100%; padding: 8px;}
.chart-small { height: 500px; width: 100%; padding: 8px;}
.chart-mini { height: 500px; width: 100%; padding: 8px;}

.controls-row { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: center; }
.checkboxes { display: flex; flex-wrap: wrap; gap: 10px 16px; }

.divider { height: 1px; background: var(--card-border); margin: 8px 0; }

.status-text { color: var(--success); font-size: 0.9rem; }

.link-btn { text-decoration: none; }

/* Make overlay subtler in dark for readability */
html[data-theme="dark"] .spinner-overlay { background: rgba(0,0,0,0.35) !important; }

/* Override Flatpickr highlight for has-data days to match theme */
.flatpickr-day.has-data {
  background: rgba(52, 199, 89, 0.25) !important;
  border-color: var(--success) !important;
  color: var(--text) !important;
}

.flatpickr-day.has-data:hover { background: rgba(52,199,89,0.35) !important; }

/* Ensure previous/next month days with data remain readable */
.flatpickr-day.prevMonthDay.has-data,
.flatpickr-day.nextMonthDay.has-data {
  opacity: 1 !important;
  background: rgba(52,199,89,0.25) !important;
  border-color: var(--success) !important;
  color: var(--text) !important;
}

/* Plot wrappers */
.plot-wrap { position: relative; width: 100%; }
.stack-gap { display: grid; gap: 10px; }

/* Ensure minute/instant charts span full width inside grid stacks */
#minutePlot, #instantPlot, #phasorPlot, #frequencyChart, #rocofChart, #voltageCurrentChart {
  width: 100% !important;
  grid-column: 1 / -1;
}

.app-footer { text-align: center; color: var(--muted); padding: 18px; font-size: 0.85rem; }

/* Spinners (shared) */
.spinner-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.6);
  z-index: 10;
  visibility: hidden;
}
.spinner {
  width: 48px;
  height: 48px;
  border: 4px solid #e0e0e0;
  border-top-color: var(--primary);
  border-radius: 50%;
  animation: spin 1s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* Dark theme spinner overlay background for readability */
html[data-theme="dark"] .spinner-overlay {
  background: rgba(0,0,0,0.35) !important;
}
