:root {
  --bg-day: rgb(189,206,244);
  --bg-night: #22252a;
  --ink-day: #111;
  --ink-night: #f4f6ff;
  --card-day: rgb(189,206,244);
  --card-night: #22252a;
  --accent-day: #335c9b;
  --accent-night: #f8c33a;
}

body {
  margin: 0;
  font-family: Arial, sans-serif;
  background: var(--card-day);
}
body.canvas-night {
  background: var(--card-night);
}

/* PAGE WRAPPER */
#canvas-gauges-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--card-day);
  color: var(--ink-day);
  transition: background 0.3s ease, color 0.3s ease;
}
body.canvas-night #canvas-gauges-page {
  background: var(--card-night);
  color: var(--ink-night);
}

/* HEADER (responsive, aligned to grid width, card-like) */
.canvas-header{
  /*position: sticky;*/
  top: 0;
  z-index: 50;
  padding: 0.75rem;
  padding-bottom: 0rem; /* same rhythm as main */
  background: transparent;
}

/* Shared width container for header + main (matches card grid) */
.canvas-container{
  width: 100%;
  max-width: 1400px;
  margin: 0 auto;
}

/* Card-like header body */
.canvas-header-inner{
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 0.75rem;

  padding: 0.75rem 1rem;
  border-radius: 14px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.25);
  border: 1px solid rgba(0,0,0,0.08);
  background: var(--card-day);
  /*background: linear-gradient(
    to bottom,
    rgba(255,255,255,0.95),
    rgba(255,255,255,0.85)
  );*/
  backdrop-filter: blur(6px);
}

body.canvas-night .canvas-header-inner{
  box-shadow: 0 2px 5px rgba(0,0,0,0.7);
  border-color: rgba(255,255,255,0.10);
  /*background: linear-gradient(
    to bottom,
    rgba(12,13,16,0.96),
    rgba(17,18,22,0.94)
  );*/
  background: rgb(35,37,42);
}

.canvas-header-title{
  line-height: 1.2;
  min-width: 220px;
}

.canvas-site{
  font-size: 1.05rem;
}

.canvas-subtitle{
  font-size: 0.9rem;
  opacity: 0.85;
  margin-top: 0.15rem;
}

.canvas-header-controls{
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.5rem;
  flex-wrap: wrap;
}

/* Mobile: stack title above controls */
@media (max-width: 600px){
  .canvas-header{
    padding: 0.5rem;
  }
  .canvas-header-inner{
    grid-template-columns: 1fr;
    padding: 0.75rem;
  }
  .canvas-header-controls{
    justify-content: flex-start;
  }
  .canvas-header-controls select{
    width: 100%;
    max-width: 320px;
  }
}

/* Screen-reader only helper */
.sr-only{
  position:absolute !important;
  width:1px; height:1px;
  padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0);
  white-space:nowrap; border:0;
}

/* MAIN WRAPPER */
.canvas-main {
  flex: 1;
  padding: 0.75rem; /* matches header padding so edges line up */
  background: var(--card-day);
}
body.canvas-night .canvas-main {
  background: var(--card-night);
}

/* Backwards-compatible alias (in case anything still references it) */
.canvas-inner {
  width: 100%;
  max-width: 1400px;
  margin: 0 auto;
}

/* RESPONSIVE GRID */
.canvas-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 0.75rem;
  align-items: stretch;
}

/* CARD */
.canvas-card {
  background: var(--card-day);
  border-radius: 0;
  padding: 0.6rem 0.6rem 0.8rem;
  box-shadow: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  transition: all 0.3s ease;
  will-change: transform, box-shadow;
}
body.canvas-night .canvas-card {
  background: var(--card-night);
  box-shadow: none;
}

.canvas-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

body.canvas-night .canvas-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.8);
  transform: translateY(-2px);
}

.canvas-label {
  margin-bottom: 0.2rem;
  font-size: 0.8rem;
  opacity: 0.8;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  text-align: center;
}

/* GAUGE CONTAINER */
.gauge-shell {
  position: relative;
  width: 100%;
  max-width: 280px;
  aspect-ratio: 1 / 1;
  margin: 0 auto;
  overflow: visible !important;
}

/* GAUGE CANVAS */
.gauge-inner {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 230px;
  height: 230px;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1;
}

.gauge-inner canvas {
  display: block;
  width: 100% !important;
  height: 100% !important;
  max-width: 230px;
  max-height: 230px;
  transform: translateZ(0);
  -webkit-transform: translateZ(0);
  -webkit-text-size-adjust: 100%;
  will-change: transform;
  contain: strict;
}

