Spaces:
Running
Running
File size: 12,870 Bytes
6448883 df8968d 6448883 df8968d 6448883 df8968d 6448883 df8968d 6448883 df8968d 6448883 df8968d | 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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | [hidden] { display: none !important; }
/* "Passport office": warm paper, ink controls, forest stamp for accept, vermilion for reject. */
:root {
--paper: #f3efe6; --card: #fbf9f4; --ink: #1e1c18; --muted: #6d675b; --line: #dcd5c6; --soft: #ebe5d8;
--ok: #2f6a49; --no: #b4421f; --onink: #f8f5ee;
--s1: #c0782a; --s2: #2f6b66; --s3: #94435a; --s4: #6a7a2f; --s5: #7d5a3f; --s6: #4f5a66;
--h: 34px; --r: 4px;
color-scheme: light;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--paper: #161512; --card: #1e1c18; --ink: #ece6da; --muted: #9a9384; --line: #35312a; --soft: #29261f;
--ok: #6fae86; --no: #e07a58; --onink: #161512;
--s1: #d9954a; --s2: #5aa39c; --s3: #c27389; --s4: #9db05a; --s5: #b48d6c; --s6: #8b97a4;
color-scheme: dark;
}
}
:root[data-theme="dark"] {
--paper: #161512; --card: #1e1c18; --ink: #ece6da; --muted: #9a9384; --line: #35312a; --soft: #29261f;
--ok: #6fae86; --no: #e07a58; --onink: #161512;
--s1: #d9954a; --s2: #5aa39c; --s3: #c27389; --s4: #9db05a; --s5: #b48d6c; --s6: #8b97a4;
color-scheme: dark;
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body { background: var(--paper); color: var(--ink); font: 14px/1.45 "IBM Plex Sans", system-ui, sans-serif; }
a { color: inherit; text-decoration: underline; text-decoration-color: var(--line); text-underline-offset: 2px; }
a:hover { text-decoration-color: currentColor; }
.mono, output, .status { font-family: "IBM Plex Mono", ui-monospace, monospace; }
.muted { color: var(--muted); }
.wrap { max-width: 1040px; margin: 0 auto; padding: 20px 16px 28px; }
.top { display: flex; gap: 16px; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; }
h1 { font-size: 26px; font-weight: 600; letter-spacing: -0.01em; margin: 0; }
.sub { margin: 2px 0 0; color: var(--muted); max-width: 560px; }
.status { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--muted); border: 1px solid var(--line); border-radius: var(--r); padding: 0 10px; height: var(--h); background: var(--card); flex-wrap: nowrap; }
.status .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--line); flex: none; }
.status.ready .dot { background: var(--ok); }
.status.err .dot { background: var(--no); }
.status .bar { width: 90px; }
.status.ready .bar { display: none; }
.bar { height: 4px; background: var(--soft); border-radius: 2px; overflow: hidden; }
.bar i { display: block; height: 100%; width: 0; background: var(--ink); transition: width .15s; }
.privacy { display: flex; gap: 10px; align-items: flex-start; margin: 16px 0 14px; padding: 9px 12px; border: 1px solid var(--line); border-radius: var(--r); color: var(--muted); font-size: 13px; }
.privacy svg { width: 16px; height: 16px; flex: none; margin-top: 2px; color: var(--ok); }
.tabs { display: flex; border-bottom: 1px solid var(--line); margin-bottom: 14px; overflow-x: auto; scrollbar-width: none; }
.tabs::-webkit-scrollbar { display: none; }
.tabs button { appearance: none; border: 0; background: none; color: var(--muted); font: 500 14px "IBM Plex Sans", sans-serif; padding: 8px 14px; border-bottom: 2px solid transparent; margin-bottom: -1px; cursor: pointer; white-space: nowrap; }
.tabs button:hover { color: var(--ink); }
.tabs button.on { color: var(--ink); border-bottom-color: var(--ink); }
.pane { display: none; }
.pane.on { display: block; }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 760px) { .grid2 { grid-template-columns: 1fr; } }
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r); padding: 14px; min-width: 0; }
.cardhead { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
h2 { font-size: 15px; font-weight: 600; margin: 0; }
.step { font: 500 11px "IBM Plex Mono", monospace; width: 20px; height: 20px; display: inline-grid; place-items: center; border: 1px solid var(--ink); border-radius: 50%; }
.hint { color: var(--muted); font-size: 13px; margin: 4px 0 10px; }
.row { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 8px 0; }
.spacer { flex: 1; }
.btn, select, input[type="text"] { height: var(--h); border-radius: var(--r); font: 500 13px "IBM Plex Sans", sans-serif; }
.btn { appearance: none; border: 1px solid var(--line); background: var(--card); color: var(--ink); padding: 0 12px; cursor: pointer; white-space: nowrap; display: inline-flex; align-items: center; gap: 6px; }
.btn:hover { background: var(--soft); }
.btn.primary { background: var(--ink); color: var(--onink); border-color: var(--ink); }
.btn.primary:hover { background: var(--muted); border-color: var(--muted); }
.btn.ghost { border-color: transparent; text-decoration: underline; text-decoration-color: var(--line); text-underline-offset: 3px; padding: 0 8px; }
.btn.ghost:hover { background: var(--soft); text-decoration-color: currentColor; }
.btn.small { --h: 28px; height: 28px; padding: 0 10px; font-size: 12px; }
.btn.rec { background: var(--no); border-color: var(--no); color: #fff; }
.btn:disabled { opacity: .5; cursor: default; }
select { border: 1px solid var(--line); background: var(--card); color: var(--ink); padding: 0 8px; }
input[type="text"] { border: 1px solid var(--line); background: var(--paper); color: var(--ink); padding: 0 10px; min-width: 0; flex: 1; }
input[type="text"]:focus, select:focus, .btn:focus-visible { outline: 2px solid var(--ink); outline-offset: 1px; }
.kgroup { display: inline-flex; align-items: center; gap: 8px; }
label.inl { color: var(--muted); font-size: 13px; }
.check { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted); cursor: pointer; }
.slots { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.slot { border: 1px dashed var(--line); border-radius: var(--r); height: 58px; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 2px; cursor: pointer; font-size: 12px; color: var(--muted); background: none; font-family: inherit; }
.slot:hover { background: var(--soft); }
.slot.filled { border-style: solid; color: var(--ink); cursor: default; }
.slot.filled:hover { background: none; }
.slot .t { font: 500 13px "IBM Plex Mono", monospace; }
.slot.recording { border-color: var(--no); color: var(--no); }
.slot .lvl { width: 60%; height: 3px; background: var(--soft); }
.slot .lvl i { display: block; height: 100%; background: var(--no); width: 0; }
.slot a { font-size: 12px; color: var(--muted); cursor: pointer; }
.vp { margin-top: 10px; border-top: 1px solid var(--line); padding-top: 10px; }
canvas.barcode { width: 100%; height: 34px; display: block; }
.vpmeta { display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap; font-size: 12px; color: var(--muted); margin-top: 6px; }
.lockbox { display: flex; gap: 14px; align-items: center; border: 1px solid var(--line); border-radius: var(--r); padding: 14px; margin: 4px 0 10px; }
.lockico { width: 44px; height: 44px; flex: none; color: var(--muted); }
.lockico path { transition: transform .25s; transform-origin: 32px 21px; }
.lockbox.open .lockico { color: var(--ok); }
.lockbox.open .lockico path { transform: translate(0, -5px) rotate(28deg); }
.lockbox.shut .lockico { color: var(--no); }
.lockbox.open { border-color: var(--ok); }
.lockbox.shut { border-color: var(--no); }
.verdict { font-size: 18px; font-weight: 600; }
.lockbox.open .verdict { color: var(--ok); }
.lockbox.shut .verdict { color: var(--no); }
.vsub { color: var(--muted); font-size: 13px; }
.meter { position: relative; height: 8px; background: var(--soft); border-radius: 2px; margin: 0 0 4px; }
.meter i { position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: var(--muted); border-radius: 2px; transition: width .25s; }
.meter.ok i { background: var(--ok); }
.meter.no i { background: var(--no); }
.meter b { position: absolute; top: -4px; bottom: -4px; width: 2px; background: var(--ink); }
.slider { display: flex; align-items: center; gap: 10px; margin-top: 8px; font-size: 13px; color: var(--muted); }
.slider input { flex: 1; accent-color: var(--ink); }
.slider output { width: 36px; text-align: right; color: var(--ink); font-size: 12px; }
.history { list-style: none; margin: 10px 0 0; padding: 0; font-size: 12px; }
.history li { display: flex; gap: 8px; align-items: center; padding: 4px 0; border-top: 1px solid var(--soft); }
.history .tag { font: 500 11px "IBM Plex Mono", monospace; text-transform: uppercase; letter-spacing: .04em; }
.history .tag.ok { color: var(--ok); }
.history .tag.no { color: var(--no); }
.history .src { flex: 1; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.progress { display: flex; align-items: center; gap: 10px; font-size: 12px; color: var(--muted); margin: 10px 0; }
.progress .bar { flex: 1; }
.speakers { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0 10px; }
.spk { display: flex; align-items: center; gap: 8px; border: 1px solid var(--line); border-radius: var(--r); padding: 0 4px 0 10px; height: var(--h); font-size: 13px; }
.spk .sw { width: 10px; height: 10px; border-radius: 2px; flex: none; }
.spk input { border: 0; background: none; color: var(--ink); font: 500 13px "IBM Plex Sans", sans-serif; width: 9ch; padding: 0; height: auto; flex: none; }
.spk input:focus { outline: none; border-bottom: 1px solid var(--ink); }
.spk .pct { font: 12px "IBM Plex Mono", monospace; color: var(--muted); }
.spk .btn { height: 26px; padding: 0 8px; font-size: 12px; }
.timeline { border: 1px solid var(--line); border-radius: var(--r); padding: 8px; }
.timeline canvas { width: 100%; display: block; cursor: pointer; }
.tlfoot #diarTime, .tlfoot #diarStats { white-space: nowrap; }
.tlfoot { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 6px; font-size: 12px; }
.turns { list-style: none; padding: 0; margin: 10px 0 0; max-height: 300px; overflow: auto; }
.turns li { display: grid; grid-template-columns: 92px 110px 1fr auto; gap: 10px; align-items: center; padding: 4px 6px; border-top: 1px solid var(--soft); font-size: 13px; cursor: pointer; }
.turns li:hover, .turns li.playing { background: var(--soft); }
.turns .tm { font: 12px "IBM Plex Mono", monospace; color: var(--muted); }
.turns .who { display: flex; align-items: center; gap: 6px; font-weight: 500; }
.turns .sw { width: 8px; height: 8px; border-radius: 2px; }
.turns .seg { height: 6px; border-radius: 1px; opacity: .8; }
.roster { list-style: none; padding: 0; margin: 6px 0; }
.roster li { display: grid; grid-template-columns: 1fr 120px auto; gap: 10px; align-items: center; padding: 6px 0; border-top: 1px solid var(--soft); }
.roster li:first-child { border-top: 0; }
.roster .nm { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.roster .nm small { color: var(--muted); font-weight: 400; margin-left: 6px; font-family: "IBM Plex Mono", monospace; }
.roster canvas { width: 120px; height: 20px; }
.roster .empty { color: var(--muted); font-size: 13px; display: block; padding: 8px 0; }
.row.add input { flex: 1 1 120px; }
.idverdict { margin: 12px 0 8px; font-size: 18px; font-weight: 600; min-height: 26px; }
.idverdict.ok { color: var(--ok); }
.idverdict.unk { color: var(--no); }
.idverdict.wait { color: var(--muted); font-weight: 400; font-size: 14px; }
.ranks { list-style: none; padding: 0; margin: 0; }
.ranks li { display: grid; grid-template-columns: 100px 1fr 48px; gap: 10px; align-items: center; padding: 3px 0; font-size: 13px; }
.ranks .nm { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ranks .track { position: relative; height: 8px; background: var(--soft); border-radius: 2px; }
.ranks .track i { position: absolute; left: 0; top: 0; bottom: 0; background: var(--muted); border-radius: 2px; }
.ranks li.top .track i { background: var(--ok); }
.ranks .track b { position: absolute; top: -3px; bottom: -3px; width: 2px; background: var(--ink); }
.ranks .sc { font: 12px "IBM Plex Mono", monospace; text-align: right; }
footer { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 22px; padding-top: 12px; border-top: 1px solid var(--line); font-size: 12px; color: var(--muted); }
.toast { position: fixed; left: 50%; bottom: 16px; transform: translateX(-50%); background: var(--ink); color: var(--onink); padding: 8px 14px; border-radius: var(--r); font-size: 13px; max-width: calc(100% - 32px); z-index: 10; }
@media (max-width: 520px) {
.slots { grid-template-columns: repeat(3, 1fr); }
.turns li { grid-template-columns: auto 1fr auto; }
.turns .segw { display: none; }
.turns .tm { white-space: nowrap; }
.roster li { grid-template-columns: 1fr 80px auto; }
.roster canvas { width: 80px; }
.ranks li { grid-template-columns: 80px 1fr 44px; }
}
|