:root {
  color-scheme: light;
  --ink-950: #071827;
  --ink-900: #0b1f33;
  --ink-850: #102a40;
  --ink-800: #16364f;
  --ink-700: #2a4a62;
  --ink-600: #46657a;
  --ink-500: #658093;
  --ink-300: #b8c8d2;
  --ink-200: #d5e0e6;
  --ink-100: #e9eff2;
  --ink-050: #f5f8f9;
  --cyan-700: #00647a;
  --cyan-600: #007f99;
  --cyan-500: #009fbd;
  --cyan-400: #25bad2;
  --cyan-200: #a9e4ec;
  --cyan-100: #dcf5f8;
  --cyan-050: #effbfd;
  --safety-700: #8d6500;
  --safety-600: #ae7d00;
  --safety-500: #f2bd2e;
  --safety-400: #ffd45d;
  --safety-200: #ffe9a9;
  --safety-100: #fff6d7;
  --cream-200: #e9e2d3;
  --cream-100: #f4f0e7;
  --cream-050: #faf8f3;
  --white: #ffffff;
  --green-700: #14613f;
  --green-600: #1d7950;
  --green-500: #2c9567;
  --green-100: #dff4e9;
  --orange-700: #934b12;
  --orange-500: #d46d1a;
  --orange-100: #ffead8;
  --red-700: #9b2c36;
  --red-500: #cf4b57;
  --red-100: #fbe4e6;
  --violet-700: #614a94;
  --violet-100: #ece8f8;
  --surface: #ffffff;
  --surface-muted: #f5f8f9;
  --surface-warm: #faf8f3;
  --canvas: #edf2f4;
  --border: #d5e0e6;
  --border-strong: #b8c8d2;
  --text: #0b1f33;
  --text-muted: #567184;
  --text-soft: #71899a;
  --focus: #f2bd2e;
  --shadow-xs: 0 1px 2px rgb(7 24 39 / 0.07);
  --shadow-sm: 0 6px 18px rgb(7 24 39 / 0.08);
  --shadow-md: 0 14px 36px rgb(7 24 39 / 0.12);
  --shadow-lg: 0 24px 60px rgb(7 24 39 / 0.18);
  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 20px;
  --radius-xl: 28px;
  --sidebar-width: 282px;
  --topbar-height: 72px;
  --content-max: 1540px;
  --ease-standard: cubic-bezier(0.2, 0.8, 0.2, 1);
  --font-sans: Inter, Aptos, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --font-mono: "Cascadia Code", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  min-width: 320px;
  scroll-behavior: smooth;
  text-size-adjust: 100%;
}

body {
  min-width: 320px;
  min-height: 100vh;
  margin: 0;
  overflow-x: hidden;
  background: var(--canvas);
  color: var(--text);
  font-family: var(--font-sans);
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

body.modal-open,
body.nav-open {
  overflow: hidden;
}

button,
input,
select,
textarea {
  color: inherit;
  font: inherit;
}

button,
[role="button"] {
  touch-action: manipulation;
}

button {
  border: 0;
}

a {
  color: var(--cyan-700);
  text-decoration-thickness: 0.09em;
  text-underline-offset: 0.18em;
}

a:hover {
  color: var(--ink-900);
}

img,
svg {
  display: block;
  max-width: 100%;
}

svg {
  overflow: visible;
}

h1,
h2,
h3,
h4,
p,
ul,
ol,
dl,
figure {
  margin-top: 0;
}

h1,
h2,
h3,
h4 {
  color: var(--ink-900);
  font-weight: 760;
  letter-spacing: -0.025em;
  line-height: 1.16;
}

h1 {
  font-size: clamp(2rem, 4vw, 4.25rem);
}

h2 {
  font-size: clamp(1.45rem, 2vw, 2.2rem);
}

h3 {
  font-size: clamp(1.05rem, 1.4vw, 1.35rem);
}

small {
  color: var(--text-muted);
}

code,
kbd,
samp {
  font-family: var(--font-mono);
}

code {
  padding: 0.15em 0.35em;
  border-radius: 5px;
  background: var(--ink-100);
  color: var(--ink-850);
  font-size: 0.88em;
}

[hidden] {
  display: none !important;
}

.sr-only,
.visually-hidden {
  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;
  z-index: 2000;
  top: 10px;
  left: 10px;
  padding: 10px 16px;
  border-radius: var(--radius-sm);
  background: var(--safety-400);
  color: var(--ink-950);
  font-weight: 800;
  transform: translateY(-160%);
  transition: transform 160ms var(--ease-standard);
}

.skip-link:focus {
  transform: translateY(0);
}

:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}

::selection {
  background: var(--cyan-200);
  color: var(--ink-950);
}

/* Structure */
.shell,
.app-shell {
  display: grid;
  grid-template-columns: var(--sidebar-width) minmax(0, 1fr);
  min-height: 100vh;
  background: var(--canvas);
}

.sidebar {
  position: fixed;
  z-index: 100;
  inset: 0 auto 0 0;
  display: flex;
  width: var(--sidebar-width);
  min-height: 100dvh;
  flex-direction: column;
  overflow: hidden;
  border-right: 1px solid rgb(255 255 255 / 0.08);
  background:
    radial-gradient(circle at 20% 8%, rgb(37 186 210 / 0.18), transparent 28%),
    linear-gradient(168deg, var(--ink-850), var(--ink-950) 68%);
  color: rgb(255 255 255 / 0.78);
  box-shadow: 8px 0 26px rgb(7 24 39 / 0.12);
}

.sidebar::after {
  position: absolute;
  right: -52px;
  bottom: -70px;
  width: 190px;
  height: 190px;
  border: 18px solid rgb(242 189 46 / 0.07);
  border-radius: 50%;
  content: "";
  pointer-events: none;
}

.sidebar-brand {
  display: flex;
  min-height: 96px;
  align-items: center;
  gap: 13px;
  padding: 22px 22px 18px;
  border-bottom: 1px solid rgb(255 255 255 / 0.09);
}

.brand-mark,
.sidebar-logo {
  position: relative;
  display: grid;
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  place-items: center;
  overflow: hidden;
  border: 1px solid rgb(255 255 255 / 0.22);
  border-radius: 13px;
  background: linear-gradient(145deg, var(--cyan-400), var(--cyan-600));
  color: var(--white);
  box-shadow: 0 8px 24px rgb(0 159 189 / 0.25);
  font-weight: 900;
  letter-spacing: -0.06em;
}

.brand-mark::after,
.sidebar-logo::after {
  position: absolute;
  right: -9px;
  bottom: -9px;
  width: 24px;
  height: 24px;
  border: 6px solid var(--safety-400);
  border-radius: 50%;
  content: "";
}

.brand-copy {
  min-width: 0;
}

.brand-title {
  display: block;
  color: var(--white);
  font-size: 1.25rem;
  font-weight: 850;
  letter-spacing: 0.08em;
  line-height: 1.05;
}

.brand-subtitle {
  display: block;
  margin-top: 5px;
  overflow: hidden;
  color: rgb(255 255 255 / 0.57);
  font-size: 0.7rem;
  font-weight: 650;
  letter-spacing: 0.08em;
  text-overflow: ellipsis;
  text-transform: uppercase;
  white-space: nowrap;
}

.sidebar-scroll {
  flex: 1;
  overflow-x: hidden;
  overflow-y: auto;
  padding: 18px 13px 22px;
  scrollbar-color: rgb(255 255 255 / 0.24) transparent;
  scrollbar-width: thin;
}

.nav-section + .nav-section {
  margin-top: 22px;
}

.nav-label {
  display: block;
  margin: 0 11px 8px;
  color: rgb(255 255 255 / 0.4);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.sidebar-nav,
.nav-list {
  display: grid;
  gap: 4px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.nav-item,
.nav-link {
  position: relative;
  display: flex;
  min-height: 44px;
  align-items: center;
  gap: 12px;
  padding: 9px 11px;
  border: 1px solid transparent;
  border-radius: 11px;
  background: transparent;
  color: rgb(255 255 255 / 0.7);
  cursor: pointer;
  font-size: 0.88rem;
  font-weight: 650;
  text-align: left;
  text-decoration: none;
  transition: background 160ms var(--ease-standard), border-color 160ms var(--ease-standard), color 160ms var(--ease-standard), transform 160ms var(--ease-standard);
}

.nav-item:hover,
.nav-link:hover {
  border-color: rgb(255 255 255 / 0.1);
  background: rgb(255 255 255 / 0.07);
  color: var(--white);
  transform: translateX(2px);
}

.nav-item.active,
.nav-item[aria-current="page"],
.nav-link.active,
.nav-link[aria-current="page"] {
  border-color: rgb(37 186 210 / 0.27);
  background: linear-gradient(90deg, rgb(37 186 210 / 0.2), rgb(37 186 210 / 0.07));
  color: var(--white);
  box-shadow: inset 3px 0 0 var(--cyan-400);
}

.nav-icon {
  display: grid;
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
  place-items: center;
  color: rgb(255 255 255 / 0.62);
}

.nav-item.active .nav-icon,
.nav-link.active .nav-icon {
  color: var(--cyan-400);
}

.nav-icon svg {
  width: 20px;
  height: 20px;
  stroke-width: 1.8;
}

.nav-count {
  min-width: 24px;
  padding: 2px 7px;
  margin-left: auto;
  border-radius: 999px;
  background: rgb(255 255 255 / 0.1);
  color: rgb(255 255 255 / 0.7);
  font-size: 0.69rem;
  font-variant-numeric: tabular-nums;
  text-align: center;
}

.sidebar-footer {
  position: relative;
  z-index: 1;
  padding: 16px 18px 19px;
  border-top: 1px solid rgb(255 255 255 / 0.09);
  background: rgb(0 0 0 / 0.08);
}

.sidebar-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  color: rgb(255 255 255 / 0.47);
  font-size: 0.7rem;
}

.sidebar-progress {
  height: 5px;
  margin: 9px 0 7px;
  overflow: hidden;
  border-radius: 999px;
  background: rgb(255 255 255 / 0.1);
}

.sidebar-progress > span {
  display: block;
  width: var(--progress, 0%);
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--cyan-400), var(--safety-400));
  transition: width 450ms var(--ease-standard);
}

.workspace,
.main-shell {
  grid-column: 2;
  min-width: 0;
  min-height: 100vh;
}

.topbar {
  position: sticky;
  z-index: 80;
  top: 0;
  display: flex;
  min-height: var(--topbar-height);
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 12px clamp(18px, 2.6vw, 42px);
  border-bottom: 1px solid rgb(184 200 210 / 0.74);
  background: rgb(255 255 255 / 0.88);
  box-shadow: 0 4px 18px rgb(7 24 39 / 0.045);
  backdrop-filter: blur(16px) saturate(150%);
}

.topbar-start,
.topbar-end,
.topbar-actions {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 10px;
}

.topbar-title {
  min-width: 0;
}

