File size: 6,950 Bytes
5bdbf17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
:root{
  --ink:#1B2430; --ink-soft:#4A5568; --paper:#F4F6F8; --panel:#FFFFFF;
  --line:#D7DDE3; --teal:#0F9B8E; --teal-soft:#E4F5F3;
  --indigo:#3A4FC2; --indigo-soft:#EAEDFB; --amber:#B8720B; --amber-soft:#FBF0DE;
  --danger:#C0392B; --danger-soft:#FBE9E7;
  --radius:12px;
}
*{box-sizing:border-box;}
@media (prefers-reduced-motion: reduce){ *{animation-duration:0.001ms !important; transition-duration:0.001ms !important;} }

body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:'IBM Plex Sans',sans-serif; line-height:1.55; font-size:17px;
}
.wrap{max-width:640px; margin:0 auto; padding:28px 20px 60px;}
h1,h2,h3{font-family:'Space Grotesk',sans-serif; font-weight:600;}
h1{font-size:1.8rem; margin:0 0 6px;}
h2{font-size:1.3rem;}
.sub{color:var(--ink-soft); margin:0 0 24px; font-size:0.98rem;}

.badge{
  display:inline-block; font-family:'IBM Plex Mono',monospace; font-size:0.68rem;
  text-transform:uppercase; letter-spacing:0.08em; color:var(--amber);
  background:var(--amber-soft); border:1px solid #ECD8AE; padding:4px 10px; border-radius:999px;
  margin-bottom:16px;
}

.card{background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:26px; margin-bottom:16px;}
.hidden{display:none !important;}

