blob: 4427a79aff35e015273dbdcfe446162834cc3fe3 [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 {
Marc Kupietzf3011de2026-03-02 16:51:26 +010086 display: flex;
87 align-items: center;
Akron7e5afce2020-08-25 15:50:19 +020088 flex: 1 0;
89 min-width: 12em;
90 max-width: 15em;
91 text-align: left;
92 width: 2px;
93 z-index: 5;
94 overflow-y: hidden;
95 overflow-x: hidden;
96 text-overflow: ellipsis;
97 white-space: nowrap;
Akron7636edf2025-11-04 12:44:53 +010098 background-color: color.adjust(colors.$middle-grey, $lightness: 5%, $space: hsl);
99 color: colors.$nearly-white;
Akron7e5afce2020-08-25 15:50:19 +0200100 font-size: 75%;
101 padding: 0 5pt;
102
Marc Kupietzf3011de2026-03-02 16:51:26 +0100103 > span, > ul.meta-list {
104 min-width: 0;
105 width: 100%;
106 }
107
108 ul.meta-list {
109 list-style-type: disc;
110 margin: 0;
111 padding: 0 0 0 1em;
112 }
113
Akron7e5afce2020-08-25 15:50:19 +0200114 border: {
Akron7636edf2025-11-04 12:44:53 +0100115 color: colors.$dark-grey;
Akron7e5afce2020-08-25 15:50:19 +0200116 style: solid;
117 width: 2px 1px 0 0;
118 }
119
120 // Tiny hack
121 &:before {
122 content: " ";
123 display: inline-block;
124 height: 100%;
125 vertical-align: middle;
126 }
127
128 &:empty {
129 border-width: 0 1px 0 0;
130 }
131
132 &.flip {
Akron7636edf2025-11-04 12:44:53 +0100133 background-color: color.adjust(colors.$middle-grey, $lightness: 17%, $space: hsl);
Akron7e5afce2020-08-25 15:50:19 +0200134 }
Marc Kupietzf3011de2026-03-02 16:51:26 +0100135
136 &.type-text, &.type-keywords {
137 white-space: normal;
138 word-wrap: break-word;
139 }
Akron08b82d62016-12-05 15:06:05 +0100140 }
Akron7e5afce2020-08-25 15:50:19 +0200141
142 &:first-of-type div.meta {
143 border-top-width: 0;
144 }
145
146 &:last-of-type div.meta {
147 border-bottom-width: 0;
148 }
Akron08b82d62016-12-05 15:06:05 +0100149 }
Akron49bfdbf2016-11-22 21:47:33 +0100150 }
151}
152
Akron49bfdbf2016-11-22 21:47:33 +0100153
Akron7e5afce2020-08-25 15:50:19 +0200154/**
155 * Snippet rules
Akron49bfdbf2016-11-22 21:47:33 +0100156 */
Akron49bfdbf2016-11-22 21:47:33 +0100157div.snippet {
158 text-overflow: ellipsis;
Akron7e5afce2020-08-25 15:50:19 +0200159 text-indent: 0;
Akron7636edf2025-11-04 12:44:53 +0100160 text-shadow: colors.$light-shadow;
Akron7e5afce2020-08-25 15:50:19 +0200161 font-size: 0;
162 white-space: nowrap !important;
Akronf74cd2e2018-08-15 16:26:18 +0200163
Akron49bfdbf2016-11-22 21:47:33 +0100164 > span, mark {
Akron7e5afce2020-08-25 15:50:19 +0200165 padding: 5pt 0 6pt 0;
Akron2b75b132018-08-13 09:47:47 +0200166 font-size: $font-size;
Akron49bfdbf2016-11-22 21:47:33 +0100167 }
Akron7e5afce2020-08-25 15:50:19 +0200168
169 > mark,
170 > span.match {
Akron49bfdbf2016-11-22 21:47:33 +0100171 font-weight: bold;
Akron7636edf2025-11-04 12:44:53 +0100172 color: colors.$black;
Akron08b82d62016-12-05 15:06:05 +0100173 text-shadow: none;
Akron49bfdbf2016-11-22 21:47:33 +0100174 padding-left: 4pt;
175 padding-right: 2pt;
176 }
Akron7e5afce2020-08-25 15:50:19 +0200177
Akron09e7f1f2018-05-28 14:08:14 +0200178 > span.match > span.cutted::after {
Akron7636edf2025-11-04 12:44:53 +0100179 @include mixins.icon-font;
180 content: icons.$fa-cut;
181 color: colors.$light-green;
Akron7e5afce2020-08-25 15:50:19 +0200182
Akron09e7f1f2018-05-28 14:08:14 +0200183 padding: {
Akron7e5afce2020-08-25 15:50:19 +0200184 left: 4pt;
Akron09e7f1f2018-05-28 14:08:14 +0200185 right: 4pt;
186 }
Akronb6685bb2018-02-04 00:44:47 +0100187 }
Akron86817092024-05-27 17:52:21 +0200188
Akron7e5afce2020-08-25 15:50:19 +0200189 &.startMore:before,
190 &.endMore:after {
191 content: "…";
192 padding-left: 2pt;
193 padding-right: 2pt;
Akronb6685bb2018-02-04 00:44:47 +0100194 }
Akron3bb91bc2016-12-02 16:43:17 +0100195
Akron7e5afce2020-08-25 15:50:19 +0200196 // Flags
197 div.flag {
198 position: absolute;
199 height: 100%;
200 top: 0;
201 left: 0;
202 width: 11px;
Akron7636edf2025-11-04 12:44:53 +0100203 background-color: colors.$dark-orange;
204 border-right: 1px solid colors.$darkest-orange;
Akron49bfdbf2016-11-22 21:47:33 +0100205 }
206}
Akron49bfdbf2016-11-22 21:47:33 +0100207
Akron8b592d42018-01-26 18:33:06 +0100208
Akron49bfdbf2016-11-22 21:47:33 +0100209/**
Akron7e5afce2020-08-25 15:50:19 +0200210 * Active rules
Akron49bfdbf2016-11-22 21:47:33 +0100211 */
Akron2a4e9af2017-12-22 15:45:22 +0100212body.no-js #search > ol > li:active,
213#search > ol > li.active,
214#search > ol > li:target {
Akron7e5afce2020-08-25 15:50:19 +0200215 position: relative;
216 display: block;
Akron7636edf2025-11-04 12:44:53 +0100217 background-color: colors.$dark-orange;
Akron7e5afce2020-08-25 15:50:19 +0200218 text-align: left;
219 border-width: 2px;
Akron548ee672020-10-19 17:41:20 +0200220 white-space: normal;
Akron7e5afce2020-08-25 15:50:19 +0200221 height: auto;
222 width: auto;
223 overflow: hidden;
Akron3bb91bc2016-12-02 16:43:17 +0100224
Akron7e5afce2020-08-25 15:50:19 +0200225 div.matchinfo {
226 display: block;
Akron49bfdbf2016-11-22 21:47:33 +0100227 }
Akron7e5afce2020-08-25 15:50:19 +0200228
229 + li.active {
Akron7636edf2025-11-04 12:44:53 +0100230 border-top: lengths.$border-size solid colors.$light-grey;
231 padding-top: 3 * lengths.$border-size;
Akron7e5afce2020-08-25 15:50:19 +0200232
233 .button-group.button-view {
Akron7636edf2025-11-04 12:44:53 +0100234 padding-top: 3 * lengths.$border-size;
Akron7e5afce2020-08-25 15:50:19 +0200235 }
Akronf74cd2e2018-08-15 16:26:18 +0200236 }
237
Akron7e5afce2020-08-25 15:50:19 +0200238 .snippet {
239 white-space: normal !important;
Akronc6c68212025-10-22 14:33:51 +0200240 padding: 2pt 0 5pt 5pt;
Akron7636edf2025-11-04 12:44:53 +0100241 background-color: colors.$light-orange;
Akron7e5afce2020-08-25 15:50:19 +0200242
Akronc6c68212025-10-22 14:33:51 +0200243 margin: {
244 top: 0;
Akron7636edf2025-11-04 12:44:53 +0100245 right: lengths.$right-view-distance;
Akronc6c68212025-10-22 14:33:51 +0200246 bottom: 0;
247 left: 0;
248 }
249
Akron7e5afce2020-08-25 15:50:19 +0200250 span {
251 display: inline !important;
252 }
253
Akron86817092024-05-27 17:52:21 +0200254 > * {
255 background-color: transparent;
256 }
Akron7e5afce2020-08-25 15:50:19 +0200257
Akron6e026522024-06-25 14:03:17 +0200258 span.inline-marker[data-key][data-value]:not([data-value=""]) {
259 font-size: 85%;
260 text-shadow:none;
Akron86817092024-05-27 17:52:21 +0200261 font-weight: normal;
Akron7636edf2025-11-04 12:44:53 +0100262 color: colors.$dark-grey;
Akron86817092024-05-27 17:52:21 +0200263 &::before, &::after {
264 display: inline-block !important;
265 border-width: 2px;
266 border-radius: 0;
Akron6e026522024-06-25 14:03:17 +0200267 margin: 0;
Akron86817092024-05-27 17:52:21 +0200268 padding: 0 4pt;
269 }
270 &::before {
271 color: white;
272 margin-right: 0;
273 border-top-left-radius: 5px;
274 border-bottom-left-radius: 5px;
Akron3b2b29e2025-06-24 10:55:30 +0200275 border-right-width: 0;
Akron7636edf2025-11-04 12:44:53 +0100276 background-color: colors.$dark-orange !important;
Akron6e026522024-06-25 14:03:17 +0200277 content: attr(data-key) ':';
Akron86817092024-05-27 17:52:21 +0200278 }
279
280 &::after {
Akron3b2b29e2025-06-24 10:55:30 +0200281 border-left-width: 0;
Akron86817092024-05-27 17:52:21 +0200282 margin-left: 0;
Akron6e026522024-06-25 14:03:17 +0200283 margin-right: 3pt;
284 padding-left: 1pt;
Akron86817092024-05-27 17:52:21 +0200285 border-top-right-radius: 5px;
286 border-bottom-right-radius: 5px;
Akron7636edf2025-11-04 12:44:53 +0100287 background-color: colors.$dark-orange !important;
Akron86817092024-05-27 17:52:21 +0200288 content: attr(data-value);
289 }
290 }
291
Akron7e5afce2020-08-25 15:50:19 +0200292 div.flag {
293 display: none;
294 }
295
Akronc6c68212025-10-22 14:33:51 +0200296 > span {
Akron7e5afce2020-08-25 15:50:19 +0200297 line-height: 1.4em;
298 width: auto;
299
300 &.context-left {
301 margin-left: 0;
302 display: inline;
303 overflow: visible;
304 text-align: left;
305 width: auto;
306 }
Akronc6c68212025-10-22 14:33:51 +0200307 }
Akron3bb91bc2016-12-02 16:43:17 +0100308 }
Akron7e5afce2020-08-25 15:50:19 +0200309
Akronbfe912c2018-07-17 19:30:52 +0200310 .button-group.button-view {
Akron3bb91bc2016-12-02 16:43:17 +0100311 display: block;
312 }
Akron7e5afce2020-08-25 15:50:19 +0200313
314 div.match-main {
315 display: block;
316 width: 100%;
317
318 div.match-wrap {
319 cursor: default;
320 min-height: 20pt;
Akron7636edf2025-11-04 12:44:53 +0100321 background-color: colors.$dark-orange;
Akron7e5afce2020-08-25 15:50:19 +0200322 width: 100%;
323 margin-left: 0;
324 overflow-x: visible;
Akron548ee672020-10-19 17:41:20 +0200325 white-space: normal;
Akron49bfdbf2016-11-22 21:47:33 +0100326 }
327 }
Akron49bfdbf2016-11-22 21:47:33 +0100328
Akron49bfdbf2016-11-22 21:47:33 +0100329 div.meta {
Akron97d42802016-11-26 22:45:46 +0100330 display: none;
Akron49bfdbf2016-11-22 21:47:33 +0100331 }
Akron7e5afce2020-08-25 15:50:19 +0200332
Akron49bfdbf2016-11-22 21:47:33 +0100333 p.ref {
Akron7e5afce2020-08-25 15:50:19 +0200334 display: block;
Akron7636edf2025-11-04 12:44:53 +0100335 color: colors.$nearly-white;
Akron9bddc842021-12-14 10:12:10 +0100336 padding: 3pt 10pt 3pt 3pt;
Akron7636edf2025-11-04 12:44:53 +0100337 padding-right: lengths.$right-view-distance;
Akron9bddc842021-12-14 10:12:10 +0100338 margin: 0pt;
339 width: 100%;
340 bottom: 0;
341 z-index: 30;
Akron7e5afce2020-08-25 15:50:19 +0200342
Akron9bddc842021-12-14 10:12:10 +0100343 > span.sigle {
344 font-size: 75%;
345 vertical-align: top;
Akron7636edf2025-11-04 12:44:53 +0100346 color: colors.$light-orange;
Akron9bddc842021-12-14 10:12:10 +0100347 float: right;
348 }
349
350 > div.button-panel + * {
351 margin-left: .5em;
352 }
Akron49bfdbf2016-11-22 21:47:33 +0100353 }
354}
Akron49bfdbf2016-11-22 21:47:33 +0100355
Akronf74cd2e2018-08-15 16:26:18 +0200356
357/**
Akron7e5afce2020-08-25 15:50:19 +0200358 * Alignment rules
Akronf74cd2e2018-08-15 16:26:18 +0200359 */
Akron7e5afce2020-08-25 15:50:19 +0200360#search ol {
361 span.context-left {
362 display: inline-block;
363 width: 50.01%;
364 text-align: right;
Akronad739342018-08-14 13:48:14 +0200365 }
366
Akron7e5afce2020-08-25 15:50:19 +0200367 // Right aligned
368 &.align-right {
369 text-align: right;
Akronf74cd2e2018-08-15 16:26:18 +0200370
Akron7e5afce2020-08-25 15:50:19 +0200371 div.match-main span.context-right {
372 display: inline-block;
373 width: 49.915%;
Akronf74cd2e2018-08-15 16:26:18 +0200374 text-align: left;
Akron7e5afce2020-08-25 15:50:19 +0200375 }
376 }
377
378 // Center aligned
379 &.align-center {
380 div.match-main {
381 width: 100% !important;
382
383 > .match-wrap {
384 position: relative;
385 margin-left: 0;
386 }
387 }
388
389 li:not(.active) div.snippet {
390 white-space: normal;
391 text-align: center;
392 width: 100000pt;
393 margin-left: -50000pt;
394
395 span.context-left {
396 display: inline-block;
397 text-align: right;
398 width: 40000pt;
399 margin-left: 70vw;
400 }
401
402 span.context-right {
403 display: inline-block;
404 text-align: left;
405 width: 40000pt;
406 }
Akronad739342018-08-14 13:48:14 +0200407 }
408 }
409}
410
411
Akron7e5afce2020-08-25 15:50:19 +0200412/**
413 * Fix empty contexts
414 */
415#search ol span {
416 &.context-left,
417 &.context-right {
418 &:empty::after {
419 content: " ";
420 display: inline-block;
421 }
Akron01231002017-06-29 20:47:58 +0200422 }
423}
Akron49bfdbf2016-11-22 21:47:33 +0100424
Akron7e5afce2020-08-25 15:50:19 +0200425
Akron49bfdbf2016-11-22 21:47:33 +0100426/**
Akron7e5afce2020-08-25 15:50:19 +0200427 * Highlight rules
Akron49bfdbf2016-11-22 21:47:33 +0100428 */
429mark {
430 background-color: inherit;
Akron7e5afce2020-08-25 15:50:19 +0200431 color: inherit;
Akron49bfdbf2016-11-22 21:47:33 +0100432}
433
434mark > mark,
435em,
436.level-0 {
437 border-bottom-width: 2px;
438 border-bottom-style: solid;
Akron7e5afce2020-08-25 15:50:19 +0200439 padding-bottom: 0px !important;
440 font-style: normal;
Akron49bfdbf2016-11-22 21:47:33 +0100441}
442
443mark > mark > mark,
444em > em,
445.level-1 {
Akron3bb91bc2016-12-02 16:43:17 +0100446 padding-bottom: 3px !important;
Akron49bfdbf2016-11-22 21:47:33 +0100447}
448
449mark > mark > mark > mark,
450em > em > em,
451.level-2 {
Akron3bb91bc2016-12-02 16:43:17 +0100452 padding-bottom: 6px !important;
Akron49bfdbf2016-11-22 21:47:33 +0100453}
454
455
456#search > ol > li {
457 &:not(.active) mark > mark > mark > mark,
458 &:not(.active) em > em > em {
459 line-height: 180%;
460 }
461 &.active mark > mark > mark > mark,
462 &.active em > em > em {
463 line-height: 250%;
464 }
465}
466
Akron7636edf2025-11-04 12:44:53 +0100467.class-1 { border-color: colors.$kwic-highlight-1; }
468.class-2 { border-color: colors.$kwic-highlight-2; }
469.class-3 { border-color: colors.$kwic-highlight-3; }
470.class-4 { border-color: colors.$kwic-highlight-4; }