.topbar-title h1,
.topbar-title h2 {
  margin: 0;
  overflow: hidden;
  font-size: clamp(1rem, 1.7vw, 1.3rem);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.topbar-kicker {
  display: block;
  margin-bottom: 2px;
  color: var(--text-muted);
  font-size: 0.67rem;
  font-weight: 800;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.menu-toggle,
.mobile-nav-toggle {
  display: none;
}

.content,
.main-content {
  width: min(100%, var(--content-max));
  padding: clamp(20px, 3vw, 46px);
  margin-inline: auto;
}

.view {
  display: none;
  animation: view-enter 260ms var(--ease-standard) both;
}

.view.active,
.view.is-active,
.view[aria-hidden="false"] {
  display: block;
}

@keyframes view-enter {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.view-header,
.section-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 22px;
  margin-bottom: 22px;
}

.view-header h1,
.view-header h2,
.section-heading h2,
.section-heading h3 {
  margin-bottom: 5px;
}

.view-header p,
.section-heading p {
  max-width: 74ch;
  margin-bottom: 0;
  color: var(--text-muted);
}

.eyebrow,
.kicker {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 9px;
  color: var(--cyan-700);
  font-size: 0.72rem;
  font-weight: 850;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}

.eyebrow::before,
.kicker::before {
  width: 22px;
  height: 3px;
  border-radius: 99px;
  background: var(--safety-500);
  content: "";
}

/* Hero */
.hero {
  position: relative;
  display: grid;
  min-height: 360px;
  grid-template-columns: minmax(0, 1.12fr) minmax(320px, 0.88fr);
  align-items: stretch;
  overflow: hidden;
  margin-bottom: 26px;
  border: 1px solid rgb(255 255 255 / 0.1);
  border-radius: var(--radius-xl);
  background:
    radial-gradient(circle at 76% 10%, rgb(37 186 210 / 0.24), transparent 28%),
    radial-gradient(circle at 0% 100%, rgb(242 189 46 / 0.12), transparent 30%),
    linear-gradient(135deg, var(--ink-900), var(--ink-950));
  color: rgb(255 255 255 / 0.78);
  box-shadow: var(--shadow-md);
}

.hero::before {
  position: absolute;
  inset: 0;
  background-image: linear-gradient(rgb(255 255 255 / 0.025) 1px, transparent 1px), linear-gradient(90deg, rgb(255 255 255 / 0.025) 1px, transparent 1px);
  background-size: 28px 28px;
  content: "";
  pointer-events: none;
}

.hero-content {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(28px, 4.4vw, 68px);
}

.hero h1,
.hero h2 {
  max-width: 13ch;
  margin-bottom: 16px;
  color: var(--white);
}

.hero p {
  max-width: 62ch;
  margin-bottom: 24px;
  color: rgb(255 255 255 / 0.7);
  font-size: clamp(0.98rem, 1.3vw, 1.12rem);
}

.hero-actions,
.action-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
}

.hero-visual {
  position: relative;
  z-index: 1;
  display: grid;
  min-height: 290px;
  place-items: center;
  padding: 32px 36px 32px 10px;
}

.hero-stat {
  position: absolute;
  right: clamp(18px, 3vw, 42px);
  bottom: 24px;
  min-width: 165px;
  padding: 13px 16px;
  border: 1px solid rgb(255 255 255 / 0.16);
  border-radius: 13px;
  background: rgb(7 24 39 / 0.68);
  box-shadow: var(--shadow-sm);
  backdrop-filter: blur(10px);
}

.hero-stat strong {
  display: block;
  color: var(--white);
  font-size: 1.22rem;
  font-variant-numeric: tabular-nums;
}

.hero-stat span {
  color: rgb(255 255 255 / 0.56);
  font-size: 0.73rem;
}

/* Buttons */
.btn,
.button,
.icon-btn {
  display: inline-flex;
  min-height: 42px;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 9px 16px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: var(--ink-900);
  color: var(--white);
  cursor: pointer;
  font-size: 0.85rem;
  font-weight: 750;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  transition: transform 150ms var(--ease-standard), box-shadow 150ms var(--ease-standard), background 150ms var(--ease-standard), border-color 150ms var(--ease-standard);
}

.btn:hover,
.button:hover,
.icon-btn:hover {
  background: var(--ink-800);
  color: var(--white);
  box-shadow: var(--shadow-sm);
  transform: translateY(-1px);
}

.btn:active,
.button:active,
.icon-btn:active {
  box-shadow: none;
  transform: translateY(0);
}

.btn-primary,
.button-primary {
  background: var(--cyan-600);
}

.btn-primary:hover,
.button-primary:hover {
  background: var(--cyan-700);
}

.btn-safety,
.button-safety {
  background: var(--safety-400);
  color: var(--ink-950);
}

.btn-safety:hover,
.button-safety:hover {
  background: var(--safety-500);
  color: var(--ink-950);
}

.btn-secondary,
.button-secondary {
  border-color: var(--border);
  background: var(--white);
  color: var(--ink-850);
  box-shadow: var(--shadow-xs);
}

.btn-secondary:hover,
.button-secondary:hover {
  border-color: var(--cyan-400);
  background: var(--cyan-050);
  color: var(--ink-900);
}

.btn-ghost,
.button-ghost {
  border-color: transparent;
  background: transparent;
  color: var(--ink-700);
}

.btn-ghost:hover,
.button-ghost:hover {
  background: var(--ink-100);
  color: var(--ink-900);
  box-shadow: none;
}

.hero .btn-secondary,
.hero .button-secondary {
  border-color: rgb(255 255 255 / 0.25);
  background: rgb(255 255 255 / 0.08);
  color: var(--white);
  box-shadow: none;
}

.hero .btn-secondary:hover,
.hero .button-secondary:hover {
  border-color: rgb(255 255 255 / 0.44);
  background: rgb(255 255 255 / 0.14);
}

.btn-danger {
  border-color: var(--red-500);
  background: var(--white);
  color: var(--red-700);
}

.btn-sm {
  min-height: 34px;
  padding: 6px 11px;
  border-radius: 8px;
  font-size: 0.76rem;
}

.btn-lg {
  min-height: 50px;
  padding: 13px 21px;
  border-radius: 12px;
  font-size: 0.93rem;
}

.icon-btn {
  width: 42px;
  padding: 0;
}

.icon-btn svg,
.btn svg,
.button svg {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
}

.btn:disabled,
.button:disabled,
.icon-btn:disabled,
button[aria-disabled="true"] {
  cursor: not-allowed;
  opacity: 0.5;
  transform: none;
}

/* Layout helpers and cards */
.grid {
  display: grid;
  gap: 18px;
}

.grid-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.grid-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.grid-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.split-layout {
  display: grid;
  grid-template-columns: minmax(280px, 0.78fr) minmax(0, 1.42fr);
  align-items: start;
  gap: 22px;
}

.sticky-panel {
  position: sticky;
  top: calc(var(--topbar-height) + 20px);
}

.card,
.panel {
  position: relative;
  min-width: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--surface);
  box-shadow: var(--shadow-xs);
}

.card {
  padding: clamp(18px, 2vw, 26px);
}

.card-interactive {
  transition: transform 180ms var(--ease-standard), border-color 180ms var(--ease-standard), box-shadow 180ms var(--ease-standard);
}

.card-interactive:hover {
  border-color: var(--cyan-200);
  box-shadow: var(--shadow-sm);
  transform: translateY(-2px);
}

.card-warm {
  border-color: var(--cream-200);
  background: var(--surface-warm);
}

.card-dark {
  border-color: var(--ink-700);
  background: var(--ink-900);
  color: rgb(255 255 255 / 0.74);
}

.card-dark h2,
.card-dark h3,
.card-dark h4 {
  color: var(--white);
}

.card-accent {
  overflow: hidden;
}

.card-accent::before {
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  background: var(--cyan-500);
  content: "";
}

.card-header,
.panel-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 20px;
  border-bottom: 1px solid var(--border);
}

.card > .card-header {
  padding: 0 0 15px;
  margin: 0 0 18px;
}

.card-title {
  margin: 0;
  font-size: 1rem;
}

.card-subtitle {
  margin: 5px 0 0;
  color: var(--text-muted);
  font-size: 0.82rem;
}

.card-body,
.panel-body {
  padding: 20px;
}

.card > .card-body {
  padding: 0;
}

.card-footer,
.panel-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 20px;
  border-top: 1px solid var(--border);
  background: var(--surface-muted);
}

.card > .card-footer {
  padding: 16px 0 0;
  margin-top: 18px;
  background: transparent;
}

.divider {
  height: 1px;
  margin: 22px 0;
  border: 0;
  background: var(--border);
}

.stack {
  display: grid;
  gap: 14px;
}

.stack-lg {
  display: grid;
  gap: 24px;
}

.cluster {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

/* KPI */
.kpi-grid,
.metrics-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: 24px;
}

.kpi,
.kpi-card,
.metric-card {
  position: relative;
  min-width: 0;
  overflow: hidden;
  padding: 18px 19px;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--surface);
  box-shadow: var(--shadow-xs);
}

.kpi::after,
.kpi-card::after,
.metric-card::after {
  position: absolute;
  top: -26px;
  right: -24px;
  width: 86px;
  height: 86px;
  border: 14px solid var(--cyan-100);
  border-radius: 50%;
  content: "";
  pointer-events: none;
}

.kpi-label,
.metric-label {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 7px;
  color: var(--text-muted);
  font-size: 0.73rem;
  font-weight: 750;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.kpi-value,
.metric-value {
  position: relative;
  z-index: 1;
  display: block;
  margin-top: 8px;
  color: var(--ink-900);
  font-size: clamp(1.35rem, 2.3vw, 2rem);
  font-weight: 830;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.04em;
  line-height: 1.1;
}

.kpi-meta,
.metric-meta {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 7px;
  margin-top: 8px;
  color: var(--text-muted);
  font-size: 0.72rem;
}

.kpi-icon,
.metric-icon {
  display: grid;
  width: 30px;
  height: 30px;
  place-items: center;
  border-radius: 9px;
  background: var(--cyan-100);
  color: var(--cyan-700);
}

.kpi-warning::after {
  border-color: var(--safety-100);
}

.kpi-success::after {
  border-color: var(--green-100);
}

.trend-up {
  color: var(--green-700);
}

.trend-down {
  color: var(--red-700);
}

/* Progress */
.progress,
.progress-bar {
  position: relative;
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--ink-100);
}

.progress > span,
.progress-fill,
.progress-bar > span {
  display: block;
  width: var(--progress, 0%);
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--cyan-600), var(--cyan-400));
  box-shadow: 0 0 0 1px rgb(0 100 122 / 0.08);
  transition: width 480ms var(--ease-standard);
}

.progress-safety > span,
.progress-safety .progress-fill {
  background: linear-gradient(90deg, var(--safety-600), var(--safety-400));
}

.progress-success > span,
.progress-success .progress-fill {
  background: linear-gradient(90deg, var(--green-700), var(--green-500));
}

.progress-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 7px;
  color: var(--text-muted);
  font-size: 0.75rem;
  font-weight: 700;
}

.progress-meta strong {
  color: var(--ink-850);
  font-variant-numeric: tabular-nums;
}

.circular-progress {
  --size: 92px;
  --value: 0;
  display: grid;
  width: var(--size);
  height: var(--size);
  place-items: center;
  border-radius: 50%;
  background: conic-gradient(var(--cyan-500) calc(var(--value) * 1%), var(--ink-100) 0);
}

.circular-progress::before {
  position: absolute;
  width: calc(var(--size) - 14px);
  height: calc(var(--size) - 14px);
  border-radius: 50%;
  background: var(--white);
  content: "";
}

.circular-progress > span {
  position: relative;
  z-index: 1;
  color: var(--ink-900);
  font-size: 1.05rem;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
}

/* Phase rail */
.phase-rail-wrap {
  position: relative;
  margin: 20px 0 28px;
}

.phase-rail {
  display: flex;
  gap: 8px;
  padding: 4px 2px 13px;
  margin: 0;
  overflow-x: auto;
  scroll-behavior: smooth;
  scrollbar-color: var(--ink-300) transparent;
  scrollbar-width: thin;
  list-style: none;
  scroll-snap-type: x proximity;
}

.phase-item,
.phase-step {
  position: relative;
  display: grid;
  min-width: 152px;
  min-height: 86px;
  grid-template-columns: 34px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  padding: 13px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--white);
  color: var(--text-muted);
  cursor: pointer;
  scroll-snap-align: start;
  text-align: left;
  transition: border-color 170ms var(--ease-standard), box-shadow 170ms var(--ease-standard), transform 170ms var(--ease-standard), background 170ms var(--ease-standard);
}

.phase-item::after,
.phase-step::after {
  position: absolute;
  top: 50%;
  right: -9px;
  width: 9px;
  height: 2px;
  background: var(--ink-200);
  content: "";
}

.phase-item:last-child::after,
.phase-step:last-child::after {
  display: none;
}

.phase-item:hover,
.phase-step:hover {
  border-color: var(--cyan-200);
  box-shadow: var(--shadow-sm);
  transform: translateY(-2px);
}

.phase-item.active,
.phase-step.active,
.phase-item[aria-current="step"],
.phase-step[aria-current="step"] {
  border-color: var(--cyan-500);
  background: var(--cyan-050);
  color: var(--ink-900);
  box-shadow: 0 0 0 3px rgb(0 159 189 / 0.11);
}

.phase-item.complete,
.phase-step.complete,
.phase-item.is-complete,
.phase-step.is-complete {
  border-color: #b8dfcc;
  background: #f2fbf6;
}

.phase-number {
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: 10px;
  background: var(--ink-100);
  color: var(--ink-700);
  font-size: 0.75rem;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
}

.active .phase-number,
[aria-current="step"] .phase-number {
  background: var(--cyan-600);
  color: var(--white);
}

.complete .phase-number,
.is-complete .phase-number {
  background: var(--green-600);
  color: var(--white);
}

.phase-copy {
  min-width: 0;
}

.phase-name {
  display: block;
  overflow: hidden;
  color: var(--ink-850);
  font-size: 0.77rem;
  font-weight: 760;
  line-height: 1.25;
  text-overflow: ellipsis;
}

.phase-status {
  display: block;
  margin-top: 4px;
  font-size: 0.65rem;
  line-height: 1.2;
}

/* House visualizer */
.house-visualizer,
.house-panel {
  position: relative;
  min-height: 420px;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background:
    linear-gradient(rgb(255 255 255 / 0.72), rgb(255 255 255 / 0.72)),
    linear-gradient(var(--ink-100) 1px, transparent 1px),
    linear-gradient(90deg, var(--ink-100) 1px, transparent 1px),
    var(--cream-050);
  background-size: auto, 24px 24px, 24px 24px, auto;
  box-shadow: var(--shadow-xs);
}

.house-visualizer::after,
.house-panel::after {
  position: absolute;
  inset: auto 5% 4% 5%;
  height: 20%;
  border-radius: 50%;
  background: radial-gradient(ellipse, rgb(7 24 39 / 0.1), transparent 68%);
  content: "";
  pointer-events: none;
}

.house-canvas {
  position: relative;
  z-index: 1;
  display: grid;
  min-height: 420px;
  place-items: center;
  padding: clamp(18px, 3vw, 38px);
}

.house-canvas svg {
  width: min(100%, 760px);
  max-height: 410px;
  filter: drop-shadow(0 18px 18px rgb(7 24 39 / 0.12));
}

.house-stage,
.construction-stage,
[data-house-stage] {
  opacity: 0.18;
  transition: opacity 280ms var(--ease-standard), filter 280ms var(--ease-standard), transform 280ms var(--ease-standard);
  transform-origin: center;
}

.house-stage.is-visible,
.construction-stage.is-visible,
[data-house-stage].is-visible,
.house-stage[data-state="visible"],
[data-house-stage][data-state="visible"] {
  opacity: 0.55;
}

.house-stage.active,
.construction-stage.active,
[data-house-stage].active,
.house-stage[data-active="true"],
[data-house-stage][data-active="true"] {
  opacity: 1;
  filter: saturate(1.15) drop-shadow(0 4px 4px rgb(0 127 153 / 0.14));
}

.house-stage.complete,
.construction-stage.complete,
[data-house-stage].complete {
  opacity: 0.86;
}

.stage-foundation,
[data-stage="foundation"] {
  fill: #8797a2;
  stroke: #536a79;
}

.stage-structure,
[data-stage="structure"] {
  fill: #d9ad6f;
  stroke: #8c693d;
}

.stage-envelope,
[data-stage="envelope"] {
  fill: #cce5e8;
  stroke: var(--cyan-700);
}

.stage-roof,
[data-stage="roof"] {
  fill: #455f73;
  stroke: var(--ink-900);
}

