Files
mrxzamani be252e49e2 Address Moodle Marketplace review for mod_meetletacbfree 1.1.3.
Migrate legacy ajax/JS to external services and AMD, enable TLS verification, scope admin CSS with RTLCSS-safe rules, and fix README/lang/boilerplate gaps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 12:41:47 +03:30

2718 lines
74 KiB
CSS

/* MeetLet Adobe Connect Bridge — scoped to .meetlet-* only */
.meetlet-app {
--ml-green: #52cca3;
--ml-green-deep: #00261a;
--ml-green-soft: #e6faf3;
--ml-ink: #00261a;
--ml-muted: #4a6b5f;
--ml-line: #cfe8de;
--ml-bg: #f3fbf8;
--ml-card: #ffffff;
--ml-radius: 16px;
color: var(--ml-ink);
}
.meetlet-hero {
display: grid;
gap: 1rem;
grid-template-columns: 1.5fr 1fr auto;
align-items: center;
background:
radial-gradient(900px 240px at 100% 0%, rgba(82, 204, 163, 0.28), transparent 50%),
linear-gradient(135deg, #00261a 0%, #0a3d2e 55%, #145c45 100%);
color: #fff;
border-radius: var(--ml-radius);
padding: 1.35rem 1.5rem;
margin-bottom: 1.1rem;
}
.meetlet-hero__brand {
display: flex;
gap: 0.95rem;
align-items: center;
}
.meetlet-hero__logo {
width: 52px;
height: 52px;
object-fit: contain;
border-radius: 12px;
background: rgba(255, 255, 255, 0.95);
padding: 6px;
box-shadow: 0 8px 20px rgba(0, 38, 26, 0.25);
}
.meetlet-title {
margin: 0.2rem 0;
font-size: 1.4rem;
font-weight: 700;
}
.meetlet-subtitle { opacity: 0.78; font-size: 0.9rem; }
.meetlet-status {
display: inline-flex;
padding: 0.25rem 0.7rem;
border-radius: 999px;
font-size: 0.8rem;
font-weight: 650;
background: rgba(255, 255, 255, 0.14);
}
.meetlet-status--open { background: var(--ml-green); color: var(--ml-green-deep); }
.meetlet-status--live { background: #0d9f6e; color: #fff; }
.meetlet-status--scheduled { background: #c2a15a; color: #2a2418; }
.meetlet-status--ended { background: #7a8480; color: #fff; }
.meetlet-status--waitinghost { background: #d9a441; color: #2a2418; }
.meetlet-status--checking { background: #d7e3de; color: #35564a; }
.meetlet-statuswrap {
display: inline-flex;
align-items: center;
gap: .55rem;
min-height: 2.6rem;
}
.meetlet-statusring-wrap {
position: relative;
display: inline-flex;
flex: 0 0 auto;
width: 2.5rem;
height: 2.5rem;
border-radius: 50%;
outline: none;
}
.meetlet-statusring-wrap:focus-visible {
box-shadow: 0 0 0 2px rgba(82, 204, 163, 0.85);
}
.meetlet-status[data-tip] {
cursor: help;
outline: none;
}
.meetlet-status[data-tip]:focus-visible {
box-shadow: 0 0 0 2px rgba(82, 204, 163, 0.85);
border-radius: 999px;
}
.meetlet-statusring {
width: 2.5rem;
height: 2.5rem;
transform: rotate(-90deg);
flex: 0 0 auto;
}
.meetlet-statusring__track,
.meetlet-statusring__prog {
fill: none;
stroke-width: 3.5;
}
.meetlet-statusring__track { stroke: rgba(0, 38, 26, .12); }
.meetlet-statusring__prog {
stroke: #0f8f63;
stroke-linecap: round;
stroke-dasharray: 100.53;
stroke-dashoffset: 0;
transition: stroke-dashoffset .2s linear, stroke .2s ease;
}
.meetlet-statuswrap[data-status="live"] .meetlet-statusring__prog { stroke: #0d9f6e; }
.meetlet-statuswrap[data-status="ended"] .meetlet-statusring__prog { stroke: #6b7470; }
.meetlet-statuswrap[data-status="scheduled"] .meetlet-statusring__prog { stroke: #b8892f; }
.meetlet-statuswrap[data-status="waitinghost"] .meetlet-statusring__prog { stroke: #c48a1a; }
.meetlet-statuscountdown {
position: absolute;
inset-inline-start: 0;
width: 2.5rem;
text-align: center;
font-size: .72rem;
font-weight: 700;
color: #fff;
text-shadow: 0 1px 2px rgba(0, 0, 0, .55);
pointer-events: none;
line-height: 2.5rem;
}
.meetlet-alert--error,
.meetlet-alert.meetlet-alert--error {
border-style: solid;
border-color: #f1b4b4;
background: #fdecec;
color: #b71c1c;
}
.meetlet-tip {
position: relative;
}
.meetlet-tip[data-tip]::after {
content: attr(data-tip);
position: absolute;
bottom: calc(100% + 10px);
left: 50%;
transform: translateX(-50%) translateY(4px);
padding: .45rem .65rem;
border-radius: 8px;
background: #1f2d28;
color: #fff;
font-size: .75rem;
font-weight: 650;
line-height: 1.35;
white-space: normal;
width: max-content;
max-width: 16rem;
text-align: center;
opacity: 0;
pointer-events: none;
transition: opacity .15s ease, transform .15s ease;
z-index: 20;
}
.meetlet-tip[data-tip]::before {
content: "";
position: absolute;
bottom: calc(100% + 4px);
left: 50%;
transform: translateX(-50%);
border: 6px solid transparent;
border-top-color: #1f2d28;
opacity: 0;
pointer-events: none;
transition: opacity .15s ease;
z-index: 20;
}
.meetlet-tip[data-tip]:hover::after,
.meetlet-tip[data-tip]:focus-within::after {
opacity: 1;
transform: translateX(-50%) translateY(0);
}
.meetlet-tip[data-tip]:hover::before,
.meetlet-tip[data-tip]:focus-within::before {
opacity: 1;
}
.meetlet-joinwrap {
display: inline-flex;
}
.meetlet-btn--join.is-disabled,
.meetlet-btn--join[aria-disabled="true"] {
opacity: .55;
cursor: not-allowed;
pointer-events: none;
}
.meetlet-btn--join.is-busy {
cursor: wait;
}
.meetlet-meta-line { margin-top: 0.35rem; font-size: 0.86rem; opacity: 0.9; }
.meetlet-btn {
border: 0;
border-radius: 999px;
padding: 0.75rem 1.35rem;
font-weight: 700;
cursor: pointer;
transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.meetlet-btn--join {
background: linear-gradient(180deg, #6fd9b5 0%, var(--ml-green) 45%, #3db890 100%);
color: var(--ml-green-deep);
box-shadow: 0 10px 22px rgba(82, 204, 163, 0.35);
}
.meetlet-btn--join:hover {
transform: translateY(-1px);
background: linear-gradient(180deg, #7fe0bf 0%, #5fd4ab 100%);
}
.meetlet-btn--ghost {
background: transparent;
color: var(--ml-green-deep);
border: 1px solid rgba(0, 38, 26, 0.25);
padding: 0.35rem 0.75rem;
border-radius: 10px;
}
.meetlet-intro,
.meetlet-card {
background: var(--ml-card);
border: 1px solid var(--ml-line);
border-radius: var(--ml-radius);
padding: 1rem 1.15rem;
margin-bottom: 1rem;
}
.meetlet-intro--plain {
background: transparent;
border: 0;
border-radius: 0;
padding: .35rem 0 0;
margin: 0;
line-height: 1.75;
color: var(--ml-ink);
}
.meetlet-panel {
min-height: 4rem;
}
.meetlet-tablewrap--full {
width: 100%;
max-width: 100%;
overflow: visible;
border: 1px solid var(--ml-line);
border-radius: 14px;
background: #fff;
}
.meetlet-table--sessions {
width: 100% !important;
table-layout: auto;
}
.meetlet-table--sessions th,
.meetlet-table--sessions td {
padding: .85rem .95rem !important;
}
.meetlet-table--sessions th:nth-child(1),
.meetlet-table--sessions td:nth-child(1),
.meetlet-table--sessions th:nth-child(2),
.meetlet-table--sessions td:nth-child(2) {
white-space: normal;
overflow-wrap: break-word;
word-break: normal;
}
.meetlet-table--sessions .meetlet-table__num {
width: 1%;
text-align: center;
font-weight: 700;
white-space: nowrap;
}
.meetlet-table--sessions .meetlet-table__actions {
width: 1%;
text-align: end;
white-space: nowrap;
vertical-align: middle;
}
.meetlet-table--sessions .meetlet-table__actions .meetlet-iconactions {
justify-content: flex-end;
}
.meetlet-attendance__title {
margin: 0 0 .45rem;
}
.meetlet-recname {
display: inline-flex;
align-items: center;
gap: .35rem;
max-width: 100%;
}
.meetlet-recname__text {
word-break: break-word;
}
.meetlet-recname__input {
min-width: 12rem;
max-width: 100%;
padding: .25rem .45rem;
border: 1px solid #7bb9a4;
border-radius: 8px;
font: inherit;
}
.meetlet-iconbtn--inline {
width: 1.7rem;
height: 1.7rem;
border-radius: 8px;
flex: 0 0 auto;
}
.meetlet-iconbtn--adobeedit {
color: #0b5cab;
}
.meetlet-access-matrix {
overflow: auto;
max-height: min(70vh, 36rem);
margin: .75rem 0 1.25rem;
border: 1px solid #cfe8de;
border-radius: 8px;
}
.meetlet-access-table {
width: max-content;
min-width: 100%;
border-collapse: separate;
border-spacing: 0;
background: #fff;
}
.meetlet-access-table th,
.meetlet-access-table td {
padding: .4rem .35rem;
border: 1px solid #cfe8de;
text-align: center;
vertical-align: middle;
font-size: .82rem;
}
.meetlet-access-table thead th {
background: #f3fbf8;
color: #00261a;
font-weight: 700;
max-width: 8.5rem;
position: sticky;
top: 0;
z-index: 2;
}
.meetlet-access-table thead th:first-child,
.meetlet-access-table tbody th {
position: sticky;
inset-inline-start: 0;
z-index: 1;
text-align: start;
background: #f7fcfa;
white-space: nowrap;
min-width: 11rem;
}
.meetlet-access-table thead th:first-child {
z-index: 3;
}
.meetlet-access-col__label {
line-height: 1.25;
margin-bottom: .35rem;
}
.meetlet-access-rowhead {
display: table-cell;
}
.meetlet-access-role {
display: inline-block;
margin-inline-end: .4rem;
vertical-align: middle;
}
.meetlet-access-toggle {
display: inline-block;
margin: .15rem 0 0;
padding: .12rem .45rem;
border: 1px solid #9bb8ad;
border-radius: 999px;
background: #fff;
color: #0f3d2e;
font-size: .68rem;
font-weight: 700;
line-height: 1.2;
cursor: pointer;
vertical-align: middle;
}
.meetlet-access-toggle:hover {
background: #e8f7f1;
}
.meetlet-access-matrix.is-disabled .meetlet-access-toggle {
opacity: .55;
cursor: not-allowed;
}
.meetlet-access-matrix.is-disabled {
opacity: .55;
pointer-events: none;
}
.path-admin .meetlet-access-matrix {
max-width: 100%;
}
.meetlet-attendance__export {
display: flex;
flex-wrap: wrap;
gap: .65rem;
margin: 0 0 1.45rem;
padding: .85rem 0 1rem;
border-bottom: 1px solid var(--ml-line);
}
.meetlet-attendance__export .meetlet-btn {
text-decoration: none !important;
}
.meetlet-attendance__export.meetlet-iconactions {
gap: .45rem;
}
.meetlet-tabtoolbar {
display: flex;
justify-content: flex-end;
align-items: center;
gap: .75rem;
margin: 0 0 1rem;
padding: 0 0 .75rem;
border-bottom: 1px solid var(--ml-line);
}
.meetlet-tabtoolbar .meetlet-btn {
text-decoration: none !important;
flex: 0 0 auto;
}
.meetlet-tabtoolbar__refresh svg {
width: 1.05rem;
height: 1.05rem;
flex: 0 0 auto;
display: block;
}
.meetlet-jobpoll {
flex: 1 1 auto;
min-width: 8rem;
display: flex;
flex-direction: column;
gap: .3rem;
}
.meetlet-jobpoll__label {
font-size: .75rem;
font-weight: 650;
color: #3d5c52;
line-height: 1.3;
}
.meetlet-jobpoll__track {
height: 8px;
border-radius: 99px;
background: #e4f4ee;
overflow: hidden;
box-shadow: inset 0 0 0 1px #c6e5d8;
}
.meetlet-jobpoll__bar {
height: 100%;
width: 0;
border-radius: inherit;
background: linear-gradient(90deg, #52cca3, #0f766e);
animation: meetlet-jobpoll-fill 60s linear forwards;
}
@keyframes meetlet-jobpoll-fill {
from { width: 0; }
to { width: 100%; }
}
.meetlet-license-badge {
font-weight: 700;
border-radius: 999px;
padding: .35rem .65rem;
}
.meetlet-license-badge--active {
background: var(--ml-green);
color: var(--ml-green-deep);
}
.meetlet-license-badge--inactive {
background: #fff4d6;
color: #5a4700;
}
.meetlet-iconactions {
display: inline-flex;
flex-wrap: nowrap;
align-items: center;
gap: .35rem;
}
.meetlet-iconbtn {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
width: 2.15rem;
height: 2.15rem;
flex: 0 0 auto;
border-radius: 10px;
border: 1px solid #9fdcc4;
background: #fff;
color: var(--ml-green-deep);
text-decoration: none !important;
cursor: pointer;
padding: 0;
transition: background .15s ease, border-color .15s ease;
}
.meetlet-iconbtn svg {
width: 1.1rem;
height: 1.1rem;
display: block;
}
.meetlet-iconbtn:hover,
.meetlet-iconbtn:focus-visible {
background: var(--ml-green-soft);
border-color: #52cca3;
outline: none;
}
.meetlet-iconbtn.is-busy {
opacity: .7;
cursor: wait;
pointer-events: none;
}
.meetlet-iconbtn--disabled,
.meetlet-iconbtn:disabled {
opacity: .48;
cursor: not-allowed;
filter: grayscale(0.35);
}
.meetlet-iconbtn--disabled:hover,
.meetlet-iconbtn--disabled:focus-visible,
.meetlet-iconbtn:disabled:hover,
.meetlet-iconbtn:disabled:focus-visible {
transform: none;
box-shadow: none;
}
.meetlet-iconbtn--request {
color: #b45309;
border-color: #f0c48a;
background: #fffaf3;
}
.meetlet-iconbtn--request:hover,
.meetlet-iconbtn--request:focus-visible {
background: #fff3e0;
border-color: #e0a04a;
}
.meetlet-iconbtn--mp4 {
color: #0f766e;
border-color: #7dd3c7;
background: #f2fffb;
}
.meetlet-iconbtn--mp4:hover,
.meetlet-iconbtn--mp4:focus-visible {
background: #dffaf3;
border-color: #2bb89a;
}
.meetlet-iconbtn--mp4-agent {
color: #1d4ed8;
border-color: #93c5fd;
background: #eff6ff;
}
.meetlet-iconbtn--mp4-agent:hover,
.meetlet-iconbtn--mp4-agent:focus-visible {
background: #dbeafe;
border-color: #3b82f6;
}
.meetlet-iconbtn--import {
color: #0b5cab;
border-color: #bfd7f5;
background: #f5faff;
}
.meetlet-iconbtn--import:hover,
.meetlet-iconbtn--import:focus-visible {
background: #e8f2ff;
border-color: #7daee8;
}
.meetlet-iconbtn--update {
color: #9a6700;
border-color: #e8c97a;
background: #fffbeb;
}
.meetlet-iconbtn--update:hover,
.meetlet-iconbtn--update:focus-visible {
background: #fff3cd;
border-color: #d4a017;
}
.meetlet-iconbtn--deletemoodle {
color: #9f1239;
border-color: #f0b4c4;
background: #fff5f7;
}
.meetlet-iconbtn--deletemoodle:hover,
.meetlet-iconbtn--deletemoodle:focus-visible {
background: #ffe4ea;
border-color: #e07a93;
}
.meetlet-iconbtn--danger {
color: #b42318;
border-color: #f2b8b3;
background: #fff8f7;
}
.meetlet-iconbtn--danger:hover,
.meetlet-iconbtn--danger:focus-visible {
background: #ffeceb;
border-color: #df7c74;
}
.meetlet-iconbtn--play {
color: var(--ml-green-deep);
}
.meetlet-iconbtn--users {
color: #0f766e;
border-color: #7dd3c7;
background: #f2fffb;
}
.meetlet-iconbtn--users:hover,
.meetlet-iconbtn--users:focus-visible {
background: #dffaf3;
border-color: #2bb89a;
}
.meetlet-iconbtn--csv {
color: #0b5cab;
border-color: #bfd7f5;
background: #f5faff;
}
.meetlet-iconbtn--csv:hover,
.meetlet-iconbtn--csv:focus-visible {
background: #e8f2ff;
border-color: #7daee8;
}
.meetlet-iconbtn--zip {
color: #7c3aed;
border-color: #c4b5fd;
background: #f5f3ff;
}
.meetlet-iconbtn--zip:hover,
.meetlet-iconbtn--zip:focus-visible {
background: #ede9fe;
border-color: #a78bfa;
}
.meetlet-iconbtn--download {
color: #0b5cab;
border-color: #bfd7f5;
background: #f5faff;
}
.meetlet-iconbtn--download:hover,
.meetlet-iconbtn--download:focus-visible {
background: #e8f2ff;
border-color: #7daee8;
}
.meetlet-iconbtn__spinner {
position: absolute;
inset: 0;
margin: auto;
width: 16px;
height: 16px;
border-radius: 50%;
border: 2px solid rgba(82, 204, 163, 0.25);
border-top-color: var(--ml-green-deep);
animation: meetlet-spin .8s linear infinite;
background: #fff;
}
/* Activity view + icon buttons: JS .meetlet-floattip (viewport coords, RTL-safe). */
.meetlet-app [data-tip]::after,
.meetlet-app [data-tip]::before {
content: none !important;
display: none !important;
}
.meetlet-floattip {
position: fixed;
z-index: 2147483000;
padding: .4rem .65rem;
border-radius: 8px;
background: #1f2d28;
color: #fff;
font-size: .75rem;
font-weight: 650;
line-height: 1.35;
max-width: min(16rem, calc(100vw - 16px));
text-align: center;
box-shadow: 0 10px 24px rgba(0, 0, 0, .28);
pointer-events: none;
opacity: 0;
transform: translateY(4px);
transition: opacity .12s ease, transform .12s ease;
}
.meetlet-floattip--wide {
max-width: min(22rem, calc(100vw - 16px));
text-align: start;
}
.meetlet-floattip.is-visible {
opacity: 1;
transform: translateY(0);
}
.meetlet-floattip.is-below {
transform: translateY(-4px);
}
.meetlet-floattip.is-below.is-visible {
transform: translateY(0);
}
.meetlet-sr-only {
position: absolute !important;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.meetlet-btn-with-icon {
display: inline-flex;
align-items: center;
justify-content: center;
gap: .45rem;
}
.meetlet-btn-with-icon svg {
width: 1.1rem;
height: 1.1rem;
flex: 0 0 auto;
display: block;
}
.meetlet-btn-with-icon__label {
line-height: 1.2;
}
.meetlet-jobstatus {
display: inline-flex;
align-items: center;
padding: .25rem .55rem;
border-radius: 999px;
font-size: .82rem;
font-weight: 650;
background: #eef3f1;
color: #456257;
}
.meetlet-jobstatus--warn {
background: #fff3cd;
color: #7a5b00;
border: 1px solid #f0d78c;
}
.meetlet-jobstatus--ok {
background: #e6faf3;
color: #0a3d2e;
border: 1px solid #9fdcc4;
}
.meetlet-jobstatus--info {
background: #eef6ff;
color: #2a4a6b;
border: 1px solid #c5daf5;
}
.meetlet-alert--warning,
.meetlet-alert.meetlet-alert--warning {
border-style: solid;
border-color: #e6b422;
background: #fff8e6;
color: #5c4700;
}
.meetlet-tabs { display: flex; gap: .45rem; flex-wrap: wrap; margin-bottom: .85rem; }
.meetlet-tab {
display: inline-flex;
align-items: center;
gap: .4rem;
border: 1px solid var(--ml-line);
background: #fff;
color: var(--ml-muted);
border-radius: 999px;
padding: .45rem .95rem;
cursor: pointer;
font-weight: 650;
}
.meetlet-tab__icon {
display: inline-flex;
align-items: center;
justify-content: center;
flex: 0 0 auto;
}
.meetlet-tab__icon svg {
width: 1rem;
height: 1rem;
display: block;
}
.meetlet-tab__label {
line-height: 1.2;
}
.meetlet-tab.is-active {
background: var(--ml-green-deep);
border-color: var(--ml-green-deep);
color: #fff;
}
.meetlet-loading {
display: flex;
align-items: center;
gap: .75rem;
padding: 1.25rem;
border-radius: var(--ml-radius);
background: var(--ml-bg);
border: 1px dashed var(--ml-line);
color: var(--ml-muted);
}
.meetlet-loading__spinner,
.meetlet-joinoverlay__spinner {
width: 22px;
height: 22px;
border-radius: 50%;
border: 2px solid rgba(82, 204, 163, 0.25);
border-top-color: var(--ml-green-deep);
animation: meetlet-spin .8s linear infinite;
}
@keyframes meetlet-spin { to { transform: rotate(360deg); } }
.meetlet-empty,
.meetlet-alert {
padding: 1.1rem;
border-radius: var(--ml-radius);
background: var(--ml-bg);
border: 1px dashed var(--ml-line);
color: var(--ml-muted);
}
.meetlet-alert {
border-style: solid;
border-color: #e7cfc0;
background: #fff8f2;
color: #7a4e32;
}
.meetlet-joinoverlay {
position: fixed;
inset: 0;
z-index: 10050;
display: flex;
align-items: center;
justify-content: center;
background: rgba(24, 32, 30, 0.45);
backdrop-filter: blur(3px);
}
.meetlet-joinoverlay[hidden] { display: none !important; }
.meetlet-joinoverlay__card {
width: min(420px, calc(100vw - 2rem));
background: #fff;
border-radius: 18px;
padding: 1.6rem 1.4rem;
text-align: center;
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
}
.meetlet-joinoverlay__logo {
width: 56px;
height: 56px;
object-fit: contain;
margin-bottom: .85rem;
}
.meetlet-joinoverlay__spinner {
margin: 0 auto .85rem;
width: 28px;
height: 28px;
}
.meetlet-joinoverlay__title {
font-weight: 750;
font-size: 1.05rem;
margin-bottom: .35rem;
}
.meetlet-joinoverlay__text { color: var(--ml-muted); font-size: .92rem; }
.meetlet-conntest { max-width: 880px; margin: 0 auto 2rem; }
.meetlet-conntest__hero {
text-align: center;
padding: 1.5rem 1rem 1rem;
border-radius: 18px;
background: linear-gradient(180deg, #e6faf3, #ffffff);
border: 1px solid #b8e8d6;
margin-bottom: 1rem;
}
.meetlet-conntest__logo { width: 72px; height: 72px; object-fit: contain; margin-bottom: .6rem; }
.meetlet-conntest__title { margin: 0 0 .4rem; }
.meetlet-conntest__intro { margin: 0 auto; max-width: 38rem; color: #4a6b5f; }
.meetlet-conntest__grid { display: grid; gap: .7rem; }
.meetlet-conntest__card {
background: #fff;
border: 1px solid #cfe8de;
border-radius: 14px;
padding: .95rem 1rem;
}
.meetlet-conntest__card--ok { border-color: #9fdcc4; background: #f3fbf8; }
.meetlet-conntest__card--fail { border-color: #ead3d0; background: #fff8f7; }
.meetlet-conntest__rowtop {
display: flex;
align-items: center;
gap: .65rem;
}
.meetlet-conntest__label { flex: 1; font-weight: 650; }
.meetlet-conntest__detail {
margin-top: .45rem;
margin-inline-start: 1.55rem;
color: #4a6b5f;
font-size: .88rem;
}
.meetlet-conntest__subs {
display: grid;
gap: .55rem;
margin-top: .75rem;
margin-inline-start: 1.55rem;
}
.meetlet-conntest__sub {
border: 1px solid #dbece4;
border-radius: 10px;
padding: .65rem .75rem;
background: #fff;
}
.meetlet-conntest__sub--ok { border-color: #bfe8d4; background: #f8fcfa; }
.meetlet-conntest__sub--fail { border-color: #ead3d0; background: #fffaf9; }
.meetlet-conntest__sub--skipped { opacity: .72; }
.meetlet-conntest__sublabel { flex: 1; font-weight: 600; font-size: .92rem; }
.meetlet-dot {
width: 10px;
height: 10px;
border-radius: 50%;
display: inline-block;
}
.meetlet-dot--ok { background: #52cca3; box-shadow: 0 0 0 4px rgba(82, 204, 163, 0.2); }
.meetlet-dot--fail { background: #b42318; box-shadow: 0 0 0 4px rgba(180, 35, 24, 0.12); }
.meetlet-pill {
font-size: .72rem;
font-weight: 750;
letter-spacing: .02em;
border-radius: 999px;
padding: .2rem .55rem;
}
.meetlet-pill--ok { background: #d4f5e8; color: #00261a; }
.meetlet-pill--fail { background: #f8e2df; color: #8f2d24; }
.meetlet-conntest__footer { margin-top: 1.2rem; text-align: center; }
.meetlet-participant-form .singleselect,
.meetlet-participant-form .form-select,
.meetlet-participant-form .btn { margin-inline-end: .4rem; margin-bottom: .4rem; }
.meetlet-card__title {
margin: 0 0 .75rem;
font-size: 1.05rem;
font-weight: 750;
color: var(--ml-green-deep);
}
.meetlet-intro {
line-height: 1.75;
color: var(--ml-ink);
}
.meetlet-attendance__title {
margin: 0 0 .35rem;
font-size: 1.08rem;
font-weight: 750;
}
.meetlet-attendance__help {
margin: 0 0 .9rem;
color: var(--ml-muted);
font-size: .92rem;
}
.meetlet-tablewrap {
max-width: 100%;
overflow: visible;
}
.meetlet-table {
width: 100%;
max-width: 100%;
table-layout: auto;
border-collapse: separate;
border-spacing: 0;
background: #fff;
}
.meetlet-table th,
.meetlet-table td {
padding: .85rem 1rem;
border-bottom: 1px solid var(--ml-line);
text-align: start;
vertical-align: middle;
}
.meetlet-table thead th {
background: #f3fbf8;
color: var(--ml-green-deep);
font-weight: 700;
font-size: .86rem;
}
.meetlet-table tbody tr:hover {
background: #f7fcfa;
}
.meetlet-table .meetlet-table__actions,
.meetlet-table--recordings td:last-child,
.meetlet-table--recordings th:last-child,
.meetlet-table--content td:last-child,
.meetlet-table--content th:last-child {
width: 1%;
white-space: nowrap;
text-align: end;
vertical-align: middle;
}
.meetlet-table--recordings td:last-child .meetlet-iconactions {
justify-content: flex-end;
}
.meetlet-table--content td:last-child .meetlet-iconactions {
justify-content: flex-end;
}
.meetlet-table--recordings td:first-child {
overflow-wrap: break-word;
word-break: normal;
}
.meetlet-card:has(.meetlet-table) {
overflow: visible;
}
.meetlet-btn--sm {
padding: .4rem .85rem;
border-radius: 10px;
font-size: .86rem;
}
.meetlet-btn--ghost {
background: #fff;
color: var(--ml-green-deep);
border: 1px solid #9fdcc4;
}
.meetlet-btn--ghost:hover {
background: var(--ml-green-soft);
}
.meetlet-modal[hidden] { display: none !important; }
.meetlet-modal {
position: fixed !important;
inset: 0 !important;
z-index: 10060 !important;
display: none;
align-items: center;
justify-content: center;
padding: 1rem;
background: rgba(24, 32, 30, 0.58);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
}
.meetlet-modal__backdrop {
position: absolute;
inset: 0;
background: transparent;
}
.meetlet-modal__dialog {
position: relative;
z-index: 1;
width: min(860px, 100%);
max-height: min(82vh, 760px);
overflow: auto;
background: #fff;
border-radius: 18px;
border: 1px solid #cfe8de;
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
}
.meetlet-modal__head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding: 1rem 1.15rem;
border-bottom: 1px solid var(--ml-line);
background: linear-gradient(180deg, #f3fbf8, #fff);
position: sticky;
top: 0;
}
.meetlet-modal__title {
margin: 0;
font-size: 1.05rem;
font-weight: 750;
color: var(--ml-green-deep);
}
.meetlet-modal__close {
border: 0;
background: #e8efec;
width: 34px;
height: 34px;
border-radius: 10px;
font-size: 1.3rem;
line-height: 1;
cursor: pointer;
color: var(--ml-green-deep);
}
.meetlet-modal__body { padding: 1rem 1.15rem 1.25rem; }
.meetlet-modal--confirm .meetlet-modal__dialog {
width: min(480px, 100%);
max-height: min(86vh, 640px);
overflow: hidden;
display: flex;
flex-direction: column;
}
.meetlet-modal--confirm .meetlet-modal__head {
padding: 1.2rem 1.15rem 1rem;
border-radius: 18px 18px 0 0;
}
.meetlet-modal--confirm .meetlet-modal__body {
overflow: auto;
}
.meetlet-modal__lead {
margin: 0 0 .85rem;
font-size: 1rem;
font-weight: 650;
line-height: 1.65;
color: #00261a;
}
.meetlet-modal.is-busy .meetlet-modal__close,
.meetlet-modal.is-busy .meetlet-modal__foot {
display: none !important;
}
.meetlet-modal.is-busy .meetlet-modal__backdrop {
pointer-events: none;
}
.meetlet-modal__busy {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: .85rem;
padding: .35rem 0 .15rem;
text-align: center;
}
.meetlet-modal__busy .meetlet-modal__lead {
margin: 0;
}
.meetlet-modal__spinner {
width: 28px;
height: 28px;
border-radius: 50%;
border: 2px solid rgba(82, 204, 163, 0.25);
border-top-color: var(--ml-green-deep);
animation: meetlet-spin .8s linear infinite;
}
.meetlet-modal__callout {
margin: 0 0 .9rem;
padding: .85rem 1rem .7rem;
border-radius: 12px;
border: 1px solid #e6c56a;
background: #fff8e6;
color: #5a4700;
}
.meetlet-modal__callout-title {
margin: 0 0 .4rem;
font-weight: 700;
color: #5a4700;
}
.meetlet-modal__limits {
margin: 0 0 .55rem;
padding-inline-start: 1.2rem;
}
.meetlet-modal__limits li {
margin: 0 0 .28rem;
line-height: 1.5;
}
.meetlet-modal__upgrade {
margin: 0;
line-height: 1.6;
}
.meetlet-modal__keep {
margin: 0;
color: #334942;
line-height: 1.65;
}
.meetlet-modal__foot {
display: flex;
justify-content: flex-end;
align-items: center;
gap: .6rem;
padding: .9rem 1.15rem 1.05rem;
border-top: 1px solid #cfe8de;
background: linear-gradient(180deg, #f7fcfa 0%, #ffffff 70%);
}
.meetlet-modal__foot .btn {
border-radius: 10px;
font-weight: 700;
padding: .5rem 1.15rem;
}
.meetlet-modal__foot .btn-success {
background: #52cca3;
border-color: #3db892;
color: #00261a;
}
.meetlet-modal__foot .btn-success:hover,
.meetlet-modal__foot .btn-success:focus {
background: #6fd9b5;
border-color: #52cca3;
color: #00261a;
}
.meetlet-modal__foot .btn-outline-danger {
color: #a33b3b;
border-color: #d9a0a0;
background: #fff;
}
.meetlet-modal__foot .btn-outline-danger:hover,
.meetlet-modal__foot .btn-outline-danger:focus {
color: #fff;
background: #c0392b;
border-color: #c0392b;
}
/* rtl:begin:ignore */
html[dir="rtl"] .meetlet-modal--confirm .meetlet-modal__title,
html[dir="rtl"] .meetlet-modal--confirm .meetlet-modal__body,
html[dir="rtl"] .meetlet-modal--confirm .meetlet-modal__lead {
text-align: right;
}
/* rtl:end:ignore */
/* Marker class on html; lock scroll on body only — overflow+height on html resets scroll position. */
html.meetlet-modal-open body {
overflow: hidden;
touch-action: none;
overscroll-behavior: none;
}
@media (max-width: 900px) {
.meetlet-hero { grid-template-columns: 1fr; }
}
.meetlet-meetingpicker-wrap {
margin: 0 0 1rem;
}
.meetlet-meetingpicker {
max-width: 28rem;
}
.meetlet-meetingpicker__search {
width: 100%;
margin-bottom: .35rem;
}
.meetlet-meetingpicker__hint {
min-height: 1.1rem;
font-size: .82rem;
color: #4a6b5f;
}
.meetlet-combobox {
position: relative;
max-width: 32rem;
z-index: 1;
}
.meetlet-combobox.is-open {
z-index: 40;
}
#fitem_id_existingscoid_ui,
.fitem:has([data-meeting-picker]) {
overflow: visible;
}
.fitem:has([data-meeting-picker].is-open) {
z-index: 20;
position: relative;
}
.meetlet-combobox__toggle {
display: flex;
align-items: center;
justify-content: space-between;
gap: .5rem;
width: 100%;
min-height: 2.4rem;
padding: .45rem .7rem;
border: 1px solid #9bb8ad;
border-radius: 8px;
background: #fff;
color: #12352a;
text-align: start;
cursor: pointer;
}
.meetlet-combobox.is-readonly .meetlet-combobox__toggle,
.meetlet-combobox__toggle:disabled {
opacity: .75;
cursor: default;
background: #f3f7f5;
}
.meetlet-combobox__value {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.meetlet-combobox__caret {
opacity: .65;
}
.meetlet-combobox__panel {
position: absolute;
inset-inline: 0;
top: calc(100% + 4px);
z-index: 30;
background: #fff;
border: 1px solid #9bb8ad;
border-radius: 10px;
box-shadow: 0 10px 28px rgba(16, 40, 32, .16);
padding: .55rem;
}
.meetlet-combobox__search {
width: 100%;
margin: 0 0 .45rem;
padding: .4rem .55rem;
border: 1px solid #c5d8cf;
border-radius: 8px;
}
.meetlet-combobox__list {
list-style: none;
margin: 0;
padding: 0;
max-height: 14rem;
overflow: auto;
}
.meetlet-combobox__option {
display: block;
width: 100%;
border: 0;
background: transparent;
text-align: start;
padding: .45rem .5rem;
border-radius: 6px;
color: #12352a;
cursor: pointer;
}
.meetlet-combobox__option:hover,
.meetlet-combobox__option:focus-visible {
background: #e8f7f1;
outline: none;
}
.meetlet-combobox__option.is-selected {
background: #d4f0e5;
font-weight: 700;
}
.meetlet-combobox__hint {
min-height: 1rem;
margin-top: .35rem;
font-size: .8rem;
color: #4a6b5f;
}
/* Switch toggle (admin settings + activity form + access matrix). */
.meetlet-switch {
display: inline-flex;
align-items: center;
gap: .4rem;
cursor: pointer;
margin: 0;
padding: 0;
vertical-align: middle;
position: relative;
line-height: 0;
}
.meetlet-switch__input {
position: absolute !important;
opacity: 0 !important;
width: 1px !important;
height: 1px !important;
overflow: hidden !important;
clip: rect(0, 0, 0, 0) !important;
pointer-events: none;
}
.meetlet-switch__track {
--meetlet-switch-pad: 3px;
--meetlet-switch-thumb: 16px;
position: relative;
width: 40px;
height: 22px;
flex: 0 0 40px;
border-radius: 999px;
background: #c5d5ce;
box-shadow: inset 0 0 0 1px rgba(0, 38, 26, .08);
transition: background .18s ease;
overflow: hidden;
box-sizing: border-box;
/* rtl:ignore */ direction: ltr; /* Keep thumb travel physical LTR; icons stay readable. */
}
.meetlet-switch__thumb {
position: absolute;
top: var(--meetlet-switch-pad);
left: var(--meetlet-switch-pad);
width: var(--meetlet-switch-thumb);
height: var(--meetlet-switch-thumb);
border-radius: 50%;
background: #fff;
box-shadow: 0 1px 3px rgba(0, 38, 26, .2);
transition: left .18s ease;
box-sizing: border-box;
}
.meetlet-switch__thumb::before {
content: "";
position: absolute;
inset: 3px;
background: #4a6b5f;
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='black' d='M2.1 2.1a.9.9 0 0 1 1.27 0L6 4.73 8.63 2.1A.9.9 0 1 1 9.9 3.37L7.27 6 9.9 8.63A.9.9 0 1 1 8.63 9.9L6 7.27 3.37 9.9A.9.9 0 1 1 2.1 8.63L4.73 6 2.1 3.37a.9.9 0 0 1 0-1.27z'/%3E%3C/svg%3E") center / contain no-repeat;
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='black' d='M2.1 2.1a.9.9 0 0 1 1.27 0L6 4.73 8.63 2.1A.9.9 0 1 1 9.9 3.37L7.27 6 9.9 8.63A.9.9 0 1 1 8.63 9.9L6 7.27 3.37 9.9A.9.9 0 1 1 2.1 8.63L4.73 6 2.1 3.37a.9.9 0 0 1 0-1.27z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.meetlet-switch__input:checked + .meetlet-switch__track {
background: #52cca3;
}
.meetlet-switch__input:checked + .meetlet-switch__track .meetlet-switch__thumb {
/* Stay inside the track: pad + thumb + pad = full width. */
left: calc(100% - var(--meetlet-switch-thumb) - var(--meetlet-switch-pad));
transform: none;
}
.meetlet-switch__input:checked + .meetlet-switch__track .meetlet-switch__thumb::before {
background: #00261a;
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='black' d='M10.2 3.1a.85.85 0 0 1 0 1.2L5.35 9.15a.85.85 0 0 1-1.2 0L1.8 6.8A.85.85 0 0 1 3 5.6l1.75 1.75 4.25-4.25a.85.85 0 0 1 1.2 0z'/%3E%3C/svg%3E") center / contain no-repeat;
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='black' d='M10.2 3.1a.85.85 0 0 1 0 1.2L5.35 9.15a.85.85 0 0 1-1.2 0L1.8 6.8A.85.85 0 0 1 3 5.6l1.75 1.75 4.25-4.25a.85.85 0 0 1 1.2 0z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.meetlet-switch__input:focus-visible + .meetlet-switch__track {
outline: 2px solid #52cca3;
outline-offset: 2px;
}
.meetlet-switch--compact .meetlet-switch__track {
--meetlet-switch-pad: 2px;
--meetlet-switch-thumb: 12px;
width: 30px;
height: 16px;
flex-basis: 30px;
}
.meetlet-switch--compact .meetlet-switch__thumb::before {
inset: 2px;
}
.meetlet-switch--compact .meetlet-switch__input:checked + .meetlet-switch__track .meetlet-switch__thumb {
left: calc(100% - var(--meetlet-switch-thumb) - var(--meetlet-switch-pad));
transform: none;
}
.meetlet-access-cell .meetlet-switch {
justify-content: center;
}
.meetlet-admin-settings .form-item:has(.meetlet-switch) {
align-items: flex-start;
}
.meetlet-admin-settings .form-item:has(.meetlet-switch) > .form-setting {
display: flex;
flex-direction: column;
/* Toward the label column: left in LTR, right in RTL. */
align-items: start;
}
.meetlet-admin-settings .form-item:has(.meetlet-switch) > .form-label,
.meetlet-admin-settings .form-item:has(.meetlet-switch) > .form-setting {
padding-top: .4rem;
}
.meetlet-admin-settings .form-item:has(.meetlet-switch) .form-label > label {
margin: 0;
padding: 0;
line-height: 22px;
display: flex;
align-items: center;
min-height: 22px;
}
.meetlet-admin-settings .form-item:has(.meetlet-switch) .form-check,
.meetlet-admin-settings .form-item:has(.meetlet-switch) .checkbox,
.meetlet-admin-settings .form-item:has(.meetlet-switch) .form-checkbox {
display: inline-flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
gap: .45rem;
margin: 0;
padding: 0;
min-height: 22px;
line-height: 22px;
width: auto;
max-width: 100%;
}
/* rtl:begin:ignore */
html[dir="rtl"] .meetlet-admin-settings .form-item:has(.meetlet-switch) .form-check,
html[dir="rtl"] .meetlet-admin-settings .form-item:has(.meetlet-switch) .checkbox,
html[dir="rtl"] .meetlet-admin-settings .form-item:has(.meetlet-switch) .form-checkbox {
/* Keep switch on the label side (visual right), same as pre-compact layout. */
flex-direction: row-reverse;
justify-content: flex-end;
text-align: right;
}
/* rtl:end:ignore */
/* Site admin: Moodle role → Adobe Connect role mapping (chip radios). */
.meetlet-rolemapping-table .meetlet-rolemapping-cell {
white-space: normal;
vertical-align: middle;
}
.meetlet-rolechip-group {
display: inline-flex;
flex-wrap: wrap;
align-items: center;
gap: .35rem;
padding: .2rem;
border-radius: 999px;
background: #eef5f1;
box-shadow: inset 0 0 0 1px rgba(0, 38, 26, .08);
}
.meetlet-rolechip {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
margin: 0;
padding: .4rem .9rem;
border-radius: 999px;
cursor: pointer;
user-select: none;
color: #3d5c50;
background: transparent;
font-weight: 600;
font-size: .875rem;
line-height: 1.2;
transition: background .15s ease, color .15s ease, box-shadow .15s ease, transform .12s ease;
}
.meetlet-rolechip__input {
position: absolute !important;
opacity: 0 !important;
width: 1px !important;
height: 1px !important;
overflow: hidden !important;
clip: rect(0, 0, 0, 0) !important;
pointer-events: none;
}
.meetlet-rolechip__text {
position: relative;
z-index: 1;
}
.meetlet-rolechip:hover {
color: #00261a;
background: rgba(255, 255, 255, .65);
}
.meetlet-rolechip:has(.meetlet-rolechip__input:checked) {
color: #00261a;
background: #fff;
box-shadow:
0 1px 2px rgba(0, 38, 26, .12),
0 0 0 1px rgba(82, 204, 163, .45);
}
.meetlet-rolechip:has(.meetlet-rolechip__input:checked)[data-role-value="host"] {
background: linear-gradient(180deg, #e8fff6 0%, #d4f7e9 100%);
box-shadow:
0 1px 2px rgba(0, 38, 26, .14),
0 0 0 1px #52cca3;
}
.meetlet-rolechip:has(.meetlet-rolechip__input:checked)[data-role-value="presenter"] {
background: linear-gradient(180deg, #fff8e8 0%, #ffefc8 100%);
box-shadow:
0 1px 2px rgba(0, 38, 26, .12),
0 0 0 1px #e0b44a;
}
.meetlet-rolechip:has(.meetlet-rolechip__input:focus-visible) {
outline: 2px solid #52cca3;
outline-offset: 2px;
}
.meetlet-rolechip:active {
transform: scale(.98);
}
.meetlet-settingchip-group {
width: auto;
max-width: 100%;
gap: .28rem;
padding: .22rem;
border-radius: 999px;
background: #eef5f1;
box-shadow: inset 0 0 0 1px rgba(0, 38, 26, .08);
}
/* Activity form: compact two-option source chips (e.g. role mapping mode). */
.meetlet-settingchip-group--binary {
display: inline-flex;
flex-wrap: nowrap;
width: auto;
}
.meetlet-settingchip-group--binary .meetlet-settingchip {
flex: 0 0 auto;
min-width: 5.5rem;
padding-inline: .85rem;
}
.mform .fitem:has(.meetlet-settingchip-group--binary) .felement {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: .35rem;
}
.mform .fitem:has(.meetlet-settingchip-group--binary) .meetlet-settinghint {
flex: 1 1 12rem;
margin-top: 0;
}
.meetlet-settingchip {
min-width: 0;
flex: 0 1 auto;
align-items: center;
text-align: center;
border-radius: 999px;
padding: .42rem .78rem;
white-space: nowrap;
}
.meetlet-settingchip__content {
display: inline-flex;
align-items: center;
justify-content: center;
gap: .38rem;
min-width: 0;
}
.meetlet-settingchip__meta {
display: inline-flex;
align-items: center;
max-width: 100%;
padding: .08rem .42rem;
border-radius: 999px;
background: rgba(0, 38, 26, .08);
color: #4a6b5f;
font-size: .73rem;
font-weight: 650;
line-height: 1.35;
white-space: nowrap;
}
.meetlet-settingchip:has(.meetlet-settingchip__input:checked) .meetlet-settingchip__meta {
background: rgba(0, 38, 26, .06);
color: #334942;
}
.meetlet-settinghint {
margin-top: .45rem;
font-size: .84rem;
line-height: 1.55;
color: #4a6b5f;
}
.mform .fitem:has(.meetlet-settingchip-group) .felement {
max-width: 100%;
}
.mform .fitem.is-disabled,
.mform .fitem .is-disabled {
opacity: .58;
}
@media (max-width: 720px) {
.meetlet-rolechip-group {
border-radius: 14px;
width: 100%;
}
.meetlet-rolechip {
flex: 1 1 auto;
text-align: center;
}
.meetlet-settingchip-group {
border-radius: 14px;
padding: .28rem;
gap: .3rem;
}
.meetlet-settingchip-group--binary {
flex-wrap: wrap;
width: 100%;
}
.meetlet-settingchip-group--binary .meetlet-settingchip {
flex: 1 1 calc(50% - .3rem);
}
.mform .fitem:has(.meetlet-settingchip-group--binary) .meetlet-settinghint {
flex-basis: 100%;
margin-top: .25rem;
}
.meetlet-settingchip {
flex: 1 1 calc(50% - .3rem);
padding-inline: .65rem;
}
.meetlet-settingchip__content {
flex-wrap: wrap;
gap: .22rem;
}
}
/* Cron & video-delivery dashboard (plugin settings) */
.meetlet-admin-settings .form-item:has(#meetlet-cronmon) {
display: block;
padding: 0;
border: 0;
background: transparent;
}
.meetlet-admin-settings .form-item:has(#meetlet-cronmon) > .form-label,
.meetlet-admin-settings .form-item:has(#meetlet-cronmon) .form-description,
.meetlet-admin-settings .form-item:has(#meetlet-cronmon) .form-defaultinfo,
.meetlet-admin-settings .form-item:has(#meetlet-cronmon) .form-setting > .form-shortname {
display: none !important;
}
.meetlet-admin-settings .form-item:has(#meetlet-cronmon) > .form-setting {
max-width: none;
width: 100%;
float: none;
}
.meetlet-cronmon {
--ml-green: #52cca3;
--ml-green-deep: #00261a;
--ml-muted: #4a6b5f;
--ml-line: #cfe8de;
color: var(--ml-green-deep);
margin: 0 0 1.5rem;
}
.meetlet-cronmon.is-refreshing {
opacity: .82;
transition: opacity .25s ease;
}
.meetlet-cronmon__hero {
display: flex;
flex-wrap: wrap;
gap: 1.25rem;
align-items: center;
justify-content: space-between;
padding: 1.15rem 1.25rem;
margin: 0 0 1rem;
border-radius: 12px;
background: #fafbfc;
color: var(--ml-green-deep);
border: 1px solid #e2e8f0;
box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
}
.meetlet-cronmon__copy {
min-width: 12rem;
flex: 1 1 16rem;
}
.meetlet-cronmon__copy h3 {
margin: .15rem 0 .35rem;
font-size: 1.25rem;
font-weight: 700;
color: var(--ml-green-deep);
}
.meetlet-cronmon__intro {
margin: 0;
color: var(--ml-muted);
max-width: none;
line-height: 1.55;
white-space: nowrap;
}
.meetlet-cronmon__live {
display: inline-flex;
align-items: center;
gap: .4rem;
margin: 0 0 .2rem;
padding: .12rem .65rem;
border-radius: 999px;
font-size: .72rem;
font-weight: 800;
letter-spacing: .06em;
text-transform: uppercase;
background: #e6faf3;
color: #0d9f6e;
border: 1px solid #b8e8d6;
}
.meetlet-cronmon__live::before {
content: '';
width: .55rem;
height: .55rem;
border-radius: 50%;
background: #0d9f6e;
box-shadow: 0 0 0 0 rgba(13, 159, 110, .55);
animation: meetlet-cronmon-pulse 1.6s ease-out infinite;
}
@keyframes meetlet-cronmon-pulse {
0% { box-shadow: 0 0 0 0 rgba(13, 159, 110, .45); }
70% { box-shadow: 0 0 0 10px rgba(13, 159, 110, 0); }
100% { box-shadow: 0 0 0 0 rgba(13, 159, 110, 0); }
}
.meetlet-cronmon__timers {
display: flex;
gap: 1rem;
flex: 0 0 auto;
}
.meetlet-cronmon__timer {
position: relative;
width: 6.4rem;
text-align: center;
}
.meetlet-cronmon__ring {
width: 6.4rem;
height: 6.4rem;
transform: rotate(-90deg);
display: block;
}
.meetlet-cronmon__ring-track,
.meetlet-cronmon__ring-prog {
fill: none;
stroke-width: 6;
}
.meetlet-cronmon__ring-track { stroke: #e2e8f0; }
.meetlet-cronmon__ring-prog {
stroke: #52cca3;
stroke-linecap: round;
stroke-dasharray: 263.89;
transition: stroke .2s ease;
}
.meetlet-cronmon__timer.is-low .meetlet-cronmon__ring-prog { stroke: #d97706; }
.meetlet-cronmon__timer.is-due .meetlet-cronmon__ring-prog {
stroke: #0d9f6e;
animation: meetlet-cronmon-glow 1.1s ease-in-out infinite;
}
@keyframes meetlet-cronmon-glow {
0%, 100% { opacity: 1; }
50% { opacity: .35; }
}
.meetlet-cronmon__tick {
position: absolute;
inset: 1.15rem 0 1.7rem;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.05rem;
font-weight: 800;
font-variant-numeric: tabular-nums;
color: var(--ml-green-deep);
pointer-events: none;
}
.meetlet-cronmon__timerlabel {
display: block;
margin-top: .15rem;
font-size: .72rem;
font-weight: 650;
color: var(--ml-muted);
line-height: 1.3;
}
.meetlet-cronmon__cards {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: .75rem;
margin: 0 0 1rem;
}
.meetlet-cronmon__card {
background: #fff;
border: 1px solid var(--ml-line);
border-radius: 14px;
padding: .9rem 1rem .75rem;
min-height: 7.5rem;
}
.meetlet-cronmon__card h4 {
margin: 0 0 .45rem;
font-size: .95rem;
font-weight: 800;
}
.meetlet-cronmon__card p {
margin: 0 0 .3rem;
font-size: .85rem;
line-height: 1.45;
color: #334942;
word-break: break-word;
}
.meetlet-cronmon__muted { color: var(--ml-muted) !important; font-size: .8rem !important; }
.meetlet-cronmon__card--ok { border-color: #9fdcc4; background: linear-gradient(180deg, #f3fbf8 0%, #fff 70%); }
.meetlet-cronmon__card--warn { border-color: #e6c56a; background: linear-gradient(180deg, #fff8e6 0%, #fff 70%); }
.meetlet-cronmon__card--bad { border-color: #ead3d0; background: linear-gradient(180deg, #fff8f7 0%, #fff 70%); }
.meetlet-cronmon__counts {
display: flex;
flex-wrap: wrap;
gap: .45rem;
margin: 0 0 .9rem;
}
.meetlet-cronmon__chip {
display: inline-flex;
align-items: center;
gap: .3rem;
padding: .28rem .7rem;
border-radius: 999px;
font-size: .78rem;
font-weight: 650;
background: #e6faf3;
color: #00261a;
border: 1px solid #cfe8de;
}
.meetlet-cronmon__chip b { font-weight: 800; }
.meetlet-cronmon__chip--queued { background: #e8f4ff; border-color: #c5ddf5; }
.meetlet-cronmon__chip--running { background: #e6faf3; border-color: #9fdcc4; }
.meetlet-cronmon__chip--waiting { background: #fff4d6; border-color: #e6c56a; }
.meetlet-cronmon__pill--waiting { background: #ffe7a3; }
.meetlet-cronmon__chip--failed { background: #fff1f0; border-color: #ead3d0; }
.meetlet-cronmon__chip--import { background: #eef2ff; border-color: #c5ccef; }
.meetlet-cronmon__pill--import { background: #4c5fd7; color: #fff; }
.meetlet-cronmon__chip--ready { background: #d9f7ea; border-color: #52cca3; }
.meetlet-cronmon__videos-head {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: .5rem .85rem;
margin: 0 0 .6rem;
}
.meetlet-cronmon__videos-head h4 {
margin: 0;
font-size: 1.02rem;
font-weight: 800;
}
.meetlet-cronmon__refreshbtn {
margin-inline-start: auto;
position: relative;
}
.meetlet-cronmon__refreshbtn.is-busy {
pointer-events: none;
}
.meetlet-cronmon__refreshbtn.is-busy svg,
.meetlet-cronmon__refreshbtn.is-busy .meetlet-btn-with-icon__label {
opacity: 0.35;
}
.meetlet-cronmon__refreshbtn.is-busy::after {
content: '';
position: absolute;
inset: 0;
margin: auto;
width: 16px;
height: 16px;
border-radius: 50%;
border: 2px solid rgba(82, 204, 163, 0.25);
border-top-color: var(--ml-green-deep);
animation: meetlet-spin .8s linear infinite;
}
.meetlet-cronmon__toolbar {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: .45rem .7rem;
margin: 0 0 .75rem;
padding: .7rem .85rem;
border: 1px solid #e7f3ee;
border-radius: 12px;
background: linear-gradient(180deg, #f9fdfb 0%, #fff 100%);
}
.meetlet-cronmon__columns-label {
color: #3d5c52;
font-size: .8rem;
font-weight: 750;
white-space: nowrap;
}
.meetlet-cronmon__columnchips {
display: inline-flex;
flex-wrap: wrap;
align-items: center;
gap: .35rem;
}
.meetlet-cronmon__columnchip {
border: 1px solid #cfe8de;
border-radius: 999px;
background: #fff;
color: #3d5c52;
padding: .26rem .7rem;
font-size: .76rem;
font-weight: 700;
line-height: 1.25;
cursor: pointer;
transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.meetlet-cronmon__columnchip:hover,
.meetlet-cronmon__columnchip:focus-visible {
background: #edf8f4;
border-color: #9fdcc4;
color: #00261a;
outline: none;
}
.meetlet-cronmon__columnchip.is-active {
background: #e6faf3;
border-color: #52cca3;
color: #00261a;
}
.meetlet-cronmon__columnchip[disabled] {
opacity: .72;
cursor: default;
}
.meetlet-cronmon__tablewrap {
overflow: auto;
border: 1px solid var(--ml-line);
border-radius: 14px;
background: #fff;
}
.meetlet-cronmon__table {
width: 100%;
margin: 0;
border-collapse: collapse;
}
.meetlet-cronmon__table th,
.meetlet-cronmon__table td {
padding: .65rem .8rem;
text-align: start;
border-bottom: 1px solid #e7f3ee;
vertical-align: top;
font-size: .85rem;
}
.meetlet-cronmon__table th {
background: #f3fbf8;
font-weight: 750;
color: #00261a;
white-space: nowrap;
}
.meetlet-cronmon__table tr:last-child td { border-bottom: 0; }
.meetlet-cronmon.is-awaiting .meetlet-cronmon__cards {
min-height: 7rem;
}
.meetlet-cronmon__loading {
grid-column: 1 / -1;
padding: 1.4rem 1rem;
text-align: center;
color: var(--ml-muted);
font-weight: 600;
}
.meetlet-cronmon__name { font-weight: 650; }
.meetlet-cronmon__link {
color: inherit;
font-weight: 650;
text-decoration: none;
}
.meetlet-cronmon__link:hover,
.meetlet-cronmon__link:focus-visible {
color: #0a5c45;
text-decoration: underline;
}
.meetlet-cronmon__sco { color: var(--ml-muted); font-weight: 500; }
.meetlet-cronmon__sco-id,
.meetlet-cronmon__sco-head {
direction: ltr;
unicode-bidi: isolate;
}
.meetlet-cronmon__sco-id {
font-variant-numeric: tabular-nums;
color: #3d5c52;
white-space: nowrap;
}
.meetlet-cronmon__sco-head[data-tip] {
cursor: help;
}
/* Ops cell: no box chrome — only icon buttons keep their own borders. */
.meetlet-cronmon__table td.meetlet-cronmon__dl,
.meetlet-cronmon__dl {
text-align: end;
white-space: nowrap;
vertical-align: middle;
border-left: 0 !important;
border-right: 0 !important;
border-top: 0 !important;
background: transparent !important;
box-shadow: none !important;
outline: none !important;
}
.meetlet-cronmon__dl .meetlet-iconactions {
display: inline-flex;
flex-wrap: nowrap;
align-items: center;
justify-content: flex-end;
gap: .35rem;
border: 0 !important;
background: transparent !important;
box-shadow: none !important;
outline: none !important;
padding: 0;
margin: 0;
}
.meetlet-cronmon__dl .meetlet-iconbtn {
vertical-align: middle;
}
.meetlet-cronmon__detail { color: var(--ml-muted); max-width: 18rem; }
.meetlet-cronmon__when { white-space: nowrap; color: #3d5c52; }
.meetlet-cronmon__empty {
text-align: center;
color: var(--ml-muted);
padding: 1.4rem !important;
}
.meetlet-cronmon__pill {
display: inline-flex;
padding: .15rem .55rem;
border-radius: 999px;
font-size: .75rem;
font-weight: 750;
background: #e6faf3;
color: #00261a;
white-space: nowrap;
}
.meetlet-cronmon__pill--queued { background: #dceeff; }
.meetlet-cronmon__pill--running { background: #52cca3; color: #00261a; }
.meetlet-cronmon__pill--retry { background: #ffe7a3; }
.meetlet-cronmon__pill--failed { background: #f8d0cc; color: #7a1f1a; }
.meetlet-cronmon__pill--ready { background: #0d9f6e; color: #fff; }
.meetlet-cronmon__pill--pending { background: #e7eeeb; }
@media (max-width: 900px) {
.meetlet-cronmon__cards { grid-template-columns: 1fr; }
.meetlet-cronmon__hero { align-items: flex-start; }
.meetlet-cronmon__intro { white-space: normal; }
.meetlet-cronmon__toolbar {
align-items: flex-start;
}
}
/* rtl:begin:ignore */
html[dir="rtl"] .meetlet-admin-settings #id_s_meetletacbfree_agent_dispatch,
html[dir="rtl"] .meetlet-admin-settings select[name="s_meetletacbfree_agent_dispatch"] {
direction: rtl;
text-align: right;
}
/* rtl:end:ignore */
/* rtl:begin:ignore */
html[dir="rtl"] .meetlet-admin-settings #id_s_meetletacbfree_agent_dispatch option,
html[dir="rtl"] .meetlet-admin-settings select[name="s_meetletacbfree_agent_dispatch"] option {
direction: rtl;
text-align: right;
}
/* rtl:end:ignore */
/* rtl:begin:ignore */
html[dir="rtl"] .path-admin .meetlet-hourpicker,
html[dir="rtl"] .path-admin .meetlet-hourpresets {
direction: rtl;
}
/* rtl:end:ignore */
.meetlet-gate-msg {
white-space: pre-wrap;
line-height: 1.65;
}
.meetlet-err {
display: grid;
gap: .75rem;
color: #00261a;
}
.meetlet-err__lead {
margin: 0;
font-size: 1rem;
font-weight: 650;
line-height: 1.65;
}
.meetlet-err__codebox {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: .5rem .75rem;
padding: .65rem .85rem;
border-radius: 12px;
border: 1px dashed #9fdcc4;
background: #f3fbf8;
}
.meetlet-err__codelabel {
font-size: .8rem;
font-weight: 700;
color: #4a6b5f;
}
.meetlet-err__codebox code {
font-size: 1.02rem;
font-weight: 800;
letter-spacing: .04em;
padding: .2rem .55rem;
border-radius: 8px;
background: #00261a;
color: #52cca3;
direction: ltr;
unicode-bidi: isolate;
cursor: pointer;
}
.meetlet-err__codebox code.is-copied {
background: #0d9f6e;
color: #fff;
}
.meetlet-err__facts {
display: grid;
gap: .45rem;
margin: 0;
}
.meetlet-err__fact {
display: grid;
grid-template-columns: minmax(7rem, 11rem) 1fr;
gap: .4rem 1rem;
padding: .45rem .6rem;
border-radius: 10px;
background: #f7fcfa;
border: 1px solid #e7f3ee;
}
.meetlet-err__fact dt {
margin: 0;
font-size: .78rem;
font-weight: 750;
color: #4a6b5f;
}
.meetlet-err__fact dd {
margin: 0;
}
.meetlet-err__fact code {
font-size: .86rem;
padding: .05rem .35rem;
border-radius: 5px;
background: #e6faf3;
direction: ltr;
unicode-bidi: isolate;
word-break: break-all;
}
.meetlet-err__fix {
padding: .75rem .9rem .55rem;
border-radius: 12px;
border: 1px solid #cfe8de;
background: #fff;
line-height: 1.65;
}
.meetlet-err__fix ol,
.meetlet-err__fix ul {
margin: 0;
padding-inline-start: 1.2rem;
}
.meetlet-err__fix li { margin: 0 0 .4rem; }
.meetlet-err__fix code {
font-size: .86em;
padding: .05rem .3rem;
border-radius: 4px;
background: #e6faf3;
}
.meetlet-err__prelabel {
margin: 0;
font-size: .8rem;
font-weight: 750;
color: #4a6b5f;
}
.meetlet-err__xml {
margin: 0;
padding: .75rem .9rem;
overflow-x: auto;
border-radius: 10px;
border: 1px solid #cfe8de;
background: #0a3d2e;
color: #e6faf3;
font-size: .8rem;
line-height: 1.45;
direction: ltr;
text-align: left;
white-space: pre;
max-height: 14rem;
}
.meetlet-err__guide {
margin: 0;
font-size: .85rem;
color: #4a6b5f;
line-height: 1.55;
}
@media (max-width: 640px) {
.meetlet-err__fact {
grid-template-columns: 1fr;
}
}
/* Course page: keep branded monologo colours (Moove / filtericon fallback). */
.activityiconcontainer.communication.isbranded .activityicon,
.activityiconcontainer.communication .activityicon.nofilter,
.activityiconcontainer .activityicon[src*="mod/meetletacbfree"] {
filter: none !important;
}
/* ===== MeetLet admin settings (scoped under .meetlet-admin-settings) ===== */
.meetlet-admin-settings .settingsform > h2 {
display: none;
}
.meetlet-admin-settings .meetlet-settings-hero {
display:flex; gap:1rem; align-items:center;
padding:1.15rem 1.25rem; margin:0 0 1rem;
border-radius:16px;
background:
radial-gradient(700px 180px at 100% 0%, rgba(82,204,163,.22), transparent 55%),
linear-gradient(135deg, #00261a 0%, #0a3d2e 60%, #145c45 100%);
color:#fff;
border:1px solid rgba(82,204,163,.25);
}
.meetlet-admin-settings .meetlet-settings-hero img {
width:56px; height:56px; object-fit:contain;
background:rgba(255,255,255,.95); border-radius:12px; padding:6px;
}
.meetlet-admin-settings .meetlet-settings-hero h3 {
margin:0 0 .2rem; font-size:1.2rem; font-weight:700; color:#fff;
display:flex; flex-wrap:wrap; align-items:center; gap:.45rem .55rem;
}
/* rtl:begin:ignore */
.meetlet-admin-settings .meetlet-settings-hero .meetlet-settings-version {
display:inline-block;
flex:0 0 auto;
align-self:center;
margin-inline-start:auto;
padding:.12rem .55rem;
font-size:.72rem; font-weight:650; line-height:1.35;
letter-spacing:.02em;
border-radius:999px;
background:rgba(82,204,163,.18);
border:1px solid rgba(82,204,163,.35);
color:#b8f5df;
white-space:nowrap;
direction:ltr;
unicode-bidi:isolate;
}
/* rtl:end:ignore */
.meetlet-admin-settings .meetlet-settings-hero p {
margin:0; opacity:.85; color:#e6faf3;
white-space:nowrap;
max-width:none;
}
.meetlet-admin-settings .meetlet-settings-copy {
min-width:0; flex:1 1 auto;
}
@media (max-width: 900px) {
.meetlet-admin-settings .meetlet-settings-hero p {
white-space:normal;
}
}
.meetlet-admin-settings .nav-tabs {
border-bottom:2px solid #cfe8de;
gap:.2rem;
}
.meetlet-admin-settings .nav-tabs .nav-link {
border:0 !important;
border-radius:6px !important;
padding:.45rem .9rem;
color:#00261a;
font-weight:650;
box-shadow:none !important;
outline:none !important;
}
.meetlet-admin-settings .nav-tabs .nav-link:hover {
background:#e6faf3; color:#00261a;
}
.meetlet-admin-settings .nav-tabs .nav-link.active {
background:#52cca3; color:#00261a;
}
.meetlet-admin-settings .nav-tabs .nav-link:focus,
.meetlet-admin-settings .nav-tabs .nav-link:focus-visible,
.meetlet-admin-settings .nav-tabs .nav-link:active {
outline:none !important;
box-shadow:none !important;
border:0 !important;
}
.meetlet-admin-settings .meetlet-feature-group {
margin:1rem 0 .35rem;
padding:1rem 1.1rem .35rem;
border:1px solid #cfe8de;
border-radius:12px;
background:linear-gradient(180deg, #f3fbf8 0%, #ffffff 55%);
}
.meetlet-admin-settings .meetlet-feature-group h4 {
margin:0 0 .25rem; color:#00261a; font-size:1.02rem; font-weight:700;
}
.meetlet-admin-settings .meetlet-feature-group p {
margin:0 0 .5rem; color:#4a6b5f; font-size:.9rem;
}
.meetlet-admin-settings .meetlet-settings-card {
background:#fff; border:1px solid #cfe8de; border-radius:14px;
padding:1rem 1.15rem; margin:.35rem 0 1rem;
}
.meetlet-admin-settings .meetlet-license-badge {
font-weight: 700;
border-radius: 999px;
padding: .35rem .65rem;
}
.meetlet-admin-settings .meetlet-license-badge--active {
background: var(--ml-green, #52cca3);
color: var(--ml-green-deep, #00261a);
}
.meetlet-admin-settings .meetlet-license-badge--inactive {
background: #fff4d6;
color: #5a4700;
}
.meetlet-admin-settings #meetlet-license-modal.meetlet-modal,
.meetlet-admin-settings #meetlet-registration-modal.meetlet-modal,
.meetlet-admin-settings #meetlet-cronmon-modal.meetlet-modal,
.meetlet-admin-settings #meetlet-access-reset-modal.meetlet-modal {
z-index: 20000 !important;
}
.meetlet-admin-settings .meetlet-access-reset-toolbar {
display: flex;
justify-content: flex-end;
margin: 0 0 .65rem;
}
/* Cron videos ops cell: no extra cell/wrapper border (icon buttons keep theirs). */
.meetlet-admin-settings .meetlet-cronmon__table td.meetlet-cronmon__dl {
border-left: 0 !important;
border-right: 0 !important;
border-top: 0 !important;
background: transparent !important;
box-shadow: none !important;
}
.meetlet-admin-settings .meetlet-cronmon__dl .meetlet-iconactions {
border: 0 !important;
background: transparent !important;
box-shadow: none !important;
padding: 0 !important;
margin: 0 !important;
}
.meetlet-admin-settings .meetlet-modal--confirm .meetlet-modal__dialog {
width: min(480px, 100%);
max-height: min(86vh, 640px);
overflow: hidden;
display: flex;
flex-direction: column;
}
.meetlet-admin-settings .meetlet-modal--confirm .meetlet-modal__head {
padding: 1.2rem 1.15rem 1rem;
border-radius: 18px 18px 0 0;
}
.meetlet-admin-settings .meetlet-modal__lead {
margin: 0 0 .85rem;
font-size: 1rem;
font-weight: 650;
line-height: 1.65;
color: #00261a;
}
.meetlet-admin-settings .meetlet-modal__callout {
margin: 0 0 .9rem;
padding: .85rem 1rem .7rem;
border-radius: 12px;
border: 1px solid #e6c56a;
background: #fff8e6;
color: #5a4700;
}
.meetlet-admin-settings .meetlet-modal__callout-title {
margin: 0 0 .4rem;
font-weight: 700;
}
.meetlet-admin-settings .meetlet-modal__limits {
margin: 0 0 .55rem;
padding-inline-start: 1.2rem;
}
.meetlet-admin-settings .meetlet-modal__keep {
margin: 0;
color: #334942;
line-height: 1.65;
}
.meetlet-admin-settings .meetlet-modal__foot {
display: flex;
justify-content: flex-end;
align-items: center;
gap: .6rem;
flex-wrap: wrap;
padding: .9rem 1.15rem 1.05rem;
border-top: 1px solid #cfe8de;
background: linear-gradient(180deg, #f7fcfa 0%, #ffffff 70%);
}
.meetlet-admin-settings .meetlet-modal__foot .btn {
border-radius: 10px;
font-weight: 700;
padding: .5rem 1.15rem;
}
.meetlet-admin-settings .meetlet-modal__foot .btn-success {
background: #52cca3 !important;
border-color: #3db892 !important;
color: #00261a !important;
}
.meetlet-admin-settings .meetlet-modal__foot .btn-outline-danger {
color: #a33b3b !important;
border-color: #d9a0a0 !important;
background: #fff !important;
}
.meetlet-admin-settings .meetlet-modal__foot .btn-outline-danger:hover,
.meetlet-admin-settings .meetlet-modal__foot .btn-outline-danger:focus {
color: #fff !important;
background: #c0392b !important;
border-color: #c0392b !important;
}
.meetlet-admin-settings .meetlet-about {
display:grid; gap:1.1rem;
}
.meetlet-admin-settings .meetlet-about__brand {
display:flex; justify-content:center; align-items:center;
padding:1.35rem 1.2rem;
border-radius:14px;
background:#f0f2f4;
border:1px solid #e2e6ea;
}
.meetlet-admin-settings .meetlet-about__brand img {
max-width:240px; width:100%; height:auto; display:block; margin:0 auto;
}
.meetlet-admin-settings .meetlet-about h4 { margin:0 0 .55rem; color:#00261a; }
.meetlet-admin-settings .meetlet-about p {
margin:0 0 .85rem; color:#334942; line-height:1.75; text-align:start;
}
.meetlet-admin-settings .meetlet-guide { display:grid; gap:1rem; }
.meetlet-admin-settings .meetlet-guide__heading { margin:0; color:#00261a; font-size:1.15rem; }
.meetlet-admin-settings .meetlet-guide__intro {
margin:0; color:#334942; line-height:1.7;
}
.meetlet-admin-settings .meetlet-guide__callout {
padding:.85rem 1rem; border-radius:10px; line-height:1.65;
border:1px solid #e6c56a; background:#fff8e6; color:#5a4700;
}
.meetlet-admin-settings .meetlet-guide__section {
padding:1rem 1.05rem; border-radius:12px;
border:1px solid #cfe8de; background:#f7fcfa;
}
.meetlet-admin-settings .meetlet-guide__section--current { background:#fff; }
.meetlet-admin-settings .meetlet-guide__section h4 {
margin:0 0 .55rem; color:#00261a; font-size:1.02rem; font-weight:700;
}
.meetlet-admin-settings .meetlet-guide__section h5 {
margin:.85rem 0 .35rem; color:#0a3d2e; font-size:.95rem; font-weight:700;
}
.meetlet-admin-settings .meetlet-guide__body,
.meetlet-admin-settings .meetlet-guide__body p,
.meetlet-admin-settings .meetlet-guide__body li {
color:#334942; line-height:1.7;
}
.meetlet-admin-settings .meetlet-guide__body p { margin:0 0 .55rem; }
.meetlet-admin-settings .meetlet-guide__body ol,
.meetlet-admin-settings .meetlet-guide__body ul { margin:0 0 .35rem; padding-inline-start:1.25rem; }
.meetlet-admin-settings .meetlet-guide__body li { margin:0 0 .35rem; }
.meetlet-admin-settings .meetlet-guide__body code,
.meetlet-admin-settings .meetlet-guide__table code {
font-size:.88em; padding:.05rem .3rem; border-radius:4px;
background:#e6faf3; color:#00261a;
}
.meetlet-admin-settings .meetlet-guide__table {
width:100%; margin:.35rem 0 0; border-collapse:collapse;
}
.meetlet-admin-settings .meetlet-guide__table th,
.meetlet-admin-settings .meetlet-guide__table td {
padding:.45rem .55rem; border:1px solid #cfe8de; vertical-align:top;
text-align:start;
}
.meetlet-admin-settings .meetlet-guide__table thead th,
.meetlet-admin-settings .meetlet-guide__table tbody th {
background:#e6faf3; color:#00261a; font-weight:650;
}
/* rtl:begin:ignore */
.meetlet-admin-settings .meetlet-guide__code {
margin:.35rem 0 0; padding:.75rem .9rem; overflow-x:auto;
border-radius:10px; border:1px solid #cfe8de;
background:#0a3d2e; color:#e6faf3;
font-size:.82rem; line-height:1.45; direction:ltr; text-align:left;
white-space:pre;
}
/* rtl:end:ignore */
.meetlet-admin-settings .meetlet-guide__code-cell code {
font-weight:800; letter-spacing:.02em; direction:ltr; unicode-bidi:isolate;
}
.meetlet-admin-settings .meetlet-guide__table td ol,
.meetlet-admin-settings .meetlet-guide__table td ul {
margin:.15rem 0 0; padding-inline-start:1.15rem;
}
.meetlet-admin-settings .meetlet-guide__table td li { margin:0 0 .25rem; }
.meetlet-admin-settings .meetlet-hourpicker { max-width: 42rem; }
.meetlet-admin-settings .meetlet-hourpicker.is-dimmed,
.meetlet-admin-settings .form-item.is-dimmed {
opacity: .45;
pointer-events: none;
}
.meetlet-admin-settings .meetlet-hourpicker__tz {
margin: 0 0 .55rem; color:#4a6b5f; font-size:.88rem;
}
.meetlet-admin-settings .meetlet-hourpresets {
display:flex; flex-wrap:wrap; gap:.4rem; margin:0 0 .65rem;
}
.meetlet-admin-settings .meetlet-hourpreset {
border:1px solid #9fdcc4; background:#fff; color:#00261a;
border-radius:999px; padding:.28rem .7rem; font-size:.8rem; font-weight:650;
cursor:pointer;
}
.meetlet-admin-settings .meetlet-hourpreset:hover { background:#e6faf3; }
.meetlet-admin-settings .meetlet-hourpreset--ghost { border-color:#cfe8de; color:#4a6b5f; }
.meetlet-admin-settings .meetlet-hourgrid {
display:grid; grid-template-columns:repeat(8, minmax(0,1fr)); gap:.35rem;
}
.meetlet-admin-settings .meetlet-hourchip {
border:1px solid #cfe8de; background:#f7fcfa; color:#00261a;
border-radius:10px; padding:.45rem 0; font-size:.82rem; font-weight:750;
cursor:pointer;
}
.meetlet-admin-settings .meetlet-hourchip.is-on {
background:#52cca3; border-color:#0d9f6e; color:#00261a;
}
.meetlet-admin-settings .meetlet-hourchip.is-now { box-shadow:0 0 0 2px rgba(13,159,110,.35); }
@media (max-width: 720px) {
.meetlet-admin-settings .meetlet-hourgrid { grid-template-columns:repeat(6, minmax(0,1fr)); }
}
.meetlet-admin-settings .meetlet-about__cta-wrap {
display:flex; justify-content:center; margin-top:.35rem; padding-top:.35rem;
}
.meetlet-admin-settings .meetlet-about__cta {
display:inline-flex; align-items:center; justify-content:center;
min-width:220px; padding:.7rem 1.35rem; border-radius:10px;
background:#52cca3; color:#00261a !important;
text-decoration:none !important; font-weight:700;
border:1px solid #3db892;
box-shadow:0 6px 16px rgba(0,38,26,.08);
}
.meetlet-admin-settings .meetlet-about__cta:hover {
background:#6fd9b5; color:#00261a !important;
}
.meetlet-admin-settings .meetlet-settings-btn {
display:inline-flex; align-items:center; justify-content:center; gap:.45rem;
padding:.6rem 1.15rem; border-radius:10px; border:0; cursor:pointer;
background:#52cca3; color:#00261a !important;
text-decoration:none !important; font-weight:700;
}
.meetlet-admin-settings .meetlet-settings-btn:hover { background:#6fd9b5; color:#00261a !important; }
.meetlet-admin-settings .meetlet-settings-btn:disabled { opacity:.65; cursor:wait; }
.meetlet-admin-settings .meetlet-settings-btn svg {
width:1.1rem; height:1.1rem; flex:0 0 auto; display:block;
}
.meetlet-admin-settings .meetlet-license-actions {
display:flex; flex-wrap:wrap; gap:.55rem; align-items:center;
}
.meetlet-admin-settings .meetlet-license-actions .btn {
display:inline-flex; align-items:center; justify-content:center; gap:.45rem;
}
.meetlet-admin-settings .meetlet-license-actions .btn svg {
width:1.05rem; height:1.05rem; flex:0 0 auto; display:block;
}
.meetlet-admin-settings .meetlet-license-btn--free {
background: linear-gradient(180deg, #e6faf3 0%, #d4f5ea 100%) !important;
border: 2px solid #52cca3 !important;
color: #00261a !important;
border-radius: 10px !important;
font-weight: 700 !important;
padding: .6rem 1.15rem !important;
box-shadow: 0 4px 12px rgba(82, 204, 163, 0.18) !important;
}
.meetlet-admin-settings .meetlet-license-btn--free:hover,
.meetlet-admin-settings .meetlet-license-btn--free:focus {
background: linear-gradient(180deg, #6fd9b5 0%, #52cca3 100%) !important;
border-color: #3db892 !important;
color: #00261a !important;
box-shadow: 0 6px 16px rgba(82, 204, 163, 0.28) !important;
}
.meetlet-admin-settings .meetlet-conntest { max-width:none; margin:0; }
.meetlet-admin-settings .meetlet-conntest__actions {
display:flex; flex-wrap:wrap; gap:.75rem; align-items:center;
margin:.85rem 0 1rem;
}
.meetlet-admin-settings .meetlet-conntest__status { color:#4a6b5f; font-size:.9rem; }
.meetlet-admin-settings .meetlet-conntest__progress {
margin:0 0 1rem; padding:.85rem 1rem;
border:1px solid #cfe8de; border-radius:12px; background:#f7fcfa;
}
.meetlet-admin-settings .meetlet-conntest__progress-label {
display:flex; justify-content:space-between; gap:.75rem;
margin:0 0 .45rem; color:#00261a; font-weight:650; font-size:.92rem;
}
.meetlet-admin-settings .meetlet-conntest__progress-track {
height:10px; border-radius:999px; background:#d9eee5; overflow:hidden;
}
.meetlet-admin-settings .meetlet-conntest__progress-fill {
height:100%; width:0; border-radius:999px;
background:linear-gradient(90deg, #2f9f7a, #52cca3);
transition:width .28s ease;
}
.meetlet-admin-settings .meetlet-conntest__num {
min-width:1.7rem; height:1.7rem; border-radius:8px;
display:inline-flex; align-items:center; justify-content:center;
background:#e6faf3; color:#00261a; font-weight:750; font-size:.85rem;
}
.meetlet-admin-settings .meetlet-conntest__card--pending { opacity:.78; background:#fbfefe; }
.meetlet-admin-settings .meetlet-conntest__card--running {
border-color:#e6b422;
box-shadow:0 0 0 2px rgba(230,180,34,.22);
background:#fff8e6;
}
.meetlet-admin-settings .meetlet-conntest__card--running .meetlet-conntest__num {
background:#ffe08a; color:#5c4700;
}
.meetlet-admin-settings .meetlet-conntest__card--ok {
border-color:#9fdcc4; background:#f3fbf8;
}
.meetlet-admin-settings .meetlet-conntest__card--fail {
border-color:#ead3d0; background:#fff8f7;
}
.meetlet-admin-settings .meetlet-conntest__card--skipped { opacity:.55; }
.meetlet-admin-settings .meetlet-dot--pending { background:#9bb7ac; box-shadow:0 0 0 4px rgba(155,183,172,.18); }
.meetlet-admin-settings .meetlet-dot--running {
background:#e6b422; box-shadow:0 0 0 4px rgba(230,180,34,.28);
animation:meetletPulse 1s ease-in-out infinite;
}
.meetlet-admin-settings .meetlet-dot--skipped { background:#b7c4be; box-shadow:none; }
.meetlet-admin-settings .meetlet-pill--pending { background:#e8efec; color:#456257; }
.meetlet-admin-settings .meetlet-pill--running { background:#ffe08a; color:#5c4700; }
.meetlet-admin-settings .meetlet-pill--skipped { background:#eef1f0; color:#667a72; }
@keyframes meetletPulse {
0%, 100% { transform:scale(1); opacity:1; }
50% { transform:scale(1.15); opacity:.75; }
}
.meetlet-admin-settings form.settingsform {
padding-bottom:1rem;
}
/* Single save row: spacing only — no stacked border/gradient bands. */
.meetlet-admin-settings .settingsform > .row:has(.btn-primary),
.meetlet-admin-settings .form-buttons,
.meetlet-admin-settings .btns-group {
margin-top:1.25rem !important;
padding:0;
border:0;
background:transparent;
border-radius:0;
}
.meetlet-admin-settings .meetlet-savebar {
margin-top: 1.25rem !important;
margin-right: 0 !important;
margin-left: 0 !important;
margin-inline: 0 !important;
flex: 0 0 100% !important;
max-width: 100% !important;
width: 100% !important;
padding: .35rem 0 !important;
border: 0 !important;
background: transparent !important;
border-radius: 0 !important;
}
@media (min-width: 576px) {
.meetlet-admin-settings .meetlet-savebar.offset-sm-3,
.meetlet-admin-settings .meetlet-savebar {
margin-right: 0 !important;
margin-left: 0 !important;
}
}
.meetlet-admin-settings .btn-primary,
.meetlet-admin-settings input[type="submit"].btn-primary,
.meetlet-admin-settings button[type="submit"].btn-primary,
.meetlet-admin-settings .meetlet-btn-with-icon.btn-primary {
background:#52cca3 !important;
border-color:#3db892 !important;
color:#00261a !important;
font-weight:700 !important;
border-radius:10px !important;
padding:.55rem 1.35rem !important;
box-shadow:none !important;
}
.meetlet-admin-settings .btn-primary:hover,
.meetlet-admin-settings input[type="submit"].btn-primary:hover,
.meetlet-admin-settings button[type="submit"].btn-primary:hover {
background:#6fd9b5 !important;
border-color:#52cca3 !important;
color:#00261a !important;
}
.meetlet-admin-settings .meetlet-btn-with-icon {
display:inline-flex !important;
align-items:center;
justify-content:center;
gap:.45rem;
}
.meetlet-admin-settings .meetlet-btn-with-icon svg {
width:1.1rem;
height:1.1rem;
flex:0 0 auto;
display:block;
}
.meetlet-admin-settings .meetlet-btn-with-icon__label {
line-height:1.2;
}
.meetlet-admin-settings .meetlet-server-group {
margin:1.1rem 0 .4rem; padding:1rem 1.1rem .2rem;
border:1px solid #cfe8de; border-radius:12px;
background:linear-gradient(180deg, #f3fbf8 0%, #ffffff 60%);
}
.meetlet-admin-settings .meetlet-server-group h4 {
margin:0 0 .25rem; color:#00261a; font-size:1.02rem; font-weight:700;
}
.meetlet-admin-settings .meetlet-server-group p {
margin:0 0 .55rem; color:#4a6b5f; font-size:.9rem; line-height:1.55;
}