/* ============================================================
   PIXEL DESIGN SYSTEM — kid-facing only
   Fonts:  Press Start 2P (latin/digit) + Fusion Pixel 12px SC (CJK)
   Style:  hard borders, zero radius, offset shadows, stepped motion
   Scope:  body:not(.admin-mode) — admin overrides via admin.css
   ============================================================ */

/* ---- Fonts ------------------------------------------------- */
@font-face {
  font-family: "Press Start 2P";
  src: url("../fonts/press-start-2p.woff2") format("woff2");
  font-display: swap;
  font-weight: 400;
  font-style: normal;
}

@font-face {
  font-family: "Fusion Pixel";
  src: url("../fonts/fusion-pixel-12px.woff2") format("woff2");
  font-display: swap;
  font-weight: 400;
  font-style: normal;
}

/* ---- Tokens ------------------------------------------------- */
:root {
  /* base palette */
  --ink:        #1a1f3a;
  --ink-soft:   #2d3358;
  --ink-muted:  #8b7e6b;
  --paper:      #f4ecd6;
  --paper-2:    #ebe1c4;
  --paper-3:    #ddd0a8;
  --paper-deep: #c9b98a;

  /* accents */
  --accent-pink:    #ff3d8b;
  --accent-pink-d:  #c92968;
  --accent-yellow:  #ffc83d;
  --accent-yellow-d:#d99e1c;
  --accent-grass:   #7bc950;
  --accent-grass-d: #4f9930;
  --accent-water:   #4da6ff;
  --accent-water-d: #2a78c7;
  --accent-fire:    #ff5d3d;
  --accent-fire-d:  #c43820;
  --accent-violet:  #b366ff;
  --accent-violet-d:#7a3dcc;
  --danger:         #e84545;
  --danger-d:       #a82020;

  /* semantic */
  --bg:        var(--paper);
  --fg:        var(--ink);
  --muted:     var(--ink-muted);
  --primary:   var(--accent-pink);
  --primary-d: var(--accent-pink-d);

  /* type */
  --font-pixel-en: "Press Start 2P", "Courier New", monospace;
  --font-pixel-cn: "Fusion Pixel", "Press Start 2P", "Courier New", monospace;
  --font-mono-num: "Press Start 2P", "Courier New", monospace;

  /* sizes (multiples of 2) */
  --fs-xs: 10px;
  --fs-sm: 12px;
  --fs-md: 14px;
  --fs-lg: 18px;
  --fs-xl: 24px;
  --fs-2xl: 32px;
  --fs-3xl: 48px;

  /* spacing (8px grid) */
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 24px;
  --sp-6: 32px;
  --sp-7: 48px;
  --sp-8: 64px;

  /* shadow steps */
  --shadow-sm: 2px 2px 0 var(--ink);
  --shadow-md: 3px 3px 0 var(--ink);
  --shadow-lg: 5px 5px 0 var(--ink);
  --shadow-xl: 7px 7px 0 var(--ink);
}

/* ---- Global reset (kid-facing only) ------------------------ */
body:not(.admin-mode) {
  margin: 0;
  font-family: var(--font-pixel-cn);
  font-size: var(--fs-md);
  line-height: 1.6;
  color: var(--fg);
  background-color: var(--paper);
  background-image:
    radial-gradient(circle, var(--ink) 1px, transparent 1px),
    radial-gradient(circle, var(--ink) 1px, transparent 1px);
  background-size: 16px 16px, 16px 16px;
  background-position: 0 0, 8px 8px;
  background-attachment: fixed;
  background-blend-mode: normal;
  /* dot pattern at low opacity via overlay technique below */
  position: relative;
  -webkit-font-smoothing: none;
  -moz-osx-font-smoothing: grayscale;
  font-smooth: never;
  text-rendering: optimizeSpeed;
  image-rendering: pixelated;
}
body:not(.admin-mode)::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  background: var(--paper);
  opacity: 0.96;
  z-index: -1;
}

body:not(.admin-mode) * {
  box-sizing: border-box;
  image-rendering: pixelated;
}

body:not(.admin-mode) img,
body:not(.admin-mode) svg {
  image-rendering: pixelated;
  image-rendering: -moz-crisp-edges;
  image-rendering: crisp-edges;
}