.stage-services,
[data-stage="services"] {
  fill: none;
  stroke: var(--orange-500);
}

.stage-finishes,
[data-stage="finishes"] {
  fill: var(--cream-100);
  stroke: var(--cream-200);
}

.house-hotspot {
  cursor: pointer;
}

.house-hotspot circle {
  fill: var(--safety-400);
  stroke: var(--ink-900);
  stroke-width: 2;
  filter: drop-shadow(0 2px 3px rgb(7 24 39 / 0.28));
  transition: transform 160ms var(--ease-standard);
  transform-box: fill-box;
  transform-origin: center;
}

.house-hotspot:hover circle,
.house-hotspot:focus-visible circle {
  transform: scale(1.18);
}

.visualizer-toolbar {
  position: absolute;
  z-index: 4;
  top: 14px;
  right: 14px;
  display: flex;
  gap: 7px;
  padding: 5px;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: rgb(255 255 255 / 0.9);
  box-shadow: var(--shadow-sm);
  backdrop-filter: blur(10px);
}

.visualizer-legend {
  position: absolute;
  z-index: 4;
  bottom: 14px;
  left: 14px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  max-width: calc(100% - 28px);
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: rgb(255 255 255 / 0.92);
  color: var(--text-muted);
  font-size: 0.68rem;
  box-shadow: var(--shadow-xs);
  backdrop-filter: blur(8px);
}

.legend-item {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.legend-swatch {
  width: 9px;
  height: 9px;
  border: 1px solid rgb(7 24 39 / 0.16);
  border-radius: 3px;
  background: var(--swatch, var(--cyan-500));
}

/* Tabs */
.tabs,
.tab-list {
  display: flex;
  gap: 4px;
  padding: 4px;
  overflow-x: auto;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--ink-050);
  scrollbar-width: none;
}

.tabs::-webkit-scrollbar,
.tab-list::-webkit-scrollbar {
  display: none;
}

.tab,
.tab-button {
  position: relative;
  display: inline-flex;
  min-height: 38px;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 8px 14px;
  border: 1px solid transparent;
  border-radius: 9px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  font-size: 0.78rem;
  font-weight: 740;
  white-space: nowrap;
  transition: background 150ms var(--ease-standard), color 150ms var(--ease-standard), box-shadow 150ms var(--ease-standard);
}

.tab:hover,
.tab-button:hover {
  color: var(--ink-900);
}

.tab.active,
.tab[aria-selected="true"],
.tab-button.active,
.tab-button[aria-selected="true"] {
  border-color: var(--border);
  background: var(--white);
  color: var(--ink-900);
  box-shadow: var(--shadow-xs);
}

.tab-badge {
  min-width: 20px;
  padding: 1px 6px;
  border-radius: 99px;
  background: var(--ink-100);
  color: var(--ink-700);
  font-size: 0.65rem;
  font-variant-numeric: tabular-nums;
}

.tab.active .tab-badge,
.tab[aria-selected="true"] .tab-badge {
  background: var(--cyan-100);
  color: var(--cyan-700);
}

.tab-panels {
  margin-top: 18px;
}

.tab-panel {
  display: none;
}

.tab-panel.active,
.tab-panel[aria-hidden="false"] {
  display: block;
  animation: view-enter 220ms var(--ease-standard) both;
}

/* Forms */
.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.form-grid-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.form-field,
.field {
  min-width: 0;
}

.form-field.full,
.field.full,
.form-field-full {
  grid-column: 1 / -1;
}

label,
.field-label {
  display: inline-block;
  margin-bottom: 6px;
  color: var(--ink-850);
  font-size: 0.76rem;
  font-weight: 760;
}

.required {
  color: var(--red-700);
}

input[type="text"],
input[type="number"],
input[type="email"],
input[type="search"],
input[type="date"],
select,
textarea,
.input {
  width: 100%;
  min-height: 44px;
  padding: 9px 12px;
  border: 1px solid var(--border-strong);
  border-radius: 9px;
  background: var(--white);
  color: var(--ink-900);
  box-shadow: inset 0 1px 2px rgb(7 24 39 / 0.04);
  line-height: 1.3;
  transition: border-color 150ms var(--ease-standard), box-shadow 150ms var(--ease-standard), background 150ms var(--ease-standard);
}

textarea {
  min-height: 104px;
  resize: vertical;
}

input::placeholder,
textarea::placeholder {
  color: var(--ink-500);
  opacity: 0.8;
}

input:hover,
select:hover,
textarea:hover {
  border-color: var(--ink-500);
}

input:focus,
select:focus,
textarea:focus,
.input:focus {
  border-color: var(--cyan-600);
  outline: 0;
  box-shadow: 0 0 0 3px rgb(0 159 189 / 0.15);
}

input:disabled,
select:disabled,
textarea:disabled,
input[readonly] {
  background: var(--ink-050);
  color: var(--text-muted);
  cursor: not-allowed;
}

input[aria-invalid="true"],
select[aria-invalid="true"],
textarea[aria-invalid="true"],
.is-invalid {
  border-color: var(--red-500);
  box-shadow: 0 0 0 3px rgb(207 75 87 / 0.12);
}

.field-help,
.form-hint {
  display: block;
  margin-top: 5px;
  color: var(--text-muted);
  font-size: 0.69rem;
  line-height: 1.4;
}

.field-error {
  display: block;
  margin-top: 5px;
  color: var(--red-700);
  font-size: 0.69rem;
  font-weight: 700;
}

.input-group {
  display: flex;
  width: 100%;
  align-items: stretch;
}

.input-group > input,
.input-group > select,
.input-group > .input {
  min-width: 0;
  flex: 1;
  border-radius: 9px 0 0 9px;
}

.input-group > :not(:first-child):not(:last-child) {
  border-radius: 0;
  border-left: 0;
}

.input-group > :last-child {
  border-radius: 0 9px 9px 0;
}

.input-prefix,
.input-suffix,
.input-unit {
  display: inline-flex;
  min-width: 48px;
  align-items: center;
  justify-content: center;
  padding: 8px 11px;
  border: 1px solid var(--border-strong);
  border-left: 0;
  background: var(--ink-050);
  color: var(--ink-700);
  font-size: 0.74rem;
  font-weight: 740;
  white-space: nowrap;
}

.input-prefix {
  order: -1;
  border-right: 0;
  border-left: 1px solid var(--border-strong);
  border-radius: 9px 0 0 9px;
}

.input-prefix + input,
.input-prefix + select {
  border-radius: 0 9px 9px 0;
}

.checkbox,
.radio,
.switch-row {
  display: flex;
  align-items: flex-start;
  gap: 9px;
}

input[type="checkbox"],
input[type="radio"] {
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  margin: 2px 0 0;
  accent-color: var(--cyan-600);
}

.switch {
  position: relative;
  display: inline-flex;
  width: 44px;
  height: 25px;
  flex: 0 0 auto;
  border-radius: 99px;
  background: var(--ink-300);
  cursor: pointer;
  transition: background 160ms var(--ease-standard);
}

.switch::after {
  position: absolute;
  top: 3px;
  left: 3px;
  width: 19px;
  height: 19px;
  border-radius: 50%;
  background: var(--white);
  box-shadow: 0 1px 4px rgb(7 24 39 / 0.28);
  content: "";
  transition: transform 160ms var(--ease-standard);
}

input:checked + .switch,
.switch[aria-checked="true"],
.switch.is-on {
  background: var(--cyan-600);
}

input:checked + .switch::after,
.switch[aria-checked="true"]::after,
.switch.is-on::after {
  transform: translateX(19px);
}

.range-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 68px;
  align-items: center;
  gap: 12px;
}

input[type="range"] {
  width: 100%;
  accent-color: var(--cyan-600);
}

.segmented-control {
  display: inline-flex;
  padding: 3px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--ink-050);
}

.segmented-control button {
  min-height: 34px;
  padding: 6px 11px;
  border-radius: 7px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  font-size: 0.73rem;
  font-weight: 730;
}

.segmented-control button.active,
.segmented-control button[aria-pressed="true"] {
  background: var(--white);
  color: var(--ink-900);
  box-shadow: var(--shadow-xs);
}

/* Tables */
.table-card {
  overflow: hidden;
  padding: 0;
}

.table-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--white);
}

.table-toolbar .search-field {
  width: min(100%, 340px);
}

.data-table-wrap,
.table-wrap,
.table-scroll {
  width: 100%;
  overflow: auto;
  scrollbar-color: var(--ink-300) transparent;
  scrollbar-width: thin;
}

.data-table,
.estimate-table {
  width: 100%;
  min-width: 820px;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--white);
  color: var(--ink-850);
  font-size: 0.77rem;
}

.data-table th,
.estimate-table th {
  position: sticky;
  z-index: 4;
  top: 0;
  padding: 11px 12px;
  border-bottom: 1px solid var(--border-strong);
  background: var(--ink-050);
  color: var(--ink-700);
  font-size: 0.68rem;
  font-weight: 820;
  letter-spacing: 0.035em;
  text-align: left;
  text-transform: uppercase;
  white-space: nowrap;
}

.data-table td,
.estimate-table td {
  min-height: 46px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--ink-100);
  vertical-align: middle;
}

.data-table tbody tr,
.estimate-table tbody tr {
  transition: background 120ms ease;
}

.data-table tbody tr:hover,
.estimate-table tbody tr:hover {
  background: var(--cyan-050);
}

.data-table tbody tr.is-selected,
.estimate-table tbody tr.is-selected {
  background: var(--cyan-100);
}

.data-table tbody tr:last-child td,
.estimate-table tbody tr:last-child td {
  border-bottom: 0;
}

.data-table tfoot td,
.estimate-table tfoot td {
  position: sticky;
  z-index: 3;
  bottom: 0;
  border-top: 2px solid var(--ink-300);
  border-bottom: 0;
  background: var(--cream-050);
  color: var(--ink-900);
  font-weight: 800;
}

.data-table .sticky-col,
.estimate-table .sticky-col {
  position: sticky;
  z-index: 3;
  left: 0;
  background: inherit;
  box-shadow: 1px 0 var(--border);
}

.data-table th.sticky-col,
.estimate-table th.sticky-col {
  z-index: 6;
  background: var(--ink-050);
}

.cell-number,
.cell-currency,
.cell-percent,
.numeric {
  font-variant-numeric: tabular-nums;
  text-align: right !important;
  white-space: nowrap;
}

.cell-code {
  color: var(--text-muted);
  font-family: var(--font-mono);
  font-size: 0.7rem;
  white-space: nowrap;
}

.cell-title {
  min-width: 210px;
  color: var(--ink-900);
  font-weight: 700;
}

.table-input {
  min-height: 34px !important;
  padding: 5px 7px !important;
  border-color: transparent !important;
  background: transparent !important;
  font-size: 0.75rem !important;
}

.table-input:hover,
.table-input:focus {
  border-color: var(--cyan-400) !important;
  background: var(--white) !important;
}

.row-actions {
  display: flex;
  justify-content: flex-end;
  gap: 4px;
}

.row-actions .icon-btn {
  width: 32px;
  min-height: 32px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: var(--text-muted);
  box-shadow: none;
}

.row-actions .icon-btn:hover {
  border-color: var(--border);
  background: var(--white);
  color: var(--ink-900);
  transform: none;
}

.table-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  border-top: 1px solid var(--border);
  background: var(--border);
}

.table-summary > div {
  padding: 13px 16px;
  background: var(--cream-050);
}

.table-summary span {
  display: block;
  color: var(--text-muted);
  font-size: 0.66rem;
  font-weight: 730;
  text-transform: uppercase;
}

.table-summary strong {
  display: block;
  margin-top: 3px;
  color: var(--ink-900);
  font-size: 1rem;
  font-variant-numeric: tabular-nums;
}

/* Badges and source status */
.badge,
.status-badge,
.source-status,
.confidence-badge {
  display: inline-flex;
  min-height: 22px;
  align-items: center;
  gap: 5px;
  padding: 3px 8px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--ink-100);
  color: var(--ink-700);
  font-size: 0.65rem;
  font-weight: 780;
  letter-spacing: 0.015em;
  line-height: 1.15;
  white-space: nowrap;
}

.badge-dot,
.status-dot {
  width: 7px;
  height: 7px;
  flex: 0 0 7px;
  border-radius: 50%;
  background: currentColor;
}

.badge-primary,
.badge-info,
.status-info,
.source-verified {
  border-color: var(--cyan-200);
  background: var(--cyan-100);
  color: var(--cyan-700);
}

.badge-success,
.status-success,
.status-complete,
.confidence-high {
  border-color: #b8dfcc;
  background: var(--green-100);
  color: var(--green-700);
}

.badge-warning,
.status-warning,
.status-review,
.confidence-medium {
  border-color: var(--safety-200);
  background: var(--safety-100);
  color: var(--safety-700);
}

.badge-danger,
.status-danger,
.status-error,
.confidence-low {
  border-color: #f2bdc2;
  background: var(--red-100);
  color: var(--red-700);
}

.badge-neutral,
.status-draft,
.source-manual {
  border-color: var(--border);
  background: var(--ink-050);
  color: var(--ink-600);
}

.badge-violet,
.source-reference {
  border-color: #d6ceed;
  background: var(--violet-100);
  color: var(--violet-700);
}

.source-card {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  padding: 13px 14px;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: var(--white);
}

.source-icon {
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border-radius: 11px;
  background: var(--cyan-100);
  color: var(--cyan-700);
}

.source-details {
  min-width: 0;
}

.source-title {
  display: block;
  overflow: hidden;
  color: var(--ink-900);
  font-size: 0.8rem;
  font-weight: 750;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.source-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 0.67rem;
}

.confidence-meter {
  display: inline-grid;
  grid-template-columns: repeat(3, 18px);
  gap: 3px;
}

