workflow.css

   1/* Workflow / Commands - Renaissance Edition */
   2
   3.commands-section {
   4  position: relative;
   5  padding: var(--spacing-xl) 0;
   6  background: var(--color-paper);
   7}
   8
   9.commands-gallery {
  10  /* Reset grid */
  11  display: block;
  12}
  13
  14/* ============================================
  15   MAGAZINE SPREAD - Desktop Layout
  16   ============================================ */
  17
  18/* Category accent colors */
  19.magazine-spread[data-category="create"] { --spread-accent: oklch(55% 0.20 340); }
  20.magazine-spread[data-category="evaluate"] { --spread-accent: oklch(55% 0.20 300); }
  21.magazine-spread[data-category="refine"] { --spread-accent: oklch(55% 0.18 260); }
  22.magazine-spread[data-category="simplify"] { --spread-accent: oklch(55% 0.20 80); }
  23.magazine-spread[data-category="harden"] { --spread-accent: oklch(55% 0.20 160); }
  24.magazine-spread[data-category="system"] { --spread-accent: oklch(45% 0.05 0); }
  25
  26.magazine-container {
  27  position: relative;
  28  width: 100%;
  29  display: grid;
  30  grid-template-columns: 200px 1fr;
  31  gap: var(--spacing-lg);
  32  align-items: start;
  33  overflow: hidden;
  34}
  35
  36@media (min-width: 1100px) {
  37  .magazine-container {
  38    background: white;
  39    border-radius: 16px;
  40    padding: var(--spacing-lg);
  41  }
  42}
  43
  44/* Fisheye command list */
  45.fisheye-list {
  46  position: relative;
  47  height: 400px;
  48  align-self: center;
  49  overflow: hidden;
  50  mask-image: linear-gradient(to bottom, transparent 0%, black 10%, black 90%, transparent 100%);
  51  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 10%, black 90%, transparent 100%);
  52}
  53
  54.fisheye-scroll {
  55  height: 100%;
  56  overflow-y: auto;
  57  scrollbar-width: none;
  58  position: relative;
  59}
  60
  61.fisheye-scroll::-webkit-scrollbar { display: none; }
  62
  63.fisheye-item {
  64  display: block;
  65  font-family: var(--font-display);
  66  font-size: 1.5rem;
  67  font-weight: 400;
  68  color: var(--color-ink);
  69  background: none;
  70  border: none;
  71  padding: 0;
  72  position: absolute;
  73  left: 0;
  74  cursor: pointer;
  75  white-space: nowrap;
  76  text-align: left;
  77  width: 100%;
  78  line-height: 1.3;
  79  transform-origin: left center;
  80  will-change: transform, opacity;
  81}
  82
  83.fisheye-slash {
  84  color: var(--color-mist);
  85  font-weight: 300;
  86}
  87
  88.fisheye-item.is-active {
  89  font-weight: 600;
  90}
  91
  92.fisheye-item.is-active .fisheye-slash {
  93  color: var(--color-accent);
  94}
  95
  96
  97.fisheye-beta {
  98  font-family: var(--font-body);
  99  font-size: 0.45rem;
 100  font-weight: 600;
 101  letter-spacing: 0.08em;
 102  text-transform: uppercase;
 103  color: var(--color-ash);
 104  border: 1px solid var(--color-mist);
 105  border-radius: 3px;
 106  padding: 1px 4px;
 107  margin-left: 0.35em;
 108  vertical-align: middle;
 109}
 110
 111/* The viewport that clips to one spread at a time */
 112.magazine-viewport {
 113  position: relative;
 114  height: 520px;
 115  overflow: hidden;
 116}
 117
 118/* Individual spread */
 119.magazine-spread {
 120  position: absolute;
 121  inset: 0;
 122  display: grid;
 123  grid-template-columns: 38% 1fr;
 124  grid-template-rows: 1fr auto;
 125  gap: 0 var(--spacing-2xl);
 126  padding: var(--spacing-lg) var(--spacing-lg);
 127  opacity: 0;
 128  pointer-events: none;
 129  transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1),
 130              transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
 131  transform: translateY(16px);
 132  will-change: opacity, transform;
 133}
 134
 135.magazine-spread.active {
 136  opacity: 1;
 137  pointer-events: auto;
 138  transform: translateY(0);
 139  z-index: 2;
 140}
 141
 142.magazine-spread.exiting {
 143  opacity: 0;
 144  transform: translateY(-16px);
 145  z-index: 1;
 146}
 147
 148/* Left column: Big name + meta */
 149.spread-identity {
 150  grid-column: 1;
 151  grid-row: 1 / 3;
 152  display: flex;
 153  flex-direction: column;
 154  justify-content: center;
 155  gap: var(--spacing-md);
 156  padding-right: var(--spacing-lg);
 157}
 158
 159.spread-category-label {
 160  font-family: var(--font-body);
 161  font-size: 0.6875rem;
 162  font-weight: 600;
 163  text-transform: uppercase;
 164  letter-spacing: 0.14em;
 165  color: var(--spread-accent);
 166}
 167
 168.spread-command-name {
 169  white-space: nowrap;
 170  font-family: var(--font-display);
 171  font-size: clamp(3rem, 5.5vw, 5.5rem);
 172  font-weight: 600;
 173  line-height: 0.95;
 174  color: var(--color-ink);
 175  margin: 0;
 176  letter-spacing: -0.02em;
 177}
 178
 179.spread-command-name .spread-slash {
 180  color: var(--spread-accent);
 181  font-weight: 300;
 182}
 183
 184/* Sub-commands: stack the /impeccable namespace as a smaller label above the
 185   command name so the command name stays at full display size and never
 186   clips (e.g., "overdrive" is long). */
 187.spread-command-name .spread-namespace {
 188  display: block;
 189  font-family: var(--font-body);
 190  font-size: 0.875rem;
 191  font-weight: 500;
 192  color: var(--color-ash);
 193  letter-spacing: 0.04em;
 194  margin-bottom: 0.4em;
 195}
 196
 197.spread-command-name .spread-namespace .spread-slash {
 198  color: var(--spread-accent);
 199  font-weight: 400;
 200}
 201
 202.spread-command-name .beta-badge {
 203  font-family: var(--font-body);
 204  font-size: 0.55rem;
 205  font-weight: 600;
 206  letter-spacing: 0.08em;
 207  text-transform: uppercase;
 208  color: var(--spread-accent);
 209  border: 1px solid var(--spread-accent);
 210  border-radius: 3px;
 211  padding: 2px 6px;
 212  vertical-align: super;
 213  margin-left: 8px;
 214}
 215
 216.spread-description {
 217  font-family: var(--font-body);
 218  font-size: 0.9375rem;
 219  line-height: 1.6;
 220  color: var(--color-charcoal);
 221  max-width: 360px;
 222}
 223
 224/* Flow / relationship line */
 225.spread-flow {
 226  display: flex;
 227  align-items: center;
 228  gap: 6px;
 229  flex-wrap: nowrap;
 230  margin-top: var(--spacing-xs);
 231  white-space: nowrap;
 232}
 233
 234.spread-flow-label {
 235  font-family: var(--font-body);
 236  font-size: 0.75rem;
 237  color: var(--color-ash);
 238}
 239
 240.spread-flow-icon {
 241  color: var(--spread-accent);
 242  font-weight: 600;
 243  font-size: 0.8125rem;
 244}
 245
 246.spread-flow-cmd {
 247  font-family: var(--font-mono);
 248  font-size: 0.6875rem;
 249  background: var(--color-mist);
 250  padding: 2px 7px;
 251  border-radius: 3px;
 252  color: var(--color-ink);
 253}
 254
 255/* Right column: Demo area */
 256.spread-demo-area {
 257  grid-column: 2;
 258  grid-row: 1 / 3;
 259  display: flex;
 260  flex-direction: column;
 261  min-height: 0;
 262  overflow: hidden;
 263}
 264
 265/* Demo split comparison inside the spread */
 266.spread-demo-area .demo-split-comparison {
 267  display: flex;
 268  flex-direction: column;
 269  height: 100%;
 270  flex: 1;
 271  min-height: 0;
 272}
 273
 274.spread-demo-area .demo-split-comparison .split-container {
 275  position: relative;
 276  flex: 1;
 277  min-height: 0;
 278  overflow: hidden;
 279  cursor: ew-resize;
 280  user-select: none;
 281  background: var(--color-cream);
 282}
 283
 284.spread-demo-area .demo-split-comparison .split-before,
 285.spread-demo-area .demo-split-comparison .split-after {
 286  position: absolute;
 287  inset: 0;
 288  display: flex;
 289  align-items: center;
 290  justify-content: center;
 291  padding: var(--spacing-md);
 292}
 293
 294.spread-demo-area .demo-split-comparison .split-before {
 295  z-index: 1;
 296  background: var(--color-cream);
 297}
 298
 299.spread-demo-area .demo-split-comparison .split-after {
 300  z-index: 2;
 301  background: var(--color-paper);
 302  clip-path: polygon(58% 0%, 100% 0%, 100% 100%, 42% 100%);
 303}
 304
 305.spread-demo-area .demo-split-comparison .split-content {
 306  width: 100%;
 307  max-width: 320px;
 308  display: flex;
 309  flex-direction: column;
 310  align-items: center;
 311  justify-content: center;
 312}
 313
 314.spread-demo-area .demo-split-comparison .split-divider {
 315  position: absolute;
 316  top: 0;
 317  bottom: 0;
 318  left: 50%;
 319  width: 2px;
 320  background: var(--spread-accent, var(--color-accent));
 321  transform: translateX(-50%) skewX(-10deg);
 322  pointer-events: none;
 323  z-index: 3;
 324  box-shadow: 0 0 12px rgba(0,0,0,0.1);
 325}
 326
 327.spread-demo-area .demo-split-comparison .split-label {
 328  position: absolute;
 329  top: 50%;
 330  left: 50%;
 331  transform: translate(-50%, -50%) skewX(10deg);
 332  font-size: 0.5625rem;
 333  font-weight: 600;
 334  letter-spacing: 0.08em;
 335  text-transform: uppercase;
 336  color: var(--color-paper);
 337  background: var(--spread-accent, var(--color-accent));
 338  padding: 4px 10px;
 339  border-radius: 3px;
 340  white-space: nowrap;
 341}
 342
 343.spread-demo-area .demo-split-comparison .demo-caption {
 344  flex-shrink: 0;
 345  font-size: 0.75rem;
 346  color: var(--color-ash);
 347  text-align: center;
 348  padding: var(--spacing-sm) var(--spacing-md);
 349}
 350
 351/* Fallback demo container inside spread */
 352.spread-demo-area .demo-container {
 353  flex: 1;
 354  display: flex;
 355  flex-direction: column;
 356}
 357
 358.spread-demo-area .demo-container .demo-viewport {
 359  flex: 1;
 360  display: flex;
 361  align-items: center;
 362  justify-content: center;
 363  max-width: 420px;
 364  background: none;
 365  min-height: auto;
 366}
 367
 368/* (nav moved to fisheye list) */
 369
 370/* ============================================
 371   OLD DESKTOP STYLES (kept for mobile reuse)
 372   ============================================ */
 373
 374.commands-container {
 375  display: grid;
 376  grid-template-columns: 1fr 1.2fr;
 377  gap: var(--spacing-2xl);
 378  align-items: start;
 379}
 380
 381@media (max-width: 900px) {
 382  .commands-container {
 383    grid-template-columns: 1fr;
 384  }
 385}
 386
 387/* Left: The Manual (Scrollable) */
 388.command-manual {
 389  display: flex;
 390  flex-direction: column;
 391  gap: var(--spacing-sm);
 392  padding-bottom: 20vh;
 393}
 394
 395.command-category-header {
 396  font-family: var(--font-display);
 397  font-size: 0.875rem;
 398  font-weight: 600;
 399  color: var(--color-accent);
 400  text-transform: uppercase;
 401  letter-spacing: 0.1em;
 402  padding: var(--spacing-lg) var(--spacing-lg) var(--spacing-sm);
 403  margin-top: var(--spacing-md);
 404  border-bottom: 1px solid var(--color-mist);
 405}
 406
 407.command-category-header:first-child {
 408  margin-top: 0;
 409}
 410
 411.manual-entry {
 412  position: relative;
 413  padding: var(--spacing-lg);
 414  padding-left: calc(var(--spacing-lg) + 16px); /* Reserve space for transform */
 415  border-left: 2px solid var(--color-mist);
 416  transition: border-color 0.4s var(--ease-out), opacity 0.4s var(--ease-out), background 0.4s var(--ease-out), transform 0.4s var(--ease-out);
 417  opacity: 0.4;
 418  cursor: pointer;
 419  transform: translateX(-16px);
 420}
 421
 422.manual-entry:hover {
 423  opacity: 0.7;
 424}
 425
 426.manual-entry.active {
 427  border-left-color: var(--color-accent);
 428  opacity: 1;
 429  transform: translateX(0);
 430  background: linear-gradient(to right, var(--color-bg), transparent);
 431}
 432
 433.manual-cmd-name {
 434  font-family: var(--font-mono);
 435  font-size: 1.5rem;
 436  margin: 0 0 var(--spacing-sm);
 437  color: var(--color-ink);
 438  font-weight: 500;
 439}
 440
 441.beta-badge {
 442  font-family: var(--font-body);
 443  font-size: 0.55rem;
 444  font-weight: 600;
 445  letter-spacing: 0.08em;
 446  text-transform: uppercase;
 447  color: var(--color-accent);
 448  border: 1px solid var(--color-accent);
 449  border-radius: 3px;
 450  padding: 1px 5px;
 451  vertical-align: middle;
 452  margin-left: 6px;
 453}
 454
 455.section-title .beta-badge {
 456  font-size: 0.6875rem;
 457  padding: 2px 7px;
 458  border-radius: 4px;
 459  vertical-align: 0.35em;
 460  margin-left: 10px;
 461}
 462
 463.manual-cmd-desc {
 464  font-size: 0.875rem;
 465  line-height: 1.5;
 466  color: var(--color-charcoal);
 467  margin: 0;
 468}
 469
 470.manual-cmd-rel {
 471  font-size: 0.8125rem;
 472  color: var(--color-ash);
 473  margin-top: var(--spacing-sm);
 474  display: flex;
 475  align-items: center;
 476  gap: 0.5ch;
 477  flex-wrap: wrap;
 478}
 479
 480.manual-cmd-rel .rel-icon {
 481  color: var(--color-accent);
 482  font-weight: 600;
 483}
 484
 485.manual-cmd-rel code {
 486  font-family: var(--font-mono);
 487  font-size: 0.75rem;
 488  background: var(--color-mist);
 489  padding: 2px 6px;
 490  border-radius: 3px;
 491  color: var(--color-ink);
 492}
 493
 494/* Right: The Terminal Stack (Sticky, vertically centered) */
 495.glass-terminal-wrapper {
 496  position: sticky;
 497  top: 50vh;
 498  transform: translateY(-50%);
 499  height: calc(100vh - var(--spacing-xl) * 2);
 500  max-height: 800px;
 501  min-height: 500px;
 502}
 503
 504/* Stacked Windows Container */
 505.terminal-stack {
 506  position: relative;
 507  height: 100%;
 508  perspective: 1200px;
 509}
 510
 511.terminal-stack-tabs {
 512  position: absolute;
 513  top: -31px;
 514  right: 8px;
 515  display: flex;
 516  gap: 4px;
 517  z-index: 10;
 518}
 519
 520.terminal-stack-tab {
 521  font-family: var(--font-mono);
 522  font-size: 0.75rem;
 523  padding: 5px 12px;
 524  background: var(--color-cream);
 525  border: 1px solid var(--color-mist);
 526  border-bottom: none;
 527  border-radius: 6px 6px 0 0;
 528  color: var(--color-ash);
 529  cursor: pointer;
 530  transition: all 0.2s ease;
 531}
 532
 533.terminal-stack-tab:hover {
 534  background: var(--color-paper);
 535  color: var(--color-charcoal);
 536}
 537
 538.terminal-stack-tab.active {
 539  background: var(--color-paper);
 540  color: var(--color-ink);
 541  border-color: var(--color-mist);
 542}
 543
 544/* Individual Windows */
 545.terminal-window {
 546  position: absolute;
 547  inset: 0;
 548  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1),
 549              opacity 0.3s ease,
 550              filter 0.3s ease;
 551  transform-origin: center bottom;
 552}
 553
 554/* Demo window (front by default) */
 555.terminal-window--demo {
 556  z-index: 2;
 557}
 558
 559.terminal-window--demo.is-back {
 560  transform: translateY(16px) translateX(12px) scale(0.96);
 561  opacity: 0.6;
 562  filter: brightness(0.92);
 563  pointer-events: none;
 564  z-index: 1;
 565}
 566
 567/* Source window (back by default) */
 568.terminal-window--source {
 569  z-index: 1;
 570  transform: translateY(16px) translateX(12px) scale(0.96);
 571  opacity: 0.6;
 572  filter: brightness(0.92);
 573  pointer-events: none;
 574}
 575
 576.terminal-window--source.is-front {
 577  transform: translateY(0) translateX(0) scale(1);
 578  opacity: 1;
 579  filter: brightness(1);
 580  pointer-events: auto;
 581  z-index: 2;
 582}
 583
 584/* Source Window Content */
 585.source-window {
 586  background: var(--color-paper);
 587  backdrop-filter: blur(12px);
 588  -webkit-backdrop-filter: blur(12px);
 589  border: 1px solid var(--color-mist);
 590  border-radius: 8px;
 591  box-shadow: 0 20px 60px -10px rgba(0,0,0,0.15);
 592  height: 100%;
 593  display: flex;
 594  flex-direction: column;
 595  overflow: hidden;
 596}
 597
 598.source-header {
 599  background: var(--color-cream);
 600  padding: 12px 16px;
 601  display: flex;
 602  align-items: center;
 603  gap: 8px;
 604  border-bottom: 1px solid var(--color-mist);
 605  flex-shrink: 0;
 606}
 607
 608.source-title {
 609  font-family: var(--font-mono);
 610  font-size: 0.875rem;
 611  color: var(--color-ink);
 612  font-weight: 500;
 613}
 614
 615.source-body {
 616  flex: 1;
 617  padding: var(--spacing-md);
 618  font-family: var(--font-mono);
 619  font-size: 0.75rem;
 620  line-height: 1.5;
 621  color: var(--color-charcoal);
 622  overflow-y: auto;
 623  overscroll-behavior: contain;
 624  white-space: pre-wrap;
 625  word-break: break-word;
 626  background: var(--color-cream);
 627}
 628
 629.source-loading {
 630  color: var(--color-ash);
 631  font-style: italic;
 632}
 633
 634@media (max-width: 900px) {
 635  .magazine-container { display: none; }
 636  .fisheye-list { display: none; }
 637  .glass-terminal-wrapper {
 638    display: none; /* Hide on mobile for now, or stack */
 639  }
 640}
 641
 642.glass-terminal {
 643  background: var(--color-paper);
 644  backdrop-filter: blur(12px);
 645  -webkit-backdrop-filter: blur(12px);
 646  border: 1px solid var(--color-mist);
 647  border-radius: 8px;
 648  box-shadow: 0 20px 60px -10px rgba(0,0,0,0.15);
 649  height: 100%;
 650  display: flex;
 651  flex-direction: column;
 652  overflow: hidden;
 653}
 654
 655.terminal-header {
 656  background: var(--color-cream);
 657  padding: 12px 16px;
 658  display: flex;
 659  align-items: center;
 660  gap: 8px;
 661  border-bottom: 1px solid var(--color-mist);
 662}
 663
 664.terminal-dot {
 665  width: 10px;
 666  height: 10px;
 667  border-radius: 50%;
 668}
 669.terminal-dot.red { background: #ff5f56; }
 670.terminal-dot.yellow { background: #ffbd2e; }
 671.terminal-dot.green { background: #27c93f; }
 672
 673.terminal-title {
 674  margin-left: auto;
 675  font-family: var(--font-mono);
 676  font-size: 0.75rem;
 677  color: var(--color-ash);
 678}
 679
 680.terminal-body {
 681  flex: 1;
 682  padding: var(--spacing-md);
 683  font-family: var(--font-mono);
 684  font-size: 0.9375rem;
 685  color: var(--color-ink);
 686  overflow-y: auto;
 687  display: flex;
 688  flex-direction: column;
 689  min-height: 0; /* Allow flex shrinking */
 690}
 691
 692.terminal-line {
 693  margin-bottom: var(--spacing-sm);
 694  display: flex;
 695  gap: var(--spacing-sm);
 696  line-height: 1.5;
 697}
 698
 699.terminal-prompt {
 700  color: var(--color-accent);
 701  user-select: none;
 702  font-weight: bold;
 703}
 704
 705.terminal-cursor {
 706  display: inline-block;
 707  width: 8px;
 708  height: 1.2em;
 709  background: var(--color-accent);
 710  vertical-align: middle;
 711  animation: blink 1s step-end infinite;
 712}
 713
 714.terminal-output {
 715  color: var(--color-ash);
 716  margin-bottom: var(--spacing-md);
 717  white-space: pre-wrap;
 718}
 719
 720/* Hide steps when viewport is short */
 721@media (max-height: 800px) {
 722  .terminal-output {
 723    display: none;
 724  }
 725}
 726
 727.terminal-cmd {
 728  color: var(--color-accent);
 729  font-weight: 600;
 730}
 731
 732.terminal-step {
 733  color: var(--color-charcoal);
 734}
 735
 736.terminal-done {
 737  color: var(--color-success, #22c55e);
 738  font-weight: 500;
 739}
 740
 741.terminal-preview {
 742  background: var(--color-paper);
 743  margin: var(--spacing-sm) 0;
 744  flex: 1;
 745  min-height: 0; /* Allow shrinking */
 746  overflow: hidden;
 747  border-radius: 12px;
 748}
 749
 750.terminal-cursor-line {
 751  flex-shrink: 0;
 752  margin-top: var(--spacing-sm) !important;
 753}
 754
 755/* Demo Split Comparison in Terminal */
 756.terminal-preview .demo-split-comparison {
 757  display: flex;
 758  flex-direction: column;
 759  height: 100%;
 760}
 761
 762.terminal-preview .demo-split-comparison .split-container {
 763  position: relative;
 764  flex: 1;
 765  min-height: 0;
 766  overflow: hidden;
 767  cursor: ew-resize;
 768  user-select: none;
 769  background: var(--color-cream);
 770}
 771
 772.terminal-preview .demo-split-comparison .split-before,
 773.terminal-preview .demo-split-comparison .split-after {
 774  position: absolute;
 775  inset: 0;
 776  display: flex;
 777  align-items: center;
 778  justify-content: center;
 779  padding: var(--spacing-md);
 780}
 781
 782.terminal-preview .demo-split-comparison .split-before {
 783  z-index: 1;
 784  background: var(--color-cream);
 785}
 786
 787.terminal-preview .demo-split-comparison .split-after {
 788  z-index: 2;
 789  background: var(--color-paper);
 790  clip-path: polygon(58% 0%, 100% 0%, 100% 100%, 42% 100%);
 791}
 792
 793.terminal-preview .demo-split-comparison .split-content {
 794  width: 100%;
 795  max-width: 280px;
 796  display: flex;
 797  flex-direction: column;
 798  align-items: center;
 799  justify-content: center;
 800}
 801
 802.terminal-preview .demo-split-comparison .split-divider {
 803  position: absolute;
 804  top: 0;
 805  bottom: 0;
 806  left: 50%;
 807  width: 2px;
 808  background: var(--color-accent);
 809  transform: translateX(-50%) skewX(-10deg);
 810  pointer-events: none;
 811  z-index: 3;
 812  box-shadow: 0 0 12px rgba(0,0,0,0.1);
 813}
 814
 815.terminal-preview .demo-split-comparison .split-label {
 816  position: absolute;
 817  top: 50%;
 818  left: 50%;
 819  transform: translate(-50%, -50%) skewX(10deg);
 820  font-size: 0.5625rem;
 821  font-weight: 600;
 822  letter-spacing: 0.08em;
 823  text-transform: uppercase;
 824  color: var(--color-paper);
 825  background: var(--color-accent);
 826  padding: 4px 10px;
 827  border-radius: 3px;
 828  white-space: nowrap;
 829}
 830
 831.terminal-preview .demo-split-comparison .demo-caption {
 832  flex-shrink: 0;
 833  font-size: 0.75rem;
 834  color: var(--color-ash);
 835  text-align: center;
 836  padding: var(--spacing-sm) var(--spacing-md);
 837}
 838
 839@keyframes blink { 50% { opacity: 0; } }
 840
 841/* ============================================
 842   CASE STUDIES / TRANSFORMATIONS SECTION
 843   ============================================ */
 844
 845.casestudies-section {
 846  position: relative;
 847  padding: var(--spacing-2xl) 0;
 848  border-top: 1px solid var(--color-mist);
 849}
 850
 851/* Tabbed transformations */
 852.transformations-tabbed {
 853  margin-top: var(--spacing-xl);
 854}
 855
 856.transformation-tabs {
 857  display: flex;
 858  gap: var(--spacing-xs);
 859  border-bottom: 1px solid var(--color-mist);
 860  margin-bottom: var(--spacing-lg);
 861}
 862
 863.transformation-tab {
 864  font-family: var(--font-display);
 865  font-size: 0.9375rem;
 866  font-weight: 500;
 867  color: var(--color-ash);
 868  background: none;
 869  border: none;
 870  padding: var(--spacing-sm) var(--spacing-md);
 871  cursor: pointer;
 872  position: relative;
 873  transition: color 0.2s ease;
 874}
 875
 876.transformation-tab:hover {
 877  color: var(--color-charcoal);
 878}
 879
 880.transformation-tab.active {
 881  color: var(--color-ink);
 882}
 883
 884.transformation-tab.active::after {
 885  content: '';
 886  position: absolute;
 887  bottom: -1px;
 888  left: 0;
 889  right: 0;
 890  height: 2px;
 891  background: var(--color-accent);
 892}
 893
 894.transformation-panels {
 895  position: relative;
 896}
 897
 898.transformation-panel {
 899  display: none;
 900  flex-direction: column;
 901  gap: var(--spacing-lg);
 902  animation: fadeInPanel 0.3s ease;
 903}
 904
 905.transformation-panel.active {
 906  display: flex;
 907}
 908
 909@keyframes fadeInPanel {
 910  from {
 911    opacity: 0;
 912    transform: translateY(8px);
 913  }
 914  to {
 915    opacity: 1;
 916    transform: translateY(0);
 917  }
 918}
 919
 920/* Side-by-side images */
 921.transformation-images {
 922  display: flex;
 923  align-items: center;
 924  gap: var(--spacing-md);
 925}
 926
 927.transformation-before,
 928.transformation-after {
 929  flex: 1;
 930  margin: 0;
 931}
 932
 933.transformation-before img,
 934.transformation-after img,
 935.transformation-placeholder {
 936  width: 100%;
 937  aspect-ratio: 16 / 10;
 938  object-fit: cover;
 939  border-radius: 8px;
 940  border: 1px solid var(--color-mist);
 941  cursor: pointer;
 942  transition: transform 0.2s ease, box-shadow 0.2s ease;
 943}
 944
 945.transformation-before img:hover,
 946.transformation-after img:hover,
 947.transformation-placeholder:hover {
 948  transform: scale(1.02);
 949  box-shadow: 0 8px 24px -4px rgba(0,0,0,0.15);
 950}
 951
 952.transformation-placeholder {
 953  background: linear-gradient(135deg, var(--color-mist) 0%, var(--color-cream) 100%);
 954  display: flex;
 955  align-items: center;
 956  justify-content: center;
 957  color: var(--color-ash);
 958  font-size: 0.8125rem;
 959  font-style: italic;
 960}
 961
 962.transformation-before figcaption,
 963.transformation-after figcaption {
 964  font-size: 0.75rem;
 965  font-weight: 600;
 966  text-transform: uppercase;
 967  letter-spacing: 0.05em;
 968  color: var(--color-ash);
 969  margin-top: var(--spacing-xs);
 970  text-align: center;
 971}
 972
 973.transformation-arrow {
 974  font-size: 1.5rem;
 975  color: var(--color-accent);
 976  font-weight: 300;
 977  flex-shrink: 0;
 978}
 979
 980/* Info section */
 981.transformation-info {
 982  max-width: 600px;
 983}
 984
 985.transformation-title {
 986  font-family: var(--font-display);
 987  font-size: 1.25rem;
 988  font-weight: 600;
 989  color: var(--color-ink);
 990  margin: 0 0 var(--spacing-xs);
 991}
 992
 993.transformation-desc {
 994  font-size: 0.9375rem;
 995  color: var(--color-charcoal);
 996  line-height: 1.6;
 997  margin: 0 0 var(--spacing-sm);
 998}
 999
1000.transformation-commands {
1001  display: flex;
1002  flex-wrap: wrap;
1003  gap: 6px;
1004}
1005
1006.transformation-command {
1007  font-family: var(--font-mono);
1008  font-size: 0.75rem;
1009  background: var(--color-mist);
1010  color: var(--color-charcoal);
1011  padding: 4px 10px;
1012  border-radius: 4px;
1013}
1014
1015/* Lightbox */
1016.lightbox {
1017  position: fixed;
1018  inset: 0;
1019  background: rgba(0, 0, 0, 0.9);
1020  display: flex;
1021  align-items: center;
1022  justify-content: center;
1023  z-index: 1000;
1024  opacity: 0;
1025  visibility: hidden;
1026  transition: opacity 0.3s ease, visibility 0.3s ease;
1027}
1028
1029.lightbox.active {
1030  opacity: 1;
1031  visibility: visible;
1032}
1033
1034.lightbox-close {
1035  position: absolute;
1036  top: 20px;
1037  right: 24px;
1038  background: none;
1039  border: none;
1040  color: white;
1041  font-size: 2.5rem;
1042  cursor: pointer;
1043  opacity: 0.7;
1044  transition: opacity 0.2s ease;
1045  line-height: 1;
1046}
1047
1048.lightbox-close:hover {
1049  opacity: 1;
1050}
1051
1052.lightbox-image {
1053  max-width: 90vw;
1054  max-height: 85vh;
1055  object-fit: contain;
1056  border-radius: 8px;
1057  box-shadow: 0 20px 60px rgba(0,0,0,0.5);
1058}
1059
1060@media (max-width: 768px) {
1061  .transformation-images {
1062    flex-direction: column;
1063  }
1064
1065  .transformation-arrow {
1066    transform: rotate(90deg);
1067  }
1068
1069  .transformation-before,
1070  .transformation-after {
1071    width: 100%;
1072  }
1073}
1074
1075/* ============================================
1076   HERO VERSION LINK
1077   ============================================ */
1078
1079.hero-version-link {
1080  font-size: 0.8125rem;
1081  color: var(--color-ash);
1082  margin-top: var(--spacing-sm);
1083}
1084
1085.hero-version-link a {
1086  color: var(--color-ash);
1087  text-decoration: none;
1088  border-bottom: 1px solid transparent;
1089  transition: color 0.2s ease, border-color 0.2s ease;
1090}
1091
1092.hero-version-link a:hover {
1093  color: var(--color-accent);
1094  border-bottom-color: var(--color-accent);
1095}
1096
1097/* ============================================
1098   CHANGELOG + FAQ ROW (side-by-side on desktop)
1099   ============================================ */
1100
1101.changelog-faq-row {
1102  position: relative;
1103}
1104
1105@media (min-width: 1024px) {
1106  .changelog-faq-row {
1107    display: grid;
1108    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
1109    column-gap: calc(var(--spacing-xl) * 1.5);
1110    border-top: 1px solid var(--color-mist);
1111  }
1112
1113  .changelog-faq-row > .changelog-section,
1114  .changelog-faq-row > .faq-section {
1115    border-top: none;
1116  }
1117
1118  .changelog-faq-row > .faq-section {
1119    border-left: 1px solid var(--color-mist);
1120    padding-left: calc(var(--spacing-xl) * 0.75);
1121    margin-left: calc(var(--spacing-xl) * -0.75);
1122  }
1123}
1124
1125/* ============================================
1126   CHANGELOG SECTION
1127   ============================================ */
1128
1129.changelog-section {
1130  position: relative;
1131  padding: var(--spacing-xl) 0;
1132  border-top: 1px solid var(--color-mist);
1133}
1134
1135.changelog-list {
1136  display: flex;
1137  flex-direction: column;
1138  gap: 0;
1139}
1140
1141.changelog-entry {
1142  padding: var(--spacing-md) 0;
1143}
1144
1145.changelog-entry + .changelog-entry {
1146  border-top: 1px solid var(--color-mist);
1147}
1148
1149.changelog-version-header {
1150  display: flex;
1151  align-items: baseline;
1152  gap: var(--spacing-sm);
1153  margin-bottom: var(--spacing-sm);
1154}
1155
1156.changelog-version {
1157  font-family: var(--font-mono);
1158  font-size: 1.125rem;
1159  font-weight: 600;
1160  color: var(--color-ink);
1161}
1162
1163.changelog-date {
1164  font-size: 0.8125rem;
1165  color: var(--color-ash);
1166}
1167
1168.changelog-items {
1169  margin: 0;
1170  padding-left: var(--spacing-md);
1171  color: var(--color-charcoal);
1172  font-size: 0.9375rem;
1173  line-height: 1.65;
1174  max-width: 72ch;
1175}
1176
1177.changelog-items li {
1178  margin-bottom: var(--spacing-xs);
1179}
1180
1181.changelog-items code {
1182  font-family: var(--font-mono);
1183  font-size: 0.875em;
1184  background: var(--color-mist);
1185  padding: 2px 6px;
1186  border-radius: 3px;
1187  color: var(--color-ink);
1188}
1189
1190/* Changelog: highlight reel */
1191.changelog-highlights {
1192  padding-bottom: var(--spacing-md);
1193  border-bottom: 1px solid var(--color-mist);
1194}
1195.changelog-highlights-label {
1196  font-family: var(--font-mono);
1197  font-size: 1.125rem;
1198  font-weight: 600;
1199  color: var(--color-ink);
1200  margin: 0 0 var(--spacing-sm);
1201}
1202.changelog-highlights-label .changelog-date {
1203  margin-left: var(--spacing-xs);
1204}
1205
1206/* Changelog: collapsible older entries */
1207.changelog-older {
1208  margin-top: 0;
1209}
1210.changelog-older + .changelog-older {
1211  margin-top: 0;
1212  border-top: 1px solid var(--color-mist);
1213}
1214
1215.changelog-older-toggle {
1216  font-family: var(--font-body);
1217  font-size: 0.875rem;
1218  font-weight: 500;
1219  color: var(--color-accent);
1220  padding: var(--spacing-md) 0;
1221  cursor: pointer;
1222  list-style: none;
1223  display: flex;
1224  align-items: center;
1225  gap: 6px;
1226  transition: color 0.2s ease;
1227}
1228
1229.changelog-older-toggle::-webkit-details-marker {
1230  display: none;
1231}
1232
1233.changelog-older-toggle::before {
1234  content: '+';
1235  font-size: 1.25rem;
1236  font-weight: 300;
1237  transition: transform 0.3s var(--ease-out);
1238}
1239
1240.changelog-older[open] .changelog-older-toggle::before {
1241  transform: rotate(45deg);
1242}
1243
1244.changelog-older-toggle:hover {
1245  color: var(--color-accent-hover);
1246}
1247
1248.changelog-older-entries {
1249  animation: faqFadeIn 0.3s var(--ease-out);
1250}
1251
1252
1253/* ============================================
1254   FAQ SECTION
1255   ============================================ */
1256
1257.faq-section {
1258  position: relative;
1259  padding: var(--spacing-xl) 0;
1260  border-top: 1px solid var(--color-mist);
1261}
1262
1263.faq-list {
1264  display: flex;
1265  flex-direction: column;
1266  gap: 0;
1267}
1268
1269.faq-item {
1270  border-bottom: 1px solid var(--color-mist);
1271}
1272
1273.faq-question {
1274  font-family: var(--font-display);
1275  font-size: 1.125rem;
1276  font-weight: 500;
1277  color: var(--color-ink);
1278  padding: var(--spacing-md) calc(var(--spacing-md) + 1.5rem) var(--spacing-md) 0;
1279  cursor: pointer;
1280  list-style: none;
1281  position: relative;
1282  transition: color 0.2s ease;
1283}
1284
1285.faq-question::-webkit-details-marker {
1286  display: none;
1287}
1288
1289.faq-question::after {
1290  content: '+';
1291  font-family: var(--font-body);
1292  font-size: 1.5rem;
1293  font-weight: 300;
1294  color: var(--color-accent);
1295  transition: transform 0.3s var(--ease-out);
1296  position: absolute;
1297  right: 0;
1298  top: 50%;
1299  transform: translateY(-50%);
1300}
1301
1302.faq-item[open] .faq-question::after {
1303  transform: translateY(-50%) rotate(45deg);
1304}
1305
1306.faq-question:hover {
1307  color: var(--color-accent);
1308}
1309
1310.faq-answer {
1311  padding: 0 0 var(--spacing-md);
1312  color: var(--color-charcoal);
1313  line-height: 1.7;
1314  max-width: 70ch;
1315  animation: faqFadeIn 0.3s var(--ease-out);
1316}
1317
1318.faq-answer p {
1319  margin: 0 0 var(--spacing-sm);
1320}
1321
1322.faq-answer p:last-child {
1323  margin-bottom: 0;
1324}
1325
1326.faq-answer ul {
1327  margin: var(--spacing-sm) 0;
1328  padding-left: var(--spacing-md);
1329}
1330
1331.faq-answer li {
1332  margin-bottom: var(--spacing-xs);
1333}
1334
1335.faq-answer code {
1336  font-family: var(--font-mono);
1337  font-size: 0.875em;
1338  background: var(--color-mist);
1339  padding: 2px 6px;
1340  border-radius: 3px;
1341  color: var(--color-ink);
1342}
1343
1344.faq-answer a {
1345  color: var(--color-accent);
1346  text-decoration: none;
1347  border-bottom: 1px solid transparent;
1348  transition: border-color 0.2s ease;
1349}
1350
1351.faq-answer a:hover {
1352  border-bottom-color: var(--color-accent);
1353}
1354
1355/* Mobile: FAQ + Changelog */
1356@media (max-width: 600px) {
1357  .faq-question {
1358    font-size: 1rem;
1359    padding: var(--spacing-md) 0;
1360    min-height: 44px;
1361    gap: var(--spacing-sm);
1362  }
1363
1364  .faq-answer {
1365    font-size: 0.875rem;
1366  }
1367
1368  .changelog-version {
1369    font-size: 1rem;
1370  }
1371
1372  .changelog-version-header {
1373    flex-wrap: wrap;
1374    gap: var(--spacing-xs);
1375  }
1376
1377  .changelog-items {
1378    padding-left: var(--spacing-sm);
1379    font-size: 0.875rem;
1380  }
1381
1382  .changelog-older-toggle {
1383    min-height: 44px;
1384  }
1385}
1386
1387@keyframes faqFadeIn {
1388  from {
1389    opacity: 0;
1390    transform: translateY(-8px);
1391  }
1392  to {
1393    opacity: 1;
1394    transform: translateY(0);
1395  }
1396}
1397
1398/* ============================================
1399   WHY IMPECCABLE — tabbed feature loop
1400   ============================================ */
1401
1402.why-section {
1403  padding: var(--spacing-2xl) 0;
1404  border-top: 1px solid var(--color-mist);
1405}
1406
1407.why-layout {
1408  display: grid;
1409  grid-template-columns: minmax(240px, 300px) 1fr;
1410  gap: var(--spacing-xl);
1411  align-items: start;
1412}
1413
1414.why-left {
1415  display: flex;
1416  flex-direction: column;
1417  gap: var(--spacing-lg);
1418}
1419
1420.why-tabs {
1421  list-style: none;
1422  padding: 0;
1423  margin: 0;
1424  display: flex;
1425  flex-direction: column;
1426  gap: 0;
1427}
1428
1429.why-tabs li + li {
1430  border-top: 1px solid var(--color-mist);
1431}
1432
1433.why-tab {
1434  display: grid;
1435  grid-template-columns: 40px 1fr;
1436  gap: var(--spacing-sm);
1437  align-items: baseline;
1438  width: 100%;
1439  padding: var(--spacing-sm) var(--spacing-sm) var(--spacing-sm) 0;
1440  background: transparent;
1441  border: 0;
1442  border-left: 2px solid transparent;
1443  padding-left: var(--spacing-sm);
1444  cursor: pointer;
1445  text-align: left;
1446  font-family: var(--font-body);
1447  color: var(--color-ash);
1448  transition: color 180ms var(--ease-out), border-color 180ms var(--ease-out), background 180ms var(--ease-out);
1449}
1450
1451.why-tab-num {
1452  font-family: var(--font-mono);
1453  font-size: 0.6875rem;
1454  letter-spacing: 0.18em;
1455  color: var(--color-ash);
1456  transition: color 180ms var(--ease-out);
1457}
1458
1459.why-tab-label {
1460  font-family: var(--font-body);
1461  font-size: 0.9375rem;
1462  font-weight: 500;
1463  line-height: 1.3;
1464}
1465
1466.why-tab:hover {
1467  color: var(--color-ink);
1468}
1469
1470.why-tab:hover .why-tab-num {
1471  color: var(--color-charcoal);
1472}
1473
1474.why-tab.is-active {
1475  color: var(--color-ink);
1476}
1477
1478.why-tab.is-active .why-tab-num {
1479  color: var(--color-accent);
1480}
1481
1482.why-tab:focus-visible {
1483  outline: 2px solid var(--color-accent);
1484  outline-offset: 2px;
1485}
1486
1487.why-panels {
1488  position: relative;
1489  min-height: 280px;
1490  background: var(--color-paper);
1491  border: 1px solid var(--color-mist);
1492  border-radius: 10px;
1493  padding: var(--spacing-xl);
1494  box-shadow: 0 1px 2px oklch(0.2 0 0 / 0.04);
1495  /* All panels stack in one grid cell so the outgoing panel can cross-fade
1496     out while the incoming one fades in. Container auto-sizes to the
1497     tallest panel, so switching between tabs doesn't jump. */
1498  display: grid;
1499  grid-template-columns: minmax(0, 1fr);
1500  grid-template-areas: "stack";
1501}
1502
1503.why-panel,
1504.why-panel[hidden] {
1505  /* [hidden] attribute on initial markup would force display:none and skip
1506     the crossfade; keep the element rendered so opacity/transform can run. */
1507  display: block;
1508  grid-area: stack;
1509  min-width: 0;
1510  opacity: 0;
1511  visibility: hidden;
1512  transform: translateY(8px);
1513  transition:
1514    opacity 650ms var(--ease-out),
1515    transform 800ms var(--ease-out),
1516    visibility 0s linear 650ms;
1517  pointer-events: none;
1518}
1519
1520.why-panel-title,
1521.why-panel-body,
1522.why-panel-meta {
1523  max-width: 60ch;
1524}
1525
1526.why-panel.is-active {
1527  opacity: 1;
1528  visibility: visible;
1529  transform: translateY(0);
1530  pointer-events: auto;
1531  transition:
1532    opacity 650ms var(--ease-out),
1533    transform 800ms var(--ease-out),
1534    visibility 0s linear 0s;
1535}
1536
1537.why-panel-title {
1538  font-family: var(--font-display);
1539  font-style: italic;
1540  font-weight: 400;
1541  font-size: clamp(1.75rem, 3vw, 2.5rem);
1542  line-height: 1.1;
1543  color: var(--color-ink);
1544  margin: 0 0 var(--spacing-md);
1545  letter-spacing: -0.01em;
1546}
1547
1548.why-panel-body {
1549  font-family: var(--font-body);
1550  font-size: 1.0625rem;
1551  line-height: 1.65;
1552  color: var(--color-charcoal);
1553  margin: 0 0 var(--spacing-md);
1554}
1555
1556.why-panel-body em {
1557  font-style: italic;
1558  color: var(--color-ink);
1559  font-weight: 500;
1560}
1561
1562.why-panel-body a {
1563  color: var(--color-ink);
1564  text-decoration: underline;
1565  text-underline-offset: 3px;
1566  text-decoration-color: var(--color-accent);
1567}
1568
1569.why-panel-body a:hover {
1570  color: var(--color-accent);
1571}
1572
1573.why-panel-body code {
1574  font-family: var(--font-mono);
1575  font-size: 0.875em;
1576  background: var(--color-mist);
1577  padding: 2px 6px;
1578  border-radius: 3px;
1579  color: var(--color-ink);
1580}
1581
1582.why-panel-meta {
1583  font-family: var(--font-mono);
1584  font-size: 0.75rem;
1585  letter-spacing: 0.05em;
1586  color: var(--color-ash);
1587  margin: var(--spacing-md) 0 0;
1588}
1589
1590.why-panel-meta code {
1591  font-family: var(--font-mono);
1592  font-size: 0.875em;
1593  color: var(--color-charcoal);
1594}
1595
1596.why-panel-meta a {
1597  color: var(--color-ink);
1598  text-decoration: underline;
1599  text-underline-offset: 3px;
1600  text-decoration-color: var(--color-accent);
1601}
1602
1603.why-panel-meta a:hover { color: var(--color-accent); }
1604
1605@media (prefers-reduced-motion: reduce) {
1606  .why-panel,
1607  .why-panel.is-active {
1608    transition: none;
1609    transform: none;
1610  }
1611}
1612
1613@media (max-width: 900px) {
1614  .why-layout {
1615    grid-template-columns: minmax(0, 1fr);
1616    gap: var(--spacing-md);
1617  }
1618
1619  /* Sticky horizontal tab strip under the 54px site header */
1620  .why-left {
1621    position: sticky;
1622    top: 54px;
1623    z-index: 10;
1624    min-width: 0;
1625    padding: var(--spacing-xs) 0;
1626    background: oklch(96% 0.005 350 / 0.92);
1627    backdrop-filter: blur(8px);
1628    -webkit-backdrop-filter: blur(8px);
1629    border-bottom: 1px solid var(--color-mist);
1630    gap: 0;
1631    /* Horizontal edge fade signals scrollable content */
1632    mask-image: linear-gradient(to right, transparent, black 16px, black calc(100% - 24px), transparent);
1633    -webkit-mask-image: linear-gradient(to right, transparent, black 16px, black calc(100% - 24px), transparent);
1634  }
1635
1636  .why-tabs {
1637    flex-direction: row;
1638    flex-wrap: nowrap;
1639    gap: 4px;
1640    min-width: 0;
1641    width: 100%;
1642    overflow-x: auto;
1643    scrollbar-width: none;
1644    -webkit-overflow-scrolling: touch;
1645    scroll-snap-type: x proximity;
1646    padding: 0 var(--spacing-sm);
1647  }
1648
1649  .why-tabs::-webkit-scrollbar {
1650    display: none;
1651  }
1652
1653  .why-tabs li + li {
1654    border-top: 0;
1655  }
1656
1657  .why-tab {
1658    display: inline-flex;
1659    grid-template-columns: none;
1660    align-items: center;
1661    gap: 6px;
1662    width: auto;
1663    padding: 7px 12px;
1664    border: 0;
1665    border-radius: 100px;
1666    scroll-snap-align: center;
1667    white-space: nowrap;
1668  }
1669
1670  .why-tab-label {
1671    font-size: 0.8125rem;
1672    font-weight: 500;
1673  }
1674
1675  .why-tab-num {
1676    font-size: 0.5625rem;
1677    letter-spacing: 0.1em;
1678  }
1679
1680  .why-tab.is-active {
1681    background: var(--color-ink);
1682    color: var(--color-paper);
1683  }
1684
1685  .why-tab.is-active .why-tab-label,
1686  .why-tab.is-active .why-tab-num {
1687    color: var(--color-paper);
1688  }
1689
1690  /* Vertical progress stripe is meaningless on a horizontal strip */
1691  .why-tab-progress {
1692    display: none;
1693  }
1694
1695  .why-panels {
1696    padding: var(--spacing-md);
1697    min-height: auto;
1698    border-radius: 8px;
1699  }
1700}
1701
1702/* ============================================
1703   WHY — per-panel visuals + auto-rotation
1704   ============================================ */
1705
1706.why-tab-progress {
1707  position: absolute;
1708  left: -2px;
1709  top: 0;
1710  bottom: 0;
1711  width: 2px;
1712  background: var(--color-accent);
1713  transform-origin: top;
1714  transform: scaleY(0);
1715  pointer-events: none;
1716  opacity: 0;
1717  transition: opacity 220ms var(--ease-out);
1718}
1719
1720.why-tab { position: relative; }
1721
1722/* Active tab always shows the accent column. When cycling, the column
1723   fills from top to bottom over the cycle window. When not cycling
1724   (user paused or clicked), it stays full-height so the active state
1725   is unambiguous. */
1726.why-tab.is-active .why-tab-progress {
1727  opacity: 1;
1728  transform: scaleY(1);
1729}
1730
1731.why-tab.is-active.is-cycling .why-tab-progress {
1732  animation: whyTabProgress var(--why-cycle-ms, 7000ms) linear forwards;
1733}
1734
1735@keyframes whyTabProgress {
1736  from { transform: scaleY(0); }
1737  to { transform: scaleY(1); }
1738}
1739
1740@media (prefers-reduced-motion: reduce) {
1741  .why-tab.is-active.is-cycling .why-tab-progress {
1742    animation: none;
1743    transform: scaleY(1);
1744  }
1745}
1746
1747/* Visual frame — common base */
1748.why-visual {
1749  background: transparent;
1750  border: 0;
1751  padding: 0;
1752  margin-bottom: var(--spacing-md);
1753  min-height: 0;
1754  display: flex;
1755  align-items: stretch;
1756  position: relative;
1757  overflow: hidden;
1758}
1759
1760/* ─ Panel 01: Generic vs PRODUCT.md ─ */
1761.why-visual--compare {
1762  gap: var(--spacing-md);
1763}
1764.why-compare-card {
1765  flex: 1;
1766  display: flex;
1767  flex-direction: column;
1768  gap: 10px;
1769  min-width: 0;
1770}
1771.why-compare-label {
1772  font-family: var(--font-mono);
1773  font-size: 0.625rem;
1774  letter-spacing: 0.2em;
1775  text-transform: uppercase;
1776  color: var(--color-ash);
1777}
1778.why-slop-card {
1779  flex: 1;
1780  background: linear-gradient(135deg, oklch(35% 0.14 280), oklch(55% 0.18 220));
1781  border-radius: 10px;
1782  padding: 14px;
1783  color: white;
1784  display: flex;
1785  flex-direction: column;
1786  gap: 6px;
1787  box-shadow: 0 20px 40px oklch(40% 0.14 270 / 0.25);
1788}
1789.why-slop-pill {
1790  font-family: 'Inter', system-ui, sans-serif;
1791  font-size: 9px;
1792  font-weight: 700;
1793  letter-spacing: 0.12em;
1794  background: rgba(255, 255, 255, 0.2);
1795  padding: 2px 6px;
1796  border-radius: 999px;
1797  align-self: flex-start;
1798}
1799.why-slop-title {
1800  font-family: 'Inter', system-ui, sans-serif;
1801  font-size: 14px;
1802  font-weight: 700;
1803  background: linear-gradient(135deg, #fff, #c4b5fd);
1804  -webkit-background-clip: text;
1805  background-clip: text;
1806  color: transparent;
1807  line-height: 1.1;
1808}
1809.why-slop-line {
1810  height: 4px;
1811  background: rgba(255, 255, 255, 0.15);
1812  border-radius: 2px;
1813}
1814.why-slop-line--short { width: 60%; }
1815.why-slop-cta {
1816  font-family: 'Inter', system-ui, sans-serif;
1817  font-size: 10px;
1818  font-weight: 600;
1819  padding: 6px 10px;
1820  background: rgba(255, 255, 255, 0.2);
1821  border-radius: 6px;
1822  align-self: flex-start;
1823  margin-top: auto;
1824}
1825.why-impeccable-card {
1826  flex: 1;
1827  background: var(--color-cream);
1828  border: 1px solid var(--color-mist);
1829  padding: 14px;
1830  display: flex;
1831  flex-direction: column;
1832  gap: 6px;
1833}
1834.why-impeccable-kicker {
1835  font-family: var(--font-mono);
1836  font-size: 9px;
1837  letter-spacing: 0.2em;
1838  text-transform: uppercase;
1839  color: var(--color-accent);
1840}
1841.why-impeccable-title {
1842  font-family: var(--font-display);
1843  font-size: 22px;
1844  line-height: 1.05;
1845  color: var(--color-ink);
1846}
1847.why-impeccable-title em {
1848  font-style: italic;
1849  color: var(--color-accent);
1850}
1851.why-impeccable-line {
1852  height: 4px;
1853  background: var(--color-mist);
1854  border-radius: 2px;
1855}
1856.why-impeccable-line--short { width: 55%; }
1857.why-impeccable-cta {
1858  font-family: var(--font-body);
1859  font-size: 11px;
1860  font-weight: 500;
1861  letter-spacing: 0.1em;
1862  text-transform: uppercase;
1863  color: var(--color-ink);
1864  border-bottom: 1.5px solid var(--color-ink);
1865  align-self: flex-start;
1866  margin-top: auto;
1867  padding-bottom: 3px;
1868}
1869
1870/* ─ Panel 02: Brand vs Product registers ─ */
1871.why-visual--registers {
1872  gap: var(--spacing-md);
1873}
1874.why-register {
1875  flex: 1;
1876  display: flex;
1877  flex-direction: column;
1878  gap: 10px;
1879  min-width: 0;
1880}
1881.why-register-label {
1882  font-family: var(--font-mono);
1883  font-size: 0.625rem;
1884  letter-spacing: 0.2em;
1885  text-transform: uppercase;
1886  color: var(--color-accent);
1887}
1888.why-register-mock {
1889  flex: 1;
1890  border-radius: 6px;
1891  padding: 18px;
1892  display: flex;
1893  flex-direction: column;
1894  justify-content: center;
1895}
1896.why-register-mock--brand {
1897  background: var(--color-cream);
1898  border: 1px solid var(--color-mist);
1899  gap: 12px;
1900}
1901.why-brand-hero-mono {
1902  font-family: var(--font-mono);
1903  font-size: 9px;
1904  letter-spacing: 0.24em;
1905  text-transform: uppercase;
1906  color: var(--color-ash);
1907}
1908.why-brand-hero-title {
1909  font-family: var(--font-display);
1910  font-size: 28px;
1911  line-height: 1;
1912  color: var(--color-ink);
1913  letter-spacing: -0.02em;
1914}
1915.why-brand-hero-title em {
1916  font-style: italic;
1917  color: var(--color-accent);
1918}
1919.why-register-mock--product {
1920  background: var(--color-paper);
1921  border: 1px solid var(--color-mist);
1922  padding: 0;
1923  gap: 0;
1924}
1925.why-product-row {
1926  display: flex;
1927  justify-content: space-between;
1928  align-items: baseline;
1929  padding: 10px 14px;
1930  border-bottom: 1px solid var(--color-mist);
1931}
1932.why-product-row:last-child { border-bottom: 0; }
1933.why-product-k {
1934  font-family: var(--font-mono);
1935  font-size: 10px;
1936  letter-spacing: 0.1em;
1937  text-transform: uppercase;
1938  color: var(--color-ash);
1939}
1940.why-product-v {
1941  font-family: var(--font-body);
1942  font-size: 14px;
1943  font-weight: 500;
1944  color: var(--color-ink);
1945}
1946
1947/* ─ Panel 03: Terminal output ─ */
1948.why-visual--terminal,
1949.why-visual--ci {
1950  padding: 0;
1951  background: oklch(12% 0 0);
1952  border-color: oklch(18% 0 0);
1953}
1954.why-terminal {
1955  width: 100%;
1956  display: flex;
1957  flex-direction: column;
1958}
1959.why-terminal-header {
1960  display: flex;
1961  align-items: center;
1962  gap: 6px;
1963  padding: 10px 14px;
1964  border-bottom: 1px solid oklch(20% 0 0);
1965  background: oklch(14% 0 0);
1966  border-radius: 7px 7px 0 0;
1967}
1968.why-terminal-dot {
1969  width: 10px;
1970  height: 10px;
1971  border-radius: 50%;
1972  background: oklch(35% 0 0);
1973}
1974.why-terminal-title {
1975  font-family: var(--font-mono);
1976  font-size: 11px;
1977  color: oklch(65% 0 0);
1978  margin-left: 10px;
1979}
1980.why-terminal-body {
1981  padding: 14px;
1982  font-family: var(--font-mono);
1983  font-size: 12px;
1984  line-height: 1.7;
1985  color: oklch(80% 0 0);
1986}
1987.why-terminal-line { white-space: pre; }
1988.why-terminal-line--prompt { color: oklch(90% 0 0); }
1989.why-terminal-prompt { color: var(--color-accent); margin-right: 4px; }
1990.why-terminal-ok { color: oklch(75% 0.15 145); }
1991.why-terminal-arrow { color: var(--color-accent); }
1992.why-terminal-line--hint {
1993  margin-top: 6px;
1994  color: oklch(90% 0 0);
1995}
1996
1997/* ─ Panel 04: Harness grid ─ */
1998.why-visual--harnesses {
1999  flex-direction: column;
2000  padding: 16px;
2001  gap: 14px;
2002}
2003.why-prompt-bar {
2004  font-family: var(--font-mono);
2005  font-size: 12px;
2006  color: var(--color-ink);
2007  background: var(--color-cream);
2008  border: 1px solid var(--color-mist);
2009  border-radius: 4px;
2010  padding: 8px 12px;
2011  display: flex;
2012  align-items: center;
2013  gap: 2px;
2014}
2015.why-prompt-slash {
2016  color: var(--color-accent);
2017  margin-right: 4px;
2018  font-weight: 500;
2019}
2020.why-prompt-caret {
2021  display: inline-block;
2022  width: 7px;
2023  height: 14px;
2024  background: var(--color-accent);
2025  margin-left: 2px;
2026  animation: whyCaret 1.1s steps(1) infinite;
2027}
2028@keyframes whyCaret {
2029  0%, 50% { opacity: 1; }
2030  50.01%, 100% { opacity: 0; }
2031}
2032.why-harness-grid {
2033  display: grid;
2034  grid-template-columns: repeat(4, 1fr);
2035  gap: 8px;
2036  flex: 1;
2037}
2038.why-harness {
2039  display: flex;
2040  flex-direction: column;
2041  align-items: center;
2042  justify-content: center;
2043  gap: 6px;
2044  padding: 10px 4px;
2045  background: var(--color-cream);
2046  border: 1px solid var(--color-mist);
2047  border-radius: 6px;
2048  font-family: var(--font-mono);
2049  font-size: 9px;
2050  letter-spacing: 0.08em;
2051  text-transform: uppercase;
2052  color: var(--color-charcoal);
2053}
2054.why-harness img {
2055  width: 24px;
2056  height: 24px;
2057  object-fit: contain;
2058  opacity: 0.85;
2059}
2060
2061/* ─ Panel 05: DESIGN.md file ─ */
2062.why-visual--designmd {
2063  padding: 0;
2064}
2065.why-designmd-file {
2066  flex: 1;
2067  display: flex;
2068  flex-direction: column;
2069  background: var(--color-paper);
2070  border-radius: 7px;
2071}
2072.why-designmd-header {
2073  display: flex;
2074  justify-content: space-between;
2075  align-items: center;
2076  padding: 10px 14px;
2077  border-bottom: 1px solid var(--color-mist);
2078  background: var(--color-cream);
2079  border-radius: 7px 7px 0 0;
2080}
2081.why-designmd-filename {
2082  font-family: var(--font-mono);
2083  font-size: 11px;
2084  font-weight: 500;
2085  color: var(--color-ink);
2086}
2087.why-designmd-badge {
2088  font-family: var(--font-mono);
2089  font-size: 9px;
2090  letter-spacing: 0.15em;
2091  text-transform: uppercase;
2092  color: var(--color-accent);
2093  background: var(--color-accent-dim);
2094  border: 1px solid var(--color-accent-soft);
2095  padding: 3px 8px;
2096  border-radius: 999px;
2097}
2098.why-designmd-sections {
2099  list-style: none;
2100  padding: 10px 14px;
2101  margin: 0;
2102  display: flex;
2103  flex-direction: column;
2104  font-family: var(--font-mono);
2105  font-size: 12px;
2106  line-height: 2;
2107  color: var(--color-ink);
2108}
2109.why-designmd-num {
2110  color: var(--color-accent);
2111  margin-right: 8px;
2112  font-weight: 500;
2113}
2114.why-designmd-footer {
2115  padding: 10px 14px;
2116  border-top: 1px solid var(--color-mist);
2117  font-family: var(--font-display);
2118  font-style: italic;
2119  font-size: 13px;
2120  color: var(--color-charcoal);
2121}
2122
2123/* ─ Panel 06: CI output ─ */
2124.why-ci-window {
2125  width: 100%;
2126  display: flex;
2127  flex-direction: column;
2128}
2129.why-ci-header {
2130  display: flex;
2131  justify-content: space-between;
2132  align-items: center;
2133  padding: 10px 14px;
2134  border-bottom: 1px solid oklch(20% 0 0);
2135  background: oklch(14% 0 0);
2136  border-radius: 7px 7px 0 0;
2137}
2138.why-ci-branch {
2139  font-family: var(--font-mono);
2140  font-size: 11px;
2141  color: oklch(75% 0 0);
2142}
2143.why-ci-status {
2144  font-family: var(--font-mono);
2145  font-size: 10px;
2146  letter-spacing: 0.1em;
2147  text-transform: uppercase;
2148  padding: 2px 8px;
2149  border-radius: 999px;
2150}
2151.why-ci-status--fail {
2152  color: oklch(78% 0.18 25);
2153  background: oklch(30% 0.15 25 / 0.3);
2154}
2155.why-ci-body {
2156  padding: 14px;
2157  font-family: var(--font-mono);
2158  font-size: 12px;
2159  line-height: 1.8;
2160  color: oklch(80% 0 0);
2161}
2162.why-ci-line { color: oklch(85% 0 0); }
2163.why-ci-cmd { color: var(--color-accent); margin-right: 6px; }
2164.why-ci-issue {
2165  display: flex;
2166  align-items: baseline;
2167  gap: 10px;
2168  padding-left: 4px;
2169  color: oklch(85% 0 0);
2170}
2171.why-ci-issue code {
2172  background: transparent;
2173  color: oklch(70% 0.12 220);
2174  padding: 0;
2175  font-size: 1em;
2176}
2177.why-ci-x { color: oklch(75% 0.18 25); }
2178.why-ci-summary {
2179  margin-top: 8px;
2180  padding-top: 8px;
2181  border-top: 1px solid oklch(20% 0 0);
2182  font-weight: 500;
2183  color: oklch(85% 0 0);
2184}
2185
2186/* ─ Panel 07: Chrome extension ─ */
2187.why-visual--extension {
2188  padding: 0;
2189  background: var(--color-cream);
2190}
2191.why-browser {
2192  flex: 1;
2193  display: flex;
2194  flex-direction: column;
2195  background: var(--color-paper);
2196  border-radius: 7px;
2197  overflow: hidden;
2198}
2199.why-browser-chrome {
2200  display: flex;
2201  align-items: center;
2202  gap: 6px;
2203  padding: 10px 14px;
2204  background: var(--color-mist);
2205  border-bottom: 1px solid oklch(86% 0 0);
2206}
2207.why-browser-dot {
2208  width: 9px;
2209  height: 9px;
2210  border-radius: 50%;
2211  background: oklch(75% 0 0);
2212}
2213.why-browser-url {
2214  margin-left: 12px;
2215  padding: 3px 10px;
2216  background: var(--color-paper);
2217  border-radius: 4px;
2218  font-family: var(--font-mono);
2219  font-size: 10px;
2220  color: var(--color-charcoal);
2221  flex: 1;
2222}
2223.why-browser-body {
2224  flex: 1;
2225  position: relative;
2226  padding: 20px;
2227  background:
2228    linear-gradient(var(--color-cream), var(--color-cream)) padding-box,
2229    repeating-linear-gradient(90deg, transparent 0 60px, var(--color-mist) 60px 61px);
2230}
2231.why-ext-popup {
2232  position: absolute;
2233  top: 16px;
2234  right: 16px;
2235  width: 180px;
2236  background: var(--color-paper);
2237  border: 1px solid var(--color-mist);
2238  border-radius: 6px;
2239  box-shadow: 0 8px 24px oklch(0% 0 0 / 0.12);
2240  overflow: hidden;
2241  z-index: 2;
2242}
2243.why-ext-popup-header {
2244  font-family: var(--font-mono);
2245  font-size: 10px;
2246  letter-spacing: 0.1em;
2247  text-transform: uppercase;
2248  color: var(--color-ink);
2249  padding: 8px 12px;
2250  background: var(--color-cream);
2251  border-bottom: 1px solid var(--color-mist);
2252}
2253.why-ext-popup-row {
2254  display: flex;
2255  align-items: center;
2256  gap: 8px;
2257  padding: 6px 12px;
2258  font-size: 11px;
2259  color: var(--color-charcoal);
2260  border-bottom: 1px solid var(--color-mist);
2261}
2262.why-ext-popup-row:last-child { border-bottom: 0; }
2263.why-ext-sev {
2264  color: var(--color-accent);
2265  font-weight: 600;
2266}
2267.why-ext-overlay-a,
2268.why-ext-overlay-b {
2269  position: absolute;
2270  border: 2px solid var(--color-accent);
2271  border-radius: 4px;
2272  pointer-events: none;
2273}
2274.why-ext-overlay-a {
2275  left: 20px;
2276  top: 30px;
2277  width: 42%;
2278  height: 36px;
2279}
2280.why-ext-overlay-b {
2281  left: 20px;
2282  bottom: 24px;
2283  width: 30%;
2284  height: 30px;
2285}
2286
2287/* Mobile */
2288@media (max-width: 700px) {
2289  .why-visual { min-height: 200px; }
2290  .why-harness-grid { grid-template-columns: repeat(3, 1fr); }
2291  .why-compare-card, .why-register { gap: 8px; }
2292}
2293
2294/* ============================================
2295   WHY — updated visuals (panels 1, 3, 4, 5)
2296   ============================================ */
2297
2298/* ─ Panel 01: PRODUCT.md file view ─ */
2299.why-visual--productmd {
2300  padding: 0;
2301  background: transparent;
2302  display: grid;
2303  grid-template-columns: minmax(0, 1fr) auto;
2304  gap: var(--spacing-lg);
2305  align-items: start;
2306}
2307@media (max-width: 780px) {
2308  .why-visual--productmd {
2309    grid-template-columns: 1fr;
2310  }
2311}
2312.why-productmd-file {
2313  display: flex;
2314  flex-direction: column;
2315  background: var(--color-paper);
2316  border: 1px solid var(--color-mist);
2317  border-radius: 8px;
2318  overflow: hidden;
2319  min-width: 0;
2320}
2321.why-productmd-commands {
2322  display: flex;
2323  flex-direction: column;
2324  gap: 8px;
2325  padding-top: 4px;
2326  min-width: 160px;
2327}
2328.why-productmd-commands-label {
2329  font-family: var(--font-mono);
2330  font-size: 9.5px;
2331  letter-spacing: 0.16em;
2332  text-transform: uppercase;
2333  color: var(--color-ash);
2334  margin-bottom: 4px;
2335}
2336.why-productmd-commands code {
2337  font-family: var(--font-mono);
2338  font-size: 12px;
2339  color: var(--color-ink);
2340  background: var(--color-paper);
2341  border: 1px solid var(--color-mist);
2342  border-radius: 5px;
2343  padding: 5px 9px;
2344  white-space: nowrap;
2345}
2346.why-productmd-header {
2347  display: flex;
2348  align-items: center;
2349  justify-content: space-between;
2350  padding: 10px 14px;
2351  border-bottom: 1px solid var(--color-mist);
2352  background: var(--color-cream);
2353  border-radius: 7px 7px 0 0;
2354}
2355.why-productmd-filename {
2356  font-family: var(--font-mono);
2357  font-size: 11px;
2358  font-weight: 500;
2359  color: var(--color-ink);
2360}
2361.why-productmd-status {
2362  font-family: var(--font-mono);
2363  font-size: 9px;
2364  letter-spacing: 0.15em;
2365  text-transform: uppercase;
2366  color: var(--color-accent);
2367}
2368.why-productmd-body {
2369  padding: 6px 14px;
2370  display: flex;
2371  flex-direction: column;
2372}
2373.why-productmd-field {
2374  display: grid;
2375  grid-template-columns: 110px 1fr;
2376  gap: 16px;
2377  align-items: baseline;
2378  padding: 9px 0;
2379  border-bottom: 1px dashed var(--color-mist);
2380}
2381.why-productmd-field:last-child { border-bottom: 0; }
2382.why-productmd-k {
2383  font-family: var(--font-mono);
2384  font-size: 10px;
2385  letter-spacing: 0.1em;
2386  text-transform: uppercase;
2387  color: var(--color-ash);
2388}
2389.why-productmd-v {
2390  font-family: var(--font-body);
2391  font-size: 13px;
2392  line-height: 1.5;
2393  color: var(--color-ink);
2394}
2395.why-productmd-footer {
2396  padding: 10px 14px;
2397  border-top: 1px solid var(--color-mist);
2398  font-family: var(--font-display);
2399  font-style: italic;
2400  font-size: 13px;
2401  line-height: 1.4;
2402  color: var(--color-charcoal);
2403  display: flex;
2404  align-items: center;
2405  gap: 8px;
2406  background: var(--color-cream);
2407  border-radius: 0 0 7px 7px;
2408}
2409.why-productmd-footer-dot {
2410  display: inline-block;
2411  width: 7px;
2412  height: 7px;
2413  border-radius: 50%;
2414  background: var(--color-accent);
2415  animation: whyPulse 2.4s ease-out infinite;
2416  flex-shrink: 0;
2417}
2418@keyframes whyPulse {
2419  0%, 100% { transform: scale(1); opacity: 1; }
2420  50% { transform: scale(0.6); opacity: 0.5; }
2421}
2422@media (prefers-reduced-motion: reduce) {
2423  .why-productmd-footer-dot { animation: none; }
2424}
2425
2426/* ─ Panel 03: path + meta additions ─ */
2427.why-terminal-path {
2428  color: oklch(88% 0.05 220);
2429}
2430.why-terminal-meta {
2431  color: oklch(58% 0 0);
2432  font-size: 0.9em;
2433}
2434
2435/* ─ Panel 04: waterfall vs unified surface ─ */
2436.why-visual--flow {
2437  flex-direction: column;
2438  gap: 14px;
2439  padding: 16px;
2440}
2441.why-flow-row {
2442  display: flex;
2443  flex-direction: column;
2444  gap: 8px;
2445  flex: 1;
2446  min-height: 0;
2447}
2448.why-flow-label {
2449  font-family: var(--font-mono);
2450  font-size: 10px;
2451  letter-spacing: 0.2em;
2452  text-transform: uppercase;
2453  color: var(--color-ash);
2454}
2455.why-flow-row--old .why-flow-label { color: var(--color-ash); }
2456.why-flow-row--new .why-flow-label { color: var(--color-accent); }
2457
2458.why-flow-steps {
2459  display: flex;
2460  align-items: center;
2461  flex-wrap: wrap;
2462  gap: 6px;
2463  opacity: 0.5;
2464}
2465.why-flow-step {
2466  font-family: var(--font-body);
2467  font-size: 12px;
2468  color: var(--color-charcoal);
2469  padding: 4px 10px;
2470  background: var(--color-paper);
2471  border: 1px solid var(--color-mist);
2472  border-radius: 3px;
2473  text-decoration: line-through;
2474  text-decoration-color: var(--color-ash);
2475}
2476.why-flow-arrow {
2477  color: var(--color-ash);
2478  font-size: 12px;
2479}
2480.why-flow-pair {
2481  display: grid;
2482  grid-template-columns: 1fr auto 1fr;
2483  gap: 12px;
2484  align-items: stretch;
2485}
2486.why-flow-tile {
2487  display: flex;
2488  flex-direction: column;
2489  gap: 6px;
2490  padding: 14px 16px;
2491  background: var(--color-paper);
2492  border: 1px solid var(--color-mist);
2493  border-radius: 6px;
2494  min-width: 0;
2495}
2496.why-flow-tile--agent {
2497  background: var(--color-ink);
2498  border-color: var(--color-ink);
2499  color: var(--color-paper);
2500}
2501.why-flow-tile--browser {
2502  background: var(--color-cream);
2503  border-color: var(--color-mist);
2504}
2505.why-flow-tile-kicker {
2506  font-family: var(--font-mono);
2507  font-size: 9px;
2508  letter-spacing: 0.24em;
2509  text-transform: uppercase;
2510  color: var(--color-accent);
2511}
2512.why-flow-tile--agent .why-flow-tile-kicker { color: oklch(72% 0.15 350); }
2513.why-flow-tile-title {
2514  font-family: var(--font-display);
2515  font-style: italic;
2516  font-size: 20px;
2517  line-height: 1.1;
2518  color: inherit;
2519}
2520.why-flow-tile--browser .why-flow-tile-title { color: var(--color-ink); }
2521.why-flow-tile-meta {
2522  font-family: var(--font-body);
2523  font-size: 12px;
2524  line-height: 1.4;
2525  color: inherit;
2526  opacity: 0.75;
2527}
2528.why-flow-tile--browser .why-flow-tile-meta { color: var(--color-charcoal); opacity: 1; }
2529.why-flow-plus {
2530  align-self: center;
2531  font-family: var(--font-display);
2532  font-size: 28px;
2533  color: var(--color-accent);
2534  font-weight: 300;
2535  padding: 0 4px;
2536}
2537.why-flow-surface-foot {
2538  font-family: var(--font-display);
2539  font-style: italic;
2540  font-size: 13px;
2541  color: var(--color-charcoal);
2542  padding: 0 4px;
2543  margin-top: 6px;
2544}
2545
2546/* ─ Panel 05: rich DESIGN.md tiles ─ */
2547.why-visual--designmd-v2 {
2548  flex-direction: column;
2549  gap: 12px;
2550  padding: 12px;
2551  background: var(--color-cream);
2552}
2553.why-dm-header {
2554  display: flex;
2555  justify-content: space-between;
2556  align-items: center;
2557  padding: 0 2px;
2558}
2559.why-dm-filename {
2560  font-family: var(--font-mono);
2561  font-size: 11px;
2562  font-weight: 500;
2563  color: var(--color-ink);
2564}
2565.why-dm-badge {
2566  font-family: var(--font-mono);
2567  font-size: 9px;
2568  letter-spacing: 0.15em;
2569  text-transform: uppercase;
2570  color: var(--color-accent);
2571  background: var(--color-accent-dim);
2572  border: 1px solid var(--color-accent-soft);
2573  padding: 3px 8px;
2574  border-radius: 999px;
2575}
2576.why-dm-grid {
2577  display: grid;
2578  grid-template-columns: 1.1fr 1fr 1fr;
2579  grid-template-rows: 1fr 1fr;
2580  gap: 8px;
2581  flex: 1;
2582  min-height: 0;
2583}
2584.why-dm-tile {
2585  background: var(--color-paper);
2586  border: 1px solid var(--color-mist);
2587  border-radius: 6px;
2588  padding: 10px;
2589  display: flex;
2590  flex-direction: column;
2591  gap: 8px;
2592  min-width: 0;
2593  overflow: hidden;
2594}
2595.why-dm-tile-meta {
2596  display: flex;
2597  justify-content: space-between;
2598  font-family: var(--font-mono);
2599  font-size: 9px;
2600  letter-spacing: 0.1em;
2601  text-transform: uppercase;
2602  color: var(--color-ash);
2603}
2604.why-dm-tile-meta span:first-child { color: var(--color-ink); }
2605
2606.why-dm-tile--color { grid-row: 1 / 3; }
2607.why-dm-color-hero {
2608  flex: 1;
2609  background: var(--c);
2610  border-radius: 4px;
2611  min-height: 40px;
2612}
2613.why-dm-color-ramp {
2614  display: grid;
2615  grid-template-columns: repeat(8, 1fr);
2616  gap: 2px;
2617  height: 16px;
2618}
2619.why-dm-color-ramp span {
2620  border-radius: 2px;
2621}
2622
2623.why-dm-tile--type {
2624  align-items: flex-start;
2625}
2626.why-dm-type-specimen {
2627  font-family: var(--font-display);
2628  font-style: italic;
2629  font-size: 48px;
2630  line-height: 0.9;
2631  color: var(--color-ink);
2632  flex: 1;
2633  display: flex;
2634  align-items: center;
2635}
2636.why-dm-type-specimen--sans {
2637  font-family: var(--font-body);
2638  font-style: normal;
2639  font-weight: 400;
2640}
2641.why-dm-type-family {
2642  font-family: var(--font-mono);
2643  font-size: 10px;
2644  color: var(--color-charcoal);
2645}
2646
2647.why-dm-tile--components {
2648  justify-content: space-between;
2649}
2650.why-dm-comp-row {
2651  display: flex;
2652  gap: 6px;
2653}
2654.why-dm-comp-chip {
2655  font-family: var(--font-body);
2656  font-size: 10px;
2657  font-weight: 500;
2658  padding: 5px 10px;
2659  background: var(--color-paper);
2660  border: 1px solid var(--color-mist);
2661  border-radius: 3px;
2662  color: var(--color-ink);
2663}
2664.why-dm-comp-chip--primary {
2665  background: var(--color-ink);
2666  color: var(--color-paper);
2667  border-color: var(--color-ink);
2668}
2669.why-dm-comp-input {
2670  font-family: var(--font-body);
2671  font-size: 11px;
2672  padding: 6px 10px;
2673  background: var(--color-paper);
2674  border: 1px solid var(--color-mist);
2675  border-radius: 4px;
2676  color: var(--color-ash);
2677}
2678
2679.why-dm-foot {
2680  font-family: var(--font-display);
2681  font-style: italic;
2682  font-size: 13px;
2683  color: var(--color-charcoal);
2684  padding: 0 2px;
2685}
2686
2687@media (max-width: 700px) {
2688  .why-dm-grid {
2689    grid-template-columns: 1fr 1fr;
2690  }
2691  .why-dm-tile--color { grid-row: 1 / 3; }
2692  .why-flow-step { font-size: 11px; padding: 4px 8px; }
2693}
2694
2695/* ============================================
2696   WHY panel 04 — split diagonal (canvas vs. agent+browser)
2697   Carbonized from live session afb9794d.
2698   ============================================ */
2699
2700.why-visual--v2 {
2701  padding: 0;
2702  gap: 0;
2703  display: grid;
2704  grid-template-columns: 1fr 1fr;
2705  overflow: hidden;
2706}
2707.why-visual--v2 .v2-side {
2708  padding: 16px;
2709  display: flex;
2710  flex-direction: column;
2711  gap: 10px;
2712  min-width: 0;
2713}
2714.why-visual--v2 .v2-side--old {
2715  background: oklch(94% 0 0);
2716  position: relative;
2717}
2718.why-visual--v2 .v2-side--old::after {
2719  content: "";
2720  position: absolute;
2721  inset: 0;
2722  background: repeating-linear-gradient(0deg, transparent 0 24px, oklch(0% 0 0 / 0.04) 24px 25px);
2723  pointer-events: none;
2724}
2725.why-visual--v2 .v2-side--new {
2726  background: var(--color-cream);
2727  border-left: 1px solid var(--color-mist);
2728}
2729.why-visual--v2 .v2-label {
2730  font-family: var(--font-mono);
2731  font-size: 10px;
2732  letter-spacing: 0.2em;
2733  text-transform: uppercase;
2734  color: var(--color-ash);
2735  z-index: 1;
2736}
2737.why-visual--v2 .v2-side--new .v2-label { color: var(--color-accent); }
2738.why-visual--v2 .v2-canvas-chrome {
2739  display: flex;
2740  gap: 6px;
2741  align-items: center;
2742  padding-bottom: 8px;
2743  border-bottom: 1px solid oklch(86% 0 0);
2744  z-index: 1;
2745}
2746.why-visual--v2 .v2-canvas-tool {
2747  font-family: var(--font-mono);
2748  font-size: 9px;
2749  color: oklch(45% 0 0);
2750  background: var(--color-paper);
2751  padding: 3px 7px;
2752  border-radius: 3px;
2753  border: 1px solid oklch(86% 0 0);
2754}
2755.why-visual--v2 .v2-canvas-art {
2756  flex: 1;
2757  display: flex;
2758  flex-direction: column;
2759  justify-content: center;
2760  align-items: center;
2761  gap: 6px;
2762  z-index: 1;
2763}
2764.why-visual--v2 .v2-canvas-file {
2765  font-family: var(--font-mono);
2766  font-size: 10px;
2767  color: oklch(40% 0 0);
2768}
2769.why-visual--v2 .v2-canvas-mock {
2770  width: 100%;
2771  max-width: 120px;
2772  height: 60px;
2773  background: var(--color-paper);
2774  border: 1px solid oklch(82% 0 0);
2775  border-radius: 4px;
2776  box-shadow: 0 4px 16px oklch(0% 0 0 / 0.08);
2777}
2778.why-visual--v2 .v2-canvas-stamp {
2779  font-family: var(--font-display);
2780  font-style: italic;
2781  font-size: 11px;
2782  color: oklch(50% 0 0);
2783}
2784.why-visual--v2 .v2-new-surface {
2785  flex: 1;
2786  display: flex;
2787  flex-direction: column;
2788  justify-content: center;
2789  gap: 8px;
2790}
2791.why-visual--v2 .v2-new-line {
2792  font-family: var(--font-mono);
2793  font-size: 12px;
2794  color: var(--color-ink);
2795  background: var(--color-paper);
2796  border: 1px solid var(--color-mist);
2797  padding: 8px 12px;
2798  border-radius: 4px;
2799  display: flex;
2800  align-items: center;
2801  gap: 8px;
2802}
2803.why-visual--v2 .v2-new-line::before {
2804  content: "/";
2805  color: var(--color-accent);
2806  font-weight: 500;
2807}
2808.why-visual--v2 .v2-new-browser {
2809  flex: 1;
2810  background: var(--color-paper);
2811  border: 1px solid var(--color-mist);
2812  border-radius: 4px;
2813  overflow: hidden;
2814  display: flex;
2815  flex-direction: column;
2816  min-height: 60px;
2817}
2818.why-visual--v2 .v2-new-browser-dots {
2819  display: flex;
2820  gap: 4px;
2821  padding: 6px 8px;
2822  background: var(--color-mist);
2823}
2824.why-visual--v2 .v2-new-browser-dot {
2825  width: 6px;
2826  height: 6px;
2827  border-radius: 50%;
2828  background: oklch(78% 0 0);
2829}
2830.why-visual--v2 .v2-new-browser-frame {
2831  flex: 1;
2832  background: linear-gradient(0deg, var(--color-cream) 0, transparent 40%), var(--color-paper);
2833  position: relative;
2834}
2835.why-visual--v2 .v2-new-browser-frame::after {
2836  content: "";
2837  position: absolute;
2838  left: 10px;
2839  top: 10px;
2840  width: 40%;
2841  height: 8px;
2842  border: 1.5px solid var(--color-accent);
2843  border-radius: 3px;
2844}
2845.why-visual--v2 .v2-new-bar {
2846  align-self: center;
2847  background: var(--color-ink);
2848  color: var(--color-paper);
2849  padding: 4px 10px;
2850  border-radius: 999px;
2851  font-family: var(--font-mono);
2852  font-size: 9px;
2853  letter-spacing: 0.15em;
2854  text-transform: uppercase;
2855  margin-top: -2px;
2856}
2857
2858/* ─ Panel: Visualize, then ship: generated inputs plus live build ─ */
2859.why-visual--vizfirst {
2860  display: grid;
2861  grid-template-columns: 0.88fr 0.68fr 1.18fr;
2862  gap: clamp(10px, 1.5vw, 18px);
2863  align-items: stretch;
2864  padding: 0;
2865  overflow: visible;
2866}
2867
2868.why-vz-plate {
2869  margin: 0;
2870  display: flex;
2871  flex-direction: column;
2872  gap: 8px;
2873  min-width: 0;
2874}
2875
2876.why-vz-plate-kind {
2877  font-family: var(--font-mono);
2878  font-size: 0.625rem;
2879  font-weight: 600;
2880  letter-spacing: 0.18em;
2881  text-transform: uppercase;
2882  color: var(--color-accent);
2883}
2884
2885.why-vz-plate-frame {
2886  display: block;
2887  background: var(--color-cream);
2888  border: 1px solid var(--color-mist);
2889  overflow: hidden;
2890  height: 250px;
2891  transition: border-color var(--duration-base) var(--ease-out), transform var(--duration-base) var(--ease-out);
2892}
2893
2894.why-vz-plate:hover .why-vz-plate-frame {
2895  border-color: var(--color-accent);
2896  transform: translateY(-2px);
2897}
2898
2899.why-vz-plate-frame img {
2900  display: block;
2901  width: 100%;
2902  height: 100%;
2903  object-fit: cover;
2904  object-position: top center;
2905}
2906
2907.why-vz-plate--live .why-vz-plate-frame img {
2908  object-position: top left;
2909}
2910
2911@media (max-width: 720px) {
2912  .why-visual--vizfirst {
2913    grid-template-columns: 1fr;
2914    gap: 12px;
2915  }
2916  .why-vz-plate-frame {
2917    height: 240px;
2918  }
2919}
2920
2921
2922/* ============================================
2923   LANGUAGE section — Palette / Periodic tabs
2924   ============================================ */
2925
2926.language-intro-row {
2927  display: flex;
2928  align-items: flex-end;
2929  justify-content: space-between;
2930  gap: var(--spacing-lg);
2931}
2932
2933.language-intro-row .section-lead {
2934  margin: 0;
2935  flex: 1;
2936}
2937
2938.language-view-toggle {
2939  display: inline-flex;
2940  gap: 2px;
2941  padding: 3px;
2942  background: var(--color-mist);
2943  border-radius: 999px;
2944  flex-shrink: 0;
2945}
2946
2947.language-view-tab {
2948  font-family: var(--font-mono);
2949  font-size: 0.6875rem;
2950  letter-spacing: 0.14em;
2951  text-transform: uppercase;
2952  padding: 8px 18px;
2953  background: transparent;
2954  border: 0;
2955  border-radius: 999px;
2956  color: var(--color-ash);
2957  cursor: pointer;
2958  transition: background 200ms var(--ease-out), color 200ms var(--ease-out);
2959}
2960
2961.language-view-tab:hover { color: var(--color-ink); }
2962
2963.language-view-tab.is-active {
2964  background: var(--color-paper);
2965  color: var(--color-ink);
2966  box-shadow: 0 1px 3px oklch(0% 0 0 / 0.08);
2967}
2968
2969.language-view-tab:focus-visible {
2970  outline: 2px solid var(--color-accent);
2971  outline-offset: 2px;
2972}
2973
2974.language-view { display: none; }
2975.language-view.is-active { display: block; }
2976
2977@media (max-width: 680px) {
2978  .language-intro-row {
2979    flex-direction: column;
2980    align-items: flex-start;
2981  }
2982}
2983
2984/* ============================================
2985   ANTIDOTE — two-column editorial layout
2986   ============================================ */
2987
2988.antidote-row--split {
2989  display: grid;
2990  grid-template-columns: minmax(0, 1fr) minmax(320px, 420px);
2991  gap: var(--spacing-2xl);
2992  align-items: start;
2993}
2994
2995.antidote-intro {
2996  display: flex;
2997  flex-direction: column;
2998  gap: var(--spacing-lg);
2999  max-width: 60ch;
3000}
3001
3002.antidote-intro .section-lead {
3003  margin-bottom: 0;
3004}
3005
3006.antidote-stats {
3007  display: flex;
3008  flex-direction: column;
3009  gap: var(--spacing-sm);
3010  margin: 0;
3011  padding: var(--spacing-md) 0 0;
3012  border-top: 1px solid var(--color-mist);
3013}
3014
3015.antidote-stat {
3016  display: grid;
3017  grid-template-columns: 80px 1fr;
3018  gap: var(--spacing-md);
3019  align-items: baseline;
3020  padding: var(--spacing-sm) 0;
3021  border-bottom: 1px dashed var(--color-mist);
3022}
3023
3024.antidote-stat:last-child { border-bottom: 0; }
3025
3026.antidote-stat dt {
3027  font-family: var(--font-display);
3028  font-style: italic;
3029  font-weight: 400;
3030  font-size: 3rem;
3031  line-height: 1;
3032  color: var(--color-accent);
3033  letter-spacing: -0.02em;
3034}
3035
3036.antidote-stat dd strong {
3037  font-weight: 600;
3038  color: var(--color-ink);
3039}
3040
3041.antidote-stat dd {
3042  margin: 0;
3043  font-family: var(--font-body);
3044  font-size: 0.9375rem;
3045  line-height: 1.5;
3046  color: var(--color-charcoal);
3047}
3048
3049.antidote-stat dd code {
3050  font-family: var(--font-mono);
3051  font-size: 0.875em;
3052  background: var(--color-mist);
3053  padding: 1px 6px;
3054  border-radius: 3px;
3055  color: var(--color-ink);
3056}
3057
3058.antidote-catalog-link {
3059  font-family: var(--font-body);
3060  font-weight: 500;
3061  font-size: 0.875rem;
3062  letter-spacing: 0.06em;
3063  text-transform: uppercase;
3064  color: var(--color-ink);
3065  border-bottom: 2px solid var(--color-ink);
3066  padding-bottom: 4px;
3067  text-decoration: none;
3068  align-self: flex-start;
3069  transition: color 200ms var(--ease-out), border-color 200ms var(--ease-out);
3070}
3071
3072.antidote-catalog-link:hover {
3073  color: var(--color-accent);
3074  border-color: var(--color-accent);
3075}
3076
3077@media (max-width: 900px) {
3078  .antidote-row--split {
3079    grid-template-columns: 1fr;
3080    gap: var(--spacing-xl);
3081  }
3082}
3083
3084/* ============================================
3085   ANTIDOTE — visual-first wall of three
3086   ============================================ */
3087
3088.antidote-content .section-lead {
3089  max-width: 54ch;
3090  margin-bottom: var(--spacing-xl);
3091}
3092
3093.antidote-wall {
3094  display: grid;
3095  grid-template-columns: repeat(3, 1fr);
3096  gap: var(--spacing-lg);
3097  margin-bottom: var(--spacing-xl);
3098}
3099
3100.antidote-pair {
3101  display: grid;
3102  grid-template-rows: 1fr 1fr auto;
3103  gap: 12px;
3104  text-decoration: none;
3105  color: inherit;
3106  transition: transform 260ms var(--ease-out);
3107}
3108.antidote-pair:hover { transform: translateY(-4px); }
3109
3110.antidote-pair-figure {
3111  position: relative;
3112  margin: 0;
3113  min-height: 140px;
3114  border-radius: 8px;
3115  background: var(--color-paper);
3116  border: 1px solid var(--color-mist);
3117  overflow: hidden;
3118  transition: box-shadow 260ms var(--ease-out);
3119  display: flex;
3120  align-items: center;
3121  justify-content: center;
3122  padding: 20px 18px;
3123}
3124.antidote-pair-figure--before {
3125  background: oklch(98% 0 0);
3126}
3127.antidote-pair-figure--after {
3128  background: var(--color-cream);
3129}
3130.ab-slot {
3131  width: 100%;
3132  display: flex;
3133  flex-direction: column;
3134  justify-content: center;
3135  align-items: flex-start;
3136}
3137.antidote-pair-figure img {
3138  width: 100%;
3139  height: 100%;
3140  object-fit: cover;
3141  object-position: center top;
3142  display: block;
3143}
3144.antidote-pair-figure figcaption {
3145  position: absolute;
3146  top: 8px;
3147  right: 8px;
3148  z-index: 2;
3149  font-family: var(--font-mono);
3150  font-size: 9px;
3151  font-weight: 600;
3152  letter-spacing: 0.2em;
3153  text-transform: uppercase;
3154  padding: 2px 8px;
3155  border-radius: 3px;
3156  background: oklch(100% 0 0 / 0.9);
3157  color: var(--color-ink);
3158  backdrop-filter: blur(6px);
3159  -webkit-backdrop-filter: blur(6px);
3160}
3161.antidote-pair-figure--before figcaption { color: oklch(35% 0.15 25); background: oklch(98% 0.04 25 / 0.9); }
3162.antidote-pair-figure--after figcaption { color: oklch(45% 0.18 145); background: oklch(96% 0.04 145 / 0.9); }
3163.antidote-pair:hover .antidote-pair-figure {
3164  box-shadow: 0 14px 28px oklch(0% 0 0 / 0.1);
3165}
3166
3167.antidote-pair-caption {
3168  display: flex;
3169  align-items: baseline;
3170  gap: var(--spacing-sm);
3171  padding: 0 2px;
3172}
3173.antidote-pair-num {
3174  font-family: var(--font-mono);
3175  font-size: 0.6875rem;
3176  font-weight: 600;
3177  letter-spacing: 0.2em;
3178  text-transform: uppercase;
3179  color: var(--color-accent);
3180}
3181.antidote-pair-name {
3182  font-family: var(--font-display);
3183  font-style: italic;
3184  font-weight: 400;
3185  font-size: 1.375rem;
3186  line-height: 1.1;
3187  color: var(--color-ink);
3188  letter-spacing: -0.01em;
3189}
3190
3191/* After mocks — pure HTML/CSS impressions of what Impeccable steers toward */
3192.ab-after {
3193  position: absolute;
3194  inset: 0;
3195  padding: 12px;
3196  display: flex;
3197  flex-direction: column;
3198}
3199
3200/* After 01: editorial hero */
3201.ab-after--editorial {
3202  background: var(--color-cream);
3203  gap: 10px;
3204}
3205.ab-after-nav {
3206  display: flex;
3207  align-items: center;
3208  gap: 6px;
3209  padding-bottom: 8px;
3210  border-bottom: 1px solid var(--color-mist);
3211}
3212.ab-after-logo {
3213  width: 12px;
3214  height: 12px;
3215  border-radius: 3px;
3216  background: var(--color-ink);
3217}
3218.ab-after-link {
3219  width: 22px;
3220  height: 5px;
3221  border-radius: 2px;
3222  background: var(--color-mist);
3223}
3224.ab-after-cta {
3225  margin-left: auto;
3226  width: 48px;
3227  height: 16px;
3228  border-radius: 2px;
3229  background: var(--color-ink);
3230}
3231.ab-after-hero {
3232  display: flex;
3233  flex-direction: column;
3234  gap: 6px;
3235  flex: 1;
3236  justify-content: center;
3237}
3238.ab-after-kicker {
3239  font-family: var(--font-mono);
3240  font-size: 9px;
3241  letter-spacing: 0.22em;
3242  text-transform: uppercase;
3243  color: var(--color-accent);
3244}
3245.ab-after-title {
3246  font-family: var(--font-display);
3247  font-weight: 400;
3248  font-size: 20px;
3249  line-height: 1.05;
3250  color: var(--color-ink);
3251  letter-spacing: -0.01em;
3252  max-width: 10ch;
3253}
3254.ab-after-title em {
3255  font-style: italic;
3256  color: var(--color-accent);
3257}
3258.ab-after-line {
3259  height: 5px;
3260  border-radius: 2px;
3261  background: var(--color-mist);
3262}
3263.ab-after-line--short { width: 60%; }
3264.ab-after-btn {
3265  align-self: flex-start;
3266  margin-top: 4px;
3267  font-family: var(--font-body);
3268  font-weight: 500;
3269  font-size: 10px;
3270  letter-spacing: 0.12em;
3271  text-transform: uppercase;
3272  padding: 7px 12px;
3273  background: var(--color-ink);
3274  color: var(--color-paper);
3275  border-radius: 0;
3276}
3277
3278/* After 02: flat data table */
3279.ab-after--data {
3280  background: var(--color-paper);
3281  gap: 0;
3282  padding: 14px 14px 10px;
3283}
3284.ab-after-data-kicker {
3285  font-family: var(--font-mono);
3286  font-size: 9px;
3287  letter-spacing: 0.22em;
3288  text-transform: uppercase;
3289  color: var(--color-ash);
3290  margin-bottom: 10px;
3291}
3292.ab-after-data-row {
3293  display: grid;
3294  grid-template-columns: 1fr max-content max-content;
3295  gap: 10px;
3296  align-items: baseline;
3297  padding: 8px 0;
3298  border-bottom: 1px solid var(--color-mist);
3299  font-family: var(--font-body);
3300  font-size: 11px;
3301}
3302.ab-after-data-row:last-child { border-bottom: 0; }
3303.ab-after-data-k { color: var(--color-charcoal); }
3304.ab-after-data-v {
3305  font-family: var(--font-display);
3306  font-weight: 500;
3307  font-size: 14px;
3308  color: var(--color-ink);
3309  letter-spacing: -0.01em;
3310}
3311.ab-after-data-d {
3312  font-family: var(--font-mono);
3313  font-size: 10px;
3314  color: oklch(45% 0.18 145);
3315}
3316
3317/* After 03: one big honest insight */
3318.ab-after--insight {
3319  background: var(--color-cream);
3320  padding: 18px 20px;
3321  gap: 6px;
3322  justify-content: center;
3323}
3324.ab-after-insight-kicker {
3325  font-family: var(--font-mono);
3326  font-size: 9px;
3327  letter-spacing: 0.24em;
3328  text-transform: uppercase;
3329  color: var(--color-ash);
3330}
3331.ab-after-insight-num {
3332  font-family: var(--font-display);
3333  font-style: italic;
3334  font-weight: 400;
3335  font-size: 52px;
3336  line-height: 1;
3337  color: var(--color-ink);
3338  letter-spacing: -0.03em;
3339}
3340.ab-after-insight-num span {
3341  font-size: 0.5em;
3342  font-style: normal;
3343  color: var(--color-accent);
3344  margin-left: 2px;
3345  vertical-align: top;
3346}
3347.ab-after-insight-label {
3348  font-family: var(--font-body);
3349  font-size: 12px;
3350  line-height: 1.4;
3351  color: var(--color-charcoal);
3352  max-width: 24ch;
3353}
3354.ab-after-insight-label em {
3355  font-style: italic;
3356  color: var(--color-ink);
3357}
3358.ab-after-spark {
3359  width: 100%;
3360  height: 28px;
3361  margin-top: 6px;
3362  color: var(--color-accent);
3363  opacity: 0.8;
3364}
3365
3366.antidote-foot {
3367  display: flex;
3368  align-items: baseline;
3369  gap: var(--spacing-lg);
3370  padding-top: var(--spacing-md);
3371  border-top: 1px solid var(--color-mist);
3372  flex-wrap: wrap;
3373}
3374
3375.antidote-foot-meta {
3376  flex: 1;
3377  min-width: 0;
3378  font-family: var(--font-body);
3379  font-style: italic;
3380  font-size: 0.875rem;
3381  line-height: 1.55;
3382  color: var(--color-charcoal);
3383}
3384
3385.antidote-foot .antidote-suggest-link {
3386  font-size: 0.8125rem;
3387  color: var(--color-ash);
3388  text-decoration: none;
3389  white-space: nowrap;
3390}
3391.antidote-foot .antidote-suggest-link:hover {
3392  color: var(--color-accent);
3393  text-decoration: underline;
3394}
3395
3396@media (max-width: 820px) {
3397  .antidote-wall {
3398    grid-template-columns: 1fr;
3399    gap: var(--spacing-md);
3400  }
3401  .antidote-foot {
3402    flex-direction: column;
3403    align-items: flex-start;
3404    gap: var(--spacing-sm);
3405  }
3406}
3407
3408/* ============================================
3409   WHY — Anti-patterns, caught (tab 08 visual)
3410   ============================================ */
3411
3412.why-visual--antidote {
3413  display: grid;
3414  grid-template-columns: minmax(0, 1fr) 340px;
3415  gap: var(--spacing-lg);
3416  align-items: start;
3417}
3418
3419.why-visual--antidote .patterns-tabbed {
3420  margin: 0;
3421  min-width: 0;
3422  width: 100%;
3423}
3424
3425.why-visual--antidote .gallery-stack-container {
3426  flex: none;
3427  width: 100%;
3428  max-width: none;
3429}
3430
3431.gallery-stack-link {
3432  display: inline-flex;
3433  align-self: center;
3434  margin-top: var(--spacing-sm);
3435  font-family: var(--font-body);
3436  font-size: 0.82rem;
3437  color: var(--color-ink);
3438  text-decoration: underline;
3439  text-underline-offset: 3px;
3440  text-decoration-color: var(--color-accent);
3441  transition: color 0.12s ease;
3442}
3443
3444.gallery-stack-link:hover { color: var(--color-accent); }
3445
3446@media (max-width: 860px) {
3447  .why-visual--antidote { grid-template-columns: 1fr; }
3448}