:root {
  color-scheme: light dark;
  --canvas-background: #f5f4ef;
  --control-color: #1a1b19;
  --control-background: rgb(245 244 239 / 78%);
  --control-border: rgb(26 27 25 / 14%);
}

:root[data-theme="light"] {
  color-scheme: light;
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --canvas-background: #151715;
  --control-color: #f2f0e8;
  --control-background: rgb(21 23 21 / 78%);
  --control-border: rgb(242 240 232 / 18%);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    --canvas-background: #151715;
    --control-color: #f2f0e8;
    --control-background: rgb(21 23 21 / 78%);
    --control-border: rgb(242 240 232 / 18%);
  }
}

* {
  box-sizing: border-box;
}

html,
body {
  width: 100%;
  min-height: 100%;
  margin: 0;
}

body {
  background: var(--canvas-background);
  font-family: "Segoe UI", sans-serif;
}

.clock-app {
  position: relative;
  display: grid;
  width: 100%;
  /* Keep the clock stable while iOS settles the PWA viewport at launch. */
  min-height: 100svh;
  overflow: hidden;
  place-items: center;
}

:root.is-loading .clock-app {
  visibility: hidden;
}

#clock {
  display: block;
  width: min(100vw, 100svh);
  height: min(100vw, 100svh);
  touch-action: none;
}

.controls {
  position: fixed;
  top: max(1rem, env(safe-area-inset-top));
  right: max(1rem, env(safe-area-inset-right));
  display: flex;
  gap: 0.5rem;
  opacity: 0;
  pointer-events: none;
  transform: translateY(-0.4rem);
  transition: opacity 180ms ease, transform 180ms ease;
}

.controls.is-visible,
.controls:focus-within,
.controls:hover {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}

.icon-button {
  display: grid;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  color: var(--control-color);
  cursor: pointer;
  background: var(--control-background);
  border: 1px solid var(--control-border);
  border-radius: 50%;
  place-items: center;
  -webkit-tap-highlight-color: transparent;
}

.icon-button[hidden] {
  display: none;
}

.icon-button:focus-visible {
  outline: 3px solid #e2231a;
  outline-offset: 3px;
}

.icon-button svg {
  width: 1.2rem;
  height: 1.2rem;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.theme-icon {
  display: none;
}

.theme-icon-auto .auto-fill {
  fill: currentColor;
  stroke: none;
}

:root[data-theme="light"] .theme-icon-light,
:root[data-theme="dark"] .theme-icon-dark,
:root:not([data-theme]) .theme-icon-auto {
  display: block;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

@media (prefers-reduced-motion: reduce) {
  .controls {
    transition: none;
  }
}