.confidence-meter span {
  height: 5px;
  border-radius: 99px;
  background: var(--ink-200);
}

.confidence-meter[data-level="1"] span:nth-child(1),
.confidence-meter[data-level="2"] span:nth-child(-n + 2),
.confidence-meter[data-level="3"] span {
  background: var(--confidence-color, var(--cyan-500));
}

/* Calculation trace */
.calculation-trace,
.calc-trace {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--cream-050);
}

.trace-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 13px 16px;
  border-bottom: 1px solid var(--cream-200);
  background: var(--cream-100);
}

.trace-header h3,
.trace-header h4 {
  margin: 0;
  font-size: 0.86rem;
}

.trace-body {
  display: grid;
  gap: 0;
  padding: 8px 16px 14px;
}

.trace-step {
  position: relative;
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto;
  align-items: start;
  gap: 10px;
  padding: 12px 0;
  border-bottom: 1px dashed var(--cream-200);
}

.trace-step:last-child {
  border-bottom: 0;
}

.trace-index {
  display: grid;
  width: 28px;
  height: 28px;
  place-items: center;
  border-radius: 8px;
  background: var(--ink-900);
  color: var(--white);
  font-size: 0.68rem;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
}

.trace-label {
  display: block;
  color: var(--ink-850);
  font-size: 0.75rem;
  font-weight: 730;
}

.trace-formula,
.formula {
  display: block;
  margin-top: 3px;
  color: var(--text-muted);
  font-family: var(--font-mono);
  font-size: 0.69rem;
  line-height: 1.5;
  overflow-wrap: anywhere;
}

.trace-value,
.formula-result {
  color: var(--ink-900);
  font-size: 0.8rem;
  font-weight: 820;
  font-variant-numeric: tabular-nums;
  text-align: right;
  white-space: nowrap;
}

.trace-result {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 15px 16px;
  border-top: 2px solid var(--safety-400);
  background: var(--white);
}

.trace-result strong {
  color: var(--ink-900);
  font-size: 1.15rem;
  font-variant-numeric: tabular-nums;
}

.formula-box {
  padding: 14px 16px;
  overflow-x: auto;
  border: 1px solid var(--cyan-200);
  border-radius: 10px;
  background: var(--cyan-050);
  color: var(--ink-850);
  font-family: var(--font-mono);
  font-size: 0.78rem;
  white-space: nowrap;
}

/* Learning callouts */
.callout,
.learning-note {
  position: relative;
  padding: 16px 18px 16px 48px;
  border: 1px solid var(--cyan-200);
  border-radius: 12px;
  background: var(--cyan-050);
  color: var(--ink-800);
}

.callout::before,
.learning-note::before {
  position: absolute;
  top: 17px;
  left: 17px;
  width: 18px;
  height: 18px;
  border: 5px solid var(--cyan-500);
  border-radius: 50%;
  content: "";
}

.callout h3,
.callout h4,
.learning-note h3,
.learning-note h4 {
  margin-bottom: 5px;
  font-size: 0.88rem;
}

.callout p:last-child,
.learning-note p:last-child {
  margin-bottom: 0;
}

.callout-warning {
  border-color: var(--safety-200);
  background: var(--safety-100);
}

.callout-warning::before {
  border-color: var(--safety-500);
}

.callout-success {
  border-color: #b8dfcc;
  background: var(--green-100);
}

.callout-success::before {
  border-color: var(--green-500);
}

.callout-danger {
  border-color: #f2bdc2;
  background: var(--red-100);
}

.callout-danger::before {
  border-color: var(--red-500);
}

.term {
  border-bottom: 1px dotted var(--cyan-700);
  color: var(--cyan-700);
  cursor: help;
  font-weight: 700;
}

/* Accordions and glossary */
.accordion,
.glossary-list {
  display: grid;
  gap: 9px;
}

.accordion-item,
.glossary-item,
details.accordion-item {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: var(--white);
}

.accordion-trigger,
.accordion-item > summary,
.glossary-item > summary {
  position: relative;
  display: flex;
  min-height: 52px;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 13px 16px;
  color: var(--ink-850);
  cursor: pointer;
  font-size: 0.83rem;
  font-weight: 760;
  list-style: none;
  transition: background 150ms var(--ease-standard);
}

.accordion-item > summary::-webkit-details-marker,
.glossary-item > summary::-webkit-details-marker {
  display: none;
}

.accordion-trigger::after,
.accordion-item > summary::after,
.glossary-item > summary::after {
  width: 9px;
  height: 9px;
  flex: 0 0 9px;
  border-right: 2px solid var(--ink-600);
  border-bottom: 2px solid var(--ink-600);
  content: "";
  transform: rotate(45deg) translateY(-2px);
  transition: transform 160ms var(--ease-standard);
}

.accordion-item > summary:hover,
.glossary-item > summary:hover,
.accordion-trigger:hover {
  background: var(--ink-050);
}

.accordion-item[open] > summary,
.glossary-item[open] > summary,
.accordion-trigger[aria-expanded="true"] {
  background: var(--cyan-050);
  color: var(--cyan-700);
}

.accordion-item[open] > summary::after,
.glossary-item[open] > summary::after,
.accordion-trigger[aria-expanded="true"]::after {
  transform: rotate(225deg) translate(-2px, -2px);
}

.accordion-content,
.glossary-content {
  padding: 0 16px 16px;
  color: var(--text-muted);
  font-size: 0.82rem;
}

.glossary-index {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-bottom: 16px;
}

.glossary-index a {
  display: grid;
  width: 32px;
  height: 32px;
  place-items: center;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--white);
  color: var(--ink-700);
  font-size: 0.72rem;
  font-weight: 780;
  text-decoration: none;
}

.glossary-index a:hover,
.glossary-index a.active {
  border-color: var(--cyan-500);
  background: var(--cyan-100);
  color: var(--cyan-700);
}

.definition-grid {
  display: grid;
  grid-template-columns: minmax(130px, 0.35fr) minmax(0, 1fr);
  gap: 8px 18px;
  margin: 0;
}

.definition-grid dt {
  color: var(--ink-850);
  font-weight: 760;
}

.definition-grid dd {
  margin: 0;
  color: var(--text-muted);
}

/* Toasts and modal */
.toast-region,
.toast-container {
  position: fixed;
  z-index: 1500;
  right: 20px;
  bottom: 20px;
  display: grid;
  width: min(390px, calc(100vw - 32px));
  gap: 10px;
  pointer-events: none;
}

.toast {
  position: relative;
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto;
  align-items: start;
  gap: 10px;
  padding: 13px 14px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: rgb(255 255 255 / 0.96);
  color: var(--ink-850);
  box-shadow: var(--shadow-lg);
  pointer-events: auto;
  animation: toast-in 260ms var(--ease-standard) both;
  backdrop-filter: blur(12px);
}

@keyframes toast-in {
  from {
    opacity: 0;
    transform: translateX(18px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

.toast-icon {
  display: grid;
  width: 28px;
  height: 28px;
  place-items: center;
  border-radius: 8px;
  background: var(--cyan-100);
  color: var(--cyan-700);
}

.toast-title {
  display: block;
  margin-bottom: 2px;
  font-size: 0.8rem;
  font-weight: 780;
}

.toast-message {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.72rem;
}

.toast-success .toast-icon {
  background: var(--green-100);
  color: var(--green-700);
}

.toast-warning .toast-icon {
  background: var(--safety-100);
  color: var(--safety-700);
}

.toast-error .toast-icon {
  background: var(--red-100);
  color: var(--red-700);
}

.modal-backdrop,
.modal-layer {
  position: fixed;
  z-index: 1200;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgb(7 24 39 / 0.67);
  animation: fade-in 170ms ease both;
  backdrop-filter: blur(4px);
}

@keyframes fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

.modal {
  width: min(620px, 100%);
  max-height: min(86vh, 820px);
  overflow: auto;
  border: 1px solid rgb(255 255 255 / 0.22);
  border-radius: var(--radius-lg);
  background: var(--white);
  box-shadow: var(--shadow-lg);
  animation: modal-in 220ms var(--ease-standard) both;
}

@keyframes modal-in {
  from {
    opacity: 0;
    transform: translateY(12px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.modal-header,
.modal-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 18px 20px;
}

.modal-header {
  border-bottom: 1px solid var(--border);
}

.modal-header h2,
.modal-header h3 {
  margin: 0;
  font-size: 1.05rem;
}

.modal-body {
  padding: 20px;
}

.modal-footer {
  justify-content: flex-end;
  border-top: 1px solid var(--border);
  background: var(--ink-050);
}

/* Empty state */
.empty-state {
  display: grid;
  min-height: 290px;
  place-items: center;
  padding: 36px 22px;
  text-align: center;
}

.empty-state-inner {
  max-width: 440px;
}

.empty-icon {
  position: relative;
  display: grid;
  width: 74px;
  height: 74px;
  place-items: center;
  margin: 0 auto 18px;
  border: 1px dashed var(--cyan-400);
  border-radius: 22px;
  background: var(--cyan-050);
  color: var(--cyan-700);
}

.empty-icon::after {
  position: absolute;
  right: -7px;
  bottom: -7px;
  width: 23px;
  height: 23px;
  border: 5px solid var(--safety-400);
  border-radius: 50%;
  background: var(--white);
  content: "";
}

.empty-state h2,
.empty-state h3 {
  margin-bottom: 8px;
}

.empty-state p {
  margin-bottom: 18px;
  color: var(--text-muted);
}

/* Report */
.report,
.report-sheet {
  width: min(100%, 1060px);
  padding: clamp(24px, 4vw, 54px);
  margin: 0 auto;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--white);
  box-shadow: var(--shadow-sm);
}

.report-header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  gap: 24px;
  padding-bottom: 24px;
  border-bottom: 4px solid var(--ink-900);
}

.report-title {
  margin-bottom: 5px;
  font-size: clamp(1.65rem, 3vw, 2.5rem);
}

.report-meta {
  display: grid;
  grid-template-columns: auto auto;
  gap: 4px 16px;
  color: var(--text-muted);
  font-size: 0.73rem;
}

.report-meta dt {
  font-weight: 750;
}

.report-meta dd {
  margin: 0;
  color: var(--ink-850);
  text-align: right;
}

.report-section {
  padding: 26px 0;
  border-bottom: 1px solid var(--border);
  break-inside: avoid;
}

.report-section:last-child {
  border-bottom: 0;
}

.report-section h2 {
  margin-bottom: 14px;
  font-size: 1.15rem;
}

.report-total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  padding: 20px;
  border: 2px solid var(--ink-900);
  border-radius: 12px;
  background: var(--cream-050);
}

.report-total strong {
  font-size: clamp(1.4rem, 3vw, 2rem);
  font-variant-numeric: tabular-nums;
}

.report-signature {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 40px;
  margin-top: 50px;
}

.signature-line {
  padding-top: 8px;
  border-top: 1px solid var(--ink-700);
  color: var(--text-muted);
  font-size: 0.72rem;
}

/* Loading */
.skeleton {
  position: relative;
  overflow: hidden;
  border-radius: 7px;
  background: var(--ink-100);
  color: transparent !important;
}

.skeleton::after {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgb(255 255 255 / 0.7), transparent);
  content: "";
  animation: shimmer 1.35s infinite;
  transform: translateX(-100%);
}

@keyframes shimmer {
  100% { transform: translateX(100%); }
}

.spinner {
  width: 24px;
  height: 24px;
  border: 3px solid var(--cyan-100);
  border-top-color: var(--cyan-600);
  border-radius: 50%;
  animation: spin 700ms linear infinite;
}

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

/* Mobile navigation */
.mobile-nav,
.mobile-bottom-nav {
  display: none;
}

.sidebar-scrim {
  display: none;
}

/* Utilities */
.text-muted { color: var(--text-muted) !important; }
.text-soft { color: var(--text-soft) !important; }
.text-success { color: var(--green-700) !important; }
.text-warning { color: var(--safety-700) !important; }
.text-danger { color: var(--red-700) !important; }
.text-cyan { color: var(--cyan-700) !important; }
.text-right { text-align: right !important; }
.text-center { text-align: center !important; }
.mono { font-family: var(--font-mono) !important; }
.tabular { font-variant-numeric: tabular-nums !important; }
.nowrap { white-space: nowrap !important; }
.w-full { width: 100% !important; }
.mb-0 { margin-bottom: 0 !important; }
.mt-0 { margin-top: 0 !important; }
.mt-1 { margin-top: 8px !important; }
.mt-2 { margin-top: 16px !important; }
.mt-3 { margin-top: 24px !important; }
.mb-1 { margin-bottom: 8px !important; }
.mb-2 { margin-bottom: 16px !important; }
.mb-3 { margin-bottom: 24px !important; }

/* Responsive */
@media (max-width: 1240px) {
  :root {
    --sidebar-width: 250px;
  }

  .kpi-grid,
  .metrics-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .grid-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .hero {
    grid-template-columns: minmax(0, 1.05fr) minmax(280px, 0.75fr);
  }
}

@media (max-width: 980px) {
  :root {
    --topbar-height: 64px;
  }

  .shell,
  .app-shell {
    display: block;
  }

  .sidebar {
    width: min(326px, 88vw);
    box-shadow: var(--shadow-lg);
    transform: translateX(-105%);
    transition: transform 220ms var(--ease-standard);
  }

  .sidebar.open,
  .sidebar.is-open,
  body.nav-open .sidebar {
    transform: translateX(0);
  }

  .sidebar-scrim {
    position: fixed;
    z-index: 90;
    inset: 0;
    display: block;
    background: rgb(7 24 39 / 0.55);
    opacity: 0;
    pointer-events: none;
    transition: opacity 200ms ease;
    backdrop-filter: blur(2px);
  }

  body.nav-open .sidebar-scrim,
  .sidebar-scrim.active {
    opacity: 1;
    pointer-events: auto;
  }

  .workspace,
  .main-shell {
    grid-column: auto;
  }

  .menu-toggle,
  .mobile-nav-toggle {
    display: inline-flex;
  }

  .hero {
    min-height: auto;
    grid-template-columns: 1fr;
  }

  .hero h1,
  .hero h2 {
    max-width: 18ch;
  }

  .hero-visual {
    min-height: 230px;
    padding: 0 28px 32px;
  }

  .split-layout {
    grid-template-columns: 1fr;
  }

  .sticky-panel {
    position: static;
  }

  .grid-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .form-grid-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .table-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 720px) {
  :root {
    --topbar-height: 60px;
  }

  body {
    padding-bottom: 67px;
    font-size: 14px;
  }

  .topbar {
    gap: 8px;
    padding: 9px 13px;
  }

  .topbar-title .topbar-kicker,
  .topbar-end .btn-label,
  .topbar-actions .btn-label,
  .hide-mobile {
    display: none;
  }

  .topbar .btn,
  .topbar .button {
    width: 40px;
    min-height: 40px;
    padding: 0;
  }

  .content,
  .main-content {
    padding: 16px 13px 24px;
  }

  .view-header,
  .section-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 12px;
  }

  .hero {
    border-radius: 18px;
  }

  .hero-content {
    padding: 28px 22px 18px;
  }

  .hero-visual {
    min-height: 210px;
    padding: 6px 18px 26px;
  }

  .hero-stat {
    right: 14px;
    bottom: 14px;
    min-width: 140px;
  }

  .hero-actions .btn,
  .hero-actions .button {
    flex: 1 1 140px;
  }

  .kpi-grid,
  .metrics-grid,
  .grid-2,
  .grid-3,
  .grid-4,
  .form-grid,
  .form-grid-3,
  .report-signature {
    grid-template-columns: 1fr;
  }

  .card {
    padding: 17px;
  }

  .card-header,
  .panel-header {
    align-items: flex-start;
    flex-direction: column;
  }

  .house-visualizer,
  .house-panel,
  .house-canvas {
    min-height: 310px;
  }

  .visualizer-toolbar {
    top: 9px;
    right: 9px;
  }

  .phase-item,
  .phase-step {
    min-width: 138px;
  }

  .table-toolbar {
    align-items: stretch;
    flex-direction: column;
  }

  .table-toolbar .search-field {
    width: 100%;
  }

  .trace-step {
    grid-template-columns: 28px minmax(0, 1fr);
  }

  .trace-value,
  .formula-result {
    grid-column: 2;
    text-align: left;
  }

  .definition-grid {
    grid-template-columns: 1fr;
  }

  .definition-grid dd {
    margin-bottom: 10px;
  }

  .report,
  .report-sheet {
    padding: 22px 17px;
    border-radius: 10px;
  }

  .report-header {
    grid-template-columns: 1fr;
  }

  .mobile-nav,
  .mobile-bottom-nav {
    position: fixed;
    z-index: 75;
    right: 0;
    bottom: 0;
    left: 0;
    display: grid;
    grid-template-columns: repeat(var(--mobile-items, 5), minmax(0, 1fr));
    min-height: 64px;
    padding: 5px max(7px, env(safe-area-inset-right)) max(5px, env(safe-area-inset-bottom)) max(7px, env(safe-area-inset-left));
    border-top: 1px solid var(--border);
    background: rgb(255 255 255 / 0.95);
    box-shadow: 0 -7px 24px rgb(7 24 39 / 0.1);
    backdrop-filter: blur(16px);
  }

  .mobile-nav a,
  .mobile-nav button,
  .mobile-bottom-nav a,
  .mobile-bottom-nav button {
    display: grid;
    min-width: 0;
    place-items: center;
    align-content: center;
    gap: 2px;
    padding: 4px 2px;
    border-radius: 8px;
    background: transparent;
    color: var(--text-muted);
    font-size: 0.58rem;
    font-weight: 720;
    text-decoration: none;
  }

  .mobile-nav a.active,
  .mobile-nav button.active,
  .mobile-nav [aria-current="page"],
  .mobile-bottom-nav a.active,
  .mobile-bottom-nav button.active,
  .mobile-bottom-nav [aria-current="page"] {
    background: var(--cyan-100);
    color: var(--cyan-700);
  }

  .mobile-nav svg,
  .mobile-bottom-nav svg {
    width: 20px;
    height: 20px;
  }

  .toast-region,
  .toast-container {
    right: 12px;
    bottom: 78px;
    left: 12px;
    width: auto;
  }

  .modal-backdrop,
  .modal-layer {
    align-items: end;
    padding: 0;
  }

  .modal {
    width: 100%;
    max-height: 90dvh;
    border-radius: 20px 20px 0 0;
  }
}

