tokengolf 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/index.html CHANGED
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⛳</text></svg>">
7
- <title>TokenGolf Every token matters.</title>
7
+ <title>TokenGolf: Every token matters.</title>
8
8
  <link rel="preconnect" href="https://fonts.googleapis.com" />
9
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
10
  <link
@@ -19,13 +19,13 @@
19
19
  <!-- Open Graph -->
20
20
  <meta property="og:type" content="website" />
21
21
  <meta property="og:url" content="https://josheche.github.io/tokengolf/" />
22
- <meta property="og:title" content="TokenGolf Every token matters." />
22
+ <meta property="og:title" content="TokenGolf: Every token matters." />
23
23
  <meta property="og:description" content="TokenGolf turns Claude Code sessions into a game. Track token efficiency, earn achievements, and level up your prompting skills." />
24
24
  <meta property="og:image" content="https://josheche.github.io/tokengolf/assets/tokengolf-bg-min.jpg" />
25
25
 
26
26
  <!-- Twitter Card -->
27
27
  <meta name="twitter:card" content="summary_large_image" />
28
- <meta name="twitter:title" content="TokenGolf Every token matters." />
28
+ <meta name="twitter:title" content="TokenGolf: Every token matters." />
29
29
  <meta name="twitter:description" content="TokenGolf turns Claude Code sessions into a game. Track token efficiency, earn achievements, and level up your prompting skills." />
30
30
  <meta name="twitter:image" content="https://josheche.github.io/tokengolf/assets/tokengolf-bg-min.jpg" />
31
31
 
@@ -38,7 +38,7 @@
38
38
  "url": "https://josheche.github.io/tokengolf/",
39
39
  "applicationCategory": "DeveloperApplication",
40
40
  "operatingSystem": "macOS, Linux",
41
- "description": "A CLI game that wraps Claude Code sessions with game mechanics — quests, budgets, efficiency ratings, and 60+ achievements. Flow mode tracks you passively. Roguelike mode trains deliberate prompting.",
41
+ "description": "A CLI game that wraps Claude Code sessions with game mechanics. Quests, budgets, efficiency ratings, and 60+ achievements. Flow mode tracks you passively. Roguelike mode trains deliberate prompting.",
42
42
  "offers": {
43
43
  "@type": "Offer",
44
44
  "price": "0",
@@ -98,6 +98,49 @@
98
98
  "SF Mono", "Cascadia Mono", "Fira Code", "Consolas", monospace;
99
99
  }
100
100
 
101
+ /* ── Shared design tokens ── */
102
+ .card {
103
+ background: var(--card);
104
+ border: 1px solid var(--border);
105
+ border-radius: 10px;
106
+ }
107
+
108
+ .section-prose {
109
+ color: var(--muted);
110
+ font-size: 1rem;
111
+ line-height: 1.75;
112
+ max-width: 680px;
113
+ }
114
+
115
+ .section-prose + .section-prose {
116
+ margin-top: 1rem;
117
+ }
118
+
119
+ .section-prose strong {
120
+ color: var(--text);
121
+ }
122
+
123
+ .section-sub {
124
+ color: var(--muted);
125
+ font-size: 0.95rem;
126
+ line-height: 1.65;
127
+ margin-bottom: 2rem;
128
+ max-width: 540px;
129
+ }
130
+
131
+ .section-sub code {
132
+ color: var(--cyan);
133
+ font-size: 0.88em;
134
+ }
135
+
136
+ .label-caps {
137
+ font-size: 0.7rem;
138
+ font-weight: 700;
139
+ letter-spacing: 0.08em;
140
+ text-transform: uppercase;
141
+ color: var(--muted);
142
+ }
143
+
101
144
  /* ── Hero ── */
102
145
  .hero {
103
146
  position: relative;
@@ -269,6 +312,11 @@
269
312
  letter-spacing: -0.02em;
270
313
  }
271
314
 
315
+ /* Tighten h2 when followed by a subtitle */
316
+ section h2:has(+ .section-sub) {
317
+ margin-bottom: 0.5rem;
318
+ }
319
+
272
320
  section h2 span {
273
321
  margin-right: 0.5rem;
274
322
  }
@@ -277,7 +325,7 @@
277
325
  .modes-grid {
278
326
  display: grid;
279
327
  grid-template-columns: 1fr 1fr;
280
- gap: 1.5rem;
328
+ gap: 1.25rem;
281
329
  }
282
330
 
283
331
  @media (max-width: 600px) {
@@ -287,8 +335,6 @@
287
335
  }
288
336
 
289
337
  .mode-card {
290
- background: var(--card);
291
- border: 1px solid var(--border);
292
338
  border-radius: 12px;
293
339
  padding: 1.75rem;
294
340
  }
@@ -318,13 +364,11 @@
318
364
 
319
365
  .mode-badge {
320
366
  display: inline-block;
321
- font-size: 0.75rem;
322
- font-weight: 600;
323
- letter-spacing: 0.06em;
324
- text-transform: uppercase;
325
367
  padding: 0.2rem 0.6rem;
326
368
  border-radius: 4px;
327
369
  margin-bottom: 0.75rem;
370
+ font-size: 0.75rem;
371
+ font-weight: 600;
328
372
  }
329
373
 