/* SVG BEZEL RING */
.gauge-bezel-svg {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 280px;
  height: 280px;
  display: block;
  pointer-events: none;
  z-index: 2;
  overflow: visible !important;
}

.gauge-bezel-svg circle[data-role='outer-ring'] {
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1));
}

body.canvas-night .gauge-bezel-svg circle[data-role='outer-ring'] {
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
}

/* FOOTER */
.canvas-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.75rem 1rem;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
  background: linear-gradient(
    to top,
    rgba(255,255,255,0.95),
    rgba(255,255,255,0.85)
  );
  backdrop-filter: blur(4px);
  font-size: 0.8rem;
  color: #666;
}

body.canvas-night .canvas-footer {
  background: linear-gradient(
    to top,
    rgba(12,13,16,0.96),
    rgba(17,18,22,0.94)
  );
  border-top-color: rgba(255,255,255,0.1);
  color: #aaa;
}

#last-updated {
  font-size: 0.8rem;
  opacity: 0.8;
}

#connection-status {
  font-size: 0.75rem;
  padding: 2px 6px;
  border-radius: 3px;
  background: #4CAF50;
  color: white;
}

body.canvas-night #connection-status {
  background: #388E3C;
}

/* LOADING STATE */
.canvas-card.loading {
  position: relative;
  min-height: 300px;
}

.canvas-card.loading::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 40px;
  height: 40px;
  border: 3px solid #f3f3f3;
  border-top: 3px solid var(--accent-day);
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

body.canvas-night .canvas-card.loading::after {
  border-color: #2a2d36;
  border-top-color: var(--accent-night);
}

@keyframes spin {
  0% { transform: translate(-50%, -50%) rotate(0deg); }
  100% { transform: translate(-50%, -50%) rotate(360deg); }
}

/* RESPONSIVE BREAKPOINTS */
@media (max-width: 480px) {
  .canvas-grid {
    grid-template-columns: 1fr;
    gap: 0.5rem;
  }
  
  .canvas-card {
    padding: 0.5rem;
  }
  
  .gauge-shell {
    max-width: 240px;
  }
  
  .gauge-bezel-svg {
    width: 240px;
    height: 240px;
  }
  
  .gauge-inner {
    width: 200px;
    height: 200px;
  }
  
  .gauge-inner canvas {
    max-width: 200px;
    max-height: 200px;
  }
}

@media (max-width: 600px) {
  .canvas-header {
    flex-direction: column;
    align-items: flex-start;
  }
  
  .canvas-header-controls {
    justify-content: flex-start;
  }
  
  .canvas-grid {
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  }
  
  .gauge-shell {
    max-width: 260px;
  }
  
  .gauge-bezel-svg {
    width: 260px;
    height: 260px;
  }
}

@media (min-width: 601px) and (max-width: 900px) {
  .canvas-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1200px) {
  .canvas-grid {
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  }
  
  .gauge-shell {
    max-width: 300px;
  }
  
  .gauge-bezel-svg {
    width: 300px;
    height: 300px;
  }
}

/* PRINT STYLES */
@media print {
  .canvas-header-controls,
  .canvas-footer {
    display: none !important;
  }
  
  #canvas-gauges-page {
    background: white !important;
    color: black !important;
  }
  
  .canvas-card {
    background: white !important;
    border: 1px solid #ccc !important;
    box-shadow: none !important;
    break-inside: avoid;
  }
  
  .canvas-grid {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 10px !important;
  }
  
  .gauge-inner canvas {
    filter: contrast(1.2) !important;
  }
}

/* HIGH CONTRAST MODE */
@media (prefers-contrast: high) {
  :root {
    --bg-day: #ffffff;
    --bg-night: #000000;
    --card-day: #ffffff;
    --card-night: #000000;
    --ink-day: #000000;
    --ink-night: #ffffff;
  }
  
  .canvas-card {
    border: 2px solid #000;
  }
  
  body.canvas-night .canvas-card {
    border: 2px solid #fff;
  }
}

/* SYSTEM DARK MODE PREFERENCE */
@media (prefers-color-scheme: dark) {
  body:not(.canvas-day) #canvas-gauges-page {
    background: var(--bg-night);
    color: var(--ink-night);
  }
  
  body:not(.canvas-day) .canvas-header {
    background: linear-gradient(
      to bottom,
      rgba(12,13,16,0.96),
      rgba(17,18,22,0.94)
    );
    border-bottom-color: rgba(255,255,255,0.1);
  }
}