/* ---- Consent / demographics form ---- */
.field-label{display:block; font-family:'IBM Plex Mono',monospace; font-size:0.72rem; text-transform:uppercase; letter-spacing:0.05em; color:var(--ink-soft); margin:18px 0 8px;}
.field-input{width:100%; padding:10px 12px; border:1.5px solid var(--line); border-radius:8px; font-family:'IBM Plex Sans',sans-serif; font-size:0.95rem; background:#fff; color:var(--ink);}
.field-input:focus-visible{outline:3px solid var(--indigo); outline-offset:2px;}
.radio-group{display:flex; flex-wrap:wrap; gap:8px;}
.radio-pill{position:relative;}
.radio-pill input{position:absolute; opacity:0; width:100%; height:100%; margin:0; cursor:pointer;}
.radio-pill label{
  display:block; padding:9px 16px; border:1.5px solid var(--line); border-radius:999px;
  font-size:0.92rem; cursor:pointer; transition:all 0.15s ease; user-select:none;
}
.radio-pill input:checked + label{background:var(--ink); color:#fff; border-color:var(--ink);}
.radio-pill input:focus-visible + label{outline:3px solid var(--indigo); outline-offset:2px;}
.consent-list{color:var(--ink-soft); font-size:0.94rem; padding-left:20px; margin:0 0 6px;}
.consent-list li{margin-bottom:8px;}
.consent-list strong{color:var(--ink);}
.consent-check{display:flex; align-items:flex-start; gap:10px; font-size:0.92rem; margin:20px 0; cursor:pointer;}
.consent-check input{margin-top:3px; width:18px; height:18px; accent-color:var(--teal);}

.big-btn{
  font-family:'Space Grotesk',sans-serif; font-weight:600; font-size:1rem;
  background:var(--ink); color:#fff; border:none; border-radius:10px;
  padding:16px 24px; cursor:pointer; width:100%; margin-top:8px;
}
.big-btn:hover{background:#000;}
.big-btn:disabled{opacity:0.5; cursor:not-allowed;}
.big-btn:focus-visible{outline:3px solid var(--indigo); outline-offset:3px;}

/* ---- Progress + prompt ---- */
.progress-row{display:flex; justify-content:space-between; align-items:center; margin-bottom:18px;}
.progress-label{font-family:'IBM Plex Mono',monospace; font-size:0.75rem; color:var(--ink-soft); text-transform:uppercase; letter-spacing:0.06em; white-space:nowrap;}
.progress-bar{height:4px; background:var(--line); border-radius:2px; overflow:hidden; flex:1; margin-left:16px;}
.progress-fill{height:100%; background:var(--teal); border-radius:2px; transition:width 0.4s ease;}
.prompt-eyebrow{font-family:'IBM Plex Mono',monospace; font-size:0.72rem; color:var(--teal); text-transform:uppercase; letter-spacing:0.08em; margin-bottom:10px;}
.prompt-text{font-family:'Space Grotesk',sans-serif; font-size:1.3rem; font-weight:600; margin:0 0 26px; line-height:1.3;}

/* ---- Recording control -- a real custom control, not a framework's default ---- */
.rec-zone{display:flex; flex-direction:column; align-items:center; gap:16px; padding:24px 0;}
.rec-btn{
  width:84px; height:84px; border-radius:50%; border:none; cursor:pointer;
  background:var(--ink); color:#fff; font-size:1.6rem;
  display:flex; align-items:center; justify-content:center;
  transition:transform 0.15s ease, background 0.2s ease;
}
.rec-btn:hover{transform:scale(1.05);}
.rec-btn:focus-visible{outline:3px solid var(--indigo); outline-offset:3px;}
.rec-btn.recording{background:var(--danger); animation:pulse 1.1s infinite;}
.rec-btn:disabled{opacity:0.5; cursor:not-allowed; transform:none;}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(192,57,43,0.4);} 70%{box-shadow:0 0 0 14px rgba(192,57,43,0);} 100%{box-shadow:0 0 0 0 rgba(192,57,43,0);}}
.rec-hint{font-size:0.85rem; color:var(--ink-soft);}

.analyzing{display:flex; align-items:center; gap:10px; color:var(--ink-soft); font-family:'IBM Plex Mono',monospace; font-size:0.85rem; padding:24px 0;}
.spinner{width:16px; height:16px; border:2px solid var(--line); border-top-color:var(--indigo); border-radius:50%; animation:spin 0.7s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}

/* ---- Prediction + legend ---- */
.prediction-box{background:var(--indigo-soft); border-radius:10px; padding:18px 20px; margin:18px 0; display:flex; flex-direction:column; gap:14px;}
.prediction-field{display:flex; flex-direction:column; gap:4px;}
.prediction-field + .prediction-field{border-top:1px solid rgba(58,79,194,0.15); padding-top:12px;}
.prediction-label{font-family:'IBM Plex Mono',monospace; font-size:0.7rem; text-transform:uppercase; letter-spacing:0.06em; color:var(--indigo);}
.prediction-value{font-family:'IBM Plex Mono',monospace; font-size:1.05rem; font-weight:600; color:var(--ink);}
.prediction-value.empty{color:var(--ink-soft); font-weight:400; font-style:italic;}
.timing-caption{color:var(--ink-soft); font-family:'IBM Plex Mono',monospace; font-size:0.82rem; font-style:italic; margin:6px 0 0;}

.legend-box{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:16px 20px; margin:18px 0;}
.legend-title{font-weight:600; margin-bottom:10px;}
.legend-item{margin-bottom:8px; font-size:0.95rem;}
.legend-item:last-child{margin-bottom:0;}

/* ---- Judgement ---- */
.judgement-block{margin:20px 0;}
.judgement-question{font-weight:500; margin-bottom:10px;}

/* ---- UMUX / feedback ---- */
.umux-item{margin-bottom:22px;}
.umux-question{font-size:0.98rem; margin-bottom:10px;}
.umux-scale{display:flex; gap:6px; flex-wrap:wrap;}
.umux-scale .radio-pill label{padding:8px 14px; font-size:0.88rem;}
.umux-anchors{display:flex; justify-content:space-between; font-size:0.76rem; color:var(--ink-soft); margin-top:4px;}

.start-screen,.end-screen{text-align:center; padding:20px 0;}

.error-msg{
  background:var(--danger-soft); color:var(--danger); border:1px solid #F0C5BF;
  border-radius:8px; padding:12px 16px; font-size:0.9rem; margin-bottom:16px;
}