popup.css 18 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003
  1. :root {
  2. --inner-padding: 18px; /* checkbox + gap */
  3. --outer-padding: 9px;
  4. --hotkey-margin: 16px;
  5. }
  6. html, body {
  7. height: min-content;
  8. max-height: 600px;
  9. }
  10. body {
  11. width: 252px;
  12. font-size: 12px;
  13. font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
  14. margin: 0;
  15. }
  16. .firefox body {
  17. color: #000;
  18. background-color: #fff;
  19. }
  20. .firefox button {
  21. transition: none; /* FF borks subpixel AA during transitions in popup */
  22. }
  23. body > div:not(#installed):not(#message-box):not(.colorpicker-popup) {
  24. padding-left: var(--outer-padding);
  25. padding-right: var(--outer-padding);
  26. }
  27. .firefox .chromium-only {
  28. display: none;
  29. }
  30. /************ checkbox ************/
  31. .style-name:hover .checker:checked {
  32. border-color: hsl(0, 0%, 32%);
  33. background-color: hsl(0, 0%, 82%);
  34. }
  35. .style-name:hover .checker {
  36. border-color: hsl(0, 0%, 32%);
  37. background-color: hsl(0, 0%, 82%);
  38. }
  39. #disable-all-wrapper input[type="checkbox"]:not(.slider):checked + .svg-icon.checked {
  40. position: absolute;
  41. top: 0;
  42. left: 0;
  43. pointer-events: none;
  44. }
  45. #installed.disabled + .actions #disableAll:checked + .svg-icon.checked {
  46. fill: hsl(0, 68%, 42%);
  47. }
  48. #installed.disabled + .actions #disableAll:checked {
  49. border-color: hsl(0, 68%, 50%);
  50. }
  51. #installed.disabled + .actions #disableAll:checked:hover + .svg-icon.checked {
  52. fill: #fff;
  53. }
  54. #disableAll:hover {
  55. border-color: hsl(0, 68%, 50%);
  56. background-color: hsl(20, 70%, 75%);
  57. }
  58. #disableAll-label:hover {
  59. color: hsl(0, 68%, 42%);
  60. }
  61. #installed.disabled + .actions #disableAll:checked:hover {
  62. border-color: hsl(0, 50%, 56%);
  63. background-color: hsl(0, 50%, 56%);
  64. }
  65. #installed .style-name .checker,
  66. #installed .style-name .svg-icon.checked {
  67. position: absolute;
  68. top: 7px;
  69. left: var(--outer-padding);
  70. pointer-events: none;
  71. }
  72. #disable-all-wrapper {
  73. padding: 0.3em 0 0.6em;
  74. }
  75. #disable-all-wrapper .main-controls {
  76. display: flex;
  77. position: relative;
  78. }
  79. #disable-all-wrapper .main-controls label {
  80. padding-left: var(--inner-padding);
  81. position: relative;
  82. transition: color .25s;
  83. font-size: 12px;
  84. }
  85. #no-styles {
  86. padding: 6px var(--outer-padding);
  87. font-weight: bold;
  88. }
  89. #find-styles-link {
  90. cursor: pointer;
  91. margin-right: .5em;
  92. }
  93. #find-styles-inline-group label {
  94. position: relative;
  95. padding-left: 16px;
  96. }
  97. .checker {
  98. display: inline;
  99. }
  100. a {
  101. color: #000;
  102. transition: color .5s;
  103. }
  104. a:hover {
  105. color: #666;
  106. }
  107. .actions > .main-controls {
  108. padding-left: var(--inner-padding);
  109. }
  110. .main-controls {
  111. display: table-cell;
  112. }
  113. body > DIV:last-of-type,
  114. body.blocked > DIV {
  115. border-bottom: none;
  116. }
  117. #installed {
  118. border-bottom: 1px solid black;
  119. max-height: 445px;
  120. overflow-y: auto;
  121. counter-reset: style-number;
  122. position: relative;
  123. }
  124. #installed.disabled .style-name {
  125. text-decoration: line-through;
  126. }
  127. #installed.disabled + .actions #disableAll-label {
  128. font-weight: bold;
  129. color: firebrick;
  130. }
  131. #installed .actions {
  132. cursor: default;
  133. }
  134. #installed .actions a {
  135. cursor: pointer;
  136. text-decoration: none;
  137. }
  138. /* entry */
  139. .entry {
  140. position: relative;
  141. }
  142. .entry-content {
  143. display: flex;
  144. align-items: center;
  145. height: 26px;
  146. padding: 0 14px 0 0;
  147. }
  148. html[style] .entry-content {
  149. padding: 0 var(--hotkey-margin) 0 0;
  150. }
  151. #no-styles.entry {
  152. padding: 0 14px;
  153. }
  154. .entry .actions {
  155. display: inline-flex;
  156. align-items: center;
  157. }
  158. .style-name {
  159. height: 100%;
  160. width: 100%;
  161. line-height: 28px;
  162. cursor: default;
  163. font-weight: bold;
  164. overflow: hidden;
  165. text-overflow: ellipsis;
  166. white-space: nowrap;
  167. padding-left: calc(var(--outer-padding) + var(--inner-padding));
  168. position: relative;
  169. }
  170. .entry .style-name::before {
  171. content: "";
  172. position: absolute;
  173. top: 0;
  174. left: 0;
  175. right: 0;
  176. bottom: 0;
  177. background: linear-gradient(to right, hsla(180, 50%, 30%, 0.2), hsla(180, 20%, 10%, 0.05) 50%, transparent);
  178. pointer-events: none;
  179. opacity: 0;
  180. transition: opacity .1s;
  181. will-change: opacity;
  182. }
  183. .entry .style-name:hover::before {
  184. opacity: 1;
  185. }
  186. .entry.disabled .style-name,
  187. .entry.disabled .svg-icon {
  188. font-weight: normal;
  189. color: #888;
  190. fill: #aaa;
  191. }
  192. .entry.disabled:hover .svg-icon {
  193. fill: #666;
  194. }
  195. .entry.disabled:hover a:hover .svg-icon {
  196. fill: #000;
  197. }
  198. .entry .main-controls {
  199. height: 100%;
  200. display: inline-flex;
  201. flex-grow: 1;
  202. overflow: hidden;
  203. align-items: center;
  204. padding-right: 5px;
  205. }
  206. .entry:nth-child(even) {
  207. background-color: rgba(0, 0, 0, 0.05);
  208. }
  209. .entry:nth-child(-n+10):before,
  210. .entry:nth-child(11):before {
  211. counter-increment: style-number;
  212. content: counter(style-number);
  213. position: absolute;
  214. top: .9ex;
  215. right: 5px;
  216. color: #aaa;
  217. }
  218. .entry:nth-child(11):before {
  219. content: "0";
  220. }
  221. html[style*="border"] .entry:nth-child(-n+10):before,
  222. html[style*="border"] .entry:nth-child(11):before {
  223. /* the "show side borders" option adds 2px */
  224. right: 7px;
  225. }
  226. .entry .actions {
  227. margin-left: -1px;
  228. margin-right: -1px;
  229. }
  230. .entry .actions > * {
  231. height: 26px;
  232. width: var(--inner-padding);
  233. display: inline-flex;
  234. align-items: center;
  235. justify-content: center;
  236. }
  237. .entry .actions > .menu-button {
  238. width: 16px;
  239. }
  240. .entry .actions > a.configure {
  241. padding-right: 2px;
  242. }
  243. .entry .actions > a.configure[target="_blank"] {
  244. width: 20px;
  245. }
  246. .svg-icon.config {
  247. height: 16px;
  248. width: 16px;
  249. }
  250. a.configure[target="_blank"] .svg-icon.config {
  251. height: 20px;
  252. width: 20px;
  253. margin-top: 1px;
  254. }
  255. .not-applied .checker,
  256. .not-applied .style-name,
  257. .not-applied .actions > * {
  258. opacity: .2;
  259. transition: opacity .5s ease-in-out .25s, color .5s ease-in-out .25s;
  260. }
  261. .not-applied .style-name {
  262. opacity: .5;
  263. }
  264. .not-applied:hover .checker,
  265. .not-applied:hover .style-name,
  266. .not-applied:hover .actions > * {
  267. opacity: 1;
  268. }
  269. .not-applied:hover .style-name {
  270. color: darkred;
  271. }
  272. .frame-url::before {
  273. content: "iframe: ";
  274. color: lightslategray;
  275. }
  276. .frame .style-name {
  277. font-weight: normal;
  278. }
  279. /* entry menu */
  280. .entry .menu {
  281. display: none;
  282. position: fixed;
  283. top: 0;
  284. bottom: 0;
  285. left: 0;
  286. right: 0;
  287. align-items: center;
  288. justify-content: center;
  289. z-index: 2147483647;
  290. box-sizing: border-box;
  291. overflow: hidden;
  292. background-color: rgba(0, 0, 0, 0.4);
  293. outline: none;
  294. animation: lights-off .5s cubic-bezier(.03, .67, .08, .94);
  295. animation-fill-mode: both;
  296. }
  297. .menu-title,
  298. #confirm > div > b {
  299. padding-bottom: .5em;
  300. white-space: nowrap;
  301. overflow: hidden;
  302. text-overflow: ellipsis;
  303. }
  304. #confirm button[data-cmd="ok"]:not([data-focused-via-click]):focus {
  305. box-shadow: 0 0 0 1px red; /* Using box-shadow instead of the ugly outline in new Chrome */
  306. }
  307. .menu-items-wrapper {
  308. width: 80%;
  309. max-height: 80%;
  310. min-height: 6em;
  311. padding: 1em;
  312. display: flex;
  313. position: relative;
  314. flex-direction: column;
  315. background-color: #fff;
  316. border: solid 2px rgba(0, 0, 0, 0.5);
  317. }
  318. .menu-buttons-wrapper {
  319. display: flex;
  320. align-items: center;
  321. justify-content: center;
  322. padding: 1em 0 0;
  323. }
  324. .menu-buttons-wrapper button {
  325. margin: 0 .25em;
  326. }
  327. .menu-item {
  328. display: flex;
  329. border: none;
  330. align-items: center;
  331. padding: 3px 0;
  332. background: none;
  333. text-decoration: none;
  334. flex: none;
  335. }
  336. .entry .menu-item > span {
  337. margin: 1px 0 -1px;
  338. }
  339. .entry .menu-item:hover,
  340. .entry .menu-item:active {
  341. background-color: rgba(0, 0, 0, 0.1);
  342. transition: background-color .25s;
  343. }
  344. .entry .menu-icon {
  345. width: 26px;
  346. flex-shrink: 0;
  347. }
  348. .entry .menu-icon > * {
  349. display: block;
  350. margin: 0 auto;
  351. }
  352. .entry .menu-item.disabled {
  353. opacity: 0.5;
  354. background-color: transparent;
  355. cursor: help;
  356. }
  357. /* checkbox */
  358. .checkbox-container {
  359. position: relative;
  360. display: inline-block;
  361. width: 12px;
  362. height: 12px;
  363. }
  364. .regexp-problem-indicator {
  365. background-color: #d00;
  366. width: 14px;
  367. height: 14px;
  368. line-height: 15px;
  369. border-radius: 8px;
  370. margin-right: 6px;
  371. margin-left: 6px;
  372. text-align: center;
  373. color: white;
  374. font-weight: bold;
  375. box-sizing: border-box;
  376. cursor: pointer;
  377. font-size: 90%;
  378. display: none;
  379. }
  380. .regexp-partial .regexp-problem-indicator {
  381. display: block;
  382. }
  383. .regexp-partial .actions,
  384. .regexp-invalid .actions {
  385. order: 2;
  386. }
  387. #regexp-explanation {
  388. position: fixed;
  389. background-color: white;
  390. top: 50%;
  391. transform: translateY(-50%);
  392. left: 0;
  393. right: 0;
  394. padding: .5rem;
  395. font-size: 90%;
  396. border-top: 2px solid black;
  397. border-bottom: 2px solid black;
  398. box-shadow: 0 0 100px black;
  399. display: flex;
  400. flex-direction: column;
  401. z-index: 999999;
  402. }
  403. #regexp-explanation > div {
  404. display: none;
  405. list-style-type: none;
  406. padding: 0;
  407. margin: 0;
  408. }
  409. .regexp-partial #regexp-partial,
  410. .regexp-invalid #regexp-invalid {
  411. display: block;
  412. }
  413. #regexp-explanation > div:not(:last-child) {
  414. margin-bottom: .5rem;
  415. }
  416. .svg-icon {
  417. pointer-events: none;
  418. width: 14px;
  419. height: 16px;
  420. }
  421. a:hover .svg-icon {
  422. fill: #000;
  423. }
  424. body > .actions {
  425. margin-top: 0.5em;
  426. /* raise the actions above the hotkey-info */
  427. position: relative;
  428. z-index: 4;
  429. }
  430. .actions > div:not(:last-child):not(#disable-all-wrapper),
  431. .actions > .main-controls > div:not(:last-child) {
  432. margin-bottom: 0.75em;
  433. }
  434. .actions input,
  435. .actions label {
  436. vertical-align: middle;
  437. }
  438. body.blocked #installed > :not(.frame),
  439. body.blocked .actions > .main-controls {
  440. display: none;
  441. }
  442. /* Never shown, but can be enabled with a style */
  443. .entry .actions > .enable,
  444. .entry .actions > .disable {
  445. display: none;
  446. }
  447. /* 'New style' links */
  448. #write-style {
  449. display: flex;
  450. flex-direction: row;
  451. flex-wrap: wrap;
  452. }
  453. #write-style-for {
  454. margin-right: .6ex
  455. }
  456. .write-style-link {
  457. margin-left: .6ex
  458. }
  459. .write-style-link::before {
  460. content: "\00ad"; /* "soft" hyphen */
  461. }
  462. .about-blank > .breadcrumbs {
  463. pointer-events: none;
  464. }
  465. .about-blank > .breadcrumbs a {
  466. text-decoration: none;
  467. }
  468. .match {
  469. overflow-wrap: break-word;
  470. display: block;
  471. flex-grow: 9;
  472. }
  473. .match[data-frame-id="0"] {
  474. min-width: 200px;
  475. }
  476. .match[data-frame-id="0"] > .match {
  477. margin-top: .25em;
  478. }
  479. .match:not([data-frame-id="0"]) a {
  480. text-decoration: none; /* not underlining iframe links until hovered to reduce visual noise */
  481. }
  482. .match .match {
  483. margin-left: .5rem;
  484. }
  485. .match .match::before {
  486. content: "";
  487. width: .25rem;
  488. height: .25rem;
  489. margin-left: -.5rem;
  490. display: block;
  491. position: absolute;
  492. border-width: 1px;
  493. border-style: none none solid solid;
  494. }
  495. .dupe > .breadcrumbs {
  496. opacity: .5;
  497. }
  498. .dupe:not([data-children]) {
  499. display: none;
  500. }
  501. #write-for-frames {
  502. position: absolute;
  503. width: 5px;
  504. height: 5px;
  505. margin-left: -12px;
  506. margin-top: 4px;
  507. --dash: transparent 2px, currentColor 2px, currentColor 3px, transparent 3px;
  508. background: linear-gradient(var(--dash)), linear-gradient(90deg, var(--dash));
  509. }
  510. #write-for-frames.expanded {
  511. background: linear-gradient(var(--dash));
  512. }
  513. #write-for-frames::after {
  514. position: absolute;
  515. margin: -2px;
  516. border: 1px solid currentColor;
  517. content: "";
  518. top: 0;
  519. left: 0;
  520. right: 0;
  521. bottom: 0;
  522. }
  523. #write-for-frames:not(.expanded) ~ .match:not([data-frame-id="0"]),
  524. #write-for-frames:not(.expanded) ~ .match .match {
  525. display: none;
  526. }
  527. /* "breadcrumbs" 'new style' links */
  528. .breadcrumbs > .write-style-link {
  529. margin-left: 0
  530. }
  531. .breadcrumbs:hover a {
  532. color: #bbb;
  533. text-decoration: none
  534. }
  535. /* "dot" after each subdomain name */
  536. .breadcrumbs > .write-style-link[subdomain]::after {
  537. content: "."
  538. }
  539. /* no "dot" after top-level domain */
  540. .breadcrumbs > .write-style-link:nth-last-child(2)::after {
  541. content: none
  542. }
  543. /* "forward slash" before path ("this URL") */
  544. .breadcrumbs > .write-style-link:last-child::before {
  545. content: "\200b/"
  546. }
  547. .breadcrumbs > .write-style-link:last-child:first-child::before,
  548. .breadcrumbs > .write-style-link[subdomain=""] + .write-style-link::before {
  549. content: none
  550. }
  551. /* suppress TLD-only link */
  552. .breadcrumbs > .write-style-link[subdomain=""] {
  553. display: none
  554. }
  555. /* :hover style */
  556. .breadcrumbs.url\(\) > .write-style-link,
  557. /* :hover or :focus on "this URL" sets class="url()" */
  558. .breadcrumbs > .write-style-link:hover,
  559. .breadcrumbs > .write-style-link:focus,
  560. .breadcrumbs > .write-style-link:hover ~ .write-style-link[subdomain],
  561. .breadcrumbs > .write-style-link:focus ~ .write-style-link[subdomain] {
  562. color: inherit;
  563. text-decoration: underline;
  564. }
  565. /* action buttons */
  566. #popup-options {
  567. display: flex;
  568. flex-direction: row;
  569. padding: var(--outer-padding) 1px;
  570. }
  571. #popup-options button {
  572. white-space: nowrap;
  573. overflow: hidden;
  574. text-overflow: ellipsis;
  575. padding: 2px 4px;
  576. margin-right: 4px;
  577. /* several languages have labels of wildly different lengths so we try to maintain the proportion */
  578. flex: 1 1 auto;
  579. min-width: 2em;
  580. }
  581. #popup-options button:last-child {
  582. margin-right: 0;
  583. }
  584. /* confirm */
  585. #confirm {
  586. align-items: center;
  587. justify-content: center;
  588. z-index: 2147483647;
  589. display: none;
  590. position: absolute;
  591. left: 0;
  592. top: 0;
  593. width: 100%;
  594. height: 100%;
  595. margin: 0 !important;
  596. box-sizing: border-box;
  597. background-color: rgba(0, 0, 0, 0.4);
  598. }
  599. #confirm.lights-on,
  600. .menu.lights-on {
  601. animation: lights-on .25s ease-in-out;
  602. animation-fill-mode: both;
  603. }
  604. #confirm.lights-on,
  605. #confirm.lights-on > div,
  606. .menu.lights-on > div {
  607. display: none;
  608. }
  609. #confirm[data-display=true],
  610. .menu[data-display=true] {
  611. display: flex;
  612. }
  613. #confirm > div {
  614. width: 80%;
  615. max-height: 80%;
  616. min-height: 6em;
  617. padding: 1em;
  618. background-color: #fff;
  619. display: flex;
  620. flex-direction: column;
  621. border: solid 2px rgba(0, 0, 0, 0.5);
  622. }
  623. #confirm > div > *:not(:last-child) {
  624. padding-bottom: .5em;
  625. }
  626. #confirm > div > div {
  627. text-align: center;
  628. }
  629. .non-windows #confirm > div > div {
  630. direction: rtl;
  631. text-align: right;
  632. }
  633. #confirm > div {
  634. width: 80%;
  635. max-height: 80%;
  636. min-height: 6em;
  637. padding: 1em;
  638. background-color: #fff;
  639. display: flex;
  640. flex-direction: column;
  641. border: solid 2px rgba(0, 0, 0, 0.5);
  642. }
  643. #confirm > div > *:not(:last-child) {
  644. padding-bottom: .5em;
  645. }
  646. #confirm > div > div {
  647. text-align: center;
  648. }
  649. .non-windows #confirm > div > div {
  650. direction: rtl;
  651. text-align: right;
  652. }
  653. #confirm > button {
  654. /* add a gap between buttons both for horizontal
  655. or vertical (when the label is wide) layout */
  656. margin: 0 .25em .25em 0;
  657. }
  658. .unreachable .entry:not(.frame) {
  659. opacity: .25;
  660. }
  661. .unreachable .blocked-info {
  662. border-bottom: 1px solid black;
  663. }
  664. .blocked-info {
  665. hyphens: none;
  666. word-wrap: break-word;
  667. overflow-wrap: anywhere;
  668. line-height: 16px;
  669. position: relative;
  670. }
  671. .blocked-info label {
  672. padding: 5px 0;
  673. display: block;
  674. font-weight: bold;
  675. }
  676. .blocked-info p {
  677. padding: 1px 0 var(--outer-padding);
  678. display: block;
  679. font-size: 90%;
  680. margin: 0;
  681. }
  682. .blocked-info .copy {
  683. cursor: pointer;
  684. transition: all .1s;
  685. text-decoration: underline;
  686. text-decoration-style: dotted;
  687. font-weight: bold;
  688. }
  689. .blocked-info .copy:hover {
  690. color: #000;
  691. }
  692. .blocked-info .copy.copied {
  693. background: hsl(170, 40%, 80%);
  694. color: #000;
  695. }
  696. .copy-message {
  697. white-space: nowrap;
  698. position: absolute;
  699. display: none;
  700. top: 0;
  701. left: 0;
  702. right: 0;
  703. font-weight: bold;
  704. font-size: 13px;
  705. text-align: center;
  706. padding: 4px 0;
  707. background: hsl(170, 40%, 80%);
  708. color: #000;
  709. z-index: 10;
  710. }
  711. .copy-message.show-message {
  712. display: block;
  713. }
  714. .blocked-info .copy:after {
  715. content: '';
  716. background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAGUExURQAAAAAAAKVnuc8AAAABdFJOUwBA5thmAAAAIElEQVQI12NgYGCEAgYgkwEMGBFijEhixDMZkUSRLQAACpYALjrE2uIAAAAASUVORK5CYII=)center no-repeat;
  717. height: 10px;
  718. width: 10px;
  719. display: inline-flex;
  720. margin-left: 3px;
  721. }
  722. /******************************************/
  723. #hotkey-info {
  724. position: absolute;
  725. top: 0;
  726. right: 0;
  727. bottom: 0;
  728. width: var(--hotkey-margin);
  729. cursor: help;
  730. margin: 0;
  731. padding: 0;
  732. z-index: 1;
  733. hyphens: auto;
  734. }
  735. #hotkey-info:not([data-active]) > * {
  736. display: none;
  737. }
  738. #hotkey-info[data-active] {
  739. position: fixed;
  740. left: 6ex;
  741. bottom: unset;
  742. width: auto;
  743. cursor: auto;
  744. display: flex;
  745. flex-direction: column;
  746. border-left: 2px solid white;
  747. box-shadow: 0 0 90px rgba(0, 0, 0, .5);
  748. z-index: 5;
  749. }
  750. #hotkey-info div:first-child {
  751. flex-grow: 1;
  752. padding: 0 1em;
  753. font-size: 11px;
  754. overflow-y: auto;
  755. }
  756. #hotkey-info div {
  757. padding: 1em;
  758. border-top: 1px solid #ddd;
  759. background-color: white;
  760. }
  761. #hotkey-info div:last-child {
  762. box-shadow: 0 0 90px rgba(0, 0, 0, .25);
  763. position: relative;
  764. }
  765. #hotkey-info p {
  766. text-indent: -3px;
  767. }
  768. #hotkey-info p:last-child {
  769. margin-bottom: 0;
  770. }
  771. #hotkey-info mark {
  772. display: inline-block;
  773. background: linear-gradient(#ccc, #fff);
  774. padding: 1px 6px 0;
  775. margin: 2px;
  776. border: 1px solid white;
  777. border-radius: 4px;
  778. box-shadow: 1px 1px 4px rgba(0, 0, 0, .3);
  779. font-weight: bold;
  780. white-space: nowrap;
  781. }
  782. /******************************************/
  783. @keyframes lights-off {
  784. from {
  785. background-color: transparent;
  786. }
  787. to {
  788. background-color: rgba(0, 0, 0, 0.4);
  789. }
  790. }
  791. @keyframes lights-on {
  792. from {
  793. background-color: rgba(0, 0, 0, 0.4);
  794. }
  795. to {
  796. background-color: transparent;
  797. }
  798. }
  799. /* Popup adjustments for common zoom levels */
  800. @media (-webkit-min-device-pixel-ratio: 1.05) {
  801. #installed {
  802. max-height: 420px;
  803. }
  804. }
  805. @media (-webkit-min-device-pixel-ratio: 1.1) {
  806. #installed {
  807. max-height: 393px;
  808. }
  809. }
  810. @media (-webkit-min-device-pixel-ratio: 1.15) {
  811. #installed {
  812. max-height: 371px;
  813. }
  814. }
  815. @media (-webkit-min-device-pixel-ratio: 1.2) {
  816. #installed {
  817. max-height: 348px;
  818. }
  819. }
  820. @media (-webkit-min-device-pixel-ratio: 1.25) {
  821. #installed {
  822. max-height: 326px;
  823. }
  824. }
  825. @media (-webkit-min-device-pixel-ratio: 1.30) {
  826. #installed {
  827. max-height: 306px;
  828. }
  829. }
  830. @media (-webkit-min-device-pixel-ratio: 1.35) {
  831. #installed {
  832. max-height: 288px;
  833. }
  834. }
  835. @media (-webkit-min-device-pixel-ratio: 1.4) {
  836. #installed {
  837. max-height: 271px;
  838. }
  839. }
  840. @media (-webkit-min-device-pixel-ratio: 1.45) {
  841. #installed {
  842. max-height: 256px;
  843. }
  844. }
  845. @media (-webkit-min-device-pixel-ratio: 1.5) {
  846. #installed {
  847. max-height: 244px;
  848. }
  849. }
  850. @media (-webkit-min-device-pixel-ratio: 1.55) {
  851. #installed {
  852. max-height: 199px;
  853. }
  854. }
  855. @media (-webkit-min-device-pixel-ratio: 1.75) {
  856. #installed {
  857. max-height: 144px;
  858. }
  859. }