:root { color-scheme: light dark; /* Size of text in message bubbles */ --message-text-size: 10pt; /* Height of caption panel */ --caption-panel-height: 4rem; /* Wallpaper */ --wallpaper-url: url('../img/bkg/a00.png'); /* path relative to CSS file */ --wallpaper-repeat: repeat; --wallpaper-blur: 0px; --wallpaper-invert: 0; --wallpaper-brightness: 1; --wallpaper-size: contain; --wallpaper-position: center; /* Core Palette */ --clr-bright: light-dark(#fff, #181818); --clr-dark: light-dark(#000, #fff); --clr-transparent: transparent; --clr-std-gray: #808080; /* Standard gray color */ --clr-std-ltgray: light-dark(#c0c0c0, #3f3f3f); /* Standard silver color */ --clr-std-teal: teal; /* Standard teal color */ --clr-std-grey: grey; /* Standard grey color */ --clr-std-orange: #ffa500; /* Standard orange color */ /* Primary Accent Colors */ --clr-primary-accent: light-dark(#2094f3, #0e6dba); /* blue 500, links, borders */ --clr-primary-accent-hover: light-dark(#0a6ebd, #116ab4); /* hover for primary accent */ --clr-primary-accent-focus-shadow: light-dark(rgba(33, 150, 243, 0.25), rgba(3, 7, 12, 0.25)); /* focus shadow for inputs with primary accent */ --clr-primary-accent-transparent-medium: light-dark(rgba(33, 150, 243, 0.3), rgba(20, 70, 120, 0.3)); /* for active call shadow */ --clr-primary-action: light-dark(#1e89e6, #1571c1); /* blue 600, primary buttons */ --clr-primary-action-hover: light-dark(#2962ff, #0037b8); /* hover for primary action */ --clr-secondary-accent: light-dark(#0097a8, #006570); /* Checkmark icon, unread badge bg */ --clr-primary-light-blue: light-dark(#bcdefb, #78a0be); /* light-blue 100, side caption panel text/link */ --clr-light-blue-accent: light-dark(#0398e2, #0379b5); /* light-blue accent, reply quote border, pinned active dot */ /* Secondary/Neutral Grays & Backgrounds */ --clr-body-background: var(--clr-std-ltgray); /* Main page background */ --clr-text-primary: light-dark(#666, #999); /* Default text color */ --clr-text-secondary: light-dark(#757575, #8a8a8a); /* Muted text, icons e.g. menu trigger */ --clr-text-tertiary: light-dark(#999, #787878); /* Even more muted text, borders, some icons */ --clr-text-tertiary-activated: #888; /* Activated (hover, focus) tertiary text */ --clr-text-placeholder: light-dark(#bbb, #555); /* Placeholder text */ --clr-text-disabled: light-dark(#888, #777); /* Disabled text e.g. in-place-edit */ --clr-border-light: light-dark(#ccc, #555); /* Common light border, separator */ --clr-border-muted: light-dark(#ddd, #444); /* Softer border, e.g. in-place-edit dashed */ --clr-background-off-white: light-dark(#fafafa, #222); /* Common very light background */ --clr-background-light-gray: light-dark(#f0f0f0, #0f0f0f); /* HR background, action button hover */ --clr-background-extra-light-gray: light-dark(#eee, #222); /* Flat button faux bg, tabbar bg, chip bg */ --clr-background-blue-gray-50: light-dark(#edf0f2, #202c33); /* Contact hover, messages panel, send message panel */ --clr-background-blue-gray-75: light-dark(#e1e8eb, #182124); /* Contact pinned */ --clr-background-blue-gray-100: light-dark(#cfd8dc, #20272a); /* Contact selected, uploader bar */ --clr-background-blue-gray-300: light-dark(#b0bec5, #354146); /* Topic/Info caption panel bg, some lettertiles */ --clr-blue-wash-light: light-dark(#f0f0ff, #22222d); /* bot form button bg */ --clr-blue-wash-medium: light-dark(#d8e8ff, #123550); /* Pinned active bg */ --clr-primary-wash: light-dark(#e3f2fd, #072f45); /* Secondary button hover, avatar upload hover, bubble meta deleted bg */ --clr-indigo-50: light-dark(#e8eaf6, #1a2c44); /* Outline button hover */ /* Semantic Colors: Danger, Warning, Success, Info */ --clr-danger-text: light-dark(#d33131, #931f1f); /* Danger text, invalid label */ --clr-danger-text-hover: light-dark(#f44034, #cc1100); /* Hover for danger text */ --clr-error-text-muted: light-dark(#cc6666, #993333); /* For less critical errors like invalid in-place edit icon/text */ --clr-error-bg-light: light-dark(#ffccd1, #ff6675); /* Info box error bg */ --clr-error-border-light: light-dark(#ffbdc6, #ff334e); /* Info box error border */ --clr-error-text-dark: light-dark(#b51c1c, #de2323); /* Info box error text, icon */ --clr-error-icon: light-dark(#ef5552, #d81b0e); /* Info box error icon specific */ --clr-warning-accent: light-dark(#FFC107, #808020); /* Amber, danger-color */ --clr-warning-bg-light: light-dark(#fff9c4, #00060c); /* Info box warning bg */ --clr-warning-border-light: light-dark(#fff59d, #000a2b); /* Info box warning border */ --clr-warning-text-dark: light-dark(#6d4c41, #a08356); /* Info box warning text */ --clr-warning-icon: light-dark(#fbc02d, #b48204); /* Info box warning icon specific */ --clr-info-bg-light: light-dark(#e1f5fe, #010a0e); /* Info box info bg */ --clr-info-border-light: light-dark(#b3e5fc, #001824); /* Info box info border */ --clr-info-text-dark: light-dark(#0288d1, #00151f); /* Info box info text, icon */ /* Special UI Elements Colors */ --clr-header-stripe-bg: light-dark(#3949AB, #12152f); /* Deep-blue stripe at top */ --clr-scrollbar-thumb: light-dark(rgba(0,0,0,0.3), rgba(255,255,255,0.3)); --clr-scrollbar-track: light-dark(rgba(255,255,255,0.1), rgba(0,0,0,0.1)); --clr-menu-item-hover-bg: light-dark(#f5f5f5, #0a0a0a); --clr-alert-overlay-bg: light-dark(rgba(240,240,240,0.85), rgba(15,15,15,0.85)); --clr-verified-accent: light-dark(#02a6f2, #027db6); /* Verified color */ --clr-staff-accent: light-dark(#689f38, #598830); /* Staff color */ --clr-badge-inv: light-dark(#fffd, #cccd); /* Badge inverted text */ --clr-cyan-50: light-dark(#e0f7fa, #2f3e43); /* Dummy view bg */ --clr-overlay-white-strong: light-dark(rgba(255, 255, 255, 0.9), rgba(0,0,0,0.90)); /* Image preview bg, video container bg */ --clr-gray-medium-bg: light-dark(#777, #444); /* Image preview container bg (darker gray) */ --clr-toast-bg: #333; --clr-toast-text: light-dark(#eee, #aaa); --clr-online: #4caf50; --clr-offline: light-dark(#ccc, #999); /* Shadow Colors & Values */ --clr-shadow-input-underline: rgba(0,0,0, 0.1); --clr-shadow-hr-inset: rgba(0,0,0,0.15); --clr-shadow-scrollbar-track-webkit: rgba(0,0,0,0.2); --clr-shadow-button: rgba(0,0,0, 0.25); /* General purpose shadow for buttons, spinners etc. */ --clr-shadow-button-inset-active: rgba(0,0,0, 0.125); --clr-shadow-dialog: rgba(0,0,0, 0.45); /* For menus, alerts, dialogs */ --clr-shadow-panel-divider: rgba(0,0,0,0.1); /* For subtle shadows under/above panels */ --clr-shadow-gray-strong: light-dark(var(--clr-std-gray), #333); /* For panel box-shadows using 'gray' keyword */ --clr-shadow-silver-subtle: light-dark(var(--clr-std-ltgray), #333); /* For panel box-shadows using 'silver' keyword */ --clr-shadow-bubble-drop: rgba(0,0,0,0.3); /* Buttons */ --clr-button-primary-bg: var(--clr-primary-action); --clr-button-primary-text: var(--clr-bright); --clr-button-primary-hover-bg: var(--clr-primary-action-hover); --clr-button-secondary-bg: var(--clr-bright); --clr-button-secondary-text: var(--clr-primary-accent); --clr-button-secondary-hover-bg: var(--clr-primary-wash); --clr-button-outline-text: var(--clr-primary-accent); --clr-button-outline-border: var(--clr-std-ltgray); --clr-button-outline-hover-bg: var(--clr-indigo-50); --clr-button-danger-bg: light-dark(#ec645f, #d74742); --clr-button-danger-text: var(--clr-bright); --clr-button-danger-hover-bg: light-dark(#f77, #a55); --clr-button-positive-bg: light-dark(#71c46f, #3f983e); --clr-button-positive-text: var(--clr-bright); --clr-button-positive-hover-bg: light-dark(#7fed7f, #6ec26e); /* Inputs */ --clr-input-text: var(--clr-text-primary); --clr-input-border: var(--clr-border-light); --clr-input-border-focus: var(--clr-primary-accent); --clr-input-shadow: var(--clr-shadow-input-underline); --clr-input-shadow-focus: var(--clr-primary-accent-focus-shadow); --clr-input-invalid-border: light-dark(#e57171, #561010); --clr-input-invalid-shadow: light-dark(#e5737340, #1a0c0c40); --clr-input-placeholder-text: var(--clr-text-placeholder); /* Chat Bubbles */ --clr-bubble-left-bg: light-dark(#c4e0a3, #3e5c1f); --clr-bubble-left-bg-flash: light-dark(#94a97c, #2c4517); --clr-bubble-right-bg: var(--clr-background-off-white); --clr-bubble-right-bg-flash: var(--clr-border-light); --clr-bubble-text: light-dark(#212121, #bbc); --clr-bubble-meta-text: var(--clr-text-primary); --clr-bubble-meta-deleted-bg: var(--clr-primary-wash); --clr-bubble-meta-date-bg: light-dark(rgba(255 255 255 / 80%), rgba(40 40 40 / 80%)); --clr-bubble-timestamp-text: light-dark(#777, #888); --clr-bubble-author-text: light-dark(#777, #666); /* Reply Quotes */ --clr-reply-quote-border: var(--clr-light-blue-accent); --clr-reply-quote-text: var(--clr-text-primary); --clr-reply-quote-left-bg: light-dark(rgba(255, 255, 255, 0.4), rgba(0, 0, 0, 0.4)); --clr-reply-quote-right-bg: light-dark(#8080801f, #c4c4c42e); --clr-reply-quote-preview-bg: var(--clr-background-off-white); /* Badges (small inline labels) */ --clr-badge-default-bg: light-dark(#e8e8e8, #171717); --clr-badge-default-text: var(--clr-text-primary); --clr-badge-default-border: var(--clr-std-ltgray); --clr-badge-green-bg: light-dark(#efe, #131); --clr-badge-green-text: light-dark(#383, #363); --clr-badge-green-border: light-dark(#aca, #242); --clr-badge-yellow-bg: light-dark(#ffe, #331); /* Note: #ffe is close to white, dark will be black */ --clr-badge-yellow-text: light-dark(#660, #660); --clr-badge-yellow-border: light-dark(#cc9, #552); --clr-badge-blue-bg: light-dark(#f0f0ff, #224); --clr-badge-blue-text: light-dark(#339, #447); --clr-badge-blue-border: light-dark(#aad, #336); --clr-badge-red-bg: light-dark(#fee, #522); --clr-badge-red-text: light-dark(#933, #744); --clr-badge-red-border: light-dark(#c99, #633); --clr-badge-magenta-bg: light-dark(#fef, #535); --clr-badge-magenta-text: light-dark(#939, #747); --clr-badge-magenta-border: light-dark(#c9c, #636); /* Chips */ --clr-chip-bg: var(--clr-background-extra-light-gray); --clr-chip-invalid-text: var(--clr-error-text-muted); --clr-chip-invalid-bg: var(--clr-badge-red-bg); --clr-chip-remove-icon-bg: light-dark(#aaa, #555); --clr-chip-remove-icon-text: var(--clr-background-extra-light-gray); --clr-chip-remove-icon-hover-bg: var(--clr-text-placeholder); --clr-chip-remove-icon-hover-text: var(--clr-bright); /* Tabbar */ --clr-tabbar-bg: var(--clr-background-extra-light-gray); --clr-tabbar-inactive-text: light-dark(rgba(33,150,243,0.6), rgba(22,90,160,1)); --clr-tabbar-active-text: var(--clr-primary-accent); --clr-tabbar-inactive-border: var(--clr-border-light); --clr-tabbar-active-border: var(--clr-primary-accent); /* Miscellaneous UI */ --clr-highlight-text: var(--clr-std-teal); --clr-highlight-preview-text: light-dark(#5f9ea0, #205e60); --clr-spinner-track: light-dark(#f3f3f3, #0c0c0c); --clr-spinner-active: var(--clr-primary-action); --clr-cropper-bounding-box-border: var(--clr-primary-action); --clr-cropper-bounding-box-bg: var(--clr-text-tertiary); --clr-cropper-cutout-border: var(--clr-text-tertiary); --clr-cropper-cutout-shadow: light-dark(rgb(230 246 255 / 66%), rgb(25 10 0 / 66%)); --clr-audio-bg: var(--clr-background-extra-light-gray); --clr-audio-icon: light-dark(rgba(102, 117, 117, 0.8), rgba(153, 138, 138, 0.8)); --clr-audio-icon-disabled: light-dark(rgba(153 153 153 / 75%), rgba(102 102 102 / 75%)); --clr-audio-timer-text: light-dark(rgba(102, 102, 102, 0.75), rgba(153, 153, 153, 0.75)); --clr-pinned-menu-bg: light-dark(#f8f8f8, #1a1a1a); --clr-drag-n-drop-border: var(--clr-std-grey); --clr-drag-n-drop-text: var(--clr-std-grey); --clr-drag-n-drop-bg: light-dark(rgba(255,255,255,.95), rgba(0,0,0,.95)); --clr-drag-n-drop-outline: light-dark(rgba(255,255,255,.95), rgba(0,0,0,.95)); /* Letter Tiles Base */ --clr-lettertile-default-text: light-dark(#fafafacc, #dcdcdccc); --clr-lettertile-hover-text: var(--clr-bright); /* Letter Tile Backgrounds (lt-bg) */ --clr-lt-bg-0: #ef9a9a; --clr-lt-bg-1: #90caf9; --clr-lt-bg-2: #b0bec4; --clr-lt-bg-3: #b49edb; --clr-lt-bg-4: #ffa98f; --clr-lt-bg-5: #a4d5a6; --clr-lt-bg-6: #ededed; --clr-lt-bg-7: #e6ee9b; --clr-lt-bg-8: #c4e0a3; --clr-lt-bg-9: #f0e57f; --clr-lt-bg-10: #f490b1; --clr-lt-bg-11: #a0a8da; --clr-lt-bg-12: #ffdf80; --clr-lt-bg-13: #bcaaa4; --clr-lt-bg-14: #80deea; --clr-lt-bg-15: #cd92d8; /* Letter Tile Dark Backgrounds (dk-bg) */ --clr-dk-bg-0: #c72929; --clr-dk-bg-1: #ad1457; --clr-dk-bg-2: #681b98; --clr-dk-bg-3: #4527a0; --clr-dk-bg-4: #293594; --clr-dk-bg-5: #1565c1; --clr-dk-bg-6: #0277bb; --clr-dk-bg-7: #00838f; --clr-dk-bg-8: #006b5f; --clr-dk-bg-9: #2f7f33; --clr-dk-bg-10: #54892f; --clr-dk-bg-11: #9e9e24; --clr-dk-bg-12: #f9a824; --clr-dk-bg-13: #ff9100; --clr-dk-bg-14: #f06c00; --clr-dk-bg-15: #d54215; /* Letter Tile Foreground Colors (lt-fg) */ --clr-lt-fg-0: var(--clr-lt-bg-0); /* Use same as bg, as these are for text, will follow light-dark */ --clr-lt-fg-1: var(--clr-lt-bg-1); --clr-lt-fg-2: var(--clr-lt-bg-2); --clr-lt-fg-3: var(--clr-lt-bg-3); --clr-lt-fg-4: var(--clr-lt-bg-4); --clr-lt-fg-5: var(--clr-lt-bg-5); --clr-lt-fg-6: var(--clr-lt-bg-6); --clr-lt-fg-7: var(--clr-lt-bg-7); --clr-lt-fg-8: var(--clr-lt-bg-8); --clr-lt-fg-9: var(--clr-lt-bg-9); --clr-lt-fg-10: var(--clr-lt-bg-10); --clr-lt-fg-11: var(--clr-lt-bg-11); --clr-lt-fg-12: var(--clr-lt-bg-12); --clr-lt-fg-13: var(--clr-lt-bg-13); --clr-lt-fg-14: var(--clr-lt-bg-14); --clr-lt-fg-15: var(--clr-lt-bg-15); /* Letter Tile Dark Foreground Colors (dk-fg) */ --clr-dk-fg-0: var(--clr-dk-bg-0); /* Use same as bg, as these are for text, will follow light-dark */ --clr-dk-fg-1: var(--clr-dk-bg-1); --clr-dk-fg-2: var(--clr-dk-bg-2); --clr-dk-fg-3: var(--clr-dk-bg-3); --clr-dk-fg-4: var(--clr-dk-bg-4); --clr-dk-fg-5: var(--clr-dk-bg-5); --clr-dk-fg-6: var(--clr-dk-bg-6); --clr-dk-fg-7: var(--clr-dk-bg-7); --clr-dk-fg-8: var(--clr-dk-bg-8); --clr-dk-fg-9: var(--clr-dk-bg-9); --clr-dk-fg-10: var(--clr-dk-bg-10); --clr-dk-fg-11: var(--clr-dk-bg-11); --clr-dk-fg-12: var(--clr-dk-bg-12); --clr-dk-fg-13: var(--clr-dk-bg-13); --clr-dk-fg-14: var(--clr-dk-bg-14); --clr-dk-fg-15: var(--clr-dk-bg-15); } /* Android workplace and office collaboration. */ #sidepanel.workplace-collaboration-panel { width: 100%; min-width: 0; flex: 1 1 auto; color-scheme: light; background: #f4f5f7; } .workplace-collaboration-panel * { box-sizing: border-box; letter-spacing: 0; } .workplace-page { display: flex; position: relative; width: 100%; min-height: 100%; overflow: hidden; color: #242930; background: #f4f5f7; flex-direction: column; } .workplace-page button, .workplace-page input, .workplace-page textarea { font: inherit; letter-spacing: 0; } .workplace-page button { text-transform: none; } .workplace-page > main { min-height: 0; overflow-y: auto; flex: 1 1 auto; } .workplace-header { display: grid; grid-template-columns: 3.6rem minmax(0, 1fr) 3.6rem; align-items: center; min-height: 4.4rem; padding-top: env(safe-area-inset-top); border-bottom: 1px solid #e6e8eb; background: #fff; flex: none; } .workplace-header h1 { min-width: 0; margin: 0; overflow: hidden; font-size: 1.15rem; font-weight: 650; text-align: center; text-overflow: ellipsis; white-space: nowrap; } .workplace-header button { display: grid; place-items: center; width: 3.6rem; min-width: 3.6rem; height: 3.6rem; min-height: 3.6rem; margin: 0; padding: 0; border: 0; box-shadow: none; color: #242930; background: transparent; } .workplace-header button:last-child { color: #246fce; } .workplace-header .material-icons { font-size: 1.6rem; } .workplace-toast { position: fixed; z-index: 80; bottom: max(1.5rem, env(safe-area-inset-bottom)); left: 50%; max-width: calc(100% - 2rem); padding: 0.7rem 1rem; border-radius: 0.3rem; color: #fff; background: rgba(29,33,39,0.94); text-align: center; transform: translateX(-50%); } .workbench-page { background: #fff; } .workbench-page > main { padding: max(1.4rem, env(safe-area-inset-top)) 1.1rem 1.5rem; } .workbench-profile { display: grid; grid-template-columns: 3.4rem minmax(0, 1fr) 3rem; align-items: center; gap: 0.75rem; min-height: 4.8rem; } .workbench-profile img { width: 3.4rem; height: 3.4rem; border-radius: 0.45rem; object-fit: cover; } .workbench-profile span, .workbench-profile strong, .workbench-profile small { display: block; min-width: 0; } .workbench-profile strong { overflow: hidden; font-size: 1.25rem; text-overflow: ellipsis; white-space: nowrap; } .workbench-profile small { margin-top: 0.25rem; color: #767e88; } .workbench-profile button { display: grid; place-items: center; width: 3rem; min-width: 3rem; height: 3rem; min-height: 3rem; margin: 0; padding: 0; border: 0; box-shadow: none; color: #6c737c; background: transparent; } .workbench-banner { display: grid; grid-template-columns: minmax(0, 1fr) 5.5rem; align-items: center; min-height: 9.5rem; margin: 1.25rem 0 1.6rem; padding: 1.35rem; overflow: hidden; border-radius: 0.5rem; color: #fff; background: #3d7ce5; } .workbench-banner strong, .workbench-banner small { display: block; } .workbench-banner strong { max-width: 13rem; font-size: 1.35rem; line-height: 1.45; } .workbench-banner small { margin-top: 0.8rem; color: rgba(255,255,255,0.85); } .workbench-banner > .material-icons { color: #d9e7ff; font-size: 5rem; } .workbench-apps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.4rem 0.7rem; } .workbench-apps button { display: flex; align-items: center; width: 100%; min-width: 0; min-height: 5.8rem; margin: 0; padding: 0; border: 0; box-shadow: none; color: #30353c; background: transparent; flex-direction: column; } .workbench-apps button > span { display: grid; position: relative; place-items: center; width: 3.7rem; height: 3.7rem; border-radius: 0.7rem; color: #fff; } .workbench-apps span.tone-violet { background: #7659d6; } .workbench-apps span.tone-orange { background: #f07835; } .workbench-apps span.tone-red { background: #df4e46; } .workbench-apps span.tone-blue { background: #3e78d6; } .workbench-apps span.tone-green { background: #35a96b; } .workbench-apps .material-icons { font-size: 2rem; } .workbench-apps em { position: absolute; top: -0.35rem; right: -0.35rem; display: grid; place-items: center; min-width: 1.25rem; height: 1.25rem; padding: 0 0.25rem; border: 2px solid #fff; border-radius: 0.7rem; color: #fff; background: #e33f4b; font-size: 0.68rem; font-style: normal; } .workbench-apps strong { width: 100%; margin-top: 0.55rem; overflow-wrap: anywhere; font-size: 0.85rem; font-weight: 500; line-height: 1.25; text-align: center; } .workplace-bottom-nav { display: grid; grid-template-columns: repeat(2, 1fr); min-height: calc(4.4rem + env(safe-area-inset-bottom)); padding-bottom: env(safe-area-inset-bottom); border-top: 1px solid #e5e7ea; background: #fff; flex: none; } .workplace-bottom-nav button { display: flex; align-items: center; justify-content: center; min-width: 0; min-height: 4.4rem; margin: 0; padding: 0; border: 0; box-shadow: none; color: #9aa1aa; background: transparent; flex-direction: column; } .workplace-bottom-nav button.active { color: #2d73d2; } .workplace-bottom-nav .material-icons { font-size: 1.65rem; } .workplace-bottom-nav span { margin-top: 0.15rem; font-size: 0.72rem; } .workplace-search { display: grid; grid-template-columns: 2.4rem minmax(0, 1fr); align-items: center; min-height: 3rem; margin: 0.8rem; padding: 0 0.65rem; border: 1px solid #e4e7ea; border-radius: 0.35rem; background: #fff; } .workplace-search .material-icons { color: #9ba2aa; } .workplace-search input { width: 100%; height: 2.8rem; margin: 0; padding: 0; border: 0; box-shadow: none; background: transparent; } .organization-content { background: #f4f5f7; } .organization-tree { margin-top: 0.7rem; background: #fff; } .organization-tree button { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr) 2rem; align-items: center; gap: 0.4rem; width: 100%; min-height: 4rem; margin: 0; padding: 0.55rem 1rem; border: 0; border-bottom: 1px solid #eceef0; border-radius: 0; box-shadow: none; color: #30353c; background: #fff; text-align: left; } .organization-tree button > span, .organization-tree button strong, .organization-tree button small { display: block; min-width: 0; } .organization-tree button strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .organization-tree button small { margin-top: 0.2rem; color: #8b929b; } .organization-root > .material-icons:first-child { color: #2f73d2; } .organization-department { padding-left: 1.75rem !important; } .organization-department > .material-icons:first-child { color: #e79a32; } .organization-members button { padding-left: 2.5rem; } .organization-members img { width: 2.5rem; height: 2.5rem; border-radius: 50%; object-fit: cover; } .meeting-list { padding-bottom: 1rem; } .workplace-tabs { display: grid; grid-template-columns: repeat(3, 1fr); min-height: 3.2rem; border-bottom: 1px solid #e7e9ec; background: #fff; } .workplace-tabs button { position: relative; min-width: 0; min-height: 3.2rem; margin: 0; padding: 0; border: 0; box-shadow: none; color: #7b838d; background: transparent; } .workplace-tabs button.active { color: #286fcf; font-weight: 600; } .workplace-tabs button.active::after { position: absolute; bottom: 0; left: 30%; width: 40%; height: 0.18rem; border-radius: 0.1rem; background: #347bd7; content: ''; } .meeting-card, .meeting-draft, .meeting-status { margin: 0.8rem; border: 1px solid #e7e9ec; border-radius: 0.45rem; background: #fff; } .meeting-card { padding: 1rem; } .meeting-card > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.8rem; padding-bottom: 0.85rem; border-bottom: 1px solid #eceef1; } .meeting-card > header span, .meeting-card > header strong, .meeting-card > header small { display: block; } .meeting-card > header small { margin-bottom: 0.25rem; color: #3575cf; } .meeting-card > header strong { font-size: 1.08rem; } .meeting-card > header em { flex: none; padding: 0.3rem 0.5rem; border-radius: 0.25rem; color: #b26e10; background: #fff3df; font-size: 0.75rem; font-style: normal; } .meeting-card > header em.accepted { color: #28784f; background: #e5f5ec; } .meeting-card > header em.declined { color: #ad3d45; background: #fbe9eb; } .meeting-card dl { margin: 0.8rem 0 0; } .meeting-card dl > div { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr); align-items: start; min-height: 2.1rem; } .meeting-card dt, .meeting-card dd { margin: 0; } .meeting-card dt { display: flex; align-items: center; color: #757d87; } .meeting-card dt .material-icons { margin-right: 0.35rem; font-size: 1.15rem; } .meeting-card dd { overflow-wrap: anywhere; } .meeting-card > footer { display: flex; justify-content: flex-end; gap: 0.55rem; margin-top: 0.8rem; } .meeting-card > footer button { min-width: 5.4rem; min-height: 2.5rem; margin: 0; padding: 0 0.8rem; border: 1px solid #d8dce1; border-radius: 0.3rem; box-shadow: none; color: #3073ce; background: #fff; } .meeting-card > footer button.primary, .meeting-card > footer button:last-child { border-color: #347bd7; color: #fff; background: #347bd7; } .meeting-card > footer button .material-icons { margin-right: 0.3rem; font-size: 1.1rem; vertical-align: middle; } .meeting-response { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); } .meeting-response button { min-width: 0 !important; padding: 0 0.3rem !important; } .meeting-draft { display: grid; grid-template-columns: 2.8rem minmax(0, 1fr) auto; align-items: center; gap: 0.6rem; padding: 0.8rem; } .meeting-draft > .material-icons { color: #347bd7; font-size: 2rem; } .meeting-draft span, .meeting-draft strong, .meeting-draft small { display: block; min-width: 0; } .meeting-draft small { margin-top: 0.2rem; color: #838b95; } .meeting-draft button { min-height: 2.4rem; margin: 0; padding: 0 0.6rem; border: 0; box-shadow: none; color: #347bd7; background: transparent; } .meeting-status { padding: 1rem; } .meeting-status h2 { margin: 0 0 0.8rem; font-size: 1rem; } .meeting-status > div, .report-statistics > div { display: grid; grid-template-columns: repeat(3, 1fr); } .meeting-status span, .report-statistics > div span { display: flex; align-items: center; min-width: 0; flex-direction: column; } .meeting-status b, .report-statistics > div b { font-size: 1.35rem; } .meeting-status small, .report-statistics > div small { margin-top: 0.25rem; color: #7c848e; } .report-editor-page > main { padding-bottom: 1rem; } .report-period { display: flex; align-items: center; gap: 0.7rem; padding: 0.9rem 1rem; border-bottom: 1px solid #e8eaed; background: #fff; } .report-period > .material-icons { color: #347bd7; } .report-period span, .report-period strong, .report-period small { display: block; } .report-period small { margin-top: 0.2rem; color: #6b927d; } .report-field { display: block; position: relative; margin-top: 0.7rem; padding: 1rem; background: #fff; } .report-field > span { display: block; margin-bottom: 0.65rem; font-weight: 600; } .report-field > span b { margin-right: 0.2rem; color: #d8414c; } .report-field textarea { display: block; width: 100%; height: 11rem; margin: 0; padding: 0.75rem 0.8rem 2rem; resize: vertical; border: 1px solid #dfe3e7; border-radius: 0.3rem; box-shadow: none; background: #fff; line-height: 1.5; } .report-field > small { position: absolute; right: 1.8rem; bottom: 1.6rem; color: #9ba2ac; } .report-attachment { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr) 2rem; align-items: center; gap: 0.5rem; width: calc(100% - 2rem); min-height: 4.2rem; margin: 0.8rem 1rem; padding: 0.6rem 0.8rem; border: 1px dashed #cad0d7; border-radius: 0.35rem; box-shadow: none; color: #343a42; background: #fff; text-align: left; } .report-attachment > .material-icons:first-child { color: #347bd7; } .report-attachment span, .report-attachment strong, .report-attachment small { display: block; min-width: 0; } .report-attachment small { margin-top: 0.2rem; color: #888f98; } .workplace-submit-bar { padding: 0.75rem 1rem max(0.75rem, env(safe-area-inset-bottom)); border-top: 1px solid #e4e7ea; background: #fff; flex: none; } .workplace-submit-bar button, .workplace-primary { width: 100%; min-height: 3rem; margin: 0; padding: 0 1rem; border: 0; border-radius: 0.35rem; box-shadow: none; color: #fff; background: #347bd7; font-weight: 600; } .report-list-page > main { padding-bottom: 1rem; } .report-role-switch { display: grid; grid-template-columns: repeat(2, 1fr); margin: 0 0.8rem 0.8rem; border: 1px solid #dce0e5; border-radius: 0.3rem; background: #fff; } .report-role-switch button { min-height: 2.6rem; margin: 0; padding: 0; border: 0; box-shadow: none; color: #737b85; background: transparent; } .report-role-switch button.active { color: #fff; background: #347bd7; } .report-cards { margin: 0 0.8rem; } .report-cards article { margin-bottom: 0.7rem; padding: 0.9rem; border: 1px solid #e6e9ec; border-radius: 0.4rem; background: #fff; } .report-cards article > header { display: grid; /* DailyReportCard (the only thing rendered into .report-cards) never renders an avatar -- confirmed no JSX inserts an here -- so the leading 2.6rem avatar column was dead weight that stole space from the name column with only 2 real children (name+badge span, status ), squeezing the badge into wrapping onto its own line for any name long enough to fill it. */ grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 0.6rem; } .report-cards article > header img { width: 2.6rem; height: 2.6rem; border-radius: 50%; object-fit: cover; } .report-cards article > header span, .report-cards article > header strong, .report-cards article > header small { display: block; min-width: 0; } .report-cards article > header small { margin-top: 0.15rem; color: #8b929c; } .report-cards article > header em { padding: 0.3rem 0.45rem; border-radius: 0.25rem; color: #b76811; background: #fff2df; font-size: 0.72rem; font-style: normal; } .report-cards article p { display: -webkit-box; margin: 0.8rem 0; overflow: hidden; line-height: 1.55; -webkit-box-orient: vertical; -webkit-line-clamp: 3; } .report-cards article > footer { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; padding-top: 0.65rem; border-top: 1px solid #eceef1; } .report-cards article > footer span { display: flex; align-items: center; min-width: 0; color: #7e8690; font-size: 0.78rem; } .report-cards article > footer span .material-icons { margin-right: 0.25rem; font-size: 1rem; } .report-cards article > footer button { display: flex; align-items: center; flex: none; min-height: 2.2rem; margin: 0; padding: 0 0.1rem 0 0.6rem; border: 0; box-shadow: none; color: #347bd7; background: transparent; } .report-cards article > footer button .material-icons { font-size: 1.15rem; } .report-cards > button { display: grid; grid-template-columns: 3.2rem minmax(0, 1fr) auto 1.5rem; align-items: center; gap: 0.65rem; width: 100%; min-height: 5.2rem; margin: 0 0 0.7rem; padding: 0.7rem; border: 1px solid #e6e9ec; border-radius: 0.4rem; box-shadow: none; color: #30353c; background: #fff; text-align: left; } .report-month { display: grid; place-items: center; width: 3.2rem; height: 3.2rem; border-radius: 0.35rem; color: #fff; background: #5577b9; } .report-cards > button > span:nth-child(2), .report-cards > button strong, .report-cards > button small { display: block; min-width: 0; } .report-cards > button small { margin-top: 0.25rem; color: #858d97; } .report-cards > button em { padding: 0.25rem 0.4rem; border-radius: 0.25rem; font-size: 0.72rem; font-style: normal; } .report-cards > button em.submitted { color: #28784f; background: #e5f5ec; } .report-cards > button em.draft { color: #ad6c11; background: #fff2dd; } .report-statistics { margin-bottom: 0.7rem; padding: 1rem; background: #fff; } .report-statistics > header { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; margin-bottom: 1rem; } .report-statistics > header span, .report-statistics > header strong, .report-statistics > header small { display: block; } .report-statistics > header small { margin-bottom: 0.2rem; color: #808892; } .report-statistics > header button, .report-statistics > button { min-height: 2.4rem; margin: 0; padding: 0 0.7rem; border: 1px solid #dce0e5; border-radius: 0.3rem; box-shadow: none; color: #347bd7; background: #fff; } .report-statistics > button { display: flex; align-items: center; justify-content: center; width: 100%; margin-top: 1rem; } .report-statistics > button .material-icons { margin-right: 0.35rem; font-size: 1.15rem; } .report-detail { padding-bottom: 1.5rem; } .report-detail > section { margin-bottom: 0.65rem; padding: 1rem; background: #fff; } .report-author { display: grid; grid-template-columns: 3rem minmax(0, 1fr) auto; align-items: center; gap: 0.7rem; } .report-author img { width: 3rem; height: 3rem; border-radius: 50%; object-fit: cover; } .report-author span, .report-author strong, .report-author small { display: block; min-width: 0; } .report-author small { margin-top: 0.2rem; color: #858d96; } .report-author em { color: #2c8257; font-style: normal; } .report-detail h2, .report-detail h3, .report-detail p { margin: 0; } .report-detail h2 { font-size: 1.05rem; } .report-detail h2 + small { display: block; margin-top: 0.4rem; color: #89919b; } .report-detail h3 { margin-bottom: 0.6rem; font-size: 0.98rem; } .report-detail section p { line-height: 1.7; white-space: pre-wrap; } .report-file { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr) 2rem; align-items: center; gap: 0.6rem; } .report-file > .material-icons:first-child { color: #4f74ad; font-size: 2rem; } .report-file span, .report-file strong, .report-file small { display: block; } .report-file small { margin-top: 0.2rem; color: #8b929b; } .report-updated { display: flex; align-items: center; justify-content: center; color: #8a929c; font-size: 0.78rem; } .report-updated .material-icons { margin-right: 0.25rem; font-size: 1rem; } .mailbox-page > main { padding: 0.8rem 1rem 1.5rem; background: #fff; } .mailbox-page label { display: block; position: relative; margin-top: 1rem; } .mailbox-page label > span:first-child { display: block; margin-bottom: 0.55rem; font-weight: 600; } .mailbox-page input[type='text'], .mailbox-page label > input:not([type]), .mailbox-page label > textarea { width: 100%; margin: 0; border: 1px solid #dfe3e7; border-radius: 0.3rem; box-shadow: none; background: #fff; } .mailbox-page label > input:not([type]) { height: 3rem; padding: 0 0.75rem; } .mailbox-page label > textarea { height: 12rem; padding: 0.75rem 0.75rem 2rem; resize: vertical; line-height: 1.5; } .mailbox-content > small { position: absolute; right: 0.75rem; bottom: 0.65rem; color: #9ca3ac; } .mailbox-notice, .mailbox-upload { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr) 1.5rem; align-items: center; gap: 0.5rem; width: 100%; min-height: 4.2rem; margin: 0; padding: 0.65rem 0.75rem; border: 1px solid #dfe4e9; border-radius: 0.35rem; box-shadow: none; color: #343a42; background: #f7f9fb; text-align: left; } .mailbox-notice > .material-icons:first-child { color: #2e7954; } .mailbox-notice span, .mailbox-notice strong, .mailbox-notice small { display: block; min-width: 0; } .mailbox-notice small { margin-top: 0.2rem; color: #78818b; } .mailbox-upload { grid-template-columns: 2.5rem minmax(0, 1fr) auto; margin-top: 1rem; border-style: dashed; } .mailbox-upload > .material-icons { color: #347bd7; } .mailbox-upload small { color: #888f99; } .mailbox-anonymous { display: grid !important; grid-template-columns: 2rem minmax(0, 1fr); align-items: center; gap: 0.5rem; margin: 1rem 0 !important; padding: 0.8rem; border: 1px solid #e4e7ea; border-radius: 0.35rem; } .mailbox-anonymous input { width: 1.25rem; height: 1.25rem; margin: 0; } .mailbox-anonymous span, .mailbox-anonymous strong, .mailbox-anonymous small { display: block; min-width: 0; } .mailbox-anonymous small { margin-top: 0.2rem; color: #858d96; } .mailbox-notice-backdrop { display: grid; position: absolute; z-index: 60; inset: 0; place-items: center; padding: 1rem; background: rgba(20,24,29,0.52); } .mailbox-notice-dialog { width: min(100%, 25rem); padding: 1.25rem; border-radius: 0.5rem; background: #fff; text-align: center; } .mailbox-notice-dialog > .material-icons { color: #2f7854; font-size: 2.7rem; } .mailbox-notice-dialog h2 { margin: 0.6rem 0 0.8rem; font-size: 1.15rem; } .mailbox-notice-dialog p { margin: 0.65rem 0; color: #555d67; line-height: 1.65; text-align: left; } .mailbox-notice-dialog small { display: block; margin: 0.8rem 0; color: #898f98; } .mailbox-notice-dialog button { width: 100%; min-height: 2.9rem; margin: 0.5rem 0 0; padding: 0 1rem; border: 0; border-radius: 0.35rem; box-shadow: none; color: #fff; background: #347bd7; } /* Ch.9 additions: real data needs an arbitrary-depth org tree, repeatable daily-report time blocks, meeting detail/create screens, and a couple of small mailbox extras that the original demo (fixed 2-level tree, single-shot report form) didn't need. */ .organization-loading { padding: 2rem 1rem; color: #8b929c; text-align: center; } .organization-department { display: flex; align-items: center; gap: 0.6rem; width: 100%; min-height: 3.4rem; margin: 0; padding: 0 1rem; border: 0; border-bottom: 1px solid #eceef1; border-radius: 0; box-shadow: none; color: #30353c; background: #fff; text-align: left; text-transform: none; } .organization-department > .material-icons:first-child { color: #8b929c; font-size: 1.3rem; } .organization-department.expanded { color: #2094f3; } .organization-department.expanded > .material-icons:first-child { color: #2094f3; } .organization-department > span { flex: 1 1 auto; min-width: 0; } .organization-department > span strong { display: block; overflow: hidden; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; } .organization-department > .material-icons:last-child { color: #b0b6bd; } .organization-person { display: flex; align-items: center; gap: 0.6rem; width: 100%; min-height: 3.2rem; margin: 0; padding: 0 1rem; border: 0; border-bottom: 1px solid #eceef1; border-radius: 0; box-shadow: none; color: #30353c; background: #fafbfc; text-align: left; text-transform: none; } .organization-person > .material-icons:first-child { color: #b0b6bd; font-size: 1.1rem; } .organization-person > span { flex: 1 1 auto; min-width: 0; } .organization-person > span strong { overflow: hidden; font-weight: 400; text-overflow: ellipsis; white-space: nowrap; } .organization-person.me { color: #2094f3; } .organization-person.me > span strong { color: #2094f3; font-weight: 500; } .organization-person > .material-icons:last-child { color: #b0b6bd; } .meeting-more { display: flex; align-items: center; flex: none; margin: 0; padding: 0; border: 0; box-shadow: none; color: #b0b6bd; background: transparent; font-size: 0.85rem; } .meeting-attendees { color: #347bd7; } .meeting-responded { width: 100%; min-height: 2.4rem; margin: 0; padding: 0 1rem; border: 0; border-radius: 0.3rem; box-shadow: none; color: #8b929c; background: #f2f3f5; } .meeting-participant-list { margin: 0.8rem 0 0; padding: 0.6rem 0 0; border-top: 1px solid #eceef1; list-style: none; } .meeting-participant-list li { display: flex; align-items: center; justify-content: space-between; min-height: 2.3rem; } .meeting-participant-list em { padding: 0.15rem 0.5rem; border-radius: 0.25rem; color: #8b929c; background: #f2f3f5; font-size: 0.72rem; font-style: normal; } .meeting-participant-list em.accepted { color: #28784f; background: #e5f5ec; } .meeting-participant-list em.declined { color: #ad3d45; background: #fbe9eb; } .meeting-participant-list em.tentative { color: #ad6c11; background: #fff2dd; } .meeting-status footer { display: flex; gap: 0.6rem; margin-top: 0.8rem; } .meeting-status footer button { flex: 1 1 auto; min-height: 2.6rem; margin: 0; border: 0; border-radius: 0.3rem; box-shadow: none; color: #347bd7; background: #eaf2fc; } .meeting-status footer button.danger { color: #ad3d45; background: #fbe9eb; } .meeting-time-range { display: flex; align-items: center; gap: 0.5rem; } .meeting-time-range .report-field { flex: 1 1 0; } .meeting-time-range span { color: #8b929c; } .meeting-selected-attendees { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: -0.4rem 0 0.8rem; } .meeting-selected-attendees span { display: flex; align-items: center; gap: 0.25rem; padding: 0.3rem 0.5rem; border-radius: 999px; background: #eaf2fc; color: #347bd7; font-size: 0.82rem; } .meeting-selected-attendees .material-icons { font-size: 0.9rem; cursor: pointer; } .daily-report-block { margin-bottom: 1rem; padding-bottom: 1rem; border-bottom: 1px solid #eceef1; } .daily-report-block-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 0.6rem; } .daily-report-block-header .material-icons { color: #8b929c; cursor: pointer; } .daily-report-date { display: block; margin: -0.3rem 0 0.5rem; color: #8b929c; } .daily-report-add-block { display: flex; align-items: center; justify-content: center; gap: 0.3rem; width: 100%; min-height: 2.6rem; margin: 0 0 1rem; border: 1px dashed #d5d9dd; border-radius: 0.3rem; box-shadow: none; color: #347bd7; background: #fff; } .report-draft-status { margin: 0; color: #8b929c; font-size: 0.82rem; text-align: right; } .report-cards article > header .role-badge, .report-author .role-badge { display: inline-block; flex-shrink: 0; margin-left: 0.4rem; padding: 0.1rem 0.4rem; border-radius: 0.25rem; color: #347bd7; background: #eaf2fc; font-size: 0.72rem; white-space: nowrap; } /* The name before this badge has no length cap of its own (falls back to the raw account id when no nickname is set, which can run much longer than a real name) -- let it truncate instead of squeezing the fixed-width badge next to it into wrapping onto its own line. */ .report-cards article > header > span > strong, .report-author > span > strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .workplace-error { padding: 0.8rem 1rem; color: #ad3d45; text-align: center; } /* Specificity needs to beat `.workbench-profile span` (base.css, above) -- that rule's `display: block` is meant for the plain text-label spans in this same row, but a bare `.workbench-avatar- fallback` alone is one class vs. that rule's class+element, so it lost and fell back to block, silently discarding this rule's own centering and leaving the icon glyph sitting in normal block flow (top-left of the circle) instead of centered. */ .workbench-profile .workbench-avatar-fallback { display: flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border-radius: 50%; color: #fff; background: #b0b6bd; } .mailbox-anonymous-choice { display: flex; gap: 1.2rem; justify-content: center; margin-top: 0.8rem; } .mailbox-anonymous-choice label { display: flex; align-items: center; gap: 0.35rem; color: #58606b; font-size: 0.88rem; } .mailbox-attachment-list { margin: 0.5rem 0 0; padding: 0; list-style: none; } .mailbox-attachment-list li { display: flex; align-items: center; justify-content: space-between; min-height: 2.2rem; color: #58606b; } .mailbox-attachment-list .material-icons { color: #8b929c; cursor: pointer; font-size: 1.1rem; } @media screen and (max-width: 480px) { .workbench-apps { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.2rem 0.35rem; } .workbench-banner { grid-template-columns: minmax(0, 1fr) 4rem; padding: 1rem; } .workbench-banner > .material-icons { font-size: 3.8rem; } .meeting-card dl > div { grid-template-columns: 5.8rem minmax(0, 1fr); } .report-cards > button { grid-template-columns: 3.2rem minmax(0, 1fr) auto 1.2rem; gap: 0.45rem; } } * { box-sizing: border-box; padding: 0; margin: 0; font-family: Roboto, Arial, sans-serif; text-rendering: optimizeLegibility; scrollbar-width: thin; scrollbar-color: var(--clr-scrollbar-thumb) var(--clr-scrollbar-track); } /* Basic elements defined */ html, body { height: 100%; width: 100%; height: 100dvh; width: 100dvw; font-size: 10pt; /* 13.33 px/rem */ color: var(--clr-text-primary); overflow: hidden; background-color: var(--clr-body-background); box-shadow: inset 0 10rem var(--clr-header-stripe-bg); /* the deep-plue stripe accross the top */ } tt { font-family: 'Roboto Mono', Courier, monospace; } a { color: var(--clr-primary-accent); text-decoration: none; } a:hover, a:focus { color: var(--clr-primary-accent-hover); text-decoration: underline; } a.danger { color: var(--clr-danger-text); } a.danger:hover, a.danger:focus { color: var(--clr-danger-text-hover); } a.gray:hover, a.gray:focus { color: var(--clr-text-tertiary); } form { font-size: 1.1rem; padding: 0.5rem 0.75rem; line-height: 1.5; } label { font-size: 1.1rem; margin-right: auto; } label.small { color: var(--clr-primary-action); font-size: 0.95rem; } label.large { color: var(--clr-primary-action); font-size: 1.1rem; } label.invalid { color: var(--clr-danger-text); } img.avatar { width: 100%; height: 100%; border-radius: 50%; } img.avatar.self { padding: 7%; } /* Input fields and buttons */ button { display: inline-block; font-family: inherit; font-size: 1.05rem; height: 2.2rem; line-height: 2.2rem; font-weight: normal; text-align: center; vertical-align: middle; touch-action: manipulation; cursor: pointer; border: 1px solid var(--clr-transparent); white-space: nowrap; padding-left: 1.2rem; padding-right: 1.2rem; border-radius: 4px; box-shadow: 0 1px 3px 0 var(--clr-shadow-button); text-transform: uppercase; min-width: 5rem; margin: 0 0.35rem 0 0.35rem; } button[disabled], html input[disabled] { cursor: default; opacity: 0.65; box-shadow: none; filter: grayscale(50%); } button.round { border-radius: 50%; width: 3rem; height: 3rem; padding: 0; margin: 0; line-height: 3.5rem; outline: none; /* otherwise a square outline is shown */ box-shadow: 0 2px 0.5rem 0 var(--clr-shadow-button); z-index: 2; } button.round.small { width: 2rem; height: 2rem; line-height: 2rem; box-shadow: 0 2px 0.35rem 0 var(--clr-shadow-button); } /* Scoped to the variants whose *default* text is already white (.primary/.danger/.positive below) -- for them this is a no-op safety net. It used to apply to every