body:not(.admin-mode) h1,
body:not(.admin-mode) h2,
body:not(.admin-mode) h3,
body:not(.admin-mode) h4 {
  font-family: var(--font-pixel-cn);
  font-weight: 400;
  letter-spacing: 0.02em;
  margin: 0 0 var(--sp-3) 0;
  line-height: 1.3;
}
body:not(.admin-mode) h1 { font-size: var(--fs-2xl); }
body:not(.admin-mode) h2 { font-size: var(--fs-xl); }
body:not(.admin-mode) h3 { font-size: var(--fs-lg); }

body:not(.admin-mode) a {
  color: var(--accent-water-d);
  text-decoration: none;
  border-bottom: 2px solid currentColor;
  padding-bottom: 1px;
}
body:not(.admin-mode) a:hover { color: var(--accent-pink); }

/* numbers: always pixel-mono */
body:not(.admin-mode) .num,
body:not(.admin-mode) time,
body:not(.admin-mode) .px-num {
  font-family: var(--font-mono-num);
  font-feature-settings: "tnum";
  letter-spacing: 0.05em;
}

/* ---- Background pattern variants ------------------------- */
.px-bg-grid {
  background-image:
    linear-gradient(to right, rgba(26, 31, 58, 0.06) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(26, 31, 58, 0.06) 1px, transparent 1px);
  background-size: 16px 16px;
}

.px-bg-dots {
  background-image: radial-gradient(circle, var(--ink) 1px, transparent 1.5px);
  background-size: 12px 12px;
  background-color: var(--paper);
}

.px-bg-checker {
  background-image:
    linear-gradient(45deg, rgba(26, 31, 58, 0.04) 25%, transparent 25%),
    linear-gradient(-45deg, rgba(26, 31, 58, 0.04) 25%, transparent 25%),
    linear-gradient(45deg, transparent 75%, rgba(26, 31, 58, 0.04) 75%),
    linear-gradient(-45deg, transparent 75%, rgba(26, 31, 58, 0.04) 75%);
  background-size: 16px 16px;
  background-position: 0 0, 0 8px, 8px -8px, -8px 0;
}

.px-bg-stripes-completed {
  background-image: repeating-linear-gradient(
    -45deg,
    var(--accent-grass) 0,
    var(--accent-grass) 4px,
    var(--accent-grass-d) 4px,
    var(--accent-grass-d) 8px
  );
}

/* ============================================================
   PRIMITIVE: button (.px-btn)  — also retunes shared .btn for kid view
   ============================================================ */
body:not(.admin-mode) .btn,
.px-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-2);
  font-family: var(--font-pixel-cn);
  font-size: var(--fs-md);
  font-weight: 400;
  line-height: 1;
  padding: 12px 20px;
  border: 2px solid var(--ink);
  border-radius: 0;
  background: var(--paper);
  color: var(--ink);
  cursor: pointer;
  text-decoration: none;
  box-shadow: var(--shadow-md);
  transition: transform 80ms steps(2), box-shadow 80ms steps(2);
  user-select: none;
  white-space: nowrap;
  letter-spacing: 0.04em;
}
body:not(.admin-mode) .btn:hover,
.px-btn:hover {
  transform: translate(-1px, -1px);
  box-shadow: 4px 4px 0 var(--ink);
}
body:not(.admin-mode) .btn:active,
.px-btn:active {
  transform: translate(3px, 3px);
  box-shadow: 0 0 0 var(--ink);
}
body:not(.admin-mode) .btn:disabled,
.px-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none !important;
  box-shadow: var(--shadow-md) !important;
}

