/*
 * Manabi Future Horizon UI v231
 *
 * Final visual-only cascade.  This file deliberately changes no routes,
 * fields, state, permissions, network calls, billing logic, or learning logic.
 * It refines the existing rendered contracts with one shared future-facing
 * visual language across public, learner, child, organization, and admin UI.
 */

:root {
  --fh-night-950: #061126;
  --fh-night-900: #08172f;
  --fh-night-800: #0c2548;
  --fh-ink: #102d4d;
  --fh-blue: #356dff;
  --fh-blue-deep: #2255da;
  --fh-cyan: #59d8ff;
  --fh-cyan-soft: #dff7ff;
  --fh-orange: #ff7a2f;
  --fh-orange-deep: #e85d0a;
  --fh-mist: #f1f7ff;
  --fh-glass: rgba(255, 255, 255, .86);
  --fh-glass-strong: rgba(255, 255, 255, .95);
  --fh-line: rgba(113, 155, 206, .26);
  --fh-line-strong: rgba(69, 119, 184, .40);
  --fh-shadow: 0 18px 52px rgba(20, 54, 100, .11), 0 2px 7px rgba(20, 54, 100, .05);
  --fh-shadow-hover: 0 25px 70px rgba(25, 78, 156, .17), 0 5px 16px rgba(26, 62, 112, .08);
  --fh-shadow-orange: 0 14px 34px rgba(242, 99, 18, .27);
  --fh-radius: 22px;
  --fh-radius-small: 14px;
  --fh-ease: cubic-bezier(.2, .8, .2, 1);
}

html {
  background: var(--fh-mist);
}

body.future-ui {
  position: relative;
  isolation: isolate;
  min-height: 100vh;
  background:
    radial-gradient(circle at 8% 2%, rgba(89, 216, 255, .14), transparent 27rem),
    radial-gradient(circle at 92% 9%, rgba(53, 109, 255, .10), transparent 31rem),
    linear-gradient(180deg, #fbfdff 0%, #f5f9ff 48%, #eef6ff 100%);
  color: var(--fh-ink);
}

body.future-ui::before,
body.future-ui::after {
  position: fixed;
  z-index: -1;
  border-radius: 50%;
  content: "";
  pointer-events: none;
  filter: blur(2px);
}

body.future-ui::before {
  inset: 10vh auto auto -18vw;
  width: min(62vw, 900px);
  aspect-ratio: 1;
  border: 1px solid rgba(75, 151, 255, .11);
  background:
    radial-gradient(circle at 50% 50%, transparent 47%, rgba(89, 216, 255, .09) 48%, transparent 49%),
    radial-gradient(circle at 50% 50%, transparent 63%, rgba(53, 109, 255, .07) 64%, transparent 65%);
  opacity: .8;
  animation: fh-orbit-drift 26s linear infinite;
}

body.future-ui::after {
  inset: auto -10vw 2vh auto;
  width: min(42vw, 620px);
  aspect-ratio: 1;
  background: radial-gradient(circle, rgba(89, 216, 255, .15), transparent 67%);
  animation: fh-aurora-breathe 9s ease-in-out infinite alternate;
}

@keyframes fh-orbit-drift {
  to { transform: rotate(360deg); }
}

@keyframes fh-aurora-breathe {
  from { opacity: .42; transform: translate3d(0, 0, 0) scale(.94); }
  to { opacity: .86; transform: translate3d(-2vw, -2vh, 0) scale(1.06); }
}

body.future-ui :where(h1, h2, h3) {
  color: var(--fh-ink);
  letter-spacing: -.035em;
  text-wrap: balance;
}

body.future-ui :where(p, li, dd) {
  text-wrap: pretty;
}

body.future-ui :where(.eyebrow, .section-kicker, .page-kicker) {
  color: var(--fh-blue-deep);
  font-weight: 900;
  letter-spacing: .12em;
}

/* Glass global header */
body.future-ui .site-header,
body.future-ui .admin-topbar {
  border-bottom: 1px solid rgba(95, 143, 197, .20);
  background: rgba(252, 254, 255, .86);
  box-shadow: 0 8px 30px rgba(23, 54, 93, .055);
  -webkit-backdrop-filter: blur(22px) saturate(1.3);
  backdrop-filter: blur(22px) saturate(1.3);
}

body.future-ui .site-header::after,
body.future-ui .admin-topbar::after {
  position: absolute;
  inset: auto 0 -1px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(89, 216, 255, .58), rgba(53, 109, 255, .28), transparent);
  content: "";
  pointer-events: none;
}

body.future-ui .brand-mark {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(103, 156, 221, .28);
  border-radius: 13px;
  box-shadow: 0 7px 21px rgba(24, 76, 157, .15);
}

body.future-ui .brand-mark::after {
  position: absolute;
  inset: -80% 35% -80% -45%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .65), transparent);
  content: "";
  transform: rotate(18deg) translateX(-140%);
  animation: fh-brand-glint 7s ease-in-out infinite;
}