330
374
  .badge-flow {
@@ -401,13 +445,10 @@
401
445
  .achievements-grid {
402
446
  display: grid;
403
447
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
404
- gap: 1rem;
448
+ gap: 1.25rem;
405
449
  }
406
450
 
407
451
  .achievement-card {
408
- background: var(--card);
409
- border: 1px solid var(--border);
410
- border-radius: 10px;
411
452
  padding: 1.1rem 1.25rem;
412
453
  display: flex;
413
454
  align-items: flex-start;
@@ -434,9 +475,6 @@
434
475
 
435
476
  /* ── CLI Commands ── */
436
477
  .cli-block {
437
- background: var(--card);
438
- border: 1px solid var(--border);
439
- border-radius: 10px;
440
478
  overflow: hidden;
441
479
  }
442
480
 
@@ -483,13 +521,10 @@
483
521
  .tiers-grid {
484
522
  display: grid;
485
523
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
486
- gap: 1rem;
524
+ gap: 1.25rem;
487
525
  }
488
526
 
489
527
  .tier-card {
490
- background: var(--card);
491
- border: 1px solid var(--border);
492
- border-radius: 10px;
493
528
  padding: 1.25rem 1rem;
494
529
  text-align: center;
495
530
  }
@@ -510,64 +545,247 @@
510
545
  font-family: monospace;
511
546
  }
512
547
 
513
- /* ── Achievement category headers ── */
514
- .achievement-category {
515
- grid-column: 1 / -1;
516
- font-size: 0.75rem;
517
- font-weight: 700;
518
- letter-spacing: 0.08em;
519
- text-transform: uppercase;
520
- color: var(--muted);
521
- padding-top: 1rem;
522
- border-top: 1px solid var(--border);
548
+ .achievement-card.death {
549
+ border-color: #3d1f1f;
550
+ }
551
+
552
+ .tab-btn[aria-selected="true"].tab-death {
553
+ background: var(--red);
554
+ box-shadow: 0 2px 16px rgba(248, 81, 73, 0.3);
555
+ }
556
+
557
+ .tab-btn.tab-death:hover {
558
+ color: var(--red);
559
+ }
560
+
561
+ /* Achievement sub-category labels inside panels */
562
+ .ach-sub {
563
+ padding-top: 0.75rem;
523
564
  margin-top: 0.5rem;
565
+ grid-column: 1 / -1;
524
566
  }
525
- .achievement-category:first-child {
526
- border-top: none;
567
+
568
+ .ach-sub:first-child {
527
569
  padding-top: 0;
528
570
  margin-top: 0;
529
571
  }
530
- .achievement-card.death {
531
- border-color: #3d1f1f;
572
+
573
+ /* ── In Action — Arcade Cabinet Gallery ── */
574
+
575
+ .in-action {
576
+ position: relative;
577
+ overflow: visible;
578
+ }
579
+
580
+
581
+ /* ── Shared tab switcher ── */
582
+ .tab-bar {
583
+ display: flex;
584
+ gap: 0.25rem;
585
+ margin-bottom: 2rem;
586
+ background: #0a0e14;
587
+ border: 1px solid var(--border);
588
+ border-radius: 10px;
589
+ padding: 0.3rem;
590
+ width: fit-content;
591
+ }
592
+
593
+ .tab-btn {
594
+ position: relative;
595
+ padding: 0.5rem 1.2rem;
596
+ font-size: 0.8rem;
597
+ font-weight: 600;
598
+ color: var(--muted);
599
+ background: transparent;
600
+ border: none;
601
+ border-radius: 7px;
602
+ cursor: pointer;
603
+ transition: color 0.2s, background 0.2s, box-shadow 0.2s;
604
+ font-family: "SF Mono", "Cascadia Mono", monospace;
605
+ white-space: nowrap;
606
+ letter-spacing: -0.01em;
607
+ }
608
+
609
+ .tab-btn:hover {
610
+ color: var(--text);
611
+ background: rgba(48, 54, 61, 0.45);
612
+ }
613
+
614
+ .tab-btn[aria-selected="true"] {
615
+ color: #0d1117;
616
+ background: var(--cyan);
617
+ box-shadow: 0 2px 16px rgba(121, 192, 255, 0.3);
618
+ }
619
+
620
+ .tab-panel {
621
+ display: none;
622
+ }
623
+
624
+ .tab-panel.active {
625
+ display: block;
626
+ animation: panelIn 0.3s ease both;
532
627
  }
533
628
 
534
- /* ── Screenshots ── */
535
- .screenshots-grid {
629
+ @keyframes panelIn {
630
+ from { opacity: 0; transform: translateY(10px); }
631
+ to { opacity: 1; transform: translateY(0); }
632
+ }
633
+
634
+ /* ── Layout grids inside panels ── */
635
+ .demos-grid {
536
636
  display: grid;
537
637
  grid-template-columns: 1fr 1fr;
538
638
  gap: 2rem;
539
639
  align-items: start;
540
640
  }
541
641
 
542
- @media (max-width: 768px) {
543
- .screenshots-grid {
544
- grid-template-columns: 1fr;
545
- }
642
+ @media (max-width: 900px) {
643
+ .demos-grid { grid-template-columns: 1fr; }
546
644
  }
547
645
 
548
- .screenshot-item {
646
+ .demo-item {
549
647
  display: flex;
550
648
  flex-direction: column;
551
- gap: 0.75rem;
649
+ gap: 0.85rem;
650
+ min-width: 0;
552
651
  }
553
652
 
554
- .screenshot-item img {
555
- width: 100%;
556
- border-radius: 10px;
557
- border: 1px solid var(--border);
558
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
653
+ .demo-item.full-width {
654
+ grid-column: 1 / -1;
559
655
  }
560
656
 
561
- .screenshot-label {
657
+ .demo-label {
562
658
  font-size: 0.85rem;
563
659
  color: var(--muted);
564
- line-height: 1.5;
660
+ line-height: 1.55;
661
+ padding-left: 0.15rem;
565
662
  }
566
663
 
567
- .screenshot-label strong {
664
+ .demo-label strong {
568
665
  color: var(--text);
569
666
  }
570
667
 
668
+ /* ── Terminal chrome ── */
669
+ .term {
670
+ position: relative;
671
+ background: #0c1017;
672
+ border: 1px solid var(--border);
673
+ border-radius: 10px;
674
+ overflow: hidden;
675
+ min-width: 0;
676
+ transition: border-color 0.4s, box-shadow 0.4s;
677
+ box-shadow: 0 4px 32px rgba(0, 0, 0, 0.55);
678
+ }
679
+
680
+ /* Scanline overlay */
681
+ .term::after {
682
+ content: "";
683
+ position: absolute;
684
+ inset: 0;
685
+ pointer-events: none;
686
+ background: repeating-linear-gradient(
687
+ 0deg,
688
+ transparent 0px,
689
+ transparent 2px,
690
+ rgba(0, 0, 0, 0.035) 2px,
691
+ rgba(0, 0, 0, 0.035) 4px
692
+ );
693
+ border-radius: 10px;
694
+ z-index: 1;
695
+ }
696
+
697
+ /* Glow variants */
698
+ .term[data-glow="cyan"] {
699
+ box-shadow: 0 4px 32px rgba(0,0,0,0.55), 0 0 48px rgba(121,192,255,0.06);
700
+ }
701
+ .term[data-glow="cyan"]:hover {
702
+ border-color: rgba(121,192,255,0.35);
703
+ box-shadow: 0 4px 40px rgba(0,0,0,0.5), 0 0 72px rgba(121,192,255,0.12);
704
+ }
705
+ .term[data-glow="yellow"] {
706
+ box-shadow: 0 4px 32px rgba(0,0,0,0.55), 0 0 48px rgba(227,179,65,0.06);
707
+ }
708
+ .term[data-glow="yellow"]:hover {
709
+ border-color: rgba(227,179,65,0.35);
710
+ box-shadow: 0 4px 40px rgba(0,0,0,0.5), 0 0 72px rgba(227,179,65,0.12);
711
+ }
712
+ .term[data-glow="red"] {
713
+ box-shadow: 0 4px 32px rgba(0,0,0,0.55), 0 0 48px rgba(248,81,73,0.06);
714
+ }
715
+ .term[data-glow="red"]:hover {
716
+ border-color: rgba(248,81,73,0.35);
717
+ box-shadow: 0 4px 40px rgba(0,0,0,0.5), 0 0 72px rgba(248,81,73,0.12);
718
+ }
719
+ .term[data-glow="green"] {
720
+ box-shadow: 0 4px 32px rgba(0,0,0,0.55), 0 0 48px rgba(63,185,80,0.06);
721
+ }
722
+ .term[data-glow="green"]:hover {
723
+ border-color: rgba(63,185,80,0.35);
724
+ box-shadow: 0 4px 40px rgba(0,0,0,0.5), 0 0 72px rgba(63,185,80,0.12);
725
+ }
726
+
727
+ /* Header bar */
728
+ .term-header {
729
+ background: #13181f;
730
+ padding: 0.6rem 0.9rem;
731
+ font-size: 0.75rem;
732
+ color: var(--muted);
733
+ font-family: "SF Mono", "Cascadia Mono", monospace;
734
+ border-bottom: 1px solid rgba(48, 54, 61, 0.6);
735
+ display: flex;
736
+ align-items: center;
737
+ gap: 0.65rem;
738
+ }
739
+
740
+ /* macOS traffic lights */
741
+ .term-header::before {
742
+ content: "";
743
+ display: block;
744
+ width: 46px;
745
+ min-width: 46px;
746
+ height: 12px;
747
+ background:
748
+ radial-gradient(circle 4.5px at 6px 6px, #ff5f57 4px, transparent 4.5px),
749
+ radial-gradient(circle 4.5px at 22px 6px, #febc2e 4px, transparent 4.5px),
750
+ radial-gradient(circle 4.5px at 38px 6px, #28c840 4px, transparent 4.5px);
751
+ opacity: 0.72;
752
+ flex-shrink: 0;
753
+ }
754
+
755
+ .term pre {
756
+ position: relative;
757
+ z-index: 0;
758
+ padding: 1.1rem 1.35rem;
759
+ overflow-x: auto;
760
+ -webkit-overflow-scrolling: touch;
761
+ font-family: "SF Mono", "Cascadia Mono", "Fira Code", "Consolas", monospace;
762
+ font-size: 0.78rem;
763
+ line-height: 1.55;
764
+ color: var(--text);
765
+ }
766
+
767
+ @media (max-width: 600px) {
768
+ .term pre { font-size: 0.68rem; padding: 0.75rem; }
769
+ .tab-bar { width: auto; overflow-x: auto; -webkit-overflow-scrolling: touch; }
770
+ .tab-btn { padding: 0.45rem 0.85rem; font-size: 0.72rem; }
771
+ }
772
+
773
+ /* Terminal ANSI color classes */
774
+ .term .t-b { font-weight: 700; }
775
+ .term .t-dim { opacity: 0.55; }
776
+ .term .t-red { color: var(--red); }
777
+ .term .t-green { color: var(--green); }
778
+ .term .t-yellow { color: var(--yellow); }
779
+ .term .t-cyan { color: var(--cyan); }
780
+ .term .t-magenta { color: var(--magenta); }
781
+ .term .t-white { color: var(--text); }
782
+ .term .t-muted { color: var(--muted); }
783
+
784
+ /* Box-drawing border colors */
785
+ .term .border-yellow { color: var(--yellow); }
786
+ .term .border-red { color: var(--red); }
787
+ .term .border-gray { color: var(--border); }
788
+
571
789
  /* ── Footer ── */
572
790
  footer {
573
791
  border-top: 1px solid var(--border);
@@ -631,22 +849,22 @@
631
849
  </div>
632
850
 
633
851
  <!-- ── Why TokenGolf ── -->
634
- <section>
852
+ <section id="why">
635
853
  <h2><span>⛳</span>Why "TokenGolf"?</h2>
636
- <p style="color:var(--muted);font-size:1rem;line-height:1.75;max-width:680px;">
637
- <a href="https://en.wikipedia.org/wiki/Code_golf" target="_blank">Code golf</a> is the engineering practice of solving a problem in as few characters as possible. The constraint isn't the point <em>the discipline the constraint creates</em> is the point. Writing the shortest solution forces you to understand the problem deeply and use your tools precisely.
854
+ <p class="section-prose">
855
+ <a href="https://en.wikipedia.org/wiki/Code_golf" target="_blank">Code golf</a> is the engineering practice of solving a problem in as few characters as possible. The constraint isn't the point. <em>The discipline the constraint creates</em> is the point. Writing the shortest solution forces you to understand the problem deeply and use your tools precisely.
638
856
  </p>
639
- <p style="color:var(--muted);font-size:1rem;line-height:1.75;max-width:680px;margin-top:1rem;">
640
- Token golf is the same idea applied to AI sessions. Your budget is par. Every unnecessary prompt, every redundant context dump, every "can you also…" tacked onto a request is a stroke over par. The game doesn't literally resemble golf it borrows the concept: <strong style="color:var(--text);">optimize under constraint, measure your score, improve your game.</strong>
857
+ <p class="section-prose">
858
+ Token golf is the same idea applied to AI sessions. Your budget is par. Every unnecessary prompt, every redundant context dump, every "can you also…" tacked onto a request is a stroke over par. The game doesn't literally resemble golf. It borrows the concept: <strong>optimize under constraint, measure your score, improve your game.</strong>
641
859
  </p>
642
860
  </section>
643
861
 
644
862
  <!-- ── Two Modes ── -->
645
- <section>
863
+ <section id="modes">
646
864
  <h2><span>🎮</span>Two Modes</h2>
647
865
  <div class="modes-grid">
648
- <div class="mode-card">
649
- <div class="mode-badge badge-flow">Flow Mode</div>
866
+ <div class="card mode-card">
867
+ <div class="mode-badge label-caps badge-flow">Flow Mode</div>
650
868
  <h3>Passive tracking, zero friction</h3>
651
869
  <p>
652
870
  Just work normally. TokenGolf runs in the background via Claude Code
@@ -659,8 +877,8 @@
659
877
  <li>Perfect when you're in a flow state</li>
660
878
  </ul>
661
879
  </div>
662
- <div class="mode-card">
663
- <div class="mode-badge badge-rogue">Roguelike Mode</div>
880
+ <div class="card mode-card">
881
+ <div class="mode-badge label-caps badge-rogue">Roguelike Mode</div>
664
882
  <h3>Pre-commit. Stakes. Permadeath.</h3>
665
883
  <p>
666
884
  Declare your quest, pick a budget, choose your class. Bust the
@@ -676,27 +894,8 @@
676
894
  </div>
677
895
  </section>
678
896
 
679
- <!-- ── Screenshots ── -->
680
- <section>
681
- <h2><span>📸</span>In Action</h2>
682
- <div class="screenshots-grid">
683
- <div class="screenshot-item">
684
- <img src="assets/demo-hud.png" alt="TokenGolf HUD — all game states" />
685
- <div class="screenshot-label">
686
- <strong>Live HUD</strong> — appears in every Claude Code session. Shows quest, cost, efficiency rating, context pressure, and model class. Run <code>tokengolf demo</code> to preview all states.
687
- </div>
688
- </div>
689
- <div class="screenshot-item">
690
- <img src="assets/scorecard.png" alt="TokenGolf scorecard — session complete" />
691
- <div class="screenshot-label">
692
- <strong>Auto Scorecard</strong> — appears on <code>/exit</code>. Real scorecard from building TokenGolf itself: $40 flow session, 27 ultrathink invocations, Class Defection for declaring Sonnet but spending 89% on Opus.
693
- </div>
694
- </div>
695
- </div>
696
- </section>
697
-
698
897
  <!-- ── Character Classes ── -->
699
- <section>
898
+ <section id="classes">
700
899
  <h2><span>⚔️</span>Character Classes</h2>
701
900
  <div class="classes-table-wrap">
702
901
  <table class="classes-table">
@@ -744,56 +943,270 @@
744
943
  </div>
745
944
  </section>
746
945
 
946
+ <!-- ── In Action ── -->
947
+ <section id="in-action" class="in-action">
948
+ <h2><span>📸</span>In Action</h2>
949
+ <p class="section-sub">
950
+ Every screen TokenGolf renders in your terminal. Pick a tab to explore, or run <code>tokengolf demo</code> to see them all live.
951
+ </p>
952
+
953
+ <div class="tab-bar" role="tablist">
954
+ <button class="tab-btn" role="tab" id="tab-hud" aria-selected="true" aria-controls="panel-hud" data-panel="panel-hud">HUD</button>
955
+ <button class="tab-btn" role="tab" id="tab-scorecard" aria-selected="false" aria-controls="panel-scorecard" data-panel="panel-scorecard">ScoreCard</button>
956
+ <button class="tab-btn" role="tab" id="tab-status" aria-selected="false" aria-controls="panel-status" data-panel="panel-status">Status</button>
957
+ <button class="tab-btn" role="tab" id="tab-stats" aria-selected="false" aria-controls="panel-stats" data-panel="panel-stats">Stats</button>
958
+ </div>
959
+
960
+ <!-- ── HUD panel ── -->
961
+ <div class="tab-panel active" id="panel-hud" role="tabpanel" aria-labelledby="tab-hud">
962
+ <div class="demo-item">
963
+ <div class="term" data-glow="cyan">
964
+ <div class="term-header">tokengolf demo hud</div>
965
+ <pre>
966
+ <span class="t-dim"> ───────────────</span>
967
+ <span class="t-b t-cyan">⛳</span> Flow <span class="t-dim">|</span> 💎 $0.0034 <span class="t-dim">|</span> <span class="t-cyan">⚔️ Sonnet</span>
968
+ <span class="t-dim"> ───────────────</span>
969
+
970
+ <span class="t-dim"> ───────────────</span>
971
+ <span class="t-b t-cyan">⛳</span> add pagination to /users <span class="t-dim">|</span> 🥈 $0.5400/$1.50 36% <span class="t-dim">|</span> <span class="t-cyan">EFFICIENT</span> <span class="t-dim">|</span> <span class="t-cyan">⚔️ Sonnet</span> <span class="t-dim">|</span> Floor 2/5
972
+ <span class="t-dim"> ───────────────</span>
973
+
974
+ <span class="t-dim"> ───────────────</span>
975
+ <span class="t-b t-cyan">⛳</span> implement SSO with SAML <span class="t-dim">|</span> 🥈 $0.4100/$2.00 21% <span class="t-dim">|</span> <span class="t-magenta">LEGENDARY</span> <span class="t-dim">|</span> <span class="t-cyan">⚔️ Sonnet·High</span> <span class="t-dim">|</span> Floor 1/5
976
+ <span class="t-dim"> ───────────────</span>
977
+
978
+ <span class="t-dim"> ───────────────</span>
979
+ <span class="t-b t-cyan">⛳</span> refactor auth middleware <span class="t-dim">|</span> 🥈 $0.8200/$4.00 21% <span class="t-dim">|</span> <span class="t-magenta">LEGENDARY</span> <span class="t-dim">|</span> <span class="t-green">🪶 52%</span> <span class="t-dim">|</span> <span class="t-cyan">🧙 Opus</span> <span class="t-dim">|</span> Floor 3/5
980
+ <span class="t-dim"> ───────────────</span>
981
+
982
+ <span class="t-dim"> ───────────────</span>
983
+ <span class="t-b t-cyan">⛳</span> fix N+1 query in dashboard <span class="t-dim">|</span> 🥈 $0.4600/$0.50 92% <span class="t-dim">|</span> <span class="t-yellow">CLOSE CALL</span> <span class="t-dim">|</span> <span class="t-yellow">🎒 78%</span> <span class="t-dim">|</span> <span class="t-cyan">🏹 Haiku</span> <span class="t-dim">|</span> Floor 4/5
984
+ <span class="t-dim"> ───────────────</span>
985
+
986
+ <span class="t-dim"> ───────────────</span>
987
+ <span class="t-b t-cyan">⛳</span> migrate postgres schema <span class="t-dim">|</span> 🥉 $2.4100/$2.00 121% <span class="t-dim">|</span> <span class="t-red">BUSTED</span> <span class="t-dim">|</span> <span class="t-cyan">⚔️ Sonnet</span> <span class="t-dim">|</span> Floor 2/5
988
+ <span class="t-dim"> ───────────────</span>
989
+
990
+ <span class="t-dim"> ───────────────</span>
991
+ <span class="t-b t-cyan">💤</span> write test suite for payments <span class="t-dim">|</span> 🥉 $1.2200/$3.00 41% <span class="t-dim">|</span> <span class="t-cyan">EFFICIENT</span> <span class="t-dim">|</span> <span class="t-green">🪶 67%</span> <span class="t-dim">|</span> <span class="t-cyan">⚔️ Sonnet</span> <span class="t-dim">|</span> Floor 2/5
992
+ <span class="t-dim"> ───────────────</span></pre>
993
+ </div>
994
+ <div class="demo-label">
995
+ <strong>Live HUD</strong> appears in every Claude Code session. Shows quest, cost, efficiency rating, context load, and model class at a glance.
996
+ </div>
997
+ </div>
998
+ </div>
999
+
1000
+ <!-- ── ScoreCard panel ── -->
1001
+ <div class="tab-panel" id="panel-scorecard" role="tabpanel" aria-labelledby="tab-scorecard">
1002
+ <div class="demos-grid">
1003
+ <div class="demo-item">
1004
+ <div class="term" data-glow="yellow">
1005
+ <div class="term-header">tokengolf scorecard — won</div>
1006
+ <pre>
1007
+ <span class="border-yellow">╔══════════════════════════════════════════════════════╗</span>
1008
+ <span class="border-yellow">║</span> <span class="border-yellow">║</span>
1009
+ <span class="border-yellow">║</span> <span class="t-b t-yellow">🏆 SESSION COMPLETE</span> <span class="border-yellow">║</span>
1010
+ <span class="border-yellow">║</span> <span class="border-yellow">║</span>
1011
+ <span class="border-yellow">║</span> <span class="t-b t-white">add pagination to /users endpoint</span> <span class="border-yellow">║</span>
1012
+ <span class="border-yellow">║</span> <span class="border-yellow">║</span>
1013
+ <span class="border-yellow">║</span> <span class="t-dim">SPENT</span> <span class="t-dim">BUDGET</span> <span class="t-dim">USED</span> <span class="t-dim">MODEL</span> <span class="t-dim">TIER</span> <span class="border-yellow">║</span>
1014
+ <span class="border-yellow">║</span> <span class="t-b t-green">$0.2300</span> $1.50 <span class="t-green">15%</span> <span class="t-cyan">⚔️ Sonnet</span> <span class="t-yellow">🥇 Gold</span> <span class="border-yellow">║</span>
1015
+ <span class="border-yellow">║</span> <span class="border-yellow">║</span>
1016
+ <span class="border-yellow">║</span> <span class="t-b t-magenta">🌟 LEGENDARY</span> <span class="border-yellow">║</span>
1017
+ <span class="border-yellow">║</span> <span class="border-yellow">║</span>
1018
+ <span class="border-yellow">║</span> <span class="t-dim">Achievements unlocked:</span> <span class="border-yellow">║</span>
1019
+ <span class="border-yellow">║</span> <span class="t-yellow">🎯 Sniper — Under 25% budget</span> <span class="border-yellow">║</span>
1020
+ <span class="border-yellow">║</span> <span class="t-yellow">🥈 Silver — Completed with Sonnet</span> <span class="border-yellow">║</span>
1021
+ <span class="border-yellow">║</span> <span class="t-yellow">🔥 No Rest for the Wicked — One session</span> <span class="border-yellow">║</span>
1022
+ <span class="border-yellow">║</span> <span class="t-yellow">✅ Clean Run — Zero failed tool calls</span> <span class="border-yellow">║</span>
1023
+ <span class="border-yellow">║</span> <span class="t-yellow">🧰 Toolbox — 5+ distinct tool types</span> <span class="border-yellow">║</span>
1024
+ <span class="border-yellow">║</span> <span class="t-yellow">🤫 Silent Run — No extended thinking</span> <span class="border-yellow">║</span>
1025
+ <span class="border-yellow">║</span> <span class="border-yellow">║</span>
1026
+ <span class="border-yellow">║</span> <span class="t-dim">Model usage:</span> <span class="t-cyan">🏹 17% Haiku</span> <span class="border-yellow">║</span>
1027
+ <span class="border-yellow">║</span> <span class="t-muted">Sonnet</span> <span class="t-white">83%</span> <span class="t-dim">$0.19</span> <span class="t-muted">Haiku</span> <span class="t-white">17%</span> <span class="t-dim">$0.04</span> <span class="border-yellow">║</span>
1028
+ <span class="border-yellow">║</span> <span class="border-yellow">║</span>
1029
+ <span class="border-yellow">║</span> <span class="t-dim">Tool calls:</span> <span class="border-yellow">║</span>
1030
+ <span class="border-yellow">║</span> <span class="t-white">Read</span> ×8 <span class="t-white">Edit</span> ×4 <span class="t-white">Bash</span> ×3 <span class="t-white">Grep</span> ×2 <span class="t-white">Glob</span> ×1 <span class="border-yellow">║</span>
1031
+ <span class="border-yellow">║</span> <span class="border-yellow">║</span>
1032
+ <span class="border-yellow">╚══════════════════════════════════════════════════════╝</span></pre>
1033
+ </div>
1034
+ <div class="demo-label">
1035
+ <strong>ScoreCard (Won)</strong> appears on <code>/exit</code>. Budget, tier, efficiency, achievements, model breakdown, and tool usage.
1036
+ </div>
1037
+ </div>
1038
+
1039
+ <div class="demo-item">
1040
+ <div class="term" data-glow="red">
1041
+ <div class="term-header">tokengolf scorecard — died</div>
1042
+ <pre>
1043
+ <span class="border-red">╔══════════════════════════════════════════════════════╗</span>
1044
+ <span class="border-red">║</span> <span class="border-red">║</span>
1045
+ <span class="border-red">║</span> <span class="t-b t-red">💀 BUDGET BUSTED</span> <span class="border-red">║</span>
1046
+ <span class="border-red">║</span> <span class="border-red">║</span>
1047
+ <span class="border-red">║</span> <span class="t-b t-white">migrate postgres schema to v3</span> <span class="border-red">║</span>
1048
+ <span class="border-red">║</span> <span class="border-red">║</span>
1049
+ <span class="border-red">║</span> <span class="t-dim">SPENT</span> <span class="t-dim">BUDGET</span> <span class="t-dim">USED</span> <span class="t-dim">MODEL</span> <span class="t-dim">TIER</span> <span class="border-red">║</span>
1050
+ <span class="border-red">║</span> <span class="t-b t-red">$3.8700</span> $1.50 <span class="t-red">258%</span> <span class="t-cyan">⚔️ Sonnet</span> 💸 Reckless <span class="border-red">║</span>
1051
+ <span class="border-red">║</span> <span class="border-red">║</span>
1052
+ <span class="border-red">║</span> <span class="t-b t-red">💀 BUSTED</span> <span class="border-red">║</span>
1053
+ <span class="border-red">║</span> <span class="border-red">║</span>
1054
+ <span class="border-red">║</span> <span class="t-dim">Achievements unlocked:</span> <span class="border-red">║</span>
1055
+ <span class="border-red">║</span> <span class="t-yellow">🤦 Hubris — Ultrathink, busted anyway</span> <span class="border-red">║</span>
1056
+ <span class="border-red">║</span> <span class="t-yellow">💥 Blowout — Spent 2× budget</span> <span class="border-red">║</span>
1057
+ <span class="border-red">║</span> <span class="t-yellow">🤡 Fumble — 5+ failed tool calls</span> <span class="border-red">║</span>
1058
+ <span class="border-red">║</span> <span class="t-yellow">🔨 Tool Happy — 30+ tool calls, died</span> <span class="border-red">║</span>
1059
+ <span class="border-red">║</span> <span class="t-yellow">🍷 Expensive Taste — $0.50+/prompt</span> <span class="border-red">║</span>
1060
+ <span class="border-red">║</span> <span class="border-red">║</span>
1061
+ <span class="border-red">║</span> <span class="t-dim">Extended thinking:</span> <span class="t-magenta">🔮 2× invoked</span> <span class="border-red">║</span>
1062
+ <span class="border-red">║</span> <span class="border-red">║</span>
1063
+ <span class="border-red">║</span> <span class="t-red">┌──────────────────────────────────────────────┐</span> <span class="border-red">║</span>
1064
+ <span class="border-red">║</span> <span class="t-red">│</span> <span class="t-b t-red">Cause of death:</span> Budget exceeded by $2.37 <span class="t-red">│</span> <span class="border-red">║</span>
1065
+ <span class="border-red">║</span> <span class="t-red">│</span> <span class="t-dim">Tip: Use Read with line ranges, not full.</span> <span class="t-red">│</span> <span class="border-red">║</span>
1066
+ <span class="border-red">║</span> <span class="t-red">└──────────────────────────────────────────────┘</span> <span class="border-red">║</span>
1067
+ <span class="border-red">║</span> <span class="border-red">║</span>
1068
+ <span class="border-red">╚══════════════════════════════════════════════════════╝</span></pre>
1069
+ </div>
1070
+ <div class="demo-label">
1071
+ <strong>ScoreCard (Died)</strong> is permadeath. Budget exceeded = death marks. Hubris, Blowout, Fumble. Wear them with shame.
1072
+ </div>
1073
+ </div>
1074
+ </div>
1075
+ </div>
1076
+
1077
+ <!-- ── Status panel ── -->
1078
+ <div class="tab-panel" id="panel-status" role="tabpanel" aria-labelledby="tab-status">
1079
+ <div class="demo-item" style="max-width: 640px">
1080
+ <div class="term" data-glow="yellow">
1081
+ <div class="term-header">tokengolf status</div>
1082
+ <pre>
1083
+ <span class="t-b t-yellow">⛳ TokenGolf</span> <span class="t-muted">Active Run</span> <span class="t-dim">42m 18s</span>
1084
+
1085
+ <span class="border-yellow">╭──────────────────────────────────────────────────────╮</span>
1086
+ <span class="border-yellow">│</span> <span class="border-yellow">│</span>
1087
+ <span class="border-yellow">│</span> <span class="t-b t-white">refactor database connection pooling</span> <span class="border-yellow">│</span>
1088
+ <span class="border-yellow">│</span> <span class="border-yellow">│</span>
1089
+ <span class="border-yellow">│</span> 🧙 <span class="t-cyan">Opus</span> Budget <span class="t-green">$7.50</span> Spent <span class="t-red">$6.3400</span> <span class="t-yellow">😅 CLOSE CALL</span> <span class="border-yellow">│</span>
1090
+ <span class="border-yellow">│</span> <span class="border-yellow">│</span>
1091
+ <span class="border-yellow">│</span> 💰 <span class="t-red">████████████████████░░░░</span> <span class="t-red">85%</span> <span class="border-yellow">│</span>
1092
+ <span class="border-yellow">│</span> <span class="border-yellow">│</span>
1093
+ <span class="border-yellow">│</span> <span class="t-green">✓</span> <span class="t-green">Floor 1: Write the code</span> <span class="border-yellow">│</span>
1094
+ <span class="border-yellow">│</span> <span class="t-green">✓</span> <span class="t-green">Floor 2: Write the tests</span> <span class="border-yellow">│</span>
1095
+ <span class="border-yellow">│</span> <span class="t-yellow">▶</span> <span class="t-white">Floor 3: Fix failing tests</span> <span class="border-yellow">│</span>
1096
+ <span class="border-yellow">│</span> <span class="t-dim">○ Floor 4: Code review pass</span> <span class="border-yellow">│</span>
1097
+ <span class="border-yellow">│</span> <span class="t-dim">○ Floor 5: PR merged — BOSS 🏆</span> <span class="border-yellow">│</span>
1098
+ <span class="border-yellow">│</span> <span class="border-yellow">│</span>
1099
+ <span class="border-yellow">│</span> <span class="t-muted">Prompts</span> <span class="t-white">12</span> <span class="t-muted">Tools</span> <span class="t-white">35</span> <span class="border-yellow">│</span>
1100
+ <span class="border-yellow">│</span> <span class="border-yellow">│</span>
1101
+ <span class="border-yellow">│</span> <span class="t-red">┌──────────────────────────────────────────────┐</span> <span class="border-yellow">│</span>
1102
+ <span class="border-yellow">│</span> <span class="t-red">│</span> <span class="t-b t-red">⚠️ BUDGET WARNING — $1.16 left</span> <span class="t-red">│</span> <span class="border-yellow">│</span>
1103
+ <span class="border-yellow">│</span> <span class="t-red">└──────────────────────────────────────────────┘</span> <span class="border-yellow">│</span>
1104
+ <span class="border-yellow">│</span> <span class="border-yellow">│</span>
1105
+ <span class="border-yellow">╰──────────────────────────────────────────────────────╯</span></pre>
1106
+ </div>
1107
+ <div class="demo-label">
1108
+ <strong>Active Run</strong> shows live status with progress bar, floor tracker, and budget warning at 80%+. Auto-refreshes every 2 seconds.
1109
+ </div>
1110
+ </div>
1111
+ </div>
1112
+
1113
+ <!-- ── Stats panel ── -->
1114
+ <div class="tab-panel" id="panel-stats" role="tabpanel" aria-labelledby="tab-stats">
1115
+ <div class="demo-item" style="max-width: 640px">
1116
+ <div class="term" data-glow="green">
1117
+ <div class="term-header">tokengolf stats</div>
1118
+ <pre>
1119
+ <span class="t-b t-yellow">⛳ TokenGolf</span> <span class="t-muted">Career Stats</span>
1120
+
1121
+ <span class="border-gray">┌──────────────────────────────────────────────────────┐</span>
1122
+ <span class="border-gray">│</span> <span class="border-gray">│</span>
1123
+ <span class="border-gray">│</span> <span class="t-dim">RUNS</span> <span class="t-dim">WINS</span> <span class="t-dim">DEATHS</span> <span class="t-dim">WIN RATE</span> <span class="t-dim">AVG SPEND</span> <span class="border-gray">│</span>
1124
+ <span class="border-gray">│</span> <span class="t-b t-white">24</span> <span class="t-b t-green">18</span> <span class="t-b t-red">6</span> <span class="t-b t-green">75%</span> <span class="t-b t-cyan">$1.4200</span> <span class="border-gray">│</span>
1125
+ <span class="border-gray">│</span> <span class="border-gray">│</span>
1126
+ <span class="border-gray">└──────────────────────────────────────────────────────┘</span>
1127
+
1128
+ <span class="t-yellow">🏆 Personal Best</span>
1129
+ <span class="border-yellow">╭──────────────────────────────────────────────────────╮</span>
1130
+ <span class="border-yellow">│</span> fix typo in README badge URL <span class="border-yellow">│</span>
1131
+ <span class="border-yellow">│</span> <span class="t-green">$0.0089</span> <span class="t-muted">of $0.15</span> 🏹 <span class="t-cyan">💎 Diamond</span> <span class="border-yellow">│</span>
1132
+ <span class="border-yellow">╰──────────────────────────────────────────────────────╯</span>
1133
+
1134
+ <span class="t-dim">Recent runs:</span>
1135
+ <span class="t-green">✓</span> add pagination to /users <span class="t-green">$0.23</span> <span class="t-muted">/$1.50</span> ⚔️ <span class="t-yellow">🥇</span> <span class="t-dim">15%</span>
1136
+ <span class="t-green">✓</span> refactor auth middleware <span class="t-green">$3.41</span> <span class="t-muted">/$7.50</span> 🧙 💸 <span class="t-dim">45%</span>
1137
+ <span class="t-red">✗</span> migrate postgres schema <span class="t-red">$3.87</span> <span class="t-muted">/$1.50</span> ⚔️ 💸 <span class="t-dim">258%</span>
1138
+ <span class="t-green">✓</span> fix N+1 query <span class="t-green">$0.08</span> <span class="t-muted">/$0.40</span> 🏹 <span class="t-cyan">💎</span> <span class="t-dim">20%</span>
1139
+ <span class="t-green">✓</span> Flow <span class="t-green">$0.003</span> ⚔️ <span class="t-cyan">💎</span>
1140
+ <span class="t-green">✓</span> webhook retry system <span class="t-green">$2.18</span> <span class="t-muted">/$4.50</span> ⚜️ <span class="t-yellow">🥉</span> <span class="t-dim">48%</span>
1141
+ <span class="t-red">✗</span> rewrite billing module <span class="t-red">$12.4</span> <span class="t-muted">/$7.50</span> 🧙 💸 <span class="t-dim">165%</span>
1142
+ <span class="t-green">✓</span> add dark mode toggle <span class="t-green">$0.41</span> <span class="t-muted">/$1.50</span> ⚔️ <span class="t-white">🥈</span> <span class="t-dim">27%</span>
1143
+
1144
+ <span class="t-dim">Recent achievements:</span>
1145
+ <span class="border-gray">┌───────────┐</span> <span class="border-gray">┌───────────┐</span> <span class="border-gray">┌────────────┐</span> <span class="border-gray">┌──────────────┐</span>
1146
+ <span class="border-gray">│</span> 🎯 Sniper <span class="border-gray">│</span> <span class="border-gray">│</span> 🥈 Silver <span class="border-gray">│</span> <span class="border-gray">│</span> 🔥 No Rest <span class="border-gray">│</span> <span class="border-gray">│</span> ✅ Clean Run <span class="border-gray">│</span>
1147
+ <span class="border-gray">└───────────┘</span> <span class="border-gray">└───────────┘</span> <span class="border-gray">└────────────┘</span> <span class="border-gray">└──────────────┘</span>
1148
+ <span class="border-gray">┌────────────┐</span> <span class="border-gray">┌─────────────┐</span> <span class="border-gray">┌──────────────────┐</span>
1149
+ <span class="border-gray">│</span> 💎 Diamond <span class="border-gray">│</span> <span class="border-gray">│</span> 🥊 One Shot <span class="border-gray">│</span> <span class="border-gray">│</span> 🪙 Penny Pincher <span class="border-gray">│</span>
1150
+ <span class="border-gray">└────────────┘</span> <span class="border-gray">└─────────────┘</span> <span class="border-gray">└──────────────────┘</span></pre>
1151
+ </div>
1152
+ <div class="demo-label">
1153
+ <strong>Career Stats</strong> is your lifetime dashboard. Wins, deaths, win rate, personal best, recent runs, and achievement collection.
1154
+ </div>
1155
+ </div>
1156
+ </div>
1157
+
1158
+ </section>
1159
+
747
1160
  <!-- ── Effort & Fast Mode ── -->
748
- <section>
1161
+ <section id="effort">
749
1162
  <h2><span>🔥</span>Effort Levels &amp; Fast Mode</h2>
750
1163
  <div class="modes-grid">
751
- <div class="mode-card">
1164
+ <div class="card mode-card">
752
1165
  <h3>Effort Levels</h3>
753
1166
  <p>Set effort in the roguelike wizard. Higher effort = more thinking = more spend. Tracked in achievements.</p>
754
1167
  <ul>
755
- <li>🪶 <strong>Low</strong> quick and cheap</li>
756
- <li>⚖️ <strong>Medium</strong> the default (omitted in UI)</li>
757
- <li>🔥 <strong>High</strong> deeper reasoning</li>
758
- <li>💥 <strong>Max</strong> Opus only, maximum thinking</li>
1168
+ <li>🪶 <strong>Low</strong> · quick and cheap</li>
1169
+ <li>⚖️ <strong>Medium</strong> · the default (omitted in UI)</li>
1170
+ <li>🔥 <strong>High</strong> · deeper reasoning</li>
1171
+ <li>💥 <strong>Max</strong> · Opus only, maximum thinking</li>
759
1172
  </ul>
760
1173
  </div>
761
- <div class="mode-card">
1174
+ <div class="card mode-card">
762
1175
  <h3>Fast Mode</h3>
763
1176
  <p>Opus fast mode is auto-detected from your Claude Code settings. Unlocks unique achievements:</p>
764
1177
  <ul>
765
- <li>⛈️ <strong>Lightning Run</strong> Opus fast mode, under budget</li>
766
- <li>🎰 <strong>Daredevil</strong> Opus fast mode, LEGENDARY efficiency</li>
1178
+ <li>⛈️ <strong>Lightning Run</strong> · Opus fast mode, under budget</li>
1179
+ <li>🎰 <strong>Daredevil</strong> · Opus fast mode, LEGENDARY efficiency</li>
767
1180
  </ul>
768
1181
  </div>
769
1182
  </div>
770
1183
  </section>
771
1184
 
772
1185
  <!-- ── Budget Tiers ── -->
773
- <section>
1186
+ <section id="budget">
774
1187
  <h2><span>💰</span>Budget Tiers</h2>
775
1188
  <div class="tiers-grid">
776
- <div class="tier-card">
1189
+ <div class="card tier-card">
777
1190
  <span class="tier-emoji">💎</span>
778
1191
  <div class="tier-name">Diamond</div>
779
1192
  <div class="tier-amount">under $0.10</div>
780
1193
  </div>
781
- <div class="tier-card">
1194
+ <div class="card tier-card">
782
1195
  <span class="tier-emoji">🥇</span>
783
1196
  <div class="tier-name">Gold</div>
784
1197
  <div class="tier-amount">under $0.30</div>
785
1198
  </div>
786
- <div class="tier-card">
1199
+ <div class="card tier-card">
787
1200
  <span class="tier-emoji">🥈</span>
788
1201
  <div class="tier-name">Silver</div>
789
1202
  <div class="tier-amount">under $1.00</div>
790
1203
  </div>
791
- <div class="tier-card">
1204
+ <div class="card tier-card">
792
1205
  <span class="tier-emoji">🥉</span>
793
1206
  <div class="tier-name">Bronze</div>
794
1207
  <div class="tier-amount">under $3.00</div>
795
1208
  </div>
796
- <div class="tier-card">
1209
+ <div class="card tier-card">
797
1210
  <span class="tier-emoji">💸</span>
798
1211
  <div class="tier-name">Reckless</div>
799
1212
  <div class="tier-amount">over $3.00</div>
@@ -802,336 +1215,370 @@
802
1215
  </section>
803
1216
 
804
1217
  <!-- ── Meta Loop ── -->
805
- <section>
1218
+ <section id="meta">
806
1219
  <h2><span>🔄</span>The Meta Loop</h2>
807
- <p style="color:var(--muted);font-size:1rem;line-height:1.75;max-width:680px;margin-bottom:1.5rem;">
808
- The dungeon crawl framing maps directly to real session behaviors. These aren't just flavor they're patterns you already have, named so you can recognize and improve them.
1220
+ <p class="section-sub">
1221
+ The dungeon crawl framing maps directly to real session behaviors. Not just flavor. Patterns you already have, named so you can recognize and improve them.
809
1222
  </p>
810
1223
  <div class="modes-grid" style="grid-template-columns:repeat(auto-fill,minmax(280px,1fr));">
811
- <div class="mode-card">
1224
+ <div class="card mode-card">
812
1225
  <h3>📦 Overencumbered</h3>
813
1226
  <p>Context bloat slowing you down. The model is carrying too much history to reason cleanly.</p>
814
1227
  </div>
815
- <div class="mode-card">
1228
+ <div class="card mode-card">
816
1229
  <h3>🏕️ Made Camp</h3>
817
1230
  <p>Hit usage limits mid-run. Came back next session and kept going.</p>
818
1231
  </div>
819
- <div class="mode-card">
1232
+ <div class="card mode-card">
820
1233
  <h3>🥷 Ghost Run</h3>
821
1234
  <p>Surgical context management. You compacted at 30% and still had plenty of room for the boss.</p>
822
1235
  </div>
823
- <div class="mode-card">
1236
+ <div class="card mode-card">
824
1237
  <h3>🤦 Hubris</h3>
825
1238
  <p>Reached for ultrathink on a tight budget and paid for it. The spell didn't save you.</p>
826
1239
  </div>
827
- <div class="mode-card">
1240
+ <div class="card mode-card">
828
1241
  <h3>🤫 Silent Run</h3>
829
1242
  <p>Solved it with pure prompting discipline. No extended thinking needed.</p>
830
1243
  </div>
831
- <div class="mode-card">
1244
+ <div class="card mode-card">
832
1245
  <h3>🐺 Lone Wolf</h3>
833
1246
  <p>No subagents. You held the whole problem in one context and saw it through.</p>
834
1247
  </div>
835
1248
  </div>
836
- <p style="color:var(--muted);font-size:0.95rem;line-height:1.75;max-width:680px;margin-top:1.5rem;">
837
- Roguelike mode surfaces these patterns with stakes. Flow mode lets them compound over time. <strong style="color:var(--text);">Roguelike practice makes Flow sessions better. Better Flow = lower daily spend = better scores without even trying.</strong>
1249
+ <p class="section-prose" style="margin-top:1.5rem;">
1250
+ Roguelike mode surfaces these patterns with stakes. Flow mode lets them compound over time. <strong>Roguelike practice makes Flow sessions better. Better Flow = lower daily spend = better scores without even trying.</strong>
838
1251
  </p>
839
1252
  </section>
840
1253
 
841
1254
  <!-- ── Achievements ── -->
842
- <section>
1255
+ <section id="achievements">
843
1256
  <h2><span>🏆</span>Achievements</h2>
844
- <div class="achievements-grid">
845
- <div class="achievement-category">Class</div>
846
- <div class="achievement-card">
847
- <div class="achievement-emoji">💎</div>
848
- <div class="achievement-info"><h4>Diamond</h4><p>Haiku run under $0.10</p></div>
849
- </div>
850
- <div class="achievement-card">
851
- <div class="achievement-emoji">🥇</div>
852
- <div class="achievement-info"><h4>Gold</h4><p>Completed with Haiku</p></div>
853
- </div>
854
- <div class="achievement-card">
855
- <div class="achievement-emoji">🥈</div>
856
- <div class="achievement-info"><h4>Silver</h4><p>Completed with Sonnet</p></div>
857
- </div>
858
- <div class="achievement-card">
859
- <div class="achievement-emoji">🥉</div>
860
- <div class="achievement-info"><h4>Bronze</h4><p>Completed with Opus</p></div>
861
- </div>
862
- <div class="achievement-card">
863
- <div class="achievement-emoji">⚜️</div>
864
- <div class="achievement-info"><h4>Paladin</h4><p>Completed as Paladin (Opus plan mode)</p></div>
865
- </div>
866
- <div class="achievement-card">
867
- <div class="achievement-emoji">♟️</div>
868
- <div class="achievement-info"><h4>Grand Strategist</h4><p>LEGENDARY efficiency as Paladin</p></div>
869
- </div>
1257
+ <p class="section-sub">60+ achievements across 5 categories. Every session tells a story.</p>
1258
+
1259
+ <div class="tab-bar" role="tablist">
1260
+ <button class="tab-btn" role="tab" id="tab-ach-class" aria-selected="true" aria-controls="ach-class" data-panel="ach-class">Class &amp; Efficiency</button>
1261
+ <button class="tab-btn" role="tab" id="tab-ach-combat" aria-selected="false" aria-controls="ach-combat" data-panel="ach-combat">Combat Style</button>
1262
+ <button class="tab-btn" role="tab" id="tab-ach-endurance" aria-selected="false" aria-controls="ach-endurance" data-panel="ach-endurance">Endurance</button>
1263
+ <button class="tab-btn" role="tab" id="tab-ach-arcane" aria-selected="false" aria-controls="ach-arcane" data-panel="ach-arcane">Arcane</button>
1264
+ <button class="tab-btn tab-death" role="tab" id="tab-ach-death" aria-selected="false" aria-controls="ach-death" data-panel="ach-death">Death Marks</button>
1265
+ </div>
870
1266
 
871
- <div class="achievement-category">Efficiency</div>
872
- <div class="achievement-card">
873
- <div class="achievement-emoji">🎯</div>
874
- <div class="achievement-info"><h4>Sniper</h4><p>Under 25% of budget used</p></div>
875
- </div>
876
- <div class="achievement-card">
877
- <div class="achievement-emoji">⚡</div>
878
- <div class="achievement-info"><h4>Efficient</h4><p>Under 50% of budget used</p></div>
879
- </div>
880
- <div class="achievement-card">
881
- <div class="achievement-emoji">🪙</div>
882
- <div class="achievement-info"><h4>Penny Pincher</h4><p>Total spend under $0.10</p></div>
883
- </div>
884
- <div class="achievement-card">
885
- <div class="achievement-emoji">💲</div>
886
- <div class="achievement-info"><h4>Cheap Shots</h4><p>Under $0.01 per prompt (≥3 prompts)</p></div>
887
- </div>
888
- <div class="achievement-card">
889
- <div class="achievement-emoji">🍷</div>
890
- <div class="achievement-info"><h4>Expensive Taste</h4><p>Over $0.50 per prompt — won or died</p></div>
891
- </div>
1267
+ <!-- Class & Efficiency -->
1268
+ <div class="tab-panel active" id="ach-class" role="tabpanel" aria-labelledby="tab-ach-class">
1269
+ <div class="achievements-grid">
1270
+ <div class="ach-sub label-caps">Class Medals</div>
1271
+ <div class="card achievement-card">
1272
+ <div class="achievement-emoji">💎</div>
1273
+ <div class="achievement-info"><h4>Diamond</h4><p>Haiku run under $0.10</p></div>
1274
+ </div>
1275
+ <div class="card achievement-card">
1276
+ <div class="achievement-emoji">🥇</div>
1277
+ <div class="achievement-info"><h4>Gold</h4><p>Completed with Haiku</p></div>
1278
+ </div>
1279
+ <div class="card achievement-card">
1280
+ <div class="achievement-emoji">🥈</div>
1281
+ <div class="achievement-info"><h4>Silver</h4><p>Completed with Sonnet</p></div>
1282
+ </div>
1283
+ <div class="card achievement-card">
1284
+ <div class="achievement-emoji">🥉</div>
1285
+ <div class="achievement-info"><h4>Bronze</h4><p>Completed with Opus</p></div>
1286
+ </div>
1287
+ <div class="card achievement-card">
1288
+ <div class="achievement-emoji">⚜️</div>
1289
+ <div class="achievement-info"><h4>Paladin</h4><p>Completed as Paladin (Opus plan mode)</p></div>
1290
+ </div>
1291
+ <div class="card achievement-card">
1292
+ <div class="achievement-emoji">♟️</div>
1293
+ <div class="achievement-info"><h4>Grand Strategist</h4><p>LEGENDARY efficiency as Paladin</p></div>
1294
+ </div>
892
1295
 
893
- <div class="achievement-category">Effort-Based</div>
894
- <div class="achievement-card">
895
- <div class="achievement-emoji">🏎️</div>
896
- <div class="achievement-info"><h4>Speedrunner</h4><p>Low effort, completed under budget</p></div>
897
- </div>
898
- <div class="achievement-card">
899
- <div class="achievement-emoji">🏋️</div>
900
- <div class="achievement-info"><h4>Tryhard</h4><p>High/Max effort, LEGENDARY efficiency</p></div>
901
- </div>
902
- <div class="achievement-card">
903
- <div class="achievement-emoji">👑</div>
904
- <div class="achievement-info"><h4>Archmagus</h4><p>Opus at max effort, completed</p></div>
905
- </div>
1296
+ <div class="ach-sub label-caps">Budget Efficiency</div>
1297
+ <div class="card achievement-card">
1298
+ <div class="achievement-emoji">🎯</div>
1299
+ <div class="achievement-info"><h4>Sniper</h4><p>Under 25% of budget used</p></div>
1300
+ </div>
1301
+ <div class="card achievement-card">
1302
+ <div class="achievement-emoji">⚡</div>
1303
+ <div class="achievement-info"><h4>Efficient</h4><p>Under 50% of budget used</p></div>
1304
+ </div>
1305
+ <div class="card achievement-card">
1306
+ <div class="achievement-emoji">🪙</div>
1307
+ <div class="achievement-info"><h4>Penny Pincher</h4><p>Total spend under $0.10</p></div>
1308
+ </div>
906
1309
 
907
- <div class="achievement-category">Prompting Skill</div>
908
- <div class="achievement-card">
909
- <div class="achievement-emoji">🥊</div>
910
- <div class="achievement-info"><h4>One Shot</h4><p>Completed in a single prompt</p></div>
911
- </div>
912
- <div class="achievement-card">
913
- <div class="achievement-emoji">💬</div>
914
- <div class="achievement-info"><h4>Conversationalist</h4><p>20+ prompts in one run</p></div>
915
- </div>
916
- <div class="achievement-card">
917
- <div class="achievement-emoji">🤐</div>
918
- <div class="achievement-info"><h4>Terse</h4><p>≤3 prompts, ≥10 tool calls</p></div>
919
- </div>
920
- <div class="achievement-card">
921
- <div class="achievement-emoji">🪑</div>
922
- <div class="achievement-info"><h4>Backseat Driver</h4><p>15+ prompts, less than 1 tool call per prompt</p></div>
923
- </div>
924
- <div class="achievement-card">
925
- <div class="achievement-emoji">🏗️</div>
926
- <div class="achievement-info"><h4>High Leverage</h4><p>5+ tool calls per prompt (≥2 prompts)</p></div>
927
- </div>
1310
+ <div class="ach-sub label-caps">Cost per Prompt</div>
1311
+ <div class="card achievement-card">
1312
+ <div class="achievement-emoji">💲</div>
1313
+ <div class="achievement-info"><h4>Cheap Shots</h4><p>Under $0.01 per prompt (≥3 prompts)</p></div>
1314
+ </div>
1315
+ <div class="card achievement-card">
1316
+ <div class="achievement-emoji">🍷</div>
1317
+ <div class="achievement-info"><h4>Expensive Taste</h4><p>Over $0.50 per prompt (won or died)</p></div>
1318
+ </div>
928
1319
 
929
- <div class="achievement-category">Tool Mastery</div>
930
- <div class="achievement-card">
931
- <div class="achievement-emoji">👁️</div>
932
- <div class="achievement-info"><h4>Read Only</h4><p>Won with no Edit or Write calls</p></div>
933
- </div>
934
- <div class="achievement-card">
935
- <div class="achievement-emoji">✏️</div>
936
- <div class="achievement-info"><h4>Editor</h4><p>10+ Edit calls in one run</p></div>
937
- </div>
938
- <div class="achievement-card">
939
- <div class="achievement-emoji">🐚</div>
940
- <div class="achievement-info"><h4>Bash Warrior</h4><p>10+ Bash calls comprising ≥50% of tools</p></div>
941
- </div>
942
- <div class="achievement-card">
943
- <div class="achievement-emoji">🔍</div>
944
- <div class="achievement-info"><h4>Scout</h4><p>≥60% of tool calls were Reads (≥5 total)</p></div>
945
- </div>
946
- <div class="achievement-card">
947
- <div class="achievement-emoji">🔪</div>
948
- <div class="achievement-info"><h4>Surgeon</h4><p>1–3 Edit calls, completed under budget</p></div>
949
- </div>
950
- <div class="achievement-card">
951
- <div class="achievement-emoji">🧰</div>
952
- <div class="achievement-info"><h4>Toolbox</h4><p>5+ distinct tools used in one run</p></div>
1320
+ <div class="ach-sub label-caps">Effort-Based</div>
1321
+ <div class="card achievement-card">
1322
+ <div class="achievement-emoji">🏎️</div>
1323
+ <div class="achievement-info"><h4>Speedrunner</h4><p>Low effort, completed under budget</p></div>
1324
+ </div>
1325
+ <div class="card achievement-card">
1326
+ <div class="achievement-emoji">🏋️</div>
1327
+ <div class="achievement-info"><h4>Tryhard</h4><p>High/Max effort, LEGENDARY efficiency</p></div>
1328
+ </div>
1329
+ <div class="card achievement-card">
1330
+ <div class="achievement-emoji">👑</div>
1331
+ <div class="achievement-info"><h4>Archmagus</h4><p>Opus at max effort, completed</p></div>
1332
+ </div>
953
1333
  </div>
1334
+ </div>
954
1335
 
955
- <div class="achievement-category">Time</div>
956
- <div class="achievement-card">
957
- <div class="achievement-emoji">⏱️</div>
958
- <div class="achievement-info"><h4>Speedrun</h4><p>Completed in under 5 minutes</p></div>
959
- </div>
960
- <div class="achievement-card">
961
- <div class="achievement-emoji">🏃</div>
962
- <div class="achievement-info"><h4>Marathon</h4><p>Session 60–180 minutes</p></div>
963
- </div>
964
- <div class="achievement-card">
965
- <div class="achievement-emoji">🫠</div>
966
- <div class="achievement-info"><h4>Endurance</h4><p>Session over 3 hours</p></div>
967
- </div>
1336
+ <!-- Combat Style -->
1337
+ <div class="tab-panel" id="ach-combat" role="tabpanel" aria-labelledby="tab-ach-combat">
1338
+ <div class="achievements-grid">
1339
+ <div class="ach-sub label-caps">Prompting Skill</div>
1340
+ <div class="card achievement-card">
1341
+ <div class="achievement-emoji">🥊</div>
1342
+ <div class="achievement-info"><h4>One Shot</h4><p>Completed in a single prompt</p></div>
1343
+ </div>
1344
+ <div class="card achievement-card">
1345
+ <div class="achievement-emoji">💬</div>
1346
+ <div class="achievement-info"><h4>Conversationalist</h4><p>20+ prompts in one run</p></div>
1347
+ </div>
1348
+ <div class="card achievement-card">
1349
+ <div class="achievement-emoji">🤐</div>
1350
+ <div class="achievement-info"><h4>Terse</h4><p>≤3 prompts, ≥10 tool calls</p></div>
1351
+ </div>
1352
+ <div class="card achievement-card">
1353
+ <div class="achievement-emoji">🪑</div>
1354
+ <div class="achievement-info"><h4>Backseat Driver</h4><p>15+ prompts, less than 1 tool call per prompt</p></div>
1355
+ </div>
1356
+ <div class="card achievement-card">
1357
+ <div class="achievement-emoji">🏗️</div>
1358
+ <div class="achievement-info"><h4>High Leverage</h4><p>5+ tool calls per prompt (≥2 prompts)</p></div>
1359
+ </div>
968
1360
 
969
- <div class="achievement-category">Extended Thinking</div>
970
- <div class="achievement-card">
971
- <div class="achievement-emoji">🔮</div>
972
- <div class="achievement-info"><h4>Spell Cast</h4><p>Used extended thinking in a won run</p></div>
973
- </div>
974
- <div class="achievement-card">
975
- <div class="achievement-emoji">🧮</div>
976
- <div class="achievement-info"><h4>Calculated Risk</h4><p>Extended thinking + LEGENDARY efficiency</p></div>
977
- </div>
978
- <div class="achievement-card">
979
- <div class="achievement-emoji">🌀</div>
980
- <div class="achievement-info"><h4>Deep Thinker</h4><p>3+ thinking invocations, completed under budget</p></div>
981
- </div>
982
- <div class="achievement-card">
983
- <div class="achievement-emoji">🤫</div>
984
- <div class="achievement-info"><h4>Silent Run</h4><p>No extended thinking, SOLID or better</p></div>
985
- </div>
1361
+ <div class="ach-sub label-caps">Tool Mastery</div>
1362
+ <div class="card achievement-card">
1363
+ <div class="achievement-emoji">👁️</div>
1364
+ <div class="achievement-info"><h4>Read Only</h4><p>Won with no Edit or Write calls</p></div>
1365
+ </div>
1366
+ <div class="card achievement-card">
1367
+ <div class="achievement-emoji">✏️</div>
1368
+ <div class="achievement-info"><h4>Editor</h4><p>10+ Edit calls in one run</p></div>
1369
+ </div>
1370
+ <div class="card achievement-card">
1371
+ <div class="achievement-emoji">🐚</div>
1372
+ <div class="achievement-info"><h4>Bash Warrior</h4><p>10+ Bash calls comprising ≥50% of tools</p></div>
1373
+ </div>
1374
+ <div class="card achievement-card">
1375
+ <div class="achievement-emoji">🔍</div>
1376
+ <div class="achievement-info"><h4>Scout</h4><p>≥60% of tool calls were Reads (≥5 total)</p></div>
1377
+ </div>
1378
+ <div class="card achievement-card">
1379
+ <div class="achievement-emoji">🔪</div>
1380
+ <div class="achievement-info"><h4>Surgeon</h4><p>1–3 Edit calls, completed under budget</p></div>
1381
+ </div>
1382
+ <div class="card achievement-card">
1383
+ <div class="achievement-emoji">🧰</div>
1384
+ <div class="achievement-info"><h4>Toolbox</h4><p>5+ distinct tools used in one run</p></div>
1385
+ </div>
986
1386
 
987
- <div class="achievement-category">Multi-Model</div>
988
- <div class="achievement-card">
989
- <div class="achievement-emoji">🏹</div>
990
- <div class="achievement-info"><h4>Frugal</h4><p>Haiku handled50% of session cost</p></div>
991
- </div>
992
- <div class="achievement-card">
993
- <div class="achievement-emoji">🎲</div>
994
- <div class="achievement-info"><h4>Rogue Run</h4><p>Haiku handled ≥75% of session cost</p></div>
995
- </div>
1387
+ <div class="ach-sub label-caps">Tool Reliability</div>
1388
+ <div class="card achievement-card">
1389
+ <div class="achievement-emoji">✅</div>
1390
+ <div class="achievement-info"><h4>Clean Run</h4><p>Zero failed tool calls (5 tool calls total)</p></div>
1391
+ </div>
1392
+ <div class="card achievement-card">
1393
+ <div class="achievement-emoji">🐂</div>
1394
+ <div class="achievement-info"><h4>Stubborn</h4><p>10+ failed tool calls and still won</p></div>
1395
+ </div>
996
1396
 
997
- <div class="achievement-category">Paladin Planning Ratio</div>
998
- <div class="achievement-card">
999
- <div class="achievement-emoji">🏛️</div>
1000
- <div class="achievement-info"><h4>Architect</h4><p>Opus handled &gt;60% of cost (heavy planner)</p></div>
1001
- </div>
1002
- <div class="achievement-card">
1003
- <div class="achievement-emoji">💨</div>
1004
- <div class="achievement-info"><h4>Blitz</h4><p>Opus handled &lt;25% of cost (light plan, fast execution)</p></div>
1005
- </div>
1006
- <div class="achievement-card">
1007
- <div class="achievement-emoji">⚖️</div>
1008
- <div class="achievement-info"><h4>Equilibrium</h4><p>Opus/Sonnet balanced at 40–60%</p></div>
1397
+ <div class="ach-sub label-caps">Turn Discipline</div>
1398
+ <div class="card achievement-card">
1399
+ <div class="achievement-emoji">🤖</div>
1400
+ <div class="achievement-info"><h4>Agentic</h4><p>3+ Claude turns per user prompt</p></div>
1401
+ </div>
1402
+ <div class="card achievement-card">
1403
+ <div class="achievement-emoji">🐕</div>
1404
+ <div class="achievement-info"><h4>Obedient</h4><p>Exactly one turn per prompt (≥3 prompts)</p></div>
1405
+ </div>
1009
1406
  </div>
1407
+ </div>
1010
1408
 
1011
- <div class="achievement-category">Model Loyalty</div>
1012
- <div class="achievement-card">
1013
- <div class="achievement-emoji">🔷</div>
1014
- <div class="achievement-info"><h4>Purist</h4><p>Single model family throughout</p></div>
1015
- </div>
1016
- <div class="achievement-card">
1017
- <div class="achievement-emoji">🦎</div>
1018
- <div class="achievement-info"><h4>Chameleon</h4><p>Multiple model families used, under budget</p></div>
1019
- </div>
1020
- <div class="achievement-card">
1021
- <div class="achievement-emoji">🔀</div>
1022
- <div class="achievement-info"><h4>Tactical Switch</h4><p>Exactly 1 model switch, under budget</p></div>
1023
- </div>
1024
- <div class="achievement-card">
1025
- <div class="achievement-emoji">🔒</div>
1026
- <div class="achievement-info"><h4>Committed</h4><p>No switches, one model family</p></div>
1027
- </div>
1028
- <div class="achievement-card">
1029
- <div class="achievement-emoji">⚠️</div>
1030
- <div class="achievement-info"><h4>Class Defection</h4><p>Declared one class but cost skewed to another</p></div>
1031
- </div>
1409
+ <!-- Endurance -->
1410
+ <div class="tab-panel" id="ach-endurance" role="tabpanel" aria-labelledby="tab-ach-endurance">
1411
+ <div class="achievements-grid">
1412
+ <div class="ach-sub label-caps">Time</div>
1413
+ <div class="card achievement-card">
1414
+ <div class="achievement-emoji">⏱️</div>
1415
+ <div class="achievement-info"><h4>Speedrun</h4><p>Completed in under 5 minutes</p></div>
1416
+ </div>
1417
+ <div class="card achievement-card">
1418
+ <div class="achievement-emoji">🏃</div>
1419
+ <div class="achievement-info"><h4>Marathon</h4><p>Session 60–180 minutes</p></div>
1420
+ </div>
1421
+ <div class="card achievement-card">
1422
+ <div class="achievement-emoji">🫠</div>
1423
+ <div class="achievement-info"><h4>Endurance</h4><p>Session over 3 hours</p></div>
1424
+ </div>
1032
1425
 
1033
- <div class="achievement-category">Rest &amp; Recovery</div>
1034
- <div class="achievement-card">
1035
- <div class="achievement-emoji">🔥</div>
1036
- <div class="achievement-info"><h4>No Rest for the Wicked</h4><p>Completed in one session</p></div>
1037
- </div>
1038
- <div class="achievement-card">
1039
- <div class="achievement-emoji">🏕️</div>
1040
- <div class="achievement-info"><h4>Made Camp</h4><p>Completed across multiple sessions</p></div>
1041
- </div>
1042
- <div class="achievement-card">
1043
- <div class="achievement-emoji">🧟</div>
1044
- <div class="achievement-info"><h4>Came Back</h4><p>Fainted (hit usage limits) and finished anyway</p></div>
1045
- </div>
1426
+ <div class="ach-sub label-caps">Rest &amp; Recovery</div>
1427
+ <div class="card achievement-card">
1428
+ <div class="achievement-emoji">🔥</div>
1429
+ <div class="achievement-info"><h4>No Rest for the Wicked</h4><p>Completed in one session</p></div>
1430
+ </div>
1431
+ <div class="card achievement-card">
1432
+ <div class="achievement-emoji">🏕️</div>
1433
+ <div class="achievement-info"><h4>Made Camp</h4><p>Completed across multiple sessions</p></div>
1434
+ </div>
1435
+ <div class="card achievement-card">
1436
+ <div class="achievement-emoji">🧟</div>
1437
+ <div class="achievement-info"><h4>Came Back</h4><p>Fainted (hit usage limits) and finished anyway</p></div>
1438
+ </div>
1046
1439
 
1047
- <div class="achievement-category">Context Management</div>
1048
- <div class="achievement-card">
1049
- <div class="achievement-emoji">📦</div>
1050
- <div class="achievement-info"><h4>Overencumbered</h4><p>Context auto-compacted during a won run</p></div>
1051
- </div>
1052
- <div class="achievement-card">
1053
- <div class="achievement-emoji">🎒</div>
1054
- <div class="achievement-info"><h4>Traveling Light</h4><p>Manual compact at 41–50% context</p></div>
1055
- </div>
1056
- <div class="achievement-card">
1057
- <div class="achievement-emoji">🪶</div>
1058
- <div class="achievement-info"><h4>Ultralight</h4><p>Manual compact at 31–40% context</p></div>
1059
- </div>
1060
- <div class="achievement-card">
1061
- <div class="achievement-emoji">🥷</div>
1062
- <div class="achievement-info"><h4>Ghost Run</h4><p>Manual compact at ≤30% context</p></div>
1440
+ <div class="ach-sub label-caps">Context Management</div>
1441
+ <div class="card achievement-card">
1442
+ <div class="achievement-emoji">📦</div>
1443
+ <div class="achievement-info"><h4>Overencumbered</h4><p>Context auto-compacted during a won run</p></div>
1444
+ </div>
1445
+ <div class="card achievement-card">
1446
+ <div class="achievement-emoji">🎒</div>
1447
+ <div class="achievement-info"><h4>Traveling Light</h4><p>Manual compact at 41–50% context</p></div>
1448
+ </div>
1449
+ <div class="card achievement-card">
1450
+ <div class="achievement-emoji">🪶</div>
1451
+ <div class="achievement-info"><h4>Ultralight</h4><p>Manual compact at 31–40% context</p></div>
1452
+ </div>
1453
+ <div class="card achievement-card">
1454
+ <div class="achievement-emoji">🥷</div>
1455
+ <div class="achievement-info"><h4>Ghost Run</h4><p>Manual compact at ≤30% context</p></div>
1456
+ </div>
1063
1457
  </div>
1458
+ </div>
1064
1459
 
1065
- <div class="achievement-category">Tool Reliability</div>
1066
- <div class="achievement-card">
1067
- <div class="achievement-emoji">✅</div>
1068
- <div class="achievement-info"><h4>Clean Run</h4><p>Zero failed tool calls (≥5 tool calls total)</p></div>
1069
- </div>
1070
- <div class="achievement-card">
1071
- <div class="achievement-emoji">🐂</div>
1072
- <div class="achievement-info"><h4>Stubborn</h4><p>10+ failed tool calls and still won</p></div>
1073
- </div>
1460
+ <!-- Arcane -->
1461
+ <div class="tab-panel" id="ach-arcane" role="tabpanel" aria-labelledby="tab-ach-arcane">
1462
+ <div class="achievements-grid">
1463
+ <div class="ach-sub label-caps">Extended Thinking</div>
1464
+ <div class="card achievement-card">
1465
+ <div class="achievement-emoji">🔮</div>
1466
+ <div class="achievement-info"><h4>Spell Cast</h4><p>Used extended thinking in a won run</p></div>
1467
+ </div>
1468
+ <div class="card achievement-card">
1469
+ <div class="achievement-emoji">🧮</div>
1470
+ <div class="achievement-info"><h4>Calculated Risk</h4><p>Extended thinking + LEGENDARY efficiency</p></div>
1471
+ </div>
1472
+ <div class="card achievement-card">
1473
+ <div class="achievement-emoji">🌀</div>
1474
+ <div class="achievement-info"><h4>Deep Thinker</h4><p>3+ thinking invocations, completed under budget</p></div>
1475
+ </div>
1476
+ <div class="card achievement-card">
1477
+ <div class="achievement-emoji">🤫</div>
1478
+ <div class="achievement-info"><h4>Silent Run</h4><p>No extended thinking, SOLID or better</p></div>
1479
+ </div>
1074
1480
 
1075
- <div class="achievement-category">Subagents</div>
1076
- <div class="achievement-card">
1077
- <div class="achievement-emoji">🐺</div>
1078
- <div class="achievement-info"><h4>Lone Wolf</h4><p>Completed with no subagents spawned</p></div>
1079
- </div>
1080
- <div class="achievement-card">
1081
- <div class="achievement-emoji">📡</div>
1082
- <div class="achievement-info"><h4>Summoner</h4><p>5+ subagents spawned in one run</p></div>
1083
- </div>
1084
- <div class="achievement-card">
1085
- <div class="achievement-emoji">🪖</div>
1086
- <div class="achievement-info"><h4>Army of One</h4><p>10+ subagents spawned, under 50% budget used</p></div>
1087
- </div>
1481
+ <div class="ach-sub label-caps">Multi-Model</div>
1482
+ <div class="card achievement-card">
1483
+ <div class="achievement-emoji">🏹</div>
1484
+ <div class="achievement-info"><h4>Frugal</h4><p>Haiku handled ≥50% of session cost</p></div>
1485
+ </div>
1486
+ <div class="card achievement-card">
1487
+ <div class="achievement-emoji">🎲</div>
1488
+ <div class="achievement-info"><h4>Rogue Run</h4><p>Haiku handled ≥75% of session cost</p></div>
1489
+ </div>
1088
1490
 
1089
- <div class="achievement-category">Turn Discipline</div>
1090
- <div class="achievement-card">
1091
- <div class="achievement-emoji">🤖</div>
1092
- <div class="achievement-info"><h4>Agentic</h4><p>3+ Claude turns per user prompt</p></div>
1093
- </div>
1094
- <div class="achievement-card">
1095
- <div class="achievement-emoji">🐕</div>
1096
- <div class="achievement-info"><h4>Obedient</h4><p>Exactly one turn per prompt (≥3 prompts)</p></div>
1097
- </div>
1491
+ <div class="ach-sub label-caps">Paladin Planning Ratio</div>
1492
+ <div class="card achievement-card">
1493
+ <div class="achievement-emoji">🏛️</div>
1494
+ <div class="achievement-info"><h4>Architect</h4><p>Opus handled &gt;60% of cost (heavy planner)</p></div>
1495
+ </div>
1496
+ <div class="card achievement-card">
1497
+ <div class="achievement-emoji">💨</div>
1498
+ <div class="achievement-info"><h4>Blitz</h4><p>Opus handled &lt;25% of cost (light plan, fast execution)</p></div>
1499
+ </div>
1500
+ <div class="card achievement-card">
1501
+ <div class="achievement-emoji">⚖️</div>
1502
+ <div class="achievement-info"><h4>Equilibrium</h4><p>Opus/Sonnet balanced at 40–60%</p></div>
1503
+ </div>
1098
1504
 
1099
- <div class="achievement-category" style="color:var(--red);">Death Marks</div>
1100
- <div class="achievement-card death">
1101
- <div class="achievement-emoji">🤦</div>
1102
- <div class="achievement-info"><h4>Hubris</h4><p>Used extended thinking, busted anyway</p></div>
1103
- </div>
1104
- <div class="achievement-card death">
1105
- <div class="achievement-emoji">💥</div>
1106
- <div class="achievement-info"><h4>Blowout</h4><p>Spent your committed budget</p></div>
1107
- </div>
1108
- <div class="achievement-card death">
1109
- <div class="achievement-emoji">😭</div>
1110
- <div class="achievement-info"><h4>So Close</h4><p>Died within 10% of budget</p></div>
1111
- </div>
1112
- <div class="achievement-card death">
1113
- <div class="achievement-emoji">🔨</div>
1114
- <div class="achievement-info"><h4>Tool Happy</h4><p>Died with 30+ tool calls</p></div>
1115
- </div>
1116
- <div class="achievement-card death">
1117
- <div class="achievement-emoji">🪦</div>
1118
- <div class="achievement-info"><h4>Silent Death</h4><p>Died with ≤2 prompts</p></div>
1119
- </div>
1120
- <div class="achievement-card death">
1121
- <div class="achievement-emoji">🤡</div>
1122
- <div class="achievement-info"><h4>Fumble</h4><p>Died with 5+ failed tool calls</p></div>
1505
+ <div class="ach-sub label-caps">Model Loyalty</div>
1506
+ <div class="card achievement-card">
1507
+ <div class="achievement-emoji">🔷</div>
1508
+ <div class="achievement-info"><h4>Purist</h4><p>Single model family throughout</p></div>
1509
+ </div>
1510
+ <div class="card achievement-card">
1511
+ <div class="achievement-emoji">🦎</div>
1512
+ <div class="achievement-info"><h4>Chameleon</h4><p>Multiple model families used, under budget</p></div>
1513
+ </div>
1514
+ <div class="card achievement-card">
1515
+ <div class="achievement-emoji">🔀</div>
1516
+ <div class="achievement-info"><h4>Tactical Switch</h4><p>Exactly 1 model switch, under budget</p></div>
1517
+ </div>
1518
+ <div class="card achievement-card">
1519
+ <div class="achievement-emoji">🔒</div>
1520
+ <div class="achievement-info"><h4>Committed</h4><p>No switches, one model family</p></div>
1521
+ </div>
1522
+ <div class="card achievement-card">
1523
+ <div class="achievement-emoji">⚠️</div>
1524
+ <div class="achievement-info"><h4>Class Defection</h4><p>Declared one class but cost skewed to another</p></div>
1525
+ </div>
1526
+
1527
+ <div class="ach-sub label-caps">Subagents</div>
1528
+ <div class="card achievement-card">
1529
+ <div class="achievement-emoji">🐺</div>
1530
+ <div class="achievement-info"><h4>Lone Wolf</h4><p>Completed with no subagents spawned</p></div>
1531
+ </div>
1532
+ <div class="card achievement-card">
1533
+ <div class="achievement-emoji">📡</div>
1534
+ <div class="achievement-info"><h4>Summoner</h4><p>5+ subagents spawned in one run</p></div>
1535
+ </div>
1536
+ <div class="card achievement-card">
1537
+ <div class="achievement-emoji">🪖</div>
1538
+ <div class="achievement-info"><h4>Army of One</h4><p>10+ subagents spawned, under 50% budget used</p></div>
1539
+ </div>
1123
1540
  </div>
1124
- <div class="achievement-card death">
1125
- <div class="achievement-emoji">🎲</div>
1126
- <div class="achievement-info"><h4>Indecisive</h4><p>3+ model switches — won or died</p></div>
1541
+ </div>
1542
+
1543
+ <!-- Death Marks -->
1544
+ <div class="tab-panel" id="ach-death" role="tabpanel" aria-labelledby="tab-ach-death">
1545
+ <div class="achievements-grid">
1546
+ <div class="card achievement-card death">
1547
+ <div class="achievement-emoji">🤦</div>
1548
+ <div class="achievement-info"><h4>Hubris</h4><p>Used extended thinking, busted anyway</p></div>
1549
+ </div>
1550
+ <div class="card achievement-card death">
1551
+ <div class="achievement-emoji">💥</div>
1552
+ <div class="achievement-info"><h4>Blowout</h4><p>Spent 2× your committed budget</p></div>
1553
+ </div>
1554
+ <div class="card achievement-card death">
1555
+ <div class="achievement-emoji">😭</div>
1556
+ <div class="achievement-info"><h4>So Close</h4><p>Died within 10% of budget</p></div>
1557
+ </div>
1558
+ <div class="card achievement-card death">
1559
+ <div class="achievement-emoji">🔨</div>
1560
+ <div class="achievement-info"><h4>Tool Happy</h4><p>Died with 30+ tool calls</p></div>
1561
+ </div>
1562
+ <div class="card achievement-card death">
1563
+ <div class="achievement-emoji">🪦</div>
1564
+ <div class="achievement-info"><h4>Silent Death</h4><p>Died with ≤2 prompts</p></div>
1565
+ </div>
1566
+ <div class="card achievement-card death">
1567
+ <div class="achievement-emoji">🤡</div>
1568
+ <div class="achievement-info"><h4>Fumble</h4><p>Died with 5+ failed tool calls</p></div>
1569
+ </div>
1570
+ <div class="card achievement-card death">
1571
+ <div class="achievement-emoji">🎲</div>
1572
+ <div class="achievement-info"><h4>Indecisive</h4><p>3+ model switches (won or died)</p></div>
1573
+ </div>
1127
1574
  </div>
1128
1575
  </div>
1129
1576
  </section>
1130
1577
 
1131
1578
  <!-- ── CLI Commands ── -->
1132
- <section>
1579
+ <section id="cli">
1133
1580
  <h2><span>⌨️</span>CLI Commands</h2>
1134
- <div class="cli-block">
1581
+ <div class="card cli-block">
1135
1582
  <div class="cli-block-header">terminal</div>
1136
1583
  <pre>
1137
1584
  <span class="comment"># Install</span>
@@ -1167,6 +1614,28 @@
1167
1614
  </footer>
1168
1615
 
1169
1616
  <script>
1617
+ /* ── Generic tab switcher (works for any .tab-bar) ── */
1618
+ document.querySelectorAll(".tab-bar").forEach((bar) => {
1619
+ const tabs = bar.querySelectorAll(".tab-btn");
1620
+ tabs.forEach((tab) => {
1621
+ tab.addEventListener("click", () => {
1622
+ tabs.forEach((t) => t.setAttribute("aria-selected", "false"));
1623
+ tab.setAttribute("aria-selected", "true");
1624
+ const section = bar.closest("section");
1625
+ section.querySelectorAll(".tab-panel").forEach((p) => {
1626
+ p.classList.remove("active");
1627
+ });
1628
+ const panel = document.getElementById(tab.dataset.panel);
1629
+ if (panel) {
1630
+ panel.classList.add("active");
1631
+ panel.style.animation = "none";
1632
+ panel.offsetHeight;
1633
+ panel.style.animation = "";
1634
+ }
1635
+ });
1636
+ });
1637
+ });
1638
+
1170
1639
  function copyInstall() {
1171
1640
  const cmd = document.getElementById("install-cmd").value;
1172
1641
  const btn = document.getElementById("copy-btn");