/* button variants */
body:not(.admin-mode) .btn.primary,
.px-btn.px-btn--primary {
  background: var(--accent-pink);
  color: #fff;
  text-shadow: 1px 1px 0 var(--accent-pink-d);
}
body:not(.admin-mode) .btn.secondary,
.px-btn.px-btn--secondary {
  background: var(--paper-2);
  color: var(--ink);
}
.px-btn--accent { background: var(--accent-yellow); color: var(--ink); }
.px-btn--success { background: var(--accent-grass); color: #fff; text-shadow: 1px 1px 0 var(--accent-grass-d); }
.px-btn--water { background: var(--accent-water); color: #fff; text-shadow: 1px 1px 0 var(--accent-water-d); }
.px-btn--danger,
body:not(.admin-mode) .btn.danger {
  background: var(--danger); color: #fff; text-shadow: 1px 1px 0 var(--danger-d);
}
body:not(.admin-mode) .btn.small,
.px-btn--sm {
  padding: 8px 14px;
  font-size: var(--fs-sm);
  box-shadow: var(--shadow-sm);
}
.px-btn--lg {
  padding: 18px 32px;
  font-size: var(--fs-lg);
  box-shadow: var(--shadow-lg);
}

/* ============================================================
   PRIMITIVE: card (.px-card)  — retunes shared .card
   ============================================================ */
body:not(.admin-mode) .card,
.px-card {
  background: var(--paper);
  border: 2px solid var(--ink);
  border-radius: 0;
  box-shadow: var(--shadow-md);
  padding: var(--sp-4);
  position: relative;
}
.px-card--paper-2 { background: var(--paper-2); }
.px-card--inset {
  border-style: dashed;
  border-width: 2px;
  box-shadow: none;
  background: rgba(255,255,255,0.4);
}

/* card with title bar (Game Boy window style) */
.px-card--titled { padding: 0; }
.px-card--titled > .px-card__head {
  background: var(--ink);
  color: var(--paper);
  font-family: var(--font-pixel-en);
  font-size: var(--fs-xs);
  letter-spacing: 0.1em;
  padding: 8px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  text-transform: uppercase;
}
.px-card--titled > .px-card__head::before {
  content: "▮▮▮";
  letter-spacing: 2px;
  color: var(--accent-yellow);
}
.px-card--titled > .px-card__body { padding: var(--sp-4); }

/* ============================================================
   PRIMITIVE: pill (.px-pill)  — retunes shared .pill family
   ============================================================ */
body:not(.admin-mode) .pill,
.px-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-pixel-cn);
  font-size: var(--fs-xs);
  line-height: 1;
  padding: 5px 10px;
  border: 2px solid var(--ink);
  border-radius: 0;
  background: var(--paper);
  color: var(--ink);
  letter-spacing: 0.04em;
}
body:not(.admin-mode) .pill.pill-new,
.px-pill--new { background: var(--accent-yellow); }
body:not(.admin-mode) .pill.pill-sub,
.px-pill--sub { background: var(--accent-water); color: #fff; }
body:not(.admin-mode) .pill.pill-done,
.px-pill--done { background: var(--accent-grass); color: #fff; }
.px-pill--danger { background: var(--danger); color: #fff; }
.px-pill--violet { background: var(--accent-violet); color: #fff; }

/* ============================================================
   PRIMITIVE: progress bar (.px-progress) — stepped, no smooth
   ============================================================ */
.px-progress {
  position: relative;
  height: 14px;
  background: var(--paper-deep);
  border: 2px solid var(--ink);
  overflow: hidden;
}
.px-progress__fill {
  height: 100%;
  background-color: var(--accent-grass);
  background-image: repeating-linear-gradient(
    90deg,
    transparent 0,
    transparent 6px,
    rgba(255,255,255,0.18) 6px,
    rgba(255,255,255,0.18) 8px
  );
  transition: width 200ms steps(8);
}
.px-progress--lg { height: 20px; }
.px-progress--xl { height: 28px; }
.px-progress--xp .px-progress__fill { background-color: var(--accent-yellow); }
.px-progress--exp .px-progress__fill { background-color: var(--accent-pink); }
.px-progress--hp .px-progress__fill { background-color: var(--accent-grass); }

/* ============================================================
   PRIMITIVE: input (.px-input) — retunes shared .field
   ============================================================ */
body:not(.admin-mode) input[type="text"],
body:not(.admin-mode) input[type="password"],
body:not(.admin-mode) input[type="number"],
body:not(.admin-mode) input[type="email"],
body:not(.admin-mode) textarea,
body:not(.admin-mode) select,
.px-input {
  font-family: var(--font-pixel-cn);
  font-size: var(--fs-md);
  padding: 10px 12px;
  border: 2px solid var(--ink);
  border-radius: 0;
  background: #fff;
  color: var(--ink);
  outline: none;
  width: 100%;
  box-shadow: inset 2px 2px 0 rgba(26,31,58,0.08);
}
body:not(.admin-mode) input:focus,
body:not(.admin-mode) textarea:focus,
body:not(.admin-mode) select:focus,
.px-input:focus {
  background: #fffdf2;
  border-color: var(--accent-pink);
  box-shadow: inset 2px 2px 0 rgba(255,61,139,0.12), 0 0 0 2px var(--accent-pink);
}

/* ============================================================
   PRIMITIVE: grid (.px-grid)
   ============================================================ */
.px-grid {
  display: grid;
  gap: var(--sp-3);
}
.px-grid--2 { grid-template-columns: repeat(2, 1fr); }
.px-grid--3 { grid-template-columns: repeat(3, 1fr); }
.px-grid--4 { grid-template-columns: repeat(4, 1fr); }
.px-grid--auto { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); }

/* ============================================================
   PRIMITIVE: section heading (.px-eyebrow + .px-section-title)
   ============================================================ */
.px-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-pixel-en);
  font-size: var(--fs-xs);
  letter-spacing: 0.18em;
  color: var(--ink-muted);
  text-transform: uppercase;
  margin-bottom: var(--sp-2);
}
.px-eyebrow::before {
  content: "▶";
  color: var(--accent-pink);
  font-size: var(--fs-sm);
}

.px-section-title {
  font-family: var(--font-pixel-cn);
  font-size: var(--fs-xl);
  margin: 0 0 var(--sp-4);
  display: inline-flex;
  align-items: baseline;
  gap: var(--sp-3);
  position: relative;
  padding-bottom: var(--sp-2);
}
.px-section-title::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -2px;
  width: 64px;
  height: 4px;
  background: var(--accent-pink);
  background-image: linear-gradient(
    90deg,
    var(--accent-pink) 0 8px,
    transparent 8px 12px,
    var(--accent-pink) 12px 20px,
    transparent 20px 24px,
    var(--accent-pink) 24px 32px
  );
}