@media (max-width: 430px) {
  .kpi-grid,
  .metrics-grid {
    grid-template-columns: 1fr;
  }

  .kpi,
  .kpi-card,
  .metric-card {
    padding: 15px 16px;
  }

  .table-summary {
    grid-template-columns: 1fr;
  }

  .source-card {
    grid-template-columns: 36px minmax(0, 1fr);
  }

  .source-card .source-status,
  .source-card .confidence-badge {
    grid-column: 2;
    justify-self: start;
  }

  .input-group {
    flex-wrap: wrap;
  }

  .input-group > input,
  .input-group > select,
  .input-group > .input {
    flex-basis: calc(100% - 54px);
  }
}

/* High contrast preference */
@media (prefers-contrast: more) {
  :root {
    --border: #9aaeba;
    --border-strong: #758c9b;
    --text-muted: #334e61;
  }

  .card,
  .panel,
  .kpi,
  .kpi-card,
  .metric-card {
    border-width: 2px;
  }

  .badge,
  .status-badge,
  .source-status,
  .confidence-badge {
    border-color: currentColor;
  }
}

/* Motion preference */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* Print */
@page {
  size: letter portrait;
  margin: 12mm;
}

@media print {
  :root {
    --text: #000000;
    --text-muted: #333333;
    --border: #b8b8b8;
  }

  html,
  body {
    width: 100%;
    min-width: 0;
    height: auto;
    padding: 0;
    background: #ffffff !important;
    color: #000000;
    font-size: 10pt;
  }

  body * {
    print-color-adjust: exact;
    -webkit-print-color-adjust: exact;
  }

  .sidebar,
  .topbar,
  .mobile-nav,
  .mobile-bottom-nav,
  .sidebar-scrim,
  .toast-region,
  .toast-container,
  .modal-backdrop,
  .modal-layer,
  .no-print,
  button,
  .btn,
  .button,
  .icon-btn,
  .visualizer-toolbar,
  .table-toolbar {
    display: none !important;
  }

  .shell,
  .app-shell,
  .workspace,
  .main-shell,
  .content,
  .main-content {
    display: block;
    width: 100%;
    min-height: 0;
    padding: 0;
    margin: 0;
  }

  .view {
    display: none !important;
  }

  .view.active,
  .view.is-active,
  .view.print-view,
  .report-view {
    display: block !important;
    animation: none;
  }

  .report,
  .report-sheet {
    width: 100%;
    padding: 0;
    border: 0;
    border-radius: 0;
    box-shadow: none;
  }

  .card,
  .panel,
  .kpi,
  .kpi-card,
  .metric-card {
    border-color: #b8b8b8;
    break-inside: avoid;
    box-shadow: none;
  }

  .data-table-wrap,
  .table-wrap,
  .table-scroll {
    overflow: visible;
  }

  .data-table,
  .estimate-table {
    min-width: 0;
    font-size: 7.5pt;
  }

  .data-table th,
  .data-table td,
  .estimate-table th,
  .estimate-table td {
    position: static !important;
    padding: 5px 6px;
    color: #000000;
  }

  a {
    color: #000000;
    text-decoration: none;
  }

  .report-section,
  table,
  figure {
    break-inside: avoid;
  }

  h1,
  h2,
  h3,
  h4 {
    break-after: avoid;
  }
}

/* --------------------------------------------------------------------------
   Intégration ESTIM — composants de l’application
   -------------------------------------------------------------------------- */
.skip-link {
  position: fixed;
  z-index: 5000;
  top: 10px;
  left: 10px;
  padding: 10px 14px;
  border-radius: 8px;
  background: var(--safety-400);
  color: var(--ink-950);
  font-weight: 800;
  transform: translateY(-150%);
}

.skip-link:focus { transform: translateY(0); }

.brand {
  color: inherit;
  text-decoration: none;
}

.brand .brand-mark {
  width: 46px;
  height: 46px;
  padding: 8px;
}

.brand > span { min-width: 0; }
.brand strong { display: block; color: var(--white); font-size: 1.25rem; letter-spacing: .08em; line-height: 1; }
.brand small { display: block; margin-top: 6px; color: rgb(255 255 255 / .55); font-size: .68rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }

.primary-nav { flex: 1; align-content: start; gap: 5px; overflow-y: auto; padding: 20px 13px; }
.nav-item.is-active .nav-icon { color: var(--cyan-400); }

.sidebar-project {
  position: relative;
  z-index: 1;
  margin: 10px 14px 14px;
  padding: 15px;
  border: 1px solid rgb(255 255 255 / .12);
  border-radius: 14px;
  background: rgb(255 255 255 / .055);
}

.sidebar-project .eyebrow { margin-bottom: 6px; color: var(--cyan-200); font-size: .62rem; }
.sidebar-project .eyebrow::before { width: 14px; height: 2px; }
.sidebar-project strong { display: block; overflow: hidden; color: var(--white); font-size: .83rem; text-overflow: ellipsis; white-space: nowrap; }
.sidebar-project small { display: block; color: rgb(255 255 255 / .52); font-size: .67rem; }
.mini-progress { height: 5px; margin: 11px 0 7px; overflow: hidden; border-radius: 99px; background: rgb(255 255 255 / .11); }
.mini-progress span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--cyan-400), var(--safety-400)); transition: width .35s ease; }
.sidebar-footer { display: flex; align-items: center; gap: 9px; color: rgb(255 255 255 / .55); font-size: .69rem; }
.region-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--green-500); box-shadow: 0 0 0 4px rgb(44 149 103 / .15); }

.topbar { grid-column: 2; }
.topbar-title { margin-right: auto; }
.topbar-title .eyebrow { margin: 0 0 2px; }
.topbar-title .eyebrow::before { display: none; }
.mode-switch {
  display: flex;
  padding: 3px;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: var(--ink-050);
}
.mode-switch button { min-height: 32px; padding: 5px 11px; border-radius: 8px; background: transparent; color: var(--text-muted); cursor: pointer; font-size: .72rem; font-weight: 750; }
.mode-switch button.is-active { background: var(--white); color: var(--ink-900); box-shadow: var(--shadow-xs); }
.save-status { display: flex; align-items: center; gap: 7px; color: var(--text-muted); font-size: .71rem; transition: opacity .2s ease; white-space: nowrap; }
.save-status span { color: var(--green-500); font-size: .62rem; }
.save-status.is-saving { opacity: .55; }
.avatar-button { display: grid; width: 38px; height: 38px; flex: 0 0 auto; place-items: center; border-radius: 11px; background: var(--ink-900); color: white; cursor: pointer; font-size: .72rem; font-weight: 850; }
.icon-button { display: grid; width: 38px; height: 38px; place-items: center; border-radius: 10px; background: var(--ink-050); color: var(--ink-800); cursor: pointer; font-size: 1.15rem; }

.workspace.main-content { width: 100%; max-width: var(--content-max); padding: clamp(20px, 3vw, 46px); margin-inline: auto; }
.section-tag { display: inline-flex; align-items: center; gap: 8px; padding: 6px 10px; margin-bottom: 17px; border: 1px solid rgb(37 186 210 / .25); border-radius: 999px; background: rgb(37 186 210 / .1); color: var(--cyan-200); font-size: .67rem; font-weight: 850; letter-spacing: .09em; text-transform: uppercase; }
.page-intro .section-tag { border-color: var(--cyan-200); background: var(--cyan-050); color: var(--cyan-700); }
.hero-copy em { color: var(--safety-400); font-style: normal; }
.hero-copy { min-width: 0; }
.hero-copy .section-tag::before { width: 6px; height: 6px; border-radius: 50%; background: var(--cyan-400); content: ''; }
.hero-actions .button-quiet { border-color: rgb(255 255 255 / .22); background: rgb(255 255 255 / .08); color: var(--white); }
.hero-proof { display: flex; flex-wrap: wrap; gap: 18px; margin-top: 28px; color: rgb(255 255 255 / .55); font-size: .7rem; }
.hero-proof span { display: flex; align-items: baseline; gap: 5px; }
.hero-proof strong { color: var(--white); font-size: 1rem; }

