Implements all 11 product chapters (auth, messaging, contacts, groups,
files/favorites, calls, workplace/reports, settings, security) against the
real /v1/im REST API and native Tinode WS protocol, replacing the hardcoded
mock data the ba8f48ee prototype commit shipped with. Adds src/lib/im-api.js
as the REST client, plus supporting fixes across messages-view.jsx and the
attachment/upload/download pipeline (wrong SDK auth headers, group topic
naming, seq/timezone edge cases) found via live end-to-end testing against
the real backend.
Backup checkpoint before reconciling with origin/dev's parallel rewrite.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
14178 lines
272 KiB
CSS
14178 lines
272 KiB
CSS
: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 <img> 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 <em>),
|
|
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 <button> unconditionally, which
|
|
silently turned any plain button's text/icon white on hover or press. Most buttons in this app are
|
|
bare <button> elements with a light or unchanged hover background (confirmed: no bare button in
|
|
this file switches to a dark hover background), so that white-out made the label or icon vanish
|
|
against the still-light background -- reported independently on the personal-settings rows, the
|
|
secondary button, and again on the messages home's icon buttons and avatar/list rows in the
|
|
two-pane desktop layout. Do not restore the bare `button:hover` form of this rule. */
|
|
button.primary:hover:not([disabled]), button.primary:active:not([disabled]),
|
|
button.danger:hover:not([disabled]), button.danger:active:not([disabled]),
|
|
button.positive:hover:not([disabled]), button.positive:active:not([disabled]) {
|
|
color: var(--clr-bright);
|
|
}
|
|
button:active {
|
|
box-shadow: inset 0 3px 0.5rem var(--clr-shadow-button-inset-active);
|
|
}
|
|
button:active.round.small {
|
|
box-shadow: inset 0 2px 0.35rem var(--clr-shadow-button-inset-active);
|
|
}
|
|
|
|
button.primary {
|
|
background-color: var(--clr-button-primary-bg);
|
|
color: var(--clr-button-primary-text);
|
|
}
|
|
button.primary:hover:not([disabled]), button.primary:active:not([disabled]) {
|
|
background-color: var(--clr-button-primary-hover-bg);
|
|
}
|
|
|
|
button.secondary {
|
|
background-color: var(--clr-button-secondary-bg);
|
|
color: var(--clr-button-secondary-text);
|
|
}
|
|
button.secondary:hover:not([disabled]), button.secondary:active:not([disabled]) {
|
|
/* Restate the (non-white) text color: the generic button:hover rule forces white text, which
|
|
disappears against this light hover background -- same class of bug as .personal-menu-row. */
|
|
color: var(--clr-button-secondary-text);
|
|
background-color: var(--clr-button-secondary-hover-bg);
|
|
}
|
|
|
|
button.outline {
|
|
background-color: var(--clr-transparent);
|
|
color: var(--clr-button-outline-text);
|
|
border: 1px solid var(--clr-button-outline-border);
|
|
box-shadow: none;
|
|
}
|
|
button.outline:hover:not([disabled]), button.outline:active:not([disabled]) {
|
|
color: var(--clr-button-outline-text);
|
|
background-color: var(--clr-button-outline-hover-bg);
|
|
}
|
|
|
|
button.danger {
|
|
background-color: var(--clr-button-danger-bg);
|
|
color: var(--clr-button-danger-text);
|
|
}
|
|
button.danger:hover:not([disabled]), button.danger:active:not([disabled]) {
|
|
background-color: var(--clr-button-danger-hover-bg);
|
|
}
|
|
|
|
button.positive {
|
|
background-color: var(--clr-button-positive-bg);
|
|
color: var(--clr-button-positive-text);
|
|
}
|
|
button.positive:hover:not([disabled]), button.positive:active:not([disabled]) {
|
|
background-color: var(--clr-button-positive-hover-bg);
|
|
}
|
|
|
|
textarea, input {
|
|
font-family: inherit;
|
|
font-size: 1.1rem;
|
|
background: var(--clr-transparent);
|
|
border: none;
|
|
margin: 0.25rem 0;
|
|
padding: 0 0.125rem;
|
|
outline: none;
|
|
color: var(--clr-input-text);
|
|
}
|
|
|
|
input[type="text"],
|
|
input[type="email"],
|
|
input[type="password"],
|
|
input[type="search"],
|
|
input[type="tel"],
|
|
textarea {
|
|
height: 2.5rem;
|
|
border-bottom: 1px solid var(--clr-input-border);
|
|
box-shadow: 0 1px 0 var(--clr-input-shadow);
|
|
transition: all 0.1s ease-in-out, height 0s;
|
|
}
|
|
|
|
input[type="text"],
|
|
input[type="email"],
|
|
input[type="password"],
|
|
input[type="tel"],
|
|
textarea {
|
|
width: 100%;
|
|
}
|
|
|
|
textarea:focus,
|
|
input[type="text"]:focus,
|
|
input[type="email"]:focus,
|
|
input[type="password"]:focus,
|
|
input[type="search"]:focus,
|
|
input[type="tel"]:focus {
|
|
border-bottom: 1px solid var(--clr-input-border-focus);
|
|
box-shadow: 0 1px 0 var(--clr-input-shadow-focus);
|
|
}
|
|
|
|
textarea.invalid,
|
|
input[type="text"].invalid,
|
|
input[type="email"].invalid,
|
|
input[type="password"].invalid,
|
|
input[type="search"].invalid,
|
|
input[type="tel"].invalid {
|
|
border-bottom: 1px solid var(--clr-input-invalid-border);
|
|
box-shadow: 0 1px 0 var(--clr-input-invalid-shadow);
|
|
}
|
|
|
|
input[type="text"]::placeholder,
|
|
input[type="email"]::placeholder,
|
|
input[type="password"]::placeholder,
|
|
input[type="search"]::placeholder,
|
|
input[type="tel"]::placeholder,
|
|
textarea::placeholder {
|
|
color: var(--clr-input-placeholder-text);
|
|
font-weight: lighter;
|
|
}
|
|
|
|
input[type="text"].with-icon-right,
|
|
input[type="password"].with-icon-right {
|
|
margin-right:-2rem;
|
|
padding-right:2rem;
|
|
}
|
|
|
|
input[type="text"].with-icon-left,
|
|
input[type="password"].with-icon-left {
|
|
margin-left:-1.45rem;
|
|
padding-left:1.75rem;
|
|
}
|
|
|
|
textarea {
|
|
resize: none;
|
|
padding-top: 0.45rem;
|
|
}
|
|
|
|
input[type="range"] {
|
|
width: 90%;
|
|
}
|
|
|
|
option {
|
|
padding: 0;
|
|
}
|
|
|
|
datalist {
|
|
display: flex;
|
|
flex-direction: row;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
}
|
|
|
|
/* END of input and buttons */
|
|
|
|
/* BEGIN scrollbar styling. */
|
|
|
|
/* Chrome & other webkit browsers */
|
|
::-webkit-scrollbar {
|
|
width: 0.6rem;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
-webkit-box-shadow: inset 0 0 6px var(--clr-shadow-scrollbar-track-webkit);
|
|
box-shadow: inset 0 0 6px var(--clr-shadow-scrollbar-track-webkit);
|
|
background-color: var(--clr-scrollbar-track);
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background-color: var(--clr-scrollbar-thumb);
|
|
}
|
|
|
|
/* END of Scrollbar styling. */
|
|
|
|
/* BEGIN Popup/dropdown menu */
|
|
|
|
ul.menu {
|
|
position: absolute;
|
|
list-style: none;
|
|
width: 12rem;
|
|
border-radius: 0.2rem;
|
|
padding-top: 0.35rem;
|
|
padding-bottom: 0.35rem;
|
|
box-shadow: 0 1px 6px var(--clr-shadow-dialog);
|
|
background-color: var(--clr-bright);
|
|
z-index: 4;
|
|
}
|
|
|
|
ul.menu > li {
|
|
padding: 0.75rem 0.75rem 0.75rem 1.25rem;
|
|
cursor: pointer;
|
|
}
|
|
|
|
ul.menu > li:hover {
|
|
background-color: var(--clr-menu-item-hover-bg);
|
|
}
|
|
|
|
ul.menu > li.separator {
|
|
padding: 0;
|
|
margin: 2px;
|
|
height: 1px;
|
|
background-color: var(--clr-border-light);
|
|
}
|
|
|
|
ul.menu > li.separator:hover {
|
|
background-color: var(--clr-border-light);
|
|
}
|
|
|
|
ul.menu > li.disabled {
|
|
pointer-events: none;
|
|
opacity: 0.6;
|
|
}
|
|
|
|
/* The down arrow head - trigger for context menu */
|
|
.menuTrigger {
|
|
position: absolute;
|
|
right: 0.25rem;
|
|
width: 1.4rem;
|
|
height: 1.4rem;
|
|
line-height: 1.4rem;
|
|
border-radius: 0.7rem;
|
|
text-align: center;
|
|
opacity: 0;
|
|
background-color: inherit;
|
|
user-select: none;
|
|
}
|
|
.menuTrigger a {
|
|
color: var(--clr-text-secondary);
|
|
}
|
|
|
|
li .menuTrigger {
|
|
top: 0.25rem;
|
|
}
|
|
li:hover .menuTrigger {
|
|
opacity: 0.9;
|
|
}
|
|
li:hover .menuTrigger a {
|
|
color: var(--clr-text-secondary);
|
|
}
|
|
|
|
/* END popup/dropdown menu */
|
|
|
|
/* Begin Alert: modal window with message and buttons. */
|
|
div.alert-container {
|
|
position: absolute;
|
|
display: flex;
|
|
padding: 1rem;
|
|
justify-content: center;
|
|
align-items: center;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
background: var(--clr-alert-overlay-bg);
|
|
z-index: 3;
|
|
}
|
|
|
|
div.alert {
|
|
position: relative;
|
|
background-color: var(--clr-bright);
|
|
box-shadow: 0.15rem 0.15rem 1.5rem var(--clr-shadow-dialog);
|
|
padding: 1rem;
|
|
border-radius: 0.3rem;
|
|
margin: auto 2rem auto 2rem;
|
|
width: fit-content;
|
|
height: min-content;
|
|
min-width: 16rem;
|
|
max-width: 24rem;
|
|
max-height: 40rem;
|
|
overflow: hidden;
|
|
}
|
|
|
|
div.alert-container .title {
|
|
position: relative;
|
|
color: var(--clr-primary-accent);
|
|
font-size: 1.2rem;
|
|
font-weight: 500;
|
|
width: 100%;
|
|
padding: 0 0 0.35rem 0;
|
|
}
|
|
|
|
div.alert-container .title.with-control {
|
|
position: relative;
|
|
display: flex;
|
|
padding: 0.5rem 0.5rem 0 0.5rem;
|
|
align-items: center;
|
|
flex: none;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
div.alert-container .content {
|
|
position: relative;
|
|
padding: 0.5rem 0 0.5rem 0;
|
|
}
|
|
/* END Alert */
|
|
|
|
/* BEGIN trusted badges with legend */
|
|
div.trusted-badge {
|
|
margin: 0.25rem 0;
|
|
}
|
|
/* END trusted badges */
|
|
|
|
/* Generic text colors */
|
|
.blue {
|
|
color: var(--clr-primary-accent)!important; /* blue 500 */
|
|
}
|
|
.lt-blue {
|
|
color: var(--clr-lt-fg-1)!important; /* blue 300, using lt-fg-1 which is #90caf9 */
|
|
}
|
|
|
|
.orange {
|
|
color: var(--clr-std-orange)!important;
|
|
}
|
|
|
|
.verified-color {
|
|
color: var(--clr-verified-accent)!important; /* lt-blue 500 */
|
|
}
|
|
|
|
.staff-color {
|
|
color: var(--clr-staff-accent)!important; /* light green 700 */
|
|
}
|
|
|
|
.danger-color {
|
|
color: var(--clr-warning-accent)!important; /* amber 500 */
|
|
}
|
|
|
|
.green {
|
|
color: light-dark(#388e3c, #1a9a1d); /* green 700 */
|
|
}
|
|
|
|
.white {
|
|
color: var(--clr-bright)!important; /* 100% white */
|
|
}
|
|
|
|
.red {
|
|
color: var(--clr-danger-text)!important; /* red 700 */
|
|
}
|
|
|
|
/* Color of an inverted icon badges */
|
|
.badge-inv {
|
|
color: var(--clr-badge-inv)!important;
|
|
}
|
|
|
|
.gray {
|
|
color: var(--clr-text-secondary)!important;
|
|
}
|
|
|
|
.light-gray {
|
|
color: var(--clr-text-placeholder)!important;
|
|
}
|
|
|
|
.large {
|
|
font-size: 120%;
|
|
}
|
|
|
|
/* Other universal style components */
|
|
.small {
|
|
font-size: 90%;
|
|
}
|
|
|
|
.float-right {
|
|
position: absolute;
|
|
right: 0.5rem;
|
|
}
|
|
|
|
.hr {
|
|
display: block;
|
|
width: 100%;
|
|
height: 0.45rem;
|
|
min-height: 0.3rem;
|
|
background-color: var(--clr-background-light-gray);
|
|
box-shadow: inset 0 0.25rem 0.25rem -0.25rem var(--clr-shadow-hr-inset),
|
|
inset 0 -0.25rem 0.25rem -0.25rem var(--clr-shadow-hr-inset);
|
|
}
|
|
|
|
.hr.thin {
|
|
height: 0.015rem;
|
|
}
|
|
|
|
/* Vertical divider line */
|
|
.divider {
|
|
display: inline-block;
|
|
width: 1px;
|
|
margin: 0 0.25rem;
|
|
border-left: var(--clr-border-muted) 1.5px groove;
|
|
}
|
|
|
|
.ellipsized {
|
|
overflow-x: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.flat-button {
|
|
display: flex;
|
|
align-items: center;
|
|
margin: 0.15rem 0.35rem;
|
|
height: 2em;
|
|
line-height: 2em;
|
|
font-weight: normal;
|
|
text-align: center;
|
|
vertical-align: middle;
|
|
touch-action: manipulation;
|
|
white-space: nowrap;
|
|
text-transform: uppercase;
|
|
background-color: var(--clr-bright);
|
|
z-index: 1;
|
|
}
|
|
.flat-button:hover,
|
|
.flat-button:focus {
|
|
text-decoration: none;
|
|
}
|
|
|
|
.flat-button.disabled,
|
|
.flat-button.disabled:hover,
|
|
.flat-button.disabled:focus {
|
|
color: var(--clr-primary-accent);
|
|
cursor: default;
|
|
opacity: 0.75;
|
|
filter: grayscale(75%);
|
|
}
|
|
|
|
.flat-button.faux {
|
|
display: inline-block;
|
|
height: 1.4em;
|
|
line-height: 1.4em;
|
|
text-transform: none;
|
|
padding: 0 .35rem;
|
|
margin: 0.15rem;
|
|
border: 1px solid var(--clr-text-tertiary);
|
|
border-radius: 3px;
|
|
background-color: var(--clr-background-extra-light-gray);
|
|
}
|
|
|
|
.action-button {
|
|
display: block;
|
|
position: absolute;
|
|
color: var(--clr-text-secondary);
|
|
font-size: 1.8rem;
|
|
background-color: var(--clr-background-off-white);
|
|
border-radius: 50%;
|
|
width: 3.25rem;
|
|
height: 3.25rem;
|
|
min-width: unset;
|
|
min-height: unset;
|
|
padding: 0;
|
|
margin: 0;
|
|
outline: none; /* otherwise a square outline is shown */
|
|
box-shadow: 0 2px 0.5rem 0 var(--clr-shadow-button);
|
|
transition: all 150ms;
|
|
z-index: 2;
|
|
}
|
|
|
|
.action-button:focus,
|
|
.action-button:hover,
|
|
.action-button:hover:not([disabled]),
|
|
.action-button:active:not([disabled]) {
|
|
color: var(--clr-text-tertiary-activated);
|
|
background-color: var(--clr-primary-action-hover);
|
|
}
|
|
.action-button:active {
|
|
color: var(--clr-text-tertiary-activated);
|
|
background-color: var(--clr-primary-action);
|
|
}
|
|
|
|
.action-button.hidden {
|
|
width: 1px;
|
|
height: 1px;
|
|
font-size: 1px;
|
|
line-height: 1px;
|
|
right: 2.625rem;
|
|
bottom: 2.625rem;
|
|
opacity: 0;
|
|
}
|
|
|
|
/* Element which can take focus but shows no outline */
|
|
.group-focus {
|
|
outline: none;
|
|
}
|
|
|
|
/* END generic text colors */
|
|
|
|
/* END of basic elements */
|
|
|
|
#mountPoint {
|
|
height: 100%;
|
|
padding-top: 1rem;
|
|
padding-bottom: 1rem;
|
|
}
|
|
|
|
/* Top-level application layout style: sidepanel + main view */
|
|
#noscript-message {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
max-width: 30rem;
|
|
overflow: hidden;
|
|
margin-top: 5rem;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
border-radius: 0.25rem;
|
|
box-shadow: 1px 2px 0.3rem var(--clr-shadow-gray-strong);
|
|
background-color: var(--clr-bright);
|
|
}
|
|
|
|
#noscript-title {
|
|
padding: 1rem;
|
|
font-size: 120%;
|
|
font-weight: bolder;
|
|
background-color: var(--clr-primary-accent); /* blue 500 */
|
|
color: var(--clr-primary-light-blue); /* light-blue 100 */
|
|
}
|
|
|
|
#noscript-content {
|
|
padding: 1rem;
|
|
}
|
|
|
|
#app-container {
|
|
position: relative;
|
|
display: flex;
|
|
height: 100%;
|
|
max-width: 84rem;
|
|
overflow: hidden;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
border-radius: 0.25rem;
|
|
box-shadow: 1px 2px 0.3rem var(--clr-shadow-gray-strong);
|
|
background-color: var(--clr-bright);
|
|
}
|
|
|
|
#sidepanel {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-grow: 0;
|
|
flex-shrink: 0.3;
|
|
width: 24rem;
|
|
min-width: 18rem;
|
|
height: 100%;
|
|
}
|
|
|
|
#topic-view {
|
|
position: relative;
|
|
display: flex;
|
|
overflow-x: hidden;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
#info-view {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-grow: 0;
|
|
flex-shrink: 0.3;
|
|
width: 24rem;
|
|
min-width: 18rem;
|
|
height: 100%;
|
|
}
|
|
|
|
/* Generic announcement text, centered vertically and horizontally */
|
|
.center-medium-text {
|
|
width: 100%;
|
|
height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
text-align: center;
|
|
font-size: 1.4rem;
|
|
}
|
|
|
|
/* Class to alternatively hide sidepanel/topic-view/info-view */
|
|
.nodisplay {
|
|
display: none!important;
|
|
}
|
|
|
|
/* Quoted div */
|
|
.quoted {
|
|
margin-left: 1rem;
|
|
}
|
|
|
|
/* Extra space on the right */
|
|
.space-right {
|
|
margin-right: 0.25rem;
|
|
}
|
|
|
|
/* Container with whitish background and rounded corners */
|
|
.rounded-container {
|
|
position: relative;
|
|
background-color: var(--clr-background-off-white);
|
|
border-radius: 0.1rem;
|
|
padding: 0.25rem;
|
|
margin: 0.25rem;
|
|
}
|
|
|
|
/* BEGIN InPlaceEdit styles */
|
|
span.in-place-edit, div.in-place-edit {
|
|
display: inline-block;
|
|
font-family: inherit;
|
|
font-size: 1rem;
|
|
margin: 0.25rem 0.125rem 0 0.125rem;
|
|
width: 100%;
|
|
vertical-align: baseline;
|
|
border-bottom: 1px dashed var(--clr-border-muted);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.in-place-edit.short {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
font-size: 1.1rem;
|
|
height: 2.5rem;
|
|
line-height: 2.25;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.in-place-edit.disabled {
|
|
border-bottom: none;
|
|
cursor: default;
|
|
color: var(--clr-text-disabled);
|
|
}
|
|
|
|
.in-place-edit.placeholder {
|
|
color: var(--clr-text-placeholder);
|
|
}
|
|
|
|
.in-place-edit span {
|
|
display: inline-block;
|
|
}
|
|
|
|
.in-place-edit.short span {
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
overflow-x: hidden;
|
|
width: 100%;
|
|
}
|
|
|
|
.in-place-edit .material-icons {
|
|
display: inline-block;
|
|
}
|
|
|
|
.material-icons.invalid {
|
|
color: var(--clr-error-text-muted);
|
|
}
|
|
|
|
textarea.in-place-edit {
|
|
height: unset;
|
|
font-size: unset;
|
|
}
|
|
|
|
input.in-place-edit.invalid {
|
|
color: var(--clr-error-text-muted);
|
|
}
|
|
|
|
/* END of InPlaceEdit styles */
|
|
|
|
table.permission-editor {
|
|
width: 100%;
|
|
}
|
|
|
|
table.permission-editor td {
|
|
margin: 0.35rem 0;
|
|
font-size: 1.1rem;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
table.permission-editor td.checkbox {
|
|
text-align: center;
|
|
color: var(--clr-text-tertiary);
|
|
}
|
|
|
|
.permission-editor .material-icons {
|
|
font-size: 1.3rem;
|
|
line-height: 1.3rem;
|
|
}
|
|
|
|
.material-icons.clickable {
|
|
cursor: pointer;
|
|
border-bottom: none;
|
|
}
|
|
|
|
.clickable {
|
|
border-bottom: 1px dashed var(--clr-border-muted);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.image-clickable {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.clean-clickable {
|
|
cursor: pointer;
|
|
}
|
|
|
|
|
|
/* END of top-level layout */
|
|
|
|
/* Sidepanel styles */
|
|
.panel-title {
|
|
font-size: 1.4rem;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.panel-title.deleted {
|
|
text-decoration: line-through;
|
|
}
|
|
|
|
.caption-panel {
|
|
display: flex;
|
|
align-items: center;
|
|
flex: none;
|
|
padding: 0.5rem;
|
|
height: var(--caption-panel-height);
|
|
white-space: nowrap;
|
|
box-shadow: 0 1px 2px var(--clr-shadow-gray-strong);
|
|
overflow-x: hidden;
|
|
z-index: 1; /* otherwise the shadow becomes invisible */
|
|
}
|
|
|
|
.dialog-buttons {
|
|
display: flex;
|
|
padding: 0.5rem;
|
|
justify-content: flex-end;
|
|
align-items: center;
|
|
}
|
|
|
|
.dialog-buttons button {
|
|
margin: 0 0.5rem;
|
|
}
|
|
|
|
.avatar-box {
|
|
position: relative;
|
|
flex-grow: 0;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.bot-form {
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
min-width: 8rem;
|
|
line-height: 2rem;
|
|
}
|
|
.bot-form div {
|
|
min-height: 2rem;
|
|
vertical-align: middle;
|
|
}
|
|
.bot-form button {
|
|
display: inline-block;
|
|
margin: 0.15rem;
|
|
background-color: var(--clr-blue-wash-light);
|
|
color: var(--clr-primary-accent); /* blue 500 */
|
|
font-size: inherit;
|
|
text-transform: none;
|
|
height: 2rem;
|
|
line-height: 2rem;
|
|
}
|
|
.bot-form > div > button {
|
|
width: auto;
|
|
}
|
|
.bot-form button:focus,
|
|
.bot-form button:hover,
|
|
.bot-form button:active {
|
|
outline: 0;
|
|
color: var(--clr-dk-fg-5); /* #1565C0, a darker blue */
|
|
background-color: var(--clr-primary-wash);
|
|
}
|
|
|
|
#side-caption-panel {
|
|
background-color: var(--clr-primary-accent); /* blue 500 */
|
|
color: var(--clr-primary-light-blue); /* light-blue 100 */
|
|
}
|
|
|
|
#side-caption-panel a {
|
|
color: var(--clr-primary-light-blue); /* blue 100 */
|
|
padding-left: 0.5rem;
|
|
line-height: 1;
|
|
}
|
|
|
|
#side-caption-panel :hover {
|
|
color: var(--clr-bright);
|
|
}
|
|
|
|
#sidepanel-title {
|
|
margin-right: auto;
|
|
margin-left: 0.5rem;
|
|
}
|
|
|
|
#self-avatar {
|
|
width: 3rem;
|
|
min-width: 3rem;
|
|
height: 3rem;
|
|
flex: none;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
#self-avatar.avatar-box {
|
|
font-size: 1.8rem;
|
|
}
|
|
|
|
/* Application settings */
|
|
#settings-form ul {
|
|
list-style: none;
|
|
}
|
|
|
|
#settings-form li {
|
|
vertical-align: middle;
|
|
}
|
|
#settings-form label {
|
|
display: inline-block;
|
|
padding-left: 0.5rem;
|
|
}
|
|
|
|
input#host-name {
|
|
width: 100%;
|
|
}
|
|
|
|
/* Input with a search icon on the left */
|
|
input.search {
|
|
text-indent: 1.4rem;
|
|
}
|
|
i.search {
|
|
position: absolute;
|
|
left: .6rem;
|
|
}
|
|
|
|
/* Area which displays an error message */
|
|
.info-box {
|
|
position: relative;
|
|
display: none;
|
|
overflow: hidden;
|
|
padding: 1rem 1.5rem 0.75rem 0.5rem;
|
|
}
|
|
|
|
.info-box > span {
|
|
line-height: 1.35rem;
|
|
}
|
|
|
|
.info-box .cancel {
|
|
position: absolute;
|
|
right: 0.25rem;
|
|
top: 0.5rem;
|
|
}
|
|
|
|
.info-box.error {
|
|
display: flex;
|
|
background-color: var(--clr-error-bg-light);
|
|
border-bottom: 1px solid var(--clr-error-border-light);
|
|
color: var(--clr-error-text-dark);
|
|
}
|
|
.info-box.warning {
|
|
display: flex;
|
|
background-color: var(--clr-warning-bg-light);
|
|
border-bottom: 1px solid var(--clr-warning-border-light);
|
|
color: var(--clr-warning-text-dark);
|
|
}
|
|
.info-box.info {
|
|
display: flex;
|
|
background-color: var(--clr-info-bg-light);
|
|
border-bottom: 1px solid var(--clr-info-border-light);
|
|
color: var(--clr-info-text-dark);
|
|
}
|
|
|
|
.info-box .cancel .material-icons {
|
|
font-size: 1rem;
|
|
color: var(--clr-text-secondary);
|
|
}
|
|
.info-box.error .cancel .material-icons {
|
|
color: var(--clr-error-text-dark);
|
|
}
|
|
.info-box .icon {
|
|
display: block;
|
|
margin-right: 0.5rem;
|
|
}
|
|
.info-box .icon .material-icons {
|
|
font-size: 1.5rem;
|
|
}
|
|
.info-box.warning .icon .material-icons {
|
|
color: var(--clr-warning-icon);
|
|
}
|
|
.info-box.error .icon .material-icons {
|
|
color: var(--clr-error-icon);
|
|
}
|
|
.info-box.info .icon .material-icons {
|
|
color: var(--clr-info-text-dark);
|
|
}
|
|
/* List of contacts */
|
|
.flex-column {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
.flex-column.narrow {
|
|
height: auto;
|
|
}
|
|
|
|
.scrollable-panel {
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
margin-top: 0.25rem;
|
|
margin-bottom: auto;
|
|
height: 100%;
|
|
scroll-behavior: smooth;
|
|
}
|
|
|
|
.contact-box {
|
|
list-style: none;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
.contact-box > li {
|
|
position: relative;
|
|
display: flex;
|
|
padding: 0.35rem 0.25rem 0.5rem 0.35rem;
|
|
min-height: 3.75rem;
|
|
flex-grow: 0;
|
|
flex-shrink: 0;
|
|
/* partial bottom border */
|
|
background: linear-gradient(to right, var(--clr-transparent) 3.5rem, var(--clr-background-extra-light-gray) 1px, var(--clr-background-extra-light-gray) 100%) 0 100% / 100% 1px no-repeat, var(--clr-bright);
|
|
overflow-x: hidden;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.contact-box.small > li {
|
|
padding: 0.25rem 0.25rem 0.35rem 0.35rem;
|
|
min-height: 2.5rem;
|
|
}
|
|
|
|
.contact-box > li:last-child {
|
|
/* remove border from the last contact */
|
|
background: var(--clr-bright);
|
|
}
|
|
.contact-box > li:hover {
|
|
background-color: var(--clr-background-blue-gray-50); /* blue-gray 50 highlight */
|
|
}
|
|
.contact-box > li.selected {
|
|
background-color: var(--clr-background-blue-gray-100); /* blue-gray 100 highlight */
|
|
}
|
|
.contact-box > li.tpinned {
|
|
border-right: 1.5px solid var(--clr-secondary-accent);
|
|
background-color: var(--clr-background-blue-gray-75); /* blue-gray 75 highlight */
|
|
}
|
|
.contact-box > li.action {
|
|
min-height: 2.5rem;
|
|
border-bottom: none;
|
|
}
|
|
|
|
.contact-box .text-box {
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
.contact-box .contact-title {
|
|
font-size: 1.05rem;
|
|
text-overflow: ellipsis;
|
|
overflow-x: hidden;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.contact-box .contact-title.deleted {
|
|
opacity: 0.66;
|
|
text-decoration: line-through;
|
|
text-decoration-thickness: 0.5px;
|
|
}
|
|
|
|
.contact-box .contact-comment {
|
|
text-overflow: ellipsis;
|
|
overflow-x: hidden;
|
|
white-space: nowrap;
|
|
font-weight: lighter;
|
|
}
|
|
|
|
.contact-box .contact-comment > span {
|
|
overflow-x: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.contact-box .contact-comment b {
|
|
font-weight: bolder;
|
|
}
|
|
|
|
.contact-box .contact-comment .material-icons {
|
|
margin-bottom: 0.2rem;
|
|
color: light-dark(#777, #666); /* #777 */
|
|
}
|
|
|
|
/* Avatar and online-offline indicator */
|
|
.contact-box .avatar-box {
|
|
position: relative;
|
|
margin-right: 0.35rem;
|
|
width: 3rem;
|
|
min-width: 3rem;
|
|
height: 3rem;
|
|
min-height: 3rem;
|
|
font-size: 1.8rem;
|
|
overflow: hidden;
|
|
padding: 0;
|
|
}
|
|
.contact-box .avatar {
|
|
width: 3rem;
|
|
height: 3rem;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.contact-box.small .avatar-box {
|
|
width: 2rem;
|
|
min-width: 2rem;
|
|
height: 2rem;
|
|
min-height: 2rem;
|
|
font-size: 1.2rem;
|
|
}
|
|
.contact-box.small .avatar {
|
|
width: 2rem;
|
|
height: 2rem;
|
|
}
|
|
|
|
.avatar.deleted {
|
|
opacity: 0.75;
|
|
filter: grayscale(1);
|
|
}
|
|
|
|
.contact-box .avatar-box > .material-icons {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-around;
|
|
font-size: 2.4rem;
|
|
line-height: 3rem;
|
|
}
|
|
.contact-box .avatar-box > .checkmark.material-icons {
|
|
line-height: unset;
|
|
}
|
|
.contact-box.small .avatar-box > .material-icons {
|
|
font-size: 1.6rem;
|
|
line-height: 2rem;
|
|
}
|
|
.contact-box .text-box {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-around;
|
|
}
|
|
.contact-box .text-box > div {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
}
|
|
|
|
.contact-box .action-text {
|
|
text-align: center;
|
|
font-size: 0.95rem;
|
|
line-height: 2.5rem;
|
|
margin: 0 auto 0 auto;
|
|
cursor: pointer;
|
|
}
|
|
|
|
img.channel {
|
|
width: 1.25rem;
|
|
height: 1.25rem;
|
|
vertical-align: middle;
|
|
margin-left: 0.3rem;
|
|
}
|
|
|
|
.large img.channel {
|
|
width: 1.45rem;
|
|
height: 1.45rem;
|
|
margin-left: 0.5rem;
|
|
margin-bottom: 0.15rem;
|
|
}
|
|
|
|
/* Online-offline indicator positioned inside avatar-box */
|
|
.avatar-box .online, .offline {
|
|
position: absolute;
|
|
width: 0.75rem;
|
|
min-width: 0.75rem;
|
|
height: 0.75rem;
|
|
min-height: 0.75rem;
|
|
flex-shrink: 0;
|
|
border-radius: 50%;
|
|
right: 0;
|
|
bottom: 0.1rem;
|
|
}
|
|
.avatar-box .online {
|
|
background-color: var(--clr-online); /* Specific green for online status */
|
|
}
|
|
.avatar-box .offline {
|
|
background-color: var(--clr-offline); /* #C0C0C0 (silver) or #ccc */
|
|
}
|
|
|
|
/* Typing indicator: animation of the online dot */
|
|
.online.typing {
|
|
animation: typing 0.5s infinite;
|
|
}
|
|
@keyframes typing {
|
|
0%, 100% {
|
|
transform: translateX(0);
|
|
}
|
|
50% {
|
|
transform: translateX(-0.3rem);
|
|
}
|
|
}
|
|
|
|
.contact-box .checkmark.material-icons {
|
|
width: 1.5rem;
|
|
height: 1.5rem;
|
|
font-size: 1.5rem;
|
|
color: var(--clr-secondary-accent);
|
|
position: absolute;
|
|
right: 0;
|
|
bottom: 0;
|
|
background-color: var(--clr-bright);
|
|
overflow: visible;
|
|
border: 0.0px solid var(--clr-transparent);
|
|
padding-left: 0.5px;
|
|
}
|
|
|
|
.contact-box .deleted.material-icons {
|
|
width: 1.5rem;
|
|
height: 1.5rem;
|
|
font-size: 1.5rem;
|
|
color: var(--clr-text-tertiary);
|
|
position: absolute;
|
|
right: 0;
|
|
bottom: 0;
|
|
background-color: var(--clr-bright);
|
|
}
|
|
|
|
/* END of avatar box */
|
|
|
|
#add-topic {
|
|
position: absolute;
|
|
right: 1rem;
|
|
bottom: 1rem;
|
|
}
|
|
|
|
/* Various forms inside a panel (signup form, new topic form) */
|
|
.panel-form {
|
|
display: flex;
|
|
position: relative;
|
|
flex-direction: column;
|
|
padding: 0;
|
|
}
|
|
|
|
.panel-form-row {
|
|
display: flex;
|
|
position: relative;
|
|
align-items: center;
|
|
padding: 0.5rem 0.75rem;
|
|
line-height: 1.5;
|
|
flex-grow: 0;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.panel-form-column {
|
|
display: flex;
|
|
position: relative;
|
|
flex-direction: column;
|
|
flex-grow: 0;
|
|
padding: 0.5rem 0.75rem;
|
|
line-height: 1.5;
|
|
overflow-x: clip;
|
|
}
|
|
|
|
/* Make sure padding is only applied at the top level panel */
|
|
.panel-form-row > .panel-form-column,
|
|
.panel-form-column > .panel-form-column {
|
|
padding: 0!important;
|
|
flex-grow: 1;
|
|
}
|
|
.panel-form-column > .panel-form-row,
|
|
.panel-form-row > .panel-form-row {
|
|
padding: 0!important;
|
|
}
|
|
|
|
.panel-form-column > .group {
|
|
margin-top: 0.25rem;
|
|
margin-bottom: 0.25rem;
|
|
}
|
|
|
|
/* Styling of avatar upload control */
|
|
.avatar-upload {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-shrink: 0;
|
|
width: 10rem;
|
|
height: 10.5rem;
|
|
font-size: 4.5rem;
|
|
padding: 0;
|
|
margin: 0.25rem;
|
|
}
|
|
|
|
.avatar-upload.read-only {
|
|
height: auto;
|
|
}
|
|
|
|
.avatar-upload .clear-avatar {
|
|
position: absolute;
|
|
font-size: 1rem;
|
|
top: 0;
|
|
right: 0;
|
|
opacity: 0;
|
|
background-image: radial-gradient(var(--clr-bright) 40%, var(--clr-transparent) 75%);
|
|
}
|
|
|
|
.avatar-upload:hover .clear-avatar {
|
|
opacity: 1;
|
|
}
|
|
|
|
.avatar-upload .avatar-box {
|
|
position: relative;
|
|
width: 10rem;
|
|
height: 10rem;
|
|
}
|
|
|
|
.avatar-upload .avatar-box > .material-icons {
|
|
position: relative;
|
|
font-size: 4rem;
|
|
line-height: 10rem;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
/* Clearfix */
|
|
.avatar-upload:after {
|
|
content: ".";
|
|
display: block;
|
|
height: 0;
|
|
clear: both;
|
|
visibility: hidden;
|
|
}
|
|
|
|
.avatar-upload .blank {
|
|
text-align: center;
|
|
vertical-align: middle;
|
|
border: 1px dashed var(--clr-text-tertiary);
|
|
font-size: 1rem;
|
|
flex-shrink: 0;
|
|
width: 10rem;
|
|
height: 10rem;
|
|
overflow: hidden;
|
|
color: var(--clr-text-tertiary);
|
|
line-height: 10rem;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.avatar-upload img.preview {
|
|
width: 10rem;
|
|
height: 10rem;
|
|
overflow: hidden;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.avatar-upload img.preview::before {
|
|
position: absolute;
|
|
content: " ";
|
|
display: flex;
|
|
font-size: 0.9rem;
|
|
font-weight: lighter;
|
|
color: var(--clr-text-primary);
|
|
top: 0;
|
|
left: 0;
|
|
width: 10rem;
|
|
height: 10rem;
|
|
justify-content: center;
|
|
background: center no-repeat url("../img/broken_image.png");
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.avatar-upload .inputfile.hidden {
|
|
width: 0.1px;
|
|
height: 0.1px;
|
|
opacity: 0;
|
|
overflow: hidden;
|
|
position: absolute;
|
|
}
|
|
|
|
.avatar-upload .inputfile + label.round {
|
|
display: flex;
|
|
position: absolute;
|
|
align-items: center;
|
|
justify-content: center;
|
|
cursor: pointer;
|
|
width: 3rem;
|
|
height: 3rem;
|
|
line-height: 3rem;
|
|
border-radius: 50%;
|
|
box-shadow: 0 1px 4px var(--clr-shadow-dialog); /* rgba(0,0,0,0.4) similar to menu */
|
|
bottom: 0;
|
|
right: 0;
|
|
background-color: var(--clr-background-off-white);
|
|
z-index: 1;
|
|
}
|
|
|
|
.avatar-upload .inputfile:focus + label.round {
|
|
outline: none;
|
|
}
|
|
|
|
.avatar-upload .inputfile:focus + label,
|
|
.avatar-upload .inputfile + label:hover {
|
|
background-color: var(--clr-primary-wash);
|
|
color: var(--clr-primary-accent);
|
|
}
|
|
/* END of avatar upload */
|
|
/* END of new account panel */
|
|
/* END of sidepanel styles */
|
|
|
|
/* Topic/messages view */
|
|
#topic-caption-panel {
|
|
background-color: var(--clr-background-blue-gray-300);
|
|
}
|
|
#topic-caption-panel a {
|
|
color: var(--clr-text-secondary);
|
|
text-decoration: none;
|
|
}
|
|
|
|
#topic-caption-panel :hover {
|
|
color: var(--clr-dark);
|
|
}
|
|
|
|
#topic-caption-panel .avatar-box {
|
|
position: relative;
|
|
width: 3rem;
|
|
min-width: 3rem;
|
|
height: 3rem;
|
|
font-size: 1.8rem;
|
|
margin-right: 0.35rem;
|
|
}
|
|
|
|
#topic-caption-panel .avatar-box > .material-icons {
|
|
font-size: 2.4rem;
|
|
line-height: 3rem;
|
|
}
|
|
|
|
#topic-title-group {
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
#hide-message-view {
|
|
display: block;
|
|
margin-right: 0.35rem;
|
|
}
|
|
|
|
#topic-users {
|
|
margin-left: auto;
|
|
margin-right: 1rem;
|
|
width: min-content;
|
|
}
|
|
|
|
#topic-users .avatar-box {
|
|
display: inline-block;
|
|
width: 1.8rem;
|
|
min-width: 1.8rem;
|
|
height: 1.8rem;
|
|
min-height: 1.8rem;
|
|
font-size: 1rem;
|
|
margin-right: 0.2rem;
|
|
}
|
|
|
|
#topic-users .avatar-box > .material-icons {
|
|
font-size: 1.4rem;
|
|
line-height: 1.8rem;
|
|
}
|
|
|
|
/* Overflow span "+18 more" */
|
|
#topic-users > span {
|
|
line-height: 2rem;
|
|
vertical-align: top;
|
|
}
|
|
|
|
/* Div holding QR code */
|
|
.qr-code {
|
|
align-self: center;
|
|
}
|
|
|
|
#messages-container {
|
|
position: relative;
|
|
overflow-y: hidden;
|
|
height: 100%;
|
|
}
|
|
|
|
|
|
#messages-container::before {
|
|
content: "";
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
height: 100%;
|
|
width: 100%;
|
|
background-color: var(--clr-background-blue-gray-50);
|
|
background-image: var(--wallpaper-url);
|
|
background-repeat: var(--wallpaper-repeat);
|
|
background-size: var(--wallpaper-size);
|
|
background-position: var(--wallpaper-position);
|
|
filter: blur(var(--wallpaper-blur))
|
|
invert(var(--wallpaper-invert))
|
|
brightness(var(--wallpaper-brightness));
|
|
pointer-events: none;
|
|
z-index: 0;
|
|
}
|
|
|
|
/* Dark mode wallpaper adjustments: image wallpaper *
|
|
#messages-container.dark.wpimg::before {
|
|
filter: brightness(50%);
|
|
}
|
|
/* Dark mode wallpaper adjustments: pattern wallpaper *
|
|
#messages-container.dark.wppatt::before {
|
|
filter: invert(1);
|
|
}
|
|
*/
|
|
|
|
/* Scrollable panel where the messages are shown */
|
|
#messages-panel {
|
|
position: relative;
|
|
padding: 0.75rem;
|
|
overflow-y: scroll;
|
|
height: 100%;
|
|
}
|
|
|
|
#write-only-background {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
height: 100%;
|
|
width: 100%;
|
|
background-image: repeating-linear-gradient(45deg, rgba(255,255,255,0.5), rgba(255,255,255,.5) 0.5rem,
|
|
rgba(255,255,255,.8) 0.5rem, rgba(255,255,255,.8) 1rem); /* Specific gradient, keep as is or break down further if these opacities are common */
|
|
}
|
|
|
|
#write-only-note {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
background-color: var(--clr-bright);
|
|
color: var(--clr-text-primary);
|
|
height: auto;
|
|
width: auto;
|
|
line-height: 2rem;
|
|
text-align: center;
|
|
padding: 0.75rem 1.25rem 0.75rem 1.25rem;
|
|
border-radius: 0.5rem;
|
|
box-shadow: 0 1px 0.5px var(--clr-shadow-button-inset-active); /* rgba(0, 0, 0, 0.12) */
|
|
}
|
|
|
|
#peer-messaging-disabled-note {
|
|
position: absolute;
|
|
left: 50%;
|
|
bottom: 4.3rem;
|
|
transform: translate(-50%);
|
|
background-color: var(--clr-bright);
|
|
color: var(--clr-text-primary);
|
|
width: fit-content;
|
|
line-height: 2rem;
|
|
text-align: center;
|
|
padding: 0.75rem 1.25rem 0.75rem 1.25rem;
|
|
border-radius: 0.5rem;
|
|
box-shadow: 0 1px 0.5px var(--clr-shadow-button-inset-active); /* rgba(0, 0, 0, 0.12) */
|
|
}
|
|
|
|
/* Relationship-state advisory, e.g. pending friend request. Plain centered caption,
|
|
matching docs/images/个人对话框(对方的状态).png rather than the heavier card style above. */
|
|
#relationship-status-note {
|
|
text-align: center;
|
|
color: var(--clr-text-secondary);
|
|
font-size: 0.85rem;
|
|
padding: 0.5rem 1.25rem;
|
|
flex: none;
|
|
}
|
|
#relationship-status-note a {
|
|
color: var(--clr-primary-accent);
|
|
}
|
|
|
|
/* Group role badge next to a sender's name, docs/images/群标识.png -- gold for the owner, green for admins.
|
|
Regular members get no badge (senderRole prop is 'member' or absent, neither case renders one). */
|
|
.chat-box .author .role-badge {
|
|
display: inline-block;
|
|
font-style: normal;
|
|
font-size: 0.7rem;
|
|
line-height: 1.3;
|
|
padding: 0 0.4em;
|
|
border-radius: 0.25rem;
|
|
margin-left: 0.35em;
|
|
color: #fff;
|
|
vertical-align: middle;
|
|
}
|
|
.chat-box .author .role-badge.owner { background-color: #e0a82e; }
|
|
.chat-box .author .role-badge.admin { background-color: #3ba55c; }
|
|
|
|
/* Group chat top banners: announcement (docs/images/群公告状态.png) and pending join requests
|
|
(docs/images/新邀请进群申请.png). Both can be visible at once, announcement first. */
|
|
#group-announcement-banner, #group-join-request-banner {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
padding: 0.6rem 1rem;
|
|
background-color: var(--clr-bright);
|
|
border-bottom: 1px solid var(--clr-divider);
|
|
color: var(--clr-text-primary);
|
|
flex: none;
|
|
}
|
|
#group-announcement-banner i:first-child { color: var(--clr-warning-text, #e0a82e); }
|
|
#group-join-request-banner i:first-child { color: var(--clr-warning-text, #e0a82e); }
|
|
#group-announcement-banner span, #group-join-request-banner span {
|
|
flex: 1;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
font-size: 0.9rem;
|
|
}
|
|
#group-announcement-banner i:last-child, #group-join-request-banner i:last-child {
|
|
color: var(--clr-text-secondary);
|
|
}
|
|
|
|
/* Red failure icon to the left of a failed outgoing bubble, and the reason caption below it. */
|
|
.message-fail-icon {
|
|
align-self: flex-end;
|
|
margin: 0 0.25rem 0.6rem 0;
|
|
}
|
|
.message-fail-reason {
|
|
font-size: 0.8rem;
|
|
color: var(--clr-text-secondary);
|
|
text-align: right;
|
|
margin-top: 0.25rem;
|
|
}
|
|
.message-fail-reason a {
|
|
color: var(--clr-primary-accent);
|
|
}
|
|
|
|
/* Multi-select mode (Ch.4 4.15-4.16). */
|
|
.select-checkbox {
|
|
align-self: center;
|
|
margin: 0 0.5rem 0 0.25rem;
|
|
color: var(--clr-text-secondary);
|
|
cursor: pointer;
|
|
flex: none;
|
|
}
|
|
.select-checkbox.blue {
|
|
color: var(--clr-primary-accent);
|
|
}
|
|
/* Flexbox auto-margin trick: pins the checkbox to the far left of the row regardless of
|
|
whether the message itself is left- or right-aligned (docs/images/多选-选中对话框.png). */
|
|
.chat-box li .select-checkbox {
|
|
margin-right: auto;
|
|
}
|
|
|
|
/* Reuses the existing (previously-unused) div.toast/.show animation for 收藏成功 etc. --
|
|
positioned higher than its 2rem default so it clears the batch-action-bar below it. */
|
|
#messages-container {
|
|
position: relative;
|
|
}
|
|
#messages-container div.toast {
|
|
bottom: 0.75rem;
|
|
}
|
|
|
|
#batch-action-bar {
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex: none;
|
|
background-color: var(--clr-background-blue-gray-50);
|
|
padding: 0.5rem 0.6rem;
|
|
}
|
|
#batch-action-count {
|
|
text-align: center;
|
|
color: var(--clr-text-secondary);
|
|
font-size: 0.85rem;
|
|
padding-bottom: 0.4rem;
|
|
}
|
|
#batch-action-buttons {
|
|
display: flex;
|
|
justify-content: space-around;
|
|
}
|
|
#batch-action-buttons a {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
font-size: 0.75rem;
|
|
color: var(--clr-text-primary);
|
|
}
|
|
#batch-action-buttons a.disabled {
|
|
color: var(--clr-text-secondary);
|
|
opacity: 0.5;
|
|
pointer-events: none;
|
|
}
|
|
#batch-action-cancel {
|
|
text-align: center;
|
|
margin-top: 0.5rem;
|
|
color: var(--clr-text-secondary);
|
|
font-size: 0.85rem;
|
|
}
|
|
|
|
/* Batch-forward confirm sheet (docs/images/转发—逐条转发.png). */
|
|
.batch-forward-confirm {
|
|
max-width: 24rem;
|
|
}
|
|
.batch-forward-target {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 0.6rem 0;
|
|
}
|
|
.batch-forward-comment {
|
|
color: var(--clr-text-secondary);
|
|
background-color: var(--clr-background-blue-gray-50);
|
|
border-radius: 0.4rem;
|
|
padding: 0.6rem;
|
|
margin: 0.5rem 0;
|
|
}
|
|
.batch-forward-actions {
|
|
display: flex;
|
|
gap: 0.5rem;
|
|
margin-top: 0.5rem;
|
|
}
|
|
.batch-forward-actions button {
|
|
flex: 1;
|
|
padding: 0.6rem;
|
|
border-radius: 0.4rem;
|
|
border: none;
|
|
background-color: var(--clr-background-blue-gray-50);
|
|
color: var(--clr-text-primary);
|
|
}
|
|
.batch-forward-actions button.primary {
|
|
background-color: var(--clr-primary-accent);
|
|
color: var(--clr-bright);
|
|
}
|
|
|
|
/* Footer-panel with the input for the new message */
|
|
#send-message-panel {
|
|
display: flex;
|
|
align-items: center;
|
|
flex: none;
|
|
padding: 0.4rem 0.4rem 0.4rem 0.6rem;
|
|
background-color: var(--clr-background-blue-gray-50);
|
|
z-index: 2;
|
|
min-height: 4rem;
|
|
}
|
|
|
|
#send-message-panel #writing-disabled {
|
|
width: 100%;
|
|
text-align: center;
|
|
font-size: 1.2rem;
|
|
}
|
|
|
|
#send-message-wrapper {
|
|
background-color: var(--clr-background-blue-gray-50);
|
|
box-shadow: 0px -2px 3px -1px var(--clr-shadow-panel-divider); /* Faint shadow above panel */
|
|
z-index: 2;
|
|
}
|
|
|
|
#sendMessage {
|
|
overflow: hidden;
|
|
overflow-wrap: break-word;
|
|
}
|
|
|
|
#send-message-panel .material-icons {
|
|
min-width: 2rem;
|
|
font-size: 1.6rem;
|
|
}
|
|
|
|
#send-message-panel .material-icons.secondary, .material-icons.disabled {
|
|
color: var(--clr-text-tertiary)!important;
|
|
}
|
|
|
|
#send-message-panel .material-icons.secondary:hover {
|
|
color: var(--clr-primary-accent)!important;
|
|
}
|
|
|
|
/* The textarea where the message is entered. */
|
|
#send-message-input {
|
|
overflow: hidden auto;
|
|
min-height: 2.5rem;
|
|
max-height: 6rem;
|
|
}
|
|
|
|
/* New chat invitation panel */
|
|
|
|
.accept-invite-panel {
|
|
background-color: var(--clr-background-blue-gray-50);
|
|
box-shadow: 0px -2px 3px -1px var(--clr-shadow-panel-divider); /* Faint shadow above panel */
|
|
width: 100%;
|
|
z-index: 1;
|
|
}
|
|
|
|
.accept-invite-panel .title {
|
|
font-size: 1.2rem;
|
|
padding: 0.75rem;
|
|
}
|
|
|
|
.accept-invite-panel .footer {
|
|
background-color: var(--clr-background-off-white);
|
|
white-space: nowrap;
|
|
padding-bottom: 0.35rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.accept-invite-panel button {
|
|
font-size: 1rem;
|
|
height: 2em;
|
|
line-height: 2em;
|
|
border: 1px solid var(--clr-transparent);
|
|
margin: 0.25rem;
|
|
box-shadow: 0 1px 2px 0 var(--clr-shadow-button);
|
|
}
|
|
|
|
/* END of chat invitation panel */
|
|
|
|
/* A static panel shown when no topic is selected */
|
|
#dummy-view {
|
|
width: 100%;
|
|
height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background-color: var(--clr-cyan-50);
|
|
}
|
|
#dummy-view a {
|
|
text-decoration: none;
|
|
display: block;
|
|
text-align: center;
|
|
}
|
|
|
|
#image-preview {
|
|
position: absolute;
|
|
display: flex;
|
|
flex-direction: column;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
z-index: 2;
|
|
background-color: var(--clr-overlay-white-strong);
|
|
}
|
|
|
|
|
|
#preview-caption-panel {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
background-color: var(--clr-background-blue-gray-50);
|
|
box-shadow: 0 1px 2px var(--clr-shadow-silver-subtle); /* Faint shadow under the panel */
|
|
line-height: 2rem;
|
|
flex-shrink: 0;
|
|
flex-grow: 0;
|
|
height: var(--caption-panel-height);
|
|
padding: 1rem 0.75rem 0 0.75rem;
|
|
font-size: 120%;
|
|
z-index: 3;
|
|
}
|
|
|
|
#preview-caption-panel a {
|
|
color: var(--clr-text-secondary);
|
|
text-decoration: none;
|
|
}
|
|
|
|
#preview-caption-panel a:hover {
|
|
color: var(--clr-dark);
|
|
}
|
|
|
|
#image-preview-container {
|
|
display: flex;
|
|
justify-content: space-around;
|
|
align-items: center;
|
|
overflow: hidden;
|
|
background-color: var(--clr-gray-medium-bg);
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
#image-preview-footer {
|
|
display: flex;
|
|
justify-content: space-around;
|
|
height: 3.2rem;
|
|
line-height: 1.5rem;
|
|
background-color: var(--clr-background-blue-gray-50);
|
|
box-shadow: 0px -2px 3px -1px var(--clr-shadow-panel-divider); /* Faint shadow above panel */
|
|
flex-grow: 0;
|
|
flex-shrink: 0;
|
|
z-index: 1;
|
|
}
|
|
|
|
#image-preview-container .material-icons {
|
|
font-size: 6rem;
|
|
}
|
|
|
|
#image-preview-container .doc-card {
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow-x: hidden;
|
|
background-color: var(--clr-std-ltgray);
|
|
padding: 1rem;
|
|
border-radius: 0.5rem;
|
|
max-width: 30rem;
|
|
}
|
|
|
|
.doc-card .avatar-box {
|
|
width: 10rem;
|
|
height: 10rem;
|
|
font-size: 4.5rem;
|
|
}
|
|
|
|
.doc-card .avatar-box .material-icons {
|
|
line-height: 10rem;
|
|
}
|
|
|
|
/* Video-call related styles */
|
|
|
|
#video-container {
|
|
position: absolute;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: var(--clr-overlay-white-strong);
|
|
/* Must clear every other in-app overlay (headers/toasts go up to z-index:100) so a call always covers the screen. */
|
|
z-index: 200;
|
|
}
|
|
|
|
#video-container.minimized {
|
|
left: auto;
|
|
top: 1rem;
|
|
right: 1rem;
|
|
width: 18rem;
|
|
height: 18rem;
|
|
background-color: unset;
|
|
user-select: none;
|
|
cursor: grab;
|
|
box-shadow: 0.15rem 0.15rem 1.5rem var(--clr-shadow-dialog);
|
|
border-radius: 0.5rem;
|
|
}
|
|
|
|
#video-container.audio-minimized {
|
|
width: auto;
|
|
height: auto;
|
|
background-color: unset;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.call-pill {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
background-color: var(--clr-bright);
|
|
border-radius: 999px;
|
|
padding: 0.5rem 0.75rem 0.5rem 1rem;
|
|
box-shadow: 0.15rem 0.15rem 1.5rem var(--clr-shadow-dialog);
|
|
cursor: grab;
|
|
}
|
|
|
|
.call-pill > .material-icons {
|
|
color: var(--clr-badge-green-text);
|
|
font-size: 1.3rem;
|
|
}
|
|
|
|
.call-pill-duration {
|
|
color: var(--clr-text-primary);
|
|
font-variant-numeric: tabular-nums;
|
|
font-size: 0.9rem;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.audio-minimized button.full-screen {
|
|
position: static;
|
|
width: 1.5rem;
|
|
height: 1.5rem;
|
|
}
|
|
|
|
.audio-minimized button.full-screen .material-icons {
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
.call-duration {
|
|
position: absolute;
|
|
top: 1.5rem;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
z-index: 2;
|
|
color: #fff;
|
|
background-color: var(--clr-shadow-dialog);
|
|
padding: 0.3rem 1rem;
|
|
border-radius: 999px;
|
|
font-variant-numeric: tabular-nums;
|
|
font-size: 0.95rem;
|
|
}
|
|
|
|
#controls {
|
|
position: absolute;
|
|
display: flex;
|
|
column-gap: 1rem;
|
|
align-items: center;
|
|
align-self: center;
|
|
justify-content: center;
|
|
bottom: 2.5rem;
|
|
z-index: 1;
|
|
}
|
|
|
|
#controls.minimized {
|
|
column-gap: 0.5rem;
|
|
bottom: 1.75rem;
|
|
}
|
|
|
|
#controls button {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 50%;
|
|
width: 4rem;
|
|
height: 4rem;
|
|
min-width: initial;
|
|
box-shadow: 0 3px 6px 0 var(--clr-shadow-button);
|
|
}
|
|
|
|
#controls.minimized button {
|
|
width: 2.75rem;
|
|
height: 2.75rem;
|
|
box-shadow: 0 2px 4px 0 var(--clr-shadow-button);
|
|
}
|
|
|
|
#controls button .material-icons {
|
|
font-size: 1.8rem;
|
|
}
|
|
|
|
#controls.minimized button .material-icons {
|
|
font-size: 1.4rem;
|
|
}
|
|
|
|
#controls button.off {
|
|
background-color: rgba(0, 0, 0, 0.55);
|
|
color: #fff;
|
|
}
|
|
|
|
#controls button.off:hover:not([disabled]), #controls button.off:active:not([disabled]) {
|
|
background-color: rgba(0, 0, 0, 0.7);
|
|
}
|
|
|
|
button.full-screen {
|
|
position: absolute;
|
|
top: 2rem;
|
|
left: 2rem;
|
|
z-index: 1;
|
|
width: 2.5rem;
|
|
height: 2.5rem;
|
|
border-radius: 0.5rem;
|
|
padding: 0;
|
|
box-shadow: none;
|
|
background-color: transparent;
|
|
min-width: unset;
|
|
}
|
|
|
|
.minimized button.full-screen {
|
|
top: 1rem;
|
|
left: 1rem;
|
|
width: 2rem;
|
|
height: 2rem;
|
|
}
|
|
|
|
button.full-screen:hover:not([disabled]), button:active:not([disabled]) {
|
|
color: var(--clr-text-secondary);
|
|
}
|
|
|
|
button.full-screen .material-icons {
|
|
font-size: x-large;
|
|
}
|
|
|
|
.minimized button.full-screen .material-icons {
|
|
font-size: large;
|
|
}
|
|
|
|
#video-container-panel {
|
|
position: relative;
|
|
height: 100%;
|
|
width: 100%;
|
|
}
|
|
|
|
.call-party {
|
|
background-color: var(--clr-background-extra-light-gray);
|
|
border-radius: 0.5rem;
|
|
border: 2px solid var(--clr-border-light);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.call-party:hover {
|
|
border-color: var(--clr-primary-accent);
|
|
}
|
|
|
|
.minimized .call-party {
|
|
border-width: 1px;
|
|
}
|
|
|
|
.call-party.peer {
|
|
position: absolute;
|
|
top: 1rem;
|
|
left: 1rem;
|
|
right: 1rem;
|
|
bottom: 1rem;
|
|
z-index: 1;
|
|
}
|
|
|
|
.minimized .call-party.peer {
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
}
|
|
|
|
.call-party.self {
|
|
position: absolute;
|
|
right: 0.5rem;
|
|
bottom: 0.5rem;
|
|
width: 10rem;
|
|
height: 10rem;
|
|
z-index: 2;
|
|
}
|
|
|
|
.call-party.self[disabled] {
|
|
display: none;
|
|
}
|
|
|
|
video {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: contain;
|
|
}
|
|
|
|
.call-party.self video {
|
|
transform: scaleX(-1);
|
|
}
|
|
|
|
.call-party[disabled] video {
|
|
display: none;
|
|
}
|
|
|
|
.caller-card {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.caller-card .avatar-box {
|
|
width: 10rem;
|
|
height: 10rem;
|
|
font-size: 6rem;
|
|
}
|
|
|
|
.caller-card.pulse img.avatar,
|
|
.caller-card.pulse .lettertile {
|
|
animation: active-call 1.5s linear infinite;
|
|
}
|
|
|
|
.caller-card .avatar-box .material-icons {
|
|
font-size: 6rem;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.minimized .caller-card .avatar-box {
|
|
width: 6rem;
|
|
height: 6rem;
|
|
font-size: 3.6rem;
|
|
}
|
|
|
|
/* Badge with "You" for current user or peer's name. */
|
|
.call-party .caller-name {
|
|
max-width: 12rem;
|
|
padding: 0.15rem 0.5rem;
|
|
border-radius: 0.35rem;
|
|
z-index: 1;
|
|
text-shadow: 0 0 1px var(--clr-bright);
|
|
background-color: var(--clr-background-off-white);
|
|
text-overflow: ellipsis;
|
|
overflow-x: hidden;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.call-party.self .caller-name.inactive {
|
|
position: absolute;
|
|
bottom: 0.25rem;
|
|
right: 0.25rem;
|
|
}
|
|
|
|
.caller-card .caller-name {
|
|
font-size: larger;
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
.caller-card .trusted-badge {
|
|
display: inline-block;
|
|
}
|
|
|
|
.call-party.peer .caller-name.inactive {
|
|
position: absolute;
|
|
font-size: larger;
|
|
left: 1rem;
|
|
bottom: 0.5rem;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.minimized .caller-name {
|
|
padding: 0.1rem 0.35rem;
|
|
border-radius: 0.25rem;
|
|
font-weight: lighter;
|
|
}
|
|
|
|
.call-message {
|
|
display: flex;
|
|
flex-direction: row;
|
|
}
|
|
|
|
.call-message .duration {
|
|
font-weight: lighter;
|
|
}
|
|
|
|
#go-to-latest {
|
|
right: 1.5rem;
|
|
bottom: 1rem;
|
|
}
|
|
|
|
@keyframes active-call {
|
|
0% {
|
|
box-shadow:
|
|
0 0 0 0.1rem var(--clr-primary-accent-transparent-medium),
|
|
0 0 0 0.3rem var(--clr-primary-accent-transparent-medium),
|
|
0 0 0 0.5rem var(--clr-primary-accent-transparent-medium);
|
|
}
|
|
100% {
|
|
box-shadow:
|
|
0 0 0 0.4rem var(--clr-primary-accent-transparent-medium),
|
|
0 0 0 2rem rgba(33, 150, 243, 0), /* End with transparent */
|
|
0 0 0 3rem rgba(33, 150, 243, 0); /* End with transparent */
|
|
}
|
|
}
|
|
|
|
/* Talk bubbles */
|
|
.chat-box {
|
|
list-style: none;
|
|
padding: 0 0 3.5rem 0;
|
|
margin: 0 0.5rem;
|
|
scroll-behavior: smooth;
|
|
}
|
|
|
|
/* Group chats have avatars on the left. Make left margin smaller */
|
|
.chat-box.group {
|
|
margin-left: -0.4rem;
|
|
}
|
|
|
|
.chat-box li {
|
|
display: flex;
|
|
margin: 0;
|
|
padding: 0;
|
|
align-items: flex-end;
|
|
}
|
|
|
|
.chat-box .right {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.bubble {
|
|
position: relative;
|
|
display: flex;
|
|
max-width: 36rem;
|
|
min-width: 9rem;
|
|
height: auto;
|
|
padding: 0.75rem 0.5rem 0.75rem 0.5rem;
|
|
margin: 0;
|
|
text-align: left;
|
|
color: var(--clr-bubble-text);
|
|
border-radius: 0.5rem;
|
|
transition: ease-out background-color 0.5s;
|
|
transition-delay: 0.3s;
|
|
filter: drop-shadow(0.5px 0.5px 0.7px var(--clr-shadow-bubble-drop));
|
|
}
|
|
|
|
.chat-box li.single {
|
|
margin-top: 0.25rem;
|
|
margin-bottom: 0.75rem;
|
|
}
|
|
|
|
.chat-box li.first {
|
|
margin-top: 0.25rem;
|
|
margin-bottom: 0.15rem;
|
|
}
|
|
|
|
.chat-box li.middle {
|
|
margin-top: 0.15rem;
|
|
margin-bottom: 0.15rem;
|
|
}
|
|
|
|
.chat-box li.last {
|
|
margin-top: 0.15rem;
|
|
margin-bottom: 0.75rem;
|
|
}
|
|
|
|
.left .bubble {
|
|
background-color: var(--clr-bubble-left-bg);
|
|
margin-right: 0.5rem;
|
|
}
|
|
|
|
.left.flash .bubble {
|
|
background-color: var(--clr-bubble-left-bg-flash);
|
|
}
|
|
|
|
.left .bubble.tip {
|
|
border-bottom-left-radius: 0;
|
|
}
|
|
|
|
.right .bubble {
|
|
background-color: var(--clr-bubble-right-bg);
|
|
margin-left: 1.75rem;
|
|
}
|
|
|
|
.right.flash .bubble {
|
|
background-color: var(--clr-bubble-right-bg-flash);
|
|
}
|
|
|
|
.right .bubble.tip {
|
|
border-bottom-right-radius: 0;
|
|
}
|
|
|
|
.chat-box .meta {
|
|
justify-content: center;
|
|
margin-top: 0.5rem;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.chat-box .meta .bubble {
|
|
color: var(--clr-bubble-meta-text);
|
|
min-width: unset;
|
|
}
|
|
|
|
.meta .bubble.deleted {
|
|
background-color: var(--clr-bubble-meta-deleted-bg);
|
|
padding: 0.75rem 0.75rem 0.5rem 0.75rem;
|
|
}
|
|
|
|
.meta .bubble.date {
|
|
font-size: smaller;
|
|
padding: 0.5rem 0.5rem 0.5rem 0.5rem;
|
|
background-color: var(--clr-bubble-meta-date-bg);
|
|
text-transform: uppercase;
|
|
user-select: none;
|
|
}
|
|
|
|
/* Left triangle placed bottom left flush. */
|
|
.left .bubble.tip::before {
|
|
content: '';
|
|
position: absolute;
|
|
width: 0.85rem;
|
|
height: 0.85rem;
|
|
left: -0.8rem;
|
|
bottom: 0;
|
|
background-color: var(--clr-bubble-left-bg);
|
|
clip-path: polygon(100% 0, 0 110%, 100% 110%);
|
|
-webkit-clip-path: polygon(100% 0, 0 110%, 100% 110%);
|
|
border-bottom-left-radius: 0.3rem;
|
|
transition: ease-out background-color 0.5s;
|
|
transition-delay: 0.3s;
|
|
}
|
|
|
|
.left.flash .bubble.tip::before {
|
|
background-color: var(--clr-bubble-left-bg-flash);
|
|
}
|
|
|
|
/* Right triangle placed bottom right flush. */
|
|
.right .bubble.tip::before {
|
|
content: '';
|
|
position: absolute;
|
|
width: 0.85rem;
|
|
height: 0.85rem;
|
|
left: 99.8%;
|
|
bottom: 0;
|
|
background-color: var(--clr-bubble-right-bg);
|
|
clip-path: polygon(0 0, 100% 110%, 0 110%);
|
|
-webkit-clip-path: polygon(0 0, 100% 110%, 0 110%);
|
|
border-bottom-right-radius: 0.3rem;
|
|
transition: ease-out background-color 0.5s;
|
|
transition-delay: 0.3s;
|
|
}
|
|
|
|
.right.flash .bubble.tip::before {
|
|
background-color: var(--clr-bubble-right-bg-flash);
|
|
}
|
|
|
|
.chat-box .avatar-box {
|
|
position: relative;
|
|
width: 1.4rem;
|
|
min-width: 1.4rem;
|
|
height: 1.4rem;
|
|
min-height: 1.4rem;
|
|
font-size: 0.8rem;
|
|
margin-bottom: 0.8rem;
|
|
margin-right: 0.8rem;
|
|
}
|
|
|
|
/* Message text + timestamp and delivery marker */
|
|
.bubble div.content-meta {
|
|
width: 100%;
|
|
}
|
|
|
|
.bubble div.message-content {
|
|
position: relative;
|
|
margin: 0;
|
|
width: 100%;
|
|
max-width: 36rem;
|
|
overflow-wrap: anywhere;
|
|
padding: 0 0.75rem 0 0.75rem;
|
|
font-size: var(--message-text-size);
|
|
}
|
|
|
|
/* Increase font size when the message contains only emojis.
|
|
Font from 3x to almost normal, from 1 to 5 emojis in a message */
|
|
.bubble div.message-content.emoji-1 {
|
|
font-size: 300%;
|
|
}
|
|
.bubble div.message-content.emoji-2 {
|
|
font-size: 241%;
|
|
}
|
|
.bubble div.message-content.emoji-3 {
|
|
font-size: 193%;
|
|
}
|
|
.bubble div.message-content.emoji-4 {
|
|
font-size: 155%;
|
|
}
|
|
.bubble div.message-content.emoji-5 {
|
|
font-size: 125%;
|
|
}
|
|
|
|
/* The timestamp is a floating element. Need to ensure div.message-content is expanded
|
|
* to accomodate it. It's usually called clearfix. */
|
|
.bubble div.message-content:after {
|
|
content: ".";
|
|
display: block;
|
|
height: 0;
|
|
clear: both;
|
|
visibility: hidden;
|
|
}
|
|
|
|
.chat-box .timestamp-padding {
|
|
display: inline-block;
|
|
width: 4rem;
|
|
height: 0;
|
|
}
|
|
|
|
.chat-box .timestamp {
|
|
position: relative;
|
|
font-size: 80%;
|
|
color: var(--clr-bubble-timestamp-text);
|
|
top: 0.35rem;
|
|
float: right;
|
|
white-space: nowrap;
|
|
user-select: none;
|
|
}
|
|
|
|
/* The name of the person who sent the message
|
|
* (group chat only)
|
|
*/
|
|
.chat-box .author {
|
|
font-size: 80%;
|
|
color:var(--clr-bubble-author-text);
|
|
max-width: 12em;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
/* Inline and preview image styles */
|
|
.inline-image, .image-preview {
|
|
position: relative;
|
|
overflow: hidden;
|
|
border-radius: 0.1rem;
|
|
}
|
|
|
|
.inline-image {
|
|
max-width: 36rem;
|
|
max-height: 24rem;
|
|
}
|
|
|
|
/* Container with upload progress */
|
|
.inline-image > .rounded-container {
|
|
position: relative;
|
|
margin: 0.25rem auto;
|
|
bottom: 2rem;
|
|
/* Imitating minimum margins on the left and right */
|
|
border-left: 0.25rem solid var(--clr-transparent);
|
|
border-right: 0.25rem solid var(--clr-transparent);
|
|
}
|
|
|
|
/* Broken image graphics which replaces the stock graphics. */
|
|
img.inline-image::before, img.image-preview::before {
|
|
position: absolute;
|
|
display: flex;
|
|
font-size: 0.9rem;
|
|
font-weight: lighter;
|
|
color: var(--clr-text-primary);
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
justify-content: center;
|
|
background: center no-repeat var(--clr-border-light) url("../img/broken_image.png");
|
|
}
|
|
|
|
img.inline-image::before {
|
|
content: attr(alt);
|
|
background-size: 3rem 3rem;
|
|
}
|
|
|
|
img.image-preview::before {
|
|
content: " ";
|
|
background-size: 10rem 10rem;
|
|
}
|
|
|
|
.inline-image.video > img.inline-image::before, img.image-preview.video::before {
|
|
background: center no-repeat var(--clr-border-light) url("../img/broken_video.png");
|
|
}
|
|
|
|
.inline-image.video > img.inline-image::before {
|
|
background-size: 3rem 3rem;
|
|
}
|
|
|
|
.inline-video {
|
|
display: flex;
|
|
position: relative;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.inline-video > img.inline-image::before {
|
|
background: var(--clr-border-light);
|
|
}
|
|
|
|
.inline-video .duration {
|
|
padding: 0.25rem 0.5rem;
|
|
color: var(--clr-toast-bg); /* #333 */
|
|
background-color: rgba(255, 255, 255, 0.5); /* Specific rgba */
|
|
position: absolute;
|
|
bottom: 0.25rem;
|
|
left: 0.25rem;
|
|
font-size: 80%;
|
|
border-radius: 0.3rem;
|
|
}
|
|
|
|
.inline-video .play-control {
|
|
display: flex;
|
|
position: absolute;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 4rem;
|
|
height: 4rem;
|
|
background-color: rgba(0, 0, 0, 0.4); /* Specific rgba */
|
|
border-radius: 50%;
|
|
pointer-events: none;
|
|
cursor: pointer;
|
|
}
|
|
|
|
/* Attachment styles */
|
|
.attachment {
|
|
display: flex;
|
|
}
|
|
.attachment:last-of-type {
|
|
margin-bottom: -0.45rem;
|
|
}
|
|
|
|
/* END of talk bubbles */
|
|
/* END of topic/mesages view */
|
|
|
|
/* InfoView styles */
|
|
#info-caption-panel {
|
|
background-color: var(--clr-background-blue-gray-300);
|
|
}
|
|
#info-caption-panel a {
|
|
color: var(--clr-text-secondary);
|
|
line-height: 1;
|
|
text-decoration: none;
|
|
}
|
|
#info-caption-panel :hover {
|
|
color: var(--clr-dark);
|
|
}
|
|
|
|
#info-title {
|
|
margin-right: auto;
|
|
}
|
|
|
|
#group-manager {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
overflow-y: hidden;
|
|
}
|
|
|
|
#group-manager-buttons {
|
|
display: flex;
|
|
background-color: var(--clr-background-blue-gray-50);
|
|
box-shadow: 0 -1px var(--clr-shadow-panel-divider); /* Faint shadow above panel */
|
|
z-index: 2;
|
|
justify-content: space-around;
|
|
padding: 0.4rem;
|
|
height: 4rem;
|
|
border-left: 1px solid var(--clr-border-light);
|
|
}
|
|
|
|
/* END of InfoView */
|
|
|
|
/* BEGIN Tabs */
|
|
|
|
ul.tabbar {
|
|
display: flex;
|
|
flex-grow: 0;
|
|
flex-shrink: 0;
|
|
background: var(--clr-tabbar-bg);
|
|
list-style:none;
|
|
margin: 0;
|
|
width: 100%;
|
|
overflow: hidden;
|
|
padding: 0;
|
|
padding-left: 1rem;
|
|
}
|
|
|
|
ul.tabbar > li {
|
|
position: relative;
|
|
height: 2.4rem;
|
|
box-shadow: inset 0 -2px 2.5px -1px var(--clr-shadow-button); /* rgba(0,0,0,0.25) */
|
|
}
|
|
|
|
ul.tabbar li.active {
|
|
background: var(--clr-bright);
|
|
}
|
|
|
|
ul.tabbar li:after {
|
|
height: 0.10rem;
|
|
width: 100%;
|
|
content: "";
|
|
bottom: 0;
|
|
left: 0;
|
|
position: absolute;
|
|
background: var(--clr-tabbar-inactive-border);
|
|
}
|
|
|
|
ul.tabbar li.active:after {
|
|
height: 0.15rem;
|
|
content: "";
|
|
bottom: 0;
|
|
left: 0;
|
|
position: absolute;
|
|
background: var(--clr-tabbar-active-border);
|
|
animation: tabbar-border-expand 0.2s cubic-bezier(0.4, 0.0, 0.4, 1) 0s alternate forwards;
|
|
}
|
|
|
|
@keyframes tabbar-border-expand {
|
|
0% {
|
|
opacity: 0;
|
|
width: 0;
|
|
}
|
|
100% {
|
|
opacity: 1;
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
ul.tabbar > li > a {
|
|
position: relative;
|
|
padding-left: 1rem;
|
|
padding-right: 1rem;
|
|
text-align: center;
|
|
line-height: 2.4rem;
|
|
font-weight: 400;
|
|
font-size: 1.3rem;
|
|
font-variant: small-caps;
|
|
text-decoration: none;
|
|
color: var(--clr-tabbar-inactive-text);
|
|
overflow: hidden;
|
|
}
|
|
|
|
ul.tabbar li.active > a {
|
|
color: var(--clr-tabbar-active-text);
|
|
}
|
|
|
|
/* END Tabs */
|
|
|
|
/* Miscellaneous */
|
|
|
|
/* Badge with the number of unread messages */
|
|
.unread {
|
|
display: inline-block;
|
|
font-size: 0.75rem;
|
|
font-weight: bolder;
|
|
background-color: var(--clr-secondary-accent);
|
|
color: var(--clr-bright);
|
|
border-radius: 50%;
|
|
width: 1.35rem;
|
|
height: 1.35rem;
|
|
margin-left: 0.5rem;
|
|
line-height: 1.45rem;
|
|
text-align: center;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.material-icons.as-badge {
|
|
padding-left: 0.2rem;
|
|
font-size: 1.15rem;
|
|
color: var(--clr-chip-remove-icon-bg); /* #aaa */
|
|
}
|
|
|
|
/* Badge with a label, like [you], [muted], etc */
|
|
.badge {
|
|
font-family: 'Roboto Mono', Courier, monospace, sans-serif;
|
|
font-size: 0.8rem;
|
|
border: 1px solid var(--clr-badge-default-border);
|
|
background-color: var(--clr-badge-default-bg);
|
|
color: var(--clr-badge-default-text);
|
|
padding: 0.05rem 0.25rem 0.05rem 0.25rem;
|
|
margin: 0.05rem 0.1rem 0.05rem 0.1rem;
|
|
border-radius: 0.2rem;
|
|
display: inline-block;
|
|
align-self: flex-start;
|
|
}
|
|
|
|
.badge.green {
|
|
border-color: var(--clr-badge-green-border);
|
|
background-color: var(--clr-badge-green-bg);
|
|
color: var(--clr-badge-green-text);
|
|
}
|
|
|
|
.badge.yellow {
|
|
border-color: var(--clr-badge-yellow-border);
|
|
background-color: var(--clr-badge-yellow-bg);
|
|
color: var(--clr-badge-yellow-text);
|
|
}
|
|
|
|
.badge.blue {
|
|
border-color: var(--clr-badge-blue-border);
|
|
background-color: var(--clr-badge-blue-bg);
|
|
color: var(--clr-badge-blue-text);
|
|
}
|
|
|
|
.badge.red {
|
|
border-color: var(--clr-badge-red-border);
|
|
background-color: var(--clr-badge-red-bg);
|
|
color: var(--clr-badge-red-text);
|
|
}
|
|
|
|
.badge.magenta {
|
|
border-color: var(--clr-badge-magenta-border);
|
|
background-color: var(--clr-badge-magenta-bg);
|
|
color: var(--clr-badge-magenta-text);
|
|
}
|
|
|
|
/* Letter tile base style, responsive square box */
|
|
.lettertile {
|
|
width: 100%;
|
|
padding-bottom: 100%;
|
|
border-radius: 50%;
|
|
user-select: none;
|
|
}
|
|
|
|
/* Div with letter tile content */
|
|
.lettertile > div {
|
|
position: absolute;
|
|
display: flex;
|
|
flex-shrink: 0;
|
|
flex-grow: 0;
|
|
top: 0; bottom: 0; left: 0; right: 0;
|
|
text-transform: uppercase;
|
|
align-items: center;
|
|
justify-content: center;
|
|
text-align: center;
|
|
border-radius: 50%;
|
|
line-height: 1;
|
|
padding-top: 0.1em;
|
|
color: var(--clr-lettertile-default-text); /* default text color #FAFAFA, gray 50 */
|
|
}
|
|
|
|
.lettertile:hover {
|
|
color: var(--clr-lettertile-hover-text);
|
|
}
|
|
|
|
.lettertile.disabled {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
/* Colors of letter tiles */
|
|
.lt-bg-0 { background-color: var(--clr-lt-bg-0); }
|
|
.lt-bg-1 { background-color: var(--clr-lt-bg-1); }
|
|
.lt-bg-2 { background-color: var(--clr-lt-bg-2); }
|
|
.lt-bg-3 { background-color: var(--clr-lt-bg-3); }
|
|
.lt-bg-4 { background-color: var(--clr-lt-bg-4); }
|
|
.lt-bg-5 { background-color: var(--clr-lt-bg-5); }
|
|
.lt-bg-6 { background-color: var(--clr-lt-bg-6); }
|
|
.lt-bg-7 { background-color: var(--clr-lt-bg-7); }
|
|
.lt-bg-8 { background-color: var(--clr-lt-bg-8); }
|
|
.lt-bg-9 { background-color: var(--clr-lt-bg-9); }
|
|
.lt-bg-10 { background-color: var(--clr-lt-bg-10); }
|
|
.lt-bg-11 { background-color: var(--clr-lt-bg-11); }
|
|
.lt-bg-12 { background-color: var(--clr-lt-bg-12); }
|
|
.lt-bg-13 { background-color: var(--clr-lt-bg-13); }
|
|
.lt-bg-14 { background-color: var(--clr-lt-bg-14); }
|
|
.lt-bg-15 { background-color: var(--clr-lt-bg-15); }
|
|
|
|
/* Darker version of letter tile colors */
|
|
.dk-bg-0 { background-color: var(--clr-dk-bg-0); }
|
|
.dk-bg-1 { background-color: var(--clr-dk-bg-1); }
|
|
.dk-bg-2 { background-color: var(--clr-dk-bg-2); }
|
|
.dk-bg-3 { background-color: var(--clr-dk-bg-3); }
|
|
.dk-bg-4 { background-color: var(--clr-dk-bg-4); }
|
|
.dk-bg-5 { background-color: var(--clr-dk-bg-5); }
|
|
.dk-bg-6 { background-color: var(--clr-dk-bg-6); }
|
|
.dk-bg-7 { background-color: var(--clr-dk-bg-7); }
|
|
.dk-bg-8 { background-color: var(--clr-dk-bg-8); }
|
|
.dk-bg-9 { background-color: var(--clr-dk-bg-9); }
|
|
.dk-bg-10 { background-color: var(--clr-dk-bg-10); }
|
|
.dk-bg-11 { background-color: var(--clr-dk-bg-11); }
|
|
.dk-bg-12 { background-color: var(--clr-dk-bg-12); }
|
|
.dk-bg-13 { background-color: var(--clr-dk-bg-13); }
|
|
.dk-bg-14 { background-color: var(--clr-dk-bg-14); }
|
|
.dk-bg-15 { background-color: var(--clr-dk-bg-15); }
|
|
|
|
/* Same colors as above but for text as opposite to background */
|
|
.lt-fg-0 { color: var(--clr-lt-fg-0)!important; }
|
|
.lt-fg-1 { color: var(--clr-lt-fg-1)!important; }
|
|
.lt-fg-2 { color: var(--clr-lt-fg-2)!important; }
|
|
.lt-fg-3 { color: var(--clr-lt-fg-3)!important; }
|
|
.lt-fg-4 { color: var(--clr-lt-fg-4)!important; }
|
|
.lt-fg-5 { color: var(--clr-lt-fg-5)!important; }
|
|
.lt-fg-6 { color: var(--clr-lt-fg-6)!important; }
|
|
.lt-fg-7 { color: var(--clr-lt-fg-7)!important; }
|
|
.lt-fg-8 { color: var(--clr-lt-fg-8)!important; }
|
|
.lt-fg-9 { color: var(--clr-lt-fg-9)!important; }
|
|
.lt-fg-10 { color: var(--clr-lt-fg-10)!important; }
|
|
.lt-fg-11 { color: var(--clr-lt-fg-11)!important; }
|
|
.lt-fg-12 { color: var(--clr-lt-fg-12)!important; }
|
|
.lt-fg-13 { color: var(--clr-lt-fg-13)!important; }
|
|
.lt-fg-14 { color: var(--clr-lt-fg-14)!important; }
|
|
.lt-fg-15 { color: var(--clr-lt-fg-15)!important; }
|
|
|
|
.dk-fg-0 { color: var(--clr-dk-fg-0)!important; }
|
|
.dk-fg-1 { color: var(--clr-dk-fg-1)!important; }
|
|
.dk-fg-2 { color: var(--clr-dk-fg-2)!important; }
|
|
.dk-fg-3 { color: var(--clr-dk-fg-3)!important; }
|
|
.dk-fg-4 { color: var(--clr-dk-fg-4)!important; }
|
|
.dk-fg-5 { color: var(--clr-dk-fg-5)!important; }
|
|
.dk-fg-6 { color: var(--clr-dk-fg-6)!important; }
|
|
.dk-fg-7 { color: var(--clr-dk-fg-7)!important; }
|
|
.dk-fg-8 { color: var(--clr-dk-fg-8)!important; }
|
|
.dk-fg-9 { color: var(--clr-dk-fg-9)!important; }
|
|
.dk-fg-10 { color: var(--clr-dk-fg-10)!important; }
|
|
.dk-fg-11 { color: var(--clr-dk-fg-11)!important; }
|
|
.dk-fg-12 { color: var(--clr-dk-fg-12)!important; }
|
|
.dk-fg-13 { color: var(--clr-dk-fg-13)!important; }
|
|
.dk-fg-14 { color: var(--clr-dk-fg-14)!important; }
|
|
.dk-fg-15 { color: var(--clr-dk-fg-15)!important; }
|
|
|
|
/* Material icons resized from the default 24pt */
|
|
.material-icons {
|
|
font-size: 1.4rem;
|
|
line-height: 1;
|
|
vertical-align: middle;
|
|
text-align: center;
|
|
user-select: none;
|
|
}
|
|
.material-icons.small {
|
|
font-size: 1rem;
|
|
}
|
|
.material-icons.medium {
|
|
font-size: 1.2rem;
|
|
}
|
|
.material-icons.large {
|
|
font-size: 1.6rem;
|
|
}
|
|
.material-icons.big {
|
|
font-size: 2.2rem;
|
|
}
|
|
.material-icons.x-big {
|
|
font-size: 3rem;
|
|
}
|
|
.material-icons.huge {
|
|
font-size: 4rem;
|
|
}
|
|
.composed-material {
|
|
display: inline-block;
|
|
position: relative;
|
|
}
|
|
.composed-material .second {
|
|
position: absolute;
|
|
font-size: 85%;
|
|
top: 7%;
|
|
left: 39%;
|
|
font-weight: bold;
|
|
}
|
|
.composed-material .second-small {
|
|
position: absolute;
|
|
font-size: 62%;
|
|
top: 14%;
|
|
left: 30%;
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* White outline */
|
|
.material-icons.outline {
|
|
position: relative;
|
|
text-shadow: -1px 1px var(--clr-bright), 1px 1px var(--clr-bright), 1px -1px var(--clr-bright), -1px -1px var(--clr-bright);
|
|
}
|
|
|
|
#self-avatar .material-icons {
|
|
font-size: 2.4rem;
|
|
line-height: 3rem;
|
|
}
|
|
.avatar-box .material-icons {
|
|
color: var(--clr-lettertile-default-text); /* #fafafa, gray 50 */
|
|
border-radius: 50%;
|
|
width: inherit;
|
|
height: inherit;
|
|
}
|
|
|
|
.chip-input {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
flex-grow: 1;
|
|
cursor: text;
|
|
font-size: 1.1rem;
|
|
font-weight: normal;
|
|
background: var(--clr-transparent);
|
|
border-bottom: 1px solid var(--clr-input-border);
|
|
box-shadow: 0 1px 0 var(--clr-input-shadow);
|
|
transition: all 0.1s ease-in-out;
|
|
max-height: 10rem;
|
|
min-height: 4rem;
|
|
overflow-y: scroll;
|
|
margin: 0.25rem 0 0.25rem 0;
|
|
outline: none;
|
|
color: var(--clr-input-text);
|
|
align-items: center;
|
|
justify-content: flex-start;
|
|
text-align: center;
|
|
}
|
|
|
|
.chip-input.focused {
|
|
border-bottom: 1px solid var(--clr-input-border-focus);
|
|
box-shadow: 0 1px 0 var(--clr-input-shadow-focus);
|
|
}
|
|
|
|
.chip-input > input[type="text"] {
|
|
display: inline-block;
|
|
width: auto;
|
|
border: none;
|
|
line-height: 1.8;
|
|
box-shadow: none;
|
|
min-width: 4rem;
|
|
flex: 1 0 auto;
|
|
height: 1.8rem;
|
|
margin: 0.125rem;
|
|
}
|
|
|
|
.chip {
|
|
display: flex;
|
|
flex: 0 0 auto;
|
|
align-items: center;
|
|
height: 1.8rem;
|
|
line-height: 1.8;
|
|
border-radius: 0.9rem;
|
|
margin: 0.125rem;
|
|
background-color: var(--clr-chip-bg);
|
|
white-space: nowrap;
|
|
font-size: 90%;
|
|
max-width: 12rem;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.chip > span {
|
|
white-space: nowrap;
|
|
overflow-x: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.chip.invalid {
|
|
color: var(--clr-chip-invalid-text);
|
|
background-color: var(--clr-chip-invalid-bg);
|
|
}
|
|
|
|
.chip > a {
|
|
display: inline-block;
|
|
color: var(--clr-chip-remove-icon-text);
|
|
background-color: var(--clr-chip-remove-icon-bg);
|
|
border-radius: 50%;
|
|
margin: 0.3rem;
|
|
width: 1.175rem;
|
|
min-width: 1.175rem;
|
|
height: 1.175rem;
|
|
line-height: 1.15;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.chip > a:focus,
|
|
.chip > a:hover {
|
|
text-decoration: none;
|
|
color: var(--clr-chip-remove-icon-hover-text);
|
|
background-color: var(--clr-chip-remove-icon-hover-bg);
|
|
}
|
|
|
|
.chip .avatar-box {
|
|
position: relative;
|
|
width: 1.8rem;
|
|
min-width: 1.8rem;
|
|
height: 1.8rem;
|
|
min-height: 1.8rem;
|
|
font-size: 1rem;
|
|
margin-right: 0.2rem;
|
|
}
|
|
|
|
.chip .avatar-box .material-icons {
|
|
font-size: 1.4rem;
|
|
line-height: 1.8rem;
|
|
}
|
|
|
|
.chip .spacer {
|
|
display: inline-block;
|
|
margin: 0.3rem;
|
|
width: 0.25rem;
|
|
height: 1.175rem;
|
|
}
|
|
|
|
.load-spinner-box {
|
|
--size-small: 2.5rem;
|
|
--size-large: 4rem;
|
|
position: absolute;
|
|
box-shadow: 0.1rem 0.1rem 0.15rem 1px var(--clr-shadow-button);
|
|
border-radius: 50%;
|
|
padding: 0.25rem;
|
|
width: var(--size-small);
|
|
height: var(--size-small);
|
|
left: 0;
|
|
right: 0;
|
|
top: 5rem;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
background-color: var(--clr-bright);
|
|
z-index: 2;
|
|
}
|
|
|
|
.load-spinner-box.large {
|
|
width: var(--size-large);
|
|
height: var(--size-large);
|
|
}
|
|
|
|
.load-spinner-box.clear {
|
|
box-shadow: 0.1rem 0.1rem 0.15rem 1px var(--clr-shadow-button-inset-active); /* rgba(0,0,0,0.12) */
|
|
background-color: rgba(255,255,255,0.5); /* Specific rgba */
|
|
}
|
|
|
|
.load-spinner-box.centered {
|
|
top: calc(var(--size-small)/2 - 0.25rem);
|
|
}
|
|
|
|
.load-spinner-box.large.centered {
|
|
top: calc(var(--size-large)/2 - 0.25rem);
|
|
}
|
|
|
|
.loader-spinner {
|
|
border: 0.35rem solid var(--clr-spinner-track);
|
|
border-radius: 50%;
|
|
border-top: 0.35rem solid var(--clr-spinner-active);
|
|
width: 2rem;
|
|
height: 2rem;
|
|
animation: spin 1.5s linear infinite;
|
|
}
|
|
|
|
.load-spinner-box.large .loader-spinner {
|
|
width: 3.5rem;
|
|
height: 3.5rem;
|
|
}
|
|
|
|
@keyframes spin {
|
|
0% { transform: rotate(0deg); }
|
|
100% { transform: rotate(360deg); }
|
|
}
|
|
|
|
/* File upload styles */
|
|
.uploader {
|
|
display: flex;
|
|
}
|
|
/* Gray uploader bar of fixed length (background) */
|
|
.uploader > div {
|
|
position: relative;
|
|
height: 0.6rem;
|
|
padding: 0.15rem;
|
|
margin: 0.35rem;
|
|
width: 6rem;
|
|
line-height: 0;
|
|
border-radius: 0.1rem;
|
|
background-color: var(--clr-background-blue-gray-100);
|
|
}
|
|
/* Colored uploader progress bar of variable length */
|
|
.uploader > div > span {
|
|
display: inline-block;
|
|
height: 0.3rem;
|
|
background-color: var(--clr-primary-action);
|
|
border-radius: 0.08rem;
|
|
}
|
|
|
|
/* Highlighted text */
|
|
.highlight {
|
|
color: var(--clr-highlight-text);
|
|
font-weight: bolder;
|
|
}
|
|
|
|
.highlight .preview {
|
|
color: var(--clr-highlight-preview-text);
|
|
font-weight: inherit;
|
|
}
|
|
|
|
/* Image cropping widget */
|
|
|
|
.cropper {
|
|
position: relative;
|
|
width: 18rem;
|
|
height: 21rem;
|
|
margin: auto;
|
|
margin-top: 1rem;
|
|
align-self: center;
|
|
transform: translateZ(0);
|
|
border-radius: 0.25rem;
|
|
}
|
|
|
|
.cropper .bounding-box {
|
|
position: relative;
|
|
width: 18rem;
|
|
height: 18rem;
|
|
overflow: hidden;
|
|
z-index: 1;
|
|
border-radius: 0.25rem;
|
|
border: solid 2px var(--clr-cropper-bounding-box-border);
|
|
box-shadow: 1px 1px 3px var(--clr-shadow-cropper-gray);
|
|
background-color: var(--clr-cropper-bounding-box-bg);
|
|
}
|
|
|
|
.cropper .preview {
|
|
position: absolute;
|
|
max-height: none;
|
|
max-width: none;
|
|
z-index: -1;
|
|
}
|
|
|
|
.cropper .cutout {
|
|
position: absolute;
|
|
width: 17.8rem;
|
|
height: 17.8rem;
|
|
border: 1px dashed var(--clr-cropper-cutout-border);
|
|
margin: auto;
|
|
top: 0;
|
|
bottom: 0;
|
|
right: 0;
|
|
left: 0;
|
|
box-shadow: 0 0 150rem 150rem var(--clr-cropper-cutout-shadow);
|
|
z-index: 0;
|
|
}
|
|
|
|
.cropper .cutout.circle {
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.cropper .overlay {
|
|
position: absolute;
|
|
cursor: move;
|
|
touch-action: none;
|
|
z-index: 1;
|
|
}
|
|
|
|
.cropper .zoom-wrapper {
|
|
height: 2rem;
|
|
width: 80%;
|
|
margin: 1rem auto;
|
|
text-align: center;
|
|
}
|
|
|
|
.cropper .zoom {
|
|
box-shadow: none;
|
|
pointer-events: none;
|
|
z-index: 2;
|
|
}
|
|
|
|
.cropper .zoom:focus {
|
|
outline: none;
|
|
}
|
|
|
|
/* Quoted (cited) content */
|
|
.reply-quote {
|
|
position: relative;
|
|
padding: 0.15rem 0.5rem 0.25rem 0.5rem;
|
|
border-left: 0.25rem solid var(--clr-reply-quote-border);
|
|
line-height: 1.5em;
|
|
font-weight: lighter;
|
|
border-radius: 0.25rem;
|
|
color: var(--clr-reply-quote-text);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.chat-box .bubble .reply-quote {
|
|
margin: 0.15rem -0.75rem 0.3rem -0.75rem;
|
|
}
|
|
|
|
.chat-box .bubble .reply-quote:first-child {
|
|
margin-top: -0.25rem;
|
|
}
|
|
|
|
.chat-box .left .reply-quote {
|
|
background-color: var(--clr-reply-quote-left-bg);
|
|
}
|
|
|
|
.chat-box .right .reply-quote {
|
|
background-color: var(--clr-reply-quote-right-bg);
|
|
}
|
|
|
|
.reply-quote .inline-image {
|
|
vertical-align: middle;
|
|
margin-bottom: 0.1rem;
|
|
}
|
|
|
|
.reply-quote img.inline-image::before {
|
|
content: '';
|
|
}
|
|
|
|
#reply-quote-preview {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
#reply-quote-preview .reply-quote {
|
|
width: 100%;
|
|
background-color: var(--clr-reply-quote-preview-bg);
|
|
margin: 0.35rem 0.5rem 0 0;
|
|
cursor: initial;
|
|
}
|
|
|
|
#reply-quote-preview .cancel {
|
|
min-width: 2.4rem;
|
|
text-align: center;
|
|
}
|
|
|
|
#reply-quote-preview .inline-image {
|
|
background-color: var(--clr-border-light);
|
|
}
|
|
|
|
#reply-quote-preview img.inline-image::before {
|
|
content: '';
|
|
}
|
|
|
|
#send-message-panel #reply-quote-preview {
|
|
width: 100%;
|
|
}
|
|
#send-message-panel #reply-quote-preview .reply-quote {
|
|
margin-bottom: 0.35rem;
|
|
}
|
|
|
|
.forwarding-quote {
|
|
font-size: 200%;
|
|
line-height: 200%;
|
|
}
|
|
|
|
.mention {
|
|
font-weight: 500;
|
|
}
|
|
|
|
/* Message forwarding. */
|
|
.forward-dialog {
|
|
position: relative;
|
|
overflow: hidden;
|
|
background-color: var(--clr-bright);
|
|
box-shadow: 0.15rem 0.15rem 1.5rem var(--clr-shadow-dialog);
|
|
padding: 0.5rem;
|
|
border-radius: 0.3rem;
|
|
margin: auto 1rem auto 1rem;
|
|
width: 24rem;
|
|
height: 80%;
|
|
}
|
|
|
|
.forward-dialog .scrollable-panel {
|
|
height: 80%;
|
|
}
|
|
|
|
.audio {
|
|
display: flex;
|
|
margin-left: auto;
|
|
align-items: center;
|
|
flex: none;
|
|
background-color: var(--clr-audio-bg);
|
|
height: 3rem;
|
|
border-radius: 1.5rem;
|
|
}
|
|
|
|
.audio canvas {
|
|
width: 14rem;
|
|
height: 2.6rem;
|
|
margin-right: 2rem;
|
|
}
|
|
|
|
.audio canvas.playback {
|
|
margin-right: 0;
|
|
}
|
|
|
|
.audio .duration {
|
|
font-size: large;
|
|
}
|
|
|
|
.audio-player {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.audio-player .material-icons.large {
|
|
font-size: 2.4rem;
|
|
color: var(--clr-audio-icon);
|
|
}
|
|
|
|
.audio-player .material-icons.disabled {
|
|
color: var(--clr-audio-icon-disabled);
|
|
cursor: default;
|
|
}
|
|
|
|
.audio-player .playback {
|
|
width: 14rem;
|
|
height: 2.6rem;
|
|
}
|
|
|
|
.audio-player canvas.playback {
|
|
display: block;
|
|
}
|
|
|
|
.audio-player div.playback {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
color: var(--clr-audio-icon);
|
|
font-size: small;
|
|
}
|
|
|
|
.audio-player .timer {
|
|
font-size: smaller;
|
|
color: var(--clr-audio-timer-text);
|
|
}
|
|
|
|
/* Pinned messages */
|
|
#pinned-wrapper {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
height: 100%;
|
|
margin-right: 0.5rem;
|
|
}
|
|
|
|
.pinned {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 0.15rem 0.5rem 0.25rem 0.5rem;
|
|
background-color: var(--clr-background-off-white);
|
|
background-position: center;
|
|
font-weight: lighter;
|
|
border-radius: 0 0.25rem 0.25rem 0;
|
|
color: var(--clr-text-primary);
|
|
height: 100%;
|
|
width: 24rem;
|
|
min-width: 0;
|
|
cursor: pointer;
|
|
transition: background 0.4s;
|
|
}
|
|
|
|
.pinned > p {
|
|
overflow-x: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.pinned:hover {
|
|
background-color: var(--clr-bright); /* #fafdff is very close to white */
|
|
}
|
|
|
|
.pinned:active {
|
|
background-color: var(--clr-blue-wash-medium);
|
|
transition: background 0s;
|
|
}
|
|
|
|
.pinned-scroll {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
border-radius: 0.25rem 0 0 0.25rem;
|
|
background-color: var(--clr-background-extra-light-gray);
|
|
justify-content: space-evenly;
|
|
height: 100%;
|
|
padding: 0.2rem;
|
|
margin-left: 0.35rem;
|
|
user-select: none;
|
|
}
|
|
|
|
.pinned-scroll .dot {
|
|
width: 0.3rem;
|
|
height: 0.3rem;
|
|
border-radius: 50%;
|
|
background-color: var(--clr-text-tertiary);
|
|
user-select: none;
|
|
}
|
|
|
|
.pinned-scroll .adot {
|
|
width: 0.45rem;
|
|
height: 0.45rem;
|
|
border-radius: 50%;
|
|
background-color: var(--clr-light-blue-accent);
|
|
user-select: none;
|
|
}
|
|
|
|
#pinned-wrapper:hover .menuTrigger {
|
|
opacity: 0.9;
|
|
}
|
|
#pinned-wrapper:hover .menuTrigger a {
|
|
color: var(--clr-text-secondary);
|
|
}
|
|
|
|
.pinned-menu {
|
|
position: absolute;
|
|
display: flex;
|
|
flex-direction: column;
|
|
background-color: var(--clr-pinned-menu-bg);
|
|
border-radius: 0 0.25rem 0.25rem 0;
|
|
justify-content: space-evenly;
|
|
top: 0;
|
|
bottom: 0;
|
|
right: 0;
|
|
}
|
|
|
|
.pinned-menu .menuTrigger {
|
|
position: relative;
|
|
right: 0;
|
|
}
|
|
/* END of pinned messages */
|
|
|
|
/* Contact attachments */
|
|
.contact-card {
|
|
position: relative;
|
|
background-color: var(--clr-background-off-white);
|
|
border-radius: 0.5rem;
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-width: 14rem;
|
|
}
|
|
|
|
.contact-card .avatar-box {
|
|
position: relative;
|
|
width: 1.8rem;
|
|
height: 1.8rem;
|
|
font-size: 1rem;
|
|
margin-right: 0.75rem;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.contact-card .contact-body {
|
|
align-items: center;
|
|
background-color: var(--clr-background-blue-gray-50);
|
|
display: flex;
|
|
padding: 0.75rem;
|
|
border-radius: 0.5rem 0.5rem 0 0;
|
|
border-bottom: none;
|
|
}
|
|
|
|
.contact-card .contact-body .name-box {
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.contact-card .contact-body .name-box .name {
|
|
color: var(--clr-text-primary);
|
|
font-weight: 500;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.contact-card .contact-body .name-box .org {
|
|
color: var(--clr-text-secondary);
|
|
font-size: 90%;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
font-weight: 300;
|
|
}
|
|
|
|
.contact-card .contact-actions {
|
|
display: flex;
|
|
justify-content: space-evenly;
|
|
align-items: center;
|
|
padding: 0 0.5rem;
|
|
border-radius: 0 0 0.5rem 0.5rem;
|
|
border-top: none;
|
|
background-color: var(--clr-bright);
|
|
}
|
|
|
|
.contact-card .contact-actions a {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.contact-card .contact-actions .divider {
|
|
height: 1.8rem;
|
|
opacity: 0.5;
|
|
}
|
|
|
|
/* END of contact attachments */
|
|
|
|
/*
|
|
Drag-and-drop area.
|
|
*/
|
|
.drag-n-drop {
|
|
display: flex;
|
|
border: dashed var(--clr-drag-n-drop-border) 0.15rem;
|
|
border-radius: 1rem;
|
|
background-color: var(--clr-drag-n-drop-bg);
|
|
position: absolute;
|
|
top: 1.5rem;
|
|
bottom: 1.5rem;
|
|
left: 1.5rem;
|
|
right: 1.5rem;
|
|
z-index: 3;
|
|
justify-content: center;
|
|
align-items: center;
|
|
font-size: 2rem;
|
|
color: var(--clr-drag-n-drop-text);
|
|
outline: 0.5rem solid var(--clr-drag-n-drop-outline);
|
|
}
|
|
|
|
.country-flag {
|
|
display: inline-block;
|
|
font-size: larger;
|
|
}
|
|
|
|
.dial-code {
|
|
white-space: nowrap;
|
|
display: inline-block;
|
|
cursor: pointer;
|
|
vertical-align: middle;
|
|
margin-bottom: 0.15rem;
|
|
}
|
|
|
|
ul.phone-country-selector {
|
|
list-style: none;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
ul.phone-country-selector > li {
|
|
position: relative;
|
|
font-weight: lighter;
|
|
padding: 0.25rem 0.5rem 0.15rem 0.5rem;
|
|
cursor: pointer;
|
|
width: 100%;
|
|
}
|
|
|
|
ul.phone-country-selector > li:hover {
|
|
background-color: var(--clr-background-blue-gray-50); /* blue-gray 50 highlight */
|
|
}
|
|
ul.phone-country-selector > li.selected {
|
|
background-color: var(--clr-background-blue-gray-100); /* blue-gray 100 highlight */
|
|
}
|
|
|
|
ul.phone-country-selector .dial-code {
|
|
position: absolute;
|
|
right: 0.5rem;
|
|
color: var(--clr-primary-action);
|
|
font-weight: normal;
|
|
}
|
|
|
|
ul.phone-country-selector span {
|
|
display: inline-block;
|
|
}
|
|
|
|
ul.phone-country-selector span.country {
|
|
text-overflow: ellipsis;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
.image-grid {
|
|
position: relative;
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(7rem, 1fr));
|
|
gap: 0.35rem;
|
|
padding: 0.25rem;
|
|
}
|
|
|
|
.image-grid-cell {
|
|
padding: 0;
|
|
margin: 0;
|
|
width: 100%;
|
|
height: 7rem;
|
|
overflow: hidden;
|
|
border-radius: 0.25rem;
|
|
border: 1.5px solid transparent;
|
|
cursor: pointer;
|
|
box-shadow: 0 0 0.2rem var( --clr-shadow-hr-inset); /* gray */
|
|
}
|
|
|
|
.image-grid-cell img {
|
|
object-fit: cover;
|
|
}
|
|
|
|
.image-grid-cell.selected {
|
|
border: 1.5px solid var(--clr-secondary-accent);
|
|
}
|
|
|
|
img.inverted {
|
|
filter: invert(1);
|
|
}
|
|
|
|
div.toast {
|
|
visibility: hidden;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
position: absolute;
|
|
min-width: 10rem;
|
|
padding: 0.5rem 1rem;
|
|
height: 3rem;
|
|
z-index: 3;
|
|
font-weight: lighter;
|
|
color: var(--clr-toast-text);
|
|
background-color: var(--clr-toast-bg);
|
|
border-radius: 0.5rem;
|
|
box-shadow: 1px 2px 0.3rem var(--clr-shadow-gray-strong); /* gray */
|
|
bottom: 2rem;
|
|
left: 50%;
|
|
translate: -50%;
|
|
}
|
|
|
|
div.toast.show {
|
|
visibility: visible;
|
|
animation: fadein 0.5s, fadeout 0.5s 2.5s;
|
|
}
|
|
|
|
/* Tenant entry, authentication, and identity security. */
|
|
#sidepanel.auth-onboarding-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
color-scheme: light;
|
|
background: #f7f9fc;
|
|
color: #20242c;
|
|
}
|
|
|
|
.auth-onboarding-panel * {
|
|
box-sizing: border-box;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.auth-page,
|
|
.auth-landing {
|
|
position: relative;
|
|
width: 100%;
|
|
min-height: 100%;
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
background: #fff;
|
|
}
|
|
|
|
.auth-soft-bg {
|
|
background: #f6f7f9;
|
|
}
|
|
|
|
.auth-landing {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
padding: max(1.5rem, env(safe-area-inset-top)) 2rem max(1.5rem, env(safe-area-inset-bottom));
|
|
background:
|
|
radial-gradient(ellipse 40% 25% at 90% 0%, rgba(68, 151, 255, 0.14), transparent 72%),
|
|
#fff;
|
|
}
|
|
|
|
.auth-landing-form {
|
|
width: min(100%, 28rem);
|
|
margin: auto 0;
|
|
}
|
|
|
|
.auth-brand {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
margin-bottom: 4rem;
|
|
}
|
|
|
|
.auth-logo {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 5.5rem;
|
|
height: 5.5rem;
|
|
border-radius: 0.75rem;
|
|
background: #fff;
|
|
box-shadow: 0 0.75rem 2rem rgba(35, 74, 125, 0.14);
|
|
}
|
|
|
|
.auth-logo span {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3.75rem;
|
|
height: 3.75rem;
|
|
border-radius: 50% 50% 50% 18%;
|
|
color: #fff;
|
|
background: #1677ff;
|
|
font-size: 2.2rem;
|
|
font-weight: 700;
|
|
transform: rotate(-18deg);
|
|
}
|
|
|
|
.auth-brand h1 {
|
|
margin: 1.3rem 0 0;
|
|
color: #14171c;
|
|
font-size: 2rem;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.auth-top-link,
|
|
.auth-bottom-link,
|
|
.auth-back-link,
|
|
.auth-text-button,
|
|
.auth-switch button,
|
|
.auth-remove-file {
|
|
width: auto;
|
|
min-width: 0;
|
|
height: auto;
|
|
min-height: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #1677ff;
|
|
background: transparent;
|
|
font-size: 0.95rem;
|
|
text-transform: none;
|
|
}
|
|
|
|
.auth-top-link {
|
|
position: absolute;
|
|
top: max(1.5rem, env(safe-area-inset-top));
|
|
right: 2rem;
|
|
}
|
|
|
|
.auth-bottom-link {
|
|
margin-top: auto;
|
|
padding-top: 2rem;
|
|
}
|
|
|
|
.auth-back-link {
|
|
position: absolute;
|
|
top: max(1.5rem, env(safe-area-inset-top));
|
|
left: 2rem;
|
|
display: flex;
|
|
align-items: center;
|
|
color: #616975;
|
|
}
|
|
|
|
.auth-back-link .material-icons {
|
|
margin-right: 0.15rem;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.auth-field-wrap {
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.auth-field {
|
|
display: flex;
|
|
align-items: center;
|
|
min-height: 3.8rem;
|
|
border: 1px solid transparent;
|
|
border-radius: 0.5rem;
|
|
background: #f2f4f7;
|
|
transition: border-color 150ms, box-shadow 150ms;
|
|
}
|
|
|
|
.auth-field:focus-within {
|
|
border-color: #4091ff;
|
|
box-shadow: 0 0 0 3px rgba(22, 119, 255, 0.1);
|
|
}
|
|
|
|
.auth-field.invalid {
|
|
border-color: #d94b4b;
|
|
}
|
|
|
|
.auth-field input {
|
|
min-width: 0;
|
|
width: 100%;
|
|
height: 3.7rem;
|
|
margin: 0;
|
|
padding: 0 1rem;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #252931;
|
|
background: transparent;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.auth-field input:focus {
|
|
box-shadow: none;
|
|
}
|
|
|
|
.auth-field input::placeholder,
|
|
.auth-list-form input::placeholder,
|
|
.auth-realname-content input::placeholder,
|
|
.auth-form textarea::placeholder {
|
|
color: #b2b7bf;
|
|
}
|
|
|
|
.auth-field-icon {
|
|
flex: none;
|
|
margin-left: 1rem;
|
|
color: #4091ff;
|
|
font-size: 1.35rem;
|
|
}
|
|
|
|
.auth-inline-icon,
|
|
.auth-icon-button {
|
|
display: grid;
|
|
place-items: center;
|
|
flex: none;
|
|
width: 3.25rem;
|
|
min-width: 3.25rem;
|
|
height: 3.25rem;
|
|
min-height: 3.25rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #a7adb6;
|
|
background: transparent;
|
|
}
|
|
|
|
.auth-inline-icon .material-icons {
|
|
font-size: 1.25rem;
|
|
}
|
|
|
|
.auth-field-error {
|
|
margin-top: 0.4rem;
|
|
color: #cf3f3f;
|
|
font-size: 0.82rem;
|
|
}
|
|
|
|
.auth-primary {
|
|
width: 100%;
|
|
height: 3.8rem;
|
|
margin: 1rem 0 0;
|
|
border: 0;
|
|
border-radius: 0.5rem;
|
|
color: #fff;
|
|
background: #368bfa;
|
|
box-shadow: 0 0.4rem 1rem rgba(54, 139, 250, 0.2);
|
|
font-size: 1.08rem;
|
|
font-weight: 500;
|
|
text-transform: none;
|
|
}
|
|
|
|
.auth-primary:hover:not([disabled]),
|
|
.auth-primary:focus:not([disabled]) {
|
|
background: #1677e8;
|
|
}
|
|
|
|
.auth-primary[disabled] {
|
|
color: #fff;
|
|
background: #b8d5fa;
|
|
box-shadow: none;
|
|
cursor: default;
|
|
}
|
|
|
|
.auth-row {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.auth-row-end {
|
|
justify-content: flex-end;
|
|
min-height: 1.5rem;
|
|
margin-top: -0.35rem;
|
|
}
|
|
|
|
.auth-switch {
|
|
margin: 1.3rem 0 0;
|
|
color: #4a4f57;
|
|
text-align: center;
|
|
}
|
|
|
|
.auth-agreement {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
max-width: 32rem;
|
|
margin-top: auto;
|
|
color: #454b54;
|
|
font-size: 0.9rem;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.auth-agreement input {
|
|
width: 1.1rem;
|
|
height: 1.1rem;
|
|
margin: 0.12rem 0.55rem 0 0;
|
|
accent-color: #368bfa;
|
|
}
|
|
|
|
.auth-agreement a {
|
|
color: #1677ff;
|
|
}
|
|
|
|
.auth-form-alert {
|
|
display: flex;
|
|
align-items: center;
|
|
margin: 0 0 1rem;
|
|
padding: 0.75rem 0.9rem;
|
|
border-radius: 0.4rem;
|
|
color: #bd3434;
|
|
background: #fff1f1;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.auth-form-alert .material-icons {
|
|
margin-right: 0.45rem;
|
|
font-size: 1.15rem;
|
|
}
|
|
|
|
.auth-header {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 2;
|
|
display: grid;
|
|
grid-template-columns: 3.5rem 1fr 3.5rem;
|
|
align-items: center;
|
|
height: 4.25rem;
|
|
padding-top: env(safe-area-inset-top);
|
|
border-bottom: 1px solid #edf0f4;
|
|
background: rgba(255,255,255,0.96);
|
|
}
|
|
|
|
.auth-header h1 {
|
|
margin: 0;
|
|
color: #252931;
|
|
font-size: 1.2rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.auth-header .auth-icon-button {
|
|
color: #252931;
|
|
}
|
|
|
|
.auth-header .material-icons {
|
|
font-size: 1.25rem;
|
|
}
|
|
|
|
.auth-content {
|
|
width: 100%;
|
|
min-height: calc(100% - 4.25rem);
|
|
margin: 0 auto;
|
|
padding: 2rem;
|
|
}
|
|
|
|
.auth-content-narrow {
|
|
max-width: 40rem;
|
|
}
|
|
|
|
.auth-steps {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
margin: 0 0 2.25rem;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
.auth-steps li {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
color: #b4b9c1;
|
|
text-align: center;
|
|
}
|
|
|
|
.auth-steps li:not(:last-child)::after {
|
|
content: '';
|
|
position: absolute;
|
|
top: 1rem;
|
|
left: calc(50% + 1.25rem);
|
|
width: calc(100% - 2.5rem);
|
|
height: 2px;
|
|
background: #d9dde3;
|
|
}
|
|
|
|
.auth-steps li.active:not(:last-child)::after {
|
|
background: #4091ff;
|
|
}
|
|
|
|
.auth-steps span {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 2rem;
|
|
height: 2rem;
|
|
border: 1px solid #aeb4bd;
|
|
border-radius: 50%;
|
|
background: #fff;
|
|
}
|
|
|
|
.auth-steps b {
|
|
margin-top: 0.55rem;
|
|
font-size: 0.86rem;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.auth-steps .active {
|
|
color: #368bfa;
|
|
}
|
|
|
|
.auth-steps .active span {
|
|
border-color: #368bfa;
|
|
color: #fff;
|
|
background: #368bfa;
|
|
}
|
|
|
|
.auth-label {
|
|
display: block;
|
|
margin: 1.25rem 0 0.55rem;
|
|
color: #292d34;
|
|
font-size: 1rem;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.auth-label span {
|
|
margin-left: 0.35rem;
|
|
color: #87909c;
|
|
font-size: 0.78rem;
|
|
font-weight: 400;
|
|
}
|
|
|
|
.auth-help,
|
|
.auth-review-time {
|
|
margin: -0.45rem 0 0;
|
|
color: #9ba1aa;
|
|
font-size: 0.84rem;
|
|
}
|
|
|
|
.auth-upload {
|
|
display: flex;
|
|
position: relative;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 12rem;
|
|
overflow: hidden;
|
|
border: 1px dashed #c7ccd4;
|
|
border-radius: 0.5rem;
|
|
background: #fafafa;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.auth-upload.invalid {
|
|
border-color: #d94b4b;
|
|
}
|
|
|
|
.auth-upload input,
|
|
.auth-add-screenshot input {
|
|
display: none;
|
|
}
|
|
|
|
.auth-upload .material-icons {
|
|
color: #4091ff;
|
|
font-size: 3.4rem;
|
|
}
|
|
|
|
.auth-upload img {
|
|
width: 100%;
|
|
height: 8rem;
|
|
object-fit: contain;
|
|
}
|
|
|
|
.auth-upload strong {
|
|
max-width: 90%;
|
|
margin-top: 0.65rem;
|
|
overflow: hidden;
|
|
color: #252931;
|
|
font-size: 0.95rem;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.auth-upload small {
|
|
margin-top: 0.35rem;
|
|
color: #a4aab2;
|
|
}
|
|
|
|
.auth-remove-file {
|
|
margin-top: 0.5rem;
|
|
color: #cf3f3f;
|
|
}
|
|
|
|
.auth-review-time {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin-top: 0.85rem;
|
|
}
|
|
|
|
.auth-review-time .material-icons {
|
|
margin-right: 0.35rem;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.auth-form textarea {
|
|
width: 100%;
|
|
min-height: 10rem;
|
|
resize: vertical;
|
|
padding: 1rem;
|
|
border: 1px solid #e1e4e9;
|
|
border-radius: 0.5rem;
|
|
box-shadow: none;
|
|
color: #252931;
|
|
background: #fff;
|
|
font: inherit;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.auth-form textarea:focus {
|
|
border-color: #4091ff;
|
|
outline: none;
|
|
box-shadow: 0 0 0 3px rgba(22, 119, 255, 0.1);
|
|
}
|
|
|
|
.auth-form textarea.invalid {
|
|
border-color: #d94b4b;
|
|
}
|
|
|
|
.auth-counter {
|
|
margin: -1.7rem 0.75rem 0.8rem 0;
|
|
color: #a0a6af;
|
|
font-size: 0.8rem;
|
|
text-align: right;
|
|
}
|
|
|
|
.auth-screenshot-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, 1fr);
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.auth-screenshot,
|
|
.auth-add-screenshot {
|
|
position: relative;
|
|
aspect-ratio: 1;
|
|
overflow: hidden;
|
|
border: 1px solid #dce0e5;
|
|
border-radius: 0.4rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.auth-screenshot img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.auth-screenshot button {
|
|
position: absolute;
|
|
top: 0.2rem;
|
|
right: 0.2rem;
|
|
display: grid;
|
|
place-items: center;
|
|
width: 1.4rem;
|
|
min-width: 1.4rem;
|
|
height: 1.4rem;
|
|
min-height: 1.4rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 50%;
|
|
color: #fff;
|
|
background: rgba(0,0,0,0.58);
|
|
}
|
|
|
|
.auth-screenshot button .material-icons {
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.auth-add-screenshot {
|
|
display: grid;
|
|
place-items: center;
|
|
color: #87909c;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.auth-code-button {
|
|
flex: none;
|
|
width: auto;
|
|
min-width: 6.8rem;
|
|
height: 2.7rem;
|
|
min-height: 2.7rem;
|
|
margin: 0 0.55rem 0 0;
|
|
padding: 0 0.8rem;
|
|
border: 0;
|
|
border-radius: 0.4rem;
|
|
box-shadow: none;
|
|
color: #1677ff;
|
|
background: transparent;
|
|
font-size: 0.9rem;
|
|
text-transform: none;
|
|
}
|
|
|
|
.auth-code-button[disabled] {
|
|
color: #a7adb6;
|
|
}
|
|
|
|
.auth-register-form .auth-brand {
|
|
margin-bottom: 2rem;
|
|
}
|
|
|
|
.auth-register-page .auth-agreement {
|
|
margin-top: 2rem;
|
|
}
|
|
|
|
.auth-list-form {
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-height: calc(100vh - 8.25rem);
|
|
}
|
|
|
|
.auth-list-form label {
|
|
/* `.auth-list-form` is `display:flex` with no explicit `align-items`, so it defaults to `normal`
|
|
-- which does not stretch a `display:grid` child to the flex container's full width the way it
|
|
would a plain block child, leaving each label sized to fit its own grid content instead. The
|
|
"手机号" row (2 populated grid columns: label + input, nothing in the 3rd) ends up visibly
|
|
narrower than "验证码" (3 populated columns, the extra width of the code-request button), so the
|
|
stacked white row backgrounds end at different edges instead of lining up. Explicit `width: 100%`
|
|
sidesteps the stretch behavior entirely instead of depending on it. */
|
|
display: grid;
|
|
grid-template-columns: 7rem 1fr auto;
|
|
align-items: center;
|
|
width: 100%;
|
|
min-height: 4.5rem;
|
|
padding: 0 1rem;
|
|
border-bottom: 1px solid #e4e7eb;
|
|
background: #fff;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.auth-list-form label span {
|
|
color: #30343b;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.auth-list-form input {
|
|
min-width: 0;
|
|
width: 100%;
|
|
height: 4rem;
|
|
margin: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #252931;
|
|
background: transparent;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.auth-list-form input:focus {
|
|
box-shadow: none;
|
|
}
|
|
|
|
.auth-list-gap {
|
|
height: 1rem;
|
|
background: #f6f7f9;
|
|
}
|
|
|
|
.auth-sticky-action {
|
|
margin-top: auto;
|
|
}
|
|
|
|
/* docs/images/身份验证(安卓).png shows "确定" sitting a fixed distance below this page's own short
|
|
2-field form, not pinned to the very bottom of the screen -- `.auth-sticky-action`'s `margin-top:
|
|
auto` (shared with PasswordReset below, a 4-field form long enough that "anchor to the bottom" and
|
|
"sit right after the content" look about the same) pushes it the rest of the way down an otherwise
|
|
mostly-empty page instead, which is the "why is there a huge gap" of it. Scoped to just this page
|
|
so PasswordReset's own sticky-bottom placement (correct for its longer form) is untouched. */
|
|
.auth-identity-check-page .auth-sticky-action {
|
|
margin-top: 2.5rem;
|
|
}
|
|
|
|
.auth-realname-page {
|
|
background: #f5f6f8;
|
|
}
|
|
|
|
.auth-realname-hero {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
min-height: 14rem;
|
|
padding: 2rem max(2rem, calc((100% - 44rem) / 2));
|
|
color: #12357b;
|
|
background: #cfe1fa;
|
|
}
|
|
|
|
.auth-realname-hero div {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.auth-realname-hero strong {
|
|
font-size: 2.5rem;
|
|
font-weight: 800;
|
|
}
|
|
|
|
.auth-realname-hero span {
|
|
margin-top: 0.75rem;
|
|
color: #53799c;
|
|
font-size: 1.2rem;
|
|
}
|
|
|
|
.auth-realname-hero > .material-icons {
|
|
color: #4a82ee;
|
|
font-size: 9rem;
|
|
opacity: 0.9;
|
|
}
|
|
|
|
.auth-realname-content {
|
|
width: min(calc(100% - 2rem), 44rem);
|
|
margin: -1.5rem auto 0;
|
|
padding: 0 0 2rem;
|
|
}
|
|
|
|
.auth-realname-content h2 {
|
|
position: relative;
|
|
z-index: 1;
|
|
margin: 0;
|
|
padding: 1.5rem 2rem;
|
|
border: 1px solid #fff;
|
|
border-radius: 0.5rem 0.5rem 0 0;
|
|
background: #e8f1fd;
|
|
font-size: 1.15rem;
|
|
}
|
|
|
|
.auth-realname-content form {
|
|
padding: 2rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.auth-realname-content label {
|
|
display: grid;
|
|
grid-template-columns: 8rem 1fr;
|
|
align-items: center;
|
|
min-height: 4.5rem;
|
|
margin-bottom: 1rem;
|
|
padding: 0 1rem;
|
|
border-radius: 0.5rem;
|
|
background: #f6f6f7;
|
|
}
|
|
|
|
.auth-realname-content input {
|
|
min-width: 0;
|
|
width: 100%;
|
|
height: 3.8rem;
|
|
margin: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #30343b;
|
|
background: transparent;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.auth-privacy-note {
|
|
display: flex;
|
|
margin: 1rem 0 0;
|
|
padding: 1rem;
|
|
border-radius: 0.4rem;
|
|
color: #a0a6af;
|
|
background: #fff;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.auth-privacy-note .material-icons {
|
|
margin-right: 0.5rem;
|
|
font-size: 1.15rem;
|
|
}
|
|
|
|
.auth-reminder-demo {
|
|
overflow: hidden;
|
|
background: #f5f6f8;
|
|
}
|
|
|
|
.auth-demo-chat {
|
|
width: min(100%, 42rem);
|
|
margin: 0 auto;
|
|
padding: 2rem;
|
|
}
|
|
|
|
.auth-demo-chat h1 {
|
|
text-align: center;
|
|
}
|
|
|
|
.auth-demo-search {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
height: 2.8rem;
|
|
margin-bottom: 1rem;
|
|
border-radius: 0.5rem;
|
|
color: #969ca5;
|
|
background: #e9ecf0;
|
|
}
|
|
|
|
.auth-demo-row {
|
|
display: flex;
|
|
align-items: center;
|
|
min-height: 4.8rem;
|
|
border-bottom: 1px solid #e3e6ea;
|
|
}
|
|
|
|
.auth-demo-row > span {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3.2rem;
|
|
height: 3.2rem;
|
|
margin-right: 0.8rem;
|
|
border-radius: 0.5rem;
|
|
color: #fff;
|
|
background: #368bfa;
|
|
}
|
|
|
|
.auth-demo-row div {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.auth-demo-row small {
|
|
margin-top: 0.3rem;
|
|
color: #969ca5;
|
|
}
|
|
|
|
.auth-modal-backdrop {
|
|
position: absolute;
|
|
inset: 0;
|
|
z-index: 3;
|
|
display: grid;
|
|
place-items: center;
|
|
padding: 1.5rem;
|
|
background: rgba(0,0,0,0.38);
|
|
}
|
|
|
|
.auth-modal {
|
|
width: min(100%, 30rem);
|
|
padding: 2rem;
|
|
border-radius: 0.5rem;
|
|
background: #fff;
|
|
box-shadow: 0 1rem 3rem rgba(0,0,0,0.18);
|
|
text-align: center;
|
|
}
|
|
|
|
.auth-modal h2 {
|
|
margin: 0 0 1rem;
|
|
font-size: 1.45rem;
|
|
}
|
|
|
|
.auth-modal p {
|
|
color: #858c96;
|
|
line-height: 1.6;
|
|
text-align: left;
|
|
}
|
|
|
|
.auth-modal .auth-text-button {
|
|
margin-top: 1rem;
|
|
color: #7c838d;
|
|
}
|
|
|
|
.auth-pin-content {
|
|
display: flex;
|
|
position: relative;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
width: min(100%, 32rem);
|
|
margin: 0 auto;
|
|
padding: 6rem 2rem 2rem;
|
|
}
|
|
|
|
.auth-pin-content h1 {
|
|
margin: 0 0 3.5rem;
|
|
font-size: 1.8rem;
|
|
}
|
|
|
|
.auth-pin-boxes {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, 4rem);
|
|
gap: 0.8rem;
|
|
}
|
|
|
|
.auth-pin-boxes span {
|
|
display: grid;
|
|
place-items: center;
|
|
aspect-ratio: 1;
|
|
border-radius: 0.35rem;
|
|
color: #30343b;
|
|
background: #f2f3f5;
|
|
}
|
|
|
|
.auth-pin-input {
|
|
position: absolute;
|
|
top: 11rem;
|
|
width: 19rem;
|
|
height: 5rem;
|
|
opacity: 0;
|
|
}
|
|
|
|
.auth-pin-content .auth-primary {
|
|
width: min(100%, 24rem);
|
|
margin-top: 3rem;
|
|
}
|
|
|
|
.auth-toast {
|
|
position: fixed;
|
|
z-index: 20;
|
|
bottom: max(2rem, env(safe-area-inset-bottom));
|
|
left: 50%;
|
|
display: flex;
|
|
align-items: center;
|
|
max-width: calc(100% - 2rem);
|
|
padding: 0.8rem 1.1rem;
|
|
border-radius: 0.4rem;
|
|
color: #fff;
|
|
background: rgba(31, 35, 42, 0.92);
|
|
box-shadow: 0 0.5rem 1.5rem rgba(0,0,0,0.18);
|
|
transform: translateX(-50%);
|
|
animation: auth-toast-in 180ms ease-out;
|
|
}
|
|
|
|
.auth-toast .material-icons {
|
|
margin-right: 0.5rem;
|
|
color: #63d68b;
|
|
font-size: 1.15rem;
|
|
}
|
|
|
|
.security-product-links button.flat-button {
|
|
display: grid;
|
|
grid-template-columns: 2rem 1fr 2rem;
|
|
align-items: center;
|
|
width: 100%;
|
|
margin: 0;
|
|
color: var(--clr-text-primary);
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.security-product-links .trailing {
|
|
color: var(--clr-text-tertiary);
|
|
}
|
|
|
|
@keyframes auth-toast-in {
|
|
from { opacity: 0; transform: translate(-50%, 0.5rem); }
|
|
to { opacity: 1; transform: translate(-50%, 0); }
|
|
}
|
|
|
|
/* Message center, quick navigation, and system notices. */
|
|
#sidepanel.message-center-panel {
|
|
width: 24rem;
|
|
min-width: 20rem;
|
|
flex: 0 0 24rem;
|
|
color-scheme: light;
|
|
background: #fff;
|
|
color: #242830;
|
|
}
|
|
|
|
#sidepanel.message-center-panel.full-page {
|
|
width: 100%;
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.message-center-panel * {
|
|
box-sizing: border-box;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.messages-product-page,
|
|
.message-actions-page,
|
|
.system-messages-page {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
min-height: 100%;
|
|
overflow: hidden;
|
|
background: #fff;
|
|
}
|
|
|
|
.messages-home-header,
|
|
.messages-sub-header {
|
|
display: grid;
|
|
position: relative;
|
|
z-index: 5;
|
|
grid-template-columns: 3.5rem 1fr 3.5rem;
|
|
align-items: center;
|
|
flex: none;
|
|
min-height: 4.25rem;
|
|
padding-top: env(safe-area-inset-top);
|
|
border-bottom: 1px solid #f0f1f3;
|
|
background: #fff;
|
|
}
|
|
|
|
.messages-home-header h1,
|
|
.messages-sub-header h1 {
|
|
grid-column: 2;
|
|
margin: 0;
|
|
overflow: hidden;
|
|
color: #22262d;
|
|
font-size: 1.25rem;
|
|
font-weight: 600;
|
|
text-align: center;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.messages-menu-button,
|
|
.messages-sub-header button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3.25rem;
|
|
min-width: 3.25rem;
|
|
height: 3.25rem;
|
|
min-height: 3.25rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #272b32;
|
|
background: transparent;
|
|
}
|
|
|
|
.messages-menu-button {
|
|
grid-column: 3;
|
|
}
|
|
|
|
.messages-menu-button .material-icons {
|
|
font-size: 1.75rem;
|
|
}
|
|
|
|
.messages-sub-header button .material-icons {
|
|
font-size: 1.2rem;
|
|
}
|
|
|
|
.messages-connection {
|
|
grid-column: 2;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 1.2rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.messages-spinner {
|
|
width: 1.25rem;
|
|
height: 1.25rem;
|
|
margin-right: 0.55rem;
|
|
border: 3px dotted #aab0b8;
|
|
border-radius: 50%;
|
|
animation: messages-spin 850ms linear infinite;
|
|
}
|
|
|
|
@keyframes messages-spin {
|
|
to { transform: rotate(360deg); }
|
|
}
|
|
|
|
.messages-home-content {
|
|
width: 100%;
|
|
min-height: 0;
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
flex: 1 1 auto;
|
|
padding-bottom: 1rem;
|
|
}
|
|
|
|
.message-center-panel.full-page .messages-home-content,
|
|
.message-center-panel.full-page .messages-home-header > * {
|
|
--messages-content-width: 52rem;
|
|
}
|
|
|
|
.messages-search {
|
|
display: flex;
|
|
align-items: center;
|
|
height: 2.8rem;
|
|
margin: 0.75rem;
|
|
border: 1px solid transparent;
|
|
border-radius: 0.5rem;
|
|
color: #a5abb4;
|
|
background: #f1f2f4;
|
|
}
|
|
|
|
.message-center-panel.full-page .messages-search,
|
|
.message-center-panel.full-page .messages-frequent,
|
|
.message-center-panel.full-page .messages-conversations {
|
|
width: min(calc(100% - 2rem), 52rem);
|
|
margin-right: auto;
|
|
margin-left: auto;
|
|
}
|
|
|
|
.messages-search:focus-within {
|
|
border-color: #4091ff;
|
|
box-shadow: 0 0 0 3px rgba(22,119,255,0.08);
|
|
}
|
|
|
|
.messages-search .material-icons {
|
|
margin-left: 0.9rem;
|
|
font-size: 1.35rem;
|
|
}
|
|
|
|
.messages-search input {
|
|
min-width: 0;
|
|
width: 100%;
|
|
height: 2.7rem;
|
|
margin: 0;
|
|
padding: 0 0.85rem;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #252931;
|
|
background: transparent;
|
|
font-size: 0.95rem;
|
|
}
|
|
|
|
.messages-search input:focus {
|
|
box-shadow: none;
|
|
}
|
|
|
|
.messages-search input::placeholder {
|
|
color: #a5abb4;
|
|
}
|
|
|
|
.messages-frequent {
|
|
padding: 0.3rem 0 0.8rem;
|
|
}
|
|
|
|
.messages-frequent h2 {
|
|
margin: 0 0.75rem 0.65rem;
|
|
color: #9399a2;
|
|
font-size: 0.88rem;
|
|
font-weight: 400;
|
|
}
|
|
|
|
.messages-frequent-scroll {
|
|
display: flex;
|
|
gap: 0.75rem;
|
|
overflow-x: auto;
|
|
padding: 0 0.75rem 0.3rem;
|
|
scrollbar-width: none;
|
|
}
|
|
|
|
.messages-frequent-scroll::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
|
|
.messages-frequent-scroll button {
|
|
display: flex;
|
|
flex: 0 0 3.75rem;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
width: 3.75rem;
|
|
min-width: 3.75rem;
|
|
height: auto;
|
|
min-height: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #656b74;
|
|
background: transparent;
|
|
text-transform: none;
|
|
}
|
|
|
|
.messages-frequent-scroll button > span {
|
|
width: 100%;
|
|
margin-top: 0.4rem;
|
|
overflow: hidden;
|
|
font-size: 0.78rem;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.messages-conversations {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.messages-conversation {
|
|
display: grid;
|
|
grid-template-columns: 3.4rem minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
width: 100%;
|
|
min-width: 0;
|
|
min-height: 4.55rem;
|
|
margin: 0;
|
|
padding: 0.45rem 0.75rem;
|
|
border: 0;
|
|
border-radius: 0;
|
|
border-bottom: 1px solid #f1f2f4;
|
|
box-shadow: none;
|
|
color: #252931;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.messages-conversation:hover,
|
|
.messages-conversation:focus {
|
|
background: #f6f8fb;
|
|
}
|
|
|
|
.messages-conversation.pinned {
|
|
background: #f4f6f8;
|
|
}
|
|
|
|
.messages-avatar {
|
|
display: grid;
|
|
position: relative;
|
|
place-items: center;
|
|
width: 3rem;
|
|
height: 3rem;
|
|
overflow: visible;
|
|
border-radius: 0.55rem;
|
|
color: #fff;
|
|
background: #3c8df6;
|
|
}
|
|
|
|
.messages-avatar.small {
|
|
width: 3.2rem;
|
|
height: 3.2rem;
|
|
border-radius: 0.65rem;
|
|
}
|
|
|
|
.messages-avatar.tone-orange {
|
|
color: #ff951c;
|
|
background: #fff5e5;
|
|
}
|
|
|
|
.messages-avatar.tone-green {
|
|
color: #16ae54;
|
|
background: #eefaf3;
|
|
}
|
|
|
|
.messages-avatar img {
|
|
width: 100%;
|
|
height: 100%;
|
|
border-radius: inherit;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.messages-avatar > .material-icons {
|
|
font-size: 1.8rem;
|
|
}
|
|
|
|
.messages-avatar .online,
|
|
.messages-avatar .offline {
|
|
position: absolute;
|
|
right: -0.18rem;
|
|
bottom: -0.12rem;
|
|
width: 0.72rem;
|
|
min-width: 0.72rem;
|
|
height: 0.72rem;
|
|
min-height: 0.72rem;
|
|
border: 2px solid #fff;
|
|
border-radius: 50%;
|
|
background: #1fb36a;
|
|
}
|
|
|
|
.messages-avatar .offline {
|
|
background: #aeb4bd;
|
|
}
|
|
|
|
.messages-conversation-copy {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
padding: 0 0.55rem;
|
|
}
|
|
|
|
.messages-conversation-copy strong,
|
|
.messages-conversation-copy small {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.messages-conversation-copy strong {
|
|
color: #272b31;
|
|
font-size: 1rem;
|
|
font-weight: 500;
|
|
/* .messages-conversation is a <button>, and the generic `button { line-height: 2.2rem }` rule
|
|
(sized for a single line of button label) is inherited all the way down to this line -- with a
|
|
~1rem font that leaves a huge box of invisible padding above/below the actual glyphs, which reads
|
|
as "too much gap in the middle, too little room overall" even though the real text is tiny. */
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.messages-conversation-copy small {
|
|
margin-top: 0.2rem;
|
|
color: #969ca5;
|
|
font-size: 0.84rem;
|
|
font-weight: 400;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.messages-conversation-meta {
|
|
display: flex;
|
|
align-self: stretch;
|
|
min-width: 3.4rem;
|
|
flex-direction: column;
|
|
align-items: flex-end;
|
|
justify-content: space-around;
|
|
}
|
|
|
|
.messages-conversation-meta time {
|
|
color: #9ca2aa;
|
|
font-size: 0.72rem;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.messages-conversation-meta b {
|
|
display: grid;
|
|
place-items: center;
|
|
min-width: 1.25rem;
|
|
height: 1.25rem;
|
|
padding: 0 0.3rem;
|
|
border-radius: 0.7rem;
|
|
color: #fff;
|
|
background: #f34b46;
|
|
font-size: 0.7rem;
|
|
font-weight: 500;
|
|
/* Same class of bug as .messages-conversation-copy strong/small just above: <b> inherits the
|
|
generic `button { line-height: 2.2rem }` rule from the enclosing row button, whose line box
|
|
(~29px) is taller than this badge's own 1.25rem (20px) height, pushing the digit off-center
|
|
inside the circle instead of the intended dead-center placement `place-items: center` implies. */
|
|
line-height: 1;
|
|
}
|
|
|
|
.messages-conversation-meta .material-icons {
|
|
color: #a5abb3;
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
.messages-empty {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
padding: 4rem 1rem;
|
|
color: #9ca2aa;
|
|
}
|
|
|
|
.messages-empty .material-icons {
|
|
font-size: 2.4rem;
|
|
}
|
|
|
|
.messages-bottom-nav {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, 1fr);
|
|
flex: none;
|
|
min-height: 4.8rem;
|
|
padding-bottom: env(safe-area-inset-bottom);
|
|
border-top: 1px solid #eceef1;
|
|
background: #fff;
|
|
}
|
|
|
|
.messages-bottom-nav button {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 100%;
|
|
height: 4.8rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #9ca2ab;
|
|
background: transparent;
|
|
text-transform: none;
|
|
}
|
|
|
|
.messages-bottom-nav button.active {
|
|
color: #297fea;
|
|
}
|
|
|
|
.messages-bottom-nav .material-icons {
|
|
font-size: 1.55rem;
|
|
}
|
|
|
|
.messages-bottom-nav span {
|
|
margin-top: 0.25rem;
|
|
font-size: 0.76rem;
|
|
}
|
|
|
|
.messages-menu-backdrop,
|
|
.message-action-backdrop {
|
|
position: absolute;
|
|
inset: 0;
|
|
z-index: 10;
|
|
background: rgba(0,0,0,0.43);
|
|
}
|
|
|
|
.messages-quick-menu {
|
|
position: absolute;
|
|
top: calc(3.6rem + env(safe-area-inset-top));
|
|
right: 0.65rem;
|
|
width: 12rem;
|
|
overflow: hidden;
|
|
border-radius: 0.4rem;
|
|
background: #4b4c4f;
|
|
box-shadow: 0 0.8rem 2rem rgba(0,0,0,0.24);
|
|
}
|
|
|
|
.messages-quick-menu::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: -0.45rem;
|
|
right: 1rem;
|
|
width: 0.9rem;
|
|
height: 0.9rem;
|
|
background: #4b4c4f;
|
|
transform: rotate(45deg);
|
|
}
|
|
|
|
.messages-quick-menu button {
|
|
display: grid;
|
|
position: relative;
|
|
grid-template-columns: 2.2rem 1fr;
|
|
align-items: center;
|
|
width: 100%;
|
|
min-height: 3.2rem;
|
|
margin: 0;
|
|
padding: 0 1rem;
|
|
border: 0;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: transparent;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.messages-quick-menu button:hover,
|
|
.messages-quick-menu button:focus {
|
|
background: rgba(255,255,255,0.09);
|
|
}
|
|
|
|
.messages-quick-menu .material-icons {
|
|
font-size: 1.35rem;
|
|
}
|
|
|
|
.messages-quick-menu span {
|
|
font-size: 0.98rem;
|
|
}
|
|
|
|
.messages-toast {
|
|
position: fixed;
|
|
z-index: 30;
|
|
bottom: max(1.5rem, env(safe-area-inset-bottom));
|
|
left: 50%;
|
|
max-width: calc(100% - 2rem);
|
|
padding: 0.75rem 1.1rem;
|
|
border-radius: 0.4rem;
|
|
color: #fff;
|
|
background: rgba(34,38,45,0.94);
|
|
box-shadow: 0 0.5rem 1.5rem rgba(0,0,0,0.18);
|
|
text-align: center;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
.message-actions-page {
|
|
background: #e8eaee;
|
|
}
|
|
|
|
.message-actions-chat {
|
|
flex: 1 1 auto;
|
|
min-height: 0;
|
|
overflow-y: auto;
|
|
padding: 1.5rem max(1rem, calc((100% - 50rem) / 2));
|
|
background: #edf0f3 url('../img/bkg/a00.png') repeat;
|
|
}
|
|
|
|
.message-time {
|
|
margin: 0 0 1.5rem;
|
|
color: #8d949d;
|
|
font-size: 0.78rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.message-demo-row {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 0.65rem;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.message-demo-row.mine {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.message-demo-row .messages-avatar {
|
|
width: 2.7rem;
|
|
height: 2.7rem;
|
|
flex: 0 0 2.7rem;
|
|
}
|
|
|
|
.message-demo-bubble {
|
|
width: auto;
|
|
max-width: min(72%, 28rem);
|
|
min-height: 2.7rem;
|
|
height: auto;
|
|
margin: 0;
|
|
padding: 0.75rem 0.9rem;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: 0 1px 2px rgba(0,0,0,0.08);
|
|
color: #252931;
|
|
background: #fff;
|
|
font-size: 0.95rem;
|
|
font-weight: 400;
|
|
line-height: 1.5;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.message-demo-bubble.mine {
|
|
background: #b9eb8f;
|
|
}
|
|
|
|
.message-operation-result {
|
|
color: #777f89;
|
|
font-size: 0.8rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.message-demo-composer {
|
|
display: grid;
|
|
grid-template-columns: 2.5rem minmax(0,1fr) 2.5rem 2.5rem;
|
|
align-items: center;
|
|
flex: none;
|
|
min-height: 4rem;
|
|
padding: 0.5rem max(0.75rem, calc((100% - 52rem) / 2));
|
|
background: #f7f8fa;
|
|
}
|
|
|
|
.message-demo-composer span {
|
|
min-width: 0;
|
|
height: 2.7rem;
|
|
padding: 0 0.8rem;
|
|
overflow: hidden;
|
|
border-radius: 0.35rem;
|
|
color: #a2a8b0;
|
|
background: #fff;
|
|
line-height: 2.7rem;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.message-demo-composer .material-icons {
|
|
color: #555c65;
|
|
font-size: 1.45rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.message-action-backdrop {
|
|
display: grid;
|
|
place-items: center;
|
|
}
|
|
|
|
.message-action-menu {
|
|
width: min(calc(100% - 3rem), 23rem);
|
|
overflow: hidden;
|
|
border-radius: 0.5rem;
|
|
background: #4b4c4f;
|
|
box-shadow: 0 1rem 3rem rgba(0,0,0,0.24);
|
|
}
|
|
|
|
.message-action-menu button {
|
|
display: grid;
|
|
grid-template-columns: 1fr 2rem;
|
|
align-items: center;
|
|
width: calc(100% - 2rem);
|
|
min-height: 3.1rem;
|
|
margin: 0 1rem;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 0;
|
|
border-bottom: 1px solid rgba(255,255,255,0.1);
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: transparent;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.message-action-menu button:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.message-action-menu button:hover,
|
|
.message-action-menu button:focus {
|
|
background: rgba(255,255,255,0.08);
|
|
}
|
|
|
|
.message-action-menu span {
|
|
font-size: 0.98rem;
|
|
}
|
|
|
|
.message-action-menu .material-icons {
|
|
font-size: 1.3rem;
|
|
}
|
|
|
|
.system-messages-page {
|
|
background: #f4f5f7;
|
|
}
|
|
|
|
.system-notification-list {
|
|
width: 100%;
|
|
max-width: 52rem;
|
|
margin: 0 auto;
|
|
overflow-y: auto;
|
|
padding: 1.5rem;
|
|
}
|
|
|
|
.system-notification-list article {
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.system-notification-list article > time {
|
|
display: block;
|
|
margin-bottom: 0.75rem;
|
|
color: #a2a8b0;
|
|
font-size: 0.82rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.system-notification-card {
|
|
padding: 1.3rem;
|
|
border: 1px solid #eceef1;
|
|
border-radius: 0.5rem;
|
|
background: #fff;
|
|
box-shadow: 0 0.2rem 0.8rem rgba(37,49,65,0.04);
|
|
}
|
|
|
|
.system-notification-list article.read .system-notification-card {
|
|
opacity: 0.82;
|
|
}
|
|
|
|
.system-notification-card header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.system-notification-card h2 {
|
|
margin: 0;
|
|
color: #20242b;
|
|
font-size: 1.05rem;
|
|
}
|
|
|
|
.system-notification-card header > span {
|
|
padding: 0.15rem 0.4rem;
|
|
border-radius: 0.25rem;
|
|
color: #fff;
|
|
background: #f34b46;
|
|
font-size: 0.7rem;
|
|
}
|
|
|
|
.system-notification-card p {
|
|
margin: 0.85rem 0;
|
|
color: #555c66;
|
|
line-height: 1.55;
|
|
}
|
|
|
|
.system-notification-card p button {
|
|
display: inline;
|
|
width: auto;
|
|
min-width: 0;
|
|
height: auto;
|
|
min-height: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #1683f8;
|
|
background: transparent;
|
|
font: inherit;
|
|
text-transform: none;
|
|
}
|
|
|
|
.system-notification-card dl {
|
|
margin: 0;
|
|
}
|
|
|
|
.system-notification-card dl div {
|
|
display: flex;
|
|
margin: 0.35rem 0;
|
|
}
|
|
|
|
.system-notification-card dt {
|
|
color: #242830;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.system-notification-card dd {
|
|
margin: 0;
|
|
color: #555c66;
|
|
}
|
|
|
|
.system-security-link {
|
|
display: flex;
|
|
align-items: center;
|
|
width: auto;
|
|
min-width: 0;
|
|
height: auto;
|
|
min-height: 0;
|
|
margin: 0.6rem 0 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #1683f8;
|
|
background: transparent;
|
|
font-size: 0.9rem;
|
|
text-transform: none;
|
|
}
|
|
|
|
.system-security-link .material-icons {
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
.system-notification-card footer {
|
|
margin-top: 1.1rem;
|
|
color: #767e88;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
/* Direct-message relationship states and structured message cards. */
|
|
#sidepanel.direct-message-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
color-scheme: light;
|
|
background: #f4f6f8;
|
|
color: #252931;
|
|
}
|
|
|
|
.direct-message-panel * {
|
|
box-sizing: border-box;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.chat-product-page {
|
|
display: flex;
|
|
position: relative;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
min-height: 100%;
|
|
overflow: hidden;
|
|
background: #f4f6f8;
|
|
}
|
|
|
|
.chat-product-header {
|
|
display: grid;
|
|
position: relative;
|
|
z-index: 4;
|
|
grid-template-columns: 3.5rem minmax(0,1fr) 3.5rem;
|
|
align-items: center;
|
|
flex: none;
|
|
min-height: 4.5rem;
|
|
padding-top: env(safe-area-inset-top);
|
|
border-bottom: 1px solid #eceef1;
|
|
background: #fff;
|
|
}
|
|
|
|
.chat-product-header > button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3.25rem;
|
|
min-width: 3.25rem;
|
|
height: 3.25rem;
|
|
min-height: 3.25rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #292d34;
|
|
background: transparent;
|
|
}
|
|
|
|
.chat-product-header > button .material-icons {
|
|
font-size: 1.25rem;
|
|
}
|
|
|
|
.chat-product-header > div {
|
|
min-width: 0;
|
|
text-align: center;
|
|
}
|
|
|
|
.chat-product-header h1 {
|
|
margin: 0;
|
|
overflow: hidden;
|
|
color: #23272e;
|
|
font-size: 1.2rem;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.chat-product-header span {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin-top: 0.15rem;
|
|
color: #7d848e;
|
|
font-size: 0.78rem;
|
|
}
|
|
|
|
.chat-product-header span i {
|
|
width: 0.55rem;
|
|
height: 0.55rem;
|
|
margin-right: 0.3rem;
|
|
border-radius: 50%;
|
|
background: #16bf78;
|
|
}
|
|
|
|
.chat-product-timeline {
|
|
width: 100%;
|
|
min-height: 0;
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
flex: 1 1 auto;
|
|
padding: 1.5rem max(1rem, calc((100% - 54rem) / 2));
|
|
scroll-behavior: smooth;
|
|
}
|
|
|
|
.chat-time {
|
|
margin: 0.3rem 0 1.4rem;
|
|
color: #9299a2;
|
|
font-size: 0.8rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.chat-message-row {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 0.65rem;
|
|
margin: 0 0 1rem;
|
|
}
|
|
|
|
.chat-message-row.mine {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.chat-avatar {
|
|
width: 2.8rem;
|
|
height: 2.8rem;
|
|
overflow: hidden;
|
|
flex: 0 0 2.8rem;
|
|
border-radius: 0.5rem;
|
|
background: #dfe3e8;
|
|
}
|
|
|
|
.chat-avatar img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.chat-message-stack {
|
|
display: flex;
|
|
min-width: 0;
|
|
max-width: min(72%, 32rem);
|
|
flex-direction: column;
|
|
}
|
|
|
|
.chat-message-row.mine .chat-message-stack {
|
|
align-items: flex-end;
|
|
}
|
|
|
|
.chat-bubble {
|
|
position: relative;
|
|
min-width: 2.8rem;
|
|
min-height: 2.8rem;
|
|
padding: 0.72rem 0.9rem;
|
|
border-radius: 0.45rem;
|
|
color: #282c33;
|
|
background: #fff;
|
|
box-shadow: 0 1px 2px rgba(31,39,50,0.06);
|
|
font-size: 0.98rem;
|
|
line-height: 1.5;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.chat-bubble::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0.85rem;
|
|
left: -0.35rem;
|
|
width: 0.7rem;
|
|
height: 0.7rem;
|
|
background: inherit;
|
|
transform: rotate(45deg);
|
|
}
|
|
|
|
.chat-bubble.mine {
|
|
color: #fff;
|
|
background: #398afa;
|
|
}
|
|
|
|
.chat-bubble.mine::before {
|
|
right: -0.35rem;
|
|
left: auto;
|
|
}
|
|
|
|
.chat-bubble.image,
|
|
.chat-bubble.voice {
|
|
padding: 0;
|
|
background: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.chat-bubble.image::before,
|
|
.chat-bubble.voice::before {
|
|
display: none;
|
|
}
|
|
|
|
.chat-message-status {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
min-height: 1.2rem;
|
|
margin-top: 0.25rem;
|
|
color: #8d949e;
|
|
font-size: 0.72rem;
|
|
}
|
|
|
|
.chat-message-status.failed {
|
|
color: #df3838;
|
|
}
|
|
|
|
.chat-message-status .material-icons {
|
|
margin-right: 0.25rem;
|
|
font-size: 1.15rem;
|
|
}
|
|
|
|
.chat-relation-notice {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 1.8rem;
|
|
margin: 0.4rem auto 1.5rem;
|
|
color: #939aa3;
|
|
font-size: 0.82rem;
|
|
line-height: 1.5;
|
|
text-align: center;
|
|
}
|
|
|
|
.chat-relation-notice button {
|
|
width: auto;
|
|
min-width: 0;
|
|
height: auto;
|
|
min-height: 0;
|
|
margin: 0 0 0 0.5rem;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #2683f5;
|
|
background: transparent;
|
|
font-size: inherit;
|
|
text-transform: none;
|
|
}
|
|
|
|
.chat-request-actions {
|
|
display: flex;
|
|
justify-content: center;
|
|
gap: 0.75rem;
|
|
margin: 2rem auto;
|
|
}
|
|
|
|
.chat-request-actions button {
|
|
width: auto;
|
|
min-width: 6rem;
|
|
height: 2.7rem;
|
|
min-height: 2.7rem;
|
|
margin: 0;
|
|
padding: 0 1.2rem;
|
|
border: 1px solid #d9dde3;
|
|
border-radius: 0.4rem;
|
|
box-shadow: none;
|
|
color: #5d646e;
|
|
background: #fff;
|
|
font-size: 0.9rem;
|
|
text-transform: none;
|
|
}
|
|
|
|
.chat-request-actions button.primary {
|
|
border-color: #398afa;
|
|
color: #fff;
|
|
background: #398afa;
|
|
}
|
|
|
|
.chat-image-message {
|
|
position: relative;
|
|
width: 10rem;
|
|
aspect-ratio: 3 / 4;
|
|
overflow: hidden;
|
|
border-radius: 0.5rem;
|
|
background: #e2e5e9;
|
|
}
|
|
|
|
.chat-image-message > img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.chat-upload-progress {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
color: #fff;
|
|
background: rgba(20,24,30,0.4);
|
|
}
|
|
|
|
.chat-upload-progress progress {
|
|
width: 4rem;
|
|
height: 0.35rem;
|
|
border: 0;
|
|
accent-color: #fff;
|
|
}
|
|
|
|
.chat-upload-progress strong {
|
|
margin-top: 0.5rem;
|
|
font-size: 0.85rem;
|
|
}
|
|
|
|
.chat-voice-message {
|
|
display: grid;
|
|
grid-template-columns: 1.5rem auto 2.2rem;
|
|
align-items: center;
|
|
min-width: 8rem;
|
|
min-height: 3rem;
|
|
padding: 0 0.85rem;
|
|
border-radius: 0.45rem;
|
|
color: #30343b;
|
|
background: #fff;
|
|
box-shadow: 0 1px 2px rgba(31,39,50,0.06);
|
|
}
|
|
|
|
.chat-message-row.mine .chat-voice-message {
|
|
color: #fff;
|
|
background: #398afa;
|
|
}
|
|
|
|
.chat-voice-message .material-icons {
|
|
font-size: 1.3rem;
|
|
}
|
|
|
|
.chat-voice-message strong {
|
|
font-size: 1rem;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.chat-voice-message span {
|
|
height: 1rem;
|
|
background: repeating-linear-gradient(90deg, currentColor 0 2px, transparent 2px 5px);
|
|
opacity: 0.55;
|
|
}
|
|
|
|
.chat-file-card {
|
|
display: grid;
|
|
grid-template-columns: minmax(0,1fr) 3.4rem;
|
|
gap: 1rem;
|
|
width: min(100%, 24rem);
|
|
min-width: 17rem;
|
|
padding: 1rem;
|
|
border-radius: 0.5rem;
|
|
background: #fff;
|
|
box-shadow: 0 1px 2px rgba(31,39,50,0.06);
|
|
}
|
|
|
|
.chat-file-card > div {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.chat-file-card strong {
|
|
overflow: hidden;
|
|
color: #30343b;
|
|
line-height: 1.45;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.chat-file-card small {
|
|
margin-top: auto;
|
|
color: #a1a7af;
|
|
}
|
|
|
|
.chat-file-icon {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3.4rem;
|
|
height: 3.4rem;
|
|
border-radius: 0.35rem;
|
|
color: #fff;
|
|
background: #f13e67;
|
|
font-size: 2rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.chat-contact-card {
|
|
display: flex;
|
|
width: min(100%, 22rem);
|
|
min-width: 16rem;
|
|
height: auto;
|
|
min-height: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
overflow: hidden;
|
|
flex-direction: column;
|
|
border: 0;
|
|
border-radius: 0.5rem;
|
|
box-shadow: 0 1px 2px rgba(31,39,50,0.06);
|
|
color: #30343b;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.chat-contact-card > span {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 100%;
|
|
padding: 0.85rem;
|
|
}
|
|
|
|
.chat-contact-card img {
|
|
width: 3rem;
|
|
height: 3rem;
|
|
margin-right: 0.75rem;
|
|
border-radius: 0.45rem;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.chat-contact-card strong {
|
|
overflow: hidden;
|
|
font-size: 1rem;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.chat-contact-card small {
|
|
width: calc(100% - 1.7rem);
|
|
margin: 0 0.85rem;
|
|
padding: 0.65rem 0;
|
|
border-top: 1px solid #eceef1;
|
|
color: #9da3ac;
|
|
}
|
|
|
|
.chat-permission-banner {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex: none;
|
|
min-height: 2.5rem;
|
|
padding: 0.55rem 1rem;
|
|
color: #7e858e;
|
|
background: #fff7e8;
|
|
font-size: 0.82rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.chat-permission-banner .material-icons {
|
|
margin-right: 0.4rem;
|
|
color: #dc9221;
|
|
font-size: 1.05rem;
|
|
}
|
|
|
|
.chat-composer {
|
|
display: grid;
|
|
grid-template-columns: 2.7rem minmax(0,1fr) 2.7rem auto;
|
|
align-items: center;
|
|
flex: none;
|
|
min-height: 4.2rem;
|
|
padding: 0.55rem max(0.75rem, calc((100% - 54rem) / 2));
|
|
border-top: 1px solid #e8eaee;
|
|
background: #f8f9fa;
|
|
}
|
|
|
|
.chat-composer > button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 2.5rem;
|
|
min-width: 2.5rem;
|
|
height: 2.5rem;
|
|
min-height: 2.5rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #555c65;
|
|
background: transparent;
|
|
}
|
|
|
|
.chat-composer > button[disabled] {
|
|
color: #b7bcc3;
|
|
}
|
|
|
|
.chat-composer > button .material-icons {
|
|
font-size: 1.45rem;
|
|
}
|
|
|
|
.chat-composer input {
|
|
min-width: 0;
|
|
width: 100%;
|
|
height: 2.8rem;
|
|
margin: 0;
|
|
padding: 0 0.8rem;
|
|
border: 1px solid #eceef1;
|
|
border-radius: 0.4rem;
|
|
box-shadow: none;
|
|
color: #252931;
|
|
background: #fff;
|
|
font-size: 0.93rem;
|
|
}
|
|
|
|
.chat-composer input:focus {
|
|
border-color: #4091ff;
|
|
box-shadow: 0 0 0 3px rgba(22,119,255,0.08);
|
|
}
|
|
|
|
.chat-composer input[disabled] {
|
|
color: #9da3ab;
|
|
background: #f1f2f4;
|
|
}
|
|
|
|
.chat-composer .chat-send-button {
|
|
width: auto;
|
|
min-width: 3.8rem;
|
|
margin-left: 0.25rem;
|
|
padding: 0 0.75rem;
|
|
border-radius: 0.35rem;
|
|
color: #fff;
|
|
background: #398afa;
|
|
font-size: 0.82rem;
|
|
text-transform: none;
|
|
}
|
|
|
|
.chat-attachment-panel {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(4rem, 1fr));
|
|
gap: 1rem;
|
|
flex: none;
|
|
min-height: 13rem;
|
|
padding: 1rem max(1rem, calc((100% - 48rem) / 2)) max(1rem, env(safe-area-inset-bottom));
|
|
border-top: 1px solid #e3e6ea;
|
|
background: #f1f2f4;
|
|
}
|
|
|
|
.chat-attachment-panel button {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: flex-start;
|
|
width: 100%;
|
|
height: auto;
|
|
min-height: 5.2rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #6d747e;
|
|
background: transparent;
|
|
text-transform: none;
|
|
}
|
|
|
|
.chat-attachment-panel button > span {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3.8rem;
|
|
height: 3.8rem;
|
|
border-radius: 0.5rem;
|
|
color: #4d535b;
|
|
background: #fff;
|
|
}
|
|
|
|
.chat-attachment-panel .material-icons {
|
|
font-size: 1.55rem;
|
|
}
|
|
|
|
.chat-attachment-panel small {
|
|
margin-top: 0.45rem;
|
|
font-size: 0.78rem;
|
|
}
|
|
|
|
.chat-toast {
|
|
position: fixed;
|
|
z-index: 30;
|
|
bottom: max(1.5rem, env(safe-area-inset-bottom));
|
|
left: 50%;
|
|
max-width: calc(100% - 2rem);
|
|
padding: 0.75rem 1.1rem;
|
|
border-radius: 0.4rem;
|
|
color: #fff;
|
|
background: rgba(34,38,45,0.94);
|
|
box-shadow: 0 0.5rem 1.5rem rgba(0,0,0,0.18);
|
|
text-align: center;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
/* Message composer, media tasks, selection, favorites, and forwarding. */
|
|
#sidepanel.message-composer-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
color-scheme: light;
|
|
color: #252931;
|
|
background: #f4f6f8;
|
|
}
|
|
|
|
.message-composer-panel * {
|
|
box-sizing: border-box;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.message-composer-page .chat-product-header span {
|
|
margin-top: 0.1rem;
|
|
}
|
|
|
|
.compose-timeline {
|
|
padding-bottom: 2rem;
|
|
}
|
|
|
|
.compose-avatar {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 2.7rem;
|
|
height: 2.7rem;
|
|
overflow: hidden;
|
|
flex: 0 0 2.7rem;
|
|
border-radius: 0.45rem;
|
|
color: #fff;
|
|
background: #4789dc;
|
|
}
|
|
|
|
.compose-avatar img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.compose-avatar .material-icons {
|
|
font-size: 1.35rem;
|
|
}
|
|
|
|
.compose-message-row {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 0.65rem;
|
|
width: 100%;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.compose-message-row.mine {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.compose-text-bubble {
|
|
position: relative;
|
|
max-width: min(70%, 32rem);
|
|
min-height: 2.7rem;
|
|
padding: 0.7rem 0.9rem;
|
|
border-radius: 0.45rem;
|
|
background: #fff;
|
|
box-shadow: 0 1px 2px rgba(31,39,50,0.06);
|
|
line-height: 1.5;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.compose-text-bubble.mine {
|
|
color: #fff;
|
|
background: #398afa;
|
|
}
|
|
|
|
.compose-mention {
|
|
color: #1976d2;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.compose-voice-bubble {
|
|
display: grid;
|
|
grid-template-columns: 1.5rem minmax(3rem, 8rem) auto;
|
|
align-items: center;
|
|
gap: 0.4rem;
|
|
width: auto;
|
|
min-width: 10rem;
|
|
height: 3rem;
|
|
min-height: 3rem;
|
|
margin: 0;
|
|
padding: 0 0.85rem;
|
|
border: 0;
|
|
border-radius: 0.45rem;
|
|
box-shadow: 0 1px 2px rgba(31,39,50,0.06);
|
|
color: #30343b;
|
|
background: #fff;
|
|
}
|
|
|
|
.compose-voice-bubble.mine {
|
|
color: #fff;
|
|
background: #398afa;
|
|
}
|
|
|
|
.compose-voice-bubble > i:last-child {
|
|
position: absolute;
|
|
width: 0.45rem;
|
|
height: 0.45rem;
|
|
margin-left: 10.3rem;
|
|
border-radius: 50%;
|
|
background: #ef3f4d;
|
|
}
|
|
|
|
.compose-wave {
|
|
height: 1rem;
|
|
opacity: 0.55;
|
|
background: repeating-linear-gradient(90deg, currentColor 0 2px, transparent 2px 5px);
|
|
}
|
|
|
|
.compose-media-card,
|
|
.compose-video-card {
|
|
position: relative;
|
|
width: 11rem;
|
|
aspect-ratio: 4 / 3;
|
|
overflow: hidden;
|
|
border: 0;
|
|
border-radius: 0.45rem;
|
|
background: #dfe3e8;
|
|
}
|
|
|
|
.compose-video-card {
|
|
height: auto;
|
|
min-height: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.compose-media-card > img,
|
|
.compose-video-card > img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.compose-video-card > .material-icons {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
color: #fff;
|
|
font-size: 2.8rem;
|
|
filter: drop-shadow(0 2px 5px rgba(0,0,0,0.3));
|
|
transform: translate(-50%, -50%);
|
|
}
|
|
|
|
.compose-video-card > small {
|
|
position: absolute;
|
|
right: 0.45rem;
|
|
bottom: 0.35rem;
|
|
padding: 0.1rem 0.3rem;
|
|
border-radius: 0.2rem;
|
|
color: #fff;
|
|
background: rgba(0,0,0,0.55);
|
|
}
|
|
|
|
.compose-media-state {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-direction: column;
|
|
color: #fff;
|
|
background: rgba(25,29,35,0.52);
|
|
}
|
|
|
|
.compose-media-state .material-icons {
|
|
font-size: 1.7rem;
|
|
}
|
|
|
|
.compose-media-state strong {
|
|
margin: 0.3rem 0;
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
.compose-media-state progress {
|
|
width: 5rem;
|
|
height: 0.3rem;
|
|
accent-color: #fff;
|
|
}
|
|
|
|
.compose-file-card {
|
|
display: grid;
|
|
grid-template-columns: 3rem minmax(0, 1fr) 1.7rem;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
width: min(25rem, calc(100vw - 8rem));
|
|
min-height: 5rem;
|
|
padding: 0.8rem;
|
|
border-radius: 0.45rem;
|
|
background: #fff;
|
|
box-shadow: 0 1px 2px rgba(31,39,50,0.06);
|
|
}
|
|
|
|
.compose-file-type {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3rem;
|
|
height: 3.4rem;
|
|
border-radius: 0.3rem;
|
|
color: #fff;
|
|
background: #e74664;
|
|
font-size: 0.72rem;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.compose-file-card > div,
|
|
.compose-upload-list > div > div {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.compose-file-card strong,
|
|
.compose-upload-list strong {
|
|
overflow: hidden;
|
|
color: #30343b;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.compose-file-card small,
|
|
.compose-upload-list small {
|
|
margin-top: 0.35rem;
|
|
color: #9097a0;
|
|
}
|
|
|
|
.compose-file-card progress,
|
|
.compose-upload-list progress {
|
|
width: 100%;
|
|
height: 0.3rem;
|
|
margin-top: 0.35rem;
|
|
accent-color: #398afa;
|
|
}
|
|
|
|
.compose-toolbar {
|
|
display: grid;
|
|
grid-template-columns: 2.8rem minmax(0, 1fr) 2.8rem auto;
|
|
align-items: center;
|
|
min-height: 4.2rem;
|
|
padding: 0.55rem max(0.6rem, calc((100% - 54rem) / 2));
|
|
border-top: 1px solid #e4e7eb;
|
|
background: #f8f9fa;
|
|
}
|
|
|
|
.compose-toolbar > button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 2.6rem;
|
|
min-width: 2.6rem;
|
|
height: 2.6rem;
|
|
min-height: 2.6rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #555c65;
|
|
background: transparent;
|
|
}
|
|
|
|
.compose-toolbar input {
|
|
width: 100%;
|
|
min-width: 0;
|
|
height: 2.8rem;
|
|
margin: 0;
|
|
padding: 0 0.8rem;
|
|
border: 1px solid #e4e7eb;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #252931;
|
|
background: #fff;
|
|
}
|
|
|
|
.compose-toolbar .compose-send,
|
|
.compose-upload-page footer button,
|
|
.compose-target-footer button,
|
|
.compose-confirm-send {
|
|
width: auto;
|
|
min-width: 3.8rem;
|
|
padding: 0 0.85rem;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
color: #fff;
|
|
background: #398afa;
|
|
text-transform: none;
|
|
}
|
|
|
|
.compose-toolbar .compose-hold-button {
|
|
width: 100%;
|
|
color: #30343b;
|
|
border: 1px solid #e1e4e8;
|
|
background: #fff;
|
|
font-size: 0.92rem;
|
|
}
|
|
|
|
.compose-emoji-panel {
|
|
position: relative;
|
|
flex: none;
|
|
min-height: 14rem;
|
|
padding: 0 1rem max(1rem, env(safe-area-inset-bottom));
|
|
border-top: 1px solid #e2e5e9;
|
|
background: #f4f5f7;
|
|
}
|
|
|
|
.compose-emoji-panel nav {
|
|
display: flex;
|
|
gap: 0.25rem;
|
|
height: 3rem;
|
|
border-bottom: 1px solid #e1e4e8;
|
|
}
|
|
|
|
.compose-emoji-panel nav button,
|
|
.compose-emoji-delete {
|
|
width: 3rem;
|
|
min-width: 3rem;
|
|
height: 3rem;
|
|
min-height: 3rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #7d848d;
|
|
background: transparent;
|
|
}
|
|
|
|
.compose-emoji-panel nav button.active {
|
|
color: #398afa;
|
|
border-bottom: 2px solid #398afa;
|
|
}
|
|
|
|
.compose-emoji-panel > div {
|
|
display: grid;
|
|
grid-template-columns: repeat(9, minmax(2.5rem, 1fr));
|
|
gap: 0.35rem;
|
|
max-width: 52rem;
|
|
padding: 0.8rem 0;
|
|
margin: auto;
|
|
}
|
|
|
|
.compose-emoji-panel > div button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 100%;
|
|
min-width: 2.5rem;
|
|
height: 2.5rem;
|
|
min-height: 2.5rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
background: transparent;
|
|
font-size: 1.4rem;
|
|
}
|
|
|
|
.compose-emoji-delete {
|
|
position: absolute;
|
|
right: 1rem;
|
|
bottom: max(0.5rem, env(safe-area-inset-bottom));
|
|
border-radius: 0.3rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.compose-record-overlay {
|
|
position: fixed;
|
|
z-index: 20;
|
|
top: 50%;
|
|
left: 50%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 12rem;
|
|
min-height: 11rem;
|
|
padding: 1.2rem;
|
|
border-radius: 0.5rem;
|
|
color: #fff;
|
|
background: rgba(34,39,47,0.9);
|
|
box-shadow: 0 1rem 3rem rgba(0,0,0,0.24);
|
|
flex-direction: column;
|
|
transform: translate(-50%, -50%);
|
|
}
|
|
|
|
.compose-record-overlay.cancel {
|
|
background: rgba(204,55,62,0.94);
|
|
}
|
|
|
|
.compose-record-overlay > .material-icons {
|
|
font-size: 3rem;
|
|
}
|
|
|
|
.compose-record-overlay strong {
|
|
margin-top: 0.65rem;
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
.compose-record-overlay small {
|
|
margin-top: 0.35rem;
|
|
opacity: 0.8;
|
|
}
|
|
|
|
.compose-meter {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.18rem;
|
|
height: 1.8rem;
|
|
margin-top: 0.4rem;
|
|
}
|
|
|
|
.compose-meter i {
|
|
width: 0.18rem;
|
|
border-radius: 0.1rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.compose-picker-page,
|
|
.compose-forward-page,
|
|
.compose-upload-page {
|
|
display: flex;
|
|
width: 100%;
|
|
min-height: 100%;
|
|
flex-direction: column;
|
|
color: #252931;
|
|
background: #f6f7f9;
|
|
}
|
|
|
|
.compose-picker-header {
|
|
display: grid;
|
|
grid-template-columns: 4.5rem minmax(0, 1fr) 4.5rem;
|
|
align-items: center;
|
|
min-height: 4.5rem;
|
|
padding-top: env(safe-area-inset-top);
|
|
border-bottom: 1px solid #ebedf0;
|
|
background: #fff;
|
|
}
|
|
|
|
.compose-picker-header h1 {
|
|
margin: 0;
|
|
font-size: 1.12rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.compose-picker-header button {
|
|
width: 100%;
|
|
min-width: 0;
|
|
height: 3.2rem;
|
|
min-height: 3.2rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #30343b;
|
|
background: transparent;
|
|
}
|
|
|
|
.compose-picker-header button.text {
|
|
color: #287fe5;
|
|
font-size: 0.88rem;
|
|
text-transform: none;
|
|
}
|
|
|
|
.compose-picker-header button[disabled] {
|
|
color: #b4bac1;
|
|
}
|
|
|
|
.compose-search {
|
|
display: flex;
|
|
align-items: center;
|
|
height: 2.8rem;
|
|
margin: 0.8rem max(1rem, calc((100% - 48rem) / 2));
|
|
padding: 0 0.75rem;
|
|
border-radius: 0.35rem;
|
|
color: #949ba4;
|
|
background: #fff;
|
|
}
|
|
|
|
.compose-search .material-icons {
|
|
font-size: 1.25rem;
|
|
}
|
|
|
|
.compose-search input {
|
|
width: 100%;
|
|
min-width: 0;
|
|
height: 100%;
|
|
margin: 0;
|
|
padding: 0 0.55rem;
|
|
border: 0;
|
|
box-shadow: none;
|
|
background: transparent;
|
|
}
|
|
|
|
.compose-section-title {
|
|
width: min(100%, 48rem);
|
|
margin: 0 auto;
|
|
padding: 0.5rem 1rem;
|
|
color: #8d949d;
|
|
font-size: 0.78rem;
|
|
}
|
|
|
|
.compose-picker-list {
|
|
width: min(100%, 48rem);
|
|
margin: 0 auto;
|
|
background: #fff;
|
|
}
|
|
|
|
.compose-picker-list > button {
|
|
display: grid;
|
|
grid-template-columns: 3rem minmax(0, 1fr) 2rem;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
width: 100%;
|
|
min-width: 0;
|
|
min-height: 4.4rem;
|
|
margin: 0;
|
|
padding: 0.55rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eef0f2;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #252931;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.compose-picker-list > button > span:nth-child(2) {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.compose-picker-list strong {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.compose-picker-list small {
|
|
margin-top: 0.2rem;
|
|
color: #969da6;
|
|
font-size: 0.76rem;
|
|
}
|
|
|
|
.compose-checkbox,
|
|
.compose-check {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 1.4rem;
|
|
height: 1.4rem;
|
|
border: 1px solid #c9ced4;
|
|
border-radius: 50%;
|
|
color: #fff;
|
|
background: #fff;
|
|
}
|
|
|
|
.compose-checkbox.checked,
|
|
.compose-check.checked {
|
|
border-color: #398afa;
|
|
background: #398afa;
|
|
}
|
|
|
|
.compose-checkbox .material-icons,
|
|
.compose-check .material-icons {
|
|
font-size: 0.95rem;
|
|
}
|
|
|
|
.compose-select-row {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
width: 100%;
|
|
}
|
|
|
|
.compose-select-row.selectable {
|
|
gap: 0.7rem;
|
|
}
|
|
|
|
.compose-select-row.selectable .compose-message-row {
|
|
width: calc(100% - 2.2rem);
|
|
}
|
|
|
|
.compose-check {
|
|
flex: 0 0 1.4rem;
|
|
min-width: 1.4rem;
|
|
min-height: 1.4rem;
|
|
margin: 0.65rem 0 0;
|
|
padding: 0;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.compose-selection-bar {
|
|
display: grid;
|
|
grid-template-columns: 4rem 1fr 5rem;
|
|
align-items: center;
|
|
min-height: 3.2rem;
|
|
border-bottom: 1px solid #e6e9ed;
|
|
background: #fff;
|
|
text-align: center;
|
|
}
|
|
|
|
.compose-selection-bar button {
|
|
width: 100%;
|
|
min-width: 0;
|
|
min-height: 2.8rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #398afa;
|
|
background: transparent;
|
|
font-size: 0.78rem;
|
|
text-transform: none;
|
|
}
|
|
|
|
.compose-batch-actions {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
flex: none;
|
|
min-height: 4.6rem;
|
|
padding-bottom: env(safe-area-inset-bottom);
|
|
border-top: 1px solid #e3e6ea;
|
|
background: #fff;
|
|
}
|
|
|
|
.compose-batch-actions button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 100%;
|
|
min-width: 0;
|
|
min-height: 4.2rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #515862;
|
|
background: transparent;
|
|
flex-direction: column;
|
|
text-transform: none;
|
|
}
|
|
|
|
.compose-batch-actions button[disabled] {
|
|
color: #b8bdc4;
|
|
}
|
|
|
|
.compose-batch-actions span {
|
|
margin-top: 0.25rem;
|
|
font-size: 0.72rem;
|
|
}
|
|
|
|
.compose-upload-page > main {
|
|
width: min(100%, 48rem);
|
|
min-height: 0;
|
|
margin: 0 auto;
|
|
padding: 1.2rem;
|
|
overflow-y: auto;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.compose-upload-drop {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 11rem;
|
|
border: 1px dashed #b9c4d1;
|
|
border-radius: 0.45rem;
|
|
color: #4f5863;
|
|
background: #fff;
|
|
cursor: pointer;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.compose-upload-drop input {
|
|
position: absolute;
|
|
width: 1px;
|
|
height: 1px;
|
|
opacity: 0;
|
|
}
|
|
|
|
.compose-upload-drop .material-icons {
|
|
margin-bottom: 0.5rem;
|
|
color: #398afa;
|
|
font-size: 2.6rem;
|
|
}
|
|
|
|
.compose-upload-drop small {
|
|
margin-top: 0.35rem;
|
|
color: #9299a2;
|
|
}
|
|
|
|
.compose-upload-list h2,
|
|
.compose-forward-confirm h2 {
|
|
margin: 1.4rem 0 0.7rem;
|
|
font-size: 0.92rem;
|
|
}
|
|
|
|
.compose-upload-list > div {
|
|
display: grid;
|
|
grid-template-columns: 3rem minmax(0, 1fr) 2rem;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
padding: 0.8rem;
|
|
border-bottom: 1px solid #eceef1;
|
|
background: #fff;
|
|
}
|
|
|
|
.compose-upload-list button {
|
|
width: 2rem;
|
|
min-width: 2rem;
|
|
height: 2rem;
|
|
min-height: 2rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
background: transparent;
|
|
}
|
|
|
|
.compose-upload-page > footer,
|
|
.compose-target-footer {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
min-height: 4.5rem;
|
|
padding: 0.6rem max(1rem, calc((100% - 48rem) / 2));
|
|
border-top: 1px solid #e3e6ea;
|
|
background: #fff;
|
|
}
|
|
|
|
.compose-upload-page footer button,
|
|
.compose-target-footer button {
|
|
height: 2.8rem;
|
|
min-height: 2.8rem;
|
|
margin: 0;
|
|
}
|
|
|
|
/* Contact relationships and group governance. */
|
|
#sidepanel.contact-management-panel,
|
|
#sidepanel.group-management-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
color-scheme: light;
|
|
color: #252931;
|
|
background: #f5f6f8;
|
|
}
|
|
|
|
.contact-management-panel *,
|
|
.group-management-panel * {
|
|
box-sizing: border-box;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.people-page,
|
|
.group-page {
|
|
display: flex;
|
|
position: relative;
|
|
width: 100%;
|
|
min-height: 100%;
|
|
overflow: hidden;
|
|
flex-direction: column;
|
|
background: #f5f6f8;
|
|
}
|
|
|
|
.people-header,
|
|
.group-header,
|
|
.group-chat-header {
|
|
display: grid;
|
|
z-index: 3;
|
|
grid-template-columns: 4.5rem minmax(0, 1fr) 4.5rem;
|
|
align-items: center;
|
|
flex: none;
|
|
min-height: 4.5rem;
|
|
padding-top: env(safe-area-inset-top);
|
|
border-bottom: 1px solid #e9ebee;
|
|
background: #fff;
|
|
}
|
|
|
|
.people-header h1,
|
|
.group-header h1,
|
|
.group-chat-header h1 {
|
|
margin: 0;
|
|
overflow: hidden;
|
|
font-size: 1.15rem;
|
|
text-align: center;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.people-header > button,
|
|
.group-header > button,
|
|
.group-chat-header > button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 100%;
|
|
min-width: 0;
|
|
height: 3.2rem;
|
|
min-height: 3.2rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #2e333a;
|
|
background: transparent;
|
|
}
|
|
|
|
.people-header > button.text,
|
|
.group-header > button.text {
|
|
color: #247ee6;
|
|
font-size: 0.86rem;
|
|
text-transform: none;
|
|
}
|
|
|
|
.people-search,
|
|
.group-search {
|
|
display: flex;
|
|
align-items: center;
|
|
flex: none;
|
|
height: 2.8rem;
|
|
margin: 0.8rem max(1rem, calc((100% - 50rem) / 2));
|
|
padding: 0 0.75rem;
|
|
border-radius: 0.35rem;
|
|
color: #9299a2;
|
|
background: #fff;
|
|
}
|
|
|
|
.people-search .material-icons,
|
|
.group-search .material-icons {
|
|
font-size: 1.2rem;
|
|
}
|
|
|
|
.people-search input,
|
|
.group-search input {
|
|
width: 100%;
|
|
min-width: 0;
|
|
height: 100%;
|
|
margin: 0;
|
|
padding: 0 0.5rem;
|
|
border: 0;
|
|
box-shadow: none;
|
|
background: transparent;
|
|
}
|
|
|
|
.people-avatar,
|
|
.group-avatar {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3rem;
|
|
height: 3rem;
|
|
overflow: hidden;
|
|
flex: 0 0 3rem;
|
|
border-radius: 0.45rem;
|
|
color: #fff;
|
|
background: #4389df;
|
|
}
|
|
|
|
.people-avatar img,
|
|
.group-avatar img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.people-avatar .material-icons,
|
|
.group-avatar .material-icons {
|
|
font-size: 1.45rem;
|
|
}
|
|
|
|
.people-scroll,
|
|
.people-page > main,
|
|
.group-page > main {
|
|
min-height: 0;
|
|
overflow-y: auto;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.people-entry-list,
|
|
.people-group,
|
|
.people-add-actions,
|
|
.people-settings > section,
|
|
.group-settings > section,
|
|
.group-governance > section {
|
|
width: min(100%, 50rem);
|
|
margin: 0 auto 0.8rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.people-entry-list > button {
|
|
display: grid;
|
|
grid-template-columns: 3rem minmax(0, 1fr) auto 1.5rem;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
width: 100%;
|
|
min-height: 4.3rem;
|
|
margin: 0;
|
|
padding: 0.55rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eef0f2;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #2d3239;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.people-entry-list em {
|
|
display: grid;
|
|
place-items: center;
|
|
min-width: 1.2rem;
|
|
height: 1.2rem;
|
|
padding: 0 0.35rem;
|
|
border-radius: 0.6rem;
|
|
color: #fff;
|
|
background: #ef4653;
|
|
font-size: 0.7rem;
|
|
font-style: normal;
|
|
}
|
|
|
|
.people-group h2 {
|
|
margin: 0;
|
|
padding: 0.45rem 1rem;
|
|
color: #868d97;
|
|
background: #f5f6f8;
|
|
font-size: 0.78rem;
|
|
}
|
|
|
|
.people-group > button {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
width: 100%;
|
|
min-height: 4.2rem;
|
|
margin: 0;
|
|
padding: 0.55rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eef0f2;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #2d3239;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
/* Each of these rows renders an Avatar (also a bare `<span>`, `.people-avatar`/`.group-avatar`)
|
|
followed by this text column, both direct children of the same `button`/`article` -- a selector
|
|
scoped only by tag+ancestor (no `:nth-child`) matches the avatar too, and since it comes first in
|
|
source order and ties this rule's specificity, it wins and overrides the avatar's own real
|
|
`flex: 0 0 <size>` with `flex: 1 1 auto`. The avatar was rendered as a plain flex item with no
|
|
basis to hold onto, so it grew to fill the row instead of staying a fixed-size square -- the
|
|
"stretched-into-a-bar" avatar. `.people-add-actions button > span` and the two `> div` selectors
|
|
are naturally exempt (their first child is an <Icon>/<i>, not a same-tag sibling), which is why
|
|
only some rows in this shared rule needed `:nth-child(2)` and others didn't. */
|
|
.people-group > button > span:nth-child(2),
|
|
.people-request-list article > div,
|
|
.people-block-list article > span:nth-child(2),
|
|
.people-search-result button > span:nth-child(2),
|
|
.people-add-actions button > span,
|
|
.group-list button > span:nth-child(2),
|
|
.group-request-list article > div,
|
|
.group-admin-page article > span:nth-child(2),
|
|
.group-muted-list article > span:nth-child(2) {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
/* Same class of bug as .messages-conversation-copy (base.css, message list rows): these rows are all
|
|
<button> elements, and neither `strong` nor `small` here override the generic `button { line-height:
|
|
2.2rem }` -- meaning a ~0.75-1rem line of text sits in a ~35px-tall box, reading as "way too much
|
|
gap between the title and subtitle" even though the actual margin-top below is tiny. */
|
|
.people-group strong,
|
|
.people-request-list strong,
|
|
.people-block-list strong,
|
|
.people-search-result strong,
|
|
.people-add-actions strong,
|
|
.group-list strong,
|
|
.group-request-list strong,
|
|
.group-admin-page strong,
|
|
.group-muted-list strong {
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.people-group small,
|
|
.people-request-list small,
|
|
.people-block-list small,
|
|
.people-search-result small,
|
|
.people-add-actions small,
|
|
.group-list small,
|
|
.group-request-list small,
|
|
.group-admin-page small,
|
|
.group-muted-list small {
|
|
margin-top: 0.2rem;
|
|
color: #9299a2;
|
|
font-size: 0.75rem;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.people-index {
|
|
position: absolute;
|
|
z-index: 2;
|
|
top: 13rem;
|
|
right: 0.35rem;
|
|
display: flex;
|
|
gap: 0.2rem;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.people-index a {
|
|
color: #6a727d;
|
|
font-size: 0.68rem;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.people-request-list,
|
|
.people-block-list,
|
|
.group-request-list,
|
|
.group-muted-list,
|
|
.group-admin-page {
|
|
width: min(100%, 50rem);
|
|
margin: 0 auto;
|
|
background: #fff;
|
|
}
|
|
|
|
.people-request-list article,
|
|
.people-block-list article,
|
|
.group-request-list article,
|
|
.group-admin-page article,
|
|
.group-muted-list article {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
min-height: 5.2rem;
|
|
padding: 0.7rem 1rem;
|
|
border-bottom: 1px solid #eceef1;
|
|
}
|
|
|
|
.people-request-list p,
|
|
.group-request-list p {
|
|
max-width: 24rem;
|
|
margin: 0.2rem 0;
|
|
overflow: hidden;
|
|
color: #69717b;
|
|
font-size: 0.8rem;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.people-request-list article > span,
|
|
.group-request-list article > span {
|
|
display: flex;
|
|
gap: 0.4rem;
|
|
}
|
|
|
|
.people-request-list button,
|
|
.people-block-list button,
|
|
.group-request-list button,
|
|
.group-admin-page article button,
|
|
.group-muted-list button {
|
|
width: auto;
|
|
min-width: 3.3rem;
|
|
height: 2.1rem;
|
|
min-height: 2.1rem;
|
|
margin: 0;
|
|
padding: 0 0.65rem;
|
|
border: 1px solid #d8dce1;
|
|
border-radius: 0.3rem;
|
|
box-shadow: none;
|
|
color: #69717b;
|
|
background: #fff;
|
|
font-size: 0.76rem;
|
|
text-transform: none;
|
|
}
|
|
|
|
.people-request-list button.primary,
|
|
.group-request-list button.primary {
|
|
border-color: #398afa;
|
|
color: #fff;
|
|
background: #398afa;
|
|
}
|
|
|
|
.people-request-list em,
|
|
.group-request-list em {
|
|
color: #969da5;
|
|
font-size: 0.78rem;
|
|
font-style: normal;
|
|
}
|
|
|
|
.people-add-actions {
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
.people-add-actions button {
|
|
display: grid;
|
|
grid-template-columns: 2.7rem minmax(0, 1fr) 1.5rem;
|
|
align-items: center;
|
|
gap: 0.7rem;
|
|
width: 100%;
|
|
min-height: 4.4rem;
|
|
margin: 0;
|
|
padding: 0.65rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #2d3239;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.people-add-actions button > .material-icons:first-child {
|
|
color: #398afa;
|
|
font-size: 1.7rem;
|
|
}
|
|
|
|
.people-my-account {
|
|
color: #9299a2;
|
|
font-size: 0.8rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.people-search-result {
|
|
width: min(100%, 50rem);
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.people-search-result h2 {
|
|
padding: 0 1rem;
|
|
color: #8b929b;
|
|
font-size: 0.78rem;
|
|
}
|
|
|
|
.people-search-result button {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
width: 100%;
|
|
min-height: 4.7rem;
|
|
margin: 0;
|
|
padding: 0.7rem 1rem;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #2d3239;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.people-search-result em {
|
|
padding: 0.4rem 0.8rem;
|
|
border-radius: 0.3rem;
|
|
color: #fff;
|
|
background: #398afa;
|
|
font-size: 0.78rem;
|
|
font-style: normal;
|
|
}
|
|
|
|
.people-qr-page main,
|
|
.group-qr-page main {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 2rem 1rem;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.people-qr-card,
|
|
.group-qr-card {
|
|
width: min(100%, 23rem);
|
|
padding: 1.4rem;
|
|
border-radius: 0.45rem;
|
|
background: #fff;
|
|
box-shadow: 0 0.8rem 2.2rem rgba(35,43,54,0.1);
|
|
text-align: center;
|
|
}
|
|
|
|
.people-qr-profile,
|
|
.group-qr-card > div:first-child {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
text-align: left;
|
|
}
|
|
|
|
.people-qr-profile > span:nth-child(2),
|
|
.group-qr-card > div:first-child > span:nth-child(2) {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.people-qr-profile small,
|
|
.group-qr-card small {
|
|
margin-top: 0.2rem;
|
|
color: #8f969f;
|
|
}
|
|
|
|
.people-qrcode,
|
|
.group-qrcode {
|
|
width: 190px;
|
|
height: 190px;
|
|
margin: 1.5rem auto 1rem;
|
|
}
|
|
|
|
.people-qrcode img,
|
|
.group-qrcode img {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.people-qr-card p,
|
|
.group-qr-card p {
|
|
margin: 0.6rem 0 0;
|
|
}
|
|
|
|
.people-qr-actions,
|
|
.group-qr-actions {
|
|
display: flex;
|
|
gap: 1rem;
|
|
margin-top: 1.5rem;
|
|
}
|
|
|
|
.people-qr-actions button,
|
|
.group-qr-actions button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 8.5rem;
|
|
min-width: 0;
|
|
min-height: 2.8rem;
|
|
margin: 0;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #3b424b;
|
|
background: #fff;
|
|
text-transform: none;
|
|
}
|
|
|
|
.people-qr-actions .material-icons,
|
|
.group-qr-actions .material-icons {
|
|
margin-right: 0.4rem;
|
|
font-size: 1.2rem;
|
|
}
|
|
|
|
.people-verify,
|
|
.people-profile {
|
|
width: min(100%, 42rem);
|
|
margin: 0 auto;
|
|
padding: 2rem 1rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.people-verify > .people-avatar {
|
|
width: 4.5rem;
|
|
height: 4.5rem;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.people-verify h2 {
|
|
margin: 0.8rem 0 1.8rem;
|
|
}
|
|
|
|
.people-verify label {
|
|
display: flex;
|
|
padding: 1rem;
|
|
background: #fff;
|
|
text-align: left;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.people-verify textarea {
|
|
min-height: 7rem;
|
|
margin: 0.7rem 0;
|
|
padding: 0.7rem;
|
|
border: 1px solid #e3e6ea;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
resize: vertical;
|
|
}
|
|
|
|
.people-verify label small {
|
|
color: #989fa7;
|
|
text-align: right;
|
|
}
|
|
|
|
.people-verify-actions {
|
|
display: flex;
|
|
gap: 0.6rem;
|
|
margin-top: 1.2rem;
|
|
}
|
|
.people-verify-actions button {
|
|
flex: 1;
|
|
min-height: 3rem;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
background: var(--clr-background-blue-gray-50);
|
|
text-transform: none;
|
|
}
|
|
.people-verify-actions .people-primary {
|
|
margin: 0;
|
|
}
|
|
|
|
.people-section-title {
|
|
margin: 0.6rem 1rem 0;
|
|
color: var(--clr-text-secondary);
|
|
font-size: 0.85rem;
|
|
font-weight: normal;
|
|
}
|
|
.people-empty-hint {
|
|
padding: 1.5rem 1rem;
|
|
text-align: center;
|
|
color: var(--clr-text-secondary);
|
|
}
|
|
.people-remark-edit {
|
|
display: flex;
|
|
gap: 0.5rem;
|
|
padding: 0.6rem 1rem;
|
|
}
|
|
.people-remark-edit input {
|
|
flex: 1;
|
|
border: 1px solid #e3e6ea;
|
|
border-radius: 0.35rem;
|
|
padding: 0.4rem 0.6rem;
|
|
}
|
|
.people-profile dd.muted {
|
|
color: var(--clr-text-secondary);
|
|
}
|
|
.people-search-result em {
|
|
flex: none;
|
|
padding: 0.35rem 0.9rem;
|
|
border-radius: 1rem;
|
|
font-style: normal;
|
|
font-size: 0.85rem;
|
|
color: var(--clr-text-secondary);
|
|
background: var(--clr-background-blue-gray-50);
|
|
}
|
|
.people-search-result em.people-add-cta {
|
|
color: var(--clr-primary-accent);
|
|
}
|
|
|
|
.people-primary {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 100%;
|
|
min-height: 3rem;
|
|
margin: 1.2rem 0 0;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: #398afa;
|
|
text-transform: none;
|
|
}
|
|
|
|
.people-primary .material-icons {
|
|
margin-right: 0.4rem;
|
|
}
|
|
|
|
.people-profile > section:first-child {
|
|
display: grid;
|
|
grid-template-columns: 4.5rem minmax(0, 1fr) 2rem;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
padding: 1.2rem;
|
|
background: #fff;
|
|
text-align: left;
|
|
}
|
|
|
|
.people-profile > section:first-child .people-avatar {
|
|
width: 4.5rem;
|
|
height: 4.5rem;
|
|
}
|
|
|
|
.people-profile h2,
|
|
.people-profile p {
|
|
margin: 0.2rem 0;
|
|
}
|
|
|
|
.people-profile p {
|
|
color: #858c95;
|
|
font-size: 0.82rem;
|
|
}
|
|
|
|
.people-profile dl {
|
|
margin: 0.8rem 0;
|
|
padding: 0 1rem;
|
|
background: #fff;
|
|
text-align: left;
|
|
}
|
|
|
|
.people-profile dl > div {
|
|
display: grid;
|
|
grid-template-columns: 6rem 1fr;
|
|
padding: 0.9rem 0;
|
|
border-bottom: 1px solid #eef0f2;
|
|
}
|
|
|
|
.people-profile dt,
|
|
.people-profile dd {
|
|
margin: 0;
|
|
}
|
|
|
|
.people-profile dd {
|
|
color: #707883;
|
|
}
|
|
|
|
.people-profile-actions {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 0.8rem;
|
|
}
|
|
|
|
.people-profile-actions button {
|
|
min-height: 3rem;
|
|
margin: 0;
|
|
border: 1px solid #dce0e5;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #398afa;
|
|
background: #fff;
|
|
text-transform: none;
|
|
}
|
|
|
|
.people-profile-actions button.people-primary {
|
|
border-color: #398afa;
|
|
color: #fff;
|
|
background: #398afa;
|
|
}
|
|
|
|
.people-settings,
|
|
.group-settings,
|
|
.group-governance {
|
|
padding: 0.8rem 0 2rem;
|
|
}
|
|
|
|
.people-settings-profile {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
padding: 0.8rem 1rem;
|
|
}
|
|
|
|
.people-settings section > button,
|
|
.people-settings section > div,
|
|
.group-settings section > button,
|
|
.group-settings section > div,
|
|
.group-governance section > button,
|
|
.group-governance section > div,
|
|
.group-profile > button,
|
|
.group-profile > label {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 100%;
|
|
min-height: 3.7rem;
|
|
margin: 0;
|
|
padding: 0.65rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #30353c;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.people-settings section > button > span,
|
|
.people-settings section > div > span,
|
|
.group-settings section > button > span,
|
|
.group-settings section > div > span,
|
|
.group-governance section > button > span {
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.people-settings section small,
|
|
.group-settings section small {
|
|
margin-left: auto;
|
|
color: #949ba4;
|
|
}
|
|
|
|
.people-switch,
|
|
.group-switch {
|
|
position: relative;
|
|
width: 2.8rem;
|
|
min-width: 2.8rem;
|
|
height: 1.55rem;
|
|
min-height: 1.55rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 0.8rem;
|
|
box-shadow: none;
|
|
background: #c7ccd2;
|
|
}
|
|
|
|
.people-switch i,
|
|
.group-switch i {
|
|
position: absolute;
|
|
top: 0.15rem;
|
|
left: 0.15rem;
|
|
width: 1.25rem;
|
|
height: 1.25rem;
|
|
border-radius: 50%;
|
|
background: #fff;
|
|
transition: transform 0.18s ease;
|
|
}
|
|
|
|
.people-switch.checked,
|
|
.group-switch.checked {
|
|
background: #398afa;
|
|
}
|
|
|
|
.people-switch.checked i,
|
|
.group-switch.checked i {
|
|
transform: translateX(1.25rem);
|
|
}
|
|
|
|
.people-danger,
|
|
.group-danger {
|
|
display: block;
|
|
width: min(calc(100% - 2rem), 48rem);
|
|
min-height: 3rem;
|
|
margin: 1rem auto;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #df3f48;
|
|
background: #fff;
|
|
text-transform: none;
|
|
}
|
|
|
|
.people-empty,
|
|
.group-empty {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 23rem;
|
|
color: #8d949d;
|
|
flex-direction: column;
|
|
text-align: center;
|
|
}
|
|
|
|
.people-empty .material-icons,
|
|
.group-empty > .material-icons {
|
|
margin-bottom: 0.8rem;
|
|
color: #b3bac2;
|
|
font-size: 4rem;
|
|
}
|
|
|
|
.people-sheet-backdrop,
|
|
.group-sheet-backdrop,
|
|
.group-modal-backdrop {
|
|
position: absolute;
|
|
z-index: 20;
|
|
inset: 0;
|
|
display: flex;
|
|
align-items: flex-end;
|
|
justify-content: center;
|
|
background: rgba(28,33,40,0.44);
|
|
}
|
|
|
|
.people-confirm-sheet,
|
|
.group-source-sheet,
|
|
.group-confirm-sheet {
|
|
width: min(100%, 36rem);
|
|
padding: 1.2rem;
|
|
border-radius: 0.5rem 0.5rem 0 0;
|
|
background: #fff;
|
|
text-align: center;
|
|
}
|
|
|
|
.people-confirm-sheet > i {
|
|
display: block;
|
|
width: 2.5rem;
|
|
height: 0.25rem;
|
|
margin: 0 auto 1rem;
|
|
border-radius: 0.2rem;
|
|
background: #d6dae0;
|
|
}
|
|
|
|
.people-confirm-sheet h2,
|
|
.group-source-sheet h2,
|
|
.group-confirm-sheet h2 {
|
|
margin: 0.2rem 0 0.8rem;
|
|
font-size: 1.08rem;
|
|
}
|
|
|
|
.people-confirm-sheet p,
|
|
.group-confirm-sheet p {
|
|
color: #757d87;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.people-confirm-sheet button,
|
|
.group-source-sheet button,
|
|
.group-confirm-sheet button {
|
|
width: 100%;
|
|
min-height: 3rem;
|
|
margin: 0.45rem 0 0;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #31363d;
|
|
background: #f2f3f5;
|
|
text-transform: none;
|
|
}
|
|
|
|
.people-confirm-sheet button.danger,
|
|
.group-confirm-sheet button.danger {
|
|
color: #fff;
|
|
background: #e3444d;
|
|
}
|
|
|
|
.group-source-sheet button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.group-source-sheet button .material-icons {
|
|
margin-right: 0.5rem;
|
|
}
|
|
|
|
.group-tabs {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
width: min(100%, 50rem);
|
|
margin: 0 auto;
|
|
border-bottom: 1px solid #e4e7eb;
|
|
background: #fff;
|
|
}
|
|
|
|
.group-tabs button {
|
|
min-height: 2.8rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
border-bottom: 2px solid transparent;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #747c86;
|
|
background: transparent;
|
|
font-size: 0.8rem;
|
|
text-transform: none;
|
|
}
|
|
|
|
.group-tabs button.active {
|
|
border-bottom-color: #398afa;
|
|
color: #247ee6;
|
|
}
|
|
|
|
.group-list {
|
|
width: min(100%, 50rem);
|
|
margin: 0 auto;
|
|
background: #fff;
|
|
}
|
|
|
|
/* Group identity header atop 群聊设置 (docs/images/群聊设置.png) -- avatar + name + description, tap
|
|
through to 群资料. Same row shape as .group-list > button, just with a larger avatar and two-line text. */
|
|
.group-settings-header {
|
|
display: grid;
|
|
grid-template-columns: 3.6rem minmax(0, 1fr) 1.5rem;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
width: 100%;
|
|
min-height: 5rem;
|
|
margin: 0;
|
|
padding: 0.8rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #30353c;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
.group-settings-header .group-avatar { width: 3.6rem; height: 3.6rem; }
|
|
.group-settings-header span { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; }
|
|
.group-settings-header small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #9299a2; }
|
|
|
|
.group-list > button {
|
|
display: grid;
|
|
grid-template-columns: 3.2rem minmax(0, 1fr) 1.5rem;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
width: 100%;
|
|
min-height: 4.7rem;
|
|
margin: 0;
|
|
padding: 0.7rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #30353c;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.group-empty p {
|
|
max-width: 19rem;
|
|
margin: 0.5rem auto 1rem;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.group-empty button {
|
|
width: auto;
|
|
min-height: 2.7rem;
|
|
margin: 0;
|
|
padding: 0 1rem;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: #398afa;
|
|
text-transform: none;
|
|
}
|
|
|
|
.group-modal-backdrop {
|
|
align-items: center;
|
|
}
|
|
|
|
.group-modal {
|
|
width: min(calc(100% - 2rem), 28rem);
|
|
padding: 1.2rem;
|
|
border-radius: 0.5rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.group-modal h2 {
|
|
margin: 0 0 1rem;
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
.group-modal label {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.group-modal input {
|
|
height: 2.8rem;
|
|
margin: 0.5rem 0;
|
|
padding: 0 0.7rem;
|
|
border: 1px solid #dce0e5;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.group-modal p {
|
|
color: #858c96;
|
|
font-size: 0.78rem;
|
|
}
|
|
|
|
.group-modal footer {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 0.6rem;
|
|
}
|
|
|
|
.group-modal footer button {
|
|
width: auto;
|
|
min-width: 4.5rem;
|
|
min-height: 2.6rem;
|
|
margin: 0;
|
|
border: 0;
|
|
border-radius: 0.3rem;
|
|
box-shadow: none;
|
|
color: #59616b;
|
|
background: #eef0f2;
|
|
text-transform: none;
|
|
}
|
|
|
|
.group-modal footer button.primary {
|
|
color: #fff;
|
|
background: #398afa;
|
|
}
|
|
|
|
.group-chat-header {
|
|
grid-template-columns: 3.5rem minmax(0, 1fr) 3.5rem;
|
|
}
|
|
|
|
.group-chat-header > div {
|
|
text-align: center;
|
|
}
|
|
|
|
.group-chat-header small {
|
|
color: #8c939c;
|
|
}
|
|
|
|
.group-top-notice {
|
|
display: grid;
|
|
grid-template-columns: 2.5rem minmax(0, 1fr) 1.5rem;
|
|
align-items: center;
|
|
gap: 0.6rem;
|
|
width: min(100%, 54rem);
|
|
min-height: 3.7rem;
|
|
margin: 0 auto;
|
|
padding: 0.5rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #e8eaed;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #30353c;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.group-top-notice > .material-icons:first-child {
|
|
color: #398afa;
|
|
}
|
|
|
|
.group-top-notice.announcement > .material-icons:first-child {
|
|
color: #f29b38;
|
|
}
|
|
|
|
.group-top-notice span {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.group-top-notice small {
|
|
margin-top: 0.15rem;
|
|
overflow: hidden;
|
|
color: #8d949d;
|
|
font-size: 0.75rem;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.group-chat-timeline {
|
|
width: 100%;
|
|
min-height: 0;
|
|
padding: 1.5rem max(1rem, calc((100% - 54rem) / 2));
|
|
overflow-y: auto;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.group-system-event {
|
|
width: fit-content;
|
|
max-width: 80%;
|
|
margin: 0.8rem auto;
|
|
padding: 0.35rem 0.6rem;
|
|
border-radius: 0.3rem;
|
|
color: #878e97;
|
|
background: #e8eaed;
|
|
font-size: 0.75rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.group-chat-message {
|
|
display: flex;
|
|
gap: 0.7rem;
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
.group-chat-message > div {
|
|
max-width: 70%;
|
|
}
|
|
|
|
.group-chat-message > div > span {
|
|
color: #7d858f;
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
.group-chat-message em {
|
|
margin-left: 0.35rem;
|
|
padding: 0.08rem 0.3rem;
|
|
border-radius: 0.2rem;
|
|
color: #247ee6;
|
|
background: #eaf3ff;
|
|
font-size: 0.65rem;
|
|
font-style: normal;
|
|
}
|
|
|
|
.group-chat-message.owner em {
|
|
color: #d57b17;
|
|
background: #fff1df;
|
|
}
|
|
|
|
.group-chat-message p {
|
|
margin: 0.3rem 0 0;
|
|
padding: 0.7rem 0.9rem;
|
|
border-radius: 0.4rem;
|
|
background: #fff;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.group-chat-composer {
|
|
display: grid;
|
|
grid-template-columns: 2.6rem minmax(0, 1fr) 2.6rem 2.6rem;
|
|
align-items: center;
|
|
flex: none;
|
|
min-height: 4rem;
|
|
padding: 0.5rem max(0.5rem, calc((100% - 54rem) / 2));
|
|
border-top: 1px solid #e2e5e9;
|
|
background: #f8f9fa;
|
|
}
|
|
|
|
.group-chat-composer button {
|
|
width: 2.5rem;
|
|
min-width: 2.5rem;
|
|
height: 2.5rem;
|
|
min-height: 2.5rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
background: transparent;
|
|
}
|
|
|
|
.group-chat-composer input {
|
|
height: 2.7rem;
|
|
margin: 0;
|
|
padding: 0 0.7rem;
|
|
border: 1px solid #e1e4e8;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
background: #fff;
|
|
}
|
|
|
|
.group-invite-card {
|
|
width: min(100%, 23rem);
|
|
margin: 3rem auto;
|
|
padding: 1rem;
|
|
border-radius: 0.45rem;
|
|
background: #fff;
|
|
box-shadow: 0 0.5rem 1.5rem rgba(34,42,52,0.08);
|
|
}
|
|
|
|
.group-invite-card > div {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
}
|
|
|
|
.group-invite-card > div > span {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.group-invite-card small,
|
|
.group-invite-card p {
|
|
color: #858c95;
|
|
}
|
|
|
|
.group-invite-card button {
|
|
width: 100%;
|
|
min-height: 2.8rem;
|
|
margin: 0.8rem 0 0;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: #398afa;
|
|
text-transform: none;
|
|
}
|
|
|
|
.group-invite-card button[disabled] {
|
|
color: #7e858e;
|
|
background: #e8eaed;
|
|
}
|
|
|
|
.group-announcement-detail {
|
|
width: min(100%, 42rem);
|
|
margin: 0 auto;
|
|
padding: 2rem 1.2rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.group-announcement-detail > .material-icons {
|
|
color: #f19b38;
|
|
font-size: 2.5rem;
|
|
}
|
|
|
|
.group-announcement-detail h2 {
|
|
margin: 0.7rem 0 1.2rem;
|
|
}
|
|
|
|
.group-announcement-detail > p {
|
|
color: #555d67;
|
|
line-height: 1.8;
|
|
}
|
|
|
|
.group-announcement-detail footer {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.7rem;
|
|
margin-top: 2rem;
|
|
padding-top: 1rem;
|
|
border-top: 1px solid #eceef1;
|
|
}
|
|
|
|
.group-announcement-detail footer > span {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.group-announcement-detail > small {
|
|
display: block;
|
|
margin-top: 1rem;
|
|
color: #3a8aec;
|
|
}
|
|
|
|
.group-member-strip {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
padding: 1rem;
|
|
}
|
|
|
|
.group-member-strip > div {
|
|
display: flex;
|
|
gap: 0.8rem;
|
|
overflow-x: auto;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.group-member-strip button {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 3.2rem;
|
|
min-width: 3.2rem;
|
|
height: auto;
|
|
min-height: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #68707a;
|
|
background: transparent;
|
|
flex-direction: column;
|
|
text-transform: none;
|
|
}
|
|
|
|
.group-member-strip button > small {
|
|
width: 100%;
|
|
margin-top: 0.3rem;
|
|
overflow: hidden;
|
|
text-align: center;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.group-profile {
|
|
width: min(100%, 50rem);
|
|
margin: 0 auto;
|
|
padding-top: 0.8rem;
|
|
}
|
|
|
|
.group-profile > button,
|
|
.group-profile > label {
|
|
gap: 0.7rem;
|
|
}
|
|
|
|
.group-profile > button > span,
|
|
.group-profile > label > span {
|
|
min-width: 6rem;
|
|
}
|
|
|
|
.group-profile > button > small,
|
|
.group-profile > label > input {
|
|
min-width: 0;
|
|
margin-left: auto;
|
|
overflow: hidden;
|
|
color: #818892;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.group-profile > label > input {
|
|
width: 100%;
|
|
height: 2.5rem;
|
|
margin: 0;
|
|
padding: 0 0.5rem;
|
|
border: 0;
|
|
box-shadow: none;
|
|
text-align: right;
|
|
}
|
|
|
|
.group-profile-avatar .group-avatar {
|
|
width: 3.5rem;
|
|
height: 3.5rem;
|
|
}
|
|
|
|
.group-profile > p {
|
|
padding: 0.7rem 1rem;
|
|
color: #8c939c;
|
|
font-size: 0.76rem;
|
|
}
|
|
|
|
.group-edit-text {
|
|
width: min(100%, 42rem);
|
|
margin: 0 auto;
|
|
padding: 1rem;
|
|
}
|
|
|
|
.group-edit-text input,
|
|
.group-edit-text textarea {
|
|
width: 100%;
|
|
margin: 0;
|
|
padding: 0.8rem;
|
|
border: 1px solid #e1e4e8;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
background: #fff;
|
|
}
|
|
|
|
.group-edit-text input {
|
|
height: 3rem;
|
|
}
|
|
|
|
.group-edit-text textarea {
|
|
min-height: 10rem;
|
|
resize: vertical;
|
|
}
|
|
|
|
.group-edit-text > small {
|
|
display: block;
|
|
margin-top: 0.4rem;
|
|
color: #969da6;
|
|
text-align: right;
|
|
}
|
|
|
|
.group-edit-text p {
|
|
color: #878e98;
|
|
font-size: 0.78rem;
|
|
}
|
|
|
|
.group-governance section > div > span {
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.group-governance section > div > span small {
|
|
margin-top: 0.2rem;
|
|
color: #9299a2;
|
|
font-size: 0.72rem;
|
|
}
|
|
|
|
.group-admin-page {
|
|
padding-bottom: 1rem;
|
|
}
|
|
|
|
.group-admin-page aside {
|
|
display: flex;
|
|
gap: 0.6rem;
|
|
margin: 0;
|
|
padding: 0.8rem 1rem;
|
|
color: #7a828c;
|
|
background: #eef5ff;
|
|
font-size: 0.78rem;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.group-admin-page aside .material-icons {
|
|
color: #398afa;
|
|
font-size: 1.2rem;
|
|
}
|
|
|
|
.group-admin-page aside p {
|
|
margin: 0;
|
|
}
|
|
|
|
.group-admin-page h2 {
|
|
margin: 0;
|
|
padding: 0.7rem 1rem;
|
|
color: #8a929b;
|
|
background: #f5f6f8;
|
|
font-size: 0.78rem;
|
|
}
|
|
|
|
.group-inline-empty {
|
|
padding: 2rem;
|
|
color: #969da5;
|
|
text-align: center;
|
|
}
|
|
|
|
/* Alphabet-group section header inside MemberPicker/OwnerSelect, same treatment as .group-admin-page h2. */
|
|
.group-section-title {
|
|
margin: 0;
|
|
padding: 0.7rem 1rem;
|
|
color: #8a929b;
|
|
background: #f5f6f8;
|
|
font-size: 0.78rem;
|
|
}
|
|
|
|
/* Small muted caption under a list/header, e.g. member count or "仅群主及群管理员可编辑". */
|
|
.group-inline-hint {
|
|
padding: 0.3rem 1rem 0.7rem;
|
|
color: #969da5;
|
|
font-size: 0.78rem;
|
|
}
|
|
|
|
/* Centered "设置成功" overlay confirmation, docs/images/添加管理员-设置成功.png -- distinct from the
|
|
bottom-anchored .chat-toast used for lighter feedback elsewhere in this file. */
|
|
.group-toast-center {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
z-index: 30;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 0.4rem;
|
|
padding: 1.2rem 1.6rem;
|
|
border-radius: 0.6rem;
|
|
color: #fff;
|
|
background: rgba(34,38,45,0.94);
|
|
box-shadow: 0 0.5rem 1.5rem rgba(0,0,0,0.18);
|
|
}
|
|
.group-toast-center .material-icons { font-size: 2rem; }
|
|
|
|
/* Dropdown menu anchored under group-files' header "+" button, docs/images/群文件-上传状态.png --
|
|
unlike .group-upload-sources (a full-width bottom bar used elsewhere), this is a small popover. */
|
|
.group-upload-menu {
|
|
position: absolute;
|
|
top: 3.4rem;
|
|
right: max(1rem, calc((100% - 50rem) / 2 + 1rem));
|
|
z-index: 20;
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-width: 9rem;
|
|
padding: 0.4rem 0;
|
|
border-radius: 0.5rem;
|
|
background: rgba(34,38,45,0.94);
|
|
box-shadow: 0 0.5rem 1.5rem rgba(0,0,0,0.18);
|
|
}
|
|
.group-upload-menu button {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.6rem;
|
|
padding: 0.6rem 1rem;
|
|
border: 0;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: transparent;
|
|
text-align: left;
|
|
text-transform: none;
|
|
font-size: 0.85rem;
|
|
}
|
|
.group-upload-menu .material-icons { font-size: 1.1rem; }
|
|
|
|
.group-member-picker {
|
|
width: min(100%, 50rem);
|
|
margin: 0 auto;
|
|
background: #fff;
|
|
}
|
|
|
|
.group-member-picker > button {
|
|
display: grid;
|
|
grid-template-columns: 3rem minmax(0, 1fr) 1.5rem;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
width: 100%;
|
|
min-height: 4.5rem;
|
|
margin: 0;
|
|
padding: 0.6rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #30353c;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.group-member-picker > button > span:nth-child(2) {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.group-member-picker small {
|
|
margin-top: 0.2rem;
|
|
color: #9299a2;
|
|
}
|
|
|
|
.group-check {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 1.4rem;
|
|
height: 1.4rem;
|
|
border: 1px solid #c8cdd3;
|
|
border-radius: 50%;
|
|
color: #fff;
|
|
}
|
|
|
|
.group-check.checked {
|
|
border-color: #398afa;
|
|
background: #398afa;
|
|
}
|
|
|
|
.group-check .material-icons {
|
|
font-size: 0.95rem;
|
|
}
|
|
|
|
.group-file-list {
|
|
width: min(100%, 54rem);
|
|
margin: 0 auto;
|
|
background: #fff;
|
|
}
|
|
|
|
.group-file-list article {
|
|
display: grid;
|
|
grid-template-columns: 3rem minmax(0, 1fr) 2.5rem;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
min-height: 5rem;
|
|
padding: 0.7rem 1rem;
|
|
border-bottom: 1px solid #eceef1;
|
|
}
|
|
|
|
.group-file-type {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3rem;
|
|
height: 3.4rem;
|
|
border-radius: 0.3rem;
|
|
color: #fff;
|
|
background: #e54b68;
|
|
font-size: 0.7rem;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.group-file-list article > div {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.group-file-list strong {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.group-file-list small {
|
|
margin-top: 0.3rem;
|
|
color: #9299a2;
|
|
font-size: 0.74rem;
|
|
}
|
|
|
|
.group-file-list progress {
|
|
width: 100%;
|
|
height: 0.3rem;
|
|
margin-top: 0.4rem;
|
|
accent-color: #398afa;
|
|
}
|
|
|
|
.group-file-list button {
|
|
width: 2.5rem;
|
|
min-width: 2.5rem;
|
|
height: 2.5rem;
|
|
min-height: 2.5rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #5f6872;
|
|
background: transparent;
|
|
}
|
|
|
|
.group-upload-sources {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
flex: none;
|
|
min-height: 6rem;
|
|
padding: 0.7rem max(1rem, calc((100% - 36rem) / 2)) max(0.7rem, env(safe-area-inset-bottom));
|
|
border-top: 1px solid #e2e5e9;
|
|
background: #fff;
|
|
}
|
|
|
|
.group-upload-sources button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 100%;
|
|
min-width: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #5c6570;
|
|
background: transparent;
|
|
flex-direction: column;
|
|
text-transform: none;
|
|
}
|
|
|
|
.group-upload-sources .material-icons {
|
|
margin-bottom: 0.35rem;
|
|
color: #398afa;
|
|
font-size: 1.7rem;
|
|
}
|
|
|
|
/* Content library, secure downloads, and conversation search. */
|
|
#sidepanel.content-library-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
color-scheme: light;
|
|
color: #292e35;
|
|
background: #f5f6f8;
|
|
}
|
|
|
|
.content-library-panel * {
|
|
box-sizing: border-box;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.library-page {
|
|
display: flex;
|
|
position: relative;
|
|
width: 100%;
|
|
min-height: 100%;
|
|
overflow: hidden;
|
|
flex-direction: column;
|
|
background: #f5f6f8;
|
|
}
|
|
|
|
.library-header {
|
|
display: grid;
|
|
z-index: 3;
|
|
grid-template-columns: 4.5rem minmax(0, 1fr) 4.5rem;
|
|
align-items: center;
|
|
flex: none;
|
|
min-height: 4.5rem;
|
|
padding-top: env(safe-area-inset-top);
|
|
border-bottom: 1px solid #e9ebee;
|
|
background: #fff;
|
|
}
|
|
|
|
.library-header h1 {
|
|
margin: 0;
|
|
overflow: hidden;
|
|
font-size: 1.15rem;
|
|
text-align: center;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.library-header > button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 100%;
|
|
min-width: 0;
|
|
height: 3.2rem;
|
|
min-height: 3.2rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #2e333a;
|
|
background: transparent;
|
|
}
|
|
|
|
.library-header > button.text {
|
|
color: #247ee6;
|
|
font-size: 0.86rem;
|
|
text-transform: none;
|
|
}
|
|
|
|
.library-search {
|
|
display: flex;
|
|
align-items: center;
|
|
flex: none;
|
|
height: 2.8rem;
|
|
margin: 0.8rem max(1rem, calc((100% - 52rem) / 2));
|
|
padding: 0 0.75rem;
|
|
border-radius: 0.35rem;
|
|
color: #9299a2;
|
|
background: #fff;
|
|
}
|
|
|
|
.library-search .material-icons {
|
|
font-size: 1.2rem;
|
|
}
|
|
|
|
.library-search input {
|
|
width: 100%;
|
|
min-width: 0;
|
|
height: 100%;
|
|
margin: 0;
|
|
padding: 0 0.5rem;
|
|
border: 0;
|
|
box-shadow: none;
|
|
background: transparent;
|
|
}
|
|
|
|
.library-avatar {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3rem;
|
|
height: 3rem;
|
|
overflow: hidden;
|
|
flex: 0 0 3rem;
|
|
border-radius: 0.45rem;
|
|
color: #fff;
|
|
background: #4389df;
|
|
}
|
|
|
|
.library-avatar img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.library-type-tabs,
|
|
.library-history-tabs {
|
|
display: flex;
|
|
width: min(100%, 52rem);
|
|
min-height: 2.9rem;
|
|
margin: 0 auto;
|
|
overflow-x: auto;
|
|
flex: none;
|
|
border-bottom: 1px solid #e4e7eb;
|
|
background: #fff;
|
|
scrollbar-width: none;
|
|
}
|
|
|
|
.library-type-tabs button,
|
|
.library-history-tabs button {
|
|
min-width: 4.3rem;
|
|
min-height: 2.9rem;
|
|
margin: 0;
|
|
padding: 0 0.8rem;
|
|
border: 0;
|
|
border-bottom: 2px solid transparent;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #747c86;
|
|
background: transparent;
|
|
font-size: 0.8rem;
|
|
text-transform: none;
|
|
}
|
|
|
|
.library-type-tabs button.active,
|
|
.library-history-tabs button.active {
|
|
border-bottom-color: #398afa;
|
|
color: #247ee6;
|
|
}
|
|
|
|
.library-favorite-list,
|
|
.library-history-content {
|
|
width: min(100%, 52rem);
|
|
min-height: 0;
|
|
margin: 0 auto;
|
|
overflow-y: auto;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.library-favorite-item {
|
|
display: flex;
|
|
gap: 0.7rem;
|
|
padding: 0.9rem 1rem;
|
|
border-bottom: 1px solid #eceef1;
|
|
background: #fff;
|
|
}
|
|
|
|
.library-favorite-item.selecting {
|
|
align-items: center;
|
|
}
|
|
|
|
.library-favorite-content {
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.library-favorite-content > footer {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto 2rem;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
margin-top: 0.65rem;
|
|
color: #9299a2;
|
|
font-size: 0.72rem;
|
|
}
|
|
|
|
.library-favorite-content > footer span {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.library-favorite-content > footer button {
|
|
width: 2rem;
|
|
min-width: 2rem;
|
|
height: 2rem;
|
|
min-height: 2rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #7d858e;
|
|
background: transparent;
|
|
}
|
|
|
|
.library-text-content {
|
|
margin: 0;
|
|
color: #343941;
|
|
font-size: 0.94rem;
|
|
line-height: 1.65;
|
|
}
|
|
|
|
.library-file-card {
|
|
display: grid;
|
|
grid-template-columns: 3rem minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
width: 100%;
|
|
min-height: 4.8rem;
|
|
margin: 0;
|
|
padding: 0.7rem;
|
|
border: 1px solid #eceef1;
|
|
border-radius: 0.4rem;
|
|
box-shadow: none;
|
|
color: #30353c;
|
|
background: #fafbfc;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.library-file-card > span,
|
|
.library-download-icon {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3rem;
|
|
height: 3.4rem;
|
|
border-radius: 0.3rem;
|
|
color: #fff;
|
|
background: #e54b68;
|
|
font-size: 0.7rem;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.library-file-card > div {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.library-file-card strong {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.library-file-card small {
|
|
margin-top: 0.3rem;
|
|
color: #9299a2;
|
|
font-size: 0.74rem;
|
|
}
|
|
|
|
.library-file-card.removed {
|
|
opacity: 0.65;
|
|
}
|
|
|
|
.library-file-card em {
|
|
color: #d74a53;
|
|
font-size: 0.74rem;
|
|
font-style: normal;
|
|
}
|
|
|
|
.library-voice-card {
|
|
display: grid;
|
|
grid-template-columns: 2rem minmax(4rem, 12rem) auto;
|
|
align-items: center;
|
|
gap: 0.6rem;
|
|
width: min(100%, 20rem);
|
|
min-height: 3.2rem;
|
|
margin: 0;
|
|
padding: 0 0.8rem;
|
|
border: 0;
|
|
border-radius: 0.4rem;
|
|
box-shadow: none;
|
|
color: #343a42;
|
|
background: #eef5ff;
|
|
}
|
|
|
|
.library-voice-card.playing {
|
|
color: #fff;
|
|
background: #398afa;
|
|
}
|
|
|
|
.library-voice-card .material-icons {
|
|
font-size: 1.6rem;
|
|
}
|
|
|
|
.library-wave {
|
|
height: 1rem;
|
|
opacity: 0.55;
|
|
background: repeating-linear-gradient(90deg, currentColor 0 2px, transparent 2px 5px);
|
|
}
|
|
|
|
.library-link-card {
|
|
display: grid;
|
|
grid-template-columns: 5.2rem minmax(0, 1fr);
|
|
gap: 0.8rem;
|
|
width: 100%;
|
|
min-height: 5.8rem;
|
|
margin: 0;
|
|
padding: 0.7rem;
|
|
border: 1px solid #eceef1;
|
|
border-radius: 0.4rem;
|
|
box-shadow: none;
|
|
color: #30353c;
|
|
background: #fafbfc;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.library-link-card > img {
|
|
width: 5.2rem;
|
|
height: 4.5rem;
|
|
border-radius: 0.3rem;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.library-link-card > div {
|
|
min-width: 0;
|
|
}
|
|
|
|
.library-link-card strong,
|
|
.library-link-card p {
|
|
display: block;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.library-link-card p {
|
|
margin: 0.35rem 0;
|
|
color: #7e858f;
|
|
font-size: 0.76rem;
|
|
}
|
|
|
|
.library-link-card small {
|
|
display: flex;
|
|
align-items: center;
|
|
color: #9aa0a8;
|
|
}
|
|
|
|
.library-link-card small .material-icons {
|
|
margin-right: 0.25rem;
|
|
font-size: 0.95rem;
|
|
}
|
|
|
|
.library-media-thumb {
|
|
position: relative;
|
|
width: 11rem;
|
|
height: auto;
|
|
aspect-ratio: 4 / 3;
|
|
min-height: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
overflow: hidden;
|
|
border: 0;
|
|
border-radius: 0.4rem;
|
|
box-shadow: none;
|
|
background: #dfe3e8;
|
|
}
|
|
|
|
.library-media-thumb img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.library-media-thumb .material-icons {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
color: #fff;
|
|
font-size: 2.5rem;
|
|
filter: drop-shadow(0 2px 4px rgba(0,0,0,0.35));
|
|
transform: translate(-50%, -50%);
|
|
}
|
|
|
|
.library-media-thumb small {
|
|
position: absolute;
|
|
right: 0.4rem;
|
|
bottom: 0.3rem;
|
|
color: #fff;
|
|
}
|
|
|
|
.library-check {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 1.4rem;
|
|
min-width: 1.4rem;
|
|
height: 1.4rem;
|
|
min-height: 1.4rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 1px solid #c8cdd3;
|
|
border-radius: 50%;
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: #fff;
|
|
}
|
|
|
|
.library-check.checked {
|
|
border-color: #398afa;
|
|
background: #398afa;
|
|
}
|
|
|
|
.library-check .material-icons {
|
|
font-size: 0.95rem;
|
|
}
|
|
|
|
.library-empty {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 20rem;
|
|
color: #969da6;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.library-empty .material-icons {
|
|
margin-bottom: 0.7rem;
|
|
color: #b5bbc2;
|
|
font-size: 3.5rem;
|
|
}
|
|
|
|
.library-batch-bar {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, 1fr);
|
|
flex: none;
|
|
min-height: 4.5rem;
|
|
padding-bottom: env(safe-area-inset-bottom);
|
|
border-top: 1px solid #e2e5e9;
|
|
background: #fff;
|
|
}
|
|
|
|
.library-batch-bar button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 4.2rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #555e68;
|
|
background: transparent;
|
|
flex-direction: column;
|
|
text-transform: none;
|
|
}
|
|
|
|
.library-batch-bar button[disabled] {
|
|
color: #b6bbc2;
|
|
}
|
|
|
|
.library-batch-bar span {
|
|
margin-top: 0.2rem;
|
|
font-size: 0.72rem;
|
|
}
|
|
|
|
.library-section-title {
|
|
width: min(100%, 52rem);
|
|
margin: 0 auto;
|
|
padding: 0.55rem 1rem;
|
|
color: #8a929b;
|
|
font-size: 0.78rem;
|
|
}
|
|
|
|
.library-target-list {
|
|
width: min(100%, 52rem);
|
|
min-height: 0;
|
|
margin: 0 auto;
|
|
overflow-y: auto;
|
|
flex: 1 1 auto;
|
|
background: #fff;
|
|
}
|
|
|
|
.library-target-list > button {
|
|
display: grid;
|
|
grid-template-columns: 3rem minmax(0, 1fr) 1.5rem;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
width: 100%;
|
|
min-height: 4.5rem;
|
|
margin: 0;
|
|
padding: 0.6rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #30353c;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.library-target-list > button > span:nth-child(2) {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.library-target-list small {
|
|
margin-top: 0.2rem;
|
|
color: #9299a2;
|
|
}
|
|
|
|
.library-next-bar {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
flex: none;
|
|
min-height: 4.3rem;
|
|
padding: 0.6rem max(1rem, calc((100% - 50rem) / 2));
|
|
border-top: 1px solid #e2e5e9;
|
|
color: #777f89;
|
|
background: #fff;
|
|
}
|
|
|
|
.library-next-bar button,
|
|
.library-share-confirm > button,
|
|
.library-primary {
|
|
width: auto;
|
|
min-width: 5rem;
|
|
min-height: 2.8rem;
|
|
margin: 0;
|
|
padding: 0 1rem;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: #398afa;
|
|
text-transform: none;
|
|
}
|
|
|
|
.library-next-bar button[disabled] {
|
|
background: #b7c9df;
|
|
}
|
|
|
|
.library-share-confirm {
|
|
width: min(100%, 42rem);
|
|
margin: 0 auto;
|
|
padding: 1.2rem;
|
|
}
|
|
|
|
.library-share-confirm h2 {
|
|
margin: 0 0 0.8rem;
|
|
font-size: 0.92rem;
|
|
}
|
|
|
|
.library-target-summary {
|
|
display: flex;
|
|
gap: 1rem;
|
|
padding: 1rem;
|
|
overflow-x: auto;
|
|
background: #fff;
|
|
}
|
|
|
|
.library-target-summary > span {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 4rem;
|
|
flex: 0 0 4rem;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.library-target-summary small {
|
|
width: 100%;
|
|
margin-top: 0.3rem;
|
|
overflow: hidden;
|
|
text-align: center;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.library-share-confirm > section {
|
|
margin-top: 1rem;
|
|
padding: 1rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.library-share-confirm > section p {
|
|
margin-bottom: 0;
|
|
color: #858d96;
|
|
font-size: 0.76rem;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.library-share-confirm textarea {
|
|
width: 100%;
|
|
min-height: 5rem;
|
|
margin: 1rem 0;
|
|
padding: 0.8rem;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
background: #fff;
|
|
resize: vertical;
|
|
}
|
|
|
|
.library-share-confirm > button {
|
|
width: 100%;
|
|
}
|
|
|
|
.library-download {
|
|
width: min(100%, 36rem);
|
|
margin: 0 auto;
|
|
padding: 2.5rem 1.2rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.library-download-icon {
|
|
width: 5rem;
|
|
height: 5.8rem;
|
|
margin: 0 auto 1rem;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.library-download h2 {
|
|
margin: 0;
|
|
overflow-wrap: anywhere;
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
.library-download > p {
|
|
color: #8a929b;
|
|
}
|
|
|
|
.library-download dl {
|
|
margin: 1.5rem 0;
|
|
padding: 0 1rem;
|
|
background: #fff;
|
|
text-align: left;
|
|
}
|
|
|
|
.library-download dl > div {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding: 0.8rem 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
}
|
|
|
|
.library-download dt,
|
|
.library-download dd {
|
|
margin: 0;
|
|
}
|
|
|
|
.library-download dd {
|
|
color: #777f89;
|
|
}
|
|
|
|
.library-primary {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 100%;
|
|
}
|
|
|
|
.library-primary .material-icons {
|
|
margin-right: 0.4rem;
|
|
}
|
|
|
|
.library-download-progress {
|
|
margin: 1.5rem 0;
|
|
padding: 1rem;
|
|
background: #fff;
|
|
text-align: left;
|
|
}
|
|
|
|
.library-download-progress > div {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.library-download-progress progress {
|
|
width: 100%;
|
|
height: 0.45rem;
|
|
margin: 0.8rem 0 0.4rem;
|
|
accent-color: #398afa;
|
|
}
|
|
|
|
.library-download-progress small {
|
|
color: #9299a2;
|
|
}
|
|
|
|
.library-download-actions {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 0.8rem;
|
|
}
|
|
|
|
.library-download-actions button {
|
|
min-height: 2.9rem;
|
|
margin: 0;
|
|
border: 1px solid #dce0e5;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #555e68;
|
|
background: #fff;
|
|
text-transform: none;
|
|
}
|
|
|
|
.library-download-actions button.primary {
|
|
border-color: #398afa;
|
|
color: #fff;
|
|
background: #398afa;
|
|
}
|
|
|
|
.library-download-actions .material-icons {
|
|
margin-right: 0.35rem;
|
|
font-size: 1.1rem;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.library-complete {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.7rem;
|
|
margin: 1.5rem 0;
|
|
padding: 1rem;
|
|
color: #257c58;
|
|
background: #eaf8f1;
|
|
text-align: left;
|
|
}
|
|
|
|
.library-complete > .material-icons {
|
|
font-size: 2rem;
|
|
}
|
|
|
|
.library-complete > span {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.library-complete small {
|
|
margin-top: 0.2rem;
|
|
color: #65917d;
|
|
}
|
|
|
|
.library-message-results > button {
|
|
display: grid;
|
|
grid-template-columns: 3rem minmax(0, 1fr) 1.5rem;
|
|
align-items: start;
|
|
gap: 0.8rem;
|
|
width: 100%;
|
|
min-height: 5.5rem;
|
|
margin: 0;
|
|
padding: 0.8rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #30353c;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.library-message-results > button > span {
|
|
min-width: 0;
|
|
}
|
|
|
|
.library-message-results p {
|
|
margin: 0.3rem 0;
|
|
color: #666e78;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.library-message-results mark {
|
|
padding: 0 0.08rem;
|
|
color: #1f66b8;
|
|
background: #dcecff;
|
|
}
|
|
|
|
.library-message-results small {
|
|
color: #969da5;
|
|
}
|
|
|
|
.library-record-files,
|
|
.library-record-links {
|
|
padding: 0.8rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.library-record-files .library-file-card,
|
|
.library-record-links .library-link-card {
|
|
margin-bottom: 0.7rem;
|
|
}
|
|
|
|
.library-date-title {
|
|
margin: 0;
|
|
padding: 0.7rem 0.8rem;
|
|
color: #828a94;
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
.library-media-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, 1fr);
|
|
gap: 0.35rem;
|
|
padding: 0 0.8rem 1rem;
|
|
}
|
|
|
|
.library-media-grid button {
|
|
position: relative;
|
|
width: 100%;
|
|
height: auto;
|
|
min-height: 0;
|
|
aspect-ratio: 1;
|
|
margin: 0;
|
|
padding: 0;
|
|
overflow: hidden;
|
|
border: 0;
|
|
border-radius: 0.25rem;
|
|
box-shadow: none;
|
|
background: #dfe3e8;
|
|
}
|
|
|
|
.library-media-grid img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.library-media-grid .material-icons {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
color: #fff;
|
|
font-size: 2.2rem;
|
|
filter: drop-shadow(0 2px 4px rgba(0,0,0,0.35));
|
|
transform: translate(-50%, -50%);
|
|
}
|
|
|
|
.library-media-grid small {
|
|
position: absolute;
|
|
right: 0.3rem;
|
|
bottom: 0.2rem;
|
|
color: #fff;
|
|
font-size: 0.65rem;
|
|
}
|
|
|
|
/* Android call experience and call records. */
|
|
#sidepanel.call-experience-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
color-scheme: light;
|
|
background: #11151a;
|
|
}
|
|
|
|
.call-experience-panel * {
|
|
box-sizing: border-box;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.call-history-page,
|
|
.call-minimized-page {
|
|
display: flex;
|
|
position: relative;
|
|
width: 100%;
|
|
min-height: 100%;
|
|
overflow: hidden;
|
|
color: #252a31;
|
|
background: #f5f6f8;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.call-history-page > header,
|
|
.call-chat-preview-header {
|
|
display: grid;
|
|
grid-template-columns: 3.8rem minmax(0, 1fr) 3.8rem;
|
|
align-items: center;
|
|
flex: none;
|
|
min-height: 4.5rem;
|
|
padding-top: env(safe-area-inset-top);
|
|
border-bottom: 1px solid #e8eaed;
|
|
background: #fff;
|
|
}
|
|
|
|
.call-history-page > header h1 {
|
|
margin: 0;
|
|
font-size: 1.15rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.call-history-page > header button,
|
|
.call-chat-preview-header button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 100%;
|
|
min-width: 0;
|
|
height: 3.2rem;
|
|
min-height: 3.2rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #30353c;
|
|
background: transparent;
|
|
}
|
|
|
|
.call-history-page > main {
|
|
width: min(100%, 48rem);
|
|
min-height: 0;
|
|
margin: 0 auto;
|
|
overflow-y: auto;
|
|
flex: 1 1 auto;
|
|
background: #fff;
|
|
}
|
|
|
|
.call-record {
|
|
display: grid;
|
|
grid-template-columns: 2.5rem minmax(0, 1fr) auto 1.5rem;
|
|
align-items: center;
|
|
gap: 0.7rem;
|
|
width: 100%;
|
|
min-height: 4.5rem;
|
|
margin: 0;
|
|
padding: 0.65rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #30353c;
|
|
background: #fff;
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
|
|
.call-record > .material-icons:first-child {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 2.5rem;
|
|
height: 2.5rem;
|
|
border-radius: 50%;
|
|
color: #257a58;
|
|
background: #e9f7f0;
|
|
}
|
|
|
|
.call-record.missed > .material-icons:first-child,
|
|
.call-record.declined > .material-icons:first-child,
|
|
.call-record.busy > .material-icons:first-child {
|
|
color: #d84850;
|
|
background: #fdecee;
|
|
}
|
|
|
|
.call-record > span {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.call-record small {
|
|
margin-top: 0.2rem;
|
|
color: #858d96;
|
|
}
|
|
|
|
.call-record.missed small,
|
|
.call-record.declined small,
|
|
.call-record.busy small {
|
|
color: #d84850;
|
|
}
|
|
|
|
.call-record time {
|
|
color: #969da5;
|
|
font-size: 0.72rem;
|
|
}
|
|
|
|
.call-record > .material-icons:last-child {
|
|
color: #8d949d;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.call-history-page > footer {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 0.8rem;
|
|
width: min(100%, 48rem);
|
|
min-height: 4.8rem;
|
|
margin: 0 auto;
|
|
padding: 0.7rem 1rem max(0.7rem, env(safe-area-inset-bottom));
|
|
border-top: 1px solid #e2e5e9;
|
|
background: #fff;
|
|
}
|
|
|
|
.call-history-page > footer button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 3rem;
|
|
margin: 0;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: #277f5a;
|
|
text-transform: none;
|
|
}
|
|
|
|
.call-history-page > footer button:last-child {
|
|
background: #347fd7;
|
|
}
|
|
|
|
.call-history-page > footer .material-icons {
|
|
margin-right: 0.4rem;
|
|
font-size: 1.2rem;
|
|
}
|
|
|
|
.call-fullscreen {
|
|
display: flex;
|
|
position: relative;
|
|
width: 100%;
|
|
min-height: 100%;
|
|
overflow: hidden;
|
|
color: #fff;
|
|
background: #171c22;
|
|
flex-direction: column;
|
|
isolation: isolate;
|
|
}
|
|
|
|
.call-audio-surface {
|
|
background: #26323b;
|
|
}
|
|
|
|
.call-ambient {
|
|
position: absolute;
|
|
z-index: -2;
|
|
inset: -2rem;
|
|
background: linear-gradient(160deg, #34444f 0%, #202931 52%, #151a20 100%);
|
|
}
|
|
|
|
.call-audio-surface::after {
|
|
content: '';
|
|
position: absolute;
|
|
z-index: -1;
|
|
inset: 0;
|
|
opacity: 0.12;
|
|
background-image: url('../img/bkg/p09.jpg');
|
|
background-position: center;
|
|
background-size: cover;
|
|
filter: blur(24px);
|
|
transform: scale(1.12);
|
|
}
|
|
|
|
.call-fullscreen.incoming-call-overlay {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
/* Must clear every other in-app overlay (headers/toasts go up to z-index:100) so a call always covers the screen. */
|
|
z-index: 200;
|
|
}
|
|
|
|
.incoming-call-photo-blur {
|
|
position: absolute;
|
|
z-index: -1;
|
|
inset: 0;
|
|
opacity: 0.12;
|
|
background-image: var(--incoming-call-photo);
|
|
background-position: center;
|
|
background-size: cover;
|
|
filter: blur(24px);
|
|
transform: scale(1.12);
|
|
}
|
|
|
|
.call-product-header {
|
|
display: grid;
|
|
z-index: 4;
|
|
grid-template-columns: 4rem minmax(0, 1fr) 4rem;
|
|
align-items: center;
|
|
flex: none;
|
|
min-height: 4.8rem;
|
|
padding-top: env(safe-area-inset-top);
|
|
}
|
|
|
|
.call-product-header > button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 100%;
|
|
min-width: 0;
|
|
height: 3.4rem;
|
|
min-height: 3.4rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: rgba(255,255,255,0.92);
|
|
background: transparent;
|
|
}
|
|
|
|
.call-product-header > span {
|
|
color: rgba(255,255,255,0.7);
|
|
font-size: 0.74rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.call-peer-card {
|
|
display: flex;
|
|
z-index: 2;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 0;
|
|
padding: 1rem;
|
|
flex: 1 1 auto;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.call-product-avatar {
|
|
display: block;
|
|
width: 7.5rem;
|
|
height: 7.5rem;
|
|
overflow: hidden;
|
|
border: 2px solid rgba(255,255,255,0.4);
|
|
border-radius: 50%;
|
|
box-shadow: 0 1rem 2.5rem rgba(0,0,0,0.25);
|
|
}
|
|
|
|
.call-product-avatar.small {
|
|
width: 3rem;
|
|
height: 3rem;
|
|
}
|
|
|
|
.call-product-avatar img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.call-peer-card h1 {
|
|
margin: 1.3rem 0 0.45rem;
|
|
color: #fff;
|
|
font-size: 1.55rem;
|
|
}
|
|
|
|
.call-peer-card p {
|
|
margin: 0;
|
|
color: rgba(255,255,255,0.78);
|
|
font-size: 0.92rem;
|
|
}
|
|
|
|
.call-peer-card .call-network {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-top: 0.65rem;
|
|
color: rgba(255,255,255,0.62);
|
|
}
|
|
|
|
.call-network i {
|
|
width: 0.45rem;
|
|
height: 0.45rem;
|
|
margin-right: 0.35rem;
|
|
border-radius: 50%;
|
|
background: #43d38c;
|
|
}
|
|
|
|
.call-ringing-dots {
|
|
display: flex;
|
|
gap: 0.35rem;
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
.call-ringing-dots i {
|
|
width: 0.4rem;
|
|
height: 0.4rem;
|
|
border-radius: 50%;
|
|
background: rgba(255,255,255,0.65);
|
|
animation: call-dot 1.2s infinite ease-in-out;
|
|
}
|
|
|
|
.call-ringing-dots i:nth-child(2) {
|
|
animation-delay: 0.15s;
|
|
}
|
|
|
|
.call-ringing-dots i:nth-child(3) {
|
|
animation-delay: 0.3s;
|
|
}
|
|
|
|
@keyframes call-dot {
|
|
0%, 70%, 100% { transform: translateY(0); opacity: 0.45; }
|
|
35% { transform: translateY(-0.35rem); opacity: 1; }
|
|
}
|
|
|
|
.call-incoming-actions,
|
|
.call-active-controls,
|
|
.call-single-action,
|
|
.call-video-controls {
|
|
display: flex;
|
|
z-index: 4;
|
|
align-items: flex-start;
|
|
justify-content: space-evenly;
|
|
flex: none;
|
|
min-height: 8rem;
|
|
padding: 1rem max(1rem, calc((100% - 34rem) / 2)) max(1.5rem, env(safe-area-inset-bottom));
|
|
}
|
|
|
|
.call-single-action {
|
|
justify-content: center;
|
|
}
|
|
|
|
.call-control {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 5rem;
|
|
min-width: 5rem;
|
|
height: auto;
|
|
min-height: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: rgba(255,255,255,0.78);
|
|
background: transparent;
|
|
flex-direction: column;
|
|
text-transform: none;
|
|
}
|
|
|
|
.call-control > span {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3.7rem;
|
|
height: 3.7rem;
|
|
border-radius: 50%;
|
|
color: #fff;
|
|
background: rgba(255,255,255,0.16);
|
|
backdrop-filter: blur(8px);
|
|
}
|
|
|
|
.call-control.active > span {
|
|
color: #22272d;
|
|
background: #fff;
|
|
}
|
|
|
|
.call-control.danger > span {
|
|
color: #fff;
|
|
background: #e3464f;
|
|
}
|
|
|
|
.call-control .material-icons {
|
|
font-size: 1.55rem;
|
|
}
|
|
|
|
.call-control small {
|
|
width: 100%;
|
|
margin-top: 0.5rem;
|
|
color: inherit;
|
|
font-size: 0.7rem;
|
|
line-height: 1.2;
|
|
text-align: center;
|
|
}
|
|
|
|
.call-incoming-actions .call-control:last-child > span {
|
|
background: #2ab56f;
|
|
}
|
|
|
|
.call-video-surface {
|
|
background: #11151a;
|
|
}
|
|
|
|
.call-video-backdrop,
|
|
.call-video-off {
|
|
position: absolute;
|
|
z-index: -2;
|
|
inset: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.call-video-backdrop {
|
|
object-fit: cover;
|
|
}
|
|
|
|
.call-video-off {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background: #252f37;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.call-video-off .call-product-avatar {
|
|
width: 7rem;
|
|
height: 7rem;
|
|
}
|
|
|
|
.call-video-off strong {
|
|
margin-top: 1.2rem;
|
|
}
|
|
|
|
.call-video-off small {
|
|
margin-top: 0.35rem;
|
|
color: rgba(255,255,255,0.68);
|
|
}
|
|
|
|
.call-video-off.local {
|
|
background: #20272e;
|
|
}
|
|
|
|
.call-video-shade {
|
|
position: absolute;
|
|
z-index: -1;
|
|
inset: 0;
|
|
background: linear-gradient(180deg, rgba(0,0,0,0.42), transparent 30%, transparent 62%, rgba(0,0,0,0.58));
|
|
}
|
|
|
|
.call-video-status {
|
|
z-index: 2;
|
|
text-align: center;
|
|
}
|
|
|
|
.call-video-status h1 {
|
|
margin: 0.4rem 0 0.25rem;
|
|
color: #fff;
|
|
font-size: 1.25rem;
|
|
}
|
|
|
|
.call-video-status p {
|
|
margin: 0;
|
|
color: rgba(255,255,255,0.8);
|
|
}
|
|
|
|
.call-video-controls {
|
|
margin-top: auto;
|
|
}
|
|
|
|
.call-local-preview {
|
|
position: absolute;
|
|
z-index: 3;
|
|
top: max(6.2rem, calc(env(safe-area-inset-top) + 5rem));
|
|
right: 1rem;
|
|
width: 7rem;
|
|
min-width: 7rem;
|
|
height: auto;
|
|
min-height: 0;
|
|
aspect-ratio: 3 / 4;
|
|
margin: 0;
|
|
padding: 0;
|
|
overflow: hidden;
|
|
border: 1px solid rgba(255,255,255,0.35);
|
|
border-radius: 0.4rem;
|
|
box-shadow: 0 0.5rem 1.2rem rgba(0,0,0,0.3);
|
|
background: #252c33;
|
|
}
|
|
|
|
.call-local-preview img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.call-local-preview .material-icons {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
color: #fff;
|
|
transform: translate(-50%, -50%);
|
|
}
|
|
|
|
.call-toast {
|
|
position: fixed;
|
|
z-index: 50;
|
|
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(24,28,34,0.94);
|
|
text-align: center;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
.call-chat-preview-header > div {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.call-chat-preview-header small {
|
|
margin-top: 0.15rem;
|
|
color: #37a66d;
|
|
}
|
|
|
|
.call-minimized-page > main {
|
|
min-height: 0;
|
|
padding: 1.5rem max(1rem, calc((100% - 52rem) / 2));
|
|
overflow-y: auto;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.call-chat-preview-message {
|
|
width: fit-content;
|
|
max-width: 70%;
|
|
padding: 0.7rem 0.9rem;
|
|
border-radius: 0.4rem;
|
|
background: #fff;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.call-chat-composer {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) 3rem;
|
|
align-items: center;
|
|
flex: none;
|
|
min-height: 4rem;
|
|
padding: 0.5rem max(0.7rem, calc((100% - 52rem) / 2));
|
|
border-top: 1px solid #e2e5e9;
|
|
background: #fff;
|
|
}
|
|
|
|
.call-chat-composer input {
|
|
height: 2.7rem;
|
|
margin: 0;
|
|
padding: 0 0.7rem;
|
|
border: 1px solid #e1e4e8;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
background: #f7f8f9;
|
|
}
|
|
|
|
.call-chat-composer button {
|
|
width: 3rem;
|
|
min-width: 3rem;
|
|
height: 2.7rem;
|
|
min-height: 2.7rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
background: transparent;
|
|
}
|
|
|
|
.call-floating-window {
|
|
position: fixed;
|
|
z-index: 20;
|
|
top: 0;
|
|
left: 0;
|
|
width: 7.4rem;
|
|
min-width: 7.4rem;
|
|
height: auto;
|
|
min-height: 0;
|
|
aspect-ratio: 3 / 4;
|
|
margin: 0;
|
|
padding: 0;
|
|
overflow: hidden;
|
|
touch-action: none;
|
|
border: 1px solid rgba(255,255,255,0.6);
|
|
border-radius: 0.45rem;
|
|
box-shadow: 0 0.5rem 1.5rem rgba(0,0,0,0.28);
|
|
background: #20262c;
|
|
}
|
|
|
|
.call-floating-window img {
|
|
width: 100%;
|
|
height: 100%;
|
|
pointer-events: none;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.call-floating-window span {
|
|
position: absolute;
|
|
right: 0.4rem;
|
|
bottom: 0.35rem;
|
|
display: flex;
|
|
align-items: center;
|
|
color: #fff;
|
|
font-size: 0.68rem;
|
|
text-shadow: 0 1px 2px rgba(0,0,0,0.8);
|
|
}
|
|
|
|
.call-floating-window span i {
|
|
width: 0.4rem;
|
|
height: 0.4rem;
|
|
margin-right: 0.25rem;
|
|
border-radius: 50%;
|
|
background: #41d48d;
|
|
}
|
|
|
|
.call-mini-hangup {
|
|
position: fixed;
|
|
z-index: 21;
|
|
right: 1rem;
|
|
bottom: 5.2rem;
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3rem;
|
|
min-width: 3rem;
|
|
height: 3rem;
|
|
min-height: 3rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 50%;
|
|
box-shadow: 0 0.4rem 1rem rgba(0,0,0,0.2);
|
|
color: #fff;
|
|
background: #e3464f;
|
|
}
|
|
|
|
.compose-target-footer {
|
|
justify-content: space-between;
|
|
margin-top: auto;
|
|
color: #757d87;
|
|
font-size: 0.82rem;
|
|
}
|
|
|
|
.compose-forward-confirm {
|
|
width: min(100%, 40rem);
|
|
margin: 0 auto;
|
|
padding: 1.2rem;
|
|
}
|
|
|
|
.compose-forward-confirm > section,
|
|
.compose-forward-confirm textarea {
|
|
width: 100%;
|
|
margin-bottom: 1rem;
|
|
padding: 1rem;
|
|
border: 0;
|
|
border-radius: 0.45rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.compose-target-summary {
|
|
display: flex;
|
|
gap: 1rem;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.compose-target-summary > span {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 4rem;
|
|
flex: 0 0 4rem;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.compose-target-summary small {
|
|
width: 100%;
|
|
margin-top: 0.35rem;
|
|
overflow: hidden;
|
|
text-align: center;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.compose-forward-preview h2 {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.compose-forward-preview p {
|
|
margin: 0.45rem 0;
|
|
overflow: hidden;
|
|
color: #757c85;
|
|
font-size: 0.82rem;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.compose-forward-confirm textarea {
|
|
min-height: 5rem;
|
|
resize: vertical;
|
|
}
|
|
|
|
.compose-forward-mode {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 0.7rem;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.compose-forward-mode button {
|
|
min-height: 2.8rem;
|
|
margin: 0;
|
|
border: 1px solid #dce0e5;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #646c76;
|
|
background: #fff;
|
|
text-transform: none;
|
|
}
|
|
|
|
.compose-forward-mode button.active {
|
|
border-color: #398afa;
|
|
color: #287fe5;
|
|
background: #eef6ff;
|
|
}
|
|
|
|
.compose-confirm-send {
|
|
width: 100%;
|
|
min-height: 3rem;
|
|
margin: 0;
|
|
}
|
|
|
|
@keyframes fadein {
|
|
from {
|
|
bottom: 0;
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
bottom: 2rem;
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes fadeout {
|
|
from {
|
|
bottom: 2rem;
|
|
opacity: 1;
|
|
}
|
|
to {
|
|
bottom: 0;
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
/*
|
|
Very wide monitor.
|
|
*/
|
|
@media (min-width: 1440px){
|
|
#app-container {
|
|
max-width: 114rem;
|
|
}
|
|
}
|
|
|
|
/*
|
|
Mobile styles.
|
|
*/
|
|
|
|
@media (max-width: 960px) {
|
|
#mountPoint {
|
|
padding: 0;
|
|
}
|
|
|
|
.pinned {
|
|
width: 16rem;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
#app-container {
|
|
width: 100%;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
}
|
|
|
|
#sidepanel {
|
|
width: 100%;
|
|
}
|
|
|
|
#sidepanel.message-center-panel,
|
|
#sidepanel.message-center-panel.full-page {
|
|
width: 100%;
|
|
min-width: 0;
|
|
flex-basis: 100%;
|
|
}
|
|
|
|
#sidepanel.direct-message-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
}
|
|
|
|
#sidepanel.message-composer-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
}
|
|
|
|
#sidepanel.contact-management-panel,
|
|
#sidepanel.group-management-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
}
|
|
|
|
#sidepanel.content-library-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
}
|
|
|
|
#sidepanel.call-experience-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
}
|
|
|
|
.call-active-controls,
|
|
.call-video-controls {
|
|
padding-right: 0.35rem;
|
|
padding-left: 0.35rem;
|
|
}
|
|
|
|
.call-control {
|
|
width: 4.5rem;
|
|
min-width: 4.5rem;
|
|
}
|
|
|
|
.call-control > span {
|
|
width: 3.4rem;
|
|
height: 3.4rem;
|
|
}
|
|
|
|
.library-media-grid {
|
|
grid-template-columns: repeat(3, 1fr);
|
|
}
|
|
|
|
.library-link-card {
|
|
grid-template-columns: 4.3rem minmax(0, 1fr);
|
|
}
|
|
|
|
.library-link-card > img {
|
|
width: 4.3rem;
|
|
height: 4.3rem;
|
|
}
|
|
|
|
.people-request-list article,
|
|
.group-request-list article {
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.people-request-list article > span,
|
|
.group-request-list article > span {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.people-profile-actions {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.compose-emoji-panel > div {
|
|
grid-template-columns: repeat(7, 1fr);
|
|
}
|
|
|
|
.compose-picker-header {
|
|
grid-template-columns: 4rem minmax(0, 1fr) 4.5rem;
|
|
}
|
|
|
|
.compose-upload-page > main,
|
|
.compose-forward-confirm {
|
|
padding: 1rem;
|
|
}
|
|
|
|
.chat-product-timeline {
|
|
padding: 1.25rem 1rem;
|
|
}
|
|
|
|
.chat-message-stack {
|
|
max-width: calc(100% - 4rem);
|
|
}
|
|
|
|
.chat-bubble {
|
|
font-size: 0.94rem;
|
|
}
|
|
|
|
.chat-file-card {
|
|
min-width: min(17rem, calc(100vw - 6rem));
|
|
}
|
|
|
|
.chat-contact-card {
|
|
min-width: min(16rem, calc(100vw - 6rem));
|
|
}
|
|
|
|
.chat-composer {
|
|
padding-right: 0.4rem;
|
|
padding-left: 0.4rem;
|
|
}
|
|
|
|
.chat-attachment-panel {
|
|
grid-template-columns: repeat(4, 1fr);
|
|
gap: 0.7rem;
|
|
padding: 1rem 0.75rem max(1rem, env(safe-area-inset-bottom));
|
|
}
|
|
|
|
.chat-attachment-panel button > span {
|
|
width: 3.3rem;
|
|
height: 3.3rem;
|
|
}
|
|
|
|
.messages-conversation {
|
|
grid-template-columns: 3.55rem minmax(0, 1fr) auto;
|
|
min-height: 4.8rem;
|
|
padding-right: 1rem;
|
|
padding-left: 1rem;
|
|
}
|
|
|
|
.messages-frequent-scroll {
|
|
gap: 1rem;
|
|
padding-right: 1rem;
|
|
padding-left: 1rem;
|
|
}
|
|
|
|
.messages-frequent h2 {
|
|
margin-left: 1rem;
|
|
}
|
|
|
|
.messages-search {
|
|
margin-right: 1rem;
|
|
margin-left: 1rem;
|
|
}
|
|
|
|
.system-notification-list {
|
|
padding: 1rem;
|
|
}
|
|
|
|
.auth-landing {
|
|
padding-right: 1.25rem;
|
|
padding-left: 1.25rem;
|
|
}
|
|
|
|
.auth-brand {
|
|
margin-bottom: 3rem;
|
|
}
|
|
|
|
.auth-content {
|
|
padding: 1.25rem;
|
|
}
|
|
|
|
.auth-reset-content {
|
|
padding: 1rem 0;
|
|
}
|
|
|
|
.auth-list-form {
|
|
min-height: calc(100vh - 6.25rem);
|
|
}
|
|
|
|
.auth-list-form label {
|
|
grid-template-columns: 6.4rem 1fr auto;
|
|
}
|
|
|
|
.auth-code-button {
|
|
min-width: 5.8rem;
|
|
padding: 0 0.4rem;
|
|
}
|
|
|
|
.auth-realname-hero {
|
|
min-height: 12rem;
|
|
padding: 1.5rem;
|
|
}
|
|
|
|
.auth-realname-hero strong {
|
|
font-size: 2rem;
|
|
}
|
|
|
|
.auth-realname-hero > .material-icons {
|
|
font-size: 6rem;
|
|
}
|
|
|
|
.auth-realname-content form {
|
|
padding: 1.25rem;
|
|
}
|
|
|
|
.auth-realname-content label {
|
|
grid-template-columns: 6.2rem 1fr;
|
|
}
|
|
|
|
.auth-screenshot-grid {
|
|
grid-template-columns: repeat(3, 1fr);
|
|
}
|
|
|
|
#info-view {
|
|
width: 100%;
|
|
}
|
|
|
|
/* Bottom sheet rather than a dialog */
|
|
.forward-dialog {
|
|
border-radius: 0.3rem 0.3rem 0 0;
|
|
margin: auto 0 0 0;
|
|
width: 100%;
|
|
}
|
|
|
|
/* Must make it a bit visible on mobile because there is no :hover */
|
|
.menuTrigger {
|
|
opacity: 0.3;
|
|
}
|
|
|
|
#send-message-input {
|
|
/* Just an indicator that the screen is in mobile mode */
|
|
transition-property: -tinode-mobile;
|
|
}
|
|
|
|
#pinned-wrapper {
|
|
height: 3.5rem;
|
|
margin: 0.25rem;
|
|
}
|
|
|
|
.pinned {
|
|
width: unset;
|
|
}
|
|
|
|
#video-container.minimized {
|
|
flex-direction: row;
|
|
left: 0;
|
|
top: var(--caption-panel-height);
|
|
width: 100%;
|
|
height: 11rem;
|
|
border-radius: unset;
|
|
box-shadow: 0 0 0.5rem var(--clr-shadow-gray-strong);
|
|
}
|
|
|
|
#controls.minimized {
|
|
flex-direction: column;
|
|
row-gap: 0.5rem;
|
|
bottom: auto;
|
|
column-gap: unset;
|
|
right: 1rem;
|
|
}
|
|
|
|
.minimized .call-party {
|
|
border-radius: unset;
|
|
box-shadow: unset;
|
|
}
|
|
|
|
.call-party.self {
|
|
bottom: 8.5rem;
|
|
border-radius: unset;
|
|
}
|
|
}
|
|
|
|
/* Android personal profile, settings, privacy, youth mode and permissions. */
|
|
#sidepanel.personal-settings-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
color-scheme: light;
|
|
background: #f5f6f8;
|
|
}
|
|
|
|
.personal-settings-panel * {
|
|
box-sizing: border-box;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.personal-page {
|
|
display: flex;
|
|
position: relative;
|
|
width: 100%;
|
|
min-height: 100%;
|
|
overflow: hidden;
|
|
color: #262b31;
|
|
background: #f5f6f8;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.personal-page > .personal-page {
|
|
min-height: 0;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.personal-page button,
|
|
.personal-page input,
|
|
.personal-page textarea {
|
|
font: inherit;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.personal-page button {
|
|
text-transform: none;
|
|
}
|
|
|
|
.personal-page > main {
|
|
min-height: 0;
|
|
overflow-y: auto;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.personal-header {
|
|
display: grid;
|
|
grid-template-columns: 3.7rem minmax(0, 1fr) 3.7rem;
|
|
align-items: center;
|
|
min-height: 4.5rem;
|
|
padding-top: env(safe-area-inset-top);
|
|
border-bottom: 1px solid #e7e9ec;
|
|
background: #fff;
|
|
flex: none;
|
|
}
|
|
|
|
.personal-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;
|
|
}
|
|
|
|
.personal-header button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3.7rem;
|
|
min-width: 3.7rem;
|
|
height: 3.7rem;
|
|
min-height: 3.7rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #252a30;
|
|
background: transparent;
|
|
}
|
|
|
|
.personal-header button.text {
|
|
color: #2873d0;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.personal-header .material-icons {
|
|
font-size: 1.55rem;
|
|
}
|
|
|
|
.personal-toast {
|
|
position: fixed;
|
|
z-index: 90;
|
|
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(25,29,34,0.94);
|
|
text-align: center;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
.personal-center-page > main {
|
|
padding: 0.85rem 0;
|
|
}
|
|
|
|
.personal-center-page section,
|
|
.personal-menu-section,
|
|
.android-settings-list section,
|
|
.privacy-list section {
|
|
margin-bottom: 0.75rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.personal-identity {
|
|
display: grid;
|
|
grid-template-columns: 4.5rem minmax(0, 1fr) 1.5rem;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
width: calc(100% - 1.6rem);
|
|
min-height: 7rem;
|
|
margin: 0 0.8rem 0.8rem;
|
|
padding: 0.9rem;
|
|
border: 0;
|
|
border-radius: 0.45rem;
|
|
box-shadow: none;
|
|
color: #2e3339;
|
|
background: #fff;
|
|
text-align: left;
|
|
}
|
|
|
|
.personal-identity img {
|
|
width: 4.5rem;
|
|
height: 4.5rem;
|
|
border-radius: 0.55rem;
|
|
object-fit: cover;
|
|
}
|
|
|
|
/* No-avatar fallback: docs/images/我的.png only shows the real-photo state, so this is sized/shaped
|
|
to match `.personal-identity img` above rather than copied from a reference. Specificity has to
|
|
beat `.personal-identity span` below (class+element vs. this rule's two classes) or that rule's
|
|
`display: block` wins and silently drops the centering, leaving a tiny uncentered icon glyph --
|
|
same bug, and same fix, as .workbench-avatar-fallback. */
|
|
.personal-identity .personal-avatar-fallback {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 4.5rem;
|
|
height: 4.5rem;
|
|
border-radius: 0.55rem;
|
|
color: #fff;
|
|
background: #b0b6bd;
|
|
}
|
|
|
|
.personal-identity .personal-avatar-fallback .material-icons {
|
|
font-size: 2rem;
|
|
}
|
|
|
|
.personal-identity span,
|
|
.personal-identity strong,
|
|
.personal-identity small {
|
|
display: block;
|
|
min-width: 0;
|
|
}
|
|
|
|
.personal-identity strong {
|
|
margin-bottom: 0.35rem;
|
|
overflow: hidden;
|
|
font-size: 1.25rem;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.personal-identity small {
|
|
margin-top: 0.15rem;
|
|
color: #8a919a;
|
|
}
|
|
|
|
.personal-menu-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: 0.65rem;
|
|
width: 100%;
|
|
min-height: 4rem;
|
|
margin: 0;
|
|
padding: 0.65rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #30353b;
|
|
background: #fff;
|
|
text-align: left;
|
|
}
|
|
|
|
.personal-menu-row:has(> .material-icons:first-child) {
|
|
grid-template-columns: 2.3rem minmax(0, 1fr) auto;
|
|
}
|
|
|
|
.personal-menu-row:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
/* The generic button:hover/button:active rule (base.css ~2027) forces color to --clr-bright (white)
|
|
on every <button>, assuming a dark hover background -- true for .primary/.danger/.positive (already
|
|
white text) but not for a plain white row like this one, where it silently turns the label invisible
|
|
(white text on the still-white/light-gray hover background). Restate the row's own text color on
|
|
hover/active, and add a visible (if subtle) background shift so hovering isn't a no-op. */
|
|
.personal-menu-row:hover:not([disabled]),
|
|
.personal-menu-row:active:not([disabled]) {
|
|
color: #30353b;
|
|
background: var(--clr-menu-item-hover-bg);
|
|
}
|
|
|
|
/* Overrides the generic button.danger (solid red background, meant for standalone confirm/cancel
|
|
buttons) that this row would otherwise inherit just for reusing the "danger" class as a semantic
|
|
marker -- the design calls for a plain row (same background as every other row) with only the
|
|
icon and label tinted red, not an alarming solid-red block. */
|
|
.personal-menu-row.danger,
|
|
.personal-menu-row.danger:hover:not([disabled]),
|
|
.personal-menu-row.danger:active:not([disabled]) {
|
|
color: #d93f48;
|
|
background: #fff;
|
|
}
|
|
.personal-menu-row.danger:hover:not([disabled]),
|
|
.personal-menu-row.danger:active:not([disabled]) {
|
|
background: var(--clr-menu-item-hover-bg);
|
|
}
|
|
|
|
.personal-menu-row.danger > .material-icons:first-child {
|
|
color: #d93f48;
|
|
}
|
|
|
|
.personal-menu-row > .material-icons:first-child {
|
|
color: #59636e;
|
|
font-size: 1.55rem;
|
|
}
|
|
|
|
.personal-menu-row > .material-icons:last-child {
|
|
color: #a8aeb5;
|
|
}
|
|
|
|
.personal-menu-row span {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 0.7rem;
|
|
min-width: 0;
|
|
}
|
|
|
|
.personal-menu-row strong {
|
|
min-width: 0;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.personal-menu-row small {
|
|
max-width: 62%;
|
|
overflow: hidden;
|
|
color: #969da5;
|
|
text-align: right;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.personal-profile-list {
|
|
padding-top: 0.7rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.personal-profile-list > button:first-child {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) 3.8rem 1.5rem;
|
|
align-items: center;
|
|
width: 100%;
|
|
min-height: 5rem;
|
|
margin: 0;
|
|
padding: 0.6rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #30353b;
|
|
background: #fff;
|
|
text-align: left;
|
|
}
|
|
|
|
.personal-profile-list > button:first-child img {
|
|
width: 3.5rem;
|
|
height: 3.5rem;
|
|
border-radius: 0.45rem;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.gender-option-list {
|
|
padding-top: 0.7rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.gender-option-list button {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) 1.5rem;
|
|
align-items: center;
|
|
width: 100%;
|
|
min-height: 3.6rem;
|
|
margin: 0;
|
|
padding: 0.6rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #30353b;
|
|
background: #fff;
|
|
text-align: left;
|
|
}
|
|
|
|
.gender-option-list button strong {
|
|
font-weight: 400;
|
|
}
|
|
|
|
.gender-option-list button .material-icons {
|
|
color: var(--clr-primary, #3b82f6);
|
|
}
|
|
|
|
.profile-editor-page > main {
|
|
padding: 1rem;
|
|
}
|
|
|
|
.profile-editor-page > main > label {
|
|
display: block;
|
|
position: relative;
|
|
}
|
|
|
|
.profile-editor-page label input,
|
|
.profile-editor-page label textarea {
|
|
width: 100%;
|
|
margin: 0;
|
|
padding: 0.75rem 3rem 0.75rem 0.75rem;
|
|
border: 1px solid #dbe0e5;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
background: #fff;
|
|
}
|
|
|
|
.profile-editor-page label input:not([type='date']) {
|
|
height: 3.2rem;
|
|
}
|
|
|
|
.profile-editor-page label textarea {
|
|
height: 11rem;
|
|
padding-bottom: 2rem;
|
|
resize: vertical;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.profile-editor-page > main > label > small {
|
|
position: absolute;
|
|
right: 0.75rem;
|
|
bottom: 0.65rem;
|
|
color: #9ba2aa;
|
|
}
|
|
|
|
.profile-editor-page > main > label > button {
|
|
position: absolute;
|
|
top: 0.1rem;
|
|
right: 2.7rem;
|
|
display: grid;
|
|
place-items: center;
|
|
width: 2.8rem;
|
|
min-width: 2.8rem;
|
|
height: 3rem;
|
|
min-height: 3rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #a3a9b0;
|
|
background: transparent;
|
|
}
|
|
|
|
.profile-editor-page > main > p {
|
|
margin: 0.65rem 0 0;
|
|
color: #8a929b;
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
.birth-date-editor {
|
|
display: flex;
|
|
align-items: center;
|
|
padding-top: 4rem !important;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.birth-date-editor > .material-icons {
|
|
color: #d66372;
|
|
font-size: 4rem;
|
|
}
|
|
|
|
.birth-date-editor label {
|
|
width: min(100%, 26rem);
|
|
margin-top: 1.5rem;
|
|
}
|
|
|
|
.birth-date-editor label span {
|
|
display: block;
|
|
margin-bottom: 0.5rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.birth-date-editor label input {
|
|
height: 3.2rem;
|
|
padding: 0 0.75rem;
|
|
}
|
|
|
|
.personal-qr-page > main {
|
|
padding: 1rem;
|
|
}
|
|
|
|
.personal-qr-page main > section {
|
|
width: min(100%, 27rem);
|
|
margin: 0 auto;
|
|
padding: 1.2rem;
|
|
border-radius: 0.45rem;
|
|
background: #fff;
|
|
text-align: center;
|
|
}
|
|
|
|
.personal-qr-profile {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.7rem;
|
|
text-align: left;
|
|
}
|
|
|
|
.personal-qr-profile img {
|
|
width: 3.3rem;
|
|
height: 3.3rem;
|
|
border-radius: 0.4rem;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.personal-qr-profile span,
|
|
.personal-qr-profile strong,
|
|
.personal-qr-profile small {
|
|
display: block;
|
|
}
|
|
|
|
.personal-qr-profile small {
|
|
margin-top: 0.2rem;
|
|
color: #858d96;
|
|
}
|
|
|
|
.personal-qrcode {
|
|
display: inline-block;
|
|
width: 226px;
|
|
height: 226px;
|
|
margin: 1.5rem auto 0.8rem;
|
|
padding: 8px;
|
|
border: 1px solid #eceef1;
|
|
background: #fff;
|
|
}
|
|
|
|
.personal-qrcode img,
|
|
.personal-qrcode canvas {
|
|
width: 210px !important;
|
|
height: 210px !important;
|
|
}
|
|
|
|
.personal-qr-page section > p {
|
|
margin: 0.5rem 0;
|
|
}
|
|
|
|
.personal-qr-page section > small {
|
|
color: #8d949d;
|
|
}
|
|
|
|
.personal-qr-actions {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, 1fr);
|
|
width: min(100%, 27rem);
|
|
margin: 0.8rem auto 0;
|
|
background: #fff;
|
|
}
|
|
|
|
.personal-qr-actions button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 3.4rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #3476cd;
|
|
background: transparent;
|
|
}
|
|
|
|
.personal-qr-actions button + button {
|
|
border-left: 1px solid #eceef1;
|
|
}
|
|
|
|
.personal-qr-actions .material-icons {
|
|
margin-right: 0.3rem;
|
|
}
|
|
|
|
.android-settings-list {
|
|
padding: 0.75rem 0 1.5rem;
|
|
}
|
|
|
|
.personal-logout {
|
|
width: 100%;
|
|
min-height: 3.8rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #d93f48;
|
|
background: #fff;
|
|
}
|
|
|
|
.personal-sheet-backdrop,
|
|
.update-backdrop,
|
|
.permission-overlay {
|
|
display: grid;
|
|
position: absolute;
|
|
z-index: 70;
|
|
inset: 0;
|
|
place-items: center;
|
|
padding: 1rem;
|
|
background: rgba(22,26,31,0.52);
|
|
}
|
|
|
|
.personal-confirm-sheet {
|
|
width: min(100%, 25rem);
|
|
padding: 1.25rem;
|
|
border-radius: 0.5rem;
|
|
background: #fff;
|
|
text-align: center;
|
|
}
|
|
|
|
.personal-confirm-sheet > .material-icons {
|
|
color: #4d73aa;
|
|
font-size: 2.8rem;
|
|
}
|
|
|
|
.personal-confirm-sheet h2 {
|
|
margin: 0.65rem 0;
|
|
font-size: 1.15rem;
|
|
}
|
|
|
|
.personal-confirm-sheet p {
|
|
margin: 0.7rem 0 1rem;
|
|
color: #5c646e;
|
|
line-height: 1.6;
|
|
text-align: left;
|
|
}
|
|
|
|
.personal-confirm-sheet input {
|
|
width: 100%;
|
|
height: 3rem;
|
|
margin: 0 0 0.8rem;
|
|
padding: 0 0.75rem;
|
|
border: 1px solid #dce0e5;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
text-align: center;
|
|
}
|
|
|
|
.personal-confirm-sheet button {
|
|
width: 100%;
|
|
min-height: 2.9rem;
|
|
margin: 0.45rem 0 0;
|
|
padding: 0 1rem;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #4d5660;
|
|
background: #f0f2f4;
|
|
}
|
|
|
|
.personal-confirm-sheet button.primary {
|
|
color: #fff;
|
|
background: #347bd7;
|
|
}
|
|
|
|
.personal-confirm-sheet button.danger {
|
|
color: #fff;
|
|
background: #d84950;
|
|
}
|
|
|
|
.app-version-page > main {
|
|
padding: 2rem 1rem;
|
|
}
|
|
|
|
.app-brand {
|
|
margin-bottom: 2rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.app-brand > span {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 6.5rem;
|
|
height: 6.5rem;
|
|
margin: 0 auto 0.8rem;
|
|
border-radius: 1.2rem;
|
|
color: #fff;
|
|
background: #2878d6;
|
|
}
|
|
|
|
.app-brand .material-icons {
|
|
font-size: 4.2rem;
|
|
}
|
|
|
|
.app-brand h2,
|
|
.app-brand p {
|
|
margin: 0;
|
|
}
|
|
|
|
.app-brand h2 {
|
|
font-size: 1.25rem;
|
|
}
|
|
|
|
.app-brand p {
|
|
margin-top: 0.25rem;
|
|
color: #777f89;
|
|
}
|
|
|
|
.update-dialog {
|
|
width: min(100%, 25rem);
|
|
padding: 1.3rem;
|
|
border-radius: 0.55rem;
|
|
background: #fff;
|
|
text-align: center;
|
|
}
|
|
|
|
.update-dialog > span {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 5rem;
|
|
height: 5rem;
|
|
margin: 0 auto 0.8rem;
|
|
border-radius: 50%;
|
|
color: #fff;
|
|
background: #4e74b7;
|
|
}
|
|
|
|
.update-dialog > span .material-icons {
|
|
font-size: 3.2rem;
|
|
}
|
|
|
|
.update-dialog h2 {
|
|
margin: 0;
|
|
font-size: 1.35rem;
|
|
}
|
|
|
|
.update-dialog > strong {
|
|
display: block;
|
|
margin-top: 0.25rem;
|
|
color: #69717b;
|
|
}
|
|
|
|
.update-dialog ul {
|
|
margin: 1rem 0;
|
|
padding-left: 1.25rem;
|
|
color: #4e5660;
|
|
line-height: 1.65;
|
|
text-align: left;
|
|
}
|
|
|
|
.update-dialog button {
|
|
width: 100%;
|
|
min-height: 3rem;
|
|
margin: 0.45rem 0 0;
|
|
padding: 0 1rem;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #777f88;
|
|
background: transparent;
|
|
}
|
|
|
|
.update-dialog button:first-of-type {
|
|
color: #fff;
|
|
background: #347bd7;
|
|
}
|
|
|
|
.privacy-list {
|
|
padding-top: 0.75rem;
|
|
}
|
|
|
|
.privacy-list section > div {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
min-height: 4.6rem;
|
|
padding: 0.7rem 1rem;
|
|
border-bottom: 1px solid #eceef1;
|
|
}
|
|
|
|
.privacy-list section > div:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.privacy-list section > div span,
|
|
.privacy-list section > div strong,
|
|
.privacy-list section > div small {
|
|
display: block;
|
|
min-width: 0;
|
|
}
|
|
|
|
.privacy-list section > div small {
|
|
margin-top: 0.25rem;
|
|
color: #8b929b;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.personal-switch {
|
|
position: relative;
|
|
width: 3.25rem;
|
|
min-width: 3.25rem;
|
|
height: 1.9rem;
|
|
min-height: 1.9rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 1rem;
|
|
box-shadow: none;
|
|
background: #d8dce1;
|
|
}
|
|
|
|
.personal-switch i {
|
|
position: absolute;
|
|
top: 0.15rem;
|
|
left: 0.15rem;
|
|
width: 1.6rem;
|
|
height: 1.6rem;
|
|
border-radius: 50%;
|
|
background: #fff;
|
|
box-shadow: 0 1px 4px rgba(0,0,0,0.2);
|
|
transition: transform 160ms ease;
|
|
}
|
|
|
|
.personal-switch.checked {
|
|
background: #347bd7;
|
|
}
|
|
|
|
.personal-switch.checked i {
|
|
transform: translateX(1.35rem);
|
|
}
|
|
|
|
.privacy-note {
|
|
margin: 0;
|
|
padding: 0 1rem 0.75rem;
|
|
color: #7e8690;
|
|
font-size: 0.82rem;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.youth-mode-page {
|
|
background: #fff;
|
|
}
|
|
|
|
.youth-mode-page > main {
|
|
padding: 3.2rem 1.5rem 1rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.youth-mode-page > main > .material-icons {
|
|
color: #347bd7;
|
|
font-size: 5rem;
|
|
}
|
|
|
|
.youth-mode-page h2 {
|
|
margin: 1rem 0 1.5rem;
|
|
font-size: 1.45rem;
|
|
}
|
|
|
|
.youth-mode-page ul {
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
text-align: left;
|
|
}
|
|
|
|
.youth-mode-page li {
|
|
position: relative;
|
|
margin-bottom: 1.2rem;
|
|
padding-left: 1.7rem;
|
|
line-height: 1.55;
|
|
}
|
|
|
|
.youth-mode-page li::before {
|
|
position: absolute;
|
|
top: 0.55rem;
|
|
left: 0.2rem;
|
|
width: 0.55rem;
|
|
height: 0.55rem;
|
|
border-radius: 50%;
|
|
background: #347bd7;
|
|
content: '';
|
|
}
|
|
|
|
.youth-usage {
|
|
margin-top: 1.8rem;
|
|
color: #868e97;
|
|
}
|
|
|
|
.youth-mode-page > footer {
|
|
padding: 0.8rem 1rem max(1rem, env(safe-area-inset-bottom));
|
|
background: #fff;
|
|
text-align: center;
|
|
flex: none;
|
|
}
|
|
|
|
.youth-mode-page > footer button {
|
|
width: 100%;
|
|
min-height: 3.2rem;
|
|
margin: 0;
|
|
padding: 0 1rem;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: #347bd7;
|
|
}
|
|
|
|
.youth-mode-page > footer button.outline {
|
|
border: 1px solid #347bd7;
|
|
color: #347bd7;
|
|
background: #fff;
|
|
}
|
|
|
|
.youth-mode-page > footer small {
|
|
display: block;
|
|
margin-top: 0.65rem;
|
|
color: #9aa1a9;
|
|
}
|
|
|
|
.permission-guide-page {
|
|
background: #fff;
|
|
}
|
|
|
|
.permission-preview {
|
|
padding: 1.2rem 1rem;
|
|
opacity: 0.72;
|
|
}
|
|
|
|
.permission-preview > header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.permission-preview h1 {
|
|
margin: 0;
|
|
font-size: 1.35rem;
|
|
}
|
|
|
|
.permission-preview > label {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 3rem;
|
|
margin: 1rem 0;
|
|
border-radius: 0.35rem;
|
|
color: #8d949c;
|
|
background: #f0f2f4;
|
|
}
|
|
|
|
.permission-preview > label .material-icons {
|
|
margin-right: 0.35rem;
|
|
}
|
|
|
|
.permission-preview > div {
|
|
display: grid;
|
|
grid-template-columns: 3.4rem minmax(0, 1fr);
|
|
align-items: center;
|
|
gap: 0.7rem;
|
|
min-height: 4.6rem;
|
|
border-bottom: 1px solid #eceef1;
|
|
}
|
|
|
|
.permission-preview > div > span:last-child,
|
|
.permission-preview > div strong,
|
|
.permission-preview > div small {
|
|
display: block;
|
|
min-width: 0;
|
|
}
|
|
|
|
.permission-preview > div small {
|
|
margin-top: 0.2rem;
|
|
color: #8b929b;
|
|
}
|
|
|
|
.permission-avatar {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3.1rem;
|
|
height: 3.1rem;
|
|
border-radius: 0.45rem;
|
|
color: #fff;
|
|
background: #5a77a9;
|
|
}
|
|
|
|
.permission-avatar.tone-0 { background: #d18128; }
|
|
.permission-avatar.tone-1 { background: #4673bd; }
|
|
.permission-avatar.tone-2 { background: #398258; }
|
|
.permission-avatar.tone-3 { background: #9c5f7a; }
|
|
|
|
.permission-overlay section {
|
|
width: min(100%, 24rem);
|
|
padding: 1.3rem;
|
|
border-radius: 0.5rem;
|
|
background: #fff;
|
|
text-align: center;
|
|
}
|
|
|
|
.permission-overlay section > span {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 4.6rem;
|
|
height: 4.6rem;
|
|
margin: 0 auto 0.8rem;
|
|
border-radius: 50%;
|
|
color: #fff;
|
|
background: #347bd7;
|
|
}
|
|
|
|
.permission-overlay section > span .material-icons {
|
|
font-size: 2.7rem;
|
|
}
|
|
|
|
.permission-overlay h2 {
|
|
margin: 0;
|
|
font-size: 1.2rem;
|
|
}
|
|
|
|
.permission-overlay p {
|
|
margin: 0.8rem 0 1rem;
|
|
color: #555d67;
|
|
line-height: 1.6;
|
|
text-align: left;
|
|
}
|
|
|
|
.permission-overlay button {
|
|
width: 100%;
|
|
min-height: 3rem;
|
|
margin: 0.4rem 0 0;
|
|
padding: 0 1rem;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #8a919a;
|
|
background: transparent;
|
|
}
|
|
|
|
.permission-overlay button:first-of-type {
|
|
color: #fff;
|
|
background: #347bd7;
|
|
}
|
|
|
|
@media screen and (max-width: 480px) {
|
|
.personal-menu-row {
|
|
min-height: 3.8rem;
|
|
}
|
|
|
|
.personal-menu-row small {
|
|
max-width: 55%;
|
|
}
|
|
|
|
.personal-qrcode {
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
.youth-mode-page > main {
|
|
padding-top: 2rem;
|
|
}
|
|
}
|
|
|
|
/* Android anti-fraud warnings, abuse reports and user feedback. */
|
|
#sidepanel.security-support-panel {
|
|
width: 100%;
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
color-scheme: light;
|
|
background: #f5f6f8;
|
|
}
|
|
|
|
.security-support-panel * {
|
|
box-sizing: border-box;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.support-page {
|
|
display: flex;
|
|
position: relative;
|
|
width: 100%;
|
|
min-height: 100%;
|
|
overflow: hidden;
|
|
color: #272c32;
|
|
background: #f5f6f8;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.support-page button,
|
|
.support-page input,
|
|
.support-page textarea {
|
|
font: inherit;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.support-page button {
|
|
text-transform: none;
|
|
}
|
|
|
|
.support-page > main {
|
|
min-height: 0;
|
|
overflow-y: auto;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.support-header {
|
|
display: grid;
|
|
grid-template-columns: 3.7rem minmax(0, 1fr) 3.7rem;
|
|
align-items: center;
|
|
min-height: 4.5rem;
|
|
padding-top: env(safe-area-inset-top);
|
|
border-bottom: 1px solid #e6e9ec;
|
|
background: #fff;
|
|
flex: none;
|
|
}
|
|
|
|
.support-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;
|
|
}
|
|
|
|
.support-header button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3.7rem;
|
|
min-width: 3.7rem;
|
|
height: 3.7rem;
|
|
min-height: 3.7rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #272c32;
|
|
background: transparent;
|
|
}
|
|
|
|
.support-toast {
|
|
position: fixed;
|
|
z-index: 100;
|
|
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(25,29,34,0.94);
|
|
text-align: center;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
.risk-warning-page {
|
|
background: #fff;
|
|
}
|
|
|
|
.risk-conversation-preview {
|
|
min-height: 100%;
|
|
opacity: 0.78;
|
|
}
|
|
|
|
.risk-conversation-preview > header {
|
|
display: grid;
|
|
grid-template-columns: 3.5rem minmax(0, 1fr) 3.5rem;
|
|
align-items: center;
|
|
min-height: 4.5rem;
|
|
padding-top: env(safe-area-inset-top);
|
|
border-bottom: 1px solid #e7e9ec;
|
|
background: #fff;
|
|
text-align: center;
|
|
}
|
|
|
|
.risk-conversation-preview > header button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 3.5rem;
|
|
height: 3.5rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
background: transparent;
|
|
}
|
|
|
|
.risk-conversation-preview > header span,
|
|
.risk-conversation-preview > header strong,
|
|
.risk-conversation-preview > header small {
|
|
display: block;
|
|
}
|
|
|
|
.risk-conversation-preview > header small {
|
|
margin-top: 0.15rem;
|
|
color: #3d9a68;
|
|
}
|
|
|
|
.risk-conversation-preview > main {
|
|
min-height: calc(100vh - 8.8rem);
|
|
padding: 1rem;
|
|
background: #eef0f3;
|
|
}
|
|
|
|
.risk-conversation-preview > main > p {
|
|
margin: 0 0 1rem;
|
|
color: #8b929b;
|
|
font-size: 0.75rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.risk-conversation-preview main > div {
|
|
width: fit-content;
|
|
max-width: 78%;
|
|
margin-bottom: 0.65rem;
|
|
padding: 0.7rem 0.85rem;
|
|
border-radius: 0.35rem;
|
|
background: #fff;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.risk-conversation-preview main > div.mine {
|
|
margin-left: auto;
|
|
background: #bde7a9;
|
|
}
|
|
|
|
.risk-conversation-preview > footer {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
min-height: 4.3rem;
|
|
padding: 0.6rem 1rem max(0.6rem, env(safe-area-inset-bottom));
|
|
border-top: 1px solid #e0e3e7;
|
|
color: #959ca5;
|
|
background: #fff;
|
|
}
|
|
|
|
.risk-conversation-preview > footer span {
|
|
width: calc(100% - 2.7rem);
|
|
padding: 0.65rem 0.75rem;
|
|
border: 1px solid #e0e3e7;
|
|
border-radius: 0.3rem;
|
|
background: #f7f8f9;
|
|
}
|
|
|
|
.risk-overlay {
|
|
display: grid;
|
|
position: absolute;
|
|
z-index: 70;
|
|
inset: 0;
|
|
place-items: center;
|
|
padding: 1rem;
|
|
background: rgba(19,23,28,0.55);
|
|
}
|
|
|
|
.risk-dialog {
|
|
width: min(100%, 25rem);
|
|
max-height: calc(100% - 2rem);
|
|
padding: 1.15rem;
|
|
overflow-y: auto;
|
|
border-radius: 0.55rem;
|
|
background: #fff;
|
|
text-align: center;
|
|
}
|
|
|
|
.risk-symbol {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 5rem;
|
|
height: 5rem;
|
|
margin: 0 auto 0.6rem;
|
|
border-radius: 50%;
|
|
color: #fff;
|
|
background: #3979cd;
|
|
}
|
|
|
|
.risk-dialog.secondary .risk-symbol {
|
|
color: #9b5e08;
|
|
background: #fff0d5;
|
|
}
|
|
|
|
.risk-symbol .material-icons {
|
|
font-size: 3.2rem;
|
|
}
|
|
|
|
.risk-dialog h2 {
|
|
margin: 0;
|
|
font-size: 1.35rem;
|
|
}
|
|
|
|
.risk-dialog > p {
|
|
margin: 0.75rem 0;
|
|
color: #4d555e;
|
|
line-height: 1.65;
|
|
text-align: left;
|
|
}
|
|
|
|
.risk-dialog > p.risk-emphasis {
|
|
color: #b1363f;
|
|
font-weight: 650;
|
|
text-align: center;
|
|
}
|
|
|
|
.risk-dialog ul {
|
|
margin: 0.9rem 0;
|
|
padding: 0.25rem 0.75rem;
|
|
border: 1px solid #d9e5f4;
|
|
border-radius: 0.4rem;
|
|
list-style: none;
|
|
}
|
|
|
|
.risk-dialog li {
|
|
display: flex;
|
|
align-items: center;
|
|
min-height: 2.7rem;
|
|
border-bottom: 1px solid #e7edf4;
|
|
line-height: 1.35;
|
|
text-align: left;
|
|
}
|
|
|
|
.risk-dialog li:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.risk-dialog li .material-icons {
|
|
margin-right: 0.55rem;
|
|
color: #347bd7;
|
|
font-size: 1.35rem;
|
|
}
|
|
|
|
.risk-dialog aside {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 0.5rem;
|
|
margin: 0.8rem 0;
|
|
padding: 0.7rem;
|
|
border-radius: 0.35rem;
|
|
color: #9e333b;
|
|
background: #fff0f1;
|
|
line-height: 1.45;
|
|
text-align: left;
|
|
}
|
|
|
|
.risk-dialog button {
|
|
width: 100%;
|
|
min-height: 3rem;
|
|
margin: 0.45rem 0 0;
|
|
padding: 0 0.75rem;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #7f8790;
|
|
background: transparent;
|
|
}
|
|
|
|
.risk-dialog button.primary {
|
|
color: #fff;
|
|
background: #347bd7;
|
|
}
|
|
|
|
.risk-dialog button.danger {
|
|
color: #fff;
|
|
background: #cc3d46;
|
|
}
|
|
|
|
.report-reasons {
|
|
padding-bottom: 1rem;
|
|
}
|
|
|
|
.report-target {
|
|
display: grid;
|
|
grid-template-columns: 3.5rem minmax(0, 1fr) 2rem;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
min-height: 5.3rem;
|
|
padding: 0.8rem 1rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.report-target img {
|
|
width: 3.5rem;
|
|
height: 3.5rem;
|
|
border-radius: 0.45rem;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.report-target span,
|
|
.report-target strong,
|
|
.report-target small {
|
|
display: block;
|
|
min-width: 0;
|
|
}
|
|
|
|
.report-target small {
|
|
margin-top: 0.25rem;
|
|
color: #818a94;
|
|
}
|
|
|
|
.report-target > .material-icons {
|
|
color: #3b8661;
|
|
}
|
|
|
|
.report-reasons > h2 {
|
|
margin: 0;
|
|
padding: 1rem;
|
|
color: #6e7781;
|
|
font-size: 0.85rem;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.report-reason-list {
|
|
background: #fff;
|
|
}
|
|
|
|
.report-reason-list button {
|
|
display: grid;
|
|
grid-template-columns: 2.8rem minmax(0, 1fr) 1.5rem;
|
|
align-items: center;
|
|
gap: 0.55rem;
|
|
width: 100%;
|
|
min-height: 4.3rem;
|
|
margin: 0;
|
|
padding: 0.65rem 1rem;
|
|
border: 0;
|
|
border-bottom: 1px solid #eceef1;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
color: #30353c;
|
|
background: #fff;
|
|
text-align: left;
|
|
}
|
|
|
|
.report-reason-list button > span:first-child {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 2.5rem;
|
|
height: 2.5rem;
|
|
border-radius: 0.4rem;
|
|
color: #fff;
|
|
background: #4d70a8;
|
|
}
|
|
|
|
.report-reason-list button > span:nth-child(2),
|
|
.report-reason-list strong,
|
|
.report-reason-list small {
|
|
display: block;
|
|
min-width: 0;
|
|
}
|
|
|
|
.report-reason-list small {
|
|
margin-top: 0.2rem;
|
|
overflow: hidden;
|
|
color: #858d97;
|
|
font-size: 0.76rem;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.report-reason-list button > .material-icons:last-child {
|
|
color: #a8aeb5;
|
|
}
|
|
|
|
.report-details,
|
|
.feedback-page > main {
|
|
padding-bottom: 1rem;
|
|
}
|
|
|
|
.report-selected-reason {
|
|
display: grid;
|
|
grid-template-columns: 2.7rem minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: 0.7rem;
|
|
padding: 0.9rem 1rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.report-selected-reason > .material-icons {
|
|
color: #b14650;
|
|
font-size: 2rem;
|
|
}
|
|
|
|
.report-selected-reason span,
|
|
.report-selected-reason strong,
|
|
.report-selected-reason small {
|
|
display: block;
|
|
min-width: 0;
|
|
}
|
|
|
|
.report-selected-reason small {
|
|
margin-bottom: 0.2rem;
|
|
color: #858d96;
|
|
}
|
|
|
|
.report-selected-reason button {
|
|
min-height: 2.5rem;
|
|
margin: 0;
|
|
padding: 0 0.5rem;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #3476ce;
|
|
background: transparent;
|
|
}
|
|
|
|
.support-textarea {
|
|
display: block;
|
|
position: relative;
|
|
margin-top: 0.7rem;
|
|
padding: 1rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.support-textarea > span {
|
|
display: block;
|
|
margin-bottom: 0.6rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.support-textarea b {
|
|
margin-left: 0.2rem;
|
|
color: #d6424b;
|
|
}
|
|
|
|
.support-textarea textarea {
|
|
display: block;
|
|
width: 100%;
|
|
height: 10.5rem;
|
|
margin: 0;
|
|
padding: 0.75rem 0.8rem 2rem;
|
|
resize: vertical;
|
|
border: 1px solid #dfe3e7;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
background: #fff;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.support-textarea > small {
|
|
position: absolute;
|
|
right: 1.8rem;
|
|
bottom: 1.6rem;
|
|
color: #9ba2ab;
|
|
}
|
|
|
|
.evidence-section,
|
|
.feedback-upload {
|
|
margin-top: 0.7rem;
|
|
padding: 1rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.evidence-section > header,
|
|
.feedback-upload > header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 0.6rem;
|
|
margin-bottom: 0.8rem;
|
|
}
|
|
|
|
.evidence-section header span,
|
|
.evidence-section header strong,
|
|
.evidence-section header small,
|
|
.feedback-upload header span,
|
|
.feedback-upload header strong,
|
|
.feedback-upload header small {
|
|
display: block;
|
|
min-width: 0;
|
|
}
|
|
|
|
.evidence-section header small,
|
|
.feedback-upload header small {
|
|
margin-top: 0.2rem;
|
|
color: #858d96;
|
|
}
|
|
|
|
.evidence-section header em,
|
|
.feedback-upload header em {
|
|
color: #858d96;
|
|
font-style: normal;
|
|
}
|
|
|
|
.evidence-section article {
|
|
display: grid;
|
|
grid-template-columns: 2.5rem minmax(0, 1fr) 2.5rem;
|
|
align-items: center;
|
|
min-height: 3.5rem;
|
|
border-bottom: 1px solid #eceef1;
|
|
}
|
|
|
|
.evidence-section article > .material-icons {
|
|
color: #5273a8;
|
|
}
|
|
|
|
.evidence-section article > span {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.evidence-section article button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 2.5rem;
|
|
height: 2.5rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #989fa7;
|
|
background: transparent;
|
|
}
|
|
|
|
.evidence-upload,
|
|
.feedback-upload > button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 100%;
|
|
min-height: 4.5rem;
|
|
margin: 0;
|
|
padding: 0.7rem;
|
|
border: 1px dashed #cbd1d8;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #3476ce;
|
|
background: #f8f9fa;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.evidence-upload .material-icons,
|
|
.feedback-upload > button .material-icons {
|
|
margin-bottom: 0.25rem;
|
|
font-size: 1.8rem;
|
|
}
|
|
|
|
.report-privacy-note {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 0.5rem;
|
|
margin: 0.8rem 1rem 0;
|
|
color: #74808b;
|
|
font-size: 0.78rem;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.report-privacy-note .material-icons {
|
|
color: #4b8065;
|
|
font-size: 1.05rem;
|
|
}
|
|
|
|
.support-submit-bar {
|
|
padding: 0.75rem 1rem max(0.8rem, env(safe-area-inset-bottom));
|
|
border-top: 1px solid #e1e4e8;
|
|
background: #fff;
|
|
flex: none;
|
|
}
|
|
|
|
.support-submit-bar button,
|
|
.support-success > button {
|
|
width: 100%;
|
|
min-height: 3.1rem;
|
|
margin: 0;
|
|
padding: 0 1rem;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: #347bd7;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.support-success {
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 4rem 1.2rem 1.5rem;
|
|
text-align: center;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.support-success > .material-icons {
|
|
color: #3a9365;
|
|
font-size: 5rem;
|
|
}
|
|
|
|
.support-success h2 {
|
|
margin: 1rem 0 0.55rem;
|
|
font-size: 1.35rem;
|
|
}
|
|
|
|
.support-success > p {
|
|
max-width: 26rem;
|
|
margin: 0;
|
|
color: #66707a;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.support-success dl {
|
|
width: min(100%, 26rem);
|
|
margin: 1.5rem 0;
|
|
padding: 0.5rem 1rem;
|
|
border: 1px solid #e0e4e8;
|
|
border-radius: 0.4rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.support-success dl > div {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
min-height: 3rem;
|
|
border-bottom: 1px solid #eceef1;
|
|
}
|
|
|
|
.support-success dl > div:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.support-success dt,
|
|
.support-success dd {
|
|
margin: 0;
|
|
}
|
|
|
|
.support-success dt {
|
|
color: #7c858f;
|
|
}
|
|
|
|
.support-success > button {
|
|
width: min(100%, 26rem);
|
|
}
|
|
|
|
.feedback-categories {
|
|
padding: 1rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.feedback-categories h2 {
|
|
margin: 0 0 0.8rem;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.feedback-categories > div {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 0.55rem;
|
|
}
|
|
|
|
.feedback-categories button {
|
|
/* docs/images/意见反馈.png has no category selector at all (server/im_http.go's `category` field
|
|
is real and required, but the design was never drawn for it -- same "no reference, add the
|
|
simplest reasonable UI" call as Ch.6's own-group-nickname editor). This card layout (flex column,
|
|
tall min-height) was carried over from an icon-above-label grid pattern used elsewhere, but this
|
|
button only ever renders a single line of plain text -- with no `justify-content` set, `column`
|
|
direction defaults the main axis to `flex-start`, pinning that one line to the top of a much
|
|
taller box instead of centering it, which is the "why does this look off" of it. Simplified to a
|
|
plain centered pill sized for the text it actually holds. */
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-width: 0;
|
|
min-height: 2.75rem;
|
|
margin: 0;
|
|
padding: 0.45rem;
|
|
border: 1px solid #e0e4e8;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #666f79;
|
|
background: #fff;
|
|
}
|
|
|
|
.feedback-categories button.active {
|
|
border-color: #347bd7;
|
|
color: #2f70c7;
|
|
background: #eef5ff;
|
|
}
|
|
|
|
.feedback-categories .material-icons {
|
|
margin-bottom: 0.25rem;
|
|
font-size: 1.45rem;
|
|
}
|
|
|
|
.feedback-categories button span {
|
|
width: 100%;
|
|
overflow-wrap: anywhere;
|
|
font-size: 0.76rem;
|
|
line-height: 1.25;
|
|
text-align: center;
|
|
}
|
|
|
|
.feedback-contact {
|
|
display: block;
|
|
padding: 1rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.feedback-contact > span {
|
|
display: block;
|
|
margin-bottom: 0.55rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.feedback-contact input {
|
|
width: 100%;
|
|
height: 3rem;
|
|
margin: 0;
|
|
padding: 0 0.75rem;
|
|
border: 1px solid #dfe3e7;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
background: #fff;
|
|
}
|
|
|
|
.diagnostics-consent {
|
|
display: grid;
|
|
grid-template-columns: 1.8rem minmax(0, 1fr);
|
|
align-items: flex-start;
|
|
gap: 0.5rem;
|
|
margin-top: 0.7rem;
|
|
padding: 1rem;
|
|
background: #fff;
|
|
}
|
|
|
|
.diagnostics-consent input {
|
|
width: 1.25rem;
|
|
height: 1.25rem;
|
|
margin: 0.1rem 0 0;
|
|
}
|
|
|
|
.diagnostics-consent span,
|
|
.diagnostics-consent strong,
|
|
.diagnostics-consent small {
|
|
display: block;
|
|
min-width: 0;
|
|
}
|
|
|
|
.diagnostics-consent small {
|
|
margin-top: 0.3rem;
|
|
color: #7e8791;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
@media screen and (max-width: 480px) {
|
|
.risk-dialog {
|
|
padding: 1rem;
|
|
}
|
|
|
|
.risk-symbol {
|
|
width: 4.3rem;
|
|
height: 4.3rem;
|
|
}
|
|
|
|
.risk-symbol .material-icons {
|
|
font-size: 2.8rem;
|
|
}
|
|
|
|
.feedback-categories > div {
|
|
gap: 0.35rem;
|
|
}
|
|
}
|
|
|
|
/* QR scanning ("扫一扫"): full-screen camera view + the post-scan group-join confirm sheet.
|
|
No reference screenshot covers the scanning viewfinder itself (docs/images/ only has the
|
|
generate-a-code screens) -- z-index 200 matches the call overlays (widgets/call-panel.jsx),
|
|
the only other feature that also needs to sit above every other full-screen surface. */
|
|
.qr-scan-view {
|
|
position: fixed;
|
|
z-index: 200;
|
|
inset: 0;
|
|
overflow: hidden;
|
|
background: #000;
|
|
}
|
|
|
|
.qr-scan-video {
|
|
position: absolute;
|
|
inset: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.qr-scan-mask {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: grid;
|
|
place-items: center;
|
|
}
|
|
|
|
.qr-scan-frame {
|
|
position: relative;
|
|
width: 62vw;
|
|
max-width: 17rem;
|
|
aspect-ratio: 1;
|
|
border-radius: 0.5rem;
|
|
box-shadow: 0 0 0 999rem rgba(0,0,0,0.5);
|
|
}
|
|
|
|
.qr-scan-corner {
|
|
position: absolute;
|
|
width: 1.6rem;
|
|
height: 1.6rem;
|
|
border: 0.22rem solid #4d8dff;
|
|
font-style: normal;
|
|
}
|
|
|
|
.qr-scan-corner-tl { top: -0.11rem; left: -0.11rem; border-right: 0; border-bottom: 0; border-radius: 0.4rem 0 0 0; }
|
|
.qr-scan-corner-tr { top: -0.11rem; right: -0.11rem; border-left: 0; border-bottom: 0; border-radius: 0 0.4rem 0 0; }
|
|
.qr-scan-corner-bl { bottom: -0.11rem; left: -0.11rem; border-right: 0; border-top: 0; border-radius: 0 0 0 0.4rem; }
|
|
.qr-scan-corner-br { bottom: -0.11rem; right: -0.11rem; border-left: 0; border-top: 0; border-radius: 0 0 0.4rem 0; }
|
|
|
|
.qr-scan-header {
|
|
position: absolute;
|
|
z-index: 2;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 0.9rem 0.5rem;
|
|
background: linear-gradient(rgba(0,0,0,0.45), transparent);
|
|
}
|
|
|
|
.qr-scan-header button {
|
|
width: 2.6rem;
|
|
height: 2.6rem;
|
|
border: 0;
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: transparent;
|
|
}
|
|
|
|
.qr-scan-header h1 {
|
|
margin: 0;
|
|
color: #fff;
|
|
font-size: 1.05rem;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.qr-scan-header span {
|
|
width: 2.6rem;
|
|
}
|
|
|
|
.qr-scan-hint {
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 14%;
|
|
margin: 0;
|
|
color: #e7ebf0;
|
|
font-size: 0.9rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.qr-scan-error {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 0.6rem;
|
|
padding: 0 2rem;
|
|
color: #fff;
|
|
text-align: center;
|
|
}
|
|
|
|
.qr-scan-error .material-icons {
|
|
font-size: 2.6rem;
|
|
color: #f2b53d;
|
|
}
|
|
|
|
.qr-scan-error button {
|
|
margin-top: 0.6rem;
|
|
padding: 0 1.4rem;
|
|
min-height: 2.6rem;
|
|
border: 0;
|
|
border-radius: 1.4rem;
|
|
box-shadow: none;
|
|
color: #fff;
|
|
background: #347bd7;
|
|
}
|
|
|
|
.qr-join-backdrop {
|
|
position: fixed;
|
|
z-index: 200;
|
|
inset: 0;
|
|
display: grid;
|
|
place-items: center;
|
|
padding: 1rem;
|
|
background: rgba(22,26,31,0.52);
|
|
}
|
|
|
|
.qr-join-sheet {
|
|
width: min(100%, 25rem);
|
|
padding: 1.4rem 1.25rem 1.25rem;
|
|
border-radius: 0.5rem;
|
|
background: #fff;
|
|
text-align: center;
|
|
}
|
|
|
|
.qr-join-avatar {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 4rem;
|
|
height: 4rem;
|
|
margin: 0 auto 0.6rem;
|
|
border-radius: 50%;
|
|
overflow: hidden;
|
|
color: #9aa3ad;
|
|
background: #eef1f4;
|
|
}
|
|
|
|
.qr-join-avatar img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.qr-join-avatar .material-icons {
|
|
font-size: 1.9rem;
|
|
}
|
|
|
|
.qr-join-sheet h2 {
|
|
margin: 0.2rem 0;
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
.qr-join-sheet > p {
|
|
margin: 0 0 0.9rem;
|
|
color: #757d87;
|
|
}
|
|
|
|
.qr-join-sheet input {
|
|
width: 100%;
|
|
height: 2.9rem;
|
|
margin: 0 0 0.8rem;
|
|
padding: 0 0.75rem;
|
|
border: 1px solid #dce0e5;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
text-align: center;
|
|
}
|
|
|
|
.qr-join-sheet button {
|
|
width: 100%;
|
|
min-height: 2.9rem;
|
|
margin: 0.45rem 0 0;
|
|
border: 0;
|
|
border-radius: 0.35rem;
|
|
box-shadow: none;
|
|
color: #4d5660;
|
|
background: #f0f2f4;
|
|
}
|
|
|
|
.qr-join-sheet button.primary {
|
|
color: #fff;
|
|
background: #347bd7;
|
|
}
|