/* ============================================================
   PRIMITIVE: ribbon banner (decorative)
   ============================================================ */
.px-ribbon {
  display: inline-block;
  padding: 6px 14px;
  background: var(--accent-pink);
  color: #fff;
  font-family: var(--font-pixel-cn);
  font-size: var(--fs-sm);
  letter-spacing: 0.1em;
  border: 2px solid var(--ink);
  box-shadow: var(--shadow-sm);
  text-shadow: 1px 1px 0 var(--accent-pink-d);
}

/* ============================================================
   PRIMITIVE: stat cell
   ============================================================ */
.px-stat {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  padding: var(--sp-3);
  background: var(--paper-2);
  border: 2px solid var(--ink);
  box-shadow: var(--shadow-sm);
}
.px-stat__label {
  font-size: var(--fs-xs);
  color: var(--ink-muted);
  letter-spacing: 0.05em;
}
.px-stat__value {
  font-family: var(--font-pixel-en);
  font-size: var(--fs-xl);
  color: var(--ink);
  line-height: 1;
}
.px-stat--pink .px-stat__value { color: var(--accent-pink); }
.px-stat--yellow .px-stat__value { color: var(--accent-yellow-d); }
.px-stat--grass .px-stat__value { color: var(--accent-grass-d); }
.px-stat--water .px-stat__value { color: var(--accent-water-d); }

/* ============================================================
   PRIMITIVE: empty state
   ============================================================ */
body:not(.admin-mode) .empty,
.px-empty {
  text-align: center;
  padding: var(--sp-7) var(--sp-4);
  color: var(--ink-muted);
  font-size: var(--fs-md);
  border: 2px dashed var(--ink-muted);
  background: rgba(255,255,255,0.3);
}

/* ============================================================
   PRIMITIVE: animations
   ============================================================ */
@keyframes px-bob {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-4px); }
}
@keyframes px-blink {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0; }
}
@keyframes px-pop {
  0%   { transform: scale(0.7); opacity: 0; }
  60%  { transform: scale(1.05); opacity: 1; }
  100% { transform: scale(1); opacity: 1; }
}
@keyframes px-wiggle {
  0%,100% { transform: rotate(0); }
  25% { transform: rotate(-2deg); }
  75% { transform: rotate(2deg); }
}
@keyframes px-shimmer {
  0% { background-position: -200px 0; }
  100% { background-position: 200px 0; }
}
.px-bob { animation: px-bob 1s steps(2) infinite; }
.px-blink { animation: px-blink 1s steps(2) infinite; }
.px-pop { animation: px-pop 240ms steps(4) both; }

