/* Mochi UI foundation: semantic tokens and shared interaction primitives. */
.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
.skip-link { position: fixed; left: 12px; top: 12px; z-index: 200; transform: translateY(-180%); padding: 10px 14px; border-radius: 10px; background: var(--surface); color: var(--ink); box-shadow: var(--shadow-float); font-weight: 800; }
.skip-link:focus { transform: translateY(0); }
:root {
  --color-bg: var(--bg);
  --color-surface: var(--surface);
  --color-surface-raised: var(--surface-2);
  --color-text: var(--ink);
  --color-text-muted: var(--muted);
  --color-border: var(--line);
  --color-brand: var(--accent);
  --color-brand-strong: var(--accent-deep);
  --color-success: var(--mint);
  --color-success-soft: var(--mint-soft);
  --color-warning-soft: var(--warn-soft);
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --radius-control: 12px;
  --radius-card: var(--radius);
  --radius-panel: 24px;
  --shadow-card: var(--shadow);
  --shadow-float: 0 18px 44px rgba(22, 34, 56, .14);
  --focus-ring: 0 0 0 3px color-mix(in srgb, var(--accent) 24%, transparent);
  --font-display: 'Baloo 2', Nunito, sans-serif;
  --font-body: Nunito, 'Segoe UI', sans-serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --motion-fast: 140ms;
  --motion-base: 220ms;
  --motion-slow: 360ms;
  --bp-phone: 480px;
  --bp-tablet: 768px;
  --bp-desktop: 1024px;
  --bp-wide: 1440px;
  --viewport-h: 100dvh;
}

body { font-family: var(--font-body); color: var(--color-text); }
h1, h2, h3, h4, .brand h1 { font-family: var(--font-display); }

button, input, textarea, select { font: inherit; }
html, body, button, a, input, textarea, select, summary { -webkit-tap-highlight-color: transparent; }
button:focus-visible, a:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, summary:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
  box-shadow: var(--focus-ring);
}
.btn, .icon-attach, .mic-button, #send-btn { min-height: 40px; }
.btn:disabled, button:disabled { cursor: not-allowed; opacity: .58; transform: none !important; box-shadow: none !important; }
.btn.is-active, [data-theme-choice][aria-pressed="true"] { border-color: var(--accent); color: var(--accent-deep); background: var(--accent-soft); }
[data-theme-choice] { min-width: 76px; }
.settings-actions, .home-actions, .confirm-actions, .profile-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; }
.experience-card, .premium-plan, .activity-card, .result-card, .mission-card, .achievement-item, .xp-item, .workflow-agent { transition: transform var(--motion-base) var(--ease), box-shadow var(--motion-base) ease, border-color var(--motion-base) ease; }
@media (hover: hover) and (pointer: fine) {
  .experience-card:hover, .premium-plan:hover, .activity-card:hover, .result-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-float); border-color: color-mix(in srgb, var(--accent) 35%, var(--line)); }
}

.home-card, .wait-shell, .chat, .commands-panel, .composer, .activity-card, .result-card, .premium-plan, .experience-card, .profile-card, .settings-card {
  border-color: var(--color-border);
  border-radius: var(--radius-card);
}
.home-card, .wait-shell, .chat, .commands-panel, .composer { box-shadow: var(--shadow-card); }
.kicker { color: var(--color-brand-strong); }
.settings-note, .home-sub, .panel-hint, .hint { color: var(--color-text-muted); }

.messages, .home-card, .wait-shell, .docs-section, .experience-grid { overflow-wrap: anywhere; }
.bubble pre, .bubble code { font-family: var(--font-mono); }
.bubble pre { max-width: 100%; overflow: auto; }

.toast { max-width: min(420px, calc(100vw - 32px)); }
.layer[hidden], .confirm-backdrop[hidden], .commands-backdrop[hidden], .menu-backdrop[hidden] { display: none !important; }

@media (max-width: 767px) {
  :root { --radius-card: 18px; --radius-panel: 20px; }
  .home-card, .wait-shell { width: min(100%, calc(100vw - 24px)); }
  .btn, .icon-attach, .mic-button, #send-btn { min-height: 44px; }
  .layer { min-height: var(--viewport-h); padding-bottom: calc(16px + var(--safe-b)); }
  .composer { padding-bottom: calc(10px + var(--safe-b)); }
  .messages { min-height: 0; overflow-x: hidden; }
  .bubble, .result-card, .activity-card { max-width: 100%; overflow-wrap: anywhere; }
}

@media (max-width: 767px) and (max-height: 620px), (orientation: landscape) and (max-height: 620px) {
  .mochi-intro { display: none; }
  .topbar { padding-top: max(6px, env(safe-area-inset-top)); }
  .stage-wrap { min-height: 0; }
  .podium { min-height: 112px; }
  .mochi { transform: scale(.68); margin-bottom: -44px; }
  .messages { max-height: calc(var(--viewport-h) - 164px); }
}

@media (min-width: 1440px) {
  .stage-wrap, .topbar { max-width: 1440px; }
  .chat { max-width: 920px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
