/** Variables */ /* ---------------------------------------- */ /* Font Declarations */ /* ---------------------------------------- */ @font-face { font-family: 'Modesto Condensed'; font-style: normal; font-weight: 400; src: url('../fonts/modesto-condensed/modesto-condensed.woff2') format('woff2'); } @font-face { font-family: 'Modesto Condensed'; font-style: normal; font-weight: 700; src: url('../fonts/modesto-condensed/modesto-condensed-bold.woff2') format('woff2'); } @font-face { font-family: 'Amiri'; font-style: normal; font-weight: 400; src: url("../fonts/amiri/amiri-regular.woff2") format('woff2'); } @font-face { font-family: 'Amiri'; font-style: normal; font-weight: 700; src: url("../fonts/amiri/amiri-bold.woff2") format('woff2'); } @font-face { font-family: 'Signika'; src: url('../fonts/signika/signika-regular.woff2') format('woff2'); font-style: normal; font-weight: 400; } @font-face { font-family: 'Signika'; src: url('../fonts/signika/signika-bold.woff2') format('woff2'); font-style: normal; font-weight: 700; } @font-face { font-family: 'Bruno Ace'; src: url('../fonts/bruno-ace/bruno-ace.woff2') format('woff2'); font-style: normal; font-weight: 400; } @font-face { font-family: 'Bruno Ace SC'; src: url('../fonts/bruno-ace/bruno-ace-sc.woff2') format('woff2'); font-style: normal; font-weight: 400; } /* ---------------------------------------- */ /* Colors */ /* ---------------------------------------- */ body { --color-warm-1: #ee9b3a; --color-warm-2: #c9593f; --color-warm-3: #5d142b; --color-cool-3: #584a75; --color-cool-4: #302831; --color-cool-5: #0b0a13; --color-cool-5-25: rgba(11, 10, 19, 0.25); --color-cool-5-50: rgba(11, 10, 19, 0.5); --color-cool-5-75: rgba(11, 10, 19, 0.75); --color-cool-5-90: rgba(11, 10, 19, 0.9); --color-light-1: #f7f3e8; --color-light-2: #efe6d8; --color-light-3: #e7d1b1; --color-light-4: #d0b8a3; --color-light-5: #9f8475; --color-light-6: #816b66; --color-dark-1: #111; --color-dark-2: #222; --color-dark-3: #444; --color-dark-4: #555; --color-dark-5: #666; --color-dark-6: #777; --color-level-error: #ce0707; --color-level-error-bg: rgba(105, 0, 8, 0.8); --color-level-error-border: #750003; --color-level-info: #59a1f6; --color-level-info-bg: rgba(47, 80, 132, 0.8); --color-level-info-border: #5c87b9; --color-level-success: #26b231; --color-level-success-bg: rgba(26, 107, 34, 0.8); --color-level-success-border: #1b8f23; --color-level-warning: #ee9b3a; --color-level-warning-bg: rgba(214, 150, 0, 0.8); --color-level-warning-border: #b18404; --color-scrollbar: #5d142b; --color-scrollbar-track: transparent; --color-scrollbar-border: #8d151b; --color-text-selection: #f7f3e8; --color-text-selection-bg: #584a75; } /* ---------------------------------------- */ /* Typography */ /* ---------------------------------------- */ body { --font-body: "Signika", "Palatino Linotype", sans-serif; --font-awesome: "Font Awesome 6 Pro"; --font-awesome-duotone: "Font Awesome 6 Duotone"; --font-monospace: monospace; --font-blockquote: "Signika", "Palatino Linotype", sans-serif; --font-size-10: 0.625rem; --font-size-11: 0.6875rem; --font-size-12: 0.75rem; --font-size-13: 0.8125rem; --font-size-14: 0.875rem; --font-size-15: 0.9375rem; --font-size-16: 1rem; --font-size-18: 1.125rem; --font-size-20: 1.25rem; --font-size-24: 1.5rem; --font-size-28: 1.75rem; --font-size-32: 2rem; --font-size-36: 2.25rem; --font-size-48: 3rem; --font-size-64: 4rem; --font-size-80: 5rem; --font-h1: "Modesto Condensed", serif; --font-h2: "Amiri", serif; --font-h3: "Signika", "Palatino Linotype", sans-serif; --font-h4: "Amiri", serif; --font-h5: "Signika", "Palatino Linotype", sans-serif; --font-h6: "Modesto Condensed", serif; --font-h1-size: var(--font-size-48); --font-h2-size: var(--font-size-32); --font-h3-size: var(--font-size-24); --font-h4-size: var(--font-size-24); --font-h5-size: var(--font-size-20); --font-h6-size: var(--font-size-24); } /* ---------------------------------------- */ /* Layout */ /* ---------------------------------------- */ body { --input-height: 2rem; --z-index-background: -1; --z-index-main: 0; --z-index-canvas: 0; --z-index-app: 30; --z-index-ui: 60; --z-index-window: 100; --z-index-tooltip: 9999; --z-index-notification: 99999; } /* ---------------------------------------- */ /* Aesthetics */ /* ---------------------------------------- */ body { --background-url: url("../ui/backgrounds/setup.webp"); --main-logo: url("../icons/vtt-512.png"); } /* ---------------------------------------- */ /* Applications */ /* ---------------------------------------- */ .window-app, .application { --header-height: 36px; --minimized-width: 200px; --background: var(--color-cool-5-90); --color-text-primary: var(--color-light-2); --color-header-background: rgba(0, 0, 0, 0.5); --color-border: var(--color-cool-4); --color-fieldset-border: var(--color-light-6); --color-form-hint: var(--color-light-5); --color-form-hint-hover: var(--color-light-4); --color-form-label: var(--color-light-4); --color-form-label-hover: var(--color-light-2); --color-select-option-bg: transparent; } /* ---------------------------------------- */ /* Forms and Form Elements */ /* ---------------------------------------- */ input, select { --input-background-color: var(--color-cool-4); --input-border-color: transparent; --input-text-color: var(--color-light-3); --input-placeholder-color: var(--color-light-4); --input-focus-outline-color: var(--color-cool-3); } input:focus, select:focus { --input-text-color: var(--color-light-1); } input:disabled, select:disabled { --input-background-color: var(--color-cool-5); --input-border-color: var(--color-cool-4); --input-text-color: var(--color-light-4); } .standard-form label.icon { --input-background-color: var(--color-cool-4); --input-border-color: transparent; --input-text-color: var(--color-light-3); --input-focus-outline-color: var(--color-cool-3); } .standard-form label.icon:focus-within { --input-text-color: var(--color-light-1); } .standard-form label.icon:has(> input:disabled) { --input-background-color: var(--color-cool-5); --input-border-color: var(--color-cool-4); --input-text-color: var(--color-light-4); } input[readonly] { --input-background-color: var(--color-cool-5); --input-border-color: var(--color-cool-4); --input-text-color: var(--color-light-4); } input[type="checkbox"] { --checkbox-checked-color: var(--color-warm-1); --checkbox-disabled-color: var(--color-cool-4); --checkbox-background-color: var(--color-cool-4); --checkbox-checkmark-color: transparent; --checkbox-font-weight: bold; } input[type=range] { --range-track-color: var(--input-background-color); --range-thumb-background-color: rgba(11, 10, 19, 0.9); --range-thumb-border-color: var(--color-warm-1); } a.button, button { --button-background-color: var(--color-cool-5-50); --button-border-color: var(--color-light-5); --button-text-color: var(--color-light-3); --button-focus-outline-color: var(--color-warm-2); --button-hover-background-color: var(--color-warm-2); --button-hover-border-color: var(--color-light-3); --button-hover-text-color: var(--color-light-1); } a.button:disabled, button:disabled { --button-background-color: var(--color-cool-5); --button-border-color: transparent; --button-text-color: var(--color-light-5); } a.button.bright, button.bright { --button-background-color: var(--color-warm-1); --button-border-color: var(--color-cool-5); --button-text-color: var(--color-cool-5); --button-hover-background-color: #fda948; --button-hover-border-color: var(--color-warm-3); --button-hover-text-color: #000000; } a.button.bright:disabled, button.bright:disabled { --button-background-color: var(--color-cool-4); } /* ---------------------------------------- */ /* Setup Views Specifically */ /* ---------------------------------------- */ body.auth { --header-size: 160px; --header-font-size: var(--font-size-80); --form-padding: 1.5rem; --max-width: 600px; } /* ---------------------------------------- */ /* Tables */ /* ---------------------------------------- */ table { --table-background-color: var(--color-cool-5-50); } .theme-light { --color-text-selection: var(--color-light-1); --color-text-selection-bg: var(--color-dark-6); /* ---------------------------------------- */ /* Forms and Form Elements */ /* ---------------------------------------- */ } .theme-light .application { --background: url("../ui/parchment.jpg") repeat; --color-text-primary: var(--color-dark-1); --color-header-background: var(--color-dark-3); --color-fieldset-border: var(--color-light-2); --color-form-label: var(--color-dark-2); --color-form-label-hover: var(--color-dark-1); --color-form-hint: var(--color-dark-4); --color-form-hint-hover: var(--color-dark-2); --color-select-option-bg: var(--color-light-1); } .theme-light input, .theme-light select { --input-background-color: rgba(0, 0, 0, 0.1); --input-border-color: var(--color-dark-6); --input-text-color: var(--color-dark-2); --input-placeholder-color: var(--color-dark-3); --input-focus-outline-color: var(--color-warm-2); } .theme-light input:focus, .theme-light select:focus { --input-text-color: var(--color-dark-1); } .theme-light input:disabled, .theme-light select:disabled { --input-background-color: rgba(0, 0, 0, 0.2); --input-border-color: transparent; --input-text-color: var(--color-dark-3); } .theme-light input[type=checkbox] { --checkbox-font-weight: unset; --checkbox-background-color: var(--color-dark-6); --checkbox-checked-color: var(--color-warm-1); --checkbox-checkmark-color: var(--color-dark-1); } .theme-light input[type=checkbox]:disabled, .theme-light input[type=checkbox][readonly] { --checkbox-font-weight: bold; --checkbox-disabled-color: var(--color-dark-6); --checkbox-checked-color: var(--color-dark-6); } .theme-light input[type=checkbox]:disabled:checked, .theme-light input[type=checkbox][readonly]:checked { --checkbox-disabled-color: transparent; } .theme-light label.icon { --input-background-color: rgba(0, 0, 0, 0.1); --input-border-color: var(--color-dark-6); --input-text-color: var(--color-dark-2); --input-focus-outline-color: var(--color-warm-2); } .theme-light label.icon:focus-within { --input-text-color: var(--color-dark-1); } .theme-light label.icon:has(> input:disabled) { --input-background-color: rgba(0, 0, 0, 0.2); --input-border-color: transparent; --input-text-color: var(--color-dark-3); } .theme-light input[readonly] { --input-background-color: rgba(0, 0, 0, 0.2); --input-border-color: transparent; --input-text-color: var(--color-dark-3); } .theme-light a.button, .theme-light button { --button-background-color: rgba(0 0 0 / 10%); --button-border-color: var(--color-dark-5); --button-text-color: var(--color-dark-1); --button-focus-outline-color: var(--color-warm-2); --button-hover-background-color: var(--color-warm-2); --button-hover-text-color: var(--color-light-1); } .theme-light a.button:disabled, .theme-light button:disabled { --button-background-color: rgba(0 0 0 / 20%); --button-border-color: transparent; --button-text-color: var(--color-dark-3); } /* ---------------------------------------- */ /* Tables */ /* ---------------------------------------- */ table { --table-background-color: none; } table thead, table tfoot { background: var(--color-cool-5); } /* ----------------------------------------- */ /* Root */ /* ----------------------------------------- */ :root { --color-text-light-highlight: #f0f0e0; --color-text-light-heading: #c9c7b8; --color-text-light-primary: #b5b3a4; --color-text-dark-primary: #191813; --color-text-dark-secondary: #4b4a44; --color-text-dark-header: #23221d; --color-text-dark-inactive: #7a7971; --color-text-hyperlink: #ff6400; --color-text-selection: #f7f3e8; --color-text-selection-bg: #777; --color-text-light-0: #fff; --color-text-light-1: #eee; --color-text-light-2: #ddd; --color-text-light-3: #ccc; --color-text-light-4: #bbb; --color-text-light-5: #aaa; --color-text-light-6: #999; --color-text-light-7: #888; --color-text-dark-1: #111; --color-text-dark-2: #222; --color-text-dark-3: #444; --color-text-dark-4: #555; --color-text-dark-5: #666; --color-text-dark-6: #777; --color-border-light-1: #ddd; --color-border-light-2: #999; --color-border-dark-1: #111; --color-border-dark-2: #222; --color-border-dark-3: #333; --color-border-dark-4: #444; --color-border-dark-5: #666; --color-shadow-primary: #ff0000; --color-shadow-highlight: #ff6400; --color-shadow-dark: #000; --color-underline-inactive: #7a7971; --color-underline-active: #44191A; --color-underline-header: #782e22; --color-border-light-highlight: #f0f0e0; --color-border-light-primary: #b5b3a4; --color-border-light-secondary: #c9c7b8; --color-border-light-tertiary: #7a7971; --color-border-dark: #000; --color-border-dark-primary: #191813; --color-border-dark-secondary: #23221d; --color-border-dark-tertiary: #4b4a44; --color-border-highlight: #ff6400; --color-border-highlight-alt: #ff0000; --color-bg-btn-minor-inactive: #c9c7b8; --color-bg-btn-minor-active: #b5b3a4; --color-select-option-bg: #dad8cc; --color-checkbox-checked: #666; --color-ownership-none: #5500ff; --color-ownership-observer: #7a7971; --color-ownership-owner: #b5b3a4; --sidebar-width: 300px; --sidebar-header-height: 32px; --sidebar-item-height: 48px; --hotbar-height: 52px; --hotbar-width: 578px; --macro-size: 50px; --color-scrollbar: #782e22; --color-scrollbar-track: transparent; --color-scrollbar-border: #ff6400; --players-width: 200px; --form-field-height: 26px; --font-primary: "Signika", sans-serif; --line-height-12: 0.75rem; --line-height-16: 1rem; --line-height-20: 1.25rem; --line-height-30: 1.875rem; } body.game .window-app { --color-fieldset-border: var(--color-light-2); --color-form-label: var(--color-dark-2); --color-form-label-hover: var(--color-dark-1); --color-form-hint: var(--color-dark-4); --color-form-hint-hover: var(--color-dark-2); --color-select-option-bg: var(--color-light-1); } /* ----------------------------------------- */ /* Font Awesome Free Compatibility /* ----------------------------------------- */ @font-face { font-family: "Font Awesome 5 Free"; font-display: block; font-weight: 900; src: url("../fonts/fontawesome/webfonts/fa-solid-900.woff2") format("woff2"), url("../fonts/fontawesome/webfonts/fa-solid-900.ttf") format("truetype"); } @font-face { font-family: "Font Awesome 5 Free"; font-display: block; font-weight: 400; src: url("../fonts/fontawesome/webfonts/fa-regular-400.woff2") format("woff2"), url("../fonts/fontawesome/webfonts/fa-regular-400.ttf") format("truetype"); } @font-face { font-family: "Font Awesome 5 Free"; font-display: block; font-weight: 300; src: url("../fonts/fontawesome/webfonts/fa-light-300.woff2") format("woff2"), url("../fonts/fontawesome/webfonts/fa-light-300.ttf") format("truetype"); } /** Theme V1 Rules */ * { box-sizing: border-box; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } body { width: 100vw; height: 100vh; margin: 0; overflow: hidden; background-image: url("../ui/denim.png"); background-repeat: repeat; background-size: auto; font-family: var(--font-primary); font-size: var(--font-size-14); box-shadow: 0 0 50vw var(--color-shadow-dark) inset; } body.game { display: flex; justify-content: flex-start; } body.game.av-horizontal-dock { flex-direction: column; } body.background { background-position: 50% 50%; background-size: cover; background-repeat: no-repeat; } body:not(.background) { /* * Work around for Chrome bug when pressing PgUp/Down in a textarea/TinyMCE editor: * https://bugs.chromium.org/p/chromium/issues/detail?id=890248 * This distorts the background image on world screens so isn't applied there. */ position: fixed; top: 0; right: 0; bottom: 0; left: 0; } #interface { display: flex; justify-content: flex-start; flex: 1; overflow: hidden; } #ui-left, #ui-middle, #ui-right { position: relative; pointer-events: none; z-index: var(--z-index-app); } #ui-left { display: flex; flex-direction: column; justify-content: space-between; } #ui-middle { flex: 1; display: flex; flex-direction: column; justify-content: space-between; } #ui-right { flex: none; } #ui-top { margin: 0 10px 0 18px; } #ui-top.offset { margin-left: -90px; } #ui-bottom > div { display: flex; justify-content: space-between; } #ui-bottom > #camera-views { justify-content: flex-start; } #sidebar { display: flex; flex-direction: column; flex-wrap: nowrap; justify-content: flex-start; width: var(--sidebar-width); height: calc(100% - 10px); overflow: hidden; margin: 5px; padding: 0; } #sidebar > * { flex: 1; } #sidebar > .flex0 { display: block; flex: 0; } #sidebar > .flex1 { flex: 1; } #sidebar > .flex2 { flex: 2; } #sidebar > .flex3 { flex: 3; } canvas#board { z-index: var(--z-index-canvas); width: 100%; height: 100%; display: block; position: absolute; top: 0; left: 0; } .banner { position: fixed; width: 60%; max-width: 960px; margin: 0 auto; top: 28vh; text-align: center; padding: 2px 0.5em; background: goldenrod; border: 1px solid var(--color-border-dark-1); border-radius: 5px; box-shadow: 0 0 10px var(--color-shadow-dark); } #fps { width: 100px; margin: 0 10px 10px 0; align-self: flex-end; display: none; font-family: var(--font-monospace); background: rgba(0, 0, 0, 0.5); text-align: center; line-height: 30px; color: var(--color-text-light-heading); border: 1px solid var(--color-border-light-tertiary); border-radius: 5px; } #fps label { color: var(--color-text-dark-inactive); } /* ---------------------------------------- */ /* Text */ /* ---------------------------------------- */ /* Headers */ h1, h2, h3, h4 { margin: 0 0 0.5rem; padding: 0; font-weight: normal; } h1 { font-size: 2em; border-bottom: 2px solid var(--color-underline-header); } h2 { font-size: 1.5em; border-bottom: 1px solid var(--color-underline-header); } h3 { font-size: 1.25em; border-bottom: 1px solid var(--color-underline-header); } :is(h1, h2, h3, h4, h5, h6).noborder { border: none; } /* Links */ a { cursor: pointer; } a[href] { color: var(--color-text-hyperlink); } a:hover { text-shadow: 0 0 8px var(--color-shadow-primary); } a[disabled] { pointer-events: none; cursor: inherit; } a.content-link, a.inline-roll { background: #DDD; padding: 1px 4px; border: 1px solid var(--color-border-dark-tertiary); border-radius: 2px; white-space: nowrap; word-break: break-all; } a.content-link i, a.inline-roll i { color: var(--color-text-dark-inactive); margin-right: 0.25em; } a.content-link.playing i:before, a.inline-roll.playing i:before { content: "\f0c8"; } a.content-link.disabled, a.inline-roll.disabled { cursor: default; color: var(--color-text-dark-inactive); border-color: var(--color-border-light-primary); } a.content-link.disabled:hover, a.inline-roll.disabled:hover { text-shadow: unset; } a.content-link.broken { cursor: default; background: rgba(255, 0, 0, 0.05); border: 1px dashed red; } a.inline-roll.gmroll { background: #e8e8ef; border-color: #545469; } a.inline-roll.blindroll { background: #f5eaf5; border-color: #6b476b; } /* Paragraph */ p { margin: 0.5em 0; } p:empty { min-height: 1rem; } /* Images */ img.centered { display: block; margin-left: auto; margin-right: auto; } ::selection { background: var(--color-text-selection-bg); color: var(--color-text-selection); } /* Standard Lists */ ul, ol { margin: 0.5em 0; padding: 0 0 0 1.5em; } /* Definition Lists */ dl { margin: 0.5em 0; } dt { font-weight: bold; } dd { padding-left: 5px; margin: 3px 0; } /* HR separators */ hr { border: none; border-top: 1px solid var(--color-border-light-primary); border-bottom: 1px solid var(--color-border-light-highlight); } /* Buttons */ button[hidden] { display: none; } /* Blockquote */ blockquote { margin: 0.5em 0 0.5em 10px; padding: 0 0 0 20px; border-left: 3px solid var(--color-border-light-tertiary); font-style: italic; } blockquote em { font-style: normal; } /* Secret Sections */ section.secret { padding: 0 5px; background: rgba(53, 0, 121, 0.05); border-top: 1px solid var(--color-border-dark-5); border-bottom: 1px solid var(--color-border-dark-5); } section.secret.revealed { background: rgba(0, 53, 0, 0.05); } section.secret button.reveal { width: unset; line-height: unset; padding: 0 16px; margin-top: 8px; font-size: var(--font-size-13); border-style: dashed; } /* Info Tooltip Icons */ i.tip { font-size: var(--font-size-12); color: var(--color-text-dark-5); } /* Reference */ span.reference { display: inline-block; padding: 0.25rem; color: #c5dbe3; border: 1px solid #def7ff; border-radius: 3px; } #tooltip .toolclip p, .locked-tooltip .toolclip p { text-align: left; } #tooltip .toolclip h4, .locked-tooltip .toolclip h4 { text-align: center; font-size: 18px; font-weight: bold; } #tooltip .toolclip p.faint, .locked-tooltip .toolclip p.faint { text-align: center; font-size: 14px; color: var(--color-text-light-heading); } #tooltip .toolclip video, .locked-tooltip .toolclip video { max-width: 300px; height: 300px; } /* ---------------------------------------- */ /* Tables */ /* ---------------------------------------- */ table { width: 100%; border-collapse: collapse; background: rgba(0, 0, 0, 0.05); border-top: 1px solid var(--color-border-light-tertiary); border-bottom: 1px solid var(--color-border-light-tertiary); margin: 0.5em 0; } table thead { background: rgba(0, 0, 0, 0.5); color: var(--color-text-light-highlight); text-shadow: 1px 1px var(--color-shadow-dark); border-bottom: 1px solid var(--color-border-dark); } table tr:nth-child(even) { background-color: rgba(255, 255, 255, 0.2); } table td:first-child { padding-left: 2px; } table td, table th { padding: 0.25em 0; } table.roll-table-rollable th button[data-action] { display: inline-block; background: none; border: none; width: unset; padding: 0; color: var(--color-text-light-highlight); } table.roll-table-rollable tr:not(.drawn) > td:first-child { padding-left: 20px; } table.roll-table-rollable tr.drawn { background: rgba(0, 0, 0, 0.15); } table.roll-table-rollable tr.drawn > td:first-child::before { content: "\f023"; font-family: var(--font-awesome); font-weight: bold; font-size: var(--font-size-12); padding-inline: 4px; } /* ----------------------------------------- */ /* Scrollbar /* ----------------------------------------- */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { box-shadow: 0 0 1px #999 inset; border-radius: 4px; } ::-webkit-scrollbar-thumb { outline: none; border-radius: 3px; background: var(--color-scrollbar); border: 1px solid var(--color-scrollbar-border); } * { scrollbar-width: thin; scrollbar-color: var(--color-scrollbar) var(--color-scrollbar-track); } /* ----------------------------------------- */ /* Images /* ----------------------------------------- */ img { box-sizing: border-box; border: 1px solid var(--color-border-dark); border-radius: 2px; max-width: 100%; } img.noborder { border: none; box-shadow: none; outline: none; } figure { margin: 1rem 0; } figure img { display: block; margin: 0 auto; } figure figcaption { margin-top: 0.5rem; padding: 0 1rem; text-align: center; font-weight: bold; } /** * Basic Application Wrapper */ .app { max-height: 100%; background: url(../ui/denim075.png) repeat; border-radius: 5px; box-shadow: 0 0 20px var(--color-shadow-dark); margin: 3px 0; padding: 0.5em; color: var(--color-text-light-highlight); z-index: var(--z-index-app); transform-origin: top left; } /** * Pop-Out Window Application */ .window-app { display: flex; flex-direction: column; flex-wrap: nowrap; justify-content: flex-start; position: absolute; box-shadow: 0 0 20px var(--color-shadow-dark); padding: 0; z-index: var(--z-index-window); /* Resizable movement handle */ } .window-app > * { flex: 1; } .window-app > .flex0 { display: block; flex: 0; } .window-app > .flex1 { flex: 1; } .window-app > .flex2 { flex: 2; } .window-app > .flex3 { flex: 3; } .window-app .window-header { flex: 0 0 30px; overflow: hidden; padding: 0 8px; line-height: 30px; border-bottom: 1px solid var(--color-border-dark); } .window-app .window-header .window-title { margin: 0; word-break: break-all; } .window-app .window-header .window-title .document-id-link { margin-left: 0.25rem; opacity: 0.5; cursor: pointer; } .window-app .window-header a { flex: none; margin: 0 0 0 8px; } .window-app .window-header i[class^=fa] { margin-right: 3px; } .window-app .window-content { display: flex; flex-direction: column; flex-wrap: nowrap; justify-content: flex-start; background: url(../ui/parchment.jpg) repeat; padding: 8px; color: var(--color-text-dark-primary); overflow-y: auto; overflow-x: hidden; } .window-app .window-content > * { flex: 1; } .window-app .window-content > .flex0 { display: block; flex: 0; } .window-app .window-content > .flex1 { flex: 1; } .window-app .window-content > .flex2 { flex: 2; } .window-app .window-content > .flex3 { flex: 3; } .window-app.zhover { z-index: calc(var(--z-index-window) + 1); } .window-app .window-resizable-handle { width: 20px; height: 20px; position: absolute; bottom: -1px; right: 0; background: #444; padding: 2px; border: 1px solid var(--color-border-dark-1); border-radius: 4px 0 0 0; } .window-app .window-resizable-handle i.fas { transform: rotate(45deg); } .window-app.minimized .window-header { border: none; } .window-app.minimized .window-header > *:not(.window-title):not(.close) { display: none; } .window-app.minimized > :not(.window-header) { display: none; } /* ----------------------------------------- */ /* Context Dropdown Menu /* ----------------------------------------- */ #context-menu { width: 100%; height: max-content; min-width: 150px; max-width: 360px; position: absolute; left: 0; background: #23221d; border: 1px solid var(--color-border-dark); border-radius: 5px; color: var(--color-text-light-1); z-index: calc(var(--z-index-app) + 1); } #context-menu.expand-down { top: calc(100% + 2px); } #context-menu.expand-up { bottom: calc(100% + 2px); } #context-menu ol.context-items, #context-menu li.context-group > ol { list-style: none; margin: 0; padding: 0; } #context-menu li.context-item { padding: 0 5px; line-height: 32px; } #context-menu li.context-item:hover { color: var(--color-text-light-0); text-shadow: 0 0 4px var(--color-shadow-primary); } #context-menu li.context-item > i { margin-right: 5px; } .window-app #context-menu { z-index: calc(var(--z-index-window) + 1); } /* ----------------------------------------- */ /* Player Config UI /* ----------------------------------------- */ #player-config label { font-size: var(--font-size-14); font-weight: bold; color: var(--color-text-dark-primary); } #player-config .avatar { flex: 0 0 64px; margin-bottom: 5px; } #player-config .directory-list { max-height: 300px; overflow-y: auto; list-style: none; margin: 5px 0; padding: 0; } #player-config .directory-item { border-top: 1px solid transparent; border-bottom: 1px solid transparent; } #player-config .directory-item.context { border-top: 1px solid var(--color-border-highlight-alt); border-bottom: 1px solid var(--color-border-highlight); box-shadow: 0 0 10px var(--color-shadow-highlight); } #player-config .directory-item .document-name { font-size: var(--font-size-13); line-height: 32px; margin: 0 0 0 5px; } #player-config .directory-item img.profile { flex: 0 0 32px; height: 32px; border: none; } #player-config button[type="submit"] { margin-top: 0.5em; } /* ----------------------------------------- */ /* Connected Players UI /* ----------------------------------------- */ #players { width: var(--players-width); margin: 0 5px 10px 15px; padding: 0; border: 1px solid var(--color-border-dark); pointer-events: all; } #players.hidden { display: none; } #players h3 { margin: 3px; padding: 4px; border-bottom: 2px groove var(--color-border-dark-secondary); } #players h3 i { margin: 0 6px; } #players h3 .players-mode { font-size: var(--font-size-16); margin: 0 5px; color: var(--color-text-light-primary); } #players ol { list-style: none; margin: 0 0 4px; padding: 0; } #players ol li.player { line-height: 20px; padding: 1px 8px; } #players ol .player-name { overflow: hidden; white-space: nowrap; word-break: break-all; text-overflow: ellipsis; } #players ol .player.context { margin: -1px 0; border-top: 1px solid var(--color-border-highlight); border-bottom: 1px solid var(--color-border-highlight); } #players ol .player.context .player-name { text-shadow: 0 0 5px var(--color-shadow-primary); } #players ol .player-name.self { color: #c0eddb; } #players ol .player-active { flex: 0 0 8px; height: 8px; border: 1px solid var(--color-border-dark); border-radius: 50%; margin: 5px 8px 0 0; } #players ol .player-active.active { box-shadow: 0 0 5px var(--color-shadow-dark); } /* ---------------------------------------- */ /* Notifications */ /* ---------------------------------------- */ #notifications { position: fixed; width: 60%; top: 100px; left: 20%; list-style: none; margin: 0; padding: 0; z-index: calc(var(--z-index-ui) + 100); } .notification { background: rgba(0, 0, 0, 0.5); margin-bottom: 0.5em; padding: 6px 8px; line-height: 20px; border: 1px solid var(--color-border-dark-secondary); border-radius: 5px; box-shadow: 0 0 10px var(--color-shadow-dark); color: var(--color-text-light-1); font-size: var(--font-size-14); text-shadow: 1px 1px black; } .notification .close { float: right; line-height: 20px; margin-left: 8px; } .notification::before { font-family: var(--font-awesome); font-weight: 900; margin-right: 8px; } .notification.info { background: rgba(47, 80, 132, 0.8); border: 1px solid var(--color-level-info); } .notification.info::before { content: "\f05a"; } .notification.warning { background: rgba(214, 150, 0, 0.8); border: 1px solid var(--color-level-warning); } .notification.warning::before { content: "\f071"; } .notification.error { background: rgba(105, 0, 8, 0.8); border: 1px solid var(--color-level-error); } .notification.error::before { content: "\f06a"; } .notification.channel-hint { width: 100%; flex: none; } .notification.stable { background: rgba(138, 211, 4, 0.4); } .notification.stable::before { content: "\f6d9"; } .notification.testing { background: rgba(211, 192, 4, 0.4); } .notification.testing::before { content: "\f0ad"; } .notification.development { background: rgba(211, 119, 4, 0.4); } .notification.development::before { content: "\f6e3"; } .notification.prototype { background: rgba(211, 20, 4, 0.4); } .notification.prototype::before { content: "\f1e2"; } /* ---------------------------------------- */ /* Controls Reference */ /* ---------------------------------------- */ #controls-reference .window-content { max-height: 75vh; } #controls-reference h2 { padding: 2px 0; border-top: 1px solid var(--color-border-dark-tertiary); border-bottom: 1px solid var(--color-border-dark-tertiary); } #controls-reference h3 { padding: 2px 0; border-top: 1px solid var(--color-border-light-primary); border-bottom: 1px solid var(--color-border-light-primary); font-weight: bold; } #controls-reference ol.hotkey-list { list-style: none; padding: 0; } #controls-reference ol.hotkey-list > li { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; margin: 5px 0; } #controls-reference ol.hotkey-list > li > * { flex: 1; } #controls-reference ol.hotkey-list > li > .flex0 { display: block; flex: 0; } #controls-reference ol.hotkey-list > li > .flex1 { flex: 1; } #controls-reference ol.hotkey-list > li > .flex2 { flex: 2; } #controls-reference ol.hotkey-list > li > .flex3 { flex: 3; } #controls-reference ol.hotkey-list h4 { margin: 0; flex: 2; line-height: 24px; } #controls-reference ol.hotkey-list .keys { flex: 3; } #controls-reference ol.hotkey-list .key { display: inline-block; margin: 0 1px; padding: 2px 4px; background: rgba(255, 255, 255, 0.25); border: 1px solid var(--color-border-light-2); border-radius: 5px; box-shadow: 1px 1px #444; text-align: center; min-width: 24px; } #controls-reference ol.hotkey-list li.gm .key { background: #f5eaf5; } /* ---------------------------------------- */ /* Support Details Report */ /* ---------------------------------------- */ #support-details nav { flex: none; } #support-details ul { list-style: none; } #support-details .issues { padding: 0; } #support-details .tab[data-tab=support].active { display: flex; flex-direction: column; } #support-details .tab[data-tab=documents] { padding: 1rem; } #support-details .summary-tree { --spacing: 1rem; --control-size: 10px; --line-width: 1px; --node-padding: 0.25rem; } #support-details .summary-tree ul { margin-top: 0; margin-left: calc(var(--control-size) - var(--spacing)); padding-left: 0; } #support-details .summary-tree li { display: block; position: relative; padding-left: calc(2 * var(--spacing) - var(--control-size) - var(--line-width)); border-left: var(--line-width) solid var(--color-border-dark); font-size: var(--font-size-12); } #support-details .summary-tree li:last-child { border-color: transparent; } #support-details .summary-tree li::before { content: ""; display: block; position: absolute; top: calc(var(--spacing) / -2); left: calc(var(--line-width) * -1); width: calc(var(--spacing) + var(--line-width)); height: calc(var(--spacing) + var(--line-width)); border: solid var(--color-border-dark); border-width: 0 0 var(--line-width) var(--line-width); } #support-details .summary-tree.summary-tree-root { padding: 0; margin: 0; } #support-details .summary-tree.summary-tree-root > li { border: none; } #support-details .summary-tree.summary-tree-root > li::before { display: none; } #support-details .summary-tree summary { display: block; cursor: pointer; padding: var(--node-padding); font-size: var(--font-size-12); } #support-details .summary-tree summary::marker { display: none; } #support-details .summary-tree li::after, #support-details .summary-tree summary::before { content: ""; display: block; position: absolute; top: calc(var(--spacing) / 2 - var(--control-size) + var(--node-padding)); left: calc(var(--spacing) - var(--control-size) - var(--line-width)); width: calc(2 * var(--control-size)); height: calc(2 * var(--control-size)); } #support-details .summary-tree summary::before { content: "\f0fe"; font-family: "Font Awesome 6 Pro"; font-weight: 900; z-index: 1; line-height: calc(2 * var(--control-size) - var(--line-width)); text-align: center; } #support-details .summary-tree details[open] > summary::before { content: "\f146"; } #support-report { -webkit-user-select: all; user-select: all; display: block; padding: 1em; margin: 1em 0; border: 2px dashed #c9baa7; font-size: var(--font-size-12); overflow-x: auto; flex: 1; white-space: pre-wrap; max-height: 600px; } #support-report:focus { animation: selectSwap 100ms step-end forwards; } @keyframes selectSwap { to { -webkit-user-select: text; user-select: text; } } /* ---------------------------------------- */ /* Package Configuration Apps */ /* ---------------------------------------- */ .package-configuration { /** Sidebar */ /** Main Column */ } .package-configuration .window-content { padding: 0; } .package-configuration .window-content > div { height: 100%; flex-wrap: nowrap; } .package-configuration aside.sidebar { flex: 0 0 220px; height: 100%; padding: 1rem; border-right: 1px solid var(--color-border-light-primary); font-size: var(--font-size-12); /** Entry Filter */ /** Category Filters */ /** Reset Defaults */ } .package-configuration aside.sidebar .entry-filter { flex: 0; margin: 0 0 1rem; } .package-configuration aside.sidebar nav.tabs { flex-direction: column; justify-content: flex-start; align-items: flex-start; overflow: hidden auto; } .package-configuration aside.sidebar nav.tabs .category-tab { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px solid var(--color-border-light-primary); text-align: left; width: 100%; } .package-configuration aside.sidebar nav.tabs .category-tab.active { font-weight: bold; border-bottom: 1px solid var(--color-underline-active); } .package-configuration aside.sidebar nav.tabs .category-tab > a { flex: 1; } .package-configuration aside.sidebar .reset-all { flex: 0; margin-right: 0.5rem; } .package-configuration .categories { height: 100%; } .package-configuration .categories .scrollable { flex: 1; padding: 1rem; overflow: hidden auto; } .package-configuration .categories footer { margin: 1rem; flex: 0; } .package-configuration .form-group { margin-bottom: 1rem; } /** Tours Management Subclass */ #tours-management .tour label { font-weight: bold; } #tours-management .tour .status { font-size: var(--font-size-12); font-weight: normal; color: var(--color-text-dark-4); } #tours-management .tour .controls { flex: 0 0 80px; margin-left: 6px; justify-content: end; align-items: center; text-align: center; } #tours-management .tour .controls .control { flex: 0 0 20px; } #tours-management .tour.completed label { color: var(--color-text-dark-6); } /** Client Settings Subclass */ #client-settings .submenu button { flex: 2; } #client-settings form .form-group > label { line-height: 1.25; } /** Combat Config Subclass */ #combat-config .audio-preview { flex: none; padding: 0.25rem; } /** Keybindings Subclass */ #keybindings { /** Single Action */ /** Single Keybinding */ } #keybindings .action { line-height: 24px; padding: 5px; border-bottom: 1px dotted var(--color-border-light-2); } #keybindings .action:last-child { border: none; } #keybindings .action .action-title { margin: 0; font-weight: bold; } #keybindings .action .action-bindings { list-style: none; margin: 0; padding: 0; } #keybindings .binding { justify-content: space-between; margin-bottom: 5px; } #keybindings .binding .binding-fields { display: flex; } #keybindings .binding .binding-fields input { margin: 0 3px 0 0; } #keybindings .binding .binding-fields .binding-input-icon { margin-left: -26px; margin-right: 3px; margin-top: 3px; pointer-events: none; flex-grow: 0; font-size: 130%; } #keybindings .binding .key { flex: none; padding: 0 4px; min-width: 24px; background: rgba(255, 255, 255, 0.25); border: 1px solid var(--color-border-light-2); border-radius: 5px; box-shadow: 1px 1px #444; text-align: center; } #keybindings .binding .key.uneditable { background: #cac9c5; } #keybindings .binding .binding-controls { flex: 0 0 80px; margin-left: 0.5rem; justify-content: end; align-items: center; text-align: center; } #keybindings .binding .binding-controls .control { flex: 0 0 20px; } #keybindings .binding .binding-controls .control.conflicts { color: orange; } #keybindings .binding .binding-controls .control.uneditable { color: gray; } /* ---------------------------------------- */ /* New User Experience */ /* ---------------------------------------- */ a.nue-tab, a.nue-action { color: var(--color-text-hyperlink); text-decoration: underline; } h3.nue { padding: 8px 0; border-top: 2px groove var(--color-border-light-highlight); border-bottom: 2px groove var(--color-border-light-highlight); } footer.nue { border-top: 2px groove var(--color-border-light-highlight); font-size: var(--font-size-11); color: var(--color-text-dark-inactive); padding-top: 6px; } p.nue { font-size: var(--font-size-12); } /* ---------------------------------------- */ /* Tours */ /* ---------------------------------------- */ .tour-fadeout { box-shadow: rgba(33, 33, 33, 0.8) 0px 0px 1px 2px, rgba(33, 33, 33, 0.6) 0px 0px 0px 5000px; border-radius: 4px; transition: all 0.3s ease-out; z-index: calc(var(--z-index-tooltip) - 2); position: fixed; } .tour-overlay { position: fixed; inset: 0px; box-sizing: content-box; transition: all 0.3s ease-out; z-index: calc(var(--z-index-tooltip) - 1); } .tour-center-step { margin: -100px 0 0 -100px; position: fixed; top: 50%; left: 50%; width: max-content; max-width: 400px; padding: 6px 8px; background: rgba(0, 0, 0, 0.95); font-family: var(--font-primary); font-size: var(--font-size-16); line-height: var(--font-size-16); color: var(--color-text-light-highlight); border: 1px solid var(--color-border-dark-secondary); border-radius: 3px; box-shadow: 0 0 4px #000; z-index: var(--z-index-tooltip); } .tour [data-action="exit"] { position: absolute; right: 7px; top: 14px; color: var(--color-text-light-0); } .tour [data-action="exit"] > i { cursor: pointer; } .tour .step-title { text-align: center; margin-top: 0.5rem; color: var(--color-text-light-0); } .tour .step-header:after { width: 100%; content: ""; border-bottom: 2px solid var(--color-border-highlight); --webkit-mask-image: linear-gradient(90deg, transparent 0%, black 30%, black 70%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0%, black 5%, black 30%, transparent 100%); } .tour .step-button.disabled { color: var(--color-text-light-6); pointer-events: none; } .tour .step-button > i { cursor: pointer; } .tour .content { text-align: center; color: var(--color-select-option-bg); } .tour .step-controls .step-button { flex: 0; color: var(--color-text-light-0); } .tour .step-controls .step-button > i { cursor: pointer; } .tour .step-controls .step-button.disabled { color: var(--color-text-light-6); pointer-events: none; } .tour .step-controls [data-action="previous"] { text-align: left; } .tour .step-controls .progress { text-align: center; flex: 1; color: var(--color-text-light-0); } .tour .step-controls [data-action="next"] { text-align: right; } /* ---------------------------------------- */ /* Roll Fulfillment */ /* ---------------------------------------- */ .application.roll-resolver { --flash-color: #ffff004d; } .application.roll-resolver section[data-application-part] { gap: 0.5rem; } .application.roll-resolver .input-grid { --grid-cols: 3; } .application.roll-resolver .formula { padding: 0.5rem 0.5rem 0; font-size: var(--font-size-18); text-align: center; } .application.roll-resolver label.die-input > input { text-align: center; font-size: var(--font-size-16); } .application.roll-resolver .form-fields { display: flex; gap: 0.125rem; } .application.roll-resolver .form-fields > label { flex: 1; } .application.roll-resolver .form-fields > button { flex: none; width: unset; } .application.roll-resolver .form-fields > button > i { margin: 0; } .application.roll-resolver .new-addition { animation: background-flash 400ms ease-in-out; } @keyframes background-flash { 0% { background-color: transparent; } 50% { background-color: var(--flash-color); } 100% { background-color: transparent; } } /* ----------------------------------------- */ /* World Configuration */ /* ----------------------------------------- */ #world-config label { font-weight: bold; } #world-config label.world-desc { margin: 5px 0; } #world-config .editor { height: 300px; } #world-config input[name="name"] { flex: 2; margin-left: 3px; } /* ----------------------------------------- */ /* Region Legend */ /* ----------------------------------------- */ #region-legend { max-height: calc(100% - 200px); } #region-legend .window-content { padding: 0.5rem; } #region-legend #region-legend-list { height: 0; flex: 1; gap: 0.5rem; } #region-legend .region-filters { gap: 0.5rem; } #region-legend .region-filters input[name="elevationBottom"], #region-legend .region-filters input[name="elevationTop"] { flex: 0 0 50px; } #region-legend .region-filters input[name="elevationBottom"]::placeholder, #region-legend .region-filters input[name="elevationTop"]::placeholder { font-size: var(--font-size-12); } #region-legend .region-list { --scroll-margin: 0.5rem; flex: 1; margin: 0; padding: 0; } #region-legend .region { gap: 0.25rem; padding: 0.25rem 0; border-top: 2px groove transparent; border-bottom: 2px groove transparent; } #region-legend .region.hovered { border-color: var(--color-border-dark-secondary); } #region-legend .region.controlled { border-color: var(--color-border-highlight); } #region-legend .region-color { flex: none; height: 16px; width: 16px; border: 2px solid #000; border-radius: 3px; } #region-legend .region-name { margin: 0; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } #region-legend .region-meta { flex: none; color: var(--color-form-hint); font-size: var(--font-size-12); } #region-legend button.icon { flex: 0 0 24px; height: 24px; padding: 0; font-size: var(--font-size-12); line-height: 24px; } /* ---------------------------------------- */ /* Forms */ /* ---------------------------------------- */ form .form-group, form .form-group-stacked { clear: both; display: flex; flex-direction: row; flex-wrap: wrap; margin: 3px 0; align-items: center; } form .form-group > * { flex: 3; } form .form-group > label { flex: 2; } form .form-group label { line-height: var(--form-field-height); } form .form-group .form-fields { display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: flex-end; align-items: center; gap: 4px; } form .form-group .form-fields > * { flex: 1; } form .form-group .form-fields > label { flex: 0; padding: 0 4px; text-align: center; } form .form-group .form-fields > label.checkbox { flex: none; padding: 0; } form .form-group .form-fields > input[type="checkbox"] { flex: 0 0 20px; } form .form-group .form-fields button { flex: 0; line-height: calc(var(--form-field-height) - 4px); } form .form-group .form-fields span.sep { flex: none; } form .form-group span.units { flex: 0; line-height: 28px; font-size: var(--font-size-12); color: var(--color-text-dark-secondary); } form .form-group-stacked > *, form .form-group.stacked > * { flex: 0 0 100%; } form .form-group.slim .form-fields { flex: 1; } form .form-group.slim .form-fields > label { flex: none; font-size: var(--font-size-12); color: var(--color-text-dark-secondary); text-align: right; } form .form-group.slim .form-fields > input[type="number"], form .form-group.slim .form-fields > input[type="text"] { flex: 0 0 50px; padding: 0; text-align: center; } form .form-group.hidden { display: none; } form h1.form-header, form h2.form-header, form h3.form-header { margin: 0 0 5px; padding: 3px 0; color: var(--color-text-dark-header); border-top: 1px solid var(--color-border-light-primary); border-bottom: 1px solid var(--color-border-light-primary); } form .notes, form .hint { flex: 0 0 100%; font-size: var(--font-size-12); line-height: var(--line-height-16); color: var(--color-text-dark-secondary); margin: 3px 0; } /** * A new and improved form style used starting in V12. * Arranges form fields in a flex column orientation with fieldset elements to group topically similar inputs. */ form.flex-form { height: 100%; overflow: hidden; display: flex; flex-direction: column; gap: 0.5rem; } form.flex-form .form-body { flex: 1; display: flex; flex-direction: column; gap: 0.5rem; padding-right: 0.5rem; overflow: hidden auto; } form.flex-form fieldset { margin: 0; padding: 0.5rem 1rem 1rem; display: flex; flex-direction: column; gap: 0.5rem; border: 1px solid var(--color-border-dark-5); border-radius: 8px; } form.flex-form fieldset legend { font-size: var(--font-size-16); font-weight: bold; } form.flex-form fieldset .form-group { margin: 0; } form.flex-form fieldset p.notes { margin: 0.25rem 0 0; } form.flex-form .form-footer { flex: none; } fieldset.input-grid { --grid-cols: 2; display: grid; grid-template-columns: repeat(var(--grid-cols), 1fr); gap: 0.5rem; } /* ---------------------------------------- */ /* Form Inputs */ /* ---------------------------------------- */ input:focus { outline: none; } /* Text Input */ input[type="text"], input[type="number"], input[type="password"], input[type="date"], input[type="time"], input[type="search"] { width: calc(100% - 2px); min-width: 20px; height: var(--form-field-height); background: rgba(0, 0, 0, 0.05); padding: 1px 3px; margin: 0; color: var(--color-text-dark-primary); font-family: inherit; font-size: inherit; text-align: inherit; line-height: inherit; border: 1px solid var(--color-border-light-tertiary); border-radius: 3px; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } input[type="text"]:focus, input[type="number"]:focus, input[type="password"]:focus, input[type="date"]:focus, input[type="time"]:focus, input[type="search"]:focus { box-shadow: 0 0 5px var(--color-shadow-primary); } input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; } input[type="number"] { -moz-appearance: textfield; } input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; display: inline-block; width: 12px; height: 12px; margin-left: 0.5rem; background: linear-gradient(45deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 43%, #333 45%, #333 55%, rgba(0, 0, 0, 0) 57%, rgba(0, 0, 0, 0) 100%), linear-gradient(135deg, transparent 0%, transparent 43%, #333 45%, #333 55%, transparent 57%, transparent 100%); cursor: pointer; } input[type="checkbox"] { flex: 0 0 20px; width: 20px; height: 20px; margin: 3px 5px; } input[type="radio"] { position: relative; top: 2px; margin: 0 0 0 5px; } input[type="checkbox"]:checked, input[type="radio"]:checked { accent-color: var(--color-checkbox-checked); } input[type="checkbox"]:focus-visible, input[type="radio"]:focus-visible { box-shadow: 0 0 5px var(--color-shadow-primary); outline: 1px solid transparent; } input.placeholder-fa-solid::placeholder { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; font-family: "Font Awesome 6 Pro"; font-weight: 900; font-style: normal; font-variant: normal; line-height: 1; text-rendering: auto; } /* Checkbox Labels */ label.checkbox { flex: auto; padding: 0; margin: 0; height: 22px; line-height: 22px; font-size: var(--font-size-11); } label.checkbox > input[type="checkbox"] { width: 16px; height: 16px; margin: 0 3px; position: relative; top: 4px; } label.checkbox.right > input[type="checkbox"] { margin: 0 0 0 2px; } /* Select Boxes */ select { height: calc(var(--form-field-height) + 1px); background: rgba(0, 0, 0, 0.05); border: 1px solid var(--color-border-light-tertiary); border-radius: 3px; padding: 0 3px; text-overflow: ellipsis; font-family: inherit; font-size: inherit; } select:focus { box-shadow: 0 0 5px var(--color-shadow-primary); outline: none; } select[multiple] { height: auto; padding: 3px; } option, optgroup { font-family: inherit; background: var(--color-select-option-bg); } /* Text Areas */ textarea { width: 100%; min-height: 50px; padding: 5px; background: rgba(0, 0, 0, 0.05); border: 1px solid var(--color-border-dark); border-radius: 3px; font-family: var(--font-monospace); -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } textarea:focus { box-shadow: 0 0 6px var(--color-shadow-primary); outline: none; } textarea:read-only { color: var(--color-text-dark-secondary); box-shadow: none; } /* Buttons */ button { width: 100%; margin: 0 1px; background: rgba(255, 255, 240, 0.8); border: 1px solid var(--color-border-light-primary); border-radius: 3px; font-size: var(--font-size-14); line-height: 28px; font-family: var(--font-primary); cursor: pointer; } button > i { margin-right: 3px; } button > * { cursor: inherit; } button:hover, button:focus { outline: none; box-shadow: 0 0 5px var(--color-shadow-primary); } button:disabled { color: var(--color-text-dark-secondary); box-shadow: none; } button.hidden { display: none; } form button { background: rgba(0, 0, 0, 0.1); border: 2px groove var(--color-border-light-highlight); } input:disabled { border: none; color: var(--color-text-dark-secondary); } input:disabled:hover { border: none; box-shadow: none; outline: none; } input::placeholder { color: var(--color-text-dark-secondary); opacity: 1; } /* Color Picker V1 (deprecated) */ input[type="text"].color { flex: 1.45; } input[type="color"][data-edit] { height: var(--form-field-height); background: transparent; border: 2px groove var(--color-border-light-highlight); } input[type="color"][data-edit][data-edit] { margin-left: 5px; flex: 1.45; } /* File Pickers */ button.file-picker { flex: 0 0 24px; line-height: 24px; margin: -1px 0 -1px 4px; order: 99; } button.file-picker + input[type="text"] { height: 28px; margin-right: 5px !important; } /* Range Input */ input[type=range] { -webkit-appearance: none; background: transparent; height: 20px; margin: 0; width: 100%; } input[type=range]::-webkit-slider-runnable-track { width: 100%; height: 6px; cursor: pointer; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; background: #999999; border-radius: 3px; border: 1px solid #111; } input[type=range]::-webkit-slider-thumb { box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; border: 1px solid var(--color-border-dark); height: 12px; width: 12px; border-radius: 2px; background: #c85019; cursor: pointer; -webkit-appearance: none; margin-top: -4px; } input[type=range]::-moz-range-track { width: 100%; height: 6px; cursor: pointer; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; background: #999999; border-radius: 3px; border: 1px solid var(--color-border-dark-1); } input[type=range]::-moz-range-thumb { box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; border: 1px solid var(--color-border-dark); height: 12px; width: 12px; border-radius: 2px; background: #c85019; cursor: pointer; } input[type=range]::-ms-track { width: 100%; height: 6px; cursor: pointer; background: transparent; border-color: transparent; color: transparent; } input[type=range]::-ms-fill-lower { background: #8c8c8c; border: 1px solid var(--color-border-dark-1); border-radius: 6px; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; } input[type=range]::-ms-fill-upper { background: #999999; border: 1px solid var(--color-border-dark-1); border-radius: 6px; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; } input[type=range]::-ms-thumb { box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; border: 1px solid var(--color-border-dark); height: 12px; width: 12px; border-radius: 2px; background: #c85019; cursor: pointer; } input[type=range]:focus::-ms-fill-lower { background: #999999; } input[type=range]:focus::-ms-fill-upper { background: #a6a6a6; } input[type="range"] + .range-value { display: block; flex: 0 1 48px; text-align: center; border: 1px solid var(--color-border-light-primary); padding: 2px; margin-left: 10px; } input[type="range"]:disabled { filter: grayscale(1) opacity(0.33); } input[type="range"]:disabled + .range-value { opacity: 0.67; } input[type="range"]:disabled:hover { text-shadow: none; cursor: default; } input[type="range"]:disabled::-moz-range-thumb, input[type="range"].disabled::-webkit-slider-thumb { background-color: var(--color-text-dark-4); } input[type="range"]:focus { outline: none; } input[type="range"]:focus::-webkit-slider-runnable-track { background: #a6a6a6; } input[type="range"]:focus::-moz-range-track { background: #a6a6a6; } input[type="range"]:focus::-webkit-slider-runnable-track { box-shadow: 0 0 5px var(--color-shadow-primary); } input[type="range"]:focus::-moz-range-track { box-shadow: 0 0 5px var(--color-shadow-primary); } input[type="range"]:focus::-webkit-slider-thumb { box-shadow: 0 0 5px var(--color-shadow-primary); } input[type="range"]:focus::-moz-range-thumb { box-shadow: 0 0 5px var(--color-shadow-primary); } /** * Dark mode inputs */ .dark button { background: rgba(255, 255, 240, 0.8); border: 2px solid var(--color-border-light-secondary); } .dark input, .dark select { background: rgba(255, 255, 240, 0.8); } /* ----------------------------------------- */ /* Custom Hue Slider Web Component */ /* ----------------------------------------- */ input.color-range, input.color-range:focus { --color-thumb: #ffffff; --gradient: linear-gradient(to right, #ff0000 0%, #ffff00 16.667%, #00ff00 33.333%, #00ffff 50%, #0000ff 66.667%, #ff00ff 83.333%, #ff0000 100%); appearance: none; height: 1.6em; width: 100%; padding: 0; border: none; outline: none; } input.color-range::-webkit-slider-thumb, input.color-range:focus::-webkit-slider-thumb { -webkit-appearance: none; cursor: pointer; height: 18px; width: 18px; margin-top: -4px; background: var(--color-thumb); border-radius: 15%; border: 1px solid var(--color-border-dark-1); box-shadow: 1px 1px 1px var(--color-border-dark-2), 1px 1px 0px var(--color-border-dark-3); } input.color-range::-webkit-slider-thumb:hover, input.color-range:focus::-webkit-slider-thumb:hover { height: 24px; width: 24px; margin-top: -7px; } input.color-range::-moz-range-thumb, input.color-range:focus::-moz-range-thumb { cursor: pointer; height: 18px; width: 18px; background: var(--color-thumb); border-radius: 15%; border: 1px solid var(--color-border-dark-1); box-shadow: 1px 1px 1px var(--color-border-dark-2), 1px 1px 0px var(--color-border-dark-3); } input.color-range::-moz-range-thumb:hover, input.color-range:focus::-moz-range-thumb:hover { height: 24px; width: 24px; } input.color-range::-webkit-slider-runnable-track, input.color-range:focus::-webkit-slider-runnable-track { cursor: pointer; height: 12px; width: 100%; background: var(--gradient); border-radius: 6px; border: 1px solid var(--color-border-dark-1); box-shadow: 1px 1px 1px var(--color-border-dark-2), 1px 1px 2px var(--color-border-dark-3); } input.color-range::-moz-range-track, input.color-range:focus::-moz-range-track { cursor: pointer; height: 12px; width: 100%; background: var(--gradient); border-radius: 6px; border: 1px solid var(--color-border-dark-1); box-shadow: 1px 1px 1px var(--color-border-dark-2), 1px 1px 2px var(--color-border-dark-3); } input[disabled].color-range { --gradient: linear-gradient(to right, #454545 0%, #bbbbbb 50%, #454545 100%); } input[disabled].color-range::-webkit-slider-thumb { cursor: default; opacity: 0; } input[disabled].color-range::-moz-range-thumb { cursor: default; opacity: 0; } input[disabled].color-range::-webkit-slider-runnable-track { cursor: default; opacity: 0.5; } input[disabled].color-range::-moz-range-track { cursor: default; opacity: 0.5; } /* ----------------------------------------- */ /* FilePicker Element */ /* ----------------------------------------- */ form .form-group .form-fields string-tags > button, form .form-group .form-fields document-tags > button, form .form-group .form-fields file-picker > button { flex: 0 0 36px; line-height: var(--form-field-height); } /* ----------------------------------------- */ /* TinyMCE Editor /* ----------------------------------------- */ .editor { position: relative; max-height: 100%; max-width: 100%; overflow: auto; } .editor-content * { -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } .editor-edit { display: none; font-size: 1.25em; position: absolute; top: 5px; right: 5px; background: rgba(187, 187, 187, 0.75); border: 1px solid var(--color-border-dark-1); border-radius: 4px; padding: 1px 2px; box-shadow: 0 0 1px var(--color-shadow-dark); } .editor:hover .editor-edit { display: block; } /* Oxide Theme Overrides */ .tox.tox-tinymce { border: none; } .tox.tox-tinymce .tox-toolbar { background: transparent; } .tox.tox-tinymce .tox-tbtn { font-size: var(--font-size-12); padding: 0 2px; } .tox.tox-tinymce .tox-tbtn[title="Formats"] { width: 90px; } .tox.tox-tinymce .tox-edit-area__iframe { background: transparent; } /* Flexbox */ .flexrow { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; } .flexcol { display: flex; flex-direction: column; flex-wrap: nowrap; justify-content: flex-start; } .flexrow > *, .flexcol > * { flex: 1; } .flexrow > .flex0, .flexcol > .flex0 { display: block; flex: 0; } .flexrow > .flex1, .flexcol > .flex1 { flex: 1; } .flexrow > .flex2, .flexcol > .flex2 { flex: 2; } .flexrow > .flex3, .flexcol > .flex3 { flex: 3; } /* ----------------------------------------- */ /* Tabbed Containers /* ----------------------------------------- */ .tabs { display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center; justify-content: space-around; } .tabs > [data-tab] { text-align: center; } .tabs > [data-tab] > * { pointer-events: none; } .tabs > [data-tab].active { text-shadow: 0 0 10px var(--color-shadow-primary); } .tab[data-tab] { display: none; } .tab[data-tab].active { display: block; } .tab[data-tab].active.flexrow, .tab[data-tab].active.flexcol { display: flex; } .tab[data-tab].hidden { display: none; } /* ----------------------------------------- */ /* Filter Navigation /* ----------------------------------------- */ nav.list-filters { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; justify-content: flex-end; } nav.list-filters > * { flex: 1; } nav.list-filters > .flex0 { display: block; flex: 0; } nav.list-filters > .flex1 { flex: 1; } nav.list-filters > .flex2 { flex: 2; } nav.list-filters > .flex3 { flex: 3; } nav.list-filters label { font-weight: bold; } nav.list-filters a.filter { flex: none; margin-left: 10px; border-bottom: 2px solid var(--color-underline-inactive); } nav.list-filters a.filter.active { font-weight: bold; border-bottom: 2px solid var(--color-underline-active); } /* Draggable Containers */ .draggable { cursor: move; } #drag-preview { position: absolute; left: -1000px; height: -1000px; z-index: -1; } /* ----------------------------------------- */ /* Dialog Window /* ----------------------------------------- */ .dialog .dialog-buttons { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; justify-content: space-around; } .dialog .dialog-buttons > * { flex: 1; } .dialog .dialog-buttons > .flex0 { display: block; flex: 0; } .dialog .dialog-buttons > .flex1 { flex: 1; } .dialog .dialog-buttons > .flex2 { flex: 2; } .dialog .dialog-buttons > .flex3 { flex: 3; } .dialog .dialog-buttons button { background: rgba(0, 0, 0, 0.1); border: 2px groove var(--color-border-light-highlight); margin: 0 5px 0 0; } .dialog .dialog-buttons button:last-child { margin-right: 0; } .dialog .dialog-buttons button.default { background: rgba(0, 0, 0, 0.05); border: 2px groove var(--color-border-light-secondary); } /* ----------------------------------------- */ /* Global Tooltip */ /* ----------------------------------------- */ #tooltip, .locked-tooltip { position: absolute; width: max-content; max-width: 320px; padding: 6px 8px; background: rgba(0, 0, 0, 0.95); font-family: var(--font-primary); font-size: var(--font-size-16); line-height: var(--font-size-16); color: var(--color-text-light-highlight); border: 1px solid var(--color-border-dark-secondary); border-radius: 3px; box-shadow: 0 0 4px #000; z-index: var(--z-index-tooltip); pointer-events: none; overflow-wrap: break-word; visibility: hidden; opacity: 0; transition: visibility 0s 500ms, opacity 500ms; } #tooltip.text-center, .locked-tooltip.text-center { text-align: center; } #tooltip.text-left, .locked-tooltip.text-left { text-align: left; } #tooltip.text-right, .locked-tooltip.text-right { text-align: right; } #tooltip.link-matches, .locked-tooltip.link-matches { padding: 0; text-align: left; max-width: 500px; max-height: 250px; overflow: auto; } #tooltip.link-matches section, .locked-tooltip.link-matches section { padding: 0.5rem; border-bottom: 2px groove var(--color-border-dark-secondary); } #tooltip.link-matches p, .locked-tooltip.link-matches p { display: flex; flex-direction: row; align-items: center; justify-content: start; gap: 0.2rem; flex-wrap: wrap; } #tooltip.link-matches a.content-link, .locked-tooltip.link-matches a.content-link { color: var(--color-text-dark-primary); } #tooltip.link-matches a.content-link[data-uuid^="Compendium"]::before, .locked-tooltip.link-matches a.content-link[data-uuid^="Compendium"]::before { font-family: "Font Awesome 6 Pro"; font-weight: 900; content: "\f558"; display: inline-block; margin-right: 3px; color: var(--color-text-dark-inactive); } #tooltip.active, .locked-tooltip.active { visibility: visible; opacity: 1; transition: opacity 500ms; } #tooltip.tour, .locked-tooltip.tour { pointer-events: all; } .locked-tooltip { pointer-events: all; border: 1px solid var(--color-border-highlight); } /* ----------------------------------------- */ /* File Picker */ /* ----------------------------------------- */ .filepicker { --color-form-label: inherit; --color-form-label-hover: inherit; --color-form-hint: var(--color-text-dark-secondary); --color-form-hint-hover: var(--color-text-dark-secondary); /* Private Directory */ } .filepicker .window-content { padding: 1rem; } .filepicker .standard-form { gap: 0; } .filepicker .filepicker-header { gap: 0.5rem; } .filepicker .filepicker-body { gap: 0.5rem; font-size: var(--font-size-13); } .filepicker .tabs { flex: 0 0 24px; } .filepicker .favorites .paths { justify-content: flex-end; flex-wrap: wrap; } .filepicker .favorites .path { flex: none; padding: 1px 4px; background: var(--color-bg-btn-minor-inactive); border: 1px solid var(--color-border-light-tertiary); border-radius: 3px; } .filepicker .favorites .path a.link[data-source]::before { font-family: "Font Awesome 6 Pro"; color: var(--color-text-dark-primary); margin-right: 4px; content: "\f0c2"; } .filepicker .favorites .path a.link[data-source="data"]::before { content: "\f1c0"; } .filepicker .favorites .path a.link[data-source="public"]::before { content: "\f233"; } .filepicker .favorites .path .remove { border-left: 1px solid gray; padding-left: 4px; font-size: var(--font-size-12); } .filepicker .current-dir button { flex: 0 0 32px; margin: 0 5px 0 0; line-height: 24px; text-align: center; background: rgba(0, 0, 0, 0.1); border: 1px solid var(--color-border-dark-4); border-radius: 3px; } .filepicker .current-dir button > i { margin: 0; } .filepicker .current-dir button:last-child { margin-right: 0; } .filepicker .current-dir input[name="target"] { height: 32px; margin: 0 5px 0 0; } .filepicker .filter-dir label { flex: 1; line-height: 28px; } .filepicker .filter-dir input { flex: 3; } .filepicker .tile-size .form-fields { flex: 0 0 156px; } .filepicker .directory { flex: none; list-style: none; margin: 0.5em 0; padding: 0; background: rgba(0, 0, 0, 0.05); border: 1px solid var(--color-border-dark-5); border-radius: 2px; max-height: 600px; overflow: hidden auto; } .filepicker .directory > li { height: 30px; line-height: 30px; cursor: pointer; padding-left: 0.25em; word-break: break-all; overflow: hidden; border-bottom: 1px solid var(--color-border-dark-4); } .filepicker .directory > li > i { margin-right: 5px; } .filepicker .directory > li.picked { background: rgba(0, 0, 0, 0.1); font-weight: bold; } .filepicker .directory > li:last-child { border-bottom: none; } .filepicker .directory > li:hover { text-shadow: 0 0 5px var(--color-shadow-primary); } .filepicker .directory > li.dir { font-weight: bold; } .filepicker .private button.privacy { background: rgba(115, 49, 255, 0.05); box-shadow: 0 0 4px #7331FF inset; } .filepicker .private .directory, .filepicker .public .private.dir { background: rgba(115, 49, 255, 0.05); } .filepicker .details-list img { display: none; } .filepicker .thumbs-list li { height: 48px; line-height: 48px; } .filepicker .thumbs-list img { flex: 0 0 48px; object-fit: cover; object-position: 50% 50%; margin-right: 10px; border: none; } .filepicker .tiles-list { display: grid; grid-template-columns: repeat(5, 100px); } .filepicker .tiles-list li { width: 100px; height: 100px; padding: 0; border: 1px solid transparent; border-right: 1px solid var(--color-border-dark-primary); border-bottom: 1px solid var(--color-border-dark-primary); } .filepicker .tiles-list li img { border: none; margin: 0; object-fit: contain; } .filepicker .tiles-list li.picked { box-shadow: 0 0 6px inset var(--color-shadow-highlight); } .filepicker .images-list li { position: relative; height: 200px; padding: 0; border: 1px solid var(--color-border-dark-primary); } .filepicker .images-list li img { width: 100%; height: 200px; object-fit: contain; object-position: 50% 50%; border: none; } .filepicker .images-list li span.filename { position: absolute; top: 0; width: 400px; left: calc(50% - 200px); background: rgba(0, 0, 0, 0.66); border: 1px solid var(--color-border-dark); border-top: none; border-radius: 0 0 5px 5px; text-align: center; color: var(--color-text-light-highlight); line-height: 20px; padding-top: 4px; } .filepicker .upload-file label, .filepicker .selected-file label { flex: 1; } .filepicker .display-modes { flex: 0 0 160px; text-align: center; } .filepicker .display-modes a { flex: 0 0 32px; line-height: 24px; margin: 0 3px; border: 1px solid var(--color-border-light-tertiary); background: var(--color-bg-btn-minor-inactive); border-radius: 3px; } .filepicker .display-modes a.active { text-shadow: 0 0 6px var(--color-shadow-highlight); border: 1px solid var(--color-border-dark-primary); background: var(--color-bg-btn-minor-active); } /* ----------------------------------------- */ /* TinyMCE Editor /* ----------------------------------------- */ .app .mce-panel { background: transparent; border: none; box-shadow: none; outline: none; } .app .mce-panel span { display: inherit; } .app .mce-top-part { border-bottom: 2px groove var(--color-border-light-highlight); } .app .mce-top-part::before { box-shadow: none; } .app .mce-btn { background: transparent; border: none; color: var(--color-text-dark-1); } .app .mce-btn:hover { background: transparent; border: none; color: inherit; } .app .mce-btn .mce-ico { color: var(--color-text-dark-1); } /* ----------------------------------------- */ /* Utility Classes /* ----------------------------------------- */ .hidden { display: none; } .dice-roll { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; justify-content: space-around; } .dice-roll > * { flex: 1; } .dice-roll > .flex0 { display: block; flex: 0; } .dice-roll > .flex1 { flex: 1; } .dice-roll > .flex2 { flex: 2; } .dice-roll > .flex3 { flex: 3; } .dice-roll .dice-result, .dice-roll .dice-tooltip { flex: 0 0 100%; } .dice-roll .dice-tooltip { display: none; order: 1; } .dice-roll .dice-tooltip.expanded { display: block; } .dice-roll .dice-result { order: 2; } .dice-roll .dice-formula, .dice-roll .dice-total { flex: 0 0 100%; position: relative; margin: 0; line-height: 24px; text-align: center; background: rgba(0, 0, 0, 0.1); border: 1px solid var(--color-border-light-2); border-radius: 3px; box-shadow: 0 0 2px #FFF inset; word-break: break-all; } .dice-roll .dice-formula { margin-bottom: 5px; } .dice-roll .dice-total { flex: 0; font-size: var(--font-size-20); font-weight: bold; } .dice-roll .dice-total.success { color: green; } .dice-roll .dice-total.failure { color: red; } .dice-roll + .dice-roll { margin-top: 5px; } /** Inline Roll Tooltip */ .inline-roll .dice-tooltip { width: 280px; position: fixed; background: url(../ui/parchment.jpg) repeat; border: 1px solid var(--color-border-dark); border-radius: 5px; padding: 5px 5px 0; box-shadow: 0 0 10px var(--color-shadow-dark); } .inline-roll:hover .dice-tooltip { text-shadow: none; } /** * Legacy Tooltip Code */ .dice-roll .dice-part:hover > .dice-tooltip { display: block; } .dice-roll .dice-part.die { font-weight: 700; cursor: pointer; } .dice-roll .dice-part .dice-tooltip { display: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%; line-height: 26px; padding: 0 2px; background: #444; font-size: var(--font-size-14); color: var(--color-text-light-4); } .dice-roll .dice-tooltip .reroll { color: var(--color-text-dark-6); text-decoration: line-through; } .dice-roll .dice-tooltip .fail { color: red; } .dice-roll .dice-tooltip .crit { color: lightgreen; } .dice-roll .dice-flavor { text-align: right; font-size: var(--font-size-12); } .message.ic .dice-roll { font-style: normal; } /* ----------------------------------------- */ /* Dice Tooltip /* ----------------------------------------- */ .dice-tooltip .part-header { margin: 0; line-height: 24px; border-bottom: 1px solid var(--color-text-light-6); } .dice-tooltip .part-header .part-method { flex: none; margin-right: 4px; } .dice-tooltip .part-header .part-formula { font-weight: bold; flex: 1; } .dice-tooltip .part-header .part-flavor { flex: none; margin-right: 5px; font-size: var(--font-size-12); color: var(--color-text-dark-secondary); } .dice-tooltip .part-header .part-total { flex: none; font-size: var(--font-size-16); font-weight: bold; padding: 0 5px; background: rgba(0, 0, 0, 0.1); border: 1px solid var(--color-text-light-6); border-bottom: none; border-radius: 3px 3px 0 0; } .dice-tooltip .dice-rolls { list-style: none; margin: 5px 0; padding: 0; overflow: hidden; } .dice-tooltip .dice-rolls .roll { position: relative; min-width: 24px; line-height: 24px; float: left; margin-right: 1px; background-image: url("../icons/svg/d6-grey.svg"); background-repeat: no-repeat; background-size: 24px 24px; font-size: var(--font-size-16); color: #000; font-weight: bold; text-align: center; } .dice-tooltip .dice-rolls .roll.d4 { background-image: url("../icons/svg/d4-grey.svg"); } .dice-tooltip .dice-rolls .roll.d6 { background-image: url("../icons/svg/d6-grey.svg"); } .dice-tooltip .dice-rolls .roll.d8 { background-image: url("../icons/svg/d8-grey.svg"); } .dice-tooltip .dice-rolls .roll.d10 { background-image: url("../icons/svg/d10-grey.svg"); } .dice-tooltip .dice-rolls .roll.d12 { background-image: url("../icons/svg/d12-grey.svg"); } .dice-tooltip .dice-rolls .roll.d20 { background-image: url("../icons/svg/d20-grey.svg"); } .dice-tooltip .dice-rolls .roll.success, .dice-tooltip .dice-rolls .roll.max { color: #18520b; filter: sepia(0.5) hue-rotate(60deg); } .dice-tooltip .dice-rolls .roll.failure, .dice-tooltip .dice-rolls .roll.min { color: #aa0200; filter: sepia(0.5) hue-rotate(-60deg); } .dice-tooltip .dice-rolls .roll.discarded, .dice-tooltip .dice-rolls .roll.rerolled { color: inherit; filter: sepia(0.5) contrast(0.75) opacity(0.4); } .dice-tooltip .dice-rolls .roll.exploded:before { font-size: 0.5rem; font-family: var(--font-awesome); content: "\f666"; position: absolute; top: -8px; right: 0; } /* Applications */ #hud { position: absolute; transform-origin: top left; pointer-events: none; z-index: calc(var(--z-index-canvas) + 1); } #hud > * { position: absolute; text-align: center; pointer-events: none; transform-origin: top left; } /* ---------------------------------------- */ /* HUD Application /* ---------------------------------------- */ .placeable-hud .col { display: flex; flex-direction: column; flex-wrap: nowrap; justify-content: flex-start; align-items: center; position: absolute; height: 100%; } .placeable-hud .col > * { flex: 1; } .placeable-hud .col > .flex0 { display: block; flex: 0; } .placeable-hud .col > .flex1 { flex: 1; } .placeable-hud .col > .flex2 { flex: 2; } .placeable-hud .col > .flex3 { flex: 3; } .placeable-hud .col.left { width: 70px; justify-content: flex-start; } .placeable-hud .col.middle { width: calc(100% - (70px * 2)); left: 70px; justify-content: space-between; } .placeable-hud .col.right { width: 70px; right: 0; justify-content: flex-start; } .placeable-hud input[type="text"] { width: 100%; background: rgba(0, 0, 0, 0.6); box-shadow: 0 0 15px var(--color-shadow-dark); border: 1px solid var(--color-border-dark-3); color: var(--color-text-light-2); height: 40px; line-height: 40px; margin: 0; border-radius: 8px; font-size: var(--font-size-28); font-weight: bold; pointer-events: all; } .placeable-hud input[type="text"]:focus { box-shadow: 0 0 10px #c60; border: 1px solid var(--color-border-highlight-alt); } .placeable-hud .control-icon { box-sizing: content-box; width: 40px; flex: 0 0 40px; margin: 8px 0; font-size: var(--font-size-28); line-height: 40px; text-align: center; color: var(--color-text-light-3); background: rgba(0, 0, 0, 0.6); box-shadow: 0 0 15px var(--color-shadow-dark); border: 1px solid #333; border-radius: 8px; pointer-events: all; } .placeable-hud .control-icon:first-child { margin-top: 0; } .placeable-hud .control-icon:hover { color: var(--color-text-light-1); } .placeable-hud .control-icon:hover img { opacity: 1; } .placeable-hud .control-icon.active { border: 1px solid var(--color-border-highlight); } .placeable-hud .control-icon > i[class^=fa] { position: relative; top: 1px; } .placeable-hud .control-icon img { display: block; margin: 2px; padding: 0; border: none; opacity: 0.7; } .placeable-hud .attribute { flex: 0 0 40px; } .placeable-hud .attribute.elevation { position: relative; width: 56px; margin: 0 8px 0 0; } .placeable-hud .attribute.elevation > i.fas { position: absolute; top: -5px; left: -3px; font-size: var(--font-size-18); color: var(--color-text-light-5); } /* ---------------------------------------- */ /* Token HUD /* ---------------------------------------- */ #token-drop { opacity: 0.5; z-index: calc(var(--z-index-window) + 1); border: none; } #token-hud .col { height: calc(100% + 100px); top: -50px; } #token-hud .col.left { left: -70px; justify-content: center; } #token-hud .col.right { right: -70px; justify-content: center; } #token-hud .col.middle { width: 100%; left: 0; justify-content: space-between; } #token-hud .attribute.bar1 { bottom: 0; } #token-hud .attribute.bar1 input { border: 1px solid #7cd000; } #token-hud .attribute.bar2 { top: 0; } #token-hud .attribute.bar2 input { border: 1px solid #659db5; } #token-hud .control-icon.effects { position: relative; } #token-hud .status-effects { visibility: hidden; position: absolute; left: 65px; top: 0; display: grid; padding: 3px; box-sizing: content-box; width: 100px; grid-template-columns: repeat(4, 25%); background: rgba(0, 0, 0, 0.6); box-shadow: 0 0 15px var(--color-shadow-dark); border: 1px solid var(--color-border-dark-3); border-radius: 4px; pointer-events: all; } #token-hud .status-effects.active { visibility: visible; } #token-hud .status-effects .effect-control { width: 24px; height: 24px; margin: 0; padding: 0; border: none; opacity: 0.5; } #token-hud .status-effects .effect-control:hover { opacity: 0.75; } #token-hud .status-effects .effect-control.active { opacity: 1; } #token-hud .status-effects .effect-control.overlay { opacity: 1; border: 1px solid var(--color-border-highlight); } #token-hud.large .col.left, #token-hud.large .col.right { justify-content: flex-start; padding-top: 50px; } /* ---------------------------------------- */ /* Chat Bubbles /* ---------------------------------------- */ .chat-bubble { padding: 8px; background: #f5f2ec; min-width: 100px; max-width: 400px; max-height: 100px; color: var(--color-text-dark-2); border: 2px solid #6f6c66; box-shadow: 0 0 20px var(--color-shadow-dark); overflow: hidden; position: absolute; } .chat-bubble .bubble-content { position: relative; top: 0; } .chat-bubble.left { border-radius: 16px 8px 16px 4px; } .chat-bubble.right { border-radius: 8px 16px 4px 16px; } .chat-bubble.emote { background: #f3edde; border: 2px solid #887c5d; color: var(--color-text-dark-3); font-style: italic; } .chat-bubble.chatter { padding: 4px; background: rgba(0, 0, 0, 0.25); box-shadow: none; border: none; border-radius: 10px; color: var(--color-text-light-highlight); } #logo { z-index: var(--z-index-ui); border: none; box-sizing: border-box; pointer-events: all; width: 100px; margin: 12px 0 12px 10px; } #navigation { width: 100%; margin: 12px 0 0 0; padding: 0; background: none; box-shadow: none; border: none; pointer-events: none; } #navigation .nav-item { line-height: 32px; padding: 0 8px; margin: 0 8px 8px 0; border: 1px solid var(--color-border-dark); border-radius: 3px; cursor: pointer; position: relative; pointer-events: all; } #navigation #nav-toggle { flex: 0 0 32px; height: 34px; background: rgba(0, 0, 0, 0.5); text-align: center; } #navigation #nav-toggle:hover { text-shadow: 0 0 10px var(--color-shadow-highlight); } #navigation #scene-list { list-style: none; margin: 0; padding: 0; } #navigation #scene-list .scene { float: left; background: rgba(39, 39, 39, 0.95); } #navigation #scene-list .scene:last-child { margin-right: 0; } #navigation #scene-list .scene.gm { background: #130027; border: 1px solid #3a00ae; } #navigation #scene-list .scene.view, #navigation #scene-list .scene.context { cursor: default; color: var(--color-text-light-0); border: 1px solid var(--color-border-highlight-alt); background: rgba(52, 52, 52, 0.95); border-bottom: 1px solid var(--color-border-highlight); box-shadow: 0 0 10px var(--color-shadow-highlight); } #navigation #scene-list .scene ul.scene-players { list-style: none; margin: 0; padding: 0; position: absolute; top: 24px; left: 0; } #navigation #scene-list .scene li.scene-player { float: left; height: 14px; width: 14px; margin: 0 2px 0 0; line-height: var(--line-height-12); font-size: 0.625rem; text-align: center; color: #000; font-weight: 700; background: #97dff4; border: 1px solid var(--color-border-dark); border-radius: 8px; } #navigation.collapsed { pointer-events: none; } #navigation.collapsed #nav-toggle { pointer-events: all; } #navigation.collapsed #scene-list { display: none; } #loading { display: none; width: 100%; height: 16px; background: rgba(0, 0, 0, 0.6); border: 2px solid var(--color-border-dark); box-shadow: 0 0 4px #b2c3ff; border-radius: 4px; z-index: calc(var(--z-index-canvas) + 1); } #loading label { line-height: 16px; position: absolute; top: -4px; padding: 0 5px; font-size: var(--font-size-18); color: var(--color-text-light-0); background: rgba(0, 0, 0, 0.6); text-shadow: 1px 1px 6px var(--color-text-light-0); } #loading #loading-bar { position: relative; margin: 1px; height: 10px; background: #5d49ff; border: 1px solid #b2c3ff; border-radius: 2px; } #loading #context { left: 5px; } #loading #progress { top: -4px; right: 0; padding: 0 8px; } /* ----------------------------------------- */ /* Main Menu /* ----------------------------------------- */ #menu { position: fixed; z-index: calc(var(--z-index-window) + 1); top: 45%; left: calc(50% - 180px); width: 360px; color: var(--color-text-light-0); background: rgba(0, 0, 0, 0.6); border-radius: 10px; box-shadow: 0 0 30px var(--color-shadow-dark); } #menu #menu-items { list-style: none; margin: 5px; padding: 0; } #menu #menu-items li { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; text-align: center; cursor: pointer; } #menu #menu-items li > * { flex: 1; } #menu #menu-items li > .flex0 { display: block; flex: 0; } #menu #menu-items li > .flex1 { flex: 1; } #menu #menu-items li > .flex2 { flex: 2; } #menu #menu-items li > .flex3 { flex: 3; } #menu #menu-items li > i { flex: 0 0 36px; font-size: var(--font-size-24); line-height: 48px; } #menu #menu-items li h4 { font-size: 2rem; line-height: 48px; margin: 0; } #menu #menu-items li:hover { text-shadow: 0 0 10px var(--color-shadow-highlight); } /* ----------------------------------------- */ /* Scene Controls /* ----------------------------------------- */ #controls { flex: 1; padding: 0 15px; overflow: hidden; } #controls ol.control-tools { margin: 0; padding: 0; list-style: none; background: none; box-shadow: none; border: none; pointer-events: none; /* Primary Controls */ /* Secondary Controls */ /* Disabled Controls */ /* Control Buttons */ } #controls ol.control-tools.main-controls { flex: 0; flex-wrap: nowrap; margin-right: 10px; } #controls ol.control-tools.sub-controls { flex-wrap: wrap; display: none; align-content: flex-start; } #controls ol.control-tools.sub-controls.active { display: inherit; } #controls ol.control-tools.sub-controls > li { margin-right: 5px; } #controls ol.control-tools.disabled { opacity: 0.4; pointer-events: none; } #controls ol.control-tools > li { flex: none; width: 36px; height: 36px; margin: 0 0 10px 0; box-sizing: content-box; font-size: 24px; line-height: 36px; background: rgba(0, 0, 0, 0.5); box-shadow: 0 0 10px var(--color-shadow-dark); color: var(--color-text-light-heading); text-align: center; border: 1px solid var(--color-border-dark); border-radius: 5px; cursor: pointer; pointer-events: all; display: inline-grid; place-content: center; /* Toggled Buttons */ } #controls ol.control-tools > li.active, #controls ol.control-tools > li:hover { color: var(--color-text-light-highlight); border: 1px solid var(--color-border-highlight-alt); border-bottom: 1px solid var(--color-border-highlight); box-shadow: 0 0 10px var(--color-shadow-highlight); } #controls ol.control-tools > li.toggle { background: rgba(30, 0, 60, 0.5); border: 1px solid #3b1893; } #controls ol.control-tools > li.toggle.active, #controls ol.control-tools > li.toggle:hover { background: rgba(60, 0, 120, 0.75); border: 1px solid #9b8dff; box-shadow: 0 0 10px #9b8dff; } #controls ol.control-tools .has-notes::after { color: #3b1893; opacity: 1; } /* ----------------------------------------- */ /* Game Pause /* ----------------------------------------- */ #pause { width: 100%; height: 100px; position: fixed; bottom: 10%; left: 0; pointer-events: none; z-index: calc(var(--z-index-canvas) + 1); background: url("../ui/pausebg.png") no-repeat 50% 50%; display: none; } #pause.paused { display: block; } #pause img { position: absolute; top: -16px; left: calc(50% - 64px); height: 128px; width: 128px; opacity: 0.5; border: none; --fa-animation-duration: 5s; } #pause figcaption { margin: 0; font-size: 2em; font-weight: normal; line-height: 100px; text-align: center; position: relative; z-index: calc(var(--z-index-window) - 1); color: var(--color-text-light-1); text-shadow: 1px 1px 30px var(--color-shadow-dark); } /* ---------------------------------------- */ /* Hotbar */ /* ---------------------------------------- */ #hotbar { z-index: calc(var(--z-index-ui) + 10); width: var(--hotbar-width); height: var(--hotbar-height); pointer-events: none; flex-wrap: nowrap; margin-bottom: 10px; } #hotbar .bar-controls { flex: 0 0 32px; margin: 0 2px; text-align: center; color: var(--color-text-light-heading); background: rgba(0, 0, 0, 0.6); border: 1px solid var(--color-border-dark); box-shadow: 0 0 3px #444 inset; border-radius: 3px; } #hotbar .bar-controls a { display: block; } #hotbar .bar-controls a.page-control { font-size: var(--font-size-16); line-height: 1; flex: none; } #hotbar .bar-controls span.page-number { display: block; font-size: var(--font-size-16); line-height: 1; } #hotbar #action-bar { flex: 1; height: 100%; pointer-events: all; flex-wrap: nowrap; } #hotbar #action-bar.collapsed { display: none; pointer-events: none; } #hotbar #macro-list { flex-wrap: nowrap; height: 100%; list-style: none; margin: 0 2px; padding: 0; border: 1px solid var(--color-border-dark); border-radius: 3px; display: grid; grid-template-columns: repeat(10, var(--macro-size)); } #hotbar.locked #macro-list { border-color: var(--color-border-highlight); } #hotbar .macro { position: relative; width: var(--macro-size); height: var(--macro-size); border: 1px solid var(--color-border-dark); border-radius: 2px; background: rgba(0, 0, 0, 0.5); box-shadow: 0 0 5px var(--color-shadow-dark) inset; cursor: pointer; } #hotbar .macro.inactive { box-shadow: 0 0 5px #444 inset; } #hotbar .macro:hover { box-shadow: 0 0 10px var(--color-shadow-highlight) inset; } #hotbar .macro.active:hover { border: 1px solid var(--color-border-highlight-alt); } #hotbar .macro .macro-key { position: absolute; top: 2px; right: 2px; padding: 1px 3px; background: #111; color: var(--color-text-light-highlight); font-weight: bold; pointer-events: none; } #hotbar .macro .macro-icon { object-fit: cover; object-position: 50% 0; border: none; height: calc(var(--macro-size) - 2px); width: calc(var(--macro-size) - 2px); display: block; } #hotbar #hotbar-directory-controls, #hotbar #hotbar-page-controls { pointer-events: all; } #hotbar #hotbar-directory-controls a { line-height: 24px; } #hotbar #hotbar-page-controls { justify-content: space-between; } #hotbar #hotbar-lock { justify-content: center; } #hotbar #hotbar-lock a.page-control { font-size: var(--font-size-14); } @media (max-width: 1120px) { #hotbar { width: calc(var(--hotbar-width) / 2); height: calc(var(--hotbar-height) * 2); } #hotbar #macro-list { grid-template-columns: repeat(5, 50px); } #hotbar .bar-controls { justify-content: space-between; } #hotbar .bar-controls a { flex: 0; } #hotbar .bar-controls span.page-number { line-height: unset; display: flex; align-items: center; justify-content: center; flex: 1; } } /* ---------------------------------------- */ /* Watermark */ /* ---------------------------------------- */ .watermark { width: 100%; z-index: var(--z-index-ui); position: fixed; bottom: 10px; height: 24px; font-size: 1.5em; pointer-events: none; text-align: center; color: var(--color-text-light-5); text-shadow: 1px 1px 4px var(--color-shadow-dark); } /* ---------------------------------------- */ /* PRIMARY SIDEBAR */ /* ---------------------------------------- */ /* The Sidebar Container */ #sidebar { pointer-events: all; border: 1px solid var(--color-border-dark-1); } #sidebar.collapsed { height: auto; } /* The Sidebar Tabs Container */ #sidebar-tabs { --sidebar-tab-height: 32px; --sidebar-tab-width: 24px; flex: 0 0 var(--sidebar-tab-height); box-sizing: border-box; margin: 0 0 5px; border-bottom: 1px solid var(--color-border-highlight); box-shadow: 0 0 10px var(--color-shadow-primary); font-size: 14px; } #sidebar-tabs > .item { width: 100%; position: relative; flex: 0 0 var(--sidebar-tab-width); line-height: var(--sidebar-tab-height); border: 1px solid transparent; border-radius: 5px 5px 0 0; } #sidebar-tabs > .item.active { color: var(--color-text-light-highlight); border: 1px solid var(--color-border-highlight-alt); border-bottom: none; box-shadow: 0 0 6px inset var(--color-shadow-highlight); } #sidebar-tabs > .item i[class^=fa] { margin-right: 0; } #sidebar-tabs > .collapse { width: 100%; position: relative; flex: 0 0 var(--sidebar-tab-width); line-height: var(--sidebar-tab-height); color: var(--color-text-light-primary); text-align: center; } /* A Directory Listing */ .directory { overflow: hidden; } .directory .directory-header { flex: none; line-height: var(--sidebar-header-height); text-align: center; margin: 0 0 3px; } .directory .directory-header .header-filter { flex: 1; justify-content: center; align-items: center; } .directory .directory-header .header-filter > * { flex: 0 0 24px; } .directory .directory-header .header-search { flex: 1; justify-content: center; align-items: center; } .directory .directory-header .header-search > * { flex: 0 0 24px; } .directory .directory-header .header-search input { flex: 1; margin: 0 3px; background: rgba(255, 255, 245, 0.8); } .directory .directory-list { flex: 1; list-style: none; margin: 0; padding: 0; overflow-y: auto; } .directory .directory-list > .directory-item:last-child { border-bottom: 1px solid var(--color-border-dark-1); } .directory .directory-item { position: relative; line-height: var(--sidebar-item-height); border-top: 1px solid var(--color-border-dark-1); } .directory .directory-item h3, .directory .directory-item h4 { white-space: nowrap; overflow: hidden; } .directory .directory-item .document-name { margin: 0 0 0 8px; } .directory .directory-item img { flex: 0 0 var(--sidebar-item-height); height: var(--sidebar-item-height); width: var(--sidebar-item-height); object-fit: cover; object-position: 50% 0; border: none; } .directory .directory-item img[data-src] { visibility: hidden; } .directory .directory-item.folder .directory-item { border-left: 1px solid var(--color-border-dark-1); } .directory .directory-item:is(.context, .active)::after { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; pointer-events: none; background: transparent; border: 1px solid var(--color-border-highlight); } .directory .action-buttons button { height: 28px; line-height: 26px; margin: 4px; min-width: max-content; white-space: nowrap; } .directory .directory-footer { flex: none; } .directory .directory-footer:not(:empty) { padding: 0.5rem; font-size: var(--font-size-14); background: rgba(0, 0, 0, 0.1); } .directory .directory-footer.warning i { margin-right: 4px; } #sidebar.collapsed #sidebar-tabs { flex-direction: column; border-bottom: none; box-shadow: none; } #sidebar.collapsed #sidebar-tabs > .item.active { border-bottom: 1px solid var(--color-border-highlight-alt); border-radius: 5px; } #sidebar.collapsed .sidebar-tab { display: none; } /* ----------------------------------------- */ /* Folders and Sub-folders /* ----------------------------------------- */ li.folder > .folder-header { padding: 6px; line-height: 24px; background: rgba(255, 255, 255, 0.2); text-shadow: 0px 0px 3px var(--color-shadow-dark); } li.folder > .folder-header h3 { margin: 0; color: var(--color-text-light-highlight); font-size: var(--font-size-16); line-height: 24px; } li.folder > .folder-header h3 > i { margin-right: 10px; } li.folder > .folder-header .create-button { position: relative; flex: 0 0 20px; margin-left: 3px; text-align: center; } li.folder > .folder-header .create-button.create-folder { font-size: 120%; } li.folder > .folder-header .create-button .fa-plus { position: absolute; top: -2px; right: -2px; font-size: 0.5rem; background: black; color: var(--color-text-light-highlight); padding: 1px; border-radius: 4px; } li.folder > .folder-header .create-button:hover .fa-plus { color: var(--color-text-hyperlink); } li.folder.collapsed .subdirectory { display: none; } li.folder.collapsed > .folder-header { background: rgba(0, 0, 0, 0.5); } li.folder.collapsed > .folder-header h3 > i:before { content: "\f07b"; } li.folder.collapsed > .folder-header .create-folder { display: none; } li.folder.droptarget > header h3 { font-size: 1.2em; } li.folder.droptarget > header h3 i { text-shadow: 0 0 4px var(--color-shadow-primary); transform: scale(1.2); transform-origin: left; margin-right: 12px; } /** * Subdirectory Styles */ .subdirectory { list-style: none; margin: 0; padding: 0; border-left: 6px solid rgba(255, 255, 255, 0.2); } .subdirectory:empty { border: none; } /* ----------------------------------------- */ /* 1.0 - Chat Panel /* ----------------------------------------- */ .notification-pip { color: var(--color-text-hyperlink); text-shadow: 1px 1px 3px var(--color-shadow-dark); position: absolute; top: -1px; right: -2px; } .notification-pip.update { position: relative; padding-right: 2px; } #chat-notification { display: none; } section.chat-sidebar { position: relative; } section.chat-sidebar .jump-to-bottom { flex-grow: 0; position: relative; } section.chat-sidebar .jump-to-bottom.hidden { display: none; } section.chat-sidebar .jump-to-bottom > a { background-color: rgba(0, 0, 0, 0.5); position: absolute; bottom: 0; padding: 5px; width: var(--sidebar-width); text-align: center; } #chat-controls { flex: 0 0 28px; margin: 0 6px; align-content: center; } #chat-controls .chat-control-icon { flex: 0; } #chat-controls .roll-type-select { width: 200px; height: 24px; margin: 0 6px; background: rgba(255, 255, 245, 0.8); } #chat-controls i.fas { font-size: var(--font-size-20); line-height: 28px; } #chat-controls .control-buttons { flex: 0 0 48px; } #chat-controls .control-buttons a { display: inline-block; width: 20px; text-align: center; } /* Chat Log Container */ #chat-log { flex: 1; height: calc(100% - 130px); margin: 0; padding: 0; overflow-y: auto; overflow-x: hidden; list-style: none; } /* Single Chat Message */ .chat-message { margin: 3px; padding: 5px; font-size: var(--font-size-14); color: var(--color-text-dark-primary); background: url(../ui/parchment.jpg) repeat; border: 2px solid #6f6c66; border-radius: 5px; } .chat-message .message-header { line-height: 20px; color: var(--color-text-dark-secondary); } .chat-message .message-header .message-sender { flex: 3; margin: 0; white-space: nowrap; } .chat-message .message-header .message-metadata { flex: 2; text-align: right; font-size: var(--font-size-12); } .chat-message .message-header .flavor-text, .chat-message .message-header .whisper-to { flex: 0 0 100%; font-size: var(--font-size-12); } .chat-message .message-content { -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; word-break: break-word; } .chat-message.emote { background: #f3edde; border: 2px solid #887c5d; } .chat-message.whisper { background: #e8e8ef; border: 2px solid #545469; } .chat-message.blind { background: #f5eaf5; border: 2px solid #6b476b; } .chat-message .cards-notification { align-items: center; } .chat-message .cards-notification > .icon { flex: 0 0 32px; height: 32px; margin-right: 8px; } .chat-message .cards-notification > p { margin: 0; } /* New Chat Message Form */ #chat-form { height: 100px; flex: 0 0 100px; margin: 0 6px 6px; } #chat-form textarea { width: 100%; height: 100%; resize: none; font-family: var(--font-primary); background: url(../ui/parchment.jpg) repeat; } /* Roll Table Results */ .chat-message .table-draw .table-description { border-top: 1px solid var(--color-border-light-primary); color: var(--color-text-dark-secondary); font-size: var(--font-size-12); padding: 5px 0; } .chat-message .table-draw .table-results { list-style: none; margin: 5px 0 0; padding: 0; } .chat-message .table-draw .table-results .table-result { display: flex; align-items: center; border-bottom: 1px solid var(--color-border-light-primary); padding: 3px 0; } .chat-message .table-draw .table-results .table-result img.result-image { flex: 0 0 32px; width: 32px; height: 32px; margin-right: 8px; object-fit: cover; } .chat-message .table-draw .table-results .table-result .result-text { margin: 0; padding: 0; line-height: 16px; } .chat-message .table-draw .table-results .table-result:last-child { border-bottom: none; } /** Card Draws */ .chat-message .card-draw { align-items: center; } .chat-message .card-draw .card-face { height: 48px; flex: 0; margin-right: 8px; } .chat-message .card-draw .card-name { line-height: 48px; margin: 0; font-weight: bold; } /* Popped-out Message */ .chat-popout .window-content { padding: 1px; } /* ----------------------------------------- */ /* Combat Tracker */ /* ----------------------------------------- */ .combat-sidebar .combat-tracker-header { --control-width: 24px; flex: 0 0 calc(var(--sidebar-header-height) * 2px); line-height: var(--sidebar-header-height); font-size: var(--font-size-20); text-align: center; border-bottom: 2px groove var(--color-border-dark-4); } .combat-sidebar .combat-tracker-header a.combat-button { font-size: var(--font-size-14); flex: 0 0 var(--control-width); color: var(--color-text-light-6); } .combat-sidebar .combat-tracker-header a.combat-button.combat-cycle { font-size: var(--font-size-24); } .combat-sidebar .combat-tracker-header a.combat-button[disabled] { visibility: hidden; } .combat-sidebar .combat-tracker-header nav.encounters h4 { flex: 1; margin: 0; font-size: var(--font-size-14); color: var(--color-text-light-5); text-align: center; } .combat-sidebar .combat-tracker-header div.encounter-controls h3 { flex: 2; margin: 0; font-size: var(--font-size-16); text-align: center; } .combat-sidebar .combat-tracker-header div.encounter-controls .encounter-title { margin-left: var(--control-width); } .combat-sidebar #combat-tracker { height: calc(100% - (var(--sidebar-header-height) * 3px - 2px)); padding: 1px 0; } .combat-sidebar #combat-controls { margin: 0; border-top: 2px groove var(--color-border-dark-4); padding-top: 4px; } .combat-sidebar #combat-controls a { flex: 1; font-size: var(--font-size-20); text-align: center; line-height: var(--sidebar-header-height); } .combat-sidebar #combat-controls a.center { flex: 3; } .combat-sidebar li.combatant .token-image { margin: 0; } .combat-sidebar li.combatant .token-name { flex: 1; overflow: hidden; margin: 0 5px; text-shadow: 1px 1px 4px var(--color-shadow-dark); } .combat-sidebar li.combatant .token-name h4 { flex: 0 0 24px; line-height: 28px; margin: 0 0 2px; } .combat-sidebar li.combatant .token-name .combatant-controls { flex: 0 0 20px; font-size: var(--font-size-14); line-height: 20px; } .combat-sidebar li.combatant .token-name .combatant-control { flex: 0 0 20px; height: 20px; float: left; color: var(--color-text-dark-5); } .combat-sidebar li.combatant .token-name .combatant-control.active { color: var(--color-text-light-1); } .combat-sidebar li.combatant .token-name .token-effects { height: 20px; overflow: hidden; } .combat-sidebar li.combatant .token-name img.token-effect { width: 16px; height: 16px; margin: 1px 0; border: none; border-radius: 0; } .combat-sidebar li.combatant .token-resource { flex: 0 0 32px; color: var(--color-text-light-4); text-align: center; border-right: 1px solid var(--color-border-dark-2); } .combat-sidebar li.combatant .token-initiative { flex: 0 0 48px; text-align: center; } .combat-sidebar li.combatant .token-initiative .initiative { font-size: var(--font-size-14); text-shadow: 1px 1px 4px var(--color-shadow-dark); } .combat-sidebar li.combatant .roll { display: block; width: 40px; height: var(--sidebar-item-height); background: url(../icons/svg/d20.svg) no-repeat 50% 50%; background-size: 32px; margin: 0 0.5em; } .combat-sidebar li.combatant .roll:hover { background-image: url(../icons/svg/d20-highlight.svg); } .combat-sidebar li.combatant.hover, .combat-sidebar li.combatant:hover { background: rgba(255, 255, 255, 0.08); } .combat-sidebar li.combatant.active { background: rgba(255, 255, 255, 0.1); } .combat-sidebar li.combatant.active .initiative { font-weight: bold; } .combat-sidebar li.combatant.hidden { color: var(--color-text-light-7); } .combat-sidebar li.combatant.hidden img { opacity: 0.3; } .combat-sidebar li.combatant.hidden.flexrow { display: flex; } .combat-sidebar li.combatant.defeated { color: #b32019; } .combat-sidebar li.combatant.defeated img { opacity: 0.3; transform: scale(0.75); } /* ----------------------------------------- */ /* Scenes Directory */ /* ----------------------------------------- */ .scenes-sidebar { --sidebar-scene-height: 100px; } .scenes-sidebar .scene { position: relative; height: var(--sidebar-scene-height); line-height: var(--sidebar-scene-height); background-position: 50% 50%; background-size: cover; background-repeat: no-repeat; box-shadow: 0 0 20px var(--color-shadow-dark) inset; } .scenes-sidebar .scene.context, .scenes-sidebar .scene.active { margin-top: 0; } .scenes-sidebar .scene h3 { margin: 0; line-height: calc(var(--sidebar-scene-height) - 10px); text-align: center; font-size: 1.5em; font-weight: normal; text-shadow: 1px 1px 3px var(--color-shadow-dark); } .scenes-sidebar .subdirectory { border-bottom: none; } /* ----------------------------------------- */ /* Journal Directory */ /* ----------------------------------------- */ .journal-sidebar .document { line-height: 32px; } /* ----------------------------------------- */ /* Playlists Directory */ /* ----------------------------------------- */ .playlists-sidebar { /** Single Playlist */ /** Single Sound */ /** Single Sound Controls */ /** Global Audio Controls */ } .playlists-sidebar h4 { height: 20px; margin: 0; text-align: left; word-break: break-all; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; } .playlists-sidebar .playlist { padding: 8px; line-height: 20px; } .playlists-sidebar .playlist .playlist-header { flex: 0 0 100%; justify-content: space-between; } .playlists-sidebar .playlist .playlist-header .playlist-name { text-decoration: underline; } .playlists-sidebar .playlist-sounds { flex: 0 0 100%; list-style: none; margin: 0; padding: 0; width: 100%; } .playlists-sidebar .collapsed .playlist-sounds { display: none; } .playlists-sidebar li.sound { margin: 2px 0; padding: 0; align-items: center; } .playlists-sidebar li.sound .sound-playback { flex: 0 0 100%; } .playlists-sidebar li.sound .sound-playback .sound-timer { flex: 0 auto; min-width: 60px; margin-right: 5px; color: var(--color-text-light-primary); font-size: var(--font-size-11); } .playlists-sidebar .sound-controls { flex: 0 0 32px; margin-left: 5px; justify-content: flex-end; align-items: center; } .playlists-sidebar .playlist-header .sound-controls { flex: 0 0 64px; } .playlists-sidebar .sound-control { display: grid; place-content: center; flex: 0 0 16px; text-align: center; color: var(--color-text-light-3); font-size: var(--font-size-11); } .playlists-sidebar .sound-control.inactive { color: var(--color-text-dark-6); } .playlists-sidebar .sound-control.inactive:hover { text-shadow: none; } .playlists-sidebar .sound-control.disabled { color: var(--color-text-dark-4); cursor: initial; } .playlists-sidebar .sound-control.disabled:hover { text-shadow: none; } .playlists-sidebar .sound-control[data-action="sound-stop"] { color: var(--color-text-hyperlink); } .playlists-sidebar .sound-control[data-action="playlist-stop"] { color: var(--color-text-hyperlink); } .playlists-sidebar .global-control { flex: 0; line-height: 20px; text-align: left; } .playlists-sidebar .global-control .playlist-header { padding: 6px; background: rgba(0, 0, 0, 0.5); border-top: 1px solid var(--color-border-dark); border-bottom: 1px solid var(--color-border-dark); justify-content: space-between; } .playlists-sidebar .global-control .playlist-header h4 { text-decoration: underline; } .playlists-sidebar .global-control .playlist-header h4 i.fa { color: var(--color-text-light-6); margin-left: 5px; } .playlists-sidebar .global-control .playlist-sounds { padding: 6px; } .playlists-sidebar .global-control .playlist-sounds input[type="range"] { flex: 2; margin: 0 3px; } .playlists-sidebar .global-control .pin { flex: none; margin-right: 4px; } .playlists-sidebar #global-volume .playlist-header h4 { cursor: pointer; } .playlists-sidebar #global-volume li.sound { margin: 0; } .playlists-sidebar #currently-playing { margin-top: 1px; } .playlists-sidebar i.volume-icon { flex: 0; line-height: 20px; color: var(--color-text-light-primary); } /* ----------------------------------------- */ /* Compendium Packs */ /* ----------------------------------------- */ /** * Compendium Packs Sidebar */ .compendium-sidebar .dropdown-menu { position: absolute; background: rgba(0, 0, 0, 0.7); width: 140px; border-radius: 5px; z-index: 2; } .compendium-sidebar .dropdown-menu .dropdown-list { padding: 10px; text-align: left; } .compendium-sidebar .dropdown-menu .dropdown-list .dropdown-item { padding: 5px; cursor: pointer; color: var(--color-text-light-primary); text-shadow: 1px 1px 3px var(--color-shadow-dark); } .compendium-sidebar .dropdown-menu .dropdown-list .dropdown-item.active, .compendium-sidebar .dropdown-menu .dropdown-list .dropdown-item:hover { text-shadow: 0 0 8px var(--color-shadow-primary); } .compendium-sidebar .directory-list { overflow: hidden auto; } .compendium-sidebar .directory-item.compendium { height: 70px; justify-content: center; align-items: center; cursor: pointer; } .compendium-sidebar .directory-item.compendium .compendium-banner { position: absolute; width: 100%; height: 100%; object-fit: cover; object-position: center; opacity: 0.6; transition: 0.5s; } .compendium-sidebar .directory-item.compendium .compendium-name { flex: none; width: auto; max-width: 80%; margin: 0 1rem; padding: 0 0.5rem; font-size: var(--font-size-16); line-height: 1.5rem; text-align: center; background: rgba(0, 0, 0, 0.9); border: 1px solid var(--color-border-dark); border-radius: 5px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; z-index: 1; } .compendium-sidebar .directory-item.compendium .compendium-name > i { margin-right: 0.25rem; } .compendium-sidebar .directory-item.compendium .compendium-footer { position: absolute; width: 100%; line-height: 1rem; left: 1px; bottom: 1px; } .compendium-sidebar .directory-item.compendium .compendium-footer .source { display: inline-block; font-size: var(--font-size-12); padding: 1px 0.5rem 0 0.25rem; border-radius: 0 3px 0 0; background: rgba(0, 0, 0, 0.6); } .compendium-sidebar .directory-item.compendium .status-icons { position: absolute; right: 0; top: 0; padding: 4px; gap: 4px; font-size: var(--font-size-12); line-height: 1rem; text-align: right; text-shadow: 0 0 4px #000; } .compendium-sidebar .directory-item.compendium.hidden { display: none; } .compendium-sidebar .directory-item.compendium.locked { color: var(--color-text-light-secondary); } .compendium-sidebar .directory-item.compendium.locked .compendium-name { background: rgba(0, 0, 0, 0.5); } .compendium-sidebar .directory-item.compendium.locked .compendium-banner { opacity: 0.25; } .compendium-sidebar .directory-item.compendium:hover { color: var(--color-text-light-highlight); } .compendium-sidebar .directory-item.compendium:hover .compendium-name { text-shadow: 0 0 8px var(--color-shadow-primary); background: rgba(0, 0, 0, 0.9); } .compendium-sidebar .directory-item.compendium:hover .compendium-banner { opacity: 1; } /** * Single Compendium Pack */ .compendium.directory .directory-header { border-bottom: none; } .compendium.directory .directory-header .header-banner { display: flex; justify-content: center; align-items: center; height: 84px; flex: 0 0 84px; border-radius: 2px; background-size: cover; } .compendium.directory .directory-header .compendium-name { text-align: center; z-index: 1; margin: 0 1rem; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; background: rgba(0, 0, 0, 0.7); border: 1px solid var(--color-border-dark); border-radius: 5px; padding: 0 0.5rem; } .compendium.directory .directory-header .compendium-name > i { margin-right: 0.25rem; } .compendium.directory .directory-list .directory-item { line-height: 48px; } /* ----------------------------------------- */ /* Settings */ /* ----------------------------------------- */ .settings-sidebar { overflow-y: auto; } .settings-sidebar #game-details { list-style: none; padding: 3px 8px; margin: 0; } .settings-sidebar #game-details span { float: right; } .settings-sidebar #game-details .system-title { flex: 4; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .settings-sidebar #game-details .system-info { flex: 1; text-align: right; } .settings-sidebar div { margin: 0 8px; } .settings-sidebar h2 { margin: 6px 0; padding: 3px 8px; border-top: 1px solid var(--color-border-dark-4); border-bottom: 1px solid var(--color-border-dark-4); background: rgba(255, 255, 255, 0.1); font-size: var(--font-size-16); } .settings-sidebar button { margin: 6px 0; } /* ----------------------------------------- */ /* Permissions Config */ /* ----------------------------------------- */ #permissions-config header.table-header { background: var(--color-text-dark-inactive); padding: 0.5rem; color: var(--color-text-light-highlight); border: 1px solid var(--color-border-dark-4); text-align: center; font-weight: bold; text-shadow: 1px 1px var(--color-shadow-dark); } #permissions-config ul.permissions-list { list-style: none; margin: 0; padding: 0; max-height: 400px; overflow: hidden auto; } #permissions-config li.permission { padding: 0.25rem 0.5rem; border-bottom: 1px solid var(--color-border-dark-4); } #permissions-config li.permission .form-fields { justify-content: space-around; } #permissions-config .index { flex: 0 0 200px; text-align: left; font-weight: bold; } .theme-dark #permissions-config header.table-header { background-color: var(--color-cool-4); border-color: var(--color-cool-4); } /* ----------------------------------------- */ /* Sidebar Pop-out */ /* ----------------------------------------- */ .app.sidebar-popout { min-height: 33vh; max-height: 90vh; border: 1px solid var(--color-border-dark-1); backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); } .app.sidebar-popout .window-content { background: none; color: var(--color-border-light-1); padding: 0; } /* ----------------------------------------- */ /* Module Management */ /* ----------------------------------------- */ .package-list { list-style: none; margin: 0; padding: 0 5px 0 0; overflow: hidden auto; } .package-list .package { padding: 4px 0; border-top: none; border-bottom: 1px solid var(--color-border-light-primary); } .package-list .package:last-child { border-bottom: none; } .package-list .package.hidden { display: none; } .package-list .package .package-overview { flex: 0 0 100%; justify-content: flex-end; align-items: center; } .package-list .package .package-overview .package-title { flex: 1; text-decoration: underline; font-size: var(--font-size-14); margin: 0; color: var(--color-text-light-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .package-list .package .package-description { flex: 0 0 100%; margin: 3px 0; color: var(--color-text-light-primary); font-size: var(--font-size-12); } .package-list .package .package-description > * { margin: 0; } .package-list .package .package-description.hidden { display: none; } .package-list .package .package-metadata, .package-list .package .package-controls { margin: 0; flex: 0 0 50%; } .package-list .package .package-metadata ul, .package-list .package .package-controls ul { margin: 0; } .package-list .package .package-metadata { font-size: var(--font-size-12); padding: 0; color: var(--color-text-light-primary); } .package-list .package .package-controls { padding: 5px 0; text-align: right; } .package-list .package .package-controls button { width: 110px; height: 25px; font-size: var(--font-size-12); line-height: 24px; border: 1px solid var(--color-text-dark-1); } .package-list .package .package-controls buttonnot[hidden] { display: inline; } .package-list .package .package-url { margin: 0.25em 0 0; color: var(--color-text-light-3); } .package-list .package .package-footer { height: 32px; padding: 5px 0 0; } .package-list .package .tag { flex: none; min-width: 22px; text-align: center; height: 20px; border: 1px solid var(--color-border-dark); border-radius: 3px; padding: 0 3px; margin: 0 0 0 2px; font-size: var(--font-size-11); line-height: 18px; text-decoration: none; background: #333; color: var(--color-text-light-highlight); } .package-list .package .tag > i { line-height: 18px; } .package-list .package .tag.javascript { background: #803c62; } .package-list .package .tag.css { background: #1e5c6f; } .package-list .package .tag.compendium { background: #3b3a80; } .package-list .package .tag.unavailable { background: #750000; } .package-list .package .tag.unknown { background: #b07900; min-width: 50px; } .package-list .package .tag.languages { background: #224224; } .package-list .package .tag.version { min-width: 50px; } .package-list .package .tag.requires { position: relative; top: -2px; } .package-list .package .tag.warning { background: var(--color-level-warning); } .package-list .package .tag.error { background: var(--color-level-error); } .package-list .package .tag.verified { background: var(--color-level-success); } .package-list .package .tag.success { background: var(--color-level-success); } #module-management .expand { flex: 0 0 32px; height: 30px; margin: -6px 0 0 6px; padding: 0; } #module-management .package-list { margin-top: 5px; border-top: 1px solid var(--color-border-light-tertiary); height: 600px; } #module-management .package-list .package-metadata { flex: 0 0 100%; } #module-management .package-list .package-title { font-weight: bold; display: flex; flex-direction: row; margin: 0; height: unset; text-decoration: unset; gap: 4px; align-items: center; } #module-management .package-list .package-title > input { flex: none; position: unset; } #module-management .package-list .package-title .title-group { flex: 1; display: flex; flex-direction: column; } #module-management .package-list .package-title .title-group .title, #module-management .package-list .package-title .title-group .subtitle { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } #module-management .package-list .package-title .title-group .title { text-decoration: underline; } #module-management .package-list .package-title .title-group .subtitle { font-size: var(--font-size-12); line-height: var(--line-height-16); color: var(--color-text-dark-secondary); font-weight: normal; } #module-management .package-list .package-title, #module-management .package-list .package-metadata, #module-management .package-list .package-description { color: var(--color-text-dark-primary); } /* ---------------------------------------- */ /* Invitation Links */ /* ---------------------------------------- */ #invitation-links .connection.open { color: green; } #invitation-links .connection.unknown { color: rgba(214, 150, 0, 0.6); } #invitation-links .connection.closed { color: rgba(105, 0, 8, 0.6); } #invitation-links .sync { padding-left: 5px; } #invitation-links .invite-link[name=remote] { flex: 2.65; } #invitation-links .show-hide { padding-left: 5px; font-size: 130%; flex-grow: 0 !important; place-content: end; justify-content: end; width: 27px; } /* ---------------------------------------- */ /* Font Configuration */ /* ---------------------------------------- */ #font-config .font-preview { text-align: center; padding: 16px; font-size: var(--font-size-28); } #font-config .custom-font { display: flex; align-items: center; justify-content: space-between; margin: 16px; padding: 16px; border: 2px groove var(--color-border-light-highlight); cursor: pointer; border-radius: 4px; font-size: var(--font-size-16); } #font-config .custom-font.selected { border: 2px solid var(--color-border-highlight); } /* ---------------------------------------- */ /* Compendium Art */ /* ---------------------------------------- */ #compendium-art-config .priority-list { counter-reset: priorities; list-style: none; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; } #compendium-art-config .priority-list li { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; } #compendium-art-config .priority-list li::before { counter-increment: priorities; content: counter(priorities); width: 2em; text-align: center; font-size: var(--font-size-16); } #compendium-art-config .priority-list li > label { flex: 1; } #compendium-art-config .priority-list li > .form-fields { width: unset; } #compendium-art-config .priority-list li > .form-fields label { display: flex; align-items: center; } #compendium-art-config .priority-adjust { display: flex; } #compendium-art-config .priority-adjust button { width: 24px; height: 24px; font-size: var(--font-size-11); display: grid; place-content: center; } #compendium-art-config .priority-adjust button > i { margin: 0; } /* ----------------------------------------- */ /* General Sheet Styling /* ----------------------------------------- */ .sheet { display: flex; flex-direction: column; flex-wrap: nowrap; justify-content: flex-start; } .sheet > * { flex: 1; } .sheet > .flex0 { display: block; flex: 0; } .sheet > .flex1 { flex: 1; } .sheet > .flex2 { flex: 2; } .sheet > .flex3 { flex: 3; } .sheet header.sheet-header { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; align-items: center; } .sheet header.sheet-header > * { flex: 1; } .sheet header.sheet-header > .flex0 { display: block; flex: 0; } .sheet header.sheet-header > .flex1 { flex: 1; } .sheet header.sheet-header > .flex2 { flex: 2; } .sheet header.sheet-header > .flex3 { flex: 3; } .sheet header.sheet-header img { flex: 0 0 64px; height: 64px; margin-right: 6px; } .sheet header.sheet-header h1 { flex: 1; margin: 0; border-bottom: none; } .sheet header.sheet-header h1 input { height: 48px; line-height: 48px; margin: 8px 2%; width: 96%; } .sheet nav.sheet-tabs { margin: 4px 0; border-top: 1px solid var(--color-border-light-primary); border-bottom: 1px solid var(--color-border-light-primary); } .sheet nav.sheet-tabs > [data-tab] { padding: 8px 12px; } .sheet nav.sheet-tabs > [data-tab] i { margin-right: 2px; } .sheet footer.sheet-footer { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; flex: 0 0 32px; line-height: 32px; } .sheet footer.sheet-footer > * { flex: 1; } .sheet footer.sheet-footer > .flex0 { display: block; flex: 0; } .sheet footer.sheet-footer > .flex1 { flex: 1; } .sheet footer.sheet-footer > .flex2 { flex: 2; } .sheet footer.sheet-footer > .flex3 { flex: 3; } .sheet .editor-content { height: 100%; overflow-y: auto; word-break: break-word; } .sheet img[data-edit] { cursor: pointer; } /* ----------------------------------------- */ /* Token Sheet /* ----------------------------------------- */ .token-sheet nav.sheet-tabs.secondary-tabs { margin-top: -4px; border-top: none; } .token-sheet .bar-data .sep { flex: 0 0 16px; text-align: center; font-size: 1.5em; line-height: 24px; } .token-sheet input[name="sight.range"]::placeholder, .token-sheet .detection-mode-range > input::placeholder { font-size: var(--font-size-12); } .token-sheet .detection-modes { margin: 1rem 0; } .token-sheet .detection-modes header { font-weight: bold; padding: 0.25rem 0; } .token-sheet .detection-modes .detection-mode { display: flex; flex-wrap: nowrap; text-align: left; margin: 0 0 0.5rem; padding: 0; border: none; } .token-sheet .detection-modes .detection-mode > * { margin-right: 4px; flex: 1; } .token-sheet .detection-modes .detection-mode-id select { width: 100%; } .token-sheet .detection-modes .detection-mode-enabled { flex: 0 0 64px; } .token-sheet .detection-modes .detection-mode-controls { flex: 0 0 32px; margin-right: 0; display: flex; align-items: center; justify-content: flex-end; } .token-sheet .detection-modes .detection-mode-controls .action-button { width: 32px; text-align: center; } /* ----------------------------------------- */ /* Scene Notes /* ----------------------------------------- */ .window-app.scene-notes .window-content { padding: 0 8px; } .window-app.scene-notes form { height: 100%; overflow: hidden; } .window-app.scene-notes .editor { height: 100%; } .window-app.scene-notes .editor-content { height: 100%; overflow-y: auto; } /* ---------------------------------------- */ /* Roll Table Sheet */ /* ---------------------------------------- */ .roll-table-config h1.name input { width: 100%; height: 48px; margin: 8px 0; } .roll-table-config .editor { height: 135px; } .roll-table-config textarea { resize: none; min-height: 44px; } .roll-table-config .results { flex: 0 0 100%; } .roll-table-config table.table-results { margin: 0; padding: 0; } .roll-table-config table.table-results > thead { text-align: left; } .roll-table-config table.table-results > tbody { max-height: 600px; overflow-y: auto; display: block; } .roll-table-config table.table-results .table-result { padding: 2px 5px 2px 0px; border-top: 1px solid transparent; border-bottom: 1px solid transparent; width: 100%; } .roll-table-config table.table-results .table-result input[type="text"] { width: 100%; height: 28px; } .roll-table-config table.table-results .table-result > td, .roll-table-config table.table-results .table-result th { line-height: 36px; margin-right: 5px; } .roll-table-config table.table-results .table-result .result-image { flex: 0 0 36px; width: 36px; height: 36px; text-align: center; margin: 0; } .roll-table-config table.table-results .table-result .result-image img { border: none; object-fit: cover; object-position: 50% 0; } .roll-table-config table.table-results .table-result .result-type { flex: 0 0 110px; } .roll-table-config table.table-results .table-result .result-details { flex: 1; } .roll-table-config table.table-results .table-result .result-details select { width: 40%; } .roll-table-config table.table-results .table-result .result-details .result-target { width: 58%; margin-left: 3px; } .roll-table-config table.table-results .table-result .result-weight { flex: 0 0 50px; text-align: center; } .roll-table-config table.table-results .table-result .result-range { flex: 0 0 92px; text-align: center; } .roll-table-config table.table-results .table-result .result-range input { width: 36px; } .roll-table-config table.table-results .table-result .result-controls { flex: none; margin: 0; text-align: center; } .roll-table-config table.table-results .table-result .result-controls a { width: 20px; } .roll-table-config table.table-results .table-result .result-controls .lock-result { color: var(--color-text-light-primary); } .roll-table-config table.table-results .table-result.roulette { background: rgba(0, 0, 0, 0.25); border-top: 1px solid var(--color-border-dark); border-bottom: 1px solid var(--color-border-dark); } .roll-table-config table.table-results .table-result.drawn { background: rgba(0, 0, 0, 0.15); } .roll-table-config table.table-results .table-result.drawn .lock-result { color: var(--color-text-dark-1); } .roll-table-config table.table-results .table-header { background: rgba(0, 0, 0, 0.05); border: 1px solid var(--color-border-light-tertiary); line-height: 24px; font-weight: bold; } .roll-table-config table.table-results .table-header .result-controls { flex: 0 0 44px; } .scene-sheet .form-fields label.grid-label { flex: 1; text-align: right; font-size: var(--font-size-13); } .scene-sheet .capture-position > i, .scene-sheet .grid-config > i { margin: 0; } .scene-sheet button.dimension-link { margin-left: 20px; } .scene-sheet nav.sheet-tabs.secondary-tabs { margin-top: -4px; border-top: none; } /* --------------------------------------- */ /* Macro Sheet */ /* --------------------------------------- */ .macro-sheet { min-width: 360px; min-height: 320px; } .macro-sheet form > * { flex: 0; } .macro-sheet .form-group.command { flex: 1; } .macro-sheet .form-group.command label { height: 24px; } .macro-sheet .form-group.command textarea { height: calc(100% - 24px); resize: none; } /* --------------------------------------- */ /* Active Effects */ /* --------------------------------------- */ .active-effect-sheet .editor { height: 135px; } .active-effect-sheet .changes-list { list-style: none; margin: 0; padding: 0; } .active-effect-sheet .effect-change { align-items: center; padding: 3px 1px; border-bottom: 1px solid var(--color-border-light-primary); } .active-effect-sheet .effect-change:last-child { border-bottom: none; } .active-effect-sheet .effect-change .key { flex: 2; } .active-effect-sheet .effect-change .mode, .active-effect-sheet .effect-change .value { padding: 0 2px; } .active-effect-sheet .effect-change .mode select { width: 100%; } .active-effect-sheet .effects-header { height: 28px; background: rgba(0, 0, 0, 0.1); border: 1px solid var(--color-border-light-tertiary); font-weight: bold; } .active-effect-sheet .effects-header .key { padding-left: 4px; } .active-effect-sheet .effect-controls { flex: 0 0 24px; text-align: center; } /* ----------------------------------------- */ /* User Config */ /* Compatible with Theme v2 */ /* ----------------------------------------- */ .user-config .form-group.character img.avatar { flex: 0 0 64px; height: 64px; border: none; object-fit: contain; } .user-config .form-group.character button[data-action="releaseCharacter"] { flex: 0; } /* ----------------------------------------- */ /* Cards Sheet */ /* ----------------------------------------- */ img.card-face { object-fit: cover; border: none; } .cards-config { --card-height: 48px; } .cards-config .cards-header { background: rgba(0, 0, 0, 0.1); border-top: 2px groove #444; border-bottom: 2px groove #444; margin: 4px 0; padding: 3px 0; align-items: center; text-align: left; font-weight: bold; } .cards-config ol.cards { max-height: 600px; overflow-y: auto; list-style: none; margin: 0 0 8px; padding: 0; } .cards-config ol.cards li.card { height: var(--card-height); align-items: center; } .cards-config .card-face { flex: 0 0 calc(var(--card-height) * 2 / 3); height: var(--card-height); width: calc(var(--card-height) * 2 / 3); } .cards-config .card-name { flex: 3; margin: 0 0 0 8px; font-weight: bold; } .cards-config .card-suit, .cards-config .card-value, .cards-config .card-faces { text-align: center; } .cards-config .card-faces { flex: 0 0 48px; } .cards-config .card-drawn { flex: 0 0 64px; text-align: right; } .cards-config .card-controls { flex: 0 0 24px; text-align: right; padding-right: 4px; } .cards-config.deck .card-controls { flex: 0 0 48px; } .cards-config a.card-control { margin: 0 2px; color: var(--color-text-dark-secondary); font-size: var(--font-size-12); text-align: center; } .cards-config a.card-control[disabled] { pointer-events: none; color: var(--color-text-dark-inactive); } .cards-config .sort-mode { flex: 0 0 32px; } .card-config div.face { border-top: 1px solid var(--color-text-light-primary); } .card-config .form-fields button { flex: 0 0 32px; text-align: center; } #document-create .cards-presets.form-group { margin: 8px 0; padding-top: 8px; border-top: 1px solid var(--color-text-light-primary); } /* -------------------------------------------- */ /* Adventure Importer and Exporter */ /* -------------------------------------------- */ .sheet.adventure-importer .window-content { padding: 0.5rem 1rem; } .sheet.adventure-importer .adventure-header h1 { margin: 0; line-height: 50px; text-align: center; font-size: 2.5rem; border: none; } .sheet.adventure-importer figure.adventure-banner { flex: 0 0 100%; margin: 0.5rem 0; } .sheet.adventure-importer figure.adventure-banner img { width: 100%; height: 300px; object-fit: cover; border-radius: 5px; } .sheet.adventure-importer .adventure-overview { flex: 2; margin-left: 0; } .sheet.adventure-importer .adventure-overview p { font-size: var(--font-size-14); line-height: var(--line-height-20); } .sheet.adventure-importer .adventure-contents { margin-left: 1rem; } .sheet.adventure-importer .adventure-contents ul { padding: 0; list-style: none; } .sheet.adventure-importer .adventure-contents ul li i { color: var(--color-text-dark-inactive); margin-right: 0.5rem; } .sheet.adventure-importer .import-controls label.checkbox { font-size: var(--font-size-14); } .sheet.adventure-importer .import-controls label.checkbox > i { color: var(--color-text-dark-inactive); } .sheet.adventure-importer .import-controls label.checkbox > input[type=checkbox] { top: 3px; } .sheet.adventure-importer .adventure-footer { flex: 0 0 100%; margin-top: 0.5rem; } .sheet.adventure-exporter .editor { height: 300px; } .sheet.adventure-exporter .tab.contents { max-height: 60vh; overflow: hidden auto; margin-bottom: 0.5rem; padding-right: 0.5rem; } .sheet.adventure-exporter .tab.contents a.control { width: 32px; font-size: var(--font-size-12); color: var(--color-text-dark-secondary); } .sheet.adventure-exporter .tab.contents .document-type .included-content { overflow: hidden; max-height: 9999px; transition: max-height 1s ease-in-out; } .sheet.adventure-exporter .tab.contents .document-type.collapsed .included-content { max-height: 0; transition: max-height 0.5s cubic-bezier(0, 1, 0, 1); } .sheet.adventure-exporter .tab.contents h3 { position: relative; font-size: var(--font-size-14); text-align: center; line-height: 2rem; border-top: 1px solid var(--color-border-light-tertiary); border-bottom: 1px solid var(--color-border-light-tertiary); } .sheet.adventure-exporter .tab.contents h3 a.control { position: absolute; } .sheet.adventure-exporter .tab.contents h3 a.control.collapse { left: 0; } .sheet.adventure-exporter .tab.contents h3 a.control.clear { right: 0; } .sheet.adventure-exporter .tab.contents h4 { margin: 0 4px 4px 0; display: inline-block; padding: 2px 4px; border: 1px solid var(--color-border-light-tertiary); border-radius: 3px; font-size: var(--font-size-12); } .sheet.adventure-exporter .tab.contents h4.update { background: rgba(255, 255, 255, 0.2); } .sheet.adventure-exporter .tab.contents h4.add { background: rgba(0, 255, 0, 0.1); } .sheet.adventure-exporter .tab.contents h4.missing { background: rgba(252, 173, 12, 0.2); } .sheet.adventure-exporter .tab.contents h4.remove { background: rgba(255, 0, 0, 0.1); } .sheet.adventure-exporter .tab.contents h4 a.control { position: relative; top: 1px; margin-left: 4px; } .sheet.adventure-exporter .tab.contents .node > .node { margin-left: 0.5rem; } .sheet.adventure-exporter .tab.contents ol.document-list { list-style: none; margin: 0 0.5rem 0.5rem; padding: 0; } .sheet.adventure-exporter .tab.contents .drop-zone { line-height: 100px; text-align: center; border: 2px dashed var(--color-border-light-tertiary); border-radius: 5px; } /* -------------------------------------------- */ /* Ownership */ /* -------------------------------------------- */ #permission-control.no-gm .gm { display: none; } #permission-control .author { color: var(--color-text-dark-secondary); } #permission-control .role-icon { font-size: var(--font-size-12); margin-left: 0.25rem; color: var(--color-text-light-7); } /* -------------------------------------------- */ /* Base Sheet */ /* -------------------------------------------- */ .base-sheet header input { font-size: var(--font-size-32); height: 50px; line-height: 50px; border-radius: 4px; margin: 0; background: rgba(0, 0, 0, 0.1); text-align: center; } .base-sheet figure img { width: 100%; object-fit: contain; } /* -------------------------------------------- */ /* Wall Configuration */ /* -------------------------------------------- */ .wall-config i.audio-preview { flex: none; padding: 0.25rem; } .wall-config input.proximity { flex: 0 0 48px; } /* -------------------------------------------- */ /* Region Configuration */ /* -------------------------------------------- */ .region-config .tab { display: flex; flex-direction: column; gap: 0.5rem; overflow: hidden; } .region-config .tab header { font-weight: bold; font-size: var(--font-size-16); } .region-config .tab .region-element-controls { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 0.25rem; } .region-config .tab .scrollable { --scroll-margin: 0.5rem; width: 100%; flex: 1; } .region-config .tab.inactive { background: rgba(0, 0, 0, 0.05); opacity: 0.8; border-style: dotted; } .region-config input[name="elevation.bottom"]::placeholder, .region-config input[name="elevation.top"]::placeholder { font-size: var(--font-size-12); } /* ----------------------------------------- */ /* Journal Entries and Pages */ /* ----------------------------------------- */ .journal-sheet { /** Journal Header */ /** Journal Footer */ } .journal-sheet .journal-header { flex: none; margin: 1rem; } .journal-sheet .journal-header .title { margin: 0; background: rgba(0, 0, 0, 0.1); font-size: var(--font-size-32); height: 50px; line-height: 50px; border-radius: 4px; } .journal-sheet .journal-footer { margin: 1rem 0.5rem 0.5rem; } /* ----------------------------------------- */ /* Journal Entry */ /* ----------------------------------------- */ .sheet.journal-entry { --sidebar-width-expanded: 300px; --sidebar-width-collapsed: 32px; --level-indent: 16px; --page-number-width: 20px; min-width: 680px; min-height: 680px; /** Main Container */ /** Sidebar Navigation */ /** Collapsing Transitions */ /** Collapsed Sidebar */ /** Pages Navigation */ /** Pages Content */ /** Journal Header */ /** Single Page */ } .sheet.journal-entry .window-header { border-bottom: none; } .sheet.journal-entry .window-content { padding: 0; background: transparent; } .sheet.journal-entry .scrollable { position: absolute; top: 0; right: 0; bottom: 0; left: 0; padding-right: 0.5rem; overflow: hidden auto; } .sheet.journal-entry .journal-sheet-container { display: flex; flex-direction: row; height: 100%; } .sheet.journal-entry .journal-sidebar { flex-basis: var(--sidebar-width-expanded); background: transparent; color: var(--color-text-light-highlight); /** Search Header */ /** Control Buttons */ } .sheet.journal-entry .journal-sidebar .directory-header { margin: 0.5rem 0; } .sheet.journal-entry .journal-sidebar .directory-header .action-button { flex: 0 0 30px; } .sheet.journal-entry .journal-sidebar .directory-header .view-mode { order: 1; } .sheet.journal-entry .journal-sidebar .directory-header .toggle-search-mode { order: 2; } .sheet.journal-entry .journal-sidebar .directory-header .header-search input { order: 3; } .sheet.journal-entry .journal-sidebar .directory-header .collapse-toggle { order: 4; } .sheet.journal-entry .journal-sidebar .action-buttons { flex: none; justify-content: space-between; } .sheet.journal-entry .journal-sidebar .action-buttons button.next, .sheet.journal-entry .journal-sidebar .action-buttons button.previous { margin: 0.5rem; flex: 0 0 30px; } .sheet.journal-entry .journal-sidebar .action-buttons button.create { margin: 0.5rem 0; } .sheet.journal-entry.collapsing { transition: all 0.25s ease-in-out; } .sheet.journal-entry.collapsing .journal-sidebar { transition: flex-basis 0.25s ease-in-out; } .sheet.journal-entry .journal-sidebar.collapsed { flex-basis: var(--sidebar-width-collapsed); } .sheet.journal-entry .journal-sidebar.collapsed .directory-header .header-search input { display: none; } .sheet.journal-entry .journal-sidebar.collapsed .directory-header .collapse-toggle { order: 0; } .sheet.journal-entry .journal-sidebar.collapsed .page-heading { justify-content: center; } .sheet.journal-entry .journal-sidebar.collapsed .page-heading .page-title, .sheet.journal-entry .journal-sidebar.collapsed .page-heading .page-ownership { display: none; } .sheet.journal-entry .journal-sidebar.collapsed .page-heading .page-number { pointer-events: all; } .sheet.journal-entry .journal-sidebar.collapsed .pages-list .directory-item.active ol.headings { display: none; } .sheet.journal-entry .journal-sidebar.collapsed .action-buttons button.create { display: none; } .sheet.journal-entry .journal-sidebar.collapsed .action-buttons button.next, .sheet.journal-entry .journal-sidebar.collapsed .action-buttons button.previous { margin: 2px; } .sheet.journal-entry .pages-list { flex: 1; position: relative; /** Sidebar Page Titles */ /** Page Heading Links */ /** Sidebar Links */ /** Page Level Indentation */ /** Heading Indentation */ } .sheet.journal-entry .pages-list .directory-item { line-height: 32px; border-top: 1px solid var(--color-border-dark); border-bottom: 1px solid var(--color-border-dark-3); display: flex; flex-direction: column; position: relative; } .sheet.journal-entry .pages-list .directory-item:first-child { border-top: 1px solid transparent; } .sheet.journal-entry .pages-list .directory-item:last-child { border-bottom: 1px solid transparent; } .sheet.journal-entry .pages-list .directory-item.hidden { display: none; } .sheet.journal-entry .pages-list .directory-item.active .headings { display: block; } .sheet.journal-entry .pages-list .directory-item.active:first-of-type { border-top: 1px solid var(--color-border-highlight); } .sheet.journal-entry .pages-list .directory-item.active:last-of-type { border-bottom: 1px solid var(--color-border-highlight); } .sheet.journal-entry .pages-list .directory-item:not(.active) + .active { border-top: 1px solid var(--color-border-highlight); } .sheet.journal-entry .pages-list .directory-item.active + :not(.active) { border-top: 1px solid var(--color-border-highlight); } .sheet.journal-entry .pages-list .page-heading { display: flex; align-items: center; margin: 0; border: none; font-size: var(--font-size-14); } .sheet.journal-entry .pages-list .page-heading .page-number { pointer-events: none; width: var(--sidebar-width-collapsed); color: var(--color-text-light-7); text-align: center; } .sheet.journal-entry .pages-list .page-heading .page-title { flex: 1; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .sheet.journal-entry .pages-list .page-heading .page-ownership { width: var(--sidebar-width-collapsed); margin-left: 8px; text-align: center; pointer-events: none; } .sheet.journal-entry .pages-list .page-heading .page-ownership.none { color: var(--color-ownership-none); } .sheet.journal-entry .pages-list .page-heading .page-ownership.observer { color: var(--color-ownership-observer); } .sheet.journal-entry .pages-list .page-heading .page-ownership.owner { color: var(--color-ownership-owner); } .sheet.journal-entry .pages-list .page-heading .page-number:hover, .sheet.journal-entry .pages-list .page-heading .page-title:hover { cursor: pointer; color: inherit; text-shadow: 0 0 8px var(--color-shadow-primary); } .sheet.journal-entry .pages-list .active .page-heading .page-number { color: inherit; } .sheet.journal-entry .pages-list .headings { display: none; height: auto; margin: 0 0 0 var(--page-number-width); padding: 0; list-style: none; font-weight: normal; border: none; } .sheet.journal-entry .pages-list .headings li { height: 32px; line-height: 32px; } .sheet.journal-entry .pages-list .headings li:last-child { margin-bottom: 0.5rem; } .sheet.journal-entry .pages-list .heading-link { width: 100%; line-height: 32px; font-size: var(--font-size-14); display: inline-block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .sheet.journal-entry .pages-list .level2 .page-title { text-indent: var(--level-indent); } .sheet.journal-entry .pages-list .level3 .page-title { text-indent: calc(2 * var(--level-indent)); } .sheet.journal-entry .pages-list .level2 .headings { margin-left: calc(2 * var(--level-indent)); } .sheet.journal-entry .pages-list .level3 .headings { margin-left: calc(3 * var(--level-indent)); } .sheet.journal-entry .pages-list .h2 .heading-link { text-indent: var(--level-indent); } .sheet.journal-entry .pages-list .h3 .heading-link { text-indent: calc(2 * var(--level-indent)); } .sheet.journal-entry .journal-entry-content { flex: 1; height: 100%; background: url("../ui/parchment.jpg") repeat; border: 2px solid #000; border-radius: 6px 0 0 0; } .sheet.journal-entry .journal-header .title { text-align: center; } .sheet.journal-entry .journal-entry-pages { position: relative; display: flex; flex-direction: column; margin: 0 0.5rem 1rem 1rem; } .sheet.journal-entry .journal-entry-page { position: relative; } .sheet.journal-entry .journal-entry-page * { user-select: text; } .sheet.journal-entry .journal-entry-page + .journal-entry-page { margin-top: 2rem; } .sheet.journal-entry .journal-entry-page .edit-container { position: absolute; top: 5px; right: 5px; height: 100%; pointer-events: none; } .sheet.journal-entry .journal-entry-page .editor-edit { display: none; position: sticky; pointer-events: all; } .sheet.journal-entry .journal-entry-page:hover .editor-edit { display: block; } .sheet.journal-entry .journal-entry-page :is(h1, h2, h3, h4, h5, h6):not(:first-child) { margin-top: 1rem; } .sheet.journal-entry .journal-entry-page .content-embed.broken { font-style: italic; } .sheet.journal-entry .journal-entry-page .content-embed.broken > i { color: var(--color-level-error); } .sheet.journal-entry article img:not(.nopopout) { cursor: pointer; } /* ----------------------------------------- */ /* Journal Entry Page */ /* ----------------------------------------- */ .sheet.journal-entry-page { /** Page Header */ /** Text Editor */ /** Form Fields */ } .sheet.journal-entry-page .window-content { padding: 0; } .sheet.journal-entry-page .journal-header { display: flex; flex-direction: row; flex-wrap: nowrap; } .sheet.journal-entry-page .journal-header .page-level { flex: 0 0 110px; margin-left: 1rem; align-items: flex-end; } .sheet.journal-entry-page .journal-header .heading-level { width: 100%; align-items: center; } .sheet.journal-entry-page .journal-header .heading-level label { margin-right: 4px; } .sheet.journal-entry-page .editor.prosemirror menu { border-radius: 0; } .sheet.journal-entry-page .editor.tinymce { margin: 0 1rem; } .sheet.journal-entry-page .editor.tinymce div[role=application] { height: 100%; } .sheet.journal-entry-page .form-group { flex: none; margin: 1rem 1rem 0; } .sheet.journal-entry-page .form-group label { font-weight: bold; } /* ----------------------------------------- */ /* Journal Image Page */ /* ----------------------------------------- */ .journal-entry-page.image figure img { object-fit: contain; border: none; } /** Edit Image Page */ .journal-entry-page.image.sheet .image-preview { margin: 0; } .journal-entry-page.image.sheet .image-preview img { height: 360px; max-height: 360px; border: none; } /** Lightbox Image */ .image-popout .window-content { background: transparent; } .image-popout figure { margin: 1rem; } .image-popout figure img { border: none; object-fit: contain; object-position: 50% 50%; } .image-popout figure figcaption { margin-top: 1rem; color: var(--color-text-light-3); font-size: var(--font-size-16); flex: none; } /* ----------------------------------------- */ /* Journal Markdown Page */ /* ----------------------------------------- */ .journal-entry-page.text textarea.markdown-editor { padding: 1rem; background: transparent; resize: none; white-space: pre-wrap; border: none; border-radius: 0; border-top: 1px dashed var(--color-border-dark-4); } .journal-entry-page.text textarea.markdown-editor:focus { box-shadow: none; } /* ----------------------------------------- */ /* Journal Video Page */ /* ----------------------------------------- */ .journal-entry-page.video { /** 16/9 Aspect Ratio */ } .journal-entry-page.video .video-time input { flex: 0 0 64px; } .journal-entry-page.video figure.flex-ratio { position: relative; } .journal-entry-page.video figure.flex-ratio iframe, .journal-entry-page.video figure.flex-ratio video { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .journal-entry-page.video figure.flex-ratio::before { content: ""; display: block; padding-bottom: calc(9 / 16 * 100%); } /** Edit Video Page */ .journal-entry-page.video.sheet figure { margin: 0 1rem; } /* ----------------------------------------- */ /* Journal PDF Page */ /* ----------------------------------------- */ .journal-entry-page.pdf { display: flex; flex-direction: column; overflow: hidden; padding-bottom: 4px; } .journal-entry-page.pdf .load-pdf { flex-grow: 1; width: 100%; display: flex; align-items: center; justify-content: center; } .journal-entry-page.pdf .load-pdf > button { max-width: 250px; cursor: pointer; } .journal-entry-page.pdf iframe { flex-grow: 1; width: 100%; min-height: 620px; border: none; } .single-page .journal-entry-page.pdf { height: 100%; } .multi-page .journal-entry-page.pdf iframe { flex-basis: 620px; } /* ---------------------------------- */ /* Journal Dialog */ /* ---------------------------------- */ .journal-show-dialog .checkbox-label { display: flex; justify-content: space-between; align-items: end; padding-bottom: 4px; } .journal-show-dialog .checkbox-label label.checkbox { flex: none; font-size: unset; } .journal-show-dialog .form-group-stacked { text-align: right; } div#camera-views { --color-border-av-light: #dfac46; --color-border-av-dark: #a85424; --color-border-av-speaking: #3ba55d; --av-width: 240px; --av-border-radius: 4px; --av-frame-border-width: 3px; --av-frame-absolute-margin: var(--av-frame-border-width); --av-minimized-icon-size: 64px; margin: 0; padding: 0; z-index: calc(var(--z-index-app) - 1); border: none; box-shadow: none; background: url('../ui/denim075.png') repeat; position: relative; border-radius: 0; display: flex; /* ----------------------------------------- */ /* Video Containers /* ----------------------------------------- */ /* The following 3 blocks ensure that the video or avatar img use 4:3 aspect ratio. * From https://css-tricks.com/aspect-ratio-boxes/ * Thanks to asacolips */ } div#camera-views.camera-position-left, div#camera-views.camera-position-right { min-width: calc(var(--av-width) + 6px); min-height: 100vh; flex-direction: column; } div#camera-views.camera-position-left .camera-container, div#camera-views.camera-position-right .camera-container { flex-grow: 1; display: grid; overflow-y: auto; } div#camera-views.camera-position-left .camera-grid, div#camera-views.camera-position-right .camera-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(var(--av-width), 1fr)); grid-auto-rows: max-content; align-content: center; gap: 10px; } div#camera-views.camera-position-left .camera-view-width-control, div#camera-views.camera-position-right .camera-view-width-control { top: 0; bottom: 0; width: 6px; cursor: col-resize; } div#camera-views.camera-position-left .camera-view-width-control:hover, div#camera-views.camera-position-right .camera-view-width-control:hover { background: rgba(0, 0, 0, 0.25); } div#camera-views.camera-position-left { padding-right: 6px; } div#camera-views.camera-position-left .camera-view-width-control { right: 0; } div#camera-views.camera-position-right { padding-left: 6px; } div#camera-views.camera-position-right .camera-view-width-control { left: 0; } div#camera-views.camera-position-bottom, div#camera-views.camera-position-top { min-width: 100vw; height: calc(var(--av-width) * 3/4 + 12px); flex-direction: row; } div#camera-views.camera-position-bottom .camera-container, div#camera-views.camera-position-top .camera-container { flex-grow: 1; overflow: auto hidden; } div#camera-views.camera-position-bottom .camera-view:not(.camera-box-popout), div#camera-views.camera-position-top .camera-view:not(.camera-box-popout) { width: var(--av-width); } div#camera-views.camera-position-bottom .camera-grid, div#camera-views.camera-position-top .camera-grid { display: flex; flex-direction: row; justify-content: center; align-items: center; gap: 10px; height: 100%; } div#camera-views.camera-position-bottom .camera-view-width-control, div#camera-views.camera-position-top .camera-view-width-control { left: 0; right: 0; height: 6px; } div#camera-views.camera-position-bottom .user-controls, div#camera-views.camera-position-top .user-controls { border-top: none; border-left: 2px solid rgba(0, 0, 0, 0.5); } div#camera-views.camera-position-bottom .user-controls .control-bar, div#camera-views.camera-position-top .user-controls .control-bar { flex-direction: column; justify-content: space-between; height: 100%; } div#camera-views.camera-position-bottom { padding-top: 6px; } div#camera-views.camera-position-bottom .camera-view-width-control { top: 0; } div#camera-views.camera-position-top { padding-bottom: 6px; } div#camera-views.camera-position-top .camera-view-width-control { bottom: 0; } div#camera-views.webrtc-dock-empty { padding: 0; } div#camera-views .user-controls { padding: 8px; font-size: var(--font-size-18); color: var(--color-text-light-6); border-top: 2px solid rgba(0, 0, 0, 0.5); } div#camera-views .user-controls .control-bar { justify-content: space-around; } div#camera-views .user-controls .control-bar .av-control { text-align: center; } div#camera-views .user-controls .control-bar .av-control i.fa-arrows-alt-v { transform: rotate(45deg); } div#camera-views #players { background: none; box-shadow: none; margin: 0; width: 100%; border-radius: 0; border: none; border-top: 6px solid rgba(0, 0, 0, 0.5); } div#camera-views .video-containers { display: flex; flex: 1 1 0; flex-wrap: nowrap; } div#camera-views .video-container { position: relative; border-radius: var(--av-border-radius); } div#camera-views .video-container video { border-radius: var(--av-border-radius); } div#camera-views .video-container::before { /* Create an empty text with a specific size due to the padding which has a 4:3 ratio */ content: ""; display: block; padding-bottom: calc(100% * 3/4); border-radius: var(--av-border-radius); } div#camera-views .video-container img.user-avatar, div#camera-views .video-container video.user-camera { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; border-radius: var(--av-border-radius); object-fit: cover; object-position: center; } div#camera-views .video-container img.user-avatar.local-camera, div#camera-views .video-container video.user-camera.local-camera { -webkit-transform: scaleX(-1); -moz-transform: scaleX(-1); -ms-transform: scaleX(-1); -o-transform: scaleX(-1); transform: scaleX(-1); } div#camera-views .video-container img.user-avatar { object-fit: cover; } div#camera-views.webrtc-dock-minimized { padding: unset; min-width: unset; } div#camera-views.webrtc-dock-minimized.camera-position-left { border-right: 1px solid var(--color-border-dark); } div#camera-views.webrtc-dock-minimized.camera-position-right { border-left: 1px solid var(--color-border-dark); } div#camera-views.webrtc-dock-minimized.camera-position-top { border-bottom: 1px solid var(--color-border-dark); } div#camera-views.webrtc-dock-minimized.camera-position-bottom { border-top: 1px solid var(--color-border-dark); } div#camera-views.webrtc-dock-minimized.camera-position-left, div#camera-views.webrtc-dock-minimized.camera-position-right { width: calc(var(--av-minimized-icon-size) + 2rem); } div#camera-views.webrtc-dock-minimized.camera-position-left .camera-grid, div#camera-views.webrtc-dock-minimized.camera-position-right .camera-grid { padding: 0 1rem; display: flex; justify-content: center; flex-direction: column; } div#camera-views.webrtc-dock-minimized.camera-position-left .user-controls .control-bar, div#camera-views.webrtc-dock-minimized.camera-position-right .user-controls .control-bar { display: grid; grid-template-columns: repeat(auto-fit, minmax(32px, 1fr)); gap: 8px; } div#camera-views.webrtc-dock-minimized.camera-position-top, div#camera-views.webrtc-dock-minimized.camera-position-bottom { height: calc(var(--av-minimized-icon-size) + 2rem); } div#camera-views.webrtc-dock-minimized.camera-position-top .user-controls .control-bar, div#camera-views.webrtc-dock-minimized.camera-position-bottom .user-controls .control-bar { display: grid; grid-template-columns: 32px 32px; align-items: center; } div#camera-views.webrtc-dock-minimized .video-container:not(.camera-container-popout) { position: unset; width: 100%; height: 100%; } div#camera-views.webrtc-dock-minimized .video-container:not(.camera-container-popout)::before { display: none; } div#camera-views.webrtc-dock-minimized .video-container:not(.camera-container-popout) img.user-avatar { position: unset; border-radius: var(--av-minimized-icon-size); } div#camera-views.webrtc-dock-minimized .camera-view-width-control { display: none; } div#camera-views.webrtc-dock-minimized .camera-container { overflow: hidden; } div#camera-views.webrtc-dock-minimized .camera-view:not(.camera-box-popout) { width: var(--av-minimized-icon-size); height: var(--av-minimized-icon-size); border-radius: var(--av-minimized-icon-size); } div#camera-views.webrtc-dock-minimized .camera-view:not(.camera-box-popout) video, div#camera-views.webrtc-dock-minimized .camera-view:not(.camera-box-popout) .shadow, div#camera-views.webrtc-dock-minimized .camera-view:not(.camera-box-popout) .player-name, div#camera-views.webrtc-dock-minimized .camera-view:not(.camera-box-popout) .notification-bar { display: none; } div#camera-views.hidden { visibility: hidden; pointer-events: none; } div#camera-views.hidden.camera-position-left, div#camera-views.hidden.camera-position-right { width: 0; min-width: unset; } div#camera-views.hidden.camera-position-top, div#camera-views.hidden.camera-position-bottom { height: 0; } div#camera-views.hidden .camera-view { visibility: visible; pointer-events: all; } .camera-view-popout { position: fixed; left: 0; top: 0; width: 320px; margin: 0; min-width: var(--av-width); padding: 0; } .camera-view-popout .camera-view { margin: 0; padding: 3px; } .camera-view-width-control { position: absolute; background: rgba(0, 0, 0, 0.5); } /* ----------------------------------------- */ /* Single Camera View /* ----------------------------------------- */ .camera-view { position: relative; width: 100%; padding: var(--av-frame-border-width); border-radius: var(--av-border-radius); background: var(--color-border-av-light); background: linear-gradient(to bottom, var(--color-border-av-light) 0%, var(--color-border-av-dark) 100%); /* Camera Control Button (28x24) */ /* Control Sidebar */ /* Notification Icons */ /* Volume Bar */ } .camera-view.camera-box-dock { flex: none; } .camera-view.speaking { padding: 0; border: var(--av-frame-border-width) solid var(--color-border-av-speaking); --av-frame-absolute-margin: 0px; } .camera-view .player-name { height: 30px; margin: 0; line-height: 30px; text-align: center; position: absolute; bottom: calc(var(--av-frame-absolute-margin) - 4px); box-shadow: 4px 4px 15px 2px rgba(0, 0, 0, 0.7); left: calc(10px + var(--av-frame-absolute-margin)); right: calc(10px + var(--av-frame-absolute-margin)); border-radius: var(--av-border-radius); background-color: var(--color-border-dark-3); font-family: var(--font-primary); border: 2px solid var(--color-border-av-dark); font-variant: small-caps; color: var(--color-text-hyperlink); font-size: var(--font-size-18); text-shadow: 1px 1px var(--color-shadow-dark); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .camera-view .player-name span { position: absolute; top: 0; right: 0; bottom: 0; left: 0; } .camera-view .player-name:not(.noanimate) span:first-child { opacity: 1; animation: 16s infinite fadeoutin; } .camera-view .player-name:not(.noanimate) span:last-child { opacity: 0; animation: 16s infinite fadeinout; } @keyframes fadeoutin { from { opacity: 1; } 30% { opacity: 1; } 50% { opacity: 0; } 80% { opacity: 0; } to { opacity: 1; } } @keyframes fadeinout { from { opacity: 0; } 30% { opacity: 0; } 50% { opacity: 1; } 80% { opacity: 1; } to { opacity: 0; } } .camera-view .shadow { position: absolute; top: var(--av-frame-absolute-margin); right: var(--av-frame-absolute-margin); bottom: var(--av-frame-absolute-margin); left: var(--av-frame-absolute-margin); pointer-events: none; box-shadow: inset 0 0 15px 8px var(--color-shadow-dark); border-radius: calc(var(--av-border-radius) - 2px); } .camera-view .av-control { flex: 0 0 28px; width: 28px; padding: 2px; text-align: center; } .camera-view .av-control i { font-size: var(--font-size-18); line-height: 22px; color: var(--color-text-light-6); } .camera-view .av-control i:hover { color: #DDD; } .camera-view .av-control.toggle .fa-arrows-alt-v { transform: rotate(45deg); } .camera-view .control-bar, .camera-view .notification-bar { position: absolute; background: rgba(0, 0, 0, 0.5); border: 1px solid var(--color-border-dark); border-radius: 2px; justify-content: space-evenly; z-index: 1; } .camera-view .control-bar.left, .camera-view .notification-bar.left { top: 4px; left: 4px; } .camera-view .control-bar.right, .camera-view .notification-bar.right { top: 3px; right: 3px; background: none; border: none; } .camera-view .control-bar.bottom, .camera-view .notification-bar.bottom { width: calc(100% - 8px); left: 4px; bottom: 26px; height: 28px; padding: 0 3px; } .camera-view .control-bar.hidden, .camera-view .notification-bar.hidden { display: none; } .camera-view .status-hidden, .camera-view .status-muted { font-size: var(--font-size-20); width: 30px; line-height: 30px; color: #ba2200; } .camera-view .status-hidden.hidden, .camera-view .status-muted.hidden { display: none; } .camera-view .volume-bar { height: 28px; } .camera-view .volume-bar input { float: left; width: calc(100% - 48px); padding: 6px 2px; } .camera-view .volume-bar i.vol-min, .camera-view .volume-bar i.vol-max { float: left; width: 24px; line-height: 24px; text-align: center; color: var(--color-text-light-6); } /* ----------------------------------------- */ /* AV Configuration Sheet /* ----------------------------------------- */ #av-config .sheet-tabs { border-bottom: 1px solid var(--color-border-light-primary); padding: 7px 0; } #av-config .sheet-tabs .item i { margin-right: 2px; } #av-config label { font-weight: bold; margin-bottom: 0; } /* ----------------------------------------- */ /* Unclean Below /* ----------------------------------------- */ .window-content .camera-view, .camera-box-popout { width: 100%; height: 100%; } .webrtc-dock-camera-container.fa-external-link-square-alt { transform: rotate(180deg); } .camera-box-popout .window-resizable-handle { width: 20px; height: 20px; position: absolute; bottom: 0; right: 0; background: #444; padding: 2px; border: 1px solid var(--color-border-dark-1); border-radius: 4px 0 0 0; } .camera-box-popout .window-resizable-handle i.fas { transform: rotate(45deg); } .ProseMirror { position: relative; } .ProseMirror { word-wrap: break-word; white-space: pre-wrap; white-space: break-spaces; -webkit-font-variant-ligatures: none; font-variant-ligatures: none; font-feature-settings: "liga" 0; /* the above doesn't seem to work in Edge */ } .ProseMirror pre { white-space: pre-wrap; } .ProseMirror li { position: relative; } .ProseMirror-hideselection *::selection { background: transparent; } .ProseMirror-hideselection *::-moz-selection { background: transparent; } .ProseMirror-hideselection { caret-color: transparent; } /* See https://github.com/ProseMirror/prosemirror/issues/1421#issuecomment-1759320191 */ .ProseMirror [draggable][contenteditable=false] { user-select: text } .ProseMirror-selectednode { outline: 2px solid #8cf; } /* Make sure li selections wrap around markers */ li.ProseMirror-selectednode { outline: none; } li.ProseMirror-selectednode:after { content: ""; position: absolute; left: -32px; right: -2px; top: -2px; bottom: -2px; border: 2px solid #8cf; pointer-events: none; } /* Protect against generic img rules */ img.ProseMirror-separator { display: inline !important; border: none !important; margin: 0 !important; } .ProseMirror-gapcursor { display: none; pointer-events: none; position: absolute; } .ProseMirror-gapcursor:after { content: ""; display: block; position: absolute; top: -2px; width: 20px; border-top: 1px solid black; animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite; } @keyframes ProseMirror-cursor-blink { to { visibility: hidden; } } .ProseMirror-focused .ProseMirror-gapcursor { display: block; } .ProseMirror .tableWrapper { overflow-x: auto; } .ProseMirror table { border-collapse: collapse; table-layout: fixed; width: 100%; overflow: hidden; } .ProseMirror td, .ProseMirror th { vertical-align: top; box-sizing: border-box; position: relative; } .ProseMirror .column-resize-handle { position: absolute; right: -2px; top: 0; bottom: 0; width: 4px; z-index: 20; background-color: #adf; pointer-events: none; } .ProseMirror.resize-cursor { cursor: ew-resize; cursor: col-resize; } /* Give selected cells a blue overlay */ .ProseMirror .selectedCell:after { z-index: 2; position: absolute; content: ''; left: 0; right: 0; top: 0; bottom: 0; background: rgba(200, 200, 255, 0.4); pointer-events: none; } .prosemirror { display: flex; flex-direction: column; --color-control-bg: #d9d8c8; --color-hover-bg: #f0f0e0; --menu-height: 26px; --menu-background: rgba(0, 0, 0, 0.1); } .prosemirror menu { display: flex; list-style: none; margin: 0; padding: 8px; gap: 4px; background: var(--menu-background); border-radius: 6px; flex-wrap: wrap; flex: none; } .prosemirror menu .concurrent-users { display: none; justify-content: center; align-items: center; padding: 0 6px; background: var(--color-control-bg); border: 1px solid var(--color-shadow-highlight); border-radius: 3px; box-shadow: 0 0 4px var(--color-shadow-highlight); } .prosemirror menu .concurrent-users i { margin-right: 6px; } .prosemirror menu button { background: transparent; cursor: pointer; padding: 0 5px; height: var(--menu-height); line-height: var(--menu-height); border: none; border-radius: 4px; } .prosemirror menu button i { margin: 0; } .prosemirror menu button.source-code-action { background: var(--color-control-bg); } .prosemirror menu button:hover, .prosemirror menu button.active { box-shadow: none; background: var(--color-hover-bg); color: black; } .prosemirror menu .pm-dropdown { display: flex; align-items: center; justify-content: space-between; height: var(--menu-height); line-height: 24px; background: var(--color-control-bg); border-radius: 4px; text-align: left; } .prosemirror menu .pm-dropdown > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 5em; font-size: var(--font-size-12); align-self: end; } .prosemirror menu .pm-dropdown i.fa-chevron-down { color: var(--color-text-light-7); font-size: var(--font-size-11); margin-left: 10px; } .prosemirror menu .pm-dropdown ul { display: none; } .prosemirror menu .pm-dropdown:hover i { color: var(--color-text-dark-primary); } .prosemirror .editor-container { flex: 1; position: relative; margin: 0.5rem 0.5rem 1rem 1rem; } .prosemirror .editor-container .editor-content { outline: 0 solid transparent; height: unset; position: absolute; top: 0; right: 0; bottom: 0; left: 0; padding-right: 0.5rem; } .collaborating menu .source-code-edit { display: none; } .collaborating menu .concurrent-users { display: flex; } .collaborating menu .concurrent-users .scene-player { width: 14px; height: 15px; border-radius: 50%; margin-right: -3px; line-height: var(--line-height-12); font-size: 0.625rem; text-align: center; color: black; font-weight: 700; } .collaborating menu .concurrent-users .scene-player:last-child { margin: 0; } /* ----------------------------------------- */ /* Source Code Editing */ /* ----------------------------------------- */ .prosemirror.editing-source menu .text { display: none; } .prosemirror.editing-source menu .html { display: initial; } .prosemirror.editing-source menu .right { margin-left: auto; } .prosemirror.editing-source menu .right ~ .right { margin-left: unset; } .prosemirror.editing-source .editor-container { display: none; } .prosemirror.editing-source textarea { flex: 1; padding: 1rem; background: transparent; white-space: pre-wrap; tab-size: 4; resize: none; border: none; outline: 0; } .prosemirror.editing-source textarea:focus { box-shadow: none; } /* ----------------------------------------- */ /* Insertion Dialogs */ /* ----------------------------------------- */ .prosemirror.menu-dialog { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: transparent; } .prosemirror.menu-dialog form { width: 400px; position: fixed; background: var(--color-control-bg); border-radius: 4px; padding: 8px; box-shadow: 0 0 8px 0 var(--color-shadow-dark); } /* ----------------------------------------- */ /* Tables */ /* ----------------------------------------- */ .prosemirror .tableWrapper th, .prosemirror .tableWrapper td { border-left: 1px solid black; border-right: 1px solid black; } .ProseMirror .selectedCell::after { z-index: unset; } /* ----------------------------------------- */ /* Drop-downs */ /* ----------------------------------------- */ #prosemirror-dropdown { --color-control-bg: #d9d8c8; --color-hover-bg: #f0f0e0; position: fixed; z-index: var(--z-index-tooltip); } #prosemirror-dropdown .html { display: none; } #prosemirror-dropdown ul { display: none; position: absolute; top: 0; left: 100%; min-width: 90px; padding: 6px; margin: 0; list-style: none; background: var(--color-control-bg); border-radius: 3px; border: 1px solid #999; font-size: var(--font-size-12); line-height: var(--font-size-24); z-index: 1; } #prosemirror-dropdown > ul { display: block; } #prosemirror-dropdown li { padding: 1px 6px; cursor: pointer; display: flex; align-items: center; justify-content: space-between; border-radius: 3px; position: relative; white-space: nowrap; } #prosemirror-dropdown li i { font-size: var(--font-size-14); } #prosemirror-dropdown li.divider { pointer-events: none; margin-bottom: 4px; border-bottom: 1px solid #999; } #prosemirror-dropdown li.level1 { font-size: 2em; } #prosemirror-dropdown li.level2 { font-size: 1.5em; } #prosemirror-dropdown li.level3 { font-size: 1.25em; } #prosemirror-dropdown li.level5 { font-size: 0.83em; font-weight: bold; } #prosemirror-dropdown li.level6 { font-size: 0.67em; font-weight: bold; } #prosemirror-dropdown li:hover { background: var(--color-hover-bg); } #prosemirror-dropdown li:hover ul { display: block; } #prosemirror-dropdown.theme-dark { --color-control-bg: var(--color-cool-4); color: var(--color-light-3); } #prosemirror-dropdown.theme-dark ul { border-color: var(--color-cool-3); } #prosemirror-dropdown.theme-dark li:hover > :is(span, i) { color: black; } /* ----------------------------------------- */ /* ProseMirror V2 */ /* ----------------------------------------- */ prose-mirror.prosemirror .editor-container { margin: 0; } .standard-form prose-mirror menu button:not(.pm-dropdown) { color: var(--color-form-label); padding: 0 5px; } .standard-form prose-mirror menu button:not(.pm-dropdown):hover { color: var(--color-form-label-hover); } .theme-dark prose-mirror { --menu-background: var(--color-cool-4); --color-form-label-hover: black; --color-control-bg: transparent; } /* Pages */ body.stream { background: lime; box-shadow: none; /* Stream Chat */ } body.stream .tab[data-tab] { position: absolute; top: 20px; display: block; width: 300px; height: calc(100% - 40px); } body.stream #chat { left: 20px; } body.stream #chat #chat-log { height: 100%; } /* Theme V2 Forward Compatibility */ /* ----------------------------------------- */ /* Common Sub-Elements */ /* ----------------------------------------- */ .tags.input-element-tags { width: 100%; display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 0.25rem; } .tags.input-element-tags .tag { display: flex; gap: 0.25rem; align-items: center; padding: 1px 0.25rem; font-size: var(--font-size-12); border: 1px solid var(--color-border-dark-3); border-radius: 4px; } /* ----------------------------------------- */ /* ColorPicker Element */ /* ----------------------------------------- */ color-picker { display: flex; align-items: center; gap: 0.25rem; } color-picker > input[type=text] { flex: 1; } color-picker > input[type=color] { flex: 0 0 40px; height: 40px; background: transparent; border: none; cursor: pointer; } /* ----------------------------------------- */ /* MultiSelect Element */ /* ----------------------------------------- */ multi-select { display: flex; flex-direction: column; gap: 0.25rem; } multi-select select { width: 100%; } multi-checkbox { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.5rem; } /* ----------------------------------------- */ /* ProseMirror Editor Element */ /* ----------------------------------------- */ prose-mirror { position: relative; display: flex; flex-direction: column; overflow: hidden; min-height: 150px; } prose-mirror .editor-content { flex: 1; padding: 0.25rem; } prose-mirror button.toggle { display: none; position: absolute; top: 2px; right: 2px; width: var(--form-field-height); height: var(--form-field-height); line-height: var(--form-field-height); padding: 0; } prose-mirror.inactive:hover button.toggle { display: block; } /* ----------------------------------------- */ /* RangePicker Element */ /* ----------------------------------------- */ range-picker { display: flex; align-items: center; gap: 0.5rem; } range-picker > input[type=range] { flex: 1; } range-picker > input[type=number] { flex: 0 0 40px; text-align: center; padding: 0; font-size: 0.8em; } /* ----------------------------------------- */ /* Tags Elements */ /* ----------------------------------------- */ document-tags, string-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem; margin: 0; } document-tags > input, string-tags > input { flex: 1; } document-tags > button, string-tags > button { margin: -2px 0; padding: 0; flex: 0 0 36px; line-height: var(--form-field-height); } /* ----------------------------------------- */ /* FilePicker Element */ /* ----------------------------------------- */ file-picker { display: flex; align-items: center; gap: 0.25rem; margin: 0; } file-picker > button { margin: -2px 0; padding: 0; flex: 0 0 36px; line-height: var(--form-field-height); } /* ----------------------------------------- */ /* Content Links */ /* ----------------------------------------- */ .content-link, .inline-roll { --content-link-background: rgba(0, 0, 0, 0.1); background: var(--content-link-background); } .application { position: absolute; z-index: var(--z-index-window); transform-origin: top left; display: flex; flex-direction: column; flex-wrap: nowrap; min-width: 200px; max-height: 100%; max-width: 100%; overflow: hidden; background: var(--background); font-size: var(--font-size-14); color: var(--color-text-primary); border: 1px solid var(--color-border); border-radius: 6px; box-shadow: 0 0 10px #000; } .application:not(.minimized) { min-height: calc(var(--header-height) + 1rem); } .application .window-content { flex: 1; display: flex; flex-direction: column; flex-wrap: nowrap; padding: 1rem; overflow: hidden; } .application.minimizing { transition: max-height 0.25s ease-out, max-width 0.25s ease-out; } .application.maximizing { transition: max-height 0.25s ease-in, max-width 0.25s ease-in; } .application.minimized .window-content, .application.minimizing .window-content, .application.maximizing .window-content { display: none; } .application .window-header { --button-size: 24px; display: flex; flex-wrap: nowrap; align-items: center; flex: 0 0 var(--header-height); position: relative; overflow: hidden; padding: 0 0.5rem; gap: 0.25rem; z-index: 1; cursor: grab; background: var(--color-header-background); font-size: var(--font-size-13); color: var(--color-light-1); border-bottom: 1px solid var(--color-border); } .application .window-header .window-icon { flex: none; } .application .window-header .window-title { flex: 1; font-size: inherit; font-family: inherit; font-weight: inherit; text-shadow: none; margin: 0; line-height: var(--header-height); border: none; overflow: hidden; text-align: left; white-space: nowrap; text-overflow: ellipsis; } .application .window-header button.header-control { flex: 0 0 var(--button-size); height: var(--button-size); padding: 0; margin: 0; border: none; } .application .controls-dropdown { position: absolute; overflow: hidden auto; top: var(--header-height); right: 0; width: max-content; min-width: 100px; max-width: 300px; max-height: 0; z-index: 1; list-style: none; margin: 0 0.25rem; padding: 0; background: var(--background); border-radius: 0 0 4px 4px; transition: max-height 0.5s; pointer-events: none; } .application .controls-dropdown.expanded { max-height: calc(100% - var(--header-height)); pointer-events: all; box-shadow: 0 0 8px var(--color-cool-3); } .application .controls-dropdown .header-control { margin: 0.25rem; } .application .controls-dropdown .header-control > button { --button-background-color: none; --button-text-color: var(--color-text-primary); width: 100%; display: flex; justify-content: space-between; border: none; font-size: var(--font-size-12); } .application .window-resize-handle { position: absolute; inset: auto -2px -3px auto; width: 11px; height: 11px; cursor: nwse-resize; background: transparent url("../ui/resize-handle.webp") no-repeat center / contain; } .application.minimized .window-resize-handle { display: none; } .theme-dark .application .window-content { backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .theme-dark .application .window-resize-handle { filter: invert(1); } /** * Reduced Transparency Preferences */ @media (prefers-reduced-transparency) { .theme-dark .application, .theme-foundry .application { --background: var(--color-cool-5); } .application .window-content { backdrop-filter: none; -webkit-backdrop-filter: none; } .app { backdrop-filter: none; -webkit-backdrop-filter: none; } #tooltip, .locked-tooltip { backdrop-filter: none; -webkit-backdrop-filter: none; } } .standard-form { display: flex; flex-direction: column; flex-wrap: nowrap; gap: 1rem; /** Tabs */ /** Fieldsets */ /** Buttons */ /* Icon Inputs */ /** Form Groups */ /** Hint Text */ /** Form Footers */ } .standard-form .tab { flex-direction: column; flex-wrap: nowrap; gap: 1rem; } .standard-form .tab.active { display: flex; } .standard-form fieldset { padding: 1rem; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 1rem; border-color: var(--color-fieldset-border); border-radius: 8px; } .standard-form fieldset legend { font-size: var(--font-size-15); font-weight: bold; } .standard-form fieldset:disabled .form-group { pointer-events: none; } .standard-form fieldset.input-grid { --grid-cols: 2; display: grid; grid-template-columns: repeat(var(--grid-cols), 1fr); gap: 0.5rem; } .standard-form button { height: var(--input-height); } .standard-form label.icon:has(> input) { background: var(--input-background-color); border: 1px solid var(--input-border-color); border-radius: 3px; display: flex; align-items: center; gap: 0.25rem; padding: 0.125rem 0.5rem; } .standard-form label.icon:has(> input):has(> input:disabled) { border: none; } .standard-form label.icon:has(> input):focus-within { outline: 2px solid var(--input-focus-outline-color); } .standard-form label.icon:has(> input) > input { flex: 1; border: none; border-radius: 0; width: unset; padding: 0; background: none; } .standard-form label.icon:has(> input) > input:focus { box-shadow: none; outline: none; } .standard-form label.icon:has(> input) > i { flex: none; } .standard-form .form-group { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; margin: 0; gap: 0.5rem; } .standard-form .form-group > * { flex: 2; } .standard-form .form-group > input[type=checkbox] { flex: none; } .standard-form .form-group > label { flex: 1; color: var(--color-form-label); font-weight: bold; line-height: var(--input-height); } .standard-form .form-group > label > i { margin-right: 0.25rem; } .standard-form .form-group > label > input { font-weight: initial; } .standard-form .form-group > label.icon { flex: 0 0 1rem; } .standard-form .form-group > label.icon > i { margin: 0; } .standard-form .form-group.stacked > * { flex: 0 0 100%; } .standard-form .form-group:hover > label { color: var(--color-form-label-hover); } .standard-form .form-fields { width: 100%; display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 0.5rem; } .standard-form .form-fields > * { flex: 1; } .standard-form .form-fields > input[type="checkbox"], .standard-form .form-fields > label { flex: none; } .standard-form .form-fields.flexcol { flex-direction: column; } .standard-form .hint { margin: 0; font-size: var(--font-size-14); color: var(--color-form-hint); } .standard-form .form-group .hint { flex: 0 0 100%; } .standard-form .form-group:hover .hint { color: var(--color-form-hint-hover); } .standard-form .form-footer { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 0.5rem; } .standard-form .form-footer > button, .standard-form .form-footer a.button { flex: 1; height: calc(1.25 * var(--input-height)); min-width: 180px; } /* ---------------------------------- */ /* Dialog V2 */ /* ---------------------------------- */ .application.dialog { padding: 0; margin: 0; } .application.dialog:not([open]) { display: none; } .application.dialog .standard-form .form-footer { flex-wrap: nowrap; } .application { /* ---------------------------------------- */ /* Headers */ /* ---------------------------------------- */ /** Bordered Header */ /** Divider Header */ /* ---------------------------------------- */ /* Text */ /* ---------------------------------------- */ /* ---------------------------------------- */ /* Blockquotes */ /* ---------------------------------------- */ /* ---------------------------------------- */ /* Lists */ /* ---------------------------------------- */ /** Lists without list style */ /* ---------------------------------------- */ /* Links */ /* ---------------------------------------- */ /* ---------------------------------------- */ /* Tables */ /* ---------------------------------------- */ /* ---------------------------------------- */ /* Dividers */ /* ---------------------------------------- */ /* ---------------------------------------- */ /* Code Blocks */ /* ---------------------------------------- */ /* Inline Code Blocks */ /* ---------------------------------------- */ /* Text Input Fields */ /* ---------------------------------------- */ /** Browser Time/Date Icons */ /** Placeholder Text */ /** Icon Decorated Inputs */ /** Search Fields */ /** Number Fields */ /** File Input Fields */ /** Hint Icons in Labels */ /* ---------------------------------------- */ /* Checkboxes */ /* ---------------------------------------- */ /** Labeled Checkboxes */ /* Text Areas */ /* ---------------------------------------- */ /* Range Inputs */ /* ---------------------------------------- */ /* ---------------------------------------- */ /* Buttons */ /* ---------------------------------------- */ /** Bright Buttons */ /* ----------------------------------------- */ /* Common Sub-Elements */ /* ----------------------------------------- */ /* ----------------------------------------- */ /* ColorPicker Element */ /* ----------------------------------------- */ /* ----------------------------------------- */ /* MultiSelect Element */ /* ----------------------------------------- */ /* ----------------------------------------- */ /* ProseMirror Editor Element */ /* ----------------------------------------- */ /* ----------------------------------------- */ /* RangePicker Element */ /* ----------------------------------------- */ /* ----------------------------------------- */ /* Tags Elements */ /* ----------------------------------------- */ /* ----------------------------------------- */ /* FilePicker Element */ /* ----------------------------------------- */ /* ----------------------------------------- */ /* Content Links */ /* ----------------------------------------- */ /* ---------------------------------------- */ /* Flexbox */ /* ---------------------------------------- */ /* ---------------------------------------- */ /* Global Classes */ /* ---------------------------------------- */ /** Scrollable Containers */ /* ---------------------------------------- */ /* Global Notifications */ /* ---------------------------------------- */ /* ---------------------------------------- */ /* Tabbed Navigation */ /* ---------------------------------------- */ /* ----------------------------------------- */ /* Context Dropdown Menu /* ----------------------------------------- */ /* ----------------------------------------- */ /* Dialog Windows /* ----------------------------------------- */ /* ---------------------------------------- */ /* Global Tooltip */ /* ---------------------------------------- */ } .application h1, .application h2, .application h3, .application h4, .application h5, .application h6 { margin: 2rem 0 1rem; line-height: 1; text-shadow: 1px 1px 4px #000; } .application h1:first-child, .application h2:first-child, .application h3:first-child, .application h4:first-child, .application h5:first-child, .application h6:first-child { margin-top: 0; } .application h1 { font-family: var(--font-h1); font-size: var(--font-h1-size); color: var(--color-light-1); } .application h2 { font-family: var(--font-h2); font-size: var(--font-h2-size); color: var(--color-light-1); } .application h3 { font-family: var(--font-h3); font-size: var(--font-h3-size); color: var(--color-light-1); } .application h4 { font-family: var(--font-h4); font-size: var(--font-h4-size); color: var(--color-light-2); } .application h5 { font-family: var(--font-h5); font-size: var(--font-h5-size); color: var(--color-light-2); } .application h6 { font-family: var(--font-h6); font-size: var(--font-h6-size); color: var(--color-light-2); } .application h1.border, .application h2.border, .application h3.border, .application h4.border { clear: both; padding: 1rem 0 0.6rem; position: relative; text-indent: 0.5rem; } .application h1.border::before, .application h2.border::before, .application h3.border::before, .application h4.border::before { position: absolute; top: 0; display: block; width: 100%; height: 100%; content: ""; border-top: 2px solid var(--color-warm-2); border-bottom: 2px solid var(--color-warm-2); -webkit-mask-image: linear-gradient(90deg, transparent 0%, black 50%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0%, black 50%, transparent 100%); } .application h3.border::before, .application h4.border::before { border-top: 2px solid var(--color-warm-3); border-bottom: 2px solid var(--color-warm-3); } .application h1.divider, .application h2.divider, .application h3.divider, .application h4.divider { clear: both; display: flex; justify-content: center; align-items: center; white-space: nowrap; border: none; } .application h1.divider::before, .application h2.divider::before, .application h3.divider::before, .application h4.divider::before { content: ""; width: 50%; margin-right: 0.5rem; border-top: 2px ridge var(--color-warm-1); -webkit-mask-image: linear-gradient(90deg, transparent 0%, black 100%); mask-image: linear-gradient(90deg, transparent 0%, black 100%); } .application h1.divider::after, .application h2.divider::after, .application h3.divider::after, .application h4.divider::after { content: ""; width: 50%; margin-left: 0.5rem; border-top: 2px ridge var(--color-warm-1); -webkit-mask-image: linear-gradient(270deg, transparent 0%, black 100%); mask-image: linear-gradient(270deg, transparent 0%, black 100%); } .application p { margin: 0.5rem 0; } .application p.inactive { color: var(--color-light-5); } .application span.highlight { color: var(--color-warm-1); } .application ::selection { background: var(--color-text-selection-bg); color: var(--color-text-selection); } .application .ellipsis { white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } .application blockquote { margin: 0; padding: 0.5rem 1rem; font-family: var(--font-blockquote); font-style: italic; } .application ul, .application ol { margin: 1rem 0; padding: 0 0 0 1.25rem; } .application ul li, .application ol li { margin-bottom: 0.25rem; } .application ul li:last-child, .application ol li:last-child { margin-bottom: 0; } .application ul ul, .application ol ul, .application ul ol, .application ol ol { margin: 0.25rem 0 0; } .application ul ul li, .application ol ul li, .application ul ol li, .application ol ol li { margin: 0; } .application ul.plain, .application ol.plain { list-style: none; margin: 0; padding: 0; } .application dl dt { display: inline-block; color: var(--color-light-2); text-shadow: 1px 1px #000; margin: 0 0 0.25rem; } .application dl dd { margin: 0 0 1rem 1rem; } .application a[href] { color: var(--color-warm-1); overflow-wrap: break-word; } .application a[href]:hover { text-shadow: 0 0 8px var(--color-warm-2); } .application a.control { cursor: pointer; } .application a.control > i { margin-right: 0.25rem; } .application a.control:hover { color: var(--color-light-2); text-shadow: 0 0 8px var(--color-warm-2); } .application table { margin: 1rem; background: var(--table-background-color); border-spacing: 0; border-radius: 8px; overflow: hidden; } .application table th, .application table td { padding: 0.5rem 1rem; } .application table thead { background: var(--color-cool-4); font-size: 1.1em; color: var(--color-light-1); font-weight: bold; text-align: left; } .application table thead th { line-height: 1.5; border-bottom: 1px solid var(--color-cool-4); } .application table tfoot { background: var(--color-cool-4); font-size: 1.1em; font-weight: bold; color: var(--color-light-1); } .application table tfoot td { line-height: 1.5; border-top: 1px solid var(--color-cool-4); } .application hr { clear: both; border: 0; height: 2px; margin: 1rem 0; color: var(--color-light-3); background-image: linear-gradient(90deg, transparent 0%, #e7d1b1 50%, transparent 100%); } .application p code, .application li code, .application span code { display: inline-block; padding: 1px 0.25rem; margin: -1px 0; font-size: var(--font-size-14); word-break: keep-all; white-space: nowrap; } .application code { display: block; padding: 0.5rem; color: var(--color-light-2); background: var(--color-cool-4); border: 1px solid var(--color-cool-3); border-radius: 3px; user-select: text; --color-text-selection-bg: var(--color-cool-3); } .application span.reference { flex: none; display: inline-block; padding: 0.25rem 0.5rem; font-size: var(--font-size-14); color: #c5dbe3; border: 1px solid #def7ff; border-radius: 3px; } .application input[type="text"], .application input[type="number"], .application input[type="password"], .application input[type="date"], .application input[type="time"], .application input[type="search"], .application input[type="file"], .application select { width: 100%; height: var(--input-height); line-height: var(--input-height); padding: 0 0.5rem; background: var(--input-background-color); border: 1px solid var(--input-border-color); border-radius: 4px; outline: 1px solid transparent; color: var(--input-text-color); user-select: text; font-size: var(--font-size-14); transition: outline-color 0.5s; } .application input[type="text"]:focus, .application input[type="number"]:focus, .application input[type="password"]:focus, .application input[type="date"]:focus, .application input[type="time"]:focus, .application input[type="search"]:focus, .application input[type="file"]:focus, .application select:focus { outline: 2px solid var(--input-focus-outline-color); } .application input[type="text"]:disabled, .application input[type="number"]:disabled, .application input[type="password"]:disabled, .application input[type="date"]:disabled, .application input[type="time"]:disabled, .application input[type="search"]:disabled, .application input[type="file"]:disabled, .application select:disabled { opacity: 1; pointer-events: none; } .application input[readonly] { pointer-events: none; } .application select { user-select: none; } .application select option { background: var(--color-select-option-bg); } .application ::-webkit-calendar-picker-indicator { display: none; } .application ::placeholder { color: var(--input-placeholder-color); } .application label.username, .application label.password, .application label.search { display: flex; align-items: center; } .application label.username > input, .application label.password > input, .application label.search > input { padding-right: 30px; } .application label.username::after, .application label.password::after, .application label.search::after { flex: 0 0 30px; margin-left: -30px; display: inline-block; line-height: var(--input-height); font-size: 12px; font-family: var(--font-awesome); font-weight: 900; text-align: center; color: var(--color-light-5); } .application label.username::after { content: "\F007"; } .application label.password::after { content: "\F084"; } .application label.search::after { content: "\F002"; } .application input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; display: inline-block; width: 12px; height: 12px; margin-left: 0.5rem; background: linear-gradient(45deg, transparent 0%, transparent 43%, var(--color-light-5) 45%, var(--color-light-5) 55%, transparent 57%, transparent 100%), linear-gradient(135deg, transparent 0%, transparent 43%, var(--color-light-5) 45%, var(--color-light-5) 55%, transparent 57%, transparent 100%); cursor: pointer; } .application input[type="number"]::-webkit-inner-spin-button, .application input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; } .application input[type="number"] { -moz-appearance: textfield; } .application input[type="file"] { font-size: 0.75rem; } .application label.hint { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; } .application label.hint > i { cursor: pointer; transition: 0.5s; } .application label.hint > i:hover { color: var(--color-warm-1); } .application input[type="checkbox"] { --checkbox-size: 20px; cursor: pointer; appearance: none; -webkit-appearance: none; -moz-appearance: none; } .application input[type="checkbox"]:disabled, .application input[type="checkbox"][readonly] { cursor: initial; } .application input[type="checkbox"]:focus { color: inherit; outline: none; } .application input[type="checkbox"]:focus-visible::before { outline: 2px solid var(--input-focus-outline-color); } .application input[type="checkbox"]:checked:focus-visible::before { outline: 2px solid var(--input-focus-outline-color); } .application input[type="checkbox"]::before, .application input[type="checkbox"]::after { width: var(--checkbox-size); height: var(--checkbox-size); font-size: var(--checkbox-size); line-height: var(--checkbox-size); border-radius: 3px; } .application input[type="checkbox"]::before { font-family: var(--font-awesome); font-weight: var(--checkbox-font-weight); color: var(--checkbox-background-color); content: "\f0c8"; outline: 1px solid transparent; transition: outline-color 0.5s; } .application input[type="checkbox"]:checked { position: relative; } .application input[type="checkbox"]:checked::before, .application input[type="checkbox"]:checked::after { font-family: var(--font-awesome-duotone); } .application input[type="checkbox"]:checked::after { color: var(--checkbox-checked-color); content: "\f14a\f14a"; } .application input[type="checkbox"]:checked::before { color: var(--checkbox-checkmark-color); content: "\f14a"; position: absolute; } .application input[type="checkbox"]:disabled::before, .application input[type="checkbox"][readonly]::before { color: var(--checkbox-disabled-color); } .application label.checkbox { flex: auto; display: flex; align-items: center; gap: 0.25rem; padding: 0; margin: 0; font-size: var(--font-size-12); } .application label.checkbox > input[type="checkbox"] { --checkbox-size: 16px; flex: none; top: 0; margin: 0; width: var(--checkbox-size); height: var(--checkbox-size); } .application textarea { --color-text-selection-bg: var(--color-cool-3); min-height: 50px; padding: 1rem; background: transparent; border: 1px solid var(--color-cool-4); border-radius: 4px; font-family: var(--font-monospace); font-size: var(--font-size-14); color: var(--input-text-color); user-select: text; resize: vertical; } .application textarea:focus { box-shadow: 0 0 6px var(--color-warm-1); outline: 1px solid transparent; } .application textarea:read-only { color: var(--color-light-4); box-shadow: none; } .application input[type=range] { --thumb-size: 12px; appearance: none; -webkit-appearance: none; -moz-appearance: none; background: transparent; height: 20px; margin: 0; width: 100%; border-radius: 4px; } .application input[type=range]::-webkit-slider-runnable-track { width: 100%; height: calc(var(--thumb-size) / 2); background: var(--range-track-color); cursor: pointer; } .application input[type=range]::-webkit-slider-thumb { cursor: pointer; appearance: none; -webkit-appearance: none; height: var(--thumb-size); width: var(--thumb-size); background: var(--range-thumb-background-color); border: 1px solid var(--range-thumb-border-color); } .application input[type=range]::-moz-range-track { width: 100%; height: calc(var(--thumb-size) / 2); background: var(--range-track-color); cursor: pointer; } .application input[type=range]::-moz-range-thumb { cursor: pointer; appearance: none; -webkit-appearance: none; height: var(--thumb-size); width: var(--thumb-size); background: var(--range-thumb-background-color); border: 1px solid var(--range-thumb-border-color); } .application input[type=range]:disabled, .application input[type=range][readonly] { pointer-events: none; filter: grayscale(1) opacity(0.33); } .application input[type=range]:focus { outline: none; } .application a.button, .application button { display: flex; align-items: center; justify-content: center; padding: 0 0.5rem; background: var(--button-background-color); border: 1px solid var(--button-border-color); border-radius: 4px; color: var(--button-text-color); text-decoration: none; cursor: pointer; font-size: var(--font-size-14); } .application a.button > i, .application button > i { pointer-events: none; margin-right: 0.25rem; } .application a.button > label, .application button > label { pointer-events: none; } .application a.button:disabled, .application button:disabled { pointer-events: none; } .application a.button:hover, .application button:hover { background: var(--button-hover-background-color); color: var(--button-hover-text-color); border-color: var(--button-hover-border-color); transition: background-color 0.5s, border-color 0.5s; } .application a.button:focus, .application button:focus { outline: 1px solid var(--button-focus-outline-color); box-shadow: 0 0 4px var(--button-focus-outline-color); } .application a.button.icon > i, .application button.icon > i { margin: 0; } .application a.button.active, .application button.active { outline: 1px solid var(--button-focus-outline-color); box-shadow: 0 0 4px var(--button-focus-outline-color); } .application a.button.bright, .application button.bright { text-transform: uppercase; } .application .tags.input-element-tags { width: 100%; display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 0.25rem; } .application .tags.input-element-tags .tag { display: flex; gap: 0.25rem; align-items: center; padding: 1px 0.25rem; font-size: var(--font-size-12); border: 1px solid var(--color-border-dark-3); border-radius: 4px; } .application color-picker { display: flex; align-items: center; gap: 0.25rem; } .application color-picker > input[type=text] { flex: 1; } .application color-picker > input[type=color] { flex: 0 0 40px; height: 40px; background: transparent; border: none; cursor: pointer; } .application multi-select { display: flex; flex-direction: column; gap: 0.25rem; } .application multi-select select { width: 100%; } .application multi-checkbox { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.5rem; } .application prose-mirror { position: relative; display: flex; flex-direction: column; overflow: hidden; min-height: 150px; } .application prose-mirror .editor-content { flex: 1; padding: 0.25rem; } .application prose-mirror button.toggle { display: none; position: absolute; top: 2px; right: 2px; width: var(--form-field-height); height: var(--form-field-height); line-height: var(--form-field-height); padding: 0; } .application prose-mirror.inactive:hover button.toggle { display: block; } .application range-picker { display: flex; align-items: center; gap: 0.5rem; } .application range-picker > input[type=range] { flex: 1; } .application range-picker > input[type=number] { flex: 0 0 40px; text-align: center; padding: 0; font-size: 0.8em; } .application document-tags, .application string-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem; margin: 0; } .application document-tags > input, .application string-tags > input { flex: 1; } .application document-tags > button, .application string-tags > button { margin: -2px 0; padding: 0; flex: 0 0 36px; line-height: var(--form-field-height); } .application file-picker { display: flex; align-items: center; gap: 0.25rem; margin: 0; } .application file-picker > button { margin: -2px 0; padding: 0; flex: 0 0 36px; line-height: var(--form-field-height); } .application .content-link, .application .inline-roll { --content-link-background: rgba(0, 0, 0, 0.1); background: var(--content-link-background); } .application .flexrow { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; } .application .flexrow > * { flex: 1; } .application .flexcol { display: flex; flex-direction: column; flex-wrap: nowrap; } .application .flexcol > * { flex: none; } .application .flexrow > .flex0, .application .flexcol > .flex0 { flex: 0; } .application .flexrow > .flex1, .application .flexcol > .flex1 { flex: 1; } .application .flexrow > .flex2, .application .flexcol > .flex2 { flex: 2; } .application .flexrow > .flex3, .application .flexcol > .flex3 { flex: 3; } .application .disabled { cursor: default; pointer-events: none; } .application .hidden { display: none !important; } .application .scrollable { --scroll-margin: 0.75rem; margin-right: calc(-1 * var(--scroll-margin)) !important; padding-right: var(--scroll-margin) !important; overflow: hidden auto; } .application #notifications { --position-top: 2rem; position: fixed; width: 100%; top: var(--position-top); margin: 0; padding: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 0.5rem; list-style: none; z-index: var(--z-index-notification); pointer-events: none; } .application #notifications .notification { position: relative; width: 95%; max-width: 1200px; pointer-events: all; } .application .notification { background: rgba(0, 0, 0, 0.5); padding: 0.5rem 1rem; line-height: 1rem; border-radius: 5px; box-shadow: 0 0 10px black; color: var(--color-light-1); font-size: var(--font-size-14); filter: drop-shadow(0 0 2px black); } .application .notification .close { position: absolute; top: -6px; right: -6px; } .application .notification::before { font-family: var(--font-awesome); font-weight: 900; margin-right: 0.5rem; } .application .notification.info { background: var(--color-level-info-bg); border: 1px solid var(--color-level-info-border); } .application .notification.info::before { content: "\f05a"; } .application .notification.warning { background: var(--color-level-warning-bg); border: 1px solid var(--color-level-warning-border); } .application .notification.warning::before { content: "\f071"; } .application .notification.error { background: var(--color-level-error-bg); border: 1px solid var(--color-level-error-border); } .application .notification.error::before { content: "\f06a"; } .application .notification.stable { background: rgba(138, 211, 4, 0.4); } .application .notification.stable::before { content: "\f6d9"; } .application .notification.testing { background: rgba(211, 192, 4, 0.4); } .application .notification.testing::before { content: "\f0ad"; } .application .notification.development { background: rgba(211, 119, 4, 0.4); } .application .notification.development::before { content: "\f6e3"; } .application .notification.prototype { background: rgba(211, 20, 4, 0.4); } .application .notification.prototype::before { content: "\f1e2"; } .application nav.tabs { display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-evenly; align-items: center; gap: 1rem; } .application nav.tabs .item { flex: 1; display: flex; flex-direction: row; justify-content: center; align-items: center; gap: 0.5rem; color: var(--color-light-3); cursor: pointer; } .application nav.tabs .item i { font-size: var(--font-size-24); } .application nav.tabs .item.active { color: var(--color-light-1); text-shadow: 0 0 8px var(--color-warm-1); } .application .tab[data-tab]:not(.active) { display: none; } .application #context-menu { width: 100%; height: max-content; min-width: 150px; max-width: 360px; position: absolute; left: 0; background: var(--color-cool-5); border: 1px solid var(--color-cool-3); border-radius: 5px; color: var(--color-text-light-1); z-index: calc(var(--z-index-app) + 1); } .application #context-menu.expand-down { top: calc(100% + 2px); } .application #context-menu.expand-up { bottom: calc(100% + 2px); } .application #context-menu ol.context-items, .application #context-menu li.context-group > ol { list-style: none; margin: 0; padding: 0; } .application #context-menu li.context-group { border-bottom: 1px solid var(--color-cool-4); } .application #context-menu li.context-group:last-child { border: none; } .application #context-menu li.context-item { border: 1px solid transparent; padding: 0.25rem 0.5rem; line-height: 32px; cursor: pointer; transition: 0.1s; } .application #context-menu li.context-item > i { margin-right: 0.5rem; } .application #context-menu li.context-item:hover { border: 1px solid var(--color-cool-4); background: black; color: var(--color-light-1); } .application .window-app #context-menu { z-index: calc(var(--z-index-window) + 1); } .application .dialog .dialog-content { font-size: var(--font-size-14); } .application .dialog .dialog-buttons { display: flex; align-items: center; gap: 1rem; margin-top: 1rem; } .application .dialog .dialog-buttons button { flex: 2; height: 40px; } .application .dialog .dialog-buttons button.default { flex: 3; } .application #tooltip, .application .locked-tooltip { position: fixed; width: max-content; max-width: 320px; padding: 0.5rem 1rem; background: var(--color-cool-5-90); font-family: var(--font-primary); font-size: var(--font-size-14); line-height: var(--font-size-16); color: var(--color-light-1); border-radius: 4px; box-shadow: 0 0 4px #000; z-index: var(--z-index-tooltip); pointer-events: none; overflow-wrap: break-word; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); visibility: hidden; opacity: 0; transition: visibility 0s 500ms, opacity 500ms; } .application #tooltip.text-right, .application .locked-tooltip.text-right { text-align: right; } .application #tooltip.active, .application .locked-tooltip.active { visibility: visible; opacity: 1; transition: opacity 500ms; } .application #tooltip.tour, .application .locked-tooltip.tour { pointer-events: all; } .application .locked-tooltip { pointer-events: all; border: 1px solid var(--color-warm-2); } .application .flexrow { align-items: center; } .application .window-header button.header-control { color: var(--color-light-text-heading); background: none; }