.house-panel.hero-visual {
  position: relative;
  display: grid;
  min-height: 430px;
  grid-template-rows: auto minmax(0, 1fr) auto;
  align-items: stretch;
  justify-items: stretch;
  padding: 18px;
  border: 0;
  border-radius: 0;
  background: linear-gradient(145deg, rgb(255 255 255 / .96), rgb(231 244 242 / .88));
  box-shadow: none;
}
.house-panel.hero-visual::after { display: none; }
.house-stage-toolbar,
.house-stage-caption { position: relative; z-index: 3; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.house-stage-toolbar { color: var(--ink-700); font-size: .7rem; }
.house-stage-toolbar > span { display: flex; align-items: center; gap: 7px; }
.house-stage-toolbar strong { color: var(--ink-900); font-size: .74rem; }
.visual-controls { display: flex; align-items: center; gap: 6px; }
.visual-control { min-height: 29px; padding: 4px 8px; border: 1px solid var(--border); border-radius: 7px; background: rgb(255 255 255 / .82); color: var(--ink-700); cursor: pointer; font-size: .61rem; font-weight: 800; }
.visual-control:hover,
.visual-control[aria-pressed='true'] { border-color: var(--cyan-400); background: var(--cyan-050); color: var(--cyan-700); }
.status-live { width: 8px; height: 8px; border-radius: 50%; background: var(--green-500); box-shadow: 0 0 0 4px var(--green-100); }
.house-visual { align-self: center; width: 100%; max-height: 330px; filter: drop-shadow(0 16px 18px rgb(7 24 39 / .12)); }
.construction-visual-stack { position: relative; display: grid; width: 100%; min-height: 0; place-items: center; overflow: hidden; border-radius: 14px; background: var(--ink-100); }
.construction-visual-stack > * { grid-area: 1 / 1; }
.photo-visual { position: relative; width: 100%; height: 100%; min-height: 330px; overflow: hidden; background: var(--ink-900); }
.photo-visual.is-hidden { display: none; }
.photo-stage-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; opacity: 0; transform: scale(1.018); transition: opacity .55s ease, transform 1.2s var(--ease-standard); }
.photo-stage-image.is-active { opacity: 1; transform: scale(1); }
.photo-visual::after { position: absolute; inset: 0; background: linear-gradient(180deg, transparent 58%, rgb(7 24 39 / .48)); content: ''; pointer-events: none; }
.photo-authenticity { position: absolute; z-index: 2; left: 13px; bottom: 13px; display: grid; grid-template-columns: auto 1fr; column-gap: 7px; padding: 8px 10px; border: 1px solid rgb(255 255 255 / .24); border-radius: 9px; background: rgb(7 24 39 / .7); color: white; backdrop-filter: blur(8px); }
.photo-authenticity > span { grid-row: 1 / span 2; align-self: center; color: var(--green-500); font-size: .56rem; }
.photo-authenticity strong { font-size: .65rem; }
.photo-authenticity small { color: rgb(255 255 255 / .62); font-size: .54rem; }
.house-visual.is-technical-hidden { display: none; }
.house-layer { opacity: 0; transform: translateY(5px); transition: opacity .35s ease, transform .35s ease; }
.house-layer:not(.is-visible) { pointer-events: none; }
.house-layer.is-visible { opacity: .82; transform: translateY(0); cursor: pointer; }
.house-layer.is-visible:hover,
.house-layer.is-current { opacity: 1; filter: saturate(1.12) drop-shadow(0 4px 4px rgb(0 127 153 / .16)); outline: none; }
.house-layer:focus-visible { outline: none; filter: saturate(1.2) drop-shadow(0 0 6px var(--safety-500)); }
.house-layer.is-current { animation: place-construction-layer .58s var(--ease-standard) both; }
@keyframes place-construction-layer {
  0% { opacity: 0; transform: translateY(-26px) scale(.97); }
  70% { opacity: 1; transform: translateY(3px) scale(1.01); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}
.house-layer[data-house-layer='2'].is-current,
.house-layer[data-house-layer='3'].is-current { transform-origin: center bottom; animation-name: foundation-rise; }
@keyframes foundation-rise { from { opacity: 0; transform: translateY(22px) scaleY(.45); } to { opacity: 1; transform: translateY(0) scaleY(1); } }
.house-layer[data-house-layer='4'].is-current,
.house-layer[data-house-layer='6'].is-current,
.house-layer[data-house-layer='8'].is-current,
.house-layer[data-house-layer='10'].is-current { transform-box: fill-box; transform-origin: center bottom; animation-name: walls-rise; }
@keyframes walls-rise { from { opacity: 0; transform: scaleY(.08); } to { opacity: 1; transform: scaleY(1); } }
.house-layer[data-house-layer='5'].is-current,
.house-layer[data-house-layer='7'].is-current { animation-name: roof-lower; }
@keyframes roof-lower { from { opacity: 0; transform: translateY(-55px); } to { opacity: 1; transform: translateY(0); } }
.house-visual.is-exploded .house-layer[data-house-layer='2'] { transform: translateY(28px); }
.house-visual.is-exploded .house-layer[data-house-layer='3'] { transform: translateY(17px); }
.house-visual.is-exploded .house-layer[data-house-layer='4'] { transform: translateY(4px); }
.house-visual.is-exploded .house-layer[data-house-layer='5'],
.house-visual.is-exploded .house-layer[data-house-layer='6'] { transform: translateY(-21px); }
.house-visual.is-exploded .house-layer[data-house-layer='7'] { transform: translateY(-34px); }
.house-visual.is-exploded .house-layer[data-house-layer='8'],
.house-visual.is-exploded .house-layer[data-house-layer='9'],
.house-visual.is-exploded .house-layer[data-house-layer='10'],
.house-visual.is-exploded .house-layer[data-house-layer='11'],
.house-visual.is-exploded .house-layer[data-house-layer='12'] { transform: translateX(25px); }
.house-stage-caption { padding: 12px 13px; border: 1px solid var(--border); border-radius: 12px; background: rgb(255 255 255 / .86); box-shadow: var(--shadow-xs); }
.house-stage-caption .eyebrow { display: block; margin: 0 0 1px; font-size: .56rem; }
.house-stage-caption .eyebrow::before { display: none; }
.house-stage-caption strong { display: block; color: var(--ink-900); font-size: .78rem; }
.house-stage-caption small { display: block; margin-top: 2px; color: var(--text-muted); font-size: .58rem; }

.button-quiet { border-color: var(--border); background: var(--white); color: var(--ink-800); }
.button-quiet:hover { border-color: var(--cyan-400); background: var(--cyan-050); color: var(--ink-900); }
.button-dark { background: var(--ink-900); }
.button-small { min-height: 34px; padding: 6px 11px; font-size: .72rem; }
.text-button { padding: 4px; background: transparent; color: var(--cyan-700); cursor: pointer; font-size: .76rem; font-weight: 800; }
.danger-text { color: var(--red-700); }

.kpi-card { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 14px; }
.kpi-card > div { position: relative; z-index: 2; min-width: 0; }
.kpi-card > div > span { display: block; color: var(--text-muted); font-size: .67rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.kpi-card > div > strong { display: block; margin: 4px 0 2px; overflow: hidden; color: var(--ink-900); font-size: clamp(1.1rem, 1.8vw, 1.55rem); font-variant-numeric: tabular-nums; letter-spacing: -.04em; text-overflow: ellipsis; white-space: nowrap; }
.kpi-card > div > small { display: block; font-size: .68rem; }
.kpi-icon { position: relative; z-index: 2; width: 42px; height: 42px; font-size: 1rem; font-weight: 850; }
.kpi-money { background: var(--green-100); color: var(--green-700); }
.kpi-people { background: var(--safety-100); color: var(--safety-700); }

.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(280px, .45fr); gap: 18px; }
.phase-overview-card,
.next-action-card { min-height: 310px; }
.card-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 15px; margin-bottom: 17px; }
.card-heading h3,
.card-heading h4 { margin: 0; }
.card-heading .eyebrow { margin-bottom: 4px; }
.phase-rail .phase-node { position: relative; display: grid; min-width: 90px; flex: 1 0 90px; gap: 9px; justify-items: center; padding: 12px 8px; border: 1px solid var(--border); border-radius: 12px; background: var(--white); color: var(--text-muted); cursor: pointer; text-align: center; }
.phase-node > span { display: grid; width: 30px; height: 30px; place-items: center; border-radius: 50%; background: var(--ink-100); color: var(--ink-700); font-size: .68rem; font-weight: 850; }
.phase-node small { font-size: .65rem; line-height: 1.15; }
.phase-node.is-current { border-color: var(--cyan-400); background: var(--cyan-050); box-shadow: 0 0 0 2px var(--cyan-100); }
.phase-node.is-current > span { background: var(--cyan-600); color: white; }
.phase-node.is-complete > span { background: var(--green-100); color: var(--green-700); }
.next-action-card { position: relative; overflow: hidden; padding: 28px; background: linear-gradient(145deg, var(--safety-100), var(--cream-050)); }
.next-action-card::after { position: absolute; right: -42px; bottom: -50px; width: 160px; height: 160px; border: 25px solid rgb(242 189 46 / .15); border-radius: 50%; content: ''; }
.next-action-card > * { position: relative; z-index: 1; }
.card-number { float: right; color: rgb(174 125 0 / .17); font-size: 4rem; font-weight: 900; line-height: .8; }
.next-action-card h3 { max-width: 16ch; margin: 15px 0 10px; font-size: 1.55rem; }
.next-action-card p { color: var(--text-muted); }
.suite-overview-card { margin-top: 18px; padding: 24px; }
.suite-overview-card .card-heading { align-items: flex-start; }
.suite-overview-card .card-heading p { max-width: 72ch; margin-top: 5px; color: var(--text-muted); font-size: .74rem; }
.suite-count { flex: none; padding: 7px 10px; border-radius: 99px; background: var(--cyan-050); color: var(--cyan-700); font-size: .65rem; font-weight: 800; }
.studio-suite-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; margin-top: 18px; }
.studio-card { display: flex; min-width: 0; flex-direction: column; overflow: hidden; border: 1px solid var(--border); border-radius: 13px; background: white; color: inherit; cursor: pointer; text-align: left; transition: transform .2s var(--ease-standard), border-color .2s ease, box-shadow .2s ease; }
.studio-card:hover { border-color: var(--studio-accent); box-shadow: var(--shadow-sm); transform: translateY(-2px); }
.studio-card:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.studio-card.is-active { border-color: var(--studio-accent); }
.studio-card-image { position: relative; display: block; aspect-ratio: 16 / 8.5; overflow: hidden; background: var(--ink-200); }
.studio-card-image::after { position: absolute; inset: 38% 0 0; content: ''; background: linear-gradient(180deg, transparent, rgb(7 24 39 / .62)); }
.studio-card-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease-standard); }
.studio-card:hover .studio-card-image img { transform: scale(1.035); }
.studio-card-image i { position: absolute; z-index: 1; right: 10px; bottom: 9px; padding: 4px 7px; border-radius: 99px; background: rgb(255 255 255 / .9); color: var(--ink-800); font-size: .54rem; font-style: normal; font-weight: 850; }
.studio-card.is-active .studio-card-image i { background: var(--studio-accent); color: white; }
.studio-card-copy { display: flex; min-height: 174px; flex: 1; flex-direction: column; padding: 14px; }
.studio-card-copy small { overflow: hidden; color: var(--studio-accent); font-size: .55rem; font-weight: 850; letter-spacing: .07em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.studio-card-copy strong { margin: 5px 0 6px; color: var(--ink-900); font-size: .92rem; }
.studio-card-copy > span { display: -webkit-box; overflow: hidden; color: var(--text-muted); font-size: .66rem; line-height: 1.5; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.studio-card-copy b { margin-top: auto; padding-top: 11px; color: var(--ink-600); font-size: .57rem; font-weight: 750; }
.studio-modal-card { width: min(820px, calc(100vw - 28px)); }
#studio-dialog-content { padding: 20px; }
.studio-dialog-hero { position: relative; min-height: 230px; overflow: hidden; border-radius: 13px; background: var(--ink-900); }
.studio-dialog-hero::after { position: absolute; inset: 25% 0 0; content: ''; background: linear-gradient(180deg, transparent, rgb(7 24 39 / .86)); }
.studio-dialog-hero img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.studio-dialog-hero > div { position: absolute; z-index: 1; right: 22px; bottom: 20px; left: 22px; color: white; }
.studio-dialog-hero span { font-size: .61rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.studio-dialog-hero p { max-width: 70ch; margin-top: 6px; color: rgb(255 255 255 / .82); font-size: .78rem; }
.studio-dialog-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 9px; margin: 14px 0; }
.studio-dialog-stats div { padding: 11px; border: 1px solid var(--border); border-radius: 9px; background: var(--surface-soft); text-align: center; }
.studio-dialog-stats strong { display: block; color: var(--ink-900); font-size: 1.05rem; }
.studio-dialog-stats span { color: var(--text-muted); font-size: .6rem; }
.studio-dialog-section { padding: 14px 0; border-top: 1px solid var(--border); }
.studio-dialog-section h3 { margin-bottom: 10px; font-size: .86rem; }
.studio-dialog-section > p { color: var(--text-muted); font-size: .7rem; }
.studio-dialog-section ol { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; list-style: none; }
.studio-dialog-section li { display: grid; grid-template-columns: 28px 1fr; gap: 8px; padding: 8px; border-radius: 8px; background: var(--surface-soft); }
.studio-dialog-section li > span { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 50%; background: var(--ink-800); color: white; font-size: .55rem; font-weight: 800; }
.studio-dialog-section li strong { display: block; color: var(--ink-800); font-size: .68rem; }
.studio-dialog-section li small { display: block; margin-top: 2px; color: var(--text-muted); font-size: .58rem; line-height: 1.4; }
.studio-chip-list { display: flex; flex-wrap: wrap; gap: 6px; }
.studio-chip-list span { padding: 6px 8px; border: 1px solid var(--border); border-radius: 99px; background: white; color: var(--ink-700); font-size: .61rem; }
.studio-access-note { padding: 11px 12px; border-left: 3px solid var(--cyan-500); border-radius: 7px; background: var(--cyan-050); color: var(--ink-700); font-size: .68rem; }
.mission-meta { display: flex; gap: 12px; margin: 18px 0; color: var(--safety-700); font-size: .7rem; font-weight: 750; }

.page-intro { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 24px; }
.page-intro h2 { margin: 0 0 6px; }
.page-intro p { max-width: 74ch; margin: 0; color: var(--text-muted); }
.page-intro-stat { display: grid; min-width: 150px; padding: 13px 16px; border-left: 4px solid var(--safety-500); background: var(--white); box-shadow: var(--shadow-xs); }
.page-intro-stat strong { font-size: 1.45rem; }
.page-intro-stat span { color: var(--text-muted); font-size: .68rem; }
.toolbar { display: flex; flex-wrap: wrap; gap: 8px; }

.path-layout { display: grid; grid-template-columns: minmax(260px, 340px) minmax(0, 1fr); gap: 18px; align-items: start; }
.phase-list-panel { position: sticky; top: calc(var(--topbar-height) + 18px); max-height: calc(100vh - var(--topbar-height) - 40px); overflow: auto; padding: 12px; }
.panel-filter { padding: 5px 5px 12px; }
.panel-filter label { display: block; margin-bottom: 6px; color: var(--text-muted); font-size: .67rem; font-weight: 800; text-transform: uppercase; }
.panel-filter input,
.search-field input { width: 100%; min-height: 42px; border: 1px solid var(--border); border-radius: 10px; background: var(--ink-050); }
.panel-filter input { padding: 9px 11px; }
.phase-list { display: grid; gap: 5px; }
.phase-list-item { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 10px; width: 100%; min-height: 62px; padding: 9px; border: 1px solid transparent; border-radius: 10px; background: transparent; color: var(--text-muted); cursor: pointer; text-align: left; }
.phase-list-item:hover { background: var(--ink-050); }
.phase-list-item.is-active { border-color: var(--cyan-200); background: var(--cyan-050); color: var(--ink-800); }
.phase-index { display: grid; width: 32px; height: 32px; place-items: center; border-radius: 9px; background: var(--ink-100); color: var(--ink-700); font-size: .65rem; font-weight: 850; }
.phase-list-item.is-active .phase-index { background: var(--cyan-600); color: white; }
.phase-list-item strong { display: block; color: var(--ink-850); font-size: .78rem; }
.phase-list-item small { display: block; overflow: hidden; font-size: .63rem; text-overflow: ellipsis; white-space: nowrap; }
.phase-arrow { color: var(--ink-300); font-size: 1.4rem; }
.lesson-panel { padding: clamp(22px, 3vw, 38px); }
.lesson-hero { display: flex; justify-content: space-between; gap: 24px; padding-bottom: 22px; border-bottom: 1px solid var(--border); }
.lesson-number { display: block; margin-bottom: 6px; color: var(--cyan-700); font-size: .68rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.lesson-hero h3 { margin: 0 0 7px; font-size: clamp(1.5rem, 2.5vw, 2.2rem); }
.lesson-hero p { max-width: 70ch; margin: 0; color: var(--text-muted); }
.lesson-status { align-self: start; padding: 6px 10px; border-radius: 999px; background: var(--safety-100); color: var(--safety-700); font-size: .66rem; font-weight: 800; white-space: nowrap; }
.lesson-status.is-complete { background: var(--green-100); color: var(--green-700); }
.six-m-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 7px; margin: 22px 0; }
.six-m-grid div { display: grid; justify-items: center; gap: 5px; padding: 10px 5px; border: 1px solid var(--border); border-radius: 9px; background: var(--ink-050); text-align: center; }
.six-m-grid span { display: grid; width: 24px; height: 24px; place-items: center; border-radius: 50%; background: var(--ink-900); color: white; font-size: .62rem; }
.six-m-grid strong { font-size: .62rem; }
.lesson-section { padding: 21px 0; border-top: 1px solid var(--border); }
.check-list { display: grid; gap: 8px; padding: 0; list-style: none; }
.check-list li { position: relative; padding-left: 26px; }
.check-list li::before { position: absolute; left: 0; top: 1px; display: grid; width: 18px; height: 18px; place-items: center; border-radius: 5px; background: var(--green-100); color: var(--green-700); content: '✓'; font-size: .65rem; font-weight: 900; }
.method-steps { display: grid; gap: 10px; padding: 0; list-style: none; }
.method-steps li { display: grid; grid-template-columns: 28px minmax(0, 1fr); align-items: start; gap: 10px; }
.method-steps li > span { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 8px; background: var(--cyan-100); color: var(--cyan-700); font-size: .65rem; font-weight: 850; }
.method-steps p { margin: 3px 0 0; }
.mode-panel { margin: 10px 0 20px; padding: 18px; border: 1px solid var(--border); border-radius: 12px; }
.mode-panel-heading span { display: block; margin-bottom: 4px; font-size: .58rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.mode-panel-heading h4 { margin: 0 0 9px; font-size: 1rem; }
.mode-panel > p { color: var(--text-muted); font-size: .73rem; }
.mode-learn { border-color: var(--cyan-200); background: var(--cyan-050); }
.mode-learn .mode-panel-heading span { color: var(--cyan-700); }
.mode-learn code { display: block; margin: 10px 0; padding: 10px; border-radius: 8px; background: var(--ink-900); color: white; font: 700 .68rem/1.45 var(--font-sans); }
.mode-learn-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.mode-learn-columns ol { display: grid; gap: 6px; padding-left: 20px; color: var(--ink-700); font-size: .68rem; }
.mode-learn-columns strong { display: block; margin-bottom: 3px; color: var(--ink-800); font-size: .64rem; text-transform: uppercase; }
.mode-learn-columns p { margin: 0 0 9px; color: var(--text-muted); font-size: .66rem; }
.mode-practice { border-color: var(--safety-300); background: var(--safety-100); }
.mode-practice .mode-panel-heading span { color: var(--safety-700); }
.mode-task-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 7px; margin: 13px 0; }
.mode-task-grid label { display: flex; align-items: flex-start; gap: 8px; padding: 9px; border: 1px solid rgb(174 125 0 / .18); border-radius: 8px; background: rgb(255 255 255 / .72); cursor: pointer; }
.mode-task-grid input { margin-top: 3px; accent-color: var(--safety-600); }
.mode-task-grid label > span { color: var(--ink-700); font-size: .67rem; }
.mode-task-grid b { display: inline-grid; width: 18px; height: 18px; margin-right: 5px; place-items: center; border-radius: 50%; background: var(--safety-600); color: white; font-size: .53rem; }
.mode-practice details { margin: 10px 0; padding: 9px 11px; border-radius: 8px; background: white; }
.mode-practice summary { color: var(--safety-700); cursor: pointer; font-size: .67rem; font-weight: 800; }
.mode-practice details p,
.mode-practice > small { color: var(--text-muted); font-size: .65rem; }
.mode-project { border-color: var(--green-300); background: var(--green-050); }
.mode-project .mode-panel-heading span { color: var(--green-700); }
.project-mode-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; margin: 12px 0; }
.project-mode-stats div { padding: 10px; border-radius: 8px; background: white; text-align: center; }
.project-mode-stats strong { display: block; color: var(--ink-900); font-size: .9rem; }
.project-mode-stats span { color: var(--text-muted); font-size: .57rem; }
.phase-estimate-preview { padding: 18px; border: 1px solid var(--border); border-radius: 13px; background: var(--ink-050); }
.preview-line { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 14px; padding: 10px 0; border-top: 1px solid var(--border); font-size: .77rem; }
.preview-line span small { display: block; }
.preview-line b { min-width: 90px; text-align: right; }
.lesson-actions { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; padding-top: 23px; }

.lab-tabs,
.library-tabs { display: flex; gap: 5px; padding: 4px; margin-bottom: 17px; overflow-x: auto; border: 1px solid var(--border); border-radius: 12px; background: var(--white); }
.lab-tabs button,
.library-tabs button { min-height: 38px; flex: 1 0 auto; padding: 7px 13px; border-radius: 8px; background: transparent; color: var(--text-muted); cursor: pointer; font-size: .75rem; font-weight: 750; }
.lab-tabs button[aria-selected='true'],
.library-tabs button[aria-selected='true'] { background: var(--ink-900); color: white; box-shadow: var(--shadow-xs); }
.confidence-legend { display: flex; align-items: center; gap: 9px; color: var(--text-muted); font-size: .7rem; }
.lab-workbench { display: grid; grid-template-columns: minmax(330px, .82fr) minmax(0, 1.18fr); gap: 18px; align-items: start; }
.lab-input-card,
.lab-result-card { min-height: 550px; padding: clamp(20px, 2.5vw, 30px); }
.formula-chip { padding: 5px 8px; border-radius: 7px; background: var(--cyan-050); color: var(--cyan-700); font-family: var(--font-mono); font-size: .62rem; }
.lab-intro { color: var(--text-muted); }
.calculator-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; margin-top: 22px; }
.calculator-field { display: grid; gap: 6px; color: var(--ink-700); font-size: .7rem; font-weight: 750; }
.calculator-field div { display: flex; align-items: center; overflow: hidden; border: 1px solid var(--border); border-radius: 10px; background: var(--white); }
.calculator-field input { width: 100%; min-width: 0; min-height: 43px; padding: 8px 10px; border: 0; outline: 0; font-variant-numeric: tabular-nums; }
.calculator-field div:focus-within { border-color: var(--cyan-500); box-shadow: 0 0 0 3px var(--cyan-100); }
.calculator-field b { min-width: 58px; padding: 7px 8px; border-left: 1px solid var(--border); background: var(--ink-050); color: var(--text-muted); font-size: .64rem; text-align: center; }
.calculator-actions { display: flex; gap: 8px; margin-top: 20px; }
.result-placeholder { display: grid; min-height: 460px; align-content: center; justify-items: center; color: var(--text-muted); text-align: center; }
.result-icon { display: grid; width: 62px; height: 62px; place-items: center; margin-bottom: 15px; border: 1px dashed var(--cyan-400); border-radius: 18px; background: var(--cyan-050); color: var(--cyan-700); font-size: 1.6rem; }
.result-placeholder h3 { margin: 0 0 6px; }
.result-placeholder p { max-width: 42ch; }
.result-heading { padding-bottom: 16px; border-bottom: 1px solid var(--border); }
.result-heading h3 { margin: 0 0 7px; font-size: 1.65rem; }
.result-heading p { margin: 0; color: var(--text-muted); }
.result-kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 17px 0; }
.result-kpis > div { padding: 12px; border-radius: 10px; background: var(--ink-050); }
.result-kpis span,
.result-kpis small { display: block; color: var(--text-muted); font-size: .62rem; }
.result-kpis strong { display: block; margin: 3px 0; font-size: 1.1rem; }
.calculation-trace { padding: 17px; border: 1px solid var(--border); border-radius: 13px; background: var(--cream-050); }
.calculation-trace ol { display: grid; gap: 13px; padding: 0; margin: 0; list-style: none; }
.calculation-trace li { display: grid; grid-template-columns: 26px 1fr; gap: 9px; }
.calculation-trace li > span { display: grid; width: 25px; height: 25px; place-items: center; border-radius: 50%; background: var(--ink-900); color: white; font-size: .61rem; }
.calculation-trace li div { min-width: 0; }
.calculation-trace li strong,
.calculation-trace code,
.calculation-trace small { display: block; }
.calculation-trace code { padding: 5px 7px; margin: 4px 0; overflow-x: auto; border-radius: 6px; background: white; color: var(--cyan-700); font-size: .7rem; }
.interpretation { padding: 14px 16px; margin-top: 14px; border-left: 4px solid var(--safety-500); background: var(--safety-100); }
.interpretation p { margin: 3px 0 0; color: var(--safety-700); }