@keyframes fh-brand-glint {
  0%, 72%, 100% { transform: rotate(18deg) translateX(-140%); }
  84% { transform: rotate(18deg) translateX(280%); }
}

body.future-ui .brand-text strong { color: var(--fh-night-900); }
body.future-ui .brand-text small { color: #58728e; }

body.future-ui .site-nav a,
body.future-ui .site-nav button,
body.future-ui .nav-link {
  position: relative;
  border-radius: 12px;
  color: #274767;
  transition: color 180ms ease, background 180ms ease, transform 180ms ease;
}

body.future-ui .site-nav a::after,
body.future-ui .nav-link::after {
  position: absolute;
  inset: auto 14px 4px;
  height: 2px;
  border-radius: 99px;
  background: linear-gradient(90deg, var(--fh-blue), var(--fh-cyan));
  content: "";
  opacity: 0;
  transform: scaleX(.2);
  transition: opacity 180ms ease, transform 180ms ease;
}

body.future-ui .site-nav a:hover,
body.future-ui .site-nav button:hover,
body.future-ui .nav-link:hover {
  background: rgba(225, 241, 255, .72);
  color: var(--fh-blue-deep);
  transform: translateY(-1px);
}

body.future-ui .site-nav a:hover::after,
body.future-ui .nav-link:hover::after {
  opacity: 1;
  transform: scaleX(1);
}

/* Shared surfaces */
body.future-ui :where(
  .panel,
  .card,
  .admin-card,
  .side-card,
  .price-card,
  .course-card,
  .family-child-card,
  .kpi-card,
  .status-list,
  .mf-admin-action-queue,
  .org-card,
  .org-panel,
  .org-kpi,
  .billing-card,
  .auth-card
) {
  border: 1px solid var(--fh-line);
  border-radius: var(--fh-radius);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .97), rgba(247, 251, 255, .88)) padding-box,
    linear-gradient(130deg, rgba(89, 216, 255, .45), rgba(53, 109, 255, .12), rgba(255, 122, 47, .20)) border-box;
  box-shadow: var(--fh-shadow);
  -webkit-backdrop-filter: blur(18px) saturate(1.12);
  backdrop-filter: blur(18px) saturate(1.12);
}

body.future-ui :where(.panel, .card, .admin-card, .price-card, .course-card, .kpi-card, .org-card, .org-panel) {
  --fh-pointer-x: 50%;
  --fh-pointer-y: 0%;
  background-image:
    radial-gradient(circle at var(--fh-pointer-x) var(--fh-pointer-y), rgba(89, 216, 255, .11), transparent 16rem),
    linear-gradient(145deg, rgba(255, 255, 255, .97), rgba(247, 251, 255, .89));
}

@media (hover: hover) and (pointer: fine) {
  body.future-ui :where(.panel, .admin-card, .price-card, .course-card, .kpi-card, .org-card, .org-panel) {
    transition: border-color 220ms var(--fh-ease), box-shadow 220ms var(--fh-ease), transform 220ms var(--fh-ease);
  }

  body.future-ui :where(.panel, .admin-card, .price-card, .course-card, .kpi-card, .org-card, .org-panel):hover {
    border-color: rgba(67, 132, 223, .38);
    box-shadow: var(--fh-shadow-hover);
    transform: translateY(-3px);
  }
}

body.future-ui :where(.alert, .mode-banner, .system-announcement, .maintenance-inline-banner) {
  border-radius: 16px;
  box-shadow: 0 9px 30px rgba(24, 62, 108, .08);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
}

/* Controls remain semantically and behaviorally unchanged. */
body.future-ui :where(
  input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  textarea,
  select
) {
  border: 1px solid var(--fh-line-strong);
  border-radius: 14px;
  background: rgba(255, 255, 255, .88);
  box-shadow: inset 0 1px 2px rgba(15, 48, 88, .035), 0 0 0 0 rgba(53, 109, 255, 0);
  color: var(--fh-ink);
  transition: border-color 180ms ease, box-shadow 180ms ease, background 180ms ease;
}

body.future-ui :where(
  input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  textarea,
  select
):hover {
  border-color: rgba(53, 109, 255, .48);
  background: #fff;
}

body.future-ui :where(
  input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  textarea,
  select
):focus {
  border-color: var(--fh-blue);
  background: #fff;
  box-shadow: 0 0 0 4px rgba(53, 109, 255, .14), 0 10px 28px rgba(30, 80, 155, .09);
}

body.future-ui .mf-field-has-focus {
  color: var(--fh-blue-deep);
}

body.future-ui :where(.button, button, input[type="submit"], input[type="button"]) {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  border-radius: 13px;
  transition: box-shadow 180ms var(--fh-ease), transform 180ms var(--fh-ease), filter 180ms ease;
}

