create-pmos 0.124.0 → 0.126.0

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.
Files changed (129) hide show
  1. package/package.json +1 -1
  2. package/payload/KIT-VERSION +2 -2
  3. package/payload/planning/evals/eval-calibration.md +1 -1
  4. package/payload/planning/okrs/health-budgets.md +1 -1
  5. package/payload/scripts/nine-stages.js +81 -0
  6. package/payload/scripts/workflow-state.js +2 -0
  7. package/payload/state/discoveries.md +1 -1
  8. package/payload/state/log.md +1 -1
  9. package/workspace/c3-one-home-test.js +131 -0
  10. package/workspace/fixtures/initiatives-api/list.json +171 -3
  11. package/workspace/fixtures/initiatives-api/roadmap.json +228 -4
  12. package/workspace/fixtures/initiatives-api/sheet.json +57 -1
  13. package/workspace/fixtures/one-home-baseline.json +83 -0
  14. package/workspace/guide/briefing-cards.md +40 -0
  15. package/workspace/guide/index.md +1 -0
  16. package/workspace/guide/layout.md +2 -0
  17. package/workspace/lib/engine/nine-stages.js +81 -0
  18. package/workspace/lib/engine/workflow-state.js +2 -0
  19. package/workspace/lib/facts-async.js +51 -0
  20. package/workspace/lib/item-steps.js +52 -0
  21. package/workspace/lib/jira-status.js +8 -3
  22. package/workspace/lib/jobs-to-be-done.js +52 -0
  23. package/workspace/lib/needs-overdue.js +41 -0
  24. package/workspace/lib/outbox-store.js +87 -0
  25. package/workspace/lib/pm-items.js +115 -0
  26. package/workspace/lib/route-modules.js +21 -0
  27. package/workspace/lib/routes-briefing.js +109 -0
  28. package/workspace/lib/routes-c3-init.js +53 -0
  29. package/workspace/lib/routes-c3-life.js +119 -0
  30. package/workspace/lib/routes-c3-strategy.js +169 -0
  31. package/workspace/lib/routes-c3-timeline.js +191 -0
  32. package/workspace/lib/routes-calendar-import.js +60 -0
  33. package/workspace/lib/routes-calendar-views.js +61 -0
  34. package/workspace/lib/routes-doc-health.js +79 -0
  35. package/workspace/lib/routes-doc-sheet.js +169 -0
  36. package/workspace/lib/routes-forecast.js +85 -0
  37. package/workspace/lib/routes-hooks.js +121 -0
  38. package/workspace/lib/routes-initiatives.js +3 -0
  39. package/workspace/lib/routes-intake.js +24 -0
  40. package/workspace/lib/routes-outbox.js +97 -0
  41. package/workspace/lib/routes-pm-items.js +216 -0
  42. package/workspace/lib/routes-records.js +61 -0
  43. package/workspace/lib/routes-releases.js +129 -0
  44. package/workspace/lib/routes-report-facts.js +84 -0
  45. package/workspace/lib/routes-report-families.js +32 -0
  46. package/workspace/lib/routes-roadmap-ops.js +141 -0
  47. package/workspace/lib/routes-runs.js +119 -0
  48. package/workspace/lib/routes-signals.js +50 -0
  49. package/workspace/lib/run-answers.js +69 -0
  50. package/workspace/package-lock.json +2 -2
  51. package/workspace/package.json +1 -1
  52. package/workspace/public/c3.html +26 -0
  53. package/workspace/public/pm/briefing-deck.js +413 -0
  54. package/workspace/public/pm/briefing-model.js +211 -0
  55. package/workspace/public/pm/c3-breakdown.js +240 -0
  56. package/workspace/public/pm/c3-brief.js +278 -0
  57. package/workspace/public/pm/c3-cal-strategy.js +528 -0
  58. package/workspace/public/pm/c3-case.js +185 -0
  59. package/workspace/public/pm/c3-daypart.js +176 -0
  60. package/workspace/public/pm/c3-demo-brief-ix.js +350 -0
  61. package/workspace/public/pm/c3-demo-cal-ix.js +74 -0
  62. package/workspace/public/pm/c3-demo-cal2.js +66 -0
  63. package/workspace/public/pm/c3-demo-cal3.js +173 -0
  64. package/workspace/public/pm/c3-demo-data.js +560 -0
  65. package/workspace/public/pm/c3-demo-init.js +373 -0
  66. package/workspace/public/pm/c3-demo-life.js +77 -0
  67. package/workspace/public/pm/c3-demo-misc2.js +46 -0
  68. package/workspace/public/pm/c3-demo-plan2.js +30 -0
  69. package/workspace/public/pm/c3-demo-rep-ix.js +126 -0
  70. package/workspace/public/pm/c3-demo-rep2.js +92 -0
  71. package/workspace/public/pm/c3-demo-term.js +153 -0
  72. package/workspace/public/pm/c3-demo-time.js +49 -0
  73. package/workspace/public/pm/c3-demo-work-ix.js +80 -0
  74. package/workspace/public/pm/c3-demo-work2.js +13 -0
  75. package/workspace/public/pm/c3-demo.js +113 -0
  76. package/workspace/public/pm/c3-doc-sheet.js +314 -0
  77. package/workspace/public/pm/c3-dock.js +180 -0
  78. package/workspace/public/pm/c3-docs.js +290 -0
  79. package/workspace/public/pm/c3-expand.js +96 -0
  80. package/workspace/public/pm/c3-init-extras.js +170 -0
  81. package/workspace/public/pm/c3-lifecycle-panels.js +476 -0
  82. package/workspace/public/pm/c3-misc-panels.js +89 -0
  83. package/workspace/public/pm/c3-plan-panels.js +163 -0
  84. package/workspace/public/pm/c3-plan.js +192 -0
  85. package/workspace/public/pm/c3-roadmap.js +249 -0
  86. package/workspace/public/pm/c3-sheet.js +107 -0
  87. package/workspace/public/pm/c3-shell.js +674 -0
  88. package/workspace/public/pm/c3-signals.js +196 -0
  89. package/workspace/public/pm/c3-strategy-panels.js +45 -0
  90. package/workspace/public/pm/c3-swipe.js +230 -0
  91. package/workspace/public/pm/c3-terminal-data.js +26 -0
  92. package/workspace/public/pm/c3-terminal-edge.js +91 -0
  93. package/workspace/public/pm/c3-terminal-icons.js +41 -0
  94. package/workspace/public/pm/c3-terminal-results.js +141 -0
  95. package/workspace/public/pm/c3-terminal.js +52 -0
  96. package/workspace/public/pm/c3-tickets.js +163 -0
  97. package/workspace/public/pm/c3-timeline.js +201 -0
  98. package/workspace/public/pm/c3-toast.js +16 -0
  99. package/workspace/public/pm/calendar-views.js +1014 -0
  100. package/workspace/public/pm/console3-lift.md +220 -0
  101. package/workspace/public/pm/console3.css +1547 -0
  102. package/workspace/public/pm/dest-initiatives.js +16 -3
  103. package/workspace/public/pm/dest-mywork.js +8 -1
  104. package/workspace/public/pm/dest-reports.js +47 -1
  105. package/workspace/public/pm/dest-today.js +55 -1
  106. package/workspace/public/pm/doc-health-panel.js +110 -0
  107. package/workspace/public/pm/doc-rail.js +9 -3
  108. package/workspace/public/pm/lifecycle-lens-model.js +228 -0
  109. package/workspace/public/pm/lifecycle-lens.js +261 -0
  110. package/workspace/public/pm/new-initiative-sheet.js +116 -21
  111. package/workspace/public/pm/outbox-panel.js +125 -0
  112. package/workspace/public/pm/pm-work-view.js +895 -0
  113. package/workspace/public/pm/releases-view.js +248 -0
  114. package/workspace/public/pm/report-families-view.js +503 -0
  115. package/workspace/public/pm/run-card.js +244 -0
  116. package/workspace/public/pm/sessions-panel.js +149 -0
  117. package/workspace/public/pm/shell-bell.js +162 -0
  118. package/workspace/public/pm/shell-model.js +83 -0
  119. package/workspace/public/pm/shell-phone.js +124 -0
  120. package/workspace/public/pm/shell-readaloud.js +53 -0
  121. package/workspace/public/pm/shell-recording.js +110 -0
  122. package/workspace/public/pm/shell-ticker.js +90 -0
  123. package/workspace/public/pm/slide-confirm.js +163 -0
  124. package/workspace/public/pm/timeline-forecast-view.js +164 -0
  125. package/workspace/public/pm/today-day.js +8 -2
  126. package/workspace/public/pm/tokens.css +1 -0
  127. package/workspace/server.js +5 -2
  128. package/workspace/test-files.json +21 -3
  129. package/workspace/test-lists/browser-suites-green.json +5 -0