.project-summary { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 9px; margin-bottom: 17px; }
.summary-chip { position: relative; overflow: hidden; padding: 14px 15px; border: 1px solid var(--border); border-radius: 11px; background: white; }
.summary-chip::before { position: absolute; inset: 0 auto 0 0; width: 4px; background: var(--chip-color); content: ''; }
.summary-chip span { display: block; color: var(--text-muted); font-size: .65rem; }
.summary-chip strong { display: block; margin-top: 4px; overflow: hidden; font-size: 1rem; font-variant-numeric: tabular-nums; text-overflow: ellipsis; white-space: nowrap; }
.estimate-card { padding: 0; overflow: hidden; }
.estimate-toolbar { display: flex; align-items: center; gap: 9px; padding: 13px; border-bottom: 1px solid var(--border); }
.search-field { position: relative; display: flex; min-width: 220px; flex: 1; align-items: center; }
.search-field > span { position: absolute; left: 12px; color: var(--text-muted); }
.search-field input { padding: 8px 11px 8px 34px; }
.select-field { display: flex; align-items: center; gap: 7px; color: var(--text-muted); font-size: .68rem; font-weight: 700; }
.select-field select { min-height: 38px; padding: 6px 29px 6px 9px; border: 1px solid var(--border); border-radius: 9px; background: white; }
.table-wrap { max-width: 100%; overflow: auto; }
.estimate-table { min-width: 1120px; }
.estimate-table th { white-space: nowrap; }
.estimate-table td { vertical-align: middle; }
.estimate-table td:nth-child(n+4):nth-child(-n+8) { font-variant-numeric: tabular-nums; text-align: right; }
.estimate-table tr.is-excluded { opacity: .46; }
.item-name { display: grid; min-width: 230px; }
.item-name small { font-size: .61rem; }
.item-name strong { color: var(--ink-850); font-size: .76rem; }
.data-badges { display: flex; align-items: center; gap: 5px; margin-top: 5px; color: var(--text-soft); font-size: .6rem; }
.confidence { width: 7px; height: 7px; flex: 0 0 auto; border-radius: 50%; background: var(--safety-500); }
.confidence-high { background: var(--green-500); }
.confidence-low { background: var(--orange-500); }
.inline-quantity { display: flex; width: 112px; align-items: center; overflow: hidden; border: 1px solid var(--border); border-radius: 8px; background: white; }
.inline-quantity:focus-within { border-color: var(--cyan-500); box-shadow: 0 0 0 2px var(--cyan-100); }
.inline-quantity input { width: 68px; min-height: 34px; padding: 5px 6px; border: 0; outline: 0; text-align: right; }
.inline-quantity span { flex: 1; padding: 5px; border-left: 1px solid var(--border); background: var(--ink-050); color: var(--text-muted); font-size: .59rem; text-align: center; }
.waste-note { display: block; margin-top: 3px; font-size: .58rem; text-align: center; }
.estimate-table td small { display: block; }
.line-total { color: var(--ink-900); font-weight: 850; }
.row-menu { width: 34px; height: 32px; border-radius: 8px; background: transparent; color: var(--text-muted); cursor: pointer; }
.row-menu:hover { background: var(--ink-100); color: var(--ink-900); }
.toggle-check input { position: absolute; opacity: 0; pointer-events: none; }
.toggle-check > span:first-of-type { position: relative; display: block; width: 34px; height: 19px; border-radius: 99px; background: var(--ink-200); cursor: pointer; transition: background .2s ease; }
.toggle-check > span:first-of-type::after { position: absolute; top: 3px; left: 3px; width: 13px; height: 13px; border-radius: 50%; background: white; box-shadow: var(--shadow-xs); content: ''; transition: transform .2s ease; }
.toggle-check input:checked + span { background: var(--green-500); }
.toggle-check input:checked + span::after { transform: translateX(15px); }
.toggle-check input:focus-visible + span { outline: 3px solid var(--focus); outline-offset: 2px; }
.table-footer { display: flex; justify-content: space-between; gap: 15px; padding: 11px 14px; border-top: 1px solid var(--border); background: var(--ink-050); color: var(--text-muted); font-size: .64rem; }

