blob: f6313b03a55df812d955afb39aa8c61a8a560f42 [file] [log] [blame]
Akron7636edf2025-11-04 12:44:53 +01001@use 'sass:color';
Akron49bfdbf2016-11-22 21:47:33 +01002@charset "utf-8";
Akron7636edf2025-11-04 12:44:53 +01003@use "../util";
4@use "../base/colors";
5@use "../base/icons";
6@use "../base/lengths";
7@use "../base/mixins";
Akron49bfdbf2016-11-22 21:47:33 +01008
Akron7e5afce2020-08-25 15:50:19 +02009/**
10 * Styles for the KWIC view.
11 */
12
Akron08b82d62016-12-05 15:06:05 +010013$font-size: 10pt;
Akron49bfdbf2016-11-22 21:47:33 +010014
15#search {
Akron7e5afce2020-08-25 15:50:19 +020016 position: relative;
Akron49bfdbf2016-11-22 21:47:33 +010017 margin-bottom: 30px;
Akron7e5afce2020-08-25 15:50:19 +020018 overflow: visible;
Akron49bfdbf2016-11-22 21:47:33 +010019
Akron7e5afce2020-08-25 15:50:19 +020020 div.matchinfo {
21 display: none;
22 }
Akron49bfdbf2016-11-22 21:47:33 +010023
Akron7e5afce2020-08-25 15:50:19 +020024 > ol {
25 overflow-x: hidden;
26 overflow-y: visible;
27 width: auto;
28 text-indent: 0;
29 list-style-type: none;
30 margin: 0;
31 padding: 0;
Akron7636edf2025-11-04 12:44:53 +010032 border: lengths.$result-border-size solid colors.$kwic-border;
Akron7e5afce2020-08-25 15:50:19 +020033 font-size: $font-size;
Akronf74cd2e2018-08-15 16:26:18 +020034
Akron7e5afce2020-08-25 15:50:19 +020035 > li {
36 display: flex;
37 flex-direction: row;
38 flex-wrap: nowrap;
39 align-items: stretch;
40 align-content: stretch;
41
42 border: {
43 style: solid;
Akron7636edf2025-11-04 12:44:53 +010044 color: colors.$dark-orange;
Akron7e5afce2020-08-25 15:50:19 +020045 width: 0;
46 }
Akronf74cd2e2018-08-15 16:26:18 +020047
Akron7e5afce2020-08-25 15:50:19 +020048 // Actions
49 .button-group.button-view {
50 display: none;
51 }
52
53 // Zebra style
54 &:nth-of-type(even) div.match-main div.match-wrap {
Akron7636edf2025-11-04 12:44:53 +010055 background-color: colors.$kwic-line-even;
Akron7e5afce2020-08-25 15:50:19 +020056 }
57
58 // References
59 p.ref {
60 display: none;
Akronf74cd2e2018-08-15 16:26:18 +020061 }
62
Akron7e5afce2020-08-25 15:50:19 +020063 div.meta,
64 div.match-main {
65 position: relative;
66 cursor: pointer;
Akron46b9f212017-05-01 13:55:17 +020067 }
Akron7e5afce2020-08-25 15:50:19 +020068
69 div.match-main {
70 display: block;
71 flex: 7 0;
72 z-index: 4;
73 overflow: hidden;
74
75 > div.match-wrap {
76 width: 99999%;
77 margin-left: -49999.5%;
Akron7636edf2025-11-04 12:44:53 +010078 background-color: colors.$kwic-line-noneven;
Akron7e5afce2020-08-25 15:50:19 +020079 overflow-x: hidden;
80 overflow-y: visible;
81 white-space: normal;
82 }
Akron46b9f212017-05-01 13:55:17 +020083 }
Akron7e5afce2020-08-25 15:50:19 +020084
85 div.meta {
86 flex: 1 0;
87 min-width: 12em;
88 max-width: 15em;
89 text-align: left;
90 width: 2px;
91 z-index: 5;
92 overflow-y: hidden;
93 overflow-x: hidden;
94 text-overflow: ellipsis;
95 white-space: nowrap;
Akron7636edf2025-11-04 12:44:53 +010096 background-color: color.adjust(colors.$middle-grey, $lightness: 5%, $space: hsl);
97 color: colors.$nearly-white;
Akron7e5afce2020-08-25 15:50:19 +020098 font-size: 75%;
99 padding: 0 5pt;
100
101 border: {
Akron7636edf2025-11-04 12:44:53 +0100102 color: colors.$dark-grey;
Akron7e5afce2020-08-25 15:50:19 +0200103 style: solid;
104 width: 2px 1px 0 0;
105 }
106
107 // Tiny hack
108 &:before {
109 content: " ";
110 display: inline-block;
111 height: 100%;
112 vertical-align: middle;
113 }
114
115 &:empty {
116 border-width: 0 1px 0 0;
117 }
118
119 &.flip {
Akron7636edf2025-11-04 12:44:53 +0100120 background-color: color.adjust(colors.$middle-grey, $lightness: 17%, $space: hsl);
Akron7e5afce2020-08-25 15:50:19 +0200121 }
Akron08b82d62016-12-05 15:06:05 +0100122 }
Akron7e5afce2020-08-25 15:50:19 +0200123
124 &:first-of-type div.meta {
125 border-top-width: 0;
126 }
127
128 &:last-of-type div.meta {
129 border-bottom-width: 0;
130 }
Akron08b82d62016-12-05 15:06:05 +0100131 }
Akron49bfdbf2016-11-22 21:47:33 +0100132 }
133}
134
Akron49bfdbf2016-11-22 21:47:33 +0100135
Akron7e5afce2020-08-25 15:50:19 +0200136/**
137 * Snippet rules
Akron49bfdbf2016-11-22 21:47:33 +0100138 */
Akron49bfdbf2016-11-22 21:47:33 +0100139div.snippet {
140 text-overflow: ellipsis;
Akron7e5afce2020-08-25 15:50:19 +0200141 text-indent: 0;
Akron7636edf2025-11-04 12:44:53 +0100142 text-shadow: colors.$light-shadow;
Akron7e5afce2020-08-25 15:50:19 +0200143 font-size: 0;
144 white-space: nowrap !important;
Akronf74cd2e2018-08-15 16:26:18 +0200145
Akron49bfdbf2016-11-22 21:47:33 +0100146 > span, mark {
Akron7e5afce2020-08-25 15:50:19 +0200147 padding: 5pt 0 6pt 0;
Akron2b75b132018-08-13 09:47:47 +0200148 font-size: $font-size;
Akron49bfdbf2016-11-22 21:47:33 +0100149 }
Akron7e5afce2020-08-25 15:50:19 +0200150
151 > mark,
152 > span.match {
Akron49bfdbf2016-11-22 21:47:33 +0100153 font-weight: bold;
Akron7636edf2025-11-04 12:44:53 +0100154 color: colors.$black;
Akron08b82d62016-12-05 15:06:05 +0100155 text-shadow: none;
Akron49bfdbf2016-11-22 21:47:33 +0100156 padding-left: 4pt;
157 padding-right: 2pt;
158 }
Akron7e5afce2020-08-25 15:50:19 +0200159
Akron09e7f1f2018-05-28 14:08:14 +0200160 > span.match > span.cutted::after {
Akron7636edf2025-11-04 12:44:53 +0100161 @include mixins.icon-font;
162 content: icons.$fa-cut;
163 color: colors.$light-green;
Akron7e5afce2020-08-25 15:50:19 +0200164
Akron09e7f1f2018-05-28 14:08:14 +0200165 padding: {
Akron7e5afce2020-08-25 15:50:19 +0200166 left: 4pt;
Akron09e7f1f2018-05-28 14:08:14 +0200167 right: 4pt;
168 }
Akronb6685bb2018-02-04 00:44:47 +0100169 }
Akron86817092024-05-27 17:52:21 +0200170
Akron7e5afce2020-08-25 15:50:19 +0200171 &.startMore:before,
172 &.endMore:after {
173 content: "…";
174 padding-left: 2pt;
175 padding-right: 2pt;
Akronb6685bb2018-02-04 00:44:47 +0100176 }
Akron3bb91bc2016-12-02 16:43:17 +0100177
Akron7e5afce2020-08-25 15:50:19 +0200178 // Flags
179 div.flag {
180 position: absolute;
181 height: 100%;
182 top: 0;
183 left: 0;
184 width: 11px;
Akron7636edf2025-11-04 12:44:53 +0100185 background-color: colors.$dark-orange;
186 border-right: 1px solid colors.$darkest-orange;
Akron49bfdbf2016-11-22 21:47:33 +0100187 }
188}
Akron49bfdbf2016-11-22 21:47:33 +0100189
Akron8b592d42018-01-26 18:33:06 +0100190
Akron49bfdbf2016-11-22 21:47:33 +0100191/**
Akron7e5afce2020-08-25 15:50:19 +0200192 * Active rules
Akron49bfdbf2016-11-22 21:47:33 +0100193 */
Akron2a4e9af2017-12-22 15:45:22 +0100194body.no-js #search > ol > li:active,
195#search > ol > li.active,
196#search > ol > li:target {
Akron7e5afce2020-08-25 15:50:19 +0200197 position: relative;
198 display: block;
Akron7636edf2025-11-04 12:44:53 +0100199 background-color: colors.$dark-orange;
Akron7e5afce2020-08-25 15:50:19 +0200200 text-align: left;
201 border-width: 2px;
Akron548ee672020-10-19 17:41:20 +0200202 white-space: normal;
Akron7e5afce2020-08-25 15:50:19 +0200203 height: auto;
204 width: auto;
205 overflow: hidden;
Akron3bb91bc2016-12-02 16:43:17 +0100206
Akron7e5afce2020-08-25 15:50:19 +0200207 div.matchinfo {
208 display: block;
Akron49bfdbf2016-11-22 21:47:33 +0100209 }
Akron7e5afce2020-08-25 15:50:19 +0200210
211 + li.active {
Akron7636edf2025-11-04 12:44:53 +0100212 border-top: lengths.$border-size solid colors.$light-grey;
213 padding-top: 3 * lengths.$border-size;
Akron7e5afce2020-08-25 15:50:19 +0200214
215 .button-group.button-view {
Akron7636edf2025-11-04 12:44:53 +0100216 padding-top: 3 * lengths.$border-size;
Akron7e5afce2020-08-25 15:50:19 +0200217 }
Akronf74cd2e2018-08-15 16:26:18 +0200218 }
219
Akron7e5afce2020-08-25 15:50:19 +0200220 .snippet {
221 white-space: normal !important;
Akronc6c68212025-10-22 14:33:51 +0200222 padding: 2pt 0 5pt 5pt;
Akron7636edf2025-11-04 12:44:53 +0100223 background-color: colors.$light-orange;
Akron7e5afce2020-08-25 15:50:19 +0200224
Akronc6c68212025-10-22 14:33:51 +0200225 margin: {
226 top: 0;
Akron7636edf2025-11-04 12:44:53 +0100227 right: lengths.$right-view-distance;
Akronc6c68212025-10-22 14:33:51 +0200228 bottom: 0;
229 left: 0;
230 }
231
Akron7e5afce2020-08-25 15:50:19 +0200232 span {
233 display: inline !important;
234 }
235
Akron86817092024-05-27 17:52:21 +0200236 > * {
237 background-color: transparent;
238 }
Akron7e5afce2020-08-25 15:50:19 +0200239
Akron6e026522024-06-25 14:03:17 +0200240 span.inline-marker[data-key][data-value]:not([data-value=""]) {
241 font-size: 85%;
242 text-shadow:none;
Akron86817092024-05-27 17:52:21 +0200243 font-weight: normal;
Akron7636edf2025-11-04 12:44:53 +0100244 color: colors.$dark-grey;
Akron86817092024-05-27 17:52:21 +0200245 &::before, &::after {
246 display: inline-block !important;
247 border-width: 2px;
248 border-radius: 0;
Akron6e026522024-06-25 14:03:17 +0200249 margin: 0;
Akron86817092024-05-27 17:52:21 +0200250 padding: 0 4pt;
251 }
252 &::before {
253 color: white;
254 margin-right: 0;
255 border-top-left-radius: 5px;
256 border-bottom-left-radius: 5px;
Akron3b2b29e2025-06-24 10:55:30 +0200257 border-right-width: 0;
Akron7636edf2025-11-04 12:44:53 +0100258 background-color: colors.$dark-orange !important;
Akron6e026522024-06-25 14:03:17 +0200259 content: attr(data-key) ':';
Akron86817092024-05-27 17:52:21 +0200260 }
261
262 &::after {
Akron3b2b29e2025-06-24 10:55:30 +0200263 border-left-width: 0;
Akron86817092024-05-27 17:52:21 +0200264 margin-left: 0;
Akron6e026522024-06-25 14:03:17 +0200265 margin-right: 3pt;
266 padding-left: 1pt;
Akron86817092024-05-27 17:52:21 +0200267 border-top-right-radius: 5px;
268 border-bottom-right-radius: 5px;
Akron7636edf2025-11-04 12:44:53 +0100269 background-color: colors.$dark-orange !important;
Akron86817092024-05-27 17:52:21 +0200270 content: attr(data-value);
271 }
272 }
273
Akron7e5afce2020-08-25 15:50:19 +0200274 div.flag {
275 display: none;
276 }
277
Akronc6c68212025-10-22 14:33:51 +0200278 > span {
Akron7e5afce2020-08-25 15:50:19 +0200279 line-height: 1.4em;
280 width: auto;
281
282 &.context-left {
283 margin-left: 0;
284 display: inline;
285 overflow: visible;
286 text-align: left;
287 width: auto;
288 }
Akronc6c68212025-10-22 14:33:51 +0200289 }
Akron3bb91bc2016-12-02 16:43:17 +0100290 }
Akron7e5afce2020-08-25 15:50:19 +0200291
Akronbfe912c2018-07-17 19:30:52 +0200292 .button-group.button-view {
Akron3bb91bc2016-12-02 16:43:17 +0100293 display: block;
294 }
Akron7e5afce2020-08-25 15:50:19 +0200295
296 div.match-main {
297 display: block;
298 width: 100%;
299
300 div.match-wrap {
301 cursor: default;
302 min-height: 20pt;
Akron7636edf2025-11-04 12:44:53 +0100303 background-color: colors.$dark-orange;
Akron7e5afce2020-08-25 15:50:19 +0200304 width: 100%;
305 margin-left: 0;
306 overflow-x: visible;
Akron548ee672020-10-19 17:41:20 +0200307 white-space: normal;
Akron49bfdbf2016-11-22 21:47:33 +0100308 }
309 }
Akron49bfdbf2016-11-22 21:47:33 +0100310
Akron49bfdbf2016-11-22 21:47:33 +0100311 div.meta {
Akron97d42802016-11-26 22:45:46 +0100312 display: none;
Akron49bfdbf2016-11-22 21:47:33 +0100313 }
Akron7e5afce2020-08-25 15:50:19 +0200314
Akron49bfdbf2016-11-22 21:47:33 +0100315 p.ref {
Akron7e5afce2020-08-25 15:50:19 +0200316 display: block;
Akron7636edf2025-11-04 12:44:53 +0100317 color: colors.$nearly-white;
Akron9bddc842021-12-14 10:12:10 +0100318 padding: 3pt 10pt 3pt 3pt;
Akron7636edf2025-11-04 12:44:53 +0100319 padding-right: lengths.$right-view-distance;
Akron9bddc842021-12-14 10:12:10 +0100320 margin: 0pt;
321 width: 100%;
322 bottom: 0;
323 z-index: 30;
Akron7e5afce2020-08-25 15:50:19 +0200324
Akron9bddc842021-12-14 10:12:10 +0100325 > span.sigle {
326 font-size: 75%;
327 vertical-align: top;
Akron7636edf2025-11-04 12:44:53 +0100328 color: colors.$light-orange;
Akron9bddc842021-12-14 10:12:10 +0100329 float: right;
330 }
331
332 > div.button-panel + * {
333 margin-left: .5em;
334 }
Akron49bfdbf2016-11-22 21:47:33 +0100335 }
336}
Akron49bfdbf2016-11-22 21:47:33 +0100337
Akronf74cd2e2018-08-15 16:26:18 +0200338
339/**
Akron7e5afce2020-08-25 15:50:19 +0200340 * Alignment rules
Akronf74cd2e2018-08-15 16:26:18 +0200341 */
Akron7e5afce2020-08-25 15:50:19 +0200342#search ol {
343 span.context-left {
344 display: inline-block;
345 width: 50.01%;
346 text-align: right;
Akronad739342018-08-14 13:48:14 +0200347 }
348
Akron7e5afce2020-08-25 15:50:19 +0200349 // Right aligned
350 &.align-right {
351 text-align: right;
Akronf74cd2e2018-08-15 16:26:18 +0200352
Akron7e5afce2020-08-25 15:50:19 +0200353 div.match-main span.context-right {
354 display: inline-block;
355 width: 49.915%;
Akronf74cd2e2018-08-15 16:26:18 +0200356 text-align: left;
Akron7e5afce2020-08-25 15:50:19 +0200357 }
358 }
359
360 // Center aligned
361 &.align-center {
362 div.match-main {
363 width: 100% !important;
364
365 > .match-wrap {
366 position: relative;
367 margin-left: 0;
368 }
369 }
370
371 li:not(.active) div.snippet {
372 white-space: normal;
373 text-align: center;
374 width: 100000pt;
375 margin-left: -50000pt;
376
377 span.context-left {
378 display: inline-block;
379 text-align: right;
380 width: 40000pt;
381 margin-left: 70vw;
382 }
383
384 span.context-right {
385 display: inline-block;
386 text-align: left;
387 width: 40000pt;
388 }
Akronad739342018-08-14 13:48:14 +0200389 }
390 }
391}
392
393
Akron7e5afce2020-08-25 15:50:19 +0200394/**
395 * Fix empty contexts
396 */
397#search ol span {
398 &.context-left,
399 &.context-right {
400 &:empty::after {
401 content: " ";
402 display: inline-block;
403 }
Akron01231002017-06-29 20:47:58 +0200404 }
405}
Akron49bfdbf2016-11-22 21:47:33 +0100406
Akron7e5afce2020-08-25 15:50:19 +0200407
Akron49bfdbf2016-11-22 21:47:33 +0100408/**
Akron7e5afce2020-08-25 15:50:19 +0200409 * Highlight rules
Akron49bfdbf2016-11-22 21:47:33 +0100410 */
411mark {
412 background-color: inherit;
Akron7e5afce2020-08-25 15:50:19 +0200413 color: inherit;
Akron49bfdbf2016-11-22 21:47:33 +0100414}
415
416mark > mark,
417em,
418.level-0 {
419 border-bottom-width: 2px;
420 border-bottom-style: solid;
Akron7e5afce2020-08-25 15:50:19 +0200421 padding-bottom: 0px !important;
422 font-style: normal;
Akron49bfdbf2016-11-22 21:47:33 +0100423}
424
425mark > mark > mark,
426em > em,
427.level-1 {
Akron3bb91bc2016-12-02 16:43:17 +0100428 padding-bottom: 3px !important;
Akron49bfdbf2016-11-22 21:47:33 +0100429}
430
431mark > mark > mark > mark,
432em > em > em,
433.level-2 {
Akron3bb91bc2016-12-02 16:43:17 +0100434 padding-bottom: 6px !important;
Akron49bfdbf2016-11-22 21:47:33 +0100435}
436
437
438#search > ol > li {
439 &:not(.active) mark > mark > mark > mark,
440 &:not(.active) em > em > em {
441 line-height: 180%;
442 }
443 &.active mark > mark > mark > mark,
444 &.active em > em > em {
445 line-height: 250%;
446 }
447}
448
Akron7636edf2025-11-04 12:44:53 +0100449.class-1 { border-color: colors.$kwic-highlight-1; }
450.class-2 { border-color: colors.$kwic-highlight-2; }
451.class-3 { border-color: colors.$kwic-highlight-3; }
452.class-4 { border-color: colors.$kwic-highlight-4; }