body.future-ui :where(.button.primary, button.primary, .nav-cta, input[type="submit"].primary) {
  border-color: transparent;
  background: linear-gradient(135deg, #ff8a35 0%, var(--fh-orange) 46%, var(--fh-orange-deep) 100%);
  box-shadow: var(--fh-shadow-orange), inset 0 1px 0 rgba(255, 255, 255, .32);
  color: #fff;
  text-shadow: 0 1px 1px rgba(93, 32, 0, .22);
}

body.future-ui :where(.button.primary, button.primary, .nav-cta, input[type="submit"].primary):hover {
  box-shadow: 0 18px 42px rgba(242, 99, 18, .34), inset 0 1px 0 rgba(255, 255, 255, .34);
  filter: saturate(1.05);
  transform: translateY(-2px);
}

body.future-ui :where(.button, button):active { transform: translateY(0) scale(.985); }

.mf-horizon-ripple {
  position: absolute;
  z-index: -1;
  left: 50%;
  top: 50%;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .46);
  pointer-events: none;
  transform: translate(-50%, -50%) scale(0);
  animation: fh-ripple 620ms ease-out forwards;
}

@keyframes fh-ripple {
  to { opacity: 0; transform: translate(-50%, -50%) scale(22); }
}

body.future-ui :where(.button.ghost, button.ghost, .button.secondary) {
  border-color: rgba(74, 128, 195, .30);
  background: rgba(255, 255, 255, .72);
  color: var(--fh-ink);
  box-shadow: 0 5px 15px rgba(26, 65, 114, .06);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
}

/* Data and progress */
body.future-ui :where(table, .data-table) {
  border-color: var(--fh-line);
}

body.future-ui :where(table, .data-table) thead {
  background: linear-gradient(180deg, #f1f7ff, #eaf3ff);
  color: #31516f;
}

body.future-ui :where(table, .data-table) tbody tr {
  transition: background 140ms ease, box-shadow 140ms ease;
}

body.future-ui :where(table, .data-table) tbody tr:hover {
  background: rgba(226, 242, 255, .68);
  box-shadow: inset 3px 0 var(--fh-blue);
}

body.future-ui :where(progress, .progress-bar, .meter, [role="progressbar"]) {
  accent-color: var(--fh-blue);
}

body.future-ui progress::-webkit-progress-bar {
  border-radius: 999px;
  background: #e5eef9;
}

body.future-ui progress::-webkit-progress-value {
  border-radius: 999px;
  background: linear-gradient(90deg, var(--fh-blue), var(--fh-cyan));
  box-shadow: 0 0 16px rgba(89, 216, 255, .42);
}

body.future-ui :where(.chip, .status-chip, .org-status, .task-status) {
  border-radius: 999px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .40);
}

/* Core journey */
body.future-ui .mf-journey-rail {
  border: 1px solid rgba(104, 153, 209, .25);
  border-radius: 19px;
  background: rgba(255, 255, 255, .82);
  box-shadow: 0 12px 38px rgba(25, 65, 116, .08);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}

body.future-ui .mf-journey-rail li.is-current {
  border-color: rgba(53, 109, 255, .30);
  background: linear-gradient(135deg, rgba(225, 239, 255, .94), rgba(230, 251, 255, .92));
  box-shadow: 0 9px 25px rgba(37, 99, 205, .12);
}