/* ============================================================
   FLASH MESSAGES (override styles.css versions for kid view)
   ============================================================ */
body:not(.admin-mode) .flash-container {
  max-width: 1200px;
  margin: var(--sp-3) auto 0;
  padding: 0 var(--sp-4);
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
}
body:not(.admin-mode) .flash {
  padding: var(--sp-3) var(--sp-4);
  border: 2px solid var(--ink);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
  font-size: var(--fs-md);
  display: flex;
  align-items: center;
  gap: var(--sp-2);
}
body:not(.admin-mode) .flash::before { content: "✦"; color: var(--accent-pink); }
body:not(.admin-mode) .flash.success { background: var(--accent-grass); color: #fff; text-shadow: 1px 1px 0 var(--accent-grass-d); }
body:not(.admin-mode) .flash.success::before { content: "✓"; color: #fff; }
body:not(.admin-mode) .flash.error { background: var(--danger); color: #fff; text-shadow: 1px 1px 0 var(--danger-d); }
body:not(.admin-mode) .flash.error::before { content: "✕"; color: #fff; }
body:not(.admin-mode) .flash.info { background: var(--accent-water); color: #fff; text-shadow: 1px 1px 0 var(--accent-water-d); }

/* ============================================================
   TOAST (created by app.js)
   ============================================================ */
body:not(.admin-mode) .toast {
  position: fixed;
  bottom: 32px;
  left: 50%;
  transform: translateX(-50%) translateY(20px);
  background: var(--ink);
  color: var(--paper);
  font-family: var(--font-pixel-cn);
  font-size: var(--fs-md);
  padding: 12px 20px;
  border: 2px solid var(--paper);
  box-shadow: 4px 4px 0 var(--accent-pink);
  opacity: 0;
  transition: opacity 200ms steps(4), transform 200ms steps(4);
  z-index: 9999;
  pointer-events: none;
}
body:not(.admin-mode) .toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ============================================================
   MUTED text helper
   ============================================================ */
body:not(.admin-mode) .muted {
  color: var(--ink-muted);
  font-size: var(--fs-sm);
}

/* ============================================================
   FORM helpers (login etc.)
   ============================================================ */
body:not(.admin-mode) .field {
  display: flex;
  flex-direction: column;
  gap: var(--sp-1);
  margin-bottom: var(--sp-3);
}
body:not(.admin-mode) .field label {
  font-size: var(--fs-sm);
  color: var(--ink);
  letter-spacing: 0.04em;
}
body:not(.admin-mode) .field .hint {
  font-size: var(--fs-xs);
  color: var(--ink-muted);
}

/* ============================================================
   Confetti container (kept pointer-none, layered on top)
   ============================================================ */
#confetti-container {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9998;
}

/* ============================================================
   CHROME: site-header / nav / footer (kid view)
   Overrides styles.css .site-header for body:not(.admin-mode)
   ============================================================ */
body:not(.admin-mode) .site-header {
  background: var(--ink);
  background-image:
    linear-gradient(180deg, var(--ink) 0%, var(--ink) 100%),
    repeating-linear-gradient(
      90deg,
      transparent 0 14px,
      rgba(255, 200, 61, 0.04) 14px 16px
    );
  background-blend-mode: normal;
  border-bottom: 4px solid var(--accent-yellow);
  box-shadow: 0 4px 0 var(--ink), 0 8px 0 var(--paper-deep);
  padding: 0;
  margin: 0;
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0;
  position: sticky;
  top: 0;
  z-index: 100;
}

/* brand */
.pix-brand {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-3);
  padding: 12px var(--sp-4);
  text-decoration: none;
  color: var(--paper);
  border: none !important;
  border-right: 2px solid var(--accent-yellow) !important;
  background: var(--ink-soft);
  font-family: var(--font-pixel-cn);
}
.pix-brand:hover { color: var(--accent-yellow); }
.pix-brand__sprite {
  position: relative;
  width: 24px;
  height: 24px;
  background: var(--accent-pink);
  border: 2px solid var(--paper);
  box-shadow: 2px 2px 0 var(--accent-pink-d);
  display: inline-block;
  flex-shrink: 0;
}
.pix-brand__sprite::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--paper);
}
.pix-brand__sprite::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 6px;
  height: 6px;
  background: var(--paper);
  border: 2px solid var(--accent-pink-d);
  transform: translate(-50%, -50%);
}
.pix-brand__sprite-eye {
  position: absolute;
  top: 4px;
  left: 4px;
  width: 4px;
  height: 4px;
  background: var(--paper);
}
.pix-brand__sprite-eye--r { left: auto; right: 4px; }
.pix-brand__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  line-height: 1;
}
.pix-brand__text-en {
  font-family: var(--font-pixel-en);
  font-size: var(--fs-sm);
  letter-spacing: 0.12em;
  color: var(--accent-yellow);
}
.pix-brand__text-cn {
  font-size: var(--fs-xs);
  color: var(--paper);
  letter-spacing: 0.05em;
}

