/* Praxis product identity is scoped to the story, not the portfolio shell. */
.praxis-stage {
  padding: 40px 32px 64px;
  background: radial-gradient(ellipse at 5% 0%, #dce2fa 0, transparent 38%),
    radial-gradient(ellipse at 100% 30%, #d8eef2 0, transparent 45%), #edf1f8;
}
.praxis-story {
  --ink: #17203b;
  --muted: #4e5973;
  --link: #373bb4;
  --action: #373bb4;
  --pink: #373bb4;
  color: var(--ink);
  max-width: 1280px;
  margin: 0 auto;
  background: linear-gradient(135deg, #ffffffb8, #f1f7ff99);
  border: 1px solid #ffffffed;
  border-radius: 28px;
  box-shadow: 0 20px 60px #33466d18, inset 0 1px 0 #fff;
  -webkit-backdrop-filter: blur(22px);
  backdrop-filter: blur(22px);
  padding-bottom: 64px;
}
.praxis-story > .container { width: calc(100% - 80px); }
.praxis-story .case-hero { padding-bottom: 36px; }
.praxis-story h1 em { color: #4145c6; }
.praxis-story .eyebrow { color: #373bb4; }
.praxis-story .case-meta { border-color: #c9d3e6; }
.praxis-story figure { margin: 28px 0; }
.praxis-story figure img, .praxis-story video {
  display: block; width: 100%; height: auto;
  border: 1px solid #c9d3e6; border-radius: 18px;
  box-shadow: 0 12px 35px #293e7210;
  background: #eef2fa;
}
.praxis-story figcaption { color: #4e5973; font-size: .9rem; line-height: 1.6; margin-top: 12px; }
.praxis-story .praxis-cover { text-align: left; margin-top: 42px; }
.praxis-showcase { padding-bottom: 56px; }
.praxis-showcase > p:not(.eyebrow) { max-width: 760px; }
.praxis-appearance { padding: clamp(20px, 3vw, 40px); border-radius: 24px; background: #ffffffa8; border: 1px solid #fff; margin-top: 48px; }
.praxis-theme-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.praxis-story .case-content > section { background: #ffffffb8; padding: clamp(22px, 3vw, 38px); border: 1px solid #fff; border-radius: 24px; margin-bottom: 24px; }
.praxis-story .evidence-note { background: #e9effc; border-color: #c5cfee; border-radius: 16px; }
.praxis-story .case-nav a { color: #4e5973; }
.praxis-story .case-nav a:hover, .praxis-story .case-nav a[aria-current] { color: #373bb4; }
.praxis-jump { position:sticky; top:var(--praxis-header-height,87px); z-index:20; display:flex; flex-wrap:nowrap; overflow-x:auto; gap:24px; padding:8px 12px; border-block:1px solid #cbd5e7; margin-bottom:48px; font-size:.9rem; color:#373bb4; background:rgba(246,248,255,.97); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); }
.praxis-jump a { flex:0 0 auto; display:flex; align-items:center; min-height:44px; white-space:nowrap; }
.praxis-jump a { position:relative; border-radius:8px; transition:background-color .18s ease,color .18s ease,box-shadow .18s ease; }
.praxis-jump a::after { content:''; position:absolute; left:0; right:0; bottom:3px; height:2px; background:currentColor; transform:scaleX(0); transform-origin:center; transition:transform .18s ease; }
@media (hover:hover) {
  .praxis-jump a:hover { color:#29278e; background:#e7e8fb; box-shadow:0 0 0 6px #e7e8fb; }
  .praxis-jump a:hover::after { transform:scaleX(1); }
}
.praxis-jump a:focus-visible { color:#29278e; background:#e7e8fb; outline:2px solid #4145c6; outline-offset:3px; }
.praxis-jump a:focus-visible::after,.praxis-jump a:active::after { transform:scaleX(1); }
.praxis-jump a:active { background:#d9dcf7; }
.praxis-jump a[aria-current="location"] { color:#29278e; background:#e7e8fb; box-shadow:0 0 0 6px #e7e8fb; }
.praxis-jump a[aria-current="location"]::after { transform:scaleX(1); }
@media (prefers-reduced-motion:reduce) { .praxis-jump a,.praxis-jump a::after { transition:none; } }
@media print { .praxis-jump { position:static; overflow:visible; flex-wrap:wrap; } }
.praxis-visual-section { padding-block:32px 48px; }
.praxis-visual-section h2 { margin:10px 0 22px; }
.praxis-visual-section > p:not(.eyebrow) { max-width:850px; }
.praxis-story .praxis-note { font-size:.9rem; line-height:1.6; margin-top:24px; color:#4e5973; }
.praxis-gap-map { margin-top:30px; }
.praxis-map-labels,.praxis-map-row { display:grid; grid-template-columns:1fr 1fr 1fr; gap:28px; }
.praxis-map-labels { font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; margin-bottom:12px; }
.praxis-map-row { margin-bottom:20px; }
.praxis-map-row > div { position:relative; padding:22px; background:#ffffffa8; border:1px solid #fff; border-radius:18px; }
.praxis-map-row > div:nth-child(2) { background:#e3e9ffb8; }
.praxis-map-row > div:not(:last-child)::after { content:'→'; position:absolute; right:-23px; top:45%; color:#4145c6; }
.praxis-map-row small,.praxis-process small,.praxis-decision-grid small { display:block; color:#373bb4; font-weight:700; font-size:.7rem; letter-spacing:.07em; margin-bottom:10px; }
.praxis-map-row strong { display:block; font-size:1.1rem; line-height:1.4; }
.praxis-map-row p,.praxis-process p,.praxis-status p,.praxis-decision-grid p { font-size:.95rem; line-height:1.6; margin-top:10px; }
.praxis-process { list-style:none; padding:0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:22px; margin:24px 0; }
.praxis-process li { position:relative; margin:0; padding:20px 16px; background:#ffffffba; border:1px solid #fff; border-radius:18px; }
.praxis-process li:not(:last-child)::after { content:'→'; position:absolute; right:-20px; top:42%; color:#4145c6; }
.praxis-process strong { display:block; line-height:1.35; }
.praxis-process .praxis-planned { border:1px dashed #7c88b2; background:transparent; }
.praxis-status,.praxis-branches { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; margin:26px 0; }
.praxis-status > div { border-top:2px solid #9aabe8; padding-top:16px; }
.praxis-exercise-strip { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin:28px 0 40px; }
.praxis-exercise-strip span { border-radius:14px; padding:18px; background:#e6ecfa; font-weight:700; }
.praxis-exercise-strip small { font-weight:400; }
.praxis-session { display:flex; flex-wrap:wrap; list-style:none; padding:0; gap:24px; margin:20px 0 28px; }
.praxis-session li { margin:0; position:relative; padding:12px 16px; border:1px solid #b8c5e5; border-radius:12px; background:#fff9; font-size:.95rem; }
.praxis-session li:not(:last-child)::after { content:'→'; position:absolute; right:-21px; color:#4145c6; }
.praxis-branches { border-left:2px solid #b8c5e5; padding-left:20px; }
.praxis-branches p { margin:0; font-size:.95rem; }
.praxis-decision-grid { display:grid; grid-template-columns:1fr 1fr; gap:24px; margin-block:28px; }
.praxis-decision-grid article { padding:24px; border:1px solid #fff; background:#ffffffa8; border-radius:18px; }
.praxis-earlier { margin-block:20px; padding:16px 0; border-top:1px solid #cbd5e7; }
.praxis-earlier summary { cursor:pointer; font-weight:700; color:#373bb4; }
.praxis-interactive { margin-block:28px; }
.praxis-interaction-hint { font-size:.875rem; margin-bottom:14px; }
.praxis-tabs { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:16px; }
.praxis-tabs button,.praxis-step-controls button { padding:8px 12px; border:1px solid #b4c2e3; border-radius:8px; background:#ffffffb8; color:#293373; font:inherit; font-size:.875rem; line-height:1.4; min-height:44px; width:auto; cursor:pointer; }
.praxis-tabs button[aria-selected="true"] { color:white; background:#4145c6; border-color:#4145c6; box-shadow:0 4px 12px #4145c622; }
.praxis-tab-panel { padding:28px; border:1px solid #fff; border-radius:20px; background:#ffffffb8; }
.praxis-tab-panel[hidden] { display:none; }
.praxis-tab-panel > small { display:block; color:#373bb4; font-weight:700; letter-spacing:.07em; margin-bottom:12px; }
.praxis-tab-panel > strong { display:block; font-size:1.6rem; line-height:1.3; }
.praxis-tab-panel > p { margin-top:12px; }
.praxis-tab-panel figure { margin:0; }
.praxis-step-controls { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:16px; }
.praxis-step-controls span { font-size:.85rem; color:#4e5973; }
.praxis-step-controls button:disabled { opacity:.45; cursor:default; }
.praxis-interactive :focus-visible { outline:3px solid #373bb4; outline-offset:4px; }
@media(max-width:640px) { .praxis-tab-panel { padding:18px; } .praxis-tabs button { flex:0 0 auto; } .praxis-step-controls { flex-wrap:wrap; } .praxis-step-controls span { order:3; width:100%; text-align:center; } .praxis-step-controls button { padding:8px 10px; font-size:.85rem; } }
.praxis-screen-story { margin-block:40px; }
.praxis-screen-story h3 { margin-bottom:10px; }
.praxis-screen-story > p { max-width:760px; font-size:1rem; }
.praxis-screen-story figure { margin-top:18px; }
.praxis-screen-story .screen-stage { display:inline-block; font-size:.75rem; font-weight:700; color:#373bb4; margin-bottom:10px; letter-spacing:.05em; }
.praxis-story img { cursor:default; }
@media print { .praxis-tabs,.praxis-step-controls,.praxis-interaction-hint { display:none; } .praxis-tab-panel[hidden] { display:block; } .praxis-tab-panel { break-inside:avoid; } }
@media(max-width:1000px) { .praxis-process { grid-template-columns:1fr; gap:22px; } .praxis-process li:not(:last-child)::after { content:'↓'; right:auto; left:25px; top:auto; bottom:-23px; } }
@media(max-width:700px) {
  .praxis-map-labels { display:none; }
  .praxis-map-row { grid-template-columns:1fr; gap:22px; margin-bottom:38px; }
  .praxis-map-row > div:not(:last-child)::after { content:'↓'; top:auto; bottom:-24px; left:24px; right:auto; }
  .praxis-status,.praxis-branches,.praxis-exercise-strip,.praxis-decision-grid { grid-template-columns:1fr; }
  .praxis-session { display:grid; grid-template-columns:1fr; gap:22px; }
  .praxis-session li:not(:last-child)::after { content:'↓'; right:auto; left:24px; bottom:-25px; }
}
.praxis-story a:focus-visible, .praxis-story video:focus-visible { outline: 3px solid #373bb4; outline-offset: 5px; }
@media (max-width: 700px) { .praxis-theme-grid { grid-template-columns: 1fr; gap: 0; } .praxis-story .case-content > section { padding: 22px 18px; } .praxis-story figure img, .praxis-story video { border-radius: 12px; } }
@media (max-width: 640px) {
  .praxis-stage { padding: 20px 12px 32px; }
  .praxis-story { border-radius: 20px; padding-bottom: 32px; }
  .praxis-story > .container { width: calc(100% - 36px); }
}
@media print {
  .praxis-stage { padding: 0; background: white; }
  .praxis-story { border: 0; box-shadow: none; background: white; backdrop-filter: none; }
}
/* Use one header offset, rather than adding global scroll padding and margin. */
html:has(.praxis-story) { scroll-padding-top: var(--praxis-anchor-offset, 103px); scroll-behavior: auto; }
.praxis-story [id] { scroll-margin-top: 0; }
