Pop-up dictionary browser extension for language learning. Successor to Yomichan. (PERSONAL FORK)
at lambda-fork/main 489 lines 16 kB view raw
1:root { 2 --padding: 10px; 3 --padding-negative: calc(var(--padding) * -1); 4 --content-width: 700px; 5 --shadow-vertical: 0 1px 4px 0 var(--shadow-color), 0 2px 2px 0 var(--shadow-color); 6 --shadow-left: -1px 0 4px 0 var(--shadow-color), -2px 0 2px 0 var(--shadow-color); 7 --settings-group-horizontal-margin: 0; 8 --settings-group-inner-vertical-padding: 0.85em; 9 --settings-group-inner-horizontal-padding: 1.5em; 10 --settings-group-inner-horizontal-padding-half: calc(var(--settings-group-inner-horizontal-padding) * 0.5); 11 --settings-group-inner-horizontal-padding-half-wrappable: var(--settings-group-inner-horizontal-padding-half); 12 --settings-group-inner-horizontal-padding-fourth: calc(var(--settings-group-inner-horizontal-padding) * 0.25); 13 --settings-group-border-radius: 0.3em; 14 --settings-group-right-max-height: 40px; 15 --settings-group-wrap: nowrap; 16 --show-preview-label-height: 40px; 17 18 --font-size-no-units: 14; 19 --font-size: calc(1px * var(--font-size-no-units)); 20 --font-size-small: 12px; 21 --outline-item-height: 40px; 22 --outline-item-icon-size: 32px; 23 --input-short-width: calc(var(--input-width-large) / 2 - var(--padding) / 2); 24 --input-short-height: 24px; 25 --input-medium-width: calc(var(--input-width-large) * 0.75); 26 --fab-button-size: 56px; 27 --fab-button-padding: 16px; 28 --modal-width: 600px; 29 --modal-height: 400px; 30 --modal-width-small: 400px; 31 --modal-height-small: 200px; 32 --modal-width-medium: 600px; 33 --modal-height-medium: 400px; 34 --modal-transition-offset: -64px; 35 --badge-size: 16px; 36 37 --link-color: var(--accent-color); 38 --link-color-hover: var(--accent-color-dark); 39 --separator-color1: #cccccc; 40 --separator-color2: #eeeeee; 41 --outline-item-background-color: rgba(13, 13, 13, 0); 42 --outline-item-background-color-hover: rgba(13, 13, 13, 0.15); 43 --warning-color: #96751c; 44 --warning-color-light: #edc75e; 45 --dim-background-color: rgba(0, 0, 0, 0.5); 46 --content-dimmer-color: rgba(0, 0, 0, 0.1); 47 --advanced-color: #6640be; 48 --advanced-color-lighter: hsl(258, 50%, 75%); 49 --advanced-color-transparent25: rgba(102, 64, 190, 0.5); 50 51 --modal-padding-horizontal: 1em; 52 --modal-padding-vertical: 0.625em; 53 --modal-padding-vertical-half: calc(var(--modal-padding-vertical) * 0.5); 54 --modal-button-spacing: 0.625em; 55} 56:root:not([data-loaded=true]) { 57 --animation-duration: 0s; 58} 59:root[data-theme=dark] { 60 --separator-color1: #333333; 61 --separator-color2: #222222; 62} 63 64/* Modal */ 65.modal { 66 position: fixed; 67 left: 0; 68 top: 0; 69 bottom: 0; 70 right: 0; 71 display: flex; 72 flex-flow: row nowrap; 73 justify-content: center; 74 align-items: center; 75 overscroll-behavior: contain; 76 background-color: var(--dim-background-color); 77 outline: none; 78 z-index: 10000; 79 opacity: 1; 80 visibility: visible; 81 transition: 82 opacity var(--animation-duration2) ease-out, 83 visibility 0s linear; 84} 85.modal[hidden] { 86 opacity: 0; 87 visibility: hidden; 88 transition: 89 opacity var(--animation-duration2) ease-in, 90 visibility 0s linear var(--animation-duration2); 91} 92.modal[hidden]:not(.hidden-animating) { 93 display: none; 94} 95.modal-content { 96 max-width: 100%; 97 max-height: 100%; 98 width: var(--modal-width); 99 height: var(--modal-height); 100 background-color: var(--background-color-light); 101 flex: 0 1 auto; 102 border-radius: 0.5em; 103 transform: translate(0, 0); 104 transition: 105 transform var(--animation-duration2) ease-out, 106 width var(--animation-duration2) ease-in-out, 107 height var(--animation-duration2) ease-in-out, 108 border-radius var(--animation-duration2) ease-in-out; 109 box-shadow: var(--shadow-vertical); 110 display: flex; 111 flex-flow: column nowrap; 112 overflow: hidden; 113} 114.modal[hidden] .modal-content { 115 pointer-events: none; 116} 117.modal-content.modal-content-small { 118 width: var(--modal-width-small); 119 min-height: var(--modal-height-small); 120 height: auto; 121 max-height: 100%; 122} 123.modal-content.modal-content-medium { 124 width: var(--modal-width-medium); 125 min-height: var(--modal-height-medium); 126 height: auto; 127 max-height: 100%; 128} 129.modal-content.modal-content-full { 130 width: var(--content-width); 131 height: 100%; 132 transform: translate(0, 0); 133 border-radius: 0; 134} 135.modal[hidden] .modal-content { 136 transform: translate(0, var(--modal-transition-offset)); 137 transition: 138 transform 0s linear var(--animation-duration2), 139 width var(--animation-duration2) ease-in-out, 140 height var(--animation-duration2) ease-in-out, 141 border-radius var(--animation-duration2) ease-in-out; 142} 143.modal-header { 144 flex: 0 0 auto; 145 padding: var(--modal-padding-vertical) var(--modal-padding-horizontal) var(--modal-padding-vertical-half); 146 display: flex; 147 width: 100%; 148 align-items: center; 149 box-sizing: border-box; 150} 151.modal-title { 152 font-size: 1.125em; 153 flex: 1 1 auto; 154} 155.modal-footer { 156 flex: 0 0 auto; 157 padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal) var(--modal-padding-vertical); 158 margin-right: calc(var(--modal-button-spacing) * -1); 159 margin-top: calc(var(--modal-button-spacing) * -1); 160 display: flex; 161 flex-flow: row wrap; 162 align-items: flex-end; 163 justify-items: flex-end; 164 justify-content: flex-end; 165} 166.modal-footer>* { 167 margin-right: var(--modal-button-spacing); 168 margin-top: var(--modal-button-spacing); 169} 170.modal-body { 171 flex: 1 1 auto; 172 overflow: auto; 173 padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal); 174} 175.modal-body-addon { 176 flex: 0 0 auto; 177 padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal); 178} 179.modal-body>.settings-item, 180.modal-settings-group>.settings-item { 181 margin-left: calc(var(--modal-padding-horizontal) * -1); 182} 183.modal-body .settings-item { 184 margin-right: calc(var(--modal-padding-horizontal) * -1); 185} 186.modal-body .settings-item+.settings-item { 187 border-top: none; 188} 189.modal-body .settings-item-left { 190 padding-left: var(--modal-padding-horizontal); 191 padding-top: var(--settings-group-inner-horizontal-padding-fourth); 192 padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); 193} 194.modal-body .settings-item-right { 195 padding-right: var(--modal-padding-horizontal); 196 padding-top: var(--settings-group-inner-horizontal-padding-fourth); 197 padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); 198} 199.modal-body .settings-item-children { 200 padding-left: var(--modal-padding-horizontal); 201 padding-right: var(--modal-padding-horizontal); 202 padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); 203} 204 205.modal.modal-left { 206 display: flex; 207 flex-flow: row nowrap; 208 width: 100%; 209 height: 100%; 210 background-color: transparent; 211 pointer-events: none; 212} 213.modal-content-container { 214 pointer-events: none; 215 width: 100%; 216 height: 100%; 217 display: flex; 218 flex-flow: row nowrap; 219 justify-content: center; 220 align-items: center; 221} 222 223.modal-content-container>.modal-content, 224.modal-content-container>.modal-content-dimmer { 225 pointer-events: auto; 226} 227 228.modal-content-container>.modal-content-dimmer { 229 background: var(--custom-css-modal-background); 230 width: var(--custom-css-dim-size); 231 height: 100%; 232 margin-right: calc(100% - var(--custom-css-dim-size)); 233 position: absolute; 234} 235 236.modal-header-button-container { 237 margin-top: calc(-1 * var(--modal-padding-vertical-half)); 238 margin-bottom: calc(-1 * var(--modal-padding-vertical-half)); 239} 240.modal-header-button-group { 241 display: block; 242 position: relative; 243 width: var(--icon-button-size); 244 height: var(--icon-button-size); 245} 246.modal-header-button { 247 position: absolute; 248 left: 0; 249 top: 0; 250 right: 0; 251 bottom: 0; 252} 253button.icon-button.modal-header-button { 254 --button-content-color: var(--button-default-icon-color-light); 255 --button-hover-content-color: var(--button-default-icon-color); 256 --button-active-content-color: var(--button-default-icon-color); 257} 258button.icon-button.modal-header-button>.icon-button-inner>.icon { 259 transition: background-color var(--animation-duration) ease-in-out; 260} 261.modal-header-button[data-modal-action=expand], 262.modal-header-button[data-modal-action=collapse] { 263 visibility: visible; 264 opacity: 1; 265 z-index: 1; 266 transition: 267 opacity var(--animation-duration2) ease-in-out 0s, 268 visibility 0s ease-in-out 0s; 269} 270.modal-content.modal-content-full .modal-header-button[data-modal-action=expand], 271.modal-content:not(.modal-content-full) .modal-header-button[data-modal-action=collapse] { 272 visibility: hidden; 273 opacity: 0; 274 pointer-events: none; 275 z-index: 0; 276 transition: 277 opacity var(--animation-duration2) ease-in-out 0s, 278 visibility 0s ease-in-out var(--animation-duration2); 279} 280 281.modal-separator-line { 282 border-top: var(--thin-border-size) solid var(--separator-color1); 283 margin: 0 calc(var(--modal-padding-horizontal) * -1); 284} 285.modal-separator-line-light { 286 border-top: var(--thin-border-size) solid var(--separator-color2); 287 margin: 0 calc(var(--modal-padding-horizontal) * -1); 288} 289 290/* Settings styles */ 291.settings-group { 292 margin: 0 var(--settings-group-horizontal-margin); 293 padding: 0; 294 box-sizing: border-box; 295 background-color: var(--background-color-light); 296 box-shadow: var(--shadow-vertical); 297 border-radius: var(--settings-group-border-radius); 298 overflow-x: hidden; 299} 300.settings-group.settings-group-top-margin { 301 margin-top: 1.0125em; 302} 303.settings-item { 304 position: relative; 305} 306.settings-item:not([hidden]) { 307 display: block; 308} 309.settings-item-outer { 310 display: block; 311 width: 100%; 312} 313.settings-item-inner { 314 display: flex; 315 flex-flow: row nowrap; 316 justify-content: flex-end; 317 align-content: stretch; 318 width: 100%; 319} 320.settings-item-inner.settings-item-inner-wrappable { 321 flex-wrap: var(--settings-group-wrap); 322} 323.settings-item-left { 324 padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding-half) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); 325 flex: 1 1 auto; 326 align-self: center; 327 position: relative; 328} 329.settings-item-left:last-child { 330 padding-right: var(--settings-group-inner-horizontal-padding); 331} 332.settings-item-right { 333 padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding-half); 334 flex: 0 1 auto; 335 align-self: stretch; 336 max-height: var(--settings-group-right-max-height); 337 display: flex; 338 flex-flow: row nowrap; 339 align-items: center; 340 align-content: center; 341 justify-content: flex-end; 342} 343.settings-item-inner.settings-item-inner-wrappable>.settings-item-left { 344 padding-right: var(--settings-group-inner-horizontal-padding-half-wrappable); 345} 346.settings-item-inner.settings-item-inner-wrappable>.settings-item-right { 347 padding-left: var(--settings-group-inner-horizontal-padding-half-wrappable); 348} 349.settings-item-center { 350 padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); 351 flex: 0 1 100%; 352 align-self: flex-start; 353 text-align: center; 354} 355.settings-item+.settings-item { 356 border-top: var(--thin-border-size) solid var(--separator-color2); 357} 358.settings-item-description { 359 color: var(--text-color-light2); 360} 361.settings-item-right.open-panel-button-container { 362 padding: 0.25em 1em 0.25em 0.75em; 363 max-height: calc(var(--settings-group-right-max-height) + var(--settings-group-inner-vertical-padding) * 2); 364} 365.settings-item-children { 366 padding: 0em var(--settings-group-inner-horizontal-padding-half) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); 367 margin-top: 0; 368} 369.settings-item-children.settings-item-children-group { 370 padding: 0 0 0 calc(var(--settings-group-inner-horizontal-padding) + var(--settings-group-inner-horizontal-padding)); 371} 372.settings-item-children.settings-item-children-group .settings-item { 373 border-top: var(--thin-border-size) solid var(--separator-color2); 374} 375.settings-item-children.settings-item-children-group .settings-item-left { 376 padding-left: 0; 377} 378.settings-item-children.settings-item-children-group .settings-item-inner.settings-item-inner-wrappable>.settings-item-left:not(:last-child) { 379 padding-right: calc(var(--settings-group-inner-horizontal-padding-half-wrappable) * 2); 380} 381.settings-item-children.settings-item-children-group .settings-item-inner.settings-item-inner-wrappable>.settings-item-right { 382 padding-left: 0; 383} 384.settings-item-children.settings-item-children-group .settings-item-children { 385 padding-left: 0; 386} 387.settings-item.settings-item-button, 388a.settings-item.settings-item-button { 389 cursor: pointer; 390 color: var(--text-color); 391 text-decoration: none; 392 background-color: transparent; 393 transition: background-color var(--animation-duration) ease-in-out; 394} 395.settings-item.settings-item-button>.settings-item-inner, 396.settings-item.settings-item-button>.settings-item-inner>.settings-item-left, 397.settings-item.settings-item-button>.settings-item-inner>.settings-item-right { 398 margin-top: 0; 399} 400.settings-item.settings-item-button:hover, 401.settings-item.settings-item-button:active { 402 background-color: var(--background-color); 403} 404.settings-item.settings-item-button .icon-button>.icon-button-inner>.icon { 405 transition: background-color var(--animation-duration) ease-in-out; 406} 407.settings-item.settings-item-button:hover .icon-button>.icon-button-inner>.icon, 408.settings-item.settings-item-button:active .icon-button>.icon-button-inner>.icon { 409 background-color: var(--accent-color); 410} 411.settings-item-invalid-indicator { 412 display: none; 413 position: absolute; 414 left: 0; 415 top: 0; 416 bottom: 0; 417 width: 0.5em; 418 background-color: var(--danger-color); 419} 420.settings-item[data-invalid=true] .settings-item-invalid-indicator { 421 display: block; 422} 423 424 425/* Settings item groups */ 426.settings-item-group { 427 margin-right: var(--padding-negative); 428 display: flex; 429 flex-flow: row nowrap; 430 align-items: center; 431 align-content: center; 432 justify-content: flex-end; 433} 434.settings-item-group.settings-item-group-wrap { 435 flex-wrap: wrap; 436} 437.settings-item-group-item { 438 flex: 0 1 auto; 439 padding-right: var(--padding); 440} 441.settings-item-group-item-label { 442 font-size: var(--font-size-small); 443 line-height: 1; 444} 445input[type=text].short-width, 446input[type=number].short-width, 447select.short-width { 448 width: var(--input-short-width); 449} 450input[type=text].medium-width, 451input[type=number].medium-width, 452select.medium-width { 453 width: var(--input-medium-width); 454} 455input[type=text].short-height, 456input[type=number].short-height, 457select.short-height { 458 height: var(--input-short-height); 459 margin-top: calc(var(--settings-group-right-max-height) - var(--input-short-height) - var(--font-size-small)); 460 line-height: var(--line-height); 461} 462.settings-item-button-group-container { 463 max-height: none; 464 width: 100%; 465} 466.settings-item-button-group { 467 display: flex; 468 width: 100%; 469 flex-flow: row wrap; 470 max-height: none; 471 justify-content: flex-start; 472 margin-top: var(--padding-negative); 473 margin-right: var(--padding-negative); 474} 475.settings-item-button-group-item { 476 flex: 0 1 auto; 477 padding-top: var(--padding); 478 padding-right: var(--padding); 479} 480.settings-item-progress-report { 481 display: none; 482 font-weight: bold; 483 color: #4169e1; 484} 485.settings-item-error-report { 486 display: none; 487 font-weight: bold; 488 color: #8b0000; 489}