/* ============================================================
   M/Y Netto II — JARVIS MODE
   Activated by `[data-theme="jarvis"]` on <html>.
   Classic mode = attribute absent, this file is dormant.
   Accent: data-accent="cyan" (default) | "amber" | "crimson"
   Density: data-density="comfortable" (default) | "compact"
   ============================================================ */

/* ---- 1. Token overrides ------------------------------------- */
/* Re-map the existing brand tokens so anything that reads them
   inherits the HUD palette automatically. */
html[data-theme="jarvis"] {
  /* Jarvis-native tokens. Accent defaults to cyan; the variant
     blocks below swap these three for amber / crimson. */
  --j-accent:       #5cf0ff;
  --j-accent-soft:  rgba(92, 240, 255, 0.55);
  --j-accent-glow:  rgba(92, 240, 255, 0.18);
  --j-accent-deep:  #1ea0b8;

  --j-bg:        #04070d;
  --j-bg-panel:  #0a1320;
  --j-bg-raised: #0e1a2c;
  --j-line:      rgba(92, 240, 255, 0.22);
  --j-line-soft: rgba(92, 240, 255, 0.10);
  --j-text:      #dff6ff;
  --j-text-soft: #7fa8b8;
  --j-text-mute: #5a7a8a;
  --j-warn:      #ffb84d;
  --j-danger:    #ff4d6d;
  --j-ok:        #57e3a0;

  /* Map brand tokens onto Jarvis equivalents. */
  --navy-900: var(--j-bg);
  --navy-800: var(--j-bg-panel);
  --navy-700: var(--j-bg-raised);
  --navy-600: #16273f;
  --navy-100: var(--j-text);

  --red-500: var(--j-accent);
  --red-600: var(--j-accent-deep);
  --red-700: #126b7d;
  --red-100: var(--j-accent-glow);

  --cream:      var(--j-bg-panel);
  --cream-dark: var(--j-bg-raised);
  --ink:        var(--j-text);
  --ink-soft:   var(--j-text-soft);
  --ink-muted:  var(--j-text-mute);
  --line:       var(--j-line);

  --danger:  var(--j-danger);
  --warn:    var(--j-warn);
  --success: var(--j-ok);

  --hairline:        var(--j-line-soft);
  --hairline-strong: var(--j-line);
  --shadow-sm:   0 1px 0 rgba(92,240,255,0.08);
  --shadow-md:   0 0 0 1px var(--j-line), 0 0 12px rgba(92,240,255,0.06);
  --shadow-lg:   0 0 0 1px var(--j-line), 0 0 28px rgba(92,240,255,0.10);
  --shadow-card: 0 0 0 1px var(--j-line-soft),
                 0 1px 0 rgba(92,240,255,0.05),
                 inset 0 1px 0 rgba(92,240,255,0.04);
  --shadow-card-hover: 0 0 0 1px var(--j-accent-soft),
                       0 0 18px rgba(92,240,255,0.10);
  --shadow-pop:   0 0 0 1px var(--j-line), 0 12px 32px rgba(0,0,0,0.55);
  --shadow-modal: 0 0 0 1px var(--j-accent-soft), 0 24px 64px rgba(0,0,0,0.7);

  --radius:    3px;
  --radius-lg: 6px;

  --display: 'Rajdhani', 'Orbitron', 'Helvetica Neue', Helvetica, Arial, sans-serif;

  color-scheme: dark;
}

/* Accent variants */
html[data-theme="jarvis"][data-accent="amber"] {
  --j-accent:      #ffb84d;
  --j-accent-soft: rgba(255, 184, 77, 0.55);
  --j-accent-glow: rgba(255, 184, 77, 0.18);
  --j-accent-deep: #b87a18;
  --j-text:        #fff1d9;
  --j-text-soft:   #b8a07a;
  --j-line:        rgba(255, 184, 77, 0.22);
  --j-line-soft:   rgba(255, 184, 77, 0.10);
  --red-100:       var(--j-accent-glow);
}
html[data-theme="jarvis"][data-accent="crimson"] {
  --j-accent:      #ff4d6d;
  --j-accent-soft: rgba(255, 77, 109, 0.55);
  --j-accent-glow: rgba(255, 77, 109, 0.18);
  --j-accent-deep: #9b1e36;
  --j-text:        #ffdfe6;
  --j-text-soft:   #b8788a;
  --j-line:        rgba(255, 77, 109, 0.22);
  --j-line-soft:   rgba(255, 77, 109, 0.10);
  --red-100:       var(--j-accent-glow);
}

