/*! Variables */ :root { --grey-border: #d1d1d1; --grey-text: #7d7d7d; --white: #ffffff; --white-darker: #f9f9f9; --white-darkest: #f3f3f3; --black: #000000; --primary-outline: rgba(0, 123, 255, .35); --primary-faded: #5c95f4; --primary: #4285f4; --primary-darker: #3c78dc; --primary-darkest: #2766cf; --error: #f43022; --padding: 5px; --margin: 5px; --padding-lg: 10px; --margin-lg: 10px; } /*! CSS CLASSES */ /** Layout & Utility Helpers */ .container { width: 100%; margin: 0 auto; max-width: 768px; padding: 0 16px 16px } .container-fluid { width: 100%; margin: 0 auto; padding: 0 16px 16px } .fill-vertical-space { flex: 1 0 auto; } .active { background-color: var(--primary-darker); cursor: not-allowed; } .important { background-color: var(--primary-darker); } .outline-none { outline: 0; } /** Sizing */ .h-25 { height: 25%; } .h-50 { height: 50%; } .h-75 { height: 75%; } .h-100 { height: 100%; } .h-auto { height: auto; } .h-content { height: fit-content; } .w-25 { width: 25%; } .w-50 { width: 50%; } .w-75 { width: 75%; } .w-100 { width: 100%; } .w-auto { width: auto; } .w-content { width: fit-content; } /** Padding */ .p { padding: var(--padding); } .px { padding-left: var(--padding); padding-right: var(--padding); } .py { padding-top: var(--padding); padding-bottom: var(--padding); } .pl { padding-left: var(--padding); } .pr { padding-right: var(--padding); } .pt { padding-top: var(--padding); } .pb { padding-bottom: var(--padding); } .p-nav { padding: var(--padding) var(--padding) calc(var(--padding) - 5px) var(--padding); } .p-lg { padding: var(--padding-lg); } .px-lg { padding-left: var(--padding-lg); padding-right: var(--padding-lg); } .py-lg { padding-top: var(--padding-lg); padding-bottom: var(--padding-lg); } .pl-lg { padding-left: var(--padding-lg); } .pr-lg { padding-right: var(--padding-lg); } .pt-lg { padding-top: var(--padding-lg); } .pb-lg { padding-bottom: var(--padding-lg); } .p-nav-lg { padding: var(--padding-lg) var(--padding-lg) calc(var(--padding-lg) - 5px) var(--padding-lg); } .p-none { padding: 0; } /** Margin */ .m { margin: var(--margin); } .mx { margin-left: var(--margin); margin-right: var(--margin); } .my { margin-top: var(--margin); margin-bottom: var(--margin); } .ml { margin-left: var(--margin); } .mr { margin-right: var(--margin); } .mt { margin-top: var(--margin); } .mb { margin-bottom: var(--margin); } .m-lg { margin: var(--margin-lg); } .mx-lg { margin-left: var(--margin-lg); margin-right: var(--margin-lg); } .my-lg { margin-top: var(--margin-lg); margin-bottom: var(--margin-lg); } .ml-lg { margin-left: var(--margin-lg); } .mr-lg { margin-right: var(--margin-lg); } .mt-lg { margin-top: var(--margin-lg); } .mb-lg { margin-bottom: var(--margin-lg); } .m-none { margin: 0; } .m-auto { margin: auto; } /** Color */ .color-grey-border { color: var(--grey-border); } .color-grey-text { color: var(--grey-text); } .color-white { color: var(--white); } .color-white-darker { color: var(--white-darker); } .color-white-darkest { color: var(--white-darkest); } .color-black { color: var(--black); } .color-primary-outline { color: var(--primary-outline); } .color-primary-faded { color: var(--primary-faded); } .color-primary { color: var(--primary); } .color-primary-darker { color: var(--primary-darker); } .color-primary-darkest { color: var(--primary-darkest); } .color-error { color: var(--error); } /** Background Color */ .bg-grey-border { background-color: var(--grey-border); } .bg-grey-text { background-color: var(--grey-text); } .bg-white { background-color: var(--white); } .bg-white-darker { background-color: var(--white-darker); } .bg-white-darkest { background-color: var(--white-darkest); } .bg-black { background-color: var(--black); } .bg-primary-outline { background-color: var(--primary-outline); } .bg-primary-faded { background-color: var(--primary-faded); } .bg-primary { background-color: var(--primary); } .bg-primary-darker { background-color: var(--primary-darker); } .bg-primary-darkest { background-color: var(--primary-darkest); } .bg-error { background-color: var(--error); } /** Visibility */ .visible { visibility: visible; } .invisible { visibility: hidden; } /** Text Alignment */ .text-center { text-align: center; } .text-left { text-align: left; } .text-right { text-align: right; } /** Vertical Alignment */ .align-baseline { vertical-align: baseline; } .align-top { vertical-align: top; } .align-middle {vertical-align: middle; } .align-bottom { vertical-align: bottom; } .align-text-bottom { vertical-align: text-bottom; } .align-text-top { vertical-align: text-top; } /** Shadow */ .shadow-sm { box-shadow: 0 1px 2px 0 rgba(0,0,0,0.05); } .shadow { box-shadow: 0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06); } .shadow-md { box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06); } .shadow-lg { box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05); } .shadow-xl { box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04); } .shadow-2xl { box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25); } .shadow-inner { box-shadow: inset 0 2px 4px 0 rgba(0,0,0,0.06); } /** Border */ .border { border: 1px solid var(--grey-border); } .border-top { border-top: 1px solid var(--grey-border); } .border-bottom { border-bottom: 1px solid var(--grey-border); } .border-y { border-top: 1px solid var(--grey-border); border-bottom: 1px solid var(--grey-border); } .border-right { border-right: 1px solid var(--grey-border); } .border-left { border-left: 1px solid var(--grey-border); } .border-x { border-right: 1px solid var(--grey-border); border-left: 1px solid var(--grey-border); } .border-none { border: 0; } .border-solid { border-style: solid; } .border-dashed { border-style: dashed; } .border-dotted { border-style: dotted; } .border-double { border-style: double; } /** Border Radius */ .rounded-none { border-radius: 0px; } .rounded-sm { border-radius: 0.125rem; } .rounded { border-radius: 0.25rem; } .rounded-md { border-radius: 0.375rem; } .rounded-lg { border-radius: 0.5rem; } .rounded-xl { border-radius: 0.75rem; } .rounded-2xl { border-radius: 1rem; } .rounded-3xl { border-radius: 1.5rem; } .rounded-full { border-radius: 9999px; } /** Float */ .float-none { float: none; } .float-left { float: left; } .float-right { float: right; } /** Opacity */ .opacity-0 { opacity: 0; } .opacity-5 { opacity: 0.05; } .opacity-10 { opacity: 0.1; } .opacity-20 { opacity: 0.2; } .opacity-25 { opacity: 0.25; } .opacity-30 { opacity: 0.3; } .opacity-40 { opacity: 0.4; } .opacity-50 { opacity: 0.5; } .opacity-60 { opacity: 0.6; } .opacity-70 { opacity: 0.7; } .opacity-75 { opacity: 0.75; } .opacity-80 { opacity: 0.8; } .opacity-90 { opacity: 0.9; } .opacity-95 { opacity: 0.95; } .opacity-100 { opacity: 1; } /** Position */ .position-static { position: static; } .position-relative { position: relative; } .position-absolute { position: absolute; } .position-sticky { position: sticky; } .position-fixed { position: fixed; } /** Edge Offsets */ .all-0 { left: 0; right: 0; bottom: 0; top: 0; } .all-10 { left: 10px; right: 10px; bottom: 10px; top: 10px; } .x-0 { left: 0; right: 0; } .x-10 { left: 10px; right: 10px; } .y-0 { bottom: 0; top: 0; } .y-10 { bottom: 10px; top: 10px; } .bottom-0 { bottom: 0; } .bottom-10 { bottom: 10px; } .top-0 { top: 0; } .top-10 { top: 10px; } .left-0 { left: 0; } .left-10 { left: 10px; } .right-0 { right: 0; } .right-10 { right: 10px; } /** Display Values */ .d-none { display: none; } .d-inline { display: inline; } .d-block { display: block; } .d-contents { display: contents; } .d-list-item { display: list-item; } .d-inline-block { display: inline-block; } .d-inline-table { display: inline-table; } .d-table { display: table; } .d-table-cell { display: table-cell; } .d-table-column { display: table-column; } .d-table-column-group { display: table-column-group; } .d-table-footer-group { display: table-footer-group; } .d-table-header-group { display: table-header-group; } .d-table-row { display: table-row; } .d-table-row-group { display: table-row-group; } .d-flex { display: flex; } .d-inline-flex { display: inline-flex; } .d-grid { display: grid; } .d-inline-grid { display: inline-grid; } .d-ruby { display: ruby; } .d-ruby-base { display: ruby-base; } .d-ruby-text { display: ruby-text; } .d-ruby-base-container { display: ruby-base-container; } .d-ruby-text-container { display: ruby-text-container; } .d-run-in { display: run-in; } .d-inherit { display: inherit; } .d-initial { display: initial; } .d-unset { display: unset; } /*! DROP-IN CSS */ /** 1. Global Resets */ *, ::before, ::after { box-sizing: border-box; } /** 2. Base HTML & Body */ html { height: 100%; line-height: 1.5; -webkit-text-size-adjust: 100%; font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; tab-size: 4; } body { height: 100%; color: var(--black); font-size: 16px; background: var(--white); margin: 0; display: flex; flex-direction: column; } /** 3. Structural Layout */ nav ul { padding: 0; margin: 0; } nav ul li { list-style-type: none; } nav button { margin-bottom: 5px; } main { display: block; } footer { border-top: 1px solid var(--grey-border); text-align: center; background: var(--white-darkest); overflow: auto; flex-shrink: 0; } /** 4. Typography */ h1 { font-size: 2em; margin: 0.67em 0; } b, strong { font-weight: bolder; } small { font-size: 80%; } sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sub { bottom: -0.25em; } sup { top: -0.5em; } blockquote { margin: 0 0 1rem; padding: 0 1rem; color: var(--grey-text); border-left: 4px solid var(--grey-border); } summary { display: list-item; } /** 5. Code and Preformatted Text */ code, pre, kbd, samp { font-family: ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace; font-size: 1em; } pre, code { background-color: var(--white-darkest); border-radius: 3px; border: 1px solid var(--grey-border); } pre { overflow: auto; word-wrap: normal; width: fit-content; line-height: 1.45; padding: 12px 16px; } pre code { background: transparent; display: inline; padding: 0; line-height: inherit; word-wrap: normal; } pre code::before, pre code::after { content: normal; } pre > code { border: 0; font-size: 1em; white-space: pre; word-break: normal; } code { margin: 0; } code::before, code::after { letter-spacing: -0.2em; content: '\00a0'; } kbd { background-color: #e6e6e6; background-image: linear-gradient(#fafafa, #e6e6e6); background-repeat: repeat-x; border: 1px solid #d6d6d6; border-radius: 2px; box-shadow: 0 1px 0 #d6d6d6; color: #303030; display: inline-block; line-height: 0.95em; margin: 0 1px; padding: 5px; } /** 6. Anchor */ a { color:var(--primary); text-decoration:none; background-color:transparent; } a:focus, a:hover { color:var(--primary-darker); text-decoration:underline; } /** 7. Table */ table { text-align:left; border-collapse:collapse; border-spacing:0; margin:0; border:1px solid var(--grey-border); width: fit-content; background: var(--white-darker); } table td,table th { padding:1rem; border-bottom:1px solid var(--grey-border); border-right:1px solid var(--grey-border); } table tr:nth-child(2n) { background-color:var(--white-darkest); } /** 8. Media & Miscellaneous */ iframe { outline: none; border: none; } iframe, canvas, svg, img, video { vertical-align: top; max-width: 100%; } progress { vertical-align: baseline; } audio { vertical-align: top; } audio::-webkit-media-controls-panel { background: var(--white-darkest); } hr { border: none; outline: none; height: 1px; background-color: var(--grey-border); } /** 9. Form Elements */ /* Labels and Textareas */ label { display: inline-block; line-height: 2; } textarea { overflow: auto; resize: vertical; } /* General Form Control Styling */ input:not([type]), input[type=date], input[type=datetime-local], input[type=datetime], input[type=email], input[type=month], input[type=number], input[type=password], input[type=search], input[type=tel], input[type=text], input[type=time], input[type=url], input[type=week], select, optgroup, textarea { background: var(--white-darker); background-clip: padding-box; border: 1px solid rgba(0, 0, 0, .12); border-radius: 4px; color: rgba(0, 0, 0, .8); display: block; width: 100%; padding: 8px 16px; font-family: inherit; font-size: 1rem; line-height: 1.5; -webkit-transition: border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; transition: border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; } input:not([type]):focus, input[type=color]:focus, input[type=date]:focus, input[type=datetime-local]:focus, input[type=datetime]:focus, input[type=email]:focus, input[type=month]:focus, input[type=number]:focus, input[type=password]:focus, input[type=search]:focus, input[type=tel]:focus, input[type=text]:focus, input[type=time]:focus, input[type=url]:focus, input[type=week]:focus, select:focus, optgroup:focus, textarea:focus { border-color: var(--primary-faded); outline: 0; -webkit-box-shadow: 0 0 0 .2rem var(--primary-outline); box-shadow: 0 0 0 .2rem var(--primary-outline); } input:not([type])[disabled], input[type=color][disabled], input[type=date][disabled], input[type=datetime-local][disabled], input[type=datetime][disabled], input[type=email][disabled], input[type=month][disabled], input[type=number][disabled], input[type=password][disabled], input[type=search][disabled], input[type=tel][disabled], input[type=text][disabled], input[type=time][disabled], input[type=url][disabled], input[type=week][disabled], select[disabled], optgroup[disabled], textarea[disabled] { background-color: rgba(0, 0, 0, .12); color: rgba(0, 0, 0, .54); cursor: not-allowed; opacity: 1; } input[readonly], select[readonly], optgroup[readonly], textarea[readonly] { border-color: rgba(0, 0, 0, .12); color: rgba(0, 0, 0, .54); } input:focus:invalid, select:focus:invalid, optgroup:focus:invalid, textarea:focus:invalid { border-color: var(--error); color: var(--error); } /* Checkboxes and Radios */ input[type=checkbox], input[type=radio] { -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0; display: inline; } input[type=checkbox]:focus, input[type=file]:focus, input[type=radio]:focus { outline: 1px thin rgba(0, 0, 0, .12); } input[type=checkbox]:focus:invalid, input[type=file]:focus:invalid, input[type=radio]:focus:invalid { outline-color: var(--error); } /* Specific Input Types */ input[type=range] { display: block; } input[type=color] { border:1px solid rgba(0,0,0,.12); border-radius:4px; height: 42px; width: 42px; display: block; padding: 0 2px; } input[type='search'] { -webkit-appearance: textfield; outline-offset: -2px; } input[type="color"]::-webkit-color-swatch { border-radius: 50px; border: 1px solid var(--grey-border); } /* Browser Overrides */ ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { height: auto; } ::-webkit-search-decoration { -webkit-appearance: none; } ::-webkit-file-upload-button { -webkit-appearance: button; font: inherit; } /* Buttons */ button, input[type=button], input[type=reset], input[type=submit] { -webkit-appearance: button; background-color: var(--primary); border-radius: 4px; cursor: pointer; color:var(--white); padding: 8px 16px; display: inline-block; font-weight: 400; text-align: center; white-space: nowrap; vertical-align: middle; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; border: 1px solid transparent; font-family: inherit; font-size: 1rem; line-height: 1.5; -webkit-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; } button::-moz-focus-inner, input[type=button]::-moz-focus-inner, input[type=reset]::-moz-focus-inner, input[type=submit]::-moz-focus-inner { padding: 0; } button:hover, input[type=button]:hover, input[type=reset]:hover, input[type=submit]:hover { background-color: var(--primary-darker); } button:not(:disabled):active, input[type=button]:not(:disabled):active, input[type=reset]:not(:disabled):active, input[type=submit]:not(:disabled):active { background-color: var(--primary-darkest); } button:focus, input[type=button]:focus, input[type=reset]:focus, input[type=submit]:focus { outline: 0; -webkit-box-shadow: 0 0 0 .2rem var(--primary-outline); box-shadow: 0 0 0 .2rem var(--primary-outline); } button:disabled, input[type=button]:disabled, input[type=reset]:disabled, input[type=submit]:disabled { opacity: .65; cursor: not-allowed; background-color: var(--primary-faded); } /* Fieldset and Legend */ legend { padding: 0 5px; box-sizing: border-box; color: inherit; display: table; max-width: 100%; white-space: normal; } fieldset { border-width: 1px; border-color: var(--grey-border); border-style: solid; border-radius: 4px; }