body.future-ui .mf-journey-rail li.is-current .mf-journey-step-icon {
  background: linear-gradient(135deg, var(--fh-blue), #6d5bff);
  box-shadow: 0 7px 17px rgba(53, 109, 255, .26), 0 0 0 5px rgba(53, 109, 255, .08);
}

body.future-ui .future-study-dock,
body.future-ui .mobile-tabbar {
  border: 1px solid rgba(118, 169, 228, .18);
  background: linear-gradient(135deg, rgba(6, 17, 38, .97), rgba(12, 37, 72, .96));
  box-shadow: 0 -15px 44px rgba(4, 18, 45, .22), inset 0 1px 0 rgba(255, 255, 255, .09);
  -webkit-backdrop-filter: blur(22px) saturate(1.25);
  backdrop-filter: blur(22px) saturate(1.25);
}

body.future-ui .mobile-tabbar a {
  color: rgba(226, 240, 255, .72);
}

body.future-ui .mobile-tabbar a.is-active,
body.future-ui .mobile-tabbar a[aria-current="page"] {
  background: linear-gradient(180deg, rgba(89, 216, 255, .18), rgba(53, 109, 255, .15));
  color: #fff;
  box-shadow: inset 0 0 0 1px rgba(89, 216, 255, .20);
}

body.future-ui .mobile-tabbar a.is-active::before,
body.future-ui .mobile-tabbar a[aria-current="page"]::before {
  background: linear-gradient(90deg, var(--fh-cyan), var(--fh-blue));
  box-shadow: 0 0 16px rgba(89, 216, 255, .75);
}

/* Auth and reading */
body.future-ui.shell-auth .shell-container {
  position: relative;
}

body.future-ui.shell-auth .shell-container::before {
  position: absolute;
  inset: 2rem 5% auto;
  z-index: -1;
  height: min(44vh, 460px);
  border-radius: 50%;
  background:
    radial-gradient(circle at 28% 50%, rgba(89, 216, 255, .18), transparent 36%),
    radial-gradient(circle at 75% 38%, rgba(53, 109, 255, .14), transparent 38%);
  content: "";
  filter: blur(18px);
}

body.future-ui.shell-auth :where(.auth-card, .auth-shell, .panel) {
  box-shadow: 0 30px 90px rgba(24, 67, 128, .14), 0 0 0 1px rgba(255, 255, 255, .72) inset;
}

body.future-ui.shell-reading article {
  border: 1px solid var(--fh-line);
  border-radius: 28px;
  background: rgba(255, 255, 255, .90);
  box-shadow: var(--fh-shadow);
}

body.future-ui .mf-reading-toc {
  border-color: rgba(78, 136, 203, .27);
  background: rgba(243, 249, 255, .88);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}

/* Child: the same future, warmer and larger. */
body.future-ui.shell-child,
body.future-ui.shell-child-auth {
  background:
    radial-gradient(circle at 13% 9%, rgba(89, 216, 255, .19), transparent 26rem),
    radial-gradient(circle at 91% 18%, rgba(255, 182, 118, .14), transparent 24rem),
    linear-gradient(180deg, #fbfdff, #f0f8ff);
}

body.future-ui.shell-child .child-global-nav {
  border-color: rgba(101, 154, 216, .24);
  background: rgba(252, 254, 255, .88);
  box-shadow: 0 9px 28px rgba(25, 69, 128, .07);
}

body.future-ui.shell-child .child-global-nav a.is-active {
  border-color: rgba(53, 109, 255, .25);
  background: linear-gradient(135deg, #e7f1ff, #e7fbff);
  box-shadow: 0 7px 20px rgba(53, 109, 255, .13);
}

body.future-ui.shell-child :where(.panel, .card, .child-task-card) {
  border-radius: 24px;
}

/* Admin and organization command centers */
body.future-ui.shell-admin,
body.future-ui.organization-app {
  background:
    radial-gradient(circle at 82% 4%, rgba(80, 175, 255, .10), transparent 27rem),
    #eef5fd;
}

body.future-ui .admin-sidebar,
body.future-ui .org-sidebar {
  border: 1px solid rgba(106, 169, 238, .13);
  background:
    radial-gradient(circle at 40% -5%, rgba(89, 216, 255, .16), transparent 17rem),
    linear-gradient(165deg, var(--fh-night-900), var(--fh-night-950));
  box-shadow: 17px 0 50px rgba(5, 20, 48, .15), inset -1px 0 rgba(255, 255, 255, .05);
  color: rgba(231, 242, 255, .82);
}

body.future-ui .admin-sidebar :where(a, strong, small, span),
body.future-ui .org-sidebar :where(a, strong, small, span, label) {
  color: inherit;
}

body.future-ui .admin-sidebar a,
body.future-ui .org-nav a {
  border: 1px solid transparent;
  border-radius: 12px;
  transition: background 170ms ease, border-color 170ms ease, color 170ms ease, transform 170ms ease;
}

body.future-ui .admin-sidebar a:hover,
body.future-ui .org-nav a:hover {
  border-color: rgba(89, 216, 255, .17);
  background: rgba(95, 174, 255, .12);
  color: #fff;
  transform: translateX(3px);
}

body.future-ui .admin-sidebar a.active,
body.future-ui .org-nav a.active {
  border-color: rgba(89, 216, 255, .23);
  background: linear-gradient(90deg, rgba(53, 109, 255, .40), rgba(89, 216, 255, .10));
  box-shadow: inset 3px 0 var(--fh-cyan), 0 8px 21px rgba(2, 15, 38, .22);
  color: #fff;
}

body.future-ui .org-brand,
body.future-ui .org-switcher,
body.future-ui .org-sidebar-foot,
body.future-ui .sidebar-foot {
  border-color: rgba(126, 179, 235, .17);
  background: rgba(255, 255, 255, .055);
}

body.future-ui .org-switcher select {
  border-color: rgba(137, 190, 244, .25);
  background: rgba(255, 255, 255, .96);
  color: var(--fh-ink);
}

body.future-ui .admin-page-head,
body.future-ui .org-page-head {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(101, 153, 211, .24);
  border-radius: 22px;
  background:
    radial-gradient(circle at 85% 50%, rgba(89, 216, 255, .14), transparent 18rem),
    rgba(255, 255, 255, .87);
  box-shadow: 0 13px 42px rgba(24, 66, 121, .08);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}

body.future-ui .admin-page-head::before,
body.future-ui .org-page-head::before {
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  background: linear-gradient(180deg, var(--fh-cyan), var(--fh-blue), var(--fh-orange));
  content: "";
}

body.future-ui .kpi-card {
  position: relative;
  overflow: hidden;
}

body.future-ui .kpi-card::after {
  position: absolute;
  inset: auto -18px -22px auto;
  width: 88px;
  height: 88px;
  border: 1px solid rgba(53, 109, 255, .10);
  border-radius: 50%;
  content: "";
  box-shadow: 0 0 0 13px rgba(89, 216, 255, .045), 0 0 0 28px rgba(53, 109, 255, .025);
}

/* Dialogs and support surfaces */
body.future-ui :where(dialog, .mf-command-palette, .mf-detail-drawer, .guide-panel, .qr-login-modal) {
  border-color: rgba(103, 157, 218, .27);
  border-radius: 24px;
  background: rgba(251, 254, 255, .96);
  box-shadow: 0 40px 120px rgba(4, 22, 54, .30), 0 0 0 1px rgba(255, 255, 255, .72) inset;
  -webkit-backdrop-filter: blur(26px) saturate(1.2);
  backdrop-filter: blur(26px) saturate(1.2);
}

body.future-ui :where(.nav-scrim, .mf-command-scrim, .mf-detail-scrim, .guide-scrim, .qr-login-scrim) {
  background: rgba(4, 16, 38, .48);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}

body.future-ui .future-utility-dock > :where(.guide-fab, .qr-login-fab, .child-read-aloud) {
  border-color: rgba(255, 255, 255, .72);
  background: linear-gradient(135deg, var(--fh-night-900), var(--fh-night-800));
  box-shadow: 0 16px 42px rgba(5, 25, 61, .28), 0 0 0 1px rgba(89, 216, 255, .13) inset;
}

/* Loading: style only; existing state owners still control visibility/progress. */
body.future-ui .page-transition-overlay,
body.future-ui .ai-wait-overlay {
  background:
    radial-gradient(circle at 17% 20%, rgba(62, 118, 255, .24), transparent 30rem),
    radial-gradient(circle at 86% 76%, rgba(89, 216, 255, .18), transparent 32rem),
    linear-gradient(145deg, #030b1d, #071a37 58%, #0b3154);
}

body.future-ui .page-loader-sky::after,
body.future-ui .ai-wait-backdrop::after {
  opacity: .72;
  background-image:
    radial-gradient(circle, rgba(255, 255, 255, .82) 0 1px, transparent 1.6px),
    radial-gradient(circle, rgba(89, 216, 255, .63) 0 1px, transparent 1.7px);
  background-position: 0 0, 29px 17px;
  background-size: 83px 83px, 137px 137px;
}

body.future-ui .page-loader-card,
body.future-ui .ai-wait-card {
  border: 1px solid rgba(135, 191, 247, .24);
  background:
    radial-gradient(circle at 50% 0, rgba(89, 216, 255, .11), transparent 17rem),
    linear-gradient(145deg, rgba(8, 23, 49, .97), rgba(12, 42, 78, .95));
  box-shadow: 0 42px 130px rgba(0, 0, 0, .45), 0 0 80px rgba(66, 135, 255, .13), inset 0 1px rgba(255, 255, 255, .10);
  color: #fff;
  -webkit-backdrop-filter: blur(26px) saturate(1.25);
  backdrop-filter: blur(26px) saturate(1.25);
}

body.future-ui .page-loader-card::before,
body.future-ui .ai-wait-card::before {
  background: linear-gradient(90deg, transparent, var(--fh-cyan), var(--fh-blue), var(--fh-orange), transparent);
  box-shadow: 0 0 18px rgba(89, 216, 255, .42);
}

body.future-ui .page-loader-mark {
  filter: drop-shadow(0 0 24px rgba(89, 216, 255, .28));
}

body.future-ui .page-loader-core {
  background: linear-gradient(135deg, var(--fh-blue), #715cff);
  box-shadow: 0 0 0 7px rgba(89, 216, 255, .08), 0 0 34px rgba(89, 216, 255, .35);
}

body.future-ui .page-loader-mark i {
  border-color: rgba(115, 205, 255, .28);
}

body.future-ui .page-loader-mark i::after {
  background: var(--fh-cyan);
  box-shadow: 0 0 12px var(--fh-cyan);
}

body.future-ui :where(.page-loader-card, .ai-wait-card) :where(h2, h3, strong) { color: #fff; }
body.future-ui :where(.page-loader-card, .ai-wait-card) :where(p, small, .page-loader-live) { color: rgba(224, 239, 255, .74); }

body.future-ui .page-loader-progress,
body.future-ui .ai-wait-progress {
  overflow: hidden;
  border: 1px solid rgba(121, 187, 246, .18);
  border-radius: 999px;
  background: rgba(255, 255, 255, .08);
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, .20);
}

body.future-ui .page-loader-progress > span,
body.future-ui .ai-wait-progress > span {
  background: linear-gradient(90deg, var(--fh-blue), var(--fh-cyan), #b8f5ff, var(--fh-cyan), var(--fh-blue));
  background-size: 220% 100%;
  box-shadow: 0 0 20px rgba(89, 216, 255, .65);
  animation: fh-progress-flow 1.8s linear infinite;
}

@keyframes fh-progress-flow {
  to { background-position: -220% 0; }
}

body.future-ui .page-loader-health,
body.future-ui .page-loader-live,
body.future-ui .page-loader-cards > span,
body.future-ui :where(.ai-wait-stepbox, .ai-wait-message, .ai-wait-mascot, .ai-mini-video) {
  border-color: rgba(143, 197, 246, .16);
  background: rgba(255, 255, 255, .065);
  color: rgba(231, 243, 255, .82);
  box-shadow: inset 0 1px rgba(255, 255, 255, .055);
}

body.future-ui :where([aria-busy="true"], .loading-button, .is-loading) {
  cursor: progress;
}

body.future-ui :where(button, .button)[aria-busy="true"]::after,
body.future-ui :where(button, .button).loading-button::after {
  width: 18px;
  height: 18px;
  border: 2px solid rgba(255, 255, 255, .42);
  border-top-color: #fff;
  border-radius: 50%;
  content: "";
  animation: fh-spin .72s linear infinite;
}

@keyframes fh-spin { to { transform: rotate(360deg); } }

/* Footer anchors the bright experience in a quiet night horizon. */
body.future-ui .site-footer,
body.future-ui .admin-footer {
  position: relative;
  overflow: hidden;
  border-top: 1px solid rgba(117, 177, 236, .15);
  background:
    radial-gradient(circle at 72% -20%, rgba(89, 216, 255, .14), transparent 26rem),
    linear-gradient(155deg, var(--fh-night-950), var(--fh-night-900));
  color: rgba(227, 239, 255, .74);
}

body.future-ui .site-footer::before {
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, rgba(255, 255, 255, .42) 0 1px, transparent 1.5px);
  background-size: 91px 91px;
  content: "";
  opacity: .22;
  pointer-events: none;
}

body.future-ui .site-footer :where(strong, .brand-text strong) { color: #fff; }
body.future-ui .site-footer a { color: rgba(228, 241, 255, .78); }
body.future-ui .site-footer a:hover { color: var(--fh-cyan); }

/* Landing search command center */
body.future-ui.page-index .koto-cosmic-hero {
  position: relative;
  overflow: clip;
  background:
    radial-gradient(circle at 67% 16%, rgba(89, 216, 255, .16), transparent 31rem),
    radial-gradient(circle at 12% 45%, rgba(255, 145, 74, .09), transparent 26rem),
    linear-gradient(180deg, #fbfdff 0%, #f5faff 70%, #eef7ff 100%);
}

body.future-ui.page-index .koto-cosmic-hero::after {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(116deg, transparent 35%, rgba(89, 216, 255, .08) 49%, transparent 63%),
    radial-gradient(circle, rgba(53, 109, 255, .16) 0 1px, transparent 1.6px);
  background-size: auto, 104px 104px;
  content: "";
  opacity: .33;
  pointer-events: none;
}

body.future-ui.page-index .koto-hero-inner,
body.future-ui.page-index .koto-cosmic-hero > :where(.koto-route-line, .koto-cosmic-sky, .koto-aurora) {
  position: relative;
  z-index: 1;
}

body.future-ui.page-index .koto-hero-problem { color: var(--fh-night-900); }
body.future-ui.page-index .koto-hero-solution strong { color: var(--fh-blue-deep); }

body.future-ui.page-index .koto-kicker,
body.future-ui.page-index .koto-audience-scope,
body.future-ui.page-index .koto-trust-row span {
  border-color: rgba(101, 154, 214, .25);
  background: rgba(255, 255, 255, .76);
  box-shadow: 0 8px 24px rgba(24, 69, 130, .07);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
}

body.future-ui.page-index .koto-device {
  border-color: rgba(116, 173, 231, .32);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .94), rgba(233, 245, 255, .82)) padding-box,
    linear-gradient(135deg, rgba(89, 216, 255, .64), rgba(53, 109, 255, .22), rgba(255, 122, 47, .36)) border-box;
  box-shadow: 0 38px 100px rgba(26, 76, 146, .20), 0 0 0 1px rgba(255, 255, 255, .72) inset, 0 0 70px rgba(89, 216, 255, .10);
  transform: perspective(1400px) rotateY(-1.2deg) rotateX(.4deg);
}

body.future-ui.page-index .koto-device-screen {
  border-color: rgba(109, 157, 213, .20);
  background:
    radial-gradient(circle at 70% 0, rgba(89, 216, 255, .09), transparent 20rem),
    rgba(249, 252, 255, .96);
}

body.future-ui.page-index .koto-search-form {
  border: 1px solid rgba(77, 133, 202, .28);
  border-radius: 20px;
  background: rgba(255, 255, 255, .88);
  box-shadow: 0 20px 55px rgba(23, 68, 131, .12), 0 0 0 1px rgba(255, 255, 255, .68) inset;
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}

body.future-ui.page-index .koto-input-shell textarea {
  background: linear-gradient(180deg, #fff, #fbfdff);
  box-shadow: 0 0 0 4px rgba(89, 216, 255, .035) inset;
}

body.future-ui.page-index .koto-example-chips button,
body.future-ui.page-index .koto-time-pills span {
  border-color: rgba(102, 151, 207, .28);
  background: rgba(255, 255, 255, .90);
  box-shadow: 0 7px 20px rgba(23, 64, 113, .07);
}

body.future-ui.page-index .koto-example-chips button:hover,
body.future-ui.page-index .koto-time-pills input:checked + span {
  border-color: rgba(53, 109, 255, .46);
  background: linear-gradient(135deg, #ecf3ff, #e8fbff);
  box-shadow: 0 10px 26px rgba(43, 105, 207, .14), inset 0 0 0 1px rgba(255, 255, 255, .65);
}

body.future-ui.page-index .koto-search-submit {
  border-color: transparent;
  background: linear-gradient(135deg, #ff8a35, var(--fh-orange) 48%, var(--fh-orange-deep));
  box-shadow: var(--fh-shadow-orange);
  color: #fff;
}

body.future-ui.page-index :where(
  .koto-learning-range-grid article,
  .koto-pain-grid article,
  .koto-feature-grid article,
  .koto-scene-grid article,
  .koto-role-grid article,
  .homepage-trust-grid article,
  .org-path-card
) {
  border-color: var(--fh-line);
  background: linear-gradient(145deg, rgba(255, 255, 255, .96), rgba(246, 251, 255, .88));
  box-shadow: var(--fh-shadow);
}

body.future-ui.page-index .koto-flow-board,
body.future-ui.page-index .cosmic-live-showcase,
body.future-ui.page-index .cosmic-demo-player {
  border-color: rgba(104, 159, 220, .25);
  box-shadow: 0 26px 80px rgba(23, 69, 131, .14);
}

/* Learning screens */
body.future-ui :where(.result-head, .diagnostic-result-hero, .practice-hero, .practice-complete, .today-learning-card) {
  border: 1px solid rgba(91, 149, 215, .27);
  border-radius: 24px;
  background:
    radial-gradient(circle at 88% 8%, rgba(89, 216, 255, .14), transparent 18rem),
    linear-gradient(145deg, rgba(255, 255, 255, .96), rgba(244, 250, 255, .90));
  box-shadow: var(--fh-shadow);
}

body.future-ui :where(.video-card, .route-card-s, .next-card, .diagnostic-priority-card, .diagnostic-map-card, .diagnostic-basis-card) {
  border-color: var(--fh-line);
  border-radius: 20px;
  background: rgba(255, 255, 255, .91);
  box-shadow: 0 13px 40px rgba(21, 61, 108, .09);
}

body.future-ui .video-card:hover,
body.future-ui .route-card-s:hover,
body.future-ui .next-card:hover {
  border-color: rgba(53, 109, 255, .38);
  box-shadow: var(--fh-shadow-hover);
}

body.future-ui .practice-processing-card {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(120, 181, 239, .22);
  border-radius: 28px;
  background:
    radial-gradient(circle at 50% 0, rgba(89, 216, 255, .15), transparent 21rem),
    linear-gradient(145deg, var(--fh-night-950), #0a294e);
  box-shadow: 0 36px 100px rgba(3, 20, 48, .29), inset 0 1px rgba(255, 255, 255, .08);
  color: rgba(229, 242, 255, .82);
}

body.future-ui .practice-processing-card::before {
  position: absolute;
  inset: -35% auto auto 50%;
  width: min(70vw, 620px);
  aspect-ratio: 1;
  border: 1px solid rgba(89, 216, 255, .16);
  border-radius: 50%;
  content: "";
  pointer-events: none;
  transform: translateX(-50%);
  box-shadow: 0 0 0 54px rgba(53, 109, 255, .035), 0 0 0 108px rgba(89, 216, 255, .022);
  animation: fh-orbit-drift 22s linear infinite;
}

body.future-ui .practice-processing-card :where(h1, h2, h3, strong, .eyebrow) { color: #fff; }
body.future-ui .practice-processing-card :where(p, small) { color: rgba(225, 240, 255, .72); }

body.future-ui .practice-processing-stages > * {
  border-color: rgba(124, 187, 242, .15);
  background: rgba(255, 255, 255, .06);
}

body.future-ui .practice-processing-stages > .is-current {
  border-color: rgba(89, 216, 255, .40);
  background: linear-gradient(135deg, rgba(53, 109, 255, .30), rgba(89, 216, 255, .12));
  box-shadow: 0 0 28px rgba(89, 216, 255, .12);
}

body.future-ui .diagnostic-overall,
body.future-ui .ring {
  filter: drop-shadow(0 12px 24px rgba(53, 109, 255, .13));
}

body.future-ui .skill-meter-track,
body.future-ui .progress-line,
body.future-ui .progress-bar {
  overflow: hidden;
  border-radius: 999px;
  background: #e4edf8;
}

body.future-ui :where(.skill-meter-track, .progress-line, .progress-bar) > * {
  background: linear-gradient(90deg, var(--fh-blue), var(--fh-cyan));
  box-shadow: 0 0 16px rgba(89, 216, 255, .38);
}

/* Progressive reveal is applied by the visual-only JS. */
body.future-ui.mf-horizon-ready .mf-horizon-reveal {
  /* V256: progressive enhancement must be fail-open. Content starts visible
     and stays usable even when its observer never runs. */
  opacity: 1;
  transform: none;
  transition: opacity 620ms var(--fh-ease), transform 620ms var(--fh-ease);
}

body.future-ui.mf-horizon-ready .mf-horizon-reveal.is-visible {
  opacity: 1;
  transform: none;
}

body.future-ui.mf-horizon-ready .mf-horizon-reveal:nth-child(2n) { transition-delay: 55ms; }
body.future-ui.mf-horizon-ready .mf-horizon-reveal:nth-child(3n) { transition-delay: 95ms; }

@media (max-width: 980px) {
  body.future-ui .admin-sidebar,
  body.future-ui .org-sidebar {
    box-shadow: 12px 0 44px rgba(5, 20, 48, .20);
  }

  body.future-ui .admin-page-head,
  body.future-ui .org-page-head {
    border-radius: 18px;
  }
}

@media (max-width: 760px) {
  body.future-ui {
    background:
      radial-gradient(circle at 3% 2%, rgba(89, 216, 255, .17), transparent 18rem),
      linear-gradient(180deg, #fbfdff, #eff7ff);
  }

  body.future-ui::before { display: none; }

  body.future-ui :where(.panel, .card, .admin-card, .price-card, .course-card, .org-card, .org-panel) {
    border-radius: 18px;
    box-shadow: 0 11px 34px rgba(20, 54, 100, .09), 0 2px 6px rgba(20, 54, 100, .04);
  }

  body.future-ui .site-header {
    background: rgba(252, 254, 255, .92);
  }

  body.future-ui .site-nav-area {
    border-left: 1px solid rgba(123, 176, 233, .20);
    background:
      radial-gradient(circle at 20% 3%, rgba(89, 216, 255, .11), transparent 18rem),
      rgba(252, 254, 255, .98);
    box-shadow: -24px 0 70px rgba(5, 24, 56, .22);
    -webkit-backdrop-filter: blur(24px);
    backdrop-filter: blur(24px);
  }

  body.future-ui .mobile-tabbar {
    inset: auto 8px max(7px, env(safe-area-inset-bottom)) 8px;
    border-radius: 19px;
    padding: 6px;
  }

  body.future-ui .mobile-tabbar a {
    border-radius: 13px;
  }

  body.future-ui .page-loader-card,
  body.future-ui .ai-wait-card {
    border-radius: 27px;
  }

  body.future-ui .future-utility-dock > :where(.guide-fab, .qr-login-fab, .child-read-aloud) {
    box-shadow: 0 12px 32px rgba(5, 25, 61, .25), 0 0 0 1px rgba(89, 216, 255, .12) inset;
  }
}

@media (max-width: 420px) {
  body.future-ui :where(h1) { letter-spacing: -.045em; }
  body.future-ui .admin-page-head,
  body.future-ui .org-page-head { border-radius: 16px; }
  body.future-ui .mobile-tabbar { inset-inline: 6px; }
}

@media (prefers-reduced-motion: reduce) {
  body.future-ui::before,
  body.future-ui::after,
  body.future-ui .brand-mark::after,
  body.future-ui .page-loader-progress > span,
  body.future-ui .ai-wait-progress > span,
  .mf-horizon-ripple {
    animation: none !important;
  }

  body.future-ui.mf-horizon-ready .mf-horizon-reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

@media (forced-colors: active) {
  body.future-ui :where(.panel, .card, .admin-card, .price-card, .org-card, .org-panel, dialog) {
    border: 2px solid CanvasText;
    background: Canvas;
  }
}

@media print {
  body.future-ui {
    background: #fff !important;
  }

  body.future-ui::before,
  body.future-ui::after,
  .mf-horizon-ripple {
    display: none !important;
  }

  body.future-ui :where(.panel, .card, .admin-card, .org-card, .org-panel) {
    box-shadow: none !important;
    transform: none !important;
  }
}