/* ---- 2. Page chrome ----------------------------------------- */
html[data-theme="jarvis"],
html[data-theme="jarvis"] body {
  background-color: var(--j-bg) !important;
  background-image: none !important;
  color: var(--j-text);
}
html[data-theme="jarvis"] body {
  /* Layered grid + radial vignette. Two grids (24px fine, 96px
     bold) provide HUD-style depth without pulling focus. */
  background-image:
    radial-gradient(ellipse at 50% -10%, rgba(92,240,255,0.10), rgba(92,240,255,0) 55%),
    radial-gradient(ellipse at 50% 110%, rgba(92,240,255,0.08), rgba(92,240,255,0) 55%),
    linear-gradient(rgba(92,240,255,0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(92,240,255,0.04) 1px, transparent 1px),
    linear-gradient(rgba(92,240,255,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(92,240,255,0.025) 1px, transparent 1px),
    linear-gradient(180deg, #04070d 0%, #06101c 60%, #04070d 100%) !important;
  background-size:
    100% 100%,
    100% 100%,
    96px 96px,
    96px 96px,
    24px 24px,
    24px 24px,
    100% 100% !important;
  background-attachment: fixed !important;
  background-color: var(--j-bg) !important;
}

/* Public sign-in shell — replaces the dolphin gradient with the
   HUD canvas so the sign-in screen reads as Jarvis too. */
html[data-theme="jarvis"] .public-shell {
  background:
    radial-gradient(ellipse at 50% -10%, rgba(92,240,255,0.10), rgba(92,240,255,0) 55%),
    radial-gradient(ellipse at 50% 110%, rgba(92,240,255,0.08), rgba(92,240,255,0) 55%),
    linear-gradient(180deg, #04070d 0%, #06101c 60%, #04070d 100%) !important;
  color: var(--j-text);
}
html[data-theme="jarvis"] .public-card {
  background: linear-gradient(180deg, var(--j-bg-panel) 0%, var(--j-bg-raised) 100%) !important;
  border: 1px solid var(--j-line) !important;
  box-shadow:
    0 0 0 1px var(--j-line-soft),
    0 0 32px rgba(92,240,255,0.10),
    0 24px 64px rgba(0,0,0,0.6) !important;
  color: var(--j-text);
  backdrop-filter: none;
}
html[data-theme="jarvis"] .public-card h1,
html[data-theme="jarvis"] .public-card h2 { color: var(--j-text); }
html[data-theme="jarvis"] .public-brand { color: var(--j-text); }
/* Wordmark (PNG) is brand navy; invert + brighten on Jarvis so it
   reads on the dark canvas without affecting the Classic palette. */
html[data-theme="jarvis"] .brand-wordmark,
html[data-theme="jarvis"] .public-card img[src*="wordmark"] {
  filter: brightness(0) invert(1) opacity(0.92);
}
html[data-theme="jarvis"] body::before {
  /* One-time horizontal scan on first paint. JS removes the
     class after it plays; reduced-motion skips it entirely. */
  content: "";
  position: fixed; inset: 0;
  pointer-events: none;
  z-index: 9998;
  background: linear-gradient(180deg,
    transparent 0%, transparent 48%,
    rgba(92,240,255,0.18) 49.5%,
    rgba(92,240,255,0.45) 50%,
    rgba(92,240,255,0.18) 50.5%,
    transparent 52%, transparent 100%);
  opacity: 0;
  transform: translateY(-100%);
}
html[data-theme="jarvis"].jarvis-booting body::before {
  animation: jarvisBoot 750ms cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
}
@keyframes jarvisBoot {
  0%   { opacity: 0; transform: translateY(-100%); }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { opacity: 0; transform: translateY(100%); }
}

/* ---- 3. Surfaces -------------------------------------------- */
html[data-theme="jarvis"] .card,
html[data-theme="jarvis"] .panel,
html[data-theme="jarvis"] .modal-card,
html[data-theme="jarvis"] .profile-section,
html[data-theme="jarvis"] .profile-photo-card,
html[data-theme="jarvis"] .marsec-pill,
html[data-theme="jarvis"] .dashboard-card,
html[data-theme="jarvis"] .hub-card,
html[data-theme="jarvis"] .modal,
html[data-theme="jarvis"] section[class*="card"] {
  background: linear-gradient(180deg, var(--j-bg-panel) 0%, var(--j-bg-raised) 100%) !important;
  border: 1px solid var(--j-line) !important;
  box-shadow:
    0 0 0 1px var(--j-line-soft),
    inset 0 1px 0 rgba(92,240,255,0.05),
    0 4px 18px rgba(0,0,0,0.45) !important;
  color: var(--j-text);
  position: relative;
}

/* Chamfered corners on primary cards (skip modal-card so dialogs
   stay rectangular and don't get clipped by overflow:auto). */
html[data-theme="jarvis"] .card,
html[data-theme="jarvis"] .panel,
html[data-theme="jarvis"] .profile-section,
html[data-theme="jarvis"] .marsec-pill,
html[data-theme="jarvis"] .dashboard-card,
html[data-theme="jarvis"] .hub-card {
  clip-path: polygon(
    0 12px, 12px 0,
    calc(100% - 12px) 0, 100% 12px,
    100% calc(100% - 12px), calc(100% - 12px) 100%,
    12px 100%, 0 calc(100% - 12px)
  );
}

/* Card heading scanline */
html[data-theme="jarvis"] .card > h2:first-child,
html[data-theme="jarvis"] .card > h3:first-child,
html[data-theme="jarvis"] .panel > h2:first-child,
html[data-theme="jarvis"] .panel > h3:first-child,
html[data-theme="jarvis"] .profile-section-head h3,
html[data-theme="jarvis"] .dashboard-card > h2:first-child,
html[data-theme="jarvis"] .dashboard-card > h3:first-child {
  font-family: var(--display);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--j-text);
  position: relative;
}
html[data-theme="jarvis"] .profile-section-head h3::before,
html[data-theme="jarvis"] .card > h2:first-child::before,
html[data-theme="jarvis"] .card > h3:first-child::before,
html[data-theme="jarvis"] .dashboard-card > h2:first-child::before,
html[data-theme="jarvis"] .dashboard-card > h3:first-child::before {
  content: "";
  display: inline-block;
  width: 6px; height: 6px;
  background: var(--j-accent);
  box-shadow: 0 0 8px var(--j-accent);
  border-radius: 50%;
  margin-right: 10px;
  transform: translateY(-2px);
}

html[data-theme="jarvis"] .profile-section.open {
  border-color: var(--j-accent-soft) !important;
  box-shadow:
    0 0 0 1px var(--j-accent-soft),
    0 0 18px rgba(92,240,255,0.12),
    0 4px 18px rgba(0,0,0,0.45) !important;
}

/* ---- 4. Typography ------------------------------------------ */
html[data-theme="jarvis"] h1,
html[data-theme="jarvis"] h2,
html[data-theme="jarvis"] h3 {
  font-family: var(--display);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--j-text);
}
html[data-theme="jarvis"] {
  font-variant-numeric: tabular-nums;
}
html[data-theme="jarvis"] body {
  font-family: var(--sans);
  color: var(--j-text);
}

/* ---- 5. Buttons --------------------------------------------- */
html[data-theme="jarvis"] .btn {
  background: rgba(92, 240, 255, 0.04);
  border: 1px solid var(--j-line);
  color: var(--j-text);
  border-radius: 3px;
  letter-spacing: 0.04em;
  transition: background 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
  position: relative;
  overflow: hidden;
}
html[data-theme="jarvis"] .btn:hover {
  background: rgba(92, 240, 255, 0.08);
  border-color: var(--j-accent-soft);
  box-shadow: 0 0 14px rgba(92, 240, 255, 0.18);
}
html[data-theme="jarvis"] .btn:focus-visible {
  outline: none;
  border-color: var(--j-accent);
  box-shadow: 0 0 0 3px rgba(92, 240, 255, 0.25);
}
html[data-theme="jarvis"] .btn-primary {
  background: linear-gradient(180deg, var(--j-accent), var(--j-accent-deep));
  border-color: var(--j-accent);
  color: #04161c;
  font-weight: 600;
  box-shadow: 0 0 18px var(--j-accent-glow), inset 0 1px 0 rgba(255,255,255,0.18);
}
html[data-theme="jarvis"] .btn-primary:hover {
  background: linear-gradient(180deg, #ffffff, var(--j-accent));
  color: #021116;
}
html[data-theme="jarvis"] .btn-ghost {
  background: transparent;
  color: var(--j-text-soft);
  border: 1px dashed var(--j-line);
}
html[data-theme="jarvis"] .btn-ghost:hover {
  color: var(--j-text);
  border-color: var(--j-accent-soft);
  background: rgba(92,240,255,0.04);
}
html[data-theme="jarvis"] .btn-secondary {
  background: var(--j-bg-raised);
  border-color: var(--j-line);
  color: var(--j-text);
}
html[data-theme="jarvis"] .btn-secondary:hover {
  background: var(--j-bg-panel);
  border-color: var(--j-accent-soft);
}
html[data-theme="jarvis"] .btn-link {
  color: var(--j-accent);
}
html[data-theme="jarvis"] .btn-link:hover { color: var(--j-text); }

html[data-theme="jarvis"] a { color: var(--j-accent); }
html[data-theme="jarvis"] a:hover { color: var(--j-text); }

/* ---- 6. Forms ----------------------------------------------- */
html[data-theme="jarvis"] input[type="text"],
html[data-theme="jarvis"] input[type="email"],
html[data-theme="jarvis"] input[type="tel"],
html[data-theme="jarvis"] input[type="date"],
html[data-theme="jarvis"] input[type="number"],
html[data-theme="jarvis"] input[type="password"],
html[data-theme="jarvis"] input[type="search"],
html[data-theme="jarvis"] select,
html[data-theme="jarvis"] textarea {
  background: rgba(4,7,13,0.6);
  border: 1px solid var(--j-line);
  color: var(--j-text);
  border-radius: 3px;
  transition: border-color 160ms ease, box-shadow 160ms ease;
  color-scheme: dark;
}
html[data-theme="jarvis"] input::placeholder,
html[data-theme="jarvis"] textarea::placeholder {
  color: var(--j-text-mute);
}
html[data-theme="jarvis"] input:focus,
html[data-theme="jarvis"] select:focus,
html[data-theme="jarvis"] textarea:focus {
  outline: none;
  border-color: var(--j-accent);
  box-shadow: 0 0 0 3px rgba(92, 240, 255, 0.18), inset 0 -2px 0 var(--j-accent);
}
html[data-theme="jarvis"] label.field > span,
html[data-theme="jarvis"] .field > span {
  color: var(--j-text-soft);
  font-family: var(--display);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: 11px;
}

/* ---- 7. Nav + header chrome --------------------------------- */
html[data-theme="jarvis"] .topbar,
html[data-theme="jarvis"] .appbar,
html[data-theme="jarvis"] .nav,
html[data-theme="jarvis"] nav,
html[data-theme="jarvis"] header {
  background: linear-gradient(180deg, rgba(10,19,32,0.95), rgba(4,7,13,0.95)) !important;
  border-color: var(--j-line) !important;
  color: var(--j-text);
  backdrop-filter: blur(8px);
}
html[data-theme="jarvis"] .mn-link,
html[data-theme="jarvis"] nav a {
  color: var(--j-text-soft);
}
html[data-theme="jarvis"] .mn-link:hover,
html[data-theme="jarvis"] nav a:hover,
html[data-theme="jarvis"] .mn-link.is-active {
  color: var(--j-accent);
  text-shadow: 0 0 8px var(--j-accent-glow);
}

/* ---- 8. Toast / banners ------------------------------------- */
html[data-theme="jarvis"] .toast {
  background: rgba(10,19,32,0.95) !important;
  color: var(--j-text) !important;
  border: 1px solid var(--j-accent-soft);
  box-shadow: 0 0 24px rgba(92,240,255,0.20), 0 8px 24px rgba(0,0,0,0.6);
  border-radius: 3px;
  font-family: var(--display);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
html[data-theme="jarvis"] .toast.error {
  border-color: var(--j-danger);
  box-shadow: 0 0 24px rgba(255,77,109,0.25), 0 8px 24px rgba(0,0,0,0.6);
}

/* ---- 9. MARSEC card ----------------------------------------- */
html[data-theme="jarvis"] .marsec-pill {
  position: relative;
  overflow: hidden;
}
html[data-theme="jarvis"] .marsec-pill-badge {
  position: relative;
  z-index: 1;
  background: rgba(4,7,13,0.6) !important;
  color: var(--j-accent) !important;
  border: 1px solid var(--j-accent-soft);
  box-shadow: 0 0 22px var(--j-accent-glow), inset 0 0 18px rgba(92,240,255,0.08);
  text-shadow: 0 0 12px var(--j-accent-glow);
  font-family: var(--display);
}
html[data-theme="jarvis"] .marsec-pill::after {
  /* Slow rotating hex ring behind the level number. */
  content: "";
  position: absolute;
  width: 140px; height: 140px;
  left: 16px; top: 50%;
  transform: translateY(-50%);
  background-image:
    repeating-conic-gradient(from 0deg,
      var(--j-accent-soft) 0 1deg,
      transparent 1deg 60deg);
  -webkit-mask: radial-gradient(circle, transparent 52px, black 53px, black 64px, transparent 65px);
          mask: radial-gradient(circle, transparent 52px, black 53px, black 64px, transparent 65px);
  opacity: 0.55;
  pointer-events: none;
  animation: jarvisRing 14s linear infinite;
}
@keyframes jarvisRing {
  to { transform: translateY(-50%) rotate(360deg); }
}

/* ---- 10. Density: compact ----------------------------------- */
html[data-theme="jarvis"][data-density="compact"] .profile-section-body { padding-top: 8px; padding-bottom: 8px; }
html[data-theme="jarvis"][data-density="compact"] .field { margin-bottom: 8px; }
html[data-theme="jarvis"][data-density="compact"] .btn { padding-top: 6px; padding-bottom: 6px; }
html[data-theme="jarvis"][data-density="compact"] .card,
html[data-theme="jarvis"][data-density="compact"] .panel,
html[data-theme="jarvis"][data-density="compact"] .dashboard-card {
  padding: 12px !important;
}

/* ---- 11. Appearance section (the toggle UI itself) ---------- */
.appearance-grid {
  display: grid;
  gap: 18px;
}
.appearance-row {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.appearance-row > .ar-label {
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.appearance-row > .ar-hint {
  font-size: 11px;
  color: var(--ink-muted);
}
.appearance-segmented {
  display: inline-flex;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 3px;
  background: var(--cream);
  width: max-content;
  gap: 2px;
}
.appearance-segmented button {
  appearance: none;
  background: transparent;
  border: 0;
  padding: 8px 18px;
  border-radius: 999px;
  font-size: 13px;
  color: var(--ink-soft);
  cursor: pointer;
  font-family: var(--sans);
  transition: background 160ms ease, color 160ms ease;
}
.appearance-segmented button.is-on {
  background: var(--navy-800);
  color: #fff;
}
html[data-theme="jarvis"] .appearance-segmented {
  background: rgba(4,7,13,0.6);
  border-color: var(--j-line);
}
html[data-theme="jarvis"] .appearance-segmented button {
  color: var(--j-text-soft);
  font-family: var(--display);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
html[data-theme="jarvis"] .appearance-segmented button.is-on {
  background: var(--j-accent-deep);
  color: #021116;
  box-shadow: 0 0 14px var(--j-accent-glow);
}

.appearance-accents { display: inline-flex; gap: 10px; }
.appearance-accent {
  width: 30px; height: 30px;
  border-radius: 50%;
  border: 2px solid transparent;
  cursor: pointer;
  position: relative;
  background: var(--swatch);
  box-shadow: 0 0 0 1px var(--line);
}
.appearance-accent.is-on {
  border-color: var(--swatch);
  box-shadow: 0 0 0 2px var(--swatch), 0 0 14px var(--swatch);
}
.appearance-accent[data-accent="cyan"]    { --swatch: #5cf0ff; }
.appearance-accent[data-accent="amber"]   { --swatch: #ffb84d; }
.appearance-accent[data-accent="crimson"] { --swatch: #ff4d6d; }

.appearance-preview {
  margin-top: 6px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 6px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  background: var(--cream);
  position: relative;
  overflow: hidden;
}
.appearance-preview .ap-tile {
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 4px;
  padding: 12px;
  color: var(--ink);
  font-size: 12px;
}
.appearance-preview .ap-tile h4 {
  margin: 0 0 6px;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.appearance-preview .ap-num {
  font-size: 28px;
  font-weight: 700;
  color: var(--navy-800);
}
.appearance-preview.is-jarvis {
  background:
    radial-gradient(ellipse at 50% 0%, rgba(92,240,255,0.10), transparent 60%),
    #04070d;
  border-color: var(--j-line, rgba(92,240,255,0.22));
}
.appearance-preview.is-jarvis .ap-tile {
  background: linear-gradient(180deg, #0a1320, #0e1a2c);
  border-color: var(--j-line, rgba(92,240,255,0.22));
  color: #dff6ff;
  clip-path: polygon(
    0 8px, 8px 0,
    calc(100% - 8px) 0, 100% 8px,
    100% calc(100% - 8px), calc(100% - 8px) 100%,
    8px 100%, 0 calc(100% - 8px)
  );
}
.appearance-preview.is-jarvis .ap-tile h4 {
  color: var(--j-accent, #5cf0ff);
  font-family: 'Rajdhani', 'Orbitron', sans-serif;
}
.appearance-preview.is-jarvis .ap-num {
  color: var(--j-accent, #5cf0ff);
  text-shadow: 0 0 10px var(--j-accent-glow, rgba(92,240,255,0.4));
  font-family: 'Rajdhani', 'Orbitron', sans-serif;
}

/* ---- 12. Reduced motion gating ------------------------------- */
@media (prefers-reduced-motion: reduce) {
  html[data-theme="jarvis"] body::before { display: none !important; animation: none !important; }
  html[data-theme="jarvis"] .marsec-pill::after { animation: none !important; }
  html[data-theme="jarvis"] .btn { transition: none !important; }
}
html[data-theme="jarvis"][data-reduce-motion="1"] body::before { display: none !important; animation: none !important; }
html[data-theme="jarvis"][data-reduce-motion="1"] .marsec-pill::after { animation: none !important; }
html[data-theme="jarvis"][data-reduce-motion="1"] .btn { transition: none !important; }

/* ---- 13. Mobile / perf fallback ----------------------------- */
@media (max-width: 480px) {
  html[data-theme="jarvis"] .topbar,
  html[data-theme="jarvis"] .appbar,
  html[data-theme="jarvis"] header { backdrop-filter: none; }
  html[data-theme="jarvis"] .marsec-pill::after { width: 110px; height: 110px; }
}