/* nav */
.pix-nav {
  display: flex;
  align-items: stretch;
  flex-wrap: wrap;
  gap: 0;
  flex: 1;
  justify-content: flex-end;
}
.pix-nav__item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0 var(--sp-3);
  height: 100%;
  min-height: 56px;
  font-family: var(--font-pixel-cn);
  font-size: var(--fs-sm);
  color: var(--paper);
  text-decoration: none;
  border: none !important;
  border-left: 2px solid var(--ink) !important;
  background: var(--ink);
  position: relative;
  letter-spacing: 0.05em;
  transition: background 80ms steps(2), color 80ms steps(2);
}
.pix-nav__item .pix-nav__icon {
  font-family: var(--font-pixel-en);
  font-size: var(--fs-md);
  color: var(--accent-yellow);
}
.pix-nav__item:hover {
  background: var(--ink-soft);
  color: var(--accent-yellow);
}
.pix-nav__item:hover .pix-nav__icon { color: var(--paper); }
.pix-nav__item.is-active {
  background: var(--accent-pink);
  color: #fff;
  text-shadow: 1px 1px 0 var(--accent-pink-d);
}
.pix-nav__item.is-active::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -4px;
  width: 100%;
  height: 4px;
  background: var(--accent-yellow);
}
.pix-nav__item.is-active .pix-nav__icon { color: var(--accent-yellow); }
.pix-nav__item--admin {
  background: var(--accent-yellow);
  color: var(--ink);
}
.pix-nav__item--admin .pix-nav__icon { color: var(--accent-pink-d); }
.pix-nav__item--admin:hover { background: var(--paper); color: var(--ink); }

/* footer */
.pix-footer {
  margin-top: var(--sp-7);
  padding: var(--sp-4) var(--sp-4);
  background: var(--ink);
  color: var(--paper);
  text-align: center;
  font-family: var(--font-pixel-en);
  font-size: var(--fs-xs);
  letter-spacing: 0.18em;
  border-top: 4px solid var(--accent-yellow);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-3);
}
.pix-footer__deco {
  color: var(--accent-pink);
  letter-spacing: 0;
}
.pix-footer__text { color: var(--paper); }

/* Main content max-width */
body:not(.admin-mode) .main {
  max-width: 1680px;
  margin: 0 auto;
  padding: var(--sp-5) var(--sp-4);
  min-height: 60vh;
}

/* mobile */
@media (max-width: 720px) {
  body:not(.admin-mode) .site-header { flex-direction: column; }
  .pix-brand { width: 100%; border-right: none !important; border-bottom: 2px solid var(--accent-yellow) !important; justify-content: center; }
  .pix-nav { width: 100%; justify-content: stretch; }
  .pix-nav__item { flex: 1; padding: 0 8px; min-height: 48px; font-size: var(--fs-xs); }
  .pix-nav__item span:not(.pix-nav__icon) { display: none; }
  .pix-nav__item .pix-nav__icon { font-size: var(--fs-lg); }
}

/* ============================================================
   Reduced-motion respect
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  body:not(.admin-mode) *,
  body:not(.admin-mode) *::before,
  body:not(.admin-mode) *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
