profileShare

rasmusjy / voicetask

Read-only snapshot

No repository description.

main default branch 105 files Expires Sep 13, 2026, 9:06 AM
App.css 37,753 bytes
1 .screen {
2 position: relative;
3 max-width: 680px;
4 margin: 0 auto;
5 padding: 32px 24px 80px;
6 }
7
8 .muted {
9 color: var(--ink-soft);
10 }
11
12 .error {
13 color: var(--danger);
14 margin-top: 12px;
15 font-size: 14px;
16 text-align: center;
17 }
18
19 .home-screen {
20 max-width: 1160px;
21 padding-top: 36px;
22 }
23
24 .home-nav {
25 display: flex;
26 align-items: center;
27 justify-content: space-between;
28 gap: 20px;
29 margin-bottom: 72px;
30 animation: rise 0.7s ease both;
31 }
32
33 .wordmark {
34 font-family: var(--serif);
35 font-size: 25px;
36 font-weight: 750;
37 letter-spacing: -0.04em;
38 }
39
40 .wordmark-dot {
41 color: var(--pulse);
42 }
43
44 .local-badge {
45 display: inline-flex;
46 align-items: center;
47 gap: 8px;
48 padding: 8px 12px;
49 border: 1px solid var(--line);
50 border-radius: 999px;
51 background: color-mix(in srgb, var(--card) 80%, transparent);
52 color: var(--ink-soft);
53 font-size: 13px;
54 font-weight: 600;
55 }
56
57 .local-badge > span {
58 width: 8px;
59 height: 8px;
60 border-radius: 50%;
61 background: var(--moss);
62 box-shadow: 0 0 0 4px color-mix(in srgb, var(--moss) 13%, transparent);
63 }
64
65 .home-main {
66 display: grid;
67 grid-template-columns: minmax(0, 1.12fr) minmax(360px, 0.88fr);
68 gap: 72px;
69 align-items: start;
70 }
71
72 .home-intro {
73 padding-top: 14px;
74 animation: rise 0.65s 0.05s ease both;
75 }
76
77 .eyebrow,
78 .card-kicker {
79 margin: 0 0 14px;
80 color: var(--clay);
81 font-size: 12px;
82 font-weight: 700;
83 letter-spacing: 0.13em;
84 text-transform: uppercase;
85 }
86
87 .home-intro h1 {
88 max-width: 700px;
89 margin: 0;
90 font-size: clamp(45px, 5.2vw, 72px);
91 line-height: 1.02;
92 letter-spacing: -0.055em;
93 text-wrap: balance;
94 }
95
96 .hero-copy {
97 max-width: 610px;
98 margin-top: 24px;
99 color: var(--ink-soft);
100 font-size: 19px;
101 line-height: 1.55;
102 }
103
104 .privacy-note {
105 display: flex;
106 align-items: center;
107 gap: 12px;
108 max-width: 560px;
109 margin-top: 24px;
110 color: var(--ink-soft);
111 font-size: 14px;
112 }
113
114 .privacy-note strong {
115 color: var(--ink);
116 font-weight: 700;
117 }
118
119 .privacy-icon {
120 position: relative;
121 width: 30px;
122 height: 30px;
123 flex: 0 0 30px;
124 border: 1px solid color-mix(in srgb, var(--moss) 34%, var(--line));
125 border-radius: 10px;
126 background: color-mix(in srgb, var(--moss) 9%, var(--card));
127 }
128
129 .privacy-icon::before {
130 content: '';
131 position: absolute;
132 left: 9px;
133 top: 6px;
134 width: 10px;
135 height: 10px;
136 border: 2px solid var(--moss);
137 border-bottom: 0;
138 border-radius: 8px 8px 0 0;
139 }
140
141 .privacy-icon > span {
142 position: absolute;
143 left: 7px;
144 top: 13px;
145 width: 14px;
146 height: 11px;
147 border-radius: 4px;
148 background: var(--moss);
149 }
150
151 .start-card {
152 padding: 30px;
153 border: 1px solid color-mix(in srgb, var(--clay) 18%, var(--line));
154 border-radius: 24px;
155 background: var(--card);
156 box-shadow: 0 28px 70px -44px rgba(32, 37, 92, 0.48);
157 animation: rise 0.65s 0.12s ease both;
158 }
159
160 .start-card h2 {
161 margin: 0;
162 font-size: 28px;
163 line-height: 1.2;
164 letter-spacing: -0.035em;
165 }
166
167 .card-kicker {
168 margin-bottom: 10px;
169 }
170
171 .card-intro {
172 margin-top: 9px;
173 color: var(--ink-soft);
174 font-size: 15px;
175 }
176
177 .create-form {
178 display: flex;
179 flex-direction: column;
180 gap: 24px;
181 margin-top: 28px;
182 }
183
184 .form-field {
185 display: flex;
186 flex-direction: column;
187 align-items: stretch;
188 }
189
190 .form-field > label,
191 .field-label {
192 color: var(--ink);
193 font-size: 14px;
194 font-weight: 700;
195 }
196
197 .form-field > p {
198 margin: 4px 0 10px;
199 color: var(--ink-soft);
200 font-size: 13px;
201 line-height: 1.45;
202 }
203
204 .create-form input,
205 .provider-form input,
206 .folder-field input {
207 width: 100%;
208 padding: 12px 14px;
209 border: 1.5px solid var(--line);
210 border-radius: 12px;
211 background: var(--card);
212 color: var(--ink);
213 font-size: 15px;
214 transition: border-color 0.2s ease, box-shadow 0.2s ease;
215 }
216
217 .create-form input:focus,
218 .provider-form input:focus,
219 .folder-field input:focus {
220 outline: none;
221 border-color: var(--clay);
222 box-shadow: 0 0 0 4px color-mix(in srgb, var(--clay) 10%, transparent);
223 }
224
225 .create-form input::placeholder,
226 .provider-form input::placeholder {
227 color: var(--ink-soft);
228 opacity: 0.62;
229 }
230
231 .btn-primary {
232 padding: 12px 22px;
233 border: none;
234 border-radius: 12px;
235 background: var(--clay);
236 color: var(--card);
237 font-size: 15px;
238 font-weight: 700;
239 cursor: pointer;
240 transition: background 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
241 box-shadow: 0 10px 24px -14px color-mix(in srgb, var(--clay) 72%, transparent);
242 }
243
244 .btn-primary:hover:not(:disabled) {
245 background: var(--clay-deep);
246 transform: translateY(-2px);
247 box-shadow: 0 14px 30px -16px color-mix(in srgb, var(--clay) 76%, transparent);
248 }
249
250 .btn-primary:disabled {
251 opacity: 0.55;
252 cursor: default;
253 }
254
255 .folder-field {
256 display: flex;
257 gap: 10px;
258 }
259
260 .folder-field input {
261 flex: 1;
262 }
263
264 .choose-folder-button {
265 width: 100%;
266 padding: 12px 16px;
267 border: 1.5px solid var(--clay);
268 border-radius: 12px;
269 background: var(--clay-soft);
270 color: var(--clay-deep);
271 cursor: pointer;
272 font-size: 14px;
273 font-weight: 700;
274 transition: background 0.2s ease, transform 0.2s ease;
275 }
276
277 .choose-folder-button:hover {
278 background: color-mix(in srgb, var(--clay-soft) 70%, var(--card));
279 transform: translateY(-1px);
280 }
281
282 .selected-folder {
283 display: flex;
284 align-items: flex-start;
285 gap: 8px;
286 padding: 10px 12px;
287 border-radius: 10px;
288 background: color-mix(in srgb, var(--moss) 8%, var(--card));
289 color: var(--ink) !important;
290 font-family: var(--mono);
291 font-size: 12px !important;
292 overflow-wrap: anywhere;
293 }
294
295 .selected-folder span {
296 color: var(--moss);
297 font-family: var(--sans);
298 font-weight: 700;
299 }
300
301 .path-label {
302 margin: 14px 0 7px;
303 color: var(--ink-soft) !important;
304 font-size: 12px !important;
305 font-weight: 600 !important;
306 }
307
308 .start-button {
309 width: 100%;
310 min-height: 48px;
311 margin-top: 2px;
312 }
313
314 .form-footnote {
315 margin-top: -14px;
316 color: var(--ink-soft);
317 font-size: 12px;
318 text-align: center;
319 }
320
321 .start-card > .error {
322 text-align: left;
323 }
324
325 .home-nav-status {
326 display: flex;
327 flex-wrap: wrap;
328 align-items: center;
329 gap: 10px;
330 }
331
332 .connection-chip {
333 display: inline-flex;
334 align-items: center;
335 gap: 8px;
336 padding: 8px 12px;
337 border: 1px solid var(--line);
338 border-radius: 999px;
339 background: color-mix(in srgb, var(--card) 80%, transparent);
340 color: var(--ink-soft);
341 font-size: 13px;
342 font-weight: 600;
343 }
344
345 .connection-chip::before {
346 content: '';
347 width: 8px;
348 height: 8px;
349 border-radius: 50%;
350 background: var(--clay);
351 }
352
353 .connection-chip.mode-demo::before {
354 background: var(--amber);
355 }
356
357 .connection-chip.mode-unconfigured {
358 border-color: color-mix(in srgb, var(--pulse) 45%, var(--line));
359 background: var(--pulse-soft);
360 color: var(--ink);
361 }
362
363 .connection-chip.mode-unconfigured::before {
364 background: var(--pulse);
365 }
366
367 button.connection-chip {
368 cursor: pointer;
369 transition: border-color 0.2s ease, color 0.2s ease;
370 }
371
372 button.connection-chip:hover {
373 border-color: var(--clay);
374 color: var(--clay-deep);
375 }
376
377 .provider-form {
378 display: flex;
379 flex-direction: column;
380 gap: 22px;
381 margin-top: 26px;
382 }
383
384 .provider-alt {
385 display: flex;
386 align-items: center;
387 gap: 12px;
388 margin: 22px 0 16px;
389 color: var(--ink-soft);
390 font-size: 12px;
391 font-weight: 600;
392 text-transform: uppercase;
393 letter-spacing: 0.08em;
394 }
395
396 .provider-alt::before,
397 .provider-alt::after {
398 content: '';
399 flex: 1;
400 height: 1px;
401 background: var(--line);
402 }
403
404 .provider-note {
405 margin-top: 14px;
406 padding: 10px 12px;
407 border-radius: 10px;
408 background: color-mix(in srgb, var(--amber) 10%, var(--card));
409 color: var(--ink);
410 font-size: 13px;
411 }
412
413 .provider-close {
414 margin-top: 18px;
415 padding: 0;
416 border: none;
417 background: none;
418 color: var(--clay-deep);
419 font-size: 14px;
420 font-weight: 700;
421 cursor: pointer;
422 }
423
424 .provider-close:hover {
425 text-decoration: underline;
426 }
427
428 .outcome-preview {
429 position: relative;
430 display: grid;
431 grid-template-columns: minmax(0, 0.82fr) 50px minmax(0, 1fr);
432 align-items: center;
433 gap: 0;
434 max-width: 650px;
435 margin: 38px 0 0;
436 padding: 16px;
437 border: 1px solid color-mix(in srgb, var(--clay) 16%, var(--line));
438 border-radius: 20px;
439 background: color-mix(in srgb, var(--card) 88%, var(--clay-soft));
440 box-shadow: 0 24px 54px -46px rgba(32, 37, 92, 0.7);
441 }
442
443 .preview-conversation,
444 .preview-requirement {
445 min-height: 132px;
446 padding: 16px;
447 border-radius: 14px;
448 }
449
450 .preview-conversation {
451 display: flex;
452 flex-direction: column;
453 justify-content: space-between;
454 background: var(--ink);
455 color: var(--card);
456 }
457
458 .preview-label {
459 color: color-mix(in srgb, var(--card) 68%, transparent);
460 font-size: 10px;
461 font-weight: 700;
462 letter-spacing: 0.11em;
463 text-transform: uppercase;
464 }
465
466 .preview-conversation blockquote {
467 margin: 12px 0 14px;
468 font-size: 14px;
469 line-height: 1.4;
470 }
471
472 .preview-wave {
473 display: flex;
474 align-items: center;
475 gap: 3px;
476 height: 20px;
477 }
478
479 .preview-wave span {
480 width: 3px;
481 height: 4px;
482 border-radius: 2px;
483 background: var(--pulse);
484 }
485
486 .preview-wave span:nth-child(3n + 1) {
487 height: 12px;
488 }
489
490 .preview-wave span:nth-child(4n + 2) {
491 height: 18px;
492 }
493
494 .preview-connector {
495 position: relative;
496 height: 2px;
497 background: var(--clay);
498 }
499
500 .preview-connector::before,
501 .preview-connector::after {
502 content: '';
503 position: absolute;
504 top: 50%;
505 border-radius: 50%;
506 background: var(--clay);
507 transform: translateY(-50%);
508 }
509
510 .preview-connector::before {
511 left: -3px;
512 width: 8px;
513 height: 8px;
514 }
515
516 .preview-connector::after {
517 right: -3px;
518 width: 10px;
519 height: 10px;
520 }
521
522 .preview-connector span::after {
523 content: '';
524 position: absolute;
525 right: -2px;
526 top: 50%;
527 width: 7px;
528 height: 7px;
529 border-top: 2px solid var(--card);
530 border-right: 2px solid var(--card);
531 transform: translateY(-50%) rotate(45deg);
532 }
533
534 .preview-requirement {
535 border: 1px solid var(--line);
536 background: var(--card);
537 }
538
539 .preview-document-header {
540 display: flex;
541 justify-content: space-between;
542 gap: 10px;
543 padding-bottom: 10px;
544 border-bottom: 1px solid var(--line);
545 color: var(--ink-soft);
546 font-family: var(--mono);
547 font-size: 10px;
548 }
549
550 .preview-requirement p {
551 margin: 15px 0 13px;
552 color: var(--ink);
553 font-size: 14px;
554 font-weight: 650;
555 line-height: 1.4;
556 }
557
558 .source-marker {
559 display: inline-flex;
560 padding: 4px 7px;
561 border-radius: 6px;
562 background: var(--clay-soft);
563 color: var(--clay-deep);
564 font-family: var(--mono);
565 font-size: 10px;
566 }
567
568 .outcome-preview figcaption {
569 grid-column: 1 / -1;
570 margin: 12px 2px 0;
571 color: var(--ink-soft);
572 font-size: 12px;
573 }
574
575 .process-section {
576 display: grid;
577 grid-template-columns: minmax(220px, 0.72fr) minmax(0, 1.58fr);
578 gap: 54px;
579 margin-top: 96px;
580 padding: 38px 0;
581 border-top: 1px solid var(--line);
582 border-bottom: 1px solid var(--line);
583 }
584
585 .process-heading h2 {
586 margin: 0;
587 font-size: 29px;
588 line-height: 1.2;
589 letter-spacing: -0.035em;
590 }
591
592 .process-steps {
593 display: grid;
594 grid-template-columns: repeat(3, 1fr);
595 gap: 28px;
596 margin: 0;
597 padding: 0;
598 list-style: none;
599 }
600
601 .process-steps li {
602 display: flex;
603 gap: 13px;
604 }
605
606 .step-number {
607 display: inline-flex;
608 align-items: center;
609 justify-content: center;
610 width: 28px;
611 height: 28px;
612 flex: 0 0 28px;
613 border-radius: 9px;
614 background: var(--ink);
615 color: var(--card);
616 font-family: var(--mono);
617 font-size: 12px;
618 }
619
620 .process-steps h3 {
621 margin: 2px 0 7px;
622 font-family: var(--serif);
623 font-size: 15px;
624 }
625
626 .process-steps p {
627 color: var(--ink-soft);
628 font-size: 13px;
629 line-height: 1.5;
630 }
631
632 /* Folder browser modal */
633
634 .folder-browser-overlay {
635 position: fixed;
636 inset: 0;
637 background: rgba(23, 25, 45, 0.48);
638 display: flex;
639 align-items: center;
640 justify-content: center;
641 z-index: 10;
642 padding: 16px;
643 }
644
645 .folder-browser {
646 background: var(--card);
647 border-radius: 16px;
648 padding: 24px;
649 width: 100%;
650 max-width: 480px;
651 max-height: 80vh;
652 display: flex;
653 flex-direction: column;
654 gap: 14px;
655 box-shadow: 0 24px 60px -24px rgba(23, 25, 45, 0.5);
656 }
657
658 .folder-browser h2 {
659 font-size: 19px;
660 }
661
662 .folder-browser-path {
663 font-size: 13px;
664 color: var(--ink-soft);
665 word-break: break-all;
666 background: var(--paper-deep);
667 padding: 8px 10px;
668 border-radius: 8px;
669 }
670
671 .folder-browser-list {
672 overflow-y: auto;
673 max-height: 40vh;
674 display: flex;
675 flex-direction: column;
676 gap: 4px;
677 border: 1px solid var(--line);
678 border-radius: 10px;
679 padding: 6px;
680 }
681
682 .folder-browser-entry {
683 text-align: left;
684 padding: 8px 10px;
685 border: none;
686 background: none;
687 border-radius: 8px;
688 cursor: pointer;
689 color: var(--ink);
690 font-size: 14px;
691 }
692
693 .folder-browser-entry:hover {
694 background: var(--paper-deep);
695 }
696
697 .folder-browser-new {
698 display: flex;
699 gap: 8px;
700 }
701
702 .folder-browser-new input {
703 flex: 1;
704 padding: 8px 10px;
705 border: 1.5px solid var(--line);
706 border-radius: 8px;
707 background: transparent;
708 color: var(--ink);
709 }
710
711 .folder-browser-actions {
712 display: flex;
713 justify-content: flex-end;
714 gap: 8px;
715 }
716
717 .folder-browser-actions button,
718 .folder-browser-new button {
719 padding: 8px 16px;
720 border-radius: 999px;
721 border: 1.5px solid var(--line);
722 background: transparent;
723 color: var(--ink);
724 cursor: pointer;
725 font-size: 14px;
726 transition: background 0.25s ease, border-color 0.25s ease;
727 }
728
729 .folder-browser-actions button:hover:not(:disabled),
730 .folder-browser-new button:hover:not(:disabled) {
731 background: var(--paper-deep);
732 border-color: var(--clay);
733 }
734
735 .folder-browser-actions button.primary {
736 background: var(--clay);
737 color: var(--card);
738 border-color: var(--clay);
739 }
740
741 .folder-browser-actions button.primary:hover:not(:disabled) {
742 background: var(--clay-deep);
743 }
744
745 .folder-browser button:disabled {
746 opacity: 0.55;
747 cursor: default;
748 }
749
750 .session-list {
751 margin: 72px 0 0;
752 animation: rise 0.7s 0.22s ease both;
753 }
754
755 .session-list-heading {
756 display: flex;
757 align-items: flex-end;
758 justify-content: space-between;
759 gap: 20px;
760 margin-bottom: 16px;
761 }
762
763 .session-list-heading .eyebrow {
764 margin-bottom: 6px;
765 }
766
767 .session-list h2 {
768 margin: 0;
769 font-size: 26px;
770 letter-spacing: -0.035em;
771 }
772
773 .session-list-heading > span {
774 display: inline-flex;
775 align-items: center;
776 justify-content: center;
777 min-width: 34px;
778 height: 28px;
779 padding: 0 9px;
780 border-radius: 9px;
781 background: var(--paper-deep);
782 color: var(--ink-soft);
783 font-family: var(--mono);
784 font-size: 12px;
785 }
786
787 .session-list ul {
788 display: grid;
789 grid-template-columns: repeat(2, minmax(0, 1fr));
790 gap: 12px;
791 margin: 0;
792 padding: 0;
793 list-style: none;
794 }
795
796 .session-row {
797 display: flex;
798 align-items: center;
799 gap: 2px;
800 min-width: 0;
801 padding-right: 8px;
802 border: 1px solid var(--line);
803 border-radius: 14px;
804 background: var(--card);
805 transition: border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
806 }
807
808 .session-row:hover {
809 border-color: color-mix(in srgb, var(--clay) 34%, var(--line));
810 transform: translateY(-1px);
811 box-shadow: 0 12px 28px -24px rgba(32, 37, 92, 0.6);
812 }
813
814 .session-row .session-item {
815 flex: 1;
816 min-width: 0;
817 }
818
819 .session-delete {
820 border: none;
821 background: none;
822 color: var(--ink-soft);
823 font-size: 11px;
824 font-weight: 700;
825 line-height: 1;
826 padding: 9px;
827 cursor: pointer;
828 opacity: 0.56;
829 transition: opacity 0.2s ease, color 0.2s ease;
830 }
831
832 .session-row:hover .session-delete,
833 .session-delete:focus-visible {
834 opacity: 1;
835 }
836
837 .session-delete:hover {
838 color: var(--danger);
839 }
840
841 .session-meta {
842 display: flex;
843 align-items: center;
844 gap: 12px;
845 flex-shrink: 0;
846 }
847
848 .session-date {
849 font-size: 12px;
850 color: var(--ink-soft);
851 }
852
853 .session-item {
854 display: flex;
855 justify-content: space-between;
856 align-items: center;
857 gap: 16px;
858 width: 100%;
859 padding: 15px 12px 15px 16px;
860 border: none;
861 background: transparent;
862 cursor: pointer;
863 color: var(--ink);
864 text-align: left;
865 font-size: 15px;
866 }
867
868 .session-item:hover .session-name {
869 color: var(--clay-deep);
870 }
871
872 .session-name {
873 overflow: hidden;
874 font-weight: 650;
875 text-overflow: ellipsis;
876 white-space: nowrap;
877 transition: color 0.25s ease;
878 }
879
880 .session-status {
881 font-size: 11px;
882 text-transform: uppercase;
883 letter-spacing: 0.1em;
884 color: var(--ink-soft);
885 }
886
887 .session-status.status-done {
888 color: var(--moss);
889 }
890
891 /* ---------- Topbar ---------- */
892
893 .topbar {
894 display: flex;
895 align-items: center;
896 gap: 16px;
897 flex-wrap: wrap;
898 margin-bottom: 22px;
899 }
900
901 .topbar-actions {
902 display: flex;
903 align-items: center;
904 gap: 16px;
905 flex-wrap: wrap;
906 margin-left: auto;
907 }
908
909 .transcript-export {
910 display: flex;
911 flex-direction: column;
912 align-items: center;
913 gap: 8px;
914 }
915
916 .transcript-export-actions {
917 display: flex;
918 align-items: center;
919 gap: 8px;
920 }
921
922 .transcript-export-actions button {
923 padding: 6px 12px;
924 border-radius: 999px;
925 border: 1.5px solid var(--line);
926 background: transparent;
927 color: var(--ink);
928 cursor: pointer;
929 font-size: 13px;
930 transition: background 0.25s ease, border-color 0.25s ease;
931 }
932
933 .transcript-export-actions button:hover {
934 background: var(--paper-deep);
935 border-color: var(--clay);
936 }
937
938 .copy-error {
939 max-width: 240px;
940 color: var(--danger);
941 font-size: 11px;
942 line-height: 1.35;
943 text-align: right;
944 }
945
946 .download-link {
947 padding: 6px 12px;
948 border-radius: 999px;
949 border: 1.5px solid var(--line);
950 background: transparent;
951 color: var(--ink);
952 font-size: 13px;
953 text-decoration: none;
954 display: inline-block;
955 transition: background 0.25s ease, border-color 0.25s ease;
956 }
957
958 .download-link:hover {
959 background: var(--paper-deep);
960 border-color: var(--clay);
961 }
962
963 .back-link {
964 background: none;
965 border: none;
966 color: var(--ink-soft);
967 cursor: pointer;
968 padding: 0;
969 font-size: 14px;
970 transition: color 0.2s ease;
971 }
972
973 .back-link:hover {
974 color: var(--clay-deep);
975 }
976
977 .topbar-title {
978 flex: 1;
979 text-align: center;
980 font-family: var(--serif);
981 font-size: 17px;
982 color: var(--ink);
983 overflow: hidden;
984 text-overflow: ellipsis;
985 white-space: nowrap;
986 }
987
988 .tts-toggle {
989 display: flex;
990 align-items: center;
991 gap: 8px;
992 font-size: 13px;
993 color: var(--ink-soft);
994 cursor: pointer;
995 user-select: none;
996 }
997
998 .tts-toggle input {
999 position: absolute;
1000 opacity: 0;
1001 pointer-events: none;
1002 }
1003
1004 .tts-track {
1005 width: 34px;
1006 height: 20px;
1007 border-radius: 999px;
1008 background: var(--line);
1009 position: relative;
1010 transition: background 0.25s ease;
1011 flex-shrink: 0;
1012 }
1013
1014 .tts-track::after {
1015 content: '';
1016 position: absolute;
1017 top: 3px;
1018 left: 3px;
1019 width: 14px;
1020 height: 14px;
1021 border-radius: 50%;
1022 background: var(--card);
1023 box-shadow: 0 1px 3px rgba(23, 25, 45, 0.25);
1024 transition: transform 0.25s cubic-bezier(0.34, 1.4, 0.64, 1);
1025 }
1026
1027 .tts-toggle input:checked + .tts-track {
1028 background: var(--clay);
1029 }
1030
1031 .tts-toggle input:focus-visible + .tts-track {
1032 outline: 3px solid color-mix(in srgb, var(--clay) 38%, transparent);
1033 outline-offset: 3px;
1034 }
1035
1036 .tts-toggle input:checked + .tts-track::after {
1037 transform: translateX(14px);
1038 }
1039
1040 .coverage-card {
1041 margin-bottom: 30px;
1042 padding: 18px;
1043 border: 1px solid var(--line);
1044 border-radius: 18px;
1045 background: color-mix(in srgb, var(--card) 88%, var(--clay-soft));
1046 }
1047
1048 .coverage-heading {
1049 display: flex;
1050 align-items: center;
1051 justify-content: space-between;
1052 gap: 20px;
1053 }
1054
1055 .coverage-kicker {
1056 margin-bottom: 3px;
1057 color: var(--clay);
1058 font-size: 10px;
1059 font-weight: 700;
1060 letter-spacing: 0.12em;
1061 text-transform: uppercase;
1062 }
1063
1064 .coverage-heading h2 {
1065 margin: 0;
1066 font-family: var(--sans);
1067 font-size: 16px;
1068 font-weight: 700;
1069 letter-spacing: -0.02em;
1070 }
1071
1072 .coverage-fraction {
1073 display: inline-flex;
1074 align-items: center;
1075 justify-content: center;
1076 min-width: 45px;
1077 height: 32px;
1078 padding: 0 8px;
1079 border-radius: 10px;
1080 background: var(--ink);
1081 color: var(--card);
1082 font-family: var(--mono);
1083 font-size: 12px;
1084 }
1085
1086 .coverage-track {
1087 height: 7px;
1088 margin-top: 14px;
1089 overflow: hidden;
1090 border-radius: 999px;
1091 background: var(--paper-deep);
1092 }
1093
1094 .coverage-track > span {
1095 display: block;
1096 width: 0;
1097 height: 100%;
1098 border-radius: inherit;
1099 background: var(--moss);
1100 transition: width 0.45s ease;
1101 }
1102
1103 .coverage-progress {
1104 margin: 8px 0 14px;
1105 color: var(--ink-soft);
1106 font-size: 12px;
1107 }
1108
1109 .coverage-panel {
1110 display: grid;
1111 grid-template-columns: repeat(3, minmax(0, 1fr));
1112 gap: 7px;
1113 margin: 0;
1114 padding: 0;
1115 list-style: none;
1116 }
1117
1118 .coverage-item {
1119 display: flex;
1120 align-items: center;
1121 gap: 8px;
1122 min-width: 0;
1123 padding: 8px 9px;
1124 border: 1px solid var(--line);
1125 border-radius: 10px;
1126 background: var(--card);
1127 color: var(--ink-soft);
1128 transition: color 0.3s ease, border-color 0.3s ease, background 0.3s ease;
1129 }
1130
1131 .coverage-item-copy {
1132 display: flex;
1133 flex-direction: column;
1134 min-width: 0;
1135 }
1136
1137 .coverage-item-copy > span:first-child {
1138 overflow: hidden;
1139 color: var(--ink);
1140 font-size: 11px;
1141 font-weight: 650;
1142 text-overflow: ellipsis;
1143 white-space: nowrap;
1144 }
1145
1146 .coverage-status {
1147 color: var(--ink-soft);
1148 font-size: 9px;
1149 font-weight: 600;
1150 }
1151
1152 .coverage-dot {
1153 width: 8px;
1154 height: 8px;
1155 flex-shrink: 0;
1156 border: 1.5px solid var(--line);
1157 border-radius: 50%;
1158 background: transparent;
1159 transition: background 0.3s ease, border-color 0.3s ease;
1160 }
1161
1162 .coverage-partial {
1163 border-color: color-mix(in srgb, var(--amber) 38%, var(--line));
1164 background: color-mix(in srgb, var(--amber) 6%, var(--card));
1165 }
1166
1167 .coverage-partial .coverage-dot {
1168 border-color: var(--amber);
1169 background: color-mix(in srgb, var(--amber) 38%, transparent);
1170 }
1171
1172 .coverage-clear {
1173 border-color: color-mix(in srgb, var(--moss) 32%, var(--line));
1174 background: color-mix(in srgb, var(--moss) 6%, var(--card));
1175 }
1176
1177 .coverage-clear .coverage-dot {
1178 border-color: var(--moss);
1179 background: var(--moss);
1180 }
1181
1182 /* ---------- Stage ---------- */
1183
1184 .stage {
1185 display: flex;
1186 flex-direction: column;
1187 align-items: center;
1188 text-align: center;
1189 }
1190
1191 .question {
1192 max-width: 520px;
1193 margin: 26px 0 8px;
1194 animation: rise 0.5s ease both;
1195 }
1196
1197 .question-text {
1198 font-family: var(--serif);
1199 font-size: 26px;
1200 line-height: 1.35;
1201 font-weight: 450;
1202 color: var(--ink);
1203 text-wrap: balance;
1204 }
1205
1206 .status-caption {
1207 font-size: 13px;
1208 letter-spacing: 0.01em;
1209 color: var(--ink-soft);
1210 margin: 4px 0 18px;
1211 min-height: 20px;
1212 max-width: 420px;
1213 }
1214
1215 /* ---------- Orb ---------- */
1216
1217 .orb-wrap {
1218 position: relative;
1219 width: 148px;
1220 height: 148px;
1221 margin-top: 10px;
1222 flex-shrink: 0;
1223 }
1224
1225 .orb {
1226 position: absolute;
1227 inset: 0;
1228 border-radius: 50%;
1229 background:
1230 radial-gradient(circle at 33% 26%, #fff0ed 0%, #ffb3a6 36%, #ff705c 68%, #5c63dc 112%);
1231 box-shadow:
1232 inset -8px -12px 24px rgba(90, 46, 126, 0.24),
1233 inset 6px 8px 18px rgba(255, 255, 255, 0.58),
1234 0 18px 40px -18px rgba(72, 86, 232, 0.5);
1235 animation: breathe 5.2s ease-in-out infinite;
1236 }
1237
1238 .orb-face {
1239 position: absolute;
1240 inset: 0;
1241 display: flex;
1242 flex-direction: column;
1243 align-items: center;
1244 justify-content: center;
1245 gap: 10px;
1246 }
1247
1248 .orb-eyes {
1249 display: flex;
1250 gap: 26px;
1251 }
1252
1253 .orb-eye {
1254 width: 9px;
1255 height: 22px;
1256 border-radius: 6px;
1257 background: var(--ink);
1258 animation: blink 5.4s ease-in-out infinite;
1259 transition: transform 0.3s ease;
1260 }
1261
1262 .orb-mouth {
1263 display: flex;
1264 align-items: center;
1265 gap: 3px;
1266 height: 14px;
1267 opacity: 0;
1268 transition: opacity 0.25s ease;
1269 }
1270
1271 .orb-mouth-bar {
1272 width: 3.5px;
1273 height: 4px;
1274 border-radius: 2px;
1275 background: var(--ink);
1276 }
1277
1278 /* level ring, driven by mic input via JS */
1279 .orb-level-ring {
1280 position: absolute;
1281 inset: -14px;
1282 border-radius: 50%;
1283 border: 2px solid var(--clay);
1284 opacity: 0;
1285 transition: opacity 0.3s ease;
1286 will-change: transform, opacity;
1287 }
1288
1289 .orb-ripple {
1290 position: absolute;
1291 inset: -6px;
1292 border-radius: 50%;
1293 border: 1.5px solid var(--clay);
1294 opacity: 0;
1295 }
1296
1297 /* states */
1298
1299 .orb-listening .orb-ripple-1 {
1300 animation: ripple 1.9s ease-out infinite;
1301 }
1302
1303 .orb-listening .orb-ripple-2 {
1304 animation: ripple 1.9s 0.65s ease-out infinite;
1305 }
1306
1307 .orb-listening .orb-eye {
1308 transform: scaleY(1.12);
1309 }
1310
1311 .orb-thinking .orb {
1312 animation: bob 1.6s ease-in-out infinite;
1313 }
1314
1315 .orb-thinking .orb-eye {
1316 transform: scaleY(0.22) translateY(6px);
1317 animation: none;
1318 }
1319
1320 .orb-speaking .orb-mouth {
1321 opacity: 1;
1322 }
1323
1324 .orb-speaking .orb-mouth-bar {
1325 animation: talk 0.55s ease-in-out infinite;
1326 }
1327
1328 .orb-speaking .orb-mouth-bar:nth-child(2) {
1329 animation-delay: 0.12s;
1330 }
1331
1332 .orb-speaking .orb-mouth-bar:nth-child(3) {
1333 animation-delay: 0.24s;
1334 }
1335
1336 .orb-speaking .orb-mouth-bar:nth-child(4) {
1337 animation-delay: 0.36s;
1338 }
1339
1340 /* ---------- Waveform ---------- */
1341
1342 .waveform {
1343 display: flex;
1344 align-items: center;
1345 justify-content: center;
1346 gap: 3px;
1347 height: 44px;
1348 margin-top: 14px;
1349 }
1350
1351 .waveform-bar {
1352 width: 2.5px;
1353 height: 38px;
1354 border-radius: 2px;
1355 background: var(--clay);
1356 transform: scaleY(0.08);
1357 transform-origin: center;
1358 transition: background 0.3s ease, opacity 0.3s ease;
1359 will-change: transform;
1360 }
1361
1362 .waveform-idle .waveform-bar {
1363 opacity: 0.28;
1364 background: var(--ink-soft);
1365 }
1366
1367 .waveform-simulated .waveform-bar {
1368 animation: wave 0.8s ease-in-out infinite alternate;
1369 }
1370
1371 /* ---------- Mic + answer ---------- */
1372
1373 .push-to-talk {
1374 display: flex;
1375 flex-direction: column;
1376 align-items: center;
1377 gap: 8px;
1378 margin-bottom: 18px;
1379 }
1380
1381 .mic-button {
1382 display: inline-flex;
1383 align-items: center;
1384 justify-content: center;
1385 gap: 10px;
1386 min-width: 168px;
1387 min-height: 52px;
1388 padding: 0 20px;
1389 border: 1.5px solid var(--line);
1390 border-radius: 14px;
1391 background: var(--card);
1392 color: var(--ink);
1393 cursor: pointer;
1394 font-size: 14px;
1395 font-weight: 700;
1396 transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease,
1397 transform 0.2s ease, box-shadow 0.3s ease;
1398 box-shadow: 0 10px 24px -14px rgba(23, 25, 45, 0.4);
1399 }
1400
1401 .mic-button:hover:not(:disabled) {
1402 border-color: var(--clay);
1403 color: var(--clay-deep);
1404 transform: translateY(-1px);
1405 }
1406
1407 .mic-button.recording {
1408 background: var(--pulse);
1409 border-color: var(--pulse);
1410 color: var(--card);
1411 box-shadow: 0 0 0 8px color-mix(in srgb, var(--pulse) 13%, transparent),
1412 0 14px 30px -14px color-mix(in srgb, var(--pulse) 72%, transparent);
1413 }
1414
1415 .mic-button:disabled {
1416 opacity: 0.5;
1417 cursor: default;
1418 }
1419
1420 .mic-hint {
1421 font-size: 12px;
1422 line-height: 1.45;
1423 color: var(--ink-soft);
1424 max-width: 360px;
1425 }
1426
1427 .answer-form {
1428 display: flex;
1429 gap: 10px;
1430 width: 100%;
1431 max-width: 440px;
1432 }
1433
1434 .answer-form input {
1435 flex: 1;
1436 padding: 11px 16px;
1437 border: 1.5px solid var(--line);
1438 border-radius: 12px;
1439 background: var(--card);
1440 color: var(--ink);
1441 font-size: 15px;
1442 transition: border-color 0.25s ease;
1443 }
1444
1445 .answer-form input:focus {
1446 outline: none;
1447 border-color: var(--clay);
1448 }
1449
1450 .answer-form input::placeholder {
1451 color: var(--ink-soft);
1452 opacity: 0.6;
1453 }
1454
1455 .done-button {
1456 margin-top: 14px;
1457 background: none;
1458 border: none;
1459 color: var(--ink-soft);
1460 font-size: 13px;
1461 letter-spacing: 0.04em;
1462 cursor: pointer;
1463 text-decoration: underline;
1464 text-underline-offset: 4px;
1465 text-decoration-color: var(--line);
1466 transition: color 0.25s ease, text-decoration-color 0.25s ease;
1467 }
1468
1469 .done-button:hover:not(:disabled) {
1470 color: var(--clay-deep);
1471 text-decoration-color: var(--clay);
1472 }
1473
1474 .done-button:disabled {
1475 opacity: 0.5;
1476 cursor: default;
1477 }
1478
1479 .finish-panels {
1480 display: flex;
1481 flex-direction: column;
1482 gap: 16px;
1483 width: 100%;
1484 max-width: 640px;
1485 margin-top: 24px;
1486 text-align: left;
1487 }
1488
1489 .generate-panel,
1490 .blocker-import {
1491 padding: 26px;
1492 border: 1px solid var(--line);
1493 border-radius: 20px;
1494 background: var(--card);
1495 box-shadow: 0 18px 40px -34px rgba(23, 25, 45, 0.48);
1496 }
1497
1498 .generate-panel.pack-ready {
1499 border-color: color-mix(in srgb, var(--moss) 36%, var(--line));
1500 box-shadow: 0 20px 46px -34px color-mix(in srgb, var(--moss) 52%, transparent);
1501 }
1502
1503 .pack-checking {
1504 min-height: 112px;
1505 }
1506
1507 .panel-kicker {
1508 margin-bottom: 6px !important;
1509 color: var(--moss) !important;
1510 font-size: 10px !important;
1511 font-weight: 700;
1512 letter-spacing: 0.12em;
1513 text-transform: uppercase;
1514 }
1515
1516 .generate-panel h2 {
1517 margin: 0;
1518 font-size: 27px;
1519 letter-spacing: -0.035em;
1520 }
1521
1522 .generate-panel .panel-lead {
1523 max-width: 550px;
1524 margin: 10px 0 20px;
1525 color: var(--ink-soft);
1526 font-size: 15px;
1527 line-height: 1.55;
1528 }
1529
1530 .create-pack-button,
1531 .generate-confirm button:first-of-type,
1532 .generate-overwrite button {
1533 min-height: 44px;
1534 padding: 10px 18px;
1535 border: none;
1536 border-radius: 12px;
1537 background: var(--clay);
1538 color: var(--card);
1539 font-size: 14px;
1540 font-weight: 700;
1541 cursor: pointer;
1542 transition: background 0.2s ease, transform 0.2s ease;
1543 }
1544
1545 .create-pack-button:hover:not(:disabled),
1546 .generate-confirm button:first-of-type:hover:not(:disabled),
1547 .generate-overwrite button:hover:not(:disabled) {
1548 background: var(--clay-deep);
1549 transform: translateY(-1px);
1550 }
1551
1552 .generate-panel button:disabled {
1553 opacity: 0.55;
1554 cursor: default;
1555 }
1556
1557 .generate-confirm,
1558 .generate-overwrite {
1559 padding: 14px;
1560 border-radius: 13px;
1561 background: var(--paper);
1562 }
1563
1564 .generate-confirm p,
1565 .generate-overwrite p {
1566 margin: 0 0 12px;
1567 color: var(--ink-soft);
1568 font-size: 14px;
1569 }
1570
1571 .generate-confirm button {
1572 margin-right: 8px;
1573 }
1574
1575 .generate-confirm button:last-child {
1576 min-height: 44px;
1577 padding: 9px 16px;
1578 border: 1.5px solid var(--line);
1579 border-radius: 12px;
1580 background: var(--card);
1581 color: var(--ink);
1582 cursor: pointer;
1583 }
1584
1585 .generate-confirm button:last-child:hover:not(:disabled) {
1586 background: var(--paper-deep);
1587 border-color: var(--clay);
1588 }
1589
1590 .ready-actions {
1591 display: flex;
1592 align-items: stretch;
1593 gap: 10px;
1594 }
1595
1596 .primary-download,
1597 .secondary-action {
1598 display: inline-flex;
1599 align-items: center;
1600 justify-content: center;
1601 min-height: 48px;
1602 padding: 11px 18px;
1603 border-radius: 12px;
1604 font-size: 14px;
1605 font-weight: 700;
1606 text-decoration: none;
1607 }
1608
1609 .primary-download {
1610 flex: 1;
1611 border: 1.5px solid var(--clay);
1612 background: var(--clay);
1613 color: var(--card);
1614 box-shadow: 0 12px 26px -16px color-mix(in srgb, var(--clay) 76%, transparent);
1615 transition: background 0.2s ease, transform 0.2s ease;
1616 }
1617
1618 .primary-download:hover {
1619 background: var(--clay-deep);
1620 transform: translateY(-1px);
1621 }
1622
1623 .secondary-action {
1624 border: 1.5px solid var(--line);
1625 background: var(--card);
1626 color: var(--ink);
1627 cursor: pointer;
1628 transition: border-color 0.2s ease, background 0.2s ease;
1629 }
1630
1631 .secondary-action:hover {
1632 border-color: var(--clay);
1633 background: var(--clay-soft);
1634 }
1635
1636 .copy-fallback {
1637 margin-top: 14px;
1638 padding: 13px;
1639 border: 1px solid color-mix(in srgb, var(--amber) 42%, var(--line));
1640 border-radius: 12px;
1641 background: color-mix(in srgb, var(--amber) 6%, var(--card));
1642 }
1643
1644 .copy-fallback p {
1645 margin: 0 0 8px;
1646 color: var(--ink);
1647 font-size: 13px;
1648 }
1649
1650 .copy-fallback textarea {
1651 width: 100%;
1652 min-height: 96px;
1653 padding: 10px;
1654 resize: vertical;
1655 border: 1px solid var(--line);
1656 border-radius: 9px;
1657 background: var(--card);
1658 color: var(--ink);
1659 font: 13px/1.45 var(--sans);
1660 }
1661
1662 .pack-details {
1663 margin-top: 18px;
1664 padding-top: 15px;
1665 border-top: 1px solid var(--line);
1666 color: var(--ink-soft);
1667 font-size: 13px;
1668 }
1669
1670 .pack-details summary {
1671 width: fit-content;
1672 color: var(--ink);
1673 font-weight: 650;
1674 cursor: pointer;
1675 }
1676
1677 .pack-details ul {
1678 display: grid;
1679 grid-template-columns: repeat(2, minmax(0, 1fr));
1680 gap: 5px 18px;
1681 margin: 12px 0 0;
1682 padding: 0;
1683 list-style: none;
1684 font-family: var(--mono);
1685 font-size: 12px;
1686 }
1687
1688 .generate-warnings {
1689 margin-top: 14px;
1690 padding: 12px;
1691 border-radius: 10px;
1692 background: color-mix(in srgb, var(--amber) 6%, var(--card));
1693 font-size: 14px;
1694 color: var(--ink-soft);
1695 }
1696
1697 .generate-warnings p,
1698 .generate-warnings ul {
1699 margin: 0;
1700 }
1701
1702 .generate-warnings ul {
1703 margin-top: 6px;
1704 padding-left: 18px;
1705 }
1706
1707 .regenerate-button {
1708 margin-top: 15px;
1709 padding: 0;
1710 border: none;
1711 background: transparent;
1712 color: var(--ink-soft);
1713 font-size: 12px;
1714 text-decoration: underline;
1715 text-decoration-color: var(--line);
1716 text-underline-offset: 3px;
1717 cursor: pointer;
1718 }
1719
1720 .regenerate-button:hover:not(:disabled) {
1721 color: var(--clay-deep);
1722 text-decoration-color: var(--clay);
1723 }
1724
1725 .recommendation {
1726 display: flex;
1727 align-items: center;
1728 justify-content: space-between;
1729 gap: 20px;
1730 margin-top: 22px;
1731 padding: 16px;
1732 border-radius: 14px;
1733 background: var(--paper);
1734 }
1735
1736 .recommendation h3 {
1737 margin: 0 0 3px;
1738 font-family: var(--serif);
1739 font-size: 14px;
1740 }
1741
1742 .recommendation p {
1743 margin: 0;
1744 color: var(--ink-soft);
1745 font-size: 12px;
1746 }
1747
1748 .recommendation button {
1749 flex-shrink: 0;
1750 min-height: 38px;
1751 padding: 8px 13px;
1752 border: 1px solid var(--line);
1753 border-radius: 10px;
1754 background: var(--card);
1755 color: var(--ink);
1756 font-size: 12px;
1757 font-weight: 650;
1758 cursor: pointer;
1759 }
1760
1761 .recommendation button:hover:not(:disabled) {
1762 border-color: var(--clay);
1763 background: var(--clay-soft);
1764 }
1765
1766 .blocker-import h2 {
1767 margin: 0 0 8px;
1768 font-size: 17px;
1769 }
1770
1771 .blocker-import p {
1772 margin: 0 0 12px;
1773 color: var(--ink-soft);
1774 font-size: 13px;
1775 }
1776
1777 .blocker-import button {
1778 min-height: 40px;
1779 padding: 8px 14px;
1780 border: 1.5px solid var(--line);
1781 border-radius: 11px;
1782 background: var(--card);
1783 color: var(--ink);
1784 font-size: 13px;
1785 font-weight: 650;
1786 cursor: pointer;
1787 }
1788
1789 .blocker-import button:hover:not(:disabled) {
1790 border-color: var(--clay);
1791 background: var(--clay-soft);
1792 }
1793
1794 .generate-panel .error,
1795 .blocker-import .error {
1796 text-align: left;
1797 }
1798
1799 /* ---------- Transcript ---------- */
1800
1801 .transcript-section {
1802 margin-top: 46px;
1803 animation: rise 0.6s ease both;
1804 }
1805
1806 .transcript-title {
1807 font-size: 12px;
1808 font-family: var(--sans);
1809 font-weight: 500;
1810 text-transform: uppercase;
1811 letter-spacing: 0.14em;
1812 color: var(--ink-soft);
1813 margin-bottom: 12px;
1814 }
1815
1816 .transcript {
1817 display: flex;
1818 flex-direction: column;
1819 gap: 14px;
1820 max-height: 300px;
1821 overflow-y: auto;
1822 padding-right: 8px;
1823 mask-image: linear-gradient(to bottom, transparent 0, black 18px);
1824 }
1825
1826 .segment {
1827 max-width: 82%;
1828 animation: rise 0.35s ease both;
1829 }
1830
1831 .segment-user {
1832 align-self: flex-end;
1833 text-align: right;
1834 }
1835
1836 .segment-interviewer {
1837 align-self: flex-start;
1838 border-left: 2px solid var(--clay-soft);
1839 padding-left: 12px;
1840 }
1841
1842 .segment-speaker {
1843 display: block;
1844 font-size: 11px;
1845 text-transform: uppercase;
1846 letter-spacing: 0.1em;
1847 color: var(--ink-soft);
1848 margin-bottom: 3px;
1849 }
1850
1851 .segment-text {
1852 font-size: 15px;
1853 color: var(--ink);
1854 }
1855
1856 .segment-user .segment-text {
1857 display: inline-block;
1858 background: var(--paper-deep);
1859 border-radius: 14px 14px 4px 14px;
1860 padding: 8px 14px;
1861 }
1862
1863 /* ---------- Animations ---------- */
1864
1865 @keyframes breathe {
1866 0%,
1867 100% {
1868 transform: scale(1);
1869 }
1870 50% {
1871 transform: scale(1.035);
1872 }
1873 }
1874
1875 @keyframes blink {
1876 0%,
1877 4%,
1878 100% {
1879 transform: scaleY(1);
1880 }
1881 2% {
1882 transform: scaleY(0.08);
1883 }
1884 }
1885
1886 @keyframes ripple {
1887 0% {
1888 transform: scale(1);
1889 opacity: 0.45;
1890 }
1891 100% {
1892 transform: scale(1.42);
1893 opacity: 0;
1894 }
1895 }
1896
1897 @keyframes bob {
1898 0%,
1899 100% {
1900 transform: translateY(0) scale(1);
1901 }
1902 50% {
1903 transform: translateY(-4px) scale(1.015);
1904 }
1905 }
1906
1907 @keyframes talk {
1908 0%,
1909 100% {
1910 height: 4px;
1911 }
1912 50% {
1913 height: 13px;
1914 }
1915 }
1916
1917 @keyframes wave {
1918 0% {
1919 transform: scaleY(0.12);
1920 }
1921 100% {
1922 transform: scaleY(0.85);
1923 }
1924 }
1925
1926 @keyframes rise {
1927 from {
1928 opacity: 0;
1929 transform: translateY(10px);
1930 }
1931 to {
1932 opacity: 1;
1933 transform: translateY(0);
1934 }
1935 }
1936
1937 @media (max-width: 900px) {
1938 .home-nav {
1939 margin-bottom: 48px;
1940 }
1941
1942 .home-main {
1943 grid-template-columns: 1fr;
1944 gap: 48px;
1945 }
1946
1947 .home-intro {
1948 padding-top: 0;
1949 }
1950
1951 .home-intro h1 {
1952 max-width: 760px;
1953 }
1954
1955 .hero-copy {
1956 max-width: 680px;
1957 }
1958
1959 .start-card {
1960 max-width: 650px;
1961 }
1962
1963 .process-section {
1964 grid-template-columns: 1fr;
1965 gap: 28px;
1966 margin-top: 72px;
1967 }
1968 }
1969
1970 @media (max-width: 680px) {
1971 .screen {
1972 padding-right: 18px;
1973 padding-left: 18px;
1974 }
1975
1976 .home-screen {
1977 padding-top: 28px;
1978 }
1979
1980 .home-nav {
1981 margin-bottom: 42px;
1982 }
1983
1984 .local-badge {
1985 padding: 7px 10px;
1986 font-size: 11px;
1987 }
1988
1989 .home-intro h1 {
1990 font-size: clamp(40px, 13vw, 58px);
1991 }
1992
1993 .hero-copy {
1994 font-size: 17px;
1995 }
1996
1997 .outcome-preview {
1998 grid-template-columns: 1fr;
1999 gap: 10px;
2000 }
2001
2002 .preview-connector {
2003 width: 2px;
2004 height: 24px;
2005 margin: 0 auto;
2006 }
2007
2008 .preview-connector::before {
2009 top: -2px;
2010 left: 50%;
2011 transform: translateX(-50%);
2012 }
2013
2014 .preview-connector::after {
2015 top: auto;
2016 right: auto;
2017 bottom: -2px;
2018 left: 50%;
2019 transform: translateX(-50%);
2020 }
2021
2022 .preview-connector span::after {
2023 right: auto;
2024 top: auto;
2025 bottom: -1px;
2026 left: 50%;
2027 transform: translateX(-50%) rotate(135deg);
2028 }
2029
2030 .outcome-preview figcaption {
2031 margin-top: 2px;
2032 }
2033
2034 .start-card {
2035 padding: 24px 20px;
2036 border-radius: 20px;
2037 }
2038
2039 .process-steps {
2040 grid-template-columns: 1fr;
2041 gap: 20px;
2042 }
2043
2044 .session-list ul {
2045 grid-template-columns: 1fr;
2046 }
2047
2048 .session-item {
2049 flex-direction: column;
2050 align-items: flex-start;
2051 gap: 6px;
2052 }
2053
2054 .coverage-panel {
2055 grid-template-columns: repeat(2, minmax(0, 1fr));
2056 }
2057
2058 .answer-form {
2059 flex-wrap: wrap;
2060 }
2061
2062 .answer-form .btn-primary {
2063 width: 100%;
2064 }
2065
2066 .ready-actions,
2067 .recommendation {
2068 flex-direction: column;
2069 align-items: stretch;
2070 }
2071
2072 .primary-download,
2073 .secondary-action {
2074 width: 100%;
2075 }
2076
2077 .pack-details ul {
2078 grid-template-columns: 1fr;
2079 }
2080 }
2081
2082 @media (prefers-reduced-motion: reduce) {
2083 *,
2084 *::before,
2085 *::after {
2086 scroll-behavior: auto !important;
2087 transition-duration: 0.01ms !important;
2088 animation-duration: 0.01ms !important;
2089 animation-iteration-count: 1 !important;
2090 }
2091
2092 .orb,
2093 .orb-eye,
2094 .orb-ripple,
2095 .orb-mouth-bar,
2096 .waveform-bar,
2097 .home-nav,
2098 .home-intro,
2099 .start-card,
2100 .create-form,
2101 .session-list,
2102 .question,
2103 .segment,
2104 .transcript-section {
2105 animation: none !important;
2106 }
2107 }
2108