@@ -0,0 +1,1547 @@
1
+ /* pm/console3.css — the console3 mockup's CSS for the Work, Briefing and Calendar views, lifted from
2
+ * prototype/pmos-console-handoff/mockups/console3.html (the <style> block, lines 5 to 966) by a generator that
3
+ * 1. prefixes every selector with `.c3` (a view's root carries class `c3`, so nothing here reaches another page),
4
+ * 2. turns the mockup's `.ph` phone class into `.c3.ph` (the view toggles it under 640px),
5
+ * 3. maps the mockup's colour variables to the D38 tokens: --bg background, --fg foreground, --mfg muted-foreground,
6
+ * --ok success, --warn warning, --bad destructive, --opp purple, --acc accent; --card, --muted, --border, --ring,
7
+ * --mono and --sans are the same names in tokens.css,
8
+ * 4. renames every @keyframes to c3-NAME (the sheet cannot collide with components.css),
9
+ * 5. leaves out what the three views do not draw: the shell, dock, sheets, palette, toast, banner, phone tray, and the
10
+ * Initiatives, Reports and Release classes.
11
+ * Rules the mockup does not have are marked "console3.css addition" at the end of the file.
12
+ * White text on the blue accent and the alpha-mask colour read --on-accent and --mask from tokens.css; the scrim and shadow
13
+ * alphas stay as written. */
14
+ .c3{
15
+ --fs-1:11px;--fs-2:12px;--fs-3:14px;--fs-4:16px;--fs-5:20px;--fs-6:28px;
16
+ --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;
17
+ --acc:oklch(0.623 0.214 259.815);--accw:oklch(0.623 0.214 259.815 / 18%);
18
+ --sh1:0 1px 2px oklch(0 0 0 / 40%);
19
+ --sh2:0 2px 6px oklch(0 0 0 / 35%),0 14px 32px oklch(0 0 0 / 45%);
20
+ --sh3:0 8px 20px oklch(0 0 0 / 45%),0 32px 70px oklch(0 0 0 / 55%);
21
+ --hi:inset 0 1px 0 oklch(1 0 0 / 7%);
22
+ color:var(--foreground);font:var(--fs-3)/1.5 var(--sans);container-type:inline-size;min-width:0;
23
+ }
24
+ [data-pm-theme="light"] .c3,html[data-pm-page-theme="light"] .c3{
25
+ --acc:oklch(0.488 0.243 264.376);--accw:oklch(0.488 0.243 264.376 / 12%);
26
+ --sh1:0 1px 2px oklch(0.2 0.02 250 / 7%),0 1px 1px oklch(0.2 0.02 250 / 4%);
27
+ --sh2:0 2px 4px oklch(0.2 0.02 250 / 6%),0 10px 24px oklch(0.2 0.02 250 / 9%);
28
+ --sh3:0 6px 16px oklch(0.2 0.02 250 / 12%),0 28px 64px oklch(0.2 0.02 250 / 18%);
29
+ --hi:inset 0 1px 0 oklch(1 0 0 / 70%);
30
+ }
31
+ .c3 b,.c3 strong{font-weight:600}
32
+ .c3 h1,.c3 h2,.c3 h3{line-height:1.3;text-wrap:balance}
33
+ .c3 [hidden]{display:none!important}
34
+ .c3 button{font:inherit;color:inherit;cursor:pointer}
35
+ .c3 button:focus-visible,.c3 input:focus-visible,.c3 select:focus-visible,.c3 textarea:focus-visible,.c3 summary:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
36
+ .c3 .ic{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none;vertical-align:middle}
37
+ .c3 .ic.sm{width:14px;height:14px}
38
+ .c3 .ic.lg{width:22px;height:22px}
39
+ .c3 .dim{color:var(--muted-foreground)}
40
+ .c3 .mono{font-family:var(--mono)}
41
+ .c3 .ib{border:1px solid var(--border);background:var(--background);width:34px;height:34px;display:inline-grid;place-items:center;border-radius:8px;position:relative;color:var(--foreground);flex:none}
42
+ .c3 .ib[aria-pressed="true"],.c3 .ib.on{background:var(--foreground);color:var(--background);border-color:var(--foreground)}
43
+ .c3 .ib.pri{background:var(--foreground);color:var(--background);border-color:var(--foreground)}
44
+ .c3 .ib.sm{width:30px;height:30px}
45
+ .c3 .ib:disabled{opacity:.35;cursor:not-allowed}
46
+ @media (hover:hover){
47
+ .c3 .ib:hover{border-color:var(--ring)}
48
+ .c3 .chip2.lk:hover,.c3 .tt:hover{color:var(--acc)}
49
+ }
50
+ .c3 .bdg{font:500 var(--fs-1) var(--mono);background:var(--acc);color:var(--on-accent);min-width:16px;height:16px;border-radius:8px;display:inline-grid;place-items:center;padding:0 4px}
51
+ .c3 .bdg.g{background:var(--muted);color:var(--muted-foreground)}
52
+ .c3 .seg{display:inline-flex;border:1px solid var(--border);padding:2px;gap:2px;background:var(--muted);border-radius:8px}
53
+ .c3 .seg button{border:0;background:transparent;padding:4px 10px;display:flex;gap:6px;align-items:center;font:500 var(--fs-2) var(--mono);color:var(--muted-foreground);border-radius:6px}
54
+ .c3 .seg button[aria-pressed="true"]{background:var(--background);color:var(--foreground);box-shadow:0 0 0 1px var(--border)}
55
+ .c3 .card{border:1px solid var(--border);background:var(--card);padding:14px;display:grid;gap:10px;align-content:start;border-radius:8px}
56
+ .c3 .card h3,.c3 .sh h2{margin:0;font:500 var(--fs-2) var(--mono);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.06em;display:flex;gap:8px;align-items:center}
57
+ .c3 .sh{display:flex;justify-content:space-between;align-items:center;gap:8px;padding-bottom:6px;border-bottom:1px solid var(--foreground)}
58
+ .c3 .sh .r{display:flex;gap:6px;align-items:center;font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
59
+ .c3 .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
60
+ .c3 .sec{display:grid;gap:10px}
61
+ .c3{display:grid;gap:16px;align-content:start}
62
+ .c3 .g21{grid-template-columns:minmax(0,2fr) minmax(220px,1fr)}
63
+ .c3.ph .g21{grid-template-columns:minmax(0,1fr)}
64
+ .c3 .list{list-style:none;margin:0;padding:0;display:grid}
65
+ .c3 .nrow,.c3 .drow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;padding:10px 2px;border-bottom:1px solid var(--border);align-items:start;transition:opacity .18s,transform .18s,max-height .18s}
66
+ .c3 .nrow.leave,.c3 .drow.leave,.c3 .row.leave{opacity:0;transform:translateX(24px)}
67
+ .c3 .ki{width:30px;height:30px;border-radius:8px;background:var(--muted);display:grid;place-items:center;color:var(--muted-foreground)}
68
+ .c3 .ki.hot{background:var(--accw);color:var(--acc)}
69
+ .c3 .nb{min-width:0}
70
+ .c3 .tt{border:0;background:transparent;padding:0;text-align:left;font-weight:500;color:var(--foreground);overflow-wrap:anywhere}
71
+ .c3 .chips{display:flex;flex-wrap:wrap;gap:4px 6px;margin-top:4px;align-items:center}
72
+ .c3 .chip2{display:inline-flex;gap:4px;align-items:center;font:var(--fs-2) var(--mono);color:var(--muted-foreground);border:0;background:transparent;padding:0}
73
+ .c3 .chip2.lk{cursor:pointer}
74
+ .c3 .tag{font:500 var(--fs-1) var(--mono);padding:1px 6px;background:var(--muted);color:var(--muted-foreground);border-radius:4px;white-space:nowrap}
75
+ .c3 .fl{font:500 var(--fs-1) var(--mono);padding:1px 6px;border:1px solid var(--border);color:var(--muted-foreground);border-radius:4px}
76
+ .c3 .fl.p1{color:var(--destructive);border-color:var(--destructive)}
77
+ .c3 .fl.p2{color:var(--warning);border-color:var(--warning)}
78
+ .c3 .fl.p3{color:var(--acc);border-color:var(--acc)}
79
+ .c3 .why{font-size:var(--fs-3);color:var(--muted-foreground);margin-top:6px;animation:c3-fadein .2s}
80
+ .c3 .acts{display:flex;gap:6px;align-items:center}
81
+ .c3 .av{width:22px;height:22px;border-radius:50%;background:var(--muted);color:var(--foreground);border:1px solid var(--border);font:500 var(--fs-1) var(--mono);display:inline-grid;place-items:center;padding:0}
82
+ @media (hover:hover){
83
+ .c3 .av:hover{border-color:var(--acc);color:var(--acc)}
84
+ }
85
+ .c3 .av.lg{width:40px;height:40px;font-size:var(--fs-4)}
86
+ .c3 .st{display:inline-flex;gap:4px;align-items:center;font:500 var(--fs-2) var(--mono)}
87
+ .c3 .st.ok{color:var(--success)}
88
+ .c3 .st.warn{color:var(--warning)}
89
+ .c3 .st.bad{color:var(--destructive)}
90
+ .c3 .st.acc{color:var(--acc)}
91
+ .c3 .dotc{width:8px;height:8px;border-radius:50%;background:var(--ring);display:inline-block}
92
+ .c3 .dotc.ok{background:var(--success)}
93
+ .c3 .dotc.warn{background:var(--warning)}
94
+ .c3 .dotc.bad{background:var(--destructive)}
95
+ .c3 .dotc.acc{background:var(--acc)}
96
+ .c3 .dotc.pulse{animation:c3-pulse 1.6s infinite}
97
+ .c3 .fold{border:1px dashed var(--ring);padding:8px 12px;font:var(--fs-2) var(--mono);color:var(--muted-foreground);border-radius:6px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
98
+ .c3 .fold.w{border-color:var(--warning);color:var(--warning)}
99
+ .c3 .fold.a{border-color:var(--acc);color:var(--acc)}
100
+ .c3 .incident{border:1px solid var(--destructive);color:var(--destructive);padding:10px 14px;border-radius:8px;display:flex;gap:10px;align-items:center}
101
+ .c3 .hero{display:flex;gap:10px 18px;flex-wrap:wrap;align-items:center}
102
+ .c3 .hero b{font-size:var(--fs-5);font-weight:600;line-height:1.3}
103
+ .c3 .hs{display:inline-flex;gap:6px;align-items:center;font:500 var(--fs-2) var(--mono)}
104
+ .c3 .chips2{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
105
+ .c3 .pill{border:1px solid var(--border);background:var(--background);padding:3px 10px;font:var(--fs-3) var(--sans);color:var(--muted-foreground);display:inline-flex;gap:6px;align-items:center;border-radius:16px}
106
+ .c3 .pill[aria-pressed="true"]{background:var(--foreground);color:var(--background);border-color:var(--foreground)}
107
+ .c3 .pill .c{font:var(--fs-1) var(--mono)}
108
+ .c3 .tbl{width:100%;border-collapse:collapse;font-size:var(--fs-3)}
109
+ .c3 .tbl th{font:500 var(--fs-1) var(--mono);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.06em;text-align:left;padding:6px 8px 6px 0}
110
+ .c3 .tbl td{padding:8px 8px 8px 0;border-top:1px solid var(--border);vertical-align:middle}
111
+ .c3 .chart{width:100%;height:auto;display:block}
112
+ .c3 .chart text{font:var(--fs-1) var(--mono);fill:var(--muted-foreground)}
113
+ .c3 .chart .t{fill:var(--foreground)}
114
+ .c3 .chart.sm{max-width:300px}
115
+ .c3 .chart.md{max-width:920px}
116
+ .c3.ph .chart.day text{font-size:var(--fs-5)}
117
+ .c3.ph .chart.day .bl,.c3.ph .chart.day .fr{display:none}
118
+ .c3 .chart .hit{fill:transparent;cursor:pointer}
119
+ .c3 .grow{transform-origin:left center;transform-box:fill-box;animation:c3-grow .6s ease-out backwards}
120
+ .c3 .pop{transform-origin:center;transform-box:fill-box;animation:c3-popin .4s .3s ease-out backwards}
121
+ .c3 .growy{transform-origin:center bottom;transform-box:fill-box;animation:c3-growy .5s ease-out backwards}
122
+ .c3 .ping{transform-origin:center;transform-box:fill-box;animation:c3-ping 1.8s ease-out infinite}
123
+ .c3 .wave{display:flex;gap:3px;align-items:center;height:32px}
124
+ .c3 .wave i{width:3px;background:var(--acc);border-radius:2px;height:8px;animation:c3-wave 1s ease-in-out infinite}
125
+ .c3 .wave i:nth-child(2n){animation-delay:.2s}
126
+ .c3 .wave i:nth-child(3n){animation-delay:.4s}
127
+ .c3 .wave i:nth-child(5n){animation-delay:.6s}
128
+ .c3 .term{font:var(--fs-2)/1.5 var(--mono);background:var(--muted);padding:8px 10px;min-height:96px;max-height:200px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;border-radius:6px}
129
+ .c3 .form{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
130
+ .c3 input[type=text],.c3 select,.c3 textarea{font:inherit;font-size:var(--fs-3);padding:6px 8px;border:1px solid var(--border);background:var(--background);color:var(--foreground);min-width:0;border-radius:6px}
131
+ .c3 .form input[type=text]{flex:1 1 140px}
132
+ .c3 .q{border:1px solid var(--border);border-radius:8px;padding:10px;display:grid;gap:6px;align-content:start}
133
+ .c3 .q h4{margin:0;font:500 var(--fs-1) var(--mono);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.06em;display:flex;gap:6px;align-items:center}
134
+ .c3 .q .li{font-size:var(--fs-3);display:flex;gap:6px;align-items:center;justify-content:space-between}
135
+ .c3 .view{animation:c3-fadein .25s}
136
+ .c3.ph .tabs,.c3.ph .dock,.c3.ph .hide-ph{display:none!important}
137
+ .c3.ph .bottombar{display:flex}
138
+ .c3.ph .shell{grid-template-columns:minmax(0,1fr)}
139
+ .c3.ph .grid{grid-template-columns:minmax(0,1fr)}
140
+ .c3.ph .nrow,.c3.ph .drow{grid-template-columns:auto minmax(0,1fr)}
141
+ .c3.ph .nrow .acts,.c3.ph .drow .acts{grid-column:2}
142
+ .c3.ph .quad{grid-template-columns:minmax(0,1fr)}
143
+ .c3.ph .top h1 .hide-ph{display:none}
144
+ .c3 .show-ph{display:none}
145
+ .c3.ph .show-ph{display:block}
146
+ .c3 .cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
147
+ .c3 .cal .dh{font:500 var(--fs-1) var(--mono);color:var(--muted-foreground);text-align:center;padding:2px}
148
+ .c3 .cd{border:1px solid var(--border);border-radius:8px;background:var(--background);min-height:78px;padding:6px;display:grid;align-content:space-between;gap:4px;text-align:left;position:relative;overflow:hidden}
149
+ .c3 .cd .n{font:500 var(--fs-2) var(--mono)}
150
+ .c3 .cd.out{opacity:.4}
151
+ .c3 .cd.we{background:var(--muted)}
152
+ .c3 .cd.today{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc)}
153
+ .c3 .cd .m{font-size:var(--fs-2);display:flex;gap:2px;flex-wrap:wrap;line-height:1}
154
+ .c3 .cd .heat{position:absolute;left:0;right:0;bottom:0;background:var(--acc);opacity:.22;transition:height .4s}
155
+ .c3.ph .cd{min-height:56px;padding:4px}
156
+ .c3 .job{display:grid;gap:6px}
157
+ .c3 .job .jl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 8px;font-size:var(--fs-3);align-items:baseline}
158
+ .c3 .job .jl b{font:500 var(--fs-1) var(--mono);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.06em}
159
+ .c3 .bul{font:500 var(--fs-4)/1 var(--mono);width:26px;height:26px;border:0;background:transparent;color:var(--foreground);display:grid;place-items:center;border-radius:6px;padding:0}
160
+ @media (hover:hover){
161
+ .c3 .bul:hover{background:var(--muted)}
162
+ }
163
+ .c3 .bul.dn{color:var(--muted-foreground)}
164
+ .c3 .legend{display:flex;gap:6px 14px;flex-wrap:wrap;font:var(--fs-2) var(--mono);color:var(--muted-foreground);align-items:center}
165
+ .c3.ph .cmp{grid-template-columns:minmax(0,1fr)}
166
+ .c3 .rise{animation:c3-rise .5s cubic-bezier(.2,.7,.2,1) backwards;animation-delay:calc(var(--i,0)*38ms)}
167
+ @keyframes c3-rise{from{opacity:0;transform:translateY(12px)}}
168
+ .c3 .draw{stroke-dasharray:1;animation:c3-draw 1.1s cubic-bezier(.3,.6,.2,1) backwards}
169
+ @keyframes c3-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
170
+ .c3 .rg{animation:c3-ringin 1s cubic-bezier(.3,.6,.2,1) backwards}
171
+ @keyframes c3-ringin{from{stroke-dasharray:0 999}}
172
+ .c3 .st.ok .ic path{stroke-dasharray:30;animation:c3-tick .5s .15s ease-out backwards}
173
+ @keyframes c3-tick{from{stroke-dashoffset:30}}
174
+ .c3 .cd .heat{transform-origin:bottom;animation:c3-sy .7s ease-out backwards}
175
+ @keyframes c3-sy{from{transform:scaleY(0)}}
176
+ .c3 .pbar{height:8px;background:var(--muted);border-radius:4px;overflow:hidden;min-width:80px}
177
+ .c3 .pbar i{display:block;height:100%;background:var(--acc);border-radius:4px;transform-origin:left;animation:c3-grow .8s cubic-bezier(.3,.6,.2,1) backwards}
178
+ .c3.noanim .grow,.c3.noanim .growy,.c3.noanim .pop,.c3.noanim .rise,.c3.noanim .draw,.c3.noanim .rg,.c3.noanim .cd .heat,.c3.noanim .pbar i,.c3.noanim .st.ok .ic path{animation:none}
179
+ .c3 .bump{animation:c3-bump .5s cubic-bezier(.3,1.6,.5,1)}
180
+ @keyframes c3-bump{40%{transform:scale(1.5)}}
181
+ @keyframes c3-toastin{from{opacity:0;transform:translate(-50%,18px) scale(.94)}}
182
+ .c3 .dots{display:inline-flex;gap:3px;align-items:center}
183
+ .c3 .dots i{width:5px;height:5px;border-radius:50%;background:var(--acc);animation:c3-dot 1.2s ease-in-out infinite}
184
+ .c3 .dots i:nth-child(2){animation-delay:.15s}
185
+ .c3 .dots i:nth-child(3){animation-delay:.3s}
186
+ @keyframes c3-dot{0%,80%,100%{transform:translateY(0);opacity:.4}40%{transform:translateY(-4px);opacity:1}}
187
+ .c3 #tabbtns{display:flex;gap:4px}
188
+ .c3 .seg button{transition:background .2s,color .2s,box-shadow .2s}
189
+ .c3 button.card,.c3 .ki,.c3 .ib,.c3 .pill{transition:transform .18s cubic-bezier(.3,.7,.2,1),box-shadow .2s,background .15s,border-color .15s,color .15s}
190
+ @media (hover:hover){
191
+ .c3 button.card:hover{transform:translateY(-2px);box-shadow:0 8px 22px oklch(0 0 0 / 8%)}
192
+ .c3 .nrow:hover .ki{transform:scale(1.08)}
193
+ .c3 .pill:hover{border-color:var(--ring)}
194
+ }
195
+ .c3 .ib:active,.c3 .pill:active,.c3 .chip2.lk:active{transform:scale(.93)}
196
+ .c3 .nrow.leave,.c3 .drow.leave,.c3 .row.leave{opacity:0;transform:translateX(26px);max-height:0!important;padding-block:0!important;border-width:0}
197
+ .c3 .lens .lbl{display:inline}
198
+ .c3.ph .lens .lbl{display:none}
199
+ .c3 .lvl{font:500 var(--fs-1) var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted-foreground);padding:6px 2px 0}
200
+ .c3 .vz{padding:4px 0 0}
201
+ .c3 .vz .chart{max-width:540px}
202
+ .c3{container-type:inline-size}
203
+ .c3 .brief{position:relative;isolation:isolate;display:grid;gap:16px}
204
+ .c3 .brief::before{content:"";position:absolute;left:-24px;right:-24px;top:-28px;height:380px;background:radial-gradient(60% 100% at 12% 0%,var(--accw),transparent 70%);z-index:-1;pointer-events:none}
205
+ .c3 .bcols{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,1fr);gap:20px;align-items:start}
206
+ .c3 .bcol{display:grid;gap:16px;min-width:0}
207
+ .c3 .bcol.r{position:sticky;top:12px}
208
+ @container (max-width:859px){
209
+ .c3 .bcols{grid-template-columns:minmax(0,1fr)}
210
+ .c3 .bcol{display:contents}
211
+ .c3 .bcol.r{position:static}
212
+ .c3 .o1{order:1}
213
+ .c3 .o2{order:2}
214
+ .c3 .o3{order:3}
215
+ .c3 .o4{order:4}
216
+ .c3 .o5{order:5}
217
+ .c3 .o6{order:6}
218
+ .c3 .o7{order:7}
219
+ }
220
+ .c3 .brief .card{box-shadow:var(--sh1),var(--hi);border-radius:12px}
221
+ .c3 .brief .sect{padding:6px 16px 10px}
222
+ .c3 .brief .sect .sh2{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 0 8px;border-bottom:1px solid var(--border)}
223
+ .c3 .brief .sect .sh2 h2{margin:0;font:500 var(--fs-2) var(--mono);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.06em;display:flex;gap:8px;align-items:center}
224
+ .c3 .brief .nrow,.c3 .brief .drow{border-radius:8px;transition:background .15s,opacity .2s,transform .2s,max-height .2s}
225
+ @media (hover:hover){
226
+ .c3 .brief .nrow:hover,.c3 .brief .drow:hover{background:color-mix(in oklab,var(--muted) 60%,transparent)}
227
+ }
228
+ .c3 .brief .card.glass{box-shadow:var(--sh2),var(--hi)}
229
+ .c3 .glass{background:color-mix(in oklab,var(--card) 78%,transparent);-webkit-backdrop-filter:blur(14px) saturate(1.3);backdrop-filter:blur(14px) saturate(1.3);box-shadow:var(--sh2),var(--hi)}
230
+ .c3 .gate{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 22px;padding:18px 20px;border-radius:16px;border:1px solid color-mix(in oklab,var(--acc) 30%,var(--border));background:linear-gradient(125deg,var(--accw),transparent 58%),var(--card);box-shadow:var(--sh2),var(--hi);position:relative}
231
+ .c3 .gate.done{background:linear-gradient(125deg,color-mix(in oklab,var(--success) 14%,transparent),transparent 58%),var(--card);border-color:color-mix(in oklab,var(--success) 32%,var(--border))}
232
+ .c3 .gate h2{margin:0;font-size:var(--fs-5);line-height:1.3;font-weight:600;text-wrap:balance}
233
+ .c3 .eyebrow{display:flex;gap:6px;align-items:center;font:500 var(--fs-1) var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--acc)}
234
+ .c3 .gate.done .eyebrow{color:var(--success)}
235
+ .c3 .gate .side{display:grid;justify-items:center;align-content:start;gap:2px;grid-row:1/span 3;grid-column:2}
236
+ @container (max-width:520px){
237
+ .c3 .gate{grid-template-columns:minmax(0,1fr)}
238
+ .c3 .gate .side{grid-row:auto;grid-column:1;justify-items:start}
239
+ }
240
+ .c3 .flow{stroke-dasharray:4 5;animation:c3-flow 1.4s linear infinite}
241
+ @keyframes c3-flow{to{stroke-dashoffset:-9}}
242
+ .c3 .fuse{height:4px;border-radius:2px;background:var(--muted);overflow:hidden;width:150px;max-width:40%}
243
+ .c3 .fuse i{display:block;height:100%;border-radius:2px;transform-origin:left;animation:c3-grow .9s cubic-bezier(.3,.6,.2,1) backwards}
244
+ .c3.noanim .fuse i{animation:none}
245
+ .c3 .xp{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .32s cubic-bezier(.2,.7,.2,1),opacity .25s}
246
+ .c3 .xp.open{grid-template-rows:1fr;opacity:1}
247
+ .c3 .xp>.xi{overflow:hidden;min-height:0}
248
+ .c3 .chev{transition:transform .25s cubic-bezier(.3,.7,.2,1)}
249
+ .c3 [aria-expanded="true"] .chev{transform:rotate(90deg)}
250
+ .c3 .pbs{display:flex;gap:3px;height:12px;align-items:center}
251
+ .c3 .pbs button{border:0;padding:0;height:10px;border-radius:5px;transition:flex .4s,transform .15s,opacity .2s}
252
+ @media (hover:hover){
253
+ .c3 .pbs button:hover{transform:scaleY(1.5)}
254
+ }
255
+ .c3 .prow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;border:0;background:transparent;text-align:left;padding:8px 6px;border-radius:8px;transition:background .15s}
256
+ @media (hover:hover){
257
+ .c3 .prow:hover{background:color-mix(in oklab,var(--muted) 70%,transparent)}
258
+ }
259
+ .c3 .pnote{font-size:var(--fs-2)}
260
+ .c3 .pst{font:var(--fs-2) var(--mono)}
261
+ .c3 .pst-ok{color:var(--foreground)}
262
+ .c3 .pst-warn{color:var(--warning)}
263
+ .c3 .pst-bad{color:var(--destructive)}
264
+ .c3 .pst-none{color:var(--muted-foreground)}
265
+ .c3 .cmpill{border:1px solid var(--border);border-radius:16px;padding:2px 10px;font:var(--fs-2) var(--mono);white-space:nowrap}
266
+ .c3 .cmpill.win{border-color:var(--acc);background:var(--accw)}
267
+ .c3 .swap{animation:c3-swap .38s cubic-bezier(.2,.7,.2,1)}
268
+ @keyframes c3-swap{from{opacity:0;transform:translateY(6px) scale(.99)}}
269
+ @keyframes c3-wy{50%{outline-color:color-mix(in oklab,var(--acc) 30%,transparent)}}
270
+ .c3.ph .whyp{display:none}
271
+ .c3 .bcol.r{max-height:calc(100vh - 24px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:4px;margin:-4px}
272
+ .c3 .ribbon .chart{max-width:520px;margin-inline:auto}
273
+ .c3 .vday{position:relative;height:361px;margin-top:2px;user-select:none}
274
+ .c3 .vday .hr{position:absolute;left:0;right:0;border-top:1px solid var(--border);font:var(--fs-1) var(--mono);color:var(--muted-foreground)}
275
+ .c3 .vday .hr span{position:absolute;top:-7px;left:0;padding-right:5px;background:color-mix(in oklab,var(--card) 70%,transparent)}
276
+ .c3 .vday .vb{position:absolute;left:44px;right:0;border:0;border-radius:8px;background:var(--acc);color:var(--on-accent);text-align:left;padding:4px 10px;font-size:var(--fs-2);line-height:1.3;overflow:hidden;box-shadow:var(--sh1);transition:transform .18s cubic-bezier(.3,.7,.2,1),box-shadow .18s;animation:c3-swap .5s cubic-bezier(.2,.7,.2,1) backwards}
277
+ .c3 .vday .vb small{display:block;font:var(--fs-1) var(--mono);opacity:.88}
278
+ .c3 .vday .vb.hot{background:var(--destructive)}
279
+ @media (hover:hover){
280
+ .c3 .vday .vb:hover{transform:translateX(3px);box-shadow:var(--sh2)}
281
+ }
282
+ .c3 .vday .vf{position:absolute;left:44px;right:0;border-radius:8px;background:repeating-linear-gradient(135deg,transparent 0 6px,color-mix(in oklab,var(--muted) 90%,transparent) 6px 8px);display:grid;place-items:center;font:var(--fs-1) var(--mono);color:var(--muted-foreground)}
283
+ .c3 .vday .vnow{position:absolute;left:36px;right:0;height:0;border-top:2px solid var(--foreground);z-index:3}
284
+ .c3 .vday .vnow::before,.c3 .vday .vnow::after{content:"";position:absolute;left:-4px;top:-5px;width:8px;height:8px;border-radius:50%;background:var(--foreground)}
285
+ .c3 .vday .vnow::after{animation:c3-ping 1.8s ease-out infinite}
286
+ .c3 .vday .vdl{position:absolute;left:44px;right:0;height:0;border-top:2px solid var(--destructive);z-index:2}
287
+ .c3 .vday .vdl span{position:absolute;right:0;top:-18px;font:500 var(--fs-1) var(--mono);color:var(--destructive)}
288
+ .c3 .vday .vsc{position:absolute;left:36px;right:0;height:0;border-top:1px solid color-mix(in oklab,var(--foreground) 45%,transparent);pointer-events:none;opacity:0;transition:opacity .15s;z-index:5}
289
+ .c3 .vday .vsc span{position:absolute;right:0;top:-19px;background:var(--foreground);color:var(--background);font:var(--fs-1) var(--mono);padding:1px 7px;border-radius:5px;white-space:nowrap}
290
+ .c3 .lbar{display:flex;gap:2px;height:10px;margin-top:6px}
291
+ .c3 .lbar i{display:block;height:100%;border-radius:5px;transform-origin:left;animation:c3-grow .9s cubic-bezier(.3,.6,.2,1) backwards}
292
+ .c3.noanim .vday .vb,.c3.noanim .lbar i{animation:none}
293
+ .c3 .deck{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:10px 10px 6px;margin:-10px -10px -2px;scrollbar-width:none;overscroll-behavior-x:contain}
294
+ .c3 .deck::-webkit-scrollbar{display:none}
295
+ .c3 .fc{flex:0 0 min(94%,700px);scroll-snap-align:start;min-height:244px;border-radius:16px;padding:16px 20px 14px;border:1px solid var(--border);background:var(--card);box-shadow:var(--sh1),var(--hi);position:relative;display:grid;align-content:space-between;gap:8px;transform:scale(.965);opacity:.72;transition:transform .4s cubic-bezier(.2,.7,.2,1),opacity .4s,box-shadow .25s;cursor:pointer;outline:none}
296
+ .c3 .fc.on{transform:none;opacity:1;box-shadow:var(--sh2),var(--hi)}
297
+ .c3 .fc:focus-visible{box-shadow:0 0 0 2px var(--ring),var(--sh2)}
298
+ @media (hover:hover){
299
+ .c3 .fc.on:hover{transform:translateY(-2px);box-shadow:var(--sh3),var(--hi)}
300
+ }
301
+ .c3 .fc.k-decision{background:linear-gradient(125deg,var(--accw),transparent 58%),var(--card);border-color:color-mix(in oklab,var(--acc) 30%,var(--border))}
302
+ .c3 .fc.k-decision.ok{background:linear-gradient(125deg,color-mix(in oklab,var(--success) 14%,transparent),transparent 58%),var(--card);border-color:color-mix(in oklab,var(--success) 30%,var(--border))}
303
+ .c3 .fc h2{margin:6px 0 0;font-size:var(--fs-5);line-height:1.3;font-weight:600;text-wrap:balance}
304
+ .c3 .fc .go{position:absolute;right:16px;bottom:12px;font-size:var(--fs-1);color:var(--muted-foreground);display:flex;gap:2px;align-items:center;opacity:0;transform:translateX(-4px);transition:opacity .2s,transform .2s}
305
+ @media (hover:hover){
306
+ .c3 .fc.on:hover .go{opacity:1;transform:none}
307
+ }
308
+ .c3 .dk{display:flex;gap:6px;justify-content:center;align-items:center}
309
+ .c3 .dkd{width:7px;height:7px;border-radius:4px;border:0;background:var(--ring);padding:0;opacity:.5;transition:width .35s cubic-bezier(.3,.7,.2,1),background .3s,opacity .3s}
310
+ .c3 .dkd[aria-current="true"]{width:26px;background:var(--acc);opacity:1}
311
+ .c3 .brief .nrow,.c3 .brief .drow{position:relative;touch-action:pan-y;grid-template-columns:auto minmax(0,1fr) auto;cursor:pointer}
312
+ .c3 .brief .nrow{grid-template-columns:auto minmax(0,1fr)}
313
+ .c3 .brief .qa{position:absolute;right:4px;top:6px;display:flex;gap:6px;padding:4px 4px 4px 26px;background:linear-gradient(90deg,transparent,color-mix(in oklab,var(--card) 96%,transparent) 26%);opacity:0;transform:translateX(8px);transition:opacity .18s,transform .18s;pointer-events:none;z-index:2}
314
+ .c3 .brief .nrow:hover .qa,.c3 .brief .nrow:focus-within .qa,.c3 .brief .nrow:focus .qa,.c3 .brief .drow:hover .qa,.c3 .brief .drow:focus .qa,.c3 .brief .hrow:hover .qa{opacity:1;transform:none;pointer-events:auto}
315
+ @media (hover:none){
316
+ .c3 .brief .qa{position:static;opacity:1;transform:none;pointer-events:auto;background:none;grid-column:2;padding:0}
317
+ }
318
+ .c3 .brief .nrow:focus-visible,.c3 .brief .drow:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}
319
+ .c3 .brief .nrow.swr{background:color-mix(in oklab,var(--success) 16%,transparent)}
320
+ .c3 .brief .nrow.swl{background:color-mix(in oklab,var(--warning) 16%,transparent)}
321
+ .c3 .rowbtn{display:flex;width:100%;justify-content:space-between;align-items:center;border:0;background:transparent;padding:12px 0;text-align:left}
322
+ .c3 .hrow.undone .nb{text-decoration:line-through;color:var(--muted-foreground)}
323
+ .c3 .dotb{border:0;background:transparent;padding:3px;display:inline-flex}
324
+ .c3 .dotb .dotc{width:10px;height:10px}
325
+ .c3 .dotp{width:10px;height:10px;border-radius:50%;border:1.5px dashed var(--ring);display:inline-block;margin:3px}
326
+ .c3 .yc{display:grid;place-items:center;height:26px;border-radius:6px;font:500 var(--fs-1) var(--mono)}
327
+ .c3 .yc.c1{background:var(--acc);color:var(--on-accent)}
328
+ .c3 .yc.c2{background:var(--accw);color:var(--acc)}
329
+ .c3 .yc.c3{border:1px solid var(--ring);color:var(--muted-foreground)}
330
+ .c3 .yc.c4{border:1px dashed var(--ring);color:var(--muted-foreground)}
331
+ .c3 .deck{align-items:flex-start}
332
+ .c3 .fc{--tc:var(--acc);will-change:transform}
333
+ .c3 .fc[data-tag]{background:linear-gradient(125deg,color-mix(in oklab,var(--tc) 11%,transparent),transparent 58%),var(--card);border-color:color-mix(in oklab,var(--tc) 26%,var(--border))}
334
+ .c3 .fc.on{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}
335
+ @media (hover:hover){
336
+ .c3 .fc.on:hover{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(-2px);transition:transform .12s ease-out,opacity .4s,box-shadow .25s}
337
+ }
338
+ .c3 .fc::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(260px 170px at var(--mx,50%) var(--my,0%),color-mix(in oklab,var(--foreground) 7%,transparent),transparent 70%);opacity:0;transition:opacity .25s}
339
+ .c3 .fc.on:hover::after{opacity:1}
340
+ .c3 .fc .ff{display:grid;gap:8px;align-content:space-between;min-height:212px}
341
+ .c3 .fc .fb{display:none}
342
+ .c3 .fc.back .ff{display:none}
343
+ .c3 .fc.back .fb{display:grid;gap:12px}
344
+ .c3 .fc.back{min-height:0;cursor:default;align-content:start}
345
+ .c3 .fc.fl-out{animation:c3-flout .17s ease-in forwards}
346
+ .c3 .fc.fl-in{animation:c3-flin .3s cubic-bezier(.2,.8,.2,1)}
347
+ @keyframes c3-flout{to{transform:perspective(900px) rotateY(88deg);opacity:.6}}
348
+ @keyframes c3-flin{from{transform:perspective(900px) rotateY(-88deg);opacity:.6}}
349
+ .c3 .fc[data-tag=critical].on:not(.back):not(.ok)::before{content:"";position:absolute;inset:-1px;border-radius:inherit;border:1px solid var(--tc);pointer-events:none;animation:c3-cpulse 3s ease-out infinite}
350
+ @keyframes c3-cpulse{0%{opacity:.55;transform:scale(1)}100%{opacity:0;transform:scale(1.02)}}
351
+ .c3 .tg{display:inline-flex;gap:5px;align-items:center;font:500 var(--fs-1) var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:2px 9px 2px 7px;border-radius:999px;color:var(--tc);background:color-mix(in oklab,var(--tc) 13%,transparent)}
352
+ .c3 .tg.f{background:var(--tc);color:var(--background)}
353
+ .c3 .tg .ic{width:14px;height:14px}
354
+ .c3 .fc .flipg{position:absolute;right:16px;top:14px;color:var(--muted-foreground);opacity:.35;transition:opacity .2s,transform .4s}
355
+ @media (hover:hover){
356
+ .c3 .fc.on:hover .flipg{opacity:.9;transform:rotate(-90deg)}
357
+ }
358
+ .c3 .fc.back .flipg{display:none}
359
+ .c3 .rsv{position:absolute;right:14px;top:12px;display:flex;gap:5px;align-items:center;font:500 var(--fs-1) var(--mono);color:var(--success)}
360
+ .c3 .fh{display:flex;justify-content:space-between;align-items:center;gap:10px;cursor:pointer}
361
+ .c3 .fh .why2{font-size:var(--fs-2);color:var(--muted-foreground);display:flex;gap:5px;align-items:center}
362
+ .c3 .case{display:grid;gap:10px;cursor:default}
363
+ .c3 .case .sit{margin:0;font-size:var(--fs-3);line-height:1.45;font-weight:500;text-wrap:pretty}
364
+ .c3 .chgl{list-style:none;margin:0;padding:0;display:grid;gap:6px}
365
+ .c3 .chgl li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;font-size:var(--fs-3)}
366
+ .c3 .chgl li>.ic{color:var(--muted-foreground)}
367
+ .c3 .chgl li.ok>.ic{color:var(--success)}
368
+ .c3 .chgl li.warn>.ic{color:var(--warning)}
369
+ .c3 .chgl li.bad>.ic{color:var(--destructive)}
370
+ .c3 .chgl .tag{justify-self:end}
371
+ .c3 .opts{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));align-items:stretch}
372
+ .c3 .opt{--tc:var(--acc);text-align:left;border:1px solid var(--border);background:var(--card);border-radius:12px;padding:10px 12px;display:grid;gap:7px;align-content:start;opacity:.74;transition:transform .2s,box-shadow .2s,opacity .2s,border-color .2s;position:relative}
373
+ .c3 .opt.rec{border-color:color-mix(in oklab,var(--tc) 55%,var(--border));box-shadow:var(--sh2),0 0 0 3px color-mix(in oklab,var(--tc) 10%,transparent);opacity:1;background:linear-gradient(160deg,color-mix(in oklab,var(--tc) 9%,transparent),transparent 60%),var(--card)}
374
+ .c3 .opt[aria-pressed=true]{opacity:1;border-color:var(--tc);outline:2px solid color-mix(in oklab,var(--tc) 38%,transparent);outline-offset:1px}
375
+ .c3 .opt:not(.rec)[aria-pressed=false]{filter:saturate(.7)}
376
+ @media (hover:hover){
377
+ .c3 .opt:hover{transform:translateY(-2px);opacity:1}
378
+ }
379
+ .c3 .opt .rk{display:inline-flex;gap:4px;align-items:center;font:500 var(--fs-1) var(--mono);color:var(--tc)}
380
+ .c3 .opt .rk:empty{display:none}
381
+ .c3 .opt .rk,.c3 .opt b{padding-right:24px}
382
+ .c3 .opt b{font-size:var(--fs-3);font-weight:600;line-height:1.3}
383
+ .c3 .opt .fx{display:grid;gap:3px;font-size:var(--fs-2);color:var(--muted-foreground)}
384
+ .c3 .opt .fx span{display:flex;gap:6px;align-items:center}
385
+ .c3 .opt .fx .ok{color:var(--success)}
386
+ .c3 .opt .fx .warn{color:var(--warning)}
387
+ .c3 .opt .fx .bad{color:var(--destructive)}
388
+ .c3 .opt .pk{position:absolute;right:10px;top:10px;width:16px;height:16px;border-radius:50%;border:1.5px solid var(--ring);display:grid;place-items:center;color:var(--background)}
389
+ .c3 .opt[aria-pressed=true] .pk{background:var(--tc);border-color:var(--tc)}
390
+ .c3 .opt .pk .ic{width:11px;height:11px;stroke-width:3;opacity:0}
391
+ .c3 .opt[aria-pressed=true] .pk .ic{opacity:1}
392
+ .c3 .conf{height:3px;border-radius:2px;background:var(--muted);overflow:hidden}
393
+ .c3 .conf i{display:block;height:100%;background:var(--tc);transform-origin:left;animation:c3-grow .8s backwards}
394
+ .c3 .slt{--p:0;position:relative;height:44px;border-radius:22px;background:var(--muted);border:1px solid var(--border);overflow:hidden;display:flex;align-items:center;justify-content:center;user-select:none;touch-action:none}
395
+ .c3 .slt::before{content:"";position:absolute;left:0;top:0;bottom:0;width:calc(var(--p)*100%);background:color-mix(in oklab,var(--tc) 30%,transparent)}
396
+ .c3 .slt .lb{position:relative;font:500 var(--fs-2) var(--mono);letter-spacing:.04em;opacity:calc(1 - var(--p)*1.5);background:linear-gradient(90deg,var(--muted-foreground) 38%,var(--foreground) 50%,var(--muted-foreground) 62%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:c3-shim 2.6s linear infinite}
397
+ @keyframes c3-shim{from{background-position:120% 0}to{background-position:-120% 0}}
398
+ .c3 .slt .th{position:absolute;left:3px;top:3px;width:36px;height:36px;border-radius:50%;border:0;background:var(--tc);color:var(--background);display:grid;place-items:center;box-shadow:var(--sh2);cursor:grab;transition:transform .3s cubic-bezier(.3,1.4,.5,1);animation:c3-thint 4.5s ease-in-out 1.2s infinite;touch-action:none}
399
+ .c3 .slt .th:active{cursor:grabbing;animation:none}
400
+ .c3 .slt .th.nd{animation:c3-nudge .8s}
401
+ @keyframes c3-thint{0%,84%,100%{transform:none}92%{transform:translateX(12px)}}
402
+ @keyframes c3-nudge{30%{transform:translateX(18px)}60%{transform:translateX(4px)}}
403
+ .c3 .slt.alt{--tc:var(--muted-foreground)}
404
+ .c3 .cft{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;font-size:var(--fs-2);color:var(--muted-foreground)}
405
+ .c3 .cft span{display:inline-flex;gap:5px;align-items:center}
406
+ .c3 .cft .cm{display:inline-flex;gap:6px;align-items:center}
407
+ .c3 .cft .cm .conf{width:56px}
408
+ .c3 .qd{border-left:2px solid var(--ring);padding:2px 0 2px 10px;font-size:var(--fs-3);white-space:pre-wrap;margin:0}
409
+ .c3 .fun{display:grid;gap:4px}
410
+ .c3 .fun div{display:grid;grid-template-columns:62px 1fr 34px;gap:8px;align-items:center;font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
411
+ .c3 .fun i{display:block;height:8px;border-radius:4px;background:var(--ring);transform-origin:left;animation:c3-grow .7s backwards}
412
+ .c3 .fun .hot i{background:var(--destructive)}
413
+ .c3 .fun .hot{color:var(--destructive)}
414
+ .c3 .brief .nrow .nb,.c3 .brief .drow .nb{padding-right:52px}
415
+ .c3 .sg{position:absolute;right:30px;top:12px;display:flex;gap:7px;align-items:center;pointer-events:none}
416
+ .c3 .nrow .sg{right:8px}
417
+ .c3 .sg .g{display:inline-flex;opacity:.2;transition:opacity .2s}
418
+ .c3 .sg .g .ic{width:15px;height:15px}
419
+ .c3 .sg .g.y{opacity:.95;color:var(--acc)}
420
+ .c3 .sg .g.y.l{animation:c3-sgl 3.2s ease-in-out infinite}
421
+ .c3 .sg .g.y.r{animation:c3-sgr 3.2s ease-in-out infinite}
422
+ @keyframes c3-sgl{0%,70%,100%{transform:none}82%{transform:translateX(-3px)}}
423
+ @keyframes c3-sgr{0%,70%,100%{transform:none}82%{transform:translateX(3px)}}
424
+ @media (hover:hover){
425
+ .c3 .nrow:hover .sg .g,.c3 .drow:hover .sg .g{opacity:.55}
426
+ .c3 .nrow:hover .sg .g.y,.c3 .drow:hover .sg .g.y{opacity:1}
427
+ }
428
+ .c3 .brief .nrow>*:not(.rv):not(.xp):not(.sg),.c3 .brief .drow>*:not(.rv):not(.xp):not(.sg){transform:translateX(calc(var(--dx,0px)*.55))}
429
+ .c3 .brief .nrow.dr,.c3 .brief .drow.dr{transition:none;cursor:grabbing}
430
+ .c3 .rv{position:absolute;top:50%;translate:0 -50%;opacity:var(--d,0);pointer-events:none}
431
+ .c3 .rv.l{left:10px;color:var(--warning)}
432
+ .c3 .rv.r{right:10px;color:var(--success)}
433
+ .c3 .brief .nrow.swr,.c3 .brief .drow.swr{background:color-mix(in oklab,var(--success) 15%,transparent)}
434
+ .c3 .brief .nrow.swl,.c3 .brief .drow.swl{background:color-mix(in oklab,var(--warning) 15%,transparent)}
435
+ .c3 .stance{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:0 2px 8px}
436
+ .c3 .stance>div:nth-child(2){flex:1;min-width:0;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
437
+ .c3 .stance b{font-size:var(--fs-3)}
438
+ .c3 .stance .dim{font-size:var(--fs-3)}
439
+ .c3 .dp button{padding:4px 8px}
440
+ .c3 .lens{display:flex;align-items:center;gap:6px;max-width:100%}
441
+ .c3 .lens .seg{overflow-x:auto;min-width:0}
442
+ .c3 .lh{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:2px 0 6px}
443
+ .c3 .lh b{font-size:var(--fs-3);line-height:1.3;display:block;text-wrap:balance}
444
+ .c3 .lh .dim{font-size:var(--fs-2);line-height:1.35}
445
+ .c3 .rpane.zi{animation:c3-zin .38s cubic-bezier(.2,.8,.2,1)}
446
+ .c3 .rpane.zo{animation:c3-zout .38s cubic-bezier(.2,.8,.2,1)}
447
+ @keyframes c3-zin{from{opacity:0;transform:scale(1.07)}}
448
+ @keyframes c3-zout{from{opacity:0;transform:scale(.93)}}
449
+ .c3 .rdet{display:grid;gap:6px;border:1px solid var(--border);border-radius:12px;padding:10px 12px;background:var(--card);box-shadow:var(--sh1);margin-top:8px;animation:c3-fadein .25s}
450
+ .c3 .rdet .rr{display:flex;gap:8px;align-items:flex-start;font-size:var(--fs-3)}
451
+ .c3 .rdet .rr .ic{margin-top:2px;color:var(--muted-foreground)}
452
+ .c3 .vday .vb.rt{background:var(--muted);color:var(--muted-foreground);box-shadow:none}
453
+ .c3 .vday .vb.sel{outline:2px solid var(--foreground);outline-offset:1px}
454
+ .c3 .brief .nrow>*:not(.rv):not(.xp):not(.sg),.c3 .brief .drow>*:not(.rv):not(.xp):not(.sg){transition:transform .28s cubic-bezier(.3,1.3,.5,1)}
455
+ .c3 .brief .nrow.dr>*,.c3 .brief .drow.dr>*{transition:none}
456
+ .c3 .brief .dr{user-select:none}
457
+ .c3 .deck{scroll-padding-inline:10px;-webkit-mask-image:linear-gradient(90deg,var(--mask) calc(100% - 22px),transparent);mask-image:linear-gradient(90deg,var(--mask) calc(100% - 22px),transparent)}
458
+ .c3 .brief .list{margin-inline:-8px}
459
+ .c3 .brief .nrow,.c3 .brief .drow{padding-inline:8px}
460
+ .c3 .brief .sect{padding-bottom:10px}
461
+ .c3 .stance{padding:0 2px 10px}
462
+ .c3 .ib{position:relative}
463
+ @keyframes c3-bdn{from{transform:translateY(-70px);opacity:0}}
464
+ .c3.ph .grab{display:block}
465
+ @keyframes c3-slideup{from{transform:translateY(60px);opacity:0}}
466
+ @keyframes c3-eqb{0%,100%{height:4px}50%{height:15px}}
467
+ .c3 .sbb::before{display:none}
468
+ .c3.ph .drow>.acts:has(.chev){display:none}
469
+ .c3 .tick{overflow:hidden;border:1px solid var(--border);border-radius:8px;background:var(--card);padding:7px 0;box-shadow:var(--sh1);cursor:pointer;-webkit-mask-image:linear-gradient(90deg,transparent,var(--mask) 14px,var(--mask) calc(100% - 14px),transparent);mask-image:linear-gradient(90deg,transparent,var(--mask) 14px,var(--mask) calc(100% - 14px),transparent)}
470
+ .c3 .tkt{display:inline-flex;white-space:nowrap;animation:c3-tk 38s linear infinite;will-change:transform}
471
+ .c3 .tick:active .tkt,.c3 .tick:hover .tkt{animation-play-state:paused}
472
+ @keyframes c3-tk{to{transform:translateX(-50%)}}
473
+ .c3 .tki{display:inline-flex;gap:6px;align-items:center;padding-right:30px;font-size:var(--fs-3)}
474
+ .c3 .tki b{font:500 var(--fs-1) var(--mono);letter-spacing:.06em;text-transform:uppercase}
475
+ .c3.ph .lens .seg button{padding:4px 7px}
476
+ .c3 .bs .sb .ribbon{width:100%}
477
+ .c3 .calbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
478
+ .c3 .calbody{display:grid;gap:12px;min-width:0}
479
+ .c3 .calbody.zi{animation:c3-zin .38s cubic-bezier(.2,.8,.2,1)}
480
+ .c3 .calbody.zo{animation:c3-zout .38s cubic-bezier(.2,.8,.2,1)}
481
+ .c3 .calbody.sn{animation:c3-slnext .3s cubic-bezier(.2,.8,.2,1)}
482
+ .c3 .calbody.sp{animation:c3-slprev .3s cubic-bezier(.2,.8,.2,1)}
483
+ @keyframes c3-slnext{from{opacity:0;transform:translateX(28px)}}
484
+ @keyframes c3-slprev{from{opacity:0;transform:translateX(-28px)}}
485
+ .c3 .fc.solo{flex:none;width:100%;scroll-snap-align:none;opacity:1}
486
+ .c3 .fc.solo .ff{min-height:0;gap:14px}
487
+ .c3 .fc.solo .fcm{align-items:flex-start}
488
+ .c3 .stg{display:flex;gap:6px}
489
+ .c3 .sgb{border:1px solid var(--border);background:var(--card);border-radius:10px;padding:4px 8px;display:flex;gap:6px;align-items:center;font:500 var(--fs-2) var(--mono);color:var(--muted-foreground);transition:background .2s,border-color .2s}
490
+ .c3 .sgb svg.ic{width:16px;height:16px}
491
+ .c3 .sgb[aria-pressed="true"]{background:var(--accw);border-color:var(--acc);color:var(--foreground)}
492
+ .c3 .vday .vb.past{opacity:.45}
493
+ .c3 .vday .vb.skip{background:repeating-linear-gradient(135deg,var(--muted) 0 6px,transparent 6px 12px);color:var(--muted-foreground);text-decoration:line-through;box-shadow:none;outline:1px dashed var(--ring)}
494
+ .c3 .cmain{display:flex;flex-direction:column;gap:8px;min-height:0}
495
+ .c3 .pdots{display:flex;gap:6px;flex-wrap:wrap}
496
+ .c3 .pdots i{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;border:1px dashed var(--ring);color:var(--muted-foreground)}
497
+ .c3 .pdots i.d{border:0;background:color-mix(in oklab,var(--success) 16%,transparent);color:var(--success)}
498
+ .c3 .pdots .ic{width:14px;height:14px}
499
+ .c3 .dstrip{border:1px solid var(--border);border-radius:12px;background:var(--card);padding:6px 8px 2px;box-shadow:var(--sh1)}
500
+ .c3 .dstrip .hit{fill:transparent;cursor:pointer}
501
+ .c3 .card{padding:var(--sp-4);gap:var(--sp-3)}
502
+ .c3 .fc{padding:var(--sp-4)}
503
+ .c3 .brief .sect{padding:var(--sp-1) var(--sp-4) var(--sp-3)}
504
+ .c3 .brief .sect .sh2{padding:var(--sp-3) 0 var(--sp-2)}
505
+ .c3 .brief .list{margin-inline:calc(var(--sp-2)*-1)}
506
+ .c3 .brief .nrow,.c3 .brief .drow{padding:var(--sp-3) var(--sp-2)}
507
+ .c3 .brief .sect .list{margin-top:var(--sp-1)}
508
+ .c3 .bcol,.c3 .bcols{gap:var(--sp-4)}
509
+ .c3 .calwrap{display:grid;gap:var(--sp-4)}
510
+ .c3 .calbar{margin:0}
511
+ .c3 .calbody{gap:var(--sp-4)}
512
+ .c3 .lh,.c3 .stance{padding:0}
513
+ .c3 .case{gap:var(--sp-3)}
514
+ .c3 .chgl{gap:var(--sp-2)}
515
+ .c3 .opts{gap:var(--sp-3)}
516
+ .c3 .rdet{padding:var(--sp-3);margin-top:var(--sp-2)}
517
+ .c3.ph .brief .list{margin-inline:calc(var(--sp-2)*-1)}
518
+ .c3 .tdy{display:inline-flex;gap:6px;align-items:center;font:500 var(--fs-2) var(--mono);border:1px solid var(--border);background:var(--muted);color:var(--muted-foreground);border-radius:999px;padding:4px 12px;min-height:32px}
519
+ .c3 .tdy.on{background:var(--acc);border-color:var(--acc);color:var(--on-accent);cursor:pointer;animation:c3-tdyin .4s cubic-bezier(.3,1.4,.5,1);box-shadow:var(--sh2)}
520
+ .c3 .tdy:not(.on){opacity:.7;cursor:default}
521
+ .c3 .tdy .ic{width:14px;height:14px}
522
+ @keyframes c3-tdyin{from{transform:scale(.85);opacity:0}}
523
+ .c3 .sfc{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:var(--sp-5);align-items:start}
524
+ .c3 .sfh{display:flex;gap:8px;align-items:center;font:500 var(--fs-2) var(--mono);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--sp-3)}
525
+ .c3 .sfr{display:flex;gap:var(--sp-3);align-items:center;margin-bottom:var(--sp-3)}
526
+ .c3 .stt{display:grid;justify-items:center;gap:0;padding:6px 2px;border-radius:10px;background:color-mix(in oklab,var(--c) 10%,transparent);color:var(--c)}
527
+ .c3 .stt b{font:600 var(--fs-4)/1.2 var(--mono)}
528
+ .c3 .stt i{font:500 var(--fs-1) var(--mono);font-style:normal;color:var(--muted-foreground);letter-spacing:.02em}
529
+ .c3 .fcl{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2);border:0;font:inherit;color:inherit}
530
+ .c3 .fli{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--border);border-radius:12px;background:var(--card);box-shadow:var(--sh1);cursor:pointer;transition:transform .15s,box-shadow .2s}
531
+ .c3 .fli>b{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font:600 var(--fs-1) var(--mono);background:color-mix(in oklab,var(--tc) 14%,transparent);color:var(--tc)}
532
+ .c3 .fli .ft{font-weight:600;line-height:1.3}
533
+ .c3 .fli .fw{font-size:var(--fs-2);color:var(--muted-foreground);margin-top:2px}
534
+ .c3 .fli .fm{display:flex;gap:var(--sp-3);flex-wrap:wrap;margin-top:6px;font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
535
+ .c3 .fli .fm span{display:inline-flex;gap:4px;align-items:center}
536
+ .c3 .fli .fm .rc{color:var(--acc)}
537
+ @media (hover:hover){
538
+ .c3 .fli:hover{transform:translateY(-2px);box-shadow:var(--sh2)}
539
+ }
540
+ .c3 .pg{width:100%;max-width:1100px;height:auto;display:block}
541
+ .c3 .chart.md{max-width:880px;margin-inline:auto}
542
+ .c3 .pg text{font:var(--fs-2) var(--mono);fill:var(--muted-foreground)}
543
+ .c3 .pg .t{fill:var(--foreground)}
544
+ .c3 .pgl{display:flex;gap:var(--sp-4);flex-wrap:wrap;font:var(--fs-1) var(--mono);color:var(--muted-foreground)}
545
+ .c3 .prow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--sp-3);align-items:center;padding:var(--sp-3) var(--sp-2);border-bottom:1px solid var(--border)}
546
+ .c3 .prow .ki{width:28px;height:28px}
547
+ .c3 .prow small{display:block;font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
548
+ .c3 .chip-s{display:inline-flex;gap:4px;align-items:center;font:500 var(--fs-2) var(--mono);color:var(--c)}
549
+ .c3 .dir{--tc:var(--warning)}
550
+ .c3 .dial{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:2px 0}
551
+ .c3 .dial span{display:grid;justify-items:center;gap:4px;font:500 var(--fs-1) var(--mono);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.06em}
552
+ .c3 .dial span i{display:block;width:100%;height:8px;border-radius:4px;background:var(--muted)}
553
+ .c3 .dial span.on{color:var(--foreground)}
554
+ .c3 .dial span.on i{background:var(--c);box-shadow:0 0 0 3px color-mix(in oklab,var(--c) 22%,transparent)}
555
+ .c3 .sevs{display:flex;gap:var(--sp-3);flex-wrap:wrap;font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
556
+ .c3 .sevs span{display:inline-flex;gap:4px;align-items:center}
557
+ .c3 .krg{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.6fr) auto;gap:var(--sp-3);align-items:center;padding:var(--sp-3) 0;border-bottom:1px solid var(--border)}
558
+ .c3 .krg:last-child{border-bottom:0}
559
+ .c3 .krg b{display:block;line-height:1.3}
560
+ .c3 .krg small{display:block;font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
561
+ .c3 .krt{position:relative;height:10px;border-radius:5px;background:var(--muted);margin:8px 0 10px}
562
+ .c3 .krt i{position:absolute;left:0;top:0;bottom:0;border-radius:5px;background:var(--c)}
563
+ .c3 .krt u{position:absolute;top:-4px;width:2px;height:18px;background:var(--foreground);text-decoration:none}
564
+ .c3 .krt s{position:absolute;top:-3px;width:14px;height:14px;margin-left:-7px;border-radius:50%;border:2px dashed var(--c);background:var(--card);text-decoration:none}
565
+ .c3 .krt em{position:absolute;top:14px;font:var(--fs-1) var(--mono);font-style:normal;color:var(--muted-foreground);transform:translateX(-50%);white-space:nowrap}
566
+ .c3 .sgl{display:grid;gap:0}
567
+ .c3 .sgr{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--sp-3);align-items:start;padding:var(--sp-3) var(--sp-2);border-bottom:1px solid var(--border);cursor:pointer;border-radius:8px;position:relative}
568
+ .c3 .sgr:last-child{border-bottom:0}
569
+ @media (hover:hover){
570
+ .c3 .sgr:hover{background:color-mix(in oklab,var(--muted) 60%,transparent)}
571
+ }
572
+ .c3 .sgr .ki{width:30px;height:30px}
573
+ .c3 .sgr .st1{font-weight:600;line-height:1.3}
574
+ .c3 .sgr .st2{font-size:var(--fs-2);color:var(--muted-foreground);margin-top:2px}
575
+ .c3 .sgr .st3{display:flex;gap:var(--sp-3);flex-wrap:wrap;margin-top:6px;font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
576
+ .c3 .sgr .st3 span{display:inline-flex;gap:4px;align-items:center}
577
+ .c3 .sgr .sv{font:500 var(--fs-1) var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--c)}
578
+ .c3 .sgr .xp{grid-column:1/-1}
579
+ .c3 .sgr .spk{width:64px;height:26px}
580
+ .c3 .calwrap .bcol.r{position:static;max-height:none;overflow:visible;padding:0;margin:0}
581
+ .c3 .cmain>section{flex:1;min-height:0;display:flex!important;flex-direction:column;gap:6px!important}
582
+ .c3 .cmain .fc{overflow-y:auto;scrollbar-width:none}
583
+ .c3 .fc .fcm{gap:var(--sp-3)}
584
+ .c3 .fc .chgl{margin:0}
585
+ .c3 .fc .fcl{margin:0}
586
+ .c3 .fc .stt-row{margin-top:2px}
587
+ .c3 .fc .pdots{margin-top:2px}
588
+ .c3 .fc .ff{grid-template-rows:auto minmax(0,1fr);align-content:stretch;gap:var(--sp-3)}
589
+ .c3 .cf{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);grid-template-areas:"t h" "f f";gap:var(--sp-3) var(--sp-5);align-items:center;align-content:space-between;height:100%}
590
+ .c3 .fc:not(.back){grid-template-rows:minmax(0,1fr)}
591
+ .c3 .cf .cfa{grid-area:t;min-width:0}
592
+ .c3 .cf .cfh{grid-area:h;min-width:0;display:grid;align-content:center;justify-items:end}
593
+ .c3 .cf h2{font-size:var(--fs-5);line-height:1.25;margin:0;text-wrap:balance}
594
+ .c3 .cf .cfs{color:var(--muted-foreground);font-size:var(--fs-3);margin-top:var(--sp-1);text-wrap:pretty}
595
+ .c3 .cf .cff{grid-area:f;display:flex;justify-content:space-between;align-items:center;gap:var(--sp-2) var(--sp-4);flex-wrap:wrap;border-top:1px solid color-mix(in oklab,var(--tc) 18%,var(--border));padding-top:var(--sp-3)}
596
+ .c3 .cf .cfx{display:flex;gap:6px var(--sp-4);flex-wrap:wrap;font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
597
+ .c3 .cf .cfx span{display:inline-flex;gap:5px;align-items:center}
598
+ .c3 .cf .cfr{display:inline-flex;gap:6px;align-items:center;color:var(--tc);font:500 var(--fs-2) var(--mono)}
599
+ .c3 .cf .cfr.n{color:var(--muted-foreground)}
600
+ .c3 .hero{width:100%;max-width:360px}
601
+ .c3 .hero svg{width:100%;height:auto;display:block}
602
+ .c3 .hero .hr svg,.c3 .hero .hg svg{width:auto;height:auto;flex:none}
603
+ .c3 .hero svg.ic{width:16px;height:16px;flex:none}
604
+ .c3 .hero svg.ic.sm{width:14px;height:14px}
605
+ .c3 .hero text{font:var(--fs-1) var(--mono);fill:var(--muted-foreground)}
606
+ .c3 .hero .t{fill:var(--foreground)}
607
+ .c3 .hn{display:grid;gap:2px}
608
+ .c3 .hn .a{display:flex;align-items:baseline;gap:6px}
609
+ .c3 .hn .a b{font:600 44px/1 var(--mono);letter-spacing:-.02em}
610
+ .c3 .hn .a span{font:500 var(--fs-4) var(--mono);color:var(--muted-foreground)}
611
+ .c3 .hn .d{font:500 var(--fs-2) var(--mono)}
612
+ .c3 .hr{display:flex;gap:var(--sp-4);align-items:center;justify-content:flex-end}
613
+ .c3 .hr .c{display:grid;gap:2px;min-width:0}
614
+ .c3 .hr .c b{font-size:var(--fs-4);line-height:1.2}
615
+ .c3 .hr .c span{font-size:var(--fs-2);color:var(--muted-foreground)}
616
+ .c3 .hrw{display:grid;gap:var(--sp-2)}
617
+ .c3 .hrr{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--sp-2);align-items:center;font-size:var(--fs-3);line-height:1.3}
618
+ .c3 .hrr .ic{color:var(--muted-foreground)}
619
+ .c3 .hrr.ok .ic,.c3 .hrr.ok i{color:var(--success)}
620
+ .c3 .hrr.warn .ic,.c3 .hrr.warn i{color:var(--warning)}
621
+ .c3 .hrr.bad .ic,.c3 .hrr.bad i{color:var(--destructive)}
622
+ .c3 .hrr i{font:500 var(--fs-1) var(--mono);font-style:normal;color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.04em}
623
+ .c3 .hbs{display:grid;gap:var(--sp-3)}
624
+ .c3 .hbr{display:grid;gap:4px}
625
+ .c3 .hbr .l{display:flex;justify-content:space-between;font-size:var(--fs-2);gap:8px}
626
+ .c3 .hbr .l i{font:var(--fs-2) var(--mono);font-style:normal;color:var(--muted-foreground)}
627
+ .c3 .hbr .tk{height:8px;border-radius:4px;background:var(--muted);overflow:hidden}
628
+ .c3 .hbr .tk u{display:block;height:100%;border-radius:4px;background:var(--c);text-decoration:none;transform-origin:left;animation:c3-grow .7s backwards}
629
+ .c3 .htl{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:var(--sp-2);width:100%}
630
+ .c3 .htl>div{display:grid;justify-items:center;gap:0;padding:10px 6px;border-radius:12px;background:color-mix(in oklab,var(--c) 10%,transparent);text-align:center}
631
+ .c3 .htl b{font:600 var(--fs-6)/1.1 var(--mono);color:var(--c)}
632
+ .c3 .htl span{font-size:var(--fs-2);color:var(--muted-foreground);line-height:1.3}
633
+ .c3 .hg{display:flex;gap:var(--sp-3);align-items:center;justify-content:flex-end;min-width:0}
634
+ .c3 .hg svg{width:64px;height:64px;flex:none}
635
+ .c3 .hg .ki{width:56px!important;height:56px!important;flex:none}
636
+ .c3 .hch{display:grid;gap:var(--sp-3);position:relative;padding-left:18px}
637
+ .c3 .hch::before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:repeating-linear-gradient(var(--ring) 0 4px,transparent 4px 8px)}
638
+ .c3 .hch>div{position:relative;font-size:var(--fs-2);line-height:1.25}
639
+ .c3 .hch{gap:var(--sp-2)}
640
+ .c3 .hch>div::before{content:"";position:absolute;left:-18px;top:3px;width:12px;height:12px;border-radius:50%;background:var(--c);box-shadow:0 0 0 3px var(--card)}
641
+ .c3 .hch>div{white-space:nowrap}
642
+ .c3 .hch b{font-size:var(--fs-2);margin-right:6px}
643
+ .c3 .hch span{font:var(--fs-2) var(--mono);color:var(--c)}
644
+ .c3 .cdeck{display:grid;gap:8px}
645
+ .c3 .fc{container-type:inline-size;container-name:card}
646
+ .c3 .cf{grid-template-areas:"t h" "f f"}
647
+ .c3 .cfk{display:none;gap:var(--sp-3);align-items:stretch}
648
+ .c3 .kp{display:grid;gap:0;padding:6px 12px;border-radius:12px;background:color-mix(in oklab,var(--c,var(--tc)) 10%,transparent);min-width:78px}
649
+ .c3 .kp b{font:600 var(--fs-5)/1.2 var(--mono);color:var(--c,var(--tc))}
650
+ .c3 .kp b span{text-transform:none;font:inherit;letter-spacing:0;color:inherit}
651
+ .c3 .kp span{font-size:var(--fs-1);color:var(--muted-foreground);letter-spacing:.03em;text-transform:uppercase;font-family:var(--mono)}
652
+ @container card (min-width:500px){
653
+ .c3 .fc .cf{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);grid-template-areas:"t h" "k h" "f f";grid-template-rows:auto minmax(0,1fr) auto;align-items:start}
654
+ .c3 .fc .cf .cfh{align-self:stretch;align-content:center}
655
+ .c3 .fc .cf .cfk{display:flex;align-self:end}
656
+ .c3 .fc .hero{max-width:430px}
657
+ .c3 .fc .hero svg{max-height:176px}
658
+ }
659
+ @container card (min-width:400px) and (max-width:499px){
660
+ .c3 .fc .cf{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"t h" "f f"}
661
+ .c3 .fc .cf .cfk{display:none}
662
+ }
663
+ @container card (max-width:399px){
664
+ .c3 .fc .cf{grid-template-columns:minmax(0,1fr);grid-template-areas:"h" "k" "t" "f";grid-template-rows:minmax(0,1fr) auto auto auto;gap:var(--sp-2);align-content:stretch}
665
+ .c3 .fc .cf .cfh{justify-items:center;align-self:center;min-height:92px}
666
+ .c3 .fc .cf .cfk{display:flex}
667
+ .c3 .fc .cf .kp{flex:1;min-width:0;padding:4px 8px;text-align:center}
668
+ .c3 .fc .cf .kp b{font-size:var(--fs-4)}
669
+ .c3 .fc .hero{max-width:none}
670
+ .c3 .fc .hero svg{max-height:132px}
671
+ .c3 .fc .cf h2{font-size:var(--fs-4)}
672
+ .c3 .fc .cf .cfs{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:var(--fs-2)}
673
+ .c3 .fc .cf .cff{padding-top:var(--sp-2);gap:var(--sp-1) var(--sp-3)}
674
+ .c3 .fc .cf .cfx span:nth-child(n+2){display:none}
675
+ .c3 .fc .hn .a b{font-size:40px}
676
+ .c3 .fc .hg .hch{display:none}
677
+ .c3 .fc .hg,.c3 .fc .hr{justify-content:center}
678
+ .c3 .fc .hbs{gap:var(--sp-2)}
679
+ .c3 .fc .htl b{font-size:var(--fs-5)}
680
+ .c3 .fc .htl>div{padding:6px 4px}
681
+ .c3 .fc .hrw .hrr:nth-child(n+4){display:none}
682
+ }
683
+ .c3 .fc .hero .draw{animation:none}
684
+ .c3 .fc.on .hero .draw{animation:c3-draw 1s ease-out backwards}
685
+ .c3 .fc.on .hero .rg{animation:c3-ringin 1s ease-out backwards}
686
+ .c3 .fc.on .hbr u{animation:c3-grow .8s backwards}
687
+ .c3 .fc.on .htl>div{animation:c3-popin .45s cubic-bezier(.3,1.4,.5,1) backwards}
688
+ .c3 .fc.on .htl>div:nth-child(2){animation-delay:.08s}
689
+ .c3 .fc.on .htl>div:nth-child(3){animation-delay:.16s}
690
+ .c3 .fc.on .htl>div:nth-child(4){animation-delay:.24s}
691
+ .c3 .fc.on .htl>div:nth-child(5){animation-delay:.32s}
692
+ .c3 .fc.on .hrr{animation:c3-fadein .4s backwards}
693
+ .c3 .fc.on .hrr:nth-child(2){animation-delay:.08s}
694
+ .c3 .fc.on .hrr:nth-child(3){animation-delay:.16s}
695
+ .c3 .fc.on .kp{animation:c3-fadein .5s backwards}
696
+ .c3 .fc.on .kp:nth-child(2){animation-delay:.1s}
697
+ .c3 .fc.on .kp:nth-child(3){animation-delay:.2s}
698
+ .c3 .hero rect[data-a],.c3 .hero g[data-a]{cursor:pointer;transition:filter .15s,opacity .15s}
699
+ .c3 .hero rect[data-a]:hover,.c3 .hero g[data-a]:hover{filter:brightness(1.12) saturate(1.2)}
700
+ .c3 .hrr[data-a]{cursor:pointer;border-radius:8px;transition:background .15s}
701
+ .c3 .hrr[data-a]:hover{background:color-mix(in oklab,var(--muted) 70%,transparent)}
702
+ .c3 .hbr{cursor:default;transition:transform .15s}
703
+ @media (hover:hover){
704
+ .c3 .hbr:hover{transform:translateX(2px)}
705
+ .c3 .hbr:hover u{filter:saturate(1.4)}
706
+ }
707
+ .c3 .hn svg{cursor:crosshair;touch-action:pan-y}
708
+ .c3 .hn .cur{opacity:0;transition:opacity .15s}
709
+ .c3 .hn svg:hover .cur{opacity:1}
710
+ .c3 .wrow .chips .jc{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
711
+ .c3 .fl2{display:flex;gap:var(--sp-4);flex-wrap:wrap;font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
712
+ .c3 .flow{display:grid;gap:var(--sp-2)}
713
+ .c3 .flow>div{display:grid;grid-template-columns:96px minmax(0,1fr) auto;gap:var(--sp-3);align-items:center;font-size:var(--fs-2)}
714
+ .c3 .flow .b{height:10px;border-radius:5px;background:var(--muted);overflow:hidden}
715
+ .c3 .flow .b i{display:block;height:100%;border-radius:5px;background:var(--c);transform-origin:left;animation:c3-grow .7s backwards}
716
+ .c3 .jobr{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-3);align-items:center;padding:var(--sp-2) 0;border-bottom:1px solid var(--border)}
717
+ .c3 .jobr:last-child{border-bottom:0}
718
+ .c3 .jobr b{display:block;line-height:1.3}
719
+ .c3 .jobr small{font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
720
+ @keyframes c3-fadein{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
721
+ @keyframes c3-slidein{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
722
+ @keyframes c3-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
723
+ @keyframes c3-popin{from{transform:scale(0)}to{transform:scale(1)}}
724
+ @keyframes c3-growy{from{transform:scaleY(0)}to{transform:scaleY(1)}}
725
+ @keyframes c3-pulse{0%,100%{opacity:1}50%{opacity:.35}}
726
+ @keyframes c3-ping{0%{transform:scale(.6);opacity:.7}100%{transform:scale(2.2);opacity:0}}
727
+ @keyframes c3-wave{0%,100%{height:6px}50%{height:28px}}
728
+ @media (prefers-reduced-motion: reduce){
729
+ .c3 *::before,.c3 *::after{animation:none!important;transition:none!important}
730
+ }
731
+ .c3 svg.pg .crit{font-weight:600}
732
+ @keyframes c3-recp{50%{opacity:.3}}
733
+ .c3.ph .recg .rt{display:none}
734
+ .c3 .c3add{display:grid;gap:var(--sp-2);margin-bottom:var(--sp-2)}
735
+ .c3 .c3add .form input[type=text]{border-radius:20px;padding:8px 14px;font-size:var(--fs-4)}
736
+ .c3 .c3add .chips2{min-height:22px}
737
+ .c3 .c3spin{display:inline-flex;animation:c3-c3spin 1.1s linear infinite}
738
+ @keyframes c3-c3spin{to{transform:rotate(360deg)}}
739
+ @media (prefers-reduced-motion:reduce){
740
+ .c3 .c3spin{animation:none}
741
+ }
742
+ .c3 .c3steps{display:grid;gap:var(--sp-2)}
743
+ .c3 .c3sh{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-2)}
744
+ .c3 .c3sh h4{margin:0;font:500 var(--fs-1) var(--mono);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.06em;display:flex;gap:6px;align-items:center}
745
+ .c3 .c3steps ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}
746
+ .c3 .c3steps li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--sp-2);align-items:start;font-size:var(--fs-3)}
747
+ .c3 .c3steps li .c3sg{color:var(--muted-foreground);padding-top:2px}
748
+ .c3 .c3steps li.ok .c3sg{color:var(--success)}
749
+ .c3 .c3steps li.warn .c3sg{color:var(--warning)}
750
+ .c3 .c3stt.dn{text-decoration:line-through;color:var(--muted-foreground)}
751
+ .c3 .c3res{display:block;font-size:var(--fs-2);margin-top:2px}
752
+ .c3 .c3sd{grid-column:1/-1;border-left:2px solid var(--border);padding-left:var(--sp-3)}
753
+ .c3 .c3jf{display:grid;gap:var(--sp-2)}
754
+ .c3 .c3jf label{display:grid;grid-template-columns:64px minmax(0,1fr);gap:var(--sp-2);align-items:center}
755
+ .c3 .c3jf input{width:100%}
756
+ .c3.ph .c3add{width:100%;margin:0}
757
+ .c3.ph .c3add .chips2:empty{display:none}
758
+ .c3 input[type=date],.c3 input[type=time]{font:inherit;font-size:var(--fs-3);padding:6px 8px;border:1px solid var(--border);background:var(--background);color:var(--foreground);min-width:0;border-radius:6px}
759
+ .c3 .nrow[data-ag] .c3strip:empty{display:none}
760
+ /* console3.css addition: the slide placeholder on a case file that cannot send yet (the mockup's slider always works). */
761
+ .c3 .slt[aria-disabled="true"]{opacity:.55}
762
+ .c3 .slt[aria-disabled="true"] .th{animation:none;cursor:not-allowed}
763
+ /* console3.css addition: a row's case file is drawn only while it is open; the mockup draws every case file. */
764
+ .c3 .xp:not(.open)>.xi{visibility:hidden}
765
+ /* console3.css addition: a pill that is not built yet reads as off. */
766
+ .c3 .pill:disabled{opacity:.5;cursor:not-allowed}
767
+ /* console3.css addition: the slide thumb is a real button; the mockup's has no disabled look. */
768
+ .c3 .slt .th:disabled{cursor:not-allowed}
769
+ /* console3.css addition: a card takes a vertical swipe (open or close the case file) without the page scrolling under it. The mockup sets this on the phone only (.ph1 .fc). */
770
+ .c3 .fc{touch-action:pan-x}
771
+
772
+ /* ====== R4b: the Initiatives lifecycle lens, Releases, Timeline, Reports, outbox, slide, document panel, new-initiative sheet, sessions and agent card. ======
773
+ * The generator that produced the rules above (see the header) dropped the classes these views draw. The rules below are
774
+ * the same generator run again over the mockup (console3.html lines 5 to 966) with only the shell dropped (stage, dock,
775
+ * sheet, palette, toast, banner, scrim, phone tray); the ones the three first views already had are not repeated. The
776
+ * header lines "left out: the Initiatives, Reports and Release classes" are superseded by this block. One deliberate change:
777
+ * the mockup's `.sn` (a timeline snapshot button) is scoped as `.sntrack .sn`, because `.calbody.sn` above is the Calendar's
778
+ * slide animation class and a bare `.sn` rule would restyle it. */
779
+ .c3 .mk{font:var(--fs-2) var(--mono);width:14px;text-align:center}
780
+ .c3 .mk.w{color:var(--success)}
781
+ .c3 .mk.n{color:var(--acc)}
782
+ .c3 .mk.b{color:var(--warning)}
783
+ .c3 .mk.w{animation:c3-pulse 1.6s infinite}
784
+ .c3 .hx{display:grid;gap:6px;padding:4px 0 8px 36px;font-size:var(--fs-3)}
785
+ .c3 .hx div{display:flex;gap:8px;align-items:flex-start}
786
+ .c3 .hx .ic{margin-top:2px;color:var(--muted-foreground)}
787
+ .c3 .lc{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
788
+ .c3 .lc>div{display:grid;justify-items:center;gap:4px;font:var(--fs-1) var(--mono);color:var(--muted-foreground);text-align:center}
789
+ .c3 .lc i{display:block;width:100%;height:8px;border-radius:4px;background:var(--muted)}
790
+ .c3 .lc>div.d i{background:var(--success)}
791
+ .c3 .lc>div.n i{background:var(--acc);box-shadow:0 0 0 3px var(--accw)}
792
+ .c3 .lc>div.n{color:var(--foreground)}
793
+ .c3 .lkrow{display:flex;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-1) 0 var(--sp-2)}
794
+ .c3 .dfi ins{background:color-mix(in oklab,var(--success) 22%,transparent);text-decoration:none;border-radius:3px}
795
+ .c3 .dfi del{background:color-mix(in oklab,var(--destructive) 18%,transparent);text-decoration:line-through;border-radius:3px}
796
+ .c3 .dsec{border-left:3px solid var(--border);padding:var(--sp-2) var(--sp-3);display:grid;gap:4px}
797
+ .c3 .dsec.warn{border-color:var(--warning);background:color-mix(in oklab,var(--warning) 7%,transparent);border-radius:0 8px 8px 0}
798
+ .c3 .dsec h4{margin:0;font:600 var(--fs-3) var(--sans,inherit)}
799
+ .c3 .dsec p,.c3 .dsec .dt{margin:0;font-size:var(--fs-3);line-height:1.5}
800
+ .c3 .dsec .dt[contenteditable=true]{outline:2px solid var(--acc);border-radius:6px;padding:4px 6px;background:var(--card)}
801
+ .c3 .dsec .mt{display:flex;gap:var(--sp-2);flex-wrap:wrap;font-size:var(--fs-1);color:var(--muted-foreground);font-family:var(--mono)}
802
+ .c3 .dpn{display:grid;gap:var(--sp-3)}
803
+ .c3 .dpn textarea,.c3 .dpn input,.c3 .wform input,.c3 .wform select{width:100%;font:inherit;font-size:var(--fs-3);padding:8px 10px;border:1px solid var(--ring);border-radius:8px;background:var(--card);color:var(--foreground);box-sizing:border-box}
804
+ .c3 .dpn textarea{min-height:72px;resize:vertical}
805
+ .c3 .hx{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}
806
+ .c3 .hx li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--sp-2);font-size:var(--fs-2);align-items:start}
807
+ .c3 .hx .w{color:var(--muted-foreground);font:var(--fs-1) var(--mono)}
808
+ .c3 .hx small{display:block;color:var(--muted-foreground)}
809
+ .c3 .sntrack{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:relative;margin-bottom:var(--sp-3)}
810
+ .c3 .sntrack::before{content:"";position:absolute;left:10%;right:10%;top:9px;height:2px;background:var(--border)}
811
+ .c3 .sntrack .sn{background:none;border:0;display:grid;justify-items:center;gap:2px;cursor:pointer;color:var(--foreground);padding:0}
812
+ .c3 .sntrack .sn i{width:14px;height:14px;border-radius:50%;background:var(--card);border:2px solid var(--ring);z-index:1;transition:transform .2s}
813
+ .c3 .sntrack .sn[data-past=true] i{border-color:var(--acc)}
814
+ .c3 .sntrack .sn[aria-pressed=true] i{background:var(--acc);transform:scale(1.35)}
815
+ .c3 .sntrack .sn b{font:500 var(--fs-1) var(--mono)}
816
+ .c3 .sntrack .sn span{font-size:var(--fs-1);color:var(--muted-foreground);text-align:center;line-height:1.2}
817
+ .c3 .snh{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2)}
818
+ .c3 .lc{grid-template-columns:repeat(9,minmax(0,1fr));gap:4px}
819
+ .c3 .c3rel{display:grid;gap:var(--sp-3)}
820
+ .c3 .c3dt{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap}
821
+ .c3 .c3dt>span:first-child{width:56px}
822
+ .c3 .c3ag{display:grid;gap:var(--sp-2)}
823
+ .c3 .c3ag:empty{display:none}
824
+ .c3 .c3res2{display:grid;gap:var(--sp-2)}
825
+ .c3 .c3strip{align-items:center}
826
+ .c3 .c3mv{align-items:center}
827
+ .c3 .c3res2 .tg,.c3 .c3ag .tg{justify-self:start;width:auto}
828
+ /* console3.css addition: a view that mounts where there is no .c3 root (the document rail, the outbox, the sessions panel, the sheet)
829
+ carries `c3 c3e`. c3e keeps a nested or embedded root from taking the page-level grid and container of `.c3` above. */
830
+ .c3.c3e{display:block;container-type:normal}
831
+ .c3.c3e>*+*{margin-top:var(--sp-3)}
832
+ /* console3.css addition: the slide as a bare control (outbox) has no .case or .fc to set --tc; slide-confirm.js sets it on the control itself. */
833
+ .c3 .slt.done{opacity:.7}
834
+ .c3 .slt-hint{font:var(--fs-2) var(--mono);color:var(--muted-foreground);min-height:16px;margin-top:var(--sp-1)}
835
+ /* console3.css addition: a row of the lifecycle lens that opens an initiative; the mockup's `.tt` is a span, here it is a button. */
836
+ .c3 .tt.btn{border:0;background:transparent;padding:0;text-align:left;font:inherit;color:inherit}
837
+ .c3 .nrow .tt.btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
838
+ /* console3.css addition: a card in a deck that opens a real record (the mockup's cards flip; these open the initiative). */
839
+ .c3 .fc.lnk{cursor:pointer}
840
+ /* console3.css addition: the swipe-reveal strips of a run row are drawn by the swipe gesture; the agent card keeps them quiet at rest. */
841
+ .c3 .c3ag .fold.w{display:grid;gap:6px}
842
+ /* console3.css addition: a gantt row that is on the critical path reads in the mockup's bold label (svg.pg .crit above); here its bar is outlined. */
843
+ .c3 svg.pg .critbar{stroke:var(--destructive);stroke-width:1.5;fill:none}
844
+ /* console3.css addition: a text control inside a case file row that is not in a .form (summary lines, the reply tray). */
845
+ .c3 .form.row{display:flex;gap:var(--sp-2);align-items:center}
846
+ .c3 .form.row input[type=text]{flex:1 1 140px}
847
+ /* console3.css addition: a select next to pills, in .chips2. */
848
+ .c3 .chips2 select{flex:0 1 auto}
849
+ /* ===== console3 wave E2b: the shell strip (ticker, bell, recording group), the banner, the popups and the phone tiles =====
850
+ * Lifted from console3.html: .nbdg, .banner, .scrim, .sheet.bs, .grab, .nli, .eq (lines 489 to 513), .tickrow, .tray, .tl (539 to 552),
851
+ * .recg, .recdot (916 to 924). Same generator rules as above (.c3 prefix, mockup variables to D38 tokens). Two differences: the mockup's
852
+ * tile class `.tl` is also its timeline class, so the tile is scoped as `.tray .tl`; and the shell strip, the sheet base rules (the
853
+ * mockup's lines 143 to 145, 180, 496 to 498) are added here because the three views never drew a sheet. */
854
+ .c3.c3shell{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-2);align-items:center;padding:6px var(--sp-3);border-bottom:1px solid var(--border);background:var(--background)}
855
+ .c3.c3shell[hidden]{display:none}
856
+ .c3 .shell-tick{min-width:0}
857
+ .c3 .shell-tools{display:inline-flex;gap:var(--sp-2);align-items:center}
858
+ .c3.c3shell.ph{grid-template-columns:minmax(0,1fr);padding:var(--sp-2) var(--sp-3)}
859
+ .c3 .tickrow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center}
860
+ .c3 .tki{display:inline-flex}
861
+ .c3 .tick.static{padding:7px 12px;-webkit-mask-image:none;mask-image:none}
862
+ .c3 .tick.static .tkt{animation:none;display:flex}
863
+ .c3 .nbdg{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;border-radius:8px;background:var(--destructive);color:var(--on-accent);font:600 var(--fs-1) var(--mono);display:grid;place-items:center;padding:0 4px;box-shadow:0 0 0 2px var(--background)}
864
+ .c3 .nbdg[hidden]{display:none}
865
+ .c3 .banner{position:fixed;top:12px;left:50%;translate:-50% 0;z-index:30;display:flex;gap:8px;align-items:center;max-width:min(430px,calc(100vw - 24px));padding:9px 14px;border-radius:14px;background:var(--foreground);color:var(--background);font-size:var(--fs-3);box-shadow:var(--sh3);cursor:pointer;border:0;text-align:left;animation:c3-bdn .5s cubic-bezier(.3,1.4,.5,1)}
866
+ .c3 .banner b{font:500 var(--fs-1) var(--mono);letter-spacing:.06em;text-transform:uppercase;opacity:.75}
867
+ .c3 .banner .bx{margin-left:var(--sp-2);background:none;border:0;color:inherit;cursor:pointer;opacity:.75;padding:0 2px}
868
+ .c3.c3pop{position:fixed;inset:0;z-index:60;pointer-events:none;container-type:normal}
869
+ .c3.c3pop>*{pointer-events:auto}
870
+ .c3 .scrim{position:fixed;inset:0;background:oklch(0 0 0 / 32%);z-index:19;animation:c3-fadein .2s}
871
+ .c3 .sheet{position:fixed;top:12px;right:12px;bottom:12px;width:340px;background:var(--card);border:1px solid var(--ring);border-radius:12px;box-shadow:0 12px 40px oklch(0 0 0 / 18%);z-index:20;display:grid;grid-template-rows:auto 1fr;animation:c3-slidein .22s ease-out}
872
+ .c3 .sheet .sb{padding:var(--sp-4);overflow:auto;display:grid;gap:var(--sp-3);align-content:start}
873
+ .c3 .sheet .sh2{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border)}
874
+ .c3 .sheet.bs{z-index:20}
875
+ .c3 .grab{display:none;width:36px;height:4px;border-radius:2px;background:var(--ring);margin:8px auto 0;opacity:.6}
876
+ .c3.ph .grab{display:block}
877
+ .c3.ph .sheet{top:auto;left:0;right:0;bottom:0;width:auto;max-height:78%;border-radius:16px 16px 0 0}
878
+ .c3.ph .sheet.bs{animation:c3-slideup .3s cubic-bezier(.2,.8,.2,1);max-height:84%}
879
+ .c3 .nli{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;text-align:left;border:0;background:transparent;padding:10px 4px;border-bottom:1px solid var(--border);border-radius:8px;color:inherit;font:inherit;cursor:pointer}
880
+ .c3 .nli .ki{width:30px;height:30px}
881
+ .c3 .nli .t{font-size:var(--fs-3);line-height:1.35}
882
+ .c3 .nli .w{font:var(--fs-1) var(--mono);color:var(--muted-foreground);text-align:right}
883
+ @media (hover:hover){.c3 .nli:hover{background:var(--muted)}}
884
+ .c3 .eq{display:inline-flex;gap:2px;align-items:flex-end;height:16px;color:var(--acc)}
885
+ .c3 .eq i{width:3px;background:currentColor;border-radius:2px;animation:c3-eqb .9s ease-in-out infinite}
886
+ .c3 .eq i:nth-child(2){animation-delay:.2s}.c3 .eq i:nth-child(3){animation-delay:.4s}
887
+ .c3 .tray{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
888
+ .c3 .tray .tl{border:1px solid var(--border);background:var(--card);border-radius:14px;padding:8px 2px 6px;display:grid;justify-items:center;gap:0;box-shadow:var(--sh1),var(--hi);position:relative;transition:transform .15s;color:inherit;font:inherit;cursor:pointer;min-height:64px}
889
+ .c3 .tray .tl:active{transform:scale(.96)}
890
+ .c3 .tray .tl .ic{color:var(--muted-foreground)}
891
+ .c3 .tray .tl .n{font:600 var(--fs-4)/1.2 var(--mono)}
892
+ .c3 .tray .tl .l{font-size:var(--fs-1);color:var(--muted-foreground)}
893
+ .c3 .tray .tl.hot::after{content:"";position:absolute;top:8px;right:16px;width:7px;height:7px;border-radius:50%;background:var(--destructive)}
894
+ .c3 .recg{display:inline-flex;align-items:stretch;border:1px solid color-mix(in oklch,var(--destructive) 55%,transparent);border-radius:8px;overflow:hidden;color:var(--destructive);background:color-mix(in oklch,var(--destructive) 7%,var(--card))}
895
+ .c3 .recg>*{display:inline-flex;align-items:center;gap:6px;padding:0 10px;height:32px;font:500 var(--fs-2) var(--mono);color:inherit}
896
+ .c3 .recg>*+*{border-left:1px solid color-mix(in oklch,var(--destructive) 35%,transparent)}
897
+ .c3 .recg button{border:0;background:none;cursor:pointer;color:inherit}
898
+ .c3 .recg button:hover{background:color-mix(in oklch,var(--destructive) 14%,transparent)}
899
+ .c3 .recg[hidden]{display:none}
900
+ .c3 .recdot{width:8px;height:8px;border-radius:50%;background:var(--destructive);animation:c3-recp 1.2s ease-in-out infinite}
901
+ .c3 .recdot.static,.c3 .recg.paused .recdot{animation:none}
902
+ .c3 .recg.paused .recdot{background:var(--muted-foreground)}
903
+ .c3 .recg.paused{color:var(--muted-foreground);border-color:var(--border)}
904
+ .c3 .recg .pmc-icon{width:14px;height:14px}
905
+ .fr-link .shell-recdot{position:absolute;top:3px;right:3px;width:8px;height:8px;border-radius:50%;background:var(--destructive);box-shadow:0 0 0 2px var(--background)}
906
+ .fr-link .shell-recdot[hidden]{display:none}
907
+ .c3.c3shell.ph{grid-template-columns:auto minmax(0,1fr) auto;align-items:center}
908
+ .c3.c3shell.ph .shell-tools{display:contents}
909
+ .c3.c3shell.ph [data-shell="bell"]{order:-2}
910
+ .c3.c3shell.ph .shell-tick{order:-1}
911
+ .c3.c3shell.ph .recg{order:1;grid-column:1/-1;justify-self:start}
912
+ .c3.c3shell.ph .tray{order:2;grid-column:1/-1}
913
+ .c3 .tray .tl .n[hidden]{display:none}
914
+
915
+ /* ── Phone tap targets ── every control is at least 44px on a phone (pm-r27, pm-frame-phone, pm-reports-phone). The mockup's
916
+ * 34px and 30px icon buttons and 23px to 26px segment and pill buttons grow here; the family row wraps rather than run off screen. */
917
+ @media (max-width: 760px) {
918
+ .c3 .ib, .c3 .ib.sm { width: 44px; height: 44px; }
919
+ .c3 .slt { height: 52px; border-radius: 26px; }
920
+ .c3 .slt .th { width: 44px; height: 44px; }
921
+ .c3 .seg { flex-wrap: wrap; }
922
+ .c3 .seg button, .c3 .pill { min-height: 44px; }
923
+ }
924
+
925
+ /* ===== console3 shell page (/c3.html, pm/c3-shell.js): the header, the tab bar, the three-column layout and the dock =====
926
+ * Lifted from console3.html (lines 39 to 60 .stage .shell .main .top .tools .tabs .ind, 156 to 172 .dock .dk-h .dk-p, 869 the
927
+ * narrow rule). Class names differ from the mockup's (`c3top`, `c3tabs`, `c3grid`, `c3main`, `c3dock`) because `.c3.ph .tabs` and
928
+ * `.c3.ph .dock` above hide the mockup's own names on a phone, and this page keeps its tabs there. Append-only. */
929
+ .c3.c3pg{overflow-x:clip;max-width:1412px;margin:0 auto;padding:16px 16px 24px;min-height:100vh}
930
+ .c3 .c3grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:start}
931
+ .c3 .c3main{min-width:0;display:grid;gap:14px;container-type:inline-size;align-content:start}
932
+ .c3 .c3top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
933
+ .c3 .c3top h1{margin:0;font-size:var(--fs-5);font-weight:600;display:flex;gap:8px;align-items:center}
934
+ .c3 .c3top .sub{font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
935
+ .c3 .c3top .tools{display:flex;gap:6px;align-items:center}
936
+ .c3 .c3top a.ib{text-decoration:none}
937
+ .c3 .c3top .ib .bdg{position:absolute;top:-6px;right:-6px;box-shadow:0 0 0 2px var(--background)}
938
+ .c3 .c3pg-bell{display:inline-flex;gap:6px;align-items:center}
939
+ .c3 .c3pg-menuwrap{position:relative;display:inline-flex}
940
+ .c3 .c3pg-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:25;min-width:200px;display:grid;gap:2px;padding:6px;background:var(--card);border:1px solid var(--ring);border-radius:10px;box-shadow:var(--sh3)}
941
+ .c3 .c3pg-mi{display:flex;gap:8px;align-items:center;width:100%;text-align:left;border:0;background:transparent;padding:8px 10px;border-radius:6px;color:var(--foreground);text-decoration:none;font:inherit;font-size:var(--fs-3);cursor:pointer}
942
+ .c3 .c3pg-mi:hover,.c3 .c3pg-mi:focus-visible{background:var(--muted)}
943
+ .c3 .c3pg-tick{display:contents}
944
+ .c3[data-tab="brief"] .c3pg-tick{display:none}
945
+ .c3 .c3tabs{position:relative;display:flex;gap:4px;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}
946
+ .c3 .c3tabs::-webkit-scrollbar{display:none}
947
+ .c3 .c3tabs button{border:0;background:transparent;padding:8px 12px;color:var(--muted-foreground);border-bottom:2px solid transparent;white-space:nowrap;display:flex;gap:8px;align-items:center;font-size:var(--fs-3);cursor:pointer}
948
+ .c3 .c3tabs button[aria-selected="true"]{color:var(--foreground);font-weight:500}
949
+ .c3 .c3tabs .ind{position:absolute;bottom:-1px;left:0;height:2px;background:var(--foreground);transition:transform .35s cubic-bezier(.3,.7,.2,1),width .35s cubic-bezier(.3,.7,.2,1);pointer-events:none;border-radius:2px}
950
+ .c3 .c3tabs .bdg{font:500 var(--fs-1) var(--mono);background:var(--acc);color:var(--on-accent);min-width:16px;height:16px;border-radius:8px;display:inline-grid;place-items:center;padding:0 4px}
951
+ .c3 .c3pg-pane{min-width:0}
952
+ .c3 .c3pg-pane[hidden]{display:none}
953
+ .c3 .c3pg-pane>.brief{display:block}
954
+ /* the Briefing's middle column draws the day timeline and the pulse; the gantt is the pulse here (it is the Calendar tab's to draw in full) */
955
+ .c3 .c3pg-midcal [data-cv="gantt"]{display:none}
956
+ .c3 .c3pg-midcal .calwrap{gap:var(--sp-3)}
957
+ .c3 .c3pg-initbody>[hidden]{display:none}
958
+ .c3 .c3dock{position:sticky;top:12px;width:330px;border:1px solid var(--border);background:var(--card);display:flex;flex-direction:column;max-height:calc(100vh - 24px);border-radius:10px;overflow:hidden}
959
+ .c3 .c3dock[hidden]{display:none}
960
+ .c3 .c3dock.rail{width:46px;align-items:center;padding-block:8px;gap:8px;overflow:visible}
961
+ .c3 .c3dock .dk-h{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border)}
962
+ .c3 .c3dock .dk-h select{flex:1;min-width:0;font:500 var(--fs-2) var(--mono);border:0;background:transparent;padding:4px;color:var(--foreground)}
963
+ .c3 .c3dock .dk-h a.ib{text-decoration:none}
964
+ .c3 .c3dock .dk-p{padding:10px;display:grid;gap:8px;overflow:auto;flex:1;align-content:start}
965
+ .c3 .c3dock .dk-p .card{box-shadow:none}
966
+ .c3 .c3dock .dk-f{padding:8px 10px;border-top:1px solid var(--border);display:flex;gap:6px}
967
+ .c3 .c3dock .dk-f a.pill{text-decoration:none;display:inline-flex;gap:6px;align-items:center}
968
+ @media (max-width:980px){.c3 .c3grid{grid-template-columns:minmax(0,1fr)}.c3 .c3dock{position:static;width:auto;max-height:none}}
969
+ @media (max-width:760px){
970
+ .c3.c3pg{padding:12px 12px 20px}
971
+ .c3 .c3tabs button{min-height:44px}
972
+ .c3 .c3pg-mi{min-height:44px}
973
+ .c3 .c3dock .dk-h select{min-height:44px}
974
+ .c3 .c3dock .dk-f a.pill{min-height:44px}
975
+ .c3 .tt.btn{min-height:44px}
976
+ .c3pg .seg button,.c3pg .pill{min-width:44px}
977
+ .c3pg input,.c3pg select,.c3pg textarea{min-height:44px}
978
+ .c3pg .tick{min-height:44px;display:flex;align-items:center}
979
+ .c3pg .vday .vb{min-height:44px}
980
+ .c3pg .dkd,.c3pg .dkd[aria-current="true"]{width:44px;height:44px;background:transparent;opacity:1;position:relative;border-radius:0}
981
+ .c3pg .dkd::before{content:"";position:absolute;left:50%;top:50%;translate:-50% -50%;width:7px;height:7px;border-radius:4px;background:var(--ring);opacity:.5;transition:width .35s cubic-bezier(.3,.7,.2,1),background .3s}
982
+ .c3pg .dkd[aria-current="true"]::before{width:26px;background:var(--acc);opacity:1}
983
+ }
984
+
985
+ /* ===== console3 fidelity pass (/c3.html): the dock's tree, the Briefing's middle column, the Work flow card ===== */
986
+ /* the dock tree: lifted from console3.html lines 157 to 168 (.dk-tree .br .bn .ss .sr .nm .mk), the .c3 prefix added */
987
+ .c3 .dk-tree{overflow:auto;padding:6px 8px;max-height:280px;border-bottom:1px solid var(--border);display:grid;gap:2px}
988
+ .c3 .br{display:grid;gap:2px}
989
+ .c3 .br>.bn{display:flex;gap:6px;align-items:center;font:var(--fs-2) var(--mono);color:var(--muted-foreground);padding:4px 4px 0;overflow-wrap:anywhere}
990
+ .c3 .br>.ss{margin-left:12px;border-left:1px solid var(--border);padding-left:8px;display:grid;gap:2px}
991
+ .c3 .sr{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:6px;align-items:center;width:100%;border:0;background:transparent;text-align:left;padding:5px 6px;border-radius:6px}
992
+ .c3 .sr[aria-current="true"]{background:var(--muted)}
993
+ .c3 .sr .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-3)}
994
+ .c3 .sr .ic{color:var(--muted-foreground)}
995
+ .c3 .mk.w{animation:c3-pulse 1.6s infinite}
996
+ .c3 .c3dock .dk-p .term{min-height:72px;max-height:168px}
997
+ .c3 .c3dock .dk-d{padding:6px 10px;border-top:1px solid var(--border);overflow:auto;max-height:240px}
998
+ .c3 .c3dock .dk-d summary{cursor:pointer;font-size:var(--fs-2);padding:4px 0}
999
+ .c3 .c3dock .dk-runs{display:grid;gap:8px;padding-top:6px}
1000
+ .c3 .c3dock .dk-p .form{display:flex;gap:6px;align-items:center}
1001
+ .c3 .c3dock .dk-p .form input[type=text]{flex:1;min-width:0}
1002
+ .c3 .c3dock .dk-p .form input:disabled{opacity:.6;cursor:not-allowed}
1003
+ .c3 .c3dock.rail .ib .mk{width:auto}
1004
+ /* the Briefing's middle column is the mockup's ribbon: the zoom switch, no previous/next row */
1005
+ .c3 .c3pg-midcal .calbar>.chips2{display:none}
1006
+ @media (prefers-reduced-motion:reduce){.c3 .mk.w{animation:none}}
1007
+ @media (max-width:760px){
1008
+ .c3 .sr{min-height:44px}
1009
+ .c3 .br .chip2.lk,.c3 .c3dock .dk-d summary{min-height:44px;display:inline-flex;align-items:center}
1010
+ .c3 .c3dock .dk-p .form .ib{width:44px;height:44px}
1011
+ .c3 .c3add .ib{width:44px;height:44px}
1012
+ .c3 .fl2{gap:var(--sp-2)}
1013
+ .c3 .lkrow .chip2.lk{min-height:44px}
1014
+ .c3 .pill{min-height:44px}
1015
+ }
1016
+ .c3 .c3pg-pane{display:grid;gap:12px;align-content:start}
1017
+ .c3 .c3pg-pane>.brief{display:block}
1018
+ .c3 .lkrow{margin-bottom:var(--sp-3)}
1019
+ @media (max-width:760px){
1020
+ .c3 .stance{flex-wrap:wrap}
1021
+ .c3 .stance>div:nth-child(2){flex:1 1 calc(100% - 56px)}
1022
+ }
1023
+ /* demo mode (?demo=1, c3-demo.js): the header pill, and the mockup's extra card and list furniture it feeds */
1024
+ .c3 .c3pg-demo{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:999px;font:500 var(--fs-1) var(--mono);letter-spacing:.04em;white-space:nowrap;color:var(--warning);background:color-mix(in oklab,var(--warning) 14%,transparent);border:1px solid color-mix(in oklab,var(--warning) 45%,transparent)}
1025
+ .c3 .fc .tag.pov{margin-left:6px;vertical-align:middle}
1026
+ .c3 svg.mat{width:100%;height:auto;display:block}
1027
+ .c3 svg.mat text{font:var(--fs-2) var(--mono);fill:var(--muted-foreground)}
1028
+ .c3 svg.mat .t{fill:var(--foreground)}
1029
+ .c3 .sgr .spk{align-self:center}
1030
+ @media (max-width:760px){
1031
+ .c3[data-c3-demo] .nrow .tt{min-height:44px;display:inline-flex;align-items:center}
1032
+ }
1033
+ @media (max-width:760px){
1034
+ .c3[data-c3-demo] .c3top .tools{flex-wrap:wrap;justify-content:flex-start}
1035
+ .c3[data-c3-demo] .c3pg-demo{flex:1 0 100%;justify-content:center}
1036
+ }
1037
+
1038
+ /* ── the mockup's dock, closed up (console3.html .dock, line 156 on): the body wrapper, a disabled box that reads as the mockup's, no foot row ── */
1039
+ .c3 .c3dock .dk-body{display:flex;flex-direction:column;min-height:0;overflow:auto;flex:1}
1040
+ .c3 .c3dock .dk-body[hidden],.c3 .c3dock .dk-d[hidden]{display:none}
1041
+ .c3 .c3dock .dk-p .form input:disabled{opacity:1;cursor:text;background:var(--background);color:var(--foreground)}
1042
+ .c3 .c3dock .dk-p .form .ib.pri:disabled{opacity:1}
1043
+ .c3 .c3dock .dk-p .form .ib:disabled:not(.pri){opacity:1;cursor:default}
1044
+ .c3 .c3dock a.chip2.lk{text-decoration:none}
1045
+ .c3 .c3dock .dk-d{border-top:0}
1046
+
1047
+ /* c3 tickets/docs/signals: the mockup's RACI grid and document coverage matrix (console3.html lines 839 to 843 and 870 to 876), plus small additions */
1048
+ .c3 .rcg{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(5,minmax(0,.5fr));gap:6px;align-items:center;font-size:var(--fs-2)}
1049
+ .c3 .rcg .h{font:500 var(--fs-1) var(--mono);color:var(--muted-foreground);text-align:center;text-transform:uppercase}
1050
+ .c3 .rcg .c{display:grid;place-items:center;min-height:26px;border-radius:8px;font:600 var(--fs-2) var(--mono)}
1051
+ .c3 .rcg .c.R{background:var(--accw);color:var(--acc)}.c3 .rcg .c.A{background:var(--acc);color:var(--on-accent)}.c3 .rcg .c.C,.c3 .rcg .c.I{color:var(--muted-foreground)}
1052
+ .c3 .dxm{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(5,minmax(0,.55fr));gap:var(--sp-2) var(--sp-3);align-items:center;font-size:var(--fs-2)}
1053
+ .c3 .dxm.c4{grid-template-columns:minmax(0,1.4fr) repeat(4,minmax(0,.55fr))}
1054
+ .c3 .dxm .h{font:500 var(--fs-1) var(--mono);color:var(--muted-foreground);text-transform:uppercase;text-align:center}
1055
+ .c3 .dxm .c{display:grid;place-items:center}
1056
+ .c3 .dxm .c i{width:14px;height:14px;border-radius:50%;background:var(--success)}
1057
+ .c3 .dxm .c i.w{background:transparent;border:3px solid var(--warning)}
1058
+ .c3 .dxm .c i.o{background:transparent;border:2px dashed var(--ring)}
1059
+ .c3 .dxm .c i.x{background:var(--destructive)}
1060
+
1061
+ /* the deck's stance row and its gap, as the mockup draws them (console3.html line 2336: gap 8px; .ib.sm is 30px) */
1062
+ .c3 [data-c3pg="deck-host"] .brief,.c3 [data-c3pg="plan"] .brief{gap:8px}
1063
+ @media (min-width:761px){.c3 .stance .ib{width:30px;height:30px}}
1064
+
1065
+ /* the review rows and the handled fold (console3.html lines 296 to 298, 474 to 475) */
1066
+ .c3 .src-dots{display:inline-flex;gap:3px;align-items:center}
1067
+ .c3 .src-dots i{width:6px;height:6px;border-radius:50%;background:var(--success)}
1068
+ .c3 .src-dots i.old{background:transparent;border:1.5px solid var(--warning)}
1069
+ .c3 .hx[hidden]{display:none}
1070
+ .c3 .chip2.lk[title^="Approving"]{cursor:default}
1071
+ .c3 [data-c3pg="trust"] .rowbtn{gap:10px}
1072
+ .c3 [data-c3pg="trust"] .rowbtn>.chips2:first-child{white-space:nowrap;flex:none}
1073
+ .c3 [data-c3pg="trust"] .rowbtn>.chips2:last-child{flex-wrap:wrap;justify-content:flex-end;min-width:0}
1074
+ .c3 [data-c3pg="trust"] [hidden]{display:none}
1075
+ /* the mockup draws the glow behind the Briefing's own deck only, not behind the plan row of the other tabs */
1076
+ .c3 [data-c3pg="plan"] .brief::before{display:none}
1077
+
1078
+ /* c3 roadmap/breakdown: the mockup's .wform, .wbs, .wbed (console3.html lines 890 to 910 and 926 to 928) and the controls of the two sub-views */
1079
+ .c3 .wform{display:grid;gap:var(--sp-2);padding:var(--sp-3);border:1px dashed var(--ring);border-radius:10px;margin-bottom:var(--sp-2)}
1080
+ .c3 .wform input[type=number]{width:100%}
1081
+ .c3 .wbs .nrow{padding-block:8px}
1082
+ .c3 .wbs .chv{background:none;border:0;padding:0;width:20px;height:20px;display:grid;place-items:center;color:var(--muted-foreground);cursor:pointer;transition:transform .15s}
1083
+ .c3 .wbs .chv[aria-expanded=true]{transform:rotate(90deg)}
1084
+ .c3 .wbed{display:flex;flex-direction:column;gap:8px;padding:10px 0;border-top:1px solid var(--border);margin-top:8px}
1085
+ .c3 .wbed .lb{width:68px;font:500 var(--fs-1) var(--mono);letter-spacing:.06em;color:var(--muted-foreground);text-transform:uppercase;flex:none}
1086
+ .c3 .wbed input{flex:1;min-width:120px;font:inherit;font-size:var(--fs-3);border:1px solid var(--border);border-radius:8px;padding:6px 10px;background:var(--card);color:var(--foreground)}
1087
+ .c3 .wbed .chip2 .chv{width:16px;height:16px}
1088
+ .c3 [data-in-view="roadmap"] .case,.c3 [data-in-view="breakdown"] .xi .wbed{margin-top:8px}
1089
+ .c3 [data-in-view="roadmap"] .opt{font:inherit;color:inherit;cursor:pointer}
1090
+ .c3.ph [data-in-view="roadmap"] .pill,.c3.ph [data-in-view="breakdown"] .pill,.c3.ph [data-in-view="roadmap"] .opt,.c3.ph [data-in-view="roadmap"] .wform input,.c3.ph [data-in-view="roadmap"] .wform select,
1091
+ .c3.ph [data-in-view="breakdown"] .wform input,.c3.ph [data-in-view="breakdown"] .wform select,.c3.ph [data-in-view="breakdown"] .wbed input{min-height:44px}
1092
+ .c3.ph [data-in-view="roadmap"] .ib,.c3.ph [data-in-view="breakdown"] .ib,.c3.ph [data-in-view="breakdown"] .chv{min-width:44px;min-height:44px}
1093
+ @media (max-width:760px){.c3 [data-c3pg="below-line"],.c3 [data-c3pg="trust"] .rowbtn,.c3 [data-c3pg="handled"] .rowbtn{min-height:44px}}
1094
+
1095
+ /* ===== console3 shared primitives: c3-sheet.js, c3-case.js, c3-swipe.js, c3-expand.js =====
1096
+ * Lifted from console3.html: .sheet.wide (line 227), .sheet.dw (914), .ph .sheet.wide (182). Colours use --acc/--accent only. */
1097
+ .c3 .sheet.wide{width:600px}
1098
+ .c3.ph .sheet.wide{width:auto}
1099
+ @media (min-width:761px){.c3 .sheet.dw{width:min(780px,calc(100% - 24px))}}
1100
+ @media (max-width:760px){.c3 .sheet.dw{max-height:92%}}
1101
+ .c3 .sheet:focus{outline:none}
1102
+ .c3 .sheet.bs.dragging{transition:none}
1103
+ .c3 .sheet .sh2 .ib{flex:none}
1104
+ @media (prefers-reduced-motion:reduce){.c3 .sheet,.c3 .scrim,.c3.ph .sheet.bs{animation:none}}
1105
+ /* a slide that cannot be used: the action goes outside and no outbox is connected. The reason sits under it (c3-case.js). */
1106
+ .c3 .slt.off{opacity:.55;--tc:var(--muted-foreground)}
1107
+ .c3 .slt.off .th{cursor:not-allowed;animation:none}
1108
+ .c3 .slt.off .lb{animation:none}
1109
+ .c3 .slt-why{display:flex;gap:6px;align-items:center;font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
1110
+ /* the thumb keeps its look and gets a 44px hit area on any width */
1111
+ .c3 .slt .th::after{content:"";position:absolute;inset:-4px}
1112
+ /* a swipe reveals the action's label beside its icon (c3-swipe.js) */
1113
+ .c3 .rv{display:inline-flex;gap:4px;align-items:center}
1114
+ .c3 .rv .rvl{font:500 var(--fs-1) var(--mono);letter-spacing:.04em;white-space:nowrap}
1115
+ .c3 .nrow[data-swipe],.c3 .drow[data-swipe]{touch-action:pan-y}
1116
+ .c3 .nrow[data-swipe]:focus-visible,.c3 .drow[data-swipe]:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
1117
+ .c3.ph .opt,.c3.ph .nrow[data-swipe],.c3.ph .drow[data-swipe]{min-height:44px}
1118
+ .c3 .case .conf-fig{font:600 var(--fs-1) var(--mono);color:var(--tc)}
1119
+
1120
+ /* ── Reports interactions (report-families-view.js): the undo toast, the demo's hidden outbox host, 44px controls on a phone ── */
1121
+ .c3.c3e.c3rp-toast{display:flex;font-family:var(--sans);position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:60;display:flex;gap:var(--sp-3);align-items:center;max-width:calc(100vw - 32px);padding:10px 14px;border-radius:12px;background:var(--foreground);color:var(--background);font-size:var(--fs-3);box-shadow:0 8px 28px rgba(0,0,0,.25);animation:c3-toastin .25s}
1122
+ .c3.c3e.c3rp-toast .chip2{color:var(--background);border-color:currentColor;min-height:32px;border:0;text-decoration:underline;font-family:var(--sans)}
1123
+ .c3 [data-c3pg="outbox-host"][data-rp-hide]{display:none}
1124
+ .c3 .nrow.cutr .tt{text-decoration:line-through}
1125
+ .c3.ph .pill,.c3.ph .nrow .chip2.lk,.c3.ph .nrow .chip2[disabled],.c3.ph .c3rp-toast .chip2{min-height:44px}
1126
+ .c3.ph .ib.sm[data-a="docopen"]{min-width:44px;min-height:44px}
1127
+ .c3 [data-report-families] .lkrow{margin:var(--sp-4) 0 4px}
1128
+
1129
+ /* ===== console3 wave C3: the meeting card, the stage, the case sheets, the pulse press and the dock (calendar-views.js, c3-dock.js) ===== */
1130
+ .c3 .vday .vb.hot{background:var(--destructive);background:oklch(from var(--destructive) l calc(c * .81) h)}
1131
+ .c3 .rdet .st.lk{font:inherit}
1132
+ .c3 .rdet .rr .st{display:inline}
1133
+ .c3 .krw{display:grid}
1134
+ .c3 .krw>.xp{padding:0 var(--sp-1)}
1135
+ .c3 .krw>.krg[aria-expanded="true"]{border-bottom-color:transparent}
1136
+ .c3 [data-cv="stage-head"]{gap:var(--sp-2)}
1137
+ .c3 [data-c3pg-prow]{cursor:pointer}
1138
+ .c3 [data-c3pg-prow][hidden]{display:none}
1139
+ .c3 .pbs>span[role="button"]{position:relative;cursor:pointer;transition:opacity .2s,transform .15s}
1140
+ .c3 .pbs>span[role="button"]:hover{transform:scaleY(1.5)}
1141
+ .c3 .pbs>span[role="button"]::after{content:"";position:absolute;inset:-17px 0}
1142
+ .c3 .chart .hit:focus-visible,.c3 svg.pg g[role="button"]:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}
1143
+ .c3 [data-cv-cell][data-cv-ev]{min-height:24px}
1144
+ .c3 .dk-confirm{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:var(--fs-2)}
1145
+ @media (max-width:760px){
1146
+ .c3 .rdet .chip2,.c3 .rdet .st.lk,.c3 [data-cv="stage"] .sgb,.c3 [data-cv="stage"] .chip2,.c3 [data-cv="stage"] .ib,.c3 .dotb{min-height:44px;min-width:44px}
1147
+ .c3 .rdet .st.lk{display:inline-flex;align-items:center}
1148
+ .c3 [data-c3pg-prow]{min-height:44px}
1149
+ .c3 [data-cv-ev]{min-height:44px;display:inline-flex!important;align-items:center}
1150
+ .c3 .c3dock .dk-p .form .ib,.c3 .dk-confirm .chip2,.c3 .dk-confirm .ib{min-height:44px;min-width:44px}
1151
+ }
1152
+
1153
+ /* ── Work tab: toast buttons and case-file extras (pm-work-view.js) ── */
1154
+ .c3.c3e.c3rp-toast.err{background:var(--destructive);color:var(--on-accent)}
1155
+ .c3 .case .cft .chip2.lk[aria-expanded]{margin-left:auto}
1156
+ .c3 .c3jf[hidden]{display:none}
1157
+ .c3 .case .c3slide .slt:not(.off):not(.alt){--tc:var(--acc) !important}
1158
+ .c3 .br>button.bn:hover{color:var(--foreground)}
1159
+ .c3 .br>button.bn[aria-current="true"]{color:var(--foreground)}
1160
+ @media (max-width:760px){.c3 .br>button.bn{min-height:44px}}
1161
+ .c3.ph .case .chip2.lk,.c3.ph .case .c3steps .pill{min-height:44px}
1162
+
1163
+ /* ===== console3 Briefing and global behaviour: the toast, the palette, why-each-element, the case file in a row, the bell's unread dot =====
1164
+ * Lifted from console3.html: .toast (152 to 153, 245), .pal (146 to 151), .why-on and .whyp (308 to 315), .incident (99), .nli .u (507). Mockup variables to D38 tokens
1165
+ * (--fg/--bg/--bad to --foreground/--background/--destructive); the brand colour is --acc. */
1166
+ .c3 .toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(20px + env(safe-area-inset-bottom,0px));background:var(--foreground);color:var(--background);padding:8px 14px;display:flex;gap:14px;align-items:center;font-size:var(--fs-3);z-index:40;max-width:calc(100vw - 32px);border-radius:8px;box-shadow:var(--sh3);animation:c3-toastin .4s cubic-bezier(.34,1.56,.64,1)}
1167
+ .c3 .toast button{background:transparent;border:0;color:inherit;text-decoration:underline;padding:0 6px;min-height:44px;min-width:44px;font:inherit;cursor:pointer}
1168
+ @keyframes c3-toastin{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translateX(-50%)}}
1169
+ @media (prefers-reduced-motion:reduce){.c3 .toast{animation:none}}
1170
+ .c3 .pal{position:fixed;inset:0;background:oklch(0 0 0 / 30%);z-index:30;display:grid;place-items:start center;padding-top:12vh}
1171
+ .c3 .pal>div{width:min(480px,92vw);background:var(--card);border:1px solid var(--ring);border-radius:12px;overflow:hidden;animation:c3-fadein .15s;box-shadow:var(--sh3)}
1172
+ .c3 .pal input{width:100%;border:0;border-bottom:1px solid var(--border);border-radius:0;padding:12px 14px;font-size:var(--fs-4);background:transparent;color:var(--foreground);min-height:44px}
1173
+ .c3 .pal input:focus{outline:none}
1174
+ .c3 .pal ul{max-height:50vh;overflow:auto;margin:0;padding:0;list-style:none}
1175
+ .c3 .pal li button{display:flex;gap:10px;align-items:center;width:100%;border:0;background:transparent;padding:8px 14px;min-height:44px;text-align:left;color:inherit;font:inherit;cursor:pointer}
1176
+ .c3 .pal li button[aria-selected=true],.c3 .pal li button:focus-visible{background:var(--muted);outline:none}
1177
+ @media (hover:hover){.c3 .pal li button:hover{background:var(--muted)}}
1178
+ .c3 .why-on [data-n]{position:relative;outline:1px dashed color-mix(in oklab,var(--acc) 60%,transparent);outline-offset:3px;border-radius:10px}
1179
+ .c3 .why-on [data-n]::before{content:attr(data-n);position:absolute;top:-9px;left:-9px;z-index:4;width:20px;height:20px;border-radius:6px;background:var(--acc);color:var(--on-accent);font:600 var(--fs-1) var(--mono);display:grid;place-items:center;box-shadow:var(--sh2)}
1180
+ .c3 .why-on [data-n].wy{outline:2px solid var(--acc);outline-offset:4px;animation:c3-wy 1.8s ease-in-out infinite}
1181
+ @keyframes c3-wy{50%{outline-color:color-mix(in oklab,var(--acc) 30%,transparent)}}
1182
+ @media (prefers-reduced-motion:reduce){.c3 .why-on [data-n].wy{animation:none}}
1183
+ .c3 .whyp{position:fixed;left:16px;bottom:16px;width:340px;max-width:calc(100vw - 32px);z-index:15;border:1px solid var(--border);border-radius:12px;padding:12px 14px;display:grid;gap:8px;animation:c3-fadein .25s}
1184
+ .c3 .whyp b.n{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:6px;background:var(--acc);color:var(--on-accent);font:600 var(--fs-1) var(--mono);margin-right:6px}
1185
+ .c3 .incident{border:1px solid var(--destructive);color:var(--destructive);padding:10px 14px;border-radius:8px;display:flex;gap:10px;align-items:center;margin:0 var(--sp-3) var(--sp-2)}
1186
+ .c3 .incident .dim{color:var(--muted-foreground)}
1187
+ .c3 .nli .w{display:grid;gap:4px;justify-items:end}
1188
+ .c3 .nli .u{width:8px;height:8px;border-radius:50%;background:var(--acc)}
1189
+ .c3.noscrim:not(.ph) .scrim{display:none}
1190
+ /* a case file inside a row: the agent's block, and the options and the slide hidden while a run is on */
1191
+ .c3 .case.ag-busy .opts,.c3 .case.ag-busy .c3slide{display:none}
1192
+ .c3 .c3res2{display:grid;gap:var(--sp-2)}
1193
+ .c3 .c3res2 .tbl{width:100%;border-collapse:collapse;font-size:var(--fs-2)}
1194
+ .c3 .c3res2 .tbl th,.c3 .c3res2 .tbl td{text-align:left;padding:4px 8px;border-bottom:1px solid var(--border)}
1195
+ .c3 .nrow .xp .case{margin-top:var(--sp-2)}
1196
+ /* the row's swipe strips draw the label beside the icon; the key hint of the case sits under the row */
1197
+ .c3 .nrow .tt,.c3 .drow .tt{cursor:pointer}
1198
+ /* controls on the Briefing keep a 44px hit area on a phone, without changing how they look */
1199
+ .c3.ph .chip2.lk,.c3.ph .pill,.c3.ph .rowbtn,.c3.ph .nrow .av,.c3.ph .drow .av{min-height:44px}
1200
+ .c3 button.av{position:relative;border:0;cursor:pointer}
1201
+ .c3 button.av::after{content:"";position:absolute;inset:-11px}
1202
+ .c3 .pbs>button{position:relative}
1203
+ .c3 .pbs>button::after{content:"";position:absolute;inset:-17px 0}
1204
+ .c3 .pbs>button[aria-pressed=true]{transform:scaleY(1.5)}
1205
+ .c3 .pseg:focus-visible,.c3 .prow:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
1206
+ /* the phone preview: a 390px frame over the page, the page itself in an iframe so its own phone layout answers */
1207
+ .c3 .c3pg-prev{position:fixed;inset:0;z-index:25;display:grid;place-items:center;align-content:center;gap:var(--sp-2);pointer-events:none}
1208
+ .c3 .c3pg-prev>*{pointer-events:auto}
1209
+ .c3 .c3pg-prev>button{justify-self:center}
1210
+ .c3 .c3pg-mi[disabled]{opacity:.5;cursor:not-allowed}
1211
+ .c3 .c3pg-menu .c3pg-mi{min-height:44px}
1212
+
1213
+ /* Initiatives rows, cases and sheets (c3-roadmap, c3-breakdown, c3-tickets, c3-docs, c3-doc-sheet, c3-signals, lifecycle-lens, new-initiative-sheet) */
1214
+ /* the slide inside a case takes the page accent: slide-confirm.js sets --tc to --accent, which is a near-white grey on this page */
1215
+ .c3 .case .slt:not(.alt):not(.off){--tc:var(--acc) !important}
1216
+ .c3 [data-in-view="signals"] .sgr .spk{align-self:start}
1217
+ .c3pop .wbed{border-top:0;margin-top:0;padding-top:0}
1218
+ .c3pop .dsec .dt[contenteditable]{min-height:44px}
1219
+ .c3 .rv .rvl{font:var(--fs-1) var(--mono);margin-left:6px}
1220
+ .c3 [data-rm-off] input{width:100%;font:inherit;font-size:var(--fs-3);padding:8px 10px;border:1px solid var(--ring);border-radius:8px;background:var(--card);color:var(--foreground);min-height:44px}
1221
+ .c3 .xi .fold .c3slide{margin-top:var(--sp-2)}
1222
+ @media (max-width:640px){
1223
+ .c3.ph .nrow .chip2.lk,.c3.ph .sgr .chip2.lk,.c3.ph .xi .chip2.lk,.c3pop.ph .chip2.lk{min-height:44px}
1224
+ .c3.ph .nrow .pill,.c3.ph .xi .pill,.c3pop.ph .pill,.c3pop.ph .seg button,.c3pop.ph .ib,.c3pop.ph .wbed input,.c3pop.ph .dpn input,.c3pop.ph .dpn textarea{min-height:44px}
1225
+ .c3pop.ph .ib{min-width:44px}
1226
+ .c3.ph .xi .opt{min-height:44px}
1227
+ }
1228
+ @media (max-width:640px){
1229
+ .c3pop.ph .seg button{min-width:44px}
1230
+ }
1231
+
1232
+ /* ── the shared toast (pm/c3-toast.js): the error tone ── */
1233
+ .c3 .toast.err{background:var(--destructive);color:var(--on-accent)}
1234
+
1235
+ /* ── the dock under the mockup's class names (`dock`, `dock rail`), so a selector written for the mockup finds it; the phone rule that hides `.dock` must not hide this one ── */
1236
+ .c3.ph .c3dock.dock:not([hidden]){display:flex!important}
1237
+ .c3 .c3dock .dk-p .form input[data-off]{opacity:1;cursor:not-allowed;background:var(--background);color:var(--foreground)}
1238
+ .c3 .ib[data-off]{opacity:.5;cursor:not-allowed}
1239
+
1240
+ /* ── Work: the jobs card's "All N items" block and the + New job line, as the mockup draws them (console3.html lines 949-954) ── */
1241
+ .c3 .c3all{display:grid;gap:var(--sp-2);font-size:var(--fs-2)}
1242
+ .c3 .c3all>div{display:grid;grid-template-columns:64px minmax(0,1fr);gap:var(--sp-2);align-items:baseline}
1243
+ .c3 .c3all>div>span:last-child{display:grid;gap:2px}
1244
+ .c3 .c3all .dn{text-decoration:line-through;color:var(--muted-foreground)}
1245
+ .c3 .c3all>div.hd{grid-template-columns:1fr;font-size:var(--fs-2)}
1246
+ .c3 .c3jnew{list-style:none;padding:var(--sp-2) 0}
1247
+ /* the More menu hangs off the page root, fixed under its button: no ancestor can clip it or stack over it */
1248
+ .c3 .c3pg-menu{position:fixed;right:auto;z-index:90;overflow:auto}
1249
+ .c3 .c3pg-kbd{margin-left:auto;font:500 var(--fs-1) var(--mono);color:var(--muted-foreground);border:1px solid var(--border);border-radius:4px;padding:1px 5px}
1250
+
1251
+ /* ── Calendar: the recording dot on the Calendar tab, the After notes, the Week time grid (calendar-views.js, shell-recording.js) ── */
1252
+ .c3 [role="tab"][data-c3-tab]{position:relative}
1253
+ .c3 [data-c3-tab] .shell-recdot{position:absolute;top:4px;right:4px;width:8px;height:8px;border-radius:50%;background:var(--destructive);box-shadow:0 0 0 2px var(--background)}
1254
+ .c3 [data-c3-tab] .shell-recdot[hidden]{display:none}
1255
+ .c3 .recg .rt{max-width:18ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
1256
+ .c3 [data-cv="notes"] .tbl select{min-height:32px;max-width:100%;font:var(--fs-2) var(--mono)}
1257
+ .c3 [data-cv="week-grid"] .wb{cursor:pointer}
1258
+ .c3 [data-cv="week-grid"] .wb:focus-visible rect:first-of-type,.c3 svg.pg .pgrow:focus-visible rect{outline:2px solid var(--ring)}
1259
+ @media (max-width:760px){.c3 [data-cv="notes"] .tbl select{min-height:44px}.c3 [data-cv="notes"] .tbl{display:block;overflow-x:auto}}
1260
+
1261
+ /* ── Lifecycle panels (console3 wave L1). Lifted from console3.html lines 835 to 858 (.evm, .gt, .gtr, .sc, .scr, .sct), with the same token map as above.
1262
+ * Additions the mockup does not have: a gate that is not applicable or that the engine does not claim (.gt i.na, .gt i.u), the add forms of the empty states (.lfm), and the
1263
+ * untraced flag. ── */
1264
+ .c3 .evm{display:grid;grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,.5fr));gap:var(--sp-2) var(--sp-3);align-items:center;font-size:var(--fs-2)}
1265
+ .c3 .evm .h{font:500 var(--fs-1) var(--mono);color:var(--muted-foreground);text-transform:uppercase;text-align:center}
1266
+ .c3 .evm .c{display:grid;place-items:center}
1267
+ .c3 .evm .c i{width:14px;height:14px;border-radius:50%;background:var(--success)}
1268
+ .c3 .evm .c i.o{background:transparent;border:2px dashed var(--ring)}
1269
+ .c3 .evm .c i.x{background:var(--destructive)}
1270
+ .c3 .gt{display:flex;gap:6px;align-items:center}
1271
+ .c3 .gt i{flex:1;height:8px;border-radius:4px;background:var(--muted)}
1272
+ .c3 .gt i.d{background:var(--success)}
1273
+ .c3 .gt i.h{background:linear-gradient(90deg,var(--success) 50%,var(--muted) 50%)}
1274
+ .c3 .gt i.na{background:transparent;border:1px dashed var(--ring);opacity:.6}
1275
+ .c3 .gt i.u{background:repeating-linear-gradient(135deg,var(--muted) 0 4px,transparent 4px 8px);border:1px solid var(--border)}
1276
+ .c3 .gtr{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:var(--sp-3);align-items:center;font-size:var(--fs-2);padding:6px 0;border-bottom:1px solid var(--border)}
1277
+ .c3 .gtr:last-child{border-bottom:0}
1278
+ .c3 .sc{display:grid;gap:var(--sp-3)}
1279
+ .c3 .scr{display:grid;gap:4px}
1280
+ .c3 .scr .l{display:flex;justify-content:space-between;font-size:var(--fs-2)}
1281
+ .c3 .scr .tk{position:relative;height:10px;border-radius:5px;background:var(--muted)}
1282
+ .c3 .scr .tk u{position:absolute;left:0;top:0;bottom:0;border-radius:5px;background:var(--c);text-decoration:none}
1283
+ .c3 .scr .tk s{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--foreground);text-decoration:none}
1284
+ .c3 .sct{width:100%;height:auto;display:block}
1285
+ .c3 .sct text{font:var(--fs-1) var(--mono);fill:var(--muted-foreground)}
1286
+ .c3 .sct .t{fill:var(--foreground)}
1287
+ .c3 .sct circle{cursor:pointer;transition:r .15s}
1288
+ .c3 .sct circle:hover{stroke:var(--foreground);stroke-width:2}
1289
+ .c3 .gtl{display:grid;grid-template-columns:repeat(6,1fr);font:var(--fs-1) var(--mono);color:var(--muted-foreground);text-align:center}
1290
+ .c3 .lfm{display:grid;gap:var(--sp-2);margin-top:var(--sp-2)}
1291
+ .c3 .lfm label{display:grid;gap:2px;font:var(--fs-2) var(--mono);color:var(--muted-foreground)}
1292
+ .c3 .lfm input,.c3 .lfm select{min-height:44px;padding:0 var(--sp-3);border:1px solid var(--border);border-radius:10px;background:var(--card);color:var(--foreground);font:var(--fs-3) var(--sans)}
1293
+ .c3 .lfm .row2{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2)}
1294
+ .c3 .lfm button{min-height:44px}
1295
+ .c3 .lfm .err{color:var(--destructive);font-size:var(--fs-2)}
1296
+ .c3 .st.unt{color:var(--warning)}
1297
+ @container (max-width:520px){.c3 .gtr{grid-template-columns:minmax(0,1fr) auto}.c3 .gtr>.hbs{grid-column:1/-1;order:3}.c3 .lfm .row2{grid-template-columns:1fr}}
1298
+ .c3.ph .gtr{grid-template-columns:minmax(0,1fr) auto}.c3.ph .gtr>.hbs{grid-column:1/-1;order:3}.c3.ph .lfm .row2{grid-template-columns:1fr}
1299
+ .c3 .c3top .recg{position:relative;z-index:31} /* the recording controls stay above the centred banner, which a long tools row can run under */
1300
+
1301
+ /* console3.css addition (Calendar Quarter and Year, c3-cal-strategy.js): the mockup's .syn grid (lines 679 to 685) and .nsm (690, 694), the .c3 prefix and
1302
+ * the D38 tokens in place of the mockup's names. The grid's column count is set inline, because a repository has as many key results as it has. */
1303
+ .c3 .syn{display:grid;grid-template-columns:minmax(0,1.3fr) repeat(4,minmax(0,1fr));gap:6px;align-items:center}
1304
+ .c3 .syn .h{font:500 var(--fs-1) var(--mono);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.06em;text-align:center;display:grid;justify-items:center;gap:2px;min-width:0;overflow-wrap:anywhere}
1305
+ .c3 .syn .l{font-size:var(--fs-2);line-height:1.3;min-width:0;overflow-wrap:anywhere}
1306
+ .c3 .syn .c{display:flex;justify-content:center;gap:3px;min-height:20px;align-items:center}
1307
+ .c3 .syn .c i{width:10px;height:10px;border-radius:50%;background:var(--acc)}
1308
+ .c3 .syn .c i.o{background:transparent;border:1.5px dashed var(--ring)}
1309
+ .c3 .syn .c.gap{color:var(--destructive);font:var(--fs-1) var(--mono)}
1310
+ .c3 .nsm{width:100%;height:auto}
1311
+ .c3 .nsm text{font:var(--fs-1) var(--mono);fill:var(--muted-foreground)}
1312
+ .c3 [data-cs] .sgr{min-height:44px}
1313
+ .c3 [data-cs="deck"] .dkd{position:relative}
1314
+ .c3 .cs-empty{display:grid;gap:6px}
1315
+ .c3 .cs-empty .fold{align-items:flex-start}
1316
+
1317
+ /* Timeline (c3-timeline.js): the track follows the number of checks (the mockup has exactly five), a check is a 44px target, and the forecast matrix is a table. */
1318
+ .c3 .sntrack[data-n]::before{left:calc(50% / var(--n));right:calc(50% / var(--n))}
1319
+ .c3 .sntrack .sn{min-height:44px;align-content:start;padding-top:2px}
1320
+ .c3 .fcm{width:100%;border-collapse:collapse;display:table}
1321
+ .c3 .fcm td,.c3 .fcm th{padding:6px 8px;font-size:var(--fs-2);text-align:center}
1322
+ .c3 .fcm td button{width:100%;min-height:44px;border:0;border-radius:6px;padding:4px 2px;background:transparent;font:var(--fs-2) var(--mono);cursor:pointer}
1323
+ .c3.ph .recg>*{min-height:44px;min-width:44px;height:44px}
1324
+ .c3.ph [data-cv="notes"] .link,.c3.ph [data-cv="notes"] .ib.pri{min-height:44px;min-width:44px}
1325
+ .c3.ph [data-cv="notes"] a{display:inline-flex;align-items:center;min-height:44px}
1326
+
1327
+ /* ===== The Terminal page and the run cards (c3-terminal.js, sessions-panel.js, run-card.js, c3-terminal-results.js, c3-terminal-edge.js) =====
1328
+ * From agent-surfaces.html: .card (here .c3t-card), .tag/.lab, .claims, .tl, .q, .ci, .ask, .fail, .raw, .draft, .run, .prog, .filebox, .dk (deck), .tbl, .dg,
1329
+ * .tlr (the Past timeline), .edge. Colours are the console's own tokens: the mockup's ok, warn, bad, opp are --success, --warning, --destructive, --purple. */
1330
+ .c3 .c3t-card{position:relative;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:var(--sp-4);display:grid;gap:var(--sp-3);touch-action:pan-y;min-width:0;transition:transform .18s,border-color .2s}
1331
+ .c3 .c3t-card.busy{border-color:var(--acc)}
1332
+ .c3 .c3t-card.flash{animation:c3-c3tfl 1.2s}
1333
+ @keyframes c3-c3tfl{0%,60%{box-shadow:0 0 0 3px color-mix(in oklab,var(--acc) 14%,transparent)}100%{box-shadow:none}}
1334
+ .c3 .c3t-card[data-swipe]>*:not(.rv){transform:translateX(calc(var(--dx,0px)*.55));transition:transform .28s cubic-bezier(.3,1.3,.5,1)}
1335
+ .c3 .c3t-card[data-swipe].dr>*{transition:none}
1336
+ .c3 .c3t-card[data-swipe].dr{cursor:grabbing;user-select:none}
1337
+ .c3 .c3t-card[data-swipe]:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
1338
+ .c3 .c3t-card .top{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
1339
+ .c3 .c3t-card .top>.dim:last-child{margin-left:auto}
1340
+ .c3 .c3t-card h3{font-size:var(--fs-5);line-height:1.3;font-weight:600;margin:0;text-wrap:balance;overflow-wrap:anywhere}
1341
+ .c3 .c3t-card .dim{color:var(--muted-foreground)}
1342
+ .c3 .c3t-run{display:grid;gap:var(--sp-2)}
1343
+ .c3 .c3t-run .line{display:flex;align-items:center;gap:var(--sp-2)}
1344
+ .c3 .c3t-run .line .t{flex:1;min-width:0;font:var(--fs-2) var(--mono);color:var(--acc);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
1345
+ .c3 .c3t-obs{display:flex;gap:6px;flex-wrap:wrap}
1346
+ .c3 .c3t-obs .chip2{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}
1347
+ .c3 .prog{display:flex;gap:3px}
1348
+ .c3 .prog i{flex:1;height:3px;border-radius:2px;background:var(--border);transition:background .3s}
1349
+ .c3 .prog i.d{background:var(--acc)}
1350
+ .c3 .c3t-card .ask,.c3 .c3t-node .ask,.c3 .c3t-card .fail{display:grid;gap:var(--sp-2);border:1px solid var(--warning);background:color-mix(in oklab,var(--warning) 9%,transparent);border-radius:10px;padding:var(--sp-3)}
1351
+ .c3 .c3t-card .fail{border-color:var(--destructive);background:color-mix(in oklab,var(--destructive) 8%,transparent)}
1352
+ .c3 .c3t-card .fail.w{border-color:var(--warning);background:color-mix(in oklab,var(--warning) 9%,transparent)}
1353
+ .c3 .raw{background:var(--muted);border-radius:8px;padding:var(--sp-2) var(--sp-3);font:var(--fs-1)/1.6 var(--mono);color:var(--muted-foreground);overflow-wrap:anywhere;white-space:pre-wrap}
1354
+ .c3 .c3t-card .draft{background:var(--muted);border-radius:10px;padding:var(--sp-3);font-size:var(--fs-3);white-space:pre-wrap;overflow-wrap:anywhere}
1355
+ .c3 .c3t-tray{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center}
1356
+ .c3 .c3t-tray input,.c3 .c3t-panel input{flex:1;min-width:120px;border:1px solid var(--border);border-radius:99px;padding:6px 12px;background:var(--card);color:var(--foreground);font:inherit;font-size:var(--fs-2)}
1357
+ .c3 .c3t-tray input[readonly],.c3 .c3t-panel input[readonly]{opacity:.6;cursor:not-allowed}
1358
+ .c3 .c3t-card .pill.rec{background:var(--acc);color:var(--on-accent);border-color:var(--acc)}
1359
+ .c3 .c3t-card .pill.on,.c3 .c3t .pill.on{background:color-mix(in oklab,var(--acc) 12%,transparent);color:var(--acc);border-color:var(--acc)}
1360
+ .c3 .c3t-card .pill:disabled{opacity:.5;cursor:not-allowed}
1361
+ .c3 .dotp{width:8px;height:8px;border-radius:50%;background:var(--acc);flex:none;display:inline-block;animation:c3-c3tbl 1s infinite alternate}
1362
+ @keyframes c3-c3tbl{to{opacity:.35}}
1363
+ /* claims and their labels */
1364
+ .c3 .lab{font:500 var(--fs-1)/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:1px 6px;border-radius:4px;flex:none;width:92px;text-align:center;display:inline-block}
1365
+ .c3 .l-fact{background:color-mix(in oklab,var(--success) 16%,transparent);color:var(--success)}
1366
+ .c3 .l-est{background:color-mix(in oklab,var(--warning) 18%,transparent);color:var(--warning)}
1367
+ .c3 .l-ass{background:var(--muted);color:var(--muted-foreground)}
1368
+ .c3 .l-rep{background:color-mix(in oklab,var(--purple) 16%,transparent);color:var(--purple)}
1369
+ .c3 .l-unl{background:transparent;color:var(--destructive);border:1px dashed var(--destructive)}
1370
+ .c3 .l-obs{background:var(--muted);color:var(--muted-foreground)}
1371
+ .c3 .l-you{background:color-mix(in oklab,var(--acc) 12%,transparent);color:var(--acc)}
1372
+ .c3 .c3t-claims{display:grid;gap:var(--sp-2);margin:0;padding:0;list-style:none}
1373
+ .c3 .c3t-claims li,.c3 .c3t-bul{display:flex;gap:var(--sp-2);align-items:baseline;min-width:0}
1374
+ .c3 .c3t-claims li>span:last-child,.c3 .c3t-bul>span:last-child{min-width:0;overflow-wrap:anywhere}
1375
+ .c3 .c3t-src{font-size:var(--fs-1)}
1376
+ /* heroes */
1377
+ .c3 .c3t-tl{position:relative;height:46px}
1378
+ .c3 .c3t-tl .axis{position:absolute;left:0;right:0;top:22px;height:2px;background:var(--border)}
1379
+ .c3 .c3t-tl .gap{position:absolute;top:20px;height:6px;border-radius:3px;background:color-mix(in oklab,var(--destructive) 55%,transparent)}
1380
+ .c3 .c3t-tl .mk{position:absolute;top:14px;width:2px;height:18px;background:var(--foreground)}
1381
+ .c3 .c3t-tl .mk span{position:absolute;white-space:nowrap;font:var(--fs-1) var(--mono);color:var(--muted-foreground);transform:translateX(-50%);left:1px}
1382
+ .c3 .c3t-tl .pr span{top:-14px}
1383
+ .c3 .c3t-tl .fc{background:var(--acc)}
1384
+ .c3 .c3t-tl .fc span{top:20px;color:var(--acc)}
1385
+ .c3 .c3t-q{margin:0;padding:var(--sp-2) var(--sp-3);border-left:3px solid var(--purple);background:var(--muted);border-radius:0 8px 8px 0;font-size:var(--fs-3)}
1386
+ .c3 .c3t-q cite{display:block;font:var(--fs-1) var(--mono);color:var(--muted-foreground);font-style:normal;margin-top:4px}
1387
+ .c3 .c3t-ci{display:flex;align-items:center;gap:var(--sp-1)}
1388
+ .c3 .c3t-ci i{width:28px;height:10px;border-radius:3px;background:var(--border)}
1389
+ .c3 .c3t-ci i.ok{background:var(--success)}.c3 .c3t-ci i.bad{background:var(--destructive)}.c3 .c3t-ci i.run{background:var(--acc);animation:c3-c3tbl 1s infinite alternate}
1390
+ .c3 .c3t-ci .dim{margin-left:var(--sp-2)}
1391
+ /* result bodies */
1392
+ .c3 .c3t-opts{display:grid;gap:var(--sp-2)}
1393
+ .c3 .c3t-opts .opt-r{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:10px}
1394
+ .c3 .c3t-opts .opt-r.rec{border-color:var(--acc);background:color-mix(in oklab,var(--acc) 10%,transparent)}
1395
+ .c3 .c3t-file{border:1px solid var(--border);border-radius:10px;overflow:hidden}
1396
+ .c3 .c3t-file .fh{display:flex;gap:var(--sp-2);align-items:center;padding:var(--sp-2) var(--sp-3);background:var(--muted);flex-wrap:wrap}
1397
+ .c3 .c3t-file .fh b{flex:1;min-width:0}
1398
+ .c3 .c3t-file .fb{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-2)}
1399
+ .c3 .c3t-file .ft{padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--border);overflow-wrap:anywhere}
1400
+ .c3 .c3t-md h4{margin:var(--sp-2) 0 2px;font-size:var(--fs-3)}.c3 .c3t-md p{margin:2px 0}.c3 .c3t-md ul{margin:2px 0;padding-left:18px}
1401
+ .c3 .c3t-note{margin:0;font-size:var(--fs-3)}
1402
+ .c3 .c3t-dk{position:relative;border:1px solid var(--border);border-radius:12px;overflow:hidden;touch-action:pan-y;user-select:none;display:block}
1403
+ .c3 .c3t-dk .sl{padding:var(--sp-4);min-height:170px;display:flex;flex-direction:column;gap:var(--sp-2)}
1404
+ .c3 .c3t-dk .sl h4{margin:0;font-size:var(--fs-5);font-weight:600}
1405
+ .c3 .c3t-dk .nv{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--border);background:var(--muted)}
1406
+ .c3 .c3t-dk .nv .dim{flex:1;text-align:center}
1407
+ .c3 .c3t-deck .foot{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-2);justify-content:space-between}
1408
+ .c3 .c3t-tbl .tw{overflow-x:auto}
1409
+ .c3 .c3t-tbl .tbl{width:100%;border-collapse:collapse;font-size:var(--fs-2)}
1410
+ .c3 .c3t-tbl .tbl td,.c3 .c3t-tbl .tbl th{padding:6px 10px 6px 0;border-bottom:1px solid var(--border);text-align:left}
1411
+ .c3 .c3t-tbl .tbl td.n,.c3 .c3t-tbl .tbl th.n{font-family:var(--mono);text-align:right}
1412
+ .c3 .c3t-th{background:none;border:0;padding:0 4px;font:inherit;color:inherit;cursor:pointer;white-space:nowrap;min-height:44px}
1413
+ .c3 .c3t-dg .dg{border:1px solid var(--border);border-radius:10px;background:var(--card);overflow:auto}
1414
+ .c3 .c3t-dg svg{display:block;max-width:100%;height:auto}
1415
+ .c3 .c3t-dg .nd{fill:var(--card);stroke:var(--border);stroke-width:1.5}.c3 .c3t-dg .cp{stroke:var(--acc);fill:color-mix(in oklab,var(--acc) 12%,transparent)}
1416
+ .c3 .c3t-dg text{fill:var(--foreground);font:500 12px var(--mono)}.c3 .c3t-dg .ed{stroke:var(--muted-foreground);fill:none;stroke-width:1.5}.c3 .c3t-dg .ec{stroke:var(--acc);fill:none;stroke-width:2.5}
1417
+ .c3 .c3t-dg summary{cursor:pointer;min-height:44px;display:flex;align-items:center}
1418
+ .c3 .c3t-draft{display:grid;gap:var(--sp-2)}
1419
+ .c3 .sayb{display:grid;gap:4px}
1420
+ .c3 .sayb .m{padding:6px 12px;border-radius:12px;max-width:100%;overflow-wrap:anywhere}
1421
+ .c3 .sayb .m.me{justify-self:end;background:var(--acc);color:var(--on-accent)}.c3 .sayb .m.bot{background:var(--muted)}
1422
+ .c3 .c3t-back{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px var(--sp-3);margin:0;font:var(--fs-2) var(--mono)}
1423
+ .c3 .c3t-back dt{color:var(--muted-foreground)}.c3 .c3t-back dd{margin:0;overflow-wrap:anywhere}
1424
+ /* the page and its groups */
1425
+ .c3 .c3t-page{display:grid;gap:var(--sp-3);min-width:0}
1426
+ .c3 .c3t-demo select{border:1px solid var(--border);border-radius:99px;padding:6px 12px;background:var(--card);color:var(--foreground);font:var(--fs-2) var(--sans);max-width:100%}
1427
+ .c3 .c3t-note{min-height:0}
1428
+ .c3 .c3t-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--sp-3);align-items:start}
1429
+ .c3 .c3t-cards>*{min-width:0}
1430
+ .c3 .c3t-sect{display:grid;gap:var(--sp-2)}
1431
+ .c3 .c3t-sect .sh2{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap}
1432
+ .c3 .c3t-sect .sh2 h2{display:flex;align-items:center;gap:6px;margin:0;font-size:var(--fs-4)}
1433
+ .c3 .c3t .c3t-row{cursor:pointer}
1434
+ .c3 .c3t .c3t-row .xp{cursor:default}
1435
+ .c3 .c3t .c3t-row .xi{display:grid;gap:var(--sp-2);padding-top:var(--sp-2)}
1436
+ .c3 .c3t-chev{color:var(--muted-foreground);align-self:center;transition:transform .2s}
1437
+ .c3 .c3t-row[aria-expanded="true"] .c3t-chev{transform:rotate(90deg)}
1438
+ .c3 .c3t-sw{width:52px;min-height:44px;background:none;border:0;padding:0;display:inline-flex;align-items:center;cursor:pointer}
1439
+ .c3 .c3t-sw i{display:block;width:36px;height:20px;border-radius:99px;background:var(--border);position:relative}
1440
+ .c3 .c3t-sw i::after{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:6px;background:var(--on-accent);transition:transform .15s}
1441
+ .c3 .c3t-sw[aria-checked="true"] i{background:var(--acc)}.c3 .c3t-sw[aria-checked="true"] i::after{transform:translateX(16px)}
1442
+ .c3 .c3t-sw:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
1443
+ .c3 .c3t-panel{display:grid;gap:var(--sp-2);border:1px solid var(--border);border-radius:10px;padding:var(--sp-3)}
1444
+ .c3 .c3t-panel .feed{display:flex;flex-direction:column;gap:var(--sp-2);max-height:220px;overflow:auto}
1445
+ .c3 .c3t-panel .m{padding:6px 12px;border-radius:12px;max-width:88%;overflow-wrap:anywhere}
1446
+ .c3 .c3t-panel .m.me{align-self:flex-end;background:var(--acc);color:var(--on-accent)}.c3 .c3t-panel .m.bot{background:var(--muted)}
1447
+ .c3 .c3t-panel .m.st{color:var(--muted-foreground);font:var(--fs-2) var(--mono);padding:0}
1448
+ .c3 .c3t-tl2 .tlr{display:flex;gap:var(--sp-2);align-items:baseline;padding:6px 0;border-bottom:1px solid var(--border)}
1449
+ .c3 .c3t-tl2 .tlr .lab{width:78px}
1450
+ .c3 .c3t-edge{display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr);gap:var(--sp-4);align-items:start}
1451
+ .c3 .elist{display:flex;flex-direction:column;gap:2px}
1452
+ .c3 .elist .eh{margin-top:var(--sp-3);font:500 var(--fs-1) var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted-foreground)}
1453
+ .c3 .elist button{text-align:left;padding:8px 12px;border-radius:8px;color:var(--muted-foreground);font-size:var(--fs-3);width:100%;background:none;border:0;min-height:44px;cursor:pointer}
1454
+ .c3 .elist button[aria-pressed="true"]{background:color-mix(in oklab,var(--acc) 12%,transparent);color:var(--acc)}
1455
+ .c3 .c3t-node{border:1px solid var(--border);border-radius:12px;padding:var(--sp-3);display:grid;gap:var(--sp-3);background:var(--card);min-width:0}
1456
+ .c3 .c3t-node .top{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
1457
+ .c3 .c3t-node .tm{display:grid;gap:var(--sp-2)}
1458
+ @media (max-width:760px){
1459
+ .c3 .c3t-edge{grid-template-columns:minmax(0,1fr)}
1460
+ .c3 .c3t .pill,.c3 .c3t-card .pill,.c3 .c3t-card .ib,.c3 .c3t .ib,.c3 .c3t .chip2.lk,.c3 .c3t-card .chip2.lk,.c3 .c3t-card select,.c3 .c3t-demo select,.c3 .c3t-tray input,.c3 .c3t-panel input,.c3 .c3t .seg button{min-height:44px}
1461
+ .c3 .c3t .ib,.c3 .c3t-card .ib{min-width:44px}
1462
+ .c3 .c3t-cards{grid-template-columns:minmax(0,1fr)}
1463
+ .c3 .c3t-card{padding:var(--sp-3)}
1464
+ }
1465
+ @media (prefers-reduced-motion:reduce){.c3 .c3t-card.flash,.c3 .dotp,.c3 .c3t-ci i.run{animation:none}.c3 .c3t-card[data-swipe]>*:not(.rv){transition:none}}
1466
+ /* the header and dock icons: the agent button (spark) and the terminal button (>_) are told apart by a thin ring on the agent one */
1467
+ .c3 .c3top .ib[data-c3pg="agent-button"]{border-color:color-mix(in oklab,var(--acc) 45%,var(--border))}
1468
+ .c3 .c3top .ib[data-c3pg="agent-button"] .ic{color:var(--acc)}
1469
+ .c3 .c3dock .dk-h .ib[data-c3pg="dock-agent"] .ic{color:var(--acc)}
1470
+ .c3 .c3dock .dk-h .ib .bdg{position:absolute;top:-6px;right:-6px;box-shadow:0 0 0 2px var(--card)}
1471
+ .c3 .c3t-card h3{font:600 var(--fs-5)/1.3 var(--sans);text-transform:none;letter-spacing:0;color:var(--foreground)}
1472
+ .c3 .c3t-obs .chip2{display:inline-block;background:var(--muted);color:var(--muted-foreground);border-radius:99px;padding:2px 10px;font:var(--fs-1)/1.5 var(--mono);border:0}
1473
+ .c3 .c3t-obs .chip2 b{color:var(--foreground);font-weight:500}
1474
+ .c3 .c3t-card .tg{width:max-content}
1475
+ @media (max-width:760px){
1476
+ .c3 .c3t .pill,.c3 .c3t-card .pill,.c3 .c3t .chip2.lk,.c3 .c3t-card .chip2.lk,.c3 .c3t-th{min-width:44px;justify-content:center}
1477
+ }
1478
+ .c3 .cs-empty .fold{flex-wrap:nowrap;align-items:flex-start}
1479
+ .c3 .cs-empty .fold .ic{flex:none;margin-top:2px}
1480
+
1481
+ /* the header Sessions button is a pill in look only: its class is not .pill, so a "try" pill is the first button.pill of a page (the mockup's header has no such pill) */
1482
+ .c3 .psess{border:1px solid var(--border);background:var(--background);padding:3px 10px;font:var(--fs-3) var(--sans);color:var(--muted-foreground);display:inline-flex;gap:6px;align-items:center;border-radius:16px;transition:transform .18s cubic-bezier(.3,.7,.2,1),box-shadow .2s,background .15s,border-color .15s,color .15s}
1483
+ .c3 .psess:hover{border-color:var(--ring)}
1484
+ .c3 .psess:active{transform:scale(.93)}
1485
+ @media (max-width:760px){.c3 .psess{min-height:44px}}
1486
+ .c3 .psess .c{font:var(--fs-1) var(--mono)}
1487
+
1488
+ /* Time of day (console3 quick fixes R5). data-daypart is set on the page root from the clock: morning, midday, afternoon, evening or night.
1489
+ * Each part sets two tokens, both very faint: --dp-tint (a wash over the page background, alpha 6% or less) and --dp-warm (the colour of the
1490
+ * sun and moon in the daylight strip). Neither reads --brand-mark. The values are built from theme tokens, so they follow the light and dark theme. */
1491
+ .c3[data-daypart="morning"]{--dp-tint:color-mix(in oklab,var(--warning) 4%,transparent);--dp-warm:var(--warning)}
1492
+ .c3[data-daypart="midday"]{--dp-tint:color-mix(in oklab,var(--warning) 3%,transparent);--dp-warm:var(--warning)}
1493
+ .c3[data-daypart="afternoon"]{--dp-tint:color-mix(in oklab,var(--warning) 4%,transparent);--dp-warm:var(--warning)}
1494
+ .c3[data-daypart="evening"]{--dp-tint:color-mix(in oklab,var(--destructive) 4%,transparent);--dp-warm:var(--destructive)}
1495
+ .c3[data-daypart="night"]{--dp-tint:color-mix(in oklab,var(--muted-foreground) 6%,transparent);--dp-warm:var(--foreground)}
1496
+ .c3pg[data-daypart]{background-image:linear-gradient(var(--dp-tint),var(--dp-tint))}
1497
+ /* The daylight strip in the top bar: an arc, a sun or a moon on it, and the two times. 22px tall, well under the 32px limit. */
1498
+ .c3 .c3top .c3pg-daylight{order:1;display:inline-flex;align-items:center;gap:8px;height:22px;max-height:32px;overflow:hidden;font:var(--fs-1)/1 var(--mono);color:var(--muted-foreground);white-space:nowrap}
1499
+ .c3 .c3top .tools{order:2}
1500
+ .c3 .c3pg-daylight .dl-svg{width:56px;height:18px;flex:none;overflow:visible}
1501
+ .c3 .c3pg-daylight .dl-arc{stroke:var(--border);stroke-width:1.2;stroke-dasharray:2 2}
1502
+ .c3 .c3pg-daylight .dl-base{stroke:var(--border);stroke-width:1}
1503
+ .c3 .c3pg-daylight .dl-body{fill:var(--dp-warm,var(--muted-foreground));transition:cx .8s ease,cy .8s ease}
1504
+ .c3 .c3pg-daylight[data-body="moon"] .dl-body{fill:none;stroke:var(--dp-warm,var(--muted-foreground));stroke-width:1.6}
1505
+ /* Reduced motion: the strip keeps its position and times; only the glide stops. */
1506
+ @media (prefers-reduced-motion:reduce){.c3 .c3pg-daylight .dl-body{transition:none}}
1507
+ /* ── R1 and R2: every briefing card has one fixed height; the flip turns it in place ─────────────────────────────────────────────
1508
+ * The card is a fixed box (--fc-h). The front (.ff) and the back (.fb) fill it as two faces. The front clips and clamps its text;
1509
+ * the back scrolls inside. The flip turns each face on rotateY, so the box never changes size and nothing around it moves. */
1510
+ .c3 .deck{--fc-h:312px}
1511
+ @media (max-width:520px){.c3 .deck{--fc-h:372px}}
1512
+ .c3 .fc.flipcard{display:block;height:var(--fc-h);min-height:0;padding:0;overflow:hidden}
1513
+ .c3 .fc.flipcard .ff,.c3 .fc.flipcard .fb{position:absolute;inset:0;box-sizing:border-box;padding:var(--sp-4) 20px 14px;min-height:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;transition:transform .35s cubic-bezier(.2,.7,.2,1),visibility 0s linear .175s}
1514
+ .c3 .fc.flipcard .ff{display:grid;overflow:hidden;transform:perspective(900px) rotateY(0deg)}
1515
+ .c3 .fc.flipcard .fb{display:grid;align-content:start;gap:12px;overflow-y:auto;overscroll-behavior:contain;visibility:hidden;transform:perspective(900px) rotateY(180deg)}
1516
+ .c3 .fc.flipcard.back .ff{display:grid;visibility:hidden;transform:perspective(900px) rotateY(-180deg)}
1517
+ .c3 .fc.flipcard.back .fb{display:grid;visibility:visible;transform:perspective(900px) rotateY(0deg)}
1518
+ .c3 .fc.flipcard.back.on{transform:none;box-shadow:var(--sh2),var(--hi)}
1519
+ @media (hover:hover){
1520
+ .c3 .fc.flipcard.back.on:hover{transform:none;box-shadow:var(--sh2),var(--hi)}
1521
+ }
1522
+ .c3 .fc.flipcard .cf{min-height:0;overflow:hidden}
1523
+ .c3 .fc.flipcard .cf h2{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
1524
+ .c3 .fc.flipcard .cf .cfs{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
1525
+ .c3 .fc.flipcard .cf .cfx{max-height:calc(2 * 1.6em);overflow:hidden}
1526
+ .c3 .fc.flipcard .cf .cff{min-width:0}
1527
+ .c3 .fc.flipcard .cf .hero{max-height:176px;overflow:hidden}
1528
+ @media (prefers-reduced-motion:reduce){
1529
+ .c3 .fc.flipcard .ff,.c3 .fc.flipcard .fb{transition:none}
1530
+ }
1531
+
1532
+ /* ── R3: with a fine pointer the slide gives way to a compact button ─────────────────────────────────────────────────────────────
1533
+ * Press and hold for 600 ms fills the ring (an act that cannot be undone); one click does the act that can be undone; the keyboard
1534
+ * path is Enter, then a Confirm button. On touch the slide stays, and it is at most 320 px wide. */
1535
+ .c3 .c3slide .slt,.c3 .c3slide .slt-hint{max-width:320px}
1536
+ .c3 .c3hold{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap}
1537
+ .c3 .c3hold .hb{--tc:var(--acc);position:relative;display:inline-flex;gap:8px;align-items:center;min-height:36px;padding:4px 14px 4px 6px;border-radius:6px;border:1px solid color-mix(in oklab,var(--tc) 40%,var(--border));background:color-mix(in oklab,var(--tc) 10%,var(--card));color:var(--foreground);font:500 var(--fs-2) var(--mono);cursor:pointer;user-select:none;touch-action:none}
1538
+ .c3 .c3hold .hb.alt{--tc:var(--muted-foreground)}
1539
+ .c3 .c3hold .hb:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
1540
+ .c3 .c3hold .hb svg.hr{width:26px;height:26px;flex:none}
1541
+ .c3 .c3hold .hb svg.hr circle{fill:none;stroke-width:3}
1542
+ .c3 .c3hold .hb svg.hr .tk{stroke:var(--muted)}
1543
+ .c3 .c3hold .hb svg.hr .fl{stroke:var(--tc);stroke-linecap:round;stroke-dasharray:62.8;stroke-dashoffset:62.8;transform:rotate(-90deg);transform-origin:50% 50%;transition:stroke-dashoffset .2s ease-out}
1544
+ .c3 .c3hold .hb.holding svg.hr .fl{stroke-dashoffset:0;transition:stroke-dashoffset 600ms linear}
1545
+ .c3 .c3hold .hb.off{opacity:.55;cursor:not-allowed}
1546
+ .c3 .c3hold .hint{font:var(--fs-1) var(--mono);color:var(--muted-foreground)}
1547
+ .c3 .c3hold .cq{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;font:var(--fs-2) var(--mono)}