.library-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.library-toolbar .search-field { max-width: 480px; }
.library-toolbar > span { color: var(--text-muted); font-size: .7rem; }
.source-date { display: grid; min-width: 175px; padding: 12px 15px; border: 1px solid var(--border); border-radius: 11px; background: white; }
.source-date .eyebrow { margin: 0; font-size: .58rem; }
.source-date .eyebrow::before { display: none; }
.library-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; }
.library-card { display: flex; min-height: 225px; flex-direction: column; padding: 18px; border: 1px solid var(--border); border-radius: 14px; background: white; box-shadow: var(--shadow-xs); }
.library-card.resource-card { min-height: 390px; padding: 0; overflow: hidden; }
.library-card-body { display: flex; min-width: 0; flex: 1; flex-direction: column; padding: 18px; }
.resource-photo { position: relative; min-height: 164px; aspect-ratio: 16 / 9; margin: 0; overflow: hidden; background: #d8dedb; }
.resource-photo::after { position: absolute; inset: 42% 0 0; content: ''; background: linear-gradient(180deg, transparent, rgba(15, 28, 25, .74)); pointer-events: none; }
.resource-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .55s var(--ease-standard); }
.resource-card:hover .resource-photo img { transform: scale(1.025); }
.resource-photo figcaption { position: absolute; z-index: 1; right: 15px; bottom: 13px; left: 15px; display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; color: white; text-shadow: 0 1px 4px rgba(0, 0, 0, .42); }
.resource-photo figcaption span { font-size: .58rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.resource-photo figcaption strong { max-width: 64%; font-size: .73rem; line-height: 1.25; text-align: right; }
.crew-composition { display: grid; gap: 7px; margin: 12px 0; padding: 10px 12px; border-radius: 9px; background: var(--surface-soft); color: var(--text-muted); font-size: .65rem; }
.crew-composition span { line-height: 1.45; }
.crew-composition b { margin-right: 7px; color: var(--ink-800); font-size: .57rem; letter-spacing: .08em; text-transform: uppercase; }
.check-field { display: flex; min-height: 44px; flex-direction: row; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 9px; background: var(--surface-soft); }
.check-field input { width: 18px; height: 18px; margin: 0; accent-color: var(--green-600); }
.check-field span { color: var(--ink-800); font-size: .75rem; font-weight: 700; }
.library-card-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.material-icon { display: grid; width: 36px; height: 36px; place-items: center; border-radius: 10px; background: var(--cyan-050); color: var(--cyan-700); }
.library-card h3 { margin: 14px 0 6px; font-size: 1rem; }
.library-card p { color: var(--text-muted); font-size: .75rem; }
.library-card-meta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: auto; }
.library-card-meta span { color: var(--text-soft); font-size: .58rem; }
.library-card-meta strong { display: block; color: var(--ink-800); font-size: .68rem; }
.source-line { display: block; padding-top: 10px; margin-top: 10px; border-top: 1px solid var(--border); font-size: .58rem; }
.glossary-card { min-height: 180px; flex-direction: row; gap: 13px; }
.letter-mark { display: grid; width: 42px; height: 42px; flex: 0 0 auto; place-items: center; border-radius: 11px; background: var(--ink-900); color: white; font-weight: 900; }
.glossary-card h3 { margin-top: 3px; }
.badge { display: inline-flex; align-items: center; padding: 4px 7px; border-radius: 999px; background: var(--ink-100); color: var(--ink-700); font-size: .57rem; font-weight: 800; }
.badge-verified { background: var(--green-100); color: var(--green-700); }
.badge-review { background: var(--safety-100); color: var(--safety-700); }
.badge-learning { background: var(--cyan-100); color: var(--cyan-700); }

.report-sheet { max-width: 1120px; padding: clamp(24px, 4vw, 54px); margin: 0 auto; }
.report-header { display: flex; justify-content: space-between; gap: 20px; padding-bottom: 20px; border-bottom: 2px solid var(--ink-900); }
.report-header > div:last-child { display: grid; text-align: right; }
.report-header span,
.report-header small { color: var(--text-muted); font-size: .66rem; }
.report-brand span { display: block; color: var(--ink-900); font-size: 1.4rem; font-weight: 900; letter-spacing: .1em; }
.report-title { padding: 32px 0; }
.report-title > span { color: var(--cyan-700); font-size: .67rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.report-title h2 { margin: 6px 0; font-size: 2.25rem; }
.report-title p { color: var(--text-muted); }
.report-kpis { display: grid; grid-template-columns: repeat(4, 1fr); margin-bottom: 26px; border: 1px solid var(--border); border-radius: 12px; }
.report-kpis > div { padding: 15px; border-right: 1px solid var(--border); }
.report-kpis > div:last-child { border-right: 0; }
.report-kpis span { display: block; color: var(--text-muted); font-size: .62rem; }
.report-kpis strong { display: block; margin-top: 4px; font-size: 1.1rem; }
.report-section { margin-top: 25px; }
.report-section h3 { padding-bottom: 8px; border-bottom: 1px solid var(--border); }
.cost-distribution { display: grid; gap: 9px; }
.cost-distribution > div { display: grid; grid-template-columns: 120px 1fr 105px; align-items: center; gap: 12px; font-size: .72rem; }
.cost-distribution strong { text-align: right; }
.cost-bar { height: 7px; overflow: hidden; border-radius: 99px; background: var(--ink-100); }
.cost-bar i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--cyan-600), var(--cyan-400)); }
.report-table { width: 100%; border-collapse: collapse; font-size: .73rem; }
.report-table th,
.report-table td { padding: 9px; border-bottom: 1px solid var(--border); text-align: left; }
.report-table th:last-child,
.report-table td:last-child { text-align: right; }
.report-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.totals-list > div { display: flex; justify-content: space-between; gap: 20px; padding: 8px 0; border-bottom: 1px solid var(--border); font-size: .73rem; }
.totals-list dd { margin: 0; font-weight: 750; }
.totals-list .grand-total { padding: 12px 0; color: var(--ink-900); font-size: .95rem; }
.attention-list { padding-left: 18px; color: var(--text-muted); font-size: .7rem; }
.attention-list li + li { margin-top: 7px; }
.report-footer { padding-top: 20px; margin-top: 34px; border-top: 2px solid var(--ink-900); color: var(--text-muted); font-size: .65rem; }
.report-footer { display: flex; justify-content: space-between; gap: 25px; }
.report-footer p { max-width: 78ch; }

dialog.modal { position: fixed; inset: 0; width: min(820px, calc(100% - 30px)); max-height: min(90vh, 900px); padding: 0; margin: auto; }
dialog.modal::backdrop { background: rgb(7 24 39 / .68); backdrop-filter: blur(4px); }
.modal-card { padding: 0; margin: 0; }
.modal-card-narrow { max-width: 620px; }
.modal-heading { position: sticky; z-index: 3; top: 0; display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 17px 20px; border-bottom: 1px solid var(--border); background: white; }
.modal-heading .eyebrow { margin: 0 0 2px; font-size: .58rem; }
.modal-heading h2 { margin: 0; font-size: 1.15rem; }
.modal-card .form-grid { padding: 20px; }
.field { display: grid; gap: 6px; }
.field > span { color: var(--ink-700); font-size: .68rem; font-weight: 750; }
.field input,
.field select,
.field textarea { width: 100%; min-height: 42px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 9px; background: white; }
.field textarea { resize: vertical; }
.field-wide { grid-column: 1 / -1; }
.modal-actions { position: sticky; z-index: 3; bottom: 0; display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 13px 20px; border-top: 1px solid var(--border); background: var(--ink-050); }
.modal-spacer { flex: 1; }

.toast-stack { position: fixed; z-index: 3000; right: 18px; bottom: 18px; display: grid; width: min(370px, calc(100% - 36px)); gap: 8px; pointer-events: none; }
.toast-stack .toast { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border: 1px solid var(--border); border-radius: 12px; background: var(--white); box-shadow: var(--shadow-lg); opacity: 0; transform: translateY(10px); transition: opacity .2s ease, transform .2s ease; }
.toast-stack .toast.is-visible { opacity: 1; transform: translateY(0); }
.toast-stack .toast > span { display: grid; width: 26px; height: 26px; place-items: center; border-radius: 50%; background: var(--green-100); color: var(--green-700); font-weight: 900; }
.toast-stack .toast-error > span { background: var(--red-100); color: var(--red-700); }
.toast-stack .toast p { margin: 0; font-size: .75rem; }
.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; }

@media (max-width: 1180px) {
  .save-status { display: none; }
  .project-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .library-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dashboard-grid { grid-template-columns: 1fr; }
  .studio-suite-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .next-action-card { min-height: auto; }
}

@media (max-width: 980px) {
  .menu-toggle { display: grid; }
  .mode-switch { display: none; }
  .topbar { grid-column: 1; }
  .workspace.main-content { grid-column: 1; }
  .dashboard-hero { grid-template-columns: 1fr; }
  .house-panel.hero-visual { min-height: 390px; }
  .path-layout,
  .lab-workbench { grid-template-columns: 1fr; }
  .phase-list-panel { position: static; max-height: 420px; }
  .lab-input-card,
  .lab-result-card { min-height: auto; }
  .project-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .report-columns { grid-template-columns: 1fr; }
}

@media (max-width: 720px) {
  .workspace.main-content { padding: 16px 14px 88px; }
  .topbar { padding-inline: 13px; }
  .topbar-title .eyebrow { display: none; }
  .avatar-button { width: 34px; height: 34px; }
  .hero-content { padding: 28px 22px; }
  .hero h2 { font-size: 2rem; }
  .house-panel.hero-visual { min-height: 390px; padding: 13px; }
  .house-stage-toolbar { display: flex; align-items: flex-start; flex-direction: column; gap: 9px; }
  .visual-controls { display: grid; width: 100%; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .visual-control { min-height: 44px; padding: 7px 5px; font-size: .62rem; line-height: 1.2; }
  .house-visual { max-height: 245px; }
  .photo-visual { min-height: 245px; }
  .visual-controls strong { display: none; }
  .hero-proof { gap: 10px; }
  .kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .suite-overview-card { padding: 18px; }
  .suite-overview-card .card-heading { display: grid; }
  .suite-count { justify-self: start; }
  .studio-suite-grid { grid-template-columns: 1fr; }
  .studio-card { display: grid; grid-template-columns: 112px 1fr; }
  .studio-card-image { height: 100%; min-height: 156px; aspect-ratio: auto; }
  .studio-card-copy { min-height: 156px; }
  .studio-dialog-stats { grid-template-columns: repeat(2, 1fr); }
  .studio-dialog-section ol { grid-template-columns: 1fr; }
  .page-intro { display: grid; align-items: start; }
  .page-intro-stat,
  .source-date { width: 100%; }
  .six-m-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .mode-learn-columns,
  .mode-task-grid { grid-template-columns: 1fr; }
  .project-mode-stats { grid-template-columns: 1fr 1fr; }
  .project-mode-stats div:last-child { grid-column: 1 / -1; }
  .lesson-hero { display: grid; }
  .lesson-status { justify-self: start; }
  .calculator-form { grid-template-columns: 1fr; }
  .result-kpis { grid-template-columns: 1fr; }
  .project-summary { grid-template-columns: 1fr 1fr; }
  .project-summary .summary-chip:last-child { grid-column: 1 / -1; }
  .estimate-toolbar { align-items: stretch; flex-direction: column; }
  .select-field { justify-content: space-between; }
  .select-field select { flex: 1; }
  .library-grid { grid-template-columns: 1fr; }
  .report-kpis { grid-template-columns: 1fr 1fr; }
  .report-kpis > div:nth-child(2) { border-right: 0; }
  .report-kpis > div:nth-child(-n+2) { border-bottom: 1px solid var(--border); }
  .cost-distribution > div { grid-template-columns: 90px 1fr; }
  .cost-distribution strong { grid-column: 2; }
  .report-footer { display: block; }
  .preview-line { grid-template-columns: 1fr auto; }
  .preview-line b { grid-column: 1 / -1; text-align: left; }
  .modal-card .form-grid { grid-template-columns: 1fr; }
  .field-wide { grid-column: auto; }
}

@media print {
  .no-print,
  .mobile-nav,
  .toast-stack { display: none !important; }
  #view-report { display: block !important; }
  .report-sheet { max-width: none; padding: 0; border: 0; box-shadow: none; }
  .report-columns { grid-template-columns: 1fr 1fr; }
  .report-table { break-inside: avoid; }
}
