diff --git a/server/src/chrome-default.css b/server/src/chrome-default.css
index c13ba05..ddc24ae 100644
--- a/server/src/chrome-default.css
+++ b/server/src/chrome-default.css
@@ -1,3 +1,1454 @@
-
\ No newline at end of file
+/*
+ * The default style sheet used to render HTML.
+ *
+ * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+@namespace "http://www.w3.org/1999/xhtml";
+html {
+ display: block;
+}
+:root {
+ view-transition-name: root;
+}
+/* generic block-level elements */
+body {
+ display: block;
+ margin: 8px;
+}
+body:-webkit-full-page-media {
+ background-color: rgb(0, 0, 0)
+}
+p {
+ display: block;
+ margin-block-start: 1__qem;
+ margin-block-end: 1__qem;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+}
+div {
+ display: block
+}
+article, aside, footer, header, hgroup, main, nav, search, section {
+ display: block
+}
+marquee {
+ display: inline-block;
+ width: -webkit-fill-available;
+}
+address {
+ display: block
+}
+blockquote {
+ display: block;
+ margin-block-start: 1__qem;
+ margin-block-end: 1em;
+ margin-inline-start: 40px;
+ margin-inline-end: 40px;
+}
+figcaption {
+ display: block
+}
+figure {
+ display: block;
+ margin-block-start: 1em;
+ margin-block-end: 1em;
+ margin-inline-start: 40px;
+ margin-inline-end: 40px;
+}
+q {
+ display: inline
+}
+q:before {
+ content: open-quote;
+}
+q:after {
+ content: close-quote;
+}
+center {
+ display: block;
+ /* special centering to be able to emulate the html4/netscape behaviour */
+ text-align: -webkit-center
+}
+hr {
+ display: block;
+ overflow: hidden;
+ margin-block-start: 0.5em;
+ margin-block-end: 0.5em;
+ margin-inline-start: auto;
+ margin-inline-end: auto;
+ border-style: inset;
+ border-width: 1px
+}
+map {
+ display: inline
+}
+video {
+ object-fit: contain;
+}
+video:-webkit-full-page-media {
+ margin: auto;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ max-height: 100%;
+ max-width: 100%;
+}
+audio:not([controls]) {
+ display: none !important;
+}
+/** TODO(crbug.com/985623): Remove these hard-coded audio tag size.
+ * This fixed audio tag width/height leads to fail the wpt tests below.
+ * crbug.com/955170 external/wpt/css/css-contain/contain-size-replaced-003a.html
+ * crbug.com/955163 external/wpt/css/css-contain/contain-size-replaced-003b.html
+ * crbug.com/955163 external/wpt/css/css-contain/contain-size-replaced-003c.html
+ */
+audio {
+ width: 300px;
+ height: 54px;
+}
+video, canvas, img {
+ overflow: clip;
+ overflow-clip-margin: content-box;
+}
+iframe, embed, object, fencedframe {
+ overflow: clip !important;
+ overflow-clip-margin: content-box !important;
+}
+/* heading elements */
+h1 {
+ display: block;
+ font-size: 2em;
+ margin-block-start: 0.67__qem;
+ margin-block-end: 0.67em;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+ font-weight: bold
+}
+:-webkit-any(article,aside,nav,section) h1 {
+ font-size: 1.5em;
+ margin-block-start: 0.83__qem;
+ margin-block-end: 0.83em;
+}
+:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {
+ font-size: 1.17em;
+ margin-block-start: 1__qem;
+ margin-block-end: 1em;
+}
+:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {
+ font-size: 1.00em;
+ margin-block-start: 1.33__qem;
+ margin-block-end: 1.33em;
+}
+:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {
+ font-size: .83em;
+ margin-block-start: 1.67__qem;
+ margin-block-end: 1.67em;
+}
+:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 {
+ font-size: .67em;
+ margin-block-start: 2.33__qem;
+ margin-block-end: 2.33em;
+}
+h2 {
+ display: block;
+ font-size: 1.5em;
+ margin-block-start: 0.83__qem;
+ margin-block-end: 0.83em;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+ font-weight: bold
+}
+h3 {
+ display: block;
+ font-size: 1.17em;
+ margin-block-start: 1__qem;
+ margin-block-end: 1em;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+ font-weight: bold
+}
+h4 {
+ display: block;
+ margin-block-start: 1.33__qem;
+ margin-block-end: 1.33em;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+ font-weight: bold
+}
+h5 {
+ display: block;
+ font-size: .83em;
+ margin-block-start: 1.67__qem;
+ margin-block-end: 1.67em;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+ font-weight: bold
+}
+h6 {
+ display: block;
+ font-size: .67em;
+ margin-block-start: 2.33__qem;
+ margin-block-end: 2.33em;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+ font-weight: bold
+}
+/* tables */
+table {
+ display: table;
+ border-collapse: separate;
+ border-spacing: 2px;
+ border-color: gray;
+ box-sizing: border-box;
+ text-indent: initial
+}
+thead {
+ display: table-header-group;
+ vertical-align: middle;
+ border-color: inherit
+}
+tbody {
+ display: table-row-group;
+ vertical-align: middle;
+ border-color: inherit
+}
+tfoot {
+ display: table-footer-group;
+ vertical-align: middle;
+ border-color: inherit
+}
+/* for tables without table section elements (can happen with XHTML or dynamically created tables) */
+table > tr {
+ vertical-align: middle;
+}
+col {
+ display: table-column
+}
+colgroup {
+ display: table-column-group
+}
+tr {
+ display: table-row;
+ vertical-align: inherit;
+ border-color: inherit
+}
+td, th {
+ display: table-cell;
+ vertical-align: inherit;
+}
+/* When the td/th are inside a table (the normal case), the padding is taken
+ care of by HTMLTableCellElement::AdditionalPresentationAttributeStyle(). */
+td:not(table td),
+th:not(table th) {
+ padding: 1px;
+}
+th {
+ font-weight: bold;
+ text-align: -internal-center
+}
+caption {
+ display: table-caption;
+ text-align: -webkit-center
+}
+/* lists */
+ul, menu, dir {
+ display: block;
+ list-style-type: disc;
+ margin-block-start: 1__qem;
+ margin-block-end: 1em;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+ padding-inline-start: 40px
+}
+ol {
+ display: block;
+ list-style-type: decimal;
+ margin-block-start: 1__qem;
+ margin-block-end: 1em;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+ padding-inline-start: 40px
+}
+li {
+ display: list-item;
+ text-align: -webkit-match-parent;
+}
+ul ul, ol ul {
+ list-style-type: circle
+}
+ol ol ul, ol ul ul, ul ol ul, ul ul ul {
+ list-style-type: square
+}
+dd {
+ display: block;
+ margin-inline-start: 40px
+}
+dl {
+ display: block;
+ margin-block-start: 1__qem;
+ margin-block-end: 1em;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+}
+dt {
+ display: block
+}
+ol ul, ul ol, ul ul, ol ol {
+ margin-block-start: 0;
+ margin-block-end: 0
+}
+/* form elements */
+form {
+ display: block;
+ margin-top: 0__qem;
+}
+:-webkit-any(table, thead, tbody, tfoot, tr) > form:-internal-is-html {
+ display: none !important;
+}
+label {
+ cursor: default;
+}
+legend {
+ display: block;
+ padding-inline-start: 2px;
+ padding-inline-end: 2px;
+ border: none
+}
+fieldset {
+ display: block;
+ margin-inline-start: 2px;
+ margin-inline-end: 2px;
+ padding-block-start: 0.35em;
+ padding-inline-start: 0.75em;
+ padding-inline-end: 0.75em;
+ padding-block-end: 0.625em;
+ border: 2px groove #C0C0C0;
+ min-inline-size: min-content;
+}
+button {
+ appearance: auto;
+ -internal-align-content-block: center;
+}
+input, textarea, select, button {
+ margin: 0__qem;
+ font: -webkit-small-control;
+ text-rendering: auto; /* FIXME: Remove when tabs work with optimizeLegibility. */
+ color: FieldText;
+ letter-spacing: normal;
+ word-spacing: normal;
+ line-height: normal;
+ text-transform: none;
+ text-indent: 0;
+ text-shadow: none;
+ display: inline-block;
+ text-align: start;
+}
+textarea {
+ appearance: auto;
+ border: 1px solid light-dark(#767676, #858585);
+ column-count: initial !important;
+ -webkit-rtl-ordering: logical;
+ resize: -internal-textarea-auto;
+ cursor: text;
+ padding: 2px;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ background-color: Field;
+ font-family: monospace;
+}
+input {
+ appearance: auto;
+ padding:1px 0;
+ border: 2px inset light-dark(#767676, #858585);
+ -webkit-rtl-ordering: logical;
+ cursor: text;
+ background-color: Field;
+}
+input:not([type="file" i], [type="image" i], [type="checkbox" i], [type="radio" i]) {
+ -internal-align-content-block: center;
+}
+input[type="search" i] {
+ appearance: auto;
+ box-sizing: border-box;
+}
+input::-webkit-textfield-decoration-container {
+ display: flex !important;
+ align-items: center;
+ -webkit-user-modify: read-only !important;
+ content: none !important;
+ writing-mode: inherit !important;
+}
+input::-webkit-clear-button {
+ appearance: auto;
+ display: inline-block;
+ cursor: default;
+ flex: none;
+ -webkit-user-modify: read-only !important;
+ margin-inline-start: 2px;
+ opacity: 0;
+ pointer-events: none;
+}
+input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-clear-button {
+ opacity: 1;
+ pointer-events: auto;
+}
+input[type="search" i]::-webkit-search-cancel-button {
+ appearance: auto;
+ display: block;
+ cursor: default;
+ flex: none;
+ -webkit-user-modify: read-only !important;
+ margin-inline-start: 1px;
+ margin-right: 3px;
+ opacity: 0;
+ pointer-events: none;
+ user-select: none !important;
+}
+input[type="search" i]:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-search-cancel-button {
+ opacity: 1;
+ pointer-events: auto;
+}
+input[type="search" i]::-webkit-search-results-decoration {
+ margin: auto 3px auto 2px;
+}
+input,
+input[type="email" i],
+input[type="number" i],
+input[type="password" i],
+input[type="search" i],
+input[type="tel" i],
+input[type="text" i],
+input[type="url" i] {
+ padding-block: 1px;
+ padding-inline: 2px;
+}
+input[type="tel" i] {
+ direction: ltr;
+}
+input::-webkit-inner-spin-button {
+ appearance: auto;
+ display: inline-block;
+ cursor: default;
+ flex: none;
+ align-self: stretch;
+ -webkit-user-modify: read-only !important;
+ opacity: 0;
+ pointer-events: none;
+}
+input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-inner-spin-button {
+ opacity: 1;
+ pointer-events: auto;
+}
+::-webkit-input-placeholder {
+ -webkit-text-security: none;
+ color: #757575;
+ direction: inherit !important;
+ pointer-events: none !important;
+ text-orientation: inherit !important;
+ writing-mode: inherit !important;
+}
+input::-webkit-input-placeholder {
+ text-overflow: inherit;
+ line-height: initial !important;
+ white-space: pre;
+ word-wrap: normal;
+ overflow: hidden;
+ -webkit-user-modify: read-only !important;
+}
+input::-internal-input-suggested {
+ text-overflow: inherit;
+ white-space: nowrap;
+ overflow: hidden;
+}
+input::-internal-input-suggested,
+textarea::-internal-input-suggested {
+ font: -webkit-small-control !important;
+ /* -webkit-small-control does not pin the font-feature-settings and we want
+ previews to look consistent. */
+ font-feature-settings: normal !important;
+ /* Prevent that overflow affects the scrollable area. Without this,
+ LayoutBox::*Scroll{Height,Width}() may determine the scroll width/height
+ from the scrollable area instead of from the overrides in
+ LayoutTextControl{Single,Multi}Line::Scroll{Height,Width}(). */
+ overflow: hidden !important;
+ overflow-anchor: none;
+}
+textarea::-internal-input-suggested {
+ font-family: monospace !important;
+}
+input[type="password" i] {
+ -webkit-text-security: disc !important;
+}
+input[type="password" i]::-internal-input-suggested:not(.reveal-password) {
+ -webkit-text-security: disc !important;
+}
+input[type="password" i]::-internal-input-suggested.reveal-password {
+ -webkit-text-security: none;
+}
+input[type="password" i]::-internal-input-suggested.fade-out-password {
+ width: fit-content;
+ -webkit-mask: linear-gradient(to right, #000 50%, #0000);
+ mask: linear-gradient(to right, #000 50%, #0000);
+}
+input[type="password" i]::-internal-reveal {
+ width: 1.3em;
+ height: 1.3em;
+ cursor: default;
+ flex: none;
+ background-image: url(images/password_reveal_on.svg);
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ margin-left: 3px;
+ margin-right: 3px;
+}
+input[type="password" i]::-internal-reveal.reveal {
+ background-image: url(images/password_reveal_off.svg);
+}
+input[type="password" i]::-internal-reveal:hover,
+input[type="password" i]::-internal-reveal:focus {
+ border-radius: 1px;
+ cursor: pointer;
+}
+input[type="password" i]::-internal-strong {
+ color: light-dark(#0B57D0, #A8C7FA);
+ font-family: roboto;
+ -webkit-text-security: none;
+}
+input[type="hidden" i], input[type="image" i], input[type="file" i] {
+ appearance: none;
+ padding: initial;
+ background-color: initial;
+ border: initial;
+ cursor: default;
+}
+input[type="file" i] {
+ align-items: baseline;
+ color: inherit;
+ text-align: start !important;
+ text-overflow: ellipsis;
+ white-space: pre;
+}
+input[type="image" i] {
+ cursor: pointer;
+}
+input[type="radio" i],
+input[type="checkbox" i] {
+ margin:3px 3px 3px 4px;
+ padding: initial;
+ background-color: initial;
+ border: initial;
+ cursor: default;
+}
+input[type="radio" i] {
+ margin:3px 3px 0 5px;
+}
+input[type="button" i], input[type="submit" i], input[type="reset" i] {
+ -internal-empty-line-height: fabricated;
+ appearance: auto;
+ user-select: none;
+ white-space: pre
+}
+input[type="file" i]::-webkit-file-upload-button {
+ appearance: auto;
+ -webkit-user-modify: read-only !important;
+ white-space: nowrap;
+ margin: 0;
+ margin-inline-end: 4px; /* See FileUploadControlIntrinsicInlineSize() */
+ font-size: inherit;
+}
+input[type="button" i],
+input[type="submit" i],
+input[type="reset" i],
+input[type="file" i]::-webkit-file-upload-button,
+button {
+ align-items: flex-start;
+ text-align: center;
+ cursor: default;
+ padding-block: 1px;
+ padding-inline: 6px;
+ border: 2px outset ButtonBorder;
+ box-sizing: border-box;
+ background-color: ButtonFace;
+ color: ButtonText;
+}
+input[type="checkbox" i]:disabled,
+input[type="file" i]:disabled,
+input[type="hidden" i]:disabled,
+input[type="image" i]:disabled,
+input[type="radio" i]:disabled,
+input[type="range" i]:disabled {
+ background-color: initial;
+}
+input[type="range" i] {
+ appearance: auto;
+ padding: initial;
+ border: initial;
+ margin: 2px;
+ cursor: default;
+ color: light-dark(#101010, #ffffff);
+}
+input[type="range" i]::-webkit-slider-container,
+input[type="range" i]::-webkit-media-slider-container {
+ appearance: inherit;
+ flex: 1;
+ min-inline-size: 0;
+ box-sizing: border-box;
+ -webkit-user-modify: read-only !important;
+ display: flex;
+}
+input[type="range" i]:-internal-has-datalist::-webkit-slider-container {
+ /*
+ * See LayoutThemeDefault. "22px" is
+ * 2 * (SliderTickOffsetFromTrackCenter() + SliderTickSize().Height()).
+ */
+ min-block-size: 22px;
+}
+input[type="range" i]::-webkit-slider-runnable-track {
+ flex: 1;
+ min-inline-size: 0;
+ align-self: center;
+ box-sizing: border-box;
+ -webkit-user-modify: read-only !important;
+ display: block;
+}
+input[type="range" i]::-webkit-slider-thumb,
+input[type="range" i]::-webkit-media-slider-thumb {
+ appearance: auto;
+ box-sizing: border-box;
+ -webkit-user-modify: read-only !important;
+ display: block;
+}
+input[type="range" i]:disabled {
+ color: #c5c5c5;
+}
+input[type="button" i]:disabled,
+input[type="submit" i]:disabled,
+input[type="reset" i]:disabled,
+input[type="color" i]:disabled,
+input[type="file" i]:disabled::-webkit-file-upload-button,
+button:disabled {
+ background-color: light-dark(rgba(239, 239, 239, 0.3), rgba(19, 1, 1, 0.3));
+ border-color: light-dark(rgba(118, 118, 118, 0.3), rgba(195, 195, 195, 0.3));
+ color: light-dark(rgba(16, 16, 16, 0.3), rgba(255, 255, 255, 0.3));
+}
+input[type="button" i]:active, input[type="submit" i]:active, input[type="reset" i]:active, input[type="file" i]:active::-webkit-file-upload-button, button:active {
+ border-style: inset
+}
+input[type="button" i]:active:disabled, input[type="submit" i]:active:disabled, input[type="reset" i]:active:disabled, input[type="file" i]:active:disabled::-webkit-file-upload-button, button:active:disabled {
+ border-style: outset
+}
+input:disabled, textarea:disabled {
+ cursor: default;
+ background-color: light-dark(rgba(239, 239, 239, 0.3), rgba(59, 59, 59, 0.3));
+ color: light-dark(#545454, #aaaaaa);
+}
+option:-internal-spatial-navigation-focus {
+ outline: light-dark(black, white) dashed 1px;
+ outline-offset: -1px;
+}
+input:not([type="image" i], [type="range" i], [type="checkbox" i], [type="radio" i]) {
+ overflow: clip !important;
+ overflow-clip-margin: 0px !important;
+}
+/* https://html.spec.whatwg.org/multipage/rendering.html#hidden-elements */
+/* TODO(crbug.com/1231263): should be display:none. */
+area {
+ display: inline;
+}
+base, basefont, datalist, head, link, meta, noembed,
+noframes, param, rp, script, style, template, title {
+ display: none;
+}
+input[type="hidden" i] {
+ display: none !important;
+}
+area:-webkit-any-link {
+ cursor: pointer;
+}
+input[type="checkbox" i] {
+ appearance: auto;
+ box-sizing: border-box;
+}
+input[type="radio" i] {
+ appearance: auto;
+ box-sizing: border-box;
+}
+input[type="color" i] {
+ appearance: auto;
+ inline-size: 50px;
+ block-size: 27px;
+ /* Same as native_theme_base. */
+ border: 1px solid ButtonBorder;
+ padding: 1px 2px;
+ cursor: default;
+ box-sizing: border-box;
+ background-color: ButtonFace;
+ color: ButtonText;
+}
+input[type="color" i]::-webkit-color-swatch-wrapper {
+ display: flex;
+ padding: 4px 2px;
+ box-sizing: border-box;
+ -webkit-user-modify: read-only !important;
+ width: 100%;
+ height: 100%
+}
+input[type="color" i]::-webkit-color-swatch {
+ /* The swatch should not be affected by color scheme. */
+ color-scheme: only light;
+ background-color: #000000;
+ border: 1px solid #777777;
+ flex: 1;
+ min-width: 0;
+ -webkit-user-modify: read-only !important;
+}
+input[type="color" i][list] {
+ appearance: auto;
+ inline-size: 94px;
+ block-size: 27px
+}
+input[type="color" i][list]::-webkit-color-swatch-wrapper {
+ padding-inline-start: 8px;
+ padding-inline-end: 24px;
+}
+input[type="color" i][list]::-webkit-color-swatch {
+ border-color: #000000;
+}
+input::-webkit-calendar-picker-indicator {
+ display: inline-block;
+ inline-size: 0.66em;
+ block-size: 0.66em;
+ padding-block: 0.17em;
+ padding-inline: 0.34em;
+ -webkit-user-modify: read-only !important;
+ opacity: 0;
+ cursor: default;
+ pointer-events: none;
+}
+input::-webkit-calendar-picker-indicator:hover {
+ background-color: #eee;
+}
+input:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-calendar-picker-indicator,
+input::-webkit-calendar-picker-indicator:focus {
+ opacity: 1;
+ pointer-events: auto;
+}
+input[type="date" i]:disabled::-webkit-clear-button,
+input[type="date" i]:disabled::-webkit-inner-spin-button,
+input[type="datetime-local" i]:disabled::-webkit-clear-button,
+input[type="datetime-local" i]:disabled::-webkit-inner-spin-button,
+input[type="month" i]:disabled::-webkit-clear-button,
+input[type="month" i]:disabled::-webkit-inner-spin-button,
+input[type="week" i]:disabled::-webkit-clear-button,
+input[type="week" i]:disabled::-webkit-inner-spin-button,
+input:disabled::-webkit-calendar-picker-indicator,
+input[type="date" i][readonly]::-webkit-clear-button,
+input[type="date" i][readonly]::-webkit-inner-spin-button,
+input[type="datetime-local" i][readonly]::-webkit-clear-button,
+input[type="datetime-local" i][readonly]::-webkit-inner-spin-button,
+input[type="month" i][readonly]::-webkit-clear-button,
+input[type="month" i][readonly]::-webkit-inner-spin-button,
+input[type="week" i][readonly]::-webkit-clear-button,
+input[type="week" i][readonly]::-webkit-inner-spin-button,
+input[readonly]::-webkit-calendar-picker-indicator {
+ visibility: hidden;
+}
+/* Form controls that measure the inline size without doing actual layout
+ need to disable `text-autospace`, if their content can be affected by
+ the property. crbug.com/1484863 */
+input[type="date" i], input[type="datetime-local" i], input[type="month" i],
+input[type="week" i], select {
+ text-autospace: no-autospace !important;
+}
+select {
+ appearance: auto;
+ box-sizing: border-box;
+ align-items: center;
+ white-space: pre;
+ -webkit-rtl-ordering: logical;
+ color: FieldText;
+ background-color: Field;
+ border: 1px solid light-dark(#767676, #858585);
+ cursor: default;
+ border-radius: 0;
+}
+select:disabled {
+ opacity: 0.7;
+}
+/* -internal-list-box is how we specify select[multiple] */
+/* select[multiple] is an exception to the prohibition on sizes here
+ because it is one of the few controls with borders that grow on zoom
+ (to solve a nasty scrollbar location problem) */
+select:-internal-list-box {
+ appearance: auto;
+ align-items: flex-start;
+ -internal-overflow-inline: hidden;
+ -internal-overflow-block: scroll;
+ vertical-align: text-bottom;
+ white-space: nowrap;
+ border-radius: 2px;
+}
+select:not(:-internal-list-box) {
+ overflow: visible !important;
+}
+/* The padding here should match the value of
+ |extraPaddingForOptionInsideOptgroup| in list_picker.js, which is the
+ padding for select optgroup option. */
+select:-internal-list-box optgroup option {
+ padding-inline-start: 20px;
+}
+select:-internal-list-box option,
+select:-internal-list-box optgroup {
+ line-height: initial !important;
+}
+/* option selected, list-box focused */
+/* TODO(crbug.com/1244986): We should be able to remove !important here, but
+ it breaks some WebUI menus. */
+select:-internal-list-box:focus option:checked,
+select:-internal-list-box:focus option:checked:hover {
+ background-color: SelectedItem !important;
+ color: SelectedItemText !important;
+}
+/* TODO(crbug.com/1244986): We should be able to remove !important here, but
+ it breaks some WebUI menus. */
+select:-internal-list-box:focus option:checked:disabled {
+ background-color: -internal-inactive-list-box-selection !important;
+}
+/* option selected, list-box not focused */
+select:-internal-list-box option:checked,
+select:-internal-list-box option:checked:hover {
+ background-color: light-dark(#cecece, #545454);
+ color: light-dark(#101010, #FFFFFF);
+}
+select:-internal-list-box:disabled option:checked,
+select:-internal-list-box option:checked:disabled,
+select:-internal-list-box option:checked:disabled:hover {
+ color: light-dark(gray, #aaa);
+}
+select:-internal-list-box hr {
+ border-style: none;
+ margin-block-start: 0.5em;
+ margin-block-end: 0;
+}
+select:-internal-list-box:focus-visible option:-internal-multi-select-focus {
+ outline: auto 1px -webkit-focus-ring-color;
+ outline-offset: -1px;
+}
+select:-internal-list-box option:hover {
+ background-color: initial;
+}
+optgroup {
+ font-weight: bolder;
+ display: block;
+}
+option {
+ font-weight: normal;
+ display: block;
+ padding-inline: 2px;
+ padding-block-start: 0;
+ padding-block-end: 1px;
+ white-space: nowrap;
+ min-block-size: 1.2em;
+}
+/* The following select style rules have to go after the other
+ select styles in order to have higher precedence. */
+/* TODO(crbug.com/880258): Use different styles for
+ `-internal-autofill-previewed` and `-internal-autofill-selected`. */
+input:-internal-autofill-previewed,
+input:-internal-autofill-selected,
+textarea:-internal-autofill-previewed,
+textarea:-internal-autofill-selected,
+select:-internal-autofill-previewed,
+select:-internal-autofill-selected {
+ appearance: menulist-button;
+ background-image:none !important;
+ background-color: light-dark(#E8F0FE, rgba(70,90,126,0.4)) !important;
+ color: FieldText !important;
+}
+input:disabled,
+select:disabled,
+textarea:disabled {
+ border-color: rgba(118, 118, 118, 0.3);
+}
+select:disabled,
+optgroup:disabled,
+option:disabled,
+select[disabled]>option {
+ color: light-dark(GrayText, #aaa);
+}
+output {
+ display: inline;
+}
+/* meter */
+@supports not blink-feature(MeterAppearanceNoneFallbackStyle) {
+ meter {
+ appearance: auto;
+ box-sizing: border-box;
+ display: inline-block;
+ block-size: 1em;
+ inline-size: 5em;
+ vertical-align: -0.2em;
+ -webkit-user-modify: read-only !important;
+ }
+ meter::-webkit-meter-inner-element {
+ appearance: inherit;
+ box-sizing: inherit;
+ display: none;
+ -webkit-user-modify: read-only !important;
+ block-size: 100%;
+ inline-size: 100%;
+ }
+ meter::-webkit-meter-inner-element:-internal-shadow-host-has-non-auto-appearance {
+ display: grid;
+ grid-template-rows: 1fr [line1] 2fr [line2] 1fr;
+ position: relative;
+ }
+ meter::-internal-fallback:-internal-shadow-host-has-non-auto-appearance {
+ display: none;
+ }
+ meter::-webkit-meter-bar {
+ block-size: 100%;
+ inline-size: 100%;
+ -webkit-user-modify: read-only !important;
+ background: light-dark(#efefef, #3B3B3B);
+ border: thin solid light-dark(rgba(118, 118, 118, 0.3), #858585);
+ grid-row-start: line1;
+ grid-row-end: line2;
+ border-radius: 20px;
+ box-sizing: border-box;
+ align-self: unsafe center;
+ position: absolute;
+ overflow: hidden;
+ }
+ meter::-webkit-meter-optimum-value {
+ block-size: 100%;
+ -webkit-user-modify: read-only !important;
+ box-sizing: border-box;
+ background: light-dark(#107c10, #74b374);
+ }
+ meter::-webkit-meter-suboptimum-value {
+ block-size: 100%;
+ -webkit-user-modify: read-only !important;
+ box-sizing: border-box;
+ background: light-dark(#ffb900, #f2c812);
+ }
+ meter::-webkit-meter-even-less-good-value {
+ block-size: 100%;
+ -webkit-user-modify: read-only !important;
+ box-sizing: border-box;
+ background: light-dark(#d83b01, #e98f6d);
+ }
+}
+@supports blink-feature(MeterAppearanceNoneFallbackStyle) {
+ meter {
+ -webkit-user-modify: read-only !important;
+ appearance: auto;
+ block-size: 1em;
+ box-sizing: border-box;
+ display: inline-block;
+ inline-size: 5em;
+ vertical-align: -0.2em;
+ }
+ meter::-webkit-meter-inner-element {
+ -webkit-user-modify: read-only !important;
+ appearance: inherit;
+ block-size: 100%;
+ box-sizing: inherit;
+ display: grid;
+ grid-template-rows: 1fr [line1] 2fr [line2] 1fr;
+ inline-size: 100%;
+ position: relative;
+ }
+ meter::-webkit-meter-bar {
+ -webkit-user-modify: read-only !important;
+ align-self: unsafe center;
+ background: linear-gradient(to bottom, #ddd, #eee 20%, #ccc 45%, #ccc 55%, #ddd);
+ block-size: 100%;
+ box-sizing: border-box;
+ grid-row-end: line2;
+ grid-row-start: line1;
+ inline-size: 100%;
+ overflow: hidden;
+ position: absolute;
+ }
+ meter::-webkit-meter-bar:-internal-shadow-host-has-non-auto-appearance {
+ background: light-dark(#efefef, #3B3B3B);
+ border-radius: 20px;
+ border: thin solid light-dark(rgba(118, 118, 118, 0.3), #858585);
+ }
+ meter::-webkit-meter-optimum-value {
+ -webkit-user-modify: read-only !important;
+ background: linear-gradient(to bottom, #ad7, #cea 20%, #7a3 45%, #7a3 55%, #ad7);
+ block-size: 100%;
+ box-sizing: border-box;
+ }
+ meter::-webkit-meter-optimum-value:-internal-shadow-host-has-non-auto-appearance {
+ background: light-dark(#107c10, #74b374);
+ }
+ meter::-webkit-meter-suboptimum-value {
+ -webkit-user-modify: read-only !important;
+ background: linear-gradient(to bottom, #fe7, #ffc 20%, #db3 45%, #db3 55%, #fe7);
+ block-size: 100%;
+ box-sizing: border-box;
+ }
+ meter::-webkit-meter-suboptimum-value:-internal-shadow-host-has-non-auto-appearance {
+ background: light-dark(#ffb900, #f2c812);
+ }
+ meter::-webkit-meter-even-less-good-value {
+ -webkit-user-modify: read-only !important;
+ background: linear-gradient(to bottom, #f77, #fcc 20%, #d44 45%, #d44 55%, #f77);
+ block-size: 100%;
+ box-sizing: border-box;
+ }
+ meter::-webkit-meter-even-less-good-value:-internal-shadow-host-has-non-auto-appearance {
+ background: light-dark(#d83b01, #e98f6d);
+ }
+}
+/* progress */
+progress {
+ appearance: auto;
+ box-sizing: border-box;
+ display: inline-block;
+ block-size: 1em;
+ inline-size: 10em;
+ vertical-align: -0.2em;
+}
+progress::-webkit-progress-inner-element {
+ box-sizing: inherit;
+ -webkit-user-modify: read-only;
+ block-size: 100%;
+ inline-size: 100%;
+}
+progress::-webkit-progress-bar {
+ background-color: gray;
+ block-size: 100%;
+ inline-size: 100%;
+ -webkit-user-modify: read-only !important;
+ box-sizing: border-box;
+}
+progress::-webkit-progress-value {
+ background-color: green;
+ block-size: 100%;
+ inline-size: 50%; /* should be removed later */
+ -webkit-user-modify: read-only !important;
+ box-sizing: border-box;
+}
+/* inline elements */
+u, ins {
+ text-decoration: underline
+}
+abbr[title], acronym[title] {
+ text-decoration: dotted underline;
+}
+strong, b {
+ font-weight: bold
+}
+i, cite, em, var, address, dfn {
+ font-style: italic
+}
+tt, code, kbd, samp {
+ font-family: monospace
+}
+pre, xmp, plaintext, listing {
+ display: block;
+ font-family: monospace;
+ white-space: pre;
+ margin: 1__qem 0
+}
+mark {
+ background-color: Mark;
+ color: MarkText;
+}
+big {
+ font-size: larger
+}
+small {
+ font-size: smaller
+}
+s, strike, del {
+ text-decoration: line-through
+}
+sub {
+ vertical-align: sub;
+ font-size: smaller
+}
+sup {
+ vertical-align: super;
+ font-size: smaller
+}
+nobr {
+ white-space: nowrap
+}
+/* states */
+:-internal-selector-fragment-anchor {
+ outline: Highlight 3px solid;
+}
+:focus-visible {
+ outline: auto 1px -webkit-focus-ring-color
+}
+html:focus-visible, body:focus-visible {
+ outline: none
+}
+embed:focus-visible, iframe:focus-visible, object:focus-visible {
+ outline: none
+}
+input:focus-visible, textarea:focus-visible, select:focus-visible {
+ outline-offset: 0;
+}
+input[type="button" i]:focus-visible,
+input[type="file" i]:focus-visible,
+input[type="hidden" i]:focus-visible,
+input[type="image" i]:focus-visible,
+input[type="reset" i]:focus-visible,
+input[type="submit" i]:focus-visible,
+input[type="file" i]:focus-visible::-webkit-file-upload-button {
+ outline-offset: 0
+}
+input[type="checkbox" i]:focus-visible,
+input[type="radio" i]:focus-visible {
+ outline-offset: 2px;
+}
+input[type="date" i]::-webkit-calendar-picker-indicator,
+input[type="datetime-local" i]::-webkit-calendar-picker-indicator,
+input[type="month" i]::-webkit-calendar-picker-indicator,
+input[type="week" i]::-webkit-calendar-picker-indicator {
+ background-image: light-dark(url(images/calendar_icon.svg), url(images/calendar_icon_white.svg));
+ background-origin: content-box;
+ background-repeat: no-repeat;
+ background-size: contain;
+ block-size: 1.0em;
+ inline-size: 1.0em;
+ opacity: 1;
+ outline: none;
+ padding: 2px;
+}
+input[type="date" i]::-webkit-calendar-picker-indicator:focus-visible,
+input[type="datetime-local" i]::-webkit-calendar-picker-indicator:focus-visible,
+input[type="month" i]::-webkit-calendar-picker-indicator:focus-visible,
+input[type="week" i]::-webkit-calendar-picker-indicator:focus-visible {
+ outline: solid 2px -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+input[type="time" i]::-webkit-calendar-picker-indicator {
+ background-image: light-dark(url(images/time_icon.svg), url(images/time_icon_white.svg));
+ background-origin: content-box;
+ background-repeat: no-repeat;
+ background-size: contain;
+ opacity: 1;
+ outline: none;
+ margin-inline-start: 8px;
+ padding-inline-start: 3px;
+ padding-inline-end: 3px;
+ padding-block: 3px;
+ block-size: 1.05em;
+ inline-size: 1.05em;
+}
+input[type="time" i]::-webkit-calendar-picker-indicator:focus-visible {
+ outline: solid 2px -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+input::-webkit-calendar-picker-indicator:hover {
+ background-color: initial;
+}
+input::-webkit-datetime-edit-ampm-field:focus,
+input::-webkit-datetime-edit-day-field:focus,
+input::-webkit-datetime-edit-hour-field:focus,
+input::-webkit-datetime-edit-millisecond-field:focus,
+input::-webkit-datetime-edit-minute-field:focus,
+input::-webkit-datetime-edit-month-field:focus,
+input::-webkit-datetime-edit-second-field:focus,
+input::-webkit-datetime-edit-week-field:focus,
+input::-webkit-datetime-edit-year-field:focus {
+ background-color: light-dark(highlight, #99C8FF);
+ color: light-dark(highlighttext, #000000);
+ outline: none;
+}
+input::-webkit-datetime-edit-year-field[disabled],
+input::-webkit-datetime-edit-month-field[disabled],
+input::-webkit-datetime-edit-week-field[disabled],
+input::-webkit-datetime-edit-day-field[disabled],
+input::-webkit-datetime-edit-ampm-field[disabled],
+input::-webkit-datetime-edit-hour-field[disabled],
+input::-webkit-datetime-edit-millisecond-field[disabled],
+input::-webkit-datetime-edit-minute-field[disabled],
+input::-webkit-datetime-edit-second-field[disabled] {
+ color: light-dark(GrayText, rgb(165, 165, 165));
+}
+a:-webkit-any-link {
+ color: -webkit-link;
+ text-decoration: underline;
+ cursor: pointer;
+}
+a:-webkit-any-link:active {
+ color: -webkit-activelink
+}
+a:-webkit-any-link:read-write {
+ cursor: text;
+}
+a:-webkit-any-link:focus-visible {
+ outline-offset: 1px;
+}
+/* HTML5 ruby elements */
+ruby, rt {
+ text-indent: 0; /* blocks used for ruby rendering should not trigger this */
+}
+ruby {
+ display: ruby;
+}
+rt {
+ line-height: normal;
+ text-emphasis: none;
+}
+ruby > rt {
+ display: ruby-text;
+ font-size: 50%;
+ text-align: start;
+}
+/* other elements */
+frameset, frame {
+ display: block
+}
+frameset {
+ border-color: inherit
+}
+iframe {
+ border: 2px inset
+}
+fencedframe {
+ border: 2px inset;
+ object-fit: contain !important;
+ object-position: 50% 50% !important;
+}
+details {
+ display: block
+}
+summary {
+ display: block
+}
+/*
+ * https://html.spec.whatwg.org/C/#the-details-and-summary-elements
+ * The specification doesn't have |details >| and |:first-of-type|.
+ * We add them because:
+ * - We had provided |summary { display: block }| for a long time,
+ * there are sites using without details, and they
+ * expect that is not a list-item.
+ * - Firefox does so.
+ */
+details > summary:first-of-type {
+ display: list-item;
+ counter-increment: list-item 0;
+ list-style: disclosure-closed inside;
+}
+details[open] > summary:first-of-type {
+ list-style-type: disclosure-open;
+}
+/* https://html.spec.whatwg.org/multipage/rendering.html#bidi-rendering */
+/* This chunk of styles interacts with the `name == html_names::kDirAttr` case
+ in HTMLElement::CollectStyleForPresentationAttribute(). Make sure any changes
+ here are congruent with changes made there. */
+address, blockquote, center, div, figure, figcaption, footer, form, header, hr,
+legend, listing, main, p, plaintext, pre, summary, xmp, article, aside, h1, h2,
+h3, h4, h5, h6, hgroup, nav, section, search, table, caption, colgroup, col,
+thead, tbody, tfoot, tr, td, th, dir, dd, dl, dt, menu, ol, ul, li, bdi,
+output, [dir=ltr i], [dir=rtl i], [dir=auto i] {
+ unicode-bidi: isolate;
+}
+bdo, bdo[dir] {
+ unicode-bidi: isolate-override;
+}
+textarea[dir=auto i], pre[dir=auto i] {
+ unicode-bidi: plaintext;
+}
+dialog {
+ display: none;
+ /* https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3 */
+ position: absolute;
+ inset-inline-start: 0;
+ inset-inline-end: 0;
+ width: fit-content;
+ height: fit-content;
+ margin: auto;
+ border: solid;
+ padding: 1em;
+ background-color: Canvas;
+ color: CanvasText;
+}
+dialog[open] {
+ display: block;
+}
+dialog:-internal-dialog-in-top-layer {
+ /* https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3 */
+ position: fixed;
+ overflow: auto;
+ inset-block-start: 0;
+ inset-block-end: 0;
+ max-width: calc(100% - 6px - 2em);
+ max-height: calc(100% - 6px - 2em);
+ /* https://github.com/w3c/csswg-drafts/issues/6939#issuecomment-1016679588 */
+ user-select: text;
+ visibility: visible;
+}
+dialog:modal {
+ overlay: auto !important;
+}
+/* TODO(foolip): In the Fullscreen spec, there's a ::backdrop block with the
+ properties shared with :fullscreen::backdrop (see fullscreen.css). */
+dialog:-internal-dialog-in-top-layer::backdrop {
+ position: fixed;
+ inset: 0;
+ /* https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3 */
+ background: rgba(0,0,0,0.1);
+}
+slot {
+ display: contents;
+}
+[popover] {
+ position: fixed;
+ inset: 0;
+ width: fit-content;
+ height: fit-content;
+ margin: auto;
+ border: solid;
+ padding: 0.25em;
+ overflow: auto;
+ color: CanvasText;
+ background-color: Canvas;
+}
+/* This ensures that popovers get display:none when they are not open, and we
+ need to be careful not to affect `